diff --git a/packages/cli/dist/.tsbuildinfo b/packages/cli/dist/.tsbuildinfo index 4200503..760271a 100644 --- a/packages/cli/dist/.tsbuildinfo +++ b/packages/cli/dist/.tsbuildinfo @@ -1 +1 @@ -{"fileNames":["../../../node_modules/typescript/lib/lib.es5.d.ts","../../../node_modules/typescript/lib/lib.es2015.d.ts","../../../node_modules/typescript/lib/lib.es2016.d.ts","../../../node_modules/typescript/lib/lib.es2017.d.ts","../../../node_modules/typescript/lib/lib.es2018.d.ts","../../../node_modules/typescript/lib/lib.es2019.d.ts","../../../node_modules/typescript/lib/lib.es2020.d.ts","../../../node_modules/typescript/lib/lib.es2021.d.ts","../../../node_modules/typescript/lib/lib.es2022.d.ts","../../../node_modules/typescript/lib/lib.dom.d.ts","../../../node_modules/typescript/lib/lib.dom.iterable.d.ts","../../../node_modules/typescript/lib/lib.dom.asynciterable.d.ts","../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts","../../../node_modules/typescript/lib/lib.scripthost.d.ts","../../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../node_modules/typescript/lib/lib.es2016.intl.d.ts","../../../node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../../../node_modules/typescript/lib/lib.es2017.date.d.ts","../../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2019.intl.d.ts","../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../node_modules/typescript/lib/lib.es2020.date.d.ts","../../../node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2020.string.d.ts","../../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../node_modules/typescript/lib/lib.es2020.number.d.ts","../../../node_modules/typescript/lib/lib.es2021.promise.d.ts","../../../node_modules/typescript/lib/lib.es2021.string.d.ts","../../../node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../../node_modules/typescript/lib/lib.es2021.intl.d.ts","../../../node_modules/typescript/lib/lib.es2022.array.d.ts","../../../node_modules/typescript/lib/lib.es2022.error.d.ts","../../../node_modules/typescript/lib/lib.es2022.intl.d.ts","../../../node_modules/typescript/lib/lib.es2022.object.d.ts","../../../node_modules/typescript/lib/lib.es2022.string.d.ts","../../../node_modules/typescript/lib/lib.es2022.regexp.d.ts","../../../node_modules/typescript/lib/lib.esnext.disposable.d.ts","../../../node_modules/typescript/lib/lib.esnext.float16.d.ts","../../../node_modules/typescript/lib/lib.decorators.d.ts","../../../node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../../node_modules/typescript/lib/lib.es2022.full.d.ts","../src/core/types.ts","../../../node_modules/simple-git/dist/src/lib/tasks/diff-name-status.d.ts","../../../node_modules/simple-git/dist/src/lib/tasks/task.d.ts","../../../node_modules/simple-git/dist/src/lib/types/tasks.d.ts","../../../node_modules/simple-git/dist/src/lib/errors/git-error.d.ts","../../../node_modules/simple-git/dist/src/lib/types/handlers.d.ts","../../../node_modules/simple-git/dist/src/lib/types/index.d.ts","../../../node_modules/simple-git/dist/src/lib/tasks/log.d.ts","../../../node_modules/simple-git/dist/typings/response.d.ts","../../../node_modules/simple-git/dist/src/lib/responses/getremotesummary.d.ts","../../../node_modules/simple-git/dist/src/lib/args/pathspec.d.ts","../../../node_modules/simple-git/dist/src/lib/tasks/apply-patch.d.ts","../../../node_modules/simple-git/dist/src/lib/tasks/check-is-repo.d.ts","../../../node_modules/simple-git/dist/src/lib/tasks/clean.d.ts","../../../node_modules/simple-git/dist/src/lib/tasks/clone.d.ts","../../../node_modules/simple-git/dist/src/lib/tasks/config.d.ts","../../../node_modules/simple-git/dist/src/lib/tasks/count-objects.d.ts","../../../node_modules/simple-git/dist/src/lib/tasks/grep.d.ts","../../../node_modules/simple-git/dist/src/lib/tasks/reset.d.ts","../../../node_modules/simple-git/dist/src/lib/tasks/version.d.ts","../../../node_modules/simple-git/dist/typings/types.d.ts","../../../node_modules/simple-git/dist/src/lib/errors/git-construct-error.d.ts","../../../node_modules/simple-git/dist/src/lib/errors/git-plugin-error.d.ts","../../../node_modules/simple-git/dist/src/lib/errors/git-response-error.d.ts","../../../node_modules/simple-git/dist/src/lib/errors/task-configuration-error.d.ts","../../../node_modules/simple-git/dist/typings/errors.d.ts","../../../node_modules/simple-git/dist/typings/simple-git.d.ts","../../../node_modules/simple-git/dist/typings/index.d.ts","../../../node_modules/slugify/slugify.d.ts","../src/core/core.ts","../../../node_modules/yaml/dist/parse/line-counter.d.ts","../../../node_modules/yaml/dist/errors.d.ts","../../../node_modules/yaml/dist/doc/applyreviver.d.ts","../../../node_modules/yaml/dist/log.d.ts","../../../node_modules/yaml/dist/nodes/tojs.d.ts","../../../node_modules/yaml/dist/nodes/scalar.d.ts","../../../node_modules/yaml/dist/stringify/stringify.d.ts","../../../node_modules/yaml/dist/nodes/collection.d.ts","../../../node_modules/yaml/dist/nodes/yamlseq.d.ts","../../../node_modules/yaml/dist/schema/types.d.ts","../../../node_modules/yaml/dist/schema/common/map.d.ts","../../../node_modules/yaml/dist/schema/common/seq.d.ts","../../../node_modules/yaml/dist/schema/common/string.d.ts","../../../node_modules/yaml/dist/stringify/foldflowlines.d.ts","../../../node_modules/yaml/dist/stringify/stringifynumber.d.ts","../../../node_modules/yaml/dist/stringify/stringifystring.d.ts","../../../node_modules/yaml/dist/util.d.ts","../../../node_modules/yaml/dist/nodes/yamlmap.d.ts","../../../node_modules/yaml/dist/nodes/identity.d.ts","../../../node_modules/yaml/dist/schema/schema.d.ts","../../../node_modules/yaml/dist/doc/createnode.d.ts","../../../node_modules/yaml/dist/nodes/addpairtojsmap.d.ts","../../../node_modules/yaml/dist/nodes/pair.d.ts","../../../node_modules/yaml/dist/schema/tags.d.ts","../../../node_modules/yaml/dist/options.d.ts","../../../node_modules/yaml/dist/nodes/node.d.ts","../../../node_modules/yaml/dist/parse/cst-scalar.d.ts","../../../node_modules/yaml/dist/parse/cst-stringify.d.ts","../../../node_modules/yaml/dist/parse/cst-visit.d.ts","../../../node_modules/yaml/dist/parse/cst.d.ts","../../../node_modules/yaml/dist/nodes/alias.d.ts","../../../node_modules/yaml/dist/doc/document.d.ts","../../../node_modules/yaml/dist/doc/directives.d.ts","../../../node_modules/yaml/dist/compose/composer.d.ts","../../../node_modules/yaml/dist/parse/lexer.d.ts","../../../node_modules/yaml/dist/parse/parser.d.ts","../../../node_modules/yaml/dist/public-api.d.ts","../../../node_modules/yaml/dist/schema/yaml-1.1/omap.d.ts","../../../node_modules/yaml/dist/schema/yaml-1.1/set.d.ts","../../../node_modules/yaml/dist/visit.d.ts","../../../node_modules/yaml/dist/index.d.ts","../src/core/frontmatter.ts","../src/core/config.ts","../../../node_modules/escape-string-regexp/index.d.ts","../src/core/state.ts","../src/core/roadmap.ts","../src/core/milestone.ts","../../../node_modules/chalk/source/vendor/ansi-styles/index.d.ts","../../../node_modules/chalk/source/vendor/supports-color/index.d.ts","../../../node_modules/chalk/source/index.d.ts","../src/core/commands.ts","../src/core/verify.ts","../src/core/phase.ts","../src/core/template.ts","../src/core/dashboard-launcher.ts","../src/core/init.ts","../src/core/index.ts","../src/cli.ts","../src/index.ts","../../../node_modules/zod/v3/helpers/typealiases.d.cts","../../../node_modules/zod/v3/helpers/util.d.cts","../../../node_modules/zod/v3/zoderror.d.cts","../../../node_modules/zod/v3/locales/en.d.cts","../../../node_modules/zod/v3/errors.d.cts","../../../node_modules/zod/v3/helpers/parseutil.d.cts","../../../node_modules/zod/v3/helpers/enumutil.d.cts","../../../node_modules/zod/v3/helpers/errorutil.d.cts","../../../node_modules/zod/v3/helpers/partialutil.d.cts","../../../node_modules/zod/v3/standard-schema.d.cts","../../../node_modules/zod/v3/types.d.cts","../../../node_modules/zod/v3/external.d.cts","../../../node_modules/zod/v3/index.d.cts","../../../node_modules/zod/v4/core/json-schema.d.cts","../../../node_modules/zod/v4/core/standard-schema.d.cts","../../../node_modules/zod/v4/core/registries.d.cts","../../../node_modules/zod/v4/core/to-json-schema.d.cts","../../../node_modules/zod/v4/core/util.d.cts","../../../node_modules/zod/v4/core/versions.d.cts","../../../node_modules/zod/v4/core/schemas.d.cts","../../../node_modules/zod/v4/core/checks.d.cts","../../../node_modules/zod/v4/core/errors.d.cts","../../../node_modules/zod/v4/core/core.d.cts","../../../node_modules/zod/v4/core/parse.d.cts","../../../node_modules/zod/v4/core/regexes.d.cts","../../../node_modules/zod/v4/locales/ar.d.cts","../../../node_modules/zod/v4/locales/az.d.cts","../../../node_modules/zod/v4/locales/be.d.cts","../../../node_modules/zod/v4/locales/bg.d.cts","../../../node_modules/zod/v4/locales/ca.d.cts","../../../node_modules/zod/v4/locales/cs.d.cts","../../../node_modules/zod/v4/locales/da.d.cts","../../../node_modules/zod/v4/locales/de.d.cts","../../../node_modules/zod/v4/locales/en.d.cts","../../../node_modules/zod/v4/locales/eo.d.cts","../../../node_modules/zod/v4/locales/es.d.cts","../../../node_modules/zod/v4/locales/fa.d.cts","../../../node_modules/zod/v4/locales/fi.d.cts","../../../node_modules/zod/v4/locales/fr.d.cts","../../../node_modules/zod/v4/locales/fr-ca.d.cts","../../../node_modules/zod/v4/locales/he.d.cts","../../../node_modules/zod/v4/locales/hu.d.cts","../../../node_modules/zod/v4/locales/hy.d.cts","../../../node_modules/zod/v4/locales/id.d.cts","../../../node_modules/zod/v4/locales/is.d.cts","../../../node_modules/zod/v4/locales/it.d.cts","../../../node_modules/zod/v4/locales/ja.d.cts","../../../node_modules/zod/v4/locales/ka.d.cts","../../../node_modules/zod/v4/locales/kh.d.cts","../../../node_modules/zod/v4/locales/km.d.cts","../../../node_modules/zod/v4/locales/ko.d.cts","../../../node_modules/zod/v4/locales/lt.d.cts","../../../node_modules/zod/v4/locales/mk.d.cts","../../../node_modules/zod/v4/locales/ms.d.cts","../../../node_modules/zod/v4/locales/nl.d.cts","../../../node_modules/zod/v4/locales/no.d.cts","../../../node_modules/zod/v4/locales/ota.d.cts","../../../node_modules/zod/v4/locales/ps.d.cts","../../../node_modules/zod/v4/locales/pl.d.cts","../../../node_modules/zod/v4/locales/pt.d.cts","../../../node_modules/zod/v4/locales/ru.d.cts","../../../node_modules/zod/v4/locales/sl.d.cts","../../../node_modules/zod/v4/locales/sv.d.cts","../../../node_modules/zod/v4/locales/ta.d.cts","../../../node_modules/zod/v4/locales/th.d.cts","../../../node_modules/zod/v4/locales/tr.d.cts","../../../node_modules/zod/v4/locales/ua.d.cts","../../../node_modules/zod/v4/locales/uk.d.cts","../../../node_modules/zod/v4/locales/ur.d.cts","../../../node_modules/zod/v4/locales/uz.d.cts","../../../node_modules/zod/v4/locales/vi.d.cts","../../../node_modules/zod/v4/locales/zh-cn.d.cts","../../../node_modules/zod/v4/locales/zh-tw.d.cts","../../../node_modules/zod/v4/locales/yo.d.cts","../../../node_modules/zod/v4/locales/index.d.cts","../../../node_modules/zod/v4/core/doc.d.cts","../../../node_modules/zod/v4/core/api.d.cts","../../../node_modules/zod/v4/core/json-schema-processors.d.cts","../../../node_modules/zod/v4/core/json-schema-generator.d.cts","../../../node_modules/zod/v4/core/index.d.cts","../../../node_modules/@modelcontextprotocol/sdk/dist/cjs/server/zod-compat.d.ts","../../../node_modules/zod/v4/classic/errors.d.cts","../../../node_modules/zod/v4/classic/parse.d.cts","../../../node_modules/zod/v4/classic/schemas.d.cts","../../../node_modules/zod/v4/classic/checks.d.cts","../../../node_modules/zod/v4/classic/compat.d.cts","../../../node_modules/zod/v4/classic/from-json-schema.d.cts","../../../node_modules/zod/v4/classic/iso.d.cts","../../../node_modules/zod/v4/classic/coerce.d.cts","../../../node_modules/zod/v4/classic/external.d.cts","../../../node_modules/zod/v4/classic/index.d.cts","../../../node_modules/zod/v4/index.d.cts","../../../node_modules/@modelcontextprotocol/sdk/dist/cjs/server/auth/types.d.ts","../../../node_modules/@modelcontextprotocol/sdk/dist/cjs/types.d.ts","../../../node_modules/@modelcontextprotocol/sdk/dist/cjs/shared/transport.d.ts","../../../node_modules/@modelcontextprotocol/sdk/dist/cjs/experimental/tasks/types.d.ts","../../../node_modules/@modelcontextprotocol/sdk/dist/cjs/experimental/tasks/interfaces.d.ts","../../../node_modules/@modelcontextprotocol/sdk/dist/cjs/shared/responsemessage.d.ts","../../../node_modules/@modelcontextprotocol/sdk/dist/cjs/shared/protocol.d.ts","../../../node_modules/json-schema-typed/draft_2020_12.d.ts","../../../node_modules/@modelcontextprotocol/sdk/dist/cjs/validation/types.d.ts","../../../node_modules/@modelcontextprotocol/sdk/dist/cjs/experimental/tasks/server.d.ts","../../../node_modules/@modelcontextprotocol/sdk/dist/cjs/server/index.d.ts","../../../node_modules/@modelcontextprotocol/sdk/dist/cjs/shared/uritemplate.d.ts","../../../node_modules/@modelcontextprotocol/sdk/dist/cjs/experimental/tasks/mcp-server.d.ts","../../../node_modules/@modelcontextprotocol/sdk/dist/cjs/server/mcp.d.ts","../../../node_modules/@modelcontextprotocol/sdk/dist/cjs/server/stdio.d.ts","../node_modules/zod/v3/helpers/typealiases.d.cts","../node_modules/zod/v3/helpers/util.d.cts","../node_modules/zod/v3/index.d.cts","../node_modules/zod/v3/zoderror.d.cts","../node_modules/zod/v3/locales/en.d.cts","../node_modules/zod/v3/errors.d.cts","../node_modules/zod/v3/helpers/parseutil.d.cts","../node_modules/zod/v3/helpers/enumutil.d.cts","../node_modules/zod/v3/helpers/errorutil.d.cts","../node_modules/zod/v3/helpers/partialutil.d.cts","../node_modules/zod/v3/standard-schema.d.cts","../node_modules/zod/v3/types.d.cts","../node_modules/zod/v3/external.d.cts","../node_modules/zod/index.d.cts","../src/mcp/utils.ts","../src/mcp/phase-tools.ts","../src/mcp/todo-tools.ts","../src/mcp/state-tools.ts","../src/mcp/index.ts","../src/mcp-server.ts","../src/adapters/base.ts","../src/adapters/claude.ts","../src/adapters/transforms/tool-maps.ts","../src/adapters/transforms/content.ts","../src/adapters/transforms/frontmatter.ts","../src/adapters/codex.ts","../src/adapters/gemini.ts","../src/adapters/opencode.ts","../src/adapters/types.ts","../src/adapters/index.ts","../src/hooks/shared.ts","../src/hooks/maxsim-check-update.ts","../src/hooks/maxsim-context-monitor.ts","../src/hooks/maxsim-statusline.ts","../src/hooks/index.ts","../../../node_modules/@types/node/compatibility/iterators.d.ts","../../../node_modules/@types/node/globals.typedarray.d.ts","../../../node_modules/@types/node/buffer.buffer.d.ts","../../../node_modules/@types/node/globals.d.ts","../../../node_modules/@types/node/web-globals/abortcontroller.d.ts","../../../node_modules/@types/node/web-globals/blob.d.ts","../../../node_modules/@types/node/web-globals/console.d.ts","../../../node_modules/@types/node/web-globals/crypto.d.ts","../../../node_modules/@types/node/web-globals/domexception.d.ts","../../../node_modules/@types/node/web-globals/encoding.d.ts","../../../node_modules/@types/node/web-globals/events.d.ts","../../../node_modules/undici-types/utility.d.ts","../../../node_modules/undici-types/header.d.ts","../../../node_modules/undici-types/readable.d.ts","../../../node_modules/undici-types/fetch.d.ts","../../../node_modules/undici-types/formdata.d.ts","../../../node_modules/undici-types/connector.d.ts","../../../node_modules/undici-types/client-stats.d.ts","../../../node_modules/undici-types/client.d.ts","../../../node_modules/undici-types/errors.d.ts","../../../node_modules/undici-types/dispatcher.d.ts","../../../node_modules/undici-types/global-dispatcher.d.ts","../../../node_modules/undici-types/global-origin.d.ts","../../../node_modules/undici-types/pool-stats.d.ts","../../../node_modules/undici-types/pool.d.ts","../../../node_modules/undici-types/handlers.d.ts","../../../node_modules/undici-types/balanced-pool.d.ts","../../../node_modules/undici-types/round-robin-pool.d.ts","../../../node_modules/undici-types/h2c-client.d.ts","../../../node_modules/undici-types/agent.d.ts","../../../node_modules/undici-types/mock-interceptor.d.ts","../../../node_modules/undici-types/mock-call-history.d.ts","../../../node_modules/undici-types/mock-agent.d.ts","../../../node_modules/undici-types/mock-client.d.ts","../../../node_modules/undici-types/mock-pool.d.ts","../../../node_modules/undici-types/snapshot-agent.d.ts","../../../node_modules/undici-types/mock-errors.d.ts","../../../node_modules/undici-types/proxy-agent.d.ts","../../../node_modules/undici-types/env-http-proxy-agent.d.ts","../../../node_modules/undici-types/retry-handler.d.ts","../../../node_modules/undici-types/retry-agent.d.ts","../../../node_modules/undici-types/api.d.ts","../../../node_modules/undici-types/cache-interceptor.d.ts","../../../node_modules/undici-types/interceptors.d.ts","../../../node_modules/undici-types/util.d.ts","../../../node_modules/undici-types/cookies.d.ts","../../../node_modules/undici-types/patch.d.ts","../../../node_modules/undici-types/websocket.d.ts","../../../node_modules/undici-types/eventsource.d.ts","../../../node_modules/undici-types/diagnostics-channel.d.ts","../../../node_modules/undici-types/content-type.d.ts","../../../node_modules/undici-types/cache.d.ts","../../../node_modules/undici-types/index.d.ts","../../../node_modules/@types/node/web-globals/fetch.d.ts","../../../node_modules/@types/node/web-globals/importmeta.d.ts","../../../node_modules/@types/node/web-globals/messaging.d.ts","../../../node_modules/@types/node/web-globals/navigator.d.ts","../../../node_modules/@types/node/web-globals/performance.d.ts","../../../node_modules/@types/node/web-globals/storage.d.ts","../../../node_modules/@types/node/web-globals/streams.d.ts","../../../node_modules/@types/node/web-globals/timers.d.ts","../../../node_modules/@types/node/web-globals/url.d.ts","../../../node_modules/@types/node/assert.d.ts","../../../node_modules/@types/node/assert/strict.d.ts","../../../node_modules/@types/node/async_hooks.d.ts","../../../node_modules/@types/node/buffer.d.ts","../../../node_modules/@types/node/child_process.d.ts","../../../node_modules/@types/node/cluster.d.ts","../../../node_modules/@types/node/console.d.ts","../../../node_modules/@types/node/constants.d.ts","../../../node_modules/@types/node/crypto.d.ts","../../../node_modules/@types/node/dgram.d.ts","../../../node_modules/@types/node/diagnostics_channel.d.ts","../../../node_modules/@types/node/dns.d.ts","../../../node_modules/@types/node/dns/promises.d.ts","../../../node_modules/@types/node/domain.d.ts","../../../node_modules/@types/node/events.d.ts","../../../node_modules/@types/node/fs.d.ts","../../../node_modules/@types/node/fs/promises.d.ts","../../../node_modules/@types/node/http.d.ts","../../../node_modules/@types/node/http2.d.ts","../../../node_modules/@types/node/https.d.ts","../../../node_modules/@types/node/inspector.d.ts","../../../node_modules/@types/node/inspector.generated.d.ts","../../../node_modules/@types/node/inspector/promises.d.ts","../../../node_modules/@types/node/module.d.ts","../../../node_modules/@types/node/net.d.ts","../../../node_modules/@types/node/os.d.ts","../../../node_modules/@types/node/path.d.ts","../../../node_modules/@types/node/path/posix.d.ts","../../../node_modules/@types/node/path/win32.d.ts","../../../node_modules/@types/node/perf_hooks.d.ts","../../../node_modules/@types/node/process.d.ts","../../../node_modules/@types/node/punycode.d.ts","../../../node_modules/@types/node/querystring.d.ts","../../../node_modules/@types/node/quic.d.ts","../../../node_modules/@types/node/readline.d.ts","../../../node_modules/@types/node/readline/promises.d.ts","../../../node_modules/@types/node/repl.d.ts","../../../node_modules/@types/node/sea.d.ts","../../../node_modules/@types/node/sqlite.d.ts","../../../node_modules/@types/node/stream.d.ts","../../../node_modules/@types/node/stream/consumers.d.ts","../../../node_modules/@types/node/stream/promises.d.ts","../../../node_modules/@types/node/stream/web.d.ts","../../../node_modules/@types/node/string_decoder.d.ts","../../../node_modules/@types/node/test.d.ts","../../../node_modules/@types/node/test/reporters.d.ts","../../../node_modules/@types/node/timers.d.ts","../../../node_modules/@types/node/timers/promises.d.ts","../../../node_modules/@types/node/tls.d.ts","../../../node_modules/@types/node/trace_events.d.ts","../../../node_modules/@types/node/tty.d.ts","../../../node_modules/@types/node/url.d.ts","../../../node_modules/@types/node/util.d.ts","../../../node_modules/@types/node/util/types.d.ts","../../../node_modules/@types/node/v8.d.ts","../../../node_modules/@types/node/vm.d.ts","../../../node_modules/@types/node/wasi.d.ts","../../../node_modules/@types/node/worker_threads.d.ts","../../../node_modules/@types/node/zlib.d.ts","../../../node_modules/@types/node/index.d.ts","../../../node_modules/@types/jsonfile/index.d.ts","../../../node_modules/@types/jsonfile/utils.d.ts","../../../node_modules/@types/fs-extra/index.d.ts","../src/install/shared.ts","../src/install/adapters.ts","../src/install/copy.ts","../src/install/dashboard.ts","../../../node_modules/@inquirer/core/dist/lib/key.d.ts","../../../node_modules/@inquirer/core/dist/lib/errors.d.ts","../../../node_modules/@inquirer/type/dist/inquirer.d.ts","../../../node_modules/@inquirer/type/dist/utils.d.ts","../../../node_modules/@inquirer/type/dist/index.d.ts","../../../node_modules/@inquirer/core/dist/lib/theme.d.ts","../../../node_modules/@inquirer/core/dist/lib/use-prefix.d.ts","../../../node_modules/@inquirer/core/dist/lib/use-state.d.ts","../../../node_modules/@inquirer/core/dist/lib/use-effect.d.ts","../../../node_modules/@inquirer/core/dist/lib/use-memo.d.ts","../../../node_modules/@inquirer/core/dist/lib/use-ref.d.ts","../../../node_modules/@inquirer/core/dist/lib/use-keypress.d.ts","../../../node_modules/@inquirer/core/dist/lib/make-theme.d.ts","../../../node_modules/@inquirer/core/dist/lib/pagination/use-pagination.d.ts","../../../node_modules/@inquirer/core/dist/lib/create-prompt.d.ts","../../../node_modules/@inquirer/core/dist/lib/separator.d.ts","../../../node_modules/@inquirer/core/dist/index.d.ts","../../../node_modules/@inquirer/checkbox/dist/index.d.ts","../../../node_modules/@inquirer/external-editor/dist/errors/createfileerror.d.ts","../../../node_modules/@inquirer/external-editor/dist/errors/launcheditorerror.d.ts","../../../node_modules/@inquirer/external-editor/dist/errors/readfileerror.d.ts","../../../node_modules/@inquirer/external-editor/dist/errors/removefileerror.d.ts","../../../node_modules/@inquirer/external-editor/dist/index.d.ts","../../../node_modules/@inquirer/editor/dist/index.d.ts","../../../node_modules/@inquirer/confirm/dist/index.d.ts","../../../node_modules/@inquirer/input/dist/index.d.ts","../../../node_modules/@inquirer/number/dist/index.d.ts","../../../node_modules/@inquirer/expand/dist/index.d.ts","../../../node_modules/@inquirer/rawlist/dist/index.d.ts","../../../node_modules/@inquirer/password/dist/index.d.ts","../../../node_modules/@inquirer/search/dist/index.d.ts","../../../node_modules/@inquirer/select/dist/index.d.ts","../../../node_modules/@inquirer/prompts/dist/index.d.ts","../../../node_modules/cli-spinners/index.d.ts","../../../node_modules/ora/index.d.ts","../src/install/hooks.ts","../../../node_modules/figlet/dist/types/cjs/node-figlet.d.cts","../../../node_modules/@types/minimist/index.d.ts","../src/install/manifest.ts","../src/install/patches.ts","../src/install/uninstall.ts","../src/install/index.ts","../../../node_modules/@babel/types/lib/index.d.ts","../../../node_modules/@types/babel__generator/index.d.ts","../../../node_modules/@babel/parser/typings/babel-parser.d.ts","../../../node_modules/@types/babel__template/index.d.ts","../../../node_modules/@types/babel__traverse/index.d.ts","../../../node_modules/@types/babel__core/index.d.ts","../../../node_modules/@types/connect/index.d.ts","../../../node_modules/@types/body-parser/index.d.ts","../../../node_modules/@types/deep-eql/index.d.ts","../../../node_modules/assertion-error/index.d.ts","../../../node_modules/@types/chai/index.d.ts","../../../node_modules/@types/ms/index.d.ts","../../../node_modules/@types/debug/index.d.ts","../../../node_modules/@types/estree/index.d.ts","../../../node_modules/@types/estree-jsx/index.d.ts","../../../node_modules/@types/send/index.d.ts","../../../node_modules/@types/qs/index.d.ts","../../../node_modules/@types/range-parser/index.d.ts","../../../node_modules/@types/express-serve-static-core/index.d.ts","../../../node_modules/@types/http-errors/index.d.ts","../../../node_modules/mime/dist/src/mime.d.ts","../../../node_modules/mime/dist/src/index.d.ts","../../../node_modules/@types/serve-static/node_modules/@types/send/index.d.ts","../../../node_modules/@types/serve-static/index.d.ts","../../../node_modules/@types/express/index.d.ts","../../../node_modules/@types/figlet/index.d.ts","../../../node_modules/@types/unist/index.d.ts","../../../node_modules/@types/hast/index.d.ts","../../../node_modules/@types/jsesc/index.d.ts","../../../node_modules/@types/lodash/common/common.d.ts","../../../node_modules/@types/lodash/common/array.d.ts","../../../node_modules/@types/lodash/common/collection.d.ts","../../../node_modules/@types/lodash/common/date.d.ts","../../../node_modules/@types/lodash/common/function.d.ts","../../../node_modules/@types/lodash/common/lang.d.ts","../../../node_modules/@types/lodash/common/math.d.ts","../../../node_modules/@types/lodash/common/number.d.ts","../../../node_modules/@types/lodash/common/object.d.ts","../../../node_modules/@types/lodash/common/seq.d.ts","../../../node_modules/@types/lodash/common/string.d.ts","../../../node_modules/@types/lodash/common/util.d.ts","../../../node_modules/@types/lodash/index.d.ts","../../../node_modules/@types/lodash.debounce/index.d.ts","../../../node_modules/@types/mdast/index.d.ts","../../../node_modules/@types/mime/index.d.ts","../../../node_modules/@types/normalize-package-data/index.d.ts","../../../node_modules/@types/react/global.d.ts","../../../node_modules/csstype/index.d.ts","../../../node_modules/@types/react/index.d.ts","../../../node_modules/@types/react-dom/index.d.ts","../../../node_modules/@types/ws/index.d.ts"],"fileIdsList":[[299,362,370,374,377,379,380,381,393,468],[299,362,370,374,377,379,380,381,393],[299,362,370,374,377,379,380,381,393,430,442],[299,362,370,374,377,379,380,381,393,426,427,431,432,433,434,435,436,437,438,439,440,441],[299,362,370,374,377,379,380,381,393,430],[299,362,370,374,377,379,380,381,393,430,431],[299,362,370,374,377,379,380,381,393,426,430],[299,362,370,374,377,379,380,381,393,431],[299,362,370,374,377,379,380,381,393,430,442,448],[299,362,370,374,377,379,380,381,393,444,445,446,447],[299,362,370,374,377,379,380,381,393,443,449,450,451,452,453,454,455,456,457],[299,362,370,374,377,379,380,381,393,428,429],[299,362,370,374,377,379,380,381,393,398],[235,248,250,253,299,362,370,374,377,379,380,381,393],[235,248,251,260,299,362,370,374,377,379,380,381,393],[235,248,252,253,257,299,362,370,374,377,379,380,381,393],[248,299,362,370,374,377,379,380,381,393],[235,248,253,255,256,299,362,370,374,377,379,380,381,393],[235,248,249,251,253,257,258,259,299,362,370,374,377,379,380,381,393],[248,249,299,362,370,374,377,379,380,381,393,398],[167,234,299,362,370,374,377,379,380,381,393],[235,247,248,249,251,252,299,362,370,374,377,379,380,381,393],[246,247,299,362,370,374,377,379,380,381,393],[254,299,362,370,374,377,379,380,381,393],[299,362,370,374,377,379,380,381,393,468,469,470,471,472],[299,362,370,374,377,379,380,381,393,468,470],[299,362,370,374,376,377,379,380,381,393,418,474],[299,362,370,374,377,379,380,381,393,476,477],[299,362,370,374,376,377,379,380,381,393,418],[299,362,370,374,377,379,380,381,393,479],[299,362,370,374,377,379,380,381,393,481,482],[299,362,370,373,374,376,377,379,380,381,393,418,483,484,485],[299,362,370,374,377,379,380,381,393,475,484,486,491],[299,362,370,374,377,379,380,381,393,418,419,420],[299,362,370,374,377,379,380,381,393,494],[299,362,370,374,377,379,380,381,393,410,418],[299,362,370,374,377,379,380,381,393,509],[299,362,370,374,377,379,380,381,393,497,499,500,501,502,503,504,505,506,507,508,509],[299,362,370,374,377,379,380,381,393,497,498,500,501,502,503,504,505,506,507,508,509],[299,362,370,374,377,379,380,381,393,498,499,500,501,502,503,504,505,506,507,508,509],[299,362,370,374,377,379,380,381,393,497,498,499,501,502,503,504,505,506,507,508,509],[299,362,370,374,377,379,380,381,393,497,498,499,500,502,503,504,505,506,507,508,509],[299,362,370,374,377,379,380,381,393,497,498,499,500,501,503,504,505,506,507,508,509],[299,362,370,374,377,379,380,381,393,497,498,499,500,501,502,504,505,506,507,508,509],[299,362,370,374,377,379,380,381,393,497,498,499,500,501,502,503,505,506,507,508,509],[299,362,370,374,377,379,380,381,393,497,498,499,500,501,502,503,504,506,507,508,509],[299,362,370,374,377,379,380,381,393,497,498,499,500,501,502,503,504,505,507,508,509],[299,362,370,374,377,379,380,381,393,497,498,499,500,501,502,503,504,505,506,508,509],[299,362,370,374,377,379,380,381,393,497,498,499,500,501,502,503,504,505,506,507,509],[299,362,370,374,377,379,380,381,393,497,498,499,500,501,502,503,504,505,506,507,508],[299,359,360,362,370,374,377,379,380,381,393],[299,361,362,370,374,377,379,380,381,393],[362,370,374,377,379,380,381,393],[299,362,370,374,377,379,380,381,393,401],[299,362,363,368,370,373,374,377,379,380,381,383,393,398,410],[299,362,363,364,370,373,374,377,379,380,381,393],[299,362,365,370,374,377,379,380,381,393,411],[299,362,366,367,370,374,377,379,380,381,384,393],[299,362,367,370,374,377,379,380,381,393,398,407],[299,362,368,370,373,374,377,379,380,381,383,393],[299,361,362,369,370,374,377,379,380,381,393],[299,362,370,371,374,377,379,380,381,393],[299,362,370,372,373,374,377,379,380,381,393],[299,361,362,370,373,374,377,379,380,381,393],[299,362,370,373,374,375,377,379,380,381,393,398,410],[299,362,370,373,374,375,377,379,380,381,393,398,401],[299,349,362,370,373,374,376,377,379,380,381,383,393,398,410],[299,362,370,373,374,376,377,379,380,381,383,393,398,407,410],[299,362,370,374,376,377,378,379,380,381,393,398,407,410],[297,298,299,300,301,302,303,304,305,306,307,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417],[299,362,370,373,374,377,379,380,381,393],[299,362,370,374,377,379,381,393],[299,362,370,374,377,379,380,381,382,393,410],[299,362,370,373,374,377,379,380,381,383,393,398],[299,362,370,374,377,379,380,381,384,393],[299,362,370,374,377,379,380,381,385,393],[299,362,370,373,374,377,379,380,381,388,393],[299,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417],[299,362,370,374,377,379,380,381,390,393],[299,362,370,374,377,379,380,381,391,393],[299,362,367,370,374,377,379,380,381,383,393,401],[299,362,370,373,374,377,379,380,381,393,394],[299,362,370,374,377,379,380,381,393,395,411,414],[299,362,370,373,374,377,379,380,381,393,398,400,401],[299,362,370,374,377,379,380,381,393,399,401],[299,362,370,374,377,379,380,381,393,401,411],[299,362,370,374,377,379,380,381,393,402],[299,359,362,370,374,377,379,380,381,393,398,404,410],[299,362,370,374,377,379,380,381,393,398,403],[299,362,370,373,374,377,379,380,381,393,405,406],[299,362,370,374,377,379,380,381,393,405,406],[299,362,367,370,374,377,379,380,381,383,393,398,407],[299,362,370,374,377,379,380,381,393,408],[299,362,370,374,377,379,380,381,383,393,409],[299,362,370,374,376,377,379,380,381,391,393,410],[299,362,370,374,377,379,380,381,393,411,412],[299,362,367,370,374,377,379,380,381,393,412],[299,362,370,374,377,379,380,381,393,398,413],[299,362,370,374,377,379,380,381,382,393,414],[299,362,370,374,377,379,380,381,393,415],[299,362,365,370,374,377,379,380,381,393],[299,362,367,370,374,377,379,380,381,393],[299,362,370,374,377,379,380,381,393,411],[299,349,362,370,374,377,379,380,381,393],[299,362,370,374,377,379,380,381,393,410],[299,362,370,374,377,379,380,381,393,416],[299,362,370,374,377,379,380,381,388,393],[299,362,370,374,377,379,380,381,393,406],[299,349,362,370,373,374,375,377,379,380,381,388,393,398,401,410,413,414,416],[299,362,370,374,377,379,380,381,393,398,417],[299,362,370,374,377,379,380,381,393,516],[299,362,370,374,377,379,380,381,393,514,515],[299,362,370,374,377,379,380,381,393,398,418],[299,362,370,374,376,377,379,380,381,393,418,487,490],[299,362,370,374,377,379,380,381,393,398,418,489],[299,362,370,373,374,376,377,378,379,380,381,383,393,398,407,410,417,418],[143,144,299,362,370,374,377,379,380,381,393],[299,362,370,374,377,379,380,381,393,409],[299,362,370,374,377,379,380,381,393,488],[299,362,370,374,377,379,380,381,393,459],[70,72,299,362,370,374,377,379,380,381,393],[72,299,362,370,374,377,379,380,381,393],[70,299,362,370,374,377,379,380,381,393],[68,72,93,299,362,370,374,377,379,380,381,393],[68,72,299,362,370,374,377,379,380,381,393],[93,299,362,370,374,377,379,380,381,393],[72,93,299,362,370,374,377,379,380,381,393],[69,71,299,362,363,370,374,377,379,380,381,393],[70,87,88,89,90,299,362,370,374,377,379,380,381,393],[74,86,91,92,299,362,370,374,377,379,380,381,393],[67,73,299,362,370,374,377,379,380,381,393],[74,86,91,299,362,370,374,377,379,380,381,393],[67,72,73,75,76,77,78,79,80,81,82,83,84,85,299,362,370,374,377,379,380,381,393],[299,314,317,320,321,362,370,374,377,379,380,381,393,410],[299,317,362,370,374,377,379,380,381,393,398,410],[299,317,321,362,370,374,377,379,380,381,393,410],[299,311,362,370,374,377,379,380,381,393],[299,315,362,370,374,377,379,380,381,393],[299,313,314,317,362,370,374,377,379,380,381,393,410],[299,362,370,374,377,379,380,381,383,393,407],[299,362,370,374,377,379,380,381,393,418],[299,311,362,370,374,377,379,380,381,393,418],[299,313,317,362,370,374,377,379,380,381,383,393,410],[299,308,309,310,312,316,362,370,373,374,377,379,380,381,393,398,410],[299,317,326,334,362,370,374,377,379,380,381,393],[299,309,315,362,370,374,377,379,380,381,393],[299,317,343,344,362,370,374,377,379,380,381,393],[299,309,312,317,362,370,374,377,379,380,381,393,401,410,418],[299,317,362,370,374,377,379,380,381,393],[299,313,317,362,370,374,377,379,380,381,393,410],[299,308,362,370,374,377,379,380,381,393],[299,311,312,313,315,316,317,318,319,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,344,345,346,347,348,362,370,374,377,379,380,381,393],[299,317,336,339,362,370,374,377,379,380,381,393],[299,317,326,327,328,362,370,374,377,379,380,381,393],[299,315,317,327,329,362,370,374,377,379,380,381,393],[299,316,362,370,374,377,379,380,381,393],[299,309,311,317,362,370,374,377,379,380,381,393],[299,317,321,327,329,362,370,374,377,379,380,381,393],[299,321,362,370,374,377,379,380,381,393],[299,315,317,320,362,370,374,377,379,380,381,393,410],[299,309,313,317,326,362,370,374,377,379,380,381,393],[299,317,336,362,370,374,377,379,380,381,393],[299,329,362,370,374,377,379,380,381,393],[299,311,317,343,362,370,374,377,379,380,381,393,401,416,418],[97,120,121,125,127,128,299,362,370,374,377,379,380,381,393],[105,115,121,127,299,362,370,374,377,379,380,381,393],[127,299,362,370,374,377,379,380,381,393],[97,101,104,113,114,115,118,120,121,126,128,299,362,370,374,377,379,380,381,393],[96,299,362,370,374,377,379,380,381,393],[96,97,101,104,105,113,114,115,118,119,120,121,125,126,127,129,130,131,132,133,134,135,299,362,370,374,377,379,380,381,393],[100,113,118,299,362,370,374,377,379,380,381,393],[100,101,102,104,113,121,125,127,299,362,370,374,377,379,380,381,393],[114,115,121,299,362,370,374,377,379,380,381,393],[101,104,113,118,121,126,127,299,362,370,374,377,379,380,381,393],[100,101,102,104,113,114,120,125,126,127,299,362,370,374,377,379,380,381,393],[100,102,114,115,116,117,121,125,299,362,370,374,377,379,380,381,393],[100,121,125,299,362,370,374,377,379,380,381,393],[121,127,299,362,370,374,377,379,380,381,393],[100,101,102,103,112,115,118,121,125,299,362,370,374,377,379,380,381,393],[100,101,102,103,115,116,118,121,125,299,362,370,374,377,379,380,381,393],[96,98,99,101,105,115,118,119,121,128,299,362,370,374,377,379,380,381,393],[97,101,121,125,299,362,370,374,377,379,380,381,393],[125,299,362,370,374,377,379,380,381,393],[122,123,124,299,362,370,374,377,379,380,381,393],[98,120,121,127,129,299,362,370,374,377,379,380,381,393],[105,299,362,370,374,377,379,380,381,393],[105,114,118,120,299,362,370,374,377,379,380,381,393],[105,120,299,362,370,374,377,379,380,381,393],[101,102,104,113,115,116,120,121,299,362,370,374,377,379,380,381,393],[100,104,105,112,113,115,299,362,370,374,377,379,380,381,393],[100,101,102,105,112,113,115,118,299,362,370,374,377,379,380,381,393],[120,126,127,299,362,370,374,377,379,380,381,393],[101,299,362,370,374,377,379,380,381,393],[101,102,299,362,370,374,377,379,380,381,393],[99,100,102,106,107,108,109,110,111,113,116,118,299,362,370,374,377,379,380,381,393],[157,158,299,362,370,374,377,379,380,381,393],[155,156,157,159,160,165,299,362,370,374,377,379,380,381,393],[156,157,299,362,370,374,377,379,380,381,393],[165,299,362,370,374,377,379,380,381,393],[166,299,362,370,374,377,379,380,381,393],[157,299,362,370,374,377,379,380,381,393],[155,156,157,160,161,162,163,164,299,362,370,374,377,379,380,381,393],[155,156,167,299,362,370,374,377,379,380,381,393],[234,299,362,370,374,377,379,380,381,393],[234,238,299,362,370,374,377,379,380,381,393],[229,232,234,236,237,238,239,240,241,242,243,299,362,370,374,377,379,380,381,393],[168,170,238,299,362,370,374,377,379,380,381,393],[244,299,362,370,374,377,379,380,381,393],[234,236,299,362,370,374,377,379,380,381,393],[169,234,237,299,362,370,374,377,379,380,381,393],[170,172,174,175,176,177,299,362,370,374,377,379,380,381,393],[172,174,176,177,299,362,370,374,377,379,380,381,393],[172,174,176,299,362,370,374,377,379,380,381,393],[169,172,174,175,177,299,362,370,374,377,379,380,381,393],[168,170,171,172,173,174,175,176,177,178,179,229,230,231,232,233,299,362,370,374,377,379,380,381,393],[168,170,171,174,299,362,370,374,377,379,380,381,393],[170,171,174,299,362,370,374,377,379,380,381,393],[174,177,299,362,370,374,377,379,380,381,393],[168,169,171,172,173,175,176,177,299,362,370,374,377,379,380,381,393],[168,169,170,174,234,299,362,370,374,377,379,380,381,393],[174,175,176,177,299,362,370,374,377,379,380,381,393],[245,299,362,370,374,377,379,380,381,393],[176,299,362,370,374,377,379,380,381,393],[180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,299,362,370,374,377,379,380,381,393],[274,299,362,370,374,377,379,380,381,393],[265,266,299,362,370,374,377,379,380,381,393],[262,263,265,267,268,273,299,362,370,374,377,379,380,381,393],[263,265,299,362,370,374,377,379,380,381,393],[273,299,362,370,374,377,379,380,381,393],[265,299,362,370,374,377,379,380,381,393],[262,263,265,268,269,270,271,272,299,362,370,374,377,379,380,381,393],[262,263,264,299,362,370,374,377,379,380,381,393],[299,362,370,374,377,379,380,381,384,385,393],[152,282,299,362,370,374,377,379,380,381,384,385,393],[152,282,285,286,299,362,370,374,377,379,380,381,384,385,393],[152,282,283,284,285,286,287,288,289,290,299,362,370,374,377,379,380,381,393],[284,299,362,370,374,377,379,380,381,393],[282,284,285,299,362,370,374,377,379,380,381,393],[152,299,362,370,374,377,379,380,381,393],[150,152,299,362,363,370,374,377,379,380,381,385,393],[66,94,95,137,145,299,362,370,374,377,379,380,381,385,393],[66,95,299,362,370,374,377,379,380,381,384,385,393],[66,93,94,299,362,370,374,377,379,380,381,384,385,393],[299,362,363,370,374,377,379,380,381,382,384,385,393],[66,95,136,299,362,370,374,377,379,380,381,385,393],[66,95,137,138,140,141,142,146,147,148,149,150,151,299,362,370,374,377,379,380,381,393],[66,95,299,362,363,370,374,377,379,380,381,384,385,393],[66,95,137,299,362,370,374,377,379,380,381,385,393],[66,95,299,362,370,374,377,379,380,381,385,393],[66,95,139,299,362,370,374,377,379,380,381,385,393],[293,294,295,299,362,370,374,377,379,380,381,393],[292,299,362,363,370,374,377,379,380,381,384,385,393],[292,299,362,370,374,377,379,380,381,384,385,393],[145,291,299,362,370,374,377,379,380,381,384,385,393,422],[291,299,362,370,374,377,379,380,381,385,393,422,423],[145,299,362,363,370,374,377,379,380,381,384,385,393,422],[145,291,299,362,370,374,377,379,380,381,385,393,422,423,458,460],[145,291,299,362,370,374,377,379,380,381,384,385,393,421,422,423,424,425,458,460,461,462,463,464,465,466],[291,299,362,367,370,374,377,379,380,381,385,393,422,424],[145,291,299,362,370,374,377,379,380,381,385,393,464],[291,299,362,370,374,377,379,380,381,385,393,421],[260,261,280,299,362,370,374,377,379,380,381,393],[260,277,278,279,299,362,370,374,377,379,380,381,393],[95,148,260,275,276,299,362,370,374,377,379,380,381,393],[95,139,140,260,275,276,299,362,370,374,377,379,380,381,393],[95,146,260,275,276,299,362,370,374,377,379,380,381,385,393]],"fileInfos":[{"version":"c430d44666289dae81f30fa7b2edebf186ecc91a2d4c71266ea6ae76388792e1","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","impliedFormat":1},{"version":"ee7bad0c15b58988daa84371e0b89d313b762ab83cb5b31b8a2d1162e8eb41c2","impliedFormat":1},{"version":"080941d9f9ff9307f7e27a83bcd888b7c8270716c39af943532438932ec1d0b9","affectsGlobalScope":true,"impliedFormat":1},{"version":"2e80ee7a49e8ac312cc11b77f1475804bee36b3b2bc896bead8b6e1266befb43","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7a3c8b952931daebdfc7a2897c53c0a1c73624593fa070e46bd537e64dcd20a","affectsGlobalScope":true,"impliedFormat":1},{"version":"80e18897e5884b6723488d4f5652167e7bb5024f946743134ecc4aa4ee731f89","affectsGlobalScope":true,"impliedFormat":1},{"version":"cd034f499c6cdca722b60c04b5b1b78e058487a7085a8e0d6fb50809947ee573","affectsGlobalScope":true,"impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"0559b1f683ac7505ae451f9a96ce4c3c92bdc71411651ca6ddb0e88baaaad6a3","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"fb0f136d372979348d59b3f5020b4cdb81b5504192b1cacff5d1fbba29378aa1","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"a680117f487a4d2f30ea46f1b4b7f58bef1480456e18ba53ee85c2746eeca012","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"d6d7ae4d1f1f3772e2a3cde568ed08991a8ae34a080ff1151af28b7f798e22ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true,"impliedFormat":1},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true,"impliedFormat":1},{"version":"959d36cddf5e7d572a65045b876f2956c973a586da58e5d26cde519184fd9b8a","affectsGlobalScope":true,"impliedFormat":1},{"version":"965f36eae237dd74e6cca203a43e9ca801ce38824ead814728a2807b1910117d","affectsGlobalScope":true,"impliedFormat":1},{"version":"3925a6c820dcb1a06506c90b1577db1fdbf7705d65b62b99dce4be75c637e26b","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a3d63ef2b853447ec4f749d3f368ce642264246e02911fcb1590d8c161b8005","affectsGlobalScope":true,"impliedFormat":1},{"version":"8cdf8847677ac7d20486e54dd3fcf09eda95812ac8ace44b4418da1bbbab6eb8","affectsGlobalScope":true,"impliedFormat":1},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true,"impliedFormat":1},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true,"impliedFormat":1},{"version":"b4b67b1a91182421f5df999988c690f14d813b9850b40acd06ed44691f6727ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"51ad4c928303041605b4d7ae32e0c1ee387d43a24cd6f1ebf4a2699e1076d4fa","affectsGlobalScope":true,"impliedFormat":1},{"version":"196cb558a13d4533a5163286f30b0509ce0210e4b316c56c38d4c0fd2fb38405","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"3cbad9a1ba4453443026ed38e4b8be018abb26565fa7c944376463ad9df07c41","impliedFormat":1},{"version":"58f0e50f01cd33c002984beee0973039fd24226a88e93bce71c142a2d94ee186","impliedFormat":1},{"version":"16b81141d0c59af6f07e5fc24824c54dd6003da0ab0a2d2cedc95f8eb03ea8d3","impliedFormat":1},{"version":"6578758b0b94087beffd0ce554701365cd1e6a7428f14464ac8b88095fca4e50","impliedFormat":1},{"version":"b6c4796630a47f8b0f420519cd241e8e7701247b48ed4b205e8d057cbf7107d7","impliedFormat":1},{"version":"6256cf36c8ae7e82bff606595af8fe08a06f8478140fcf304ee2f10c7716ddc8","impliedFormat":1},{"version":"b2dbe6b053e04ec135c7ce722e0a4e9744281ea40429af96e2662cc926465519","impliedFormat":1},{"version":"95cc177eacf4ddd138f1577e69ee235fd8f1ea7c7f160627deb013b39774b94e","impliedFormat":1},{"version":"5619706bbd7a964d7c82cd4a307457ed0327ecc86772ceb7ea0870566c6578b2","impliedFormat":1},{"version":"b48c4e15766170c5003a6273b1d8f17f854ec565ccaaebd9f700fef159b84078","impliedFormat":1},{"version":"7c774169686976056434799723bd7a48348df9d2204b928a0b77920505585214","impliedFormat":1},{"version":"5e95379e81e2d373e5235cedc4579938e39db274a32cfa32f8906e7ff6698763","impliedFormat":1},{"version":"3e697e2186544103572756d80b61fcce3842ab07abdc5a1b7b8d4b9a4136005a","impliedFormat":1},{"version":"8758b438b12ea50fb8b678d29ab0ef42d77abfb801cec481596ce6002b537a6f","impliedFormat":1},{"version":"688a28e7953ef4465f68da2718dc6438aaa16325133a8cb903bf850c63cb4a7e","impliedFormat":1},{"version":"015682a15ef92844685cca5e816b1d21dc2a2cfb5905b556a8e9ca50b236af05","impliedFormat":1},{"version":"f73cf81342d2a25b65179c262ca7c38df023969129094607d0eb52510a56f10f","impliedFormat":1},{"version":"f433d28f86313073f13b16c0a18ccdd21759390f52c8d7bf9d916645b12d16ed","impliedFormat":1},{"version":"e7d7e67bd66b30f2216e4678b97bb09629a2b31766a79119acaa30e3005ef5fb","impliedFormat":1},{"version":"e05a20aa85c7324c65643542c2d7314774c2adf510f9dcbad5d3afac74ca3dac","impliedFormat":1},{"version":"e137f087bda0256410b28743ef9a1bf57a4cafd43ffa6b62d5c17a8f5a08b3b5","impliedFormat":1},{"version":"b1e92e9b96cacb98a39acc958670ac895c3b2bb05d8810497310b6b678c46acc","impliedFormat":1},{"version":"af504042a6db047c40cc0aeb14550bbc954f194f2b8c5ad8944f2da502f45bf5","impliedFormat":1},{"version":"5b25b6ab5ad6c17f90b592162b2e9978ad8d81edf24cd3957306eb6e5edb89a9","impliedFormat":1},{"version":"24693bd77ac3be0b16e564d0ab498a397feb758ce7f4ed9f13478d566e3aafde","impliedFormat":1},{"version":"208dad548b895c7d02465de6ba79064b7c67bc4d94e5227b09f21d58790e634c","impliedFormat":1},{"version":"048c0ced65fa41fbf4bcc3d5e8e5b6f6c7f27335ceb54d401be654e821adbc08","impliedFormat":1},{"version":"e1126668c194faa56a728eb5bd2dd88dfc19460ced65c38888977a22369e4624","impliedFormat":1},{"version":"9a57d654b0a0e4bf56a8eb0aa3ede1c7d349cec6220e36b5288c26626c8688ed","impliedFormat":1},{"version":"2d526d2a2d6dfd1980fb6eaf7aa668c24d339e27b41cac2a72efc75abe301b35","impliedFormat":1},{"version":"5a8f04bb3d0a8c73a6bd8a75f8c50de4e22e1f3c79c0b3ba79ae71104e72b2f6","impliedFormat":1},{"version":"3dfcd0a3bfa70b53135db3cf2e4ddcb7eccc3e4418ce833ae24eecd06928328f","impliedFormat":1},{"version":"33e12c9940a7f23d50742e5925a193bb4af9b23ee159251e6bc50bb9070618a1","impliedFormat":1},{"version":"bc41a8e33caf4d193b0c49ec70d1e8db5ce3312eafe5447c6c1d5a2084fece12","impliedFormat":1},{"version":"7c33f11a56ba4e79efc4ddae85f8a4a888e216d2bf66c863f344d403437ffc74","impliedFormat":1},{"version":"cbef1abd1f8987dee5c9ed8c768a880fbfbff7f7053e063403090f48335c8e4e","impliedFormat":1},{"version":"9249603c91a859973e8f481b67f50d8d0b3fa43e37878f9dfc4c70313ad63065","impliedFormat":1},{"version":"0132f67b7f128d4a47324f48d0918ec73cf4220a5e9ea8bd92b115397911254f","impliedFormat":1},{"version":"06b37153d512000a91cad6fcbae75ca795ecec00469effaa8916101a00d5b9e2","impliedFormat":1},{"version":"8a641e3402f2988bf993007bd814faba348b813fc4058fce5b06de3e81ed511a","impliedFormat":1},{"version":"281744305ba2dcb2d80e2021fae211b1b07e5d85cfc8e36f4520325fcf698dbb","impliedFormat":1},{"version":"e1b042779d17b69719d34f31822ddba8aa6f5eb15f221b02105785f4447e7f5b","impliedFormat":1},{"version":"6858337936b90bd31f1674c43bedda2edbab2a488d04adc02512aef47c792fd0","impliedFormat":1},{"version":"15cb3deecc635efb26133990f521f7f1cc95665d5db8d87e5056beaea564b0ce","impliedFormat":1},{"version":"e27605c8932e75b14e742558a4c3101d9f4fdd32e7e9a056b2ca83f37f973945","impliedFormat":1},{"version":"f0443725119ecde74b0d75c82555b1f95ee1c3cd371558e5528a83d1de8109de","impliedFormat":1},{"version":"7794810c4b3f03d2faa81189504b953a73eb80e5662a90e9030ea9a9a359a66f","impliedFormat":1},{"version":"b074516a691a30279f0fe6dff33cd76359c1daacf4ae024659e44a68756de602","impliedFormat":1},{"version":"57cbeb55ec95326d068a2ce33403e1b795f2113487f07c1f53b1eaf9c21ff2ce","impliedFormat":1},{"version":"a00362ee43d422bcd8239110b8b5da39f1122651a1809be83a518b1298fa6af8","impliedFormat":1},{"version":"a820499a28a5fcdbf4baec05cc069362041d735520ab5a94c38cc44db7df614c","impliedFormat":1},{"version":"33a6d7b07c85ac0cef9a021b78b52e2d901d2ebfd5458db68f229ca482c1910c","impliedFormat":1},{"version":"8f648847b52020c1c0cdfcc40d7bcab72ea470201a631004fde4d85ccbc0c4c7","impliedFormat":1},{"version":"7821d3b702e0c672329c4d036c7037ecf2e5e758eceb5e740dde1355606dc9f2","impliedFormat":1},{"version":"213e4f26ee5853e8ba314ecad3a73cd06ab244a0809749bb777cbc1619aa07d8","impliedFormat":1},{"version":"cafd6ef91d96228a618436c03d60fe5078f43d32df4c39ebd9f3f7d013dbe337","impliedFormat":1},{"version":"961fa18e1658f3f8e38c23e1a9bc3f4d7be75b056a94700291d5f82f57524ff0","impliedFormat":1},{"version":"079c02dc397960da2786db71d7c9e716475377bcedd81dede034f8a9f94c71b8","impliedFormat":1},{"version":"a7595cbb1b354b54dff14a6bb87d471e6d53b63de101a1b4d9d82d3d3f6eddec","impliedFormat":1},{"version":"1f49a85a97e01a26245fd74232b3b301ebe408fb4e969e72e537aa6ffbd3fe14","impliedFormat":1},{"version":"9c38563e4eabfffa597c4d6b9aa16e11e7f9a636f0dd80dd0a8bce1f6f0b2108","impliedFormat":1},{"version":"a971cba9f67e1c87014a2a544c24bc58bad1983970dfa66051b42ae441da1f46","impliedFormat":1},{"version":"df9b266bceb94167c2e8ae25db37d31a28de02ae89ff58e8174708afdec26738","impliedFormat":1},{"version":"9e5b8137b7ee679d31b35221503282561e764116d8b007c5419b6f9d60765683","impliedFormat":1},{"version":"3e7ae921a43416e155d7bbe5b4229b7686cfa6a20af0a3ae5a79dfe127355c21","impliedFormat":1},{"version":"c7200ae85e414d5ed1d3c9507ae38c097050161f57eb1a70bef021d796af87a7","impliedFormat":1},{"version":"4edb4ff36b17b2cf19014b2c901a6bdcdd0d8f732bcf3a11aa6fd0a111198e27","impliedFormat":1},{"version":"810f0d14ce416a343dcdd0d3074c38c094505e664c90636b113d048471c292e2","impliedFormat":1},{"version":"9c37dc73c97cd17686edc94cc534486509e479a1b8809ef783067b7dde5c6713","impliedFormat":1},{"version":"5fe2ef29b33889d3279d5bc92f8e554ffd32145a02f48d272d30fc1eea8b4c89","impliedFormat":1},{"version":"e39090ffe9c45c59082c3746e2aa2546dc53e3c5eeb4ad83f8210be7e2e58022","impliedFormat":1},{"version":"9f85a1810d42f75e1abb4fc94be585aae1fdac8ae752c76b912d95aef61bf5de","impliedFormat":1},{"version":"c6c7a5c8ebafc9af9dd2b8fac34f20ba18dd58eb919bb2fb7a4023925b45e857","impliedFormat":1},{"version":"b7a29d73cd766287952ba41c00ee828cc61dec91a228d34462d70cd47394d159","impliedFormat":1},{"version":"6049d315e1aa3f39a48f06cbccd77dbe2d85dc28e79638dd91adc37280c6d97e","impliedFormat":99},{"version":"2bf5d0de44424590e00eebfd1b7596d3518b04ccb7cb71db73608e30cbc8824b","impliedFormat":1},{"version":"87da070cf424c8681ded708c7d4998d8dbf5bdfbad4c4cc26b4c21657f33c45e","impliedFormat":1},{"version":"b20ce64c110eb1eeaf97d9d63f4579c43a1a7c9213cd2102ffeb8400e19f1d77","impliedFormat":1},{"version":"acfed6cc001e7f7f26d2ba42222a180ba669bb966d4dd9cb4ad5596516061b13","impliedFormat":99},{"version":"f61a4dc92450609c353738f0a2daebf8cae71b24716dbd952456d80b1e1a48b6","impliedFormat":99},{"version":"f3f76db6e76bc76d13cc4bfa10e1f74390b8ebe279535f62243e8d8acd919314","impliedFormat":99},{"version":"e444cf10a471ebd65d23acda53d4c1a1794015ef9549446c68028e8de61f1c5d","impliedFormat":1},{"version":"1396e19fda3800ae7dbdf46af465d1f2a94f0694c7a053bc24f975144c521085","impliedFormat":1},{"version":"dc70c6a6b07a65fccdef34da741413e6a5dec41a41ed2cbb4c4b34a0300041a0","impliedFormat":1},{"version":"d4004ad19e32de9a0a4531a3b0c5b3c0aeb6285bff1b0ecb0e9c751502592fd3","impliedFormat":1},{"version":"bac94368b13577be2043ead437c89eb4d5f5749733ee27cacdce93d9fa832340","impliedFormat":1},{"version":"6c6e0e251f25278ace232a8b9af05ffdbd152eb4a642703e05240bacbd7495cf","impliedFormat":1},{"version":"e3b3e358ec7e9578af50705e6b59f53fdbb64f8af6fd51e63cdb7257cdba9da8","impliedFormat":1},{"version":"57263c73c7163fc8a9455675ff204dc34c729c5a1a4625b6720df79d19dd3982","impliedFormat":1},{"version":"5a8426790bdf68c3fef243cddd653000a46613cf18ea2fbeb56d70ddc4a618ba","impliedFormat":1},{"version":"d3cfde44f8089768ebb08098c96d01ca260b88bccf238d55eee93f1c620ff5a5","impliedFormat":1},{"version":"293eadad9dead44c6fd1db6de552663c33f215c55a1bfa2802a1bceed88ff0ec","impliedFormat":1},{"version":"36eb5babc665b890786550d4a8cb20ef7105673a6d5551fbdd7012877bb26942","impliedFormat":1},{"version":"fec412ded391a7239ef58f455278154b62939370309c1fed322293d98c8796a6","impliedFormat":1},{"version":"e3498cf5e428e6c6b9e97bd88736f26d6cf147dedbfa5a8ad3ed8e05e059af8a","impliedFormat":1},{"version":"dba3f34531fd9b1b6e072928b6f885aa4d28dd6789cbd0e93563d43f4b62da53","impliedFormat":1},{"version":"f672c876c1a04a223cf2023b3d91e8a52bb1544c576b81bf64a8fec82be9969c","impliedFormat":1},{"version":"e4b03ddcf8563b1c0aee782a185286ed85a255ce8a30df8453aade2188bbc904","impliedFormat":1},{"version":"2329d90062487e1eaca87b5e06abcbbeeecf80a82f65f949fd332cfcf824b87b","impliedFormat":1},{"version":"25b3f581e12ede11e5739f57a86e8668fbc0124f6649506def306cad2c59d262","impliedFormat":1},{"version":"93c3e73824ad57f98fd23b39335dbdae2db0bd98199b0dc0b9ccc60bf3c5134a","impliedFormat":1},{"version":"a9ebb67d6bbead6044b43714b50dcb77b8f7541ffe803046fdec1714c1eba206","impliedFormat":1},{"version":"833e92c058d033cde3f29a6c7603f517001d1ddd8020bc94d2067a3bc69b2a8e","impliedFormat":1},{"version":"c1a2e05eb6d7ca8d7e4a7f4c93ccf0c2857e842a64c98eaee4d85841ee9855e6","impliedFormat":1},{"version":"835fb2909ce458740fb4a49fc61709896c6864f5ce3db7f0a88f06c720d74d02","impliedFormat":1},{"version":"6e5857f38aa297a859cab4ec891408659218a5a2610cd317b6dcbef9979459cc","impliedFormat":1},{"version":"ead8e39c2e11891f286b06ae2aa71f208b1802661fcdb2425cffa4f494a68854","impliedFormat":1},{"version":"82919acbb38870fcf5786ec1292f0f5afe490f9b3060123e48675831bd947192","impliedFormat":1},{"version":"e222701788ec77bd57c28facbbd142eadf5c749a74d586bc2f317db7e33544b1","impliedFormat":1},{"version":"09154713fae0ed7befacdad783e5bd1970c06fc41a5f866f7f933b96312ce764","impliedFormat":1},{"version":"8d67b13da77316a8a2fabc21d340866ddf8a4b99e76a6c951cc45189142df652","impliedFormat":1},{"version":"a91c8d28d10fee7fe717ddf3743f287b68770c813c98f796b6e38d5d164bd459","impliedFormat":1},{"version":"68add36d9632bc096d7245d24d6b0b8ad5f125183016102a3dad4c9c2438ccb0","impliedFormat":1},{"version":"3a819c2928ee06bbcc84e2797fd3558ae2ebb7e0ed8d87f71732fb2e2acc87b4","impliedFormat":1},{"version":"f6f827cd43e92685f194002d6b52a9408309cda1cec46fb7ca8489a95cbd2fd4","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"a270a1a893d1aee5a3c1c8c276cd2778aa970a2741ee2ccf29cc3210d7da80f5","impliedFormat":1},{"version":"add0ce7b77ba5b308492fa68f77f24d1ed1d9148534bdf05ac17c30763fc1a79","impliedFormat":1},{"version":"8926594ee895917e90701d8cbb5fdf77fc238b266ac540f929c7253f8ad6233d","impliedFormat":1},{"version":"2f67911e4bf4e0717dc2ded248ce2d5e4398d945ee13889a6852c1233ea41508","impliedFormat":1},{"version":"d8430c275b0f59417ea8e173cfb888a4477b430ec35b595bf734f3ec7a7d729f","impliedFormat":1},{"version":"69364df1c776372d7df1fb46a6cb3a6bf7f55e700f533a104e3f9d70a32bec18","impliedFormat":1},{"version":"0648a8c200b5544e30677f7f7059b1e384d6cab716c82659716457e3f317ebae","impliedFormat":1},{"version":"6042774c61ece4ba77b3bf375f15942eb054675b7957882a00c22c0e4fe5865c","impliedFormat":1},{"version":"5a3bd57ed7a9d9afef74c75f77fce79ba3c786401af9810cdf45907c4e93f30e","impliedFormat":1},{"version":"ed8763205f02fb65e84eff7432155258df7f93b7d938f01785cb447d043d53f3","impliedFormat":1},{"version":"30db853bb2e60170ba11e39ab48bacecb32d06d4def89eedf17e58ebab762a65","impliedFormat":1},{"version":"e27451b24234dfed45f6cf22112a04955183a99c42a2691fb4936d63cfe42761","impliedFormat":1},{"version":"2316301dd223d31962d917999acf8e543e0119c5d24ec984c9f22cb23247160c","impliedFormat":1},{"version":"58d65a2803c3b6629b0e18c8bf1bc883a686fcf0333230dd0151ab6e85b74307","impliedFormat":1},{"version":"e818471014c77c103330aee11f00a7a00b37b35500b53ea6f337aefacd6174c9","impliedFormat":1},{"version":"d4a5b1d2ff02c37643e18db302488cd64c342b00e2786e65caac4e12bda9219b","impliedFormat":1},{"version":"d8bc0c5487582c6d887c32c92d8b4ffb23310146fcb1d82adf4b15c77f57c4ac","impliedFormat":1},{"version":"8cb31102790372bebfd78dd56d6752913b0f3e2cefbeb08375acd9f5ba737155","impliedFormat":1},{"version":"f17ed72d1b1882ab6dc66d45e699f757d15bba0807af2fc9c3ec98fe367611c1","impliedFormat":1},{"version":"0202dfffc221d1214a6e12ec1f5f36638f7bc7241bae8493dc5b151c7a45b0c6","impliedFormat":1},{"version":"7bb43a0f0180ad87b0a944ef95be8615d4c1d621a93ae503a8fcdee2027243ef","impliedFormat":1},{"version":"ba678532514244768286bdfdc82b33f072d5de4e9d281a75bcccdba9970788d7","impliedFormat":1},{"version":"0b79f95a79497386c50f38bafbbf59154619e51d7bbe5acf61cd376d3c9d77b9","impliedFormat":1},{"version":"5993793a23b298afd20c2e1cd2bf8468cc7e9415d314d0771e93dd8b2e389d28","impliedFormat":1},{"version":"2ac574152c07fe5bfea9ce46e9452a28f849ec11c7bbbdc399b7bd1aeab9455f","impliedFormat":1},{"version":"104fae9b53b5eaa040d9ce626e1bf0b3e6e27d269a899a98a4a28358cdcbc155","impliedFormat":99},{"version":"50a6aa665f3a2e769a4d683f9f74cd15164d0947fb957d8016331b170ab8b643","impliedFormat":1},{"version":"6b83491ca98ce7dc82ec0c54f1456705c9ea08f5a39fa8cea17134b28e2a73d7","impliedFormat":1},{"version":"33aa2f336bb0bc598652ddd1ad3095ef7a14e4dbed9cf829fa9357e989fff31a","impliedFormat":1},{"version":"d691e546590145171d00d78b341bd3ca4844c96eb34f870be84058a1cab585c3","impliedFormat":1},{"version":"c9d12ca3f67129b3ed2b81bf54537c970673cedd05ba28fbeba70c1e8aff684b","impliedFormat":1},{"version":"6f0b69f7afb2ff04a4b73fae6b43476c14349a438881c7a8c3d34cbad2c2bf3b","impliedFormat":1},{"version":"f55b797d46c4268b2e42961be04e99ad10ccbe55f2cb87fc99b82979fb28121f","impliedFormat":1},{"version":"d3cfde44f8089768ebb08098c96d01ca260b88bccf238d55eee93f1c620ff5a5","impliedFormat":1},{"version":"293eadad9dead44c6fd1db6de552663c33f215c55a1bfa2802a1bceed88ff0ec","impliedFormat":1},{"version":"833e92c058d033cde3f29a6c7603f517001d1ddd8020bc94d2067a3bc69b2a8e","impliedFormat":1},{"version":"08b2fae7b0f553ad9f79faec864b179fc58bc172e295a70943e8585dd85f600c","impliedFormat":1},{"version":"f12edf1672a94c578eca32216839604f1e1c16b40a1896198deabf99c882b340","impliedFormat":1},{"version":"e3498cf5e428e6c6b9e97bd88736f26d6cf147dedbfa5a8ad3ed8e05e059af8a","impliedFormat":1},{"version":"dba3f34531fd9b1b6e072928b6f885aa4d28dd6789cbd0e93563d43f4b62da53","impliedFormat":1},{"version":"f672c876c1a04a223cf2023b3d91e8a52bb1544c576b81bf64a8fec82be9969c","impliedFormat":1},{"version":"e4b03ddcf8563b1c0aee782a185286ed85a255ce8a30df8453aade2188bbc904","impliedFormat":1},{"version":"2329d90062487e1eaca87b5e06abcbbeeecf80a82f65f949fd332cfcf824b87b","impliedFormat":1},{"version":"25b3f581e12ede11e5739f57a86e8668fbc0124f6649506def306cad2c59d262","impliedFormat":1},{"version":"4fdb529707247a1a917a4626bfb6a293d52cd8ee57ccf03830ec91d39d606d6d","impliedFormat":1},{"version":"a9ebb67d6bbead6044b43714b50dcb77b8f7541ffe803046fdec1714c1eba206","impliedFormat":1},{"version":"5780b706cece027f0d4444fbb4e1af62dc51e19da7c3d3719f67b22b033859b9","impliedFormat":1},{"version":"6ef341d40bb211d58441247975580ae825f25b273e33d9f46c4bae3d749fd4e4","impliedFormat":1},{"version":"15235a417affa75dc1d298d3046ea3270399082dc2bb4d54049f886f18605714","impliedFormat":1},{"version":"2a6cab389fcf13b1f1aeea9ebb4f92d00dc690211bd05ab084058b13eeb5ac92","impliedFormat":1},{"version":"308bde5115ace7826eecaa72edd7013e3676ae50cbc9fa1bb0feeef95f10691d","impliedFormat":1},{"version":"bfc30c5cb0ae36dde9fbe3cbad14d8d605adbfe648194eb610e08af8f5e83ba0","impliedFormat":1},{"version":"b02ce74d16c31ea4c3b56ef2e3077099dd86117d479b1050a347dd568deea249","impliedFormat":1},{"version":"dbeb295ca15ef6e070e0c58b9a51e131e9694d85c4ca9b5cf55f7ce8245e3ffd","impliedFormat":1},{"version":"05a62a7fc8dbee93b0ba8b886739ac7335eeba8804bfca7f969dcce5633b6855","impliedFormat":1},{"version":"8f304628ea5ca2bad55395f3d98e55444719311136ecd2561548789db2bccee3","impliedFormat":1},{"version":"2be9e2065ca36b0916982f6a50551291acbe1126ddbfda7cca0f1a3d90609939","impliedFormat":1},{"version":"d1eae61f4309efc6d16146e3d3642537208265d6a09a9d0026e13d150a1ac927","impliedFormat":1},{"version":"ad98bec67f02dcd0ae9320134f0d75c3f6eafc6bd8b6f2c8e7499d06c28651ab","impliedFormat":1},{"version":"1509aedaf847048bbab361162a3264d1b54fca1681abeceee7f6416cb36b64c8","impliedFormat":1},{"version":"b769e237841fe852e58d01508fd078ffce59ad518921bc69151d2ea82d7ed815","impliedFormat":1},{"version":"00e1c72a2e4f24cab76484c8cc69759ff7876829c2cf3b3514bddea7c5658513","impliedFormat":1},{"version":"ba610c6fee2e7a60f16c827c81a01cf00645a900f637e80bfa045fdc36bda6c1","impliedFormat":1},{"version":"79be4da9d05a551b5733316b23086afe06ef6f1cc0e90c64dae1da0db4f04772","impliedFormat":1},{"version":"b5d8e91638e0dd55b75af80146f92fa466311d23b43ca1c1aaa0641203cc5e68","impliedFormat":1},{"version":"14b7d0542ebdfa175f0c12c5b1e9917185f5e7139825bfe5efd0f3fbd350466f","impliedFormat":1},{"version":"bb34b3e8797b6e17a187df3ffdf911a564ae49a632167e0d56a41cebf4840d25","impliedFormat":1},{"version":"256b8ebd08e2801e7c1030f64c7c0c434351be7c6c83b6e5d258eec1aca19eb8","impliedFormat":1},{"version":"d153a11543fd884b596587ccd97aebbeed950b26933ee000f94009f1ab142848","affectsGlobalScope":true,"impliedFormat":1},{"version":"0ccdaa19852d25ecd84eec365c3bfa16e7859cadecf6e9ca6d0dbbbee439743f","affectsGlobalScope":true,"impliedFormat":1},{"version":"438b41419b1df9f1fbe33b5e1b18f5853432be205991d1b19f5b7f351675541e","affectsGlobalScope":true,"impliedFormat":1},{"version":"096116f8fedc1765d5bd6ef360c257b4a9048e5415054b3bf3c41b07f8951b0b","affectsGlobalScope":true,"impliedFormat":1},{"version":"e5e01375c9e124a83b52ee4b3244ed1a4d214a6cfb54ac73e164a823a4a7860a","affectsGlobalScope":true,"impliedFormat":1},{"version":"f90ae2bbce1505e67f2f6502392e318f5714bae82d2d969185c4a6cecc8af2fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"4b58e207b93a8f1c88bbf2a95ddc686ac83962b13830fe8ad3f404ffc7051fb4","affectsGlobalScope":true,"impliedFormat":1},{"version":"1fefabcb2b06736a66d2904074d56268753654805e829989a46a0161cd8412c5","affectsGlobalScope":true,"impliedFormat":1},{"version":"9798340ffb0d067d69b1ae5b32faa17ab31b82466a3fc00d8f2f2df0c8554aaa","affectsGlobalScope":true,"impliedFormat":1},{"version":"c18a99f01eb788d849ad032b31cafd49de0b19e083fe775370834c5675d7df8e","affectsGlobalScope":true,"impliedFormat":1},{"version":"5247874c2a23b9a62d178ae84f2db6a1d54e6c9a2e7e057e178cc5eea13757fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"cdcf9ea426ad970f96ac930cd176d5c69c6c24eebd9fc580e1572d6c6a88f62c","impliedFormat":1},{"version":"23cd712e2ce083d68afe69224587438e5914b457b8acf87073c22494d706a3d0","impliedFormat":1},{"version":"156a859e21ef3244d13afeeba4e49760a6afa035c149dda52f0c45ea8903b338","impliedFormat":1},{"version":"10ec5e82144dfac6f04fa5d1d6c11763b3e4dbbac6d99101427219ab3e2ae887","impliedFormat":1},{"version":"615754924717c0b1e293e083b83503c0a872717ad5aa60ed7f1a699eb1b4ea5c","impliedFormat":1},{"version":"074de5b2fdead0165a2757e3aaef20f27a6347b1c36adea27d51456795b37682","impliedFormat":1},{"version":"68834d631c8838c715f225509cfc3927913b9cc7a4870460b5b60c8dbdb99baf","impliedFormat":1},{"version":"24371e69a38fc33e268d4a8716dbcda430d6c2c414a99ff9669239c4b8f40dea","impliedFormat":1},{"version":"ccab02f3920fc75c01174c47fcf67882a11daf16baf9e81701d0a94636e94556","impliedFormat":1},{"version":"3e11fce78ad8c0e1d1db4ba5f0652285509be3acdd519529bc8fcef85f7dafd9","impliedFormat":1},{"version":"ea6bc8de8b59f90a7a3960005fd01988f98fd0784e14bc6922dde2e93305ec7d","impliedFormat":1},{"version":"36107995674b29284a115e21a0618c4c2751b32a8766dd4cb3ba740308b16d59","impliedFormat":1},{"version":"914a0ae30d96d71915fc519ccb4efbf2b62c0ddfb3a3fc6129151076bc01dc60","impliedFormat":1},{"version":"9c32412007b5662fd34a8eb04292fb5314ec370d7016d1c2fb8aa193c807fe22","impliedFormat":1},{"version":"7fd1b31fd35876b0aa650811c25ec2c97a3c6387e5473eb18004bed86cdd76b6","impliedFormat":1},{"version":"4d327f7d72ad0918275cea3eee49a6a8dc8114ae1d5b7f3f5d0774de75f7439a","impliedFormat":1},{"version":"6ebe8ebb8659aaa9d1acbf3710d7dae3e923e97610238b9511c25dc39023a166","impliedFormat":1},{"version":"e85d7f8068f6a26710bff0cc8c0fc5e47f71089c3780fbede05857331d2ddec9","impliedFormat":1},{"version":"7befaf0e76b5671be1d47b77fcc65f2b0aad91cc26529df1904f4a7c46d216e9","impliedFormat":1},{"version":"0a60a292b89ca7218b8616f78e5bbd1c96b87e048849469cccb4355e98af959a","impliedFormat":1},{"version":"0b6e25234b4eec6ed96ab138d96eb70b135690d7dd01f3dd8a8ab291c35a683a","impliedFormat":1},{"version":"9666f2f84b985b62400d2e5ab0adae9ff44de9b2a34803c2c5bd3c8325b17dc0","impliedFormat":1},{"version":"40cd35c95e9cf22cfa5bd84e96408b6fcbca55295f4ff822390abb11afbc3dca","impliedFormat":1},{"version":"b1616b8959bf557feb16369c6124a97a0e74ed6f49d1df73bb4b9ddf68acf3f3","impliedFormat":1},{"version":"5b03a034c72146b61573aab280f295b015b9168470f2df05f6080a2122f9b4df","impliedFormat":1},{"version":"40b463c6766ca1b689bfcc46d26b5e295954f32ad43e37ee6953c0a677e4ae2b","impliedFormat":1},{"version":"249b9cab7f5d628b71308c7d9bb0a808b50b091e640ba3ed6e2d0516f4a8d91d","impliedFormat":1},{"version":"80aae6afc67faa5ac0b32b5b8bc8cc9f7fa299cff15cf09cc2e11fd28c6ae29e","impliedFormat":1},{"version":"f473cd2288991ff3221165dcf73cd5d24da30391f87e85b3dd4d0450c787a391","impliedFormat":1},{"version":"499e5b055a5aba1e1998f7311a6c441a369831c70905cc565ceac93c28083d53","impliedFormat":1},{"version":"8aee8b6d4f9f62cf3776cda1305fb18763e2aade7e13cea5bbe699112df85214","impliedFormat":1},{"version":"c63b9ada8c72f95aac5db92aea07e5e87ec810353cdf63b2d78f49a58662cf6c","impliedFormat":1},{"version":"1cc2a09e1a61a5222d4174ab358a9f9de5e906afe79dbf7363d871a7edda3955","impliedFormat":1},{"version":"5d0375ca7310efb77e3ef18d068d53784faf62705e0ad04569597ae0e755c401","impliedFormat":1},{"version":"59af37caec41ecf7b2e76059c9672a49e682c1a2aa6f9d7dc78878f53aa284d6","impliedFormat":1},{"version":"addf417b9eb3f938fddf8d81e96393a165e4be0d4a8b6402292f9c634b1cb00d","impliedFormat":1},{"version":"b64d4d1c5f877f9c666e98e833f0205edb9384acc46e98a1fef344f64d6aba44","impliedFormat":1},{"version":"adf27937dba6af9f08a68c5b1d3fce0ca7d4b960c57e6d6c844e7d1a8e53adae","impliedFormat":1},{"version":"12950411eeab8563b349cb7959543d92d8d02c289ed893d78499a19becb5a8cc","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"c9381908473a1c92cb8c516b184e75f4d226dad95c3a85a5af35f670064d9a2f","impliedFormat":1},{"version":"c3f5289820990ab66b70c7fb5b63cb674001009ff84b13de40619619a9c8175f","affectsGlobalScope":true,"impliedFormat":1},{"version":"b3275d55fac10b799c9546804126239baf020d220136163f763b55a74e50e750","affectsGlobalScope":true,"impliedFormat":1},{"version":"fa68a0a3b7cb32c00e39ee3cd31f8f15b80cac97dce51b6ee7fc14a1e8deb30b","affectsGlobalScope":true,"impliedFormat":1},{"version":"1cf059eaf468efcc649f8cf6075d3cb98e9a35a0fe9c44419ec3d2f5428d7123","affectsGlobalScope":true,"impliedFormat":1},{"version":"6c36e755bced82df7fb6ce8169265d0a7bb046ab4e2cb6d0da0cb72b22033e89","affectsGlobalScope":true,"impliedFormat":1},{"version":"e7721c4f69f93c91360c26a0a84ee885997d748237ef78ef665b153e622b36c1","affectsGlobalScope":true,"impliedFormat":1},{"version":"7a93de4ff8a63bafe62ba86b89af1df0ccb5e40bb85b0c67d6bbcfdcf96bf3d4","affectsGlobalScope":true,"impliedFormat":1},{"version":"90e85f9bc549dfe2b5749b45fe734144e96cd5d04b38eae244028794e142a77e","affectsGlobalScope":true,"impliedFormat":1},{"version":"e0a5deeb610b2a50a6350bd23df6490036a1773a8a71d70f2f9549ab009e67ee","affectsGlobalScope":true,"impliedFormat":1},{"version":"435b3711465425770ed2ee2f1cf00ce071835265e0851a7dc4600ab4b007550e","impliedFormat":1},{"version":"7e49f52a159435fc8df4de9dc377ef5860732ca2dc9efec1640531d3cf5da7a3","impliedFormat":1},{"version":"dd4bde4bdc2e5394aed6855e98cf135dfdf5dd6468cad842e03116d31bbcc9bc","impliedFormat":1},{"version":"4d4e879009a84a47c05350b8dca823036ba3a29a3038efed1be76c9f81e45edf","affectsGlobalScope":true,"impliedFormat":1},{"version":"237ba5ac2a95702a114a309e39c53a5bddff5f6333b325db9764df9b34f3502b","impliedFormat":1},{"version":"9ba13b47cb450a438e3076c4a3f6afb9dc85e17eae50f26d4b2d72c0688c9251","impliedFormat":1},{"version":"b64cd4401633ea4ecadfd700ddc8323a13b63b106ac7127c1d2726f32424622c","impliedFormat":1},{"version":"37c6e5fe5715814412b43cc9b50b24c67a63c4e04e753e0d1305970d65417a60","impliedFormat":1},{"version":"1d024184fb57c58c5c91823f9d10b4915a4867b7934e89115fd0d861a9df27c8","impliedFormat":1},{"version":"ee0e4946247f842c6dd483cbb60a5e6b484fee07996e3a7bc7343dfb68a04c5d","impliedFormat":1},{"version":"ef051f42b7e0ef5ca04552f54c4552eac84099d64b6c5ad0ef4033574b6035b8","impliedFormat":1},{"version":"853a43154f1d01b0173d9cbd74063507ece57170bad7a3b68f3fa1229ad0a92f","impliedFormat":1},{"version":"56231e3c39a031bfb0afb797690b20ed4537670c93c0318b72d5180833d98b72","impliedFormat":1},{"version":"5cc7c39031bfd8b00ad58f32143d59eb6ffc24f5d41a20931269011dccd36c5e","impliedFormat":1},{"version":"b0b69c61b0f0ec8ca15db4c8c41f6e77f4cacb784d42bca948f42dea33e8757e","affectsGlobalScope":true,"impliedFormat":1},{"version":"f96a48183254c00d24575401f1a761b4ce4927d927407e7862a83e06ce5d6964","impliedFormat":1},{"version":"cc25940cfb27aa538e60d465f98bb5068d4d7d33131861ace43f04fe6947d68f","impliedFormat":1},{"version":"f83fb2b1338afbb3f9d733c7d6e8b135826c41b0518867df0c0ace18ae1aa270","impliedFormat":1},{"version":"01ff95aa1443e3f7248974e5a771f513cb2ac158c8898f470a1792f817bee497","impliedFormat":1},{"version":"757227c8b345c57d76f7f0e3bbad7a91ffca23f1b2547cbed9e10025816c9cb7","impliedFormat":1},{"version":"42a05d8f239f74587d4926aba8cc54792eed8e8a442c7adc9b38b516642aadfe","impliedFormat":1},{"version":"5d21b58d60383cc6ab9ad3d3e265d7d25af24a2c9b506247e0e50b0a884920be","impliedFormat":1},{"version":"101f482fd48cb4c7c0468dcc6d62c843d842977aea6235644b1edd05e81fbf22","impliedFormat":1},{"version":"ae6757460f37078884b1571a3de3ebaf724d827d7e1d53626c02b3c2a408ac63","affectsGlobalScope":true,"impliedFormat":1},{"version":"9451a46a89ed209e2e08329e6cac59f89356eae79a7230f916d8cc38725407c7","impliedFormat":1},{"version":"3ef397f12387eff17f550bc484ea7c27d21d43816bbe609d495107f44b97e933","impliedFormat":1},{"version":"1023282e2ba810bc07905d3668349fbd37a26411f0c8f94a70ef3c05fe523fcf","impliedFormat":1},{"version":"b214ebcf76c51b115453f69729ee8aa7b7f8eccdae2a922b568a45c2d7ff52f7","impliedFormat":1},{"version":"429c9cdfa7d126255779efd7e6d9057ced2d69c81859bbab32073bad52e9ba76","impliedFormat":1},{"version":"e236b5eba291f51bdf32c231673e6cab81b5410850e61f51a7a524dddadc0f95","impliedFormat":1},{"version":"f7ba0e839daa0702e3ff1a1a871c0d8ea2d586ce684dd8a72c786c36a680b1d9","affectsGlobalScope":true,"impliedFormat":1},{"version":"7f2c62938251b45715fd2a9887060ec4fbc8724727029d1cbce373747252bdd7","impliedFormat":1},{"version":"e3ace08b6bbd84655d41e244677b474fd995923ffef7149ddb68af8848b60b05","impliedFormat":1},{"version":"132580b0e86c48fab152bab850fc57a4b74fe915c8958d2ccb052b809a44b61c","impliedFormat":1},{"version":"af4ab0aa8908fc9a655bb833d3bc28e117c4f0e1038c5a891546158beb25accb","impliedFormat":1},{"version":"69c9a5a9392e8564bd81116e1ed93b13205201fb44cb35a7fde8c9f9e21c4b23","impliedFormat":1},{"version":"5f8fc37f8434691ffac1bfd8fc2634647da2c0e84253ab5d2dd19a7718915b35","impliedFormat":1},{"version":"5981c2340fd8b076cae8efbae818d42c11ffc615994cb060b1cd390795f1be2b","impliedFormat":1},{"version":"f64deb26664af64dc274637343bde8d82f930c77af05a412c7d310b77207a448","impliedFormat":1},{"version":"ed4f674fc8c0c993cc7e145069ac44129e03519b910c62be206a0cc777bdc60b","affectsGlobalScope":true,"impliedFormat":1},{"version":"0250da3eb85c99624f974e77ef355cdf86f43980251bc371475c2b397ba55bcd","impliedFormat":1},{"version":"f1c93e046fb3d9b7f8249629f4b63dc068dd839b824dd0aa39a5e68476dc9420","impliedFormat":1},{"version":"3d3a5f27ffbc06c885dd4d5f9ee20de61faf877fe2c3a7051c4825903d9a7fdc","impliedFormat":1},{"version":"12806f9f085598ef930edaf2467a5fa1789a878fba077cd27e85dc5851e11834","impliedFormat":1},{"version":"bce309f4d9b67c18d4eeff5bba6cf3e67b2b0aead9f03f75d6060c553974d7ba","impliedFormat":1},{"version":"a43fe41c33d0a192a0ecaf9b92e87bef3709c9972e6d53c42c49251ccb962d69","impliedFormat":1},{"version":"a177959203c017fad3ecc4f3d96c8757a840957a4959a3ae00dab9d35961ca6c","affectsGlobalScope":true,"impliedFormat":1},{"version":"6fc727ccf9b36e257ff982ea0badeffbfc2c151802f741bddff00c6af3b784cf","impliedFormat":1},{"version":"2a00d005e3af99cd1cfa75220e60c61b04bfb6be7ca7453bfe2ef6cca37cc03c","impliedFormat":1},{"version":"4844a4c9b4b1e812b257676ed8a80b3f3be0e29bf05e742cc2ea9c3c6865e6c6","impliedFormat":1},{"version":"064878a60367e0407c42fb7ba02a2ea4d83257357dc20088e549bd4d89433e9c","impliedFormat":1},{"version":"14d4bd22d1b05824971b98f7e91b2484c90f1a684805c330476641417c3d9735","impliedFormat":1},{"version":"c3877fef8a43cd434f9728f25a97575b0eb73d92f38b5c87c840daccc3e21d97","impliedFormat":1},{"version":"b484ec11ba00e3a2235562a41898d55372ccabe607986c6fa4f4aba72093749f","impliedFormat":1},{"version":"1dbd83860e7634f9c236647f45dbc5d3c4f9eba8827d87209d6e9826fdf4dbd5","impliedFormat":1},{"version":"41ef7992c555671a8fe54db302788adefa191ded810a50329b79d20a6772d14c","impliedFormat":1},{"version":"041a7781b9127ab568d2cdcce62c58fdea7c7407f40b8c50045d7866a2727130","impliedFormat":1},{"version":"b37f83e7deea729aa9ce5593f78905afb45b7532fdff63041d374f60059e7852","impliedFormat":1},{"version":"e1cb68f3ef3a8dd7b2a9dfb3de482ed6c0f1586ba0db4e7d73c1d2147b6ffc51","impliedFormat":1},{"version":"55cdbeebe76a1fa18bbd7e7bf73350a2173926bd3085bb050cf5a5397025ee4e","impliedFormat":1},{"version":"211440ce81e87b3491cdf07155881344b0a61566df6e749acff0be7e8b9d1a07","impliedFormat":1},{"version":"5d9a0b6e6be8dbb259f64037bce02f34692e8c1519f5cd5d467d7fa4490dced4","impliedFormat":1},{"version":"880da0e0f3ebca42f9bd1bc2d3e5e7df33f2619d85f18ee0ed4bd16d1800bc32","impliedFormat":1},{"version":"60b1e9022076b58e20618f887baea8ad0607ea1aa441c73189978f2551af0088","impliedFormat":1},{"version":"58f0345afecbec7e897f9de3460a2b16a96be34277406d919197363b3820e6aa","impliedFormat":1},{"version":"e937dde562515f320e45090a90160142eafa7469ff853d97f1b6ed11b69a7de0","impliedFormat":1},{"version":"0abf70d5b3769f42362c6cd7e2762669b5097f94e306ac5b7ce2567c7260fc0a","impliedFormat":1},{"version":"341d8d3085cd56ede0632fed3e854c68193a18ce2dc2f476d5348f4a1185751b","impliedFormat":99},{"version":"cc2d9ba9d5434882cfb9bc2954fe433b5538fa78a40be504c9833a45d1a732ad","impliedFormat":99},{"version":"f496804f1238bfdf19b67ac9ce7825d50920a958994fc29a80697b8a63eeed6d","impliedFormat":99},{"version":"e8ff455f7ee74b0a6ea20a465bd95a1ebf41538e06f7874c7934dc1ae42bd10a","impliedFormat":99},{"version":"4e3592aed54bd51d840e6d078794b45a8388d0accf38efa3267a16742ce88041","impliedFormat":99},{"version":"b01fe2cdf67370564bbe114a897d0e470421281ac78641013cc210559381c65f","impliedFormat":99},{"version":"988be2b47c162ddfc4ac289de0bc50b52fd425d4408cb4bc40fcc9b81f4957c6","impliedFormat":99},{"version":"85cc8408b227080f73a2571c87c66ad3aa624753d599f08ba9906f607c744eb9","impliedFormat":99},{"version":"8da95d257be3f2d83c21c555dedda9c96869e5f855652523cf52dc98ca8c57de","impliedFormat":99},{"version":"aa9494cb36743567c0f6ce385ce869358b59193c9b61612e0d70e4de500424c3","impliedFormat":99},{"version":"904964129f1ef4797282d4ea4411eaf26d4b22bb481b8b8ab3e920d4cfc79ecf","impliedFormat":99},{"version":"ce6ada7f4eb4cda3ccfe28a0201608828fc6ee2d3204101976831100d9550d47","impliedFormat":99},{"version":"5a7fe6ef136e88ee70d3cd0b1aa0d6875178b2682542ca340875a2711c81d779","impliedFormat":99},{"version":"dc30228a4d8faa78799c535a32dcb2a456bccd67a152b7fae0797198476b091f","impliedFormat":99},{"version":"9a1fcfc15915ffb2b16416763898a07aca46ef4ea620c5d5f26793e76f714485","impliedFormat":99},{"version":"ab37b1199441c7ecb602defe46f72099d3d4555f7911bd865f51657f419779ab","impliedFormat":99},{"version":"e1d6ddd0c300ba35bd166063d5b2456e9d84fe96bdb7c16ad9379e50dca5dcda","impliedFormat":99},{"version":"29bb68832550b7f95a835e0ee0fa20f51dd7bdbc55363afe5f3eae20c85a800b","impliedFormat":99},{"version":"3c656ad2c834314314439f331445e5ba5d178fb67776e69c7b0c0746884450bc","impliedFormat":99},{"version":"8804b8ad255545dadc2e4d4039d45b3c0bfb5c1a103cf68c7a8712877ce7bae0","impliedFormat":99},{"version":"f6468b2c5528cb0e63ba5c2072a66711d7d8b53d0d79ba51633fdd7caaec8366","impliedFormat":99},{"version":"362276986f99951a4f4e99530a5a1804c290b0ea5efb380070ffdad36ad8f65f","impliedFormat":99},{"version":"2740df5531349a74fddd680c4c3284d5a000a546b3db64b9c8ace6254b7d2b0d","impliedFormat":99},{"version":"39b127a8c3eba5e0d7494503f950d94cdba5f4c86c733a4a7e30eee7a868c3df","impliedFormat":99},{"version":"cffa607eb95c25b119f9aad3c2e4db80384267cd35d398b537a90aee5c5dfa5e","impliedFormat":99},{"version":"241a27aadc64b2170e27e4e5b07c5dff88e0f50435a25406e3a3f6bf03859359","impliedFormat":99},{"version":"2b47be196687414efadd66f4617e4c870bef6af75eacf83ab2d9402b245de60f","impliedFormat":99},{"version":"e4865d1a2d6791783608e3072db37e44905d4497f9e6907072038d2ad0daef35","impliedFormat":99},{"version":"bd8764237221694c71fe2350b1053c1e1dae4cf403556e82efc980927563d7ba","impliedFormat":99},{"version":"3671dbf192300a928d9672afedc5ebb6b881c617321c26f694e7a2d0e4864628","impliedFormat":99},{"version":"66e602dfaef09b10c502b0d477fea6ca20f7c1025696b436feace60d2f80ca5f","impliedFormat":99},{"version":"c6127cac63f88b2d19e0d9c62961ba5c811ce97be73fbeed65086d278ee1f1d7","impliedFormat":99},{"version":"736a3485c9e96b87b11fe6e55b5455e9f85ef59edc09bff1eb2f114ef661d1e5","impliedFormat":99},{"version":"6bbb2e249520ec6ddd60e970972603d415f0a0ef44c7329e4b8f56dc2442da09","impliedFormat":99},{"version":"8e1b740bd40321e66f88636d90e6db2254707adcde44e8daf5636780cc4a7318","impliedFormat":99},{"version":"7e504d14abfc5412598938349d4f433db8924e48b595bddc9b8d83cbaa7d08dd","impliedFormat":1},{"version":"c69ffa60fb8e18bd304d99e06e37e398f849d82783f2a1a62a75e47478beeff7","impliedFormat":1},{"version":"fbca5ffaebf282ec3cdac47b0d1d4a138a8b0bb32105251a38acb235087d3318","impliedFormat":1},{"version":"bcf09abd7a06b85afc0ed0e41178e8b6c7a11de6bf435cf35b88e8997f411d03","impliedFormat":1},{"version":"5a26d250ae0e0bd3bf3a12b50f721143f90eb5571594c44679a79f96ba716081","impliedFormat":1},{"version":"b732263bd04902a37143091ea8ae7dfd4dbd70f99b61ff9f30c193970da1b2a5","impliedFormat":1},{"version":"d2c8193e464760807fbd156aee60b48b3f766caef970dc31b00029adb9ad90aa","impliedFormat":1},{"version":"556ccd493ec36c7d7cb130d51be66e147b91cc1415be383d71da0f1e49f742a9","impliedFormat":1},{"version":"b6d03c9cfe2cf0ba4c673c209fcd7c46c815b2619fd2aad59fc4229aaef2ed43","impliedFormat":1},{"version":"95aba78013d782537cc5e23868e736bec5d377b918990e28ed56110e3ae8b958","impliedFormat":1},{"version":"670a76db379b27c8ff42f1ba927828a22862e2ab0b0908e38b671f0e912cc5ed","impliedFormat":1},{"version":"13b77ab19ef7aadd86a1e54f2f08ea23a6d74e102909e3c00d31f231ed040f62","impliedFormat":1},{"version":"069bebfee29864e3955378107e243508b163e77ab10de6a5ee03ae06939f0bb9","impliedFormat":1},{"version":"104c67f0da1bdf0d94865419247e20eded83ce7f9911a1aa75fc675c077ca66e","impliedFormat":1},{"version":"cc0d0b339f31ce0ab3b7a5b714d8e578ce698f1e13d7f8c60bfb766baeb1d35c","impliedFormat":1},{"version":"427fe2004642504828c1476d0af4270e6ad4db6de78c0b5da3e4c5ca95052a99","impliedFormat":1},{"version":"2eeffcee5c1661ddca53353929558037b8cf305ffb86a803512982f99bcab50d","impliedFormat":99},{"version":"9afb4cb864d297e4092a79ee2871b5d3143ea14153f62ef0bb04ede25f432030","affectsGlobalScope":true,"impliedFormat":99},{"version":"fb893a0dfc3c9fb0f9ca93d0648694dd95f33cbad2c0f2c629f842981dfd4e2e","impliedFormat":1},{"version":"3eb11dbf3489064a47a2e1cf9d261b1f100ef0b3b50ffca6c44dd99d6dd81ac1","impliedFormat":1},{"version":"151ff381ef9ff8da2da9b9663ebf657eac35c4c9a19183420c05728f31a6761d","impliedFormat":1},{"version":"5d08a179b846f5ee674624b349ebebe2121c455e3a265dc93da4e8d9e89722b4","impliedFormat":1},{"version":"d34aa8df2d0b18fb56b1d772ff9b3c7aea7256cf0d692f969be6e1d27b74d660","impliedFormat":1},{"version":"baac9896d29bcc55391d769e408ff400d61273d832dd500f21de766205255acb","impliedFormat":1},{"version":"2f5747b1508ccf83fad0c251ba1e5da2f5a30b78b09ffa1cfaf633045160afed","impliedFormat":1},{"version":"90407bbaa24977b8a6a90861148ac98d8652afe69992a90d823f29e9807fe2d7","affectsGlobalScope":true,"impliedFormat":1},{"version":"b71c603a539078a5e3a039b20f2b0a0d1708967530cf97dec8850a9ca45baa2b","impliedFormat":1},{"version":"0ae65c3e977c81f6e46ae9028ae97fc75c78c70f4d6d5f961a8af60301145af6","impliedFormat":99},{"version":"b1a6683b821c624d63d887dbdd9f34aebb9de586acf87bbf50cb16f5ec2c36c7","impliedFormat":99},{"version":"cb90077223cc1365fa21ef0911a1f9b8f2f878943523d97350dc557973ca3823","impliedFormat":1},{"version":"18f1541b81b80d806120a3489af683edfb811deb91aeca19735d9bb2613e6311","impliedFormat":1},{"version":"232f118ae64ab84dcd26ddb60eaed5a6e44302d36249abf05e9e3fc2cbb701a2","impliedFormat":1},{"version":"3efb94838c3bf93ac9bfb2f1ef645339221d15533efc17c9271142c9a656b08c","impliedFormat":1},{"version":"89121c1bf2990f5219bfd802a3e7fc557de447c62058d6af68d6b6348d64499a","impliedFormat":1},{"version":"79b4369233a12c6fa4a07301ecb7085802c98f3a77cf9ab97eee27e1656f82e6","impliedFormat":1},{"version":"84a805c22a49922085dc337ca71ac0b85aad6d4dba6b01cee5bd5776ff54df39","impliedFormat":1},{"version":"380b919bfa0516118edaf25b99e45f855e7bc3fd75ce4163a1cfe4a666388804","impliedFormat":1},{"version":"40de86ced5175a6ffe84a52abe6ac59ac0efbc604a5975a8c6476c3ddc682ff1","impliedFormat":1},{"version":"fcf79300e5257a23ed3bacaa6861d7c645139c6f7ece134d15e6669447e5e6db","impliedFormat":1},{"version":"187119ff4f9553676a884e296089e131e8cc01691c546273b1d0089c3533ce42","impliedFormat":1},{"version":"aa2c18a1b5a086bbcaae10a4efba409cc95ba7287d8cf8f2591b53704fea3dea","impliedFormat":1},{"version":"5a0b15210129310cee9fa6af9200714bb4b12af4a04d890e15f34dbea1cf1852","impliedFormat":1},{"version":"0244119dbcbcf34faf3ffdae72dab1e9bc2bc9efc3c477b2240ffa94af3bca56","impliedFormat":1},{"version":"00baffbe8a2f2e4875367479489b5d43b5fc1429ecb4a4cc98cfc3009095f52a","impliedFormat":1},{"version":"a873c50d3e47c21aa09fbe1e2023d9a44efb07cc0cb8c72f418bf301b0771fd3","impliedFormat":1},{"version":"7c14ccd2eaa82619fffc1bfa877eb68a012e9fb723d07ee98db451fadb618906","impliedFormat":1},{"version":"49c36529ee09ea9ce19525af5bb84985ea8e782cb7ee8c493d9e36d027a3d019","impliedFormat":1},{"version":"df996e25faa505f85aeb294d15ebe61b399cf1d1e49959cdfaf2cc0815c203f9","impliedFormat":1},{"version":"4f6a12044ee6f458db11964153830abbc499e73d065c51c329ec97407f4b13dd","impliedFormat":1},{"version":"7605dd065ecbd2d8ff5f80a0b3813fc163ed593f4f24f3b6f6a7e98ac0e2157f","impliedFormat":1},{"version":"d4a22007b481fe2a2e6bfd3a42c00cd62d41edb36d30fc4697df2692e9891fc8","impliedFormat":1},{"version":"d3f2d715f57df3f04bf7b16dde01dec10366f64fce44503c92b8f78f614c1769","impliedFormat":1},{"version":"22293bd6fa12747929f8dfca3ec1684a3fe08638aa18023dd286ab337e88a592","impliedFormat":1},{"version":"7e29f41b158de217f94cb9676bf9cbd0cd9b5a46e1985141ed36e075c52bf6ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac51dd7d31333793807a6abaa5ae168512b6131bd41d9c5b98477fc3b7800f9f","impliedFormat":1},{"version":"dc0a7f107690ee5cd8afc8dbf05c4df78085471ce16bdd9881642ec738bc81fe","impliedFormat":1},{"version":"be1cc4d94ea60cbe567bc29ed479d42587bf1e6cba490f123d329976b0fe4ee5","impliedFormat":1},{"version":"1ba59c8bbeed2cb75b239bb12041582fa3e8ef32f8d0bd0ec802e38442d3f317","impliedFormat":1}],"root":[66,95,137,138,[140,142],[146,154],[276,296],[422,425],461,[464,467]],"options":{"composite":true,"declaration":true,"declarationMap":true,"esModuleInterop":true,"module":199,"outDir":"./","rootDir":"../src","skipLibCheck":true,"sourceMap":true,"strict":true,"target":9,"tsBuildInfoFile":"./.tsbuildinfo"},"referencedMap":[[470,1],[468,2],[443,3],[450,3],[442,4],[440,5],[427,2],[426,2],[438,6],[439,5],[441,2],[431,5],[434,5],[437,7],[435,2],[432,8],[436,2],[433,2],[449,9],[453,3],[444,2],[445,2],[446,2],[447,2],[448,10],[451,3],[452,3],[455,3],[458,11],[454,3],[456,3],[457,3],[430,12],[428,13],[429,2],[251,14],[259,15],[256,16],[250,17],[247,2],[257,18],[260,19],[261,20],[235,21],[253,22],[252,17],[249,17],[258,2],[248,23],[255,24],[473,25],[469,1],[471,26],[472,1],[475,27],[478,28],[474,29],[480,30],[476,2],[482,31],[481,2],[486,32],[492,33],[493,2],[421,34],[495,35],[487,2],[496,2],[419,36],[420,2],[510,37],[498,38],[499,39],[497,40],[500,41],[501,42],[502,43],[503,44],[504,45],[505,46],[506,47],[507,48],[508,49],[509,50],[511,35],[512,2],[463,2],[479,2],[359,51],[360,51],[361,52],[299,53],[362,54],[363,55],[364,56],[297,2],[365,57],[366,58],[367,59],[368,60],[369,61],[370,62],[371,62],[372,63],[373,64],[374,65],[375,66],[300,2],[298,2],[376,67],[377,68],[378,69],[418,70],[379,71],[380,72],[381,71],[382,73],[383,74],[384,75],[385,76],[386,76],[387,76],[388,77],[389,78],[390,79],[391,80],[392,81],[393,82],[394,82],[395,83],[396,2],[397,2],[398,84],[399,85],[400,84],[401,86],[402,87],[403,88],[404,89],[405,90],[406,91],[407,92],[408,93],[409,94],[410,95],[411,96],[412,97],[413,98],[414,99],[415,100],[301,71],[302,2],[303,101],[304,102],[305,2],[306,103],[307,2],[350,104],[351,105],[352,106],[353,106],[354,107],[355,2],[356,54],[357,108],[358,105],[416,109],[417,110],[513,2],[484,2],[485,2],[517,111],[514,2],[516,112],[483,113],[491,114],[490,115],[494,2],[518,116],[477,2],[145,117],[143,2],[144,118],[459,2],[515,2],[139,2],[462,2],[254,2],[489,119],[488,2],[460,120],[76,2],[87,121],[70,122],[88,121],[89,123],[90,123],[75,2],[77,122],[78,122],[79,124],[80,125],[81,126],[82,126],[67,2],[83,126],[73,127],[84,122],[68,122],[85,126],[71,123],[72,128],[69,125],[91,129],[93,130],[74,131],[92,132],[86,133],[94,2],[63,2],[64,2],[12,2],[10,2],[11,2],[16,2],[15,2],[2,2],[17,2],[18,2],[19,2],[20,2],[21,2],[22,2],[23,2],[24,2],[3,2],[25,2],[26,2],[4,2],[27,2],[31,2],[28,2],[29,2],[30,2],[32,2],[33,2],[34,2],[5,2],[35,2],[36,2],[37,2],[38,2],[6,2],[42,2],[39,2],[40,2],[41,2],[43,2],[7,2],[44,2],[49,2],[50,2],[45,2],[46,2],[47,2],[48,2],[8,2],[54,2],[51,2],[52,2],[53,2],[55,2],[9,2],[56,2],[65,2],[57,2],[58,2],[60,2],[59,2],[1,2],[61,2],[62,2],[14,2],[13,2],[326,134],[338,135],[323,136],[339,13],[348,137],[314,138],[315,139],[313,140],[347,141],[342,142],[346,143],[317,144],[335,145],[316,146],[345,147],[311,148],[312,142],[318,149],[319,2],[325,150],[322,149],[309,151],[349,152],[340,153],[329,154],[328,149],[330,155],[333,156],[327,157],[331,158],[343,141],[320,159],[321,160],[334,161],[310,13],[337,162],[336,149],[324,160],[332,163],[341,2],[308,2],[344,164],[129,165],[98,2],[116,166],[128,167],[127,168],[97,169],[136,170],[99,2],[117,171],[126,172],[103,173],[114,174],[121,175],[118,176],[101,177],[100,178],[113,179],[104,180],[120,181],[122,182],[123,183],[124,183],[125,184],[130,2],[96,2],[131,183],[132,185],[106,186],[107,186],[108,186],[115,187],[119,188],[105,189],[133,190],[134,191],[109,2],[102,192],[110,193],[111,194],[112,195],[135,174],[159,196],[166,197],[161,2],[162,2],[160,198],[163,199],[155,2],[156,2],[167,200],[158,201],[164,2],[165,202],[157,203],[239,204],[243,205],[240,205],[236,204],[244,206],[241,207],[245,208],[242,205],[237,209],[238,210],[231,211],[175,212],[177,213],[230,2],[176,214],[234,215],[233,216],[232,217],[168,2],[178,212],[179,2],[170,218],[174,219],[169,2],[171,220],[172,221],[173,2],[246,222],[180,223],[181,223],[182,223],[183,223],[184,223],[185,223],[186,223],[187,223],[188,223],[189,223],[190,223],[191,223],[192,223],[194,223],[193,223],[195,223],[196,223],[197,223],[198,223],[229,224],[199,223],[200,223],[201,223],[202,223],[203,223],[204,223],[205,223],[206,223],[207,223],[208,223],[209,223],[210,223],[211,223],[213,223],[212,223],[214,223],[215,223],[216,223],[217,223],[218,223],[219,223],[220,223],[221,223],[222,223],[223,223],[224,223],[225,223],[228,223],[226,223],[227,223],[275,225],[267,226],[274,227],[269,2],[270,2],[268,228],[271,229],[262,2],[263,2],[264,225],[266,230],[272,2],[273,231],[265,232],[282,233],[283,234],[287,235],[288,235],[291,236],[289,235],[285,237],[286,238],[284,2],[290,239],[153,240],[146,241],[138,242],[95,243],[150,244],[137,245],[152,246],[151,247],[142,248],[148,248],[141,249],[140,250],[149,248],[66,2],[147,248],[296,251],[293,252],[294,253],[295,253],[292,2],[154,2],[423,254],[424,255],[425,256],[461,257],[467,258],[464,259],[465,260],[422,261],[466,254],[281,262],[280,263],[277,264],[279,265],[278,266],[276,76]],"semanticDiagnosticsPerFile":[[148,[{"start":3960,"length":4,"code":2322,"category":1,"messageText":{"messageText":"Type 'string | null' is not assignable to type 'string'.","category":1,"code":2322,"next":[{"messageText":"Type 'null' is not assignable to type 'string'.","category":1,"code":2322}]},"relatedInformation":[{"start":951,"length":4,"messageText":"The expected type comes from property 'slug' which is declared here on type 'PhaseAddResult'","category":3,"code":6500}]},{"start":6834,"length":4,"code":2322,"category":1,"messageText":{"messageText":"Type 'string | null' is not assignable to type 'string'.","category":1,"code":2322,"next":[{"messageText":"Type 'null' is not assignable to type 'string'.","category":1,"code":2322}]},"relatedInformation":[{"start":1106,"length":4,"messageText":"The expected type comes from property 'slug' which is declared here on type 'PhaseInsertResult'","category":3,"code":6500}]}]],[150,[{"start":3577,"length":11,"messageText":"The 'import.meta' meta-property is not allowed in files which will build into CommonJS output.","category":1,"code":1470},{"start":4098,"length":11,"messageText":"The 'import.meta' meta-property is not allowed in files which will build into CommonJS output.","category":1,"code":1470}]],[277,[{"start":990,"length":1425,"messageText":"Type instantiation is excessively deep and possibly infinite.","category":1,"code":2589}]],[278,[{"start":923,"length":1632,"messageText":"Type instantiation is excessively deep and possibly infinite.","category":1,"code":2589},{"start":4122,"length":2364,"messageText":"Type instantiation is excessively deep and possibly infinite.","category":1,"code":2589}]],[287,[{"start":1586,"length":32,"messageText":"Expected 2 arguments, but got 1.","category":1,"code":2554,"relatedInformation":[{"file":"../src/adapters/transforms/frontmatter.ts","start":5769,"length":17,"messageText":"An argument for 'skillName' was not provided.","category":3,"code":6210}]}]]],"emitSignatures":[[66,"695f771bdbb95e444d15a3fcc4d53d781a018782f4bc93005c6d6705c5b80662"],[95,"4645a17d97039b8d90b355c07ceb0978a9722487ba18e98e05149c9e9e8c72f9"],[137,"01c35ad31e1c9cfa7be5035ffe1e933ae29f1b25ed5ad66ff6f1e69ea12ab05c"],[138,"a0e24e6359f6cc8e8c216577a4878099a12d7d12b6dc97ea06f252363ff5d3c7"],[140,"772dd5375ce7789e5f61409cf6a9995cbb8ab67abc4b9aa1dc37ec7d6cff2a0d"],[141,"629f3182e007cb9332f9ebe9d28a8722d37ed0666f484968bd7bd943272c533d"],[142,"8c30997a3e351626253f83d5b38b00ebc31f6b92353534eccfb6eafca598f4a3"],[146,"726cef994f7f6f938cf9538a98404bb25981890921e94a4e27f3ea7fc678be4e"],[147,"ce26c6769640fcce38b2f32826d2fd384db22a5f2fb19be821911bbea5b23667"],[148,"d95af2b0bfce0a4c6c42c6d57112e8ac88fc639387736cec45b89a157d204a5e"],[149,"9c0b78c73b5886813ee425cfb5cbcbf8599ab3b7d9c9974847b98f7651dad407"],[150,"f26e26b0e167e206e17a5ca4bfaf072990c9cab85c3cc048517abbe07bdf7449"],[151,"55e49a9e8a7d932e9c981b276f7256e15e03e6a24978396e3aba8165f9b0d380"],[152,"1144596fec000a855d5b614d741d1f15e3000805e8e93b2ac36945636cdae611"],[153,"69a70b617b285b6ffa9e27dfec0255d68f6ce1c9a827096b98ef8aefc193425d"],[154,"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"],[276,"d7de918f183c6d599d4167af2ffd90d39e43fc89fd1a162ec7a1f624642f999f"],[277,"9f7742dfc5bae39f6997725a012976a98b86aa76fa2c7398ad2f4a6545b52a09"],[278,"6268088fffe554f964e0368bfd30ad99a5857f78e2bc8408798fa88dbd31a58b"],[279,"a020fd84aeb8b6bcb5a3f84f1b141d0378bc9c842d8a49f49da44368e3e66c09"],[280,"7bdc0cd4a24a5590b5cadc6b6f651ef6988677982d2e21008a416059c5c2a658"],[281,"196eb69a21b721c9dd24cde8aee79ce4608e49b9a1aea3af6f569f20740cfafe"],[282,"8468fa2bd38475f1686756722bc5876d16bc0ce476cbbbac03b47aed937bc3ad"],[283,"ac5ed5b28cd813465d177ad9cb79b3c9f4b5f656df88d20e4c8b186403b6f699"],[284,"7808198f2bc46a5a95e04a03dd4353f027c245e8703bfe4897d86f8bf2a6379f"],[285,"b6160a71f8ef152f08bf59c126ecf60ec52a1c55ee259d1b93de46e85230ebbd"],[286,"7ca29a4c9822b79c136ebe44a9ccdb95606e1dc91e212b5f4e7355dfc8388352"],[287,"edf8f7257f0936b58ecd85f1b7f5ccc55d88c8bb54899d2a1bb3d027ba3d64aa"],[288,"a0b0e6c71f855e62f52bf4e9932d055c21360060b9c9fdb7bcf7f83956a9d7bc"],[289,"63c790fc5672f599ffdec40544b699295e1bd434c783935c3baee3222995c54f"],[290,"2afd158192bf3435d3418e47ed3e1bb427558bf7e13b75b98c0a2d0c7ea6c14e"],[291,"f9653d8bb15380b429a8376126b2bd3d37b31c1fc6b409ced02540cce51c9748"],[292,"c0fdf67dc8492ed7801f8835fb330ddb884ec8410e614f2a7fa40078a256b32c"],[293,"cd11a00b75767a019f7e93f70887226c0b523d4f9906fe8df9504cdd7d4b2da8"],[294,"5c30d87f547887db1a72ed947583185fe947097c5cfe11877c49b00166536fe3"],[295,"4140fff7108c0075635b0e6697b0f5e8fd253ab5b99e3149927341d61e0c2b25"],[296,"3d4284e72d54a0e56d5338c802b02da5a4d52293dc40c416e984b980e24d42bb"],[422,"bbb488109968acbd97f0810b953cdf5965b963e1b7f9fa89861df0ec613369d0"],[423,"6dde0a68b4cdb317e8938fed6fbeb1fa533a2b8f5e9c81a52db7f2adedfcf114"],[424,"08d9b0c4f2bb0f779bc13720885f0a47e8739bc92b7df9565f6c7431f97fe45d"],[425,"437bdaaf112fad1ea8e3bd5f4e565281ba26827cc43bfede40afa5e4df0814ce"],[461,"dd98b21eff71939743d21b1c5d0a06d31d66e0c7a5e0e6948cf6f08c49d3a81b"],[464,"e7707fd82e29f493757b32844c326dd48cce71319687f9878bb3974fa1d7ab25"],[465,"b74a14f26df5c877d8eb1e0fc790a0dfbeb93b071531f4e44671333ca346400f"],[466,"5313da83b5f4569c7bd366ed5e6fc2e260b42dee0e7eb0f06ea764c989667acf"],[467,"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"]],"latestChangedDtsFile":"./install/index.d.ts","version":"5.9.3"} \ No newline at end of file +{"fileNames":["../../../../../../node_modules/typescript/lib/lib.es5.d.ts","../../../../../../node_modules/typescript/lib/lib.es2015.d.ts","../../../../../../node_modules/typescript/lib/lib.es2016.d.ts","../../../../../../node_modules/typescript/lib/lib.es2017.d.ts","../../../../../../node_modules/typescript/lib/lib.es2018.d.ts","../../../../../../node_modules/typescript/lib/lib.es2019.d.ts","../../../../../../node_modules/typescript/lib/lib.es2020.d.ts","../../../../../../node_modules/typescript/lib/lib.es2021.d.ts","../../../../../../node_modules/typescript/lib/lib.es2022.d.ts","../../../../../../node_modules/typescript/lib/lib.dom.d.ts","../../../../../../node_modules/typescript/lib/lib.dom.iterable.d.ts","../../../../../../node_modules/typescript/lib/lib.dom.asynciterable.d.ts","../../../../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts","../../../../../../node_modules/typescript/lib/lib.scripthost.d.ts","../../../../../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../../../../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../../../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../../../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../../../../node_modules/typescript/lib/lib.es2016.intl.d.ts","../../../../../../node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../../../../../../node_modules/typescript/lib/lib.es2017.date.d.ts","../../../../../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../../../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../../../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../../../../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../../../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../../../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../../../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../../../../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../../../../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../../../../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../../../../node_modules/typescript/lib/lib.es2019.intl.d.ts","../../../../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../../../../node_modules/typescript/lib/lib.es2020.date.d.ts","../../../../../../node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../../../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../../../../node_modules/typescript/lib/lib.es2020.string.d.ts","../../../../../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../../../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../../../../node_modules/typescript/lib/lib.es2020.number.d.ts","../../../../../../node_modules/typescript/lib/lib.es2021.promise.d.ts","../../../../../../node_modules/typescript/lib/lib.es2021.string.d.ts","../../../../../../node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../../../../../node_modules/typescript/lib/lib.es2021.intl.d.ts","../../../../../../node_modules/typescript/lib/lib.es2022.array.d.ts","../../../../../../node_modules/typescript/lib/lib.es2022.error.d.ts","../../../../../../node_modules/typescript/lib/lib.es2022.intl.d.ts","../../../../../../node_modules/typescript/lib/lib.es2022.object.d.ts","../../../../../../node_modules/typescript/lib/lib.es2022.string.d.ts","../../../../../../node_modules/typescript/lib/lib.es2022.regexp.d.ts","../../../../../../node_modules/typescript/lib/lib.esnext.disposable.d.ts","../../../../../../node_modules/typescript/lib/lib.esnext.float16.d.ts","../../../../../../node_modules/typescript/lib/lib.decorators.d.ts","../../../../../../node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../../../../../node_modules/typescript/lib/lib.es2022.full.d.ts","../src/core/types.ts","../../../../../../node_modules/simple-git/dist/src/lib/tasks/diff-name-status.d.ts","../../../../../../node_modules/simple-git/dist/src/lib/tasks/task.d.ts","../../../../../../node_modules/simple-git/dist/src/lib/types/tasks.d.ts","../../../../../../node_modules/simple-git/dist/src/lib/errors/git-error.d.ts","../../../../../../node_modules/simple-git/dist/src/lib/types/handlers.d.ts","../../../../../../node_modules/simple-git/dist/src/lib/types/index.d.ts","../../../../../../node_modules/simple-git/dist/src/lib/tasks/log.d.ts","../../../../../../node_modules/simple-git/dist/typings/response.d.ts","../../../../../../node_modules/simple-git/dist/src/lib/responses/getremotesummary.d.ts","../../../../../../node_modules/simple-git/dist/src/lib/args/pathspec.d.ts","../../../../../../node_modules/simple-git/dist/src/lib/tasks/apply-patch.d.ts","../../../../../../node_modules/simple-git/dist/src/lib/tasks/check-is-repo.d.ts","../../../../../../node_modules/simple-git/dist/src/lib/tasks/clean.d.ts","../../../../../../node_modules/simple-git/dist/src/lib/tasks/clone.d.ts","../../../../../../node_modules/simple-git/dist/src/lib/tasks/config.d.ts","../../../../../../node_modules/simple-git/dist/src/lib/tasks/count-objects.d.ts","../../../../../../node_modules/simple-git/dist/src/lib/tasks/grep.d.ts","../../../../../../node_modules/simple-git/dist/src/lib/tasks/reset.d.ts","../../../../../../node_modules/simple-git/dist/src/lib/tasks/version.d.ts","../../../../../../node_modules/simple-git/dist/typings/types.d.ts","../../../../../../node_modules/simple-git/dist/src/lib/errors/git-construct-error.d.ts","../../../../../../node_modules/simple-git/dist/src/lib/errors/git-plugin-error.d.ts","../../../../../../node_modules/simple-git/dist/src/lib/errors/git-response-error.d.ts","../../../../../../node_modules/simple-git/dist/src/lib/errors/task-configuration-error.d.ts","../../../../../../node_modules/simple-git/dist/typings/errors.d.ts","../../../../../../node_modules/simple-git/dist/typings/simple-git.d.ts","../../../../../../node_modules/simple-git/dist/typings/index.d.ts","../../../../../../node_modules/slugify/slugify.d.ts","../src/core/core.ts","../../../../../../node_modules/yaml/dist/parse/line-counter.d.ts","../../../../../../node_modules/yaml/dist/errors.d.ts","../../../../../../node_modules/yaml/dist/doc/applyreviver.d.ts","../../../../../../node_modules/yaml/dist/log.d.ts","../../../../../../node_modules/yaml/dist/nodes/tojs.d.ts","../../../../../../node_modules/yaml/dist/nodes/scalar.d.ts","../../../../../../node_modules/yaml/dist/stringify/stringify.d.ts","../../../../../../node_modules/yaml/dist/nodes/collection.d.ts","../../../../../../node_modules/yaml/dist/nodes/yamlseq.d.ts","../../../../../../node_modules/yaml/dist/schema/types.d.ts","../../../../../../node_modules/yaml/dist/schema/common/map.d.ts","../../../../../../node_modules/yaml/dist/schema/common/seq.d.ts","../../../../../../node_modules/yaml/dist/schema/common/string.d.ts","../../../../../../node_modules/yaml/dist/stringify/foldflowlines.d.ts","../../../../../../node_modules/yaml/dist/stringify/stringifynumber.d.ts","../../../../../../node_modules/yaml/dist/stringify/stringifystring.d.ts","../../../../../../node_modules/yaml/dist/util.d.ts","../../../../../../node_modules/yaml/dist/nodes/yamlmap.d.ts","../../../../../../node_modules/yaml/dist/nodes/identity.d.ts","../../../../../../node_modules/yaml/dist/schema/schema.d.ts","../../../../../../node_modules/yaml/dist/doc/createnode.d.ts","../../../../../../node_modules/yaml/dist/nodes/addpairtojsmap.d.ts","../../../../../../node_modules/yaml/dist/nodes/pair.d.ts","../../../../../../node_modules/yaml/dist/schema/tags.d.ts","../../../../../../node_modules/yaml/dist/options.d.ts","../../../../../../node_modules/yaml/dist/nodes/node.d.ts","../../../../../../node_modules/yaml/dist/parse/cst-scalar.d.ts","../../../../../../node_modules/yaml/dist/parse/cst-stringify.d.ts","../../../../../../node_modules/yaml/dist/parse/cst-visit.d.ts","../../../../../../node_modules/yaml/dist/parse/cst.d.ts","../../../../../../node_modules/yaml/dist/nodes/alias.d.ts","../../../../../../node_modules/yaml/dist/doc/document.d.ts","../../../../../../node_modules/yaml/dist/doc/directives.d.ts","../../../../../../node_modules/yaml/dist/compose/composer.d.ts","../../../../../../node_modules/yaml/dist/parse/lexer.d.ts","../../../../../../node_modules/yaml/dist/parse/parser.d.ts","../../../../../../node_modules/yaml/dist/public-api.d.ts","../../../../../../node_modules/yaml/dist/schema/yaml-1.1/omap.d.ts","../../../../../../node_modules/yaml/dist/schema/yaml-1.1/set.d.ts","../../../../../../node_modules/yaml/dist/visit.d.ts","../../../../../../node_modules/yaml/dist/index.d.ts","../src/core/frontmatter.ts","../src/core/config.ts","../../../../../../node_modules/escape-string-regexp/index.d.ts","../src/core/state.ts","../src/core/roadmap.ts","../src/core/milestone.ts","../../../../../../node_modules/chalk/source/vendor/ansi-styles/index.d.ts","../../../../../../node_modules/chalk/source/vendor/supports-color/index.d.ts","../../../../../../node_modules/chalk/source/index.d.ts","../src/core/commands.ts","../src/core/verify.ts","../src/core/phase.ts","../src/core/template.ts","../src/core/dashboard-launcher.ts","../src/core/skill-context.ts","../src/core/init.ts","../src/core/index.ts","../src/cli.ts","../src/index.ts","../../../../../../node_modules/zod/v3/helpers/typealiases.d.cts","../../../../../../node_modules/zod/v3/helpers/util.d.cts","../../../../../../node_modules/zod/v3/zoderror.d.cts","../../../../../../node_modules/zod/v3/locales/en.d.cts","../../../../../../node_modules/zod/v3/errors.d.cts","../../../../../../node_modules/zod/v3/helpers/parseutil.d.cts","../../../../../../node_modules/zod/v3/helpers/enumutil.d.cts","../../../../../../node_modules/zod/v3/helpers/errorutil.d.cts","../../../../../../node_modules/zod/v3/helpers/partialutil.d.cts","../../../../../../node_modules/zod/v3/standard-schema.d.cts","../../../../../../node_modules/zod/v3/types.d.cts","../../../../../../node_modules/zod/v3/external.d.cts","../../../../../../node_modules/zod/v3/index.d.cts","../../../../../../node_modules/zod/v4/core/json-schema.d.cts","../../../../../../node_modules/zod/v4/core/standard-schema.d.cts","../../../../../../node_modules/zod/v4/core/registries.d.cts","../../../../../../node_modules/zod/v4/core/to-json-schema.d.cts","../../../../../../node_modules/zod/v4/core/util.d.cts","../../../../../../node_modules/zod/v4/core/versions.d.cts","../../../../../../node_modules/zod/v4/core/schemas.d.cts","../../../../../../node_modules/zod/v4/core/checks.d.cts","../../../../../../node_modules/zod/v4/core/errors.d.cts","../../../../../../node_modules/zod/v4/core/core.d.cts","../../../../../../node_modules/zod/v4/core/parse.d.cts","../../../../../../node_modules/zod/v4/core/regexes.d.cts","../../../../../../node_modules/zod/v4/locales/ar.d.cts","../../../../../../node_modules/zod/v4/locales/az.d.cts","../../../../../../node_modules/zod/v4/locales/be.d.cts","../../../../../../node_modules/zod/v4/locales/bg.d.cts","../../../../../../node_modules/zod/v4/locales/ca.d.cts","../../../../../../node_modules/zod/v4/locales/cs.d.cts","../../../../../../node_modules/zod/v4/locales/da.d.cts","../../../../../../node_modules/zod/v4/locales/de.d.cts","../../../../../../node_modules/zod/v4/locales/en.d.cts","../../../../../../node_modules/zod/v4/locales/eo.d.cts","../../../../../../node_modules/zod/v4/locales/es.d.cts","../../../../../../node_modules/zod/v4/locales/fa.d.cts","../../../../../../node_modules/zod/v4/locales/fi.d.cts","../../../../../../node_modules/zod/v4/locales/fr.d.cts","../../../../../../node_modules/zod/v4/locales/fr-ca.d.cts","../../../../../../node_modules/zod/v4/locales/he.d.cts","../../../../../../node_modules/zod/v4/locales/hu.d.cts","../../../../../../node_modules/zod/v4/locales/hy.d.cts","../../../../../../node_modules/zod/v4/locales/id.d.cts","../../../../../../node_modules/zod/v4/locales/is.d.cts","../../../../../../node_modules/zod/v4/locales/it.d.cts","../../../../../../node_modules/zod/v4/locales/ja.d.cts","../../../../../../node_modules/zod/v4/locales/ka.d.cts","../../../../../../node_modules/zod/v4/locales/kh.d.cts","../../../../../../node_modules/zod/v4/locales/km.d.cts","../../../../../../node_modules/zod/v4/locales/ko.d.cts","../../../../../../node_modules/zod/v4/locales/lt.d.cts","../../../../../../node_modules/zod/v4/locales/mk.d.cts","../../../../../../node_modules/zod/v4/locales/ms.d.cts","../../../../../../node_modules/zod/v4/locales/nl.d.cts","../../../../../../node_modules/zod/v4/locales/no.d.cts","../../../../../../node_modules/zod/v4/locales/ota.d.cts","../../../../../../node_modules/zod/v4/locales/ps.d.cts","../../../../../../node_modules/zod/v4/locales/pl.d.cts","../../../../../../node_modules/zod/v4/locales/pt.d.cts","../../../../../../node_modules/zod/v4/locales/ru.d.cts","../../../../../../node_modules/zod/v4/locales/sl.d.cts","../../../../../../node_modules/zod/v4/locales/sv.d.cts","../../../../../../node_modules/zod/v4/locales/ta.d.cts","../../../../../../node_modules/zod/v4/locales/th.d.cts","../../../../../../node_modules/zod/v4/locales/tr.d.cts","../../../../../../node_modules/zod/v4/locales/ua.d.cts","../../../../../../node_modules/zod/v4/locales/uk.d.cts","../../../../../../node_modules/zod/v4/locales/ur.d.cts","../../../../../../node_modules/zod/v4/locales/uz.d.cts","../../../../../../node_modules/zod/v4/locales/vi.d.cts","../../../../../../node_modules/zod/v4/locales/zh-cn.d.cts","../../../../../../node_modules/zod/v4/locales/zh-tw.d.cts","../../../../../../node_modules/zod/v4/locales/yo.d.cts","../../../../../../node_modules/zod/v4/locales/index.d.cts","../../../../../../node_modules/zod/v4/core/doc.d.cts","../../../../../../node_modules/zod/v4/core/api.d.cts","../../../../../../node_modules/zod/v4/core/json-schema-processors.d.cts","../../../../../../node_modules/zod/v4/core/json-schema-generator.d.cts","../../../../../../node_modules/zod/v4/core/index.d.cts","../../../../../../node_modules/@modelcontextprotocol/sdk/dist/cjs/server/zod-compat.d.ts","../../../../../../node_modules/zod/v4/classic/errors.d.cts","../../../../../../node_modules/zod/v4/classic/parse.d.cts","../../../../../../node_modules/zod/v4/classic/schemas.d.cts","../../../../../../node_modules/zod/v4/classic/checks.d.cts","../../../../../../node_modules/zod/v4/classic/compat.d.cts","../../../../../../node_modules/zod/v4/classic/from-json-schema.d.cts","../../../../../../node_modules/zod/v4/classic/iso.d.cts","../../../../../../node_modules/zod/v4/classic/coerce.d.cts","../../../../../../node_modules/zod/v4/classic/external.d.cts","../../../../../../node_modules/zod/v4/classic/index.d.cts","../../../../../../node_modules/zod/v4/index.d.cts","../../../../../../node_modules/@modelcontextprotocol/sdk/dist/cjs/server/auth/types.d.ts","../../../../../../node_modules/@modelcontextprotocol/sdk/dist/cjs/types.d.ts","../../../../../../node_modules/@modelcontextprotocol/sdk/dist/cjs/shared/transport.d.ts","../../../../../../node_modules/@modelcontextprotocol/sdk/dist/cjs/experimental/tasks/types.d.ts","../../../../../../node_modules/@modelcontextprotocol/sdk/dist/cjs/experimental/tasks/interfaces.d.ts","../../../../../../node_modules/@modelcontextprotocol/sdk/dist/cjs/shared/responsemessage.d.ts","../../../../../../node_modules/@modelcontextprotocol/sdk/dist/cjs/shared/protocol.d.ts","../../../../../../node_modules/json-schema-typed/draft_2020_12.d.ts","../../../../../../node_modules/@modelcontextprotocol/sdk/dist/cjs/validation/types.d.ts","../../../../../../node_modules/@modelcontextprotocol/sdk/dist/cjs/experimental/tasks/server.d.ts","../../../../../../node_modules/@modelcontextprotocol/sdk/dist/cjs/server/index.d.ts","../../../../../../node_modules/@modelcontextprotocol/sdk/dist/cjs/shared/uritemplate.d.ts","../../../../../../node_modules/@modelcontextprotocol/sdk/dist/cjs/experimental/tasks/mcp-server.d.ts","../../../../../../node_modules/@modelcontextprotocol/sdk/dist/cjs/server/mcp.d.ts","../../../../../../node_modules/@modelcontextprotocol/sdk/dist/cjs/server/stdio.d.ts","../../../../../../node_modules/zod/index.d.cts","../src/mcp/utils.ts","../src/mcp/phase-tools.ts","../src/mcp/todo-tools.ts","../src/mcp/state-tools.ts","../src/mcp/index.ts","../src/mcp-server.ts","../src/adapters/base.ts","../src/adapters/claude.ts","../src/adapters/transforms/tool-maps.ts","../src/adapters/transforms/content.ts","../src/adapters/transforms/frontmatter.ts","../src/adapters/codex.ts","../src/adapters/gemini.ts","../src/adapters/opencode.ts","../src/adapters/types.ts","../src/adapters/index.ts","../src/hooks/shared.ts","../src/hooks/maxsim-check-update.ts","../src/hooks/maxsim-context-monitor.ts","../src/hooks/maxsim-statusline.ts","../src/hooks/index.ts","../../../../../../node_modules/@types/node/compatibility/iterators.d.ts","../../../../../../node_modules/@types/node/globals.typedarray.d.ts","../../../../../../node_modules/@types/node/buffer.buffer.d.ts","../../../../../../node_modules/@types/node/globals.d.ts","../../../../../../node_modules/@types/node/web-globals/abortcontroller.d.ts","../../../../../../node_modules/@types/node/web-globals/blob.d.ts","../../../../../../node_modules/@types/node/web-globals/console.d.ts","../../../../../../node_modules/@types/node/web-globals/crypto.d.ts","../../../../../../node_modules/@types/node/web-globals/domexception.d.ts","../../../../../../node_modules/@types/node/web-globals/encoding.d.ts","../../../../../../node_modules/@types/node/web-globals/events.d.ts","../../../../../../node_modules/undici-types/utility.d.ts","../../../../../../node_modules/undici-types/header.d.ts","../../../../../../node_modules/undici-types/readable.d.ts","../../../../../../node_modules/undici-types/fetch.d.ts","../../../../../../node_modules/undici-types/formdata.d.ts","../../../../../../node_modules/undici-types/connector.d.ts","../../../../../../node_modules/undici-types/client-stats.d.ts","../../../../../../node_modules/undici-types/client.d.ts","../../../../../../node_modules/undici-types/errors.d.ts","../../../../../../node_modules/undici-types/dispatcher.d.ts","../../../../../../node_modules/undici-types/global-dispatcher.d.ts","../../../../../../node_modules/undici-types/global-origin.d.ts","../../../../../../node_modules/undici-types/pool-stats.d.ts","../../../../../../node_modules/undici-types/pool.d.ts","../../../../../../node_modules/undici-types/handlers.d.ts","../../../../../../node_modules/undici-types/balanced-pool.d.ts","../../../../../../node_modules/undici-types/round-robin-pool.d.ts","../../../../../../node_modules/undici-types/h2c-client.d.ts","../../../../../../node_modules/undici-types/agent.d.ts","../../../../../../node_modules/undici-types/mock-interceptor.d.ts","../../../../../../node_modules/undici-types/mock-call-history.d.ts","../../../../../../node_modules/undici-types/mock-agent.d.ts","../../../../../../node_modules/undici-types/mock-client.d.ts","../../../../../../node_modules/undici-types/mock-pool.d.ts","../../../../../../node_modules/undici-types/snapshot-agent.d.ts","../../../../../../node_modules/undici-types/mock-errors.d.ts","../../../../../../node_modules/undici-types/proxy-agent.d.ts","../../../../../../node_modules/undici-types/env-http-proxy-agent.d.ts","../../../../../../node_modules/undici-types/retry-handler.d.ts","../../../../../../node_modules/undici-types/retry-agent.d.ts","../../../../../../node_modules/undici-types/api.d.ts","../../../../../../node_modules/undici-types/cache-interceptor.d.ts","../../../../../../node_modules/undici-types/interceptors.d.ts","../../../../../../node_modules/undici-types/util.d.ts","../../../../../../node_modules/undici-types/cookies.d.ts","../../../../../../node_modules/undici-types/patch.d.ts","../../../../../../node_modules/undici-types/websocket.d.ts","../../../../../../node_modules/undici-types/eventsource.d.ts","../../../../../../node_modules/undici-types/diagnostics-channel.d.ts","../../../../../../node_modules/undici-types/content-type.d.ts","../../../../../../node_modules/undici-types/cache.d.ts","../../../../../../node_modules/undici-types/index.d.ts","../../../../../../node_modules/@types/node/web-globals/fetch.d.ts","../../../../../../node_modules/@types/node/web-globals/importmeta.d.ts","../../../../../../node_modules/@types/node/web-globals/messaging.d.ts","../../../../../../node_modules/@types/node/web-globals/navigator.d.ts","../../../../../../node_modules/@types/node/web-globals/performance.d.ts","../../../../../../node_modules/@types/node/web-globals/storage.d.ts","../../../../../../node_modules/@types/node/web-globals/streams.d.ts","../../../../../../node_modules/@types/node/web-globals/timers.d.ts","../../../../../../node_modules/@types/node/web-globals/url.d.ts","../../../../../../node_modules/@types/node/assert.d.ts","../../../../../../node_modules/@types/node/assert/strict.d.ts","../../../../../../node_modules/@types/node/async_hooks.d.ts","../../../../../../node_modules/@types/node/buffer.d.ts","../../../../../../node_modules/@types/node/child_process.d.ts","../../../../../../node_modules/@types/node/cluster.d.ts","../../../../../../node_modules/@types/node/console.d.ts","../../../../../../node_modules/@types/node/constants.d.ts","../../../../../../node_modules/@types/node/crypto.d.ts","../../../../../../node_modules/@types/node/dgram.d.ts","../../../../../../node_modules/@types/node/diagnostics_channel.d.ts","../../../../../../node_modules/@types/node/dns.d.ts","../../../../../../node_modules/@types/node/dns/promises.d.ts","../../../../../../node_modules/@types/node/domain.d.ts","../../../../../../node_modules/@types/node/events.d.ts","../../../../../../node_modules/@types/node/fs.d.ts","../../../../../../node_modules/@types/node/fs/promises.d.ts","../../../../../../node_modules/@types/node/http.d.ts","../../../../../../node_modules/@types/node/http2.d.ts","../../../../../../node_modules/@types/node/https.d.ts","../../../../../../node_modules/@types/node/inspector.d.ts","../../../../../../node_modules/@types/node/inspector.generated.d.ts","../../../../../../node_modules/@types/node/inspector/promises.d.ts","../../../../../../node_modules/@types/node/module.d.ts","../../../../../../node_modules/@types/node/net.d.ts","../../../../../../node_modules/@types/node/os.d.ts","../../../../../../node_modules/@types/node/path.d.ts","../../../../../../node_modules/@types/node/path/posix.d.ts","../../../../../../node_modules/@types/node/path/win32.d.ts","../../../../../../node_modules/@types/node/perf_hooks.d.ts","../../../../../../node_modules/@types/node/process.d.ts","../../../../../../node_modules/@types/node/punycode.d.ts","../../../../../../node_modules/@types/node/querystring.d.ts","../../../../../../node_modules/@types/node/quic.d.ts","../../../../../../node_modules/@types/node/readline.d.ts","../../../../../../node_modules/@types/node/readline/promises.d.ts","../../../../../../node_modules/@types/node/repl.d.ts","../../../../../../node_modules/@types/node/sea.d.ts","../../../../../../node_modules/@types/node/sqlite.d.ts","../../../../../../node_modules/@types/node/stream.d.ts","../../../../../../node_modules/@types/node/stream/consumers.d.ts","../../../../../../node_modules/@types/node/stream/promises.d.ts","../../../../../../node_modules/@types/node/stream/web.d.ts","../../../../../../node_modules/@types/node/string_decoder.d.ts","../../../../../../node_modules/@types/node/test.d.ts","../../../../../../node_modules/@types/node/test/reporters.d.ts","../../../../../../node_modules/@types/node/timers.d.ts","../../../../../../node_modules/@types/node/timers/promises.d.ts","../../../../../../node_modules/@types/node/tls.d.ts","../../../../../../node_modules/@types/node/trace_events.d.ts","../../../../../../node_modules/@types/node/tty.d.ts","../../../../../../node_modules/@types/node/url.d.ts","../../../../../../node_modules/@types/node/util.d.ts","../../../../../../node_modules/@types/node/util/types.d.ts","../../../../../../node_modules/@types/node/v8.d.ts","../../../../../../node_modules/@types/node/vm.d.ts","../../../../../../node_modules/@types/node/wasi.d.ts","../../../../../../node_modules/@types/node/worker_threads.d.ts","../../../../../../node_modules/@types/node/zlib.d.ts","../../../../../../node_modules/@types/node/index.d.ts","../../../../../../node_modules/@types/jsonfile/index.d.ts","../../../../../../node_modules/@types/jsonfile/utils.d.ts","../../../../../../node_modules/@types/fs-extra/index.d.ts","../src/install/shared.ts","../src/install/adapters.ts","../src/install/copy.ts","../src/install/dashboard.ts","../../../../../../node_modules/@inquirer/core/dist/lib/key.d.ts","../../../../../../node_modules/@inquirer/core/dist/lib/errors.d.ts","../../../../../../node_modules/@inquirer/type/dist/inquirer.d.ts","../../../../../../node_modules/@inquirer/type/dist/utils.d.ts","../../../../../../node_modules/@inquirer/type/dist/index.d.ts","../../../../../../node_modules/@inquirer/core/dist/lib/theme.d.ts","../../../../../../node_modules/@inquirer/core/dist/lib/use-prefix.d.ts","../../../../../../node_modules/@inquirer/core/dist/lib/use-state.d.ts","../../../../../../node_modules/@inquirer/core/dist/lib/use-effect.d.ts","../../../../../../node_modules/@inquirer/core/dist/lib/use-memo.d.ts","../../../../../../node_modules/@inquirer/core/dist/lib/use-ref.d.ts","../../../../../../node_modules/@inquirer/core/dist/lib/use-keypress.d.ts","../../../../../../node_modules/@inquirer/core/dist/lib/make-theme.d.ts","../../../../../../node_modules/@inquirer/core/dist/lib/pagination/use-pagination.d.ts","../../../../../../node_modules/@inquirer/core/dist/lib/create-prompt.d.ts","../../../../../../node_modules/@inquirer/core/dist/lib/separator.d.ts","../../../../../../node_modules/@inquirer/core/dist/index.d.ts","../../../../../../node_modules/@inquirer/checkbox/dist/index.d.ts","../../../../../../node_modules/@inquirer/external-editor/dist/errors/createfileerror.d.ts","../../../../../../node_modules/@inquirer/external-editor/dist/errors/launcheditorerror.d.ts","../../../../../../node_modules/@inquirer/external-editor/dist/errors/readfileerror.d.ts","../../../../../../node_modules/@inquirer/external-editor/dist/errors/removefileerror.d.ts","../../../../../../node_modules/@inquirer/external-editor/dist/index.d.ts","../../../../../../node_modules/@inquirer/editor/dist/index.d.ts","../../../../../../node_modules/@inquirer/confirm/dist/index.d.ts","../../../../../../node_modules/@inquirer/input/dist/index.d.ts","../../../../../../node_modules/@inquirer/number/dist/index.d.ts","../../../../../../node_modules/@inquirer/expand/dist/index.d.ts","../../../../../../node_modules/@inquirer/rawlist/dist/index.d.ts","../../../../../../node_modules/@inquirer/password/dist/index.d.ts","../../../../../../node_modules/@inquirer/search/dist/index.d.ts","../../../../../../node_modules/@inquirer/select/dist/index.d.ts","../../../../../../node_modules/@inquirer/prompts/dist/index.d.ts","../../../../../../node_modules/cli-spinners/index.d.ts","../../../../../../node_modules/ora/index.d.ts","../src/install/hooks.ts","../../../../../../node_modules/figlet/dist/types/cjs/node-figlet.d.cts","../../../../../../node_modules/@types/minimist/index.d.ts","../src/install/manifest.ts","../src/install/patches.ts","../src/install/uninstall.ts","../src/install/index.ts","../../../../../../node_modules/@babel/types/lib/index.d.ts","../../../../../../node_modules/@types/babel__generator/index.d.ts","../../../../../../node_modules/@babel/parser/typings/babel-parser.d.ts","../../../../../../node_modules/@types/babel__template/index.d.ts","../../../../../../node_modules/@types/babel__traverse/index.d.ts","../../../../../../node_modules/@types/babel__core/index.d.ts","../../../../../../node_modules/@types/connect/index.d.ts","../../../../../../node_modules/@types/body-parser/index.d.ts","../../../../../../node_modules/@types/deep-eql/index.d.ts","../../../../../../node_modules/assertion-error/index.d.ts","../../../../../../node_modules/@types/chai/index.d.ts","../../../../../../node_modules/@types/ms/index.d.ts","../../../../../../node_modules/@types/debug/index.d.ts","../../../../../../node_modules/@types/estree/index.d.ts","../../../../../../node_modules/@types/estree-jsx/index.d.ts","../../../../../../node_modules/@types/send/index.d.ts","../../../../../../node_modules/@types/qs/index.d.ts","../../../../../../node_modules/@types/range-parser/index.d.ts","../../../../../../node_modules/@types/express-serve-static-core/index.d.ts","../../../../../../node_modules/@types/http-errors/index.d.ts","../../../../../../node_modules/mime/dist/src/mime.d.ts","../../../../../../node_modules/mime/dist/src/index.d.ts","../../../../../../node_modules/@types/serve-static/node_modules/@types/send/index.d.ts","../../../../../../node_modules/@types/serve-static/index.d.ts","../../../../../../node_modules/@types/express/index.d.ts","../../../../../../node_modules/@types/figlet/index.d.ts","../../../../../../node_modules/@types/unist/index.d.ts","../../../../../../node_modules/@types/hast/index.d.ts","../../../../../../node_modules/@types/jsesc/index.d.ts","../../../../../../node_modules/@types/lodash/common/common.d.ts","../../../../../../node_modules/@types/lodash/common/array.d.ts","../../../../../../node_modules/@types/lodash/common/collection.d.ts","../../../../../../node_modules/@types/lodash/common/date.d.ts","../../../../../../node_modules/@types/lodash/common/function.d.ts","../../../../../../node_modules/@types/lodash/common/lang.d.ts","../../../../../../node_modules/@types/lodash/common/math.d.ts","../../../../../../node_modules/@types/lodash/common/number.d.ts","../../../../../../node_modules/@types/lodash/common/object.d.ts","../../../../../../node_modules/@types/lodash/common/seq.d.ts","../../../../../../node_modules/@types/lodash/common/string.d.ts","../../../../../../node_modules/@types/lodash/common/util.d.ts","../../../../../../node_modules/@types/lodash/index.d.ts","../../../../../../node_modules/@types/lodash.debounce/index.d.ts","../../../../../../node_modules/@types/mdast/index.d.ts","../../../../../../node_modules/@types/mime/index.d.ts","../../../../../../node_modules/@types/normalize-package-data/index.d.ts","../../../../../../node_modules/@types/react/global.d.ts","../../../../../../node_modules/csstype/index.d.ts","../../../../../../node_modules/@types/react/index.d.ts","../../../../../../node_modules/@types/react-dom/index.d.ts","../../../../../../node_modules/@types/ws/index.d.ts"],"fileIdsList":[[287,350,358,362,365,367,368,369,372,373,381],[153,270,287,350,358,362,365,367,368,369,372,373,381],[153,270,273,274,287,350,358,362,365,367,368,369,372,373,381],[153,270,271,272,273,274,275,276,277,278,287,350,358,362,365,367,368,369,381],[272,287,350,358,362,365,367,368,369,381],[270,272,273,287,350,358,362,365,367,368,369,381],[287,350,358,362,365,367,368,369,381],[153,287,350,358,362,365,367,368,369,381],[150,153,287,350,351,358,362,365,367,368,369,373,381],[66,94,95,137,145,287,350,358,362,365,367,368,369,373,381],[66,95,287,350,358,362,365,367,368,369,372,373,381],[66,93,94,287,350,358,362,365,367,368,369,372,373,381],[287,350,351,358,362,365,367,368,369,370,372,373,381],[66,95,136,287,350,358,362,365,367,368,369,373,381],[66,95,137,138,140,141,142,146,147,148,149,150,151,152,287,350,358,362,365,367,368,369,381],[66,95,287,350,351,358,362,365,367,368,369,372,373,381],[66,95,137,287,350,358,362,365,367,368,369,373,381],[66,95,287,350,358,362,365,367,368,369,373,381],[66,95,140,287,350,358,362,365,367,368,369,373,381],[66,95,139,287,350,358,362,365,367,368,369,373,381],[281,282,283,287,350,358,362,365,367,368,369,381],[280,287,350,351,358,362,365,367,368,369,372,373,381],[280,287,350,358,362,365,367,368,369,372,373,381],[145,279,287,350,358,362,365,367,368,369,372,373,381,410],[279,287,350,358,362,365,367,368,369,373,381,410,411],[145,287,350,351,358,362,365,367,368,369,372,373,381,410],[145,279,287,350,358,362,365,367,368,369,373,381,410,411,446,448],[145,279,287,350,358,362,365,367,368,369,372,373,381,409,410,411,412,413,446,448,449,450,451,452,453,454],[279,287,350,355,358,362,365,367,368,369,373,381,410,412],[145,279,287,350,358,362,365,367,368,369,373,381,452],[279,287,350,358,362,365,367,368,369,373,381,409],[261,262,268,287,350,358,362,365,367,368,369,381],[261,265,266,267,287,350,358,362,365,367,368,369,381],[95,148,261,263,264,287,350,358,362,365,367,368,369,381],[95,139,140,261,263,264,287,350,358,362,365,367,368,369,381],[95,146,261,263,264,287,350,358,362,365,367,368,369,373,381],[287,350,358,362,365,367,368,369,373,381],[287,350,358,362,365,367,368,369,381,456],[287,350,358,362,365,367,368,369,381,418,430],[287,350,358,362,365,367,368,369,381,414,415,419,420,421,422,423,424,425,426,427,428,429],[287,350,358,362,365,367,368,369,381,418],[287,350,358,362,365,367,368,369,381,418,419],[287,350,358,362,365,367,368,369,381,414,418],[287,350,358,362,365,367,368,369,381,419],[287,350,358,362,365,367,368,369,381,418,430,436],[287,350,358,362,365,367,368,369,381,432,433,434,435],[287,350,358,362,365,367,368,369,381,431,437,438,439,440,441,442,443,444,445],[287,350,358,362,365,367,368,369,381,416,417],[287,350,358,362,365,367,368,369,381,386],[236,249,251,254,287,350,358,362,365,367,368,369,381],[236,249,252,261,287,350,358,362,365,367,368,369,381],[236,249,253,254,258,287,350,358,362,365,367,368,369,381],[249,287,350,358,362,365,367,368,369,381],[236,249,254,256,257,287,350,358,362,365,367,368,369,381],[236,249,250,252,254,258,259,260,287,350,358,362,365,367,368,369,381],[249,250,287,350,358,362,365,367,368,369,381,386],[168,235,287,350,358,362,365,367,368,369,381],[236,248,249,250,252,253,287,350,358,362,365,367,368,369,381],[247,248,287,350,358,362,365,367,368,369,381],[255,287,350,358,362,365,367,368,369,381],[287,350,358,362,365,367,368,369,381,456,457,458,459,460],[287,350,358,362,365,367,368,369,381,456,458],[287,350,358,362,364,365,367,368,369,381,406,462],[287,350,358,362,365,367,368,369,381,464,465],[287,350,358,362,364,365,367,368,369,381,406],[287,350,358,362,365,367,368,369,381,467],[287,350,358,362,365,367,368,369,381,469,470],[287,350,358,361,362,364,365,367,368,369,381,406,471,472,473],[287,350,358,362,365,367,368,369,381,463,472,474,479],[287,350,358,362,365,367,368,369,381,406,407,408],[287,350,358,362,365,367,368,369,381,482],[287,350,358,362,365,367,368,369,381,398,406],[287,350,358,362,365,367,368,369,381,497],[287,350,358,362,365,367,368,369,381,485,487,488,489,490,491,492,493,494,495,496,497],[287,350,358,362,365,367,368,369,381,485,486,488,489,490,491,492,493,494,495,496,497],[287,350,358,362,365,367,368,369,381,486,487,488,489,490,491,492,493,494,495,496,497],[287,350,358,362,365,367,368,369,381,485,486,487,489,490,491,492,493,494,495,496,497],[287,350,358,362,365,367,368,369,381,485,486,487,488,490,491,492,493,494,495,496,497],[287,350,358,362,365,367,368,369,381,485,486,487,488,489,491,492,493,494,495,496,497],[287,350,358,362,365,367,368,369,381,485,486,487,488,489,490,492,493,494,495,496,497],[287,350,358,362,365,367,368,369,381,485,486,487,488,489,490,491,493,494,495,496,497],[287,350,358,362,365,367,368,369,381,485,486,487,488,489,490,491,492,494,495,496,497],[287,350,358,362,365,367,368,369,381,485,486,487,488,489,490,491,492,493,495,496,497],[287,350,358,362,365,367,368,369,381,485,486,487,488,489,490,491,492,493,494,496,497],[287,350,358,362,365,367,368,369,381,485,486,487,488,489,490,491,492,493,494,495,497],[287,350,358,362,365,367,368,369,381,485,486,487,488,489,490,491,492,493,494,495,496],[287,347,348,350,358,362,365,367,368,369,381],[287,349,350,358,362,365,367,368,369,381],[350,358,362,365,367,368,369,381],[287,350,358,362,365,367,368,369,381,389],[287,350,351,356,358,361,362,365,367,368,369,371,381,386,398],[287,350,351,352,358,361,362,365,367,368,369,381],[287,350,353,358,362,365,367,368,369,381,399],[287,350,354,355,358,362,365,367,368,369,372,381],[287,350,355,358,362,365,367,368,369,381,386,395],[287,350,356,358,361,362,365,367,368,369,371,381],[287,349,350,357,358,362,365,367,368,369,381],[287,350,358,359,362,365,367,368,369,381],[287,350,358,360,361,362,365,367,368,369,381],[287,349,350,358,361,362,365,367,368,369,381],[287,350,358,361,362,363,365,367,368,369,381,386,398],[287,350,358,361,362,363,365,367,368,369,381,386,389],[287,337,350,358,361,362,364,365,367,368,369,371,381,386,398],[287,350,358,361,362,364,365,367,368,369,371,381,386,395,398],[287,350,358,362,364,365,366,367,368,369,381,386,395,398],[285,286,287,288,289,290,291,292,293,294,295,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405],[287,350,358,361,362,365,367,368,369,381],[287,350,358,362,365,367,369,381],[287,350,358,362,365,367,368,369,370,381,398],[287,350,358,361,362,365,367,368,369,371,381,386],[287,350,358,362,365,367,368,369,372,381],[287,350,358,361,362,365,367,368,369,376,381],[287,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405],[287,350,358,362,365,367,368,369,378,381],[287,350,358,362,365,367,368,369,379,381],[287,350,355,358,362,365,367,368,369,371,381,389],[287,350,358,361,362,365,367,368,369,381,382],[287,350,358,362,365,367,368,369,381,383,399,402],[287,350,358,361,362,365,367,368,369,381,386,388,389],[287,350,358,362,365,367,368,369,381,387,389],[287,350,358,362,365,367,368,369,381,389,399],[287,350,358,362,365,367,368,369,381,390],[287,347,350,358,362,365,367,368,369,381,386,392,398],[287,350,358,362,365,367,368,369,381,386,391],[287,350,358,361,362,365,367,368,369,381,393,394],[287,350,358,362,365,367,368,369,381,393,394],[287,350,355,358,362,365,367,368,369,371,381,386,395],[287,350,358,362,365,367,368,369,381,396],[287,350,358,362,365,367,368,369,371,381,397],[287,350,358,362,364,365,367,368,369,379,381,398],[287,350,358,362,365,367,368,369,381,399,400],[287,350,355,358,362,365,367,368,369,381,400],[287,350,358,362,365,367,368,369,381,386,401],[287,350,358,362,365,367,368,369,370,381,402],[287,350,358,362,365,367,368,369,381,403],[287,350,353,358,362,365,367,368,369,381],[287,350,355,358,362,365,367,368,369,381],[287,350,358,362,365,367,368,369,381,399],[287,337,350,358,362,365,367,368,369,381],[287,350,358,362,365,367,368,369,381,398],[287,350,358,362,365,367,368,369,381,404],[287,350,358,362,365,367,368,369,376,381],[287,350,358,362,365,367,368,369,381,394],[287,337,350,358,361,362,363,365,367,368,369,376,381,386,389,398,401,402,404],[287,350,358,362,365,367,368,369,381,386,405],[287,350,358,362,365,367,368,369,381,504],[287,350,358,362,365,367,368,369,381,502,503],[287,350,358,362,365,367,368,369,381,386,406],[287,350,358,362,364,365,367,368,369,381,406,475,478],[287,350,358,362,365,367,368,369,381,386,406,477],[287,350,358,361,362,364,365,366,367,368,369,371,381,386,395,398,405,406],[143,144,287,350,358,362,365,367,368,369,381],[287,350,358,362,365,367,368,369,381,397],[287,350,358,362,365,367,368,369,381,476],[287,350,358,362,365,367,368,369,381,447],[70,72,287,350,358,362,365,367,368,369,381],[72,287,350,358,362,365,367,368,369,381],[70,287,350,358,362,365,367,368,369,381],[68,72,93,287,350,358,362,365,367,368,369,381],[68,72,287,350,358,362,365,367,368,369,381],[93,287,350,358,362,365,367,368,369,381],[72,93,287,350,358,362,365,367,368,369,381],[69,71,287,350,351,358,362,365,367,368,369,381],[70,87,88,89,90,287,350,358,362,365,367,368,369,381],[74,86,91,92,287,350,358,362,365,367,368,369,381],[67,73,287,350,358,362,365,367,368,369,381],[74,86,91,287,350,358,362,365,367,368,369,381],[67,72,73,75,76,77,78,79,80,81,82,83,84,85,287,350,358,362,365,367,368,369,381],[287,302,305,308,309,350,358,362,365,367,368,369,381,398],[287,305,350,358,362,365,367,368,369,381,386,398],[287,305,309,350,358,362,365,367,368,369,381,398],[287,299,350,358,362,365,367,368,369,381],[287,303,350,358,362,365,367,368,369,381],[287,301,302,305,350,358,362,365,367,368,369,381,398],[287,350,358,362,365,367,368,369,371,381,395],[287,350,358,362,365,367,368,369,381,406],[287,299,350,358,362,365,367,368,369,381,406],[287,301,305,350,358,362,365,367,368,369,371,381,398],[287,296,297,298,300,304,350,358,361,362,365,367,368,369,381,386,398],[287,305,314,322,350,358,362,365,367,368,369,381],[287,297,303,350,358,362,365,367,368,369,381],[287,305,331,332,350,358,362,365,367,368,369,381],[287,297,300,305,350,358,362,365,367,368,369,381,389,398,406],[287,305,350,358,362,365,367,368,369,381],[287,301,305,350,358,362,365,367,368,369,381,398],[287,296,350,358,362,365,367,368,369,381],[287,299,300,301,303,304,305,306,307,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,332,333,334,335,336,350,358,362,365,367,368,369,381],[287,305,324,327,350,358,362,365,367,368,369,381],[287,305,314,315,316,350,358,362,365,367,368,369,381],[287,303,305,315,317,350,358,362,365,367,368,369,381],[287,304,350,358,362,365,367,368,369,381],[287,297,299,305,350,358,362,365,367,368,369,381],[287,305,309,315,317,350,358,362,365,367,368,369,381],[287,309,350,358,362,365,367,368,369,381],[287,303,305,308,350,358,362,365,367,368,369,381,398],[287,297,301,305,314,350,358,362,365,367,368,369,381],[287,305,324,350,358,362,365,367,368,369,381],[287,317,350,358,362,365,367,368,369,381],[287,299,305,331,350,358,362,365,367,368,369,381,389,404,406],[97,120,121,125,127,128,287,350,358,362,365,367,368,369,381],[105,115,121,127,287,350,358,362,365,367,368,369,381],[127,287,350,358,362,365,367,368,369,381],[97,101,104,113,114,115,118,120,121,126,128,287,350,358,362,365,367,368,369,381],[96,287,350,358,362,365,367,368,369,381],[96,97,101,104,105,113,114,115,118,119,120,121,125,126,127,129,130,131,132,133,134,135,287,350,358,362,365,367,368,369,381],[100,113,118,287,350,358,362,365,367,368,369,381],[100,101,102,104,113,121,125,127,287,350,358,362,365,367,368,369,381],[114,115,121,287,350,358,362,365,367,368,369,381],[101,104,113,118,121,126,127,287,350,358,362,365,367,368,369,381],[100,101,102,104,113,114,120,125,126,127,287,350,358,362,365,367,368,369,381],[100,102,114,115,116,117,121,125,287,350,358,362,365,367,368,369,381],[100,121,125,287,350,358,362,365,367,368,369,381],[121,127,287,350,358,362,365,367,368,369,381],[100,101,102,103,112,115,118,121,125,287,350,358,362,365,367,368,369,381],[100,101,102,103,115,116,118,121,125,287,350,358,362,365,367,368,369,381],[96,98,99,101,105,115,118,119,121,128,287,350,358,362,365,367,368,369,381],[97,101,121,125,287,350,358,362,365,367,368,369,381],[125,287,350,358,362,365,367,368,369,381],[122,123,124,287,350,358,362,365,367,368,369,381],[98,120,121,127,129,287,350,358,362,365,367,368,369,381],[105,287,350,358,362,365,367,368,369,381],[105,114,118,120,287,350,358,362,365,367,368,369,381],[105,120,287,350,358,362,365,367,368,369,381],[101,102,104,113,115,116,120,121,287,350,358,362,365,367,368,369,381],[100,104,105,112,113,115,287,350,358,362,365,367,368,369,381],[100,101,102,105,112,113,115,118,287,350,358,362,365,367,368,369,381],[120,126,127,287,350,358,362,365,367,368,369,381],[101,287,350,358,362,365,367,368,369,381],[101,102,287,350,358,362,365,367,368,369,381],[99,100,102,106,107,108,109,110,111,113,116,118,287,350,358,362,365,367,368,369,381],[245,287,350,358,362,365,367,368,369,381],[158,159,287,350,358,362,365,367,368,369,381],[156,157,158,160,161,166,287,350,358,362,365,367,368,369,381],[157,158,287,350,358,362,365,367,368,369,381],[166,287,350,358,362,365,367,368,369,381],[167,287,350,358,362,365,367,368,369,381],[158,287,350,358,362,365,367,368,369,381],[156,157,158,161,162,163,164,165,287,350,358,362,365,367,368,369,381],[156,157,168,287,350,358,362,365,367,368,369,381],[235,287,350,358,362,365,367,368,369,381],[235,239,287,350,358,362,365,367,368,369,381],[230,233,235,237,238,239,240,241,242,243,244,287,350,358,362,365,367,368,369,381],[169,171,239,287,350,358,362,365,367,368,369,381],[235,237,287,350,358,362,365,367,368,369,381],[170,235,238,287,350,358,362,365,367,368,369,381],[171,173,175,176,177,178,287,350,358,362,365,367,368,369,381],[173,175,177,178,287,350,358,362,365,367,368,369,381],[173,175,177,287,350,358,362,365,367,368,369,381],[170,173,175,176,178,287,350,358,362,365,367,368,369,381],[169,171,172,173,174,175,176,177,178,179,180,230,231,232,233,234,287,350,358,362,365,367,368,369,381],[169,171,172,175,287,350,358,362,365,367,368,369,381],[171,172,175,287,350,358,362,365,367,368,369,381],[175,178,287,350,358,362,365,367,368,369,381],[169,170,172,173,174,176,177,178,287,350,358,362,365,367,368,369,381],[169,170,171,175,235,287,350,358,362,365,367,368,369,381],[175,176,177,178,287,350,358,362,365,367,368,369,381],[246,287,350,358,362,365,367,368,369,381],[177,287,350,358,362,365,367,368,369,381],[181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,287,350,358,362,365,367,368,369,381]],"fileInfos":[{"version":"c430d44666289dae81f30fa7b2edebf186ecc91a2d4c71266ea6ae76388792e1","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","impliedFormat":1},{"version":"ee7bad0c15b58988daa84371e0b89d313b762ab83cb5b31b8a2d1162e8eb41c2","impliedFormat":1},{"version":"080941d9f9ff9307f7e27a83bcd888b7c8270716c39af943532438932ec1d0b9","affectsGlobalScope":true,"impliedFormat":1},{"version":"2e80ee7a49e8ac312cc11b77f1475804bee36b3b2bc896bead8b6e1266befb43","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7a3c8b952931daebdfc7a2897c53c0a1c73624593fa070e46bd537e64dcd20a","affectsGlobalScope":true,"impliedFormat":1},{"version":"80e18897e5884b6723488d4f5652167e7bb5024f946743134ecc4aa4ee731f89","affectsGlobalScope":true,"impliedFormat":1},{"version":"cd034f499c6cdca722b60c04b5b1b78e058487a7085a8e0d6fb50809947ee573","affectsGlobalScope":true,"impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"0559b1f683ac7505ae451f9a96ce4c3c92bdc71411651ca6ddb0e88baaaad6a3","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"fb0f136d372979348d59b3f5020b4cdb81b5504192b1cacff5d1fbba29378aa1","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"a680117f487a4d2f30ea46f1b4b7f58bef1480456e18ba53ee85c2746eeca012","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"d6d7ae4d1f1f3772e2a3cde568ed08991a8ae34a080ff1151af28b7f798e22ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true,"impliedFormat":1},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true,"impliedFormat":1},{"version":"959d36cddf5e7d572a65045b876f2956c973a586da58e5d26cde519184fd9b8a","affectsGlobalScope":true,"impliedFormat":1},{"version":"965f36eae237dd74e6cca203a43e9ca801ce38824ead814728a2807b1910117d","affectsGlobalScope":true,"impliedFormat":1},{"version":"3925a6c820dcb1a06506c90b1577db1fdbf7705d65b62b99dce4be75c637e26b","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a3d63ef2b853447ec4f749d3f368ce642264246e02911fcb1590d8c161b8005","affectsGlobalScope":true,"impliedFormat":1},{"version":"8cdf8847677ac7d20486e54dd3fcf09eda95812ac8ace44b4418da1bbbab6eb8","affectsGlobalScope":true,"impliedFormat":1},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true,"impliedFormat":1},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true,"impliedFormat":1},{"version":"b4b67b1a91182421f5df999988c690f14d813b9850b40acd06ed44691f6727ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"51ad4c928303041605b4d7ae32e0c1ee387d43a24cd6f1ebf4a2699e1076d4fa","affectsGlobalScope":true,"impliedFormat":1},{"version":"196cb558a13d4533a5163286f30b0509ce0210e4b316c56c38d4c0fd2fb38405","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"3cbad9a1ba4453443026ed38e4b8be018abb26565fa7c944376463ad9df07c41","impliedFormat":1},{"version":"58f0e50f01cd33c002984beee0973039fd24226a88e93bce71c142a2d94ee186","impliedFormat":1},{"version":"16b81141d0c59af6f07e5fc24824c54dd6003da0ab0a2d2cedc95f8eb03ea8d3","impliedFormat":1},{"version":"6578758b0b94087beffd0ce554701365cd1e6a7428f14464ac8b88095fca4e50","impliedFormat":1},{"version":"b6c4796630a47f8b0f420519cd241e8e7701247b48ed4b205e8d057cbf7107d7","impliedFormat":1},{"version":"6256cf36c8ae7e82bff606595af8fe08a06f8478140fcf304ee2f10c7716ddc8","impliedFormat":1},{"version":"b2dbe6b053e04ec135c7ce722e0a4e9744281ea40429af96e2662cc926465519","impliedFormat":1},{"version":"95cc177eacf4ddd138f1577e69ee235fd8f1ea7c7f160627deb013b39774b94e","impliedFormat":1},{"version":"5619706bbd7a964d7c82cd4a307457ed0327ecc86772ceb7ea0870566c6578b2","impliedFormat":1},{"version":"b48c4e15766170c5003a6273b1d8f17f854ec565ccaaebd9f700fef159b84078","impliedFormat":1},{"version":"7c774169686976056434799723bd7a48348df9d2204b928a0b77920505585214","impliedFormat":1},{"version":"5e95379e81e2d373e5235cedc4579938e39db274a32cfa32f8906e7ff6698763","impliedFormat":1},{"version":"3e697e2186544103572756d80b61fcce3842ab07abdc5a1b7b8d4b9a4136005a","impliedFormat":1},{"version":"8758b438b12ea50fb8b678d29ab0ef42d77abfb801cec481596ce6002b537a6f","impliedFormat":1},{"version":"688a28e7953ef4465f68da2718dc6438aaa16325133a8cb903bf850c63cb4a7e","impliedFormat":1},{"version":"015682a15ef92844685cca5e816b1d21dc2a2cfb5905b556a8e9ca50b236af05","impliedFormat":1},{"version":"f73cf81342d2a25b65179c262ca7c38df023969129094607d0eb52510a56f10f","impliedFormat":1},{"version":"f433d28f86313073f13b16c0a18ccdd21759390f52c8d7bf9d916645b12d16ed","impliedFormat":1},{"version":"e7d7e67bd66b30f2216e4678b97bb09629a2b31766a79119acaa30e3005ef5fb","impliedFormat":1},{"version":"e05a20aa85c7324c65643542c2d7314774c2adf510f9dcbad5d3afac74ca3dac","impliedFormat":1},{"version":"e137f087bda0256410b28743ef9a1bf57a4cafd43ffa6b62d5c17a8f5a08b3b5","impliedFormat":1},{"version":"b1e92e9b96cacb98a39acc958670ac895c3b2bb05d8810497310b6b678c46acc","impliedFormat":1},{"version":"af504042a6db047c40cc0aeb14550bbc954f194f2b8c5ad8944f2da502f45bf5","impliedFormat":1},{"version":"5b25b6ab5ad6c17f90b592162b2e9978ad8d81edf24cd3957306eb6e5edb89a9","impliedFormat":1},{"version":"24693bd77ac3be0b16e564d0ab498a397feb758ce7f4ed9f13478d566e3aafde","impliedFormat":1},{"version":"208dad548b895c7d02465de6ba79064b7c67bc4d94e5227b09f21d58790e634c","impliedFormat":1},{"version":"048c0ced65fa41fbf4bcc3d5e8e5b6f6c7f27335ceb54d401be654e821adbc08","impliedFormat":1},{"version":"e1126668c194faa56a728eb5bd2dd88dfc19460ced65c38888977a22369e4624","impliedFormat":1},{"version":"9a57d654b0a0e4bf56a8eb0aa3ede1c7d349cec6220e36b5288c26626c8688ed","impliedFormat":1},{"version":"2d526d2a2d6dfd1980fb6eaf7aa668c24d339e27b41cac2a72efc75abe301b35","impliedFormat":1},{"version":"5a8f04bb3d0a8c73a6bd8a75f8c50de4e22e1f3c79c0b3ba79ae71104e72b2f6","impliedFormat":1},{"version":"3dfcd0a3bfa70b53135db3cf2e4ddcb7eccc3e4418ce833ae24eecd06928328f","impliedFormat":1},{"version":"33e12c9940a7f23d50742e5925a193bb4af9b23ee159251e6bc50bb9070618a1","impliedFormat":1},{"version":"bc41a8e33caf4d193b0c49ec70d1e8db5ce3312eafe5447c6c1d5a2084fece12","impliedFormat":1},{"version":"7c33f11a56ba4e79efc4ddae85f8a4a888e216d2bf66c863f344d403437ffc74","impliedFormat":1},{"version":"cbef1abd1f8987dee5c9ed8c768a880fbfbff7f7053e063403090f48335c8e4e","impliedFormat":1},{"version":"9249603c91a859973e8f481b67f50d8d0b3fa43e37878f9dfc4c70313ad63065","impliedFormat":1},{"version":"0132f67b7f128d4a47324f48d0918ec73cf4220a5e9ea8bd92b115397911254f","impliedFormat":1},{"version":"06b37153d512000a91cad6fcbae75ca795ecec00469effaa8916101a00d5b9e2","impliedFormat":1},{"version":"8a641e3402f2988bf993007bd814faba348b813fc4058fce5b06de3e81ed511a","impliedFormat":1},{"version":"281744305ba2dcb2d80e2021fae211b1b07e5d85cfc8e36f4520325fcf698dbb","impliedFormat":1},{"version":"e1b042779d17b69719d34f31822ddba8aa6f5eb15f221b02105785f4447e7f5b","impliedFormat":1},{"version":"6858337936b90bd31f1674c43bedda2edbab2a488d04adc02512aef47c792fd0","impliedFormat":1},{"version":"15cb3deecc635efb26133990f521f7f1cc95665d5db8d87e5056beaea564b0ce","impliedFormat":1},{"version":"e27605c8932e75b14e742558a4c3101d9f4fdd32e7e9a056b2ca83f37f973945","impliedFormat":1},{"version":"f0443725119ecde74b0d75c82555b1f95ee1c3cd371558e5528a83d1de8109de","impliedFormat":1},{"version":"7794810c4b3f03d2faa81189504b953a73eb80e5662a90e9030ea9a9a359a66f","impliedFormat":1},{"version":"b074516a691a30279f0fe6dff33cd76359c1daacf4ae024659e44a68756de602","impliedFormat":1},{"version":"57cbeb55ec95326d068a2ce33403e1b795f2113487f07c1f53b1eaf9c21ff2ce","impliedFormat":1},{"version":"a00362ee43d422bcd8239110b8b5da39f1122651a1809be83a518b1298fa6af8","impliedFormat":1},{"version":"a820499a28a5fcdbf4baec05cc069362041d735520ab5a94c38cc44db7df614c","impliedFormat":1},{"version":"33a6d7b07c85ac0cef9a021b78b52e2d901d2ebfd5458db68f229ca482c1910c","impliedFormat":1},{"version":"8f648847b52020c1c0cdfcc40d7bcab72ea470201a631004fde4d85ccbc0c4c7","impliedFormat":1},{"version":"7821d3b702e0c672329c4d036c7037ecf2e5e758eceb5e740dde1355606dc9f2","impliedFormat":1},{"version":"213e4f26ee5853e8ba314ecad3a73cd06ab244a0809749bb777cbc1619aa07d8","impliedFormat":1},{"version":"cafd6ef91d96228a618436c03d60fe5078f43d32df4c39ebd9f3f7d013dbe337","impliedFormat":1},{"version":"961fa18e1658f3f8e38c23e1a9bc3f4d7be75b056a94700291d5f82f57524ff0","impliedFormat":1},{"version":"079c02dc397960da2786db71d7c9e716475377bcedd81dede034f8a9f94c71b8","impliedFormat":1},{"version":"a7595cbb1b354b54dff14a6bb87d471e6d53b63de101a1b4d9d82d3d3f6eddec","impliedFormat":1},{"version":"1f49a85a97e01a26245fd74232b3b301ebe408fb4e969e72e537aa6ffbd3fe14","impliedFormat":1},{"version":"9c38563e4eabfffa597c4d6b9aa16e11e7f9a636f0dd80dd0a8bce1f6f0b2108","impliedFormat":1},{"version":"a971cba9f67e1c87014a2a544c24bc58bad1983970dfa66051b42ae441da1f46","impliedFormat":1},{"version":"df9b266bceb94167c2e8ae25db37d31a28de02ae89ff58e8174708afdec26738","impliedFormat":1},{"version":"9e5b8137b7ee679d31b35221503282561e764116d8b007c5419b6f9d60765683","impliedFormat":1},{"version":"3e7ae921a43416e155d7bbe5b4229b7686cfa6a20af0a3ae5a79dfe127355c21","impliedFormat":1},{"version":"c7200ae85e414d5ed1d3c9507ae38c097050161f57eb1a70bef021d796af87a7","impliedFormat":1},{"version":"4edb4ff36b17b2cf19014b2c901a6bdcdd0d8f732bcf3a11aa6fd0a111198e27","impliedFormat":1},{"version":"810f0d14ce416a343dcdd0d3074c38c094505e664c90636b113d048471c292e2","impliedFormat":1},{"version":"9c37dc73c97cd17686edc94cc534486509e479a1b8809ef783067b7dde5c6713","impliedFormat":1},{"version":"5fe2ef29b33889d3279d5bc92f8e554ffd32145a02f48d272d30fc1eea8b4c89","impliedFormat":1},{"version":"e39090ffe9c45c59082c3746e2aa2546dc53e3c5eeb4ad83f8210be7e2e58022","impliedFormat":1},{"version":"9f85a1810d42f75e1abb4fc94be585aae1fdac8ae752c76b912d95aef61bf5de","impliedFormat":1},{"version":"c6c7a5c8ebafc9af9dd2b8fac34f20ba18dd58eb919bb2fb7a4023925b45e857","impliedFormat":1},{"version":"b7a29d73cd766287952ba41c00ee828cc61dec91a228d34462d70cd47394d159","impliedFormat":1},{"version":"6049d315e1aa3f39a48f06cbccd77dbe2d85dc28e79638dd91adc37280c6d97e","impliedFormat":99},{"version":"2bf5d0de44424590e00eebfd1b7596d3518b04ccb7cb71db73608e30cbc8824b","impliedFormat":1},{"version":"87da070cf424c8681ded708c7d4998d8dbf5bdfbad4c4cc26b4c21657f33c45e","impliedFormat":1},{"version":"b20ce64c110eb1eeaf97d9d63f4579c43a1a7c9213cd2102ffeb8400e19f1d77","impliedFormat":1},{"version":"acfed6cc001e7f7f26d2ba42222a180ba669bb966d4dd9cb4ad5596516061b13","impliedFormat":99},{"version":"f61a4dc92450609c353738f0a2daebf8cae71b24716dbd952456d80b1e1a48b6","impliedFormat":99},{"version":"f3f76db6e76bc76d13cc4bfa10e1f74390b8ebe279535f62243e8d8acd919314","impliedFormat":99},{"version":"e444cf10a471ebd65d23acda53d4c1a1794015ef9549446c68028e8de61f1c5d","impliedFormat":1},{"version":"1396e19fda3800ae7dbdf46af465d1f2a94f0694c7a053bc24f975144c521085","impliedFormat":1},{"version":"dc70c6a6b07a65fccdef34da741413e6a5dec41a41ed2cbb4c4b34a0300041a0","impliedFormat":1},{"version":"d4004ad19e32de9a0a4531a3b0c5b3c0aeb6285bff1b0ecb0e9c751502592fd3","impliedFormat":1},{"version":"bac94368b13577be2043ead437c89eb4d5f5749733ee27cacdce93d9fa832340","impliedFormat":1},{"version":"fb6201ad41da20fc0612eb31ff3c81eb61d203e1634201ced63e1511c421e2f4","impliedFormat":1},{"version":"6c6e0e251f25278ace232a8b9af05ffdbd152eb4a642703e05240bacbd7495cf","impliedFormat":1},{"version":"c40cfe432b03597e9c681ca26961e6a6407430c49aec7b891ff3fc4fd87065aa","impliedFormat":1},{"version":"f5f28513c39bb0c8493f6258f383186b6a273f0c8386db35a16ec1e395e97eb1","impliedFormat":1},{"version":"0b7764bbcbd0474fd2c453a05782c59e459537019e5720e6e579c86435838c86","impliedFormat":1},{"version":"d3cfde44f8089768ebb08098c96d01ca260b88bccf238d55eee93f1c620ff5a5","impliedFormat":1},{"version":"293eadad9dead44c6fd1db6de552663c33f215c55a1bfa2802a1bceed88ff0ec","impliedFormat":1},{"version":"36eb5babc665b890786550d4a8cb20ef7105673a6d5551fbdd7012877bb26942","impliedFormat":1},{"version":"fec412ded391a7239ef58f455278154b62939370309c1fed322293d98c8796a6","impliedFormat":1},{"version":"e3498cf5e428e6c6b9e97bd88736f26d6cf147dedbfa5a8ad3ed8e05e059af8a","impliedFormat":1},{"version":"dba3f34531fd9b1b6e072928b6f885aa4d28dd6789cbd0e93563d43f4b62da53","impliedFormat":1},{"version":"f672c876c1a04a223cf2023b3d91e8a52bb1544c576b81bf64a8fec82be9969c","impliedFormat":1},{"version":"e4b03ddcf8563b1c0aee782a185286ed85a255ce8a30df8453aade2188bbc904","impliedFormat":1},{"version":"2329d90062487e1eaca87b5e06abcbbeeecf80a82f65f949fd332cfcf824b87b","impliedFormat":1},{"version":"25b3f581e12ede11e5739f57a86e8668fbc0124f6649506def306cad2c59d262","impliedFormat":1},{"version":"93c3e73824ad57f98fd23b39335dbdae2db0bd98199b0dc0b9ccc60bf3c5134a","impliedFormat":1},{"version":"a9ebb67d6bbead6044b43714b50dcb77b8f7541ffe803046fdec1714c1eba206","impliedFormat":1},{"version":"833e92c058d033cde3f29a6c7603f517001d1ddd8020bc94d2067a3bc69b2a8e","impliedFormat":1},{"version":"c1a2e05eb6d7ca8d7e4a7f4c93ccf0c2857e842a64c98eaee4d85841ee9855e6","impliedFormat":1},{"version":"835fb2909ce458740fb4a49fc61709896c6864f5ce3db7f0a88f06c720d74d02","impliedFormat":1},{"version":"6e5857f38aa297a859cab4ec891408659218a5a2610cd317b6dcbef9979459cc","impliedFormat":1},{"version":"ead8e39c2e11891f286b06ae2aa71f208b1802661fcdb2425cffa4f494a68854","impliedFormat":1},{"version":"82919acbb38870fcf5786ec1292f0f5afe490f9b3060123e48675831bd947192","impliedFormat":1},{"version":"e222701788ec77bd57c28facbbd142eadf5c749a74d586bc2f317db7e33544b1","impliedFormat":1},{"version":"09154713fae0ed7befacdad783e5bd1970c06fc41a5f866f7f933b96312ce764","impliedFormat":1},{"version":"8d67b13da77316a8a2fabc21d340866ddf8a4b99e76a6c951cc45189142df652","impliedFormat":1},{"version":"a91c8d28d10fee7fe717ddf3743f287b68770c813c98f796b6e38d5d164bd459","impliedFormat":1},{"version":"68add36d9632bc096d7245d24d6b0b8ad5f125183016102a3dad4c9c2438ccb0","impliedFormat":1},{"version":"3a819c2928ee06bbcc84e2797fd3558ae2ebb7e0ed8d87f71732fb2e2acc87b4","impliedFormat":1},{"version":"f6f827cd43e92685f194002d6b52a9408309cda1cec46fb7ca8489a95cbd2fd4","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"a270a1a893d1aee5a3c1c8c276cd2778aa970a2741ee2ccf29cc3210d7da80f5","impliedFormat":1},{"version":"add0ce7b77ba5b308492fa68f77f24d1ed1d9148534bdf05ac17c30763fc1a79","impliedFormat":1},{"version":"8926594ee895917e90701d8cbb5fdf77fc238b266ac540f929c7253f8ad6233d","impliedFormat":1},{"version":"2f67911e4bf4e0717dc2ded248ce2d5e4398d945ee13889a6852c1233ea41508","impliedFormat":1},{"version":"d8430c275b0f59417ea8e173cfb888a4477b430ec35b595bf734f3ec7a7d729f","impliedFormat":1},{"version":"69364df1c776372d7df1fb46a6cb3a6bf7f55e700f533a104e3f9d70a32bec18","impliedFormat":1},{"version":"0648a8c200b5544e30677f7f7059b1e384d6cab716c82659716457e3f317ebae","impliedFormat":1},{"version":"6042774c61ece4ba77b3bf375f15942eb054675b7957882a00c22c0e4fe5865c","impliedFormat":1},{"version":"5a3bd57ed7a9d9afef74c75f77fce79ba3c786401af9810cdf45907c4e93f30e","impliedFormat":1},{"version":"ed8763205f02fb65e84eff7432155258df7f93b7d938f01785cb447d043d53f3","impliedFormat":1},{"version":"30db853bb2e60170ba11e39ab48bacecb32d06d4def89eedf17e58ebab762a65","impliedFormat":1},{"version":"e27451b24234dfed45f6cf22112a04955183a99c42a2691fb4936d63cfe42761","impliedFormat":1},{"version":"2316301dd223d31962d917999acf8e543e0119c5d24ec984c9f22cb23247160c","impliedFormat":1},{"version":"58d65a2803c3b6629b0e18c8bf1bc883a686fcf0333230dd0151ab6e85b74307","impliedFormat":1},{"version":"e818471014c77c103330aee11f00a7a00b37b35500b53ea6f337aefacd6174c9","impliedFormat":1},{"version":"d4a5b1d2ff02c37643e18db302488cd64c342b00e2786e65caac4e12bda9219b","impliedFormat":1},{"version":"d8bc0c5487582c6d887c32c92d8b4ffb23310146fcb1d82adf4b15c77f57c4ac","impliedFormat":1},{"version":"8cb31102790372bebfd78dd56d6752913b0f3e2cefbeb08375acd9f5ba737155","impliedFormat":1},{"version":"f17ed72d1b1882ab6dc66d45e699f757d15bba0807af2fc9c3ec98fe367611c1","impliedFormat":1},{"version":"0202dfffc221d1214a6e12ec1f5f36638f7bc7241bae8493dc5b151c7a45b0c6","impliedFormat":1},{"version":"7bb43a0f0180ad87b0a944ef95be8615d4c1d621a93ae503a8fcdee2027243ef","impliedFormat":1},{"version":"ba678532514244768286bdfdc82b33f072d5de4e9d281a75bcccdba9970788d7","impliedFormat":1},{"version":"0b79f95a79497386c50f38bafbbf59154619e51d7bbe5acf61cd376d3c9d77b9","impliedFormat":1},{"version":"5993793a23b298afd20c2e1cd2bf8468cc7e9415d314d0771e93dd8b2e389d28","impliedFormat":1},{"version":"2ac574152c07fe5bfea9ce46e9452a28f849ec11c7bbbdc399b7bd1aeab9455f","impliedFormat":1},{"version":"104fae9b53b5eaa040d9ce626e1bf0b3e6e27d269a899a98a4a28358cdcbc155","impliedFormat":99},{"version":"50a6aa665f3a2e769a4d683f9f74cd15164d0947fb957d8016331b170ab8b643","impliedFormat":1},{"version":"6b83491ca98ce7dc82ec0c54f1456705c9ea08f5a39fa8cea17134b28e2a73d7","impliedFormat":1},{"version":"33aa2f336bb0bc598652ddd1ad3095ef7a14e4dbed9cf829fa9357e989fff31a","impliedFormat":1},{"version":"d691e546590145171d00d78b341bd3ca4844c96eb34f870be84058a1cab585c3","impliedFormat":1},{"version":"c9d12ca3f67129b3ed2b81bf54537c970673cedd05ba28fbeba70c1e8aff684b","impliedFormat":1},{"version":"6f0b69f7afb2ff04a4b73fae6b43476c14349a438881c7a8c3d34cbad2c2bf3b","impliedFormat":1},{"version":"f55b797d46c4268b2e42961be04e99ad10ccbe55f2cb87fc99b82979fb28121f","impliedFormat":1},{"version":"29f823cbe0166e10e7176a94afe609a24b9e5af3858628c541ff8ce1727023cd","impliedFormat":1},{"version":"6ef341d40bb211d58441247975580ae825f25b273e33d9f46c4bae3d749fd4e4","impliedFormat":1},{"version":"15235a417affa75dc1d298d3046ea3270399082dc2bb4d54049f886f18605714","impliedFormat":1},{"version":"2a6cab389fcf13b1f1aeea9ebb4f92d00dc690211bd05ab084058b13eeb5ac92","impliedFormat":1},{"version":"308bde5115ace7826eecaa72edd7013e3676ae50cbc9fa1bb0feeef95f10691d","impliedFormat":1},{"version":"bfc30c5cb0ae36dde9fbe3cbad14d8d605adbfe648194eb610e08af8f5e83ba0","impliedFormat":1},{"version":"b02ce74d16c31ea4c3b56ef2e3077099dd86117d479b1050a347dd568deea249","impliedFormat":1},{"version":"dbeb295ca15ef6e070e0c58b9a51e131e9694d85c4ca9b5cf55f7ce8245e3ffd","impliedFormat":1},{"version":"05a62a7fc8dbee93b0ba8b886739ac7335eeba8804bfca7f969dcce5633b6855","impliedFormat":1},{"version":"8f304628ea5ca2bad55395f3d98e55444719311136ecd2561548789db2bccee3","impliedFormat":1},{"version":"2be9e2065ca36b0916982f6a50551291acbe1126ddbfda7cca0f1a3d90609939","impliedFormat":1},{"version":"d1eae61f4309efc6d16146e3d3642537208265d6a09a9d0026e13d150a1ac927","impliedFormat":1},{"version":"ad98bec67f02dcd0ae9320134f0d75c3f6eafc6bd8b6f2c8e7499d06c28651ab","impliedFormat":1},{"version":"1509aedaf847048bbab361162a3264d1b54fca1681abeceee7f6416cb36b64c8","impliedFormat":1},{"version":"b769e237841fe852e58d01508fd078ffce59ad518921bc69151d2ea82d7ed815","impliedFormat":1},{"version":"00e1c72a2e4f24cab76484c8cc69759ff7876829c2cf3b3514bddea7c5658513","impliedFormat":1},{"version":"ba610c6fee2e7a60f16c827c81a01cf00645a900f637e80bfa045fdc36bda6c1","impliedFormat":1},{"version":"79be4da9d05a551b5733316b23086afe06ef6f1cc0e90c64dae1da0db4f04772","impliedFormat":1},{"version":"b5d8e91638e0dd55b75af80146f92fa466311d23b43ca1c1aaa0641203cc5e68","impliedFormat":1},{"version":"14b7d0542ebdfa175f0c12c5b1e9917185f5e7139825bfe5efd0f3fbd350466f","impliedFormat":1},{"version":"bb34b3e8797b6e17a187df3ffdf911a564ae49a632167e0d56a41cebf4840d25","impliedFormat":1},{"version":"256b8ebd08e2801e7c1030f64c7c0c434351be7c6c83b6e5d258eec1aca19eb8","impliedFormat":1},{"version":"d153a11543fd884b596587ccd97aebbeed950b26933ee000f94009f1ab142848","affectsGlobalScope":true,"impliedFormat":1},{"version":"0ccdaa19852d25ecd84eec365c3bfa16e7859cadecf6e9ca6d0dbbbee439743f","affectsGlobalScope":true,"impliedFormat":1},{"version":"438b41419b1df9f1fbe33b5e1b18f5853432be205991d1b19f5b7f351675541e","affectsGlobalScope":true,"impliedFormat":1},{"version":"096116f8fedc1765d5bd6ef360c257b4a9048e5415054b3bf3c41b07f8951b0b","affectsGlobalScope":true,"impliedFormat":1},{"version":"e5e01375c9e124a83b52ee4b3244ed1a4d214a6cfb54ac73e164a823a4a7860a","affectsGlobalScope":true,"impliedFormat":1},{"version":"f90ae2bbce1505e67f2f6502392e318f5714bae82d2d969185c4a6cecc8af2fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"4b58e207b93a8f1c88bbf2a95ddc686ac83962b13830fe8ad3f404ffc7051fb4","affectsGlobalScope":true,"impliedFormat":1},{"version":"1fefabcb2b06736a66d2904074d56268753654805e829989a46a0161cd8412c5","affectsGlobalScope":true,"impliedFormat":1},{"version":"9798340ffb0d067d69b1ae5b32faa17ab31b82466a3fc00d8f2f2df0c8554aaa","affectsGlobalScope":true,"impliedFormat":1},{"version":"c18a99f01eb788d849ad032b31cafd49de0b19e083fe775370834c5675d7df8e","affectsGlobalScope":true,"impliedFormat":1},{"version":"5247874c2a23b9a62d178ae84f2db6a1d54e6c9a2e7e057e178cc5eea13757fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"cdcf9ea426ad970f96ac930cd176d5c69c6c24eebd9fc580e1572d6c6a88f62c","impliedFormat":1},{"version":"23cd712e2ce083d68afe69224587438e5914b457b8acf87073c22494d706a3d0","impliedFormat":1},{"version":"156a859e21ef3244d13afeeba4e49760a6afa035c149dda52f0c45ea8903b338","impliedFormat":1},{"version":"10ec5e82144dfac6f04fa5d1d6c11763b3e4dbbac6d99101427219ab3e2ae887","impliedFormat":1},{"version":"615754924717c0b1e293e083b83503c0a872717ad5aa60ed7f1a699eb1b4ea5c","impliedFormat":1},{"version":"074de5b2fdead0165a2757e3aaef20f27a6347b1c36adea27d51456795b37682","impliedFormat":1},{"version":"68834d631c8838c715f225509cfc3927913b9cc7a4870460b5b60c8dbdb99baf","impliedFormat":1},{"version":"24371e69a38fc33e268d4a8716dbcda430d6c2c414a99ff9669239c4b8f40dea","impliedFormat":1},{"version":"ccab02f3920fc75c01174c47fcf67882a11daf16baf9e81701d0a94636e94556","impliedFormat":1},{"version":"3e11fce78ad8c0e1d1db4ba5f0652285509be3acdd519529bc8fcef85f7dafd9","impliedFormat":1},{"version":"ea6bc8de8b59f90a7a3960005fd01988f98fd0784e14bc6922dde2e93305ec7d","impliedFormat":1},{"version":"36107995674b29284a115e21a0618c4c2751b32a8766dd4cb3ba740308b16d59","impliedFormat":1},{"version":"914a0ae30d96d71915fc519ccb4efbf2b62c0ddfb3a3fc6129151076bc01dc60","impliedFormat":1},{"version":"9c32412007b5662fd34a8eb04292fb5314ec370d7016d1c2fb8aa193c807fe22","impliedFormat":1},{"version":"7fd1b31fd35876b0aa650811c25ec2c97a3c6387e5473eb18004bed86cdd76b6","impliedFormat":1},{"version":"4d327f7d72ad0918275cea3eee49a6a8dc8114ae1d5b7f3f5d0774de75f7439a","impliedFormat":1},{"version":"6ebe8ebb8659aaa9d1acbf3710d7dae3e923e97610238b9511c25dc39023a166","impliedFormat":1},{"version":"e85d7f8068f6a26710bff0cc8c0fc5e47f71089c3780fbede05857331d2ddec9","impliedFormat":1},{"version":"7befaf0e76b5671be1d47b77fcc65f2b0aad91cc26529df1904f4a7c46d216e9","impliedFormat":1},{"version":"0a60a292b89ca7218b8616f78e5bbd1c96b87e048849469cccb4355e98af959a","impliedFormat":1},{"version":"0b6e25234b4eec6ed96ab138d96eb70b135690d7dd01f3dd8a8ab291c35a683a","impliedFormat":1},{"version":"9666f2f84b985b62400d2e5ab0adae9ff44de9b2a34803c2c5bd3c8325b17dc0","impliedFormat":1},{"version":"40cd35c95e9cf22cfa5bd84e96408b6fcbca55295f4ff822390abb11afbc3dca","impliedFormat":1},{"version":"b1616b8959bf557feb16369c6124a97a0e74ed6f49d1df73bb4b9ddf68acf3f3","impliedFormat":1},{"version":"5b03a034c72146b61573aab280f295b015b9168470f2df05f6080a2122f9b4df","impliedFormat":1},{"version":"40b463c6766ca1b689bfcc46d26b5e295954f32ad43e37ee6953c0a677e4ae2b","impliedFormat":1},{"version":"249b9cab7f5d628b71308c7d9bb0a808b50b091e640ba3ed6e2d0516f4a8d91d","impliedFormat":1},{"version":"80aae6afc67faa5ac0b32b5b8bc8cc9f7fa299cff15cf09cc2e11fd28c6ae29e","impliedFormat":1},{"version":"f473cd2288991ff3221165dcf73cd5d24da30391f87e85b3dd4d0450c787a391","impliedFormat":1},{"version":"499e5b055a5aba1e1998f7311a6c441a369831c70905cc565ceac93c28083d53","impliedFormat":1},{"version":"8aee8b6d4f9f62cf3776cda1305fb18763e2aade7e13cea5bbe699112df85214","impliedFormat":1},{"version":"c63b9ada8c72f95aac5db92aea07e5e87ec810353cdf63b2d78f49a58662cf6c","impliedFormat":1},{"version":"1cc2a09e1a61a5222d4174ab358a9f9de5e906afe79dbf7363d871a7edda3955","impliedFormat":1},{"version":"5d0375ca7310efb77e3ef18d068d53784faf62705e0ad04569597ae0e755c401","impliedFormat":1},{"version":"59af37caec41ecf7b2e76059c9672a49e682c1a2aa6f9d7dc78878f53aa284d6","impliedFormat":1},{"version":"addf417b9eb3f938fddf8d81e96393a165e4be0d4a8b6402292f9c634b1cb00d","impliedFormat":1},{"version":"b64d4d1c5f877f9c666e98e833f0205edb9384acc46e98a1fef344f64d6aba44","impliedFormat":1},{"version":"adf27937dba6af9f08a68c5b1d3fce0ca7d4b960c57e6d6c844e7d1a8e53adae","impliedFormat":1},{"version":"12950411eeab8563b349cb7959543d92d8d02c289ed893d78499a19becb5a8cc","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"c9381908473a1c92cb8c516b184e75f4d226dad95c3a85a5af35f670064d9a2f","impliedFormat":1},{"version":"c3f5289820990ab66b70c7fb5b63cb674001009ff84b13de40619619a9c8175f","affectsGlobalScope":true,"impliedFormat":1},{"version":"b3275d55fac10b799c9546804126239baf020d220136163f763b55a74e50e750","affectsGlobalScope":true,"impliedFormat":1},{"version":"fa68a0a3b7cb32c00e39ee3cd31f8f15b80cac97dce51b6ee7fc14a1e8deb30b","affectsGlobalScope":true,"impliedFormat":1},{"version":"1cf059eaf468efcc649f8cf6075d3cb98e9a35a0fe9c44419ec3d2f5428d7123","affectsGlobalScope":true,"impliedFormat":1},{"version":"6c36e755bced82df7fb6ce8169265d0a7bb046ab4e2cb6d0da0cb72b22033e89","affectsGlobalScope":true,"impliedFormat":1},{"version":"e7721c4f69f93c91360c26a0a84ee885997d748237ef78ef665b153e622b36c1","affectsGlobalScope":true,"impliedFormat":1},{"version":"7a93de4ff8a63bafe62ba86b89af1df0ccb5e40bb85b0c67d6bbcfdcf96bf3d4","affectsGlobalScope":true,"impliedFormat":1},{"version":"90e85f9bc549dfe2b5749b45fe734144e96cd5d04b38eae244028794e142a77e","affectsGlobalScope":true,"impliedFormat":1},{"version":"e0a5deeb610b2a50a6350bd23df6490036a1773a8a71d70f2f9549ab009e67ee","affectsGlobalScope":true,"impliedFormat":1},{"version":"435b3711465425770ed2ee2f1cf00ce071835265e0851a7dc4600ab4b007550e","impliedFormat":1},{"version":"7e49f52a159435fc8df4de9dc377ef5860732ca2dc9efec1640531d3cf5da7a3","impliedFormat":1},{"version":"dd4bde4bdc2e5394aed6855e98cf135dfdf5dd6468cad842e03116d31bbcc9bc","impliedFormat":1},{"version":"4d4e879009a84a47c05350b8dca823036ba3a29a3038efed1be76c9f81e45edf","affectsGlobalScope":true,"impliedFormat":1},{"version":"237ba5ac2a95702a114a309e39c53a5bddff5f6333b325db9764df9b34f3502b","impliedFormat":1},{"version":"9ba13b47cb450a438e3076c4a3f6afb9dc85e17eae50f26d4b2d72c0688c9251","impliedFormat":1},{"version":"b64cd4401633ea4ecadfd700ddc8323a13b63b106ac7127c1d2726f32424622c","impliedFormat":1},{"version":"37c6e5fe5715814412b43cc9b50b24c67a63c4e04e753e0d1305970d65417a60","impliedFormat":1},{"version":"1d024184fb57c58c5c91823f9d10b4915a4867b7934e89115fd0d861a9df27c8","impliedFormat":1},{"version":"ee0e4946247f842c6dd483cbb60a5e6b484fee07996e3a7bc7343dfb68a04c5d","impliedFormat":1},{"version":"ef051f42b7e0ef5ca04552f54c4552eac84099d64b6c5ad0ef4033574b6035b8","impliedFormat":1},{"version":"853a43154f1d01b0173d9cbd74063507ece57170bad7a3b68f3fa1229ad0a92f","impliedFormat":1},{"version":"56231e3c39a031bfb0afb797690b20ed4537670c93c0318b72d5180833d98b72","impliedFormat":1},{"version":"5cc7c39031bfd8b00ad58f32143d59eb6ffc24f5d41a20931269011dccd36c5e","impliedFormat":1},{"version":"b0b69c61b0f0ec8ca15db4c8c41f6e77f4cacb784d42bca948f42dea33e8757e","affectsGlobalScope":true,"impliedFormat":1},{"version":"f96a48183254c00d24575401f1a761b4ce4927d927407e7862a83e06ce5d6964","impliedFormat":1},{"version":"cc25940cfb27aa538e60d465f98bb5068d4d7d33131861ace43f04fe6947d68f","impliedFormat":1},{"version":"f83fb2b1338afbb3f9d733c7d6e8b135826c41b0518867df0c0ace18ae1aa270","impliedFormat":1},{"version":"01ff95aa1443e3f7248974e5a771f513cb2ac158c8898f470a1792f817bee497","impliedFormat":1},{"version":"757227c8b345c57d76f7f0e3bbad7a91ffca23f1b2547cbed9e10025816c9cb7","impliedFormat":1},{"version":"42a05d8f239f74587d4926aba8cc54792eed8e8a442c7adc9b38b516642aadfe","impliedFormat":1},{"version":"5d21b58d60383cc6ab9ad3d3e265d7d25af24a2c9b506247e0e50b0a884920be","impliedFormat":1},{"version":"101f482fd48cb4c7c0468dcc6d62c843d842977aea6235644b1edd05e81fbf22","impliedFormat":1},{"version":"ae6757460f37078884b1571a3de3ebaf724d827d7e1d53626c02b3c2a408ac63","affectsGlobalScope":true,"impliedFormat":1},{"version":"9451a46a89ed209e2e08329e6cac59f89356eae79a7230f916d8cc38725407c7","impliedFormat":1},{"version":"3ef397f12387eff17f550bc484ea7c27d21d43816bbe609d495107f44b97e933","impliedFormat":1},{"version":"1023282e2ba810bc07905d3668349fbd37a26411f0c8f94a70ef3c05fe523fcf","impliedFormat":1},{"version":"b214ebcf76c51b115453f69729ee8aa7b7f8eccdae2a922b568a45c2d7ff52f7","impliedFormat":1},{"version":"429c9cdfa7d126255779efd7e6d9057ced2d69c81859bbab32073bad52e9ba76","impliedFormat":1},{"version":"e236b5eba291f51bdf32c231673e6cab81b5410850e61f51a7a524dddadc0f95","impliedFormat":1},{"version":"f7ba0e839daa0702e3ff1a1a871c0d8ea2d586ce684dd8a72c786c36a680b1d9","affectsGlobalScope":true,"impliedFormat":1},{"version":"7f2c62938251b45715fd2a9887060ec4fbc8724727029d1cbce373747252bdd7","impliedFormat":1},{"version":"e3ace08b6bbd84655d41e244677b474fd995923ffef7149ddb68af8848b60b05","impliedFormat":1},{"version":"132580b0e86c48fab152bab850fc57a4b74fe915c8958d2ccb052b809a44b61c","impliedFormat":1},{"version":"af4ab0aa8908fc9a655bb833d3bc28e117c4f0e1038c5a891546158beb25accb","impliedFormat":1},{"version":"69c9a5a9392e8564bd81116e1ed93b13205201fb44cb35a7fde8c9f9e21c4b23","impliedFormat":1},{"version":"5f8fc37f8434691ffac1bfd8fc2634647da2c0e84253ab5d2dd19a7718915b35","impliedFormat":1},{"version":"5981c2340fd8b076cae8efbae818d42c11ffc615994cb060b1cd390795f1be2b","impliedFormat":1},{"version":"f64deb26664af64dc274637343bde8d82f930c77af05a412c7d310b77207a448","impliedFormat":1},{"version":"ed4f674fc8c0c993cc7e145069ac44129e03519b910c62be206a0cc777bdc60b","affectsGlobalScope":true,"impliedFormat":1},{"version":"0250da3eb85c99624f974e77ef355cdf86f43980251bc371475c2b397ba55bcd","impliedFormat":1},{"version":"f1c93e046fb3d9b7f8249629f4b63dc068dd839b824dd0aa39a5e68476dc9420","impliedFormat":1},{"version":"3d3a5f27ffbc06c885dd4d5f9ee20de61faf877fe2c3a7051c4825903d9a7fdc","impliedFormat":1},{"version":"12806f9f085598ef930edaf2467a5fa1789a878fba077cd27e85dc5851e11834","impliedFormat":1},{"version":"bce309f4d9b67c18d4eeff5bba6cf3e67b2b0aead9f03f75d6060c553974d7ba","impliedFormat":1},{"version":"a43fe41c33d0a192a0ecaf9b92e87bef3709c9972e6d53c42c49251ccb962d69","impliedFormat":1},{"version":"a177959203c017fad3ecc4f3d96c8757a840957a4959a3ae00dab9d35961ca6c","affectsGlobalScope":true,"impliedFormat":1},{"version":"6fc727ccf9b36e257ff982ea0badeffbfc2c151802f741bddff00c6af3b784cf","impliedFormat":1},{"version":"2a00d005e3af99cd1cfa75220e60c61b04bfb6be7ca7453bfe2ef6cca37cc03c","impliedFormat":1},{"version":"4844a4c9b4b1e812b257676ed8a80b3f3be0e29bf05e742cc2ea9c3c6865e6c6","impliedFormat":1},{"version":"064878a60367e0407c42fb7ba02a2ea4d83257357dc20088e549bd4d89433e9c","impliedFormat":1},{"version":"14d4bd22d1b05824971b98f7e91b2484c90f1a684805c330476641417c3d9735","impliedFormat":1},{"version":"c3877fef8a43cd434f9728f25a97575b0eb73d92f38b5c87c840daccc3e21d97","impliedFormat":1},{"version":"b484ec11ba00e3a2235562a41898d55372ccabe607986c6fa4f4aba72093749f","impliedFormat":1},{"version":"1dbd83860e7634f9c236647f45dbc5d3c4f9eba8827d87209d6e9826fdf4dbd5","impliedFormat":1},{"version":"41ef7992c555671a8fe54db302788adefa191ded810a50329b79d20a6772d14c","impliedFormat":1},{"version":"041a7781b9127ab568d2cdcce62c58fdea7c7407f40b8c50045d7866a2727130","impliedFormat":1},{"version":"b37f83e7deea729aa9ce5593f78905afb45b7532fdff63041d374f60059e7852","impliedFormat":1},{"version":"e1cb68f3ef3a8dd7b2a9dfb3de482ed6c0f1586ba0db4e7d73c1d2147b6ffc51","impliedFormat":1},{"version":"55cdbeebe76a1fa18bbd7e7bf73350a2173926bd3085bb050cf5a5397025ee4e","impliedFormat":1},{"version":"211440ce81e87b3491cdf07155881344b0a61566df6e749acff0be7e8b9d1a07","impliedFormat":1},{"version":"5d9a0b6e6be8dbb259f64037bce02f34692e8c1519f5cd5d467d7fa4490dced4","impliedFormat":1},{"version":"880da0e0f3ebca42f9bd1bc2d3e5e7df33f2619d85f18ee0ed4bd16d1800bc32","impliedFormat":1},{"version":"60b1e9022076b58e20618f887baea8ad0607ea1aa441c73189978f2551af0088","impliedFormat":1},{"version":"58f0345afecbec7e897f9de3460a2b16a96be34277406d919197363b3820e6aa","impliedFormat":1},{"version":"e937dde562515f320e45090a90160142eafa7469ff853d97f1b6ed11b69a7de0","impliedFormat":1},{"version":"0abf70d5b3769f42362c6cd7e2762669b5097f94e306ac5b7ce2567c7260fc0a","impliedFormat":1},{"version":"341d8d3085cd56ede0632fed3e854c68193a18ce2dc2f476d5348f4a1185751b","impliedFormat":99},{"version":"cc2d9ba9d5434882cfb9bc2954fe433b5538fa78a40be504c9833a45d1a732ad","impliedFormat":99},{"version":"f496804f1238bfdf19b67ac9ce7825d50920a958994fc29a80697b8a63eeed6d","impliedFormat":99},{"version":"e8ff455f7ee74b0a6ea20a465bd95a1ebf41538e06f7874c7934dc1ae42bd10a","impliedFormat":99},{"version":"4e3592aed54bd51d840e6d078794b45a8388d0accf38efa3267a16742ce88041","impliedFormat":99},{"version":"b01fe2cdf67370564bbe114a897d0e470421281ac78641013cc210559381c65f","impliedFormat":99},{"version":"988be2b47c162ddfc4ac289de0bc50b52fd425d4408cb4bc40fcc9b81f4957c6","impliedFormat":99},{"version":"85cc8408b227080f73a2571c87c66ad3aa624753d599f08ba9906f607c744eb9","impliedFormat":99},{"version":"8da95d257be3f2d83c21c555dedda9c96869e5f855652523cf52dc98ca8c57de","impliedFormat":99},{"version":"aa9494cb36743567c0f6ce385ce869358b59193c9b61612e0d70e4de500424c3","impliedFormat":99},{"version":"904964129f1ef4797282d4ea4411eaf26d4b22bb481b8b8ab3e920d4cfc79ecf","impliedFormat":99},{"version":"ce6ada7f4eb4cda3ccfe28a0201608828fc6ee2d3204101976831100d9550d47","impliedFormat":99},{"version":"5a7fe6ef136e88ee70d3cd0b1aa0d6875178b2682542ca340875a2711c81d779","impliedFormat":99},{"version":"dc30228a4d8faa78799c535a32dcb2a456bccd67a152b7fae0797198476b091f","impliedFormat":99},{"version":"9a1fcfc15915ffb2b16416763898a07aca46ef4ea620c5d5f26793e76f714485","impliedFormat":99},{"version":"ab37b1199441c7ecb602defe46f72099d3d4555f7911bd865f51657f419779ab","impliedFormat":99},{"version":"e1d6ddd0c300ba35bd166063d5b2456e9d84fe96bdb7c16ad9379e50dca5dcda","impliedFormat":99},{"version":"29bb68832550b7f95a835e0ee0fa20f51dd7bdbc55363afe5f3eae20c85a800b","impliedFormat":99},{"version":"3c656ad2c834314314439f331445e5ba5d178fb67776e69c7b0c0746884450bc","impliedFormat":99},{"version":"8804b8ad255545dadc2e4d4039d45b3c0bfb5c1a103cf68c7a8712877ce7bae0","impliedFormat":99},{"version":"f6468b2c5528cb0e63ba5c2072a66711d7d8b53d0d79ba51633fdd7caaec8366","impliedFormat":99},{"version":"362276986f99951a4f4e99530a5a1804c290b0ea5efb380070ffdad36ad8f65f","impliedFormat":99},{"version":"2740df5531349a74fddd680c4c3284d5a000a546b3db64b9c8ace6254b7d2b0d","impliedFormat":99},{"version":"39b127a8c3eba5e0d7494503f950d94cdba5f4c86c733a4a7e30eee7a868c3df","impliedFormat":99},{"version":"cffa607eb95c25b119f9aad3c2e4db80384267cd35d398b537a90aee5c5dfa5e","impliedFormat":99},{"version":"241a27aadc64b2170e27e4e5b07c5dff88e0f50435a25406e3a3f6bf03859359","impliedFormat":99},{"version":"2b47be196687414efadd66f4617e4c870bef6af75eacf83ab2d9402b245de60f","impliedFormat":99},{"version":"e4865d1a2d6791783608e3072db37e44905d4497f9e6907072038d2ad0daef35","impliedFormat":99},{"version":"bd8764237221694c71fe2350b1053c1e1dae4cf403556e82efc980927563d7ba","impliedFormat":99},{"version":"3671dbf192300a928d9672afedc5ebb6b881c617321c26f694e7a2d0e4864628","impliedFormat":99},{"version":"66e602dfaef09b10c502b0d477fea6ca20f7c1025696b436feace60d2f80ca5f","impliedFormat":99},{"version":"c6127cac63f88b2d19e0d9c62961ba5c811ce97be73fbeed65086d278ee1f1d7","impliedFormat":99},{"version":"736a3485c9e96b87b11fe6e55b5455e9f85ef59edc09bff1eb2f114ef661d1e5","impliedFormat":99},{"version":"6bbb2e249520ec6ddd60e970972603d415f0a0ef44c7329e4b8f56dc2442da09","impliedFormat":99},{"version":"8e1b740bd40321e66f88636d90e6db2254707adcde44e8daf5636780cc4a7318","impliedFormat":99},{"version":"7e504d14abfc5412598938349d4f433db8924e48b595bddc9b8d83cbaa7d08dd","impliedFormat":1},{"version":"c69ffa60fb8e18bd304d99e06e37e398f849d82783f2a1a62a75e47478beeff7","impliedFormat":1},{"version":"fbca5ffaebf282ec3cdac47b0d1d4a138a8b0bb32105251a38acb235087d3318","impliedFormat":1},{"version":"bcf09abd7a06b85afc0ed0e41178e8b6c7a11de6bf435cf35b88e8997f411d03","impliedFormat":1},{"version":"5a26d250ae0e0bd3bf3a12b50f721143f90eb5571594c44679a79f96ba716081","impliedFormat":1},{"version":"b732263bd04902a37143091ea8ae7dfd4dbd70f99b61ff9f30c193970da1b2a5","impliedFormat":1},{"version":"d2c8193e464760807fbd156aee60b48b3f766caef970dc31b00029adb9ad90aa","impliedFormat":1},{"version":"556ccd493ec36c7d7cb130d51be66e147b91cc1415be383d71da0f1e49f742a9","impliedFormat":1},{"version":"b6d03c9cfe2cf0ba4c673c209fcd7c46c815b2619fd2aad59fc4229aaef2ed43","impliedFormat":1},{"version":"95aba78013d782537cc5e23868e736bec5d377b918990e28ed56110e3ae8b958","impliedFormat":1},{"version":"670a76db379b27c8ff42f1ba927828a22862e2ab0b0908e38b671f0e912cc5ed","impliedFormat":1},{"version":"13b77ab19ef7aadd86a1e54f2f08ea23a6d74e102909e3c00d31f231ed040f62","impliedFormat":1},{"version":"069bebfee29864e3955378107e243508b163e77ab10de6a5ee03ae06939f0bb9","impliedFormat":1},{"version":"104c67f0da1bdf0d94865419247e20eded83ce7f9911a1aa75fc675c077ca66e","impliedFormat":1},{"version":"cc0d0b339f31ce0ab3b7a5b714d8e578ce698f1e13d7f8c60bfb766baeb1d35c","impliedFormat":1},{"version":"427fe2004642504828c1476d0af4270e6ad4db6de78c0b5da3e4c5ca95052a99","impliedFormat":1},{"version":"2eeffcee5c1661ddca53353929558037b8cf305ffb86a803512982f99bcab50d","impliedFormat":99},{"version":"9afb4cb864d297e4092a79ee2871b5d3143ea14153f62ef0bb04ede25f432030","affectsGlobalScope":true,"impliedFormat":99},{"version":"fb893a0dfc3c9fb0f9ca93d0648694dd95f33cbad2c0f2c629f842981dfd4e2e","impliedFormat":1},{"version":"3eb11dbf3489064a47a2e1cf9d261b1f100ef0b3b50ffca6c44dd99d6dd81ac1","impliedFormat":1},{"version":"151ff381ef9ff8da2da9b9663ebf657eac35c4c9a19183420c05728f31a6761d","impliedFormat":1},{"version":"5d08a179b846f5ee674624b349ebebe2121c455e3a265dc93da4e8d9e89722b4","impliedFormat":1},{"version":"d34aa8df2d0b18fb56b1d772ff9b3c7aea7256cf0d692f969be6e1d27b74d660","impliedFormat":1},{"version":"baac9896d29bcc55391d769e408ff400d61273d832dd500f21de766205255acb","impliedFormat":1},{"version":"2f5747b1508ccf83fad0c251ba1e5da2f5a30b78b09ffa1cfaf633045160afed","impliedFormat":1},{"version":"90407bbaa24977b8a6a90861148ac98d8652afe69992a90d823f29e9807fe2d7","affectsGlobalScope":true,"impliedFormat":1},{"version":"b71c603a539078a5e3a039b20f2b0a0d1708967530cf97dec8850a9ca45baa2b","impliedFormat":1},{"version":"0ae65c3e977c81f6e46ae9028ae97fc75c78c70f4d6d5f961a8af60301145af6","impliedFormat":99},{"version":"b1a6683b821c624d63d887dbdd9f34aebb9de586acf87bbf50cb16f5ec2c36c7","impliedFormat":99},{"version":"cb90077223cc1365fa21ef0911a1f9b8f2f878943523d97350dc557973ca3823","impliedFormat":1},{"version":"18f1541b81b80d806120a3489af683edfb811deb91aeca19735d9bb2613e6311","impliedFormat":1},{"version":"232f118ae64ab84dcd26ddb60eaed5a6e44302d36249abf05e9e3fc2cbb701a2","impliedFormat":1},{"version":"3efb94838c3bf93ac9bfb2f1ef645339221d15533efc17c9271142c9a656b08c","impliedFormat":1},{"version":"89121c1bf2990f5219bfd802a3e7fc557de447c62058d6af68d6b6348d64499a","impliedFormat":1},{"version":"79b4369233a12c6fa4a07301ecb7085802c98f3a77cf9ab97eee27e1656f82e6","impliedFormat":1},{"version":"84a805c22a49922085dc337ca71ac0b85aad6d4dba6b01cee5bd5776ff54df39","impliedFormat":1},{"version":"380b919bfa0516118edaf25b99e45f855e7bc3fd75ce4163a1cfe4a666388804","impliedFormat":1},{"version":"40de86ced5175a6ffe84a52abe6ac59ac0efbc604a5975a8c6476c3ddc682ff1","impliedFormat":1},{"version":"fcf79300e5257a23ed3bacaa6861d7c645139c6f7ece134d15e6669447e5e6db","impliedFormat":1},{"version":"187119ff4f9553676a884e296089e131e8cc01691c546273b1d0089c3533ce42","impliedFormat":1},{"version":"aa2c18a1b5a086bbcaae10a4efba409cc95ba7287d8cf8f2591b53704fea3dea","impliedFormat":1},{"version":"5a0b15210129310cee9fa6af9200714bb4b12af4a04d890e15f34dbea1cf1852","impliedFormat":1},{"version":"0244119dbcbcf34faf3ffdae72dab1e9bc2bc9efc3c477b2240ffa94af3bca56","impliedFormat":1},{"version":"00baffbe8a2f2e4875367479489b5d43b5fc1429ecb4a4cc98cfc3009095f52a","impliedFormat":1},{"version":"a873c50d3e47c21aa09fbe1e2023d9a44efb07cc0cb8c72f418bf301b0771fd3","impliedFormat":1},{"version":"7c14ccd2eaa82619fffc1bfa877eb68a012e9fb723d07ee98db451fadb618906","impliedFormat":1},{"version":"49c36529ee09ea9ce19525af5bb84985ea8e782cb7ee8c493d9e36d027a3d019","impliedFormat":1},{"version":"df996e25faa505f85aeb294d15ebe61b399cf1d1e49959cdfaf2cc0815c203f9","impliedFormat":1},{"version":"4f6a12044ee6f458db11964153830abbc499e73d065c51c329ec97407f4b13dd","impliedFormat":1},{"version":"7605dd065ecbd2d8ff5f80a0b3813fc163ed593f4f24f3b6f6a7e98ac0e2157f","impliedFormat":1},{"version":"d4a22007b481fe2a2e6bfd3a42c00cd62d41edb36d30fc4697df2692e9891fc8","impliedFormat":1},{"version":"d3f2d715f57df3f04bf7b16dde01dec10366f64fce44503c92b8f78f614c1769","impliedFormat":1},{"version":"22293bd6fa12747929f8dfca3ec1684a3fe08638aa18023dd286ab337e88a592","impliedFormat":1},{"version":"7e29f41b158de217f94cb9676bf9cbd0cd9b5a46e1985141ed36e075c52bf6ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac51dd7d31333793807a6abaa5ae168512b6131bd41d9c5b98477fc3b7800f9f","impliedFormat":1},{"version":"dc0a7f107690ee5cd8afc8dbf05c4df78085471ce16bdd9881642ec738bc81fe","impliedFormat":1},{"version":"be1cc4d94ea60cbe567bc29ed479d42587bf1e6cba490f123d329976b0fe4ee5","impliedFormat":1},{"version":"1ba59c8bbeed2cb75b239bb12041582fa3e8ef32f8d0bd0ec802e38442d3f317","impliedFormat":1}],"root":[66,95,137,138,[140,142],[146,155],[264,284],[410,413],449,[452,455]],"options":{"composite":true,"declaration":true,"declarationMap":true,"esModuleInterop":true,"module":199,"outDir":"./","rootDir":"../src","skipLibCheck":true,"sourceMap":true,"strict":true,"target":9,"tsBuildInfoFile":"./.tsbuildinfo"},"referencedMap":[[270,1],[271,2],[275,3],[276,3],[279,4],[277,3],[273,5],[274,6],[272,7],[278,8],[154,9],[146,10],[138,11],[95,12],[150,13],[137,14],[153,15],[152,16],[142,17],[148,17],[141,18],[151,19],[140,20],[149,17],[66,7],[147,17],[284,21],[281,22],[282,23],[283,23],[280,7],[155,7],[411,24],[412,25],[413,26],[449,27],[455,28],[452,29],[453,30],[410,31],[454,24],[269,32],[268,33],[265,34],[267,35],[266,36],[264,37],[458,38],[456,7],[431,39],[438,39],[430,40],[428,41],[415,7],[414,7],[426,42],[427,41],[429,7],[419,41],[422,41],[425,43],[423,7],[420,44],[424,7],[421,7],[437,45],[441,39],[432,7],[433,7],[434,7],[435,7],[436,46],[439,39],[440,39],[443,39],[446,47],[442,39],[444,39],[445,39],[418,48],[416,49],[417,7],[252,50],[260,51],[257,52],[251,53],[248,7],[258,54],[261,55],[262,56],[236,57],[254,58],[253,53],[250,53],[259,7],[249,59],[256,60],[461,61],[457,38],[459,62],[460,38],[463,63],[466,64],[462,65],[468,66],[464,7],[470,67],[469,7],[474,68],[480,69],[481,7],[409,70],[483,71],[475,7],[484,7],[407,72],[408,7],[498,73],[486,74],[487,75],[485,76],[488,77],[489,78],[490,79],[491,80],[492,81],[493,82],[494,83],[495,84],[496,85],[497,86],[499,71],[500,7],[451,7],[467,7],[347,87],[348,87],[349,88],[287,89],[350,90],[351,91],[352,92],[285,7],[353,93],[354,94],[355,95],[356,96],[357,97],[358,98],[359,98],[360,99],[361,100],[362,101],[363,102],[288,7],[286,7],[364,103],[365,104],[366,105],[406,106],[367,107],[368,108],[369,107],[370,109],[371,110],[372,111],[373,37],[374,37],[375,37],[376,112],[377,113],[378,114],[379,115],[380,116],[381,117],[382,117],[383,118],[384,7],[385,7],[386,119],[387,120],[388,119],[389,121],[390,122],[391,123],[392,124],[393,125],[394,126],[395,127],[396,128],[397,129],[398,130],[399,131],[400,132],[401,133],[402,134],[403,135],[289,107],[290,7],[291,136],[292,137],[293,7],[294,138],[295,7],[338,139],[339,140],[340,141],[341,141],[342,142],[343,7],[344,90],[345,143],[346,140],[404,144],[405,145],[501,7],[472,7],[473,7],[505,146],[502,7],[504,147],[471,148],[479,149],[478,150],[482,7],[506,151],[465,7],[145,152],[143,7],[144,153],[447,7],[503,7],[139,7],[450,7],[255,7],[477,154],[476,7],[448,155],[76,7],[87,156],[70,157],[88,156],[89,158],[90,158],[75,7],[77,157],[78,157],[79,159],[80,160],[81,161],[82,161],[67,7],[83,161],[73,162],[84,157],[68,157],[85,161],[71,158],[72,163],[69,160],[91,164],[93,165],[74,166],[92,167],[86,168],[94,7],[63,7],[64,7],[12,7],[10,7],[11,7],[16,7],[15,7],[2,7],[17,7],[18,7],[19,7],[20,7],[21,7],[22,7],[23,7],[24,7],[3,7],[25,7],[26,7],[4,7],[27,7],[31,7],[28,7],[29,7],[30,7],[32,7],[33,7],[34,7],[5,7],[35,7],[36,7],[37,7],[38,7],[6,7],[42,7],[39,7],[40,7],[41,7],[43,7],[7,7],[44,7],[49,7],[50,7],[45,7],[46,7],[47,7],[48,7],[8,7],[54,7],[51,7],[52,7],[53,7],[55,7],[9,7],[56,7],[65,7],[57,7],[58,7],[60,7],[59,7],[1,7],[61,7],[62,7],[14,7],[13,7],[314,169],[326,170],[311,171],[327,49],[336,172],[302,173],[303,174],[301,175],[335,176],[330,177],[334,178],[305,179],[323,180],[304,181],[333,182],[299,183],[300,177],[306,184],[307,7],[313,185],[310,184],[297,186],[337,187],[328,188],[317,189],[316,184],[318,190],[321,191],[315,192],[319,193],[331,176],[308,194],[309,195],[322,196],[298,49],[325,197],[324,184],[312,195],[320,198],[329,7],[296,7],[332,199],[129,200],[98,7],[116,201],[128,202],[127,203],[97,204],[136,205],[99,7],[117,206],[126,207],[103,208],[114,209],[121,210],[118,211],[101,212],[100,213],[113,214],[104,215],[120,216],[122,217],[123,218],[124,218],[125,219],[130,7],[96,7],[131,218],[132,220],[106,221],[107,221],[108,221],[115,222],[119,223],[105,224],[133,225],[134,226],[109,7],[102,227],[110,228],[111,229],[112,230],[135,209],[263,231],[160,232],[167,233],[162,7],[163,7],[161,234],[164,235],[156,7],[157,7],[168,236],[159,237],[165,7],[166,238],[158,239],[240,240],[244,241],[241,241],[237,240],[245,242],[242,243],[246,231],[243,241],[238,244],[239,245],[232,246],[176,247],[178,248],[231,7],[177,249],[235,250],[234,251],[233,252],[169,7],[179,247],[180,7],[171,253],[175,254],[170,7],[172,255],[173,256],[174,7],[247,257],[181,258],[182,258],[183,258],[184,258],[185,258],[186,258],[187,258],[188,258],[189,258],[190,258],[191,258],[192,258],[193,258],[195,258],[194,258],[196,258],[197,258],[198,258],[199,258],[230,259],[200,258],[201,258],[202,258],[203,258],[204,258],[205,258],[206,258],[207,258],[208,258],[209,258],[210,258],[211,258],[212,258],[214,258],[213,258],[215,258],[216,258],[217,258],[218,258],[219,258],[220,258],[221,258],[222,258],[223,258],[224,258],[225,258],[226,258],[229,258],[227,258],[228,258]],"semanticDiagnosticsPerFile":[[148,[{"start":3960,"length":4,"code":2322,"category":1,"messageText":{"messageText":"Type 'string | null' is not assignable to type 'string'.","category":1,"code":2322,"next":[{"messageText":"Type 'null' is not assignable to type 'string'.","category":1,"code":2322}]},"relatedInformation":[{"start":951,"length":4,"messageText":"The expected type comes from property 'slug' which is declared here on type 'PhaseAddResult'","category":3,"code":6500}]},{"start":6834,"length":4,"code":2322,"category":1,"messageText":{"messageText":"Type 'string | null' is not assignable to type 'string'.","category":1,"code":2322,"next":[{"messageText":"Type 'null' is not assignable to type 'string'.","category":1,"code":2322}]},"relatedInformation":[{"start":1106,"length":4,"messageText":"The expected type comes from property 'slug' which is declared here on type 'PhaseInsertResult'","category":3,"code":6500}]}]],[150,[{"start":3577,"length":11,"messageText":"The 'import.meta' meta-property is not allowed in files which will build into CommonJS output.","category":1,"code":1470},{"start":4098,"length":11,"messageText":"The 'import.meta' meta-property is not allowed in files which will build into CommonJS output.","category":1,"code":1470}]],[275,[{"start":1586,"length":32,"messageText":"Expected 2 arguments, but got 1.","category":1,"code":2554,"relatedInformation":[{"file":"../src/adapters/transforms/frontmatter.ts","start":5769,"length":17,"messageText":"An argument for 'skillName' was not provided.","category":3,"code":6210}]}]]],"emitSignatures":[[66,"695f771bdbb95e444d15a3fcc4d53d781a018782f4bc93005c6d6705c5b80662"],[95,"4645a17d97039b8d90b355c07ceb0978a9722487ba18e98e05149c9e9e8c72f9"],[137,"01c35ad31e1c9cfa7be5035ffe1e933ae29f1b25ed5ad66ff6f1e69ea12ab05c"],[138,"a0e24e6359f6cc8e8c216577a4878099a12d7d12b6dc97ea06f252363ff5d3c7"],[140,"772dd5375ce7789e5f61409cf6a9995cbb8ab67abc4b9aa1dc37ec7d6cff2a0d"],[141,"629f3182e007cb9332f9ebe9d28a8722d37ed0666f484968bd7bd943272c533d"],[142,"8c30997a3e351626253f83d5b38b00ebc31f6b92353534eccfb6eafca598f4a3"],[146,"726cef994f7f6f938cf9538a98404bb25981890921e94a4e27f3ea7fc678be4e"],[147,"ce26c6769640fcce38b2f32826d2fd384db22a5f2fb19be821911bbea5b23667"],[148,"d95af2b0bfce0a4c6c42c6d57112e8ac88fc639387736cec45b89a157d204a5e"],[149,"9c0b78c73b5886813ee425cfb5cbcbf8599ab3b7d9c9974847b98f7651dad407"],[150,"f26e26b0e167e206e17a5ca4bfaf072990c9cab85c3cc048517abbe07bdf7449"],[151,"f7b2a3c7884220ec2ef42f4ee49260a1a36b2b20a46b2036d6cb7bf706b864fb"],[152,"55e49a9e8a7d932e9c981b276f7256e15e03e6a24978396e3aba8165f9b0d380"],[153,"8dee242c4c644ab646e5b678a2002837c51fb3dbea15c3b9832d084802d3f539"],[154,"69a70b617b285b6ffa9e27dfec0255d68f6ce1c9a827096b98ef8aefc193425d"],[155,"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"],[264,"d7de918f183c6d599d4167af2ffd90d39e43fc89fd1a162ec7a1f624642f999f"],[265,"9f7742dfc5bae39f6997725a012976a98b86aa76fa2c7398ad2f4a6545b52a09"],[266,"6268088fffe554f964e0368bfd30ad99a5857f78e2bc8408798fa88dbd31a58b"],[267,"a020fd84aeb8b6bcb5a3f84f1b141d0378bc9c842d8a49f49da44368e3e66c09"],[268,"7bdc0cd4a24a5590b5cadc6b6f651ef6988677982d2e21008a416059c5c2a658"],[269,"196eb69a21b721c9dd24cde8aee79ce4608e49b9a1aea3af6f569f20740cfafe"],[270,"8468fa2bd38475f1686756722bc5876d16bc0ce476cbbbac03b47aed937bc3ad"],[271,"ac5ed5b28cd813465d177ad9cb79b3c9f4b5f656df88d20e4c8b186403b6f699"],[272,"7808198f2bc46a5a95e04a03dd4353f027c245e8703bfe4897d86f8bf2a6379f"],[273,"b6160a71f8ef152f08bf59c126ecf60ec52a1c55ee259d1b93de46e85230ebbd"],[274,"7ca29a4c9822b79c136ebe44a9ccdb95606e1dc91e212b5f4e7355dfc8388352"],[275,"edf8f7257f0936b58ecd85f1b7f5ccc55d88c8bb54899d2a1bb3d027ba3d64aa"],[276,"a0b0e6c71f855e62f52bf4e9932d055c21360060b9c9fdb7bcf7f83956a9d7bc"],[277,"63c790fc5672f599ffdec40544b699295e1bd434c783935c3baee3222995c54f"],[278,"2afd158192bf3435d3418e47ed3e1bb427558bf7e13b75b98c0a2d0c7ea6c14e"],[279,"f9653d8bb15380b429a8376126b2bd3d37b31c1fc6b409ced02540cce51c9748"],[280,"c0fdf67dc8492ed7801f8835fb330ddb884ec8410e614f2a7fa40078a256b32c"],[281,"cd11a00b75767a019f7e93f70887226c0b523d4f9906fe8df9504cdd7d4b2da8"],[282,"5c30d87f547887db1a72ed947583185fe947097c5cfe11877c49b00166536fe3"],[283,"4140fff7108c0075635b0e6697b0f5e8fd253ab5b99e3149927341d61e0c2b25"],[284,"3d4284e72d54a0e56d5338c802b02da5a4d52293dc40c416e984b980e24d42bb"],[410,"bbb488109968acbd97f0810b953cdf5965b963e1b7f9fa89861df0ec613369d0"],[411,"6dde0a68b4cdb317e8938fed6fbeb1fa533a2b8f5e9c81a52db7f2adedfcf114"],[412,"08d9b0c4f2bb0f779bc13720885f0a47e8739bc92b7df9565f6c7431f97fe45d"],[413,"437bdaaf112fad1ea8e3bd5f4e565281ba26827cc43bfede40afa5e4df0814ce"],[449,"dd98b21eff71939743d21b1c5d0a06d31d66e0c7a5e0e6948cf6f08c49d3a81b"],[452,"e7707fd82e29f493757b32844c326dd48cce71319687f9878bb3974fa1d7ab25"],[453,"b74a14f26df5c877d8eb1e0fc790a0dfbeb93b071531f4e44671333ca346400f"],[454,"5313da83b5f4569c7bd366ed5e6fc2e260b42dee0e7eb0f06ea764c989667acf"],[455,"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"]],"latestChangedDtsFile":"./install/index.d.ts","version":"5.9.3"} \ No newline at end of file diff --git a/packages/cli/dist/assets/CHANGELOG.md b/packages/cli/dist/assets/CHANGELOG.md index 73503ec..b9b276d 100644 --- a/packages/cli/dist/assets/CHANGELOG.md +++ b/packages/cli/dist/assets/CHANGELOG.md @@ -1,3 +1,20 @@ +# [3.12.0](https://github.com/maystudios/maxsimcli/compare/v3.11.0...v3.12.0) (2026-03-01) + + +### Bug Fixes + +* **core:** add rethrowCliSignals guard to catch blocks intercepting CliOutput ([1480a1d](https://github.com/maystudios/maxsimcli/commit/1480a1da0d0d38da9db729f0fa67566ff84a62de)) +* **install:** add new skills to builtInSkills cleanup list ([f51c1b4](https://github.com/maystudios/maxsimcli/commit/f51c1b44c7e77f414238974c04cc86b8fe5391b3)) +* **workflows:** replace Unix find with cross-platform alternatives and remove dashboard auto-launch ([ea8ca60](https://github.com/maystudios/maxsimcli/commit/ea8ca60ff1883a2c835d44d39844317f632d7466)) + + +### Features + +* **dashboard:** add Simple Mode panels and connection status banner ([80a6de2](https://github.com/maystudios/maxsimcli/commit/80a6de2aaff4adfa32f99237095c4501696b80a9)) +* **skills:** add code-review and simplify skills ([9d54e3a](https://github.com/maystudios/maxsimcli/commit/9d54e3aa5140a6d9b0d647eae488b7e37a919398)) +* **skills:** add using-maxsim, memory-management skills and AGENTS.md registry ([60375c9](https://github.com/maystudios/maxsimcli/commit/60375c945eeb3a4e9f05afd5a7a7623409dc313e)) +* **workflows:** add explicit Q&A routing bridge directives to high-interaction workflows ([d82e932](https://github.com/maystudios/maxsimcli/commit/d82e93289628f35250a1b00ac202b064071422f2)), closes [hi#interaction](https://github.com/hi/issues/interaction) + # [3.11.0](https://github.com/maystudios/maxsimcli/compare/v3.10.3...v3.11.0) (2026-03-01) diff --git a/packages/cli/dist/assets/dashboard/server.js b/packages/cli/dist/assets/dashboard/server.js index 9b46a65..6ba2983 100644 --- a/packages/cli/dist/assets/dashboard/server.js +++ b/packages/cli/dist/assets/dashboard/server.js @@ -59,7 +59,7 @@ let child_process = require("child_process"); let fs_promises = require("fs/promises"); let node_stream = require("node:stream"); -//#region ../../node_modules/depd/index.js +//#region ../../../../../node_modules/depd/index.js var require_depd = /* @__PURE__ */ __commonJSMin(((exports, module) => { /*! * depd @@ -370,7 +370,7 @@ var require_depd = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/bytes/index.js +//#region ../../../../../node_modules/bytes/index.js /*! * bytes * Copyright(c) 2012-2014 TJ Holowaychuk @@ -486,7 +486,7 @@ var require_bytes = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/content-type/index.js +//#region ../../../../../node_modules/content-type/index.js /*! * content-type * Copyright(c) 2015 Douglas Christopher Wilson @@ -632,7 +632,7 @@ var require_content_type = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/setprototypeof/index.js +//#region ../../../../../node_modules/setprototypeof/index.js var require_setprototypeof = /* @__PURE__ */ __commonJSMin(((exports, module) => { module.exports = Object.setPrototypeOf || ({ __proto__: [] } instanceof Array ? setProtoOf : mixinProperties); function setProtoOf(obj, proto) { @@ -646,7 +646,7 @@ var require_setprototypeof = /* @__PURE__ */ __commonJSMin(((exports, module) => })); //#endregion -//#region ../../node_modules/statuses/codes.json +//#region ../../../../../node_modules/statuses/codes.json var require_codes = /* @__PURE__ */ __commonJSMin(((exports, module) => { module.exports = { "100": "Continue", @@ -716,7 +716,7 @@ var require_codes = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/statuses/index.js +//#region ../../../../../node_modules/statuses/index.js /*! * statuses * Copyright(c) 2014 Jonathan Ong @@ -818,7 +818,7 @@ var require_statuses = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/inherits/inherits_browser.js +//#region ../../../../../node_modules/inherits/inherits_browser.js var require_inherits_browser = /* @__PURE__ */ __commonJSMin(((exports, module) => { if (typeof Object.create === "function") module.exports = function inherits(ctor, superCtor) { if (superCtor) { @@ -843,7 +843,7 @@ var require_inherits_browser = /* @__PURE__ */ __commonJSMin(((exports, module) })); //#endregion -//#region ../../node_modules/inherits/inherits.js +//#region ../../../../../node_modules/inherits/inherits.js var require_inherits = /* @__PURE__ */ __commonJSMin(((exports, module) => { try { var util$7 = require("util"); @@ -857,7 +857,7 @@ var require_inherits = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/toidentifier/index.js +//#region ../../../../../node_modules/toidentifier/index.js /*! * toidentifier * Copyright(c) 2016 Douglas Christopher Wilson @@ -884,7 +884,7 @@ var require_toidentifier = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/http-errors/index.js +//#region ../../../../../node_modules/http-errors/index.js /*! * http-errors * Copyright(c) 2014 Jonathan Ong @@ -1084,7 +1084,7 @@ var require_http_errors = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/body-parser/node_modules/ms/index.js +//#region ../../../../../node_modules/body-parser/node_modules/ms/index.js var require_ms$4 = /* @__PURE__ */ __commonJSMin(((exports, module) => { /** * Helpers. @@ -1194,7 +1194,7 @@ var require_ms$4 = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/body-parser/node_modules/debug/src/debug.js +//#region ../../../../../node_modules/body-parser/node_modules/debug/src/debug.js var require_debug$3 = /* @__PURE__ */ __commonJSMin(((exports, module) => { /** * This is the common logic for both the Node.js and web browser @@ -1335,7 +1335,7 @@ var require_debug$3 = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/body-parser/node_modules/debug/src/browser.js +//#region ../../../../../node_modules/body-parser/node_modules/debug/src/browser.js var require_browser$4 = /* @__PURE__ */ __commonJSMin(((exports, module) => { /** * This is the web browser implementation of `debug()`. @@ -1458,7 +1458,7 @@ var require_browser$4 = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/body-parser/node_modules/debug/src/node.js +//#region ../../../../../node_modules/body-parser/node_modules/debug/src/node.js var require_node$4 = /* @__PURE__ */ __commonJSMin(((exports, module) => { /** * Module dependencies. @@ -1631,7 +1631,7 @@ var require_node$4 = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/body-parser/node_modules/debug/src/index.js +//#region ../../../../../node_modules/body-parser/node_modules/debug/src/index.js var require_src$5 = /* @__PURE__ */ __commonJSMin(((exports, module) => { /** * Detect Electron renderer process, which is node, but we should @@ -1642,7 +1642,7 @@ var require_src$5 = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/destroy/index.js +//#region ../../../../../node_modules/destroy/index.js /*! * destroy * Copyright(c) 2014 Jonathan Ong @@ -1792,7 +1792,7 @@ var require_destroy = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/safer-buffer/safer.js +//#region ../../../../../node_modules/safer-buffer/safer.js var require_safer = /* @__PURE__ */ __commonJSMin(((exports, module) => { var buffer$2 = require("buffer"); var Buffer = buffer$2.Buffer; @@ -1835,7 +1835,7 @@ var require_safer = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/raw-body/node_modules/iconv-lite/lib/bom-handling.js +//#region ../../../../../node_modules/raw-body/node_modules/iconv-lite/lib/bom-handling.js var require_bom_handling$1 = /* @__PURE__ */ __commonJSMin(((exports) => { var BOMChar = ""; exports.PrependBOM = PrependBOMWrapper; @@ -1875,7 +1875,7 @@ var require_bom_handling$1 = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/raw-body/node_modules/iconv-lite/encodings/internal.js +//#region ../../../../../node_modules/raw-body/node_modules/iconv-lite/encodings/internal.js var require_internal$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => { var Buffer = require_safer().Buffer; module.exports = { @@ -2004,7 +2004,7 @@ var require_internal$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/raw-body/node_modules/iconv-lite/encodings/utf16.js +//#region ../../../../../node_modules/raw-body/node_modules/iconv-lite/encodings/utf16.js var require_utf16$1 = /* @__PURE__ */ __commonJSMin(((exports) => { var Buffer = require_safer().Buffer; exports.utf16be = Utf16BECodec; @@ -2105,7 +2105,7 @@ var require_utf16$1 = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/raw-body/node_modules/iconv-lite/encodings/utf7.js +//#region ../../../../../node_modules/raw-body/node_modules/iconv-lite/encodings/utf7.js var require_utf7$1 = /* @__PURE__ */ __commonJSMin(((exports) => { var Buffer = require_safer().Buffer; exports.utf7 = Utf7Codec; @@ -2282,7 +2282,7 @@ var require_utf7$1 = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/raw-body/node_modules/iconv-lite/encodings/sbcs-codec.js +//#region ../../../../../node_modules/raw-body/node_modules/iconv-lite/encodings/sbcs-codec.js var require_sbcs_codec$1 = /* @__PURE__ */ __commonJSMin(((exports) => { var Buffer = require_safer().Buffer; exports._sbcs = SBCSCodec; @@ -2329,7 +2329,7 @@ var require_sbcs_codec$1 = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/raw-body/node_modules/iconv-lite/encodings/sbcs-data.js +//#region ../../../../../node_modules/raw-body/node_modules/iconv-lite/encodings/sbcs-data.js var require_sbcs_data$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => { module.exports = { "10029": "maccenteuro", @@ -2474,7 +2474,7 @@ var require_sbcs_data$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/raw-body/node_modules/iconv-lite/encodings/sbcs-data-generated.js +//#region ../../../../../node_modules/raw-body/node_modules/iconv-lite/encodings/sbcs-data-generated.js var require_sbcs_data_generated$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => { module.exports = { "437": "cp437", @@ -2927,7 +2927,7 @@ var require_sbcs_data_generated$1 = /* @__PURE__ */ __commonJSMin(((exports, mod })); //#endregion -//#region ../../node_modules/raw-body/node_modules/iconv-lite/encodings/dbcs-codec.js +//#region ../../../../../node_modules/raw-body/node_modules/iconv-lite/encodings/dbcs-codec.js var require_dbcs_codec$1 = /* @__PURE__ */ __commonJSMin(((exports) => { var Buffer = require_safer().Buffer; exports._dbcs = DBCSCodec; @@ -3242,7 +3242,7 @@ var require_dbcs_codec$1 = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/raw-body/node_modules/iconv-lite/encodings/tables/shiftjis.json +//#region ../../../../../node_modules/raw-body/node_modules/iconv-lite/encodings/tables/shiftjis.json var require_shiftjis$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => { module.exports = [ [ @@ -3532,7 +3532,7 @@ var require_shiftjis$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/raw-body/node_modules/iconv-lite/encodings/tables/eucjp.json +//#region ../../../../../node_modules/raw-body/node_modules/iconv-lite/encodings/tables/eucjp.json var require_eucjp$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => { module.exports = [ [ @@ -3955,7 +3955,7 @@ var require_eucjp$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/raw-body/node_modules/iconv-lite/encodings/tables/cp936.json +//#region ../../../../../node_modules/raw-body/node_modules/iconv-lite/encodings/tables/cp936.json var require_cp936$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => { module.exports = [ [ @@ -6537,7 +6537,7 @@ var require_cp936$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/raw-body/node_modules/iconv-lite/encodings/tables/gbk-added.json +//#region ../../../../../node_modules/raw-body/node_modules/iconv-lite/encodings/tables/gbk-added.json var require_gbk_added$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => { module.exports = [ [ @@ -6764,7 +6764,7 @@ var require_gbk_added$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/raw-body/node_modules/iconv-lite/encodings/tables/gb18030-ranges.json +//#region ../../../../../node_modules/raw-body/node_modules/iconv-lite/encodings/tables/gb18030-ranges.json var require_gb18030_ranges$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => { module.exports = { "uChars": [ @@ -7189,7 +7189,7 @@ var require_gb18030_ranges$1 = /* @__PURE__ */ __commonJSMin(((exports, module) })); //#endregion -//#region ../../node_modules/raw-body/node_modules/iconv-lite/encodings/tables/cp949.json +//#region ../../../../../node_modules/raw-body/node_modules/iconv-lite/encodings/tables/cp949.json var require_cp949$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => { module.exports = [ [ @@ -9407,7 +9407,7 @@ var require_cp949$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/raw-body/node_modules/iconv-lite/encodings/tables/cp950.json +//#region ../../../../../node_modules/raw-body/node_modules/iconv-lite/encodings/tables/cp950.json var require_cp950$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => { module.exports = [ [ @@ -9632,7 +9632,7 @@ var require_cp950$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/raw-body/node_modules/iconv-lite/encodings/tables/big5-added.json +//#region ../../../../../node_modules/raw-body/node_modules/iconv-lite/encodings/tables/big5-added.json var require_big5_added$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => { module.exports = [ ["8740", "䏰䰲䘃䖦䕸𧉧䵷䖳𧲱䳢𧳅㮕䜶䝄䱇䱀𤊿𣘗𧍒𦺋𧃒䱗𪍑䝏䗚䲅𧱬䴇䪤䚡𦬣爥𥩔𡩣𣸆𣽡晍囻"], @@ -9799,7 +9799,7 @@ var require_big5_added$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/raw-body/node_modules/iconv-lite/encodings/dbcs-data.js +//#region ../../../../../node_modules/raw-body/node_modules/iconv-lite/encodings/dbcs-data.js var require_dbcs_data$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => { module.exports = { "shiftjis": { @@ -9912,7 +9912,7 @@ var require_dbcs_data$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/raw-body/node_modules/iconv-lite/encodings/index.js +//#region ../../../../../node_modules/raw-body/node_modules/iconv-lite/encodings/index.js var require_encodings$1 = /* @__PURE__ */ __commonJSMin(((exports) => { var modules = [ require_internal$1(), @@ -9931,7 +9931,7 @@ var require_encodings$1 = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/raw-body/node_modules/iconv-lite/lib/streams.js +//#region ../../../../../node_modules/raw-body/node_modules/iconv-lite/lib/streams.js var require_streams$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => { var Buffer$5 = require("buffer").Buffer, Transform$1 = require("stream").Transform; module.exports = function(iconv) { @@ -10023,7 +10023,7 @@ var require_streams$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/raw-body/node_modules/iconv-lite/lib/extend-node.js +//#region ../../../../../node_modules/raw-body/node_modules/iconv-lite/lib/extend-node.js var require_extend_node$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => { var Buffer$4 = require("buffer").Buffer; module.exports = function(iconv) { @@ -10168,7 +10168,7 @@ var require_extend_node$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => })); //#endregion -//#region ../../node_modules/raw-body/node_modules/iconv-lite/lib/index.js +//#region ../../../../../node_modules/raw-body/node_modules/iconv-lite/lib/index.js var require_lib$2 = /* @__PURE__ */ __commonJSMin(((exports, module) => { var Buffer = require_safer().Buffer; var bomHandling = require_bom_handling$1(), iconv = module.exports; @@ -10254,7 +10254,7 @@ var require_lib$2 = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/unpipe/index.js +//#region ../../../../../node_modules/unpipe/index.js /*! * unpipe * Copyright(c) 2015 Douglas Christopher Wilson @@ -10299,7 +10299,7 @@ var require_unpipe = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/raw-body/index.js +//#region ../../../../../node_modules/raw-body/index.js /*! * raw-body * Copyright(c) 2013-2014 Jonathan Ong @@ -10499,7 +10499,7 @@ var require_raw_body = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/body-parser/node_modules/iconv-lite/lib/bom-handling.js +//#region ../../../../../node_modules/body-parser/node_modules/iconv-lite/lib/bom-handling.js var require_bom_handling = /* @__PURE__ */ __commonJSMin(((exports) => { var BOMChar = ""; exports.PrependBOM = PrependBOMWrapper; @@ -10539,7 +10539,7 @@ var require_bom_handling = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/body-parser/node_modules/iconv-lite/encodings/internal.js +//#region ../../../../../node_modules/body-parser/node_modules/iconv-lite/encodings/internal.js var require_internal = /* @__PURE__ */ __commonJSMin(((exports, module) => { var Buffer = require_safer().Buffer; module.exports = { @@ -10668,7 +10668,7 @@ var require_internal = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/body-parser/node_modules/iconv-lite/encodings/utf16.js +//#region ../../../../../node_modules/body-parser/node_modules/iconv-lite/encodings/utf16.js var require_utf16 = /* @__PURE__ */ __commonJSMin(((exports) => { var Buffer = require_safer().Buffer; exports.utf16be = Utf16BECodec; @@ -10769,7 +10769,7 @@ var require_utf16 = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/body-parser/node_modules/iconv-lite/encodings/utf7.js +//#region ../../../../../node_modules/body-parser/node_modules/iconv-lite/encodings/utf7.js var require_utf7 = /* @__PURE__ */ __commonJSMin(((exports) => { var Buffer = require_safer().Buffer; exports.utf7 = Utf7Codec; @@ -10946,7 +10946,7 @@ var require_utf7 = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/body-parser/node_modules/iconv-lite/encodings/sbcs-codec.js +//#region ../../../../../node_modules/body-parser/node_modules/iconv-lite/encodings/sbcs-codec.js var require_sbcs_codec = /* @__PURE__ */ __commonJSMin(((exports) => { var Buffer = require_safer().Buffer; exports._sbcs = SBCSCodec; @@ -10993,7 +10993,7 @@ var require_sbcs_codec = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/body-parser/node_modules/iconv-lite/encodings/sbcs-data.js +//#region ../../../../../node_modules/body-parser/node_modules/iconv-lite/encodings/sbcs-data.js var require_sbcs_data = /* @__PURE__ */ __commonJSMin(((exports, module) => { module.exports = { "10029": "maccenteuro", @@ -11138,7 +11138,7 @@ var require_sbcs_data = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/body-parser/node_modules/iconv-lite/encodings/sbcs-data-generated.js +//#region ../../../../../node_modules/body-parser/node_modules/iconv-lite/encodings/sbcs-data-generated.js var require_sbcs_data_generated = /* @__PURE__ */ __commonJSMin(((exports, module) => { module.exports = { "437": "cp437", @@ -11591,7 +11591,7 @@ var require_sbcs_data_generated = /* @__PURE__ */ __commonJSMin(((exports, modul })); //#endregion -//#region ../../node_modules/body-parser/node_modules/iconv-lite/encodings/dbcs-codec.js +//#region ../../../../../node_modules/body-parser/node_modules/iconv-lite/encodings/dbcs-codec.js var require_dbcs_codec = /* @__PURE__ */ __commonJSMin(((exports) => { var Buffer = require_safer().Buffer; exports._dbcs = DBCSCodec; @@ -11906,7 +11906,7 @@ var require_dbcs_codec = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/body-parser/node_modules/iconv-lite/encodings/tables/shiftjis.json +//#region ../../../../../node_modules/body-parser/node_modules/iconv-lite/encodings/tables/shiftjis.json var require_shiftjis = /* @__PURE__ */ __commonJSMin(((exports, module) => { module.exports = [ [ @@ -12196,7 +12196,7 @@ var require_shiftjis = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/body-parser/node_modules/iconv-lite/encodings/tables/eucjp.json +//#region ../../../../../node_modules/body-parser/node_modules/iconv-lite/encodings/tables/eucjp.json var require_eucjp = /* @__PURE__ */ __commonJSMin(((exports, module) => { module.exports = [ [ @@ -12619,7 +12619,7 @@ var require_eucjp = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/body-parser/node_modules/iconv-lite/encodings/tables/cp936.json +//#region ../../../../../node_modules/body-parser/node_modules/iconv-lite/encodings/tables/cp936.json var require_cp936 = /* @__PURE__ */ __commonJSMin(((exports, module) => { module.exports = [ [ @@ -15201,7 +15201,7 @@ var require_cp936 = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/body-parser/node_modules/iconv-lite/encodings/tables/gbk-added.json +//#region ../../../../../node_modules/body-parser/node_modules/iconv-lite/encodings/tables/gbk-added.json var require_gbk_added = /* @__PURE__ */ __commonJSMin(((exports, module) => { module.exports = [ [ @@ -15428,7 +15428,7 @@ var require_gbk_added = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/body-parser/node_modules/iconv-lite/encodings/tables/gb18030-ranges.json +//#region ../../../../../node_modules/body-parser/node_modules/iconv-lite/encodings/tables/gb18030-ranges.json var require_gb18030_ranges = /* @__PURE__ */ __commonJSMin(((exports, module) => { module.exports = { "uChars": [ @@ -15853,7 +15853,7 @@ var require_gb18030_ranges = /* @__PURE__ */ __commonJSMin(((exports, module) => })); //#endregion -//#region ../../node_modules/body-parser/node_modules/iconv-lite/encodings/tables/cp949.json +//#region ../../../../../node_modules/body-parser/node_modules/iconv-lite/encodings/tables/cp949.json var require_cp949 = /* @__PURE__ */ __commonJSMin(((exports, module) => { module.exports = [ [ @@ -18071,7 +18071,7 @@ var require_cp949 = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/body-parser/node_modules/iconv-lite/encodings/tables/cp950.json +//#region ../../../../../node_modules/body-parser/node_modules/iconv-lite/encodings/tables/cp950.json var require_cp950 = /* @__PURE__ */ __commonJSMin(((exports, module) => { module.exports = [ [ @@ -18296,7 +18296,7 @@ var require_cp950 = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/body-parser/node_modules/iconv-lite/encodings/tables/big5-added.json +//#region ../../../../../node_modules/body-parser/node_modules/iconv-lite/encodings/tables/big5-added.json var require_big5_added = /* @__PURE__ */ __commonJSMin(((exports, module) => { module.exports = [ ["8740", "䏰䰲䘃䖦䕸𧉧䵷䖳𧲱䳢𧳅㮕䜶䝄䱇䱀𤊿𣘗𧍒𦺋𧃒䱗𪍑䝏䗚䲅𧱬䴇䪤䚡𦬣爥𥩔𡩣𣸆𣽡晍囻"], @@ -18463,7 +18463,7 @@ var require_big5_added = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/body-parser/node_modules/iconv-lite/encodings/dbcs-data.js +//#region ../../../../../node_modules/body-parser/node_modules/iconv-lite/encodings/dbcs-data.js var require_dbcs_data = /* @__PURE__ */ __commonJSMin(((exports, module) => { module.exports = { "shiftjis": { @@ -18576,7 +18576,7 @@ var require_dbcs_data = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/body-parser/node_modules/iconv-lite/encodings/index.js +//#region ../../../../../node_modules/body-parser/node_modules/iconv-lite/encodings/index.js var require_encodings = /* @__PURE__ */ __commonJSMin(((exports) => { var modules = [ require_internal(), @@ -18595,7 +18595,7 @@ var require_encodings = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/body-parser/node_modules/iconv-lite/lib/streams.js +//#region ../../../../../node_modules/body-parser/node_modules/iconv-lite/lib/streams.js var require_streams = /* @__PURE__ */ __commonJSMin(((exports, module) => { var Buffer$3 = require("buffer").Buffer, Transform = require("stream").Transform; module.exports = function(iconv) { @@ -18687,7 +18687,7 @@ var require_streams = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/body-parser/node_modules/iconv-lite/lib/extend-node.js +//#region ../../../../../node_modules/body-parser/node_modules/iconv-lite/lib/extend-node.js var require_extend_node = /* @__PURE__ */ __commonJSMin(((exports, module) => { var Buffer$2 = require("buffer").Buffer; module.exports = function(iconv) { @@ -18832,7 +18832,7 @@ var require_extend_node = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/body-parser/node_modules/iconv-lite/lib/index.js +//#region ../../../../../node_modules/body-parser/node_modules/iconv-lite/lib/index.js var require_lib$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => { var Buffer = require_safer().Buffer; var bomHandling = require_bom_handling(), iconv = module.exports; @@ -18918,7 +18918,7 @@ var require_lib$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/ee-first/index.js +//#region ../../../../../node_modules/ee-first/index.js /*! * ee-first * Copyright(c) 2014 Jonathan Ong @@ -18988,7 +18988,7 @@ var require_ee_first = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/on-finished/index.js +//#region ../../../../../node_modules/on-finished/index.js /*! * on-finished * Copyright(c) 2013 Jonathan Ong @@ -19160,7 +19160,7 @@ var require_on_finished = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/body-parser/lib/read.js +//#region ../../../../../node_modules/body-parser/lib/read.js /*! * body-parser * Copyright(c) 2014-2015 Douglas Christopher Wilson @@ -19313,7 +19313,7 @@ var require_read = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/media-typer/index.js +//#region ../../../../../node_modules/media-typer/index.js var require_media_typer = /* @__PURE__ */ __commonJSMin(((exports) => { /*! * media-typer @@ -19494,7 +19494,7 @@ var require_media_typer = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/mime-db/db.json +//#region ../../../../../node_modules/mime-db/db.json var require_db = /* @__PURE__ */ __commonJSMin(((exports, module) => { module.exports = { "application/1d-interleaved-parityfec": { "source": "iana" }, @@ -26540,7 +26540,7 @@ var require_db = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/mime-db/index.js +//#region ../../../../../node_modules/mime-db/index.js var require_mime_db = /* @__PURE__ */ __commonJSMin(((exports, module) => { /*! * mime-db @@ -26555,7 +26555,7 @@ var require_mime_db = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/mime-types/index.js +//#region ../../../../../node_modules/mime-types/index.js /*! * mime-types * Copyright(c) 2014 Jonathan Ong @@ -26636,9 +26636,9 @@ var require_mime_types = /* @__PURE__ */ __commonJSMin(((exports) => { * @param {string} path * @return {boolean|string} */ - function lookup(path$70) { - if (!path$70 || typeof path$70 !== "string") return false; - var extension = extname("x." + path$70).toLowerCase().substr(1); + function lookup(path$71) { + if (!path$71 || typeof path$71 !== "string") return false; + var extension = extname("x." + path$71).toLowerCase().substr(1); if (!extension) return false; return exports.types[extension] || false; } @@ -26672,7 +26672,7 @@ var require_mime_types = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/type-is/index.js +//#region ../../../../../node_modules/type-is/index.js /*! * type-is * Copyright(c) 2014 Jonathan Ong @@ -26844,7 +26844,7 @@ var require_type_is = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/body-parser/lib/types/json.js +//#region ../../../../../node_modules/body-parser/lib/types/json.js /*! * body-parser * Copyright(c) 2014 Jonathan Ong @@ -27033,7 +27033,7 @@ var require_json = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/body-parser/lib/types/raw.js +//#region ../../../../../node_modules/body-parser/lib/types/raw.js /*! * body-parser * Copyright(c) 2014-2015 Douglas Christopher Wilson @@ -27109,7 +27109,7 @@ var require_raw = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/body-parser/lib/types/text.js +//#region ../../../../../node_modules/body-parser/lib/types/text.js /*! * body-parser * Copyright(c) 2014-2015 Douglas Christopher Wilson @@ -27200,20 +27200,20 @@ var require_text = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/es-errors/type.js +//#region ../../../../../node_modules/es-errors/type.js var require_type = /* @__PURE__ */ __commonJSMin(((exports, module) => { /** @type {import('./type')} */ module.exports = TypeError; })); //#endregion -//#region ../../node_modules/object-inspect/util.inspect.js +//#region ../../../../../node_modules/object-inspect/util.inspect.js var require_util_inspect = /* @__PURE__ */ __commonJSMin(((exports, module) => { module.exports = require("util").inspect; })); //#endregion -//#region ../../node_modules/object-inspect/index.js +//#region ../../../../../node_modules/object-inspect/index.js var require_object_inspect = /* @__PURE__ */ __commonJSMin(((exports, module) => { var hasMap = typeof Map === "function" && Map.prototype; var mapSizeDescriptor = Object.getOwnPropertyDescriptor && hasMap ? Object.getOwnPropertyDescriptor(Map.prototype, "size") : null; @@ -27596,7 +27596,7 @@ var require_object_inspect = /* @__PURE__ */ __commonJSMin(((exports, module) => })); //#endregion -//#region ../../node_modules/side-channel-list/index.js +//#region ../../../../../node_modules/side-channel-list/index.js var require_side_channel_list = /* @__PURE__ */ __commonJSMin(((exports, module) => { var inspect = require_object_inspect(); var $TypeError = require_type(); @@ -27673,98 +27673,98 @@ var require_side_channel_list = /* @__PURE__ */ __commonJSMin(((exports, module) })); //#endregion -//#region ../../node_modules/es-object-atoms/index.js +//#region ../../../../../node_modules/es-object-atoms/index.js var require_es_object_atoms = /* @__PURE__ */ __commonJSMin(((exports, module) => { /** @type {import('.')} */ module.exports = Object; })); //#endregion -//#region ../../node_modules/es-errors/index.js +//#region ../../../../../node_modules/es-errors/index.js var require_es_errors = /* @__PURE__ */ __commonJSMin(((exports, module) => { /** @type {import('.')} */ module.exports = Error; })); //#endregion -//#region ../../node_modules/es-errors/eval.js +//#region ../../../../../node_modules/es-errors/eval.js var require_eval = /* @__PURE__ */ __commonJSMin(((exports, module) => { /** @type {import('./eval')} */ module.exports = EvalError; })); //#endregion -//#region ../../node_modules/es-errors/range.js +//#region ../../../../../node_modules/es-errors/range.js var require_range = /* @__PURE__ */ __commonJSMin(((exports, module) => { /** @type {import('./range')} */ module.exports = RangeError; })); //#endregion -//#region ../../node_modules/es-errors/ref.js +//#region ../../../../../node_modules/es-errors/ref.js var require_ref$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => { /** @type {import('./ref')} */ module.exports = ReferenceError; })); //#endregion -//#region ../../node_modules/es-errors/syntax.js +//#region ../../../../../node_modules/es-errors/syntax.js var require_syntax = /* @__PURE__ */ __commonJSMin(((exports, module) => { /** @type {import('./syntax')} */ module.exports = SyntaxError; })); //#endregion -//#region ../../node_modules/es-errors/uri.js +//#region ../../../../../node_modules/es-errors/uri.js var require_uri$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => { /** @type {import('./uri')} */ module.exports = URIError; })); //#endregion -//#region ../../node_modules/math-intrinsics/abs.js +//#region ../../../../../node_modules/math-intrinsics/abs.js var require_abs = /* @__PURE__ */ __commonJSMin(((exports, module) => { /** @type {import('./abs')} */ module.exports = Math.abs; })); //#endregion -//#region ../../node_modules/math-intrinsics/floor.js +//#region ../../../../../node_modules/math-intrinsics/floor.js var require_floor = /* @__PURE__ */ __commonJSMin(((exports, module) => { /** @type {import('./floor')} */ module.exports = Math.floor; })); //#endregion -//#region ../../node_modules/math-intrinsics/max.js +//#region ../../../../../node_modules/math-intrinsics/max.js var require_max = /* @__PURE__ */ __commonJSMin(((exports, module) => { /** @type {import('./max')} */ module.exports = Math.max; })); //#endregion -//#region ../../node_modules/math-intrinsics/min.js +//#region ../../../../../node_modules/math-intrinsics/min.js var require_min = /* @__PURE__ */ __commonJSMin(((exports, module) => { /** @type {import('./min')} */ module.exports = Math.min; })); //#endregion -//#region ../../node_modules/math-intrinsics/pow.js +//#region ../../../../../node_modules/math-intrinsics/pow.js var require_pow = /* @__PURE__ */ __commonJSMin(((exports, module) => { /** @type {import('./pow')} */ module.exports = Math.pow; })); //#endregion -//#region ../../node_modules/math-intrinsics/round.js +//#region ../../../../../node_modules/math-intrinsics/round.js var require_round = /* @__PURE__ */ __commonJSMin(((exports, module) => { /** @type {import('./round')} */ module.exports = Math.round; })); //#endregion -//#region ../../node_modules/math-intrinsics/isNaN.js +//#region ../../../../../node_modules/math-intrinsics/isNaN.js var require_isNaN = /* @__PURE__ */ __commonJSMin(((exports, module) => { /** @type {import('./isNaN')} */ module.exports = Number.isNaN || function isNaN(a) { @@ -27773,7 +27773,7 @@ var require_isNaN = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/math-intrinsics/sign.js +//#region ../../../../../node_modules/math-intrinsics/sign.js var require_sign = /* @__PURE__ */ __commonJSMin(((exports, module) => { var $isNaN = require_isNaN(); /** @type {import('./sign')} */ @@ -27784,14 +27784,14 @@ var require_sign = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/gopd/gOPD.js +//#region ../../../../../node_modules/gopd/gOPD.js var require_gOPD = /* @__PURE__ */ __commonJSMin(((exports, module) => { /** @type {import('./gOPD')} */ module.exports = Object.getOwnPropertyDescriptor; })); //#endregion -//#region ../../node_modules/gopd/index.js +//#region ../../../../../node_modules/gopd/index.js var require_gopd = /* @__PURE__ */ __commonJSMin(((exports, module) => { /** @type {import('.')} */ var $gOPD = require_gOPD(); @@ -27804,7 +27804,7 @@ var require_gopd = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/es-define-property/index.js +//#region ../../../../../node_modules/es-define-property/index.js var require_es_define_property = /* @__PURE__ */ __commonJSMin(((exports, module) => { /** @type {import('.')} */ var $defineProperty = Object.defineProperty || false; @@ -27817,7 +27817,7 @@ var require_es_define_property = /* @__PURE__ */ __commonJSMin(((exports, module })); //#endregion -//#region ../../node_modules/has-symbols/shams.js +//#region ../../../../../node_modules/has-symbols/shams.js var require_shams = /* @__PURE__ */ __commonJSMin(((exports, module) => { /** @type {import('./shams')} */ module.exports = function hasSymbols() { @@ -27847,7 +27847,7 @@ var require_shams = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/has-symbols/index.js +//#region ../../../../../node_modules/has-symbols/index.js var require_has_symbols = /* @__PURE__ */ __commonJSMin(((exports, module) => { var origSymbol = typeof Symbol !== "undefined" && Symbol; var hasSymbolSham = require_shams(); @@ -27862,14 +27862,14 @@ var require_has_symbols = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/get-proto/Reflect.getPrototypeOf.js +//#region ../../../../../node_modules/get-proto/Reflect.getPrototypeOf.js var require_Reflect_getPrototypeOf = /* @__PURE__ */ __commonJSMin(((exports, module) => { /** @type {import('./Reflect.getPrototypeOf')} */ module.exports = typeof Reflect !== "undefined" && Reflect.getPrototypeOf || null; })); //#endregion -//#region ../../node_modules/get-proto/Object.getPrototypeOf.js +//#region ../../../../../node_modules/get-proto/Object.getPrototypeOf.js var require_Object_getPrototypeOf = /* @__PURE__ */ __commonJSMin(((exports, module) => { var $Object = require_es_object_atoms(); /** @type {import('./Object.getPrototypeOf')} */ @@ -27877,7 +27877,7 @@ var require_Object_getPrototypeOf = /* @__PURE__ */ __commonJSMin(((exports, mod })); //#endregion -//#region ../../node_modules/function-bind/implementation.js +//#region ../../../../../node_modules/function-bind/implementation.js var require_implementation = /* @__PURE__ */ __commonJSMin(((exports, module) => { var ERROR_MESSAGE = "Function.prototype.bind called on incompatible "; var toStr = Object.prototype.toString; @@ -27930,35 +27930,35 @@ var require_implementation = /* @__PURE__ */ __commonJSMin(((exports, module) => })); //#endregion -//#region ../../node_modules/function-bind/index.js +//#region ../../../../../node_modules/function-bind/index.js var require_function_bind = /* @__PURE__ */ __commonJSMin(((exports, module) => { var implementation = require_implementation(); module.exports = Function.prototype.bind || implementation; })); //#endregion -//#region ../../node_modules/call-bind-apply-helpers/functionCall.js +//#region ../../../../../node_modules/call-bind-apply-helpers/functionCall.js var require_functionCall = /* @__PURE__ */ __commonJSMin(((exports, module) => { /** @type {import('./functionCall')} */ module.exports = Function.prototype.call; })); //#endregion -//#region ../../node_modules/call-bind-apply-helpers/functionApply.js +//#region ../../../../../node_modules/call-bind-apply-helpers/functionApply.js var require_functionApply = /* @__PURE__ */ __commonJSMin(((exports, module) => { /** @type {import('./functionApply')} */ module.exports = Function.prototype.apply; })); //#endregion -//#region ../../node_modules/call-bind-apply-helpers/reflectApply.js +//#region ../../../../../node_modules/call-bind-apply-helpers/reflectApply.js var require_reflectApply = /* @__PURE__ */ __commonJSMin(((exports, module) => { /** @type {import('./reflectApply')} */ module.exports = typeof Reflect !== "undefined" && Reflect && Reflect.apply; })); //#endregion -//#region ../../node_modules/call-bind-apply-helpers/actualApply.js +//#region ../../../../../node_modules/call-bind-apply-helpers/actualApply.js var require_actualApply = /* @__PURE__ */ __commonJSMin(((exports, module) => { var bind = require_function_bind(); var $apply = require_functionApply(); @@ -27969,7 +27969,7 @@ var require_actualApply = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/call-bind-apply-helpers/index.js +//#region ../../../../../node_modules/call-bind-apply-helpers/index.js var require_call_bind_apply_helpers = /* @__PURE__ */ __commonJSMin(((exports, module) => { var bind = require_function_bind(); var $TypeError = require_type(); @@ -27983,7 +27983,7 @@ var require_call_bind_apply_helpers = /* @__PURE__ */ __commonJSMin(((exports, m })); //#endregion -//#region ../../node_modules/dunder-proto/get.js +//#region ../../../../../node_modules/dunder-proto/get.js var require_get = /* @__PURE__ */ __commonJSMin(((exports, module) => { var callBind = require_call_bind_apply_helpers(); var gOPD = require_gopd(); @@ -28003,7 +28003,7 @@ var require_get = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/get-proto/index.js +//#region ../../../../../node_modules/get-proto/index.js var require_get_proto = /* @__PURE__ */ __commonJSMin(((exports, module) => { var reflectGetProto = require_Reflect_getPrototypeOf(); var originalGetProto = require_Object_getPrototypeOf(); @@ -28020,7 +28020,7 @@ var require_get_proto = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/hasown/index.js +//#region ../../../../../node_modules/hasown/index.js var require_hasown = /* @__PURE__ */ __commonJSMin(((exports, module) => { var call = Function.prototype.call; var $hasOwn = Object.prototype.hasOwnProperty; @@ -28030,7 +28030,7 @@ var require_hasown = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/get-intrinsic/index.js +//#region ../../../../../node_modules/get-intrinsic/index.js var require_get_intrinsic = /* @__PURE__ */ __commonJSMin(((exports, module) => { var undefined; var $Object = require_es_object_atoms(); @@ -28357,7 +28357,7 @@ var require_get_intrinsic = /* @__PURE__ */ __commonJSMin(((exports, module) => })); //#endregion -//#region ../../node_modules/call-bound/index.js +//#region ../../../../../node_modules/call-bound/index.js var require_call_bound = /* @__PURE__ */ __commonJSMin(((exports, module) => { var GetIntrinsic = require_get_intrinsic(); var callBindBasic = require_call_bind_apply_helpers(); @@ -28372,7 +28372,7 @@ var require_call_bound = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/side-channel-map/index.js +//#region ../../../../../node_modules/side-channel-map/index.js var require_side_channel_map = /* @__PURE__ */ __commonJSMin(((exports, module) => { var GetIntrinsic = require_get_intrinsic(); var callBound = require_call_bound(); @@ -28425,7 +28425,7 @@ var require_side_channel_map = /* @__PURE__ */ __commonJSMin(((exports, module) })); //#endregion -//#region ../../node_modules/side-channel-weakmap/index.js +//#region ../../../../../node_modules/side-channel-weakmap/index.js var require_side_channel_weakmap = /* @__PURE__ */ __commonJSMin(((exports, module) => { var GetIntrinsic = require_get_intrinsic(); var callBound = require_call_bound(); @@ -28488,7 +28488,7 @@ var require_side_channel_weakmap = /* @__PURE__ */ __commonJSMin(((exports, modu })); //#endregion -//#region ../../node_modules/side-channel/index.js +//#region ../../../../../node_modules/side-channel/index.js var require_side_channel = /* @__PURE__ */ __commonJSMin(((exports, module) => { var $TypeError = require_type(); var inspect = require_object_inspect(); @@ -28523,7 +28523,7 @@ var require_side_channel = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/qs/lib/formats.js +//#region ../../../../../node_modules/qs/lib/formats.js var require_formats$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => { var replace = String.prototype.replace; var percentTwenties = /%20/g; @@ -28547,7 +28547,7 @@ var require_formats$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/qs/lib/utils.js +//#region ../../../../../node_modules/qs/lib/utils.js var require_utils$2 = /* @__PURE__ */ __commonJSMin(((exports, module) => { var formats = require_formats$1(); var getSideChannel = require_side_channel(); @@ -28767,7 +28767,7 @@ var require_utils$2 = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/qs/lib/stringify.js +//#region ../../../../../node_modules/qs/lib/stringify.js var require_stringify$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => { var getSideChannel = require_side_channel(); var utils = require_utils$2(); @@ -28949,7 +28949,7 @@ var require_stringify$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/qs/lib/parse.js +//#region ../../../../../node_modules/qs/lib/parse.js var require_parse = /* @__PURE__ */ __commonJSMin(((exports, module) => { var utils = require_utils$2(); var has = Object.prototype.hasOwnProperty; @@ -29160,7 +29160,7 @@ var require_parse = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/qs/lib/index.js +//#region ../../../../../node_modules/qs/lib/index.js var require_lib = /* @__PURE__ */ __commonJSMin(((exports, module) => { var stringify = require_stringify$1(); var parse = require_parse(); @@ -29173,7 +29173,7 @@ var require_lib = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/body-parser/lib/types/urlencoded.js +//#region ../../../../../node_modules/body-parser/lib/types/urlencoded.js /*! * body-parser * Copyright(c) 2014 Jonathan Ong @@ -29375,7 +29375,7 @@ var require_urlencoded = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/body-parser/index.js +//#region ../../../../../node_modules/body-parser/index.js /*! * body-parser * Copyright(c) 2014-2015 Douglas Christopher Wilson @@ -29500,7 +29500,7 @@ var require_body_parser = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/merge-descriptors/index.js +//#region ../../../../../node_modules/merge-descriptors/index.js /*! * merge-descriptors * Copyright(c) 2014 Jonathan Ong @@ -29541,7 +29541,7 @@ var require_merge_descriptors = /* @__PURE__ */ __commonJSMin(((exports, module) })); //#endregion -//#region ../../node_modules/finalhandler/node_modules/ms/index.js +//#region ../../../../../node_modules/finalhandler/node_modules/ms/index.js var require_ms$3 = /* @__PURE__ */ __commonJSMin(((exports, module) => { /** * Helpers. @@ -29651,7 +29651,7 @@ var require_ms$3 = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/finalhandler/node_modules/debug/src/debug.js +//#region ../../../../../node_modules/finalhandler/node_modules/debug/src/debug.js var require_debug$2 = /* @__PURE__ */ __commonJSMin(((exports, module) => { /** * This is the common logic for both the Node.js and web browser @@ -29792,7 +29792,7 @@ var require_debug$2 = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/finalhandler/node_modules/debug/src/browser.js +//#region ../../../../../node_modules/finalhandler/node_modules/debug/src/browser.js var require_browser$3 = /* @__PURE__ */ __commonJSMin(((exports, module) => { /** * This is the web browser implementation of `debug()`. @@ -29915,7 +29915,7 @@ var require_browser$3 = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/finalhandler/node_modules/debug/src/node.js +//#region ../../../../../node_modules/finalhandler/node_modules/debug/src/node.js var require_node$3 = /* @__PURE__ */ __commonJSMin(((exports, module) => { /** * Module dependencies. @@ -30088,7 +30088,7 @@ var require_node$3 = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/finalhandler/node_modules/debug/src/index.js +//#region ../../../../../node_modules/finalhandler/node_modules/debug/src/index.js var require_src$4 = /* @__PURE__ */ __commonJSMin(((exports, module) => { /** * Detect Electron renderer process, which is node, but we should @@ -30099,7 +30099,7 @@ var require_src$4 = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/encodeurl/index.js +//#region ../../../../../node_modules/encodeurl/index.js /*! * encodeurl * Copyright(c) 2016 Douglas Christopher Wilson @@ -30150,7 +30150,7 @@ var require_encodeurl = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/escape-html/index.js +//#region ../../../../../node_modules/escape-html/index.js /*! * escape-html * Copyright(c) 2012-2013 TJ Holowaychuk @@ -30212,7 +30212,7 @@ var require_escape_html = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/parseurl/index.js +//#region ../../../../../node_modules/parseurl/index.js /*! * parseurl * Copyright(c) 2014 Jonathan Ong @@ -30318,7 +30318,7 @@ var require_parseurl = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/finalhandler/index.js +//#region ../../../../../node_modules/finalhandler/index.js /*! * finalhandler * Copyright(c) 2014-2022 Douglas Christopher Wilson @@ -30540,7 +30540,7 @@ var require_finalhandler = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/express/node_modules/ms/index.js +//#region ../../../../../node_modules/express/node_modules/ms/index.js var require_ms$2 = /* @__PURE__ */ __commonJSMin(((exports, module) => { /** * Helpers. @@ -30650,7 +30650,7 @@ var require_ms$2 = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/express/node_modules/debug/src/debug.js +//#region ../../../../../node_modules/express/node_modules/debug/src/debug.js var require_debug$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => { /** * This is the common logic for both the Node.js and web browser @@ -30791,7 +30791,7 @@ var require_debug$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/express/node_modules/debug/src/browser.js +//#region ../../../../../node_modules/express/node_modules/debug/src/browser.js var require_browser$2 = /* @__PURE__ */ __commonJSMin(((exports, module) => { /** * This is the web browser implementation of `debug()`. @@ -30914,7 +30914,7 @@ var require_browser$2 = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/express/node_modules/debug/src/node.js +//#region ../../../../../node_modules/express/node_modules/debug/src/node.js var require_node$2 = /* @__PURE__ */ __commonJSMin(((exports, module) => { /** * Module dependencies. @@ -31087,7 +31087,7 @@ var require_node$2 = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/express/node_modules/debug/src/index.js +//#region ../../../../../node_modules/express/node_modules/debug/src/index.js var require_src$3 = /* @__PURE__ */ __commonJSMin(((exports, module) => { /** * Detect Electron renderer process, which is node, but we should @@ -31098,7 +31098,7 @@ var require_src$3 = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/array-flatten/array-flatten.js +//#region ../../../../../node_modules/array-flatten/array-flatten.js var require_array_flatten = /* @__PURE__ */ __commonJSMin(((exports, module) => { /** * Expose `arrayFlatten`. @@ -31149,7 +31149,7 @@ var require_array_flatten = /* @__PURE__ */ __commonJSMin(((exports, module) => })); //#endregion -//#region ../../node_modules/path-to-regexp/index.js +//#region ../../../../../node_modules/path-to-regexp/index.js var require_path_to_regexp = /* @__PURE__ */ __commonJSMin(((exports, module) => { /** * Expose `pathToRegexp`. @@ -31262,7 +31262,7 @@ var require_path_to_regexp = /* @__PURE__ */ __commonJSMin(((exports, module) => })); //#endregion -//#region ../../node_modules/express/lib/router/layer.js +//#region ../../../../../node_modules/express/lib/router/layer.js /*! * express * Copyright(c) 2009-2013 TJ Holowaychuk @@ -31395,7 +31395,7 @@ var require_layer = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/methods/index.js +//#region ../../../../../node_modules/methods/index.js /*! * methods * Copyright(c) 2013-2014 TJ Holowaychuk @@ -31459,7 +31459,7 @@ var require_methods = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/express/lib/router/route.js +//#region ../../../../../node_modules/express/lib/router/route.js /*! * express * Copyright(c) 2009-2013 TJ Holowaychuk @@ -31608,7 +31608,7 @@ var require_route = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/utils-merge/index.js +//#region ../../../../../node_modules/utils-merge/index.js var require_utils_merge = /* @__PURE__ */ __commonJSMin(((exports, module) => { /** * Merge object b with object a. @@ -31631,7 +31631,7 @@ var require_utils_merge = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/express/lib/router/index.js +//#region ../../../../../node_modules/express/lib/router/index.js /*! * express * Copyright(c) 2009-2013 TJ Holowaychuk @@ -32041,7 +32041,7 @@ var require_router = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/express/lib/middleware/init.js +//#region ../../../../../node_modules/express/lib/middleware/init.js /*! * express * Copyright(c) 2009-2013 TJ Holowaychuk @@ -32079,7 +32079,7 @@ var require_init = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/express/lib/middleware/query.js +//#region ../../../../../node_modules/express/lib/middleware/query.js /*! * express * Copyright(c) 2009-2013 TJ Holowaychuk @@ -32118,7 +32118,7 @@ var require_query = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/express/lib/view.js +//#region ../../../../../node_modules/express/lib/view.js /*! * express * Copyright(c) 2009-2013 TJ Holowaychuk @@ -32132,17 +32132,17 @@ var require_view = /* @__PURE__ */ __commonJSMin(((exports, module) => { * @private */ var debug = require_src$3()("express:view"); - var path$15 = require("path"); - var fs$20 = require("fs"); + var path$16 = require("path"); + var fs$21 = require("fs"); /** * Module variables. * @private */ - var dirname = path$15.dirname; - var basename = path$15.basename; - var extname = path$15.extname; - var join = path$15.join; - var resolve = path$15.resolve; + var dirname = path$16.dirname; + var basename = path$16.basename; + var extname = path$16.extname; + var join = path$16.join; + var resolve = path$16.resolve; /** * Module exports. * @public @@ -32190,17 +32190,17 @@ var require_view = /* @__PURE__ */ __commonJSMin(((exports, module) => { * @private */ View.prototype.lookup = function lookup(name) { - var path$67; + var path$68; var roots = [].concat(this.root); debug("lookup \"%s\"", name); - for (var i = 0; i < roots.length && !path$67; i++) { + for (var i = 0; i < roots.length && !path$68; i++) { var root = roots[i]; var loc = resolve(root, name); var dir = dirname(loc); var file = basename(loc); - path$67 = this.resolve(dir, file); + path$68 = this.resolve(dir, file); } - return path$67; + return path$68; }; /** * Render with the given options. @@ -32222,12 +32222,12 @@ var require_view = /* @__PURE__ */ __commonJSMin(((exports, module) => { */ View.prototype.resolve = function resolve(dir, file) { var ext = this.ext; - var path$68 = join(dir, file); - var stat = tryStat(path$68); - if (stat && stat.isFile()) return path$68; - path$68 = join(dir, basename(file, ext), "index" + ext); - stat = tryStat(path$68); - if (stat && stat.isFile()) return path$68; + var path$69 = join(dir, file); + var stat = tryStat(path$69); + if (stat && stat.isFile()) return path$69; + path$69 = join(dir, basename(file, ext), "index" + ext); + stat = tryStat(path$69); + if (stat && stat.isFile()) return path$69; }; /** * Return a stat, maybe. @@ -32236,10 +32236,10 @@ var require_view = /* @__PURE__ */ __commonJSMin(((exports, module) => { * @return {fs.Stats} * @private */ - function tryStat(path$69) { - debug("stat \"%s\"", path$69); + function tryStat(path$70) { + debug("stat \"%s\"", path$70); try { - return fs$20.statSync(path$69); + return fs$21.statSync(path$70); } catch (e) { return; } @@ -32247,7 +32247,7 @@ var require_view = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/express/node_modules/safe-buffer/index.js +//#region ../../../../../node_modules/express/node_modules/safe-buffer/index.js var require_safe_buffer$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => { /*! safe-buffer. MIT License. Feross Aboukhadijeh */ var buffer$1 = require("buffer"); @@ -32288,7 +32288,7 @@ var require_safe_buffer$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => })); //#endregion -//#region ../../node_modules/content-disposition/node_modules/safe-buffer/index.js +//#region ../../../../../node_modules/content-disposition/node_modules/safe-buffer/index.js var require_safe_buffer = /* @__PURE__ */ __commonJSMin(((exports, module) => { /*! safe-buffer. MIT License. Feross Aboukhadijeh */ var buffer = require("buffer"); @@ -32329,7 +32329,7 @@ var require_safe_buffer = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/content-disposition/index.js +//#region ../../../../../node_modules/content-disposition/index.js /*! * content-disposition * Copyright(c) 2014-2017 Douglas Christopher Wilson @@ -32632,7 +32632,7 @@ var require_content_disposition = /* @__PURE__ */ __commonJSMin(((exports, modul })); //#endregion -//#region ../../node_modules/send/node_modules/debug/node_modules/ms/index.js +//#region ../../../../../node_modules/send/node_modules/debug/node_modules/ms/index.js var require_ms$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => { /** * Helpers. @@ -32742,7 +32742,7 @@ var require_ms$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/send/node_modules/debug/src/debug.js +//#region ../../../../../node_modules/send/node_modules/debug/src/debug.js var require_debug = /* @__PURE__ */ __commonJSMin(((exports, module) => { /** * This is the common logic for both the Node.js and web browser @@ -32883,7 +32883,7 @@ var require_debug = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/send/node_modules/debug/src/browser.js +//#region ../../../../../node_modules/send/node_modules/debug/src/browser.js var require_browser$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => { /** * This is the web browser implementation of `debug()`. @@ -33006,7 +33006,7 @@ var require_browser$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/send/node_modules/debug/src/node.js +//#region ../../../../../node_modules/send/node_modules/debug/src/node.js var require_node$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => { /** * Module dependencies. @@ -33179,7 +33179,7 @@ var require_node$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/send/node_modules/debug/src/index.js +//#region ../../../../../node_modules/send/node_modules/debug/src/index.js var require_src$2 = /* @__PURE__ */ __commonJSMin(((exports, module) => { /** * Detect Electron renderer process, which is node, but we should @@ -33190,7 +33190,7 @@ var require_src$2 = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/etag/index.js +//#region ../../../../../node_modules/etag/index.js /*! * etag * Copyright(c) 2014-2016 Douglas Christopher Wilson @@ -33267,7 +33267,7 @@ var require_etag = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/fresh/index.js +//#region ../../../../../node_modules/fresh/index.js /*! * fresh * Copyright(c) 2012 TJ Holowaychuk @@ -33358,7 +33358,7 @@ var require_fresh = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/send/node_modules/mime/types.json +//#region ../../../../../node_modules/send/node_modules/mime/types.json var require_types$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => { module.exports = { "application/andrew-inset": ["ez"], @@ -34457,10 +34457,10 @@ var require_types$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/send/node_modules/mime/mime.js +//#region ../../../../../node_modules/send/node_modules/mime/mime.js var require_mime = /* @__PURE__ */ __commonJSMin(((exports, module) => { require("path"); - var fs$19 = require("fs"); + var fs$20 = require("fs"); function Mime() { this.types = Object.create(null); this.extensions = Object.create(null); @@ -34495,7 +34495,7 @@ var require_mime = /* @__PURE__ */ __commonJSMin(((exports, module) => { Mime.prototype.load = function(file) { this._loading = file; var map = {}; - fs$19.readFileSync(file, "ascii").split(/[\r\n]+/).forEach(function(line) { + fs$20.readFileSync(file, "ascii").split(/[\r\n]+/).forEach(function(line) { var fields = line.replace(/\s*#.*|^\s*|\s*$/g, "").split(/\s+/); map[fields.shift()] = fields; }); @@ -34505,8 +34505,8 @@ var require_mime = /* @__PURE__ */ __commonJSMin(((exports, module) => { /** * Lookup a mime type based on extension */ - Mime.prototype.lookup = function(path$66, fallback) { - var ext = path$66.replace(/^.*[\.\/\\]/, "").toLowerCase(); + Mime.prototype.lookup = function(path$67, fallback) { + var ext = path$67.replace(/^.*[\.\/\\]/, "").toLowerCase(); return this.types[ext] || fallback || this.default_type; }; /** @@ -34530,7 +34530,7 @@ var require_mime = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/ms/index.js +//#region ../../../../../node_modules/ms/index.js var require_ms = /* @__PURE__ */ __commonJSMin(((exports, module) => { /** * Helpers. @@ -34649,7 +34649,7 @@ var require_ms = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/range-parser/index.js +//#region ../../../../../node_modules/range-parser/index.js /*! * range-parser * Copyright(c) 2012-2014 TJ Holowaychuk @@ -34754,7 +34754,7 @@ var require_range_parser = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/send/index.js +//#region ../../../../../node_modules/send/index.js /*! * send * Copyright(c) 2012 TJ Holowaychuk @@ -34774,12 +34774,12 @@ var require_send = /* @__PURE__ */ __commonJSMin(((exports, module) => { var escapeHtml = require_escape_html(); var etag = require_etag(); var fresh = require_fresh(); - var fs$18 = require("fs"); + var fs$19 = require("fs"); var mime = require_mime(); var ms = require_ms(); var onFinished = require_on_finished(); var parseRange = require_range_parser(); - var path$14 = require("path"); + var path$15 = require("path"); var statuses = require_statuses(); var Stream = require("stream"); var util$2 = require("util"); @@ -34787,11 +34787,11 @@ var require_send = /* @__PURE__ */ __commonJSMin(((exports, module) => { * Path function references. * @private */ - var extname = path$14.extname; - var join = path$14.join; - var normalize = path$14.normalize; - var resolve = path$14.resolve; - var sep = path$14.sep; + var extname = path$15.extname; + var join = path$15.join; + var normalize = path$15.normalize; + var resolve = path$15.resolve; + var sep = path$15.sep; /** * Regular expression for identifying a bytes Range header. * @private @@ -34822,8 +34822,8 @@ var require_send = /* @__PURE__ */ __commonJSMin(((exports, module) => { * @return {SendStream} * @public */ - function send(req, path$54, options) { - return new SendStream(req, path$54, options); + function send(req, path$55, options) { + return new SendStream(req, path$55, options); } /** * Initialize a `SendStream` with the given `path`. @@ -34833,11 +34833,11 @@ var require_send = /* @__PURE__ */ __commonJSMin(((exports, module) => { * @param {object} [options] * @private */ - function SendStream(req, path$55, options) { + function SendStream(req, path$56, options) { Stream.call(this); var opts = options || {}; this.options = opts; - this.path = path$55; + this.path = path$56; this.req = req; this._acceptRanges = opts.acceptRanges !== void 0 ? Boolean(opts.acceptRanges) : true; this._cacheControl = opts.cacheControl !== void 0 ? Boolean(opts.cacheControl) : true; @@ -34907,8 +34907,8 @@ var require_send = /* @__PURE__ */ __commonJSMin(((exports, module) => { * @return {SendStream} * @api public */ - SendStream.prototype.root = function root(path$56) { - this._root = resolve(String(path$56)); + SendStream.prototype.root = function root(path$57) { + this._root = resolve(String(path$57)); debug("root %s", this._root); return this; }; @@ -35085,10 +35085,10 @@ var require_send = /* @__PURE__ */ __commonJSMin(((exports, module) => { * @param {string} path * @private */ - SendStream.prototype.redirect = function redirect(path$57) { + SendStream.prototype.redirect = function redirect(path$58) { var res = this.res; if (hasListeners(this, "directory")) { - this.emit("directory", res, path$57); + this.emit("directory", res, path$58); return; } if (this.hasTrailingSlash()) { @@ -35115,38 +35115,38 @@ var require_send = /* @__PURE__ */ __commonJSMin(((exports, module) => { SendStream.prototype.pipe = function pipe(res) { var root = this._root; this.res = res; - var path$58 = decode(this.path); - if (path$58 === -1) { + var path$59 = decode(this.path); + if (path$59 === -1) { this.error(400); return res; } - if (~path$58.indexOf("\0")) { + if (~path$59.indexOf("\0")) { this.error(400); return res; } var parts; if (root !== null) { - if (path$58) path$58 = normalize("." + sep + path$58); - if (UP_PATH_REGEXP.test(path$58)) { - debug("malicious path \"%s\"", path$58); + if (path$59) path$59 = normalize("." + sep + path$59); + if (UP_PATH_REGEXP.test(path$59)) { + debug("malicious path \"%s\"", path$59); this.error(403); return res; } - parts = path$58.split(sep); - path$58 = normalize(join(root, path$58)); + parts = path$59.split(sep); + path$59 = normalize(join(root, path$59)); } else { - if (UP_PATH_REGEXP.test(path$58)) { - debug("malicious path \"%s\"", path$58); + if (UP_PATH_REGEXP.test(path$59)) { + debug("malicious path \"%s\"", path$59); this.error(403); return res; } - parts = normalize(path$58).split(sep); - path$58 = resolve(path$58); + parts = normalize(path$59).split(sep); + path$59 = resolve(path$59); } if (containsDotFile(parts)) { var access = this._dotfiles; if (access === void 0) access = parts[parts.length - 1][0] === "." ? this._hidden ? "allow" : "ignore" : "allow"; - debug("%s dotfile \"%s\"", access, path$58); + debug("%s dotfile \"%s\"", access, path$59); switch (access) { case "allow": break; case "deny": @@ -35158,10 +35158,10 @@ var require_send = /* @__PURE__ */ __commonJSMin(((exports, module) => { } } if (this._index.length && this.hasTrailingSlash()) { - this.sendIndex(path$58); + this.sendIndex(path$59); return res; } - this.sendFile(path$58); + this.sendFile(path$59); return res; }; /** @@ -35170,7 +35170,7 @@ var require_send = /* @__PURE__ */ __commonJSMin(((exports, module) => { * @param {String} path * @api public */ - SendStream.prototype.send = function send(path$59, stat) { + SendStream.prototype.send = function send(path$60, stat) { var len = stat.size; var options = this.options; var opts = {}; @@ -35182,9 +35182,9 @@ var require_send = /* @__PURE__ */ __commonJSMin(((exports, module) => { this.headersAlreadySent(); return; } - debug("pipe \"%s\"", path$59); - this.setHeader(path$59, stat); - this.type(path$59); + debug("pipe \"%s\"", path$60); + this.setHeader(path$60, stat); + this.type(path$60); if (this.isConditionalGET()) { if (this.isPreconditionFailure()) { this.error(412); @@ -35227,7 +35227,7 @@ var require_send = /* @__PURE__ */ __commonJSMin(((exports, module) => { res.end(); return; } - this.stream(path$59, opts); + this.stream(path$60, opts); }; /** * Transfer file for `path`. @@ -35235,22 +35235,22 @@ var require_send = /* @__PURE__ */ __commonJSMin(((exports, module) => { * @param {String} path * @api private */ - SendStream.prototype.sendFile = function sendFile(path$60) { + SendStream.prototype.sendFile = function sendFile(path$61) { var i = 0; var self = this; - debug("stat \"%s\"", path$60); - fs$18.stat(path$60, function onstat(err, stat) { - if (err && err.code === "ENOENT" && !extname(path$60) && path$60[path$60.length - 1] !== sep) return next(err); + debug("stat \"%s\"", path$61); + fs$19.stat(path$61, function onstat(err, stat) { + if (err && err.code === "ENOENT" && !extname(path$61) && path$61[path$61.length - 1] !== sep) return next(err); if (err) return self.onStatError(err); - if (stat.isDirectory()) return self.redirect(path$60); - self.emit("file", path$60, stat); - self.send(path$60, stat); + if (stat.isDirectory()) return self.redirect(path$61); + self.emit("file", path$61, stat); + self.send(path$61, stat); }); function next(err) { if (self._extensions.length <= i) return err ? self.onStatError(err) : self.error(404); - var p = path$60 + "." + self._extensions[i++]; + var p = path$61 + "." + self._extensions[i++]; debug("stat \"%s\"", p); - fs$18.stat(p, function(err, stat) { + fs$19.stat(p, function(err, stat) { if (err) return next(err); if (stat.isDirectory()) return next(); self.emit("file", p, stat); @@ -35264,7 +35264,7 @@ var require_send = /* @__PURE__ */ __commonJSMin(((exports, module) => { * @param {String} path * @api private */ - SendStream.prototype.sendIndex = function sendIndex(path$61) { + SendStream.prototype.sendIndex = function sendIndex(path$62) { var i = -1; var self = this; function next(err) { @@ -35272,9 +35272,9 @@ var require_send = /* @__PURE__ */ __commonJSMin(((exports, module) => { if (err) return self.onStatError(err); return self.error(404); } - var p = join(path$61, self._index[i]); + var p = join(path$62, self._index[i]); debug("stat \"%s\"", p); - fs$18.stat(p, function(err, stat) { + fs$19.stat(p, function(err, stat) { if (err) return next(err); if (stat.isDirectory()) return next(); self.emit("file", p, stat); @@ -35290,10 +35290,10 @@ var require_send = /* @__PURE__ */ __commonJSMin(((exports, module) => { * @param {Object} options * @api private */ - SendStream.prototype.stream = function stream(path$62, options) { + SendStream.prototype.stream = function stream(path$63, options) { var self = this; var res = this.res; - var stream$5 = fs$18.createReadStream(path$62, options); + var stream$5 = fs$19.createReadStream(path$63, options); this.emit("stream", stream$5); stream$5.pipe(res); function cleanup() { @@ -35315,10 +35315,10 @@ var require_send = /* @__PURE__ */ __commonJSMin(((exports, module) => { * @param {String} path * @api private */ - SendStream.prototype.type = function type(path$63) { + SendStream.prototype.type = function type(path$64) { var res = this.res; if (res.getHeader("Content-Type")) return; - var type = mime.lookup(path$63); + var type = mime.lookup(path$64); if (!type) { debug("no content-type"); return; @@ -35335,9 +35335,9 @@ var require_send = /* @__PURE__ */ __commonJSMin(((exports, module) => { * @param {Object} stat * @api private */ - SendStream.prototype.setHeader = function setHeader(path$64, stat) { + SendStream.prototype.setHeader = function setHeader(path$65, stat) { var res = this.res; - this.emit("headers", res, path$64, stat); + this.emit("headers", res, path$65, stat); if (this._acceptRanges && !res.getHeader("Accept-Ranges")) { debug("accept ranges"); res.setHeader("Accept-Ranges", "bytes"); @@ -35431,9 +35431,9 @@ var require_send = /* @__PURE__ */ __commonJSMin(((exports, module) => { * @param {String} path * @api private */ - function decode(path$65) { + function decode(path$66) { try { - return decodeURIComponent(path$65); + return decodeURIComponent(path$66); } catch (err) { return -1; } @@ -35536,7 +35536,7 @@ var require_send = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/forwarded/index.js +//#region ../../../../../node_modules/forwarded/index.js /*! * forwarded * Copyright(c) 2014-2017 Douglas Christopher Wilson @@ -35598,7 +35598,7 @@ var require_forwarded = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/ipaddr.js/lib/ipaddr.js +//#region ../../../../../node_modules/ipaddr.js/lib/ipaddr.js var require_ipaddr = /* @__PURE__ */ __commonJSMin(((exports, module) => { (function() { var expandIPv6, ipaddr = {}, ipv4Part, ipv4Regexes, ipv6Part, ipv6Regexes, matchCIDR, root = this, zoneIndex; @@ -36270,7 +36270,7 @@ var require_ipaddr = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/proxy-addr/index.js +//#region ../../../../../node_modules/proxy-addr/index.js /*! * proxy-addr * Copyright(c) 2014-2016 Douglas Christopher Wilson @@ -36475,7 +36475,7 @@ var require_proxy_addr = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/express/lib/utils.js +//#region ../../../../../node_modules/express/lib/utils.js /*! * express * Copyright(c) 2009-2013 TJ Holowaychuk @@ -36708,7 +36708,7 @@ var require_utils$1 = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/express/lib/application.js +//#region ../../../../../node_modules/express/lib/application.js /*! * express * Copyright(c) 2009-2013 TJ Holowaychuk @@ -36855,13 +36855,13 @@ var require_application = /* @__PURE__ */ __commonJSMin(((exports, module) => { */ app.use = function use(fn) { var offset = 0; - var path$49 = "/"; + var path$50 = "/"; if (typeof fn !== "function") { var arg = fn; while (Array.isArray(arg) && arg.length !== 0) arg = arg[0]; if (typeof arg !== "function") { offset = 1; - path$49 = fn; + path$50 = fn; } } var fns = flatten(slice.call(arguments, offset)); @@ -36869,11 +36869,11 @@ var require_application = /* @__PURE__ */ __commonJSMin(((exports, module) => { this.lazyrouter(); var router = this._router; fns.forEach(function(fn) { - if (!fn || !fn.handle || !fn.set) return router.use(path$49, fn); - debug(".use app under %s", path$49); - fn.mountpath = path$49; + if (!fn || !fn.handle || !fn.set) return router.use(path$50, fn); + debug(".use app under %s", path$50); + fn.mountpath = path$50; fn.parent = this; - router.use(path$49, function mounted_app(req, res, next) { + router.use(path$50, function mounted_app(req, res, next) { var orig = req.app; fn.handle(req, res, function(err) { setPrototypeOf(req, orig.request); @@ -36894,9 +36894,9 @@ var require_application = /* @__PURE__ */ __commonJSMin(((exports, module) => { * * @public */ - app.route = function route(path$50) { + app.route = function route(path$51) { this.lazyrouter(); - return this._router.route(path$50); + return this._router.route(path$51); }; /** * Register the given template engine callback `fn` @@ -37012,7 +37012,7 @@ var require_application = /* @__PURE__ */ __commonJSMin(((exports, module) => { * @return {String} * @private */ - app.path = function path$51() { + app.path = function path$52() { return this.parent ? this.parent.path() + this.mountpath : ""; }; /** @@ -37073,10 +37073,10 @@ var require_application = /* @__PURE__ */ __commonJSMin(((exports, module) => { * Delegate `.VERB(...)` calls to `router.VERB(...)`. */ methods.forEach(function(method) { - app[method] = function(path$52) { - if (method === "get" && arguments.length === 1) return this.set(path$52); + app[method] = function(path$53) { + if (method === "get" && arguments.length === 1) return this.set(path$53); this.lazyrouter(); - var route = this._router.route(path$52); + var route = this._router.route(path$53); route[method].apply(route, slice.call(arguments, 1)); return this; }; @@ -37090,9 +37090,9 @@ var require_application = /* @__PURE__ */ __commonJSMin(((exports, module) => { * @return {app} for chaining * @public */ - app.all = function all(path$53) { + app.all = function all(path$54) { this.lazyrouter(); - var route = this._router.route(path$53); + var route = this._router.route(path$54); var args = slice.call(arguments, 1); for (var i = 0; i < methods.length; i++) route[methods[i]].apply(route, args); return this; @@ -37194,7 +37194,7 @@ var require_application = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/negotiator/lib/charset.js +//#region ../../../../../node_modules/negotiator/lib/charset.js /** * negotiator * Copyright(c) 2012 Isaac Z. Schlueter @@ -37321,7 +37321,7 @@ var require_charset = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/negotiator/lib/encoding.js +//#region ../../../../../node_modules/negotiator/lib/encoding.js /** * negotiator * Copyright(c) 2012 Isaac Z. Schlueter @@ -37459,7 +37459,7 @@ var require_encoding = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/negotiator/lib/language.js +//#region ../../../../../node_modules/negotiator/lib/language.js /** * negotiator * Copyright(c) 2012 Isaac Z. Schlueter @@ -37592,7 +37592,7 @@ var require_language = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/negotiator/lib/mediaType.js +//#region ../../../../../node_modules/negotiator/lib/mediaType.js /** * negotiator * Copyright(c) 2012 Isaac Z. Schlueter @@ -37787,7 +37787,7 @@ var require_mediaType = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/negotiator/index.js +//#region ../../../../../node_modules/negotiator/index.js /*! * negotiator * Copyright(c) 2012 Federico Romero @@ -37854,7 +37854,7 @@ var require_negotiator = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/accepts/index.js +//#region ../../../../../node_modules/accepts/index.js /*! * accepts * Copyright(c) 2014 Jonathan Ong @@ -38022,7 +38022,7 @@ var require_accepts = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/express/lib/request.js +//#region ../../../../../node_modules/express/lib/request.js /*! * express * Copyright(c) 2009-2013 TJ Holowaychuk @@ -38432,7 +38432,7 @@ var require_request = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/cookie-signature/index.js +//#region ../../../../../node_modules/cookie-signature/index.js var require_cookie_signature = /* @__PURE__ */ __commonJSMin(((exports) => { /** * Module dependencies. @@ -38475,7 +38475,7 @@ var require_cookie_signature = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/cookie/index.js +//#region ../../../../../node_modules/cookie/index.js /*! * cookie * Copyright(c) 2012-2014 Roman Shtylman @@ -38716,7 +38716,7 @@ var require_cookie = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/vary/index.js +//#region ../../../../../node_modules/vary/index.js /*! * vary * Copyright(c) 2014-2017 Douglas Christopher Wilson @@ -38806,7 +38806,7 @@ var require_vary = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/express/lib/response.js +//#region ../../../../../node_modules/express/lib/response.js /*! * express * Copyright(c) 2009-2013 TJ Holowaychuk @@ -38827,7 +38827,7 @@ var require_response = /* @__PURE__ */ __commonJSMin(((exports, module) => { var http$3 = require("http"); var isAbsolute = require_utils$1().isAbsolute; var onFinished = require_on_finished(); - var path$13 = require("path"); + var path$14 = require("path"); var statuses = require_statuses(); var merge = require_utils_merge(); var sign = require_cookie_signature().sign; @@ -38836,9 +38836,9 @@ var require_response = /* @__PURE__ */ __commonJSMin(((exports, module) => { var setCharset = require_utils$1().setCharset; var cookie = require_cookie(); var send = require_send(); - var extname = path$13.extname; + var extname = path$14.extname; var mime = send.mime; - var resolve = path$13.resolve; + var resolve = path$14.resolve; var vary = require_vary(); /** * Response prototype. @@ -39102,20 +39102,20 @@ var require_response = /* @__PURE__ */ __commonJSMin(((exports, module) => { * * @public */ - res.sendFile = function sendFile(path$46, options, callback) { + res.sendFile = function sendFile(path$47, options, callback) { var done = callback; var req = this.req; var res = this; var next = req.next; var opts = options || {}; - if (!path$46) throw new TypeError("path argument is required to res.sendFile"); - if (typeof path$46 !== "string") throw new TypeError("path must be a string to res.sendFile"); + if (!path$47) throw new TypeError("path argument is required to res.sendFile"); + if (typeof path$47 !== "string") throw new TypeError("path must be a string to res.sendFile"); if (typeof options === "function") { done = options; opts = {}; } - if (!opts.root && !isAbsolute(path$46)) throw new TypeError("path must be absolute or specify root to res.sendFile"); - sendfile(res, send(req, encodeURI(path$46), opts), opts, function(err) { + if (!opts.root && !isAbsolute(path$47)) throw new TypeError("path must be absolute or specify root to res.sendFile"); + sendfile(res, send(req, encodeURI(path$47), opts), opts, function(err) { if (done) return done(err); if (err && err.code === "EISDIR") return next(); if (err && err.code !== "ECONNABORTED" && err.syscall !== "write") next(err); @@ -39161,7 +39161,7 @@ var require_response = /* @__PURE__ */ __commonJSMin(((exports, module) => { * * @public */ - res.sendfile = function(path$47, options, callback) { + res.sendfile = function(path$48, options, callback) { var done = callback; var req = this.req; var res = this; @@ -39171,7 +39171,7 @@ var require_response = /* @__PURE__ */ __commonJSMin(((exports, module) => { done = options; opts = {}; } - sendfile(res, send(req, path$47, opts), opts, function(err) { + sendfile(res, send(req, path$48, opts), opts, function(err) { if (done) return done(err); if (err && err.code === "EISDIR") return next(); if (err && err.code !== "ECONNABORTED" && err.syscall !== "write") next(err); @@ -39195,7 +39195,7 @@ var require_response = /* @__PURE__ */ __commonJSMin(((exports, module) => { * * @public */ - res.download = function download(path$48, filename, options, callback) { + res.download = function download(path$49, filename, options, callback) { var done = callback; var name = filename; var opts = options || null; @@ -39211,7 +39211,7 @@ var require_response = /* @__PURE__ */ __commonJSMin(((exports, module) => { name = null; opts = filename; } - var headers = { "Content-Disposition": contentDisposition(name || path$48) }; + var headers = { "Content-Disposition": contentDisposition(name || path$49) }; if (opts && opts.headers) { var keys = Object.keys(opts.headers); for (var i = 0; i < keys.length; i++) { @@ -39221,7 +39221,7 @@ var require_response = /* @__PURE__ */ __commonJSMin(((exports, module) => { } opts = Object.create(opts); opts.headers = headers; - var fullPath = !opts.root ? resolve(path$48) : path$48; + var fullPath = !opts.root ? resolve(path$49) : path$49; return this.sendFile(fullPath, opts, done); }; /** @@ -39654,7 +39654,7 @@ var require_response = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/serve-static/index.js +//#region ../../../../../node_modules/serve-static/index.js /*! * serve-static * Copyright(c) 2010 Sencha Inc. @@ -39707,9 +39707,9 @@ var require_serve_static = /* @__PURE__ */ __commonJSMin(((exports, module) => { } var forwardError = !fallthrough; var originalUrl = parseUrl.original(req); - var path$45 = parseUrl(req).pathname; - if (path$45 === "/" && originalUrl.pathname.substr(-1) !== "/") path$45 = ""; - var stream = send(req, path$45, opts); + var path$46 = parseUrl(req).pathname; + if (path$46 === "/" && originalUrl.pathname.substr(-1) !== "/") path$46 = ""; + var stream = send(req, path$46, opts); stream.on("directory", onDirectory); if (setHeaders) stream.on("headers", setHeaders); if (fallthrough) stream.on("file", function onFile() { @@ -39779,7 +39779,7 @@ var require_serve_static = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/express/lib/express.js +//#region ../../../../../node_modules/express/lib/express.js /*! * express * Copyright(c) 2009-2013 TJ Holowaychuk @@ -39879,7 +39879,7 @@ var require_express$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/express/index.js +//#region ../../../../../node_modules/express/index.js /*! * express * Copyright(c) 2009-2013 TJ Holowaychuk @@ -39892,7 +39892,7 @@ var require_express = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/totalist/sync/index.mjs +//#region ../../../../../node_modules/totalist/sync/index.mjs var import_express = /* @__PURE__ */ __toESM(require_express()); function totalist(dir, callback, pre = "") { dir = (0, path.resolve)(".", dir); @@ -39906,7 +39906,7 @@ function totalist(dir, callback, pre = "") { } //#endregion -//#region ../../node_modules/@polka/url/build.mjs +//#region ../../../../../node_modules/@polka/url/build.mjs /** * @typedef ParsedURL * @type {import('.').ParsedURL} @@ -39949,7 +39949,7 @@ function parse$2(req) { } //#endregion -//#region ../../node_modules/mrmime/index.mjs +//#region ../../../../../node_modules/mrmime/index.mjs const mimes = { "3g2": "video/3gpp2", "3gp": "video/3gpp", @@ -40397,7 +40397,7 @@ function lookup(extn) { } //#endregion -//#region ../../node_modules/sirv/build.mjs +//#region ../../../../../node_modules/sirv/build.mjs const noop = () => {}; function isMatch(uri, arr) { for (let i = 0; i < arr.length; i++) if (arr[i].test(uri)) return true; @@ -40542,7 +40542,7 @@ function build_default(dir, opts = {}) { } //#endregion -//#region ../../node_modules/ws/lib/constants.js +//#region ../../../../../node_modules/ws/lib/constants.js var require_constants = /* @__PURE__ */ __commonJSMin(((exports, module) => { const BINARY_TYPES = [ "nodebuffer", @@ -40566,7 +40566,7 @@ var require_constants = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/ws/lib/buffer-util.js +//#region ../../../../../node_modules/ws/lib/buffer-util.js var require_buffer_util = /* @__PURE__ */ __commonJSMin(((exports, module) => { const { EMPTY_BUFFER } = require_constants(); const FastBuffer = Buffer[Symbol.species]; @@ -40667,7 +40667,7 @@ var require_buffer_util = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/ws/lib/limiter.js +//#region ../../../../../node_modules/ws/lib/limiter.js var require_limiter = /* @__PURE__ */ __commonJSMin(((exports, module) => { const kDone = Symbol("kDone"); const kRun = Symbol("kRun"); @@ -40719,7 +40719,7 @@ var require_limiter = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/ws/lib/permessage-deflate.js +//#region ../../../../../node_modules/ws/lib/permessage-deflate.js var require_permessage_deflate = /* @__PURE__ */ __commonJSMin(((exports, module) => { const zlib = require("zlib"); const bufferUtil = require_buffer_util(); @@ -41053,7 +41053,7 @@ var require_permessage_deflate = /* @__PURE__ */ __commonJSMin(((exports, module })); //#endregion -//#region ../../node_modules/ws/lib/validation.js +//#region ../../../../../node_modules/ws/lib/validation.js var require_validation$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => { const { isUtf8 } = require("buffer"); const { hasBlob } = require_constants(); @@ -41250,7 +41250,7 @@ var require_validation$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/ws/lib/receiver.js +//#region ../../../../../node_modules/ws/lib/receiver.js var require_receiver = /* @__PURE__ */ __commonJSMin(((exports, module) => { const { Writable } = require("stream"); const PerMessageDeflate = require_permessage_deflate(); @@ -41698,7 +41698,7 @@ var require_receiver = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/ws/lib/sender.js +//#region ../../../../../node_modules/ws/lib/sender.js var require_sender = /* @__PURE__ */ __commonJSMin(((exports, module) => { const { Duplex: Duplex$3 } = require("stream"); const { randomFillSync } = require("crypto"); @@ -42194,7 +42194,7 @@ var require_sender = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/ws/lib/event-target.js +//#region ../../../../../node_modules/ws/lib/event-target.js var require_event_target = /* @__PURE__ */ __commonJSMin(((exports, module) => { const { kForOnEventAttribute, kListener } = require_constants(); const kCode = Symbol("kCode"); @@ -42414,7 +42414,7 @@ var require_event_target = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/ws/lib/extension.js +//#region ../../../../../node_modules/ws/lib/extension.js var require_extension = /* @__PURE__ */ __commonJSMin(((exports, module) => { const { tokenChars } = require_validation$1(); /** @@ -42558,7 +42558,7 @@ var require_extension = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/ws/lib/websocket.js +//#region ../../../../../node_modules/ws/lib/websocket.js var require_websocket = /* @__PURE__ */ __commonJSMin(((exports, module) => { const EventEmitter$3 = require("events"); const https = require("https"); @@ -43530,7 +43530,7 @@ var require_websocket = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/ws/lib/stream.js +//#region ../../../../../node_modules/ws/lib/stream.js var require_stream = /* @__PURE__ */ __commonJSMin(((exports, module) => { require_websocket(); const { Duplex: Duplex$1 } = require("stream"); @@ -43647,7 +43647,7 @@ var require_stream = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/ws/lib/subprotocol.js +//#region ../../../../../node_modules/ws/lib/subprotocol.js var require_subprotocol = /* @__PURE__ */ __commonJSMin(((exports, module) => { const { tokenChars } = require_validation$1(); /** @@ -43687,7 +43687,7 @@ var require_subprotocol = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/ws/lib/websocket-server.js +//#region ../../../../../node_modules/ws/lib/websocket-server.js var require_websocket_server = /* @__PURE__ */ __commonJSMin(((exports, module) => { const EventEmitter$2 = require("events"); const http$1 = require("http"); @@ -44062,7 +44062,7 @@ var require_websocket_server = /* @__PURE__ */ __commonJSMin(((exports, module) })); //#endregion -//#region ../../node_modules/ws/wrapper.mjs +//#region ../../../../../node_modules/ws/wrapper.mjs var import_stream = /* @__PURE__ */ __toESM(require_stream(), 1); var import_receiver = /* @__PURE__ */ __toESM(require_receiver(), 1); var import_sender = /* @__PURE__ */ __toESM(require_sender(), 1); @@ -44070,7 +44070,7 @@ var import_websocket = /* @__PURE__ */ __toESM(require_websocket(), 1); var import_websocket_server = /* @__PURE__ */ __toESM(require_websocket_server(), 1); //#endregion -//#region ../../node_modules/@hono/node-server/dist/index.mjs +//#region ../../../../../node_modules/@hono/node-server/dist/index.mjs var RequestError = class extends Error { constructor(message, options) { super(message, options); @@ -44483,7 +44483,7 @@ var getRequestListener = (fetchCallback, options = {}) => { }; //#endregion -//#region ../../node_modules/zod/v4/core/core.js +//#region ../../../../../node_modules/zod/v4/core/core.js /** A special constant with type `never` */ const NEVER = Object.freeze({ status: "aborted" }); function $constructor(name, initializer, params) { @@ -44543,7 +44543,7 @@ function config(newConfig) { } //#endregion -//#region ../../node_modules/zod/v4/core/util.js +//#region ../../../../../node_modules/zod/v4/core/util.js function getEnumValues(entries) { const numericValues = Object.values(entries).filter((v) => typeof v === "number"); return Object.entries(entries).filter(([k, _]) => numericValues.indexOf(+k) === -1).map(([_, v]) => v); @@ -44857,7 +44857,7 @@ function issue(...args) { } //#endregion -//#region ../../node_modules/zod/v4/core/errors.js +//#region ../../../../../node_modules/zod/v4/core/errors.js const initializer$1 = (inst, def) => { inst.name = "$ZodError"; Object.defineProperty(inst, "_zod", { @@ -44915,7 +44915,7 @@ function formatError(error, mapper = (issue) => issue.message) { } //#endregion -//#region ../../node_modules/zod/v4/core/parse.js +//#region ../../../../../node_modules/zod/v4/core/parse.js const _parse = (_Err) => (schema, value, _ctx, _params) => { const ctx = _ctx ? Object.assign(_ctx, { async: false }) : { async: false }; const result = schema._zod.run({ @@ -45019,7 +45019,7 @@ const _safeDecodeAsync = (_Err) => async (schema, value, _ctx) => { const safeDecodeAsync$1 = /* @__PURE__ */ _safeDecodeAsync($ZodRealError); //#endregion -//#region ../../node_modules/zod/v4/core/regexes.js +//#region ../../../../../node_modules/zod/v4/core/regexes.js const cuid = /^[cC][^\s-]{8,}$/; const cuid2 = /^[0-9a-z]+$/; const ulid = /^[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$/; @@ -45079,7 +45079,7 @@ const lowercase = /^[^A-Z]*$/; const uppercase = /^[^a-z]*$/; //#endregion -//#region ../../node_modules/zod/v4/core/checks.js +//#region ../../../../../node_modules/zod/v4/core/checks.js const $ZodCheck = /* @__PURE__ */ $constructor("$ZodCheck", (inst, def) => { var _a; inst._zod ?? (inst._zod = {}); @@ -45438,7 +45438,7 @@ const $ZodCheckOverwrite = /* @__PURE__ */ $constructor("$ZodCheckOverwrite", (i }); //#endregion -//#region ../../node_modules/zod/v4/core/doc.js +//#region ../../../../../node_modules/zod/v4/core/doc.js var Doc = class { constructor(args = []) { this.content = []; @@ -45470,7 +45470,7 @@ var Doc = class { }; //#endregion -//#region ../../node_modules/zod/v4/core/versions.js +//#region ../../../../../node_modules/zod/v4/core/versions.js const version = { major: 4, minor: 3, @@ -45478,7 +45478,7 @@ const version = { }; //#endregion -//#region ../../node_modules/zod/v4/core/schemas.js +//#region ../../../../../node_modules/zod/v4/core/schemas.js const $ZodType = /* @__PURE__ */ $constructor("$ZodType", (inst, def) => { var _a; inst ?? (inst = {}); @@ -46696,7 +46696,7 @@ function handleRefineResult(result, payload, input, inst) { } //#endregion -//#region ../../node_modules/zod/v4/core/registries.js +//#region ../../../../../node_modules/zod/v4/core/registries.js var _a$1; var $ZodRegistry = class { constructor() { @@ -46744,7 +46744,7 @@ function registry() { const globalRegistry = globalThis.__zod_globalRegistry; //#endregion -//#region ../../node_modules/zod/v4/core/api.js +//#region ../../../../../node_modules/zod/v4/core/api.js /* @__NO_SIDE_EFFECTS__ */ function _string(Class, params) { return new Class({ @@ -47289,7 +47289,7 @@ function meta$2(metadata) { } //#endregion -//#region ../../node_modules/zod/v4/core/to-json-schema.js +//#region ../../../../../node_modules/zod/v4/core/to-json-schema.js function initializeContext(params) { let target = params?.target ?? "draft-2020-12"; if (target === "draft-4") target = "draft-04"; @@ -47575,7 +47575,7 @@ const createStandardJSONSchemaMethod = (schema, io, processors = {}) => (params) }; //#endregion -//#region ../../node_modules/zod/v4/core/json-schema-processors.js +//#region ../../../../../node_modules/zod/v4/core/json-schema-processors.js const formatMap = { guid: "uuid", url: "uri", @@ -48032,7 +48032,7 @@ function toJSONSchema(input, params) { } //#endregion -//#region ../../node_modules/zod/v4/classic/iso.js +//#region ../../../../../node_modules/zod/v4/classic/iso.js const ZodISODateTime = /* @__PURE__ */ $constructor("ZodISODateTime", (inst, def) => { $ZodISODateTime.init(inst, def); ZodStringFormat.init(inst, def); @@ -48063,7 +48063,7 @@ function duration(params) { } //#endregion -//#region ../../node_modules/zod/v4/classic/errors.js +//#region ../../../../../node_modules/zod/v4/classic/errors.js const initializer = (inst, issues) => { $ZodError.init(inst, issues); inst.name = "ZodError"; @@ -48087,7 +48087,7 @@ const ZodError$1 = $constructor("ZodError", initializer); const ZodRealError = $constructor("ZodError", initializer, { Parent: Error }); //#endregion -//#region ../../node_modules/zod/v4/classic/parse.js +//#region ../../../../../node_modules/zod/v4/classic/parse.js const parse = /* @__PURE__ */ _parse(ZodRealError); const parseAsync = /* @__PURE__ */ _parseAsync(ZodRealError); const safeParse$1 = /* @__PURE__ */ _safeParse(ZodRealError); @@ -48102,7 +48102,7 @@ const safeEncodeAsync = /* @__PURE__ */ _safeEncodeAsync(ZodRealError); const safeDecodeAsync = /* @__PURE__ */ _safeDecodeAsync(ZodRealError); //#endregion -//#region ../../node_modules/zod/v4/classic/schemas.js +//#region ../../../../../node_modules/zod/v4/classic/schemas.js const ZodType$1 = /* @__PURE__ */ $constructor("ZodType", (inst, def) => { $ZodType.init(inst, def); Object.assign(inst["~standard"], { jsonSchema: { @@ -48734,7 +48734,7 @@ function preprocess(fn, schema) { } //#endregion -//#region ../../node_modules/@modelcontextprotocol/sdk/dist/esm/types.js +//#region ../../../../../node_modules/@modelcontextprotocol/sdk/dist/esm/types.js const LATEST_PROTOCOL_VERSION = "2025-11-25"; const DEFAULT_NEGOTIATED_PROTOCOL_VERSION = "2025-03-26"; const SUPPORTED_PROTOCOL_VERSIONS = [ @@ -49993,7 +49993,7 @@ var UrlElicitationRequiredError = class extends McpError { }; //#endregion -//#region ../../node_modules/@modelcontextprotocol/sdk/dist/esm/server/webStandardStreamableHttp.js +//#region ../../../../../node_modules/@modelcontextprotocol/sdk/dist/esm/server/webStandardStreamableHttp.js /** * Web Standards Streamable HTTP Server Transport * @@ -50551,7 +50551,7 @@ var WebStandardStreamableHTTPServerTransport = class { }; //#endregion -//#region ../../node_modules/@modelcontextprotocol/sdk/dist/esm/server/streamableHttp.js +//#region ../../../../../node_modules/@modelcontextprotocol/sdk/dist/esm/server/streamableHttp.js /** * Node.js HTTP Streamable HTTP Server Transport * @@ -50698,7 +50698,7 @@ var StreamableHTTPServerTransport = class { }; //#endregion -//#region ../../node_modules/zod/v3/helpers/util.js +//#region ../../../../../node_modules/zod/v3/helpers/util.js var util$1; (function(util) { util.assertEqual = (_) => {}; @@ -50795,7 +50795,7 @@ const getParsedType = (data) => { }; //#endregion -//#region ../../node_modules/zod/v3/ZodError.js +//#region ../../../../../node_modules/zod/v3/ZodError.js const ZodIssueCode = util$1.arrayToEnum([ "invalid_type", "invalid_literal", @@ -50895,7 +50895,7 @@ ZodError.create = (issues) => { }; //#endregion -//#region ../../node_modules/zod/v3/locales/en.js +//#region ../../../../../node_modules/zod/v3/locales/en.js const errorMap = (issue, _ctx) => { let message; switch (issue.code) { @@ -50973,14 +50973,14 @@ const errorMap = (issue, _ctx) => { }; //#endregion -//#region ../../node_modules/zod/v3/errors.js +//#region ../../../../../node_modules/zod/v3/errors.js let overrideErrorMap = errorMap; function getErrorMap() { return overrideErrorMap; } //#endregion -//#region ../../node_modules/zod/v3/helpers/parseUtil.js +//#region ../../../../../node_modules/zod/v3/helpers/parseUtil.js const makeIssue = (params) => { const { data, path, errorMaps, issueData } = params; const fullPath = [...path, ...issueData.path || []]; @@ -51085,7 +51085,7 @@ const isValid = (x) => x.status === "valid"; const isAsync = (x) => typeof Promise !== "undefined" && x instanceof Promise; //#endregion -//#region ../../node_modules/zod/v3/helpers/errorUtil.js +//#region ../../../../../node_modules/zod/v3/helpers/errorUtil.js var errorUtil; (function(errorUtil) { errorUtil.errToObj = (message) => typeof message === "string" ? { message } : message || {}; @@ -51093,7 +51093,7 @@ var errorUtil; })(errorUtil || (errorUtil = {})); //#endregion -//#region ../../node_modules/zod/v3/types.js +//#region ../../../../../node_modules/zod/v3/types.js var ParseInputLazyPath = class { constructor(parent, value, path, key) { this._cachedPath = []; @@ -54244,7 +54244,7 @@ const preprocessType = ZodEffects.createWithPreprocess; const pipelineType = ZodPipeline.create; //#endregion -//#region ../../node_modules/zod/v4/mini/schemas.js +//#region ../../../../../node_modules/zod/v4/mini/schemas.js const ZodMiniType = /* @__PURE__ */ $constructor("ZodMiniType", (inst, def) => { if (!inst._zod) throw new Error("Uninitialized schema in ZodMiniType."); $ZodType.init(inst, def); @@ -54290,7 +54290,7 @@ const describe = describe$2; const meta = meta$2; //#endregion -//#region ../../node_modules/@modelcontextprotocol/sdk/dist/esm/server/zod-compat.js +//#region ../../../../../node_modules/@modelcontextprotocol/sdk/dist/esm/server/zod-compat.js function isZ4Schema(s) { return !!s._zod; } @@ -54406,7 +54406,7 @@ function getLiteralValue(schema) { } //#endregion -//#region ../../node_modules/@modelcontextprotocol/sdk/dist/esm/experimental/tasks/interfaces.js +//#region ../../../../../node_modules/@modelcontextprotocol/sdk/dist/esm/experimental/tasks/interfaces.js /** * Experimental task interfaces for MCP SDK. * WARNING: These APIs are experimental and may change without notice. @@ -54424,7 +54424,7 @@ function isTerminal(status) { } //#endregion -//#region ../../node_modules/zod-to-json-schema/dist/esm/Options.js +//#region ../../../../../node_modules/zod-to-json-schema/dist/esm/Options.js const ignoreOverride = Symbol("Let zodToJsonSchema decide on which parser to use"); const defaultOptions$2 = { name: void 0, @@ -54459,7 +54459,7 @@ const getDefaultOptions = (options) => typeof options === "string" ? { }; //#endregion -//#region ../../node_modules/zod-to-json-schema/dist/esm/Refs.js +//#region ../../../../../node_modules/zod-to-json-schema/dist/esm/Refs.js const getRefs = (options) => { const _options = getDefaultOptions(options); const currentPath = _options.name !== void 0 ? [ @@ -54485,7 +54485,7 @@ const getRefs = (options) => { }; //#endregion -//#region ../../node_modules/zod-to-json-schema/dist/esm/errorMessages.js +//#region ../../../../../node_modules/zod-to-json-schema/dist/esm/errorMessages.js function addErrorMessage(res, key, errorMessage, refs) { if (!refs?.errorMessages) return; if (errorMessage) res.errorMessage = { @@ -54499,7 +54499,7 @@ function setResponseValueAndErrors(res, key, value, errorMessage, refs) { } //#endregion -//#region ../../node_modules/zod-to-json-schema/dist/esm/getRelativePath.js +//#region ../../../../../node_modules/zod-to-json-schema/dist/esm/getRelativePath.js const getRelativePath = (pathA, pathB) => { let i = 0; for (; i < pathA.length && i < pathB.length; i++) if (pathA[i] !== pathB[i]) break; @@ -54507,7 +54507,7 @@ const getRelativePath = (pathA, pathB) => { }; //#endregion -//#region ../../node_modules/zod-to-json-schema/dist/esm/parsers/any.js +//#region ../../../../../node_modules/zod-to-json-schema/dist/esm/parsers/any.js function parseAnyDef(refs) { if (refs.target !== "openAi") return {}; const anyDefinitionPath = [ @@ -54520,7 +54520,7 @@ function parseAnyDef(refs) { } //#endregion -//#region ../../node_modules/zod-to-json-schema/dist/esm/parsers/array.js +//#region ../../../../../node_modules/zod-to-json-schema/dist/esm/parsers/array.js function parseArrayDef(def, refs) { const res = { type: "array" }; if (def.type?._def && def.type?._def?.typeName !== ZodFirstPartyTypeKind.ZodAny) res.items = parseDef(def.type._def, { @@ -54537,7 +54537,7 @@ function parseArrayDef(def, refs) { } //#endregion -//#region ../../node_modules/zod-to-json-schema/dist/esm/parsers/bigint.js +//#region ../../../../../node_modules/zod-to-json-schema/dist/esm/parsers/bigint.js function parseBigintDef(def, refs) { const res = { type: "integer", @@ -54569,25 +54569,25 @@ function parseBigintDef(def, refs) { } //#endregion -//#region ../../node_modules/zod-to-json-schema/dist/esm/parsers/boolean.js +//#region ../../../../../node_modules/zod-to-json-schema/dist/esm/parsers/boolean.js function parseBooleanDef() { return { type: "boolean" }; } //#endregion -//#region ../../node_modules/zod-to-json-schema/dist/esm/parsers/branded.js +//#region ../../../../../node_modules/zod-to-json-schema/dist/esm/parsers/branded.js function parseBrandedDef(_def, refs) { return parseDef(_def.type._def, refs); } //#endregion -//#region ../../node_modules/zod-to-json-schema/dist/esm/parsers/catch.js +//#region ../../../../../node_modules/zod-to-json-schema/dist/esm/parsers/catch.js const parseCatchDef = (def, refs) => { return parseDef(def.innerType._def, refs); }; //#endregion -//#region ../../node_modules/zod-to-json-schema/dist/esm/parsers/date.js +//#region ../../../../../node_modules/zod-to-json-schema/dist/esm/parsers/date.js function parseDateDef(def, refs, overrideDateStrategy) { const strategy = overrideDateStrategy ?? refs.dateStrategy; if (Array.isArray(strategy)) return { anyOf: strategy.map((item, i) => parseDateDef(def, refs, item)) }; @@ -54622,7 +54622,7 @@ const integerDateParser = (def, refs) => { }; //#endregion -//#region ../../node_modules/zod-to-json-schema/dist/esm/parsers/default.js +//#region ../../../../../node_modules/zod-to-json-schema/dist/esm/parsers/default.js function parseDefaultDef(_def, refs) { return { ...parseDef(_def.innerType._def, refs), @@ -54631,13 +54631,13 @@ function parseDefaultDef(_def, refs) { } //#endregion -//#region ../../node_modules/zod-to-json-schema/dist/esm/parsers/effects.js +//#region ../../../../../node_modules/zod-to-json-schema/dist/esm/parsers/effects.js function parseEffectsDef(_def, refs) { return refs.effectStrategy === "input" ? parseDef(_def.schema._def, refs) : parseAnyDef(refs); } //#endregion -//#region ../../node_modules/zod-to-json-schema/dist/esm/parsers/enum.js +//#region ../../../../../node_modules/zod-to-json-schema/dist/esm/parsers/enum.js function parseEnumDef(def) { return { type: "string", @@ -54646,7 +54646,7 @@ function parseEnumDef(def) { } //#endregion -//#region ../../node_modules/zod-to-json-schema/dist/esm/parsers/intersection.js +//#region ../../../../../node_modules/zod-to-json-schema/dist/esm/parsers/intersection.js const isJsonSchema7AllOfType = (type) => { if ("type" in type && type.type === "string") return false; return "allOf" in type; @@ -54689,7 +54689,7 @@ function parseIntersectionDef(def, refs) { } //#endregion -//#region ../../node_modules/zod-to-json-schema/dist/esm/parsers/literal.js +//#region ../../../../../node_modules/zod-to-json-schema/dist/esm/parsers/literal.js function parseLiteralDef(def, refs) { const parsedType = typeof def.value; if (parsedType !== "bigint" && parsedType !== "number" && parsedType !== "boolean" && parsedType !== "string") return { type: Array.isArray(def.value) ? "array" : "object" }; @@ -54704,7 +54704,7 @@ function parseLiteralDef(def, refs) { } //#endregion -//#region ../../node_modules/zod-to-json-schema/dist/esm/parsers/string.js +//#region ../../../../../node_modules/zod-to-json-schema/dist/esm/parsers/string.js let emojiRegex = void 0; /** * Generated from the regular expressions found here as of 2024-05-22: @@ -54950,7 +54950,7 @@ function stringifyRegExpWithFlags(regex, refs) { } //#endregion -//#region ../../node_modules/zod-to-json-schema/dist/esm/parsers/record.js +//#region ../../../../../node_modules/zod-to-json-schema/dist/esm/parsers/record.js function parseRecordDef(def, refs) { if (refs.target === "openAi") console.warn("Warning: OpenAI may not support records in schemas! Try an array of key-value pairs instead."); if (refs.target === "openApi3" && def.keyType?._def.typeName === ZodFirstPartyTypeKind.ZodEnum) return { @@ -54998,7 +54998,7 @@ function parseRecordDef(def, refs) { } //#endregion -//#region ../../node_modules/zod-to-json-schema/dist/esm/parsers/map.js +//#region ../../../../../node_modules/zod-to-json-schema/dist/esm/parsers/map.js function parseMapDef(def, refs) { if (refs.mapStrategy === "record") return parseRecordDef(def, refs); return { @@ -55030,7 +55030,7 @@ function parseMapDef(def, refs) { } //#endregion -//#region ../../node_modules/zod-to-json-schema/dist/esm/parsers/nativeEnum.js +//#region ../../../../../node_modules/zod-to-json-schema/dist/esm/parsers/nativeEnum.js function parseNativeEnumDef(def) { const object = def.values; const actualValues = Object.keys(def.values).filter((key) => { @@ -55044,7 +55044,7 @@ function parseNativeEnumDef(def) { } //#endregion -//#region ../../node_modules/zod-to-json-schema/dist/esm/parsers/never.js +//#region ../../../../../node_modules/zod-to-json-schema/dist/esm/parsers/never.js function parseNeverDef(refs) { return refs.target === "openAi" ? void 0 : { not: parseAnyDef({ ...refs, @@ -55053,7 +55053,7 @@ function parseNeverDef(refs) { } //#endregion -//#region ../../node_modules/zod-to-json-schema/dist/esm/parsers/null.js +//#region ../../../../../node_modules/zod-to-json-schema/dist/esm/parsers/null.js function parseNullDef(refs) { return refs.target === "openApi3" ? { enum: ["null"], @@ -55062,7 +55062,7 @@ function parseNullDef(refs) { } //#endregion -//#region ../../node_modules/zod-to-json-schema/dist/esm/parsers/union.js +//#region ../../../../../node_modules/zod-to-json-schema/dist/esm/parsers/union.js const primitiveMappings = { ZodString: "string", ZodNumber: "number", @@ -55119,7 +55119,7 @@ const asAnyOf = (def, refs) => { }; //#endregion -//#region ../../node_modules/zod-to-json-schema/dist/esm/parsers/nullable.js +//#region ../../../../../node_modules/zod-to-json-schema/dist/esm/parsers/nullable.js function parseNullableDef(def, refs) { if ([ "ZodString", @@ -55160,7 +55160,7 @@ function parseNullableDef(def, refs) { } //#endregion -//#region ../../node_modules/zod-to-json-schema/dist/esm/parsers/number.js +//#region ../../../../../node_modules/zod-to-json-schema/dist/esm/parsers/number.js function parseNumberDef(def, refs) { const res = { type: "number" }; if (!def.checks) return res; @@ -55193,7 +55193,7 @@ function parseNumberDef(def, refs) { } //#endregion -//#region ../../node_modules/zod-to-json-schema/dist/esm/parsers/object.js +//#region ../../../../../node_modules/zod-to-json-schema/dist/esm/parsers/object.js function parseObjectDef(def, refs) { const forceOptionalIntoNullable = refs.target === "openAi"; const result = { @@ -55253,7 +55253,7 @@ function safeIsOptional(schema) { } //#endregion -//#region ../../node_modules/zod-to-json-schema/dist/esm/parsers/optional.js +//#region ../../../../../node_modules/zod-to-json-schema/dist/esm/parsers/optional.js const parseOptionalDef = (def, refs) => { if (refs.currentPath.toString() === refs.propertyPath?.toString()) return parseDef(def.innerType._def, refs); const innerSchema = parseDef(def.innerType._def, { @@ -55268,7 +55268,7 @@ const parseOptionalDef = (def, refs) => { }; //#endregion -//#region ../../node_modules/zod-to-json-schema/dist/esm/parsers/pipeline.js +//#region ../../../../../node_modules/zod-to-json-schema/dist/esm/parsers/pipeline.js const parsePipelineDef = (def, refs) => { if (refs.pipeStrategy === "input") return parseDef(def.in._def, refs); else if (refs.pipeStrategy === "output") return parseDef(def.out._def, refs); @@ -55291,13 +55291,13 @@ const parsePipelineDef = (def, refs) => { }; //#endregion -//#region ../../node_modules/zod-to-json-schema/dist/esm/parsers/promise.js +//#region ../../../../../node_modules/zod-to-json-schema/dist/esm/parsers/promise.js function parsePromiseDef(def, refs) { return parseDef(def.type._def, refs); } //#endregion -//#region ../../node_modules/zod-to-json-schema/dist/esm/parsers/set.js +//#region ../../../../../node_modules/zod-to-json-schema/dist/esm/parsers/set.js function parseSetDef(def, refs) { const schema = { type: "array", @@ -55313,7 +55313,7 @@ function parseSetDef(def, refs) { } //#endregion -//#region ../../node_modules/zod-to-json-schema/dist/esm/parsers/tuple.js +//#region ../../../../../node_modules/zod-to-json-schema/dist/esm/parsers/tuple.js function parseTupleDef(def, refs) { if (def.rest) return { type: "array", @@ -55347,25 +55347,25 @@ function parseTupleDef(def, refs) { } //#endregion -//#region ../../node_modules/zod-to-json-schema/dist/esm/parsers/undefined.js +//#region ../../../../../node_modules/zod-to-json-schema/dist/esm/parsers/undefined.js function parseUndefinedDef(refs) { return { not: parseAnyDef(refs) }; } //#endregion -//#region ../../node_modules/zod-to-json-schema/dist/esm/parsers/unknown.js +//#region ../../../../../node_modules/zod-to-json-schema/dist/esm/parsers/unknown.js function parseUnknownDef(refs) { return parseAnyDef(refs); } //#endregion -//#region ../../node_modules/zod-to-json-schema/dist/esm/parsers/readonly.js +//#region ../../../../../node_modules/zod-to-json-schema/dist/esm/parsers/readonly.js const parseReadonlyDef = (def, refs) => { return parseDef(def.innerType._def, refs); }; //#endregion -//#region ../../node_modules/zod-to-json-schema/dist/esm/selectParser.js +//#region ../../../../../node_modules/zod-to-json-schema/dist/esm/selectParser.js const selectParser = (def, typeName, refs) => { switch (typeName) { case ZodFirstPartyTypeKind.ZodString: return parseStringDef(def, refs); @@ -55409,7 +55409,7 @@ const selectParser = (def, typeName, refs) => { }; //#endregion -//#region ../../node_modules/zod-to-json-schema/dist/esm/parseDef.js +//#region ../../../../../node_modules/zod-to-json-schema/dist/esm/parseDef.js function parseDef(def, refs, forceResolution = false) { const seenItem = refs.seen.get(def); if (refs.override) { @@ -55459,7 +55459,7 @@ const addMeta = (def, refs, jsonSchema) => { }; //#endregion -//#region ../../node_modules/zod-to-json-schema/dist/esm/zodToJsonSchema.js +//#region ../../../../../node_modules/zod-to-json-schema/dist/esm/zodToJsonSchema.js const zodToJsonSchema = (schema, options) => { const refs = getRefs(options); let definitions = typeof options === "object" && options.definitions ? Object.entries(options.definitions).reduce((acc, [name, schema]) => ({ @@ -55523,7 +55523,7 @@ const zodToJsonSchema = (schema, options) => { }; //#endregion -//#region ../../node_modules/@modelcontextprotocol/sdk/dist/esm/server/zod-json-schema-compat.js +//#region ../../../../../node_modules/@modelcontextprotocol/sdk/dist/esm/server/zod-json-schema-compat.js function mapMiniTarget(t) { if (!t) return "draft-7"; if (t === "jsonSchema7" || t === "draft-7") return "draft-7"; @@ -55554,7 +55554,7 @@ function parseWithCompat(schema, data) { } //#endregion -//#region ../../node_modules/@modelcontextprotocol/sdk/dist/esm/shared/protocol.js +//#region ../../../../../node_modules/@modelcontextprotocol/sdk/dist/esm/shared/protocol.js /** * The default request timeout, in miliseconds. */ @@ -56405,7 +56405,7 @@ function mergeCapabilities(base, additional) { } //#endregion -//#region ../../node_modules/ajv/dist/compile/codegen/code.js +//#region ../../../../../node_modules/ajv/dist/compile/codegen/code.js var require_code$1 = /* @__PURE__ */ __commonJSMin(((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); exports.regexpCode = exports.getEsmExportName = exports.getProperty = exports.safeStringify = exports.stringify = exports.strConcat = exports.addCodeArg = exports.str = exports._ = exports.nil = exports._Code = exports.Name = exports.IDENTIFIER = exports._CodeOrName = void 0; @@ -56541,7 +56541,7 @@ var require_code$1 = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/ajv/dist/compile/codegen/scope.js +//#region ../../../../../node_modules/ajv/dist/compile/codegen/scope.js var require_scope = /* @__PURE__ */ __commonJSMin(((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); exports.ValueScope = exports.ValueScopeName = exports.Scope = exports.varKinds = exports.UsedValueState = void 0; @@ -56679,7 +56679,7 @@ var require_scope = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/ajv/dist/compile/codegen/index.js +//#region ../../../../../node_modules/ajv/dist/compile/codegen/index.js var require_codegen = /* @__PURE__ */ __commonJSMin(((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); exports.or = exports.and = exports.not = exports.CodeGen = exports.operators = exports.varKinds = exports.ValueScopeName = exports.ValueScope = exports.Scope = exports.Name = exports.regexpCode = exports.stringify = exports.getProperty = exports.nil = exports.strConcat = exports.str = exports._ = void 0; @@ -57349,7 +57349,7 @@ var require_codegen = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/ajv/dist/compile/util.js +//#region ../../../../../node_modules/ajv/dist/compile/util.js var require_util = /* @__PURE__ */ __commonJSMin(((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); exports.checkStrictMode = exports.getErrorPath = exports.Type = exports.useFunc = exports.setEvaluated = exports.evaluatedPropsToName = exports.mergeEvaluated = exports.eachItem = exports.unescapeJsonPointer = exports.escapeJsonPointer = exports.escapeFragment = exports.unescapeFragment = exports.schemaRefOrVal = exports.schemaHasRulesButRef = exports.schemaHasRules = exports.checkUnknownRules = exports.alwaysValidSchema = exports.toHash = void 0; @@ -57491,7 +57491,7 @@ var require_util = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/ajv/dist/compile/names.js +//#region ../../../../../node_modules/ajv/dist/compile/names.js var require_names = /* @__PURE__ */ __commonJSMin(((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); const codegen_1 = require_codegen(); @@ -57517,7 +57517,7 @@ var require_names = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/ajv/dist/compile/errors.js +//#region ../../../../../node_modules/ajv/dist/compile/errors.js var require_errors$1 = /* @__PURE__ */ __commonJSMin(((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); exports.extendErrors = exports.resetErrorsCount = exports.reportExtraError = exports.reportError = exports.keyword$DataError = exports.keywordError = void 0; @@ -57614,7 +57614,7 @@ var require_errors$1 = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/ajv/dist/compile/validate/boolSchema.js +//#region ../../../../../node_modules/ajv/dist/compile/validate/boolSchema.js var require_boolSchema = /* @__PURE__ */ __commonJSMin(((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); exports.boolOrEmptySchema = exports.topBoolOrEmptySchema = void 0; @@ -57657,7 +57657,7 @@ var require_boolSchema = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/ajv/dist/compile/rules.js +//#region ../../../../../node_modules/ajv/dist/compile/rules.js var require_rules = /* @__PURE__ */ __commonJSMin(((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); exports.getRules = exports.isJSONType = void 0; @@ -57716,7 +57716,7 @@ var require_rules = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/ajv/dist/compile/validate/applicability.js +//#region ../../../../../node_modules/ajv/dist/compile/validate/applicability.js var require_applicability = /* @__PURE__ */ __commonJSMin(((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); exports.shouldUseRule = exports.shouldUseGroup = exports.schemaHasRulesForType = void 0; @@ -57737,7 +57737,7 @@ var require_applicability = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/ajv/dist/compile/validate/dataType.js +//#region ../../../../../node_modules/ajv/dist/compile/validate/dataType.js var require_dataType = /* @__PURE__ */ __commonJSMin(((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); exports.reportTypeError = exports.checkDataTypes = exports.checkDataType = exports.coerceAndCheckDataType = exports.getJSONTypes = exports.getSchemaTypes = exports.DataType = void 0; @@ -57902,7 +57902,7 @@ var require_dataType = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/ajv/dist/compile/validate/defaults.js +//#region ../../../../../node_modules/ajv/dist/compile/validate/defaults.js var require_defaults = /* @__PURE__ */ __commonJSMin(((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); exports.assignDefaults = void 0; @@ -57929,7 +57929,7 @@ var require_defaults = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/ajv/dist/vocabularies/code.js +//#region ../../../../../node_modules/ajv/dist/vocabularies/code.js var require_code = /* @__PURE__ */ __commonJSMin(((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); exports.validateUnion = exports.validateArray = exports.usePattern = exports.callValidateCode = exports.schemaProperties = exports.allSchemaProperties = exports.noPropertyInData = exports.propertyInData = exports.isOwnProperty = exports.hasPropFunc = exports.reportMissingProp = exports.checkMissingProp = exports.checkReportMissingProp = void 0; @@ -58054,7 +58054,7 @@ var require_code = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/ajv/dist/compile/validate/keyword.js +//#region ../../../../../node_modules/ajv/dist/compile/validate/keyword.js var require_keyword = /* @__PURE__ */ __commonJSMin(((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); exports.validateKeywordUsage = exports.validSchemaType = exports.funcKeywordCode = exports.macroKeywordCode = void 0; @@ -58161,7 +58161,7 @@ var require_keyword = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/ajv/dist/compile/validate/subschema.js +//#region ../../../../../node_modules/ajv/dist/compile/validate/subschema.js var require_subschema = /* @__PURE__ */ __commonJSMin(((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); exports.extendSubschemaMode = exports.extendSubschemaData = exports.getSubschema = void 0; @@ -58229,7 +58229,7 @@ var require_subschema = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/fast-deep-equal/index.js +//#region ../../../../../node_modules/fast-deep-equal/index.js var require_fast_deep_equal = /* @__PURE__ */ __commonJSMin(((exports, module) => { module.exports = function equal(a, b) { if (a === b) return true; @@ -58260,7 +58260,7 @@ var require_fast_deep_equal = /* @__PURE__ */ __commonJSMin(((exports, module) = })); //#endregion -//#region ../../node_modules/json-schema-traverse/index.js +//#region ../../../../../node_modules/json-schema-traverse/index.js var require_json_schema_traverse = /* @__PURE__ */ __commonJSMin(((exports, module) => { var traverse = module.exports = function(schema, opts, cb) { if (typeof opts == "function") { @@ -58336,7 +58336,7 @@ var require_json_schema_traverse = /* @__PURE__ */ __commonJSMin(((exports, modu })); //#endregion -//#region ../../node_modules/ajv/dist/compile/resolve.js +//#region ../../../../../node_modules/ajv/dist/compile/resolve.js var require_resolve = /* @__PURE__ */ __commonJSMin(((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); exports.getSchemaRefs = exports.resolveUrl = exports.normalizeId = exports._getFullPath = exports.getFullPath = exports.inlineRef = void 0; @@ -58464,7 +58464,7 @@ var require_resolve = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/ajv/dist/compile/validate/index.js +//#region ../../../../../node_modules/ajv/dist/compile/validate/index.js var require_validate = /* @__PURE__ */ __commonJSMin(((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); exports.getData = exports.KeywordCxt = exports.validateFunctionCode = void 0; @@ -58884,7 +58884,7 @@ var require_validate = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/ajv/dist/runtime/validation_error.js +//#region ../../../../../node_modules/ajv/dist/runtime/validation_error.js var require_validation_error = /* @__PURE__ */ __commonJSMin(((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); var ValidationError = class extends Error { @@ -58898,7 +58898,7 @@ var require_validation_error = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/ajv/dist/compile/ref_error.js +//#region ../../../../../node_modules/ajv/dist/compile/ref_error.js var require_ref_error = /* @__PURE__ */ __commonJSMin(((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); const resolve_1 = require_resolve(); @@ -58913,7 +58913,7 @@ var require_ref_error = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/ajv/dist/compile/index.js +//#region ../../../../../node_modules/ajv/dist/compile/index.js var require_compile = /* @__PURE__ */ __commonJSMin(((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); exports.resolveSchema = exports.getCompilingSchema = exports.resolveRef = exports.compileSchema = exports.SchemaEnv = void 0; @@ -59128,7 +59128,7 @@ var require_compile = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/ajv/dist/refs/data.json +//#region ../../../../../node_modules/ajv/dist/refs/data.json var require_data = /* @__PURE__ */ __commonJSMin(((exports, module) => { module.exports = { "$id": "https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#", @@ -59144,7 +59144,7 @@ var require_data = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/fast-uri/lib/utils.js +//#region ../../../../../node_modules/fast-uri/lib/utils.js var require_utils = /* @__PURE__ */ __commonJSMin(((exports, module) => { /** @type {(value: string) => boolean} */ const isUUID = RegExp.prototype.test.bind(/^[\da-f]{8}-[\da-f]{4}-[\da-f]{4}-[\da-f]{4}-[\da-f]{12}$/iu); @@ -59424,7 +59424,7 @@ var require_utils = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/fast-uri/lib/schemes.js +//#region ../../../../../node_modules/fast-uri/lib/schemes.js var require_schemes = /* @__PURE__ */ __commonJSMin(((exports, module) => { const { isUUID } = require_utils(); const URN_REG = /([\da-z][\d\-a-z]{0,31}):((?:[\w!$'()*+,\-.:;=@]|%[\da-f]{2})+)/iu; @@ -59611,7 +59611,7 @@ var require_schemes = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/fast-uri/index.js +//#region ../../../../../node_modules/fast-uri/index.js var require_fast_uri = /* @__PURE__ */ __commonJSMin(((exports, module) => { const { normalizeIPv6, removeDotSegments, recomposeAuthority, normalizeComponentEncoding, isIPv4, nonSimpleDomain } = require_utils(); const { SCHEMES, getSchemeHandler } = require_schemes(); @@ -59843,7 +59843,7 @@ var require_fast_uri = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/ajv/dist/runtime/uri.js +//#region ../../../../../node_modules/ajv/dist/runtime/uri.js var require_uri = /* @__PURE__ */ __commonJSMin(((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); const uri = require_fast_uri(); @@ -59852,7 +59852,7 @@ var require_uri = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/ajv/dist/core.js +//#region ../../../../../node_modules/ajv/dist/core.js var require_core$1 = /* @__PURE__ */ __commonJSMin(((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); exports.CodeGen = exports.Name = exports.nil = exports.stringify = exports.str = exports._ = exports.KeywordCxt = void 0; @@ -60422,7 +60422,7 @@ var require_core$1 = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/ajv/dist/vocabularies/core/id.js +//#region ../../../../../node_modules/ajv/dist/vocabularies/core/id.js var require_id = /* @__PURE__ */ __commonJSMin(((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); const def = { @@ -60435,7 +60435,7 @@ var require_id = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/ajv/dist/vocabularies/core/ref.js +//#region ../../../../../node_modules/ajv/dist/vocabularies/core/ref.js var require_ref = /* @__PURE__ */ __commonJSMin(((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); exports.callRef = exports.getValidate = void 0; @@ -60539,7 +60539,7 @@ var require_ref = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/ajv/dist/vocabularies/core/index.js +//#region ../../../../../node_modules/ajv/dist/vocabularies/core/index.js var require_core = /* @__PURE__ */ __commonJSMin(((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); const id_1 = require_id(); @@ -60558,7 +60558,7 @@ var require_core = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/ajv/dist/vocabularies/validation/limitNumber.js +//#region ../../../../../node_modules/ajv/dist/vocabularies/validation/limitNumber.js var require_limitNumber = /* @__PURE__ */ __commonJSMin(((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); const codegen_1 = require_codegen(); @@ -60603,7 +60603,7 @@ var require_limitNumber = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/ajv/dist/vocabularies/validation/multipleOf.js +//#region ../../../../../node_modules/ajv/dist/vocabularies/validation/multipleOf.js var require_multipleOf = /* @__PURE__ */ __commonJSMin(((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); const codegen_1 = require_codegen(); @@ -60628,7 +60628,7 @@ var require_multipleOf = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/ajv/dist/runtime/ucs2length.js +//#region ../../../../../node_modules/ajv/dist/runtime/ucs2length.js var require_ucs2length = /* @__PURE__ */ __commonJSMin(((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); function ucs2length(str) { @@ -60651,7 +60651,7 @@ var require_ucs2length = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/ajv/dist/vocabularies/validation/limitLength.js +//#region ../../../../../node_modules/ajv/dist/vocabularies/validation/limitLength.js var require_limitLength = /* @__PURE__ */ __commonJSMin(((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); const codegen_1 = require_codegen(); @@ -60680,7 +60680,7 @@ var require_limitLength = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/ajv/dist/vocabularies/validation/pattern.js +//#region ../../../../../node_modules/ajv/dist/vocabularies/validation/pattern.js var require_pattern = /* @__PURE__ */ __commonJSMin(((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); const code_1 = require_code(); @@ -60714,7 +60714,7 @@ var require_pattern = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/ajv/dist/vocabularies/validation/limitProperties.js +//#region ../../../../../node_modules/ajv/dist/vocabularies/validation/limitProperties.js var require_limitProperties = /* @__PURE__ */ __commonJSMin(((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); const codegen_1 = require_codegen(); @@ -60740,7 +60740,7 @@ var require_limitProperties = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/ajv/dist/vocabularies/validation/required.js +//#region ../../../../../node_modules/ajv/dist/vocabularies/validation/required.js var require_required = /* @__PURE__ */ __commonJSMin(((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); const code_1 = require_code(); @@ -60808,7 +60808,7 @@ var require_required = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/ajv/dist/vocabularies/validation/limitItems.js +//#region ../../../../../node_modules/ajv/dist/vocabularies/validation/limitItems.js var require_limitItems = /* @__PURE__ */ __commonJSMin(((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); const codegen_1 = require_codegen(); @@ -60834,7 +60834,7 @@ var require_limitItems = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/ajv/dist/runtime/equal.js +//#region ../../../../../node_modules/ajv/dist/runtime/equal.js var require_equal = /* @__PURE__ */ __commonJSMin(((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); const equal = require_fast_deep_equal(); @@ -60843,7 +60843,7 @@ var require_equal = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/ajv/dist/vocabularies/validation/uniqueItems.js +//#region ../../../../../node_modules/ajv/dist/vocabularies/validation/uniqueItems.js var require_uniqueItems = /* @__PURE__ */ __commonJSMin(((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); const dataType_1 = require_dataType(); @@ -60908,7 +60908,7 @@ var require_uniqueItems = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/ajv/dist/vocabularies/validation/const.js +//#region ../../../../../node_modules/ajv/dist/vocabularies/validation/const.js var require_const = /* @__PURE__ */ __commonJSMin(((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); const codegen_1 = require_codegen(); @@ -60931,7 +60931,7 @@ var require_const = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/ajv/dist/vocabularies/validation/enum.js +//#region ../../../../../node_modules/ajv/dist/vocabularies/validation/enum.js var require_enum = /* @__PURE__ */ __commonJSMin(((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); const codegen_1 = require_codegen(); @@ -60976,7 +60976,7 @@ var require_enum = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/ajv/dist/vocabularies/validation/index.js +//#region ../../../../../node_modules/ajv/dist/vocabularies/validation/index.js var require_validation = /* @__PURE__ */ __commonJSMin(((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); const limitNumber_1 = require_limitNumber(); @@ -61013,7 +61013,7 @@ var require_validation = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/ajv/dist/vocabularies/applicator/additionalItems.js +//#region ../../../../../node_modules/ajv/dist/vocabularies/applicator/additionalItems.js var require_additionalItems = /* @__PURE__ */ __commonJSMin(((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); exports.validateAdditionalItems = void 0; @@ -61066,7 +61066,7 @@ var require_additionalItems = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/ajv/dist/vocabularies/applicator/items.js +//#region ../../../../../node_modules/ajv/dist/vocabularies/applicator/items.js var require_items = /* @__PURE__ */ __commonJSMin(((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); exports.validateTuple = void 0; @@ -61120,7 +61120,7 @@ var require_items = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/ajv/dist/vocabularies/applicator/prefixItems.js +//#region ../../../../../node_modules/ajv/dist/vocabularies/applicator/prefixItems.js var require_prefixItems = /* @__PURE__ */ __commonJSMin(((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); const items_1 = require_items(); @@ -61135,7 +61135,7 @@ var require_prefixItems = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/ajv/dist/vocabularies/applicator/items2020.js +//#region ../../../../../node_modules/ajv/dist/vocabularies/applicator/items2020.js var require_items2020 = /* @__PURE__ */ __commonJSMin(((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); const codegen_1 = require_codegen(); @@ -61164,7 +61164,7 @@ var require_items2020 = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/ajv/dist/vocabularies/applicator/contains.js +//#region ../../../../../node_modules/ajv/dist/vocabularies/applicator/contains.js var require_contains = /* @__PURE__ */ __commonJSMin(((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); const codegen_1 = require_codegen(); @@ -61250,7 +61250,7 @@ var require_contains = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/ajv/dist/vocabularies/applicator/dependencies.js +//#region ../../../../../node_modules/ajv/dist/vocabularies/applicator/dependencies.js var require_dependencies = /* @__PURE__ */ __commonJSMin(((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); exports.validateSchemaDeps = exports.validatePropertyDeps = exports.error = void 0; @@ -61332,7 +61332,7 @@ var require_dependencies = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/ajv/dist/vocabularies/applicator/propertyNames.js +//#region ../../../../../node_modules/ajv/dist/vocabularies/applicator/propertyNames.js var require_propertyNames = /* @__PURE__ */ __commonJSMin(((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); const codegen_1 = require_codegen(); @@ -61370,7 +61370,7 @@ var require_propertyNames = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/ajv/dist/vocabularies/applicator/additionalProperties.js +//#region ../../../../../node_modules/ajv/dist/vocabularies/applicator/additionalProperties.js var require_additionalProperties = /* @__PURE__ */ __commonJSMin(((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); const code_1 = require_code(); @@ -61461,7 +61461,7 @@ var require_additionalProperties = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/ajv/dist/vocabularies/applicator/properties.js +//#region ../../../../../node_modules/ajv/dist/vocabularies/applicator/properties.js var require_properties = /* @__PURE__ */ __commonJSMin(((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); const validate_1 = require_validate(); @@ -61508,7 +61508,7 @@ var require_properties = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/ajv/dist/vocabularies/applicator/patternProperties.js +//#region ../../../../../node_modules/ajv/dist/vocabularies/applicator/patternProperties.js var require_patternProperties = /* @__PURE__ */ __commonJSMin(((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); const code_1 = require_code(); @@ -61565,7 +61565,7 @@ var require_patternProperties = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/ajv/dist/vocabularies/applicator/not.js +//#region ../../../../../node_modules/ajv/dist/vocabularies/applicator/not.js var require_not = /* @__PURE__ */ __commonJSMin(((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); const util_1 = require_util(); @@ -61594,7 +61594,7 @@ var require_not = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/ajv/dist/vocabularies/applicator/anyOf.js +//#region ../../../../../node_modules/ajv/dist/vocabularies/applicator/anyOf.js var require_anyOf = /* @__PURE__ */ __commonJSMin(((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); const def = { @@ -61608,7 +61608,7 @@ var require_anyOf = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/ajv/dist/vocabularies/applicator/oneOf.js +//#region ../../../../../node_modules/ajv/dist/vocabularies/applicator/oneOf.js var require_oneOf = /* @__PURE__ */ __commonJSMin(((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); const codegen_1 = require_codegen(); @@ -61656,7 +61656,7 @@ var require_oneOf = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/ajv/dist/vocabularies/applicator/allOf.js +//#region ../../../../../node_modules/ajv/dist/vocabularies/applicator/allOf.js var require_allOf = /* @__PURE__ */ __commonJSMin(((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); const util_1 = require_util(); @@ -61683,7 +61683,7 @@ var require_allOf = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/ajv/dist/vocabularies/applicator/if.js +//#region ../../../../../node_modules/ajv/dist/vocabularies/applicator/if.js var require_if = /* @__PURE__ */ __commonJSMin(((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); const codegen_1 = require_codegen(); @@ -61741,7 +61741,7 @@ var require_if = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/ajv/dist/vocabularies/applicator/thenElse.js +//#region ../../../../../node_modules/ajv/dist/vocabularies/applicator/thenElse.js var require_thenElse = /* @__PURE__ */ __commonJSMin(((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); const util_1 = require_util(); @@ -61756,7 +61756,7 @@ var require_thenElse = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/ajv/dist/vocabularies/applicator/index.js +//#region ../../../../../node_modules/ajv/dist/vocabularies/applicator/index.js var require_applicator = /* @__PURE__ */ __commonJSMin(((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); const additionalItems_1 = require_additionalItems(); @@ -61798,7 +61798,7 @@ var require_applicator = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/ajv/dist/vocabularies/format/format.js +//#region ../../../../../node_modules/ajv/dist/vocabularies/format/format.js var require_format$1 = /* @__PURE__ */ __commonJSMin(((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); const codegen_1 = require_codegen(); @@ -61888,7 +61888,7 @@ var require_format$1 = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/ajv/dist/vocabularies/format/index.js +//#region ../../../../../node_modules/ajv/dist/vocabularies/format/index.js var require_format = /* @__PURE__ */ __commonJSMin(((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); const format = [require_format$1().default]; @@ -61896,7 +61896,7 @@ var require_format = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/ajv/dist/vocabularies/metadata.js +//#region ../../../../../node_modules/ajv/dist/vocabularies/metadata.js var require_metadata = /* @__PURE__ */ __commonJSMin(((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); exports.contentVocabulary = exports.metadataVocabulary = void 0; @@ -61917,7 +61917,7 @@ var require_metadata = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/ajv/dist/vocabularies/draft7.js +//#region ../../../../../node_modules/ajv/dist/vocabularies/draft7.js var require_draft7 = /* @__PURE__ */ __commonJSMin(((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); const core_1 = require_core(); @@ -61937,7 +61937,7 @@ var require_draft7 = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/ajv/dist/vocabularies/discriminator/types.js +//#region ../../../../../node_modules/ajv/dist/vocabularies/discriminator/types.js var require_types = /* @__PURE__ */ __commonJSMin(((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); exports.DiscrError = void 0; @@ -61949,7 +61949,7 @@ var require_types = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/ajv/dist/vocabularies/discriminator/index.js +//#region ../../../../../node_modules/ajv/dist/vocabularies/discriminator/index.js var require_discriminator = /* @__PURE__ */ __commonJSMin(((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); const codegen_1 = require_codegen(); @@ -62044,7 +62044,7 @@ var require_discriminator = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/ajv/dist/refs/json-schema-draft-07.json +//#region ../../../../../node_modules/ajv/dist/refs/json-schema-draft-07.json var require_json_schema_draft_07 = /* @__PURE__ */ __commonJSMin(((exports, module) => { module.exports = { "$schema": "http://json-schema.org/draft-07/schema#", @@ -62183,7 +62183,7 @@ var require_json_schema_draft_07 = /* @__PURE__ */ __commonJSMin(((exports, modu })); //#endregion -//#region ../../node_modules/ajv/dist/ajv.js +//#region ../../../../../node_modules/ajv/dist/ajv.js var require_ajv = /* @__PURE__ */ __commonJSMin(((exports, module) => { Object.defineProperty(exports, "__esModule", { value: true }); exports.MissingRefError = exports.ValidationError = exports.CodeGen = exports.Name = exports.nil = exports.stringify = exports.str = exports._ = exports.KeywordCxt = exports.Ajv = void 0; @@ -62276,7 +62276,7 @@ var require_ajv = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/ajv-formats/dist/formats.js +//#region ../../../../../node_modules/ajv-formats/dist/formats.js var require_formats = /* @__PURE__ */ __commonJSMin(((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); exports.formatNames = exports.fastFormats = exports.fullFormats = void 0; @@ -62465,7 +62465,7 @@ var require_formats = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/ajv-formats/dist/limit.js +//#region ../../../../../node_modules/ajv-formats/dist/limit.js var require_limit = /* @__PURE__ */ __commonJSMin(((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); exports.formatLimitDefinition = void 0; @@ -62545,7 +62545,7 @@ var require_limit = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/ajv-formats/dist/index.js +//#region ../../../../../node_modules/ajv-formats/dist/index.js var require_dist$3 = /* @__PURE__ */ __commonJSMin(((exports, module) => { Object.defineProperty(exports, "__esModule", { value: true }); const formats_1 = require_formats(); @@ -62580,7 +62580,7 @@ var require_dist$3 = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/@modelcontextprotocol/sdk/dist/esm/validation/ajv-provider.js +//#region ../../../../../node_modules/@modelcontextprotocol/sdk/dist/esm/validation/ajv-provider.js var import_ajv = /* @__PURE__ */ __toESM(require_ajv(), 1); var import_dist$3 = /* @__PURE__ */ __toESM(require_dist$3(), 1); function createDefaultAjvInstance() { @@ -62657,7 +62657,7 @@ var AjvJsonSchemaValidator = class { }; //#endregion -//#region ../../node_modules/@modelcontextprotocol/sdk/dist/esm/experimental/tasks/server.js +//#region ../../../../../node_modules/@modelcontextprotocol/sdk/dist/esm/experimental/tasks/server.js /** * Experimental server task features for MCP SDK. * WARNING: These APIs are experimental and may change without notice. @@ -62878,7 +62878,7 @@ var ExperimentalServerTasks = class { }; //#endregion -//#region ../../node_modules/@modelcontextprotocol/sdk/dist/esm/experimental/tasks/helpers.js +//#region ../../../../../node_modules/@modelcontextprotocol/sdk/dist/esm/experimental/tasks/helpers.js /** * Experimental task capability assertion helpers. * WARNING: These APIs are experimental and may change without notice. @@ -62930,7 +62930,7 @@ function assertClientRequestTaskCapability(requests, method, entityName) { } //#endregion -//#region ../../node_modules/@modelcontextprotocol/sdk/dist/esm/server/index.js +//#region ../../../../../node_modules/@modelcontextprotocol/sdk/dist/esm/server/index.js /** * An MCP server on top of a pluggable transport. * @@ -63272,7 +63272,7 @@ var Server = class extends Protocol { }; //#endregion -//#region ../../node_modules/@modelcontextprotocol/sdk/dist/esm/server/completable.js +//#region ../../../../../node_modules/@modelcontextprotocol/sdk/dist/esm/server/completable.js const COMPLETABLE_SYMBOL = Symbol.for("mcp.completable"); /** * Checks if a schema is completable (has completion metadata). @@ -63292,7 +63292,7 @@ var McpZodTypeKind; })(McpZodTypeKind || (McpZodTypeKind = {})); //#endregion -//#region ../../node_modules/@modelcontextprotocol/sdk/dist/esm/shared/toolNameValidation.js +//#region ../../../../../node_modules/@modelcontextprotocol/sdk/dist/esm/shared/toolNameValidation.js /** * Tool name validation utilities according to SEP: Specify Format for Tool Names * @@ -63364,7 +63364,7 @@ function validateAndWarnToolName(name) { } //#endregion -//#region ../../node_modules/@modelcontextprotocol/sdk/dist/esm/experimental/tasks/mcp-server.js +//#region ../../../../../node_modules/@modelcontextprotocol/sdk/dist/esm/experimental/tasks/mcp-server.js /** * Experimental McpServer task features for MCP SDK. * WARNING: These APIs are experimental and may change without notice. @@ -63396,7 +63396,7 @@ var ExperimentalMcpServerTasks = class { }; //#endregion -//#region ../../node_modules/@modelcontextprotocol/sdk/dist/esm/server/mcp.js +//#region ../../../../../node_modules/@modelcontextprotocol/sdk/dist/esm/server/mcp.js /** * High-level MCP server that provides a simpler API for working with resources, tools, and prompts. * For advanced usage (like sending notifications or setting custom request handlers), use the underlying @@ -64113,7 +64113,7 @@ function createMcpServer(deps) { } //#endregion -//#region ../../node_modules/address/dist/esm/address.js +//#region ../../../../../node_modules/address/dist/esm/address.js function getDefaultInterfaceName() { let val = "eth"; const platform = node_os.default.platform(); @@ -64167,7 +64167,7 @@ function ip(interfaceName) { } //#endregion -//#region ../../node_modules/detect-port/dist/esm/detect-port.js +//#region ../../../../../node_modules/detect-port/dist/esm/detect-port.js const debug$2 = (0, node_util.debuglog)("detect-port"); var IPAddressNotAvailableError = class extends Error { constructor(options) { @@ -64258,15 +64258,15 @@ function listen(port, hostname) { } //#endregion -//#region ../../node_modules/detect-port/dist/esm/wait-port.js +//#region ../../../../../node_modules/detect-port/dist/esm/wait-port.js const debug$1 = (0, node_util.debuglog)("detect-port:wait-port"); //#endregion -//#region ../../node_modules/detect-port/dist/esm/index.js +//#region ../../../../../node_modules/detect-port/dist/esm/index.js var esm_default = detectPort; //#endregion -//#region ../../node_modules/is-docker/index.js +//#region ../../../../../node_modules/is-docker/index.js let isDockerCached; function hasDockerEnv() { try { @@ -64289,7 +64289,7 @@ function isDocker() { } //#endregion -//#region ../../node_modules/is-inside-container/index.js +//#region ../../../../../node_modules/is-inside-container/index.js let cachedResult; const hasContainerEnv = () => { try { @@ -64305,7 +64305,7 @@ function isInsideContainer() { } //#endregion -//#region ../../node_modules/is-wsl/index.js +//#region ../../../../../node_modules/is-wsl/index.js const isWsl = () => { if (node_process.default.platform !== "linux") return false; if (node_os.default.release().toLowerCase().includes("microsoft")) { @@ -64321,7 +64321,7 @@ const isWsl = () => { var is_wsl_default = node_process.default.env.__IS_WSL_TEST__ ? isWsl : isWsl(); //#endregion -//#region ../../node_modules/wsl-utils/index.js +//#region ../../../../../node_modules/wsl-utils/index.js const wslDrivesMountPoint = (() => { const defaultMountPoint = "/mnt/"; let mountPoint; @@ -64351,7 +64351,7 @@ const powerShellPath = async () => { }; //#endregion -//#region ../../node_modules/define-lazy-prop/index.js +//#region ../../../../../node_modules/define-lazy-prop/index.js function defineLazyProperty(object, propertyName, valueGetter) { const define = (value) => Object.defineProperty(object, propertyName, { value, @@ -64374,7 +64374,7 @@ function defineLazyProperty(object, propertyName, valueGetter) { } //#endregion -//#region ../../node_modules/default-browser-id/index.js +//#region ../../../../../node_modules/default-browser-id/index.js const execFileAsync$3 = (0, node_util.promisify)(node_child_process.execFile); async function defaultBrowserId() { if (node_process.default.platform !== "darwin") throw new Error("macOS only"); @@ -64389,7 +64389,7 @@ async function defaultBrowserId() { } //#endregion -//#region ../../node_modules/run-applescript/index.js +//#region ../../../../../node_modules/run-applescript/index.js const execFileAsync$2 = (0, node_util.promisify)(node_child_process.execFile); async function runAppleScript(script, { humanReadableOutput = true, signal } = {}) { if (node_process.default.platform !== "darwin") throw new Error("macOS only"); @@ -64405,13 +64405,13 @@ async function runAppleScript(script, { humanReadableOutput = true, signal } = { } //#endregion -//#region ../../node_modules/bundle-name/index.js +//#region ../../../../../node_modules/bundle-name/index.js async function bundleName(bundleId) { return runAppleScript(`tell application "Finder" to set app_path to application file id "${bundleId}" as string\ntell application "System Events" to get value of property list item "CFBundleName" of property list file (app_path & ":Contents:Info.plist")`); } //#endregion -//#region ../../node_modules/default-browser/windows.js +//#region ../../../../../node_modules/default-browser/windows.js const execFileAsync$1 = (0, node_util.promisify)(node_child_process.execFile); const windowsBrowserProgIds = { MSEdgeHTM: { @@ -64502,7 +64502,7 @@ async function defaultBrowser$1(_execFileAsync = execFileAsync$1) { } //#endregion -//#region ../../node_modules/default-browser/index.js +//#region ../../../../../node_modules/default-browser/index.js const execFileAsync = (0, node_util.promisify)(node_child_process.execFile); const titleize = (string) => string.toLowerCase().replaceAll(/(?:^|\s|-)\S/g, (x) => x.toUpperCase()); async function defaultBrowser() { @@ -64530,7 +64530,7 @@ async function defaultBrowser() { } //#endregion -//#region ../../node_modules/open/index.js +//#region ../../../../../node_modules/open/index.js const execFile = (0, node_util.promisify)(node_child_process.default.execFile); const __dirname$1 = node_path.default.dirname((0, node_url.fileURLToPath)(require("url").pathToFileURL(__filename).href)); const localXdgOpenPath = node_path.default.join(__dirname$1, "xdg-open"); @@ -64732,7 +64732,7 @@ defineLazyProperty(apps, "browser", () => "browser"); defineLazyProperty(apps, "browserPrivate", () => "browserPrivate"); //#endregion -//#region ../../node_modules/debug/src/common.js +//#region ../../../../../node_modules/debug/src/common.js var require_common = /* @__PURE__ */ __commonJSMin(((exports, module) => { /** * This is the common logic for both the Node.js and web browser @@ -64935,7 +64935,7 @@ var require_common = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/debug/src/browser.js +//#region ../../../../../node_modules/debug/src/browser.js var require_browser = /* @__PURE__ */ __commonJSMin(((exports, module) => { /** * This is the web browser implementation of `debug()`. @@ -65132,7 +65132,7 @@ var require_browser = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/has-flag/index.js +//#region ../../../../../node_modules/has-flag/index.js var require_has_flag = /* @__PURE__ */ __commonJSMin(((exports, module) => { module.exports = (flag, argv = process.argv) => { const prefix = flag.startsWith("-") ? "" : flag.length === 1 ? "-" : "--"; @@ -65143,7 +65143,7 @@ var require_has_flag = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/supports-color/index.js +//#region ../../../../../node_modules/supports-color/index.js var require_supports_color = /* @__PURE__ */ __commonJSMin(((exports, module) => { const os$4 = require("os"); const tty$1 = require("tty"); @@ -65212,7 +65212,7 @@ var require_supports_color = /* @__PURE__ */ __commonJSMin(((exports, module) => })); //#endregion -//#region ../../node_modules/debug/src/node.js +//#region ../../../../../node_modules/debug/src/node.js var require_node = /* @__PURE__ */ __commonJSMin(((exports, module) => { /** * Module dependencies. @@ -65420,7 +65420,7 @@ var require_node = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/debug/src/index.js +//#region ../../../../../node_modules/debug/src/index.js var require_src$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => { /** * Detect Electron renderer / nwjs process, which is node, but we should @@ -65431,7 +65431,7 @@ var require_src$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/@kwsites/file-exists/dist/src/index.js +//#region ../../../../../node_modules/@kwsites/file-exists/dist/src/index.js var require_src = /* @__PURE__ */ __commonJSMin(((exports) => { var __importDefault = exports && exports.__importDefault || function(mod) { return mod && mod.__esModule ? mod : { "default": mod }; @@ -65487,7 +65487,7 @@ var require_src = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/@kwsites/file-exists/dist/index.js +//#region ../../../../../node_modules/@kwsites/file-exists/dist/index.js var require_dist$2 = /* @__PURE__ */ __commonJSMin(((exports) => { function __export(m) { for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; @@ -65497,7 +65497,7 @@ var require_dist$2 = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/@kwsites/promise-deferred/dist/index.js +//#region ../../../../../node_modules/@kwsites/promise-deferred/dist/index.js var require_dist$1 = /* @__PURE__ */ __commonJSMin(((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); exports.createDeferred = exports.deferred = void 0; @@ -65550,7 +65550,7 @@ var require_dist$1 = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/simple-git/dist/esm/index.js +//#region ../../../../../node_modules/simple-git/dist/esm/index.js var import_dist$1 = require_dist$2(); var import_src = /* @__PURE__ */ __toESM(require_src$1(), 1); var import_dist$2 = require_dist$1(); @@ -68814,7 +68814,7 @@ var Git = require_git(); init_git_response_error(); //#endregion -//#region ../../node_modules/slugify/slugify.js +//#region ../../../../../node_modules/slugify/slugify.js var require_slugify = /* @__PURE__ */ __commonJSMin(((exports, module) => { (function(name, root, factory) { if (typeof exports === "object") { @@ -68903,7 +68903,7 @@ function getPhasePattern(escapedPhaseNum, flags = "gim") { } //#endregion -//#region ../../node_modules/yaml/dist/nodes/identity.js +//#region ../../../../../node_modules/yaml/dist/nodes/identity.js var require_identity = /* @__PURE__ */ __commonJSMin(((exports) => { const ALIAS = Symbol.for("yaml.alias"); const DOC = Symbol.for("yaml.document"); @@ -68954,7 +68954,7 @@ var require_identity = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/visit.js +//#region ../../../../../node_modules/yaml/dist/visit.js var require_visit = /* @__PURE__ */ __commonJSMin(((exports) => { var identity = require_identity(); const BREAK = Symbol("break visit"); @@ -69145,7 +69145,7 @@ var require_visit = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/doc/directives.js +//#region ../../../../../node_modules/yaml/dist/doc/directives.js var require_directives = /* @__PURE__ */ __commonJSMin(((exports) => { var identity = require_identity(); var visit = require_visit(); @@ -69311,7 +69311,7 @@ var require_directives = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/doc/anchors.js +//#region ../../../../../node_modules/yaml/dist/doc/anchors.js var require_anchors = /* @__PURE__ */ __commonJSMin(((exports) => { var identity = require_identity(); var visit = require_visit(); @@ -69374,7 +69374,7 @@ var require_anchors = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/doc/applyReviver.js +//#region ../../../../../node_modules/yaml/dist/doc/applyReviver.js var require_applyReviver = /* @__PURE__ */ __commonJSMin(((exports) => { /** * Applies the JSON.parse reviver algorithm as defined in the ECMA-262 spec, @@ -69415,7 +69415,7 @@ var require_applyReviver = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/nodes/toJS.js +//#region ../../../../../node_modules/yaml/dist/nodes/toJS.js var require_toJS = /* @__PURE__ */ __commonJSMin(((exports) => { var identity = require_identity(); /** @@ -69453,7 +69453,7 @@ var require_toJS = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/nodes/Node.js +//#region ../../../../../node_modules/yaml/dist/nodes/Node.js var require_Node = /* @__PURE__ */ __commonJSMin(((exports) => { var applyReviver = require_applyReviver(); var identity = require_identity(); @@ -69488,7 +69488,7 @@ var require_Node = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/nodes/Alias.js +//#region ../../../../../node_modules/yaml/dist/nodes/Alias.js var require_Alias = /* @__PURE__ */ __commonJSMin(((exports) => { var anchors = require_anchors(); var visit = require_visit(); @@ -69582,7 +69582,7 @@ var require_Alias = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/nodes/Scalar.js +//#region ../../../../../node_modules/yaml/dist/nodes/Scalar.js var require_Scalar = /* @__PURE__ */ __commonJSMin(((exports) => { var identity = require_identity(); var Node = require_Node(); @@ -69610,7 +69610,7 @@ var require_Scalar = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/doc/createNode.js +//#region ../../../../../node_modules/yaml/dist/doc/createNode.js var require_createNode = /* @__PURE__ */ __commonJSMin(((exports) => { var Alias = require_Alias(); var identity = require_identity(); @@ -69674,7 +69674,7 @@ var require_createNode = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/nodes/Collection.js +//#region ../../../../../node_modules/yaml/dist/nodes/Collection.js var require_Collection = /* @__PURE__ */ __commonJSMin(((exports) => { var createNode = require_createNode(); var identity = require_identity(); @@ -69796,7 +69796,7 @@ var require_Collection = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/stringify/stringifyComment.js +//#region ../../../../../node_modules/yaml/dist/stringify/stringifyComment.js var require_stringifyComment = /* @__PURE__ */ __commonJSMin(((exports) => { /** * Stringifies a comment. @@ -69817,7 +69817,7 @@ var require_stringifyComment = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/stringify/foldFlowLines.js +//#region ../../../../../node_modules/yaml/dist/stringify/foldFlowLines.js var require_foldFlowLines = /* @__PURE__ */ __commonJSMin(((exports) => { const FOLD_FLOW = "flow"; const FOLD_BLOCK = "block"; @@ -69934,7 +69934,7 @@ var require_foldFlowLines = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/stringify/stringifyString.js +//#region ../../../../../node_modules/yaml/dist/stringify/stringifyString.js var require_stringifyString = /* @__PURE__ */ __commonJSMin(((exports) => { var Scalar = require_Scalar(); var foldFlowLines = require_foldFlowLines(); @@ -70159,7 +70159,7 @@ var require_stringifyString = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/stringify/stringify.js +//#region ../../../../../node_modules/yaml/dist/stringify/stringify.js var require_stringify = /* @__PURE__ */ __commonJSMin(((exports) => { var anchors = require_anchors(); var identity = require_identity(); @@ -70267,7 +70267,7 @@ var require_stringify = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/stringify/stringifyPair.js +//#region ../../../../../node_modules/yaml/dist/stringify/stringifyPair.js var require_stringifyPair = /* @__PURE__ */ __commonJSMin(((exports) => { var identity = require_identity(); var Scalar = require_Scalar(); @@ -70365,7 +70365,7 @@ var require_stringifyPair = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/log.js +//#region ../../../../../node_modules/yaml/dist/log.js var require_log = /* @__PURE__ */ __commonJSMin(((exports) => { var node_process$3 = require("process"); function debug(logLevel, ...messages) { @@ -70380,7 +70380,7 @@ var require_log = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/schema/yaml-1.1/merge.js +//#region ../../../../../node_modules/yaml/dist/schema/yaml-1.1/merge.js var require_merge = /* @__PURE__ */ __commonJSMin(((exports) => { var identity = require_identity(); var Scalar = require_Scalar(); @@ -70421,7 +70421,7 @@ var require_merge = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/nodes/addPairToJSMap.js +//#region ../../../../../node_modules/yaml/dist/nodes/addPairToJSMap.js var require_addPairToJSMap = /* @__PURE__ */ __commonJSMin(((exports) => { var log = require_log(); var merge = require_merge(); @@ -70473,7 +70473,7 @@ var require_addPairToJSMap = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/nodes/Pair.js +//#region ../../../../../node_modules/yaml/dist/nodes/Pair.js var require_Pair = /* @__PURE__ */ __commonJSMin(((exports) => { var createNode = require_createNode(); var stringifyPair = require_stringifyPair(); @@ -70507,7 +70507,7 @@ var require_Pair = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/stringify/stringifyCollection.js +//#region ../../../../../node_modules/yaml/dist/stringify/stringifyCollection.js var require_stringifyCollection = /* @__PURE__ */ __commonJSMin(((exports) => { var identity = require_identity(); var stringify = require_stringify(); @@ -70622,7 +70622,7 @@ var require_stringifyCollection = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/nodes/YAMLMap.js +//#region ../../../../../node_modules/yaml/dist/nodes/YAMLMap.js var require_YAMLMap = /* @__PURE__ */ __commonJSMin(((exports) => { var stringifyCollection = require_stringifyCollection(); var addPairToJSMap = require_addPairToJSMap(); @@ -70732,7 +70732,7 @@ var require_YAMLMap = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/schema/common/map.js +//#region ../../../../../node_modules/yaml/dist/schema/common/map.js var require_map = /* @__PURE__ */ __commonJSMin(((exports) => { var identity = require_identity(); var YAMLMap = require_YAMLMap(); @@ -70751,7 +70751,7 @@ var require_map = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/nodes/YAMLSeq.js +//#region ../../../../../node_modules/yaml/dist/nodes/YAMLSeq.js var require_YAMLSeq = /* @__PURE__ */ __commonJSMin(((exports) => { var createNode = require_createNode(); var stringifyCollection = require_stringifyCollection(); @@ -70858,7 +70858,7 @@ var require_YAMLSeq = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/schema/common/seq.js +//#region ../../../../../node_modules/yaml/dist/schema/common/seq.js var require_seq = /* @__PURE__ */ __commonJSMin(((exports) => { var identity = require_identity(); var YAMLSeq = require_YAMLSeq(); @@ -70877,7 +70877,7 @@ var require_seq = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/schema/common/string.js +//#region ../../../../../node_modules/yaml/dist/schema/common/string.js var require_string = /* @__PURE__ */ __commonJSMin(((exports) => { var stringifyString = require_stringifyString(); const string = { @@ -70894,7 +70894,7 @@ var require_string = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/schema/common/null.js +//#region ../../../../../node_modules/yaml/dist/schema/common/null.js var require_null = /* @__PURE__ */ __commonJSMin(((exports) => { var Scalar = require_Scalar(); const nullTag = { @@ -70910,7 +70910,7 @@ var require_null = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/schema/core/bool.js +//#region ../../../../../node_modules/yaml/dist/schema/core/bool.js var require_bool$1 = /* @__PURE__ */ __commonJSMin(((exports) => { var Scalar = require_Scalar(); const boolTag = { @@ -70930,7 +70930,7 @@ var require_bool$1 = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/stringify/stringifyNumber.js +//#region ../../../../../node_modules/yaml/dist/stringify/stringifyNumber.js var require_stringifyNumber = /* @__PURE__ */ __commonJSMin(((exports) => { function stringifyNumber({ format, minFractionDigits, tag, value }) { if (typeof value === "bigint") return String(value); @@ -70952,7 +70952,7 @@ var require_stringifyNumber = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/schema/core/float.js +//#region ../../../../../node_modules/yaml/dist/schema/core/float.js var require_float$1 = /* @__PURE__ */ __commonJSMin(((exports) => { var Scalar = require_Scalar(); var stringifyNumber = require_stringifyNumber(); @@ -70995,7 +70995,7 @@ var require_float$1 = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/schema/core/int.js +//#region ../../../../../node_modules/yaml/dist/schema/core/int.js var require_int$1 = /* @__PURE__ */ __commonJSMin(((exports) => { var stringifyNumber = require_stringifyNumber(); const intIdentify = (value) => typeof value === "bigint" || Number.isInteger(value); @@ -71037,7 +71037,7 @@ var require_int$1 = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/schema/core/schema.js +//#region ../../../../../node_modules/yaml/dist/schema/core/schema.js var require_schema$2 = /* @__PURE__ */ __commonJSMin(((exports) => { var map = require_map(); var _null = require_null(); @@ -71063,7 +71063,7 @@ var require_schema$2 = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/schema/json/schema.js +//#region ../../../../../node_modules/yaml/dist/schema/json/schema.js var require_schema$1 = /* @__PURE__ */ __commonJSMin(((exports) => { var Scalar = require_Scalar(); var map = require_map(); @@ -71127,7 +71127,7 @@ var require_schema$1 = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/schema/yaml-1.1/binary.js +//#region ../../../../../node_modules/yaml/dist/schema/yaml-1.1/binary.js var require_binary = /* @__PURE__ */ __commonJSMin(((exports) => { var node_buffer$1 = require("buffer"); var Scalar = require_Scalar(); @@ -71177,7 +71177,7 @@ var require_binary = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/schema/yaml-1.1/pairs.js +//#region ../../../../../node_modules/yaml/dist/schema/yaml-1.1/pairs.js var require_pairs = /* @__PURE__ */ __commonJSMin(((exports) => { var identity = require_identity(); var Pair = require_Pair(); @@ -71238,7 +71238,7 @@ var require_pairs = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/schema/yaml-1.1/omap.js +//#region ../../../../../node_modules/yaml/dist/schema/yaml-1.1/omap.js var require_omap = /* @__PURE__ */ __commonJSMin(((exports) => { var identity = require_identity(); var toJS = require_toJS(); @@ -71302,7 +71302,7 @@ var require_omap = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/schema/yaml-1.1/bool.js +//#region ../../../../../node_modules/yaml/dist/schema/yaml-1.1/bool.js var require_bool = /* @__PURE__ */ __commonJSMin(((exports) => { var Scalar = require_Scalar(); function boolStringify({ value, source }, ctx) { @@ -71330,7 +71330,7 @@ var require_bool = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/schema/yaml-1.1/float.js +//#region ../../../../../node_modules/yaml/dist/schema/yaml-1.1/float.js var require_float = /* @__PURE__ */ __commonJSMin(((exports) => { var Scalar = require_Scalar(); var stringifyNumber = require_stringifyNumber(); @@ -71376,7 +71376,7 @@ var require_float = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/schema/yaml-1.1/int.js +//#region ../../../../../node_modules/yaml/dist/schema/yaml-1.1/int.js var require_int = /* @__PURE__ */ __commonJSMin(((exports) => { var stringifyNumber = require_stringifyNumber(); const intIdentify = (value) => typeof value === "bigint" || Number.isInteger(value); @@ -71452,7 +71452,7 @@ var require_int = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/schema/yaml-1.1/set.js +//#region ../../../../../node_modules/yaml/dist/schema/yaml-1.1/set.js var require_set = /* @__PURE__ */ __commonJSMin(((exports) => { var identity = require_identity(); var Pair = require_Pair(); @@ -71521,7 +71521,7 @@ var require_set = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/schema/yaml-1.1/timestamp.js +//#region ../../../../../node_modules/yaml/dist/schema/yaml-1.1/timestamp.js var require_timestamp = /* @__PURE__ */ __commonJSMin(((exports) => { var stringifyNumber = require_stringifyNumber(); /** Internal types handle bigint as number, because TS can't figure it out. */ @@ -71605,7 +71605,7 @@ var require_timestamp = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/schema/yaml-1.1/schema.js +//#region ../../../../../node_modules/yaml/dist/schema/yaml-1.1/schema.js var require_schema = /* @__PURE__ */ __commonJSMin(((exports) => { var map = require_map(); var _null = require_null(); @@ -71647,7 +71647,7 @@ var require_schema = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/schema/tags.js +//#region ../../../../../node_modules/yaml/dist/schema/tags.js var require_tags = /* @__PURE__ */ __commonJSMin(((exports) => { var map = require_map(); var _null = require_null(); @@ -71732,7 +71732,7 @@ var require_tags = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/schema/Schema.js +//#region ../../../../../node_modules/yaml/dist/schema/Schema.js var require_Schema = /* @__PURE__ */ __commonJSMin(((exports) => { var identity = require_identity(); var map = require_map(); @@ -71762,7 +71762,7 @@ var require_Schema = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/stringify/stringifyDocument.js +//#region ../../../../../node_modules/yaml/dist/stringify/stringifyDocument.js var require_stringifyDocument = /* @__PURE__ */ __commonJSMin(((exports) => { var identity = require_identity(); var stringify = require_stringify(); @@ -71824,7 +71824,7 @@ var require_stringifyDocument = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/doc/Document.js +//#region ../../../../../node_modules/yaml/dist/doc/Document.js var require_Document = /* @__PURE__ */ __commonJSMin(((exports) => { var Alias = require_Alias(); var Collection = require_Collection(); @@ -72106,7 +72106,7 @@ var require_Document = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/errors.js +//#region ../../../../../node_modules/yaml/dist/errors.js var require_errors = /* @__PURE__ */ __commonJSMin(((exports) => { var YAMLError = class extends Error { constructor(name, pos, code, message) { @@ -72160,7 +72160,7 @@ var require_errors = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/compose/resolve-props.js +//#region ../../../../../node_modules/yaml/dist/compose/resolve-props.js var require_resolve_props = /* @__PURE__ */ __commonJSMin(((exports) => { function resolveProps(tokens, { flow, indicator, next, offset, onError, parentIndent, startOnNewline }) { let spaceBefore = false; @@ -72268,7 +72268,7 @@ var require_resolve_props = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/compose/util-contains-newline.js +//#region ../../../../../node_modules/yaml/dist/compose/util-contains-newline.js var require_util_contains_newline = /* @__PURE__ */ __commonJSMin(((exports) => { function containsNewline(key) { if (!key) return null; @@ -72298,7 +72298,7 @@ var require_util_contains_newline = /* @__PURE__ */ __commonJSMin(((exports) => })); //#endregion -//#region ../../node_modules/yaml/dist/compose/util-flow-indent-check.js +//#region ../../../../../node_modules/yaml/dist/compose/util-flow-indent-check.js var require_util_flow_indent_check = /* @__PURE__ */ __commonJSMin(((exports) => { var utilContainsNewline = require_util_contains_newline(); function flowIndentCheck(indent, fc, onError) { @@ -72311,7 +72311,7 @@ var require_util_flow_indent_check = /* @__PURE__ */ __commonJSMin(((exports) => })); //#endregion -//#region ../../node_modules/yaml/dist/compose/util-map-includes.js +//#region ../../../../../node_modules/yaml/dist/compose/util-map-includes.js var require_util_map_includes = /* @__PURE__ */ __commonJSMin(((exports) => { var identity = require_identity(); function mapIncludes(ctx, items, search) { @@ -72324,7 +72324,7 @@ var require_util_map_includes = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/compose/resolve-block-map.js +//#region ../../../../../node_modules/yaml/dist/compose/resolve-block-map.js var require_resolve_block_map = /* @__PURE__ */ __commonJSMin(((exports) => { var Pair = require_Pair(); var YAMLMap = require_YAMLMap(); @@ -72409,7 +72409,7 @@ var require_resolve_block_map = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/compose/resolve-block-seq.js +//#region ../../../../../node_modules/yaml/dist/compose/resolve-block-seq.js var require_resolve_block_seq = /* @__PURE__ */ __commonJSMin(((exports) => { var YAMLSeq = require_YAMLSeq(); var resolveProps = require_resolve_props(); @@ -72452,7 +72452,7 @@ var require_resolve_block_seq = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/compose/resolve-end.js +//#region ../../../../../node_modules/yaml/dist/compose/resolve-end.js var require_resolve_end = /* @__PURE__ */ __commonJSMin(((exports) => { function resolveEnd(end, offset, reqSpace, onError) { let comment = ""; @@ -72491,7 +72491,7 @@ var require_resolve_end = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/compose/resolve-flow-collection.js +//#region ../../../../../node_modules/yaml/dist/compose/resolve-flow-collection.js var require_resolve_flow_collection = /* @__PURE__ */ __commonJSMin(((exports) => { var identity = require_identity(); var Pair = require_Pair(); @@ -72647,7 +72647,7 @@ var require_resolve_flow_collection = /* @__PURE__ */ __commonJSMin(((exports) = })); //#endregion -//#region ../../node_modules/yaml/dist/compose/compose-collection.js +//#region ../../../../../node_modules/yaml/dist/compose/compose-collection.js var require_compose_collection = /* @__PURE__ */ __commonJSMin(((exports) => { var identity = require_identity(); var Scalar = require_Scalar(); @@ -72700,7 +72700,7 @@ var require_compose_collection = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/compose/resolve-block-scalar.js +//#region ../../../../../node_modules/yaml/dist/compose/resolve-block-scalar.js var require_resolve_block_scalar = /* @__PURE__ */ __commonJSMin(((exports) => { var Scalar = require_Scalar(); function resolveBlockScalar(ctx, scalar, onError) { @@ -72876,7 +72876,7 @@ var require_resolve_block_scalar = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/compose/resolve-flow-scalar.js +//#region ../../../../../node_modules/yaml/dist/compose/resolve-flow-scalar.js var require_resolve_flow_scalar = /* @__PURE__ */ __commonJSMin(((exports) => { var Scalar = require_Scalar(); var resolveEnd = require_resolve_end(); @@ -73083,7 +73083,7 @@ var require_resolve_flow_scalar = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/compose/compose-scalar.js +//#region ../../../../../node_modules/yaml/dist/compose/compose-scalar.js var require_compose_scalar = /* @__PURE__ */ __commonJSMin(((exports) => { var identity = require_identity(); var Scalar = require_Scalar(); @@ -73143,7 +73143,7 @@ var require_compose_scalar = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/compose/util-empty-scalar-position.js +//#region ../../../../../node_modules/yaml/dist/compose/util-empty-scalar-position.js var require_util_empty_scalar_position = /* @__PURE__ */ __commonJSMin(((exports) => { function emptyScalarPosition(offset, before, pos) { if (before) { @@ -73171,7 +73171,7 @@ var require_util_empty_scalar_position = /* @__PURE__ */ __commonJSMin(((exports })); //#endregion -//#region ../../node_modules/yaml/dist/compose/compose-node.js +//#region ../../../../../node_modules/yaml/dist/compose/compose-node.js var require_compose_node = /* @__PURE__ */ __commonJSMin(((exports) => { var Alias = require_Alias(); var identity = require_identity(); @@ -73257,7 +73257,7 @@ var require_compose_node = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/compose/compose-doc.js +//#region ../../../../../node_modules/yaml/dist/compose/compose-doc.js var require_compose_doc = /* @__PURE__ */ __commonJSMin(((exports) => { var Document = require_Document(); var composeNode = require_compose_node(); @@ -73300,7 +73300,7 @@ var require_compose_doc = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/compose/composer.js +//#region ../../../../../node_modules/yaml/dist/compose/composer.js var require_composer = /* @__PURE__ */ __commonJSMin(((exports) => { var node_process$2 = require("process"); var directives = require_directives(); @@ -73499,7 +73499,7 @@ var require_composer = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/parse/cst-scalar.js +//#region ../../../../../node_modules/yaml/dist/parse/cst-scalar.js var require_cst_scalar = /* @__PURE__ */ __commonJSMin(((exports) => { var resolveBlockScalar = require_resolve_block_scalar(); var resolveFlowScalar = require_resolve_flow_scalar(); @@ -73767,7 +73767,7 @@ var require_cst_scalar = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/parse/cst-stringify.js +//#region ../../../../../node_modules/yaml/dist/parse/cst-stringify.js var require_cst_stringify = /* @__PURE__ */ __commonJSMin(((exports) => { /** * Stringify a CST document, token, or collection item @@ -73819,7 +73819,7 @@ var require_cst_stringify = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/parse/cst-visit.js +//#region ../../../../../node_modules/yaml/dist/parse/cst-visit.js var require_cst_visit = /* @__PURE__ */ __commonJSMin(((exports) => { const BREAK = Symbol("break visit"); const SKIP = Symbol("skip children"); @@ -73911,7 +73911,7 @@ var require_cst_visit = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/parse/cst.js +//#region ../../../../../node_modules/yaml/dist/parse/cst.js var require_cst = /* @__PURE__ */ __commonJSMin(((exports) => { var cstScalar = require_cst_scalar(); var cstStringify = require_cst_stringify(); @@ -73991,7 +73991,7 @@ var require_cst = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/parse/lexer.js +//#region ../../../../../node_modules/yaml/dist/parse/lexer.js var require_lexer = /* @__PURE__ */ __commonJSMin(((exports) => { var cst = require_cst(); function isEmpty(ch) { @@ -74511,7 +74511,7 @@ var require_lexer = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/parse/line-counter.js +//#region ../../../../../node_modules/yaml/dist/parse/line-counter.js var require_line_counter = /* @__PURE__ */ __commonJSMin(((exports) => { /** * Tracks newlines during parsing in order to provide an efficient API for @@ -74559,7 +74559,7 @@ var require_line_counter = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/parse/parser.js +//#region ../../../../../node_modules/yaml/dist/parse/parser.js var require_parser = /* @__PURE__ */ __commonJSMin(((exports) => { var node_process$1 = require("process"); var cst = require_cst(); @@ -75416,7 +75416,7 @@ var require_parser = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/public-api.js +//#region ../../../../../node_modules/yaml/dist/public-api.js var require_public_api = /* @__PURE__ */ __commonJSMin(((exports) => { var composer = require_composer(); var Document = require_Document(); @@ -75504,7 +75504,7 @@ var require_public_api = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/index.js +//#region ../../../../../node_modules/yaml/dist/index.js var require_dist = /* @__PURE__ */ __commonJSMin(((exports) => { var composer = require_composer(); var Document = require_Document(); @@ -75583,7 +75583,7 @@ function extractFrontmatter(content) { */ //#endregion -//#region ../../node_modules/escape-string-regexp/index.js +//#region ../../../../../node_modules/escape-string-regexp/index.js function escapeStringRegexp(string) { if (typeof string !== "string") throw new TypeError("Expected a string"); return string.replace(/[|\\{}()[\]^$+*?.]/g, "\\$&").replace(/-/g, "\\x2d"); @@ -75656,6 +75656,12 @@ function stateReplaceField(content, fieldName, newValue) { * Ported from maxsim/bin/lib/template.cjs */ +//#endregion +//#region ../cli/src/core/skill-context.ts +/** +* Skill Context — Provides MAXSIM state to skills via a single CLI call +*/ + //#endregion //#region ../cli/src/core/init.ts /** @@ -75665,7 +75671,7 @@ function stateReplaceField(content, fieldName, newValue) { */ //#endregion -//#region ../../node_modules/readdirp/esm/index.js +//#region ../../../../../node_modules/readdirp/esm/index.js const EntryTypes = { FILE_TYPE: "files", DIR_TYPE: "directories", @@ -75883,7 +75889,7 @@ function readdirp(root, options = {}) { } //#endregion -//#region ../../node_modules/chokidar/esm/handler.js +//#region ../../../../../node_modules/chokidar/esm/handler.js const STR_DATA = "data"; const STR_END = "end"; const STR_CLOSE = "close"; @@ -76213,14 +76219,14 @@ const FsWatchInstances = /* @__PURE__ */ new Map(); * @param emitRaw emits raw event data * @returns {NativeFsWatcher} */ -function createFsWatchInstance(path$37, options, listener, errHandler, emitRaw) { +function createFsWatchInstance(path$38, options, listener, errHandler, emitRaw) { const handleEvent = (rawEvent, evPath) => { - listener(path$37); - emitRaw(rawEvent, evPath, { watchedPath: path$37 }); - if (evPath && path$37 !== evPath) fsWatchBroadcast(path.resolve(path$37, evPath), KEY_LISTENERS, path.join(path$37, evPath)); + listener(path$38); + emitRaw(rawEvent, evPath, { watchedPath: path$38 }); + if (evPath && path$38 !== evPath) fsWatchBroadcast(path.resolve(path$38, evPath), KEY_LISTENERS, path.join(path$38, evPath)); }; try { - return (0, fs.watch)(path$37, { persistent: options.persistent }, handleEvent); + return (0, fs.watch)(path$38, { persistent: options.persistent }, handleEvent); } catch (error) { errHandler(error); return; @@ -76245,12 +76251,12 @@ const fsWatchBroadcast = (fullPath, listenerType, val1, val2, val3) => { * @param options to be passed to fs_watch * @param handlers container for event listener functions */ -const setFsWatchListener = (path$41, fullPath, options, handlers) => { +const setFsWatchListener = (path$42, fullPath, options, handlers) => { const { listener, errHandler, rawEmitter } = handlers; let cont = FsWatchInstances.get(fullPath); let watcher; if (!options.persistent) { - watcher = createFsWatchInstance(path$41, options, listener, errHandler, rawEmitter); + watcher = createFsWatchInstance(path$42, options, listener, errHandler, rawEmitter); if (!watcher) return; return watcher.close.bind(watcher); } @@ -76259,13 +76265,13 @@ const setFsWatchListener = (path$41, fullPath, options, handlers) => { addAndConvert(cont, KEY_ERR, errHandler); addAndConvert(cont, KEY_RAW, rawEmitter); } else { - watcher = createFsWatchInstance(path$41, options, fsWatchBroadcast.bind(null, fullPath, KEY_LISTENERS), errHandler, fsWatchBroadcast.bind(null, fullPath, KEY_RAW)); + watcher = createFsWatchInstance(path$42, options, fsWatchBroadcast.bind(null, fullPath, KEY_LISTENERS), errHandler, fsWatchBroadcast.bind(null, fullPath, KEY_RAW)); if (!watcher) return; watcher.on(EV.ERROR, async (error) => { const broadcastErr = fsWatchBroadcast.bind(null, fullPath, KEY_ERR); if (cont) cont.watcherUnusable = true; if (isWindows && error.code === "EPERM") try { - await (await (0, fs_promises.open)(path$41, "r")).close(); + await (await (0, fs_promises.open)(path$42, "r")).close(); broadcastErr(error); } catch (err) {} else broadcastErr(error); @@ -76301,7 +76307,7 @@ const FsWatchFileInstances = /* @__PURE__ */ new Map(); * @param handlers container for event listener functions * @returns closer */ -const setFsWatchFileListener = (path$42, fullPath, options, handlers) => { +const setFsWatchFileListener = (path$43, fullPath, options, handlers) => { const { listener, rawEmitter } = handlers; let cont = FsWatchFileInstances.get(fullPath); const copts = cont && cont.options; @@ -76325,7 +76331,7 @@ const setFsWatchFileListener = (path$42, fullPath, options, handlers) => { }); }); const currmtime = curr.mtimeMs; - if (curr.size !== prev.size || currmtime > prev.mtimeMs || currmtime === 0) foreach(cont.listeners, (listener) => listener(path$42, curr)); + if (curr.size !== prev.size || currmtime > prev.mtimeMs || currmtime === 0) foreach(cont.listeners, (listener) => listener(path$43, curr)); }) }; FsWatchFileInstances.set(fullPath, cont); @@ -76355,22 +76361,22 @@ var NodeFsHandler = class { * @param listener on fs change * @returns closer for the watcher instance */ - _watchWithNodeFs(path$38, listener) { + _watchWithNodeFs(path$39, listener) { const opts = this.fsw.options; - const directory = path.dirname(path$38); - const basename = path.basename(path$38); + const directory = path.dirname(path$39); + const basename = path.basename(path$39); this.fsw._getWatchedDir(directory).add(basename); - const absolutePath = path.resolve(path$38); + const absolutePath = path.resolve(path$39); const options = { persistent: opts.persistent }; if (!listener) listener = EMPTY_FN; let closer; if (opts.usePolling) { options.interval = opts.interval !== opts.binaryInterval && isBinaryPath(basename) ? opts.binaryInterval : opts.interval; - closer = setFsWatchFileListener(path$38, absolutePath, options, { + closer = setFsWatchFileListener(path$39, absolutePath, options, { listener, rawEmitter: this.fsw._emitRaw }); - } else closer = setFsWatchListener(path$38, absolutePath, options, { + } else closer = setFsWatchListener(path$39, absolutePath, options, { listener, errHandler: this._boundHandleError, rawEmitter: this.fsw._emitRaw @@ -76388,7 +76394,7 @@ var NodeFsHandler = class { const parent = this.fsw._getWatchedDir(dirname); let prevStats = stats; if (parent.has(basename)) return; - const listener = async (path$43, newStats) => { + const listener = async (path$44, newStats) => { if (!this.fsw._throttle(THROTTLE_MODE_WATCH, file, 5)) return; if (!newStats || newStats.mtimeMs === 0) try { const newStats = await (0, fs_promises.stat)(file); @@ -76397,10 +76403,10 @@ var NodeFsHandler = class { const mt = newStats.mtimeMs; if (!at || at <= mt || mt !== prevStats.mtimeMs) this.fsw._emit(EV.CHANGE, file, newStats); if ((isMacos || isLinux || isFreeBSD) && prevStats.ino !== newStats.ino) { - this.fsw._closeFile(path$43); + this.fsw._closeFile(path$44); prevStats = newStats; const closer = this._watchWithNodeFs(file, listener); - if (closer) this.fsw._addPathCloser(path$43, closer); + if (closer) this.fsw._addPathCloser(path$44, closer); } else prevStats = newStats; } catch (error) { this.fsw._remove(dirname, basename); @@ -76427,7 +76433,7 @@ var NodeFsHandler = class { * @param item basename of this item * @returns true if no more processing is needed for this entry. */ - async _handleSymlink(entry, directory, path$44, item) { + async _handleSymlink(entry, directory, path$45, item) { if (this.fsw.closed) return; const full = entry.fullPath; const dir = this.fsw._getWatchedDir(directory); @@ -76435,7 +76441,7 @@ var NodeFsHandler = class { this.fsw._incrReadyCount(); let linkPath; try { - linkPath = await (0, fs_promises.realpath)(path$44); + linkPath = await (0, fs_promises.realpath)(path$45); } catch (e) { this.fsw._emitReady(); return true; @@ -76444,12 +76450,12 @@ var NodeFsHandler = class { if (dir.has(item)) { if (this.fsw._symlinkPaths.get(full) !== linkPath) { this.fsw._symlinkPaths.set(full, linkPath); - this.fsw._emit(EV.CHANGE, path$44, entry.stats); + this.fsw._emit(EV.CHANGE, path$45, entry.stats); } } else { dir.add(item); this.fsw._symlinkPaths.set(full, linkPath); - this.fsw._emit(EV.ADD, path$44, entry.stats); + this.fsw._emit(EV.ADD, path$45, entry.stats); } this.fsw._emitReady(); return true; @@ -76474,17 +76480,17 @@ var NodeFsHandler = class { return; } const item = entry.path; - let path$39 = path.join(directory, item); + let path$40 = path.join(directory, item); current.add(item); - if (entry.stats.isSymbolicLink() && await this._handleSymlink(entry, directory, path$39, item)) return; + if (entry.stats.isSymbolicLink() && await this._handleSymlink(entry, directory, path$40, item)) return; if (this.fsw.closed) { stream = void 0; return; } if (item === target || !target && !previous.has(item)) { this.fsw._incrReadyCount(); - path$39 = path.join(dir, path.relative(dir, path$39)); - this._addToNodeFs(path$39, initialAdd, wh, depth + 1); + path$40 = path.join(dir, path.relative(dir, path$40)); + this._addToNodeFs(path$40, initialAdd, wh, depth + 1); } }).on(EV.ERROR, this._boundHandleError); return new Promise((resolve, reject) => { @@ -76547,13 +76553,13 @@ var NodeFsHandler = class { * @param depth Child path actually targeted for watch * @param target Child path actually targeted for watch */ - async _addToNodeFs(path$40, initialAdd, priorWh, depth, target) { + async _addToNodeFs(path$41, initialAdd, priorWh, depth, target) { const ready = this.fsw._emitReady; - if (this.fsw._isIgnored(path$40) || this.fsw.closed) { + if (this.fsw._isIgnored(path$41) || this.fsw.closed) { ready(); return false; } - const wh = this.fsw._getWatchHelpers(path$40); + const wh = this.fsw._getWatchHelpers(path$41); if (priorWh) { wh.filterPath = (entry) => priorWh.filterPath(entry); wh.filterDir = (entry) => priorWh.filterDir(entry); @@ -76568,36 +76574,36 @@ var NodeFsHandler = class { const follow = this.fsw.options.followSymlinks; let closer; if (stats.isDirectory()) { - const absPath = path.resolve(path$40); - const targetPath = follow ? await (0, fs_promises.realpath)(path$40) : path$40; + const absPath = path.resolve(path$41); + const targetPath = follow ? await (0, fs_promises.realpath)(path$41) : path$41; if (this.fsw.closed) return; closer = await this._handleDir(wh.watchPath, stats, initialAdd, depth, target, wh, targetPath); if (this.fsw.closed) return; if (absPath !== targetPath && targetPath !== void 0) this.fsw._symlinkPaths.set(absPath, targetPath); } else if (stats.isSymbolicLink()) { - const targetPath = follow ? await (0, fs_promises.realpath)(path$40) : path$40; + const targetPath = follow ? await (0, fs_promises.realpath)(path$41) : path$41; if (this.fsw.closed) return; const parent = path.dirname(wh.watchPath); this.fsw._getWatchedDir(parent).add(wh.watchPath); this.fsw._emit(EV.ADD, wh.watchPath, stats); - closer = await this._handleDir(parent, stats, initialAdd, depth, path$40, wh, targetPath); + closer = await this._handleDir(parent, stats, initialAdd, depth, path$41, wh, targetPath); if (this.fsw.closed) return; - if (targetPath !== void 0) this.fsw._symlinkPaths.set(path.resolve(path$40), targetPath); + if (targetPath !== void 0) this.fsw._symlinkPaths.set(path.resolve(path$41), targetPath); } else closer = this._handleFile(wh.watchPath, stats, initialAdd); ready(); - if (closer) this.fsw._addPathCloser(path$40, closer); + if (closer) this.fsw._addPathCloser(path$41, closer); return false; } catch (error) { if (this.fsw._handleError(error)) { ready(); - return path$40; + return path$41; } } } }; //#endregion -//#region ../../node_modules/chokidar/esm/index.js +//#region ../../../../../node_modules/chokidar/esm/index.js /*! chokidar - MIT License (c) 2012 Paul Miller (paulmillr.com) */ const SLASH = "/"; const SLASH_SLASH = "//"; @@ -76627,22 +76633,22 @@ function createPattern(matcher) { }; return () => false; } -function normalizePath(path$16) { - if (typeof path$16 !== "string") throw new Error("string expected"); - path$16 = path.normalize(path$16); - path$16 = path$16.replace(/\\/g, "/"); +function normalizePath(path$17) { + if (typeof path$17 !== "string") throw new Error("string expected"); + path$17 = path.normalize(path$17); + path$17 = path$17.replace(/\\/g, "/"); let prepend = false; - if (path$16.startsWith("//")) prepend = true; + if (path$17.startsWith("//")) prepend = true; const DOUBLE_SLASH_RE = /\/\//; - while (path$16.match(DOUBLE_SLASH_RE)) path$16 = path$16.replace(DOUBLE_SLASH_RE, "/"); - if (prepend) path$16 = "/" + path$16; - return path$16; + while (path$17.match(DOUBLE_SLASH_RE)) path$17 = path$17.replace(DOUBLE_SLASH_RE, "/"); + if (prepend) path$17 = "/" + path$17; + return path$17; } function matchPatterns(patterns, testString, stats) { - const path$26 = normalizePath(testString); + const path$27 = normalizePath(testString); for (let index = 0; index < patterns.length; index++) { const pattern = patterns[index]; - if (pattern(path$26, stats)) return true; + if (pattern(path$27, stats)) return true; } return false; } @@ -76667,14 +76673,14 @@ const toUnix = (string) => { if (prepend) str = SLASH + str; return str; }; -const normalizePathToUnix = (path$17) => toUnix(path.normalize(toUnix(path$17))); -const normalizeIgnored = (cwd = "") => (path$18) => { - if (typeof path$18 === "string") return normalizePathToUnix(path.isAbsolute(path$18) ? path$18 : path.join(cwd, path$18)); - else return path$18; +const normalizePathToUnix = (path$18) => toUnix(path.normalize(toUnix(path$18))); +const normalizeIgnored = (cwd = "") => (path$19) => { + if (typeof path$19 === "string") return normalizePathToUnix(path.isAbsolute(path$19) ? path$19 : path.join(cwd, path$19)); + else return path$19; }; -const getAbsolutePath = (path$19, cwd) => { - if (path.isAbsolute(path$19)) return path$19; - return path.join(cwd, path$19); +const getAbsolutePath = (path$20, cwd) => { + if (path.isAbsolute(path$20)) return path$20; + return path.join(cwd, path$20); }; const EMPTY_SET = Object.freeze(/* @__PURE__ */ new Set()); /** @@ -76724,10 +76730,10 @@ var DirEntry = class { const STAT_METHOD_F = "stat"; const STAT_METHOD_L = "lstat"; var WatchHelper = class { - constructor(path$20, follow, fsw) { + constructor(path$21, follow, fsw) { this.fsw = fsw; - const watchPath = path$20; - this.path = path$20 = path$20.replace(REPLACER_RE, ""); + const watchPath = path$21; + this.path = path$21 = path$21.replace(REPLACER_RE, ""); this.watchPath = watchPath; this.fullWatchPath = path.resolve(watchPath); this.dirParts = []; @@ -76840,17 +76846,17 @@ var FSWatcher = class extends events.EventEmitter { this.closed = false; this._closePromise = void 0; let paths = unifyPaths(paths_); - if (cwd) paths = paths.map((path$27) => { - return getAbsolutePath(path$27, cwd); + if (cwd) paths = paths.map((path$28) => { + return getAbsolutePath(path$28, cwd); }); - paths.forEach((path$28) => { - this._removeIgnoredPath(path$28); + paths.forEach((path$29) => { + this._removeIgnoredPath(path$29); }); this._userIgnored = void 0; if (!this._readyCount) this._readyCount = 0; this._readyCount += paths.length; - Promise.all(paths.map(async (path$29) => { - const res = await this._nodeFsHandler._addToNodeFs(path$29, !_internal, void 0, 0, _origAdd); + Promise.all(paths.map(async (path$30) => { + const res = await this._nodeFsHandler._addToNodeFs(path$30, !_internal, void 0, 0, _origAdd); if (res) this._emitReady(); return res; })).then((results) => { @@ -76868,15 +76874,15 @@ var FSWatcher = class extends events.EventEmitter { if (this.closed) return this; const paths = unifyPaths(paths_); const { cwd } = this.options; - paths.forEach((path$21) => { - if (!path.isAbsolute(path$21) && !this._closers.has(path$21)) { - if (cwd) path$21 = path.join(cwd, path$21); - path$21 = path.resolve(path$21); - } - this._closePath(path$21); - this._addIgnoredPath(path$21); - if (this._watched.has(path$21)) this._addIgnoredPath({ - path: path$21, + paths.forEach((path$22) => { + if (!path.isAbsolute(path$22) && !this._closers.has(path$22)) { + if (cwd) path$22 = path.join(cwd, path$22); + path$22 = path.resolve(path$22); + } + this._closePath(path$22); + this._addIgnoredPath(path$22); + if (this._watched.has(path$22)) this._addIgnoredPath({ + path: path$22, recursive: true }); this._userIgnored = void 0; @@ -76932,34 +76938,34 @@ var FSWatcher = class extends events.EventEmitter { * @param stats arguments to be passed with event * @returns the error if defined, otherwise the value of the FSWatcher instance's `closed` flag */ - async _emit(event, path$22, stats) { + async _emit(event, path$23, stats) { if (this.closed) return; const opts = this.options; - if (isWindows) path$22 = path.normalize(path$22); - if (opts.cwd) path$22 = path.relative(opts.cwd, path$22); - const args = [path$22]; + if (isWindows) path$23 = path.normalize(path$23); + if (opts.cwd) path$23 = path.relative(opts.cwd, path$23); + const args = [path$23]; if (stats != null) args.push(stats); const awf = opts.awaitWriteFinish; let pw; - if (awf && (pw = this._pendingWrites.get(path$22))) { + if (awf && (pw = this._pendingWrites.get(path$23))) { pw.lastChange = /* @__PURE__ */ new Date(); return this; } if (opts.atomic) { if (event === EVENTS.UNLINK) { - this._pendingUnlinks.set(path$22, [event, ...args]); + this._pendingUnlinks.set(path$23, [event, ...args]); setTimeout(() => { - this._pendingUnlinks.forEach((entry, path$30) => { + this._pendingUnlinks.forEach((entry, path$31) => { this.emit(...entry); this.emit(EVENTS.ALL, ...entry); - this._pendingUnlinks.delete(path$30); + this._pendingUnlinks.delete(path$31); }); }, typeof opts.atomic === "number" ? opts.atomic : 100); return this; } - if (event === EVENTS.ADD && this._pendingUnlinks.has(path$22)) { + if (event === EVENTS.ADD && this._pendingUnlinks.has(path$23)) { event = EVENTS.CHANGE; - this._pendingUnlinks.delete(path$22); + this._pendingUnlinks.delete(path$23); } } if (awf && (event === EVENTS.ADD || event === EVENTS.CHANGE) && this._readyEmitted) { @@ -76974,14 +76980,14 @@ var FSWatcher = class extends events.EventEmitter { this.emitWithAll(event, args); } }; - this._awaitWriteFinish(path$22, awf.stabilityThreshold, event, awfEmit); + this._awaitWriteFinish(path$23, awf.stabilityThreshold, event, awfEmit); return this; } if (event === EVENTS.CHANGE) { - if (!this._throttle(EVENTS.CHANGE, path$22, 50)) return this; + if (!this._throttle(EVENTS.CHANGE, path$23, 50)) return this; } if (opts.alwaysStat && stats === void 0 && (event === EVENTS.ADD || event === EVENTS.ADD_DIR || event === EVENTS.CHANGE)) { - const fullPath = opts.cwd ? path.join(opts.cwd, path$22) : path$22; + const fullPath = opts.cwd ? path.join(opts.cwd, path$23) : path$23; let stats; try { stats = await (0, fs_promises.stat)(fullPath); @@ -77008,20 +77014,20 @@ var FSWatcher = class extends events.EventEmitter { * @param timeout duration of time to suppress duplicate actions * @returns tracking object or false if action should be suppressed */ - _throttle(actionType, path$31, timeout) { + _throttle(actionType, path$32, timeout) { if (!this._throttled.has(actionType)) this._throttled.set(actionType, /* @__PURE__ */ new Map()); const action = this._throttled.get(actionType); if (!action) throw new Error("invalid throttle"); - const actionPath = action.get(path$31); + const actionPath = action.get(path$32); if (actionPath) { actionPath.count++; return false; } let timeoutObject; const clear = () => { - const item = action.get(path$31); + const item = action.get(path$32); const count = item ? item.count : 0; - action.delete(path$31); + action.delete(path$32); clearTimeout(timeoutObject); if (item) clearTimeout(item.timeoutObject); return count; @@ -77032,7 +77038,7 @@ var FSWatcher = class extends events.EventEmitter { clear, count: 0 }; - action.set(path$31, thr); + action.set(path$32, thr); return thr; } _incrReadyCount() { @@ -77046,34 +77052,34 @@ var FSWatcher = class extends events.EventEmitter { * @param event * @param awfEmit Callback to be called when ready for event to be emitted. */ - _awaitWriteFinish(path$23, threshold, event, awfEmit) { + _awaitWriteFinish(path$24, threshold, event, awfEmit) { const awf = this.options.awaitWriteFinish; if (typeof awf !== "object") return; const pollInterval = awf.pollInterval; let timeoutHandler; - let fullPath = path$23; - if (this.options.cwd && !path.isAbsolute(path$23)) fullPath = path.join(this.options.cwd, path$23); + let fullPath = path$24; + if (this.options.cwd && !path.isAbsolute(path$24)) fullPath = path.join(this.options.cwd, path$24); const now = /* @__PURE__ */ new Date(); const writes = this._pendingWrites; function awaitWriteFinishFn(prevStat) { (0, fs.stat)(fullPath, (err, curStat) => { - if (err || !writes.has(path$23)) { + if (err || !writes.has(path$24)) { if (err && err.code !== "ENOENT") awfEmit(err); return; } const now = Number(/* @__PURE__ */ new Date()); - if (prevStat && curStat.size !== prevStat.size) writes.get(path$23).lastChange = now; - if (now - writes.get(path$23).lastChange >= threshold) { - writes.delete(path$23); + if (prevStat && curStat.size !== prevStat.size) writes.get(path$24).lastChange = now; + if (now - writes.get(path$24).lastChange >= threshold) { + writes.delete(path$24); awfEmit(void 0, curStat); } else timeoutHandler = setTimeout(awaitWriteFinishFn, pollInterval, curStat); }); } - if (!writes.has(path$23)) { - writes.set(path$23, { + if (!writes.has(path$24)) { + writes.set(path$24, { lastChange: now, cancelWait: () => { - writes.delete(path$23); + writes.delete(path$24); clearTimeout(timeoutHandler); return event; } @@ -77084,24 +77090,24 @@ var FSWatcher = class extends events.EventEmitter { /** * Determines whether user has asked to ignore this path. */ - _isIgnored(path$32, stats) { - if (this.options.atomic && DOT_RE.test(path$32)) return true; + _isIgnored(path$33, stats) { + if (this.options.atomic && DOT_RE.test(path$33)) return true; if (!this._userIgnored) { const { cwd } = this.options; const ignored = (this.options.ignored || []).map(normalizeIgnored(cwd)); this._userIgnored = anymatch([...[...this._ignoredPaths].map(normalizeIgnored(cwd)), ...ignored], void 0); } - return this._userIgnored(path$32, stats); + return this._userIgnored(path$33, stats); } - _isntIgnored(path$33, stat) { - return !this._isIgnored(path$33, stat); + _isntIgnored(path$34, stat) { + return !this._isIgnored(path$34, stat); } /** * Provides a set of common helpers and properties relating to symlink handling. * @param path file or directory pattern being watched */ - _getWatchHelpers(path$34) { - return new WatchHelper(path$34, this.options.followSymlinks, this); + _getWatchHelpers(path$35) { + return new WatchHelper(path$35, this.options.followSymlinks, this); } /** * Provides directory tracking objects @@ -77127,50 +77133,50 @@ var FSWatcher = class extends events.EventEmitter { * @param item base path of item/directory */ _remove(directory, item, isDirectory) { - const path$24 = path.join(directory, item); - const fullPath = path.resolve(path$24); - isDirectory = isDirectory != null ? isDirectory : this._watched.has(path$24) || this._watched.has(fullPath); - if (!this._throttle("remove", path$24, 100)) return; + const path$25 = path.join(directory, item); + const fullPath = path.resolve(path$25); + isDirectory = isDirectory != null ? isDirectory : this._watched.has(path$25) || this._watched.has(fullPath); + if (!this._throttle("remove", path$25, 100)) return; if (!isDirectory && this._watched.size === 1) this.add(directory, item, true); - this._getWatchedDir(path$24).getChildren().forEach((nested) => this._remove(path$24, nested)); + this._getWatchedDir(path$25).getChildren().forEach((nested) => this._remove(path$25, nested)); const parent = this._getWatchedDir(directory); const wasTracked = parent.has(item); parent.remove(item); if (this._symlinkPaths.has(fullPath)) this._symlinkPaths.delete(fullPath); - let relPath = path$24; - if (this.options.cwd) relPath = path.relative(this.options.cwd, path$24); + let relPath = path$25; + if (this.options.cwd) relPath = path.relative(this.options.cwd, path$25); if (this.options.awaitWriteFinish && this._pendingWrites.has(relPath)) { if (this._pendingWrites.get(relPath).cancelWait() === EVENTS.ADD) return; } - this._watched.delete(path$24); + this._watched.delete(path$25); this._watched.delete(fullPath); const eventName = isDirectory ? EVENTS.UNLINK_DIR : EVENTS.UNLINK; - if (wasTracked && !this._isIgnored(path$24)) this._emit(eventName, path$24); - this._closePath(path$24); + if (wasTracked && !this._isIgnored(path$25)) this._emit(eventName, path$25); + this._closePath(path$25); } /** * Closes all watchers for a path */ - _closePath(path$25) { - this._closeFile(path$25); - const dir = path.dirname(path$25); - this._getWatchedDir(dir).remove(path.basename(path$25)); + _closePath(path$26) { + this._closeFile(path$26); + const dir = path.dirname(path$26); + this._getWatchedDir(dir).remove(path.basename(path$26)); } /** * Closes only file-specific watchers */ - _closeFile(path$35) { - const closers = this._closers.get(path$35); + _closeFile(path$36) { + const closers = this._closers.get(path$36); if (!closers) return; closers.forEach((closer) => closer()); - this._closers.delete(path$35); + this._closers.delete(path$36); } - _addPathCloser(path$36, closer) { + _addPathCloser(path$37, closer) { if (!closer) return; - let list = this._closers.get(path$36); + let list = this._closers.get(path$37); if (!list) { list = []; - this._closers.set(path$36, list); + this._closers.set(path$37, list); } list.push(closer); } @@ -77212,7 +77218,7 @@ function watch(paths, options = {}) { } //#endregion -//#region ../../node_modules/lodash.debounce/index.js +//#region ../../../../../node_modules/lodash.debounce/index.js var require_lodash_debounce = /* @__PURE__ */ __commonJSMin(((exports, module) => { /** * lodash (Custom Build) diff --git a/packages/cli/dist/cli.cjs b/packages/cli/dist/cli.cjs index 15efc02..b488b63 100644 --- a/packages/cli/dist/cli.cjs +++ b/packages/cli/dist/cli.cjs @@ -61,7 +61,7 @@ const PLANNING_CONFIG_DEFAULTS = { }; //#endregion -//#region ../../node_modules/ms/index.js +//#region ../../../../../node_modules/ms/index.js var require_ms = /* @__PURE__ */ __commonJSMin(((exports, module) => { /** * Helpers. @@ -180,7 +180,7 @@ var require_ms = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/debug/src/common.js +//#region ../../../../../node_modules/debug/src/common.js var require_common = /* @__PURE__ */ __commonJSMin(((exports, module) => { /** * This is the common logic for both the Node.js and web browser @@ -383,7 +383,7 @@ var require_common = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/debug/src/browser.js +//#region ../../../../../node_modules/debug/src/browser.js var require_browser = /* @__PURE__ */ __commonJSMin(((exports, module) => { /** * This is the web browser implementation of `debug()`. @@ -580,7 +580,7 @@ var require_browser = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/has-flag/index.js +//#region ../../../../../node_modules/has-flag/index.js var require_has_flag = /* @__PURE__ */ __commonJSMin(((exports, module) => { module.exports = (flag, argv = process.argv) => { const prefix = flag.startsWith("-") ? "" : flag.length === 1 ? "-" : "--"; @@ -591,7 +591,7 @@ var require_has_flag = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/supports-color/index.js +//#region ../../../../../node_modules/supports-color/index.js var require_supports_color = /* @__PURE__ */ __commonJSMin(((exports, module) => { const os$5 = require("os"); const tty$2 = require("tty"); @@ -660,7 +660,7 @@ var require_supports_color = /* @__PURE__ */ __commonJSMin(((exports, module) => })); //#endregion -//#region ../../node_modules/debug/src/node.js +//#region ../../../../../node_modules/debug/src/node.js var require_node = /* @__PURE__ */ __commonJSMin(((exports, module) => { /** * Module dependencies. @@ -868,7 +868,7 @@ var require_node = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/debug/src/index.js +//#region ../../../../../node_modules/debug/src/index.js var require_src$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => { /** * Detect Electron renderer / nwjs process, which is node, but we should @@ -879,7 +879,7 @@ var require_src$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/@kwsites/file-exists/dist/src/index.js +//#region ../../../../../node_modules/@kwsites/file-exists/dist/src/index.js var require_src = /* @__PURE__ */ __commonJSMin(((exports) => { var __importDefault = exports && exports.__importDefault || function(mod) { return mod && mod.__esModule ? mod : { "default": mod }; @@ -935,7 +935,7 @@ var require_src = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/@kwsites/file-exists/dist/index.js +//#region ../../../../../node_modules/@kwsites/file-exists/dist/index.js var require_dist$2 = /* @__PURE__ */ __commonJSMin(((exports) => { function __export(m) { for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; @@ -945,7 +945,7 @@ var require_dist$2 = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/@kwsites/promise-deferred/dist/index.js +//#region ../../../../../node_modules/@kwsites/promise-deferred/dist/index.js var require_dist$1 = /* @__PURE__ */ __commonJSMin(((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); exports.createDeferred = exports.deferred = void 0; @@ -998,7 +998,7 @@ var require_dist$1 = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/simple-git/dist/esm/index.js +//#region ../../../../../node_modules/simple-git/dist/esm/index.js var import_dist$1 = require_dist$2(); var import_src = /* @__PURE__ */ __toESM(require_src$1(), 1); var import_dist$2 = require_dist$1(); @@ -4597,7 +4597,7 @@ init_git_response_error(); var simpleGit = gitInstanceFactory; //#endregion -//#region ../../node_modules/slugify/slugify.js +//#region ../../../../../node_modules/slugify/slugify.js var require_slugify = /* @__PURE__ */ __commonJSMin(((exports, module) => { (function(name, root, factory) { if (typeof exports === "object") { @@ -5104,7 +5104,7 @@ function getMilestoneInfo(cwd) { } //#endregion -//#region ../../node_modules/yaml/dist/nodes/identity.js +//#region ../../../../../node_modules/yaml/dist/nodes/identity.js var require_identity = /* @__PURE__ */ __commonJSMin(((exports) => { const ALIAS = Symbol.for("yaml.alias"); const DOC = Symbol.for("yaml.document"); @@ -5155,7 +5155,7 @@ var require_identity = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/visit.js +//#region ../../../../../node_modules/yaml/dist/visit.js var require_visit = /* @__PURE__ */ __commonJSMin(((exports) => { var identity = require_identity(); const BREAK = Symbol("break visit"); @@ -5346,7 +5346,7 @@ var require_visit = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/doc/directives.js +//#region ../../../../../node_modules/yaml/dist/doc/directives.js var require_directives = /* @__PURE__ */ __commonJSMin(((exports) => { var identity = require_identity(); var visit = require_visit(); @@ -5512,7 +5512,7 @@ var require_directives = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/doc/anchors.js +//#region ../../../../../node_modules/yaml/dist/doc/anchors.js var require_anchors = /* @__PURE__ */ __commonJSMin(((exports) => { var identity = require_identity(); var visit = require_visit(); @@ -5575,7 +5575,7 @@ var require_anchors = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/doc/applyReviver.js +//#region ../../../../../node_modules/yaml/dist/doc/applyReviver.js var require_applyReviver = /* @__PURE__ */ __commonJSMin(((exports) => { /** * Applies the JSON.parse reviver algorithm as defined in the ECMA-262 spec, @@ -5616,7 +5616,7 @@ var require_applyReviver = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/nodes/toJS.js +//#region ../../../../../node_modules/yaml/dist/nodes/toJS.js var require_toJS = /* @__PURE__ */ __commonJSMin(((exports) => { var identity = require_identity(); /** @@ -5654,7 +5654,7 @@ var require_toJS = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/nodes/Node.js +//#region ../../../../../node_modules/yaml/dist/nodes/Node.js var require_Node = /* @__PURE__ */ __commonJSMin(((exports) => { var applyReviver = require_applyReviver(); var identity = require_identity(); @@ -5689,7 +5689,7 @@ var require_Node = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/nodes/Alias.js +//#region ../../../../../node_modules/yaml/dist/nodes/Alias.js var require_Alias = /* @__PURE__ */ __commonJSMin(((exports) => { var anchors = require_anchors(); var visit = require_visit(); @@ -5783,7 +5783,7 @@ var require_Alias = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/nodes/Scalar.js +//#region ../../../../../node_modules/yaml/dist/nodes/Scalar.js var require_Scalar = /* @__PURE__ */ __commonJSMin(((exports) => { var identity = require_identity(); var Node = require_Node(); @@ -5811,7 +5811,7 @@ var require_Scalar = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/doc/createNode.js +//#region ../../../../../node_modules/yaml/dist/doc/createNode.js var require_createNode = /* @__PURE__ */ __commonJSMin(((exports) => { var Alias = require_Alias(); var identity = require_identity(); @@ -5875,7 +5875,7 @@ var require_createNode = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/nodes/Collection.js +//#region ../../../../../node_modules/yaml/dist/nodes/Collection.js var require_Collection = /* @__PURE__ */ __commonJSMin(((exports) => { var createNode = require_createNode(); var identity = require_identity(); @@ -5997,7 +5997,7 @@ var require_Collection = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/stringify/stringifyComment.js +//#region ../../../../../node_modules/yaml/dist/stringify/stringifyComment.js var require_stringifyComment = /* @__PURE__ */ __commonJSMin(((exports) => { /** * Stringifies a comment. @@ -6018,7 +6018,7 @@ var require_stringifyComment = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/stringify/foldFlowLines.js +//#region ../../../../../node_modules/yaml/dist/stringify/foldFlowLines.js var require_foldFlowLines = /* @__PURE__ */ __commonJSMin(((exports) => { const FOLD_FLOW = "flow"; const FOLD_BLOCK = "block"; @@ -6135,7 +6135,7 @@ var require_foldFlowLines = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/stringify/stringifyString.js +//#region ../../../../../node_modules/yaml/dist/stringify/stringifyString.js var require_stringifyString = /* @__PURE__ */ __commonJSMin(((exports) => { var Scalar = require_Scalar(); var foldFlowLines = require_foldFlowLines(); @@ -6360,7 +6360,7 @@ var require_stringifyString = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/stringify/stringify.js +//#region ../../../../../node_modules/yaml/dist/stringify/stringify.js var require_stringify = /* @__PURE__ */ __commonJSMin(((exports) => { var anchors = require_anchors(); var identity = require_identity(); @@ -6468,7 +6468,7 @@ var require_stringify = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/stringify/stringifyPair.js +//#region ../../../../../node_modules/yaml/dist/stringify/stringifyPair.js var require_stringifyPair = /* @__PURE__ */ __commonJSMin(((exports) => { var identity = require_identity(); var Scalar = require_Scalar(); @@ -6566,7 +6566,7 @@ var require_stringifyPair = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/log.js +//#region ../../../../../node_modules/yaml/dist/log.js var require_log = /* @__PURE__ */ __commonJSMin(((exports) => { var node_process$3 = require("process"); function debug(logLevel, ...messages) { @@ -6581,7 +6581,7 @@ var require_log = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/schema/yaml-1.1/merge.js +//#region ../../../../../node_modules/yaml/dist/schema/yaml-1.1/merge.js var require_merge = /* @__PURE__ */ __commonJSMin(((exports) => { var identity = require_identity(); var Scalar = require_Scalar(); @@ -6622,7 +6622,7 @@ var require_merge = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/nodes/addPairToJSMap.js +//#region ../../../../../node_modules/yaml/dist/nodes/addPairToJSMap.js var require_addPairToJSMap = /* @__PURE__ */ __commonJSMin(((exports) => { var log = require_log(); var merge = require_merge(); @@ -6674,7 +6674,7 @@ var require_addPairToJSMap = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/nodes/Pair.js +//#region ../../../../../node_modules/yaml/dist/nodes/Pair.js var require_Pair = /* @__PURE__ */ __commonJSMin(((exports) => { var createNode = require_createNode(); var stringifyPair = require_stringifyPair(); @@ -6708,7 +6708,7 @@ var require_Pair = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/stringify/stringifyCollection.js +//#region ../../../../../node_modules/yaml/dist/stringify/stringifyCollection.js var require_stringifyCollection = /* @__PURE__ */ __commonJSMin(((exports) => { var identity = require_identity(); var stringify = require_stringify(); @@ -6823,7 +6823,7 @@ var require_stringifyCollection = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/nodes/YAMLMap.js +//#region ../../../../../node_modules/yaml/dist/nodes/YAMLMap.js var require_YAMLMap = /* @__PURE__ */ __commonJSMin(((exports) => { var stringifyCollection = require_stringifyCollection(); var addPairToJSMap = require_addPairToJSMap(); @@ -6933,7 +6933,7 @@ var require_YAMLMap = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/schema/common/map.js +//#region ../../../../../node_modules/yaml/dist/schema/common/map.js var require_map = /* @__PURE__ */ __commonJSMin(((exports) => { var identity = require_identity(); var YAMLMap = require_YAMLMap(); @@ -6952,7 +6952,7 @@ var require_map = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/nodes/YAMLSeq.js +//#region ../../../../../node_modules/yaml/dist/nodes/YAMLSeq.js var require_YAMLSeq = /* @__PURE__ */ __commonJSMin(((exports) => { var createNode = require_createNode(); var stringifyCollection = require_stringifyCollection(); @@ -7059,7 +7059,7 @@ var require_YAMLSeq = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/schema/common/seq.js +//#region ../../../../../node_modules/yaml/dist/schema/common/seq.js var require_seq = /* @__PURE__ */ __commonJSMin(((exports) => { var identity = require_identity(); var YAMLSeq = require_YAMLSeq(); @@ -7078,7 +7078,7 @@ var require_seq = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/schema/common/string.js +//#region ../../../../../node_modules/yaml/dist/schema/common/string.js var require_string = /* @__PURE__ */ __commonJSMin(((exports) => { var stringifyString = require_stringifyString(); const string = { @@ -7095,7 +7095,7 @@ var require_string = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/schema/common/null.js +//#region ../../../../../node_modules/yaml/dist/schema/common/null.js var require_null = /* @__PURE__ */ __commonJSMin(((exports) => { var Scalar = require_Scalar(); const nullTag = { @@ -7111,7 +7111,7 @@ var require_null = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/schema/core/bool.js +//#region ../../../../../node_modules/yaml/dist/schema/core/bool.js var require_bool$1 = /* @__PURE__ */ __commonJSMin(((exports) => { var Scalar = require_Scalar(); const boolTag = { @@ -7131,7 +7131,7 @@ var require_bool$1 = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/stringify/stringifyNumber.js +//#region ../../../../../node_modules/yaml/dist/stringify/stringifyNumber.js var require_stringifyNumber = /* @__PURE__ */ __commonJSMin(((exports) => { function stringifyNumber({ format, minFractionDigits, tag, value }) { if (typeof value === "bigint") return String(value); @@ -7153,7 +7153,7 @@ var require_stringifyNumber = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/schema/core/float.js +//#region ../../../../../node_modules/yaml/dist/schema/core/float.js var require_float$1 = /* @__PURE__ */ __commonJSMin(((exports) => { var Scalar = require_Scalar(); var stringifyNumber = require_stringifyNumber(); @@ -7196,7 +7196,7 @@ var require_float$1 = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/schema/core/int.js +//#region ../../../../../node_modules/yaml/dist/schema/core/int.js var require_int$1 = /* @__PURE__ */ __commonJSMin(((exports) => { var stringifyNumber = require_stringifyNumber(); const intIdentify = (value) => typeof value === "bigint" || Number.isInteger(value); @@ -7238,7 +7238,7 @@ var require_int$1 = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/schema/core/schema.js +//#region ../../../../../node_modules/yaml/dist/schema/core/schema.js var require_schema$2 = /* @__PURE__ */ __commonJSMin(((exports) => { var map = require_map(); var _null = require_null(); @@ -7264,7 +7264,7 @@ var require_schema$2 = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/schema/json/schema.js +//#region ../../../../../node_modules/yaml/dist/schema/json/schema.js var require_schema$1 = /* @__PURE__ */ __commonJSMin(((exports) => { var Scalar = require_Scalar(); var map = require_map(); @@ -7328,7 +7328,7 @@ var require_schema$1 = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/schema/yaml-1.1/binary.js +//#region ../../../../../node_modules/yaml/dist/schema/yaml-1.1/binary.js var require_binary = /* @__PURE__ */ __commonJSMin(((exports) => { var node_buffer$1 = require("buffer"); var Scalar = require_Scalar(); @@ -7378,7 +7378,7 @@ var require_binary = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/schema/yaml-1.1/pairs.js +//#region ../../../../../node_modules/yaml/dist/schema/yaml-1.1/pairs.js var require_pairs = /* @__PURE__ */ __commonJSMin(((exports) => { var identity = require_identity(); var Pair = require_Pair(); @@ -7439,7 +7439,7 @@ var require_pairs = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/schema/yaml-1.1/omap.js +//#region ../../../../../node_modules/yaml/dist/schema/yaml-1.1/omap.js var require_omap = /* @__PURE__ */ __commonJSMin(((exports) => { var identity = require_identity(); var toJS = require_toJS(); @@ -7503,7 +7503,7 @@ var require_omap = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/schema/yaml-1.1/bool.js +//#region ../../../../../node_modules/yaml/dist/schema/yaml-1.1/bool.js var require_bool = /* @__PURE__ */ __commonJSMin(((exports) => { var Scalar = require_Scalar(); function boolStringify({ value, source }, ctx) { @@ -7531,7 +7531,7 @@ var require_bool = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/schema/yaml-1.1/float.js +//#region ../../../../../node_modules/yaml/dist/schema/yaml-1.1/float.js var require_float = /* @__PURE__ */ __commonJSMin(((exports) => { var Scalar = require_Scalar(); var stringifyNumber = require_stringifyNumber(); @@ -7577,7 +7577,7 @@ var require_float = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/schema/yaml-1.1/int.js +//#region ../../../../../node_modules/yaml/dist/schema/yaml-1.1/int.js var require_int = /* @__PURE__ */ __commonJSMin(((exports) => { var stringifyNumber = require_stringifyNumber(); const intIdentify = (value) => typeof value === "bigint" || Number.isInteger(value); @@ -7653,7 +7653,7 @@ var require_int = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/schema/yaml-1.1/set.js +//#region ../../../../../node_modules/yaml/dist/schema/yaml-1.1/set.js var require_set = /* @__PURE__ */ __commonJSMin(((exports) => { var identity = require_identity(); var Pair = require_Pair(); @@ -7722,7 +7722,7 @@ var require_set = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/schema/yaml-1.1/timestamp.js +//#region ../../../../../node_modules/yaml/dist/schema/yaml-1.1/timestamp.js var require_timestamp = /* @__PURE__ */ __commonJSMin(((exports) => { var stringifyNumber = require_stringifyNumber(); /** Internal types handle bigint as number, because TS can't figure it out. */ @@ -7806,7 +7806,7 @@ var require_timestamp = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/schema/yaml-1.1/schema.js +//#region ../../../../../node_modules/yaml/dist/schema/yaml-1.1/schema.js var require_schema = /* @__PURE__ */ __commonJSMin(((exports) => { var map = require_map(); var _null = require_null(); @@ -7848,7 +7848,7 @@ var require_schema = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/schema/tags.js +//#region ../../../../../node_modules/yaml/dist/schema/tags.js var require_tags = /* @__PURE__ */ __commonJSMin(((exports) => { var map = require_map(); var _null = require_null(); @@ -7933,7 +7933,7 @@ var require_tags = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/schema/Schema.js +//#region ../../../../../node_modules/yaml/dist/schema/Schema.js var require_Schema = /* @__PURE__ */ __commonJSMin(((exports) => { var identity = require_identity(); var map = require_map(); @@ -7963,7 +7963,7 @@ var require_Schema = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/stringify/stringifyDocument.js +//#region ../../../../../node_modules/yaml/dist/stringify/stringifyDocument.js var require_stringifyDocument = /* @__PURE__ */ __commonJSMin(((exports) => { var identity = require_identity(); var stringify = require_stringify(); @@ -8025,7 +8025,7 @@ var require_stringifyDocument = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/doc/Document.js +//#region ../../../../../node_modules/yaml/dist/doc/Document.js var require_Document = /* @__PURE__ */ __commonJSMin(((exports) => { var Alias = require_Alias(); var Collection = require_Collection(); @@ -8307,7 +8307,7 @@ var require_Document = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/errors.js +//#region ../../../../../node_modules/yaml/dist/errors.js var require_errors = /* @__PURE__ */ __commonJSMin(((exports) => { var YAMLError = class extends Error { constructor(name, pos, code, message) { @@ -8361,7 +8361,7 @@ var require_errors = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/compose/resolve-props.js +//#region ../../../../../node_modules/yaml/dist/compose/resolve-props.js var require_resolve_props = /* @__PURE__ */ __commonJSMin(((exports) => { function resolveProps(tokens, { flow, indicator, next, offset, onError, parentIndent, startOnNewline }) { let spaceBefore = false; @@ -8469,7 +8469,7 @@ var require_resolve_props = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/compose/util-contains-newline.js +//#region ../../../../../node_modules/yaml/dist/compose/util-contains-newline.js var require_util_contains_newline = /* @__PURE__ */ __commonJSMin(((exports) => { function containsNewline(key) { if (!key) return null; @@ -8499,7 +8499,7 @@ var require_util_contains_newline = /* @__PURE__ */ __commonJSMin(((exports) => })); //#endregion -//#region ../../node_modules/yaml/dist/compose/util-flow-indent-check.js +//#region ../../../../../node_modules/yaml/dist/compose/util-flow-indent-check.js var require_util_flow_indent_check = /* @__PURE__ */ __commonJSMin(((exports) => { var utilContainsNewline = require_util_contains_newline(); function flowIndentCheck(indent, fc, onError) { @@ -8512,7 +8512,7 @@ var require_util_flow_indent_check = /* @__PURE__ */ __commonJSMin(((exports) => })); //#endregion -//#region ../../node_modules/yaml/dist/compose/util-map-includes.js +//#region ../../../../../node_modules/yaml/dist/compose/util-map-includes.js var require_util_map_includes = /* @__PURE__ */ __commonJSMin(((exports) => { var identity = require_identity(); function mapIncludes(ctx, items, search) { @@ -8525,7 +8525,7 @@ var require_util_map_includes = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/compose/resolve-block-map.js +//#region ../../../../../node_modules/yaml/dist/compose/resolve-block-map.js var require_resolve_block_map = /* @__PURE__ */ __commonJSMin(((exports) => { var Pair = require_Pair(); var YAMLMap = require_YAMLMap(); @@ -8610,7 +8610,7 @@ var require_resolve_block_map = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/compose/resolve-block-seq.js +//#region ../../../../../node_modules/yaml/dist/compose/resolve-block-seq.js var require_resolve_block_seq = /* @__PURE__ */ __commonJSMin(((exports) => { var YAMLSeq = require_YAMLSeq(); var resolveProps = require_resolve_props(); @@ -8653,7 +8653,7 @@ var require_resolve_block_seq = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/compose/resolve-end.js +//#region ../../../../../node_modules/yaml/dist/compose/resolve-end.js var require_resolve_end = /* @__PURE__ */ __commonJSMin(((exports) => { function resolveEnd(end, offset, reqSpace, onError) { let comment = ""; @@ -8692,7 +8692,7 @@ var require_resolve_end = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/compose/resolve-flow-collection.js +//#region ../../../../../node_modules/yaml/dist/compose/resolve-flow-collection.js var require_resolve_flow_collection = /* @__PURE__ */ __commonJSMin(((exports) => { var identity = require_identity(); var Pair = require_Pair(); @@ -8848,7 +8848,7 @@ var require_resolve_flow_collection = /* @__PURE__ */ __commonJSMin(((exports) = })); //#endregion -//#region ../../node_modules/yaml/dist/compose/compose-collection.js +//#region ../../../../../node_modules/yaml/dist/compose/compose-collection.js var require_compose_collection = /* @__PURE__ */ __commonJSMin(((exports) => { var identity = require_identity(); var Scalar = require_Scalar(); @@ -8901,7 +8901,7 @@ var require_compose_collection = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/compose/resolve-block-scalar.js +//#region ../../../../../node_modules/yaml/dist/compose/resolve-block-scalar.js var require_resolve_block_scalar = /* @__PURE__ */ __commonJSMin(((exports) => { var Scalar = require_Scalar(); function resolveBlockScalar(ctx, scalar, onError) { @@ -9077,7 +9077,7 @@ var require_resolve_block_scalar = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/compose/resolve-flow-scalar.js +//#region ../../../../../node_modules/yaml/dist/compose/resolve-flow-scalar.js var require_resolve_flow_scalar = /* @__PURE__ */ __commonJSMin(((exports) => { var Scalar = require_Scalar(); var resolveEnd = require_resolve_end(); @@ -9284,7 +9284,7 @@ var require_resolve_flow_scalar = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/compose/compose-scalar.js +//#region ../../../../../node_modules/yaml/dist/compose/compose-scalar.js var require_compose_scalar = /* @__PURE__ */ __commonJSMin(((exports) => { var identity = require_identity(); var Scalar = require_Scalar(); @@ -9344,7 +9344,7 @@ var require_compose_scalar = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/compose/util-empty-scalar-position.js +//#region ../../../../../node_modules/yaml/dist/compose/util-empty-scalar-position.js var require_util_empty_scalar_position = /* @__PURE__ */ __commonJSMin(((exports) => { function emptyScalarPosition(offset, before, pos) { if (before) { @@ -9372,7 +9372,7 @@ var require_util_empty_scalar_position = /* @__PURE__ */ __commonJSMin(((exports })); //#endregion -//#region ../../node_modules/yaml/dist/compose/compose-node.js +//#region ../../../../../node_modules/yaml/dist/compose/compose-node.js var require_compose_node = /* @__PURE__ */ __commonJSMin(((exports) => { var Alias = require_Alias(); var identity = require_identity(); @@ -9458,7 +9458,7 @@ var require_compose_node = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/compose/compose-doc.js +//#region ../../../../../node_modules/yaml/dist/compose/compose-doc.js var require_compose_doc = /* @__PURE__ */ __commonJSMin(((exports) => { var Document = require_Document(); var composeNode = require_compose_node(); @@ -9501,7 +9501,7 @@ var require_compose_doc = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/compose/composer.js +//#region ../../../../../node_modules/yaml/dist/compose/composer.js var require_composer = /* @__PURE__ */ __commonJSMin(((exports) => { var node_process$2 = require("process"); var directives = require_directives(); @@ -9700,7 +9700,7 @@ var require_composer = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/parse/cst-scalar.js +//#region ../../../../../node_modules/yaml/dist/parse/cst-scalar.js var require_cst_scalar = /* @__PURE__ */ __commonJSMin(((exports) => { var resolveBlockScalar = require_resolve_block_scalar(); var resolveFlowScalar = require_resolve_flow_scalar(); @@ -9968,7 +9968,7 @@ var require_cst_scalar = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/parse/cst-stringify.js +//#region ../../../../../node_modules/yaml/dist/parse/cst-stringify.js var require_cst_stringify = /* @__PURE__ */ __commonJSMin(((exports) => { /** * Stringify a CST document, token, or collection item @@ -10020,7 +10020,7 @@ var require_cst_stringify = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/parse/cst-visit.js +//#region ../../../../../node_modules/yaml/dist/parse/cst-visit.js var require_cst_visit = /* @__PURE__ */ __commonJSMin(((exports) => { const BREAK = Symbol("break visit"); const SKIP = Symbol("skip children"); @@ -10112,7 +10112,7 @@ var require_cst_visit = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/parse/cst.js +//#region ../../../../../node_modules/yaml/dist/parse/cst.js var require_cst = /* @__PURE__ */ __commonJSMin(((exports) => { var cstScalar = require_cst_scalar(); var cstStringify = require_cst_stringify(); @@ -10192,7 +10192,7 @@ var require_cst = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/parse/lexer.js +//#region ../../../../../node_modules/yaml/dist/parse/lexer.js var require_lexer = /* @__PURE__ */ __commonJSMin(((exports) => { var cst = require_cst(); function isEmpty(ch) { @@ -10712,7 +10712,7 @@ var require_lexer = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/parse/line-counter.js +//#region ../../../../../node_modules/yaml/dist/parse/line-counter.js var require_line_counter = /* @__PURE__ */ __commonJSMin(((exports) => { /** * Tracks newlines during parsing in order to provide an efficient API for @@ -10760,7 +10760,7 @@ var require_line_counter = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/parse/parser.js +//#region ../../../../../node_modules/yaml/dist/parse/parser.js var require_parser = /* @__PURE__ */ __commonJSMin(((exports) => { var node_process$1 = require("process"); var cst = require_cst(); @@ -11617,7 +11617,7 @@ var require_parser = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/public-api.js +//#region ../../../../../node_modules/yaml/dist/public-api.js var require_public_api = /* @__PURE__ */ __commonJSMin(((exports) => { var composer = require_composer(); var Document = require_Document(); @@ -11705,7 +11705,7 @@ var require_public_api = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/index.js +//#region ../../../../../node_modules/yaml/dist/index.js var require_dist = /* @__PURE__ */ __commonJSMin(((exports) => { var composer = require_composer(); var Document = require_Document(); @@ -12038,7 +12038,7 @@ function cmdConfigGet(cwd, keyPath, raw) { } //#endregion -//#region ../../node_modules/escape-string-regexp/index.js +//#region ../../../../../node_modules/escape-string-regexp/index.js function escapeStringRegexp(string) { if (typeof string !== "string") throw new TypeError("Expected a string"); return string.replace(/[|\\{}()[\]^$+*?.]/g, "\\$&").replace(/-/g, "\\x2d"); @@ -12872,7 +12872,7 @@ function cmdMilestoneComplete(cwd, version, options, raw) { } //#endregion -//#region ../../node_modules/chalk/source/vendor/ansi-styles/index.js +//#region ../../../../../node_modules/chalk/source/vendor/ansi-styles/index.js const ANSI_BACKGROUND_OFFSET = 10; const wrapAnsi16 = (offset = 0) => (code) => `\u001B[${code + offset}m`; const wrapAnsi256 = (offset = 0) => (code) => `\u001B[${38 + offset};5;${code}m`; @@ -13037,7 +13037,7 @@ function assembleStyles() { const ansiStyles = assembleStyles(); //#endregion -//#region ../../node_modules/chalk/source/vendor/supports-color/index.js +//#region ../../../../../node_modules/chalk/source/vendor/supports-color/index.js function hasFlag$1(flag, argv = globalThis.Deno ? globalThis.Deno.args : node_process.default.argv) { const prefix = flag.startsWith("-") ? "" : flag.length === 1 ? "-" : "--"; const position = argv.indexOf(prefix + flag); @@ -13126,7 +13126,7 @@ const supportsColor = { }; //#endregion -//#region ../../node_modules/chalk/source/utilities.js +//#region ../../../../../node_modules/chalk/source/utilities.js function stringReplaceAll(string, substring, replacer) { let index = string.indexOf(substring); if (index === -1) return string; @@ -13155,7 +13155,7 @@ function stringEncaseCRLFWithFirstIndex(string, prefix, postfix, index) { } //#endregion -//#region ../../node_modules/chalk/source/index.js +//#region ../../../../../node_modules/chalk/source/index.js const { stdout: stdoutColor, stderr: stderrColor } = supportsColor; const GENERATOR = Symbol("GENERATOR"); const STYLER = Symbol("STYLER"); @@ -15367,6 +15367,122 @@ function spawnDashboard(options) { return child.pid ?? null; } +//#endregion +//#region src/core/skill-context.ts +/** +* Skill Context — Provides MAXSIM state to skills via a single CLI call +*/ +function cmdSkillContext(cwd, skillName, raw) { + if (!pathExistsInternal(cwd, ".planning")) { + output({ + skill_name: skillName, + planning_dir: null, + phase: { + number: null, + name: null, + directory: null + }, + state: { + current_focus: null, + position: null, + status: null + }, + blockers: [], + decisions: [], + artifacts: { + plan: null, + summary: null, + research: null, + context: null, + verification: null + }, + config: { + model_profile: "balanced", + commit_docs: true, + branching_strategy: "none" + } + }, raw); + return; + } + const config = loadConfig(cwd); + const stateContent = safeReadFile(statePath(cwd)); + let currentPhase = null; + let currentPhaseName = null; + let currentPlan = null; + let status = null; + const blockers = []; + const decisions = []; + if (stateContent) { + currentPhase = stateExtractField(stateContent, "Current Phase"); + currentPhaseName = stateExtractField(stateContent, "Current Phase Name"); + currentPlan = stateExtractField(stateContent, "Current Plan"); + status = stateExtractField(stateContent, "Status"); + const blockersMatch = stateContent.match(/##\s*Blockers\s*\n([\s\S]*?)(?=\n##|$)/i); + if (blockersMatch) { + const items = blockersMatch[1].match(/^-\s+(.+)$/gm) || []; + for (const item of items) blockers.push(item.replace(/^-\s+/, "").trim()); + } + const decisionsMatch = stateContent.match(/##\s*Decisions Made[\s\S]*?\n\|[^\n]+\n\|[-|\s]+\n([\s\S]*?)(?=\n##|\n$|$)/i); + if (decisionsMatch) { + const rows = decisionsMatch[1].trim().split("\n").filter((r) => r.includes("|")); + for (const row of rows) { + const cells = row.split("|").map((c) => c.trim()).filter(Boolean); + if (cells.length >= 3) decisions.push({ + phase: cells[0], + summary: cells[1], + rationale: cells[2] + }); + } + } + } + const phaseInfo = currentPhase ? findPhaseInternal(cwd, currentPhase) : null; + const phaseDir = phaseInfo?.directory ?? null; + const phaseNumber = phaseInfo?.phase_number ?? currentPhase; + const phaseName = phaseInfo?.phase_name ?? currentPhaseName; + const artifacts = { + plan: null, + summary: null, + research: null, + context: null, + verification: null + }; + if (phaseDir) { + const absPhaseDir = node_path.default.isAbsolute(phaseDir) ? phaseDir : node_path.default.join(cwd, phaseDir); + try { + const files = node_fs.default.readdirSync(absPhaseDir); + for (const f of files) if (isPlanFile(f)) artifacts.plan = node_path.default.join(phaseDir, f); + else if (isSummaryFile(f)) artifacts.summary = node_path.default.join(phaseDir, f); + else if (f.endsWith("-RESEARCH.md") || f === "RESEARCH.md") artifacts.research = node_path.default.join(phaseDir, f); + else if (f.endsWith("-CONTEXT.md") || f === "CONTEXT.md") artifacts.context = node_path.default.join(phaseDir, f); + else if (f.endsWith("-VERIFICATION.md") || f === "VERIFICATION.md") artifacts.verification = node_path.default.join(phaseDir, f); + } catch {} + } + const totalPlans = stateContent ? stateExtractField(stateContent, "Total Plans in Phase") : null; + const position = currentPlan && totalPlans ? `Plan ${currentPlan} of ${totalPlans}` : currentPlan ? `Plan ${currentPlan}` : null; + output({ + skill_name: skillName, + planning_dir: ".planning", + phase: { + number: phaseNumber ?? null, + name: phaseName ?? null, + directory: phaseDir + }, + state: { + current_focus: currentPhaseName ?? null, + position, + status + }, + blockers, + decisions, + artifacts, + config: { + model_profile: config.model_profile, + commit_docs: config.commit_docs, + branching_strategy: config.branching_strategy + } + }, raw); +} + //#endregion //#region src/core/init.ts /** @@ -16112,6 +16228,7 @@ const COMMANDS = { }, raw); }, "init": handleInit, + "skill-context": (args, cwd, raw) => cmdSkillContext(cwd, args[1] || "unknown", raw), "phase-plan-index": (args, cwd, raw) => cmdPhasePlanIndex(cwd, args[1], raw), "state-snapshot": (_args, cwd, raw) => cmdStateSnapshot(cwd, raw), "summary-extract": (args, cwd, raw) => { diff --git a/packages/cli/dist/cli.cjs.map b/packages/cli/dist/cli.cjs.map index a1f571f..6df39f4 100644 --- a/packages/cli/dist/cli.cjs.map +++ b/packages/cli/dist/cli.cjs.map @@ -1 +1 @@ -{"version":3,"file":"cli.cjs","names":["os","tty","tty","FOLDER","Buffer2","EventEmitter","path","os","fs","node_process","node_buffer","node_process","node_process","path","fs","path","fs","os","path","fs","statePathUtil","statePath","fs","path","fs","roadmapPath","roadmapPathUtil","statePath","statePathUtil","path","styles","hasFlag","process","os","tty","fs","path","path","fs","roadmapPathUtil","statePathUtil","configPathUtil","path","fs","path","fs","path","fs","os","path","fs","os","path","fs"],"sources":["../src/core/types.ts","../../../node_modules/ms/index.js","../../../node_modules/debug/src/common.js","../../../node_modules/debug/src/browser.js","../../../node_modules/has-flag/index.js","../../../node_modules/supports-color/index.js","../../../node_modules/debug/src/node.js","../../../node_modules/debug/src/index.js","../../../node_modules/@kwsites/file-exists/dist/src/index.js","../../../node_modules/@kwsites/file-exists/dist/index.js","../../../node_modules/@kwsites/promise-deferred/dist/index.js","../../../node_modules/simple-git/dist/esm/index.js","../../../node_modules/slugify/slugify.js","../src/core/core.ts","../../../node_modules/yaml/dist/nodes/identity.js","../../../node_modules/yaml/dist/visit.js","../../../node_modules/yaml/dist/doc/directives.js","../../../node_modules/yaml/dist/doc/anchors.js","../../../node_modules/yaml/dist/doc/applyReviver.js","../../../node_modules/yaml/dist/nodes/toJS.js","../../../node_modules/yaml/dist/nodes/Node.js","../../../node_modules/yaml/dist/nodes/Alias.js","../../../node_modules/yaml/dist/nodes/Scalar.js","../../../node_modules/yaml/dist/doc/createNode.js","../../../node_modules/yaml/dist/nodes/Collection.js","../../../node_modules/yaml/dist/stringify/stringifyComment.js","../../../node_modules/yaml/dist/stringify/foldFlowLines.js","../../../node_modules/yaml/dist/stringify/stringifyString.js","../../../node_modules/yaml/dist/stringify/stringify.js","../../../node_modules/yaml/dist/stringify/stringifyPair.js","../../../node_modules/yaml/dist/log.js","../../../node_modules/yaml/dist/schema/yaml-1.1/merge.js","../../../node_modules/yaml/dist/nodes/addPairToJSMap.js","../../../node_modules/yaml/dist/nodes/Pair.js","../../../node_modules/yaml/dist/stringify/stringifyCollection.js","../../../node_modules/yaml/dist/nodes/YAMLMap.js","../../../node_modules/yaml/dist/schema/common/map.js","../../../node_modules/yaml/dist/nodes/YAMLSeq.js","../../../node_modules/yaml/dist/schema/common/seq.js","../../../node_modules/yaml/dist/schema/common/string.js","../../../node_modules/yaml/dist/schema/common/null.js","../../../node_modules/yaml/dist/schema/core/bool.js","../../../node_modules/yaml/dist/stringify/stringifyNumber.js","../../../node_modules/yaml/dist/schema/core/float.js","../../../node_modules/yaml/dist/schema/core/int.js","../../../node_modules/yaml/dist/schema/core/schema.js","../../../node_modules/yaml/dist/schema/json/schema.js","../../../node_modules/yaml/dist/schema/yaml-1.1/binary.js","../../../node_modules/yaml/dist/schema/yaml-1.1/pairs.js","../../../node_modules/yaml/dist/schema/yaml-1.1/omap.js","../../../node_modules/yaml/dist/schema/yaml-1.1/bool.js","../../../node_modules/yaml/dist/schema/yaml-1.1/float.js","../../../node_modules/yaml/dist/schema/yaml-1.1/int.js","../../../node_modules/yaml/dist/schema/yaml-1.1/set.js","../../../node_modules/yaml/dist/schema/yaml-1.1/timestamp.js","../../../node_modules/yaml/dist/schema/yaml-1.1/schema.js","../../../node_modules/yaml/dist/schema/tags.js","../../../node_modules/yaml/dist/schema/Schema.js","../../../node_modules/yaml/dist/stringify/stringifyDocument.js","../../../node_modules/yaml/dist/doc/Document.js","../../../node_modules/yaml/dist/errors.js","../../../node_modules/yaml/dist/compose/resolve-props.js","../../../node_modules/yaml/dist/compose/util-contains-newline.js","../../../node_modules/yaml/dist/compose/util-flow-indent-check.js","../../../node_modules/yaml/dist/compose/util-map-includes.js","../../../node_modules/yaml/dist/compose/resolve-block-map.js","../../../node_modules/yaml/dist/compose/resolve-block-seq.js","../../../node_modules/yaml/dist/compose/resolve-end.js","../../../node_modules/yaml/dist/compose/resolve-flow-collection.js","../../../node_modules/yaml/dist/compose/compose-collection.js","../../../node_modules/yaml/dist/compose/resolve-block-scalar.js","../../../node_modules/yaml/dist/compose/resolve-flow-scalar.js","../../../node_modules/yaml/dist/compose/compose-scalar.js","../../../node_modules/yaml/dist/compose/util-empty-scalar-position.js","../../../node_modules/yaml/dist/compose/compose-node.js","../../../node_modules/yaml/dist/compose/compose-doc.js","../../../node_modules/yaml/dist/compose/composer.js","../../../node_modules/yaml/dist/parse/cst-scalar.js","../../../node_modules/yaml/dist/parse/cst-stringify.js","../../../node_modules/yaml/dist/parse/cst-visit.js","../../../node_modules/yaml/dist/parse/cst.js","../../../node_modules/yaml/dist/parse/lexer.js","../../../node_modules/yaml/dist/parse/line-counter.js","../../../node_modules/yaml/dist/parse/parser.js","../../../node_modules/yaml/dist/public-api.js","../../../node_modules/yaml/dist/index.js","../src/core/frontmatter.ts","../src/core/config.ts","../../../node_modules/escape-string-regexp/index.js","../src/core/state.ts","../src/core/roadmap.ts","../src/core/milestone.ts","../../../node_modules/chalk/source/vendor/ansi-styles/index.js","../../../node_modules/chalk/source/vendor/supports-color/index.js","../../../node_modules/chalk/source/utilities.js","../../../node_modules/chalk/source/index.js","../src/core/commands.ts","../src/core/verify.ts","../src/core/phase.ts","../src/core/template.ts","../src/core/dashboard-launcher.ts","../src/core/init.ts","../src/cli.ts"],"sourcesContent":["/**\r\n * @maxsim/core — Shared type definitions\r\n */\r\n\r\n// ─── Brand utility ───────────────────────────────────────────────────────────\r\n\r\ndeclare const __brand: unique symbol;\r\ntype Brand = T & { readonly [__brand]: B };\r\n\r\n// ─── Branded types ───────────────────────────────────────────────────────────\r\n\r\nexport type PhaseNumber = Brand;\r\nexport type PhasePath = Brand;\r\nexport type PhaseSlug = Brand;\r\n\r\nexport function phaseNumber(value: string): PhaseNumber {\r\n const match = value.match(/^\\d+[A-Z]?(\\.\\d+)?$/i);\r\n if (!match) {\r\n throw new Error(`Invalid phase number: ${value}`);\r\n }\r\n return value as PhaseNumber;\r\n}\r\n\r\nexport function phasePath(value: string): PhasePath {\r\n if (!value || typeof value !== 'string') {\r\n throw new Error(`Invalid phase path: ${value}`);\r\n }\r\n return value as PhasePath;\r\n}\r\n\r\nexport function phaseSlug(value: string): PhaseSlug {\r\n if (!value || typeof value !== 'string') {\r\n throw new Error(`Invalid phase slug: ${value}`);\r\n }\r\n return value as PhaseSlug;\r\n}\r\n\r\n// ─── Result type ─────────────────────────────────────────────────────────────\r\n\r\nexport type Result =\r\n | { success: true; data: T }\r\n | { success: false; error: string };\r\n\r\nexport function ok(data: T): Result {\r\n return { success: true, data };\r\n}\r\n\r\nexport function err(error: string): Result {\r\n return { success: false, error };\r\n}\r\n\r\n// ─── Core interfaces ─────────────────────────────────────────────────────────\r\n\r\nexport type BranchingStrategy = 'none' | 'phase' | 'milestone';\r\n\r\nexport type ModelTier = 'opus' | 'sonnet' | 'haiku';\r\nexport type ModelProfileName = 'quality' | 'balanced' | 'budget' | 'tokenburner';\r\nexport type ModelResolution = 'inherit' | ModelTier;\r\n\r\nexport interface ModelProfileEntry {\r\n quality: ModelTier;\r\n balanced: ModelTier;\r\n budget: ModelTier;\r\n tokenburner: ModelTier;\r\n}\r\n\r\nexport type AgentType =\r\n | 'maxsim-planner'\r\n | 'maxsim-roadmapper'\r\n | 'maxsim-executor'\r\n | 'maxsim-phase-researcher'\r\n | 'maxsim-project-researcher'\r\n | 'maxsim-research-synthesizer'\r\n | 'maxsim-debugger'\r\n | 'maxsim-codebase-mapper'\r\n | 'maxsim-verifier'\r\n | 'maxsim-plan-checker'\r\n | 'maxsim-integration-checker';\r\n\r\nexport type ModelProfiles = Record;\r\n\r\nexport interface PhaseSearchResult {\r\n found: true;\r\n directory: string;\r\n phase_number: string;\r\n phase_name: string | null;\r\n phase_slug: string | null;\r\n plans: string[];\r\n summaries: string[];\r\n incomplete_plans: string[];\r\n has_research: boolean;\r\n has_context: boolean;\r\n has_verification: boolean;\r\n archived?: string;\r\n}\r\n\r\nexport interface RoadmapPhaseInfo {\r\n found: true;\r\n phase_number: string;\r\n phase_name: string;\r\n goal: string | null;\r\n section: string;\r\n}\r\n\r\nexport interface ArchivedPhaseDir {\r\n name: string;\r\n milestone: string;\r\n basePath: string;\r\n fullPath: string;\r\n}\r\n\r\nexport interface GitResult {\r\n exitCode: number;\r\n stdout: string;\r\n stderr: string;\r\n}\r\n\r\nexport interface MilestoneInfo {\r\n version: string;\r\n name: string;\r\n}\r\n\r\nexport interface AppConfig {\r\n model_profile: ModelProfileName;\r\n commit_docs: boolean;\r\n search_gitignored: boolean;\r\n branching_strategy: BranchingStrategy;\r\n phase_branch_template: string;\r\n milestone_branch_template: string;\r\n research: boolean;\r\n plan_checker: boolean;\r\n verifier: boolean;\r\n parallelization: boolean;\r\n brave_search: boolean;\r\n model_overrides?: Partial>;\r\n}\r\n\r\n// ─── Frontmatter interfaces ────────────────────────────────────────────────\r\n\r\nexport type FrontmatterData = Record;\r\n\r\nexport type FrontmatterValue =\r\n | string\r\n | number\r\n | boolean\r\n | null\r\n | FrontmatterValue[]\r\n | { [key: string]: FrontmatterValue };\r\n\r\nexport interface FrontmatterParseResult {\r\n frontmatter: FrontmatterData;\r\n body: string;\r\n hasFrontmatter: boolean;\r\n}\r\n\r\nexport interface FrontmatterValidationResult {\r\n valid: boolean;\r\n missing: string[];\r\n present: string[];\r\n schema: string;\r\n}\r\n\r\nexport interface FrontmatterSchema {\r\n required: string[];\r\n}\r\n\r\n// ─── Config interfaces ──────────────────────────────────────────────────────\r\n\r\nexport interface PlanningConfig {\r\n model_profile: ModelProfileName;\r\n commit_docs: boolean;\r\n search_gitignored: boolean;\r\n branching_strategy: BranchingStrategy;\r\n phase_branch_template: string;\r\n milestone_branch_template: string;\r\n workflow: WorkflowConfig;\r\n parallelization: boolean;\r\n brave_search: boolean;\r\n [key: string]: unknown;\r\n}\r\n\r\nexport interface WorkflowConfig {\r\n research: boolean;\r\n plan_checker: boolean;\r\n verifier: boolean;\r\n [key: string]: boolean;\r\n}\r\n\r\nexport const PLANNING_CONFIG_DEFAULTS: PlanningConfig = {\r\n model_profile: 'balanced',\r\n commit_docs: true,\r\n search_gitignored: false,\r\n branching_strategy: 'none',\r\n phase_branch_template: 'maxsim/phase-{phase}-{slug}',\r\n milestone_branch_template: 'maxsim/{milestone}-{slug}',\r\n workflow: {\r\n research: true,\r\n plan_checker: true,\r\n verifier: true,\r\n },\r\n parallelization: true,\r\n brave_search: false,\r\n};\r\n\r\n// ─── State interfaces ────────────────────────────────────────────────────────\r\n\r\nexport interface StateSection {\r\n header: string;\r\n body: string;\r\n}\r\n\r\nexport interface Decision {\r\n phase: string;\r\n summary: string;\r\n rationale: string;\r\n}\r\n\r\nexport interface Blocker {\r\n text: string;\r\n resolved: boolean;\r\n}\r\n\r\nexport interface PerformanceMetric {\r\n phase: string;\r\n plan: string;\r\n duration: string;\r\n tasks: string;\r\n files: string;\r\n}\r\n\r\nexport interface StateData {\r\n content: string;\r\n fields: Record;\r\n decisions: Decision[];\r\n blockers: Blocker[];\r\n metrics: PerformanceMetric[];\r\n}\r\n\r\nexport interface StatePatchResult {\r\n updated: string[];\r\n failed: string[];\r\n}\r\n\r\nexport interface StateSessionOptions {\r\n stopped_at?: string;\r\n resume_file?: string;\r\n}\r\n\r\nexport interface StateMetricOptions {\r\n phase: string;\r\n plan: string;\r\n duration: string;\r\n tasks?: string;\r\n files?: string;\r\n}\r\n\r\nexport interface StateDecisionOptions {\r\n phase?: string;\r\n summary?: string;\r\n summary_file?: string;\r\n rationale?: string;\r\n rationale_file?: string;\r\n}\r\n\r\nexport interface StateBlockerOptions {\r\n text?: string;\r\n text_file?: string;\r\n}\r\n\r\nexport interface StateSnapshot {\r\n current_phase: string | null;\r\n current_phase_name: string | null;\r\n total_phases: number | null;\r\n current_plan: string | null;\r\n total_plans_in_phase: number | null;\r\n status: string | null;\r\n progress_percent: number | null;\r\n last_activity: string | null;\r\n last_activity_desc: string | null;\r\n decisions: Decision[];\r\n blockers: string[];\r\n paused_at: string | null;\r\n session: {\r\n last_date: string | null;\r\n stopped_at: string | null;\r\n resume_file: string | null;\r\n };\r\n}\r\n\r\n// ─── Roadmap interfaces ─────────────────────────────────────────────────────\r\n\r\nexport type PhaseStatus = 'no_directory' | 'empty' | 'discussed' | 'researched' | 'planned' | 'partial' | 'complete';\r\n\r\nexport interface RoadmapPhase {\r\n number: string;\r\n name: string;\r\n goal: string | null;\r\n depends_on: string | null;\r\n plan_count: number;\r\n summary_count: number;\r\n has_context: boolean;\r\n has_research: boolean;\r\n disk_status: PhaseStatus;\r\n roadmap_complete: boolean;\r\n}\r\n\r\nexport interface RoadmapMilestone {\r\n heading: string;\r\n version: string;\r\n}\r\n\r\nexport interface RoadmapAnalysis {\r\n milestones: RoadmapMilestone[];\r\n phases: RoadmapPhase[];\r\n phase_count: number;\r\n completed_phases: number;\r\n total_plans: number;\r\n total_summaries: number;\r\n progress_percent: number;\r\n current_phase: string | null;\r\n next_phase: string | null;\r\n missing_phase_details: string[] | null;\r\n}\r\n\r\nexport interface RoadmapPhaseDetail {\r\n found: true;\r\n phase_number: string;\r\n phase_name: string;\r\n goal: string | null;\r\n success_criteria: string[];\r\n section: string;\r\n}\r\n\r\nexport interface RoadmapPhaseNotFound {\r\n found: false;\r\n phase_number: string;\r\n phase_name?: string;\r\n error?: string;\r\n message?: string;\r\n}\r\n\r\nexport type RoadmapGetPhaseResult = RoadmapPhaseDetail | RoadmapPhaseNotFound;\r\n\r\n// ─── Milestone interfaces ────────────────────────────────────────────────────\r\n\r\nexport interface MilestoneCompleteOptions {\r\n name?: string;\r\n archivePhases?: boolean;\r\n}\r\n\r\nexport interface MilestoneResult {\r\n version: string;\r\n name: string;\r\n date: string;\r\n phases: number;\r\n plans: number;\r\n tasks: number;\r\n accomplishments: string[];\r\n archived: {\r\n roadmap: boolean;\r\n requirements: boolean;\r\n audit: boolean;\r\n phases: boolean;\r\n };\r\n milestones_updated: boolean;\r\n state_updated: boolean;\r\n}\r\n\r\nexport interface ArchiveResult {\r\n updated: boolean;\r\n marked_complete: string[];\r\n not_found: string[];\r\n total: number;\r\n}\r\n\r\n// ─── Commands interfaces ────────────────────────────────────────────────────\r\n\r\nexport interface TodoItem {\r\n file: string;\r\n created: string;\r\n title: string;\r\n area: string;\r\n path: string;\r\n}\r\n\r\nexport interface HistoryPhaseDigest {\r\n name: string;\r\n provides: string[];\r\n affects: string[];\r\n patterns: string[];\r\n}\r\n\r\nexport interface HistoryDigest {\r\n phases: Record;\r\n decisions: Array<{ phase: string; decision: string }>;\r\n tech_stack: string[];\r\n}\r\n\r\nexport interface SlugResult {\r\n slug: string;\r\n}\r\n\r\nexport interface WebSearchOptions {\r\n limit?: number;\r\n freshness?: string | null;\r\n}\r\n\r\nexport interface WebSearchResult {\r\n title: string;\r\n url: string;\r\n description: string;\r\n age: string | null;\r\n}\r\n\r\nexport interface ScaffoldOptions {\r\n phase: string | null;\r\n name: string | null;\r\n}\r\n\r\nexport type TimestampFormat = 'full' | 'date' | 'filename';\r\n\r\n// ─── Phase lifecycle interfaces ─────────────────────────────────────────────\r\n\r\nexport interface PhaseAddResult {\r\n phase_number: number;\r\n padded: string;\r\n name: string;\r\n slug: string | null;\r\n directory: string;\r\n}\r\n\r\nexport interface PhaseInsertResult {\r\n phase_number: string;\r\n after_phase: string;\r\n name: string;\r\n slug: string | null;\r\n directory: string;\r\n}\r\n\r\nexport interface PhaseRemoveResult {\r\n removed: string;\r\n directory_deleted: string | null;\r\n renamed_directories: Array<{ from: string; to: string }>;\r\n renamed_files: Array<{ from: string; to: string }>;\r\n roadmap_updated: boolean;\r\n state_updated: boolean;\r\n}\r\n\r\nexport interface PhaseCompleteResult {\r\n completed_phase: string;\r\n phase_name: string | null;\r\n plans_executed: string;\r\n next_phase: string | null;\r\n next_phase_name: string | null;\r\n is_last_phase: boolean;\r\n date: string;\r\n roadmap_updated: boolean;\r\n state_updated: boolean;\r\n}\r\n\r\nexport interface PhasePlanIndexResult {\r\n phase: string;\r\n plans: Array<{\r\n id: string;\r\n wave: number;\r\n autonomous: boolean;\r\n objective: string | null;\r\n files_modified: string[];\r\n task_count: number;\r\n has_summary: boolean;\r\n }>;\r\n waves: Record;\r\n incomplete: string[];\r\n has_checkpoints: boolean;\r\n}\r\n\r\nexport interface PhasesListOptions {\r\n type: string | null;\r\n phase: string | null;\r\n includeArchived: boolean;\r\n}\r\n\r\n// ─── Adapter interfaces ─────────────────────────────────────────────────────\r\n\r\nexport type RuntimeName = 'claude' | 'opencode' | 'gemini' | 'codex';\r\n\r\nexport interface AdapterConfig {\r\n runtime: RuntimeName;\r\n dirName: string;\r\n getGlobalDir(explicitDir?: string | null): string;\r\n getConfigDirFromHome(isGlobal: boolean): string;\r\n transformContent(content: string, pathPrefix: string): string;\r\n commandStructure: 'nested' | 'flat' | 'skills';\r\n}\r\n","/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar w = d * 7;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function (val, options) {\n options = options || {};\n var type = typeof val;\n if (type === 'string' && val.length > 0) {\n return parse(val);\n } else if (type === 'number' && isFinite(val)) {\n return options.long ? fmtLong(val) : fmtShort(val);\n }\n throw new Error(\n 'val is not a non-empty string or a valid number. val=' +\n JSON.stringify(val)\n );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n str = String(str);\n if (str.length > 100) {\n return;\n }\n var match = /^(-?(?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(\n str\n );\n if (!match) {\n return;\n }\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n case 'weeks':\n case 'week':\n case 'w':\n return n * w;\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n default:\n return undefined;\n }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (msAbs >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (msAbs >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (msAbs >= s) {\n return Math.round(ms / s) + 's';\n }\n return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return plural(ms, msAbs, d, 'day');\n }\n if (msAbs >= h) {\n return plural(ms, msAbs, h, 'hour');\n }\n if (msAbs >= m) {\n return plural(ms, msAbs, m, 'minute');\n }\n if (msAbs >= s) {\n return plural(ms, msAbs, s, 'second');\n }\n return ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, msAbs, n, name) {\n var isPlural = msAbs >= n * 1.5;\n return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');\n}\n","\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n */\n\nfunction setup(env) {\n\tcreateDebug.debug = createDebug;\n\tcreateDebug.default = createDebug;\n\tcreateDebug.coerce = coerce;\n\tcreateDebug.disable = disable;\n\tcreateDebug.enable = enable;\n\tcreateDebug.enabled = enabled;\n\tcreateDebug.humanize = require('ms');\n\tcreateDebug.destroy = destroy;\n\n\tObject.keys(env).forEach(key => {\n\t\tcreateDebug[key] = env[key];\n\t});\n\n\t/**\n\t* The currently active debug mode names, and names to skip.\n\t*/\n\n\tcreateDebug.names = [];\n\tcreateDebug.skips = [];\n\n\t/**\n\t* Map of special \"%n\" handling functions, for the debug \"format\" argument.\n\t*\n\t* Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n\t*/\n\tcreateDebug.formatters = {};\n\n\t/**\n\t* Selects a color for a debug namespace\n\t* @param {String} namespace The namespace string for the debug instance to be colored\n\t* @return {Number|String} An ANSI color code for the given namespace\n\t* @api private\n\t*/\n\tfunction selectColor(namespace) {\n\t\tlet hash = 0;\n\n\t\tfor (let i = 0; i < namespace.length; i++) {\n\t\t\thash = ((hash << 5) - hash) + namespace.charCodeAt(i);\n\t\t\thash |= 0; // Convert to 32bit integer\n\t\t}\n\n\t\treturn createDebug.colors[Math.abs(hash) % createDebug.colors.length];\n\t}\n\tcreateDebug.selectColor = selectColor;\n\n\t/**\n\t* Create a debugger with the given `namespace`.\n\t*\n\t* @param {String} namespace\n\t* @return {Function}\n\t* @api public\n\t*/\n\tfunction createDebug(namespace) {\n\t\tlet prevTime;\n\t\tlet enableOverride = null;\n\t\tlet namespacesCache;\n\t\tlet enabledCache;\n\n\t\tfunction debug(...args) {\n\t\t\t// Disabled?\n\t\t\tif (!debug.enabled) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst self = debug;\n\n\t\t\t// Set `diff` timestamp\n\t\t\tconst curr = Number(new Date());\n\t\t\tconst ms = curr - (prevTime || curr);\n\t\t\tself.diff = ms;\n\t\t\tself.prev = prevTime;\n\t\t\tself.curr = curr;\n\t\t\tprevTime = curr;\n\n\t\t\targs[0] = createDebug.coerce(args[0]);\n\n\t\t\tif (typeof args[0] !== 'string') {\n\t\t\t\t// Anything else let's inspect with %O\n\t\t\t\targs.unshift('%O');\n\t\t\t}\n\n\t\t\t// Apply any `formatters` transformations\n\t\t\tlet index = 0;\n\t\t\targs[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => {\n\t\t\t\t// If we encounter an escaped % then don't increase the array index\n\t\t\t\tif (match === '%%') {\n\t\t\t\t\treturn '%';\n\t\t\t\t}\n\t\t\t\tindex++;\n\t\t\t\tconst formatter = createDebug.formatters[format];\n\t\t\t\tif (typeof formatter === 'function') {\n\t\t\t\t\tconst val = args[index];\n\t\t\t\t\tmatch = formatter.call(self, val);\n\n\t\t\t\t\t// Now we need to remove `args[index]` since it's inlined in the `format`\n\t\t\t\t\targs.splice(index, 1);\n\t\t\t\t\tindex--;\n\t\t\t\t}\n\t\t\t\treturn match;\n\t\t\t});\n\n\t\t\t// Apply env-specific formatting (colors, etc.)\n\t\t\tcreateDebug.formatArgs.call(self, args);\n\n\t\t\tconst logFn = self.log || createDebug.log;\n\t\t\tlogFn.apply(self, args);\n\t\t}\n\n\t\tdebug.namespace = namespace;\n\t\tdebug.useColors = createDebug.useColors();\n\t\tdebug.color = createDebug.selectColor(namespace);\n\t\tdebug.extend = extend;\n\t\tdebug.destroy = createDebug.destroy; // XXX Temporary. Will be removed in the next major release.\n\n\t\tObject.defineProperty(debug, 'enabled', {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: false,\n\t\t\tget: () => {\n\t\t\t\tif (enableOverride !== null) {\n\t\t\t\t\treturn enableOverride;\n\t\t\t\t}\n\t\t\t\tif (namespacesCache !== createDebug.namespaces) {\n\t\t\t\t\tnamespacesCache = createDebug.namespaces;\n\t\t\t\t\tenabledCache = createDebug.enabled(namespace);\n\t\t\t\t}\n\n\t\t\t\treturn enabledCache;\n\t\t\t},\n\t\t\tset: v => {\n\t\t\t\tenableOverride = v;\n\t\t\t}\n\t\t});\n\n\t\t// Env-specific initialization logic for debug instances\n\t\tif (typeof createDebug.init === 'function') {\n\t\t\tcreateDebug.init(debug);\n\t\t}\n\n\t\treturn debug;\n\t}\n\n\tfunction extend(namespace, delimiter) {\n\t\tconst newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace);\n\t\tnewDebug.log = this.log;\n\t\treturn newDebug;\n\t}\n\n\t/**\n\t* Enables a debug mode by namespaces. This can include modes\n\t* separated by a colon and wildcards.\n\t*\n\t* @param {String} namespaces\n\t* @api public\n\t*/\n\tfunction enable(namespaces) {\n\t\tcreateDebug.save(namespaces);\n\t\tcreateDebug.namespaces = namespaces;\n\n\t\tcreateDebug.names = [];\n\t\tcreateDebug.skips = [];\n\n\t\tconst split = (typeof namespaces === 'string' ? namespaces : '')\n\t\t\t.trim()\n\t\t\t.replace(/\\s+/g, ',')\n\t\t\t.split(',')\n\t\t\t.filter(Boolean);\n\n\t\tfor (const ns of split) {\n\t\t\tif (ns[0] === '-') {\n\t\t\t\tcreateDebug.skips.push(ns.slice(1));\n\t\t\t} else {\n\t\t\t\tcreateDebug.names.push(ns);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Checks if the given string matches a namespace template, honoring\n\t * asterisks as wildcards.\n\t *\n\t * @param {String} search\n\t * @param {String} template\n\t * @return {Boolean}\n\t */\n\tfunction matchesTemplate(search, template) {\n\t\tlet searchIndex = 0;\n\t\tlet templateIndex = 0;\n\t\tlet starIndex = -1;\n\t\tlet matchIndex = 0;\n\n\t\twhile (searchIndex < search.length) {\n\t\t\tif (templateIndex < template.length && (template[templateIndex] === search[searchIndex] || template[templateIndex] === '*')) {\n\t\t\t\t// Match character or proceed with wildcard\n\t\t\t\tif (template[templateIndex] === '*') {\n\t\t\t\t\tstarIndex = templateIndex;\n\t\t\t\t\tmatchIndex = searchIndex;\n\t\t\t\t\ttemplateIndex++; // Skip the '*'\n\t\t\t\t} else {\n\t\t\t\t\tsearchIndex++;\n\t\t\t\t\ttemplateIndex++;\n\t\t\t\t}\n\t\t\t} else if (starIndex !== -1) { // eslint-disable-line no-negated-condition\n\t\t\t\t// Backtrack to the last '*' and try to match more characters\n\t\t\t\ttemplateIndex = starIndex + 1;\n\t\t\t\tmatchIndex++;\n\t\t\t\tsearchIndex = matchIndex;\n\t\t\t} else {\n\t\t\t\treturn false; // No match\n\t\t\t}\n\t\t}\n\n\t\t// Handle trailing '*' in template\n\t\twhile (templateIndex < template.length && template[templateIndex] === '*') {\n\t\t\ttemplateIndex++;\n\t\t}\n\n\t\treturn templateIndex === template.length;\n\t}\n\n\t/**\n\t* Disable debug output.\n\t*\n\t* @return {String} namespaces\n\t* @api public\n\t*/\n\tfunction disable() {\n\t\tconst namespaces = [\n\t\t\t...createDebug.names,\n\t\t\t...createDebug.skips.map(namespace => '-' + namespace)\n\t\t].join(',');\n\t\tcreateDebug.enable('');\n\t\treturn namespaces;\n\t}\n\n\t/**\n\t* Returns true if the given mode name is enabled, false otherwise.\n\t*\n\t* @param {String} name\n\t* @return {Boolean}\n\t* @api public\n\t*/\n\tfunction enabled(name) {\n\t\tfor (const skip of createDebug.skips) {\n\t\t\tif (matchesTemplate(name, skip)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tfor (const ns of createDebug.names) {\n\t\t\tif (matchesTemplate(name, ns)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t* Coerce `val`.\n\t*\n\t* @param {Mixed} val\n\t* @return {Mixed}\n\t* @api private\n\t*/\n\tfunction coerce(val) {\n\t\tif (val instanceof Error) {\n\t\t\treturn val.stack || val.message;\n\t\t}\n\t\treturn val;\n\t}\n\n\t/**\n\t* XXX DO NOT USE. This is a temporary stub function.\n\t* XXX It WILL be removed in the next major release.\n\t*/\n\tfunction destroy() {\n\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t}\n\n\tcreateDebug.enable(createDebug.load());\n\n\treturn createDebug;\n}\n\nmodule.exports = setup;\n","/* eslint-env browser */\n\n/**\n * This is the web browser implementation of `debug()`.\n */\n\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = localstorage();\nexports.destroy = (() => {\n\tlet warned = false;\n\n\treturn () => {\n\t\tif (!warned) {\n\t\t\twarned = true;\n\t\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t\t}\n\t};\n})();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n\t'#0000CC',\n\t'#0000FF',\n\t'#0033CC',\n\t'#0033FF',\n\t'#0066CC',\n\t'#0066FF',\n\t'#0099CC',\n\t'#0099FF',\n\t'#00CC00',\n\t'#00CC33',\n\t'#00CC66',\n\t'#00CC99',\n\t'#00CCCC',\n\t'#00CCFF',\n\t'#3300CC',\n\t'#3300FF',\n\t'#3333CC',\n\t'#3333FF',\n\t'#3366CC',\n\t'#3366FF',\n\t'#3399CC',\n\t'#3399FF',\n\t'#33CC00',\n\t'#33CC33',\n\t'#33CC66',\n\t'#33CC99',\n\t'#33CCCC',\n\t'#33CCFF',\n\t'#6600CC',\n\t'#6600FF',\n\t'#6633CC',\n\t'#6633FF',\n\t'#66CC00',\n\t'#66CC33',\n\t'#9900CC',\n\t'#9900FF',\n\t'#9933CC',\n\t'#9933FF',\n\t'#99CC00',\n\t'#99CC33',\n\t'#CC0000',\n\t'#CC0033',\n\t'#CC0066',\n\t'#CC0099',\n\t'#CC00CC',\n\t'#CC00FF',\n\t'#CC3300',\n\t'#CC3333',\n\t'#CC3366',\n\t'#CC3399',\n\t'#CC33CC',\n\t'#CC33FF',\n\t'#CC6600',\n\t'#CC6633',\n\t'#CC9900',\n\t'#CC9933',\n\t'#CCCC00',\n\t'#CCCC33',\n\t'#FF0000',\n\t'#FF0033',\n\t'#FF0066',\n\t'#FF0099',\n\t'#FF00CC',\n\t'#FF00FF',\n\t'#FF3300',\n\t'#FF3333',\n\t'#FF3366',\n\t'#FF3399',\n\t'#FF33CC',\n\t'#FF33FF',\n\t'#FF6600',\n\t'#FF6633',\n\t'#FF9900',\n\t'#FF9933',\n\t'#FFCC00',\n\t'#FFCC33'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\n// eslint-disable-next-line complexity\nfunction useColors() {\n\t// NB: In an Electron preload script, document will be defined but not fully\n\t// initialized. Since we know we're in Chrome, we'll just detect this case\n\t// explicitly\n\tif (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) {\n\t\treturn true;\n\t}\n\n\t// Internet Explorer and Edge do not support colors.\n\tif (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\n\t\treturn false;\n\t}\n\n\tlet m;\n\n\t// Is webkit? http://stackoverflow.com/a/16459606/376773\n\t// document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n\t// eslint-disable-next-line no-return-assign\n\treturn (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n\t\t// Is firebug? http://stackoverflow.com/a/398120/376773\n\t\t(typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n\t\t// Is firefox >= v31?\n\t\t// https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && (m = navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/)) && parseInt(m[1], 10) >= 31) ||\n\t\t// Double check webkit in userAgent just in case we are in a worker\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n\targs[0] = (this.useColors ? '%c' : '') +\n\t\tthis.namespace +\n\t\t(this.useColors ? ' %c' : ' ') +\n\t\targs[0] +\n\t\t(this.useColors ? '%c ' : ' ') +\n\t\t'+' + module.exports.humanize(this.diff);\n\n\tif (!this.useColors) {\n\t\treturn;\n\t}\n\n\tconst c = 'color: ' + this.color;\n\targs.splice(1, 0, c, 'color: inherit');\n\n\t// The final \"%c\" is somewhat tricky, because there could be other\n\t// arguments passed either before or after the %c, so we need to\n\t// figure out the correct index to insert the CSS into\n\tlet index = 0;\n\tlet lastC = 0;\n\targs[0].replace(/%[a-zA-Z%]/g, match => {\n\t\tif (match === '%%') {\n\t\t\treturn;\n\t\t}\n\t\tindex++;\n\t\tif (match === '%c') {\n\t\t\t// We only are interested in the *last* %c\n\t\t\t// (the user may have provided their own)\n\t\t\tlastC = index;\n\t\t}\n\t});\n\n\targs.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.debug()` when available.\n * No-op when `console.debug` is not a \"function\".\n * If `console.debug` is not available, falls back\n * to `console.log`.\n *\n * @api public\n */\nexports.log = console.debug || console.log || (() => {});\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\nfunction save(namespaces) {\n\ttry {\n\t\tif (namespaces) {\n\t\t\texports.storage.setItem('debug', namespaces);\n\t\t} else {\n\t\t\texports.storage.removeItem('debug');\n\t\t}\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\nfunction load() {\n\tlet r;\n\ttry {\n\t\tr = exports.storage.getItem('debug') || exports.storage.getItem('DEBUG') ;\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n\n\t// If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n\tif (!r && typeof process !== 'undefined' && 'env' in process) {\n\t\tr = process.env.DEBUG;\n\t}\n\n\treturn r;\n}\n\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\nfunction localstorage() {\n\ttry {\n\t\t// TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context\n\t\t// The Browser also has localStorage in the global context.\n\t\treturn localStorage;\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\nmodule.exports = require('./common')(exports);\n\nconst {formatters} = module.exports;\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nformatters.j = function (v) {\n\ttry {\n\t\treturn JSON.stringify(v);\n\t} catch (error) {\n\t\treturn '[UnexpectedJSONParseError]: ' + error.message;\n\t}\n};\n","'use strict';\n\nmodule.exports = (flag, argv = process.argv) => {\n\tconst prefix = flag.startsWith('-') ? '' : (flag.length === 1 ? '-' : '--');\n\tconst position = argv.indexOf(prefix + flag);\n\tconst terminatorPosition = argv.indexOf('--');\n\treturn position !== -1 && (terminatorPosition === -1 || position < terminatorPosition);\n};\n","'use strict';\nconst os = require('os');\nconst tty = require('tty');\nconst hasFlag = require('has-flag');\n\nconst {env} = process;\n\nlet forceColor;\nif (hasFlag('no-color') ||\n\thasFlag('no-colors') ||\n\thasFlag('color=false') ||\n\thasFlag('color=never')) {\n\tforceColor = 0;\n} else if (hasFlag('color') ||\n\thasFlag('colors') ||\n\thasFlag('color=true') ||\n\thasFlag('color=always')) {\n\tforceColor = 1;\n}\n\nif ('FORCE_COLOR' in env) {\n\tif (env.FORCE_COLOR === 'true') {\n\t\tforceColor = 1;\n\t} else if (env.FORCE_COLOR === 'false') {\n\t\tforceColor = 0;\n\t} else {\n\t\tforceColor = env.FORCE_COLOR.length === 0 ? 1 : Math.min(parseInt(env.FORCE_COLOR, 10), 3);\n\t}\n}\n\nfunction translateLevel(level) {\n\tif (level === 0) {\n\t\treturn false;\n\t}\n\n\treturn {\n\t\tlevel,\n\t\thasBasic: true,\n\t\thas256: level >= 2,\n\t\thas16m: level >= 3\n\t};\n}\n\nfunction supportsColor(haveStream, streamIsTTY) {\n\tif (forceColor === 0) {\n\t\treturn 0;\n\t}\n\n\tif (hasFlag('color=16m') ||\n\t\thasFlag('color=full') ||\n\t\thasFlag('color=truecolor')) {\n\t\treturn 3;\n\t}\n\n\tif (hasFlag('color=256')) {\n\t\treturn 2;\n\t}\n\n\tif (haveStream && !streamIsTTY && forceColor === undefined) {\n\t\treturn 0;\n\t}\n\n\tconst min = forceColor || 0;\n\n\tif (env.TERM === 'dumb') {\n\t\treturn min;\n\t}\n\n\tif (process.platform === 'win32') {\n\t\t// Windows 10 build 10586 is the first Windows release that supports 256 colors.\n\t\t// Windows 10 build 14931 is the first release that supports 16m/TrueColor.\n\t\tconst osRelease = os.release().split('.');\n\t\tif (\n\t\t\tNumber(osRelease[0]) >= 10 &&\n\t\t\tNumber(osRelease[2]) >= 10586\n\t\t) {\n\t\t\treturn Number(osRelease[2]) >= 14931 ? 3 : 2;\n\t\t}\n\n\t\treturn 1;\n\t}\n\n\tif ('CI' in env) {\n\t\tif (['TRAVIS', 'CIRCLECI', 'APPVEYOR', 'GITLAB_CI', 'GITHUB_ACTIONS', 'BUILDKITE'].some(sign => sign in env) || env.CI_NAME === 'codeship') {\n\t\t\treturn 1;\n\t\t}\n\n\t\treturn min;\n\t}\n\n\tif ('TEAMCITY_VERSION' in env) {\n\t\treturn /^(9\\.(0*[1-9]\\d*)\\.|\\d{2,}\\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0;\n\t}\n\n\tif (env.COLORTERM === 'truecolor') {\n\t\treturn 3;\n\t}\n\n\tif ('TERM_PROGRAM' in env) {\n\t\tconst version = parseInt((env.TERM_PROGRAM_VERSION || '').split('.')[0], 10);\n\n\t\tswitch (env.TERM_PROGRAM) {\n\t\t\tcase 'iTerm.app':\n\t\t\t\treturn version >= 3 ? 3 : 2;\n\t\t\tcase 'Apple_Terminal':\n\t\t\t\treturn 2;\n\t\t\t// No default\n\t\t}\n\t}\n\n\tif (/-256(color)?$/i.test(env.TERM)) {\n\t\treturn 2;\n\t}\n\n\tif (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) {\n\t\treturn 1;\n\t}\n\n\tif ('COLORTERM' in env) {\n\t\treturn 1;\n\t}\n\n\treturn min;\n}\n\nfunction getSupportLevel(stream) {\n\tconst level = supportsColor(stream, stream && stream.isTTY);\n\treturn translateLevel(level);\n}\n\nmodule.exports = {\n\tsupportsColor: getSupportLevel,\n\tstdout: translateLevel(supportsColor(true, tty.isatty(1))),\n\tstderr: translateLevel(supportsColor(true, tty.isatty(2)))\n};\n","/**\n * Module dependencies.\n */\n\nconst tty = require('tty');\nconst util = require('util');\n\n/**\n * This is the Node.js implementation of `debug()`.\n */\n\nexports.init = init;\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.destroy = util.deprecate(\n\t() => {},\n\t'Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.'\n);\n\n/**\n * Colors.\n */\n\nexports.colors = [6, 2, 3, 4, 5, 1];\n\ntry {\n\t// Optional dependency (as in, doesn't need to be installed, NOT like optionalDependencies in package.json)\n\t// eslint-disable-next-line import/no-extraneous-dependencies\n\tconst supportsColor = require('supports-color');\n\n\tif (supportsColor && (supportsColor.stderr || supportsColor).level >= 2) {\n\t\texports.colors = [\n\t\t\t20,\n\t\t\t21,\n\t\t\t26,\n\t\t\t27,\n\t\t\t32,\n\t\t\t33,\n\t\t\t38,\n\t\t\t39,\n\t\t\t40,\n\t\t\t41,\n\t\t\t42,\n\t\t\t43,\n\t\t\t44,\n\t\t\t45,\n\t\t\t56,\n\t\t\t57,\n\t\t\t62,\n\t\t\t63,\n\t\t\t68,\n\t\t\t69,\n\t\t\t74,\n\t\t\t75,\n\t\t\t76,\n\t\t\t77,\n\t\t\t78,\n\t\t\t79,\n\t\t\t80,\n\t\t\t81,\n\t\t\t92,\n\t\t\t93,\n\t\t\t98,\n\t\t\t99,\n\t\t\t112,\n\t\t\t113,\n\t\t\t128,\n\t\t\t129,\n\t\t\t134,\n\t\t\t135,\n\t\t\t148,\n\t\t\t149,\n\t\t\t160,\n\t\t\t161,\n\t\t\t162,\n\t\t\t163,\n\t\t\t164,\n\t\t\t165,\n\t\t\t166,\n\t\t\t167,\n\t\t\t168,\n\t\t\t169,\n\t\t\t170,\n\t\t\t171,\n\t\t\t172,\n\t\t\t173,\n\t\t\t178,\n\t\t\t179,\n\t\t\t184,\n\t\t\t185,\n\t\t\t196,\n\t\t\t197,\n\t\t\t198,\n\t\t\t199,\n\t\t\t200,\n\t\t\t201,\n\t\t\t202,\n\t\t\t203,\n\t\t\t204,\n\t\t\t205,\n\t\t\t206,\n\t\t\t207,\n\t\t\t208,\n\t\t\t209,\n\t\t\t214,\n\t\t\t215,\n\t\t\t220,\n\t\t\t221\n\t\t];\n\t}\n} catch (error) {\n\t// Swallow - we only care if `supports-color` is available; it doesn't have to be.\n}\n\n/**\n * Build up the default `inspectOpts` object from the environment variables.\n *\n * $ DEBUG_COLORS=no DEBUG_DEPTH=10 DEBUG_SHOW_HIDDEN=enabled node script.js\n */\n\nexports.inspectOpts = Object.keys(process.env).filter(key => {\n\treturn /^debug_/i.test(key);\n}).reduce((obj, key) => {\n\t// Camel-case\n\tconst prop = key\n\t\t.substring(6)\n\t\t.toLowerCase()\n\t\t.replace(/_([a-z])/g, (_, k) => {\n\t\t\treturn k.toUpperCase();\n\t\t});\n\n\t// Coerce string value into JS value\n\tlet val = process.env[key];\n\tif (/^(yes|on|true|enabled)$/i.test(val)) {\n\t\tval = true;\n\t} else if (/^(no|off|false|disabled)$/i.test(val)) {\n\t\tval = false;\n\t} else if (val === 'null') {\n\t\tval = null;\n\t} else {\n\t\tval = Number(val);\n\t}\n\n\tobj[prop] = val;\n\treturn obj;\n}, {});\n\n/**\n * Is stdout a TTY? Colored output is enabled when `true`.\n */\n\nfunction useColors() {\n\treturn 'colors' in exports.inspectOpts ?\n\t\tBoolean(exports.inspectOpts.colors) :\n\t\ttty.isatty(process.stderr.fd);\n}\n\n/**\n * Adds ANSI color escape codes if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n\tconst {namespace: name, useColors} = this;\n\n\tif (useColors) {\n\t\tconst c = this.color;\n\t\tconst colorCode = '\\u001B[3' + (c < 8 ? c : '8;5;' + c);\n\t\tconst prefix = ` ${colorCode};1m${name} \\u001B[0m`;\n\n\t\targs[0] = prefix + args[0].split('\\n').join('\\n' + prefix);\n\t\targs.push(colorCode + 'm+' + module.exports.humanize(this.diff) + '\\u001B[0m');\n\t} else {\n\t\targs[0] = getDate() + name + ' ' + args[0];\n\t}\n}\n\nfunction getDate() {\n\tif (exports.inspectOpts.hideDate) {\n\t\treturn '';\n\t}\n\treturn new Date().toISOString() + ' ';\n}\n\n/**\n * Invokes `util.formatWithOptions()` with the specified arguments and writes to stderr.\n */\n\nfunction log(...args) {\n\treturn process.stderr.write(util.formatWithOptions(exports.inspectOpts, ...args) + '\\n');\n}\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\nfunction save(namespaces) {\n\tif (namespaces) {\n\t\tprocess.env.DEBUG = namespaces;\n\t} else {\n\t\t// If you set a process.env field to null or undefined, it gets cast to the\n\t\t// string 'null' or 'undefined'. Just delete instead.\n\t\tdelete process.env.DEBUG;\n\t}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\nfunction load() {\n\treturn process.env.DEBUG;\n}\n\n/**\n * Init logic for `debug` instances.\n *\n * Create a new `inspectOpts` object in case `useColors` is set\n * differently for a particular `debug` instance.\n */\n\nfunction init(debug) {\n\tdebug.inspectOpts = {};\n\n\tconst keys = Object.keys(exports.inspectOpts);\n\tfor (let i = 0; i < keys.length; i++) {\n\t\tdebug.inspectOpts[keys[i]] = exports.inspectOpts[keys[i]];\n\t}\n}\n\nmodule.exports = require('./common')(exports);\n\nconst {formatters} = module.exports;\n\n/**\n * Map %o to `util.inspect()`, all on a single line.\n */\n\nformatters.o = function (v) {\n\tthis.inspectOpts.colors = this.useColors;\n\treturn util.inspect(v, this.inspectOpts)\n\t\t.split('\\n')\n\t\t.map(str => str.trim())\n\t\t.join(' ');\n};\n\n/**\n * Map %O to `util.inspect()`, allowing multiple lines if needed.\n */\n\nformatters.O = function (v) {\n\tthis.inspectOpts.colors = this.useColors;\n\treturn util.inspect(v, this.inspectOpts);\n};\n","/**\n * Detect Electron renderer / nwjs process, which is node, but we should\n * treat as a browser.\n */\n\nif (typeof process === 'undefined' || process.type === 'renderer' || process.browser === true || process.__nwjs) {\n\tmodule.exports = require('./browser.js');\n} else {\n\tmodule.exports = require('./node.js');\n}\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst fs_1 = require(\"fs\");\nconst debug_1 = __importDefault(require(\"debug\"));\nconst log = debug_1.default('@kwsites/file-exists');\nfunction check(path, isFile, isDirectory) {\n log(`checking %s`, path);\n try {\n const stat = fs_1.statSync(path);\n if (stat.isFile() && isFile) {\n log(`[OK] path represents a file`);\n return true;\n }\n if (stat.isDirectory() && isDirectory) {\n log(`[OK] path represents a directory`);\n return true;\n }\n log(`[FAIL] path represents something other than a file or directory`);\n return false;\n }\n catch (e) {\n if (e.code === 'ENOENT') {\n log(`[FAIL] path is not accessible: %o`, e);\n return false;\n }\n log(`[FATAL] %o`, e);\n throw e;\n }\n}\n/**\n * Synchronous validation of a path existing either as a file or as a directory.\n *\n * @param {string} path The path to check\n * @param {number} type One or both of the exported numeric constants\n */\nfunction exists(path, type = exports.READABLE) {\n return check(path, (type & exports.FILE) > 0, (type & exports.FOLDER) > 0);\n}\nexports.exists = exists;\n/**\n * Constant representing a file\n */\nexports.FILE = 1;\n/**\n * Constant representing a folder\n */\nexports.FOLDER = 2;\n/**\n * Constant representing either a file or a folder\n */\nexports.READABLE = exports.FILE + exports.FOLDER;\n//# sourceMappingURL=index.js.map","\"use strict\";\nfunction __export(m) {\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n}\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__export(require(\"./src\"));\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createDeferred = exports.deferred = void 0;\n/**\n * Creates a new `DeferredPromise`\n *\n * ```typescript\n import {deferred} from '@kwsites/promise-deferred`;\n ```\n */\nfunction deferred() {\n let done;\n let fail;\n let status = 'pending';\n const promise = new Promise((_done, _fail) => {\n done = _done;\n fail = _fail;\n });\n return {\n promise,\n done(result) {\n if (status === 'pending') {\n status = 'resolved';\n done(result);\n }\n },\n fail(error) {\n if (status === 'pending') {\n status = 'rejected';\n fail(error);\n }\n },\n get fulfilled() {\n return status !== 'pending';\n },\n get status() {\n return status;\n },\n };\n}\nexports.deferred = deferred;\n/**\n * Alias of the exported `deferred` function, to help consumers wanting to use `deferred` as the\n * local variable name rather than the factory import name, without needing to rename on import.\n *\n * ```typescript\n import {createDeferred} from '@kwsites/promise-deferred`;\n ```\n */\nexports.createDeferred = deferred;\n/**\n * Default export allows use as:\n *\n * ```typescript\n import deferred from '@kwsites/promise-deferred`;\n ```\n */\nexports.default = deferred;\n//# sourceMappingURL=index.js.map","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __esm = (fn, res) => function __init() {\n return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;\n};\nvar __commonJS = (cb, mod) => function __require() {\n return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;\n};\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/lib/args/pathspec.ts\nfunction pathspec(...paths) {\n const key = new String(paths);\n cache.set(key, paths);\n return key;\n}\nfunction isPathSpec(path) {\n return path instanceof String && cache.has(path);\n}\nfunction toPaths(pathSpec) {\n return cache.get(pathSpec) || [];\n}\nvar cache;\nvar init_pathspec = __esm({\n \"src/lib/args/pathspec.ts\"() {\n \"use strict\";\n cache = /* @__PURE__ */ new WeakMap();\n }\n});\n\n// src/lib/errors/git-error.ts\nvar GitError;\nvar init_git_error = __esm({\n \"src/lib/errors/git-error.ts\"() {\n \"use strict\";\n GitError = class extends Error {\n constructor(task, message) {\n super(message);\n this.task = task;\n Object.setPrototypeOf(this, new.target.prototype);\n }\n };\n }\n});\n\n// src/lib/errors/git-response-error.ts\nvar GitResponseError;\nvar init_git_response_error = __esm({\n \"src/lib/errors/git-response-error.ts\"() {\n \"use strict\";\n init_git_error();\n GitResponseError = class extends GitError {\n constructor(git, message) {\n super(void 0, message || String(git));\n this.git = git;\n }\n };\n }\n});\n\n// src/lib/errors/task-configuration-error.ts\nvar TaskConfigurationError;\nvar init_task_configuration_error = __esm({\n \"src/lib/errors/task-configuration-error.ts\"() {\n \"use strict\";\n init_git_error();\n TaskConfigurationError = class extends GitError {\n constructor(message) {\n super(void 0, message);\n }\n };\n }\n});\n\n// src/lib/utils/util.ts\nimport { Buffer as Buffer2 } from \"node:buffer\";\nimport { exists, FOLDER } from \"@kwsites/file-exists\";\nfunction asFunction(source) {\n if (typeof source !== \"function\") {\n return NOOP;\n }\n return source;\n}\nfunction isUserFunction(source) {\n return typeof source === \"function\" && source !== NOOP;\n}\nfunction splitOn(input, char) {\n const index = input.indexOf(char);\n if (index <= 0) {\n return [input, \"\"];\n }\n return [input.substr(0, index), input.substr(index + 1)];\n}\nfunction first(input, offset = 0) {\n return isArrayLike(input) && input.length > offset ? input[offset] : void 0;\n}\nfunction last(input, offset = 0) {\n if (isArrayLike(input) && input.length > offset) {\n return input[input.length - 1 - offset];\n }\n}\nfunction isArrayLike(input) {\n return filterHasLength(input);\n}\nfunction toLinesWithContent(input = \"\", trimmed2 = true, separator = \"\\n\") {\n return input.split(separator).reduce((output, line) => {\n const lineContent = trimmed2 ? line.trim() : line;\n if (lineContent) {\n output.push(lineContent);\n }\n return output;\n }, []);\n}\nfunction forEachLineWithContent(input, callback) {\n return toLinesWithContent(input, true).map((line) => callback(line));\n}\nfunction folderExists(path) {\n return exists(path, FOLDER);\n}\nfunction append(target, item) {\n if (Array.isArray(target)) {\n if (!target.includes(item)) {\n target.push(item);\n }\n } else {\n target.add(item);\n }\n return item;\n}\nfunction including(target, item) {\n if (Array.isArray(target) && !target.includes(item)) {\n target.push(item);\n }\n return target;\n}\nfunction remove(target, item) {\n if (Array.isArray(target)) {\n const index = target.indexOf(item);\n if (index >= 0) {\n target.splice(index, 1);\n }\n } else {\n target.delete(item);\n }\n return item;\n}\nfunction asArray(source) {\n return Array.isArray(source) ? source : [source];\n}\nfunction asCamelCase(str) {\n return str.replace(/[\\s-]+(.)/g, (_all, chr) => {\n return chr.toUpperCase();\n });\n}\nfunction asStringArray(source) {\n return asArray(source).map((item) => {\n return item instanceof String ? item : String(item);\n });\n}\nfunction asNumber(source, onNaN = 0) {\n if (source == null) {\n return onNaN;\n }\n const num = parseInt(source, 10);\n return Number.isNaN(num) ? onNaN : num;\n}\nfunction prefixedArray(input, prefix) {\n const output = [];\n for (let i = 0, max = input.length; i < max; i++) {\n output.push(prefix, input[i]);\n }\n return output;\n}\nfunction bufferToString(input) {\n return (Array.isArray(input) ? Buffer2.concat(input) : input).toString(\"utf-8\");\n}\nfunction pick(source, properties) {\n const out = {};\n properties.forEach((key) => {\n if (source[key] !== void 0) {\n out[key] = source[key];\n }\n });\n return out;\n}\nfunction delay(duration = 0) {\n return new Promise((done) => setTimeout(done, duration));\n}\nfunction orVoid(input) {\n if (input === false) {\n return void 0;\n }\n return input;\n}\nvar NULL, NOOP, objectToString;\nvar init_util = __esm({\n \"src/lib/utils/util.ts\"() {\n \"use strict\";\n init_argument_filters();\n NULL = \"\\0\";\n NOOP = () => {\n };\n objectToString = Object.prototype.toString.call.bind(Object.prototype.toString);\n }\n});\n\n// src/lib/utils/argument-filters.ts\nfunction filterType(input, filter, def) {\n if (filter(input)) {\n return input;\n }\n return arguments.length > 2 ? def : void 0;\n}\nfunction filterPrimitives(input, omit) {\n const type = isPathSpec(input) ? \"string\" : typeof input;\n return /number|string|boolean/.test(type) && (!omit || !omit.includes(type));\n}\nfunction filterPlainObject(input) {\n return !!input && objectToString(input) === \"[object Object]\";\n}\nfunction filterFunction(input) {\n return typeof input === \"function\";\n}\nvar filterArray, filterNumber, filterString, filterStringOrStringArray, filterHasLength;\nvar init_argument_filters = __esm({\n \"src/lib/utils/argument-filters.ts\"() {\n \"use strict\";\n init_pathspec();\n init_util();\n filterArray = (input) => {\n return Array.isArray(input);\n };\n filterNumber = (input) => {\n return typeof input === \"number\";\n };\n filterString = (input) => {\n return typeof input === \"string\";\n };\n filterStringOrStringArray = (input) => {\n return filterString(input) || Array.isArray(input) && input.every(filterString);\n };\n filterHasLength = (input) => {\n if (input == null || \"number|boolean|function\".includes(typeof input)) {\n return false;\n }\n return typeof input.length === \"number\";\n };\n }\n});\n\n// src/lib/utils/exit-codes.ts\nvar ExitCodes;\nvar init_exit_codes = __esm({\n \"src/lib/utils/exit-codes.ts\"() {\n \"use strict\";\n ExitCodes = /* @__PURE__ */ ((ExitCodes2) => {\n ExitCodes2[ExitCodes2[\"SUCCESS\"] = 0] = \"SUCCESS\";\n ExitCodes2[ExitCodes2[\"ERROR\"] = 1] = \"ERROR\";\n ExitCodes2[ExitCodes2[\"NOT_FOUND\"] = -2] = \"NOT_FOUND\";\n ExitCodes2[ExitCodes2[\"UNCLEAN\"] = 128] = \"UNCLEAN\";\n return ExitCodes2;\n })(ExitCodes || {});\n }\n});\n\n// src/lib/utils/git-output-streams.ts\nvar GitOutputStreams;\nvar init_git_output_streams = __esm({\n \"src/lib/utils/git-output-streams.ts\"() {\n \"use strict\";\n GitOutputStreams = class _GitOutputStreams {\n constructor(stdOut, stdErr) {\n this.stdOut = stdOut;\n this.stdErr = stdErr;\n }\n asStrings() {\n return new _GitOutputStreams(this.stdOut.toString(\"utf8\"), this.stdErr.toString(\"utf8\"));\n }\n };\n }\n});\n\n// src/lib/utils/line-parser.ts\nfunction useMatchesDefault() {\n throw new Error(`LineParser:useMatches not implemented`);\n}\nvar LineParser, RemoteLineParser;\nvar init_line_parser = __esm({\n \"src/lib/utils/line-parser.ts\"() {\n \"use strict\";\n LineParser = class {\n constructor(regExp, useMatches) {\n this.matches = [];\n this.useMatches = useMatchesDefault;\n this.parse = (line, target) => {\n this.resetMatches();\n if (!this._regExp.every((reg, index) => this.addMatch(reg, index, line(index)))) {\n return false;\n }\n return this.useMatches(target, this.prepareMatches()) !== false;\n };\n this._regExp = Array.isArray(regExp) ? regExp : [regExp];\n if (useMatches) {\n this.useMatches = useMatches;\n }\n }\n resetMatches() {\n this.matches.length = 0;\n }\n prepareMatches() {\n return this.matches;\n }\n addMatch(reg, index, line) {\n const matched = line && reg.exec(line);\n if (matched) {\n this.pushMatch(index, matched);\n }\n return !!matched;\n }\n pushMatch(_index, matched) {\n this.matches.push(...matched.slice(1));\n }\n };\n RemoteLineParser = class extends LineParser {\n addMatch(reg, index, line) {\n return /^remote:\\s/.test(String(line)) && super.addMatch(reg, index, line);\n }\n pushMatch(index, matched) {\n if (index > 0 || matched.length > 1) {\n super.pushMatch(index, matched);\n }\n }\n };\n }\n});\n\n// src/lib/utils/simple-git-options.ts\nfunction createInstanceConfig(...options) {\n const baseDir = process.cwd();\n const config = Object.assign(\n { baseDir, ...defaultOptions },\n ...options.filter((o) => typeof o === \"object\" && o)\n );\n config.baseDir = config.baseDir || baseDir;\n config.trimmed = config.trimmed === true;\n return config;\n}\nvar defaultOptions;\nvar init_simple_git_options = __esm({\n \"src/lib/utils/simple-git-options.ts\"() {\n \"use strict\";\n defaultOptions = {\n binary: \"git\",\n maxConcurrentProcesses: 5,\n config: [],\n trimmed: false\n };\n }\n});\n\n// src/lib/utils/task-options.ts\nfunction appendTaskOptions(options, commands = []) {\n if (!filterPlainObject(options)) {\n return commands;\n }\n return Object.keys(options).reduce((commands2, key) => {\n const value = options[key];\n if (isPathSpec(value)) {\n commands2.push(value);\n } else if (filterPrimitives(value, [\"boolean\"])) {\n commands2.push(key + \"=\" + value);\n } else if (Array.isArray(value)) {\n for (const v of value) {\n if (!filterPrimitives(v, [\"string\", \"number\"])) {\n commands2.push(key + \"=\" + v);\n }\n }\n } else {\n commands2.push(key);\n }\n return commands2;\n }, commands);\n}\nfunction getTrailingOptions(args, initialPrimitive = 0, objectOnly = false) {\n const command = [];\n for (let i = 0, max = initialPrimitive < 0 ? args.length : initialPrimitive; i < max; i++) {\n if (\"string|number\".includes(typeof args[i])) {\n command.push(String(args[i]));\n }\n }\n appendTaskOptions(trailingOptionsArgument(args), command);\n if (!objectOnly) {\n command.push(...trailingArrayArgument(args));\n }\n return command;\n}\nfunction trailingArrayArgument(args) {\n const hasTrailingCallback = typeof last(args) === \"function\";\n return asStringArray(filterType(last(args, hasTrailingCallback ? 1 : 0), filterArray, []));\n}\nfunction trailingOptionsArgument(args) {\n const hasTrailingCallback = filterFunction(last(args));\n return filterType(last(args, hasTrailingCallback ? 1 : 0), filterPlainObject);\n}\nfunction trailingFunctionArgument(args, includeNoop = true) {\n const callback = asFunction(last(args));\n return includeNoop || isUserFunction(callback) ? callback : void 0;\n}\nvar init_task_options = __esm({\n \"src/lib/utils/task-options.ts\"() {\n \"use strict\";\n init_argument_filters();\n init_util();\n init_pathspec();\n }\n});\n\n// src/lib/utils/task-parser.ts\nfunction callTaskParser(parser4, streams) {\n return parser4(streams.stdOut, streams.stdErr);\n}\nfunction parseStringResponse(result, parsers12, texts, trim = true) {\n asArray(texts).forEach((text) => {\n for (let lines = toLinesWithContent(text, trim), i = 0, max = lines.length; i < max; i++) {\n const line = (offset = 0) => {\n if (i + offset >= max) {\n return;\n }\n return lines[i + offset];\n };\n parsers12.some(({ parse }) => parse(line, result));\n }\n });\n return result;\n}\nvar init_task_parser = __esm({\n \"src/lib/utils/task-parser.ts\"() {\n \"use strict\";\n init_util();\n }\n});\n\n// src/lib/utils/index.ts\nvar utils_exports = {};\n__export(utils_exports, {\n ExitCodes: () => ExitCodes,\n GitOutputStreams: () => GitOutputStreams,\n LineParser: () => LineParser,\n NOOP: () => NOOP,\n NULL: () => NULL,\n RemoteLineParser: () => RemoteLineParser,\n append: () => append,\n appendTaskOptions: () => appendTaskOptions,\n asArray: () => asArray,\n asCamelCase: () => asCamelCase,\n asFunction: () => asFunction,\n asNumber: () => asNumber,\n asStringArray: () => asStringArray,\n bufferToString: () => bufferToString,\n callTaskParser: () => callTaskParser,\n createInstanceConfig: () => createInstanceConfig,\n delay: () => delay,\n filterArray: () => filterArray,\n filterFunction: () => filterFunction,\n filterHasLength: () => filterHasLength,\n filterNumber: () => filterNumber,\n filterPlainObject: () => filterPlainObject,\n filterPrimitives: () => filterPrimitives,\n filterString: () => filterString,\n filterStringOrStringArray: () => filterStringOrStringArray,\n filterType: () => filterType,\n first: () => first,\n folderExists: () => folderExists,\n forEachLineWithContent: () => forEachLineWithContent,\n getTrailingOptions: () => getTrailingOptions,\n including: () => including,\n isUserFunction: () => isUserFunction,\n last: () => last,\n objectToString: () => objectToString,\n orVoid: () => orVoid,\n parseStringResponse: () => parseStringResponse,\n pick: () => pick,\n prefixedArray: () => prefixedArray,\n remove: () => remove,\n splitOn: () => splitOn,\n toLinesWithContent: () => toLinesWithContent,\n trailingFunctionArgument: () => trailingFunctionArgument,\n trailingOptionsArgument: () => trailingOptionsArgument\n});\nvar init_utils = __esm({\n \"src/lib/utils/index.ts\"() {\n \"use strict\";\n init_argument_filters();\n init_exit_codes();\n init_git_output_streams();\n init_line_parser();\n init_simple_git_options();\n init_task_options();\n init_task_parser();\n init_util();\n }\n});\n\n// src/lib/tasks/check-is-repo.ts\nvar check_is_repo_exports = {};\n__export(check_is_repo_exports, {\n CheckRepoActions: () => CheckRepoActions,\n checkIsBareRepoTask: () => checkIsBareRepoTask,\n checkIsRepoRootTask: () => checkIsRepoRootTask,\n checkIsRepoTask: () => checkIsRepoTask\n});\nfunction checkIsRepoTask(action) {\n switch (action) {\n case \"bare\" /* BARE */:\n return checkIsBareRepoTask();\n case \"root\" /* IS_REPO_ROOT */:\n return checkIsRepoRootTask();\n }\n const commands = [\"rev-parse\", \"--is-inside-work-tree\"];\n return {\n commands,\n format: \"utf-8\",\n onError,\n parser\n };\n}\nfunction checkIsRepoRootTask() {\n const commands = [\"rev-parse\", \"--git-dir\"];\n return {\n commands,\n format: \"utf-8\",\n onError,\n parser(path) {\n return /^\\.(git)?$/.test(path.trim());\n }\n };\n}\nfunction checkIsBareRepoTask() {\n const commands = [\"rev-parse\", \"--is-bare-repository\"];\n return {\n commands,\n format: \"utf-8\",\n onError,\n parser\n };\n}\nfunction isNotRepoMessage(error) {\n return /(Not a git repository|Kein Git-Repository)/i.test(String(error));\n}\nvar CheckRepoActions, onError, parser;\nvar init_check_is_repo = __esm({\n \"src/lib/tasks/check-is-repo.ts\"() {\n \"use strict\";\n init_utils();\n CheckRepoActions = /* @__PURE__ */ ((CheckRepoActions2) => {\n CheckRepoActions2[\"BARE\"] = \"bare\";\n CheckRepoActions2[\"IN_TREE\"] = \"tree\";\n CheckRepoActions2[\"IS_REPO_ROOT\"] = \"root\";\n return CheckRepoActions2;\n })(CheckRepoActions || {});\n onError = ({ exitCode }, error, done, fail) => {\n if (exitCode === 128 /* UNCLEAN */ && isNotRepoMessage(error)) {\n return done(Buffer.from(\"false\"));\n }\n fail(error);\n };\n parser = (text) => {\n return text.trim() === \"true\";\n };\n }\n});\n\n// src/lib/responses/CleanSummary.ts\nfunction cleanSummaryParser(dryRun, text) {\n const summary = new CleanResponse(dryRun);\n const regexp = dryRun ? dryRunRemovalRegexp : removalRegexp;\n toLinesWithContent(text).forEach((line) => {\n const removed = line.replace(regexp, \"\");\n summary.paths.push(removed);\n (isFolderRegexp.test(removed) ? summary.folders : summary.files).push(removed);\n });\n return summary;\n}\nvar CleanResponse, removalRegexp, dryRunRemovalRegexp, isFolderRegexp;\nvar init_CleanSummary = __esm({\n \"src/lib/responses/CleanSummary.ts\"() {\n \"use strict\";\n init_utils();\n CleanResponse = class {\n constructor(dryRun) {\n this.dryRun = dryRun;\n this.paths = [];\n this.files = [];\n this.folders = [];\n }\n };\n removalRegexp = /^[a-z]+\\s*/i;\n dryRunRemovalRegexp = /^[a-z]+\\s+[a-z]+\\s*/i;\n isFolderRegexp = /\\/$/;\n }\n});\n\n// src/lib/tasks/task.ts\nvar task_exports = {};\n__export(task_exports, {\n EMPTY_COMMANDS: () => EMPTY_COMMANDS,\n adhocExecTask: () => adhocExecTask,\n configurationErrorTask: () => configurationErrorTask,\n isBufferTask: () => isBufferTask,\n isEmptyTask: () => isEmptyTask,\n straightThroughBufferTask: () => straightThroughBufferTask,\n straightThroughStringTask: () => straightThroughStringTask\n});\nfunction adhocExecTask(parser4) {\n return {\n commands: EMPTY_COMMANDS,\n format: \"empty\",\n parser: parser4\n };\n}\nfunction configurationErrorTask(error) {\n return {\n commands: EMPTY_COMMANDS,\n format: \"empty\",\n parser() {\n throw typeof error === \"string\" ? new TaskConfigurationError(error) : error;\n }\n };\n}\nfunction straightThroughStringTask(commands, trimmed2 = false) {\n return {\n commands,\n format: \"utf-8\",\n parser(text) {\n return trimmed2 ? String(text).trim() : text;\n }\n };\n}\nfunction straightThroughBufferTask(commands) {\n return {\n commands,\n format: \"buffer\",\n parser(buffer) {\n return buffer;\n }\n };\n}\nfunction isBufferTask(task) {\n return task.format === \"buffer\";\n}\nfunction isEmptyTask(task) {\n return task.format === \"empty\" || !task.commands.length;\n}\nvar EMPTY_COMMANDS;\nvar init_task = __esm({\n \"src/lib/tasks/task.ts\"() {\n \"use strict\";\n init_task_configuration_error();\n EMPTY_COMMANDS = [];\n }\n});\n\n// src/lib/tasks/clean.ts\nvar clean_exports = {};\n__export(clean_exports, {\n CONFIG_ERROR_INTERACTIVE_MODE: () => CONFIG_ERROR_INTERACTIVE_MODE,\n CONFIG_ERROR_MODE_REQUIRED: () => CONFIG_ERROR_MODE_REQUIRED,\n CONFIG_ERROR_UNKNOWN_OPTION: () => CONFIG_ERROR_UNKNOWN_OPTION,\n CleanOptions: () => CleanOptions,\n cleanTask: () => cleanTask,\n cleanWithOptionsTask: () => cleanWithOptionsTask,\n isCleanOptionsArray: () => isCleanOptionsArray\n});\nfunction cleanWithOptionsTask(mode, customArgs) {\n const { cleanMode, options, valid } = getCleanOptions(mode);\n if (!cleanMode) {\n return configurationErrorTask(CONFIG_ERROR_MODE_REQUIRED);\n }\n if (!valid.options) {\n return configurationErrorTask(CONFIG_ERROR_UNKNOWN_OPTION + JSON.stringify(mode));\n }\n options.push(...customArgs);\n if (options.some(isInteractiveMode)) {\n return configurationErrorTask(CONFIG_ERROR_INTERACTIVE_MODE);\n }\n return cleanTask(cleanMode, options);\n}\nfunction cleanTask(mode, customArgs) {\n const commands = [\"clean\", `-${mode}`, ...customArgs];\n return {\n commands,\n format: \"utf-8\",\n parser(text) {\n return cleanSummaryParser(mode === \"n\" /* DRY_RUN */, text);\n }\n };\n}\nfunction isCleanOptionsArray(input) {\n return Array.isArray(input) && input.every((test) => CleanOptionValues.has(test));\n}\nfunction getCleanOptions(input) {\n let cleanMode;\n let options = [];\n let valid = { cleanMode: false, options: true };\n input.replace(/[^a-z]i/g, \"\").split(\"\").forEach((char) => {\n if (isCleanMode(char)) {\n cleanMode = char;\n valid.cleanMode = true;\n } else {\n valid.options = valid.options && isKnownOption(options[options.length] = `-${char}`);\n }\n });\n return {\n cleanMode,\n options,\n valid\n };\n}\nfunction isCleanMode(cleanMode) {\n return cleanMode === \"f\" /* FORCE */ || cleanMode === \"n\" /* DRY_RUN */;\n}\nfunction isKnownOption(option) {\n return /^-[a-z]$/i.test(option) && CleanOptionValues.has(option.charAt(1));\n}\nfunction isInteractiveMode(option) {\n if (/^-[^\\-]/.test(option)) {\n return option.indexOf(\"i\") > 0;\n }\n return option === \"--interactive\";\n}\nvar CONFIG_ERROR_INTERACTIVE_MODE, CONFIG_ERROR_MODE_REQUIRED, CONFIG_ERROR_UNKNOWN_OPTION, CleanOptions, CleanOptionValues;\nvar init_clean = __esm({\n \"src/lib/tasks/clean.ts\"() {\n \"use strict\";\n init_CleanSummary();\n init_utils();\n init_task();\n CONFIG_ERROR_INTERACTIVE_MODE = \"Git clean interactive mode is not supported\";\n CONFIG_ERROR_MODE_REQUIRED = 'Git clean mode parameter (\"n\" or \"f\") is required';\n CONFIG_ERROR_UNKNOWN_OPTION = \"Git clean unknown option found in: \";\n CleanOptions = /* @__PURE__ */ ((CleanOptions2) => {\n CleanOptions2[\"DRY_RUN\"] = \"n\";\n CleanOptions2[\"FORCE\"] = \"f\";\n CleanOptions2[\"IGNORED_INCLUDED\"] = \"x\";\n CleanOptions2[\"IGNORED_ONLY\"] = \"X\";\n CleanOptions2[\"EXCLUDING\"] = \"e\";\n CleanOptions2[\"QUIET\"] = \"q\";\n CleanOptions2[\"RECURSIVE\"] = \"d\";\n return CleanOptions2;\n })(CleanOptions || {});\n CleanOptionValues = /* @__PURE__ */ new Set([\n \"i\",\n ...asStringArray(Object.values(CleanOptions))\n ]);\n }\n});\n\n// src/lib/responses/ConfigList.ts\nfunction configListParser(text) {\n const config = new ConfigList();\n for (const item of configParser(text)) {\n config.addValue(item.file, String(item.key), item.value);\n }\n return config;\n}\nfunction configGetParser(text, key) {\n let value = null;\n const values = [];\n const scopes = /* @__PURE__ */ new Map();\n for (const item of configParser(text, key)) {\n if (item.key !== key) {\n continue;\n }\n values.push(value = item.value);\n if (!scopes.has(item.file)) {\n scopes.set(item.file, []);\n }\n scopes.get(item.file).push(value);\n }\n return {\n key,\n paths: Array.from(scopes.keys()),\n scopes,\n value,\n values\n };\n}\nfunction configFilePath(filePath) {\n return filePath.replace(/^(file):/, \"\");\n}\nfunction* configParser(text, requestedKey = null) {\n const lines = text.split(\"\\0\");\n for (let i = 0, max = lines.length - 1; i < max; ) {\n const file = configFilePath(lines[i++]);\n let value = lines[i++];\n let key = requestedKey;\n if (value.includes(\"\\n\")) {\n const line = splitOn(value, \"\\n\");\n key = line[0];\n value = line[1];\n }\n yield { file, key, value };\n }\n}\nvar ConfigList;\nvar init_ConfigList = __esm({\n \"src/lib/responses/ConfigList.ts\"() {\n \"use strict\";\n init_utils();\n ConfigList = class {\n constructor() {\n this.files = [];\n this.values = /* @__PURE__ */ Object.create(null);\n }\n get all() {\n if (!this._all) {\n this._all = this.files.reduce((all, file) => {\n return Object.assign(all, this.values[file]);\n }, {});\n }\n return this._all;\n }\n addFile(file) {\n if (!(file in this.values)) {\n const latest = last(this.files);\n this.values[file] = latest ? Object.create(this.values[latest]) : {};\n this.files.push(file);\n }\n return this.values[file];\n }\n addValue(file, key, value) {\n const values = this.addFile(file);\n if (!Object.hasOwn(values, key)) {\n values[key] = value;\n } else if (Array.isArray(values[key])) {\n values[key].push(value);\n } else {\n values[key] = [values[key], value];\n }\n this._all = void 0;\n }\n };\n }\n});\n\n// src/lib/tasks/config.ts\nfunction asConfigScope(scope, fallback) {\n if (typeof scope === \"string\" && Object.hasOwn(GitConfigScope, scope)) {\n return scope;\n }\n return fallback;\n}\nfunction addConfigTask(key, value, append2, scope) {\n const commands = [\"config\", `--${scope}`];\n if (append2) {\n commands.push(\"--add\");\n }\n commands.push(key, value);\n return {\n commands,\n format: \"utf-8\",\n parser(text) {\n return text;\n }\n };\n}\nfunction getConfigTask(key, scope) {\n const commands = [\"config\", \"--null\", \"--show-origin\", \"--get-all\", key];\n if (scope) {\n commands.splice(1, 0, `--${scope}`);\n }\n return {\n commands,\n format: \"utf-8\",\n parser(text) {\n return configGetParser(text, key);\n }\n };\n}\nfunction listConfigTask(scope) {\n const commands = [\"config\", \"--list\", \"--show-origin\", \"--null\"];\n if (scope) {\n commands.push(`--${scope}`);\n }\n return {\n commands,\n format: \"utf-8\",\n parser(text) {\n return configListParser(text);\n }\n };\n}\nfunction config_default() {\n return {\n addConfig(key, value, ...rest) {\n return this._runTask(\n addConfigTask(\n key,\n value,\n rest[0] === true,\n asConfigScope(rest[1], \"local\" /* local */)\n ),\n trailingFunctionArgument(arguments)\n );\n },\n getConfig(key, scope) {\n return this._runTask(\n getConfigTask(key, asConfigScope(scope, void 0)),\n trailingFunctionArgument(arguments)\n );\n },\n listConfig(...rest) {\n return this._runTask(\n listConfigTask(asConfigScope(rest[0], void 0)),\n trailingFunctionArgument(arguments)\n );\n }\n };\n}\nvar GitConfigScope;\nvar init_config = __esm({\n \"src/lib/tasks/config.ts\"() {\n \"use strict\";\n init_ConfigList();\n init_utils();\n GitConfigScope = /* @__PURE__ */ ((GitConfigScope2) => {\n GitConfigScope2[\"system\"] = \"system\";\n GitConfigScope2[\"global\"] = \"global\";\n GitConfigScope2[\"local\"] = \"local\";\n GitConfigScope2[\"worktree\"] = \"worktree\";\n return GitConfigScope2;\n })(GitConfigScope || {});\n }\n});\n\n// src/lib/tasks/diff-name-status.ts\nfunction isDiffNameStatus(input) {\n return diffNameStatus.has(input);\n}\nvar DiffNameStatus, diffNameStatus;\nvar init_diff_name_status = __esm({\n \"src/lib/tasks/diff-name-status.ts\"() {\n \"use strict\";\n DiffNameStatus = /* @__PURE__ */ ((DiffNameStatus2) => {\n DiffNameStatus2[\"ADDED\"] = \"A\";\n DiffNameStatus2[\"COPIED\"] = \"C\";\n DiffNameStatus2[\"DELETED\"] = \"D\";\n DiffNameStatus2[\"MODIFIED\"] = \"M\";\n DiffNameStatus2[\"RENAMED\"] = \"R\";\n DiffNameStatus2[\"CHANGED\"] = \"T\";\n DiffNameStatus2[\"UNMERGED\"] = \"U\";\n DiffNameStatus2[\"UNKNOWN\"] = \"X\";\n DiffNameStatus2[\"BROKEN\"] = \"B\";\n return DiffNameStatus2;\n })(DiffNameStatus || {});\n diffNameStatus = new Set(Object.values(DiffNameStatus));\n }\n});\n\n// src/lib/tasks/grep.ts\nfunction grepQueryBuilder(...params) {\n return new GrepQuery().param(...params);\n}\nfunction parseGrep(grep) {\n const paths = /* @__PURE__ */ new Set();\n const results = {};\n forEachLineWithContent(grep, (input) => {\n const [path, line, preview] = input.split(NULL);\n paths.add(path);\n (results[path] = results[path] || []).push({\n line: asNumber(line),\n path,\n preview\n });\n });\n return {\n paths,\n results\n };\n}\nfunction grep_default() {\n return {\n grep(searchTerm) {\n const then = trailingFunctionArgument(arguments);\n const options = getTrailingOptions(arguments);\n for (const option of disallowedOptions) {\n if (options.includes(option)) {\n return this._runTask(\n configurationErrorTask(`git.grep: use of \"${option}\" is not supported.`),\n then\n );\n }\n }\n if (typeof searchTerm === \"string\") {\n searchTerm = grepQueryBuilder().param(searchTerm);\n }\n const commands = [\"grep\", \"--null\", \"-n\", \"--full-name\", ...options, ...searchTerm];\n return this._runTask(\n {\n commands,\n format: \"utf-8\",\n parser(stdOut) {\n return parseGrep(stdOut);\n }\n },\n then\n );\n }\n };\n}\nvar disallowedOptions, Query, _a, GrepQuery;\nvar init_grep = __esm({\n \"src/lib/tasks/grep.ts\"() {\n \"use strict\";\n init_utils();\n init_task();\n disallowedOptions = [\"-h\"];\n Query = Symbol(\"grepQuery\");\n GrepQuery = class {\n constructor() {\n this[_a] = [];\n }\n *[(_a = Query, Symbol.iterator)]() {\n for (const query of this[Query]) {\n yield query;\n }\n }\n and(...and) {\n and.length && this[Query].push(\"--and\", \"(\", ...prefixedArray(and, \"-e\"), \")\");\n return this;\n }\n param(...param) {\n this[Query].push(...prefixedArray(param, \"-e\"));\n return this;\n }\n };\n }\n});\n\n// src/lib/tasks/reset.ts\nvar reset_exports = {};\n__export(reset_exports, {\n ResetMode: () => ResetMode,\n getResetMode: () => getResetMode,\n resetTask: () => resetTask\n});\nfunction resetTask(mode, customArgs) {\n const commands = [\"reset\"];\n if (isValidResetMode(mode)) {\n commands.push(`--${mode}`);\n }\n commands.push(...customArgs);\n return straightThroughStringTask(commands);\n}\nfunction getResetMode(mode) {\n if (isValidResetMode(mode)) {\n return mode;\n }\n switch (typeof mode) {\n case \"string\":\n case \"undefined\":\n return \"soft\" /* SOFT */;\n }\n return;\n}\nfunction isValidResetMode(mode) {\n return typeof mode === \"string\" && validResetModes.includes(mode);\n}\nvar ResetMode, validResetModes;\nvar init_reset = __esm({\n \"src/lib/tasks/reset.ts\"() {\n \"use strict\";\n init_utils();\n init_task();\n ResetMode = /* @__PURE__ */ ((ResetMode2) => {\n ResetMode2[\"MIXED\"] = \"mixed\";\n ResetMode2[\"SOFT\"] = \"soft\";\n ResetMode2[\"HARD\"] = \"hard\";\n ResetMode2[\"MERGE\"] = \"merge\";\n ResetMode2[\"KEEP\"] = \"keep\";\n return ResetMode2;\n })(ResetMode || {});\n validResetModes = asStringArray(Object.values(ResetMode));\n }\n});\n\n// src/lib/git-logger.ts\nimport debug from \"debug\";\nfunction createLog() {\n return debug(\"simple-git\");\n}\nfunction prefixedLogger(to, prefix, forward) {\n if (!prefix || !String(prefix).replace(/\\s*/, \"\")) {\n return !forward ? to : (message, ...args) => {\n to(message, ...args);\n forward(message, ...args);\n };\n }\n return (message, ...args) => {\n to(`%s ${message}`, prefix, ...args);\n if (forward) {\n forward(message, ...args);\n }\n };\n}\nfunction childLoggerName(name, childDebugger, { namespace: parentNamespace }) {\n if (typeof name === \"string\") {\n return name;\n }\n const childNamespace = childDebugger && childDebugger.namespace || \"\";\n if (childNamespace.startsWith(parentNamespace)) {\n return childNamespace.substr(parentNamespace.length + 1);\n }\n return childNamespace || parentNamespace;\n}\nfunction createLogger(label, verbose, initialStep, infoDebugger = createLog()) {\n const labelPrefix = label && `[${label}]` || \"\";\n const spawned = [];\n const debugDebugger = typeof verbose === \"string\" ? infoDebugger.extend(verbose) : verbose;\n const key = childLoggerName(filterType(verbose, filterString), debugDebugger, infoDebugger);\n return step(initialStep);\n function sibling(name, initial) {\n return append(\n spawned,\n createLogger(label, key.replace(/^[^:]+/, name), initial, infoDebugger)\n );\n }\n function step(phase) {\n const stepPrefix = phase && `[${phase}]` || \"\";\n const debug2 = debugDebugger && prefixedLogger(debugDebugger, stepPrefix) || NOOP;\n const info = prefixedLogger(infoDebugger, `${labelPrefix} ${stepPrefix}`, debug2);\n return Object.assign(debugDebugger ? debug2 : info, {\n label,\n sibling,\n info,\n step\n });\n }\n}\nvar init_git_logger = __esm({\n \"src/lib/git-logger.ts\"() {\n \"use strict\";\n init_utils();\n debug.formatters.L = (value) => String(filterHasLength(value) ? value.length : \"-\");\n debug.formatters.B = (value) => {\n if (Buffer.isBuffer(value)) {\n return value.toString(\"utf8\");\n }\n return objectToString(value);\n };\n }\n});\n\n// src/lib/runners/tasks-pending-queue.ts\nvar TasksPendingQueue;\nvar init_tasks_pending_queue = __esm({\n \"src/lib/runners/tasks-pending-queue.ts\"() {\n \"use strict\";\n init_git_error();\n init_git_logger();\n TasksPendingQueue = class _TasksPendingQueue {\n constructor(logLabel = \"GitExecutor\") {\n this.logLabel = logLabel;\n this._queue = /* @__PURE__ */ new Map();\n }\n withProgress(task) {\n return this._queue.get(task);\n }\n createProgress(task) {\n const name = _TasksPendingQueue.getName(task.commands[0]);\n const logger = createLogger(this.logLabel, name);\n return {\n task,\n logger,\n name\n };\n }\n push(task) {\n const progress = this.createProgress(task);\n progress.logger(\"Adding task to the queue, commands = %o\", task.commands);\n this._queue.set(task, progress);\n return progress;\n }\n fatal(err) {\n for (const [task, { logger }] of Array.from(this._queue.entries())) {\n if (task === err.task) {\n logger.info(`Failed %o`, err);\n logger(\n `Fatal exception, any as-yet un-started tasks run through this executor will not be attempted`\n );\n } else {\n logger.info(\n `A fatal exception occurred in a previous task, the queue has been purged: %o`,\n err.message\n );\n }\n this.complete(task);\n }\n if (this._queue.size !== 0) {\n throw new Error(`Queue size should be zero after fatal: ${this._queue.size}`);\n }\n }\n complete(task) {\n const progress = this.withProgress(task);\n if (progress) {\n this._queue.delete(task);\n }\n }\n attempt(task) {\n const progress = this.withProgress(task);\n if (!progress) {\n throw new GitError(void 0, \"TasksPendingQueue: attempt called for an unknown task\");\n }\n progress.logger(\"Starting task\");\n return progress;\n }\n static getName(name = \"empty\") {\n return `task:${name}:${++_TasksPendingQueue.counter}`;\n }\n static {\n this.counter = 0;\n }\n };\n }\n});\n\n// src/lib/runners/git-executor-chain.ts\nimport { spawn } from \"child_process\";\nfunction pluginContext(task, commands) {\n return {\n method: first(task.commands) || \"\",\n commands\n };\n}\nfunction onErrorReceived(target, logger) {\n return (err) => {\n logger(`[ERROR] child process exception %o`, err);\n target.push(Buffer.from(String(err.stack), \"ascii\"));\n };\n}\nfunction onDataReceived(target, name, logger, output) {\n return (buffer) => {\n logger(`%s received %L bytes`, name, buffer);\n output(`%B`, buffer);\n target.push(buffer);\n };\n}\nvar GitExecutorChain;\nvar init_git_executor_chain = __esm({\n \"src/lib/runners/git-executor-chain.ts\"() {\n \"use strict\";\n init_git_error();\n init_task();\n init_utils();\n init_tasks_pending_queue();\n GitExecutorChain = class {\n constructor(_executor, _scheduler, _plugins) {\n this._executor = _executor;\n this._scheduler = _scheduler;\n this._plugins = _plugins;\n this._chain = Promise.resolve();\n this._queue = new TasksPendingQueue();\n }\n get cwd() {\n return this._cwd || this._executor.cwd;\n }\n set cwd(cwd) {\n this._cwd = cwd;\n }\n get env() {\n return this._executor.env;\n }\n get outputHandler() {\n return this._executor.outputHandler;\n }\n chain() {\n return this;\n }\n push(task) {\n this._queue.push(task);\n return this._chain = this._chain.then(() => this.attemptTask(task));\n }\n async attemptTask(task) {\n const onScheduleComplete = await this._scheduler.next();\n const onQueueComplete = () => this._queue.complete(task);\n try {\n const { logger } = this._queue.attempt(task);\n return await (isEmptyTask(task) ? this.attemptEmptyTask(task, logger) : this.attemptRemoteTask(task, logger));\n } catch (e) {\n throw this.onFatalException(task, e);\n } finally {\n onQueueComplete();\n onScheduleComplete();\n }\n }\n onFatalException(task, e) {\n const gitError = e instanceof GitError ? Object.assign(e, { task }) : new GitError(task, e && String(e));\n this._chain = Promise.resolve();\n this._queue.fatal(gitError);\n return gitError;\n }\n async attemptRemoteTask(task, logger) {\n const binary = this._plugins.exec(\"spawn.binary\", \"\", pluginContext(task, task.commands));\n const args = this._plugins.exec(\n \"spawn.args\",\n [...task.commands],\n pluginContext(task, task.commands)\n );\n const raw = await this.gitResponse(\n task,\n binary,\n args,\n this.outputHandler,\n logger.step(\"SPAWN\")\n );\n const outputStreams = await this.handleTaskData(task, args, raw, logger.step(\"HANDLE\"));\n logger(`passing response to task's parser as a %s`, task.format);\n if (isBufferTask(task)) {\n return callTaskParser(task.parser, outputStreams);\n }\n return callTaskParser(task.parser, outputStreams.asStrings());\n }\n async attemptEmptyTask(task, logger) {\n logger(`empty task bypassing child process to call to task's parser`);\n return task.parser(this);\n }\n handleTaskData(task, args, result, logger) {\n const { exitCode, rejection, stdOut, stdErr } = result;\n return new Promise((done, fail) => {\n logger(`Preparing to handle process response exitCode=%d stdOut=`, exitCode);\n const { error } = this._plugins.exec(\n \"task.error\",\n { error: rejection },\n {\n ...pluginContext(task, args),\n ...result\n }\n );\n if (error && task.onError) {\n logger.info(`exitCode=%s handling with custom error handler`);\n return task.onError(\n result,\n error,\n (newStdOut) => {\n logger.info(`custom error handler treated as success`);\n logger(`custom error returned a %s`, objectToString(newStdOut));\n done(\n new GitOutputStreams(\n Array.isArray(newStdOut) ? Buffer.concat(newStdOut) : newStdOut,\n Buffer.concat(stdErr)\n )\n );\n },\n fail\n );\n }\n if (error) {\n logger.info(\n `handling as error: exitCode=%s stdErr=%s rejection=%o`,\n exitCode,\n stdErr.length,\n rejection\n );\n return fail(error);\n }\n logger.info(`retrieving task output complete`);\n done(new GitOutputStreams(Buffer.concat(stdOut), Buffer.concat(stdErr)));\n });\n }\n async gitResponse(task, command, args, outputHandler, logger) {\n const outputLogger = logger.sibling(\"output\");\n const spawnOptions = this._plugins.exec(\n \"spawn.options\",\n {\n cwd: this.cwd,\n env: this.env,\n windowsHide: true\n },\n pluginContext(task, task.commands)\n );\n return new Promise((done) => {\n const stdOut = [];\n const stdErr = [];\n logger.info(`%s %o`, command, args);\n logger(\"%O\", spawnOptions);\n let rejection = this._beforeSpawn(task, args);\n if (rejection) {\n return done({\n stdOut,\n stdErr,\n exitCode: 9901,\n rejection\n });\n }\n this._plugins.exec(\"spawn.before\", void 0, {\n ...pluginContext(task, args),\n kill(reason) {\n rejection = reason || rejection;\n }\n });\n const spawned = spawn(command, args, spawnOptions);\n spawned.stdout.on(\n \"data\",\n onDataReceived(stdOut, \"stdOut\", logger, outputLogger.step(\"stdOut\"))\n );\n spawned.stderr.on(\n \"data\",\n onDataReceived(stdErr, \"stdErr\", logger, outputLogger.step(\"stdErr\"))\n );\n spawned.on(\"error\", onErrorReceived(stdErr, logger));\n if (outputHandler) {\n logger(`Passing child process stdOut/stdErr to custom outputHandler`);\n outputHandler(command, spawned.stdout, spawned.stderr, [...args]);\n }\n this._plugins.exec(\"spawn.after\", void 0, {\n ...pluginContext(task, args),\n spawned,\n close(exitCode, reason) {\n done({\n stdOut,\n stdErr,\n exitCode,\n rejection: rejection || reason\n });\n },\n kill(reason) {\n if (spawned.killed) {\n return;\n }\n rejection = reason;\n spawned.kill(\"SIGINT\");\n }\n });\n });\n }\n _beforeSpawn(task, args) {\n let rejection;\n this._plugins.exec(\"spawn.before\", void 0, {\n ...pluginContext(task, args),\n kill(reason) {\n rejection = reason || rejection;\n }\n });\n return rejection;\n }\n };\n }\n});\n\n// src/lib/runners/git-executor.ts\nvar git_executor_exports = {};\n__export(git_executor_exports, {\n GitExecutor: () => GitExecutor\n});\nvar GitExecutor;\nvar init_git_executor = __esm({\n \"src/lib/runners/git-executor.ts\"() {\n \"use strict\";\n init_git_executor_chain();\n GitExecutor = class {\n constructor(cwd, _scheduler, _plugins) {\n this.cwd = cwd;\n this._scheduler = _scheduler;\n this._plugins = _plugins;\n this._chain = new GitExecutorChain(this, this._scheduler, this._plugins);\n }\n chain() {\n return new GitExecutorChain(this, this._scheduler, this._plugins);\n }\n push(task) {\n return this._chain.push(task);\n }\n };\n }\n});\n\n// src/lib/task-callback.ts\nfunction taskCallback(task, response, callback = NOOP) {\n const onSuccess = (data) => {\n callback(null, data);\n };\n const onError2 = (err) => {\n if (err?.task === task) {\n callback(\n err instanceof GitResponseError ? addDeprecationNoticeToError(err) : err,\n void 0\n );\n }\n };\n response.then(onSuccess, onError2);\n}\nfunction addDeprecationNoticeToError(err) {\n let log = (name) => {\n console.warn(\n `simple-git deprecation notice: accessing GitResponseError.${name} should be GitResponseError.git.${name}, this will no longer be available in version 3`\n );\n log = NOOP;\n };\n return Object.create(err, Object.getOwnPropertyNames(err.git).reduce(descriptorReducer, {}));\n function descriptorReducer(all, name) {\n if (name in err) {\n return all;\n }\n all[name] = {\n enumerable: false,\n configurable: false,\n get() {\n log(name);\n return err.git[name];\n }\n };\n return all;\n }\n}\nvar init_task_callback = __esm({\n \"src/lib/task-callback.ts\"() {\n \"use strict\";\n init_git_response_error();\n init_utils();\n }\n});\n\n// src/lib/tasks/change-working-directory.ts\nfunction changeWorkingDirectoryTask(directory, root) {\n return adhocExecTask((instance) => {\n if (!folderExists(directory)) {\n throw new Error(`Git.cwd: cannot change to non-directory \"${directory}\"`);\n }\n return (root || instance).cwd = directory;\n });\n}\nvar init_change_working_directory = __esm({\n \"src/lib/tasks/change-working-directory.ts\"() {\n \"use strict\";\n init_utils();\n init_task();\n }\n});\n\n// src/lib/tasks/checkout.ts\nfunction checkoutTask(args) {\n const commands = [\"checkout\", ...args];\n if (commands[1] === \"-b\" && commands.includes(\"-B\")) {\n commands[1] = remove(commands, \"-B\");\n }\n return straightThroughStringTask(commands);\n}\nfunction checkout_default() {\n return {\n checkout() {\n return this._runTask(\n checkoutTask(getTrailingOptions(arguments, 1)),\n trailingFunctionArgument(arguments)\n );\n },\n checkoutBranch(branchName, startPoint) {\n return this._runTask(\n checkoutTask([\"-b\", branchName, startPoint, ...getTrailingOptions(arguments)]),\n trailingFunctionArgument(arguments)\n );\n },\n checkoutLocalBranch(branchName) {\n return this._runTask(\n checkoutTask([\"-b\", branchName, ...getTrailingOptions(arguments)]),\n trailingFunctionArgument(arguments)\n );\n }\n };\n}\nvar init_checkout = __esm({\n \"src/lib/tasks/checkout.ts\"() {\n \"use strict\";\n init_utils();\n init_task();\n }\n});\n\n// src/lib/tasks/count-objects.ts\nfunction countObjectsResponse() {\n return {\n count: 0,\n garbage: 0,\n inPack: 0,\n packs: 0,\n prunePackable: 0,\n size: 0,\n sizeGarbage: 0,\n sizePack: 0\n };\n}\nfunction count_objects_default() {\n return {\n countObjects() {\n return this._runTask({\n commands: [\"count-objects\", \"--verbose\"],\n format: \"utf-8\",\n parser(stdOut) {\n return parseStringResponse(countObjectsResponse(), [parser2], stdOut);\n }\n });\n }\n };\n}\nvar parser2;\nvar init_count_objects = __esm({\n \"src/lib/tasks/count-objects.ts\"() {\n \"use strict\";\n init_utils();\n parser2 = new LineParser(\n /([a-z-]+): (\\d+)$/,\n (result, [key, value]) => {\n const property = asCamelCase(key);\n if (Object.hasOwn(result, property)) {\n result[property] = asNumber(value);\n }\n }\n );\n }\n});\n\n// src/lib/parsers/parse-commit.ts\nfunction parseCommitResult(stdOut) {\n const result = {\n author: null,\n branch: \"\",\n commit: \"\",\n root: false,\n summary: {\n changes: 0,\n insertions: 0,\n deletions: 0\n }\n };\n return parseStringResponse(result, parsers, stdOut);\n}\nvar parsers;\nvar init_parse_commit = __esm({\n \"src/lib/parsers/parse-commit.ts\"() {\n \"use strict\";\n init_utils();\n parsers = [\n new LineParser(/^\\[([^\\s]+)( \\([^)]+\\))? ([^\\]]+)/, (result, [branch, root, commit]) => {\n result.branch = branch;\n result.commit = commit;\n result.root = !!root;\n }),\n new LineParser(/\\s*Author:\\s(.+)/i, (result, [author]) => {\n const parts = author.split(\"<\");\n const email = parts.pop();\n if (!email || !email.includes(\"@\")) {\n return;\n }\n result.author = {\n email: email.substr(0, email.length - 1),\n name: parts.join(\"<\").trim()\n };\n }),\n new LineParser(\n /(\\d+)[^,]*(?:,\\s*(\\d+)[^,]*)(?:,\\s*(\\d+))/g,\n (result, [changes, insertions, deletions]) => {\n result.summary.changes = parseInt(changes, 10) || 0;\n result.summary.insertions = parseInt(insertions, 10) || 0;\n result.summary.deletions = parseInt(deletions, 10) || 0;\n }\n ),\n new LineParser(\n /^(\\d+)[^,]*(?:,\\s*(\\d+)[^(]+\\(([+-]))?/,\n (result, [changes, lines, direction]) => {\n result.summary.changes = parseInt(changes, 10) || 0;\n const count = parseInt(lines, 10) || 0;\n if (direction === \"-\") {\n result.summary.deletions = count;\n } else if (direction === \"+\") {\n result.summary.insertions = count;\n }\n }\n )\n ];\n }\n});\n\n// src/lib/tasks/commit.ts\nfunction commitTask(message, files, customArgs) {\n const commands = [\n \"-c\",\n \"core.abbrev=40\",\n \"commit\",\n ...prefixedArray(message, \"-m\"),\n ...files,\n ...customArgs\n ];\n return {\n commands,\n format: \"utf-8\",\n parser: parseCommitResult\n };\n}\nfunction commit_default() {\n return {\n commit(message, ...rest) {\n const next = trailingFunctionArgument(arguments);\n const task = rejectDeprecatedSignatures(message) || commitTask(\n asArray(message),\n asArray(filterType(rest[0], filterStringOrStringArray, [])),\n [\n ...asStringArray(filterType(rest[1], filterArray, [])),\n ...getTrailingOptions(arguments, 0, true)\n ]\n );\n return this._runTask(task, next);\n }\n };\n function rejectDeprecatedSignatures(message) {\n return !filterStringOrStringArray(message) && configurationErrorTask(\n `git.commit: requires the commit message to be supplied as a string/string[]`\n );\n }\n}\nvar init_commit = __esm({\n \"src/lib/tasks/commit.ts\"() {\n \"use strict\";\n init_parse_commit();\n init_utils();\n init_task();\n }\n});\n\n// src/lib/tasks/first-commit.ts\nfunction first_commit_default() {\n return {\n firstCommit() {\n return this._runTask(\n straightThroughStringTask([\"rev-list\", \"--max-parents=0\", \"HEAD\"], true),\n trailingFunctionArgument(arguments)\n );\n }\n };\n}\nvar init_first_commit = __esm({\n \"src/lib/tasks/first-commit.ts\"() {\n \"use strict\";\n init_utils();\n init_task();\n }\n});\n\n// src/lib/tasks/hash-object.ts\nfunction hashObjectTask(filePath, write) {\n const commands = [\"hash-object\", filePath];\n if (write) {\n commands.push(\"-w\");\n }\n return straightThroughStringTask(commands, true);\n}\nvar init_hash_object = __esm({\n \"src/lib/tasks/hash-object.ts\"() {\n \"use strict\";\n init_task();\n }\n});\n\n// src/lib/responses/InitSummary.ts\nfunction parseInit(bare, path, text) {\n const response = String(text).trim();\n let result;\n if (result = initResponseRegex.exec(response)) {\n return new InitSummary(bare, path, false, result[1]);\n }\n if (result = reInitResponseRegex.exec(response)) {\n return new InitSummary(bare, path, true, result[1]);\n }\n let gitDir = \"\";\n const tokens = response.split(\" \");\n while (tokens.length) {\n const token = tokens.shift();\n if (token === \"in\") {\n gitDir = tokens.join(\" \");\n break;\n }\n }\n return new InitSummary(bare, path, /^re/i.test(response), gitDir);\n}\nvar InitSummary, initResponseRegex, reInitResponseRegex;\nvar init_InitSummary = __esm({\n \"src/lib/responses/InitSummary.ts\"() {\n \"use strict\";\n InitSummary = class {\n constructor(bare, path, existing, gitDir) {\n this.bare = bare;\n this.path = path;\n this.existing = existing;\n this.gitDir = gitDir;\n }\n };\n initResponseRegex = /^Init.+ repository in (.+)$/;\n reInitResponseRegex = /^Rein.+ in (.+)$/;\n }\n});\n\n// src/lib/tasks/init.ts\nfunction hasBareCommand(command) {\n return command.includes(bareCommand);\n}\nfunction initTask(bare = false, path, customArgs) {\n const commands = [\"init\", ...customArgs];\n if (bare && !hasBareCommand(commands)) {\n commands.splice(1, 0, bareCommand);\n }\n return {\n commands,\n format: \"utf-8\",\n parser(text) {\n return parseInit(commands.includes(\"--bare\"), path, text);\n }\n };\n}\nvar bareCommand;\nvar init_init = __esm({\n \"src/lib/tasks/init.ts\"() {\n \"use strict\";\n init_InitSummary();\n bareCommand = \"--bare\";\n }\n});\n\n// src/lib/args/log-format.ts\nfunction logFormatFromCommand(customArgs) {\n for (let i = 0; i < customArgs.length; i++) {\n const format = logFormatRegex.exec(customArgs[i]);\n if (format) {\n return `--${format[1]}`;\n }\n }\n return \"\" /* NONE */;\n}\nfunction isLogFormat(customArg) {\n return logFormatRegex.test(customArg);\n}\nvar logFormatRegex;\nvar init_log_format = __esm({\n \"src/lib/args/log-format.ts\"() {\n \"use strict\";\n logFormatRegex = /^--(stat|numstat|name-only|name-status)(=|$)/;\n }\n});\n\n// src/lib/responses/DiffSummary.ts\nvar DiffSummary;\nvar init_DiffSummary = __esm({\n \"src/lib/responses/DiffSummary.ts\"() {\n \"use strict\";\n DiffSummary = class {\n constructor() {\n this.changed = 0;\n this.deletions = 0;\n this.insertions = 0;\n this.files = [];\n }\n };\n }\n});\n\n// src/lib/parsers/parse-diff-summary.ts\nfunction getDiffParser(format = \"\" /* NONE */) {\n const parser4 = diffSummaryParsers[format];\n return (stdOut) => parseStringResponse(new DiffSummary(), parser4, stdOut, false);\n}\nvar statParser, numStatParser, nameOnlyParser, nameStatusParser, diffSummaryParsers;\nvar init_parse_diff_summary = __esm({\n \"src/lib/parsers/parse-diff-summary.ts\"() {\n \"use strict\";\n init_log_format();\n init_DiffSummary();\n init_diff_name_status();\n init_utils();\n statParser = [\n new LineParser(\n /^(.+)\\s+\\|\\s+(\\d+)(\\s+[+\\-]+)?$/,\n (result, [file, changes, alterations = \"\"]) => {\n result.files.push({\n file: file.trim(),\n changes: asNumber(changes),\n insertions: alterations.replace(/[^+]/g, \"\").length,\n deletions: alterations.replace(/[^-]/g, \"\").length,\n binary: false\n });\n }\n ),\n new LineParser(\n /^(.+) \\|\\s+Bin ([0-9.]+) -> ([0-9.]+) ([a-z]+)/,\n (result, [file, before, after]) => {\n result.files.push({\n file: file.trim(),\n before: asNumber(before),\n after: asNumber(after),\n binary: true\n });\n }\n ),\n new LineParser(\n /(\\d+) files? changed\\s*((?:, \\d+ [^,]+){0,2})/,\n (result, [changed, summary]) => {\n const inserted = /(\\d+) i/.exec(summary);\n const deleted = /(\\d+) d/.exec(summary);\n result.changed = asNumber(changed);\n result.insertions = asNumber(inserted?.[1]);\n result.deletions = asNumber(deleted?.[1]);\n }\n )\n ];\n numStatParser = [\n new LineParser(\n /(\\d+)\\t(\\d+)\\t(.+)$/,\n (result, [changesInsert, changesDelete, file]) => {\n const insertions = asNumber(changesInsert);\n const deletions = asNumber(changesDelete);\n result.changed++;\n result.insertions += insertions;\n result.deletions += deletions;\n result.files.push({\n file,\n changes: insertions + deletions,\n insertions,\n deletions,\n binary: false\n });\n }\n ),\n new LineParser(/-\\t-\\t(.+)$/, (result, [file]) => {\n result.changed++;\n result.files.push({\n file,\n after: 0,\n before: 0,\n binary: true\n });\n })\n ];\n nameOnlyParser = [\n new LineParser(/(.+)$/, (result, [file]) => {\n result.changed++;\n result.files.push({\n file,\n changes: 0,\n insertions: 0,\n deletions: 0,\n binary: false\n });\n })\n ];\n nameStatusParser = [\n new LineParser(\n /([ACDMRTUXB])([0-9]{0,3})\\t(.[^\\t]*)(\\t(.[^\\t]*))?$/,\n (result, [status, similarity, from, _to, to]) => {\n result.changed++;\n result.files.push({\n file: to ?? from,\n changes: 0,\n insertions: 0,\n deletions: 0,\n binary: false,\n status: orVoid(isDiffNameStatus(status) && status),\n from: orVoid(!!to && from !== to && from),\n similarity: asNumber(similarity)\n });\n }\n )\n ];\n diffSummaryParsers = {\n [\"\" /* NONE */]: statParser,\n [\"--stat\" /* STAT */]: statParser,\n [\"--numstat\" /* NUM_STAT */]: numStatParser,\n [\"--name-status\" /* NAME_STATUS */]: nameStatusParser,\n [\"--name-only\" /* NAME_ONLY */]: nameOnlyParser\n };\n }\n});\n\n// src/lib/parsers/parse-list-log-summary.ts\nfunction lineBuilder(tokens, fields) {\n return fields.reduce(\n (line, field, index) => {\n line[field] = tokens[index] || \"\";\n return line;\n },\n /* @__PURE__ */ Object.create({ diff: null })\n );\n}\nfunction createListLogSummaryParser(splitter = SPLITTER, fields = defaultFieldNames, logFormat = \"\" /* NONE */) {\n const parseDiffResult = getDiffParser(logFormat);\n return function(stdOut) {\n const all = toLinesWithContent(\n stdOut.trim(),\n false,\n START_BOUNDARY\n ).map(function(item) {\n const lineDetail = item.split(COMMIT_BOUNDARY);\n const listLogLine = lineBuilder(lineDetail[0].split(splitter), fields);\n if (lineDetail.length > 1 && !!lineDetail[1].trim()) {\n listLogLine.diff = parseDiffResult(lineDetail[1]);\n }\n return listLogLine;\n });\n return {\n all,\n latest: all.length && all[0] || null,\n total: all.length\n };\n };\n}\nvar START_BOUNDARY, COMMIT_BOUNDARY, SPLITTER, defaultFieldNames;\nvar init_parse_list_log_summary = __esm({\n \"src/lib/parsers/parse-list-log-summary.ts\"() {\n \"use strict\";\n init_utils();\n init_parse_diff_summary();\n init_log_format();\n START_BOUNDARY = \"\\xF2\\xF2\\xF2\\xF2\\xF2\\xF2 \";\n COMMIT_BOUNDARY = \" \\xF2\\xF2\";\n SPLITTER = \" \\xF2 \";\n defaultFieldNames = [\"hash\", \"date\", \"message\", \"refs\", \"author_name\", \"author_email\"];\n }\n});\n\n// src/lib/tasks/diff.ts\nvar diff_exports = {};\n__export(diff_exports, {\n diffSummaryTask: () => diffSummaryTask,\n validateLogFormatConfig: () => validateLogFormatConfig\n});\nfunction diffSummaryTask(customArgs) {\n let logFormat = logFormatFromCommand(customArgs);\n const commands = [\"diff\"];\n if (logFormat === \"\" /* NONE */) {\n logFormat = \"--stat\" /* STAT */;\n commands.push(\"--stat=4096\");\n }\n commands.push(...customArgs);\n return validateLogFormatConfig(commands) || {\n commands,\n format: \"utf-8\",\n parser: getDiffParser(logFormat)\n };\n}\nfunction validateLogFormatConfig(customArgs) {\n const flags = customArgs.filter(isLogFormat);\n if (flags.length > 1) {\n return configurationErrorTask(\n `Summary flags are mutually exclusive - pick one of ${flags.join(\",\")}`\n );\n }\n if (flags.length && customArgs.includes(\"-z\")) {\n return configurationErrorTask(\n `Summary flag ${flags} parsing is not compatible with null termination option '-z'`\n );\n }\n}\nvar init_diff = __esm({\n \"src/lib/tasks/diff.ts\"() {\n \"use strict\";\n init_log_format();\n init_parse_diff_summary();\n init_task();\n }\n});\n\n// src/lib/tasks/log.ts\nfunction prettyFormat(format, splitter) {\n const fields = [];\n const formatStr = [];\n Object.keys(format).forEach((field) => {\n fields.push(field);\n formatStr.push(String(format[field]));\n });\n return [fields, formatStr.join(splitter)];\n}\nfunction userOptions(input) {\n return Object.keys(input).reduce((out, key) => {\n if (!(key in excludeOptions)) {\n out[key] = input[key];\n }\n return out;\n }, {});\n}\nfunction parseLogOptions(opt = {}, customArgs = []) {\n const splitter = filterType(opt.splitter, filterString, SPLITTER);\n const format = filterPlainObject(opt.format) ? opt.format : {\n hash: \"%H\",\n date: opt.strictDate === false ? \"%ai\" : \"%aI\",\n message: \"%s\",\n refs: \"%D\",\n body: opt.multiLine ? \"%B\" : \"%b\",\n author_name: opt.mailMap !== false ? \"%aN\" : \"%an\",\n author_email: opt.mailMap !== false ? \"%aE\" : \"%ae\"\n };\n const [fields, formatStr] = prettyFormat(format, splitter);\n const suffix = [];\n const command = [\n `--pretty=format:${START_BOUNDARY}${formatStr}${COMMIT_BOUNDARY}`,\n ...customArgs\n ];\n const maxCount = opt.n || opt[\"max-count\"] || opt.maxCount;\n if (maxCount) {\n command.push(`--max-count=${maxCount}`);\n }\n if (opt.from || opt.to) {\n const rangeOperator = opt.symmetric !== false ? \"...\" : \"..\";\n suffix.push(`${opt.from || \"\"}${rangeOperator}${opt.to || \"\"}`);\n }\n if (filterString(opt.file)) {\n command.push(\"--follow\", pathspec(opt.file));\n }\n appendTaskOptions(userOptions(opt), command);\n return {\n fields,\n splitter,\n commands: [...command, ...suffix]\n };\n}\nfunction logTask(splitter, fields, customArgs) {\n const parser4 = createListLogSummaryParser(splitter, fields, logFormatFromCommand(customArgs));\n return {\n commands: [\"log\", ...customArgs],\n format: \"utf-8\",\n parser: parser4\n };\n}\nfunction log_default() {\n return {\n log(...rest) {\n const next = trailingFunctionArgument(arguments);\n const options = parseLogOptions(\n trailingOptionsArgument(arguments),\n asStringArray(filterType(arguments[0], filterArray, []))\n );\n const task = rejectDeprecatedSignatures(...rest) || validateLogFormatConfig(options.commands) || createLogTask(options);\n return this._runTask(task, next);\n }\n };\n function createLogTask(options) {\n return logTask(options.splitter, options.fields, options.commands);\n }\n function rejectDeprecatedSignatures(from, to) {\n return filterString(from) && filterString(to) && configurationErrorTask(\n `git.log(string, string) should be replaced with git.log({ from: string, to: string })`\n );\n }\n}\nvar excludeOptions;\nvar init_log = __esm({\n \"src/lib/tasks/log.ts\"() {\n \"use strict\";\n init_log_format();\n init_pathspec();\n init_parse_list_log_summary();\n init_utils();\n init_task();\n init_diff();\n excludeOptions = /* @__PURE__ */ ((excludeOptions2) => {\n excludeOptions2[excludeOptions2[\"--pretty\"] = 0] = \"--pretty\";\n excludeOptions2[excludeOptions2[\"max-count\"] = 1] = \"max-count\";\n excludeOptions2[excludeOptions2[\"maxCount\"] = 2] = \"maxCount\";\n excludeOptions2[excludeOptions2[\"n\"] = 3] = \"n\";\n excludeOptions2[excludeOptions2[\"file\"] = 4] = \"file\";\n excludeOptions2[excludeOptions2[\"format\"] = 5] = \"format\";\n excludeOptions2[excludeOptions2[\"from\"] = 6] = \"from\";\n excludeOptions2[excludeOptions2[\"to\"] = 7] = \"to\";\n excludeOptions2[excludeOptions2[\"splitter\"] = 8] = \"splitter\";\n excludeOptions2[excludeOptions2[\"symmetric\"] = 9] = \"symmetric\";\n excludeOptions2[excludeOptions2[\"mailMap\"] = 10] = \"mailMap\";\n excludeOptions2[excludeOptions2[\"multiLine\"] = 11] = \"multiLine\";\n excludeOptions2[excludeOptions2[\"strictDate\"] = 12] = \"strictDate\";\n return excludeOptions2;\n })(excludeOptions || {});\n }\n});\n\n// src/lib/responses/MergeSummary.ts\nvar MergeSummaryConflict, MergeSummaryDetail;\nvar init_MergeSummary = __esm({\n \"src/lib/responses/MergeSummary.ts\"() {\n \"use strict\";\n MergeSummaryConflict = class {\n constructor(reason, file = null, meta) {\n this.reason = reason;\n this.file = file;\n this.meta = meta;\n }\n toString() {\n return `${this.file}:${this.reason}`;\n }\n };\n MergeSummaryDetail = class {\n constructor() {\n this.conflicts = [];\n this.merges = [];\n this.result = \"success\";\n }\n get failed() {\n return this.conflicts.length > 0;\n }\n get reason() {\n return this.result;\n }\n toString() {\n if (this.conflicts.length) {\n return `CONFLICTS: ${this.conflicts.join(\", \")}`;\n }\n return \"OK\";\n }\n };\n }\n});\n\n// src/lib/responses/PullSummary.ts\nvar PullSummary, PullFailedSummary;\nvar init_PullSummary = __esm({\n \"src/lib/responses/PullSummary.ts\"() {\n \"use strict\";\n PullSummary = class {\n constructor() {\n this.remoteMessages = {\n all: []\n };\n this.created = [];\n this.deleted = [];\n this.files = [];\n this.deletions = {};\n this.insertions = {};\n this.summary = {\n changes: 0,\n deletions: 0,\n insertions: 0\n };\n }\n };\n PullFailedSummary = class {\n constructor() {\n this.remote = \"\";\n this.hash = {\n local: \"\",\n remote: \"\"\n };\n this.branch = {\n local: \"\",\n remote: \"\"\n };\n this.message = \"\";\n }\n toString() {\n return this.message;\n }\n };\n }\n});\n\n// src/lib/parsers/parse-remote-objects.ts\nfunction objectEnumerationResult(remoteMessages) {\n return remoteMessages.objects = remoteMessages.objects || {\n compressing: 0,\n counting: 0,\n enumerating: 0,\n packReused: 0,\n reused: { count: 0, delta: 0 },\n total: { count: 0, delta: 0 }\n };\n}\nfunction asObjectCount(source) {\n const count = /^\\s*(\\d+)/.exec(source);\n const delta = /delta (\\d+)/i.exec(source);\n return {\n count: asNumber(count && count[1] || \"0\"),\n delta: asNumber(delta && delta[1] || \"0\")\n };\n}\nvar remoteMessagesObjectParsers;\nvar init_parse_remote_objects = __esm({\n \"src/lib/parsers/parse-remote-objects.ts\"() {\n \"use strict\";\n init_utils();\n remoteMessagesObjectParsers = [\n new RemoteLineParser(\n /^remote:\\s*(enumerating|counting|compressing) objects: (\\d+),/i,\n (result, [action, count]) => {\n const key = action.toLowerCase();\n const enumeration = objectEnumerationResult(result.remoteMessages);\n Object.assign(enumeration, { [key]: asNumber(count) });\n }\n ),\n new RemoteLineParser(\n /^remote:\\s*(enumerating|counting|compressing) objects: \\d+% \\(\\d+\\/(\\d+)\\),/i,\n (result, [action, count]) => {\n const key = action.toLowerCase();\n const enumeration = objectEnumerationResult(result.remoteMessages);\n Object.assign(enumeration, { [key]: asNumber(count) });\n }\n ),\n new RemoteLineParser(\n /total ([^,]+), reused ([^,]+), pack-reused (\\d+)/i,\n (result, [total, reused, packReused]) => {\n const objects = objectEnumerationResult(result.remoteMessages);\n objects.total = asObjectCount(total);\n objects.reused = asObjectCount(reused);\n objects.packReused = asNumber(packReused);\n }\n )\n ];\n }\n});\n\n// src/lib/parsers/parse-remote-messages.ts\nfunction parseRemoteMessages(_stdOut, stdErr) {\n return parseStringResponse({ remoteMessages: new RemoteMessageSummary() }, parsers2, stdErr);\n}\nvar parsers2, RemoteMessageSummary;\nvar init_parse_remote_messages = __esm({\n \"src/lib/parsers/parse-remote-messages.ts\"() {\n \"use strict\";\n init_utils();\n init_parse_remote_objects();\n parsers2 = [\n new RemoteLineParser(/^remote:\\s*(.+)$/, (result, [text]) => {\n result.remoteMessages.all.push(text.trim());\n return false;\n }),\n ...remoteMessagesObjectParsers,\n new RemoteLineParser(\n [/create a (?:pull|merge) request/i, /\\s(https?:\\/\\/\\S+)$/],\n (result, [pullRequestUrl]) => {\n result.remoteMessages.pullRequestUrl = pullRequestUrl;\n }\n ),\n new RemoteLineParser(\n [/found (\\d+) vulnerabilities.+\\(([^)]+)\\)/i, /\\s(https?:\\/\\/\\S+)$/],\n (result, [count, summary, url]) => {\n result.remoteMessages.vulnerabilities = {\n count: asNumber(count),\n summary,\n url\n };\n }\n )\n ];\n RemoteMessageSummary = class {\n constructor() {\n this.all = [];\n }\n };\n }\n});\n\n// src/lib/parsers/parse-pull.ts\nfunction parsePullErrorResult(stdOut, stdErr) {\n const pullError = parseStringResponse(new PullFailedSummary(), errorParsers, [stdOut, stdErr]);\n return pullError.message && pullError;\n}\nvar FILE_UPDATE_REGEX, SUMMARY_REGEX, ACTION_REGEX, parsers3, errorParsers, parsePullDetail, parsePullResult;\nvar init_parse_pull = __esm({\n \"src/lib/parsers/parse-pull.ts\"() {\n \"use strict\";\n init_PullSummary();\n init_utils();\n init_parse_remote_messages();\n FILE_UPDATE_REGEX = /^\\s*(.+?)\\s+\\|\\s+\\d+\\s*(\\+*)(-*)/;\n SUMMARY_REGEX = /(\\d+)\\D+((\\d+)\\D+\\(\\+\\))?(\\D+(\\d+)\\D+\\(-\\))?/;\n ACTION_REGEX = /^(create|delete) mode \\d+ (.+)/;\n parsers3 = [\n new LineParser(FILE_UPDATE_REGEX, (result, [file, insertions, deletions]) => {\n result.files.push(file);\n if (insertions) {\n result.insertions[file] = insertions.length;\n }\n if (deletions) {\n result.deletions[file] = deletions.length;\n }\n }),\n new LineParser(SUMMARY_REGEX, (result, [changes, , insertions, , deletions]) => {\n if (insertions !== void 0 || deletions !== void 0) {\n result.summary.changes = +changes || 0;\n result.summary.insertions = +insertions || 0;\n result.summary.deletions = +deletions || 0;\n return true;\n }\n return false;\n }),\n new LineParser(ACTION_REGEX, (result, [action, file]) => {\n append(result.files, file);\n append(action === \"create\" ? result.created : result.deleted, file);\n })\n ];\n errorParsers = [\n new LineParser(/^from\\s(.+)$/i, (result, [remote]) => void (result.remote = remote)),\n new LineParser(/^fatal:\\s(.+)$/, (result, [message]) => void (result.message = message)),\n new LineParser(\n /([a-z0-9]+)\\.\\.([a-z0-9]+)\\s+(\\S+)\\s+->\\s+(\\S+)$/,\n (result, [hashLocal, hashRemote, branchLocal, branchRemote]) => {\n result.branch.local = branchLocal;\n result.hash.local = hashLocal;\n result.branch.remote = branchRemote;\n result.hash.remote = hashRemote;\n }\n )\n ];\n parsePullDetail = (stdOut, stdErr) => {\n return parseStringResponse(new PullSummary(), parsers3, [stdOut, stdErr]);\n };\n parsePullResult = (stdOut, stdErr) => {\n return Object.assign(\n new PullSummary(),\n parsePullDetail(stdOut, stdErr),\n parseRemoteMessages(stdOut, stdErr)\n );\n };\n }\n});\n\n// src/lib/parsers/parse-merge.ts\nvar parsers4, parseMergeResult, parseMergeDetail;\nvar init_parse_merge = __esm({\n \"src/lib/parsers/parse-merge.ts\"() {\n \"use strict\";\n init_MergeSummary();\n init_utils();\n init_parse_pull();\n parsers4 = [\n new LineParser(/^Auto-merging\\s+(.+)$/, (summary, [autoMerge]) => {\n summary.merges.push(autoMerge);\n }),\n new LineParser(/^CONFLICT\\s+\\((.+)\\): Merge conflict in (.+)$/, (summary, [reason, file]) => {\n summary.conflicts.push(new MergeSummaryConflict(reason, file));\n }),\n new LineParser(\n /^CONFLICT\\s+\\((.+\\/delete)\\): (.+) deleted in (.+) and/,\n (summary, [reason, file, deleteRef]) => {\n summary.conflicts.push(new MergeSummaryConflict(reason, file, { deleteRef }));\n }\n ),\n new LineParser(/^CONFLICT\\s+\\((.+)\\):/, (summary, [reason]) => {\n summary.conflicts.push(new MergeSummaryConflict(reason, null));\n }),\n new LineParser(/^Automatic merge failed;\\s+(.+)$/, (summary, [result]) => {\n summary.result = result;\n })\n ];\n parseMergeResult = (stdOut, stdErr) => {\n return Object.assign(parseMergeDetail(stdOut, stdErr), parsePullResult(stdOut, stdErr));\n };\n parseMergeDetail = (stdOut) => {\n return parseStringResponse(new MergeSummaryDetail(), parsers4, stdOut);\n };\n }\n});\n\n// src/lib/tasks/merge.ts\nfunction mergeTask(customArgs) {\n if (!customArgs.length) {\n return configurationErrorTask(\"Git.merge requires at least one option\");\n }\n return {\n commands: [\"merge\", ...customArgs],\n format: \"utf-8\",\n parser(stdOut, stdErr) {\n const merge = parseMergeResult(stdOut, stdErr);\n if (merge.failed) {\n throw new GitResponseError(merge);\n }\n return merge;\n }\n };\n}\nvar init_merge = __esm({\n \"src/lib/tasks/merge.ts\"() {\n \"use strict\";\n init_git_response_error();\n init_parse_merge();\n init_task();\n }\n});\n\n// src/lib/parsers/parse-push.ts\nfunction pushResultPushedItem(local, remote, status) {\n const deleted = status.includes(\"deleted\");\n const tag = status.includes(\"tag\") || /^refs\\/tags/.test(local);\n const alreadyUpdated = !status.includes(\"new\");\n return {\n deleted,\n tag,\n branch: !tag,\n new: !alreadyUpdated,\n alreadyUpdated,\n local,\n remote\n };\n}\nvar parsers5, parsePushResult, parsePushDetail;\nvar init_parse_push = __esm({\n \"src/lib/parsers/parse-push.ts\"() {\n \"use strict\";\n init_utils();\n init_parse_remote_messages();\n parsers5 = [\n new LineParser(/^Pushing to (.+)$/, (result, [repo]) => {\n result.repo = repo;\n }),\n new LineParser(/^updating local tracking ref '(.+)'/, (result, [local]) => {\n result.ref = {\n ...result.ref || {},\n local\n };\n }),\n new LineParser(/^[=*-]\\s+([^:]+):(\\S+)\\s+\\[(.+)]$/, (result, [local, remote, type]) => {\n result.pushed.push(pushResultPushedItem(local, remote, type));\n }),\n new LineParser(\n /^Branch '([^']+)' set up to track remote branch '([^']+)' from '([^']+)'/,\n (result, [local, remote, remoteName]) => {\n result.branch = {\n ...result.branch || {},\n local,\n remote,\n remoteName\n };\n }\n ),\n new LineParser(\n /^([^:]+):(\\S+)\\s+([a-z0-9]+)\\.\\.([a-z0-9]+)$/,\n (result, [local, remote, from, to]) => {\n result.update = {\n head: {\n local,\n remote\n },\n hash: {\n from,\n to\n }\n };\n }\n )\n ];\n parsePushResult = (stdOut, stdErr) => {\n const pushDetail = parsePushDetail(stdOut, stdErr);\n const responseDetail = parseRemoteMessages(stdOut, stdErr);\n return {\n ...pushDetail,\n ...responseDetail\n };\n };\n parsePushDetail = (stdOut, stdErr) => {\n return parseStringResponse({ pushed: [] }, parsers5, [stdOut, stdErr]);\n };\n }\n});\n\n// src/lib/tasks/push.ts\nvar push_exports = {};\n__export(push_exports, {\n pushTagsTask: () => pushTagsTask,\n pushTask: () => pushTask\n});\nfunction pushTagsTask(ref = {}, customArgs) {\n append(customArgs, \"--tags\");\n return pushTask(ref, customArgs);\n}\nfunction pushTask(ref = {}, customArgs) {\n const commands = [\"push\", ...customArgs];\n if (ref.branch) {\n commands.splice(1, 0, ref.branch);\n }\n if (ref.remote) {\n commands.splice(1, 0, ref.remote);\n }\n remove(commands, \"-v\");\n append(commands, \"--verbose\");\n append(commands, \"--porcelain\");\n return {\n commands,\n format: \"utf-8\",\n parser: parsePushResult\n };\n}\nvar init_push = __esm({\n \"src/lib/tasks/push.ts\"() {\n \"use strict\";\n init_parse_push();\n init_utils();\n }\n});\n\n// src/lib/tasks/show.ts\nfunction show_default() {\n return {\n showBuffer() {\n const commands = [\"show\", ...getTrailingOptions(arguments, 1)];\n if (!commands.includes(\"--binary\")) {\n commands.splice(1, 0, \"--binary\");\n }\n return this._runTask(\n straightThroughBufferTask(commands),\n trailingFunctionArgument(arguments)\n );\n },\n show() {\n const commands = [\"show\", ...getTrailingOptions(arguments, 1)];\n return this._runTask(\n straightThroughStringTask(commands),\n trailingFunctionArgument(arguments)\n );\n }\n };\n}\nvar init_show = __esm({\n \"src/lib/tasks/show.ts\"() {\n \"use strict\";\n init_utils();\n init_task();\n }\n});\n\n// src/lib/responses/FileStatusSummary.ts\nvar fromPathRegex, FileStatusSummary;\nvar init_FileStatusSummary = __esm({\n \"src/lib/responses/FileStatusSummary.ts\"() {\n \"use strict\";\n fromPathRegex = /^(.+)\\0(.+)$/;\n FileStatusSummary = class {\n constructor(path, index, working_dir) {\n this.path = path;\n this.index = index;\n this.working_dir = working_dir;\n if (index === \"R\" || working_dir === \"R\") {\n const detail = fromPathRegex.exec(path) || [null, path, path];\n this.from = detail[2] || \"\";\n this.path = detail[1] || \"\";\n }\n }\n };\n }\n});\n\n// src/lib/responses/StatusSummary.ts\nfunction renamedFile(line) {\n const [to, from] = line.split(NULL);\n return {\n from: from || to,\n to\n };\n}\nfunction parser3(indexX, indexY, handler) {\n return [`${indexX}${indexY}`, handler];\n}\nfunction conflicts(indexX, ...indexY) {\n return indexY.map((y) => parser3(indexX, y, (result, file) => result.conflicted.push(file)));\n}\nfunction splitLine(result, lineStr) {\n const trimmed2 = lineStr.trim();\n switch (\" \") {\n case trimmed2.charAt(2):\n return data(trimmed2.charAt(0), trimmed2.charAt(1), trimmed2.slice(3));\n case trimmed2.charAt(1):\n return data(\" \" /* NONE */, trimmed2.charAt(0), trimmed2.slice(2));\n default:\n return;\n }\n function data(index, workingDir, path) {\n const raw = `${index}${workingDir}`;\n const handler = parsers6.get(raw);\n if (handler) {\n handler(result, path);\n }\n if (raw !== \"##\" && raw !== \"!!\") {\n result.files.push(new FileStatusSummary(path, index, workingDir));\n }\n }\n}\nvar StatusSummary, parsers6, parseStatusSummary;\nvar init_StatusSummary = __esm({\n \"src/lib/responses/StatusSummary.ts\"() {\n \"use strict\";\n init_utils();\n init_FileStatusSummary();\n StatusSummary = class {\n constructor() {\n this.not_added = [];\n this.conflicted = [];\n this.created = [];\n this.deleted = [];\n this.ignored = void 0;\n this.modified = [];\n this.renamed = [];\n this.files = [];\n this.staged = [];\n this.ahead = 0;\n this.behind = 0;\n this.current = null;\n this.tracking = null;\n this.detached = false;\n this.isClean = () => {\n return !this.files.length;\n };\n }\n };\n parsers6 = new Map([\n parser3(\n \" \" /* NONE */,\n \"A\" /* ADDED */,\n (result, file) => result.created.push(file)\n ),\n parser3(\n \" \" /* NONE */,\n \"D\" /* DELETED */,\n (result, file) => result.deleted.push(file)\n ),\n parser3(\n \" \" /* NONE */,\n \"M\" /* MODIFIED */,\n (result, file) => result.modified.push(file)\n ),\n parser3(\"A\" /* ADDED */, \" \" /* NONE */, (result, file) => {\n result.created.push(file);\n result.staged.push(file);\n }),\n parser3(\"A\" /* ADDED */, \"M\" /* MODIFIED */, (result, file) => {\n result.created.push(file);\n result.staged.push(file);\n result.modified.push(file);\n }),\n parser3(\"D\" /* DELETED */, \" \" /* NONE */, (result, file) => {\n result.deleted.push(file);\n result.staged.push(file);\n }),\n parser3(\"M\" /* MODIFIED */, \" \" /* NONE */, (result, file) => {\n result.modified.push(file);\n result.staged.push(file);\n }),\n parser3(\"M\" /* MODIFIED */, \"M\" /* MODIFIED */, (result, file) => {\n result.modified.push(file);\n result.staged.push(file);\n }),\n parser3(\"R\" /* RENAMED */, \" \" /* NONE */, (result, file) => {\n result.renamed.push(renamedFile(file));\n }),\n parser3(\"R\" /* RENAMED */, \"M\" /* MODIFIED */, (result, file) => {\n const renamed = renamedFile(file);\n result.renamed.push(renamed);\n result.modified.push(renamed.to);\n }),\n parser3(\"!\" /* IGNORED */, \"!\" /* IGNORED */, (_result, _file) => {\n (_result.ignored = _result.ignored || []).push(_file);\n }),\n parser3(\n \"?\" /* UNTRACKED */,\n \"?\" /* UNTRACKED */,\n (result, file) => result.not_added.push(file)\n ),\n ...conflicts(\"A\" /* ADDED */, \"A\" /* ADDED */, \"U\" /* UNMERGED */),\n ...conflicts(\n \"D\" /* DELETED */,\n \"D\" /* DELETED */,\n \"U\" /* UNMERGED */\n ),\n ...conflicts(\n \"U\" /* UNMERGED */,\n \"A\" /* ADDED */,\n \"D\" /* DELETED */,\n \"U\" /* UNMERGED */\n ),\n [\n \"##\",\n (result, line) => {\n const aheadReg = /ahead (\\d+)/;\n const behindReg = /behind (\\d+)/;\n const currentReg = /^(.+?(?=(?:\\.{3}|\\s|$)))/;\n const trackingReg = /\\.{3}(\\S*)/;\n const onEmptyBranchReg = /\\son\\s(\\S+?)(?=\\.{3}|$)/;\n let regexResult = aheadReg.exec(line);\n result.ahead = regexResult && +regexResult[1] || 0;\n regexResult = behindReg.exec(line);\n result.behind = regexResult && +regexResult[1] || 0;\n regexResult = currentReg.exec(line);\n result.current = filterType(regexResult?.[1], filterString, null);\n regexResult = trackingReg.exec(line);\n result.tracking = filterType(regexResult?.[1], filterString, null);\n regexResult = onEmptyBranchReg.exec(line);\n if (regexResult) {\n result.current = filterType(regexResult?.[1], filterString, result.current);\n }\n result.detached = /\\(no branch\\)/.test(line);\n }\n ]\n ]);\n parseStatusSummary = function(text) {\n const lines = text.split(NULL);\n const status = new StatusSummary();\n for (let i = 0, l = lines.length; i < l; ) {\n let line = lines[i++].trim();\n if (!line) {\n continue;\n }\n if (line.charAt(0) === \"R\" /* RENAMED */) {\n line += NULL + (lines[i++] || \"\");\n }\n splitLine(status, line);\n }\n return status;\n };\n }\n});\n\n// src/lib/tasks/status.ts\nfunction statusTask(customArgs) {\n const commands = [\n \"status\",\n \"--porcelain\",\n \"-b\",\n \"-u\",\n \"--null\",\n ...customArgs.filter((arg) => !ignoredOptions.includes(arg))\n ];\n return {\n format: \"utf-8\",\n commands,\n parser(text) {\n return parseStatusSummary(text);\n }\n };\n}\nvar ignoredOptions;\nvar init_status = __esm({\n \"src/lib/tasks/status.ts\"() {\n \"use strict\";\n init_StatusSummary();\n ignoredOptions = [\"--null\", \"-z\"];\n }\n});\n\n// src/lib/tasks/version.ts\nfunction versionResponse(major = 0, minor = 0, patch = 0, agent = \"\", installed = true) {\n return Object.defineProperty(\n {\n major,\n minor,\n patch,\n agent,\n installed\n },\n \"toString\",\n {\n value() {\n return `${this.major}.${this.minor}.${this.patch}`;\n },\n configurable: false,\n enumerable: false\n }\n );\n}\nfunction notInstalledResponse() {\n return versionResponse(0, 0, 0, \"\", false);\n}\nfunction version_default() {\n return {\n version() {\n return this._runTask({\n commands: [\"--version\"],\n format: \"utf-8\",\n parser: versionParser,\n onError(result, error, done, fail) {\n if (result.exitCode === -2 /* NOT_FOUND */) {\n return done(Buffer.from(NOT_INSTALLED));\n }\n fail(error);\n }\n });\n }\n };\n}\nfunction versionParser(stdOut) {\n if (stdOut === NOT_INSTALLED) {\n return notInstalledResponse();\n }\n return parseStringResponse(versionResponse(0, 0, 0, stdOut), parsers7, stdOut);\n}\nvar NOT_INSTALLED, parsers7;\nvar init_version = __esm({\n \"src/lib/tasks/version.ts\"() {\n \"use strict\";\n init_utils();\n NOT_INSTALLED = \"installed=false\";\n parsers7 = [\n new LineParser(\n /version (\\d+)\\.(\\d+)\\.(\\d+)(?:\\s*\\((.+)\\))?/,\n (result, [major, minor, patch, agent = \"\"]) => {\n Object.assign(\n result,\n versionResponse(asNumber(major), asNumber(minor), asNumber(patch), agent)\n );\n }\n ),\n new LineParser(\n /version (\\d+)\\.(\\d+)\\.(\\D+)(.+)?$/,\n (result, [major, minor, patch, agent = \"\"]) => {\n Object.assign(result, versionResponse(asNumber(major), asNumber(minor), patch, agent));\n }\n )\n ];\n }\n});\n\n// src/lib/simple-git-api.ts\nvar simple_git_api_exports = {};\n__export(simple_git_api_exports, {\n SimpleGitApi: () => SimpleGitApi\n});\nvar SimpleGitApi;\nvar init_simple_git_api = __esm({\n \"src/lib/simple-git-api.ts\"() {\n \"use strict\";\n init_task_callback();\n init_change_working_directory();\n init_checkout();\n init_count_objects();\n init_commit();\n init_config();\n init_first_commit();\n init_grep();\n init_hash_object();\n init_init();\n init_log();\n init_merge();\n init_push();\n init_show();\n init_status();\n init_task();\n init_version();\n init_utils();\n SimpleGitApi = class {\n constructor(_executor) {\n this._executor = _executor;\n }\n _runTask(task, then) {\n const chain = this._executor.chain();\n const promise = chain.push(task);\n if (then) {\n taskCallback(task, promise, then);\n }\n return Object.create(this, {\n then: { value: promise.then.bind(promise) },\n catch: { value: promise.catch.bind(promise) },\n _executor: { value: chain }\n });\n }\n add(files) {\n return this._runTask(\n straightThroughStringTask([\"add\", ...asArray(files)]),\n trailingFunctionArgument(arguments)\n );\n }\n cwd(directory) {\n const next = trailingFunctionArgument(arguments);\n if (typeof directory === \"string\") {\n return this._runTask(changeWorkingDirectoryTask(directory, this._executor), next);\n }\n if (typeof directory?.path === \"string\") {\n return this._runTask(\n changeWorkingDirectoryTask(\n directory.path,\n directory.root && this._executor || void 0\n ),\n next\n );\n }\n return this._runTask(\n configurationErrorTask(\"Git.cwd: workingDirectory must be supplied as a string\"),\n next\n );\n }\n hashObject(path, write) {\n return this._runTask(\n hashObjectTask(path, write === true),\n trailingFunctionArgument(arguments)\n );\n }\n init(bare) {\n return this._runTask(\n initTask(bare === true, this._executor.cwd, getTrailingOptions(arguments)),\n trailingFunctionArgument(arguments)\n );\n }\n merge() {\n return this._runTask(\n mergeTask(getTrailingOptions(arguments)),\n trailingFunctionArgument(arguments)\n );\n }\n mergeFromTo(remote, branch) {\n if (!(filterString(remote) && filterString(branch))) {\n return this._runTask(\n configurationErrorTask(\n `Git.mergeFromTo requires that the 'remote' and 'branch' arguments are supplied as strings`\n )\n );\n }\n return this._runTask(\n mergeTask([remote, branch, ...getTrailingOptions(arguments)]),\n trailingFunctionArgument(arguments, false)\n );\n }\n outputHandler(handler) {\n this._executor.outputHandler = handler;\n return this;\n }\n push() {\n const task = pushTask(\n {\n remote: filterType(arguments[0], filterString),\n branch: filterType(arguments[1], filterString)\n },\n getTrailingOptions(arguments)\n );\n return this._runTask(task, trailingFunctionArgument(arguments));\n }\n stash() {\n return this._runTask(\n straightThroughStringTask([\"stash\", ...getTrailingOptions(arguments)]),\n trailingFunctionArgument(arguments)\n );\n }\n status() {\n return this._runTask(\n statusTask(getTrailingOptions(arguments)),\n trailingFunctionArgument(arguments)\n );\n }\n };\n Object.assign(\n SimpleGitApi.prototype,\n checkout_default(),\n commit_default(),\n config_default(),\n count_objects_default(),\n first_commit_default(),\n grep_default(),\n log_default(),\n show_default(),\n version_default()\n );\n }\n});\n\n// src/lib/runners/scheduler.ts\nvar scheduler_exports = {};\n__export(scheduler_exports, {\n Scheduler: () => Scheduler\n});\nimport { createDeferred } from \"@kwsites/promise-deferred\";\nvar createScheduledTask, Scheduler;\nvar init_scheduler = __esm({\n \"src/lib/runners/scheduler.ts\"() {\n \"use strict\";\n init_utils();\n init_git_logger();\n createScheduledTask = /* @__PURE__ */ (() => {\n let id = 0;\n return () => {\n id++;\n const { promise, done } = createDeferred();\n return {\n promise,\n done,\n id\n };\n };\n })();\n Scheduler = class {\n constructor(concurrency = 2) {\n this.concurrency = concurrency;\n this.logger = createLogger(\"\", \"scheduler\");\n this.pending = [];\n this.running = [];\n this.logger(`Constructed, concurrency=%s`, concurrency);\n }\n schedule() {\n if (!this.pending.length || this.running.length >= this.concurrency) {\n this.logger(\n `Schedule attempt ignored, pending=%s running=%s concurrency=%s`,\n this.pending.length,\n this.running.length,\n this.concurrency\n );\n return;\n }\n const task = append(this.running, this.pending.shift());\n this.logger(`Attempting id=%s`, task.id);\n task.done(() => {\n this.logger(`Completing id=`, task.id);\n remove(this.running, task);\n this.schedule();\n });\n }\n next() {\n const { promise, id } = append(this.pending, createScheduledTask());\n this.logger(`Scheduling id=%s`, id);\n this.schedule();\n return promise;\n }\n };\n }\n});\n\n// src/lib/tasks/apply-patch.ts\nvar apply_patch_exports = {};\n__export(apply_patch_exports, {\n applyPatchTask: () => applyPatchTask\n});\nfunction applyPatchTask(patches, customArgs) {\n return straightThroughStringTask([\"apply\", ...customArgs, ...patches]);\n}\nvar init_apply_patch = __esm({\n \"src/lib/tasks/apply-patch.ts\"() {\n \"use strict\";\n init_task();\n }\n});\n\n// src/lib/responses/BranchDeleteSummary.ts\nfunction branchDeletionSuccess(branch, hash) {\n return {\n branch,\n hash,\n success: true\n };\n}\nfunction branchDeletionFailure(branch) {\n return {\n branch,\n hash: null,\n success: false\n };\n}\nvar BranchDeletionBatch;\nvar init_BranchDeleteSummary = __esm({\n \"src/lib/responses/BranchDeleteSummary.ts\"() {\n \"use strict\";\n BranchDeletionBatch = class {\n constructor() {\n this.all = [];\n this.branches = {};\n this.errors = [];\n }\n get success() {\n return !this.errors.length;\n }\n };\n }\n});\n\n// src/lib/parsers/parse-branch-delete.ts\nfunction hasBranchDeletionError(data, processExitCode) {\n return processExitCode === 1 /* ERROR */ && deleteErrorRegex.test(data);\n}\nvar deleteSuccessRegex, deleteErrorRegex, parsers8, parseBranchDeletions;\nvar init_parse_branch_delete = __esm({\n \"src/lib/parsers/parse-branch-delete.ts\"() {\n \"use strict\";\n init_BranchDeleteSummary();\n init_utils();\n deleteSuccessRegex = /(\\S+)\\s+\\(\\S+\\s([^)]+)\\)/;\n deleteErrorRegex = /^error[^']+'([^']+)'/m;\n parsers8 = [\n new LineParser(deleteSuccessRegex, (result, [branch, hash]) => {\n const deletion = branchDeletionSuccess(branch, hash);\n result.all.push(deletion);\n result.branches[branch] = deletion;\n }),\n new LineParser(deleteErrorRegex, (result, [branch]) => {\n const deletion = branchDeletionFailure(branch);\n result.errors.push(deletion);\n result.all.push(deletion);\n result.branches[branch] = deletion;\n })\n ];\n parseBranchDeletions = (stdOut, stdErr) => {\n return parseStringResponse(new BranchDeletionBatch(), parsers8, [stdOut, stdErr]);\n };\n }\n});\n\n// src/lib/responses/BranchSummary.ts\nvar BranchSummaryResult;\nvar init_BranchSummary = __esm({\n \"src/lib/responses/BranchSummary.ts\"() {\n \"use strict\";\n BranchSummaryResult = class {\n constructor() {\n this.all = [];\n this.branches = {};\n this.current = \"\";\n this.detached = false;\n }\n push(status, detached, name, commit, label) {\n if (status === \"*\" /* CURRENT */) {\n this.detached = detached;\n this.current = name;\n }\n this.all.push(name);\n this.branches[name] = {\n current: status === \"*\" /* CURRENT */,\n linkedWorkTree: status === \"+\" /* LINKED */,\n name,\n commit,\n label\n };\n }\n };\n }\n});\n\n// src/lib/parsers/parse-branch.ts\nfunction branchStatus(input) {\n return input ? input.charAt(0) : \"\";\n}\nfunction parseBranchSummary(stdOut, currentOnly = false) {\n return parseStringResponse(\n new BranchSummaryResult(),\n currentOnly ? [currentBranchParser] : parsers9,\n stdOut\n );\n}\nvar parsers9, currentBranchParser;\nvar init_parse_branch = __esm({\n \"src/lib/parsers/parse-branch.ts\"() {\n \"use strict\";\n init_BranchSummary();\n init_utils();\n parsers9 = [\n new LineParser(\n /^([*+]\\s)?\\((?:HEAD )?detached (?:from|at) (\\S+)\\)\\s+([a-z0-9]+)\\s(.*)$/,\n (result, [current, name, commit, label]) => {\n result.push(branchStatus(current), true, name, commit, label);\n }\n ),\n new LineParser(\n /^([*+]\\s)?(\\S+)\\s+([a-z0-9]+)\\s?(.*)$/s,\n (result, [current, name, commit, label]) => {\n result.push(branchStatus(current), false, name, commit, label);\n }\n )\n ];\n currentBranchParser = new LineParser(/^(\\S+)$/s, (result, [name]) => {\n result.push(\"*\" /* CURRENT */, false, name, \"\", \"\");\n });\n }\n});\n\n// src/lib/tasks/branch.ts\nvar branch_exports = {};\n__export(branch_exports, {\n branchLocalTask: () => branchLocalTask,\n branchTask: () => branchTask,\n containsDeleteBranchCommand: () => containsDeleteBranchCommand,\n deleteBranchTask: () => deleteBranchTask,\n deleteBranchesTask: () => deleteBranchesTask\n});\nfunction containsDeleteBranchCommand(commands) {\n const deleteCommands = [\"-d\", \"-D\", \"--delete\"];\n return commands.some((command) => deleteCommands.includes(command));\n}\nfunction branchTask(customArgs) {\n const isDelete = containsDeleteBranchCommand(customArgs);\n const isCurrentOnly = customArgs.includes(\"--show-current\");\n const commands = [\"branch\", ...customArgs];\n if (commands.length === 1) {\n commands.push(\"-a\");\n }\n if (!commands.includes(\"-v\")) {\n commands.splice(1, 0, \"-v\");\n }\n return {\n format: \"utf-8\",\n commands,\n parser(stdOut, stdErr) {\n if (isDelete) {\n return parseBranchDeletions(stdOut, stdErr).all[0];\n }\n return parseBranchSummary(stdOut, isCurrentOnly);\n }\n };\n}\nfunction branchLocalTask() {\n return {\n format: \"utf-8\",\n commands: [\"branch\", \"-v\"],\n parser(stdOut) {\n return parseBranchSummary(stdOut);\n }\n };\n}\nfunction deleteBranchesTask(branches, forceDelete = false) {\n return {\n format: \"utf-8\",\n commands: [\"branch\", \"-v\", forceDelete ? \"-D\" : \"-d\", ...branches],\n parser(stdOut, stdErr) {\n return parseBranchDeletions(stdOut, stdErr);\n },\n onError({ exitCode, stdOut }, error, done, fail) {\n if (!hasBranchDeletionError(String(error), exitCode)) {\n return fail(error);\n }\n done(stdOut);\n }\n };\n}\nfunction deleteBranchTask(branch, forceDelete = false) {\n const task = {\n format: \"utf-8\",\n commands: [\"branch\", \"-v\", forceDelete ? \"-D\" : \"-d\", branch],\n parser(stdOut, stdErr) {\n return parseBranchDeletions(stdOut, stdErr).branches[branch];\n },\n onError({ exitCode, stdErr, stdOut }, error, _, fail) {\n if (!hasBranchDeletionError(String(error), exitCode)) {\n return fail(error);\n }\n throw new GitResponseError(\n task.parser(bufferToString(stdOut), bufferToString(stdErr)),\n String(error)\n );\n }\n };\n return task;\n}\nvar init_branch = __esm({\n \"src/lib/tasks/branch.ts\"() {\n \"use strict\";\n init_git_response_error();\n init_parse_branch_delete();\n init_parse_branch();\n init_utils();\n }\n});\n\n// src/lib/responses/CheckIgnore.ts\nimport { normalize } from \"node:path\";\nfunction toPath(input) {\n const path = input.trim().replace(/^[\"']|[\"']$/g, \"\");\n return path && normalize(path);\n}\nvar parseCheckIgnore;\nvar init_CheckIgnore = __esm({\n \"src/lib/responses/CheckIgnore.ts\"() {\n \"use strict\";\n parseCheckIgnore = (text) => {\n return text.split(/\\n/g).map(toPath).filter(Boolean);\n };\n }\n});\n\n// src/lib/tasks/check-ignore.ts\nvar check_ignore_exports = {};\n__export(check_ignore_exports, {\n checkIgnoreTask: () => checkIgnoreTask\n});\nfunction checkIgnoreTask(paths) {\n return {\n commands: [\"check-ignore\", ...paths],\n format: \"utf-8\",\n parser: parseCheckIgnore\n };\n}\nvar init_check_ignore = __esm({\n \"src/lib/tasks/check-ignore.ts\"() {\n \"use strict\";\n init_CheckIgnore();\n }\n});\n\n// src/lib/tasks/clone.ts\nvar clone_exports = {};\n__export(clone_exports, {\n cloneMirrorTask: () => cloneMirrorTask,\n cloneTask: () => cloneTask\n});\nfunction disallowedCommand(command) {\n return /^--upload-pack(=|$)/.test(command);\n}\nfunction cloneTask(repo, directory, customArgs) {\n const commands = [\"clone\", ...customArgs];\n filterString(repo) && commands.push(repo);\n filterString(directory) && commands.push(directory);\n const banned = commands.find(disallowedCommand);\n if (banned) {\n return configurationErrorTask(`git.fetch: potential exploit argument blocked.`);\n }\n return straightThroughStringTask(commands);\n}\nfunction cloneMirrorTask(repo, directory, customArgs) {\n append(customArgs, \"--mirror\");\n return cloneTask(repo, directory, customArgs);\n}\nvar init_clone = __esm({\n \"src/lib/tasks/clone.ts\"() {\n \"use strict\";\n init_task();\n init_utils();\n }\n});\n\n// src/lib/parsers/parse-fetch.ts\nfunction parseFetchResult(stdOut, stdErr) {\n const result = {\n raw: stdOut,\n remote: null,\n branches: [],\n tags: [],\n updated: [],\n deleted: []\n };\n return parseStringResponse(result, parsers10, [stdOut, stdErr]);\n}\nvar parsers10;\nvar init_parse_fetch = __esm({\n \"src/lib/parsers/parse-fetch.ts\"() {\n \"use strict\";\n init_utils();\n parsers10 = [\n new LineParser(/From (.+)$/, (result, [remote]) => {\n result.remote = remote;\n }),\n new LineParser(/\\* \\[new branch]\\s+(\\S+)\\s*-> (.+)$/, (result, [name, tracking]) => {\n result.branches.push({\n name,\n tracking\n });\n }),\n new LineParser(/\\* \\[new tag]\\s+(\\S+)\\s*-> (.+)$/, (result, [name, tracking]) => {\n result.tags.push({\n name,\n tracking\n });\n }),\n new LineParser(/- \\[deleted]\\s+\\S+\\s*-> (.+)$/, (result, [tracking]) => {\n result.deleted.push({\n tracking\n });\n }),\n new LineParser(\n /\\s*([^.]+)\\.\\.(\\S+)\\s+(\\S+)\\s*-> (.+)$/,\n (result, [from, to, name, tracking]) => {\n result.updated.push({\n name,\n tracking,\n to,\n from\n });\n }\n )\n ];\n }\n});\n\n// src/lib/tasks/fetch.ts\nvar fetch_exports = {};\n__export(fetch_exports, {\n fetchTask: () => fetchTask\n});\nfunction disallowedCommand2(command) {\n return /^--upload-pack(=|$)/.test(command);\n}\nfunction fetchTask(remote, branch, customArgs) {\n const commands = [\"fetch\", ...customArgs];\n if (remote && branch) {\n commands.push(remote, branch);\n }\n const banned = commands.find(disallowedCommand2);\n if (banned) {\n return configurationErrorTask(`git.fetch: potential exploit argument blocked.`);\n }\n return {\n commands,\n format: \"utf-8\",\n parser: parseFetchResult\n };\n}\nvar init_fetch = __esm({\n \"src/lib/tasks/fetch.ts\"() {\n \"use strict\";\n init_parse_fetch();\n init_task();\n }\n});\n\n// src/lib/parsers/parse-move.ts\nfunction parseMoveResult(stdOut) {\n return parseStringResponse({ moves: [] }, parsers11, stdOut);\n}\nvar parsers11;\nvar init_parse_move = __esm({\n \"src/lib/parsers/parse-move.ts\"() {\n \"use strict\";\n init_utils();\n parsers11 = [\n new LineParser(/^Renaming (.+) to (.+)$/, (result, [from, to]) => {\n result.moves.push({ from, to });\n })\n ];\n }\n});\n\n// src/lib/tasks/move.ts\nvar move_exports = {};\n__export(move_exports, {\n moveTask: () => moveTask\n});\nfunction moveTask(from, to) {\n return {\n commands: [\"mv\", \"-v\", ...asArray(from), to],\n format: \"utf-8\",\n parser: parseMoveResult\n };\n}\nvar init_move = __esm({\n \"src/lib/tasks/move.ts\"() {\n \"use strict\";\n init_parse_move();\n init_utils();\n }\n});\n\n// src/lib/tasks/pull.ts\nvar pull_exports = {};\n__export(pull_exports, {\n pullTask: () => pullTask\n});\nfunction pullTask(remote, branch, customArgs) {\n const commands = [\"pull\", ...customArgs];\n if (remote && branch) {\n commands.splice(1, 0, remote, branch);\n }\n return {\n commands,\n format: \"utf-8\",\n parser(stdOut, stdErr) {\n return parsePullResult(stdOut, stdErr);\n },\n onError(result, _error, _done, fail) {\n const pullError = parsePullErrorResult(\n bufferToString(result.stdOut),\n bufferToString(result.stdErr)\n );\n if (pullError) {\n return fail(new GitResponseError(pullError));\n }\n fail(_error);\n }\n };\n}\nvar init_pull = __esm({\n \"src/lib/tasks/pull.ts\"() {\n \"use strict\";\n init_git_response_error();\n init_parse_pull();\n init_utils();\n }\n});\n\n// src/lib/responses/GetRemoteSummary.ts\nfunction parseGetRemotes(text) {\n const remotes = {};\n forEach(text, ([name]) => remotes[name] = { name });\n return Object.values(remotes);\n}\nfunction parseGetRemotesVerbose(text) {\n const remotes = {};\n forEach(text, ([name, url, purpose]) => {\n if (!Object.hasOwn(remotes, name)) {\n remotes[name] = {\n name,\n refs: { fetch: \"\", push: \"\" }\n };\n }\n if (purpose && url) {\n remotes[name].refs[purpose.replace(/[^a-z]/g, \"\")] = url;\n }\n });\n return Object.values(remotes);\n}\nfunction forEach(text, handler) {\n forEachLineWithContent(text, (line) => handler(line.split(/\\s+/)));\n}\nvar init_GetRemoteSummary = __esm({\n \"src/lib/responses/GetRemoteSummary.ts\"() {\n \"use strict\";\n init_utils();\n }\n});\n\n// src/lib/tasks/remote.ts\nvar remote_exports = {};\n__export(remote_exports, {\n addRemoteTask: () => addRemoteTask,\n getRemotesTask: () => getRemotesTask,\n listRemotesTask: () => listRemotesTask,\n remoteTask: () => remoteTask,\n removeRemoteTask: () => removeRemoteTask\n});\nfunction addRemoteTask(remoteName, remoteRepo, customArgs) {\n return straightThroughStringTask([\"remote\", \"add\", ...customArgs, remoteName, remoteRepo]);\n}\nfunction getRemotesTask(verbose) {\n const commands = [\"remote\"];\n if (verbose) {\n commands.push(\"-v\");\n }\n return {\n commands,\n format: \"utf-8\",\n parser: verbose ? parseGetRemotesVerbose : parseGetRemotes\n };\n}\nfunction listRemotesTask(customArgs) {\n const commands = [...customArgs];\n if (commands[0] !== \"ls-remote\") {\n commands.unshift(\"ls-remote\");\n }\n return straightThroughStringTask(commands);\n}\nfunction remoteTask(customArgs) {\n const commands = [...customArgs];\n if (commands[0] !== \"remote\") {\n commands.unshift(\"remote\");\n }\n return straightThroughStringTask(commands);\n}\nfunction removeRemoteTask(remoteName) {\n return straightThroughStringTask([\"remote\", \"remove\", remoteName]);\n}\nvar init_remote = __esm({\n \"src/lib/tasks/remote.ts\"() {\n \"use strict\";\n init_GetRemoteSummary();\n init_task();\n }\n});\n\n// src/lib/tasks/stash-list.ts\nvar stash_list_exports = {};\n__export(stash_list_exports, {\n stashListTask: () => stashListTask\n});\nfunction stashListTask(opt = {}, customArgs) {\n const options = parseLogOptions(opt);\n const commands = [\"stash\", \"list\", ...options.commands, ...customArgs];\n const parser4 = createListLogSummaryParser(\n options.splitter,\n options.fields,\n logFormatFromCommand(commands)\n );\n return validateLogFormatConfig(commands) || {\n commands,\n format: \"utf-8\",\n parser: parser4\n };\n}\nvar init_stash_list = __esm({\n \"src/lib/tasks/stash-list.ts\"() {\n \"use strict\";\n init_log_format();\n init_parse_list_log_summary();\n init_diff();\n init_log();\n }\n});\n\n// src/lib/tasks/sub-module.ts\nvar sub_module_exports = {};\n__export(sub_module_exports, {\n addSubModuleTask: () => addSubModuleTask,\n initSubModuleTask: () => initSubModuleTask,\n subModuleTask: () => subModuleTask,\n updateSubModuleTask: () => updateSubModuleTask\n});\nfunction addSubModuleTask(repo, path) {\n return subModuleTask([\"add\", repo, path]);\n}\nfunction initSubModuleTask(customArgs) {\n return subModuleTask([\"init\", ...customArgs]);\n}\nfunction subModuleTask(customArgs) {\n const commands = [...customArgs];\n if (commands[0] !== \"submodule\") {\n commands.unshift(\"submodule\");\n }\n return straightThroughStringTask(commands);\n}\nfunction updateSubModuleTask(customArgs) {\n return subModuleTask([\"update\", ...customArgs]);\n}\nvar init_sub_module = __esm({\n \"src/lib/tasks/sub-module.ts\"() {\n \"use strict\";\n init_task();\n }\n});\n\n// src/lib/responses/TagList.ts\nfunction singleSorted(a, b) {\n const aIsNum = Number.isNaN(a);\n const bIsNum = Number.isNaN(b);\n if (aIsNum !== bIsNum) {\n return aIsNum ? 1 : -1;\n }\n return aIsNum ? sorted(a, b) : 0;\n}\nfunction sorted(a, b) {\n return a === b ? 0 : a > b ? 1 : -1;\n}\nfunction trimmed(input) {\n return input.trim();\n}\nfunction toNumber(input) {\n if (typeof input === \"string\") {\n return parseInt(input.replace(/^\\D+/g, \"\"), 10) || 0;\n }\n return 0;\n}\nvar TagList, parseTagList;\nvar init_TagList = __esm({\n \"src/lib/responses/TagList.ts\"() {\n \"use strict\";\n TagList = class {\n constructor(all, latest) {\n this.all = all;\n this.latest = latest;\n }\n };\n parseTagList = function(data, customSort = false) {\n const tags = data.split(\"\\n\").map(trimmed).filter(Boolean);\n if (!customSort) {\n tags.sort(function(tagA, tagB) {\n const partsA = tagA.split(\".\");\n const partsB = tagB.split(\".\");\n if (partsA.length === 1 || partsB.length === 1) {\n return singleSorted(toNumber(partsA[0]), toNumber(partsB[0]));\n }\n for (let i = 0, l = Math.max(partsA.length, partsB.length); i < l; i++) {\n const diff = sorted(toNumber(partsA[i]), toNumber(partsB[i]));\n if (diff) {\n return diff;\n }\n }\n return 0;\n });\n }\n const latest = customSort ? tags[0] : [...tags].reverse().find((tag) => tag.indexOf(\".\") >= 0);\n return new TagList(tags, latest);\n };\n }\n});\n\n// src/lib/tasks/tag.ts\nvar tag_exports = {};\n__export(tag_exports, {\n addAnnotatedTagTask: () => addAnnotatedTagTask,\n addTagTask: () => addTagTask,\n tagListTask: () => tagListTask\n});\nfunction tagListTask(customArgs = []) {\n const hasCustomSort = customArgs.some((option) => /^--sort=/.test(option));\n return {\n format: \"utf-8\",\n commands: [\"tag\", \"-l\", ...customArgs],\n parser(text) {\n return parseTagList(text, hasCustomSort);\n }\n };\n}\nfunction addTagTask(name) {\n return {\n format: \"utf-8\",\n commands: [\"tag\", name],\n parser() {\n return { name };\n }\n };\n}\nfunction addAnnotatedTagTask(name, tagMessage) {\n return {\n format: \"utf-8\",\n commands: [\"tag\", \"-a\", \"-m\", tagMessage, name],\n parser() {\n return { name };\n }\n };\n}\nvar init_tag = __esm({\n \"src/lib/tasks/tag.ts\"() {\n \"use strict\";\n init_TagList();\n }\n});\n\n// src/git.js\nvar require_git = __commonJS({\n \"src/git.js\"(exports, module) {\n \"use strict\";\n var { GitExecutor: GitExecutor2 } = (init_git_executor(), __toCommonJS(git_executor_exports));\n var { SimpleGitApi: SimpleGitApi2 } = (init_simple_git_api(), __toCommonJS(simple_git_api_exports));\n var { Scheduler: Scheduler2 } = (init_scheduler(), __toCommonJS(scheduler_exports));\n var { adhocExecTask: adhocExecTask2, configurationErrorTask: configurationErrorTask2 } = (init_task(), __toCommonJS(task_exports));\n var {\n asArray: asArray2,\n filterArray: filterArray2,\n filterPrimitives: filterPrimitives2,\n filterString: filterString2,\n filterStringOrStringArray: filterStringOrStringArray2,\n filterType: filterType2,\n getTrailingOptions: getTrailingOptions2,\n trailingFunctionArgument: trailingFunctionArgument2,\n trailingOptionsArgument: trailingOptionsArgument2\n } = (init_utils(), __toCommonJS(utils_exports));\n var { applyPatchTask: applyPatchTask2 } = (init_apply_patch(), __toCommonJS(apply_patch_exports));\n var {\n branchTask: branchTask2,\n branchLocalTask: branchLocalTask2,\n deleteBranchesTask: deleteBranchesTask2,\n deleteBranchTask: deleteBranchTask2\n } = (init_branch(), __toCommonJS(branch_exports));\n var { checkIgnoreTask: checkIgnoreTask2 } = (init_check_ignore(), __toCommonJS(check_ignore_exports));\n var { checkIsRepoTask: checkIsRepoTask2 } = (init_check_is_repo(), __toCommonJS(check_is_repo_exports));\n var { cloneTask: cloneTask2, cloneMirrorTask: cloneMirrorTask2 } = (init_clone(), __toCommonJS(clone_exports));\n var { cleanWithOptionsTask: cleanWithOptionsTask2, isCleanOptionsArray: isCleanOptionsArray2 } = (init_clean(), __toCommonJS(clean_exports));\n var { diffSummaryTask: diffSummaryTask2 } = (init_diff(), __toCommonJS(diff_exports));\n var { fetchTask: fetchTask2 } = (init_fetch(), __toCommonJS(fetch_exports));\n var { moveTask: moveTask2 } = (init_move(), __toCommonJS(move_exports));\n var { pullTask: pullTask2 } = (init_pull(), __toCommonJS(pull_exports));\n var { pushTagsTask: pushTagsTask2 } = (init_push(), __toCommonJS(push_exports));\n var {\n addRemoteTask: addRemoteTask2,\n getRemotesTask: getRemotesTask2,\n listRemotesTask: listRemotesTask2,\n remoteTask: remoteTask2,\n removeRemoteTask: removeRemoteTask2\n } = (init_remote(), __toCommonJS(remote_exports));\n var { getResetMode: getResetMode2, resetTask: resetTask2 } = (init_reset(), __toCommonJS(reset_exports));\n var { stashListTask: stashListTask2 } = (init_stash_list(), __toCommonJS(stash_list_exports));\n var {\n addSubModuleTask: addSubModuleTask2,\n initSubModuleTask: initSubModuleTask2,\n subModuleTask: subModuleTask2,\n updateSubModuleTask: updateSubModuleTask2\n } = (init_sub_module(), __toCommonJS(sub_module_exports));\n var { addAnnotatedTagTask: addAnnotatedTagTask2, addTagTask: addTagTask2, tagListTask: tagListTask2 } = (init_tag(), __toCommonJS(tag_exports));\n var { straightThroughBufferTask: straightThroughBufferTask2, straightThroughStringTask: straightThroughStringTask2 } = (init_task(), __toCommonJS(task_exports));\n function Git2(options, plugins) {\n this._plugins = plugins;\n this._executor = new GitExecutor2(\n options.baseDir,\n new Scheduler2(options.maxConcurrentProcesses),\n plugins\n );\n this._trimmed = options.trimmed;\n }\n (Git2.prototype = Object.create(SimpleGitApi2.prototype)).constructor = Git2;\n Git2.prototype.customBinary = function(command) {\n this._plugins.reconfigure(\"binary\", command);\n return this;\n };\n Git2.prototype.env = function(name, value) {\n if (arguments.length === 1 && typeof name === \"object\") {\n this._executor.env = name;\n } else {\n (this._executor.env = this._executor.env || {})[name] = value;\n }\n return this;\n };\n Git2.prototype.stashList = function(options) {\n return this._runTask(\n stashListTask2(\n trailingOptionsArgument2(arguments) || {},\n filterArray2(options) && options || []\n ),\n trailingFunctionArgument2(arguments)\n );\n };\n function createCloneTask(api, task, repoPath, localPath) {\n if (typeof repoPath !== \"string\") {\n return configurationErrorTask2(`git.${api}() requires a string 'repoPath'`);\n }\n return task(repoPath, filterType2(localPath, filterString2), getTrailingOptions2(arguments));\n }\n Git2.prototype.clone = function() {\n return this._runTask(\n createCloneTask(\"clone\", cloneTask2, ...arguments),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.mirror = function() {\n return this._runTask(\n createCloneTask(\"mirror\", cloneMirrorTask2, ...arguments),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.mv = function(from, to) {\n return this._runTask(moveTask2(from, to), trailingFunctionArgument2(arguments));\n };\n Git2.prototype.checkoutLatestTag = function(then) {\n var git = this;\n return this.pull(function() {\n git.tags(function(err, tags) {\n git.checkout(tags.latest, then);\n });\n });\n };\n Git2.prototype.pull = function(remote, branch, options, then) {\n return this._runTask(\n pullTask2(\n filterType2(remote, filterString2),\n filterType2(branch, filterString2),\n getTrailingOptions2(arguments)\n ),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.fetch = function(remote, branch) {\n return this._runTask(\n fetchTask2(\n filterType2(remote, filterString2),\n filterType2(branch, filterString2),\n getTrailingOptions2(arguments)\n ),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.silent = function(silence) {\n return this._runTask(\n adhocExecTask2(\n () => console.warn(\n \"simple-git deprecation notice: git.silent: logging should be configured using the `debug` library / `DEBUG` environment variable, this method will be removed.\"\n )\n )\n );\n };\n Git2.prototype.tags = function(options, then) {\n return this._runTask(\n tagListTask2(getTrailingOptions2(arguments)),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.rebase = function() {\n return this._runTask(\n straightThroughStringTask2([\"rebase\", ...getTrailingOptions2(arguments)]),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.reset = function(mode) {\n return this._runTask(\n resetTask2(getResetMode2(mode), getTrailingOptions2(arguments)),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.revert = function(commit) {\n const next = trailingFunctionArgument2(arguments);\n if (typeof commit !== \"string\") {\n return this._runTask(configurationErrorTask2(\"Commit must be a string\"), next);\n }\n return this._runTask(\n straightThroughStringTask2([\"revert\", ...getTrailingOptions2(arguments, 0, true), commit]),\n next\n );\n };\n Git2.prototype.addTag = function(name) {\n const task = typeof name === \"string\" ? addTagTask2(name) : configurationErrorTask2(\"Git.addTag requires a tag name\");\n return this._runTask(task, trailingFunctionArgument2(arguments));\n };\n Git2.prototype.addAnnotatedTag = function(tagName, tagMessage) {\n return this._runTask(\n addAnnotatedTagTask2(tagName, tagMessage),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.deleteLocalBranch = function(branchName, forceDelete, then) {\n return this._runTask(\n deleteBranchTask2(branchName, typeof forceDelete === \"boolean\" ? forceDelete : false),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.deleteLocalBranches = function(branchNames, forceDelete, then) {\n return this._runTask(\n deleteBranchesTask2(branchNames, typeof forceDelete === \"boolean\" ? forceDelete : false),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.branch = function(options, then) {\n return this._runTask(\n branchTask2(getTrailingOptions2(arguments)),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.branchLocal = function(then) {\n return this._runTask(branchLocalTask2(), trailingFunctionArgument2(arguments));\n };\n Git2.prototype.raw = function(commands) {\n const createRestCommands = !Array.isArray(commands);\n const command = [].slice.call(createRestCommands ? arguments : commands, 0);\n for (let i = 0; i < command.length && createRestCommands; i++) {\n if (!filterPrimitives2(command[i])) {\n command.splice(i, command.length - i);\n break;\n }\n }\n command.push(...getTrailingOptions2(arguments, 0, true));\n var next = trailingFunctionArgument2(arguments);\n if (!command.length) {\n return this._runTask(\n configurationErrorTask2(\"Raw: must supply one or more command to execute\"),\n next\n );\n }\n return this._runTask(straightThroughStringTask2(command, this._trimmed), next);\n };\n Git2.prototype.submoduleAdd = function(repo, path, then) {\n return this._runTask(addSubModuleTask2(repo, path), trailingFunctionArgument2(arguments));\n };\n Git2.prototype.submoduleUpdate = function(args, then) {\n return this._runTask(\n updateSubModuleTask2(getTrailingOptions2(arguments, true)),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.submoduleInit = function(args, then) {\n return this._runTask(\n initSubModuleTask2(getTrailingOptions2(arguments, true)),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.subModule = function(options, then) {\n return this._runTask(\n subModuleTask2(getTrailingOptions2(arguments)),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.listRemote = function() {\n return this._runTask(\n listRemotesTask2(getTrailingOptions2(arguments)),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.addRemote = function(remoteName, remoteRepo, then) {\n return this._runTask(\n addRemoteTask2(remoteName, remoteRepo, getTrailingOptions2(arguments)),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.removeRemote = function(remoteName, then) {\n return this._runTask(removeRemoteTask2(remoteName), trailingFunctionArgument2(arguments));\n };\n Git2.prototype.getRemotes = function(verbose, then) {\n return this._runTask(getRemotesTask2(verbose === true), trailingFunctionArgument2(arguments));\n };\n Git2.prototype.remote = function(options, then) {\n return this._runTask(\n remoteTask2(getTrailingOptions2(arguments)),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.tag = function(options, then) {\n const command = getTrailingOptions2(arguments);\n if (command[0] !== \"tag\") {\n command.unshift(\"tag\");\n }\n return this._runTask(straightThroughStringTask2(command), trailingFunctionArgument2(arguments));\n };\n Git2.prototype.updateServerInfo = function(then) {\n return this._runTask(\n straightThroughStringTask2([\"update-server-info\"]),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.pushTags = function(remote, then) {\n const task = pushTagsTask2(\n { remote: filterType2(remote, filterString2) },\n getTrailingOptions2(arguments)\n );\n return this._runTask(task, trailingFunctionArgument2(arguments));\n };\n Git2.prototype.rm = function(files) {\n return this._runTask(\n straightThroughStringTask2([\"rm\", \"-f\", ...asArray2(files)]),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.rmKeepLocal = function(files) {\n return this._runTask(\n straightThroughStringTask2([\"rm\", \"--cached\", ...asArray2(files)]),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.catFile = function(options, then) {\n return this._catFile(\"utf-8\", arguments);\n };\n Git2.prototype.binaryCatFile = function() {\n return this._catFile(\"buffer\", arguments);\n };\n Git2.prototype._catFile = function(format, args) {\n var handler = trailingFunctionArgument2(args);\n var command = [\"cat-file\"];\n var options = args[0];\n if (typeof options === \"string\") {\n return this._runTask(\n configurationErrorTask2(\"Git.catFile: options must be supplied as an array of strings\"),\n handler\n );\n }\n if (Array.isArray(options)) {\n command.push.apply(command, options);\n }\n const task = format === \"buffer\" ? straightThroughBufferTask2(command) : straightThroughStringTask2(command);\n return this._runTask(task, handler);\n };\n Git2.prototype.diff = function(options, then) {\n const task = filterString2(options) ? configurationErrorTask2(\n \"git.diff: supplying options as a single string is no longer supported, switch to an array of strings\"\n ) : straightThroughStringTask2([\"diff\", ...getTrailingOptions2(arguments)]);\n return this._runTask(task, trailingFunctionArgument2(arguments));\n };\n Git2.prototype.diffSummary = function() {\n return this._runTask(\n diffSummaryTask2(getTrailingOptions2(arguments, 1)),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.applyPatch = function(patches) {\n const task = !filterStringOrStringArray2(patches) ? configurationErrorTask2(\n `git.applyPatch requires one or more string patches as the first argument`\n ) : applyPatchTask2(asArray2(patches), getTrailingOptions2([].slice.call(arguments, 1)));\n return this._runTask(task, trailingFunctionArgument2(arguments));\n };\n Git2.prototype.revparse = function() {\n const commands = [\"rev-parse\", ...getTrailingOptions2(arguments, true)];\n return this._runTask(\n straightThroughStringTask2(commands, true),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.clean = function(mode, options, then) {\n const usingCleanOptionsArray = isCleanOptionsArray2(mode);\n const cleanMode = usingCleanOptionsArray && mode.join(\"\") || filterType2(mode, filterString2) || \"\";\n const customArgs = getTrailingOptions2([].slice.call(arguments, usingCleanOptionsArray ? 1 : 0));\n return this._runTask(\n cleanWithOptionsTask2(cleanMode, customArgs),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.exec = function(then) {\n const task = {\n commands: [],\n format: \"utf-8\",\n parser() {\n if (typeof then === \"function\") {\n then();\n }\n }\n };\n return this._runTask(task);\n };\n Git2.prototype.clearQueue = function() {\n return this._runTask(\n adhocExecTask2(\n () => console.warn(\n \"simple-git deprecation notice: clearQueue() is deprecated and will be removed, switch to using the abortPlugin instead.\"\n )\n )\n );\n };\n Git2.prototype.checkIgnore = function(pathnames, then) {\n return this._runTask(\n checkIgnoreTask2(asArray2(filterType2(pathnames, filterStringOrStringArray2, []))),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.checkIsRepo = function(checkType, then) {\n return this._runTask(\n checkIsRepoTask2(filterType2(checkType, filterString2)),\n trailingFunctionArgument2(arguments)\n );\n };\n module.exports = Git2;\n }\n});\n\n// src/lib/api.ts\ninit_pathspec();\n\n// src/lib/errors/git-construct-error.ts\ninit_git_error();\nvar GitConstructError = class extends GitError {\n constructor(config, message) {\n super(void 0, message);\n this.config = config;\n }\n};\n\n// src/lib/api.ts\ninit_git_error();\n\n// src/lib/errors/git-plugin-error.ts\ninit_git_error();\nvar GitPluginError = class extends GitError {\n constructor(task, plugin, message) {\n super(task, message);\n this.task = task;\n this.plugin = plugin;\n Object.setPrototypeOf(this, new.target.prototype);\n }\n};\n\n// src/lib/api.ts\ninit_git_response_error();\ninit_task_configuration_error();\ninit_check_is_repo();\ninit_clean();\ninit_config();\ninit_diff_name_status();\ninit_grep();\ninit_reset();\n\n// src/lib/plugins/abort-plugin.ts\nfunction abortPlugin(signal) {\n if (!signal) {\n return;\n }\n const onSpawnAfter = {\n type: \"spawn.after\",\n action(_data, context) {\n function kill() {\n context.kill(new GitPluginError(void 0, \"abort\", \"Abort signal received\"));\n }\n signal.addEventListener(\"abort\", kill);\n context.spawned.on(\"close\", () => signal.removeEventListener(\"abort\", kill));\n }\n };\n const onSpawnBefore = {\n type: \"spawn.before\",\n action(_data, context) {\n if (signal.aborted) {\n context.kill(new GitPluginError(void 0, \"abort\", \"Abort already signaled\"));\n }\n }\n };\n return [onSpawnBefore, onSpawnAfter];\n}\n\n// src/lib/plugins/block-unsafe-operations-plugin.ts\nfunction isConfigSwitch(arg) {\n return typeof arg === \"string\" && arg.trim().toLowerCase() === \"-c\";\n}\nfunction isCloneSwitch(char, arg) {\n if (typeof arg !== \"string\" || !arg.includes(char)) {\n return false;\n }\n const token = arg.replace(/\\0g/, \"\").replace(/^(--no)?-{1,2}/, \"\");\n return /^[\\dlsqvnobucj]+\\b/.test(token);\n}\nfunction preventProtocolOverride(arg, next) {\n if (!isConfigSwitch(arg)) {\n return;\n }\n if (!/^\\s*protocol(.[a-z]+)?.allow/.test(next)) {\n return;\n }\n throw new GitPluginError(\n void 0,\n \"unsafe\",\n \"Configuring protocol.allow is not permitted without enabling allowUnsafeExtProtocol\"\n );\n}\nfunction preventUploadPack(arg, method) {\n if (/^\\s*--(upload|receive)-pack/.test(arg)) {\n throw new GitPluginError(\n void 0,\n \"unsafe\",\n `Use of --upload-pack or --receive-pack is not permitted without enabling allowUnsafePack`\n );\n }\n if (method === \"clone\" && isCloneSwitch(\"u\", arg)) {\n throw new GitPluginError(\n void 0,\n \"unsafe\",\n `Use of clone with option -u is not permitted without enabling allowUnsafePack`\n );\n }\n if (method === \"push\" && /^\\s*--exec\\b/.test(arg)) {\n throw new GitPluginError(\n void 0,\n \"unsafe\",\n `Use of push with option --exec is not permitted without enabling allowUnsafePack`\n );\n }\n}\nfunction blockUnsafeOperationsPlugin({\n allowUnsafeProtocolOverride = false,\n allowUnsafePack = false\n} = {}) {\n return {\n type: \"spawn.args\",\n action(args, context) {\n args.forEach((current, index) => {\n const next = index < args.length ? args[index + 1] : \"\";\n allowUnsafeProtocolOverride || preventProtocolOverride(current, next);\n allowUnsafePack || preventUploadPack(current, context.method);\n });\n return args;\n }\n };\n}\n\n// src/lib/plugins/command-config-prefixing-plugin.ts\ninit_utils();\nfunction commandConfigPrefixingPlugin(configuration) {\n const prefix = prefixedArray(configuration, \"-c\");\n return {\n type: \"spawn.args\",\n action(data) {\n return [...prefix, ...data];\n }\n };\n}\n\n// src/lib/plugins/completion-detection.plugin.ts\ninit_utils();\nimport { deferred } from \"@kwsites/promise-deferred\";\nvar never = deferred().promise;\nfunction completionDetectionPlugin({\n onClose = true,\n onExit = 50\n} = {}) {\n function createEvents() {\n let exitCode = -1;\n const events = {\n close: deferred(),\n closeTimeout: deferred(),\n exit: deferred(),\n exitTimeout: deferred()\n };\n const result = Promise.race([\n onClose === false ? never : events.closeTimeout.promise,\n onExit === false ? never : events.exitTimeout.promise\n ]);\n configureTimeout(onClose, events.close, events.closeTimeout);\n configureTimeout(onExit, events.exit, events.exitTimeout);\n return {\n close(code) {\n exitCode = code;\n events.close.done();\n },\n exit(code) {\n exitCode = code;\n events.exit.done();\n },\n get exitCode() {\n return exitCode;\n },\n result\n };\n }\n function configureTimeout(flag, event, timeout) {\n if (flag === false) {\n return;\n }\n (flag === true ? event.promise : event.promise.then(() => delay(flag))).then(timeout.done);\n }\n return {\n type: \"spawn.after\",\n async action(_data, { spawned, close }) {\n const events = createEvents();\n let deferClose = true;\n let quickClose = () => void (deferClose = false);\n spawned.stdout?.on(\"data\", quickClose);\n spawned.stderr?.on(\"data\", quickClose);\n spawned.on(\"error\", quickClose);\n spawned.on(\"close\", (code) => events.close(code));\n spawned.on(\"exit\", (code) => events.exit(code));\n try {\n await events.result;\n if (deferClose) {\n await delay(50);\n }\n close(events.exitCode);\n } catch (err) {\n close(events.exitCode, err);\n }\n }\n };\n}\n\n// src/lib/plugins/custom-binary.plugin.ts\ninit_utils();\nvar WRONG_NUMBER_ERR = `Invalid value supplied for custom binary, requires a single string or an array containing either one or two strings`;\nvar WRONG_CHARS_ERR = `Invalid value supplied for custom binary, restricted characters must be removed or supply the unsafe.allowUnsafeCustomBinary option`;\nfunction isBadArgument(arg) {\n return !arg || !/^([a-z]:)?([a-z0-9/.\\\\_~-]+)$/i.test(arg);\n}\nfunction toBinaryConfig(input, allowUnsafe) {\n if (input.length < 1 || input.length > 2) {\n throw new GitPluginError(void 0, \"binary\", WRONG_NUMBER_ERR);\n }\n const isBad = input.some(isBadArgument);\n if (isBad) {\n if (allowUnsafe) {\n console.warn(WRONG_CHARS_ERR);\n } else {\n throw new GitPluginError(void 0, \"binary\", WRONG_CHARS_ERR);\n }\n }\n const [binary, prefix] = input;\n return {\n binary,\n prefix\n };\n}\nfunction customBinaryPlugin(plugins, input = [\"git\"], allowUnsafe = false) {\n let config = toBinaryConfig(asArray(input), allowUnsafe);\n plugins.on(\"binary\", (input2) => {\n config = toBinaryConfig(asArray(input2), allowUnsafe);\n });\n plugins.append(\"spawn.binary\", () => {\n return config.binary;\n });\n plugins.append(\"spawn.args\", (data) => {\n return config.prefix ? [config.prefix, ...data] : data;\n });\n}\n\n// src/lib/plugins/error-detection.plugin.ts\ninit_git_error();\nfunction isTaskError(result) {\n return !!(result.exitCode && result.stdErr.length);\n}\nfunction getErrorMessage(result) {\n return Buffer.concat([...result.stdOut, ...result.stdErr]);\n}\nfunction errorDetectionHandler(overwrite = false, isError = isTaskError, errorMessage = getErrorMessage) {\n return (error, result) => {\n if (!overwrite && error || !isError(result)) {\n return error;\n }\n return errorMessage(result);\n };\n}\nfunction errorDetectionPlugin(config) {\n return {\n type: \"task.error\",\n action(data, context) {\n const error = config(data.error, {\n stdErr: context.stdErr,\n stdOut: context.stdOut,\n exitCode: context.exitCode\n });\n if (Buffer.isBuffer(error)) {\n return { error: new GitError(void 0, error.toString(\"utf-8\")) };\n }\n return {\n error\n };\n }\n };\n}\n\n// src/lib/plugins/plugin-store.ts\ninit_utils();\nimport { EventEmitter } from \"node:events\";\nvar PluginStore = class {\n constructor() {\n this.plugins = /* @__PURE__ */ new Set();\n this.events = new EventEmitter();\n }\n on(type, listener) {\n this.events.on(type, listener);\n }\n reconfigure(type, data) {\n this.events.emit(type, data);\n }\n append(type, action) {\n const plugin = append(this.plugins, { type, action });\n return () => this.plugins.delete(plugin);\n }\n add(plugin) {\n const plugins = [];\n asArray(plugin).forEach((plugin2) => plugin2 && this.plugins.add(append(plugins, plugin2)));\n return () => {\n plugins.forEach((plugin2) => this.plugins.delete(plugin2));\n };\n }\n exec(type, data, context) {\n let output = data;\n const contextual = Object.freeze(Object.create(context));\n for (const plugin of this.plugins) {\n if (plugin.type === type) {\n output = plugin.action(output, contextual);\n }\n }\n return output;\n }\n};\n\n// src/lib/plugins/progress-monitor-plugin.ts\ninit_utils();\nfunction progressMonitorPlugin(progress) {\n const progressCommand = \"--progress\";\n const progressMethods = [\"checkout\", \"clone\", \"fetch\", \"pull\", \"push\"];\n const onProgress = {\n type: \"spawn.after\",\n action(_data, context) {\n if (!context.commands.includes(progressCommand)) {\n return;\n }\n context.spawned.stderr?.on(\"data\", (chunk) => {\n const message = /^([\\s\\S]+?):\\s*(\\d+)% \\((\\d+)\\/(\\d+)\\)/.exec(chunk.toString(\"utf8\"));\n if (!message) {\n return;\n }\n progress({\n method: context.method,\n stage: progressEventStage(message[1]),\n progress: asNumber(message[2]),\n processed: asNumber(message[3]),\n total: asNumber(message[4])\n });\n });\n }\n };\n const onArgs = {\n type: \"spawn.args\",\n action(args, context) {\n if (!progressMethods.includes(context.method)) {\n return args;\n }\n return including(args, progressCommand);\n }\n };\n return [onArgs, onProgress];\n}\nfunction progressEventStage(input) {\n return String(input.toLowerCase().split(\" \", 1)) || \"unknown\";\n}\n\n// src/lib/plugins/spawn-options-plugin.ts\ninit_utils();\nfunction spawnOptionsPlugin(spawnOptions) {\n const options = pick(spawnOptions, [\"uid\", \"gid\"]);\n return {\n type: \"spawn.options\",\n action(data) {\n return { ...options, ...data };\n }\n };\n}\n\n// src/lib/plugins/timout-plugin.ts\nfunction timeoutPlugin({\n block,\n stdErr = true,\n stdOut = true\n}) {\n if (block > 0) {\n return {\n type: \"spawn.after\",\n action(_data, context) {\n let timeout;\n function wait() {\n timeout && clearTimeout(timeout);\n timeout = setTimeout(kill, block);\n }\n function stop() {\n context.spawned.stdout?.off(\"data\", wait);\n context.spawned.stderr?.off(\"data\", wait);\n context.spawned.off(\"exit\", stop);\n context.spawned.off(\"close\", stop);\n timeout && clearTimeout(timeout);\n }\n function kill() {\n stop();\n context.kill(new GitPluginError(void 0, \"timeout\", `block timeout reached`));\n }\n stdOut && context.spawned.stdout?.on(\"data\", wait);\n stdErr && context.spawned.stderr?.on(\"data\", wait);\n context.spawned.on(\"exit\", stop);\n context.spawned.on(\"close\", stop);\n wait();\n }\n };\n }\n}\n\n// src/lib/plugins/suffix-paths.plugin.ts\ninit_pathspec();\nfunction suffixPathsPlugin() {\n return {\n type: \"spawn.args\",\n action(data) {\n const prefix = [];\n let suffix;\n function append2(args) {\n (suffix = suffix || []).push(...args);\n }\n for (let i = 0; i < data.length; i++) {\n const param = data[i];\n if (isPathSpec(param)) {\n append2(toPaths(param));\n continue;\n }\n if (param === \"--\") {\n append2(\n data.slice(i + 1).flatMap((item) => isPathSpec(item) && toPaths(item) || item)\n );\n break;\n }\n prefix.push(param);\n }\n return !suffix ? prefix : [...prefix, \"--\", ...suffix.map(String)];\n }\n };\n}\n\n// src/lib/git-factory.ts\ninit_utils();\nvar Git = require_git();\nfunction gitInstanceFactory(baseDir, options) {\n const plugins = new PluginStore();\n const config = createInstanceConfig(\n baseDir && (typeof baseDir === \"string\" ? { baseDir } : baseDir) || {},\n options\n );\n if (!folderExists(config.baseDir)) {\n throw new GitConstructError(\n config,\n `Cannot use simple-git on a directory that does not exist`\n );\n }\n if (Array.isArray(config.config)) {\n plugins.add(commandConfigPrefixingPlugin(config.config));\n }\n plugins.add(blockUnsafeOperationsPlugin(config.unsafe));\n plugins.add(suffixPathsPlugin());\n plugins.add(completionDetectionPlugin(config.completion));\n config.abort && plugins.add(abortPlugin(config.abort));\n config.progress && plugins.add(progressMonitorPlugin(config.progress));\n config.timeout && plugins.add(timeoutPlugin(config.timeout));\n config.spawnOptions && plugins.add(spawnOptionsPlugin(config.spawnOptions));\n plugins.add(errorDetectionPlugin(errorDetectionHandler(true)));\n config.errors && plugins.add(errorDetectionPlugin(config.errors));\n customBinaryPlugin(plugins, config.binary, config.unsafe?.allowUnsafeCustomBinary);\n return new Git(config, plugins);\n}\n\n// src/lib/runners/promise-wrapped.ts\ninit_git_response_error();\nvar functionNamesBuilderApi = [\"customBinary\", \"env\", \"outputHandler\", \"silent\"];\nvar functionNamesPromiseApi = [\n \"add\",\n \"addAnnotatedTag\",\n \"addConfig\",\n \"addRemote\",\n \"addTag\",\n \"applyPatch\",\n \"binaryCatFile\",\n \"branch\",\n \"branchLocal\",\n \"catFile\",\n \"checkIgnore\",\n \"checkIsRepo\",\n \"checkout\",\n \"checkoutBranch\",\n \"checkoutLatestTag\",\n \"checkoutLocalBranch\",\n \"clean\",\n \"clone\",\n \"commit\",\n \"cwd\",\n \"deleteLocalBranch\",\n \"deleteLocalBranches\",\n \"diff\",\n \"diffSummary\",\n \"exec\",\n \"fetch\",\n \"getRemotes\",\n \"init\",\n \"listConfig\",\n \"listRemote\",\n \"log\",\n \"merge\",\n \"mergeFromTo\",\n \"mirror\",\n \"mv\",\n \"pull\",\n \"push\",\n \"pushTags\",\n \"raw\",\n \"rebase\",\n \"remote\",\n \"removeRemote\",\n \"reset\",\n \"revert\",\n \"revparse\",\n \"rm\",\n \"rmKeepLocal\",\n \"show\",\n \"stash\",\n \"stashList\",\n \"status\",\n \"subModule\",\n \"submoduleAdd\",\n \"submoduleInit\",\n \"submoduleUpdate\",\n \"tag\",\n \"tags\",\n \"updateServerInfo\"\n];\nfunction gitP(...args) {\n let git;\n let chain = Promise.resolve();\n try {\n git = gitInstanceFactory(...args);\n } catch (e) {\n chain = Promise.reject(e);\n }\n function builderReturn() {\n return promiseApi;\n }\n function chainReturn() {\n return chain;\n }\n const promiseApi = [...functionNamesBuilderApi, ...functionNamesPromiseApi].reduce(\n (api, name) => {\n const isAsync = functionNamesPromiseApi.includes(name);\n const valid = isAsync ? asyncWrapper(name, git) : syncWrapper(name, git, api);\n const alternative = isAsync ? chainReturn : builderReturn;\n Object.defineProperty(api, name, {\n enumerable: false,\n configurable: false,\n value: git ? valid : alternative\n });\n return api;\n },\n {}\n );\n return promiseApi;\n function asyncWrapper(fn, git2) {\n return function(...args2) {\n if (typeof args2[args2.length] === \"function\") {\n throw new TypeError(\n \"Promise interface requires that handlers are not supplied inline, trailing function not allowed in call to \" + fn\n );\n }\n return chain.then(function() {\n return new Promise(function(resolve, reject) {\n const callback = (err, result) => {\n if (err) {\n return reject(toError(err));\n }\n resolve(result);\n };\n args2.push(callback);\n git2[fn].apply(git2, args2);\n });\n });\n };\n }\n function syncWrapper(fn, git2, api) {\n return (...args2) => {\n git2[fn](...args2);\n return api;\n };\n }\n}\nfunction toError(error) {\n if (error instanceof Error) {\n return error;\n }\n if (typeof error === \"string\") {\n return new Error(error);\n }\n return new GitResponseError(error);\n}\n\n// src/esm.mjs\nvar simpleGit = gitInstanceFactory;\nvar esm_default = gitInstanceFactory;\nexport {\n CheckRepoActions,\n CleanOptions,\n DiffNameStatus,\n GitConfigScope,\n GitConstructError,\n GitError,\n GitPluginError,\n GitResponseError,\n ResetMode,\n TaskConfigurationError,\n esm_default as default,\n gitP,\n grepQueryBuilder,\n pathspec,\n simpleGit\n};\n//# sourceMappingURL=index.js.map\n","\n;(function (name, root, factory) {\n if (typeof exports === 'object') {\n module.exports = factory()\n module.exports['default'] = factory()\n }\n /* istanbul ignore next */\n else if (typeof define === 'function' && define.amd) {\n define(factory)\n }\n else {\n root[name] = factory()\n }\n}('slugify', this, function () {\n var charMap = JSON.parse('{\"$\":\"dollar\",\"%\":\"percent\",\"&\":\"and\",\"<\":\"less\",\">\":\"greater\",\"|\":\"or\",\"¢\":\"cent\",\"£\":\"pound\",\"¤\":\"currency\",\"¥\":\"yen\",\"©\":\"(c)\",\"ª\":\"a\",\"®\":\"(r)\",\"º\":\"o\",\"À\":\"A\",\"Á\":\"A\",\"Â\":\"A\",\"Ã\":\"A\",\"Ä\":\"A\",\"Å\":\"A\",\"Æ\":\"AE\",\"Ç\":\"C\",\"È\":\"E\",\"É\":\"E\",\"Ê\":\"E\",\"Ë\":\"E\",\"Ì\":\"I\",\"Í\":\"I\",\"Î\":\"I\",\"Ï\":\"I\",\"Ð\":\"D\",\"Ñ\":\"N\",\"Ò\":\"O\",\"Ó\":\"O\",\"Ô\":\"O\",\"Õ\":\"O\",\"Ö\":\"O\",\"Ø\":\"O\",\"Ù\":\"U\",\"Ú\":\"U\",\"Û\":\"U\",\"Ü\":\"U\",\"Ý\":\"Y\",\"Þ\":\"TH\",\"ß\":\"ss\",\"à\":\"a\",\"á\":\"a\",\"â\":\"a\",\"ã\":\"a\",\"ä\":\"a\",\"å\":\"a\",\"æ\":\"ae\",\"ç\":\"c\",\"è\":\"e\",\"é\":\"e\",\"ê\":\"e\",\"ë\":\"e\",\"ì\":\"i\",\"í\":\"i\",\"î\":\"i\",\"ï\":\"i\",\"ð\":\"d\",\"ñ\":\"n\",\"ò\":\"o\",\"ó\":\"o\",\"ô\":\"o\",\"õ\":\"o\",\"ö\":\"o\",\"ø\":\"o\",\"ù\":\"u\",\"ú\":\"u\",\"û\":\"u\",\"ü\":\"u\",\"ý\":\"y\",\"þ\":\"th\",\"ÿ\":\"y\",\"Ā\":\"A\",\"ā\":\"a\",\"Ă\":\"A\",\"ă\":\"a\",\"Ą\":\"A\",\"ą\":\"a\",\"Ć\":\"C\",\"ć\":\"c\",\"Č\":\"C\",\"č\":\"c\",\"Ď\":\"D\",\"ď\":\"d\",\"Đ\":\"DJ\",\"đ\":\"dj\",\"Ē\":\"E\",\"ē\":\"e\",\"Ė\":\"E\",\"ė\":\"e\",\"Ę\":\"e\",\"ę\":\"e\",\"Ě\":\"E\",\"ě\":\"e\",\"Ğ\":\"G\",\"ğ\":\"g\",\"Ģ\":\"G\",\"ģ\":\"g\",\"Ĩ\":\"I\",\"ĩ\":\"i\",\"Ī\":\"i\",\"ī\":\"i\",\"Į\":\"I\",\"į\":\"i\",\"İ\":\"I\",\"ı\":\"i\",\"Ķ\":\"k\",\"ķ\":\"k\",\"Ļ\":\"L\",\"ļ\":\"l\",\"Ľ\":\"L\",\"ľ\":\"l\",\"Ł\":\"L\",\"ł\":\"l\",\"Ń\":\"N\",\"ń\":\"n\",\"Ņ\":\"N\",\"ņ\":\"n\",\"Ň\":\"N\",\"ň\":\"n\",\"Ō\":\"O\",\"ō\":\"o\",\"Ő\":\"O\",\"ő\":\"o\",\"Œ\":\"OE\",\"œ\":\"oe\",\"Ŕ\":\"R\",\"ŕ\":\"r\",\"Ř\":\"R\",\"ř\":\"r\",\"Ś\":\"S\",\"ś\":\"s\",\"Ş\":\"S\",\"ş\":\"s\",\"Š\":\"S\",\"š\":\"s\",\"Ţ\":\"T\",\"ţ\":\"t\",\"Ť\":\"T\",\"ť\":\"t\",\"Ũ\":\"U\",\"ũ\":\"u\",\"Ū\":\"u\",\"ū\":\"u\",\"Ů\":\"U\",\"ů\":\"u\",\"Ű\":\"U\",\"ű\":\"u\",\"Ų\":\"U\",\"ų\":\"u\",\"Ŵ\":\"W\",\"ŵ\":\"w\",\"Ŷ\":\"Y\",\"ŷ\":\"y\",\"Ÿ\":\"Y\",\"Ź\":\"Z\",\"ź\":\"z\",\"Ż\":\"Z\",\"ż\":\"z\",\"Ž\":\"Z\",\"ž\":\"z\",\"Ə\":\"E\",\"ƒ\":\"f\",\"Ơ\":\"O\",\"ơ\":\"o\",\"Ư\":\"U\",\"ư\":\"u\",\"Lj\":\"LJ\",\"lj\":\"lj\",\"Nj\":\"NJ\",\"nj\":\"nj\",\"Ș\":\"S\",\"ș\":\"s\",\"Ț\":\"T\",\"ț\":\"t\",\"ə\":\"e\",\"˚\":\"o\",\"Ά\":\"A\",\"Έ\":\"E\",\"Ή\":\"H\",\"Ί\":\"I\",\"Ό\":\"O\",\"Ύ\":\"Y\",\"Ώ\":\"W\",\"ΐ\":\"i\",\"Α\":\"A\",\"Β\":\"B\",\"Γ\":\"G\",\"Δ\":\"D\",\"Ε\":\"E\",\"Ζ\":\"Z\",\"Η\":\"H\",\"Θ\":\"8\",\"Ι\":\"I\",\"Κ\":\"K\",\"Λ\":\"L\",\"Μ\":\"M\",\"Ν\":\"N\",\"Ξ\":\"3\",\"Ο\":\"O\",\"Π\":\"P\",\"Ρ\":\"R\",\"Σ\":\"S\",\"Τ\":\"T\",\"Υ\":\"Y\",\"Φ\":\"F\",\"Χ\":\"X\",\"Ψ\":\"PS\",\"Ω\":\"W\",\"Ϊ\":\"I\",\"Ϋ\":\"Y\",\"ά\":\"a\",\"έ\":\"e\",\"ή\":\"h\",\"ί\":\"i\",\"ΰ\":\"y\",\"α\":\"a\",\"β\":\"b\",\"γ\":\"g\",\"δ\":\"d\",\"ε\":\"e\",\"ζ\":\"z\",\"η\":\"h\",\"θ\":\"8\",\"ι\":\"i\",\"κ\":\"k\",\"λ\":\"l\",\"μ\":\"m\",\"ν\":\"n\",\"ξ\":\"3\",\"ο\":\"o\",\"π\":\"p\",\"ρ\":\"r\",\"ς\":\"s\",\"σ\":\"s\",\"τ\":\"t\",\"υ\":\"y\",\"φ\":\"f\",\"χ\":\"x\",\"ψ\":\"ps\",\"ω\":\"w\",\"ϊ\":\"i\",\"ϋ\":\"y\",\"ό\":\"o\",\"ύ\":\"y\",\"ώ\":\"w\",\"Ё\":\"Yo\",\"Ђ\":\"DJ\",\"Є\":\"Ye\",\"І\":\"I\",\"Ї\":\"Yi\",\"Ј\":\"J\",\"Љ\":\"LJ\",\"Њ\":\"NJ\",\"Ћ\":\"C\",\"Џ\":\"DZ\",\"А\":\"A\",\"Б\":\"B\",\"В\":\"V\",\"Г\":\"G\",\"Д\":\"D\",\"Е\":\"E\",\"Ж\":\"Zh\",\"З\":\"Z\",\"И\":\"I\",\"Й\":\"J\",\"К\":\"K\",\"Л\":\"L\",\"М\":\"M\",\"Н\":\"N\",\"О\":\"O\",\"П\":\"P\",\"Р\":\"R\",\"С\":\"S\",\"Т\":\"T\",\"У\":\"U\",\"Ф\":\"F\",\"Х\":\"H\",\"Ц\":\"C\",\"Ч\":\"Ch\",\"Ш\":\"Sh\",\"Щ\":\"Sh\",\"Ъ\":\"U\",\"Ы\":\"Y\",\"Ь\":\"\",\"Э\":\"E\",\"Ю\":\"Yu\",\"Я\":\"Ya\",\"а\":\"a\",\"б\":\"b\",\"в\":\"v\",\"г\":\"g\",\"д\":\"d\",\"е\":\"e\",\"ж\":\"zh\",\"з\":\"z\",\"и\":\"i\",\"й\":\"j\",\"к\":\"k\",\"л\":\"l\",\"м\":\"m\",\"н\":\"n\",\"о\":\"o\",\"п\":\"p\",\"р\":\"r\",\"с\":\"s\",\"т\":\"t\",\"у\":\"u\",\"ф\":\"f\",\"х\":\"h\",\"ц\":\"c\",\"ч\":\"ch\",\"ш\":\"sh\",\"щ\":\"sh\",\"ъ\":\"u\",\"ы\":\"y\",\"ь\":\"\",\"э\":\"e\",\"ю\":\"yu\",\"я\":\"ya\",\"ё\":\"yo\",\"ђ\":\"dj\",\"є\":\"ye\",\"і\":\"i\",\"ї\":\"yi\",\"ј\":\"j\",\"љ\":\"lj\",\"њ\":\"nj\",\"ћ\":\"c\",\"ѝ\":\"u\",\"џ\":\"dz\",\"Ґ\":\"G\",\"ґ\":\"g\",\"Ғ\":\"GH\",\"ғ\":\"gh\",\"Қ\":\"KH\",\"қ\":\"kh\",\"Ң\":\"NG\",\"ң\":\"ng\",\"Ү\":\"UE\",\"ү\":\"ue\",\"Ұ\":\"U\",\"ұ\":\"u\",\"Һ\":\"H\",\"һ\":\"h\",\"Ә\":\"AE\",\"ә\":\"ae\",\"Ө\":\"OE\",\"ө\":\"oe\",\"Ա\":\"A\",\"Բ\":\"B\",\"Գ\":\"G\",\"Դ\":\"D\",\"Ե\":\"E\",\"Զ\":\"Z\",\"Է\":\"E\\'\",\"Ը\":\"Y\\'\",\"Թ\":\"T\\'\",\"Ժ\":\"JH\",\"Ի\":\"I\",\"Լ\":\"L\",\"Խ\":\"X\",\"Ծ\":\"C\\'\",\"Կ\":\"K\",\"Հ\":\"H\",\"Ձ\":\"D\\'\",\"Ղ\":\"GH\",\"Ճ\":\"TW\",\"Մ\":\"M\",\"Յ\":\"Y\",\"Ն\":\"N\",\"Շ\":\"SH\",\"Չ\":\"CH\",\"Պ\":\"P\",\"Ջ\":\"J\",\"Ռ\":\"R\\'\",\"Ս\":\"S\",\"Վ\":\"V\",\"Տ\":\"T\",\"Ր\":\"R\",\"Ց\":\"C\",\"Փ\":\"P\\'\",\"Ք\":\"Q\\'\",\"Օ\":\"O\\'\\'\",\"Ֆ\":\"F\",\"և\":\"EV\",\"ء\":\"a\",\"آ\":\"aa\",\"أ\":\"a\",\"ؤ\":\"u\",\"إ\":\"i\",\"ئ\":\"e\",\"ا\":\"a\",\"ب\":\"b\",\"ة\":\"h\",\"ت\":\"t\",\"ث\":\"th\",\"ج\":\"j\",\"ح\":\"h\",\"خ\":\"kh\",\"د\":\"d\",\"ذ\":\"th\",\"ر\":\"r\",\"ز\":\"z\",\"س\":\"s\",\"ش\":\"sh\",\"ص\":\"s\",\"ض\":\"dh\",\"ط\":\"t\",\"ظ\":\"z\",\"ع\":\"a\",\"غ\":\"gh\",\"ف\":\"f\",\"ق\":\"q\",\"ك\":\"k\",\"ل\":\"l\",\"م\":\"m\",\"ن\":\"n\",\"ه\":\"h\",\"و\":\"w\",\"ى\":\"a\",\"ي\":\"y\",\"ً\":\"an\",\"ٌ\":\"on\",\"ٍ\":\"en\",\"َ\":\"a\",\"ُ\":\"u\",\"ِ\":\"e\",\"ْ\":\"\",\"٠\":\"0\",\"١\":\"1\",\"٢\":\"2\",\"٣\":\"3\",\"٤\":\"4\",\"٥\":\"5\",\"٦\":\"6\",\"٧\":\"7\",\"٨\":\"8\",\"٩\":\"9\",\"پ\":\"p\",\"چ\":\"ch\",\"ژ\":\"zh\",\"ک\":\"k\",\"گ\":\"g\",\"ی\":\"y\",\"۰\":\"0\",\"۱\":\"1\",\"۲\":\"2\",\"۳\":\"3\",\"۴\":\"4\",\"۵\":\"5\",\"۶\":\"6\",\"۷\":\"7\",\"۸\":\"8\",\"۹\":\"9\",\"฿\":\"baht\",\"ა\":\"a\",\"ბ\":\"b\",\"გ\":\"g\",\"დ\":\"d\",\"ე\":\"e\",\"ვ\":\"v\",\"ზ\":\"z\",\"თ\":\"t\",\"ი\":\"i\",\"კ\":\"k\",\"ლ\":\"l\",\"მ\":\"m\",\"ნ\":\"n\",\"ო\":\"o\",\"პ\":\"p\",\"ჟ\":\"zh\",\"რ\":\"r\",\"ს\":\"s\",\"ტ\":\"t\",\"უ\":\"u\",\"ფ\":\"f\",\"ქ\":\"k\",\"ღ\":\"gh\",\"ყ\":\"q\",\"შ\":\"sh\",\"ჩ\":\"ch\",\"ც\":\"ts\",\"ძ\":\"dz\",\"წ\":\"ts\",\"ჭ\":\"ch\",\"ხ\":\"kh\",\"ჯ\":\"j\",\"ჰ\":\"h\",\"Ṣ\":\"S\",\"ṣ\":\"s\",\"Ẁ\":\"W\",\"ẁ\":\"w\",\"Ẃ\":\"W\",\"ẃ\":\"w\",\"Ẅ\":\"W\",\"ẅ\":\"w\",\"ẞ\":\"SS\",\"Ạ\":\"A\",\"ạ\":\"a\",\"Ả\":\"A\",\"ả\":\"a\",\"Ấ\":\"A\",\"ấ\":\"a\",\"Ầ\":\"A\",\"ầ\":\"a\",\"Ẩ\":\"A\",\"ẩ\":\"a\",\"Ẫ\":\"A\",\"ẫ\":\"a\",\"Ậ\":\"A\",\"ậ\":\"a\",\"Ắ\":\"A\",\"ắ\":\"a\",\"Ằ\":\"A\",\"ằ\":\"a\",\"Ẳ\":\"A\",\"ẳ\":\"a\",\"Ẵ\":\"A\",\"ẵ\":\"a\",\"Ặ\":\"A\",\"ặ\":\"a\",\"Ẹ\":\"E\",\"ẹ\":\"e\",\"Ẻ\":\"E\",\"ẻ\":\"e\",\"Ẽ\":\"E\",\"ẽ\":\"e\",\"Ế\":\"E\",\"ế\":\"e\",\"Ề\":\"E\",\"ề\":\"e\",\"Ể\":\"E\",\"ể\":\"e\",\"Ễ\":\"E\",\"ễ\":\"e\",\"Ệ\":\"E\",\"ệ\":\"e\",\"Ỉ\":\"I\",\"ỉ\":\"i\",\"Ị\":\"I\",\"ị\":\"i\",\"Ọ\":\"O\",\"ọ\":\"o\",\"Ỏ\":\"O\",\"ỏ\":\"o\",\"Ố\":\"O\",\"ố\":\"o\",\"Ồ\":\"O\",\"ồ\":\"o\",\"Ổ\":\"O\",\"ổ\":\"o\",\"Ỗ\":\"O\",\"ỗ\":\"o\",\"Ộ\":\"O\",\"ộ\":\"o\",\"Ớ\":\"O\",\"ớ\":\"o\",\"Ờ\":\"O\",\"ờ\":\"o\",\"Ở\":\"O\",\"ở\":\"o\",\"Ỡ\":\"O\",\"ỡ\":\"o\",\"Ợ\":\"O\",\"ợ\":\"o\",\"Ụ\":\"U\",\"ụ\":\"u\",\"Ủ\":\"U\",\"ủ\":\"u\",\"Ứ\":\"U\",\"ứ\":\"u\",\"Ừ\":\"U\",\"ừ\":\"u\",\"Ử\":\"U\",\"ử\":\"u\",\"Ữ\":\"U\",\"ữ\":\"u\",\"Ự\":\"U\",\"ự\":\"u\",\"Ỳ\":\"Y\",\"ỳ\":\"y\",\"Ỵ\":\"Y\",\"ỵ\":\"y\",\"Ỷ\":\"Y\",\"ỷ\":\"y\",\"Ỹ\":\"Y\",\"ỹ\":\"y\",\"–\":\"-\",\"‘\":\"\\'\",\"’\":\"\\'\",\"“\":\"\\\\\\\"\",\"”\":\"\\\\\\\"\",\"„\":\"\\\\\\\"\",\"†\":\"+\",\"•\":\"*\",\"…\":\"...\",\"₠\":\"ecu\",\"₢\":\"cruzeiro\",\"₣\":\"french franc\",\"₤\":\"lira\",\"₥\":\"mill\",\"₦\":\"naira\",\"₧\":\"peseta\",\"₨\":\"rupee\",\"₩\":\"won\",\"₪\":\"new shequel\",\"₫\":\"dong\",\"€\":\"euro\",\"₭\":\"kip\",\"₮\":\"tugrik\",\"₯\":\"drachma\",\"₰\":\"penny\",\"₱\":\"peso\",\"₲\":\"guarani\",\"₳\":\"austral\",\"₴\":\"hryvnia\",\"₵\":\"cedi\",\"₸\":\"kazakhstani tenge\",\"₹\":\"indian rupee\",\"₺\":\"turkish lira\",\"₽\":\"russian ruble\",\"₿\":\"bitcoin\",\"℠\":\"sm\",\"™\":\"tm\",\"∂\":\"d\",\"∆\":\"delta\",\"∑\":\"sum\",\"∞\":\"infinity\",\"♥\":\"love\",\"元\":\"yuan\",\"円\":\"yen\",\"﷼\":\"rial\",\"ﻵ\":\"laa\",\"ﻷ\":\"laa\",\"ﻹ\":\"lai\",\"ﻻ\":\"la\"}')\n var locales = JSON.parse('{\"bg\":{\"Й\":\"Y\",\"Ц\":\"Ts\",\"Щ\":\"Sht\",\"Ъ\":\"A\",\"Ь\":\"Y\",\"й\":\"y\",\"ц\":\"ts\",\"щ\":\"sht\",\"ъ\":\"a\",\"ь\":\"y\"},\"de\":{\"Ä\":\"AE\",\"ä\":\"ae\",\"Ö\":\"OE\",\"ö\":\"oe\",\"Ü\":\"UE\",\"ü\":\"ue\",\"ß\":\"ss\",\"%\":\"prozent\",\"&\":\"und\",\"|\":\"oder\",\"∑\":\"summe\",\"∞\":\"unendlich\",\"♥\":\"liebe\"},\"es\":{\"%\":\"por ciento\",\"&\":\"y\",\"<\":\"menor que\",\">\":\"mayor que\",\"|\":\"o\",\"¢\":\"centavos\",\"£\":\"libras\",\"¤\":\"moneda\",\"₣\":\"francos\",\"∑\":\"suma\",\"∞\":\"infinito\",\"♥\":\"amor\"},\"fr\":{\"%\":\"pourcent\",\"&\":\"et\",\"<\":\"plus petit\",\">\":\"plus grand\",\"|\":\"ou\",\"¢\":\"centime\",\"£\":\"livre\",\"¤\":\"devise\",\"₣\":\"franc\",\"∑\":\"somme\",\"∞\":\"infini\",\"♥\":\"amour\"},\"pt\":{\"%\":\"porcento\",\"&\":\"e\",\"<\":\"menor\",\">\":\"maior\",\"|\":\"ou\",\"¢\":\"centavo\",\"∑\":\"soma\",\"£\":\"libra\",\"∞\":\"infinito\",\"♥\":\"amor\"},\"uk\":{\"И\":\"Y\",\"и\":\"y\",\"Й\":\"Y\",\"й\":\"y\",\"Ц\":\"Ts\",\"ц\":\"ts\",\"Х\":\"Kh\",\"х\":\"kh\",\"Щ\":\"Shch\",\"щ\":\"shch\",\"Г\":\"H\",\"г\":\"h\"},\"vi\":{\"Đ\":\"D\",\"đ\":\"d\"},\"da\":{\"Ø\":\"OE\",\"ø\":\"oe\",\"Å\":\"AA\",\"å\":\"aa\",\"%\":\"procent\",\"&\":\"og\",\"|\":\"eller\",\"$\":\"dollar\",\"<\":\"mindre end\",\">\":\"større end\"},\"nb\":{\"&\":\"og\",\"Å\":\"AA\",\"Æ\":\"AE\",\"Ø\":\"OE\",\"å\":\"aa\",\"æ\":\"ae\",\"ø\":\"oe\"},\"it\":{\"&\":\"e\"},\"nl\":{\"&\":\"en\"},\"sv\":{\"&\":\"och\",\"Å\":\"AA\",\"Ä\":\"AE\",\"Ö\":\"OE\",\"å\":\"aa\",\"ä\":\"ae\",\"ö\":\"oe\"}}')\n\n function replace (string, options) {\n if (typeof string !== 'string') {\n throw new Error('slugify: string argument expected')\n }\n\n options = (typeof options === 'string')\n ? {replacement: options}\n : options || {}\n\n var locale = locales[options.locale] || {}\n\n var replacement = options.replacement === undefined ? '-' : options.replacement\n\n var trim = options.trim === undefined ? true : options.trim\n\n var slug = string.normalize().split('')\n // replace characters based on charMap\n .reduce(function (result, ch) {\n var appendChar = locale[ch];\n if (appendChar === undefined) appendChar = charMap[ch];\n if (appendChar === undefined) appendChar = ch;\n if (appendChar === replacement) appendChar = ' ';\n return result + appendChar\n // remove not allowed characters\n .replace(options.remove || /[^\\w\\s$*_+~.()'\"!\\-:@]+/g, '')\n }, '');\n\n if (options.strict) {\n slug = slug.replace(/[^A-Za-z0-9\\s]/g, '');\n }\n\n if (trim) {\n slug = slug.trim()\n }\n\n // Replace spaces with replacement character, treating multiple consecutive\n // spaces as a single space.\n slug = slug.replace(/\\s+/g, replacement);\n\n if (options.lower) {\n slug = slug.toLowerCase()\n }\n\n return slug\n }\n\n replace.extend = function (customMap) {\n Object.assign(charMap, customMap)\n }\n\n return replace\n}))\n","/**\r\n * Core — Shared utilities, constants, and internal helpers\r\n *\r\n * Ported from maxsim/bin/lib/core.cjs\r\n */\r\n\r\nimport fs from 'node:fs';\r\nimport path from 'node:path';\r\nimport os from 'node:os';\r\nimport { simpleGit } from 'simple-git';\r\nimport slugify from 'slugify';\r\n\r\nimport type {\r\n BranchingStrategy,\r\n ModelProfiles,\r\n ModelProfileName,\r\n ModelResolution,\r\n AgentType,\r\n PhaseSearchResult,\r\n RoadmapPhaseInfo,\r\n ArchivedPhaseDir,\r\n GitResult,\r\n MilestoneInfo,\r\n AppConfig,\r\n} from './types.js';\r\n\r\n// ─── Model Profile Table ─────────────────────────────────────────────────────\r\n\r\nexport const MODEL_PROFILES: ModelProfiles = {\r\n 'maxsim-planner': { quality: 'opus', balanced: 'opus', budget: 'sonnet', tokenburner: 'opus' },\r\n 'maxsim-roadmapper': { quality: 'opus', balanced: 'sonnet', budget: 'sonnet', tokenburner: 'opus' },\r\n 'maxsim-executor': { quality: 'opus', balanced: 'sonnet', budget: 'sonnet', tokenburner: 'opus' },\r\n 'maxsim-phase-researcher': { quality: 'opus', balanced: 'sonnet', budget: 'haiku', tokenburner: 'opus' },\r\n 'maxsim-project-researcher': { quality: 'opus', balanced: 'sonnet', budget: 'haiku', tokenburner: 'opus' },\r\n 'maxsim-research-synthesizer': { quality: 'sonnet', balanced: 'sonnet', budget: 'haiku', tokenburner: 'opus' },\r\n 'maxsim-debugger': { quality: 'opus', balanced: 'sonnet', budget: 'sonnet', tokenburner: 'opus' },\r\n 'maxsim-codebase-mapper': { quality: 'sonnet', balanced: 'haiku', budget: 'haiku', tokenburner: 'opus' },\r\n 'maxsim-verifier': { quality: 'sonnet', balanced: 'sonnet', budget: 'haiku', tokenburner: 'opus' },\r\n 'maxsim-plan-checker': { quality: 'sonnet', balanced: 'sonnet', budget: 'haiku', tokenburner: 'opus' },\r\n 'maxsim-integration-checker': { quality: 'sonnet', balanced: 'sonnet', budget: 'haiku', tokenburner: 'opus' },\r\n};\r\n\r\n// ─── Output helpers ──────────────────────────────────────────────────────────\r\n// These throw CliOutput / CliError instead of calling process.exit() directly.\r\n// The CLI entry point (cli.ts) catches these and calls process.exit() there.\r\n\r\n/** Thrown by output() to signal successful command completion. */\r\nexport class CliOutput {\r\n readonly result: unknown;\r\n readonly raw: boolean;\r\n readonly rawValue: unknown;\r\n constructor(result: unknown, raw?: boolean, rawValue?: unknown) {\r\n this.result = result;\r\n this.raw = raw ?? false;\r\n this.rawValue = rawValue;\r\n }\r\n}\r\n\r\n/** Thrown by error() to signal a command error. */\r\nexport class CliError {\r\n readonly message: string;\r\n constructor(message: string) {\r\n this.message = message;\r\n }\r\n}\r\n\r\nexport function output(result: unknown, raw?: boolean, rawValue?: unknown): never {\r\n throw new CliOutput(result, raw, rawValue);\r\n}\r\n\r\nexport function error(message: string): never {\r\n throw new CliError(message);\r\n}\r\n\r\n/** Re-throw CliOutput/CliError signals so catch blocks don't intercept them */\r\nexport function rethrowCliSignals(e: unknown): void {\r\n if (e instanceof CliOutput || e instanceof CliError) throw e;\r\n}\r\n\r\n/**\r\n * Handle a CliOutput by writing to stdout. Extracted so cli.ts can use it.\r\n */\r\nexport function writeOutput(out: CliOutput): void {\r\n if (out.raw && out.rawValue !== undefined) {\r\n process.stdout.write(String(out.rawValue));\r\n } else {\r\n const json = JSON.stringify(out.result, null, 2);\r\n if (json.length > 50000) {\r\n const tmpPath = path.join(os.tmpdir(), `maxsim-${Date.now()}.json`);\r\n fs.writeFileSync(tmpPath, json, 'utf-8');\r\n process.stdout.write('@file:' + tmpPath);\r\n } else {\r\n process.stdout.write(json);\r\n }\r\n }\r\n}\r\n\r\n// ─── Shared micro-utilities ─────────────────────────────────────────────────\r\n\r\n/** Today's date as YYYY-MM-DD. */\r\nexport function todayISO(): string {\r\n return new Date().toISOString().split('T')[0];\r\n}\r\n\r\n/** Canonical .planning/ sub-paths. */\r\nexport function planningPath(cwd: string, ...segments: string[]): string {\r\n return path.join(cwd, '.planning', ...segments);\r\n}\r\nexport function statePath(cwd: string): string { return planningPath(cwd, 'STATE.md'); }\r\nexport function roadmapPath(cwd: string): string { return planningPath(cwd, 'ROADMAP.md'); }\r\nexport function configPath(cwd: string): string { return planningPath(cwd, 'config.json'); }\r\nexport function phasesPath(cwd: string): string { return planningPath(cwd, 'phases'); }\r\n\r\n/** Phase-file predicates. */\r\nexport const isPlanFile = (f: string): boolean => f.endsWith('-PLAN.md') || f === 'PLAN.md';\r\nexport const isSummaryFile = (f: string): boolean => f.endsWith('-SUMMARY.md') || f === 'SUMMARY.md';\r\n\r\n/** Strip suffix to get plan/summary ID. */\r\nexport const planId = (f: string): string => f.replace('-PLAN.md', '').replace('PLAN.md', '');\r\nexport const summaryId = (f: string): string => f.replace('-SUMMARY.md', '').replace('SUMMARY.md', '');\r\n\r\n/** List subdirectory names, optionally sorted by phase number. */\r\nexport function listSubDirs(dir: string, sortByPhase = false): string[] {\r\n const dirs = fs.readdirSync(dir, { withFileTypes: true })\r\n .filter(e => e.isDirectory())\r\n .map(e => e.name);\r\n return sortByPhase ? dirs.sort((a, b) => comparePhaseNum(a, b)) : dirs;\r\n}\r\n\r\n/** Log only when MAXSIM_DEBUG is set. */\r\nexport function debugLog(e: unknown): void {\r\n if (process.env.MAXSIM_DEBUG) console.error(e);\r\n}\r\n\r\n/** Escape a phase number for use in regex. */\r\nexport function escapePhaseNum(phase: string | number): string {\r\n return String(phase).replace(/\\./g, '\\\\.');\r\n}\r\n\r\n// ─── File & Config utilities ─────────────────────────────────────────────────\r\n\r\nexport function safeReadFile(filePath: string): string | null {\r\n try {\r\n return fs.readFileSync(filePath, 'utf-8');\r\n } catch {\r\n return null;\r\n }\r\n}\r\n\r\nlet _configCache: { cwd: string; config: AppConfig } | null = null;\r\n\r\nexport function loadConfig(cwd: string): AppConfig {\r\n if (_configCache && _configCache.cwd === cwd) return _configCache.config;\r\n const cfgPath = configPath(cwd);\r\n const defaults: AppConfig = {\r\n model_profile: 'balanced',\r\n commit_docs: true,\r\n search_gitignored: false,\r\n branching_strategy: 'none',\r\n phase_branch_template: 'maxsim/phase-{phase}-{slug}',\r\n milestone_branch_template: 'maxsim/{milestone}-{slug}',\r\n research: true,\r\n plan_checker: true,\r\n verifier: true,\r\n parallelization: true,\r\n brave_search: false,\r\n };\r\n\r\n try {\r\n const raw = fs.readFileSync(cfgPath, 'utf-8');\r\n const parsed: Record = JSON.parse(raw) as Record;\r\n\r\n const get = (key: string, nested?: { section: string; field: string }): unknown => {\r\n if (parsed[key] !== undefined) return parsed[key];\r\n if (nested) {\r\n const section = parsed[nested.section];\r\n if (section && typeof section === 'object' && section !== null && nested.field in section) {\r\n return (section as Record)[nested.field];\r\n }\r\n }\r\n return undefined;\r\n };\r\n\r\n const parallelization = ((): boolean => {\r\n const val = get('parallelization');\r\n if (typeof val === 'boolean') return val;\r\n if (typeof val === 'object' && val !== null && 'enabled' in val) {\r\n return (val as { enabled: boolean }).enabled;\r\n }\r\n return defaults.parallelization;\r\n })();\r\n\r\n const result: AppConfig = {\r\n model_profile: (get('model_profile') as ModelProfileName | undefined) ?? defaults.model_profile,\r\n commit_docs: (get('commit_docs', { section: 'planning', field: 'commit_docs' }) as boolean | undefined) ?? defaults.commit_docs,\r\n search_gitignored: (get('search_gitignored', { section: 'planning', field: 'search_gitignored' }) as boolean | undefined) ?? defaults.search_gitignored,\r\n branching_strategy: (get('branching_strategy', { section: 'git', field: 'branching_strategy' }) as BranchingStrategy | undefined) ?? defaults.branching_strategy,\r\n phase_branch_template: (get('phase_branch_template', { section: 'git', field: 'phase_branch_template' }) as string | undefined) ?? defaults.phase_branch_template,\r\n milestone_branch_template: (get('milestone_branch_template', { section: 'git', field: 'milestone_branch_template' }) as string | undefined) ?? defaults.milestone_branch_template,\r\n research: (get('research', { section: 'workflow', field: 'research' }) as boolean | undefined) ?? defaults.research,\r\n plan_checker: ((get('plan_checker', { section: 'workflow', field: 'plan_checker' }) ?? get('plan_checker', { section: 'workflow', field: 'plan_check' })) as boolean | undefined) ?? defaults.plan_checker,\r\n verifier: (get('verifier', { section: 'workflow', field: 'verifier' }) as boolean | undefined) ?? defaults.verifier,\r\n parallelization,\r\n brave_search: (get('brave_search') as boolean | undefined) ?? defaults.brave_search,\r\n model_overrides: parsed['model_overrides'] as AppConfig['model_overrides'],\r\n };\r\n _configCache = { cwd, config: result };\r\n return result;\r\n } catch {\r\n _configCache = { cwd, config: defaults };\r\n return defaults;\r\n }\r\n}\r\n\r\n// ─── Git utilities ───────────────────────────────────────────────────────────\r\n\r\nexport async function isGitIgnored(cwd: string, targetPath: string): Promise {\r\n try {\r\n const git = simpleGit(cwd);\r\n const result = await git.checkIgnore(targetPath);\r\n return result.length > 0;\r\n } catch {\r\n return false;\r\n }\r\n}\r\n\r\nexport async function execGit(cwd: string, args: string[]): Promise {\r\n try {\r\n const git = simpleGit(cwd);\r\n const stdout = await git.raw(args);\r\n return { exitCode: 0, stdout: (stdout ?? '').trim(), stderr: '' };\r\n } catch (thrown: unknown) {\r\n const err = thrown as { message?: string };\r\n // simple-git throws on non-zero exit — extract what we can\r\n const message = err.message ?? '';\r\n return {\r\n exitCode: 1,\r\n stdout: '',\r\n stderr: message,\r\n };\r\n }\r\n}\r\n\r\n// ─── Phase utilities ─────────────────────────────────────────────────────────\r\n\r\nexport function normalizePhaseName(phase: string): string {\r\n const match = phase.match(/^(\\d+)([A-Z])?(\\.\\d+)?/i);\r\n if (!match) return phase;\r\n const padded = match[1].padStart(2, '0');\r\n const letter = match[2] ? match[2].toUpperCase() : '';\r\n const decimal = match[3] || '';\r\n return padded + letter + decimal;\r\n}\r\n\r\nexport function comparePhaseNum(a: string | number, b: string | number): number {\r\n const pa = String(a).match(/^(\\d+)([A-Z])?(\\.\\d+)?/i);\r\n const pb = String(b).match(/^(\\d+)([A-Z])?(\\.\\d+)?/i);\r\n if (!pa || !pb) return String(a).localeCompare(String(b));\r\n const intDiff = parseInt(pa[1], 10) - parseInt(pb[1], 10);\r\n if (intDiff !== 0) return intDiff;\r\n const la = (pa[2] || '').toUpperCase();\r\n const lb = (pb[2] || '').toUpperCase();\r\n if (la !== lb) {\r\n if (!la) return -1;\r\n if (!lb) return 1;\r\n return la < lb ? -1 : 1;\r\n }\r\n const da = pa[3] ? parseFloat(pa[3]) : -1;\r\n const db = pb[3] ? parseFloat(pb[3]) : -1;\r\n return da - db;\r\n}\r\n\r\n// ─── Phase regex helper ──────────────────────────────────────────────────────\r\n\r\n/**\r\n * Returns the canonical regex for matching Phase heading lines in ROADMAP.md.\r\n *\r\n * General form (no escapedPhaseNum):\r\n * Matches: ## Phase 03: Name Here\r\n * Group 1: phase number string (e.g. \"03\", \"3A\", \"2.1\")\r\n * Group 2: phase name string (e.g. \"Name Here\")\r\n *\r\n * Specific form (with escapedPhaseNum):\r\n * Matches: ## Phase 03: Name Here\r\n * Group 1: phase name string only\r\n *\r\n * @param escapedPhaseNum - regex-escaped phase number string to match a specific phase\r\n * @param flags - regex flags (default: 'gi')\r\n */\r\nexport function getPhasePattern(escapedPhaseNum?: string, flags = 'gim'): RegExp {\r\n if (escapedPhaseNum) {\r\n return new RegExp(\r\n `^#{2,4}\\\\s*Phase\\\\s+${escapedPhaseNum}:\\\\s*([^\\\\n]+)`,\r\n flags,\r\n );\r\n }\r\n return new RegExp(\r\n `^#{2,4}\\\\s*Phase\\\\s+(\\\\d+[A-Z]?(?:\\\\.\\\\d+)?)\\\\s*:\\\\s*([^\\\\n]+)`,\r\n flags,\r\n );\r\n}\r\n\r\nfunction searchPhaseInDir(baseDir: string, relBase: string, normalized: string): PhaseSearchResult | null {\r\n try {\r\n const dirs = listSubDirs(baseDir, true);\r\n const match = dirs.find(d => d.startsWith(normalized));\r\n if (!match) return null;\r\n\r\n const dirMatch = match.match(/^(\\d+[A-Z]?(?:\\.\\d+)?)-?(.*)/i);\r\n const phaseNumber = dirMatch ? dirMatch[1] : normalized;\r\n const phaseName = dirMatch && dirMatch[2] ? dirMatch[2] : null;\r\n const phaseDir = path.join(baseDir, match);\r\n const phaseFiles = fs.readdirSync(phaseDir);\r\n\r\n const plans = phaseFiles.filter(isPlanFile).sort();\r\n const summaries = phaseFiles.filter(isSummaryFile).sort();\r\n const hasResearch = phaseFiles.some(f => f.endsWith('-RESEARCH.md') || f === 'RESEARCH.md');\r\n const hasContext = phaseFiles.some(f => f.endsWith('-CONTEXT.md') || f === 'CONTEXT.md');\r\n const hasVerification = phaseFiles.some(f => f.endsWith('-VERIFICATION.md') || f === 'VERIFICATION.md');\r\n\r\n const completedPlanIds = new Set(summaries.map(summaryId));\r\n const incompletePlans = plans.filter(p => !completedPlanIds.has(planId(p)));\r\n\r\n return {\r\n found: true,\r\n directory: path.join(relBase, match),\r\n phase_number: phaseNumber,\r\n phase_name: phaseName,\r\n phase_slug: phaseName ? phaseName.toLowerCase().replace(/[^a-z0-9]+/g, '-').replace(/^-+|-+$/g, '') : null,\r\n plans,\r\n summaries,\r\n incomplete_plans: incompletePlans,\r\n has_research: hasResearch,\r\n has_context: hasContext,\r\n has_verification: hasVerification,\r\n };\r\n } catch {\r\n return null;\r\n }\r\n}\r\n\r\nexport function findPhaseInternal(cwd: string, phase: string): PhaseSearchResult | null {\r\n if (!phase) return null;\r\n\r\n const pd = phasesPath(cwd);\r\n const normalized = normalizePhaseName(phase);\r\n\r\n const current = searchPhaseInDir(pd, path.join('.planning', 'phases'), normalized);\r\n if (current) return current;\r\n\r\n const milestonesDir = planningPath(cwd, 'milestones');\r\n\r\n try {\r\n fs.statSync(milestonesDir);\r\n } catch {\r\n return null;\r\n }\r\n\r\n try {\r\n const milestoneEntries = fs.readdirSync(milestonesDir, { withFileTypes: true });\r\n const archiveDirs = milestoneEntries\r\n .filter(e => e.isDirectory() && /^v[\\d.]+-phases$/.test(e.name))\r\n .map(e => e.name)\r\n .sort()\r\n .reverse();\r\n\r\n for (const archiveName of archiveDirs) {\r\n const versionMatch = archiveName.match(/^(v[\\d.]+)-phases$/);\r\n if (!versionMatch) continue;\r\n const version = versionMatch[1];\r\n const archivePath = path.join(milestonesDir, archiveName);\r\n const relBase = path.join('.planning', 'milestones', archiveName);\r\n const result = searchPhaseInDir(archivePath, relBase, normalized);\r\n if (result) {\r\n result.archived = version;\r\n return result;\r\n }\r\n }\r\n } catch (e) {\r\n debugLog(e);\r\n }\r\n\r\n return null;\r\n}\r\n\r\nexport function getArchivedPhaseDirs(cwd: string): ArchivedPhaseDir[] {\r\n const milestonesDir = planningPath(cwd, 'milestones');\r\n const results: ArchivedPhaseDir[] = [];\r\n\r\n try {\r\n const milestoneEntries = fs.readdirSync(milestonesDir, { withFileTypes: true });\r\n const phaseDirs = milestoneEntries\r\n .filter(e => e.isDirectory() && /^v[\\d.]+-phases$/.test(e.name))\r\n .map(e => e.name)\r\n .sort()\r\n .reverse();\r\n\r\n for (const archiveName of phaseDirs) {\r\n const versionMatch = archiveName.match(/^(v[\\d.]+)-phases$/);\r\n if (!versionMatch) continue;\r\n const version = versionMatch[1];\r\n const archivePath = path.join(milestonesDir, archiveName);\r\n const dirs = listSubDirs(archivePath, true);\r\n\r\n for (const dir of dirs) {\r\n results.push({\r\n name: dir,\r\n milestone: version,\r\n basePath: path.join('.planning', 'milestones', archiveName),\r\n fullPath: path.join(archivePath, dir),\r\n });\r\n }\r\n }\r\n } catch (e) {\r\n debugLog(e);\r\n }\r\n\r\n return results;\r\n}\r\n\r\n// ─── Roadmap & model utilities ───────────────────────────────────────────────\r\n\r\nexport function getRoadmapPhaseInternal(cwd: string, phaseNum: string | number): RoadmapPhaseInfo | null {\r\n if (!phaseNum) return null;\r\n const rp = roadmapPath(cwd);\r\n\r\n try {\r\n const content = fs.readFileSync(rp, 'utf-8');\r\n const escapedPhase = escapePhaseNum(phaseNum);\r\n const phasePattern = getPhasePattern(escapedPhase, 'i');\r\n const headerMatch = content.match(phasePattern);\r\n if (!headerMatch) return null;\r\n\r\n const phaseName = headerMatch[1].trim();\r\n const headerIndex = headerMatch.index!;\r\n const restOfContent = content.slice(headerIndex);\r\n const nextHeaderMatch = restOfContent.match(/\\n#{2,4}\\s+Phase\\s+\\d/i);\r\n const sectionEnd = nextHeaderMatch ? headerIndex + nextHeaderMatch.index! : content.length;\r\n const section = content.slice(headerIndex, sectionEnd).trim();\r\n\r\n const goalMatch = section.match(/\\*\\*Goal(?::\\*\\*|\\*\\*:)\\s*([^\\n]+)/i);\r\n const goal = goalMatch ? goalMatch[1].trim() : null;\r\n\r\n return {\r\n found: true,\r\n phase_number: phaseNum.toString(),\r\n phase_name: phaseName,\r\n goal,\r\n section,\r\n };\r\n } catch {\r\n return null;\r\n }\r\n}\r\n\r\nexport function resolveModelInternal(cwd: string, agentType: AgentType, config?: AppConfig): ModelResolution {\r\n config = config ?? loadConfig(cwd);\r\n\r\n const override = config.model_overrides?.[agentType];\r\n if (override) {\r\n return override === 'opus' ? 'inherit' : override;\r\n }\r\n\r\n const profile: ModelProfileName = config.model_profile || 'balanced';\r\n const agentModels = MODEL_PROFILES[agentType];\r\n if (!agentModels) return 'sonnet';\r\n const resolved = agentModels[profile] || agentModels['balanced'] || 'sonnet';\r\n return resolved === 'opus' ? 'inherit' : resolved;\r\n}\r\n\r\n// ─── Misc utilities ──────────────────────────────────────────────────────────\r\n\r\nexport function pathExistsInternal(cwd: string, targetPath: string): boolean {\r\n const fullPath = path.isAbsolute(targetPath) ? targetPath : path.join(cwd, targetPath);\r\n try {\r\n fs.statSync(fullPath);\r\n return true;\r\n } catch {\r\n return false;\r\n }\r\n}\r\n\r\nexport function generateSlugInternal(text: string | null | undefined): string | null {\r\n if (!text) return null;\r\n return slugify(text, { lower: true, strict: true });\r\n}\r\n\r\nexport function getMilestoneInfo(cwd: string): MilestoneInfo {\r\n try {\r\n const roadmap = fs.readFileSync(roadmapPath(cwd), 'utf-8');\r\n const versionMatch = roadmap.match(/v(\\d+\\.\\d+)/);\r\n const nameMatch = roadmap.match(/## .*v\\d+\\.\\d+[:\\s]+([^\\n(]+)/);\r\n return {\r\n version: versionMatch ? versionMatch[0] : 'v1.0',\r\n name: nameMatch ? nameMatch[1].trim() : 'milestone',\r\n };\r\n } catch {\r\n return { version: 'v1.0', name: 'milestone' };\r\n }\r\n}\r\n","'use strict';\n\nconst ALIAS = Symbol.for('yaml.alias');\nconst DOC = Symbol.for('yaml.document');\nconst MAP = Symbol.for('yaml.map');\nconst PAIR = Symbol.for('yaml.pair');\nconst SCALAR = Symbol.for('yaml.scalar');\nconst SEQ = Symbol.for('yaml.seq');\nconst NODE_TYPE = Symbol.for('yaml.node.type');\nconst isAlias = (node) => !!node && typeof node === 'object' && node[NODE_TYPE] === ALIAS;\nconst isDocument = (node) => !!node && typeof node === 'object' && node[NODE_TYPE] === DOC;\nconst isMap = (node) => !!node && typeof node === 'object' && node[NODE_TYPE] === MAP;\nconst isPair = (node) => !!node && typeof node === 'object' && node[NODE_TYPE] === PAIR;\nconst isScalar = (node) => !!node && typeof node === 'object' && node[NODE_TYPE] === SCALAR;\nconst isSeq = (node) => !!node && typeof node === 'object' && node[NODE_TYPE] === SEQ;\nfunction isCollection(node) {\n if (node && typeof node === 'object')\n switch (node[NODE_TYPE]) {\n case MAP:\n case SEQ:\n return true;\n }\n return false;\n}\nfunction isNode(node) {\n if (node && typeof node === 'object')\n switch (node[NODE_TYPE]) {\n case ALIAS:\n case MAP:\n case SCALAR:\n case SEQ:\n return true;\n }\n return false;\n}\nconst hasAnchor = (node) => (isScalar(node) || isCollection(node)) && !!node.anchor;\n\nexports.ALIAS = ALIAS;\nexports.DOC = DOC;\nexports.MAP = MAP;\nexports.NODE_TYPE = NODE_TYPE;\nexports.PAIR = PAIR;\nexports.SCALAR = SCALAR;\nexports.SEQ = SEQ;\nexports.hasAnchor = hasAnchor;\nexports.isAlias = isAlias;\nexports.isCollection = isCollection;\nexports.isDocument = isDocument;\nexports.isMap = isMap;\nexports.isNode = isNode;\nexports.isPair = isPair;\nexports.isScalar = isScalar;\nexports.isSeq = isSeq;\n","'use strict';\n\nvar identity = require('./nodes/identity.js');\n\nconst BREAK = Symbol('break visit');\nconst SKIP = Symbol('skip children');\nconst REMOVE = Symbol('remove node');\n/**\n * Apply a visitor to an AST node or document.\n *\n * Walks through the tree (depth-first) starting from `node`, calling a\n * `visitor` function with three arguments:\n * - `key`: For sequence values and map `Pair`, the node's index in the\n * collection. Within a `Pair`, `'key'` or `'value'`, correspondingly.\n * `null` for the root node.\n * - `node`: The current node.\n * - `path`: The ancestry of the current node.\n *\n * The return value of the visitor may be used to control the traversal:\n * - `undefined` (default): Do nothing and continue\n * - `visit.SKIP`: Do not visit the children of this node, continue with next\n * sibling\n * - `visit.BREAK`: Terminate traversal completely\n * - `visit.REMOVE`: Remove the current node, then continue with the next one\n * - `Node`: Replace the current node, then continue by visiting it\n * - `number`: While iterating the items of a sequence or map, set the index\n * of the next step. This is useful especially if the index of the current\n * node has changed.\n *\n * If `visitor` is a single function, it will be called with all values\n * encountered in the tree, including e.g. `null` values. Alternatively,\n * separate visitor functions may be defined for each `Map`, `Pair`, `Seq`,\n * `Alias` and `Scalar` node. To define the same visitor function for more than\n * one node type, use the `Collection` (map and seq), `Value` (map, seq & scalar)\n * and `Node` (alias, map, seq & scalar) targets. Of all these, only the most\n * specific defined one will be used for each node.\n */\nfunction visit(node, visitor) {\n const visitor_ = initVisitor(visitor);\n if (identity.isDocument(node)) {\n const cd = visit_(null, node.contents, visitor_, Object.freeze([node]));\n if (cd === REMOVE)\n node.contents = null;\n }\n else\n visit_(null, node, visitor_, Object.freeze([]));\n}\n// Without the `as symbol` casts, TS declares these in the `visit`\n// namespace using `var`, but then complains about that because\n// `unique symbol` must be `const`.\n/** Terminate visit traversal completely */\nvisit.BREAK = BREAK;\n/** Do not visit the children of the current node */\nvisit.SKIP = SKIP;\n/** Remove the current node */\nvisit.REMOVE = REMOVE;\nfunction visit_(key, node, visitor, path) {\n const ctrl = callVisitor(key, node, visitor, path);\n if (identity.isNode(ctrl) || identity.isPair(ctrl)) {\n replaceNode(key, path, ctrl);\n return visit_(key, ctrl, visitor, path);\n }\n if (typeof ctrl !== 'symbol') {\n if (identity.isCollection(node)) {\n path = Object.freeze(path.concat(node));\n for (let i = 0; i < node.items.length; ++i) {\n const ci = visit_(i, node.items[i], visitor, path);\n if (typeof ci === 'number')\n i = ci - 1;\n else if (ci === BREAK)\n return BREAK;\n else if (ci === REMOVE) {\n node.items.splice(i, 1);\n i -= 1;\n }\n }\n }\n else if (identity.isPair(node)) {\n path = Object.freeze(path.concat(node));\n const ck = visit_('key', node.key, visitor, path);\n if (ck === BREAK)\n return BREAK;\n else if (ck === REMOVE)\n node.key = null;\n const cv = visit_('value', node.value, visitor, path);\n if (cv === BREAK)\n return BREAK;\n else if (cv === REMOVE)\n node.value = null;\n }\n }\n return ctrl;\n}\n/**\n * Apply an async visitor to an AST node or document.\n *\n * Walks through the tree (depth-first) starting from `node`, calling a\n * `visitor` function with three arguments:\n * - `key`: For sequence values and map `Pair`, the node's index in the\n * collection. Within a `Pair`, `'key'` or `'value'`, correspondingly.\n * `null` for the root node.\n * - `node`: The current node.\n * - `path`: The ancestry of the current node.\n *\n * The return value of the visitor may be used to control the traversal:\n * - `Promise`: Must resolve to one of the following values\n * - `undefined` (default): Do nothing and continue\n * - `visit.SKIP`: Do not visit the children of this node, continue with next\n * sibling\n * - `visit.BREAK`: Terminate traversal completely\n * - `visit.REMOVE`: Remove the current node, then continue with the next one\n * - `Node`: Replace the current node, then continue by visiting it\n * - `number`: While iterating the items of a sequence or map, set the index\n * of the next step. This is useful especially if the index of the current\n * node has changed.\n *\n * If `visitor` is a single function, it will be called with all values\n * encountered in the tree, including e.g. `null` values. Alternatively,\n * separate visitor functions may be defined for each `Map`, `Pair`, `Seq`,\n * `Alias` and `Scalar` node. To define the same visitor function for more than\n * one node type, use the `Collection` (map and seq), `Value` (map, seq & scalar)\n * and `Node` (alias, map, seq & scalar) targets. Of all these, only the most\n * specific defined one will be used for each node.\n */\nasync function visitAsync(node, visitor) {\n const visitor_ = initVisitor(visitor);\n if (identity.isDocument(node)) {\n const cd = await visitAsync_(null, node.contents, visitor_, Object.freeze([node]));\n if (cd === REMOVE)\n node.contents = null;\n }\n else\n await visitAsync_(null, node, visitor_, Object.freeze([]));\n}\n// Without the `as symbol` casts, TS declares these in the `visit`\n// namespace using `var`, but then complains about that because\n// `unique symbol` must be `const`.\n/** Terminate visit traversal completely */\nvisitAsync.BREAK = BREAK;\n/** Do not visit the children of the current node */\nvisitAsync.SKIP = SKIP;\n/** Remove the current node */\nvisitAsync.REMOVE = REMOVE;\nasync function visitAsync_(key, node, visitor, path) {\n const ctrl = await callVisitor(key, node, visitor, path);\n if (identity.isNode(ctrl) || identity.isPair(ctrl)) {\n replaceNode(key, path, ctrl);\n return visitAsync_(key, ctrl, visitor, path);\n }\n if (typeof ctrl !== 'symbol') {\n if (identity.isCollection(node)) {\n path = Object.freeze(path.concat(node));\n for (let i = 0; i < node.items.length; ++i) {\n const ci = await visitAsync_(i, node.items[i], visitor, path);\n if (typeof ci === 'number')\n i = ci - 1;\n else if (ci === BREAK)\n return BREAK;\n else if (ci === REMOVE) {\n node.items.splice(i, 1);\n i -= 1;\n }\n }\n }\n else if (identity.isPair(node)) {\n path = Object.freeze(path.concat(node));\n const ck = await visitAsync_('key', node.key, visitor, path);\n if (ck === BREAK)\n return BREAK;\n else if (ck === REMOVE)\n node.key = null;\n const cv = await visitAsync_('value', node.value, visitor, path);\n if (cv === BREAK)\n return BREAK;\n else if (cv === REMOVE)\n node.value = null;\n }\n }\n return ctrl;\n}\nfunction initVisitor(visitor) {\n if (typeof visitor === 'object' &&\n (visitor.Collection || visitor.Node || visitor.Value)) {\n return Object.assign({\n Alias: visitor.Node,\n Map: visitor.Node,\n Scalar: visitor.Node,\n Seq: visitor.Node\n }, visitor.Value && {\n Map: visitor.Value,\n Scalar: visitor.Value,\n Seq: visitor.Value\n }, visitor.Collection && {\n Map: visitor.Collection,\n Seq: visitor.Collection\n }, visitor);\n }\n return visitor;\n}\nfunction callVisitor(key, node, visitor, path) {\n if (typeof visitor === 'function')\n return visitor(key, node, path);\n if (identity.isMap(node))\n return visitor.Map?.(key, node, path);\n if (identity.isSeq(node))\n return visitor.Seq?.(key, node, path);\n if (identity.isPair(node))\n return visitor.Pair?.(key, node, path);\n if (identity.isScalar(node))\n return visitor.Scalar?.(key, node, path);\n if (identity.isAlias(node))\n return visitor.Alias?.(key, node, path);\n return undefined;\n}\nfunction replaceNode(key, path, node) {\n const parent = path[path.length - 1];\n if (identity.isCollection(parent)) {\n parent.items[key] = node;\n }\n else if (identity.isPair(parent)) {\n if (key === 'key')\n parent.key = node;\n else\n parent.value = node;\n }\n else if (identity.isDocument(parent)) {\n parent.contents = node;\n }\n else {\n const pt = identity.isAlias(parent) ? 'alias' : 'scalar';\n throw new Error(`Cannot replace node with ${pt} parent`);\n }\n}\n\nexports.visit = visit;\nexports.visitAsync = visitAsync;\n","'use strict';\n\nvar identity = require('../nodes/identity.js');\nvar visit = require('../visit.js');\n\nconst escapeChars = {\n '!': '%21',\n ',': '%2C',\n '[': '%5B',\n ']': '%5D',\n '{': '%7B',\n '}': '%7D'\n};\nconst escapeTagName = (tn) => tn.replace(/[!,[\\]{}]/g, ch => escapeChars[ch]);\nclass Directives {\n constructor(yaml, tags) {\n /**\n * The directives-end/doc-start marker `---`. If `null`, a marker may still be\n * included in the document's stringified representation.\n */\n this.docStart = null;\n /** The doc-end marker `...`. */\n this.docEnd = false;\n this.yaml = Object.assign({}, Directives.defaultYaml, yaml);\n this.tags = Object.assign({}, Directives.defaultTags, tags);\n }\n clone() {\n const copy = new Directives(this.yaml, this.tags);\n copy.docStart = this.docStart;\n return copy;\n }\n /**\n * During parsing, get a Directives instance for the current document and\n * update the stream state according to the current version's spec.\n */\n atDocument() {\n const res = new Directives(this.yaml, this.tags);\n switch (this.yaml.version) {\n case '1.1':\n this.atNextDocument = true;\n break;\n case '1.2':\n this.atNextDocument = false;\n this.yaml = {\n explicit: Directives.defaultYaml.explicit,\n version: '1.2'\n };\n this.tags = Object.assign({}, Directives.defaultTags);\n break;\n }\n return res;\n }\n /**\n * @param onError - May be called even if the action was successful\n * @returns `true` on success\n */\n add(line, onError) {\n if (this.atNextDocument) {\n this.yaml = { explicit: Directives.defaultYaml.explicit, version: '1.1' };\n this.tags = Object.assign({}, Directives.defaultTags);\n this.atNextDocument = false;\n }\n const parts = line.trim().split(/[ \\t]+/);\n const name = parts.shift();\n switch (name) {\n case '%TAG': {\n if (parts.length !== 2) {\n onError(0, '%TAG directive should contain exactly two parts');\n if (parts.length < 2)\n return false;\n }\n const [handle, prefix] = parts;\n this.tags[handle] = prefix;\n return true;\n }\n case '%YAML': {\n this.yaml.explicit = true;\n if (parts.length !== 1) {\n onError(0, '%YAML directive should contain exactly one part');\n return false;\n }\n const [version] = parts;\n if (version === '1.1' || version === '1.2') {\n this.yaml.version = version;\n return true;\n }\n else {\n const isValid = /^\\d+\\.\\d+$/.test(version);\n onError(6, `Unsupported YAML version ${version}`, isValid);\n return false;\n }\n }\n default:\n onError(0, `Unknown directive ${name}`, true);\n return false;\n }\n }\n /**\n * Resolves a tag, matching handles to those defined in %TAG directives.\n *\n * @returns Resolved tag, which may also be the non-specific tag `'!'` or a\n * `'!local'` tag, or `null` if unresolvable.\n */\n tagName(source, onError) {\n if (source === '!')\n return '!'; // non-specific tag\n if (source[0] !== '!') {\n onError(`Not a valid tag: ${source}`);\n return null;\n }\n if (source[1] === '<') {\n const verbatim = source.slice(2, -1);\n if (verbatim === '!' || verbatim === '!!') {\n onError(`Verbatim tags aren't resolved, so ${source} is invalid.`);\n return null;\n }\n if (source[source.length - 1] !== '>')\n onError('Verbatim tags must end with a >');\n return verbatim;\n }\n const [, handle, suffix] = source.match(/^(.*!)([^!]*)$/s);\n if (!suffix)\n onError(`The ${source} tag has no suffix`);\n const prefix = this.tags[handle];\n if (prefix) {\n try {\n return prefix + decodeURIComponent(suffix);\n }\n catch (error) {\n onError(String(error));\n return null;\n }\n }\n if (handle === '!')\n return source; // local tag\n onError(`Could not resolve tag: ${source}`);\n return null;\n }\n /**\n * Given a fully resolved tag, returns its printable string form,\n * taking into account current tag prefixes and defaults.\n */\n tagString(tag) {\n for (const [handle, prefix] of Object.entries(this.tags)) {\n if (tag.startsWith(prefix))\n return handle + escapeTagName(tag.substring(prefix.length));\n }\n return tag[0] === '!' ? tag : `!<${tag}>`;\n }\n toString(doc) {\n const lines = this.yaml.explicit\n ? [`%YAML ${this.yaml.version || '1.2'}`]\n : [];\n const tagEntries = Object.entries(this.tags);\n let tagNames;\n if (doc && tagEntries.length > 0 && identity.isNode(doc.contents)) {\n const tags = {};\n visit.visit(doc.contents, (_key, node) => {\n if (identity.isNode(node) && node.tag)\n tags[node.tag] = true;\n });\n tagNames = Object.keys(tags);\n }\n else\n tagNames = [];\n for (const [handle, prefix] of tagEntries) {\n if (handle === '!!' && prefix === 'tag:yaml.org,2002:')\n continue;\n if (!doc || tagNames.some(tn => tn.startsWith(prefix)))\n lines.push(`%TAG ${handle} ${prefix}`);\n }\n return lines.join('\\n');\n }\n}\nDirectives.defaultYaml = { explicit: false, version: '1.2' };\nDirectives.defaultTags = { '!!': 'tag:yaml.org,2002:' };\n\nexports.Directives = Directives;\n","'use strict';\n\nvar identity = require('../nodes/identity.js');\nvar visit = require('../visit.js');\n\n/**\n * Verify that the input string is a valid anchor.\n *\n * Will throw on errors.\n */\nfunction anchorIsValid(anchor) {\n if (/[\\x00-\\x19\\s,[\\]{}]/.test(anchor)) {\n const sa = JSON.stringify(anchor);\n const msg = `Anchor must not contain whitespace or control characters: ${sa}`;\n throw new Error(msg);\n }\n return true;\n}\nfunction anchorNames(root) {\n const anchors = new Set();\n visit.visit(root, {\n Value(_key, node) {\n if (node.anchor)\n anchors.add(node.anchor);\n }\n });\n return anchors;\n}\n/** Find a new anchor name with the given `prefix` and a one-indexed suffix. */\nfunction findNewAnchor(prefix, exclude) {\n for (let i = 1; true; ++i) {\n const name = `${prefix}${i}`;\n if (!exclude.has(name))\n return name;\n }\n}\nfunction createNodeAnchors(doc, prefix) {\n const aliasObjects = [];\n const sourceObjects = new Map();\n let prevAnchors = null;\n return {\n onAnchor: (source) => {\n aliasObjects.push(source);\n prevAnchors ?? (prevAnchors = anchorNames(doc));\n const anchor = findNewAnchor(prefix, prevAnchors);\n prevAnchors.add(anchor);\n return anchor;\n },\n /**\n * With circular references, the source node is only resolved after all\n * of its child nodes are. This is why anchors are set only after all of\n * the nodes have been created.\n */\n setAnchors: () => {\n for (const source of aliasObjects) {\n const ref = sourceObjects.get(source);\n if (typeof ref === 'object' &&\n ref.anchor &&\n (identity.isScalar(ref.node) || identity.isCollection(ref.node))) {\n ref.node.anchor = ref.anchor;\n }\n else {\n const error = new Error('Failed to resolve repeated object (this should not happen)');\n error.source = source;\n throw error;\n }\n }\n },\n sourceObjects\n };\n}\n\nexports.anchorIsValid = anchorIsValid;\nexports.anchorNames = anchorNames;\nexports.createNodeAnchors = createNodeAnchors;\nexports.findNewAnchor = findNewAnchor;\n","'use strict';\n\n/**\n * Applies the JSON.parse reviver algorithm as defined in the ECMA-262 spec,\n * in section 24.5.1.1 \"Runtime Semantics: InternalizeJSONProperty\" of the\n * 2021 edition: https://tc39.es/ecma262/#sec-json.parse\n *\n * Includes extensions for handling Map and Set objects.\n */\nfunction applyReviver(reviver, obj, key, val) {\n if (val && typeof val === 'object') {\n if (Array.isArray(val)) {\n for (let i = 0, len = val.length; i < len; ++i) {\n const v0 = val[i];\n const v1 = applyReviver(reviver, val, String(i), v0);\n // eslint-disable-next-line @typescript-eslint/no-array-delete\n if (v1 === undefined)\n delete val[i];\n else if (v1 !== v0)\n val[i] = v1;\n }\n }\n else if (val instanceof Map) {\n for (const k of Array.from(val.keys())) {\n const v0 = val.get(k);\n const v1 = applyReviver(reviver, val, k, v0);\n if (v1 === undefined)\n val.delete(k);\n else if (v1 !== v0)\n val.set(k, v1);\n }\n }\n else if (val instanceof Set) {\n for (const v0 of Array.from(val)) {\n const v1 = applyReviver(reviver, val, v0, v0);\n if (v1 === undefined)\n val.delete(v0);\n else if (v1 !== v0) {\n val.delete(v0);\n val.add(v1);\n }\n }\n }\n else {\n for (const [k, v0] of Object.entries(val)) {\n const v1 = applyReviver(reviver, val, k, v0);\n if (v1 === undefined)\n delete val[k];\n else if (v1 !== v0)\n val[k] = v1;\n }\n }\n }\n return reviver.call(obj, key, val);\n}\n\nexports.applyReviver = applyReviver;\n","'use strict';\n\nvar identity = require('./identity.js');\n\n/**\n * Recursively convert any node or its contents to native JavaScript\n *\n * @param value - The input value\n * @param arg - If `value` defines a `toJSON()` method, use this\n * as its first argument\n * @param ctx - Conversion context, originally set in Document#toJS(). If\n * `{ keep: true }` is not set, output should be suitable for JSON\n * stringification.\n */\nfunction toJS(value, arg, ctx) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n if (Array.isArray(value))\n return value.map((v, i) => toJS(v, String(i), ctx));\n if (value && typeof value.toJSON === 'function') {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n if (!ctx || !identity.hasAnchor(value))\n return value.toJSON(arg, ctx);\n const data = { aliasCount: 0, count: 1, res: undefined };\n ctx.anchors.set(value, data);\n ctx.onCreate = res => {\n data.res = res;\n delete ctx.onCreate;\n };\n const res = value.toJSON(arg, ctx);\n if (ctx.onCreate)\n ctx.onCreate(res);\n return res;\n }\n if (typeof value === 'bigint' && !ctx?.keep)\n return Number(value);\n return value;\n}\n\nexports.toJS = toJS;\n","'use strict';\n\nvar applyReviver = require('../doc/applyReviver.js');\nvar identity = require('./identity.js');\nvar toJS = require('./toJS.js');\n\nclass NodeBase {\n constructor(type) {\n Object.defineProperty(this, identity.NODE_TYPE, { value: type });\n }\n /** Create a copy of this node. */\n clone() {\n const copy = Object.create(Object.getPrototypeOf(this), Object.getOwnPropertyDescriptors(this));\n if (this.range)\n copy.range = this.range.slice();\n return copy;\n }\n /** A plain JavaScript representation of this node. */\n toJS(doc, { mapAsMap, maxAliasCount, onAnchor, reviver } = {}) {\n if (!identity.isDocument(doc))\n throw new TypeError('A document argument is required');\n const ctx = {\n anchors: new Map(),\n doc,\n keep: true,\n mapAsMap: mapAsMap === true,\n mapKeyWarned: false,\n maxAliasCount: typeof maxAliasCount === 'number' ? maxAliasCount : 100\n };\n const res = toJS.toJS(this, '', ctx);\n if (typeof onAnchor === 'function')\n for (const { count, res } of ctx.anchors.values())\n onAnchor(res, count);\n return typeof reviver === 'function'\n ? applyReviver.applyReviver(reviver, { '': res }, '', res)\n : res;\n }\n}\n\nexports.NodeBase = NodeBase;\n","'use strict';\n\nvar anchors = require('../doc/anchors.js');\nvar visit = require('../visit.js');\nvar identity = require('./identity.js');\nvar Node = require('./Node.js');\nvar toJS = require('./toJS.js');\n\nclass Alias extends Node.NodeBase {\n constructor(source) {\n super(identity.ALIAS);\n this.source = source;\n Object.defineProperty(this, 'tag', {\n set() {\n throw new Error('Alias nodes cannot have tags');\n }\n });\n }\n /**\n * Resolve the value of this alias within `doc`, finding the last\n * instance of the `source` anchor before this node.\n */\n resolve(doc, ctx) {\n let nodes;\n if (ctx?.aliasResolveCache) {\n nodes = ctx.aliasResolveCache;\n }\n else {\n nodes = [];\n visit.visit(doc, {\n Node: (_key, node) => {\n if (identity.isAlias(node) || identity.hasAnchor(node))\n nodes.push(node);\n }\n });\n if (ctx)\n ctx.aliasResolveCache = nodes;\n }\n let found = undefined;\n for (const node of nodes) {\n if (node === this)\n break;\n if (node.anchor === this.source)\n found = node;\n }\n return found;\n }\n toJSON(_arg, ctx) {\n if (!ctx)\n return { source: this.source };\n const { anchors, doc, maxAliasCount } = ctx;\n const source = this.resolve(doc, ctx);\n if (!source) {\n const msg = `Unresolved alias (the anchor must be set before the alias): ${this.source}`;\n throw new ReferenceError(msg);\n }\n let data = anchors.get(source);\n if (!data) {\n // Resolve anchors for Node.prototype.toJS()\n toJS.toJS(source, null, ctx);\n data = anchors.get(source);\n }\n /* istanbul ignore if */\n if (data?.res === undefined) {\n const msg = 'This should not happen: Alias anchor was not resolved?';\n throw new ReferenceError(msg);\n }\n if (maxAliasCount >= 0) {\n data.count += 1;\n if (data.aliasCount === 0)\n data.aliasCount = getAliasCount(doc, source, anchors);\n if (data.count * data.aliasCount > maxAliasCount) {\n const msg = 'Excessive alias count indicates a resource exhaustion attack';\n throw new ReferenceError(msg);\n }\n }\n return data.res;\n }\n toString(ctx, _onComment, _onChompKeep) {\n const src = `*${this.source}`;\n if (ctx) {\n anchors.anchorIsValid(this.source);\n if (ctx.options.verifyAliasOrder && !ctx.anchors.has(this.source)) {\n const msg = `Unresolved alias (the anchor must be set before the alias): ${this.source}`;\n throw new Error(msg);\n }\n if (ctx.implicitKey)\n return `${src} `;\n }\n return src;\n }\n}\nfunction getAliasCount(doc, node, anchors) {\n if (identity.isAlias(node)) {\n const source = node.resolve(doc);\n const anchor = anchors && source && anchors.get(source);\n return anchor ? anchor.count * anchor.aliasCount : 0;\n }\n else if (identity.isCollection(node)) {\n let count = 0;\n for (const item of node.items) {\n const c = getAliasCount(doc, item, anchors);\n if (c > count)\n count = c;\n }\n return count;\n }\n else if (identity.isPair(node)) {\n const kc = getAliasCount(doc, node.key, anchors);\n const vc = getAliasCount(doc, node.value, anchors);\n return Math.max(kc, vc);\n }\n return 1;\n}\n\nexports.Alias = Alias;\n","'use strict';\n\nvar identity = require('./identity.js');\nvar Node = require('./Node.js');\nvar toJS = require('./toJS.js');\n\nconst isScalarValue = (value) => !value || (typeof value !== 'function' && typeof value !== 'object');\nclass Scalar extends Node.NodeBase {\n constructor(value) {\n super(identity.SCALAR);\n this.value = value;\n }\n toJSON(arg, ctx) {\n return ctx?.keep ? this.value : toJS.toJS(this.value, arg, ctx);\n }\n toString() {\n return String(this.value);\n }\n}\nScalar.BLOCK_FOLDED = 'BLOCK_FOLDED';\nScalar.BLOCK_LITERAL = 'BLOCK_LITERAL';\nScalar.PLAIN = 'PLAIN';\nScalar.QUOTE_DOUBLE = 'QUOTE_DOUBLE';\nScalar.QUOTE_SINGLE = 'QUOTE_SINGLE';\n\nexports.Scalar = Scalar;\nexports.isScalarValue = isScalarValue;\n","'use strict';\n\nvar Alias = require('../nodes/Alias.js');\nvar identity = require('../nodes/identity.js');\nvar Scalar = require('../nodes/Scalar.js');\n\nconst defaultTagPrefix = 'tag:yaml.org,2002:';\nfunction findTagObject(value, tagName, tags) {\n if (tagName) {\n const match = tags.filter(t => t.tag === tagName);\n const tagObj = match.find(t => !t.format) ?? match[0];\n if (!tagObj)\n throw new Error(`Tag ${tagName} not found`);\n return tagObj;\n }\n return tags.find(t => t.identify?.(value) && !t.format);\n}\nfunction createNode(value, tagName, ctx) {\n if (identity.isDocument(value))\n value = value.contents;\n if (identity.isNode(value))\n return value;\n if (identity.isPair(value)) {\n const map = ctx.schema[identity.MAP].createNode?.(ctx.schema, null, ctx);\n map.items.push(value);\n return map;\n }\n if (value instanceof String ||\n value instanceof Number ||\n value instanceof Boolean ||\n (typeof BigInt !== 'undefined' && value instanceof BigInt) // not supported everywhere\n ) {\n // https://tc39.es/ecma262/#sec-serializejsonproperty\n value = value.valueOf();\n }\n const { aliasDuplicateObjects, onAnchor, onTagObj, schema, sourceObjects } = ctx;\n // Detect duplicate references to the same object & use Alias nodes for all\n // after first. The `ref` wrapper allows for circular references to resolve.\n let ref = undefined;\n if (aliasDuplicateObjects && value && typeof value === 'object') {\n ref = sourceObjects.get(value);\n if (ref) {\n ref.anchor ?? (ref.anchor = onAnchor(value));\n return new Alias.Alias(ref.anchor);\n }\n else {\n ref = { anchor: null, node: null };\n sourceObjects.set(value, ref);\n }\n }\n if (tagName?.startsWith('!!'))\n tagName = defaultTagPrefix + tagName.slice(2);\n let tagObj = findTagObject(value, tagName, schema.tags);\n if (!tagObj) {\n if (value && typeof value.toJSON === 'function') {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n value = value.toJSON();\n }\n if (!value || typeof value !== 'object') {\n const node = new Scalar.Scalar(value);\n if (ref)\n ref.node = node;\n return node;\n }\n tagObj =\n value instanceof Map\n ? schema[identity.MAP]\n : Symbol.iterator in Object(value)\n ? schema[identity.SEQ]\n : schema[identity.MAP];\n }\n if (onTagObj) {\n onTagObj(tagObj);\n delete ctx.onTagObj;\n }\n const node = tagObj?.createNode\n ? tagObj.createNode(ctx.schema, value, ctx)\n : typeof tagObj?.nodeClass?.from === 'function'\n ? tagObj.nodeClass.from(ctx.schema, value, ctx)\n : new Scalar.Scalar(value);\n if (tagName)\n node.tag = tagName;\n else if (!tagObj.default)\n node.tag = tagObj.tag;\n if (ref)\n ref.node = node;\n return node;\n}\n\nexports.createNode = createNode;\n","'use strict';\n\nvar createNode = require('../doc/createNode.js');\nvar identity = require('./identity.js');\nvar Node = require('./Node.js');\n\nfunction collectionFromPath(schema, path, value) {\n let v = value;\n for (let i = path.length - 1; i >= 0; --i) {\n const k = path[i];\n if (typeof k === 'number' && Number.isInteger(k) && k >= 0) {\n const a = [];\n a[k] = v;\n v = a;\n }\n else {\n v = new Map([[k, v]]);\n }\n }\n return createNode.createNode(v, undefined, {\n aliasDuplicateObjects: false,\n keepUndefined: false,\n onAnchor: () => {\n throw new Error('This should not happen, please report a bug.');\n },\n schema,\n sourceObjects: new Map()\n });\n}\n// Type guard is intentionally a little wrong so as to be more useful,\n// as it does not cover untypable empty non-string iterables (e.g. []).\nconst isEmptyPath = (path) => path == null ||\n (typeof path === 'object' && !!path[Symbol.iterator]().next().done);\nclass Collection extends Node.NodeBase {\n constructor(type, schema) {\n super(type);\n Object.defineProperty(this, 'schema', {\n value: schema,\n configurable: true,\n enumerable: false,\n writable: true\n });\n }\n /**\n * Create a copy of this collection.\n *\n * @param schema - If defined, overwrites the original's schema\n */\n clone(schema) {\n const copy = Object.create(Object.getPrototypeOf(this), Object.getOwnPropertyDescriptors(this));\n if (schema)\n copy.schema = schema;\n copy.items = copy.items.map(it => identity.isNode(it) || identity.isPair(it) ? it.clone(schema) : it);\n if (this.range)\n copy.range = this.range.slice();\n return copy;\n }\n /**\n * Adds a value to the collection. For `!!map` and `!!omap` the value must\n * be a Pair instance or a `{ key, value }` object, which may not have a key\n * that already exists in the map.\n */\n addIn(path, value) {\n if (isEmptyPath(path))\n this.add(value);\n else {\n const [key, ...rest] = path;\n const node = this.get(key, true);\n if (identity.isCollection(node))\n node.addIn(rest, value);\n else if (node === undefined && this.schema)\n this.set(key, collectionFromPath(this.schema, rest, value));\n else\n throw new Error(`Expected YAML collection at ${key}. Remaining path: ${rest}`);\n }\n }\n /**\n * Removes a value from the collection.\n * @returns `true` if the item was found and removed.\n */\n deleteIn(path) {\n const [key, ...rest] = path;\n if (rest.length === 0)\n return this.delete(key);\n const node = this.get(key, true);\n if (identity.isCollection(node))\n return node.deleteIn(rest);\n else\n throw new Error(`Expected YAML collection at ${key}. Remaining path: ${rest}`);\n }\n /**\n * Returns item at `key`, or `undefined` if not found. By default unwraps\n * scalar values from their surrounding node; to disable set `keepScalar` to\n * `true` (collections are always returned intact).\n */\n getIn(path, keepScalar) {\n const [key, ...rest] = path;\n const node = this.get(key, true);\n if (rest.length === 0)\n return !keepScalar && identity.isScalar(node) ? node.value : node;\n else\n return identity.isCollection(node) ? node.getIn(rest, keepScalar) : undefined;\n }\n hasAllNullValues(allowScalar) {\n return this.items.every(node => {\n if (!identity.isPair(node))\n return false;\n const n = node.value;\n return (n == null ||\n (allowScalar &&\n identity.isScalar(n) &&\n n.value == null &&\n !n.commentBefore &&\n !n.comment &&\n !n.tag));\n });\n }\n /**\n * Checks if the collection includes a value with the key `key`.\n */\n hasIn(path) {\n const [key, ...rest] = path;\n if (rest.length === 0)\n return this.has(key);\n const node = this.get(key, true);\n return identity.isCollection(node) ? node.hasIn(rest) : false;\n }\n /**\n * Sets a value in this collection. For `!!set`, `value` needs to be a\n * boolean to add/remove the item from the set.\n */\n setIn(path, value) {\n const [key, ...rest] = path;\n if (rest.length === 0) {\n this.set(key, value);\n }\n else {\n const node = this.get(key, true);\n if (identity.isCollection(node))\n node.setIn(rest, value);\n else if (node === undefined && this.schema)\n this.set(key, collectionFromPath(this.schema, rest, value));\n else\n throw new Error(`Expected YAML collection at ${key}. Remaining path: ${rest}`);\n }\n }\n}\n\nexports.Collection = Collection;\nexports.collectionFromPath = collectionFromPath;\nexports.isEmptyPath = isEmptyPath;\n","'use strict';\n\n/**\n * Stringifies a comment.\n *\n * Empty comment lines are left empty,\n * lines consisting of a single space are replaced by `#`,\n * and all other lines are prefixed with a `#`.\n */\nconst stringifyComment = (str) => str.replace(/^(?!$)(?: $)?/gm, '#');\nfunction indentComment(comment, indent) {\n if (/^\\n+$/.test(comment))\n return comment.substring(1);\n return indent ? comment.replace(/^(?! *$)/gm, indent) : comment;\n}\nconst lineComment = (str, indent, comment) => str.endsWith('\\n')\n ? indentComment(comment, indent)\n : comment.includes('\\n')\n ? '\\n' + indentComment(comment, indent)\n : (str.endsWith(' ') ? '' : ' ') + comment;\n\nexports.indentComment = indentComment;\nexports.lineComment = lineComment;\nexports.stringifyComment = stringifyComment;\n","'use strict';\n\nconst FOLD_FLOW = 'flow';\nconst FOLD_BLOCK = 'block';\nconst FOLD_QUOTED = 'quoted';\n/**\n * Tries to keep input at up to `lineWidth` characters, splitting only on spaces\n * not followed by newlines or spaces unless `mode` is `'quoted'`. Lines are\n * terminated with `\\n` and started with `indent`.\n */\nfunction foldFlowLines(text, indent, mode = 'flow', { indentAtStart, lineWidth = 80, minContentWidth = 20, onFold, onOverflow } = {}) {\n if (!lineWidth || lineWidth < 0)\n return text;\n if (lineWidth < minContentWidth)\n minContentWidth = 0;\n const endStep = Math.max(1 + minContentWidth, 1 + lineWidth - indent.length);\n if (text.length <= endStep)\n return text;\n const folds = [];\n const escapedFolds = {};\n let end = lineWidth - indent.length;\n if (typeof indentAtStart === 'number') {\n if (indentAtStart > lineWidth - Math.max(2, minContentWidth))\n folds.push(0);\n else\n end = lineWidth - indentAtStart;\n }\n let split = undefined;\n let prev = undefined;\n let overflow = false;\n let i = -1;\n let escStart = -1;\n let escEnd = -1;\n if (mode === FOLD_BLOCK) {\n i = consumeMoreIndentedLines(text, i, indent.length);\n if (i !== -1)\n end = i + endStep;\n }\n for (let ch; (ch = text[(i += 1)]);) {\n if (mode === FOLD_QUOTED && ch === '\\\\') {\n escStart = i;\n switch (text[i + 1]) {\n case 'x':\n i += 3;\n break;\n case 'u':\n i += 5;\n break;\n case 'U':\n i += 9;\n break;\n default:\n i += 1;\n }\n escEnd = i;\n }\n if (ch === '\\n') {\n if (mode === FOLD_BLOCK)\n i = consumeMoreIndentedLines(text, i, indent.length);\n end = i + indent.length + endStep;\n split = undefined;\n }\n else {\n if (ch === ' ' &&\n prev &&\n prev !== ' ' &&\n prev !== '\\n' &&\n prev !== '\\t') {\n // space surrounded by non-space can be replaced with newline + indent\n const next = text[i + 1];\n if (next && next !== ' ' && next !== '\\n' && next !== '\\t')\n split = i;\n }\n if (i >= end) {\n if (split) {\n folds.push(split);\n end = split + endStep;\n split = undefined;\n }\n else if (mode === FOLD_QUOTED) {\n // white-space collected at end may stretch past lineWidth\n while (prev === ' ' || prev === '\\t') {\n prev = ch;\n ch = text[(i += 1)];\n overflow = true;\n }\n // Account for newline escape, but don't break preceding escape\n const j = i > escEnd + 1 ? i - 2 : escStart - 1;\n // Bail out if lineWidth & minContentWidth are shorter than an escape string\n if (escapedFolds[j])\n return text;\n folds.push(j);\n escapedFolds[j] = true;\n end = j + endStep;\n split = undefined;\n }\n else {\n overflow = true;\n }\n }\n }\n prev = ch;\n }\n if (overflow && onOverflow)\n onOverflow();\n if (folds.length === 0)\n return text;\n if (onFold)\n onFold();\n let res = text.slice(0, folds[0]);\n for (let i = 0; i < folds.length; ++i) {\n const fold = folds[i];\n const end = folds[i + 1] || text.length;\n if (fold === 0)\n res = `\\n${indent}${text.slice(0, end)}`;\n else {\n if (mode === FOLD_QUOTED && escapedFolds[fold])\n res += `${text[fold]}\\\\`;\n res += `\\n${indent}${text.slice(fold + 1, end)}`;\n }\n }\n return res;\n}\n/**\n * Presumes `i + 1` is at the start of a line\n * @returns index of last newline in more-indented block\n */\nfunction consumeMoreIndentedLines(text, i, indent) {\n let end = i;\n let start = i + 1;\n let ch = text[start];\n while (ch === ' ' || ch === '\\t') {\n if (i < start + indent) {\n ch = text[++i];\n }\n else {\n do {\n ch = text[++i];\n } while (ch && ch !== '\\n');\n end = i;\n start = i + 1;\n ch = text[start];\n }\n }\n return end;\n}\n\nexports.FOLD_BLOCK = FOLD_BLOCK;\nexports.FOLD_FLOW = FOLD_FLOW;\nexports.FOLD_QUOTED = FOLD_QUOTED;\nexports.foldFlowLines = foldFlowLines;\n","'use strict';\n\nvar Scalar = require('../nodes/Scalar.js');\nvar foldFlowLines = require('./foldFlowLines.js');\n\nconst getFoldOptions = (ctx, isBlock) => ({\n indentAtStart: isBlock ? ctx.indent.length : ctx.indentAtStart,\n lineWidth: ctx.options.lineWidth,\n minContentWidth: ctx.options.minContentWidth\n});\n// Also checks for lines starting with %, as parsing the output as YAML 1.1 will\n// presume that's starting a new document.\nconst containsDocumentMarker = (str) => /^(%|---|\\.\\.\\.)/m.test(str);\nfunction lineLengthOverLimit(str, lineWidth, indentLength) {\n if (!lineWidth || lineWidth < 0)\n return false;\n const limit = lineWidth - indentLength;\n const strLen = str.length;\n if (strLen <= limit)\n return false;\n for (let i = 0, start = 0; i < strLen; ++i) {\n if (str[i] === '\\n') {\n if (i - start > limit)\n return true;\n start = i + 1;\n if (strLen - start <= limit)\n return false;\n }\n }\n return true;\n}\nfunction doubleQuotedString(value, ctx) {\n const json = JSON.stringify(value);\n if (ctx.options.doubleQuotedAsJSON)\n return json;\n const { implicitKey } = ctx;\n const minMultiLineLength = ctx.options.doubleQuotedMinMultiLineLength;\n const indent = ctx.indent || (containsDocumentMarker(value) ? ' ' : '');\n let str = '';\n let start = 0;\n for (let i = 0, ch = json[i]; ch; ch = json[++i]) {\n if (ch === ' ' && json[i + 1] === '\\\\' && json[i + 2] === 'n') {\n // space before newline needs to be escaped to not be folded\n str += json.slice(start, i) + '\\\\ ';\n i += 1;\n start = i;\n ch = '\\\\';\n }\n if (ch === '\\\\')\n switch (json[i + 1]) {\n case 'u':\n {\n str += json.slice(start, i);\n const code = json.substr(i + 2, 4);\n switch (code) {\n case '0000':\n str += '\\\\0';\n break;\n case '0007':\n str += '\\\\a';\n break;\n case '000b':\n str += '\\\\v';\n break;\n case '001b':\n str += '\\\\e';\n break;\n case '0085':\n str += '\\\\N';\n break;\n case '00a0':\n str += '\\\\_';\n break;\n case '2028':\n str += '\\\\L';\n break;\n case '2029':\n str += '\\\\P';\n break;\n default:\n if (code.substr(0, 2) === '00')\n str += '\\\\x' + code.substr(2);\n else\n str += json.substr(i, 6);\n }\n i += 5;\n start = i + 1;\n }\n break;\n case 'n':\n if (implicitKey ||\n json[i + 2] === '\"' ||\n json.length < minMultiLineLength) {\n i += 1;\n }\n else {\n // folding will eat first newline\n str += json.slice(start, i) + '\\n\\n';\n while (json[i + 2] === '\\\\' &&\n json[i + 3] === 'n' &&\n json[i + 4] !== '\"') {\n str += '\\n';\n i += 2;\n }\n str += indent;\n // space after newline needs to be escaped to not be folded\n if (json[i + 2] === ' ')\n str += '\\\\';\n i += 1;\n start = i + 1;\n }\n break;\n default:\n i += 1;\n }\n }\n str = start ? str + json.slice(start) : json;\n return implicitKey\n ? str\n : foldFlowLines.foldFlowLines(str, indent, foldFlowLines.FOLD_QUOTED, getFoldOptions(ctx, false));\n}\nfunction singleQuotedString(value, ctx) {\n if (ctx.options.singleQuote === false ||\n (ctx.implicitKey && value.includes('\\n')) ||\n /[ \\t]\\n|\\n[ \\t]/.test(value) // single quoted string can't have leading or trailing whitespace around newline\n )\n return doubleQuotedString(value, ctx);\n const indent = ctx.indent || (containsDocumentMarker(value) ? ' ' : '');\n const res = \"'\" + value.replace(/'/g, \"''\").replace(/\\n+/g, `$&\\n${indent}`) + \"'\";\n return ctx.implicitKey\n ? res\n : foldFlowLines.foldFlowLines(res, indent, foldFlowLines.FOLD_FLOW, getFoldOptions(ctx, false));\n}\nfunction quotedString(value, ctx) {\n const { singleQuote } = ctx.options;\n let qs;\n if (singleQuote === false)\n qs = doubleQuotedString;\n else {\n const hasDouble = value.includes('\"');\n const hasSingle = value.includes(\"'\");\n if (hasDouble && !hasSingle)\n qs = singleQuotedString;\n else if (hasSingle && !hasDouble)\n qs = doubleQuotedString;\n else\n qs = singleQuote ? singleQuotedString : doubleQuotedString;\n }\n return qs(value, ctx);\n}\n// The negative lookbehind avoids a polynomial search,\n// but isn't supported yet on Safari: https://caniuse.com/js-regexp-lookbehind\nlet blockEndNewlines;\ntry {\n blockEndNewlines = new RegExp('(^|(?\\n';\n // determine chomping from whitespace at value end\n let chomp;\n let endStart;\n for (endStart = value.length; endStart > 0; --endStart) {\n const ch = value[endStart - 1];\n if (ch !== '\\n' && ch !== '\\t' && ch !== ' ')\n break;\n }\n let end = value.substring(endStart);\n const endNlPos = end.indexOf('\\n');\n if (endNlPos === -1) {\n chomp = '-'; // strip\n }\n else if (value === end || endNlPos !== end.length - 1) {\n chomp = '+'; // keep\n if (onChompKeep)\n onChompKeep();\n }\n else {\n chomp = ''; // clip\n }\n if (end) {\n value = value.slice(0, -end.length);\n if (end[end.length - 1] === '\\n')\n end = end.slice(0, -1);\n end = end.replace(blockEndNewlines, `$&${indent}`);\n }\n // determine indent indicator from whitespace at value start\n let startWithSpace = false;\n let startEnd;\n let startNlPos = -1;\n for (startEnd = 0; startEnd < value.length; ++startEnd) {\n const ch = value[startEnd];\n if (ch === ' ')\n startWithSpace = true;\n else if (ch === '\\n')\n startNlPos = startEnd;\n else\n break;\n }\n let start = value.substring(0, startNlPos < startEnd ? startNlPos + 1 : startEnd);\n if (start) {\n value = value.substring(start.length);\n start = start.replace(/\\n+/g, `$&${indent}`);\n }\n const indentSize = indent ? '2' : '1'; // root is at -1\n // Leading | or > is added later\n let header = (startWithSpace ? indentSize : '') + chomp;\n if (comment) {\n header += ' ' + commentString(comment.replace(/ ?[\\r\\n]+/g, ' '));\n if (onComment)\n onComment();\n }\n if (!literal) {\n const foldedValue = value\n .replace(/\\n+/g, '\\n$&')\n .replace(/(?:^|\\n)([\\t ].*)(?:([\\n\\t ]*)\\n(?![\\n\\t ]))?/g, '$1$2') // more-indented lines aren't folded\n // ^ more-ind. ^ empty ^ capture next empty lines only at end of indent\n .replace(/\\n+/g, `$&${indent}`);\n let literalFallback = false;\n const foldOptions = getFoldOptions(ctx, true);\n if (blockQuote !== 'folded' && type !== Scalar.Scalar.BLOCK_FOLDED) {\n foldOptions.onOverflow = () => {\n literalFallback = true;\n };\n }\n const body = foldFlowLines.foldFlowLines(`${start}${foldedValue}${end}`, indent, foldFlowLines.FOLD_BLOCK, foldOptions);\n if (!literalFallback)\n return `>${header}\\n${indent}${body}`;\n }\n value = value.replace(/\\n+/g, `$&${indent}`);\n return `|${header}\\n${indent}${start}${value}${end}`;\n}\nfunction plainString(item, ctx, onComment, onChompKeep) {\n const { type, value } = item;\n const { actualString, implicitKey, indent, indentStep, inFlow } = ctx;\n if ((implicitKey && value.includes('\\n')) ||\n (inFlow && /[[\\]{},]/.test(value))) {\n return quotedString(value, ctx);\n }\n if (/^[\\n\\t ,[\\]{}#&*!|>'\"%@`]|^[?-]$|^[?-][ \\t]|[\\n:][ \\t]|[ \\t]\\n|[\\n\\t ]#|[\\n\\t :]$/.test(value)) {\n // not allowed:\n // - '-' or '?'\n // - start with an indicator character (except [?:-]) or /[?-] /\n // - '\\n ', ': ' or ' \\n' anywhere\n // - '#' not preceded by a non-space char\n // - end with ' ' or ':'\n return implicitKey || inFlow || !value.includes('\\n')\n ? quotedString(value, ctx)\n : blockString(item, ctx, onComment, onChompKeep);\n }\n if (!implicitKey &&\n !inFlow &&\n type !== Scalar.Scalar.PLAIN &&\n value.includes('\\n')) {\n // Where allowed & type not set explicitly, prefer block style for multiline strings\n return blockString(item, ctx, onComment, onChompKeep);\n }\n if (containsDocumentMarker(value)) {\n if (indent === '') {\n ctx.forceBlockIndent = true;\n return blockString(item, ctx, onComment, onChompKeep);\n }\n else if (implicitKey && indent === indentStep) {\n return quotedString(value, ctx);\n }\n }\n const str = value.replace(/\\n+/g, `$&\\n${indent}`);\n // Verify that output will be parsed as a string, as e.g. plain numbers and\n // booleans get parsed with those types in v1.2 (e.g. '42', 'true' & '0.9e-3'),\n // and others in v1.1.\n if (actualString) {\n const test = (tag) => tag.default && tag.tag !== 'tag:yaml.org,2002:str' && tag.test?.test(str);\n const { compat, tags } = ctx.doc.schema;\n if (tags.some(test) || compat?.some(test))\n return quotedString(value, ctx);\n }\n return implicitKey\n ? str\n : foldFlowLines.foldFlowLines(str, indent, foldFlowLines.FOLD_FLOW, getFoldOptions(ctx, false));\n}\nfunction stringifyString(item, ctx, onComment, onChompKeep) {\n const { implicitKey, inFlow } = ctx;\n const ss = typeof item.value === 'string'\n ? item\n : Object.assign({}, item, { value: String(item.value) });\n let { type } = item;\n if (type !== Scalar.Scalar.QUOTE_DOUBLE) {\n // force double quotes on control characters & unpaired surrogates\n if (/[\\x00-\\x08\\x0b-\\x1f\\x7f-\\x9f\\u{D800}-\\u{DFFF}]/u.test(ss.value))\n type = Scalar.Scalar.QUOTE_DOUBLE;\n }\n const _stringify = (_type) => {\n switch (_type) {\n case Scalar.Scalar.BLOCK_FOLDED:\n case Scalar.Scalar.BLOCK_LITERAL:\n return implicitKey || inFlow\n ? quotedString(ss.value, ctx) // blocks are not valid inside flow containers\n : blockString(ss, ctx, onComment, onChompKeep);\n case Scalar.Scalar.QUOTE_DOUBLE:\n return doubleQuotedString(ss.value, ctx);\n case Scalar.Scalar.QUOTE_SINGLE:\n return singleQuotedString(ss.value, ctx);\n case Scalar.Scalar.PLAIN:\n return plainString(ss, ctx, onComment, onChompKeep);\n default:\n return null;\n }\n };\n let res = _stringify(type);\n if (res === null) {\n const { defaultKeyType, defaultStringType } = ctx.options;\n const t = (implicitKey && defaultKeyType) || defaultStringType;\n res = _stringify(t);\n if (res === null)\n throw new Error(`Unsupported default string type ${t}`);\n }\n return res;\n}\n\nexports.stringifyString = stringifyString;\n","'use strict';\n\nvar anchors = require('../doc/anchors.js');\nvar identity = require('../nodes/identity.js');\nvar stringifyComment = require('./stringifyComment.js');\nvar stringifyString = require('./stringifyString.js');\n\nfunction createStringifyContext(doc, options) {\n const opt = Object.assign({\n blockQuote: true,\n commentString: stringifyComment.stringifyComment,\n defaultKeyType: null,\n defaultStringType: 'PLAIN',\n directives: null,\n doubleQuotedAsJSON: false,\n doubleQuotedMinMultiLineLength: 40,\n falseStr: 'false',\n flowCollectionPadding: true,\n indentSeq: true,\n lineWidth: 80,\n minContentWidth: 20,\n nullStr: 'null',\n simpleKeys: false,\n singleQuote: null,\n trueStr: 'true',\n verifyAliasOrder: true\n }, doc.schema.toStringOptions, options);\n let inFlow;\n switch (opt.collectionStyle) {\n case 'block':\n inFlow = false;\n break;\n case 'flow':\n inFlow = true;\n break;\n default:\n inFlow = null;\n }\n return {\n anchors: new Set(),\n doc,\n flowCollectionPadding: opt.flowCollectionPadding ? ' ' : '',\n indent: '',\n indentStep: typeof opt.indent === 'number' ? ' '.repeat(opt.indent) : ' ',\n inFlow,\n options: opt\n };\n}\nfunction getTagObject(tags, item) {\n if (item.tag) {\n const match = tags.filter(t => t.tag === item.tag);\n if (match.length > 0)\n return match.find(t => t.format === item.format) ?? match[0];\n }\n let tagObj = undefined;\n let obj;\n if (identity.isScalar(item)) {\n obj = item.value;\n let match = tags.filter(t => t.identify?.(obj));\n if (match.length > 1) {\n const testMatch = match.filter(t => t.test);\n if (testMatch.length > 0)\n match = testMatch;\n }\n tagObj =\n match.find(t => t.format === item.format) ?? match.find(t => !t.format);\n }\n else {\n obj = item;\n tagObj = tags.find(t => t.nodeClass && obj instanceof t.nodeClass);\n }\n if (!tagObj) {\n const name = obj?.constructor?.name ?? (obj === null ? 'null' : typeof obj);\n throw new Error(`Tag not resolved for ${name} value`);\n }\n return tagObj;\n}\n// needs to be called before value stringifier to allow for circular anchor refs\nfunction stringifyProps(node, tagObj, { anchors: anchors$1, doc }) {\n if (!doc.directives)\n return '';\n const props = [];\n const anchor = (identity.isScalar(node) || identity.isCollection(node)) && node.anchor;\n if (anchor && anchors.anchorIsValid(anchor)) {\n anchors$1.add(anchor);\n props.push(`&${anchor}`);\n }\n const tag = node.tag ?? (tagObj.default ? null : tagObj.tag);\n if (tag)\n props.push(doc.directives.tagString(tag));\n return props.join(' ');\n}\nfunction stringify(item, ctx, onComment, onChompKeep) {\n if (identity.isPair(item))\n return item.toString(ctx, onComment, onChompKeep);\n if (identity.isAlias(item)) {\n if (ctx.doc.directives)\n return item.toString(ctx);\n if (ctx.resolvedAliases?.has(item)) {\n throw new TypeError(`Cannot stringify circular structure without alias nodes`);\n }\n else {\n if (ctx.resolvedAliases)\n ctx.resolvedAliases.add(item);\n else\n ctx.resolvedAliases = new Set([item]);\n item = item.resolve(ctx.doc);\n }\n }\n let tagObj = undefined;\n const node = identity.isNode(item)\n ? item\n : ctx.doc.createNode(item, { onTagObj: o => (tagObj = o) });\n tagObj ?? (tagObj = getTagObject(ctx.doc.schema.tags, node));\n const props = stringifyProps(node, tagObj, ctx);\n if (props.length > 0)\n ctx.indentAtStart = (ctx.indentAtStart ?? 0) + props.length + 1;\n const str = typeof tagObj.stringify === 'function'\n ? tagObj.stringify(node, ctx, onComment, onChompKeep)\n : identity.isScalar(node)\n ? stringifyString.stringifyString(node, ctx, onComment, onChompKeep)\n : node.toString(ctx, onComment, onChompKeep);\n if (!props)\n return str;\n return identity.isScalar(node) || str[0] === '{' || str[0] === '['\n ? `${props} ${str}`\n : `${props}\\n${ctx.indent}${str}`;\n}\n\nexports.createStringifyContext = createStringifyContext;\nexports.stringify = stringify;\n","'use strict';\n\nvar identity = require('../nodes/identity.js');\nvar Scalar = require('../nodes/Scalar.js');\nvar stringify = require('./stringify.js');\nvar stringifyComment = require('./stringifyComment.js');\n\nfunction stringifyPair({ key, value }, ctx, onComment, onChompKeep) {\n const { allNullValues, doc, indent, indentStep, options: { commentString, indentSeq, simpleKeys } } = ctx;\n let keyComment = (identity.isNode(key) && key.comment) || null;\n if (simpleKeys) {\n if (keyComment) {\n throw new Error('With simple keys, key nodes cannot have comments');\n }\n if (identity.isCollection(key) || (!identity.isNode(key) && typeof key === 'object')) {\n const msg = 'With simple keys, collection cannot be used as a key value';\n throw new Error(msg);\n }\n }\n let explicitKey = !simpleKeys &&\n (!key ||\n (keyComment && value == null && !ctx.inFlow) ||\n identity.isCollection(key) ||\n (identity.isScalar(key)\n ? key.type === Scalar.Scalar.BLOCK_FOLDED || key.type === Scalar.Scalar.BLOCK_LITERAL\n : typeof key === 'object'));\n ctx = Object.assign({}, ctx, {\n allNullValues: false,\n implicitKey: !explicitKey && (simpleKeys || !allNullValues),\n indent: indent + indentStep\n });\n let keyCommentDone = false;\n let chompKeep = false;\n let str = stringify.stringify(key, ctx, () => (keyCommentDone = true), () => (chompKeep = true));\n if (!explicitKey && !ctx.inFlow && str.length > 1024) {\n if (simpleKeys)\n throw new Error('With simple keys, single line scalar must not span more than 1024 characters');\n explicitKey = true;\n }\n if (ctx.inFlow) {\n if (allNullValues || value == null) {\n if (keyCommentDone && onComment)\n onComment();\n return str === '' ? '?' : explicitKey ? `? ${str}` : str;\n }\n }\n else if ((allNullValues && !simpleKeys) || (value == null && explicitKey)) {\n str = `? ${str}`;\n if (keyComment && !keyCommentDone) {\n str += stringifyComment.lineComment(str, ctx.indent, commentString(keyComment));\n }\n else if (chompKeep && onChompKeep)\n onChompKeep();\n return str;\n }\n if (keyCommentDone)\n keyComment = null;\n if (explicitKey) {\n if (keyComment)\n str += stringifyComment.lineComment(str, ctx.indent, commentString(keyComment));\n str = `? ${str}\\n${indent}:`;\n }\n else {\n str = `${str}:`;\n if (keyComment)\n str += stringifyComment.lineComment(str, ctx.indent, commentString(keyComment));\n }\n let vsb, vcb, valueComment;\n if (identity.isNode(value)) {\n vsb = !!value.spaceBefore;\n vcb = value.commentBefore;\n valueComment = value.comment;\n }\n else {\n vsb = false;\n vcb = null;\n valueComment = null;\n if (value && typeof value === 'object')\n value = doc.createNode(value);\n }\n ctx.implicitKey = false;\n if (!explicitKey && !keyComment && identity.isScalar(value))\n ctx.indentAtStart = str.length + 1;\n chompKeep = false;\n if (!indentSeq &&\n indentStep.length >= 2 &&\n !ctx.inFlow &&\n !explicitKey &&\n identity.isSeq(value) &&\n !value.flow &&\n !value.tag &&\n !value.anchor) {\n // If indentSeq === false, consider '- ' as part of indentation where possible\n ctx.indent = ctx.indent.substring(2);\n }\n let valueCommentDone = false;\n const valueStr = stringify.stringify(value, ctx, () => (valueCommentDone = true), () => (chompKeep = true));\n let ws = ' ';\n if (keyComment || vsb || vcb) {\n ws = vsb ? '\\n' : '';\n if (vcb) {\n const cs = commentString(vcb);\n ws += `\\n${stringifyComment.indentComment(cs, ctx.indent)}`;\n }\n if (valueStr === '' && !ctx.inFlow) {\n if (ws === '\\n' && valueComment)\n ws = '\\n\\n';\n }\n else {\n ws += `\\n${ctx.indent}`;\n }\n }\n else if (!explicitKey && identity.isCollection(value)) {\n const vs0 = valueStr[0];\n const nl0 = valueStr.indexOf('\\n');\n const hasNewline = nl0 !== -1;\n const flow = ctx.inFlow ?? value.flow ?? value.items.length === 0;\n if (hasNewline || !flow) {\n let hasPropsLine = false;\n if (hasNewline && (vs0 === '&' || vs0 === '!')) {\n let sp0 = valueStr.indexOf(' ');\n if (vs0 === '&' &&\n sp0 !== -1 &&\n sp0 < nl0 &&\n valueStr[sp0 + 1] === '!') {\n sp0 = valueStr.indexOf(' ', sp0 + 1);\n }\n if (sp0 === -1 || nl0 < sp0)\n hasPropsLine = true;\n }\n if (!hasPropsLine)\n ws = `\\n${ctx.indent}`;\n }\n }\n else if (valueStr === '' || valueStr[0] === '\\n') {\n ws = '';\n }\n str += ws + valueStr;\n if (ctx.inFlow) {\n if (valueCommentDone && onComment)\n onComment();\n }\n else if (valueComment && !valueCommentDone) {\n str += stringifyComment.lineComment(str, ctx.indent, commentString(valueComment));\n }\n else if (chompKeep && onChompKeep) {\n onChompKeep();\n }\n return str;\n}\n\nexports.stringifyPair = stringifyPair;\n","'use strict';\n\nvar node_process = require('process');\n\nfunction debug(logLevel, ...messages) {\n if (logLevel === 'debug')\n console.log(...messages);\n}\nfunction warn(logLevel, warning) {\n if (logLevel === 'debug' || logLevel === 'warn') {\n if (typeof node_process.emitWarning === 'function')\n node_process.emitWarning(warning);\n else\n console.warn(warning);\n }\n}\n\nexports.debug = debug;\nexports.warn = warn;\n","'use strict';\n\nvar identity = require('../../nodes/identity.js');\nvar Scalar = require('../../nodes/Scalar.js');\n\n// If the value associated with a merge key is a single mapping node, each of\n// its key/value pairs is inserted into the current mapping, unless the key\n// already exists in it. If the value associated with the merge key is a\n// sequence, then this sequence is expected to contain mapping nodes and each\n// of these nodes is merged in turn according to its order in the sequence.\n// Keys in mapping nodes earlier in the sequence override keys specified in\n// later mapping nodes. -- http://yaml.org/type/merge.html\nconst MERGE_KEY = '<<';\nconst merge = {\n identify: value => value === MERGE_KEY ||\n (typeof value === 'symbol' && value.description === MERGE_KEY),\n default: 'key',\n tag: 'tag:yaml.org,2002:merge',\n test: /^<<$/,\n resolve: () => Object.assign(new Scalar.Scalar(Symbol(MERGE_KEY)), {\n addToJSMap: addMergeToJSMap\n }),\n stringify: () => MERGE_KEY\n};\nconst isMergeKey = (ctx, key) => (merge.identify(key) ||\n (identity.isScalar(key) &&\n (!key.type || key.type === Scalar.Scalar.PLAIN) &&\n merge.identify(key.value))) &&\n ctx?.doc.schema.tags.some(tag => tag.tag === merge.tag && tag.default);\nfunction addMergeToJSMap(ctx, map, value) {\n value = ctx && identity.isAlias(value) ? value.resolve(ctx.doc) : value;\n if (identity.isSeq(value))\n for (const it of value.items)\n mergeValue(ctx, map, it);\n else if (Array.isArray(value))\n for (const it of value)\n mergeValue(ctx, map, it);\n else\n mergeValue(ctx, map, value);\n}\nfunction mergeValue(ctx, map, value) {\n const source = ctx && identity.isAlias(value) ? value.resolve(ctx.doc) : value;\n if (!identity.isMap(source))\n throw new Error('Merge sources must be maps or map aliases');\n const srcMap = source.toJSON(null, ctx, Map);\n for (const [key, value] of srcMap) {\n if (map instanceof Map) {\n if (!map.has(key))\n map.set(key, value);\n }\n else if (map instanceof Set) {\n map.add(key);\n }\n else if (!Object.prototype.hasOwnProperty.call(map, key)) {\n Object.defineProperty(map, key, {\n value,\n writable: true,\n enumerable: true,\n configurable: true\n });\n }\n }\n return map;\n}\n\nexports.addMergeToJSMap = addMergeToJSMap;\nexports.isMergeKey = isMergeKey;\nexports.merge = merge;\n","'use strict';\n\nvar log = require('../log.js');\nvar merge = require('../schema/yaml-1.1/merge.js');\nvar stringify = require('../stringify/stringify.js');\nvar identity = require('./identity.js');\nvar toJS = require('./toJS.js');\n\nfunction addPairToJSMap(ctx, map, { key, value }) {\n if (identity.isNode(key) && key.addToJSMap)\n key.addToJSMap(ctx, map, value);\n // TODO: Should drop this special case for bare << handling\n else if (merge.isMergeKey(ctx, key))\n merge.addMergeToJSMap(ctx, map, value);\n else {\n const jsKey = toJS.toJS(key, '', ctx);\n if (map instanceof Map) {\n map.set(jsKey, toJS.toJS(value, jsKey, ctx));\n }\n else if (map instanceof Set) {\n map.add(jsKey);\n }\n else {\n const stringKey = stringifyKey(key, jsKey, ctx);\n const jsValue = toJS.toJS(value, stringKey, ctx);\n if (stringKey in map)\n Object.defineProperty(map, stringKey, {\n value: jsValue,\n writable: true,\n enumerable: true,\n configurable: true\n });\n else\n map[stringKey] = jsValue;\n }\n }\n return map;\n}\nfunction stringifyKey(key, jsKey, ctx) {\n if (jsKey === null)\n return '';\n // eslint-disable-next-line @typescript-eslint/no-base-to-string\n if (typeof jsKey !== 'object')\n return String(jsKey);\n if (identity.isNode(key) && ctx?.doc) {\n const strCtx = stringify.createStringifyContext(ctx.doc, {});\n strCtx.anchors = new Set();\n for (const node of ctx.anchors.keys())\n strCtx.anchors.add(node.anchor);\n strCtx.inFlow = true;\n strCtx.inStringifyKey = true;\n const strKey = key.toString(strCtx);\n if (!ctx.mapKeyWarned) {\n let jsonStr = JSON.stringify(strKey);\n if (jsonStr.length > 40)\n jsonStr = jsonStr.substring(0, 36) + '...\"';\n log.warn(ctx.doc.options.logLevel, `Keys with collection values will be stringified due to JS Object restrictions: ${jsonStr}. Set mapAsMap: true to use object keys.`);\n ctx.mapKeyWarned = true;\n }\n return strKey;\n }\n return JSON.stringify(jsKey);\n}\n\nexports.addPairToJSMap = addPairToJSMap;\n","'use strict';\n\nvar createNode = require('../doc/createNode.js');\nvar stringifyPair = require('../stringify/stringifyPair.js');\nvar addPairToJSMap = require('./addPairToJSMap.js');\nvar identity = require('./identity.js');\n\nfunction createPair(key, value, ctx) {\n const k = createNode.createNode(key, undefined, ctx);\n const v = createNode.createNode(value, undefined, ctx);\n return new Pair(k, v);\n}\nclass Pair {\n constructor(key, value = null) {\n Object.defineProperty(this, identity.NODE_TYPE, { value: identity.PAIR });\n this.key = key;\n this.value = value;\n }\n clone(schema) {\n let { key, value } = this;\n if (identity.isNode(key))\n key = key.clone(schema);\n if (identity.isNode(value))\n value = value.clone(schema);\n return new Pair(key, value);\n }\n toJSON(_, ctx) {\n const pair = ctx?.mapAsMap ? new Map() : {};\n return addPairToJSMap.addPairToJSMap(ctx, pair, this);\n }\n toString(ctx, onComment, onChompKeep) {\n return ctx?.doc\n ? stringifyPair.stringifyPair(this, ctx, onComment, onChompKeep)\n : JSON.stringify(this);\n }\n}\n\nexports.Pair = Pair;\nexports.createPair = createPair;\n","'use strict';\n\nvar identity = require('../nodes/identity.js');\nvar stringify = require('./stringify.js');\nvar stringifyComment = require('./stringifyComment.js');\n\nfunction stringifyCollection(collection, ctx, options) {\n const flow = ctx.inFlow ?? collection.flow;\n const stringify = flow ? stringifyFlowCollection : stringifyBlockCollection;\n return stringify(collection, ctx, options);\n}\nfunction stringifyBlockCollection({ comment, items }, ctx, { blockItemPrefix, flowChars, itemIndent, onChompKeep, onComment }) {\n const { indent, options: { commentString } } = ctx;\n const itemCtx = Object.assign({}, ctx, { indent: itemIndent, type: null });\n let chompKeep = false; // flag for the preceding node's status\n const lines = [];\n for (let i = 0; i < items.length; ++i) {\n const item = items[i];\n let comment = null;\n if (identity.isNode(item)) {\n if (!chompKeep && item.spaceBefore)\n lines.push('');\n addCommentBefore(ctx, lines, item.commentBefore, chompKeep);\n if (item.comment)\n comment = item.comment;\n }\n else if (identity.isPair(item)) {\n const ik = identity.isNode(item.key) ? item.key : null;\n if (ik) {\n if (!chompKeep && ik.spaceBefore)\n lines.push('');\n addCommentBefore(ctx, lines, ik.commentBefore, chompKeep);\n }\n }\n chompKeep = false;\n let str = stringify.stringify(item, itemCtx, () => (comment = null), () => (chompKeep = true));\n if (comment)\n str += stringifyComment.lineComment(str, itemIndent, commentString(comment));\n if (chompKeep && comment)\n chompKeep = false;\n lines.push(blockItemPrefix + str);\n }\n let str;\n if (lines.length === 0) {\n str = flowChars.start + flowChars.end;\n }\n else {\n str = lines[0];\n for (let i = 1; i < lines.length; ++i) {\n const line = lines[i];\n str += line ? `\\n${indent}${line}` : '\\n';\n }\n }\n if (comment) {\n str += '\\n' + stringifyComment.indentComment(commentString(comment), indent);\n if (onComment)\n onComment();\n }\n else if (chompKeep && onChompKeep)\n onChompKeep();\n return str;\n}\nfunction stringifyFlowCollection({ items }, ctx, { flowChars, itemIndent }) {\n const { indent, indentStep, flowCollectionPadding: fcPadding, options: { commentString } } = ctx;\n itemIndent += indentStep;\n const itemCtx = Object.assign({}, ctx, {\n indent: itemIndent,\n inFlow: true,\n type: null\n });\n let reqNewline = false;\n let linesAtValue = 0;\n const lines = [];\n for (let i = 0; i < items.length; ++i) {\n const item = items[i];\n let comment = null;\n if (identity.isNode(item)) {\n if (item.spaceBefore)\n lines.push('');\n addCommentBefore(ctx, lines, item.commentBefore, false);\n if (item.comment)\n comment = item.comment;\n }\n else if (identity.isPair(item)) {\n const ik = identity.isNode(item.key) ? item.key : null;\n if (ik) {\n if (ik.spaceBefore)\n lines.push('');\n addCommentBefore(ctx, lines, ik.commentBefore, false);\n if (ik.comment)\n reqNewline = true;\n }\n const iv = identity.isNode(item.value) ? item.value : null;\n if (iv) {\n if (iv.comment)\n comment = iv.comment;\n if (iv.commentBefore)\n reqNewline = true;\n }\n else if (item.value == null && ik?.comment) {\n comment = ik.comment;\n }\n }\n if (comment)\n reqNewline = true;\n let str = stringify.stringify(item, itemCtx, () => (comment = null));\n if (i < items.length - 1)\n str += ',';\n if (comment)\n str += stringifyComment.lineComment(str, itemIndent, commentString(comment));\n if (!reqNewline && (lines.length > linesAtValue || str.includes('\\n')))\n reqNewline = true;\n lines.push(str);\n linesAtValue = lines.length;\n }\n const { start, end } = flowChars;\n if (lines.length === 0) {\n return start + end;\n }\n else {\n if (!reqNewline) {\n const len = lines.reduce((sum, line) => sum + line.length + 2, 2);\n reqNewline = ctx.options.lineWidth > 0 && len > ctx.options.lineWidth;\n }\n if (reqNewline) {\n let str = start;\n for (const line of lines)\n str += line ? `\\n${indentStep}${indent}${line}` : '\\n';\n return `${str}\\n${indent}${end}`;\n }\n else {\n return `${start}${fcPadding}${lines.join(' ')}${fcPadding}${end}`;\n }\n }\n}\nfunction addCommentBefore({ indent, options: { commentString } }, lines, comment, chompKeep) {\n if (comment && chompKeep)\n comment = comment.replace(/^\\n+/, '');\n if (comment) {\n const ic = stringifyComment.indentComment(commentString(comment), indent);\n lines.push(ic.trimStart()); // Avoid double indent on first line\n }\n}\n\nexports.stringifyCollection = stringifyCollection;\n","'use strict';\n\nvar stringifyCollection = require('../stringify/stringifyCollection.js');\nvar addPairToJSMap = require('./addPairToJSMap.js');\nvar Collection = require('./Collection.js');\nvar identity = require('./identity.js');\nvar Pair = require('./Pair.js');\nvar Scalar = require('./Scalar.js');\n\nfunction findPair(items, key) {\n const k = identity.isScalar(key) ? key.value : key;\n for (const it of items) {\n if (identity.isPair(it)) {\n if (it.key === key || it.key === k)\n return it;\n if (identity.isScalar(it.key) && it.key.value === k)\n return it;\n }\n }\n return undefined;\n}\nclass YAMLMap extends Collection.Collection {\n static get tagName() {\n return 'tag:yaml.org,2002:map';\n }\n constructor(schema) {\n super(identity.MAP, schema);\n this.items = [];\n }\n /**\n * A generic collection parsing method that can be extended\n * to other node classes that inherit from YAMLMap\n */\n static from(schema, obj, ctx) {\n const { keepUndefined, replacer } = ctx;\n const map = new this(schema);\n const add = (key, value) => {\n if (typeof replacer === 'function')\n value = replacer.call(obj, key, value);\n else if (Array.isArray(replacer) && !replacer.includes(key))\n return;\n if (value !== undefined || keepUndefined)\n map.items.push(Pair.createPair(key, value, ctx));\n };\n if (obj instanceof Map) {\n for (const [key, value] of obj)\n add(key, value);\n }\n else if (obj && typeof obj === 'object') {\n for (const key of Object.keys(obj))\n add(key, obj[key]);\n }\n if (typeof schema.sortMapEntries === 'function') {\n map.items.sort(schema.sortMapEntries);\n }\n return map;\n }\n /**\n * Adds a value to the collection.\n *\n * @param overwrite - If not set `true`, using a key that is already in the\n * collection will throw. Otherwise, overwrites the previous value.\n */\n add(pair, overwrite) {\n let _pair;\n if (identity.isPair(pair))\n _pair = pair;\n else if (!pair || typeof pair !== 'object' || !('key' in pair)) {\n // In TypeScript, this never happens.\n _pair = new Pair.Pair(pair, pair?.value);\n }\n else\n _pair = new Pair.Pair(pair.key, pair.value);\n const prev = findPair(this.items, _pair.key);\n const sortEntries = this.schema?.sortMapEntries;\n if (prev) {\n if (!overwrite)\n throw new Error(`Key ${_pair.key} already set`);\n // For scalars, keep the old node & its comments and anchors\n if (identity.isScalar(prev.value) && Scalar.isScalarValue(_pair.value))\n prev.value.value = _pair.value;\n else\n prev.value = _pair.value;\n }\n else if (sortEntries) {\n const i = this.items.findIndex(item => sortEntries(_pair, item) < 0);\n if (i === -1)\n this.items.push(_pair);\n else\n this.items.splice(i, 0, _pair);\n }\n else {\n this.items.push(_pair);\n }\n }\n delete(key) {\n const it = findPair(this.items, key);\n if (!it)\n return false;\n const del = this.items.splice(this.items.indexOf(it), 1);\n return del.length > 0;\n }\n get(key, keepScalar) {\n const it = findPair(this.items, key);\n const node = it?.value;\n return (!keepScalar && identity.isScalar(node) ? node.value : node) ?? undefined;\n }\n has(key) {\n return !!findPair(this.items, key);\n }\n set(key, value) {\n this.add(new Pair.Pair(key, value), true);\n }\n /**\n * @param ctx - Conversion context, originally set in Document#toJS()\n * @param {Class} Type - If set, forces the returned collection type\n * @returns Instance of Type, Map, or Object\n */\n toJSON(_, ctx, Type) {\n const map = Type ? new Type() : ctx?.mapAsMap ? new Map() : {};\n if (ctx?.onCreate)\n ctx.onCreate(map);\n for (const item of this.items)\n addPairToJSMap.addPairToJSMap(ctx, map, item);\n return map;\n }\n toString(ctx, onComment, onChompKeep) {\n if (!ctx)\n return JSON.stringify(this);\n for (const item of this.items) {\n if (!identity.isPair(item))\n throw new Error(`Map items must all be pairs; found ${JSON.stringify(item)} instead`);\n }\n if (!ctx.allNullValues && this.hasAllNullValues(false))\n ctx = Object.assign({}, ctx, { allNullValues: true });\n return stringifyCollection.stringifyCollection(this, ctx, {\n blockItemPrefix: '',\n flowChars: { start: '{', end: '}' },\n itemIndent: ctx.indent || '',\n onChompKeep,\n onComment\n });\n }\n}\n\nexports.YAMLMap = YAMLMap;\nexports.findPair = findPair;\n","'use strict';\n\nvar identity = require('../../nodes/identity.js');\nvar YAMLMap = require('../../nodes/YAMLMap.js');\n\nconst map = {\n collection: 'map',\n default: true,\n nodeClass: YAMLMap.YAMLMap,\n tag: 'tag:yaml.org,2002:map',\n resolve(map, onError) {\n if (!identity.isMap(map))\n onError('Expected a mapping for this tag');\n return map;\n },\n createNode: (schema, obj, ctx) => YAMLMap.YAMLMap.from(schema, obj, ctx)\n};\n\nexports.map = map;\n","'use strict';\n\nvar createNode = require('../doc/createNode.js');\nvar stringifyCollection = require('../stringify/stringifyCollection.js');\nvar Collection = require('./Collection.js');\nvar identity = require('./identity.js');\nvar Scalar = require('./Scalar.js');\nvar toJS = require('./toJS.js');\n\nclass YAMLSeq extends Collection.Collection {\n static get tagName() {\n return 'tag:yaml.org,2002:seq';\n }\n constructor(schema) {\n super(identity.SEQ, schema);\n this.items = [];\n }\n add(value) {\n this.items.push(value);\n }\n /**\n * Removes a value from the collection.\n *\n * `key` must contain a representation of an integer for this to succeed.\n * It may be wrapped in a `Scalar`.\n *\n * @returns `true` if the item was found and removed.\n */\n delete(key) {\n const idx = asItemIndex(key);\n if (typeof idx !== 'number')\n return false;\n const del = this.items.splice(idx, 1);\n return del.length > 0;\n }\n get(key, keepScalar) {\n const idx = asItemIndex(key);\n if (typeof idx !== 'number')\n return undefined;\n const it = this.items[idx];\n return !keepScalar && identity.isScalar(it) ? it.value : it;\n }\n /**\n * Checks if the collection includes a value with the key `key`.\n *\n * `key` must contain a representation of an integer for this to succeed.\n * It may be wrapped in a `Scalar`.\n */\n has(key) {\n const idx = asItemIndex(key);\n return typeof idx === 'number' && idx < this.items.length;\n }\n /**\n * Sets a value in this collection. For `!!set`, `value` needs to be a\n * boolean to add/remove the item from the set.\n *\n * If `key` does not contain a representation of an integer, this will throw.\n * It may be wrapped in a `Scalar`.\n */\n set(key, value) {\n const idx = asItemIndex(key);\n if (typeof idx !== 'number')\n throw new Error(`Expected a valid index, not ${key}.`);\n const prev = this.items[idx];\n if (identity.isScalar(prev) && Scalar.isScalarValue(value))\n prev.value = value;\n else\n this.items[idx] = value;\n }\n toJSON(_, ctx) {\n const seq = [];\n if (ctx?.onCreate)\n ctx.onCreate(seq);\n let i = 0;\n for (const item of this.items)\n seq.push(toJS.toJS(item, String(i++), ctx));\n return seq;\n }\n toString(ctx, onComment, onChompKeep) {\n if (!ctx)\n return JSON.stringify(this);\n return stringifyCollection.stringifyCollection(this, ctx, {\n blockItemPrefix: '- ',\n flowChars: { start: '[', end: ']' },\n itemIndent: (ctx.indent || '') + ' ',\n onChompKeep,\n onComment\n });\n }\n static from(schema, obj, ctx) {\n const { replacer } = ctx;\n const seq = new this(schema);\n if (obj && Symbol.iterator in Object(obj)) {\n let i = 0;\n for (let it of obj) {\n if (typeof replacer === 'function') {\n const key = obj instanceof Set ? it : String(i++);\n it = replacer.call(obj, key, it);\n }\n seq.items.push(createNode.createNode(it, undefined, ctx));\n }\n }\n return seq;\n }\n}\nfunction asItemIndex(key) {\n let idx = identity.isScalar(key) ? key.value : key;\n if (idx && typeof idx === 'string')\n idx = Number(idx);\n return typeof idx === 'number' && Number.isInteger(idx) && idx >= 0\n ? idx\n : null;\n}\n\nexports.YAMLSeq = YAMLSeq;\n","'use strict';\n\nvar identity = require('../../nodes/identity.js');\nvar YAMLSeq = require('../../nodes/YAMLSeq.js');\n\nconst seq = {\n collection: 'seq',\n default: true,\n nodeClass: YAMLSeq.YAMLSeq,\n tag: 'tag:yaml.org,2002:seq',\n resolve(seq, onError) {\n if (!identity.isSeq(seq))\n onError('Expected a sequence for this tag');\n return seq;\n },\n createNode: (schema, obj, ctx) => YAMLSeq.YAMLSeq.from(schema, obj, ctx)\n};\n\nexports.seq = seq;\n","'use strict';\n\nvar stringifyString = require('../../stringify/stringifyString.js');\n\nconst string = {\n identify: value => typeof value === 'string',\n default: true,\n tag: 'tag:yaml.org,2002:str',\n resolve: str => str,\n stringify(item, ctx, onComment, onChompKeep) {\n ctx = Object.assign({ actualString: true }, ctx);\n return stringifyString.stringifyString(item, ctx, onComment, onChompKeep);\n }\n};\n\nexports.string = string;\n","'use strict';\n\nvar Scalar = require('../../nodes/Scalar.js');\n\nconst nullTag = {\n identify: value => value == null,\n createNode: () => new Scalar.Scalar(null),\n default: true,\n tag: 'tag:yaml.org,2002:null',\n test: /^(?:~|[Nn]ull|NULL)?$/,\n resolve: () => new Scalar.Scalar(null),\n stringify: ({ source }, ctx) => typeof source === 'string' && nullTag.test.test(source)\n ? source\n : ctx.options.nullStr\n};\n\nexports.nullTag = nullTag;\n","'use strict';\n\nvar Scalar = require('../../nodes/Scalar.js');\n\nconst boolTag = {\n identify: value => typeof value === 'boolean',\n default: true,\n tag: 'tag:yaml.org,2002:bool',\n test: /^(?:[Tt]rue|TRUE|[Ff]alse|FALSE)$/,\n resolve: str => new Scalar.Scalar(str[0] === 't' || str[0] === 'T'),\n stringify({ source, value }, ctx) {\n if (source && boolTag.test.test(source)) {\n const sv = source[0] === 't' || source[0] === 'T';\n if (value === sv)\n return source;\n }\n return value ? ctx.options.trueStr : ctx.options.falseStr;\n }\n};\n\nexports.boolTag = boolTag;\n","'use strict';\n\nfunction stringifyNumber({ format, minFractionDigits, tag, value }) {\n if (typeof value === 'bigint')\n return String(value);\n const num = typeof value === 'number' ? value : Number(value);\n if (!isFinite(num))\n return isNaN(num) ? '.nan' : num < 0 ? '-.inf' : '.inf';\n let n = Object.is(value, -0) ? '-0' : JSON.stringify(value);\n if (!format &&\n minFractionDigits &&\n (!tag || tag === 'tag:yaml.org,2002:float') &&\n /^\\d/.test(n)) {\n let i = n.indexOf('.');\n if (i < 0) {\n i = n.length;\n n += '.';\n }\n let d = minFractionDigits - (n.length - i - 1);\n while (d-- > 0)\n n += '0';\n }\n return n;\n}\n\nexports.stringifyNumber = stringifyNumber;\n","'use strict';\n\nvar Scalar = require('../../nodes/Scalar.js');\nvar stringifyNumber = require('../../stringify/stringifyNumber.js');\n\nconst floatNaN = {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n test: /^(?:[-+]?\\.(?:inf|Inf|INF)|\\.nan|\\.NaN|\\.NAN)$/,\n resolve: str => str.slice(-3).toLowerCase() === 'nan'\n ? NaN\n : str[0] === '-'\n ? Number.NEGATIVE_INFINITY\n : Number.POSITIVE_INFINITY,\n stringify: stringifyNumber.stringifyNumber\n};\nconst floatExp = {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n format: 'EXP',\n test: /^[-+]?(?:\\.[0-9]+|[0-9]+(?:\\.[0-9]*)?)[eE][-+]?[0-9]+$/,\n resolve: str => parseFloat(str),\n stringify(node) {\n const num = Number(node.value);\n return isFinite(num) ? num.toExponential() : stringifyNumber.stringifyNumber(node);\n }\n};\nconst float = {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n test: /^[-+]?(?:\\.[0-9]+|[0-9]+\\.[0-9]*)$/,\n resolve(str) {\n const node = new Scalar.Scalar(parseFloat(str));\n const dot = str.indexOf('.');\n if (dot !== -1 && str[str.length - 1] === '0')\n node.minFractionDigits = str.length - dot - 1;\n return node;\n },\n stringify: stringifyNumber.stringifyNumber\n};\n\nexports.float = float;\nexports.floatExp = floatExp;\nexports.floatNaN = floatNaN;\n","'use strict';\n\nvar stringifyNumber = require('../../stringify/stringifyNumber.js');\n\nconst intIdentify = (value) => typeof value === 'bigint' || Number.isInteger(value);\nconst intResolve = (str, offset, radix, { intAsBigInt }) => (intAsBigInt ? BigInt(str) : parseInt(str.substring(offset), radix));\nfunction intStringify(node, radix, prefix) {\n const { value } = node;\n if (intIdentify(value) && value >= 0)\n return prefix + value.toString(radix);\n return stringifyNumber.stringifyNumber(node);\n}\nconst intOct = {\n identify: value => intIdentify(value) && value >= 0,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n format: 'OCT',\n test: /^0o[0-7]+$/,\n resolve: (str, _onError, opt) => intResolve(str, 2, 8, opt),\n stringify: node => intStringify(node, 8, '0o')\n};\nconst int = {\n identify: intIdentify,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n test: /^[-+]?[0-9]+$/,\n resolve: (str, _onError, opt) => intResolve(str, 0, 10, opt),\n stringify: stringifyNumber.stringifyNumber\n};\nconst intHex = {\n identify: value => intIdentify(value) && value >= 0,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n format: 'HEX',\n test: /^0x[0-9a-fA-F]+$/,\n resolve: (str, _onError, opt) => intResolve(str, 2, 16, opt),\n stringify: node => intStringify(node, 16, '0x')\n};\n\nexports.int = int;\nexports.intHex = intHex;\nexports.intOct = intOct;\n","'use strict';\n\nvar map = require('../common/map.js');\nvar _null = require('../common/null.js');\nvar seq = require('../common/seq.js');\nvar string = require('../common/string.js');\nvar bool = require('./bool.js');\nvar float = require('./float.js');\nvar int = require('./int.js');\n\nconst schema = [\n map.map,\n seq.seq,\n string.string,\n _null.nullTag,\n bool.boolTag,\n int.intOct,\n int.int,\n int.intHex,\n float.floatNaN,\n float.floatExp,\n float.float\n];\n\nexports.schema = schema;\n","'use strict';\n\nvar Scalar = require('../../nodes/Scalar.js');\nvar map = require('../common/map.js');\nvar seq = require('../common/seq.js');\n\nfunction intIdentify(value) {\n return typeof value === 'bigint' || Number.isInteger(value);\n}\nconst stringifyJSON = ({ value }) => JSON.stringify(value);\nconst jsonScalars = [\n {\n identify: value => typeof value === 'string',\n default: true,\n tag: 'tag:yaml.org,2002:str',\n resolve: str => str,\n stringify: stringifyJSON\n },\n {\n identify: value => value == null,\n createNode: () => new Scalar.Scalar(null),\n default: true,\n tag: 'tag:yaml.org,2002:null',\n test: /^null$/,\n resolve: () => null,\n stringify: stringifyJSON\n },\n {\n identify: value => typeof value === 'boolean',\n default: true,\n tag: 'tag:yaml.org,2002:bool',\n test: /^true$|^false$/,\n resolve: str => str === 'true',\n stringify: stringifyJSON\n },\n {\n identify: intIdentify,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n test: /^-?(?:0|[1-9][0-9]*)$/,\n resolve: (str, _onError, { intAsBigInt }) => intAsBigInt ? BigInt(str) : parseInt(str, 10),\n stringify: ({ value }) => intIdentify(value) ? value.toString() : JSON.stringify(value)\n },\n {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n test: /^-?(?:0|[1-9][0-9]*)(?:\\.[0-9]*)?(?:[eE][-+]?[0-9]+)?$/,\n resolve: str => parseFloat(str),\n stringify: stringifyJSON\n }\n];\nconst jsonError = {\n default: true,\n tag: '',\n test: /^/,\n resolve(str, onError) {\n onError(`Unresolved plain scalar ${JSON.stringify(str)}`);\n return str;\n }\n};\nconst schema = [map.map, seq.seq].concat(jsonScalars, jsonError);\n\nexports.schema = schema;\n","'use strict';\n\nvar node_buffer = require('buffer');\nvar Scalar = require('../../nodes/Scalar.js');\nvar stringifyString = require('../../stringify/stringifyString.js');\n\nconst binary = {\n identify: value => value instanceof Uint8Array, // Buffer inherits from Uint8Array\n default: false,\n tag: 'tag:yaml.org,2002:binary',\n /**\n * Returns a Buffer in node and an Uint8Array in browsers\n *\n * To use the resulting buffer as an image, you'll want to do something like:\n *\n * const blob = new Blob([buffer], { type: 'image/jpeg' })\n * document.querySelector('#photo').src = URL.createObjectURL(blob)\n */\n resolve(src, onError) {\n if (typeof node_buffer.Buffer === 'function') {\n return node_buffer.Buffer.from(src, 'base64');\n }\n else if (typeof atob === 'function') {\n // On IE 11, atob() can't handle newlines\n const str = atob(src.replace(/[\\n\\r]/g, ''));\n const buffer = new Uint8Array(str.length);\n for (let i = 0; i < str.length; ++i)\n buffer[i] = str.charCodeAt(i);\n return buffer;\n }\n else {\n onError('This environment does not support reading binary tags; either Buffer or atob is required');\n return src;\n }\n },\n stringify({ comment, type, value }, ctx, onComment, onChompKeep) {\n if (!value)\n return '';\n const buf = value; // checked earlier by binary.identify()\n let str;\n if (typeof node_buffer.Buffer === 'function') {\n str =\n buf instanceof node_buffer.Buffer\n ? buf.toString('base64')\n : node_buffer.Buffer.from(buf.buffer).toString('base64');\n }\n else if (typeof btoa === 'function') {\n let s = '';\n for (let i = 0; i < buf.length; ++i)\n s += String.fromCharCode(buf[i]);\n str = btoa(s);\n }\n else {\n throw new Error('This environment does not support writing binary tags; either Buffer or btoa is required');\n }\n type ?? (type = Scalar.Scalar.BLOCK_LITERAL);\n if (type !== Scalar.Scalar.QUOTE_DOUBLE) {\n const lineWidth = Math.max(ctx.options.lineWidth - ctx.indent.length, ctx.options.minContentWidth);\n const n = Math.ceil(str.length / lineWidth);\n const lines = new Array(n);\n for (let i = 0, o = 0; i < n; ++i, o += lineWidth) {\n lines[i] = str.substr(o, lineWidth);\n }\n str = lines.join(type === Scalar.Scalar.BLOCK_LITERAL ? '\\n' : ' ');\n }\n return stringifyString.stringifyString({ comment, type, value: str }, ctx, onComment, onChompKeep);\n }\n};\n\nexports.binary = binary;\n","'use strict';\n\nvar identity = require('../../nodes/identity.js');\nvar Pair = require('../../nodes/Pair.js');\nvar Scalar = require('../../nodes/Scalar.js');\nvar YAMLSeq = require('../../nodes/YAMLSeq.js');\n\nfunction resolvePairs(seq, onError) {\n if (identity.isSeq(seq)) {\n for (let i = 0; i < seq.items.length; ++i) {\n let item = seq.items[i];\n if (identity.isPair(item))\n continue;\n else if (identity.isMap(item)) {\n if (item.items.length > 1)\n onError('Each pair must have its own sequence indicator');\n const pair = item.items[0] || new Pair.Pair(new Scalar.Scalar(null));\n if (item.commentBefore)\n pair.key.commentBefore = pair.key.commentBefore\n ? `${item.commentBefore}\\n${pair.key.commentBefore}`\n : item.commentBefore;\n if (item.comment) {\n const cn = pair.value ?? pair.key;\n cn.comment = cn.comment\n ? `${item.comment}\\n${cn.comment}`\n : item.comment;\n }\n item = pair;\n }\n seq.items[i] = identity.isPair(item) ? item : new Pair.Pair(item);\n }\n }\n else\n onError('Expected a sequence for this tag');\n return seq;\n}\nfunction createPairs(schema, iterable, ctx) {\n const { replacer } = ctx;\n const pairs = new YAMLSeq.YAMLSeq(schema);\n pairs.tag = 'tag:yaml.org,2002:pairs';\n let i = 0;\n if (iterable && Symbol.iterator in Object(iterable))\n for (let it of iterable) {\n if (typeof replacer === 'function')\n it = replacer.call(iterable, String(i++), it);\n let key, value;\n if (Array.isArray(it)) {\n if (it.length === 2) {\n key = it[0];\n value = it[1];\n }\n else\n throw new TypeError(`Expected [key, value] tuple: ${it}`);\n }\n else if (it && it instanceof Object) {\n const keys = Object.keys(it);\n if (keys.length === 1) {\n key = keys[0];\n value = it[key];\n }\n else {\n throw new TypeError(`Expected tuple with one key, not ${keys.length} keys`);\n }\n }\n else {\n key = it;\n }\n pairs.items.push(Pair.createPair(key, value, ctx));\n }\n return pairs;\n}\nconst pairs = {\n collection: 'seq',\n default: false,\n tag: 'tag:yaml.org,2002:pairs',\n resolve: resolvePairs,\n createNode: createPairs\n};\n\nexports.createPairs = createPairs;\nexports.pairs = pairs;\nexports.resolvePairs = resolvePairs;\n","'use strict';\n\nvar identity = require('../../nodes/identity.js');\nvar toJS = require('../../nodes/toJS.js');\nvar YAMLMap = require('../../nodes/YAMLMap.js');\nvar YAMLSeq = require('../../nodes/YAMLSeq.js');\nvar pairs = require('./pairs.js');\n\nclass YAMLOMap extends YAMLSeq.YAMLSeq {\n constructor() {\n super();\n this.add = YAMLMap.YAMLMap.prototype.add.bind(this);\n this.delete = YAMLMap.YAMLMap.prototype.delete.bind(this);\n this.get = YAMLMap.YAMLMap.prototype.get.bind(this);\n this.has = YAMLMap.YAMLMap.prototype.has.bind(this);\n this.set = YAMLMap.YAMLMap.prototype.set.bind(this);\n this.tag = YAMLOMap.tag;\n }\n /**\n * If `ctx` is given, the return type is actually `Map`,\n * but TypeScript won't allow widening the signature of a child method.\n */\n toJSON(_, ctx) {\n if (!ctx)\n return super.toJSON(_);\n const map = new Map();\n if (ctx?.onCreate)\n ctx.onCreate(map);\n for (const pair of this.items) {\n let key, value;\n if (identity.isPair(pair)) {\n key = toJS.toJS(pair.key, '', ctx);\n value = toJS.toJS(pair.value, key, ctx);\n }\n else {\n key = toJS.toJS(pair, '', ctx);\n }\n if (map.has(key))\n throw new Error('Ordered maps must not include duplicate keys');\n map.set(key, value);\n }\n return map;\n }\n static from(schema, iterable, ctx) {\n const pairs$1 = pairs.createPairs(schema, iterable, ctx);\n const omap = new this();\n omap.items = pairs$1.items;\n return omap;\n }\n}\nYAMLOMap.tag = 'tag:yaml.org,2002:omap';\nconst omap = {\n collection: 'seq',\n identify: value => value instanceof Map,\n nodeClass: YAMLOMap,\n default: false,\n tag: 'tag:yaml.org,2002:omap',\n resolve(seq, onError) {\n const pairs$1 = pairs.resolvePairs(seq, onError);\n const seenKeys = [];\n for (const { key } of pairs$1.items) {\n if (identity.isScalar(key)) {\n if (seenKeys.includes(key.value)) {\n onError(`Ordered maps must not include duplicate keys: ${key.value}`);\n }\n else {\n seenKeys.push(key.value);\n }\n }\n }\n return Object.assign(new YAMLOMap(), pairs$1);\n },\n createNode: (schema, iterable, ctx) => YAMLOMap.from(schema, iterable, ctx)\n};\n\nexports.YAMLOMap = YAMLOMap;\nexports.omap = omap;\n","'use strict';\n\nvar Scalar = require('../../nodes/Scalar.js');\n\nfunction boolStringify({ value, source }, ctx) {\n const boolObj = value ? trueTag : falseTag;\n if (source && boolObj.test.test(source))\n return source;\n return value ? ctx.options.trueStr : ctx.options.falseStr;\n}\nconst trueTag = {\n identify: value => value === true,\n default: true,\n tag: 'tag:yaml.org,2002:bool',\n test: /^(?:Y|y|[Yy]es|YES|[Tt]rue|TRUE|[Oo]n|ON)$/,\n resolve: () => new Scalar.Scalar(true),\n stringify: boolStringify\n};\nconst falseTag = {\n identify: value => value === false,\n default: true,\n tag: 'tag:yaml.org,2002:bool',\n test: /^(?:N|n|[Nn]o|NO|[Ff]alse|FALSE|[Oo]ff|OFF)$/,\n resolve: () => new Scalar.Scalar(false),\n stringify: boolStringify\n};\n\nexports.falseTag = falseTag;\nexports.trueTag = trueTag;\n","'use strict';\n\nvar Scalar = require('../../nodes/Scalar.js');\nvar stringifyNumber = require('../../stringify/stringifyNumber.js');\n\nconst floatNaN = {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n test: /^(?:[-+]?\\.(?:inf|Inf|INF)|\\.nan|\\.NaN|\\.NAN)$/,\n resolve: (str) => str.slice(-3).toLowerCase() === 'nan'\n ? NaN\n : str[0] === '-'\n ? Number.NEGATIVE_INFINITY\n : Number.POSITIVE_INFINITY,\n stringify: stringifyNumber.stringifyNumber\n};\nconst floatExp = {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n format: 'EXP',\n test: /^[-+]?(?:[0-9][0-9_]*)?(?:\\.[0-9_]*)?[eE][-+]?[0-9]+$/,\n resolve: (str) => parseFloat(str.replace(/_/g, '')),\n stringify(node) {\n const num = Number(node.value);\n return isFinite(num) ? num.toExponential() : stringifyNumber.stringifyNumber(node);\n }\n};\nconst float = {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n test: /^[-+]?(?:[0-9][0-9_]*)?\\.[0-9_]*$/,\n resolve(str) {\n const node = new Scalar.Scalar(parseFloat(str.replace(/_/g, '')));\n const dot = str.indexOf('.');\n if (dot !== -1) {\n const f = str.substring(dot + 1).replace(/_/g, '');\n if (f[f.length - 1] === '0')\n node.minFractionDigits = f.length;\n }\n return node;\n },\n stringify: stringifyNumber.stringifyNumber\n};\n\nexports.float = float;\nexports.floatExp = floatExp;\nexports.floatNaN = floatNaN;\n","'use strict';\n\nvar stringifyNumber = require('../../stringify/stringifyNumber.js');\n\nconst intIdentify = (value) => typeof value === 'bigint' || Number.isInteger(value);\nfunction intResolve(str, offset, radix, { intAsBigInt }) {\n const sign = str[0];\n if (sign === '-' || sign === '+')\n offset += 1;\n str = str.substring(offset).replace(/_/g, '');\n if (intAsBigInt) {\n switch (radix) {\n case 2:\n str = `0b${str}`;\n break;\n case 8:\n str = `0o${str}`;\n break;\n case 16:\n str = `0x${str}`;\n break;\n }\n const n = BigInt(str);\n return sign === '-' ? BigInt(-1) * n : n;\n }\n const n = parseInt(str, radix);\n return sign === '-' ? -1 * n : n;\n}\nfunction intStringify(node, radix, prefix) {\n const { value } = node;\n if (intIdentify(value)) {\n const str = value.toString(radix);\n return value < 0 ? '-' + prefix + str.substr(1) : prefix + str;\n }\n return stringifyNumber.stringifyNumber(node);\n}\nconst intBin = {\n identify: intIdentify,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n format: 'BIN',\n test: /^[-+]?0b[0-1_]+$/,\n resolve: (str, _onError, opt) => intResolve(str, 2, 2, opt),\n stringify: node => intStringify(node, 2, '0b')\n};\nconst intOct = {\n identify: intIdentify,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n format: 'OCT',\n test: /^[-+]?0[0-7_]+$/,\n resolve: (str, _onError, opt) => intResolve(str, 1, 8, opt),\n stringify: node => intStringify(node, 8, '0')\n};\nconst int = {\n identify: intIdentify,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n test: /^[-+]?[0-9][0-9_]*$/,\n resolve: (str, _onError, opt) => intResolve(str, 0, 10, opt),\n stringify: stringifyNumber.stringifyNumber\n};\nconst intHex = {\n identify: intIdentify,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n format: 'HEX',\n test: /^[-+]?0x[0-9a-fA-F_]+$/,\n resolve: (str, _onError, opt) => intResolve(str, 2, 16, opt),\n stringify: node => intStringify(node, 16, '0x')\n};\n\nexports.int = int;\nexports.intBin = intBin;\nexports.intHex = intHex;\nexports.intOct = intOct;\n","'use strict';\n\nvar identity = require('../../nodes/identity.js');\nvar Pair = require('../../nodes/Pair.js');\nvar YAMLMap = require('../../nodes/YAMLMap.js');\n\nclass YAMLSet extends YAMLMap.YAMLMap {\n constructor(schema) {\n super(schema);\n this.tag = YAMLSet.tag;\n }\n add(key) {\n let pair;\n if (identity.isPair(key))\n pair = key;\n else if (key &&\n typeof key === 'object' &&\n 'key' in key &&\n 'value' in key &&\n key.value === null)\n pair = new Pair.Pair(key.key, null);\n else\n pair = new Pair.Pair(key, null);\n const prev = YAMLMap.findPair(this.items, pair.key);\n if (!prev)\n this.items.push(pair);\n }\n /**\n * If `keepPair` is `true`, returns the Pair matching `key`.\n * Otherwise, returns the value of that Pair's key.\n */\n get(key, keepPair) {\n const pair = YAMLMap.findPair(this.items, key);\n return !keepPair && identity.isPair(pair)\n ? identity.isScalar(pair.key)\n ? pair.key.value\n : pair.key\n : pair;\n }\n set(key, value) {\n if (typeof value !== 'boolean')\n throw new Error(`Expected boolean value for set(key, value) in a YAML set, not ${typeof value}`);\n const prev = YAMLMap.findPair(this.items, key);\n if (prev && !value) {\n this.items.splice(this.items.indexOf(prev), 1);\n }\n else if (!prev && value) {\n this.items.push(new Pair.Pair(key));\n }\n }\n toJSON(_, ctx) {\n return super.toJSON(_, ctx, Set);\n }\n toString(ctx, onComment, onChompKeep) {\n if (!ctx)\n return JSON.stringify(this);\n if (this.hasAllNullValues(true))\n return super.toString(Object.assign({}, ctx, { allNullValues: true }), onComment, onChompKeep);\n else\n throw new Error('Set items must all have null values');\n }\n static from(schema, iterable, ctx) {\n const { replacer } = ctx;\n const set = new this(schema);\n if (iterable && Symbol.iterator in Object(iterable))\n for (let value of iterable) {\n if (typeof replacer === 'function')\n value = replacer.call(iterable, value, value);\n set.items.push(Pair.createPair(value, null, ctx));\n }\n return set;\n }\n}\nYAMLSet.tag = 'tag:yaml.org,2002:set';\nconst set = {\n collection: 'map',\n identify: value => value instanceof Set,\n nodeClass: YAMLSet,\n default: false,\n tag: 'tag:yaml.org,2002:set',\n createNode: (schema, iterable, ctx) => YAMLSet.from(schema, iterable, ctx),\n resolve(map, onError) {\n if (identity.isMap(map)) {\n if (map.hasAllNullValues(true))\n return Object.assign(new YAMLSet(), map);\n else\n onError('Set items must all have null values');\n }\n else\n onError('Expected a mapping for this tag');\n return map;\n }\n};\n\nexports.YAMLSet = YAMLSet;\nexports.set = set;\n","'use strict';\n\nvar stringifyNumber = require('../../stringify/stringifyNumber.js');\n\n/** Internal types handle bigint as number, because TS can't figure it out. */\nfunction parseSexagesimal(str, asBigInt) {\n const sign = str[0];\n const parts = sign === '-' || sign === '+' ? str.substring(1) : str;\n const num = (n) => asBigInt ? BigInt(n) : Number(n);\n const res = parts\n .replace(/_/g, '')\n .split(':')\n .reduce((res, p) => res * num(60) + num(p), num(0));\n return (sign === '-' ? num(-1) * res : res);\n}\n/**\n * hhhh:mm:ss.sss\n *\n * Internal types handle bigint as number, because TS can't figure it out.\n */\nfunction stringifySexagesimal(node) {\n let { value } = node;\n let num = (n) => n;\n if (typeof value === 'bigint')\n num = n => BigInt(n);\n else if (isNaN(value) || !isFinite(value))\n return stringifyNumber.stringifyNumber(node);\n let sign = '';\n if (value < 0) {\n sign = '-';\n value *= num(-1);\n }\n const _60 = num(60);\n const parts = [value % _60]; // seconds, including ms\n if (value < 60) {\n parts.unshift(0); // at least one : is required\n }\n else {\n value = (value - parts[0]) / _60;\n parts.unshift(value % _60); // minutes\n if (value >= 60) {\n value = (value - parts[0]) / _60;\n parts.unshift(value); // hours\n }\n }\n return (sign +\n parts\n .map(n => String(n).padStart(2, '0'))\n .join(':')\n .replace(/000000\\d*$/, '') // % 60 may introduce error\n );\n}\nconst intTime = {\n identify: value => typeof value === 'bigint' || Number.isInteger(value),\n default: true,\n tag: 'tag:yaml.org,2002:int',\n format: 'TIME',\n test: /^[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+$/,\n resolve: (str, _onError, { intAsBigInt }) => parseSexagesimal(str, intAsBigInt),\n stringify: stringifySexagesimal\n};\nconst floatTime = {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n format: 'TIME',\n test: /^[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\.[0-9_]*$/,\n resolve: str => parseSexagesimal(str, false),\n stringify: stringifySexagesimal\n};\nconst timestamp = {\n identify: value => value instanceof Date,\n default: true,\n tag: 'tag:yaml.org,2002:timestamp',\n // If the time zone is omitted, the timestamp is assumed to be specified in UTC. The time part\n // may be omitted altogether, resulting in a date format. In such a case, the time part is\n // assumed to be 00:00:00Z (start of day, UTC).\n test: RegExp('^([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})' + // YYYY-Mm-Dd\n '(?:' + // time is optional\n '(?:t|T|[ \\\\t]+)' + // t | T | whitespace\n '([0-9]{1,2}):([0-9]{1,2}):([0-9]{1,2}(\\\\.[0-9]+)?)' + // Hh:Mm:Ss(.ss)?\n '(?:[ \\\\t]*(Z|[-+][012]?[0-9](?::[0-9]{2})?))?' + // Z | +5 | -03:30\n ')?$'),\n resolve(str) {\n const match = str.match(timestamp.test);\n if (!match)\n throw new Error('!!timestamp expects a date, starting with yyyy-mm-dd');\n const [, year, month, day, hour, minute, second] = match.map(Number);\n const millisec = match[7] ? Number((match[7] + '00').substr(1, 3)) : 0;\n let date = Date.UTC(year, month - 1, day, hour || 0, minute || 0, second || 0, millisec);\n const tz = match[8];\n if (tz && tz !== 'Z') {\n let d = parseSexagesimal(tz, false);\n if (Math.abs(d) < 30)\n d *= 60;\n date -= 60000 * d;\n }\n return new Date(date);\n },\n stringify: ({ value }) => value?.toISOString().replace(/(T00:00:00)?\\.000Z$/, '') ?? ''\n};\n\nexports.floatTime = floatTime;\nexports.intTime = intTime;\nexports.timestamp = timestamp;\n","'use strict';\n\nvar map = require('../common/map.js');\nvar _null = require('../common/null.js');\nvar seq = require('../common/seq.js');\nvar string = require('../common/string.js');\nvar binary = require('./binary.js');\nvar bool = require('./bool.js');\nvar float = require('./float.js');\nvar int = require('./int.js');\nvar merge = require('./merge.js');\nvar omap = require('./omap.js');\nvar pairs = require('./pairs.js');\nvar set = require('./set.js');\nvar timestamp = require('./timestamp.js');\n\nconst schema = [\n map.map,\n seq.seq,\n string.string,\n _null.nullTag,\n bool.trueTag,\n bool.falseTag,\n int.intBin,\n int.intOct,\n int.int,\n int.intHex,\n float.floatNaN,\n float.floatExp,\n float.float,\n binary.binary,\n merge.merge,\n omap.omap,\n pairs.pairs,\n set.set,\n timestamp.intTime,\n timestamp.floatTime,\n timestamp.timestamp\n];\n\nexports.schema = schema;\n","'use strict';\n\nvar map = require('./common/map.js');\nvar _null = require('./common/null.js');\nvar seq = require('./common/seq.js');\nvar string = require('./common/string.js');\nvar bool = require('./core/bool.js');\nvar float = require('./core/float.js');\nvar int = require('./core/int.js');\nvar schema = require('./core/schema.js');\nvar schema$1 = require('./json/schema.js');\nvar binary = require('./yaml-1.1/binary.js');\nvar merge = require('./yaml-1.1/merge.js');\nvar omap = require('./yaml-1.1/omap.js');\nvar pairs = require('./yaml-1.1/pairs.js');\nvar schema$2 = require('./yaml-1.1/schema.js');\nvar set = require('./yaml-1.1/set.js');\nvar timestamp = require('./yaml-1.1/timestamp.js');\n\nconst schemas = new Map([\n ['core', schema.schema],\n ['failsafe', [map.map, seq.seq, string.string]],\n ['json', schema$1.schema],\n ['yaml11', schema$2.schema],\n ['yaml-1.1', schema$2.schema]\n]);\nconst tagsByName = {\n binary: binary.binary,\n bool: bool.boolTag,\n float: float.float,\n floatExp: float.floatExp,\n floatNaN: float.floatNaN,\n floatTime: timestamp.floatTime,\n int: int.int,\n intHex: int.intHex,\n intOct: int.intOct,\n intTime: timestamp.intTime,\n map: map.map,\n merge: merge.merge,\n null: _null.nullTag,\n omap: omap.omap,\n pairs: pairs.pairs,\n seq: seq.seq,\n set: set.set,\n timestamp: timestamp.timestamp\n};\nconst coreKnownTags = {\n 'tag:yaml.org,2002:binary': binary.binary,\n 'tag:yaml.org,2002:merge': merge.merge,\n 'tag:yaml.org,2002:omap': omap.omap,\n 'tag:yaml.org,2002:pairs': pairs.pairs,\n 'tag:yaml.org,2002:set': set.set,\n 'tag:yaml.org,2002:timestamp': timestamp.timestamp\n};\nfunction getTags(customTags, schemaName, addMergeTag) {\n const schemaTags = schemas.get(schemaName);\n if (schemaTags && !customTags) {\n return addMergeTag && !schemaTags.includes(merge.merge)\n ? schemaTags.concat(merge.merge)\n : schemaTags.slice();\n }\n let tags = schemaTags;\n if (!tags) {\n if (Array.isArray(customTags))\n tags = [];\n else {\n const keys = Array.from(schemas.keys())\n .filter(key => key !== 'yaml11')\n .map(key => JSON.stringify(key))\n .join(', ');\n throw new Error(`Unknown schema \"${schemaName}\"; use one of ${keys} or define customTags array`);\n }\n }\n if (Array.isArray(customTags)) {\n for (const tag of customTags)\n tags = tags.concat(tag);\n }\n else if (typeof customTags === 'function') {\n tags = customTags(tags.slice());\n }\n if (addMergeTag)\n tags = tags.concat(merge.merge);\n return tags.reduce((tags, tag) => {\n const tagObj = typeof tag === 'string' ? tagsByName[tag] : tag;\n if (!tagObj) {\n const tagName = JSON.stringify(tag);\n const keys = Object.keys(tagsByName)\n .map(key => JSON.stringify(key))\n .join(', ');\n throw new Error(`Unknown custom tag ${tagName}; use one of ${keys}`);\n }\n if (!tags.includes(tagObj))\n tags.push(tagObj);\n return tags;\n }, []);\n}\n\nexports.coreKnownTags = coreKnownTags;\nexports.getTags = getTags;\n","'use strict';\n\nvar identity = require('../nodes/identity.js');\nvar map = require('./common/map.js');\nvar seq = require('./common/seq.js');\nvar string = require('./common/string.js');\nvar tags = require('./tags.js');\n\nconst sortMapEntriesByKey = (a, b) => a.key < b.key ? -1 : a.key > b.key ? 1 : 0;\nclass Schema {\n constructor({ compat, customTags, merge, resolveKnownTags, schema, sortMapEntries, toStringDefaults }) {\n this.compat = Array.isArray(compat)\n ? tags.getTags(compat, 'compat')\n : compat\n ? tags.getTags(null, compat)\n : null;\n this.name = (typeof schema === 'string' && schema) || 'core';\n this.knownTags = resolveKnownTags ? tags.coreKnownTags : {};\n this.tags = tags.getTags(customTags, this.name, merge);\n this.toStringOptions = toStringDefaults ?? null;\n Object.defineProperty(this, identity.MAP, { value: map.map });\n Object.defineProperty(this, identity.SCALAR, { value: string.string });\n Object.defineProperty(this, identity.SEQ, { value: seq.seq });\n // Used by createMap()\n this.sortMapEntries =\n typeof sortMapEntries === 'function'\n ? sortMapEntries\n : sortMapEntries === true\n ? sortMapEntriesByKey\n : null;\n }\n clone() {\n const copy = Object.create(Schema.prototype, Object.getOwnPropertyDescriptors(this));\n copy.tags = this.tags.slice();\n return copy;\n }\n}\n\nexports.Schema = Schema;\n","'use strict';\n\nvar identity = require('../nodes/identity.js');\nvar stringify = require('./stringify.js');\nvar stringifyComment = require('./stringifyComment.js');\n\nfunction stringifyDocument(doc, options) {\n const lines = [];\n let hasDirectives = options.directives === true;\n if (options.directives !== false && doc.directives) {\n const dir = doc.directives.toString(doc);\n if (dir) {\n lines.push(dir);\n hasDirectives = true;\n }\n else if (doc.directives.docStart)\n hasDirectives = true;\n }\n if (hasDirectives)\n lines.push('---');\n const ctx = stringify.createStringifyContext(doc, options);\n const { commentString } = ctx.options;\n if (doc.commentBefore) {\n if (lines.length !== 1)\n lines.unshift('');\n const cs = commentString(doc.commentBefore);\n lines.unshift(stringifyComment.indentComment(cs, ''));\n }\n let chompKeep = false;\n let contentComment = null;\n if (doc.contents) {\n if (identity.isNode(doc.contents)) {\n if (doc.contents.spaceBefore && hasDirectives)\n lines.push('');\n if (doc.contents.commentBefore) {\n const cs = commentString(doc.contents.commentBefore);\n lines.push(stringifyComment.indentComment(cs, ''));\n }\n // top-level block scalars need to be indented if followed by a comment\n ctx.forceBlockIndent = !!doc.comment;\n contentComment = doc.contents.comment;\n }\n const onChompKeep = contentComment ? undefined : () => (chompKeep = true);\n let body = stringify.stringify(doc.contents, ctx, () => (contentComment = null), onChompKeep);\n if (contentComment)\n body += stringifyComment.lineComment(body, '', commentString(contentComment));\n if ((body[0] === '|' || body[0] === '>') &&\n lines[lines.length - 1] === '---') {\n // Top-level block scalars with a preceding doc marker ought to use the\n // same line for their header.\n lines[lines.length - 1] = `--- ${body}`;\n }\n else\n lines.push(body);\n }\n else {\n lines.push(stringify.stringify(doc.contents, ctx));\n }\n if (doc.directives?.docEnd) {\n if (doc.comment) {\n const cs = commentString(doc.comment);\n if (cs.includes('\\n')) {\n lines.push('...');\n lines.push(stringifyComment.indentComment(cs, ''));\n }\n else {\n lines.push(`... ${cs}`);\n }\n }\n else {\n lines.push('...');\n }\n }\n else {\n let dc = doc.comment;\n if (dc && chompKeep)\n dc = dc.replace(/^\\n+/, '');\n if (dc) {\n if ((!chompKeep || contentComment) && lines[lines.length - 1] !== '')\n lines.push('');\n lines.push(stringifyComment.indentComment(commentString(dc), ''));\n }\n }\n return lines.join('\\n') + '\\n';\n}\n\nexports.stringifyDocument = stringifyDocument;\n","'use strict';\n\nvar Alias = require('../nodes/Alias.js');\nvar Collection = require('../nodes/Collection.js');\nvar identity = require('../nodes/identity.js');\nvar Pair = require('../nodes/Pair.js');\nvar toJS = require('../nodes/toJS.js');\nvar Schema = require('../schema/Schema.js');\nvar stringifyDocument = require('../stringify/stringifyDocument.js');\nvar anchors = require('./anchors.js');\nvar applyReviver = require('./applyReviver.js');\nvar createNode = require('./createNode.js');\nvar directives = require('./directives.js');\n\nclass Document {\n constructor(value, replacer, options) {\n /** A comment before this Document */\n this.commentBefore = null;\n /** A comment immediately after this Document */\n this.comment = null;\n /** Errors encountered during parsing. */\n this.errors = [];\n /** Warnings encountered during parsing. */\n this.warnings = [];\n Object.defineProperty(this, identity.NODE_TYPE, { value: identity.DOC });\n let _replacer = null;\n if (typeof replacer === 'function' || Array.isArray(replacer)) {\n _replacer = replacer;\n }\n else if (options === undefined && replacer) {\n options = replacer;\n replacer = undefined;\n }\n const opt = Object.assign({\n intAsBigInt: false,\n keepSourceTokens: false,\n logLevel: 'warn',\n prettyErrors: true,\n strict: true,\n stringKeys: false,\n uniqueKeys: true,\n version: '1.2'\n }, options);\n this.options = opt;\n let { version } = opt;\n if (options?._directives) {\n this.directives = options._directives.atDocument();\n if (this.directives.yaml.explicit)\n version = this.directives.yaml.version;\n }\n else\n this.directives = new directives.Directives({ version });\n this.setSchema(version, options);\n // @ts-expect-error We can't really know that this matches Contents.\n this.contents =\n value === undefined ? null : this.createNode(value, _replacer, options);\n }\n /**\n * Create a deep copy of this Document and its contents.\n *\n * Custom Node values that inherit from `Object` still refer to their original instances.\n */\n clone() {\n const copy = Object.create(Document.prototype, {\n [identity.NODE_TYPE]: { value: identity.DOC }\n });\n copy.commentBefore = this.commentBefore;\n copy.comment = this.comment;\n copy.errors = this.errors.slice();\n copy.warnings = this.warnings.slice();\n copy.options = Object.assign({}, this.options);\n if (this.directives)\n copy.directives = this.directives.clone();\n copy.schema = this.schema.clone();\n // @ts-expect-error We can't really know that this matches Contents.\n copy.contents = identity.isNode(this.contents)\n ? this.contents.clone(copy.schema)\n : this.contents;\n if (this.range)\n copy.range = this.range.slice();\n return copy;\n }\n /** Adds a value to the document. */\n add(value) {\n if (assertCollection(this.contents))\n this.contents.add(value);\n }\n /** Adds a value to the document. */\n addIn(path, value) {\n if (assertCollection(this.contents))\n this.contents.addIn(path, value);\n }\n /**\n * Create a new `Alias` node, ensuring that the target `node` has the required anchor.\n *\n * If `node` already has an anchor, `name` is ignored.\n * Otherwise, the `node.anchor` value will be set to `name`,\n * or if an anchor with that name is already present in the document,\n * `name` will be used as a prefix for a new unique anchor.\n * If `name` is undefined, the generated anchor will use 'a' as a prefix.\n */\n createAlias(node, name) {\n if (!node.anchor) {\n const prev = anchors.anchorNames(this);\n node.anchor =\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n !name || prev.has(name) ? anchors.findNewAnchor(name || 'a', prev) : name;\n }\n return new Alias.Alias(node.anchor);\n }\n createNode(value, replacer, options) {\n let _replacer = undefined;\n if (typeof replacer === 'function') {\n value = replacer.call({ '': value }, '', value);\n _replacer = replacer;\n }\n else if (Array.isArray(replacer)) {\n const keyToStr = (v) => typeof v === 'number' || v instanceof String || v instanceof Number;\n const asStr = replacer.filter(keyToStr).map(String);\n if (asStr.length > 0)\n replacer = replacer.concat(asStr);\n _replacer = replacer;\n }\n else if (options === undefined && replacer) {\n options = replacer;\n replacer = undefined;\n }\n const { aliasDuplicateObjects, anchorPrefix, flow, keepUndefined, onTagObj, tag } = options ?? {};\n const { onAnchor, setAnchors, sourceObjects } = anchors.createNodeAnchors(this, \n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n anchorPrefix || 'a');\n const ctx = {\n aliasDuplicateObjects: aliasDuplicateObjects ?? true,\n keepUndefined: keepUndefined ?? false,\n onAnchor,\n onTagObj,\n replacer: _replacer,\n schema: this.schema,\n sourceObjects\n };\n const node = createNode.createNode(value, tag, ctx);\n if (flow && identity.isCollection(node))\n node.flow = true;\n setAnchors();\n return node;\n }\n /**\n * Convert a key and a value into a `Pair` using the current schema,\n * recursively wrapping all values as `Scalar` or `Collection` nodes.\n */\n createPair(key, value, options = {}) {\n const k = this.createNode(key, null, options);\n const v = this.createNode(value, null, options);\n return new Pair.Pair(k, v);\n }\n /**\n * Removes a value from the document.\n * @returns `true` if the item was found and removed.\n */\n delete(key) {\n return assertCollection(this.contents) ? this.contents.delete(key) : false;\n }\n /**\n * Removes a value from the document.\n * @returns `true` if the item was found and removed.\n */\n deleteIn(path) {\n if (Collection.isEmptyPath(path)) {\n if (this.contents == null)\n return false;\n // @ts-expect-error Presumed impossible if Strict extends false\n this.contents = null;\n return true;\n }\n return assertCollection(this.contents)\n ? this.contents.deleteIn(path)\n : false;\n }\n /**\n * Returns item at `key`, or `undefined` if not found. By default unwraps\n * scalar values from their surrounding node; to disable set `keepScalar` to\n * `true` (collections are always returned intact).\n */\n get(key, keepScalar) {\n return identity.isCollection(this.contents)\n ? this.contents.get(key, keepScalar)\n : undefined;\n }\n /**\n * Returns item at `path`, or `undefined` if not found. By default unwraps\n * scalar values from their surrounding node; to disable set `keepScalar` to\n * `true` (collections are always returned intact).\n */\n getIn(path, keepScalar) {\n if (Collection.isEmptyPath(path))\n return !keepScalar && identity.isScalar(this.contents)\n ? this.contents.value\n : this.contents;\n return identity.isCollection(this.contents)\n ? this.contents.getIn(path, keepScalar)\n : undefined;\n }\n /**\n * Checks if the document includes a value with the key `key`.\n */\n has(key) {\n return identity.isCollection(this.contents) ? this.contents.has(key) : false;\n }\n /**\n * Checks if the document includes a value at `path`.\n */\n hasIn(path) {\n if (Collection.isEmptyPath(path))\n return this.contents !== undefined;\n return identity.isCollection(this.contents) ? this.contents.hasIn(path) : false;\n }\n /**\n * Sets a value in this document. For `!!set`, `value` needs to be a\n * boolean to add/remove the item from the set.\n */\n set(key, value) {\n if (this.contents == null) {\n // @ts-expect-error We can't really know that this matches Contents.\n this.contents = Collection.collectionFromPath(this.schema, [key], value);\n }\n else if (assertCollection(this.contents)) {\n this.contents.set(key, value);\n }\n }\n /**\n * Sets a value in this document. For `!!set`, `value` needs to be a\n * boolean to add/remove the item from the set.\n */\n setIn(path, value) {\n if (Collection.isEmptyPath(path)) {\n // @ts-expect-error We can't really know that this matches Contents.\n this.contents = value;\n }\n else if (this.contents == null) {\n // @ts-expect-error We can't really know that this matches Contents.\n this.contents = Collection.collectionFromPath(this.schema, Array.from(path), value);\n }\n else if (assertCollection(this.contents)) {\n this.contents.setIn(path, value);\n }\n }\n /**\n * Change the YAML version and schema used by the document.\n * A `null` version disables support for directives, explicit tags, anchors, and aliases.\n * It also requires the `schema` option to be given as a `Schema` instance value.\n *\n * Overrides all previously set schema options.\n */\n setSchema(version, options = {}) {\n if (typeof version === 'number')\n version = String(version);\n let opt;\n switch (version) {\n case '1.1':\n if (this.directives)\n this.directives.yaml.version = '1.1';\n else\n this.directives = new directives.Directives({ version: '1.1' });\n opt = { resolveKnownTags: false, schema: 'yaml-1.1' };\n break;\n case '1.2':\n case 'next':\n if (this.directives)\n this.directives.yaml.version = version;\n else\n this.directives = new directives.Directives({ version });\n opt = { resolveKnownTags: true, schema: 'core' };\n break;\n case null:\n if (this.directives)\n delete this.directives;\n opt = null;\n break;\n default: {\n const sv = JSON.stringify(version);\n throw new Error(`Expected '1.1', '1.2' or null as first argument, but found: ${sv}`);\n }\n }\n // Not using `instanceof Schema` to allow for duck typing\n if (options.schema instanceof Object)\n this.schema = options.schema;\n else if (opt)\n this.schema = new Schema.Schema(Object.assign(opt, options));\n else\n throw new Error(`With a null YAML version, the { schema: Schema } option is required`);\n }\n // json & jsonArg are only used from toJSON()\n toJS({ json, jsonArg, mapAsMap, maxAliasCount, onAnchor, reviver } = {}) {\n const ctx = {\n anchors: new Map(),\n doc: this,\n keep: !json,\n mapAsMap: mapAsMap === true,\n mapKeyWarned: false,\n maxAliasCount: typeof maxAliasCount === 'number' ? maxAliasCount : 100\n };\n const res = toJS.toJS(this.contents, jsonArg ?? '', ctx);\n if (typeof onAnchor === 'function')\n for (const { count, res } of ctx.anchors.values())\n onAnchor(res, count);\n return typeof reviver === 'function'\n ? applyReviver.applyReviver(reviver, { '': res }, '', res)\n : res;\n }\n /**\n * A JSON representation of the document `contents`.\n *\n * @param jsonArg Used by `JSON.stringify` to indicate the array index or\n * property name.\n */\n toJSON(jsonArg, onAnchor) {\n return this.toJS({ json: true, jsonArg, mapAsMap: false, onAnchor });\n }\n /** A YAML representation of the document. */\n toString(options = {}) {\n if (this.errors.length > 0)\n throw new Error('Document with errors cannot be stringified');\n if ('indent' in options &&\n (!Number.isInteger(options.indent) || Number(options.indent) <= 0)) {\n const s = JSON.stringify(options.indent);\n throw new Error(`\"indent\" option must be a positive integer, not ${s}`);\n }\n return stringifyDocument.stringifyDocument(this, options);\n }\n}\nfunction assertCollection(contents) {\n if (identity.isCollection(contents))\n return true;\n throw new Error('Expected a YAML collection as document contents');\n}\n\nexports.Document = Document;\n","'use strict';\n\nclass YAMLError extends Error {\n constructor(name, pos, code, message) {\n super();\n this.name = name;\n this.code = code;\n this.message = message;\n this.pos = pos;\n }\n}\nclass YAMLParseError extends YAMLError {\n constructor(pos, code, message) {\n super('YAMLParseError', pos, code, message);\n }\n}\nclass YAMLWarning extends YAMLError {\n constructor(pos, code, message) {\n super('YAMLWarning', pos, code, message);\n }\n}\nconst prettifyError = (src, lc) => (error) => {\n if (error.pos[0] === -1)\n return;\n error.linePos = error.pos.map(pos => lc.linePos(pos));\n const { line, col } = error.linePos[0];\n error.message += ` at line ${line}, column ${col}`;\n let ci = col - 1;\n let lineStr = src\n .substring(lc.lineStarts[line - 1], lc.lineStarts[line])\n .replace(/[\\n\\r]+$/, '');\n // Trim to max 80 chars, keeping col position near the middle\n if (ci >= 60 && lineStr.length > 80) {\n const trimStart = Math.min(ci - 39, lineStr.length - 79);\n lineStr = '…' + lineStr.substring(trimStart);\n ci -= trimStart - 1;\n }\n if (lineStr.length > 80)\n lineStr = lineStr.substring(0, 79) + '…';\n // Include previous line in context if pointing at line start\n if (line > 1 && /^ *$/.test(lineStr.substring(0, ci))) {\n // Regexp won't match if start is trimmed\n let prev = src.substring(lc.lineStarts[line - 2], lc.lineStarts[line - 1]);\n if (prev.length > 80)\n prev = prev.substring(0, 79) + '…\\n';\n lineStr = prev + lineStr;\n }\n if (/[^ ]/.test(lineStr)) {\n let count = 1;\n const end = error.linePos[1];\n if (end?.line === line && end.col > col) {\n count = Math.max(1, Math.min(end.col - col, 80 - ci));\n }\n const pointer = ' '.repeat(ci) + '^'.repeat(count);\n error.message += `:\\n\\n${lineStr}\\n${pointer}\\n`;\n }\n};\n\nexports.YAMLError = YAMLError;\nexports.YAMLParseError = YAMLParseError;\nexports.YAMLWarning = YAMLWarning;\nexports.prettifyError = prettifyError;\n","'use strict';\n\nfunction resolveProps(tokens, { flow, indicator, next, offset, onError, parentIndent, startOnNewline }) {\n let spaceBefore = false;\n let atNewline = startOnNewline;\n let hasSpace = startOnNewline;\n let comment = '';\n let commentSep = '';\n let hasNewline = false;\n let reqSpace = false;\n let tab = null;\n let anchor = null;\n let tag = null;\n let newlineAfterProp = null;\n let comma = null;\n let found = null;\n let start = null;\n for (const token of tokens) {\n if (reqSpace) {\n if (token.type !== 'space' &&\n token.type !== 'newline' &&\n token.type !== 'comma')\n onError(token.offset, 'MISSING_CHAR', 'Tags and anchors must be separated from the next token by white space');\n reqSpace = false;\n }\n if (tab) {\n if (atNewline && token.type !== 'comment' && token.type !== 'newline') {\n onError(tab, 'TAB_AS_INDENT', 'Tabs are not allowed as indentation');\n }\n tab = null;\n }\n switch (token.type) {\n case 'space':\n // At the doc level, tabs at line start may be parsed\n // as leading white space rather than indentation.\n // In a flow collection, only the parser handles indent.\n if (!flow &&\n (indicator !== 'doc-start' || next?.type !== 'flow-collection') &&\n token.source.includes('\\t')) {\n tab = token;\n }\n hasSpace = true;\n break;\n case 'comment': {\n if (!hasSpace)\n onError(token, 'MISSING_CHAR', 'Comments must be separated from other tokens by white space characters');\n const cb = token.source.substring(1) || ' ';\n if (!comment)\n comment = cb;\n else\n comment += commentSep + cb;\n commentSep = '';\n atNewline = false;\n break;\n }\n case 'newline':\n if (atNewline) {\n if (comment)\n comment += token.source;\n else if (!found || indicator !== 'seq-item-ind')\n spaceBefore = true;\n }\n else\n commentSep += token.source;\n atNewline = true;\n hasNewline = true;\n if (anchor || tag)\n newlineAfterProp = token;\n hasSpace = true;\n break;\n case 'anchor':\n if (anchor)\n onError(token, 'MULTIPLE_ANCHORS', 'A node can have at most one anchor');\n if (token.source.endsWith(':'))\n onError(token.offset + token.source.length - 1, 'BAD_ALIAS', 'Anchor ending in : is ambiguous', true);\n anchor = token;\n start ?? (start = token.offset);\n atNewline = false;\n hasSpace = false;\n reqSpace = true;\n break;\n case 'tag': {\n if (tag)\n onError(token, 'MULTIPLE_TAGS', 'A node can have at most one tag');\n tag = token;\n start ?? (start = token.offset);\n atNewline = false;\n hasSpace = false;\n reqSpace = true;\n break;\n }\n case indicator:\n // Could here handle preceding comments differently\n if (anchor || tag)\n onError(token, 'BAD_PROP_ORDER', `Anchors and tags must be after the ${token.source} indicator`);\n if (found)\n onError(token, 'UNEXPECTED_TOKEN', `Unexpected ${token.source} in ${flow ?? 'collection'}`);\n found = token;\n atNewline =\n indicator === 'seq-item-ind' || indicator === 'explicit-key-ind';\n hasSpace = false;\n break;\n case 'comma':\n if (flow) {\n if (comma)\n onError(token, 'UNEXPECTED_TOKEN', `Unexpected , in ${flow}`);\n comma = token;\n atNewline = false;\n hasSpace = false;\n break;\n }\n // else fallthrough\n default:\n onError(token, 'UNEXPECTED_TOKEN', `Unexpected ${token.type} token`);\n atNewline = false;\n hasSpace = false;\n }\n }\n const last = tokens[tokens.length - 1];\n const end = last ? last.offset + last.source.length : offset;\n if (reqSpace &&\n next &&\n next.type !== 'space' &&\n next.type !== 'newline' &&\n next.type !== 'comma' &&\n (next.type !== 'scalar' || next.source !== '')) {\n onError(next.offset, 'MISSING_CHAR', 'Tags and anchors must be separated from the next token by white space');\n }\n if (tab &&\n ((atNewline && tab.indent <= parentIndent) ||\n next?.type === 'block-map' ||\n next?.type === 'block-seq'))\n onError(tab, 'TAB_AS_INDENT', 'Tabs are not allowed as indentation');\n return {\n comma,\n found,\n spaceBefore,\n comment,\n hasNewline,\n anchor,\n tag,\n newlineAfterProp,\n end,\n start: start ?? end\n };\n}\n\nexports.resolveProps = resolveProps;\n","'use strict';\n\nfunction containsNewline(key) {\n if (!key)\n return null;\n switch (key.type) {\n case 'alias':\n case 'scalar':\n case 'double-quoted-scalar':\n case 'single-quoted-scalar':\n if (key.source.includes('\\n'))\n return true;\n if (key.end)\n for (const st of key.end)\n if (st.type === 'newline')\n return true;\n return false;\n case 'flow-collection':\n for (const it of key.items) {\n for (const st of it.start)\n if (st.type === 'newline')\n return true;\n if (it.sep)\n for (const st of it.sep)\n if (st.type === 'newline')\n return true;\n if (containsNewline(it.key) || containsNewline(it.value))\n return true;\n }\n return false;\n default:\n return true;\n }\n}\n\nexports.containsNewline = containsNewline;\n","'use strict';\n\nvar utilContainsNewline = require('./util-contains-newline.js');\n\nfunction flowIndentCheck(indent, fc, onError) {\n if (fc?.type === 'flow-collection') {\n const end = fc.end[0];\n if (end.indent === indent &&\n (end.source === ']' || end.source === '}') &&\n utilContainsNewline.containsNewline(fc)) {\n const msg = 'Flow end indicator should be more indented than parent';\n onError(end, 'BAD_INDENT', msg, true);\n }\n }\n}\n\nexports.flowIndentCheck = flowIndentCheck;\n","'use strict';\n\nvar identity = require('../nodes/identity.js');\n\nfunction mapIncludes(ctx, items, search) {\n const { uniqueKeys } = ctx.options;\n if (uniqueKeys === false)\n return false;\n const isEqual = typeof uniqueKeys === 'function'\n ? uniqueKeys\n : (a, b) => a === b || (identity.isScalar(a) && identity.isScalar(b) && a.value === b.value);\n return items.some(pair => isEqual(pair.key, search));\n}\n\nexports.mapIncludes = mapIncludes;\n","'use strict';\n\nvar Pair = require('../nodes/Pair.js');\nvar YAMLMap = require('../nodes/YAMLMap.js');\nvar resolveProps = require('./resolve-props.js');\nvar utilContainsNewline = require('./util-contains-newline.js');\nvar utilFlowIndentCheck = require('./util-flow-indent-check.js');\nvar utilMapIncludes = require('./util-map-includes.js');\n\nconst startColMsg = 'All mapping items must start at the same column';\nfunction resolveBlockMap({ composeNode, composeEmptyNode }, ctx, bm, onError, tag) {\n const NodeClass = tag?.nodeClass ?? YAMLMap.YAMLMap;\n const map = new NodeClass(ctx.schema);\n if (ctx.atRoot)\n ctx.atRoot = false;\n let offset = bm.offset;\n let commentEnd = null;\n for (const collItem of bm.items) {\n const { start, key, sep, value } = collItem;\n // key properties\n const keyProps = resolveProps.resolveProps(start, {\n indicator: 'explicit-key-ind',\n next: key ?? sep?.[0],\n offset,\n onError,\n parentIndent: bm.indent,\n startOnNewline: true\n });\n const implicitKey = !keyProps.found;\n if (implicitKey) {\n if (key) {\n if (key.type === 'block-seq')\n onError(offset, 'BLOCK_AS_IMPLICIT_KEY', 'A block sequence may not be used as an implicit map key');\n else if ('indent' in key && key.indent !== bm.indent)\n onError(offset, 'BAD_INDENT', startColMsg);\n }\n if (!keyProps.anchor && !keyProps.tag && !sep) {\n commentEnd = keyProps.end;\n if (keyProps.comment) {\n if (map.comment)\n map.comment += '\\n' + keyProps.comment;\n else\n map.comment = keyProps.comment;\n }\n continue;\n }\n if (keyProps.newlineAfterProp || utilContainsNewline.containsNewline(key)) {\n onError(key ?? start[start.length - 1], 'MULTILINE_IMPLICIT_KEY', 'Implicit keys need to be on a single line');\n }\n }\n else if (keyProps.found?.indent !== bm.indent) {\n onError(offset, 'BAD_INDENT', startColMsg);\n }\n // key value\n ctx.atKey = true;\n const keyStart = keyProps.end;\n const keyNode = key\n ? composeNode(ctx, key, keyProps, onError)\n : composeEmptyNode(ctx, keyStart, start, null, keyProps, onError);\n if (ctx.schema.compat)\n utilFlowIndentCheck.flowIndentCheck(bm.indent, key, onError);\n ctx.atKey = false;\n if (utilMapIncludes.mapIncludes(ctx, map.items, keyNode))\n onError(keyStart, 'DUPLICATE_KEY', 'Map keys must be unique');\n // value properties\n const valueProps = resolveProps.resolveProps(sep ?? [], {\n indicator: 'map-value-ind',\n next: value,\n offset: keyNode.range[2],\n onError,\n parentIndent: bm.indent,\n startOnNewline: !key || key.type === 'block-scalar'\n });\n offset = valueProps.end;\n if (valueProps.found) {\n if (implicitKey) {\n if (value?.type === 'block-map' && !valueProps.hasNewline)\n onError(offset, 'BLOCK_AS_IMPLICIT_KEY', 'Nested mappings are not allowed in compact mappings');\n if (ctx.options.strict &&\n keyProps.start < valueProps.found.offset - 1024)\n onError(keyNode.range, 'KEY_OVER_1024_CHARS', 'The : indicator must be at most 1024 chars after the start of an implicit block mapping key');\n }\n // value value\n const valueNode = value\n ? composeNode(ctx, value, valueProps, onError)\n : composeEmptyNode(ctx, offset, sep, null, valueProps, onError);\n if (ctx.schema.compat)\n utilFlowIndentCheck.flowIndentCheck(bm.indent, value, onError);\n offset = valueNode.range[2];\n const pair = new Pair.Pair(keyNode, valueNode);\n if (ctx.options.keepSourceTokens)\n pair.srcToken = collItem;\n map.items.push(pair);\n }\n else {\n // key with no value\n if (implicitKey)\n onError(keyNode.range, 'MISSING_CHAR', 'Implicit map keys need to be followed by map values');\n if (valueProps.comment) {\n if (keyNode.comment)\n keyNode.comment += '\\n' + valueProps.comment;\n else\n keyNode.comment = valueProps.comment;\n }\n const pair = new Pair.Pair(keyNode);\n if (ctx.options.keepSourceTokens)\n pair.srcToken = collItem;\n map.items.push(pair);\n }\n }\n if (commentEnd && commentEnd < offset)\n onError(commentEnd, 'IMPOSSIBLE', 'Map comment with trailing content');\n map.range = [bm.offset, offset, commentEnd ?? offset];\n return map;\n}\n\nexports.resolveBlockMap = resolveBlockMap;\n","'use strict';\n\nvar YAMLSeq = require('../nodes/YAMLSeq.js');\nvar resolveProps = require('./resolve-props.js');\nvar utilFlowIndentCheck = require('./util-flow-indent-check.js');\n\nfunction resolveBlockSeq({ composeNode, composeEmptyNode }, ctx, bs, onError, tag) {\n const NodeClass = tag?.nodeClass ?? YAMLSeq.YAMLSeq;\n const seq = new NodeClass(ctx.schema);\n if (ctx.atRoot)\n ctx.atRoot = false;\n if (ctx.atKey)\n ctx.atKey = false;\n let offset = bs.offset;\n let commentEnd = null;\n for (const { start, value } of bs.items) {\n const props = resolveProps.resolveProps(start, {\n indicator: 'seq-item-ind',\n next: value,\n offset,\n onError,\n parentIndent: bs.indent,\n startOnNewline: true\n });\n if (!props.found) {\n if (props.anchor || props.tag || value) {\n if (value?.type === 'block-seq')\n onError(props.end, 'BAD_INDENT', 'All sequence items must start at the same column');\n else\n onError(offset, 'MISSING_CHAR', 'Sequence item without - indicator');\n }\n else {\n commentEnd = props.end;\n if (props.comment)\n seq.comment = props.comment;\n continue;\n }\n }\n const node = value\n ? composeNode(ctx, value, props, onError)\n : composeEmptyNode(ctx, props.end, start, null, props, onError);\n if (ctx.schema.compat)\n utilFlowIndentCheck.flowIndentCheck(bs.indent, value, onError);\n offset = node.range[2];\n seq.items.push(node);\n }\n seq.range = [bs.offset, offset, commentEnd ?? offset];\n return seq;\n}\n\nexports.resolveBlockSeq = resolveBlockSeq;\n","'use strict';\n\nfunction resolveEnd(end, offset, reqSpace, onError) {\n let comment = '';\n if (end) {\n let hasSpace = false;\n let sep = '';\n for (const token of end) {\n const { source, type } = token;\n switch (type) {\n case 'space':\n hasSpace = true;\n break;\n case 'comment': {\n if (reqSpace && !hasSpace)\n onError(token, 'MISSING_CHAR', 'Comments must be separated from other tokens by white space characters');\n const cb = source.substring(1) || ' ';\n if (!comment)\n comment = cb;\n else\n comment += sep + cb;\n sep = '';\n break;\n }\n case 'newline':\n if (comment)\n sep += source;\n hasSpace = true;\n break;\n default:\n onError(token, 'UNEXPECTED_TOKEN', `Unexpected ${type} at node end`);\n }\n offset += source.length;\n }\n }\n return { comment, offset };\n}\n\nexports.resolveEnd = resolveEnd;\n","'use strict';\n\nvar identity = require('../nodes/identity.js');\nvar Pair = require('../nodes/Pair.js');\nvar YAMLMap = require('../nodes/YAMLMap.js');\nvar YAMLSeq = require('../nodes/YAMLSeq.js');\nvar resolveEnd = require('./resolve-end.js');\nvar resolveProps = require('./resolve-props.js');\nvar utilContainsNewline = require('./util-contains-newline.js');\nvar utilMapIncludes = require('./util-map-includes.js');\n\nconst blockMsg = 'Block collections are not allowed within flow collections';\nconst isBlock = (token) => token && (token.type === 'block-map' || token.type === 'block-seq');\nfunction resolveFlowCollection({ composeNode, composeEmptyNode }, ctx, fc, onError, tag) {\n const isMap = fc.start.source === '{';\n const fcName = isMap ? 'flow map' : 'flow sequence';\n const NodeClass = (tag?.nodeClass ?? (isMap ? YAMLMap.YAMLMap : YAMLSeq.YAMLSeq));\n const coll = new NodeClass(ctx.schema);\n coll.flow = true;\n const atRoot = ctx.atRoot;\n if (atRoot)\n ctx.atRoot = false;\n if (ctx.atKey)\n ctx.atKey = false;\n let offset = fc.offset + fc.start.source.length;\n for (let i = 0; i < fc.items.length; ++i) {\n const collItem = fc.items[i];\n const { start, key, sep, value } = collItem;\n const props = resolveProps.resolveProps(start, {\n flow: fcName,\n indicator: 'explicit-key-ind',\n next: key ?? sep?.[0],\n offset,\n onError,\n parentIndent: fc.indent,\n startOnNewline: false\n });\n if (!props.found) {\n if (!props.anchor && !props.tag && !sep && !value) {\n if (i === 0 && props.comma)\n onError(props.comma, 'UNEXPECTED_TOKEN', `Unexpected , in ${fcName}`);\n else if (i < fc.items.length - 1)\n onError(props.start, 'UNEXPECTED_TOKEN', `Unexpected empty item in ${fcName}`);\n if (props.comment) {\n if (coll.comment)\n coll.comment += '\\n' + props.comment;\n else\n coll.comment = props.comment;\n }\n offset = props.end;\n continue;\n }\n if (!isMap && ctx.options.strict && utilContainsNewline.containsNewline(key))\n onError(key, // checked by containsNewline()\n 'MULTILINE_IMPLICIT_KEY', 'Implicit keys of flow sequence pairs need to be on a single line');\n }\n if (i === 0) {\n if (props.comma)\n onError(props.comma, 'UNEXPECTED_TOKEN', `Unexpected , in ${fcName}`);\n }\n else {\n if (!props.comma)\n onError(props.start, 'MISSING_CHAR', `Missing , between ${fcName} items`);\n if (props.comment) {\n let prevItemComment = '';\n loop: for (const st of start) {\n switch (st.type) {\n case 'comma':\n case 'space':\n break;\n case 'comment':\n prevItemComment = st.source.substring(1);\n break loop;\n default:\n break loop;\n }\n }\n if (prevItemComment) {\n let prev = coll.items[coll.items.length - 1];\n if (identity.isPair(prev))\n prev = prev.value ?? prev.key;\n if (prev.comment)\n prev.comment += '\\n' + prevItemComment;\n else\n prev.comment = prevItemComment;\n props.comment = props.comment.substring(prevItemComment.length + 1);\n }\n }\n }\n if (!isMap && !sep && !props.found) {\n // item is a value in a seq\n // → key & sep are empty, start does not include ? or :\n const valueNode = value\n ? composeNode(ctx, value, props, onError)\n : composeEmptyNode(ctx, props.end, sep, null, props, onError);\n coll.items.push(valueNode);\n offset = valueNode.range[2];\n if (isBlock(value))\n onError(valueNode.range, 'BLOCK_IN_FLOW', blockMsg);\n }\n else {\n // item is a key+value pair\n // key value\n ctx.atKey = true;\n const keyStart = props.end;\n const keyNode = key\n ? composeNode(ctx, key, props, onError)\n : composeEmptyNode(ctx, keyStart, start, null, props, onError);\n if (isBlock(key))\n onError(keyNode.range, 'BLOCK_IN_FLOW', blockMsg);\n ctx.atKey = false;\n // value properties\n const valueProps = resolveProps.resolveProps(sep ?? [], {\n flow: fcName,\n indicator: 'map-value-ind',\n next: value,\n offset: keyNode.range[2],\n onError,\n parentIndent: fc.indent,\n startOnNewline: false\n });\n if (valueProps.found) {\n if (!isMap && !props.found && ctx.options.strict) {\n if (sep)\n for (const st of sep) {\n if (st === valueProps.found)\n break;\n if (st.type === 'newline') {\n onError(st, 'MULTILINE_IMPLICIT_KEY', 'Implicit keys of flow sequence pairs need to be on a single line');\n break;\n }\n }\n if (props.start < valueProps.found.offset - 1024)\n onError(valueProps.found, 'KEY_OVER_1024_CHARS', 'The : indicator must be at most 1024 chars after the start of an implicit flow sequence key');\n }\n }\n else if (value) {\n if ('source' in value && value.source?.[0] === ':')\n onError(value, 'MISSING_CHAR', `Missing space after : in ${fcName}`);\n else\n onError(valueProps.start, 'MISSING_CHAR', `Missing , or : between ${fcName} items`);\n }\n // value value\n const valueNode = value\n ? composeNode(ctx, value, valueProps, onError)\n : valueProps.found\n ? composeEmptyNode(ctx, valueProps.end, sep, null, valueProps, onError)\n : null;\n if (valueNode) {\n if (isBlock(value))\n onError(valueNode.range, 'BLOCK_IN_FLOW', blockMsg);\n }\n else if (valueProps.comment) {\n if (keyNode.comment)\n keyNode.comment += '\\n' + valueProps.comment;\n else\n keyNode.comment = valueProps.comment;\n }\n const pair = new Pair.Pair(keyNode, valueNode);\n if (ctx.options.keepSourceTokens)\n pair.srcToken = collItem;\n if (isMap) {\n const map = coll;\n if (utilMapIncludes.mapIncludes(ctx, map.items, keyNode))\n onError(keyStart, 'DUPLICATE_KEY', 'Map keys must be unique');\n map.items.push(pair);\n }\n else {\n const map = new YAMLMap.YAMLMap(ctx.schema);\n map.flow = true;\n map.items.push(pair);\n const endRange = (valueNode ?? keyNode).range;\n map.range = [keyNode.range[0], endRange[1], endRange[2]];\n coll.items.push(map);\n }\n offset = valueNode ? valueNode.range[2] : valueProps.end;\n }\n }\n const expectedEnd = isMap ? '}' : ']';\n const [ce, ...ee] = fc.end;\n let cePos = offset;\n if (ce?.source === expectedEnd)\n cePos = ce.offset + ce.source.length;\n else {\n const name = fcName[0].toUpperCase() + fcName.substring(1);\n const msg = atRoot\n ? `${name} must end with a ${expectedEnd}`\n : `${name} in block collection must be sufficiently indented and end with a ${expectedEnd}`;\n onError(offset, atRoot ? 'MISSING_CHAR' : 'BAD_INDENT', msg);\n if (ce && ce.source.length !== 1)\n ee.unshift(ce);\n }\n if (ee.length > 0) {\n const end = resolveEnd.resolveEnd(ee, cePos, ctx.options.strict, onError);\n if (end.comment) {\n if (coll.comment)\n coll.comment += '\\n' + end.comment;\n else\n coll.comment = end.comment;\n }\n coll.range = [fc.offset, cePos, end.offset];\n }\n else {\n coll.range = [fc.offset, cePos, cePos];\n }\n return coll;\n}\n\nexports.resolveFlowCollection = resolveFlowCollection;\n","'use strict';\n\nvar identity = require('../nodes/identity.js');\nvar Scalar = require('../nodes/Scalar.js');\nvar YAMLMap = require('../nodes/YAMLMap.js');\nvar YAMLSeq = require('../nodes/YAMLSeq.js');\nvar resolveBlockMap = require('./resolve-block-map.js');\nvar resolveBlockSeq = require('./resolve-block-seq.js');\nvar resolveFlowCollection = require('./resolve-flow-collection.js');\n\nfunction resolveCollection(CN, ctx, token, onError, tagName, tag) {\n const coll = token.type === 'block-map'\n ? resolveBlockMap.resolveBlockMap(CN, ctx, token, onError, tag)\n : token.type === 'block-seq'\n ? resolveBlockSeq.resolveBlockSeq(CN, ctx, token, onError, tag)\n : resolveFlowCollection.resolveFlowCollection(CN, ctx, token, onError, tag);\n const Coll = coll.constructor;\n // If we got a tagName matching the class, or the tag name is '!',\n // then use the tagName from the node class used to create it.\n if (tagName === '!' || tagName === Coll.tagName) {\n coll.tag = Coll.tagName;\n return coll;\n }\n if (tagName)\n coll.tag = tagName;\n return coll;\n}\nfunction composeCollection(CN, ctx, token, props, onError) {\n const tagToken = props.tag;\n const tagName = !tagToken\n ? null\n : ctx.directives.tagName(tagToken.source, msg => onError(tagToken, 'TAG_RESOLVE_FAILED', msg));\n if (token.type === 'block-seq') {\n const { anchor, newlineAfterProp: nl } = props;\n const lastProp = anchor && tagToken\n ? anchor.offset > tagToken.offset\n ? anchor\n : tagToken\n : (anchor ?? tagToken);\n if (lastProp && (!nl || nl.offset < lastProp.offset)) {\n const message = 'Missing newline after block sequence props';\n onError(lastProp, 'MISSING_CHAR', message);\n }\n }\n const expType = token.type === 'block-map'\n ? 'map'\n : token.type === 'block-seq'\n ? 'seq'\n : token.start.source === '{'\n ? 'map'\n : 'seq';\n // shortcut: check if it's a generic YAMLMap or YAMLSeq\n // before jumping into the custom tag logic.\n if (!tagToken ||\n !tagName ||\n tagName === '!' ||\n (tagName === YAMLMap.YAMLMap.tagName && expType === 'map') ||\n (tagName === YAMLSeq.YAMLSeq.tagName && expType === 'seq')) {\n return resolveCollection(CN, ctx, token, onError, tagName);\n }\n let tag = ctx.schema.tags.find(t => t.tag === tagName && t.collection === expType);\n if (!tag) {\n const kt = ctx.schema.knownTags[tagName];\n if (kt?.collection === expType) {\n ctx.schema.tags.push(Object.assign({}, kt, { default: false }));\n tag = kt;\n }\n else {\n if (kt) {\n onError(tagToken, 'BAD_COLLECTION_TYPE', `${kt.tag} used for ${expType} collection, but expects ${kt.collection ?? 'scalar'}`, true);\n }\n else {\n onError(tagToken, 'TAG_RESOLVE_FAILED', `Unresolved tag: ${tagName}`, true);\n }\n return resolveCollection(CN, ctx, token, onError, tagName);\n }\n }\n const coll = resolveCollection(CN, ctx, token, onError, tagName, tag);\n const res = tag.resolve?.(coll, msg => onError(tagToken, 'TAG_RESOLVE_FAILED', msg), ctx.options) ?? coll;\n const node = identity.isNode(res)\n ? res\n : new Scalar.Scalar(res);\n node.range = coll.range;\n node.tag = tagName;\n if (tag?.format)\n node.format = tag.format;\n return node;\n}\n\nexports.composeCollection = composeCollection;\n","'use strict';\n\nvar Scalar = require('../nodes/Scalar.js');\n\nfunction resolveBlockScalar(ctx, scalar, onError) {\n const start = scalar.offset;\n const header = parseBlockScalarHeader(scalar, ctx.options.strict, onError);\n if (!header)\n return { value: '', type: null, comment: '', range: [start, start, start] };\n const type = header.mode === '>' ? Scalar.Scalar.BLOCK_FOLDED : Scalar.Scalar.BLOCK_LITERAL;\n const lines = scalar.source ? splitLines(scalar.source) : [];\n // determine the end of content & start of chomping\n let chompStart = lines.length;\n for (let i = lines.length - 1; i >= 0; --i) {\n const content = lines[i][1];\n if (content === '' || content === '\\r')\n chompStart = i;\n else\n break;\n }\n // shortcut for empty contents\n if (chompStart === 0) {\n const value = header.chomp === '+' && lines.length > 0\n ? '\\n'.repeat(Math.max(1, lines.length - 1))\n : '';\n let end = start + header.length;\n if (scalar.source)\n end += scalar.source.length;\n return { value, type, comment: header.comment, range: [start, end, end] };\n }\n // find the indentation level to trim from start\n let trimIndent = scalar.indent + header.indent;\n let offset = scalar.offset + header.length;\n let contentStart = 0;\n for (let i = 0; i < chompStart; ++i) {\n const [indent, content] = lines[i];\n if (content === '' || content === '\\r') {\n if (header.indent === 0 && indent.length > trimIndent)\n trimIndent = indent.length;\n }\n else {\n if (indent.length < trimIndent) {\n const message = 'Block scalars with more-indented leading empty lines must use an explicit indentation indicator';\n onError(offset + indent.length, 'MISSING_CHAR', message);\n }\n if (header.indent === 0)\n trimIndent = indent.length;\n contentStart = i;\n if (trimIndent === 0 && !ctx.atRoot) {\n const message = 'Block scalar values in collections must be indented';\n onError(offset, 'BAD_INDENT', message);\n }\n break;\n }\n offset += indent.length + content.length + 1;\n }\n // include trailing more-indented empty lines in content\n for (let i = lines.length - 1; i >= chompStart; --i) {\n if (lines[i][0].length > trimIndent)\n chompStart = i + 1;\n }\n let value = '';\n let sep = '';\n let prevMoreIndented = false;\n // leading whitespace is kept intact\n for (let i = 0; i < contentStart; ++i)\n value += lines[i][0].slice(trimIndent) + '\\n';\n for (let i = contentStart; i < chompStart; ++i) {\n let [indent, content] = lines[i];\n offset += indent.length + content.length + 1;\n const crlf = content[content.length - 1] === '\\r';\n if (crlf)\n content = content.slice(0, -1);\n /* istanbul ignore if already caught in lexer */\n if (content && indent.length < trimIndent) {\n const src = header.indent\n ? 'explicit indentation indicator'\n : 'first line';\n const message = `Block scalar lines must not be less indented than their ${src}`;\n onError(offset - content.length - (crlf ? 2 : 1), 'BAD_INDENT', message);\n indent = '';\n }\n if (type === Scalar.Scalar.BLOCK_LITERAL) {\n value += sep + indent.slice(trimIndent) + content;\n sep = '\\n';\n }\n else if (indent.length > trimIndent || content[0] === '\\t') {\n // more-indented content within a folded block\n if (sep === ' ')\n sep = '\\n';\n else if (!prevMoreIndented && sep === '\\n')\n sep = '\\n\\n';\n value += sep + indent.slice(trimIndent) + content;\n sep = '\\n';\n prevMoreIndented = true;\n }\n else if (content === '') {\n // empty line\n if (sep === '\\n')\n value += '\\n';\n else\n sep = '\\n';\n }\n else {\n value += sep + content;\n sep = ' ';\n prevMoreIndented = false;\n }\n }\n switch (header.chomp) {\n case '-':\n break;\n case '+':\n for (let i = chompStart; i < lines.length; ++i)\n value += '\\n' + lines[i][0].slice(trimIndent);\n if (value[value.length - 1] !== '\\n')\n value += '\\n';\n break;\n default:\n value += '\\n';\n }\n const end = start + header.length + scalar.source.length;\n return { value, type, comment: header.comment, range: [start, end, end] };\n}\nfunction parseBlockScalarHeader({ offset, props }, strict, onError) {\n /* istanbul ignore if should not happen */\n if (props[0].type !== 'block-scalar-header') {\n onError(props[0], 'IMPOSSIBLE', 'Block scalar header not found');\n return null;\n }\n const { source } = props[0];\n const mode = source[0];\n let indent = 0;\n let chomp = '';\n let error = -1;\n for (let i = 1; i < source.length; ++i) {\n const ch = source[i];\n if (!chomp && (ch === '-' || ch === '+'))\n chomp = ch;\n else {\n const n = Number(ch);\n if (!indent && n)\n indent = n;\n else if (error === -1)\n error = offset + i;\n }\n }\n if (error !== -1)\n onError(error, 'UNEXPECTED_TOKEN', `Block scalar header includes extra characters: ${source}`);\n let hasSpace = false;\n let comment = '';\n let length = source.length;\n for (let i = 1; i < props.length; ++i) {\n const token = props[i];\n switch (token.type) {\n case 'space':\n hasSpace = true;\n // fallthrough\n case 'newline':\n length += token.source.length;\n break;\n case 'comment':\n if (strict && !hasSpace) {\n const message = 'Comments must be separated from other tokens by white space characters';\n onError(token, 'MISSING_CHAR', message);\n }\n length += token.source.length;\n comment = token.source.substring(1);\n break;\n case 'error':\n onError(token, 'UNEXPECTED_TOKEN', token.message);\n length += token.source.length;\n break;\n /* istanbul ignore next should not happen */\n default: {\n const message = `Unexpected token in block scalar header: ${token.type}`;\n onError(token, 'UNEXPECTED_TOKEN', message);\n const ts = token.source;\n if (ts && typeof ts === 'string')\n length += ts.length;\n }\n }\n }\n return { mode, indent, chomp, comment, length };\n}\n/** @returns Array of lines split up as `[indent, content]` */\nfunction splitLines(source) {\n const split = source.split(/\\n( *)/);\n const first = split[0];\n const m = first.match(/^( *)/);\n const line0 = m?.[1]\n ? [m[1], first.slice(m[1].length)]\n : ['', first];\n const lines = [line0];\n for (let i = 1; i < split.length; i += 2)\n lines.push([split[i], split[i + 1]]);\n return lines;\n}\n\nexports.resolveBlockScalar = resolveBlockScalar;\n","'use strict';\n\nvar Scalar = require('../nodes/Scalar.js');\nvar resolveEnd = require('./resolve-end.js');\n\nfunction resolveFlowScalar(scalar, strict, onError) {\n const { offset, type, source, end } = scalar;\n let _type;\n let value;\n const _onError = (rel, code, msg) => onError(offset + rel, code, msg);\n switch (type) {\n case 'scalar':\n _type = Scalar.Scalar.PLAIN;\n value = plainValue(source, _onError);\n break;\n case 'single-quoted-scalar':\n _type = Scalar.Scalar.QUOTE_SINGLE;\n value = singleQuotedValue(source, _onError);\n break;\n case 'double-quoted-scalar':\n _type = Scalar.Scalar.QUOTE_DOUBLE;\n value = doubleQuotedValue(source, _onError);\n break;\n /* istanbul ignore next should not happen */\n default:\n onError(scalar, 'UNEXPECTED_TOKEN', `Expected a flow scalar value, but found: ${type}`);\n return {\n value: '',\n type: null,\n comment: '',\n range: [offset, offset + source.length, offset + source.length]\n };\n }\n const valueEnd = offset + source.length;\n const re = resolveEnd.resolveEnd(end, valueEnd, strict, onError);\n return {\n value,\n type: _type,\n comment: re.comment,\n range: [offset, valueEnd, re.offset]\n };\n}\nfunction plainValue(source, onError) {\n let badChar = '';\n switch (source[0]) {\n /* istanbul ignore next should not happen */\n case '\\t':\n badChar = 'a tab character';\n break;\n case ',':\n badChar = 'flow indicator character ,';\n break;\n case '%':\n badChar = 'directive indicator character %';\n break;\n case '|':\n case '>': {\n badChar = `block scalar indicator ${source[0]}`;\n break;\n }\n case '@':\n case '`': {\n badChar = `reserved character ${source[0]}`;\n break;\n }\n }\n if (badChar)\n onError(0, 'BAD_SCALAR_START', `Plain value cannot start with ${badChar}`);\n return foldLines(source);\n}\nfunction singleQuotedValue(source, onError) {\n if (source[source.length - 1] !== \"'\" || source.length === 1)\n onError(source.length, 'MISSING_CHAR', \"Missing closing 'quote\");\n return foldLines(source.slice(1, -1)).replace(/''/g, \"'\");\n}\nfunction foldLines(source) {\n /**\n * The negative lookbehind here and in the `re` RegExp is to\n * prevent causing a polynomial search time in certain cases.\n *\n * The try-catch is for Safari, which doesn't support this yet:\n * https://caniuse.com/js-regexp-lookbehind\n */\n let first, line;\n try {\n first = new RegExp('(.*?)(? wsStart ? source.slice(wsStart, i + 1) : ch;\n }\n else {\n res += ch;\n }\n }\n if (source[source.length - 1] !== '\"' || source.length === 1)\n onError(source.length, 'MISSING_CHAR', 'Missing closing \"quote');\n return res;\n}\n/**\n * Fold a single newline into a space, multiple newlines to N - 1 newlines.\n * Presumes `source[offset] === '\\n'`\n */\nfunction foldNewline(source, offset) {\n let fold = '';\n let ch = source[offset + 1];\n while (ch === ' ' || ch === '\\t' || ch === '\\n' || ch === '\\r') {\n if (ch === '\\r' && source[offset + 2] !== '\\n')\n break;\n if (ch === '\\n')\n fold += '\\n';\n offset += 1;\n ch = source[offset + 1];\n }\n if (!fold)\n fold = ' ';\n return { fold, offset };\n}\nconst escapeCodes = {\n '0': '\\0', // null character\n a: '\\x07', // bell character\n b: '\\b', // backspace\n e: '\\x1b', // escape character\n f: '\\f', // form feed\n n: '\\n', // line feed\n r: '\\r', // carriage return\n t: '\\t', // horizontal tab\n v: '\\v', // vertical tab\n N: '\\u0085', // Unicode next line\n _: '\\u00a0', // Unicode non-breaking space\n L: '\\u2028', // Unicode line separator\n P: '\\u2029', // Unicode paragraph separator\n ' ': ' ',\n '\"': '\"',\n '/': '/',\n '\\\\': '\\\\',\n '\\t': '\\t'\n};\nfunction parseCharCode(source, offset, length, onError) {\n const cc = source.substr(offset, length);\n const ok = cc.length === length && /^[0-9a-fA-F]+$/.test(cc);\n const code = ok ? parseInt(cc, 16) : NaN;\n if (isNaN(code)) {\n const raw = source.substr(offset - 2, length + 2);\n onError(offset - 2, 'BAD_DQ_ESCAPE', `Invalid escape sequence ${raw}`);\n return raw;\n }\n return String.fromCodePoint(code);\n}\n\nexports.resolveFlowScalar = resolveFlowScalar;\n","'use strict';\n\nvar identity = require('../nodes/identity.js');\nvar Scalar = require('../nodes/Scalar.js');\nvar resolveBlockScalar = require('./resolve-block-scalar.js');\nvar resolveFlowScalar = require('./resolve-flow-scalar.js');\n\nfunction composeScalar(ctx, token, tagToken, onError) {\n const { value, type, comment, range } = token.type === 'block-scalar'\n ? resolveBlockScalar.resolveBlockScalar(ctx, token, onError)\n : resolveFlowScalar.resolveFlowScalar(token, ctx.options.strict, onError);\n const tagName = tagToken\n ? ctx.directives.tagName(tagToken.source, msg => onError(tagToken, 'TAG_RESOLVE_FAILED', msg))\n : null;\n let tag;\n if (ctx.options.stringKeys && ctx.atKey) {\n tag = ctx.schema[identity.SCALAR];\n }\n else if (tagName)\n tag = findScalarTagByName(ctx.schema, value, tagName, tagToken, onError);\n else if (token.type === 'scalar')\n tag = findScalarTagByTest(ctx, value, token, onError);\n else\n tag = ctx.schema[identity.SCALAR];\n let scalar;\n try {\n const res = tag.resolve(value, msg => onError(tagToken ?? token, 'TAG_RESOLVE_FAILED', msg), ctx.options);\n scalar = identity.isScalar(res) ? res : new Scalar.Scalar(res);\n }\n catch (error) {\n const msg = error instanceof Error ? error.message : String(error);\n onError(tagToken ?? token, 'TAG_RESOLVE_FAILED', msg);\n scalar = new Scalar.Scalar(value);\n }\n scalar.range = range;\n scalar.source = value;\n if (type)\n scalar.type = type;\n if (tagName)\n scalar.tag = tagName;\n if (tag.format)\n scalar.format = tag.format;\n if (comment)\n scalar.comment = comment;\n return scalar;\n}\nfunction findScalarTagByName(schema, value, tagName, tagToken, onError) {\n if (tagName === '!')\n return schema[identity.SCALAR]; // non-specific tag\n const matchWithTest = [];\n for (const tag of schema.tags) {\n if (!tag.collection && tag.tag === tagName) {\n if (tag.default && tag.test)\n matchWithTest.push(tag);\n else\n return tag;\n }\n }\n for (const tag of matchWithTest)\n if (tag.test?.test(value))\n return tag;\n const kt = schema.knownTags[tagName];\n if (kt && !kt.collection) {\n // Ensure that the known tag is available for stringifying,\n // but does not get used by default.\n schema.tags.push(Object.assign({}, kt, { default: false, test: undefined }));\n return kt;\n }\n onError(tagToken, 'TAG_RESOLVE_FAILED', `Unresolved tag: ${tagName}`, tagName !== 'tag:yaml.org,2002:str');\n return schema[identity.SCALAR];\n}\nfunction findScalarTagByTest({ atKey, directives, schema }, value, token, onError) {\n const tag = schema.tags.find(tag => (tag.default === true || (atKey && tag.default === 'key')) &&\n tag.test?.test(value)) || schema[identity.SCALAR];\n if (schema.compat) {\n const compat = schema.compat.find(tag => tag.default && tag.test?.test(value)) ??\n schema[identity.SCALAR];\n if (tag.tag !== compat.tag) {\n const ts = directives.tagString(tag.tag);\n const cs = directives.tagString(compat.tag);\n const msg = `Value may be parsed as either ${ts} or ${cs}`;\n onError(token, 'TAG_RESOLVE_FAILED', msg, true);\n }\n }\n return tag;\n}\n\nexports.composeScalar = composeScalar;\n","'use strict';\n\nfunction emptyScalarPosition(offset, before, pos) {\n if (before) {\n pos ?? (pos = before.length);\n for (let i = pos - 1; i >= 0; --i) {\n let st = before[i];\n switch (st.type) {\n case 'space':\n case 'comment':\n case 'newline':\n offset -= st.source.length;\n continue;\n }\n // Technically, an empty scalar is immediately after the last non-empty\n // node, but it's more useful to place it after any whitespace.\n st = before[++i];\n while (st?.type === 'space') {\n offset += st.source.length;\n st = before[++i];\n }\n break;\n }\n }\n return offset;\n}\n\nexports.emptyScalarPosition = emptyScalarPosition;\n","'use strict';\n\nvar Alias = require('../nodes/Alias.js');\nvar identity = require('../nodes/identity.js');\nvar composeCollection = require('./compose-collection.js');\nvar composeScalar = require('./compose-scalar.js');\nvar resolveEnd = require('./resolve-end.js');\nvar utilEmptyScalarPosition = require('./util-empty-scalar-position.js');\n\nconst CN = { composeNode, composeEmptyNode };\nfunction composeNode(ctx, token, props, onError) {\n const atKey = ctx.atKey;\n const { spaceBefore, comment, anchor, tag } = props;\n let node;\n let isSrcToken = true;\n switch (token.type) {\n case 'alias':\n node = composeAlias(ctx, token, onError);\n if (anchor || tag)\n onError(token, 'ALIAS_PROPS', 'An alias node must not specify any properties');\n break;\n case 'scalar':\n case 'single-quoted-scalar':\n case 'double-quoted-scalar':\n case 'block-scalar':\n node = composeScalar.composeScalar(ctx, token, tag, onError);\n if (anchor)\n node.anchor = anchor.source.substring(1);\n break;\n case 'block-map':\n case 'block-seq':\n case 'flow-collection':\n node = composeCollection.composeCollection(CN, ctx, token, props, onError);\n if (anchor)\n node.anchor = anchor.source.substring(1);\n break;\n default: {\n const message = token.type === 'error'\n ? token.message\n : `Unsupported token (type: ${token.type})`;\n onError(token, 'UNEXPECTED_TOKEN', message);\n node = composeEmptyNode(ctx, token.offset, undefined, null, props, onError);\n isSrcToken = false;\n }\n }\n if (anchor && node.anchor === '')\n onError(anchor, 'BAD_ALIAS', 'Anchor cannot be an empty string');\n if (atKey &&\n ctx.options.stringKeys &&\n (!identity.isScalar(node) ||\n typeof node.value !== 'string' ||\n (node.tag && node.tag !== 'tag:yaml.org,2002:str'))) {\n const msg = 'With stringKeys, all keys must be strings';\n onError(tag ?? token, 'NON_STRING_KEY', msg);\n }\n if (spaceBefore)\n node.spaceBefore = true;\n if (comment) {\n if (token.type === 'scalar' && token.source === '')\n node.comment = comment;\n else\n node.commentBefore = comment;\n }\n // @ts-expect-error Type checking misses meaning of isSrcToken\n if (ctx.options.keepSourceTokens && isSrcToken)\n node.srcToken = token;\n return node;\n}\nfunction composeEmptyNode(ctx, offset, before, pos, { spaceBefore, comment, anchor, tag, end }, onError) {\n const token = {\n type: 'scalar',\n offset: utilEmptyScalarPosition.emptyScalarPosition(offset, before, pos),\n indent: -1,\n source: ''\n };\n const node = composeScalar.composeScalar(ctx, token, tag, onError);\n if (anchor) {\n node.anchor = anchor.source.substring(1);\n if (node.anchor === '')\n onError(anchor, 'BAD_ALIAS', 'Anchor cannot be an empty string');\n }\n if (spaceBefore)\n node.spaceBefore = true;\n if (comment) {\n node.comment = comment;\n node.range[2] = end;\n }\n return node;\n}\nfunction composeAlias({ options }, { offset, source, end }, onError) {\n const alias = new Alias.Alias(source.substring(1));\n if (alias.source === '')\n onError(offset, 'BAD_ALIAS', 'Alias cannot be an empty string');\n if (alias.source.endsWith(':'))\n onError(offset + source.length - 1, 'BAD_ALIAS', 'Alias ending in : is ambiguous', true);\n const valueEnd = offset + source.length;\n const re = resolveEnd.resolveEnd(end, valueEnd, options.strict, onError);\n alias.range = [offset, valueEnd, re.offset];\n if (re.comment)\n alias.comment = re.comment;\n return alias;\n}\n\nexports.composeEmptyNode = composeEmptyNode;\nexports.composeNode = composeNode;\n","'use strict';\n\nvar Document = require('../doc/Document.js');\nvar composeNode = require('./compose-node.js');\nvar resolveEnd = require('./resolve-end.js');\nvar resolveProps = require('./resolve-props.js');\n\nfunction composeDoc(options, directives, { offset, start, value, end }, onError) {\n const opts = Object.assign({ _directives: directives }, options);\n const doc = new Document.Document(undefined, opts);\n const ctx = {\n atKey: false,\n atRoot: true,\n directives: doc.directives,\n options: doc.options,\n schema: doc.schema\n };\n const props = resolveProps.resolveProps(start, {\n indicator: 'doc-start',\n next: value ?? end?.[0],\n offset,\n onError,\n parentIndent: 0,\n startOnNewline: true\n });\n if (props.found) {\n doc.directives.docStart = true;\n if (value &&\n (value.type === 'block-map' || value.type === 'block-seq') &&\n !props.hasNewline)\n onError(props.end, 'MISSING_CHAR', 'Block collection cannot start on same line with directives-end marker');\n }\n // @ts-expect-error If Contents is set, let's trust the user\n doc.contents = value\n ? composeNode.composeNode(ctx, value, props, onError)\n : composeNode.composeEmptyNode(ctx, props.end, start, null, props, onError);\n const contentEnd = doc.contents.range[2];\n const re = resolveEnd.resolveEnd(end, contentEnd, false, onError);\n if (re.comment)\n doc.comment = re.comment;\n doc.range = [offset, contentEnd, re.offset];\n return doc;\n}\n\nexports.composeDoc = composeDoc;\n","'use strict';\n\nvar node_process = require('process');\nvar directives = require('../doc/directives.js');\nvar Document = require('../doc/Document.js');\nvar errors = require('../errors.js');\nvar identity = require('../nodes/identity.js');\nvar composeDoc = require('./compose-doc.js');\nvar resolveEnd = require('./resolve-end.js');\n\nfunction getErrorPos(src) {\n if (typeof src === 'number')\n return [src, src + 1];\n if (Array.isArray(src))\n return src.length === 2 ? src : [src[0], src[1]];\n const { offset, source } = src;\n return [offset, offset + (typeof source === 'string' ? source.length : 1)];\n}\nfunction parsePrelude(prelude) {\n let comment = '';\n let atComment = false;\n let afterEmptyLine = false;\n for (let i = 0; i < prelude.length; ++i) {\n const source = prelude[i];\n switch (source[0]) {\n case '#':\n comment +=\n (comment === '' ? '' : afterEmptyLine ? '\\n\\n' : '\\n') +\n (source.substring(1) || ' ');\n atComment = true;\n afterEmptyLine = false;\n break;\n case '%':\n if (prelude[i + 1]?.[0] !== '#')\n i += 1;\n atComment = false;\n break;\n default:\n // This may be wrong after doc-end, but in that case it doesn't matter\n if (!atComment)\n afterEmptyLine = true;\n atComment = false;\n }\n }\n return { comment, afterEmptyLine };\n}\n/**\n * Compose a stream of CST nodes into a stream of YAML Documents.\n *\n * ```ts\n * import { Composer, Parser } from 'yaml'\n *\n * const src: string = ...\n * const tokens = new Parser().parse(src)\n * const docs = new Composer().compose(tokens)\n * ```\n */\nclass Composer {\n constructor(options = {}) {\n this.doc = null;\n this.atDirectives = false;\n this.prelude = [];\n this.errors = [];\n this.warnings = [];\n this.onError = (source, code, message, warning) => {\n const pos = getErrorPos(source);\n if (warning)\n this.warnings.push(new errors.YAMLWarning(pos, code, message));\n else\n this.errors.push(new errors.YAMLParseError(pos, code, message));\n };\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n this.directives = new directives.Directives({ version: options.version || '1.2' });\n this.options = options;\n }\n decorate(doc, afterDoc) {\n const { comment, afterEmptyLine } = parsePrelude(this.prelude);\n //console.log({ dc: doc.comment, prelude, comment })\n if (comment) {\n const dc = doc.contents;\n if (afterDoc) {\n doc.comment = doc.comment ? `${doc.comment}\\n${comment}` : comment;\n }\n else if (afterEmptyLine || doc.directives.docStart || !dc) {\n doc.commentBefore = comment;\n }\n else if (identity.isCollection(dc) && !dc.flow && dc.items.length > 0) {\n let it = dc.items[0];\n if (identity.isPair(it))\n it = it.key;\n const cb = it.commentBefore;\n it.commentBefore = cb ? `${comment}\\n${cb}` : comment;\n }\n else {\n const cb = dc.commentBefore;\n dc.commentBefore = cb ? `${comment}\\n${cb}` : comment;\n }\n }\n if (afterDoc) {\n Array.prototype.push.apply(doc.errors, this.errors);\n Array.prototype.push.apply(doc.warnings, this.warnings);\n }\n else {\n doc.errors = this.errors;\n doc.warnings = this.warnings;\n }\n this.prelude = [];\n this.errors = [];\n this.warnings = [];\n }\n /**\n * Current stream status information.\n *\n * Mostly useful at the end of input for an empty stream.\n */\n streamInfo() {\n return {\n comment: parsePrelude(this.prelude).comment,\n directives: this.directives,\n errors: this.errors,\n warnings: this.warnings\n };\n }\n /**\n * Compose tokens into documents.\n *\n * @param forceDoc - If the stream contains no document, still emit a final document including any comments and directives that would be applied to a subsequent document.\n * @param endOffset - Should be set if `forceDoc` is also set, to set the document range end and to indicate errors correctly.\n */\n *compose(tokens, forceDoc = false, endOffset = -1) {\n for (const token of tokens)\n yield* this.next(token);\n yield* this.end(forceDoc, endOffset);\n }\n /** Advance the composer by one CST token. */\n *next(token) {\n if (node_process.env.LOG_STREAM)\n console.dir(token, { depth: null });\n switch (token.type) {\n case 'directive':\n this.directives.add(token.source, (offset, message, warning) => {\n const pos = getErrorPos(token);\n pos[0] += offset;\n this.onError(pos, 'BAD_DIRECTIVE', message, warning);\n });\n this.prelude.push(token.source);\n this.atDirectives = true;\n break;\n case 'document': {\n const doc = composeDoc.composeDoc(this.options, this.directives, token, this.onError);\n if (this.atDirectives && !doc.directives.docStart)\n this.onError(token, 'MISSING_CHAR', 'Missing directives-end/doc-start indicator line');\n this.decorate(doc, false);\n if (this.doc)\n yield this.doc;\n this.doc = doc;\n this.atDirectives = false;\n break;\n }\n case 'byte-order-mark':\n case 'space':\n break;\n case 'comment':\n case 'newline':\n this.prelude.push(token.source);\n break;\n case 'error': {\n const msg = token.source\n ? `${token.message}: ${JSON.stringify(token.source)}`\n : token.message;\n const error = new errors.YAMLParseError(getErrorPos(token), 'UNEXPECTED_TOKEN', msg);\n if (this.atDirectives || !this.doc)\n this.errors.push(error);\n else\n this.doc.errors.push(error);\n break;\n }\n case 'doc-end': {\n if (!this.doc) {\n const msg = 'Unexpected doc-end without preceding document';\n this.errors.push(new errors.YAMLParseError(getErrorPos(token), 'UNEXPECTED_TOKEN', msg));\n break;\n }\n this.doc.directives.docEnd = true;\n const end = resolveEnd.resolveEnd(token.end, token.offset + token.source.length, this.doc.options.strict, this.onError);\n this.decorate(this.doc, true);\n if (end.comment) {\n const dc = this.doc.comment;\n this.doc.comment = dc ? `${dc}\\n${end.comment}` : end.comment;\n }\n this.doc.range[2] = end.offset;\n break;\n }\n default:\n this.errors.push(new errors.YAMLParseError(getErrorPos(token), 'UNEXPECTED_TOKEN', `Unsupported token ${token.type}`));\n }\n }\n /**\n * Call at end of input to yield any remaining document.\n *\n * @param forceDoc - If the stream contains no document, still emit a final document including any comments and directives that would be applied to a subsequent document.\n * @param endOffset - Should be set if `forceDoc` is also set, to set the document range end and to indicate errors correctly.\n */\n *end(forceDoc = false, endOffset = -1) {\n if (this.doc) {\n this.decorate(this.doc, true);\n yield this.doc;\n this.doc = null;\n }\n else if (forceDoc) {\n const opts = Object.assign({ _directives: this.directives }, this.options);\n const doc = new Document.Document(undefined, opts);\n if (this.atDirectives)\n this.onError(endOffset, 'MISSING_CHAR', 'Missing directives-end indicator line');\n doc.range = [0, endOffset, endOffset];\n this.decorate(doc, false);\n yield doc;\n }\n }\n}\n\nexports.Composer = Composer;\n","'use strict';\n\nvar resolveBlockScalar = require('../compose/resolve-block-scalar.js');\nvar resolveFlowScalar = require('../compose/resolve-flow-scalar.js');\nvar errors = require('../errors.js');\nvar stringifyString = require('../stringify/stringifyString.js');\n\nfunction resolveAsScalar(token, strict = true, onError) {\n if (token) {\n const _onError = (pos, code, message) => {\n const offset = typeof pos === 'number' ? pos : Array.isArray(pos) ? pos[0] : pos.offset;\n if (onError)\n onError(offset, code, message);\n else\n throw new errors.YAMLParseError([offset, offset + 1], code, message);\n };\n switch (token.type) {\n case 'scalar':\n case 'single-quoted-scalar':\n case 'double-quoted-scalar':\n return resolveFlowScalar.resolveFlowScalar(token, strict, _onError);\n case 'block-scalar':\n return resolveBlockScalar.resolveBlockScalar({ options: { strict } }, token, _onError);\n }\n }\n return null;\n}\n/**\n * Create a new scalar token with `value`\n *\n * Values that represent an actual string but may be parsed as a different type should use a `type` other than `'PLAIN'`,\n * as this function does not support any schema operations and won't check for such conflicts.\n *\n * @param value The string representation of the value, which will have its content properly indented.\n * @param context.end Comments and whitespace after the end of the value, or after the block scalar header. If undefined, a newline will be added.\n * @param context.implicitKey Being within an implicit key may affect the resolved type of the token's value.\n * @param context.indent The indent level of the token.\n * @param context.inFlow Is this scalar within a flow collection? This may affect the resolved type of the token's value.\n * @param context.offset The offset position of the token.\n * @param context.type The preferred type of the scalar token. If undefined, the previous type of the `token` will be used, defaulting to `'PLAIN'`.\n */\nfunction createScalarToken(value, context) {\n const { implicitKey = false, indent, inFlow = false, offset = -1, type = 'PLAIN' } = context;\n const source = stringifyString.stringifyString({ type, value }, {\n implicitKey,\n indent: indent > 0 ? ' '.repeat(indent) : '',\n inFlow,\n options: { blockQuote: true, lineWidth: -1 }\n });\n const end = context.end ?? [\n { type: 'newline', offset: -1, indent, source: '\\n' }\n ];\n switch (source[0]) {\n case '|':\n case '>': {\n const he = source.indexOf('\\n');\n const head = source.substring(0, he);\n const body = source.substring(he + 1) + '\\n';\n const props = [\n { type: 'block-scalar-header', offset, indent, source: head }\n ];\n if (!addEndtoBlockProps(props, end))\n props.push({ type: 'newline', offset: -1, indent, source: '\\n' });\n return { type: 'block-scalar', offset, indent, props, source: body };\n }\n case '\"':\n return { type: 'double-quoted-scalar', offset, indent, source, end };\n case \"'\":\n return { type: 'single-quoted-scalar', offset, indent, source, end };\n default:\n return { type: 'scalar', offset, indent, source, end };\n }\n}\n/**\n * Set the value of `token` to the given string `value`, overwriting any previous contents and type that it may have.\n *\n * Best efforts are made to retain any comments previously associated with the `token`,\n * though all contents within a collection's `items` will be overwritten.\n *\n * Values that represent an actual string but may be parsed as a different type should use a `type` other than `'PLAIN'`,\n * as this function does not support any schema operations and won't check for such conflicts.\n *\n * @param token Any token. If it does not include an `indent` value, the value will be stringified as if it were an implicit key.\n * @param value The string representation of the value, which will have its content properly indented.\n * @param context.afterKey In most cases, values after a key should have an additional level of indentation.\n * @param context.implicitKey Being within an implicit key may affect the resolved type of the token's value.\n * @param context.inFlow Being within a flow collection may affect the resolved type of the token's value.\n * @param context.type The preferred type of the scalar token. If undefined, the previous type of the `token` will be used, defaulting to `'PLAIN'`.\n */\nfunction setScalarValue(token, value, context = {}) {\n let { afterKey = false, implicitKey = false, inFlow = false, type } = context;\n let indent = 'indent' in token ? token.indent : null;\n if (afterKey && typeof indent === 'number')\n indent += 2;\n if (!type)\n switch (token.type) {\n case 'single-quoted-scalar':\n type = 'QUOTE_SINGLE';\n break;\n case 'double-quoted-scalar':\n type = 'QUOTE_DOUBLE';\n break;\n case 'block-scalar': {\n const header = token.props[0];\n if (header.type !== 'block-scalar-header')\n throw new Error('Invalid block scalar header');\n type = header.source[0] === '>' ? 'BLOCK_FOLDED' : 'BLOCK_LITERAL';\n break;\n }\n default:\n type = 'PLAIN';\n }\n const source = stringifyString.stringifyString({ type, value }, {\n implicitKey: implicitKey || indent === null,\n indent: indent !== null && indent > 0 ? ' '.repeat(indent) : '',\n inFlow,\n options: { blockQuote: true, lineWidth: -1 }\n });\n switch (source[0]) {\n case '|':\n case '>':\n setBlockScalarValue(token, source);\n break;\n case '\"':\n setFlowScalarValue(token, source, 'double-quoted-scalar');\n break;\n case \"'\":\n setFlowScalarValue(token, source, 'single-quoted-scalar');\n break;\n default:\n setFlowScalarValue(token, source, 'scalar');\n }\n}\nfunction setBlockScalarValue(token, source) {\n const he = source.indexOf('\\n');\n const head = source.substring(0, he);\n const body = source.substring(he + 1) + '\\n';\n if (token.type === 'block-scalar') {\n const header = token.props[0];\n if (header.type !== 'block-scalar-header')\n throw new Error('Invalid block scalar header');\n header.source = head;\n token.source = body;\n }\n else {\n const { offset } = token;\n const indent = 'indent' in token ? token.indent : -1;\n const props = [\n { type: 'block-scalar-header', offset, indent, source: head }\n ];\n if (!addEndtoBlockProps(props, 'end' in token ? token.end : undefined))\n props.push({ type: 'newline', offset: -1, indent, source: '\\n' });\n for (const key of Object.keys(token))\n if (key !== 'type' && key !== 'offset')\n delete token[key];\n Object.assign(token, { type: 'block-scalar', indent, props, source: body });\n }\n}\n/** @returns `true` if last token is a newline */\nfunction addEndtoBlockProps(props, end) {\n if (end)\n for (const st of end)\n switch (st.type) {\n case 'space':\n case 'comment':\n props.push(st);\n break;\n case 'newline':\n props.push(st);\n return true;\n }\n return false;\n}\nfunction setFlowScalarValue(token, source, type) {\n switch (token.type) {\n case 'scalar':\n case 'double-quoted-scalar':\n case 'single-quoted-scalar':\n token.type = type;\n token.source = source;\n break;\n case 'block-scalar': {\n const end = token.props.slice(1);\n let oa = source.length;\n if (token.props[0].type === 'block-scalar-header')\n oa -= token.props[0].source.length;\n for (const tok of end)\n tok.offset += oa;\n delete token.props;\n Object.assign(token, { type, source, end });\n break;\n }\n case 'block-map':\n case 'block-seq': {\n const offset = token.offset + source.length;\n const nl = { type: 'newline', offset, indent: token.indent, source: '\\n' };\n delete token.items;\n Object.assign(token, { type, source, end: [nl] });\n break;\n }\n default: {\n const indent = 'indent' in token ? token.indent : -1;\n const end = 'end' in token && Array.isArray(token.end)\n ? token.end.filter(st => st.type === 'space' ||\n st.type === 'comment' ||\n st.type === 'newline')\n : [];\n for (const key of Object.keys(token))\n if (key !== 'type' && key !== 'offset')\n delete token[key];\n Object.assign(token, { type, indent, source, end });\n }\n }\n}\n\nexports.createScalarToken = createScalarToken;\nexports.resolveAsScalar = resolveAsScalar;\nexports.setScalarValue = setScalarValue;\n","'use strict';\n\n/**\n * Stringify a CST document, token, or collection item\n *\n * Fair warning: This applies no validation whatsoever, and\n * simply concatenates the sources in their logical order.\n */\nconst stringify = (cst) => 'type' in cst ? stringifyToken(cst) : stringifyItem(cst);\nfunction stringifyToken(token) {\n switch (token.type) {\n case 'block-scalar': {\n let res = '';\n for (const tok of token.props)\n res += stringifyToken(tok);\n return res + token.source;\n }\n case 'block-map':\n case 'block-seq': {\n let res = '';\n for (const item of token.items)\n res += stringifyItem(item);\n return res;\n }\n case 'flow-collection': {\n let res = token.start.source;\n for (const item of token.items)\n res += stringifyItem(item);\n for (const st of token.end)\n res += st.source;\n return res;\n }\n case 'document': {\n let res = stringifyItem(token);\n if (token.end)\n for (const st of token.end)\n res += st.source;\n return res;\n }\n default: {\n let res = token.source;\n if ('end' in token && token.end)\n for (const st of token.end)\n res += st.source;\n return res;\n }\n }\n}\nfunction stringifyItem({ start, key, sep, value }) {\n let res = '';\n for (const st of start)\n res += st.source;\n if (key)\n res += stringifyToken(key);\n if (sep)\n for (const st of sep)\n res += st.source;\n if (value)\n res += stringifyToken(value);\n return res;\n}\n\nexports.stringify = stringify;\n","'use strict';\n\nconst BREAK = Symbol('break visit');\nconst SKIP = Symbol('skip children');\nconst REMOVE = Symbol('remove item');\n/**\n * Apply a visitor to a CST document or item.\n *\n * Walks through the tree (depth-first) starting from the root, calling a\n * `visitor` function with two arguments when entering each item:\n * - `item`: The current item, which included the following members:\n * - `start: SourceToken[]` – Source tokens before the key or value,\n * possibly including its anchor or tag.\n * - `key?: Token | null` – Set for pair values. May then be `null`, if\n * the key before the `:` separator is empty.\n * - `sep?: SourceToken[]` – Source tokens between the key and the value,\n * which should include the `:` map value indicator if `value` is set.\n * - `value?: Token` – The value of a sequence item, or of a map pair.\n * - `path`: The steps from the root to the current node, as an array of\n * `['key' | 'value', number]` tuples.\n *\n * The return value of the visitor may be used to control the traversal:\n * - `undefined` (default): Do nothing and continue\n * - `visit.SKIP`: Do not visit the children of this token, continue with\n * next sibling\n * - `visit.BREAK`: Terminate traversal completely\n * - `visit.REMOVE`: Remove the current item, then continue with the next one\n * - `number`: Set the index of the next step. This is useful especially if\n * the index of the current token has changed.\n * - `function`: Define the next visitor for this item. After the original\n * visitor is called on item entry, next visitors are called after handling\n * a non-empty `key` and when exiting the item.\n */\nfunction visit(cst, visitor) {\n if ('type' in cst && cst.type === 'document')\n cst = { start: cst.start, value: cst.value };\n _visit(Object.freeze([]), cst, visitor);\n}\n// Without the `as symbol` casts, TS declares these in the `visit`\n// namespace using `var`, but then complains about that because\n// `unique symbol` must be `const`.\n/** Terminate visit traversal completely */\nvisit.BREAK = BREAK;\n/** Do not visit the children of the current item */\nvisit.SKIP = SKIP;\n/** Remove the current item */\nvisit.REMOVE = REMOVE;\n/** Find the item at `path` from `cst` as the root */\nvisit.itemAtPath = (cst, path) => {\n let item = cst;\n for (const [field, index] of path) {\n const tok = item?.[field];\n if (tok && 'items' in tok) {\n item = tok.items[index];\n }\n else\n return undefined;\n }\n return item;\n};\n/**\n * Get the immediate parent collection of the item at `path` from `cst` as the root.\n *\n * Throws an error if the collection is not found, which should never happen if the item itself exists.\n */\nvisit.parentCollection = (cst, path) => {\n const parent = visit.itemAtPath(cst, path.slice(0, -1));\n const field = path[path.length - 1][0];\n const coll = parent?.[field];\n if (coll && 'items' in coll)\n return coll;\n throw new Error('Parent collection not found');\n};\nfunction _visit(path, item, visitor) {\n let ctrl = visitor(item, path);\n if (typeof ctrl === 'symbol')\n return ctrl;\n for (const field of ['key', 'value']) {\n const token = item[field];\n if (token && 'items' in token) {\n for (let i = 0; i < token.items.length; ++i) {\n const ci = _visit(Object.freeze(path.concat([[field, i]])), token.items[i], visitor);\n if (typeof ci === 'number')\n i = ci - 1;\n else if (ci === BREAK)\n return BREAK;\n else if (ci === REMOVE) {\n token.items.splice(i, 1);\n i -= 1;\n }\n }\n if (typeof ctrl === 'function' && field === 'key')\n ctrl = ctrl(item, path);\n }\n }\n return typeof ctrl === 'function' ? ctrl(item, path) : ctrl;\n}\n\nexports.visit = visit;\n","'use strict';\n\nvar cstScalar = require('./cst-scalar.js');\nvar cstStringify = require('./cst-stringify.js');\nvar cstVisit = require('./cst-visit.js');\n\n/** The byte order mark */\nconst BOM = '\\u{FEFF}';\n/** Start of doc-mode */\nconst DOCUMENT = '\\x02'; // C0: Start of Text\n/** Unexpected end of flow-mode */\nconst FLOW_END = '\\x18'; // C0: Cancel\n/** Next token is a scalar value */\nconst SCALAR = '\\x1f'; // C0: Unit Separator\n/** @returns `true` if `token` is a flow or block collection */\nconst isCollection = (token) => !!token && 'items' in token;\n/** @returns `true` if `token` is a flow or block scalar; not an alias */\nconst isScalar = (token) => !!token &&\n (token.type === 'scalar' ||\n token.type === 'single-quoted-scalar' ||\n token.type === 'double-quoted-scalar' ||\n token.type === 'block-scalar');\n/* istanbul ignore next */\n/** Get a printable representation of a lexer token */\nfunction prettyToken(token) {\n switch (token) {\n case BOM:\n return '';\n case DOCUMENT:\n return '';\n case FLOW_END:\n return '';\n case SCALAR:\n return '';\n default:\n return JSON.stringify(token);\n }\n}\n/** Identify the type of a lexer token. May return `null` for unknown tokens. */\nfunction tokenType(source) {\n switch (source) {\n case BOM:\n return 'byte-order-mark';\n case DOCUMENT:\n return 'doc-mode';\n case FLOW_END:\n return 'flow-error-end';\n case SCALAR:\n return 'scalar';\n case '---':\n return 'doc-start';\n case '...':\n return 'doc-end';\n case '':\n case '\\n':\n case '\\r\\n':\n return 'newline';\n case '-':\n return 'seq-item-ind';\n case '?':\n return 'explicit-key-ind';\n case ':':\n return 'map-value-ind';\n case '{':\n return 'flow-map-start';\n case '}':\n return 'flow-map-end';\n case '[':\n return 'flow-seq-start';\n case ']':\n return 'flow-seq-end';\n case ',':\n return 'comma';\n }\n switch (source[0]) {\n case ' ':\n case '\\t':\n return 'space';\n case '#':\n return 'comment';\n case '%':\n return 'directive-line';\n case '*':\n return 'alias';\n case '&':\n return 'anchor';\n case '!':\n return 'tag';\n case \"'\":\n return 'single-quoted-scalar';\n case '\"':\n return 'double-quoted-scalar';\n case '|':\n case '>':\n return 'block-scalar-header';\n }\n return null;\n}\n\nexports.createScalarToken = cstScalar.createScalarToken;\nexports.resolveAsScalar = cstScalar.resolveAsScalar;\nexports.setScalarValue = cstScalar.setScalarValue;\nexports.stringify = cstStringify.stringify;\nexports.visit = cstVisit.visit;\nexports.BOM = BOM;\nexports.DOCUMENT = DOCUMENT;\nexports.FLOW_END = FLOW_END;\nexports.SCALAR = SCALAR;\nexports.isCollection = isCollection;\nexports.isScalar = isScalar;\nexports.prettyToken = prettyToken;\nexports.tokenType = tokenType;\n","'use strict';\n\nvar cst = require('./cst.js');\n\n/*\nSTART -> stream\n\nstream\n directive -> line-end -> stream\n indent + line-end -> stream\n [else] -> line-start\n\nline-end\n comment -> line-end\n newline -> .\n input-end -> END\n\nline-start\n doc-start -> doc\n doc-end -> stream\n [else] -> indent -> block-start\n\nblock-start\n seq-item-start -> block-start\n explicit-key-start -> block-start\n map-value-start -> block-start\n [else] -> doc\n\ndoc\n line-end -> line-start\n spaces -> doc\n anchor -> doc\n tag -> doc\n flow-start -> flow -> doc\n flow-end -> error -> doc\n seq-item-start -> error -> doc\n explicit-key-start -> error -> doc\n map-value-start -> doc\n alias -> doc\n quote-start -> quoted-scalar -> doc\n block-scalar-header -> line-end -> block-scalar(min) -> line-start\n [else] -> plain-scalar(false, min) -> doc\n\nflow\n line-end -> flow\n spaces -> flow\n anchor -> flow\n tag -> flow\n flow-start -> flow -> flow\n flow-end -> .\n seq-item-start -> error -> flow\n explicit-key-start -> flow\n map-value-start -> flow\n alias -> flow\n quote-start -> quoted-scalar -> flow\n comma -> flow\n [else] -> plain-scalar(true, 0) -> flow\n\nquoted-scalar\n quote-end -> .\n [else] -> quoted-scalar\n\nblock-scalar(min)\n newline + peek(indent < min) -> .\n [else] -> block-scalar(min)\n\nplain-scalar(is-flow, min)\n scalar-end(is-flow) -> .\n peek(newline + (indent < min)) -> .\n [else] -> plain-scalar(min)\n*/\nfunction isEmpty(ch) {\n switch (ch) {\n case undefined:\n case ' ':\n case '\\n':\n case '\\r':\n case '\\t':\n return true;\n default:\n return false;\n }\n}\nconst hexDigits = new Set('0123456789ABCDEFabcdef');\nconst tagChars = new Set(\"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-#;/?:@&=+$_.!~*'()\");\nconst flowIndicatorChars = new Set(',[]{}');\nconst invalidAnchorChars = new Set(' ,[]{}\\n\\r\\t');\nconst isNotAnchorChar = (ch) => !ch || invalidAnchorChars.has(ch);\n/**\n * Splits an input string into lexical tokens, i.e. smaller strings that are\n * easily identifiable by `tokens.tokenType()`.\n *\n * Lexing starts always in a \"stream\" context. Incomplete input may be buffered\n * until a complete token can be emitted.\n *\n * In addition to slices of the original input, the following control characters\n * may also be emitted:\n *\n * - `\\x02` (Start of Text): A document starts with the next token\n * - `\\x18` (Cancel): Unexpected end of flow-mode (indicates an error)\n * - `\\x1f` (Unit Separator): Next token is a scalar value\n * - `\\u{FEFF}` (Byte order mark): Emitted separately outside documents\n */\nclass Lexer {\n constructor() {\n /**\n * Flag indicating whether the end of the current buffer marks the end of\n * all input\n */\n this.atEnd = false;\n /**\n * Explicit indent set in block scalar header, as an offset from the current\n * minimum indent, so e.g. set to 1 from a header `|2+`. Set to -1 if not\n * explicitly set.\n */\n this.blockScalarIndent = -1;\n /**\n * Block scalars that include a + (keep) chomping indicator in their header\n * include trailing empty lines, which are otherwise excluded from the\n * scalar's contents.\n */\n this.blockScalarKeep = false;\n /** Current input */\n this.buffer = '';\n /**\n * Flag noting whether the map value indicator : can immediately follow this\n * node within a flow context.\n */\n this.flowKey = false;\n /** Count of surrounding flow collection levels. */\n this.flowLevel = 0;\n /**\n * Minimum level of indentation required for next lines to be parsed as a\n * part of the current scalar value.\n */\n this.indentNext = 0;\n /** Indentation level of the current line. */\n this.indentValue = 0;\n /** Position of the next \\n character. */\n this.lineEndPos = null;\n /** Stores the state of the lexer if reaching the end of incpomplete input */\n this.next = null;\n /** A pointer to `buffer`; the current position of the lexer. */\n this.pos = 0;\n }\n /**\n * Generate YAML tokens from the `source` string. If `incomplete`,\n * a part of the last line may be left as a buffer for the next call.\n *\n * @returns A generator of lexical tokens\n */\n *lex(source, incomplete = false) {\n if (source) {\n if (typeof source !== 'string')\n throw TypeError('source is not a string');\n this.buffer = this.buffer ? this.buffer + source : source;\n this.lineEndPos = null;\n }\n this.atEnd = !incomplete;\n let next = this.next ?? 'stream';\n while (next && (incomplete || this.hasChars(1)))\n next = yield* this.parseNext(next);\n }\n atLineEnd() {\n let i = this.pos;\n let ch = this.buffer[i];\n while (ch === ' ' || ch === '\\t')\n ch = this.buffer[++i];\n if (!ch || ch === '#' || ch === '\\n')\n return true;\n if (ch === '\\r')\n return this.buffer[i + 1] === '\\n';\n return false;\n }\n charAt(n) {\n return this.buffer[this.pos + n];\n }\n continueScalar(offset) {\n let ch = this.buffer[offset];\n if (this.indentNext > 0) {\n let indent = 0;\n while (ch === ' ')\n ch = this.buffer[++indent + offset];\n if (ch === '\\r') {\n const next = this.buffer[indent + offset + 1];\n if (next === '\\n' || (!next && !this.atEnd))\n return offset + indent + 1;\n }\n return ch === '\\n' || indent >= this.indentNext || (!ch && !this.atEnd)\n ? offset + indent\n : -1;\n }\n if (ch === '-' || ch === '.') {\n const dt = this.buffer.substr(offset, 3);\n if ((dt === '---' || dt === '...') && isEmpty(this.buffer[offset + 3]))\n return -1;\n }\n return offset;\n }\n getLine() {\n let end = this.lineEndPos;\n if (typeof end !== 'number' || (end !== -1 && end < this.pos)) {\n end = this.buffer.indexOf('\\n', this.pos);\n this.lineEndPos = end;\n }\n if (end === -1)\n return this.atEnd ? this.buffer.substring(this.pos) : null;\n if (this.buffer[end - 1] === '\\r')\n end -= 1;\n return this.buffer.substring(this.pos, end);\n }\n hasChars(n) {\n return this.pos + n <= this.buffer.length;\n }\n setNext(state) {\n this.buffer = this.buffer.substring(this.pos);\n this.pos = 0;\n this.lineEndPos = null;\n this.next = state;\n return null;\n }\n peek(n) {\n return this.buffer.substr(this.pos, n);\n }\n *parseNext(next) {\n switch (next) {\n case 'stream':\n return yield* this.parseStream();\n case 'line-start':\n return yield* this.parseLineStart();\n case 'block-start':\n return yield* this.parseBlockStart();\n case 'doc':\n return yield* this.parseDocument();\n case 'flow':\n return yield* this.parseFlowCollection();\n case 'quoted-scalar':\n return yield* this.parseQuotedScalar();\n case 'block-scalar':\n return yield* this.parseBlockScalar();\n case 'plain-scalar':\n return yield* this.parsePlainScalar();\n }\n }\n *parseStream() {\n let line = this.getLine();\n if (line === null)\n return this.setNext('stream');\n if (line[0] === cst.BOM) {\n yield* this.pushCount(1);\n line = line.substring(1);\n }\n if (line[0] === '%') {\n let dirEnd = line.length;\n let cs = line.indexOf('#');\n while (cs !== -1) {\n const ch = line[cs - 1];\n if (ch === ' ' || ch === '\\t') {\n dirEnd = cs - 1;\n break;\n }\n else {\n cs = line.indexOf('#', cs + 1);\n }\n }\n while (true) {\n const ch = line[dirEnd - 1];\n if (ch === ' ' || ch === '\\t')\n dirEnd -= 1;\n else\n break;\n }\n const n = (yield* this.pushCount(dirEnd)) + (yield* this.pushSpaces(true));\n yield* this.pushCount(line.length - n); // possible comment\n this.pushNewline();\n return 'stream';\n }\n if (this.atLineEnd()) {\n const sp = yield* this.pushSpaces(true);\n yield* this.pushCount(line.length - sp);\n yield* this.pushNewline();\n return 'stream';\n }\n yield cst.DOCUMENT;\n return yield* this.parseLineStart();\n }\n *parseLineStart() {\n const ch = this.charAt(0);\n if (!ch && !this.atEnd)\n return this.setNext('line-start');\n if (ch === '-' || ch === '.') {\n if (!this.atEnd && !this.hasChars(4))\n return this.setNext('line-start');\n const s = this.peek(3);\n if ((s === '---' || s === '...') && isEmpty(this.charAt(3))) {\n yield* this.pushCount(3);\n this.indentValue = 0;\n this.indentNext = 0;\n return s === '---' ? 'doc' : 'stream';\n }\n }\n this.indentValue = yield* this.pushSpaces(false);\n if (this.indentNext > this.indentValue && !isEmpty(this.charAt(1)))\n this.indentNext = this.indentValue;\n return yield* this.parseBlockStart();\n }\n *parseBlockStart() {\n const [ch0, ch1] = this.peek(2);\n if (!ch1 && !this.atEnd)\n return this.setNext('block-start');\n if ((ch0 === '-' || ch0 === '?' || ch0 === ':') && isEmpty(ch1)) {\n const n = (yield* this.pushCount(1)) + (yield* this.pushSpaces(true));\n this.indentNext = this.indentValue + 1;\n this.indentValue += n;\n return yield* this.parseBlockStart();\n }\n return 'doc';\n }\n *parseDocument() {\n yield* this.pushSpaces(true);\n const line = this.getLine();\n if (line === null)\n return this.setNext('doc');\n let n = yield* this.pushIndicators();\n switch (line[n]) {\n case '#':\n yield* this.pushCount(line.length - n);\n // fallthrough\n case undefined:\n yield* this.pushNewline();\n return yield* this.parseLineStart();\n case '{':\n case '[':\n yield* this.pushCount(1);\n this.flowKey = false;\n this.flowLevel = 1;\n return 'flow';\n case '}':\n case ']':\n // this is an error\n yield* this.pushCount(1);\n return 'doc';\n case '*':\n yield* this.pushUntil(isNotAnchorChar);\n return 'doc';\n case '\"':\n case \"'\":\n return yield* this.parseQuotedScalar();\n case '|':\n case '>':\n n += yield* this.parseBlockScalarHeader();\n n += yield* this.pushSpaces(true);\n yield* this.pushCount(line.length - n);\n yield* this.pushNewline();\n return yield* this.parseBlockScalar();\n default:\n return yield* this.parsePlainScalar();\n }\n }\n *parseFlowCollection() {\n let nl, sp;\n let indent = -1;\n do {\n nl = yield* this.pushNewline();\n if (nl > 0) {\n sp = yield* this.pushSpaces(false);\n this.indentValue = indent = sp;\n }\n else {\n sp = 0;\n }\n sp += yield* this.pushSpaces(true);\n } while (nl + sp > 0);\n const line = this.getLine();\n if (line === null)\n return this.setNext('flow');\n if ((indent !== -1 && indent < this.indentNext && line[0] !== '#') ||\n (indent === 0 &&\n (line.startsWith('---') || line.startsWith('...')) &&\n isEmpty(line[3]))) {\n // Allowing for the terminal ] or } at the same (rather than greater)\n // indent level as the initial [ or { is technically invalid, but\n // failing here would be surprising to users.\n const atFlowEndMarker = indent === this.indentNext - 1 &&\n this.flowLevel === 1 &&\n (line[0] === ']' || line[0] === '}');\n if (!atFlowEndMarker) {\n // this is an error\n this.flowLevel = 0;\n yield cst.FLOW_END;\n return yield* this.parseLineStart();\n }\n }\n let n = 0;\n while (line[n] === ',') {\n n += yield* this.pushCount(1);\n n += yield* this.pushSpaces(true);\n this.flowKey = false;\n }\n n += yield* this.pushIndicators();\n switch (line[n]) {\n case undefined:\n return 'flow';\n case '#':\n yield* this.pushCount(line.length - n);\n return 'flow';\n case '{':\n case '[':\n yield* this.pushCount(1);\n this.flowKey = false;\n this.flowLevel += 1;\n return 'flow';\n case '}':\n case ']':\n yield* this.pushCount(1);\n this.flowKey = true;\n this.flowLevel -= 1;\n return this.flowLevel ? 'flow' : 'doc';\n case '*':\n yield* this.pushUntil(isNotAnchorChar);\n return 'flow';\n case '\"':\n case \"'\":\n this.flowKey = true;\n return yield* this.parseQuotedScalar();\n case ':': {\n const next = this.charAt(1);\n if (this.flowKey || isEmpty(next) || next === ',') {\n this.flowKey = false;\n yield* this.pushCount(1);\n yield* this.pushSpaces(true);\n return 'flow';\n }\n }\n // fallthrough\n default:\n this.flowKey = false;\n return yield* this.parsePlainScalar();\n }\n }\n *parseQuotedScalar() {\n const quote = this.charAt(0);\n let end = this.buffer.indexOf(quote, this.pos + 1);\n if (quote === \"'\") {\n while (end !== -1 && this.buffer[end + 1] === \"'\")\n end = this.buffer.indexOf(\"'\", end + 2);\n }\n else {\n // double-quote\n while (end !== -1) {\n let n = 0;\n while (this.buffer[end - 1 - n] === '\\\\')\n n += 1;\n if (n % 2 === 0)\n break;\n end = this.buffer.indexOf('\"', end + 1);\n }\n }\n // Only looking for newlines within the quotes\n const qb = this.buffer.substring(0, end);\n let nl = qb.indexOf('\\n', this.pos);\n if (nl !== -1) {\n while (nl !== -1) {\n const cs = this.continueScalar(nl + 1);\n if (cs === -1)\n break;\n nl = qb.indexOf('\\n', cs);\n }\n if (nl !== -1) {\n // this is an error caused by an unexpected unindent\n end = nl - (qb[nl - 1] === '\\r' ? 2 : 1);\n }\n }\n if (end === -1) {\n if (!this.atEnd)\n return this.setNext('quoted-scalar');\n end = this.buffer.length;\n }\n yield* this.pushToIndex(end + 1, false);\n return this.flowLevel ? 'flow' : 'doc';\n }\n *parseBlockScalarHeader() {\n this.blockScalarIndent = -1;\n this.blockScalarKeep = false;\n let i = this.pos;\n while (true) {\n const ch = this.buffer[++i];\n if (ch === '+')\n this.blockScalarKeep = true;\n else if (ch > '0' && ch <= '9')\n this.blockScalarIndent = Number(ch) - 1;\n else if (ch !== '-')\n break;\n }\n return yield* this.pushUntil(ch => isEmpty(ch) || ch === '#');\n }\n *parseBlockScalar() {\n let nl = this.pos - 1; // may be -1 if this.pos === 0\n let indent = 0;\n let ch;\n loop: for (let i = this.pos; (ch = this.buffer[i]); ++i) {\n switch (ch) {\n case ' ':\n indent += 1;\n break;\n case '\\n':\n nl = i;\n indent = 0;\n break;\n case '\\r': {\n const next = this.buffer[i + 1];\n if (!next && !this.atEnd)\n return this.setNext('block-scalar');\n if (next === '\\n')\n break;\n } // fallthrough\n default:\n break loop;\n }\n }\n if (!ch && !this.atEnd)\n return this.setNext('block-scalar');\n if (indent >= this.indentNext) {\n if (this.blockScalarIndent === -1)\n this.indentNext = indent;\n else {\n this.indentNext =\n this.blockScalarIndent + (this.indentNext === 0 ? 1 : this.indentNext);\n }\n do {\n const cs = this.continueScalar(nl + 1);\n if (cs === -1)\n break;\n nl = this.buffer.indexOf('\\n', cs);\n } while (nl !== -1);\n if (nl === -1) {\n if (!this.atEnd)\n return this.setNext('block-scalar');\n nl = this.buffer.length;\n }\n }\n // Trailing insufficiently indented tabs are invalid.\n // To catch that during parsing, we include them in the block scalar value.\n let i = nl + 1;\n ch = this.buffer[i];\n while (ch === ' ')\n ch = this.buffer[++i];\n if (ch === '\\t') {\n while (ch === '\\t' || ch === ' ' || ch === '\\r' || ch === '\\n')\n ch = this.buffer[++i];\n nl = i - 1;\n }\n else if (!this.blockScalarKeep) {\n do {\n let i = nl - 1;\n let ch = this.buffer[i];\n if (ch === '\\r')\n ch = this.buffer[--i];\n const lastChar = i; // Drop the line if last char not more indented\n while (ch === ' ')\n ch = this.buffer[--i];\n if (ch === '\\n' && i >= this.pos && i + 1 + indent > lastChar)\n nl = i;\n else\n break;\n } while (true);\n }\n yield cst.SCALAR;\n yield* this.pushToIndex(nl + 1, true);\n return yield* this.parseLineStart();\n }\n *parsePlainScalar() {\n const inFlow = this.flowLevel > 0;\n let end = this.pos - 1;\n let i = this.pos - 1;\n let ch;\n while ((ch = this.buffer[++i])) {\n if (ch === ':') {\n const next = this.buffer[i + 1];\n if (isEmpty(next) || (inFlow && flowIndicatorChars.has(next)))\n break;\n end = i;\n }\n else if (isEmpty(ch)) {\n let next = this.buffer[i + 1];\n if (ch === '\\r') {\n if (next === '\\n') {\n i += 1;\n ch = '\\n';\n next = this.buffer[i + 1];\n }\n else\n end = i;\n }\n if (next === '#' || (inFlow && flowIndicatorChars.has(next)))\n break;\n if (ch === '\\n') {\n const cs = this.continueScalar(i + 1);\n if (cs === -1)\n break;\n i = Math.max(i, cs - 2); // to advance, but still account for ' #'\n }\n }\n else {\n if (inFlow && flowIndicatorChars.has(ch))\n break;\n end = i;\n }\n }\n if (!ch && !this.atEnd)\n return this.setNext('plain-scalar');\n yield cst.SCALAR;\n yield* this.pushToIndex(end + 1, true);\n return inFlow ? 'flow' : 'doc';\n }\n *pushCount(n) {\n if (n > 0) {\n yield this.buffer.substr(this.pos, n);\n this.pos += n;\n return n;\n }\n return 0;\n }\n *pushToIndex(i, allowEmpty) {\n const s = this.buffer.slice(this.pos, i);\n if (s) {\n yield s;\n this.pos += s.length;\n return s.length;\n }\n else if (allowEmpty)\n yield '';\n return 0;\n }\n *pushIndicators() {\n switch (this.charAt(0)) {\n case '!':\n return ((yield* this.pushTag()) +\n (yield* this.pushSpaces(true)) +\n (yield* this.pushIndicators()));\n case '&':\n return ((yield* this.pushUntil(isNotAnchorChar)) +\n (yield* this.pushSpaces(true)) +\n (yield* this.pushIndicators()));\n case '-': // this is an error\n case '?': // this is an error outside flow collections\n case ':': {\n const inFlow = this.flowLevel > 0;\n const ch1 = this.charAt(1);\n if (isEmpty(ch1) || (inFlow && flowIndicatorChars.has(ch1))) {\n if (!inFlow)\n this.indentNext = this.indentValue + 1;\n else if (this.flowKey)\n this.flowKey = false;\n return ((yield* this.pushCount(1)) +\n (yield* this.pushSpaces(true)) +\n (yield* this.pushIndicators()));\n }\n }\n }\n return 0;\n }\n *pushTag() {\n if (this.charAt(1) === '<') {\n let i = this.pos + 2;\n let ch = this.buffer[i];\n while (!isEmpty(ch) && ch !== '>')\n ch = this.buffer[++i];\n return yield* this.pushToIndex(ch === '>' ? i + 1 : i, false);\n }\n else {\n let i = this.pos + 1;\n let ch = this.buffer[i];\n while (ch) {\n if (tagChars.has(ch))\n ch = this.buffer[++i];\n else if (ch === '%' &&\n hexDigits.has(this.buffer[i + 1]) &&\n hexDigits.has(this.buffer[i + 2])) {\n ch = this.buffer[(i += 3)];\n }\n else\n break;\n }\n return yield* this.pushToIndex(i, false);\n }\n }\n *pushNewline() {\n const ch = this.buffer[this.pos];\n if (ch === '\\n')\n return yield* this.pushCount(1);\n else if (ch === '\\r' && this.charAt(1) === '\\n')\n return yield* this.pushCount(2);\n else\n return 0;\n }\n *pushSpaces(allowTabs) {\n let i = this.pos - 1;\n let ch;\n do {\n ch = this.buffer[++i];\n } while (ch === ' ' || (allowTabs && ch === '\\t'));\n const n = i - this.pos;\n if (n > 0) {\n yield this.buffer.substr(this.pos, n);\n this.pos = i;\n }\n return n;\n }\n *pushUntil(test) {\n let i = this.pos;\n let ch = this.buffer[i];\n while (!test(ch))\n ch = this.buffer[++i];\n return yield* this.pushToIndex(i, false);\n }\n}\n\nexports.Lexer = Lexer;\n","'use strict';\n\n/**\n * Tracks newlines during parsing in order to provide an efficient API for\n * determining the one-indexed `{ line, col }` position for any offset\n * within the input.\n */\nclass LineCounter {\n constructor() {\n this.lineStarts = [];\n /**\n * Should be called in ascending order. Otherwise, call\n * `lineCounter.lineStarts.sort()` before calling `linePos()`.\n */\n this.addNewLine = (offset) => this.lineStarts.push(offset);\n /**\n * Performs a binary search and returns the 1-indexed { line, col }\n * position of `offset`. If `line === 0`, `addNewLine` has never been\n * called or `offset` is before the first known newline.\n */\n this.linePos = (offset) => {\n let low = 0;\n let high = this.lineStarts.length;\n while (low < high) {\n const mid = (low + high) >> 1; // Math.floor((low + high) / 2)\n if (this.lineStarts[mid] < offset)\n low = mid + 1;\n else\n high = mid;\n }\n if (this.lineStarts[low] === offset)\n return { line: low + 1, col: 1 };\n if (low === 0)\n return { line: 0, col: offset };\n const start = this.lineStarts[low - 1];\n return { line: low, col: offset - start + 1 };\n };\n }\n}\n\nexports.LineCounter = LineCounter;\n","'use strict';\n\nvar node_process = require('process');\nvar cst = require('./cst.js');\nvar lexer = require('./lexer.js');\n\nfunction includesToken(list, type) {\n for (let i = 0; i < list.length; ++i)\n if (list[i].type === type)\n return true;\n return false;\n}\nfunction findNonEmptyIndex(list) {\n for (let i = 0; i < list.length; ++i) {\n switch (list[i].type) {\n case 'space':\n case 'comment':\n case 'newline':\n break;\n default:\n return i;\n }\n }\n return -1;\n}\nfunction isFlowToken(token) {\n switch (token?.type) {\n case 'alias':\n case 'scalar':\n case 'single-quoted-scalar':\n case 'double-quoted-scalar':\n case 'flow-collection':\n return true;\n default:\n return false;\n }\n}\nfunction getPrevProps(parent) {\n switch (parent.type) {\n case 'document':\n return parent.start;\n case 'block-map': {\n const it = parent.items[parent.items.length - 1];\n return it.sep ?? it.start;\n }\n case 'block-seq':\n return parent.items[parent.items.length - 1].start;\n /* istanbul ignore next should not happen */\n default:\n return [];\n }\n}\n/** Note: May modify input array */\nfunction getFirstKeyStartProps(prev) {\n if (prev.length === 0)\n return [];\n let i = prev.length;\n loop: while (--i >= 0) {\n switch (prev[i].type) {\n case 'doc-start':\n case 'explicit-key-ind':\n case 'map-value-ind':\n case 'seq-item-ind':\n case 'newline':\n break loop;\n }\n }\n while (prev[++i]?.type === 'space') {\n /* loop */\n }\n return prev.splice(i, prev.length);\n}\nfunction fixFlowSeqItems(fc) {\n if (fc.start.type === 'flow-seq-start') {\n for (const it of fc.items) {\n if (it.sep &&\n !it.value &&\n !includesToken(it.start, 'explicit-key-ind') &&\n !includesToken(it.sep, 'map-value-ind')) {\n if (it.key)\n it.value = it.key;\n delete it.key;\n if (isFlowToken(it.value)) {\n if (it.value.end)\n Array.prototype.push.apply(it.value.end, it.sep);\n else\n it.value.end = it.sep;\n }\n else\n Array.prototype.push.apply(it.start, it.sep);\n delete it.sep;\n }\n }\n }\n}\n/**\n * A YAML concrete syntax tree (CST) parser\n *\n * ```ts\n * const src: string = ...\n * for (const token of new Parser().parse(src)) {\n * // token: Token\n * }\n * ```\n *\n * To use the parser with a user-provided lexer:\n *\n * ```ts\n * function* parse(source: string, lexer: Lexer) {\n * const parser = new Parser()\n * for (const lexeme of lexer.lex(source))\n * yield* parser.next(lexeme)\n * yield* parser.end()\n * }\n *\n * const src: string = ...\n * const lexer = new Lexer()\n * for (const token of parse(src, lexer)) {\n * // token: Token\n * }\n * ```\n */\nclass Parser {\n /**\n * @param onNewLine - If defined, called separately with the start position of\n * each new line (in `parse()`, including the start of input).\n */\n constructor(onNewLine) {\n /** If true, space and sequence indicators count as indentation */\n this.atNewLine = true;\n /** If true, next token is a scalar value */\n this.atScalar = false;\n /** Current indentation level */\n this.indent = 0;\n /** Current offset since the start of parsing */\n this.offset = 0;\n /** On the same line with a block map key */\n this.onKeyLine = false;\n /** Top indicates the node that's currently being built */\n this.stack = [];\n /** The source of the current token, set in parse() */\n this.source = '';\n /** The type of the current token, set in parse() */\n this.type = '';\n // Must be defined after `next()`\n this.lexer = new lexer.Lexer();\n this.onNewLine = onNewLine;\n }\n /**\n * Parse `source` as a YAML stream.\n * If `incomplete`, a part of the last line may be left as a buffer for the next call.\n *\n * Errors are not thrown, but yielded as `{ type: 'error', message }` tokens.\n *\n * @returns A generator of tokens representing each directive, document, and other structure.\n */\n *parse(source, incomplete = false) {\n if (this.onNewLine && this.offset === 0)\n this.onNewLine(0);\n for (const lexeme of this.lexer.lex(source, incomplete))\n yield* this.next(lexeme);\n if (!incomplete)\n yield* this.end();\n }\n /**\n * Advance the parser by the `source` of one lexical token.\n */\n *next(source) {\n this.source = source;\n if (node_process.env.LOG_TOKENS)\n console.log('|', cst.prettyToken(source));\n if (this.atScalar) {\n this.atScalar = false;\n yield* this.step();\n this.offset += source.length;\n return;\n }\n const type = cst.tokenType(source);\n if (!type) {\n const message = `Not a YAML token: ${source}`;\n yield* this.pop({ type: 'error', offset: this.offset, message, source });\n this.offset += source.length;\n }\n else if (type === 'scalar') {\n this.atNewLine = false;\n this.atScalar = true;\n this.type = 'scalar';\n }\n else {\n this.type = type;\n yield* this.step();\n switch (type) {\n case 'newline':\n this.atNewLine = true;\n this.indent = 0;\n if (this.onNewLine)\n this.onNewLine(this.offset + source.length);\n break;\n case 'space':\n if (this.atNewLine && source[0] === ' ')\n this.indent += source.length;\n break;\n case 'explicit-key-ind':\n case 'map-value-ind':\n case 'seq-item-ind':\n if (this.atNewLine)\n this.indent += source.length;\n break;\n case 'doc-mode':\n case 'flow-error-end':\n return;\n default:\n this.atNewLine = false;\n }\n this.offset += source.length;\n }\n }\n /** Call at end of input to push out any remaining constructions */\n *end() {\n while (this.stack.length > 0)\n yield* this.pop();\n }\n get sourceToken() {\n const st = {\n type: this.type,\n offset: this.offset,\n indent: this.indent,\n source: this.source\n };\n return st;\n }\n *step() {\n const top = this.peek(1);\n if (this.type === 'doc-end' && top?.type !== 'doc-end') {\n while (this.stack.length > 0)\n yield* this.pop();\n this.stack.push({\n type: 'doc-end',\n offset: this.offset,\n source: this.source\n });\n return;\n }\n if (!top)\n return yield* this.stream();\n switch (top.type) {\n case 'document':\n return yield* this.document(top);\n case 'alias':\n case 'scalar':\n case 'single-quoted-scalar':\n case 'double-quoted-scalar':\n return yield* this.scalar(top);\n case 'block-scalar':\n return yield* this.blockScalar(top);\n case 'block-map':\n return yield* this.blockMap(top);\n case 'block-seq':\n return yield* this.blockSequence(top);\n case 'flow-collection':\n return yield* this.flowCollection(top);\n case 'doc-end':\n return yield* this.documentEnd(top);\n }\n /* istanbul ignore next should not happen */\n yield* this.pop();\n }\n peek(n) {\n return this.stack[this.stack.length - n];\n }\n *pop(error) {\n const token = error ?? this.stack.pop();\n /* istanbul ignore if should not happen */\n if (!token) {\n const message = 'Tried to pop an empty stack';\n yield { type: 'error', offset: this.offset, source: '', message };\n }\n else if (this.stack.length === 0) {\n yield token;\n }\n else {\n const top = this.peek(1);\n if (token.type === 'block-scalar') {\n // Block scalars use their parent rather than header indent\n token.indent = 'indent' in top ? top.indent : 0;\n }\n else if (token.type === 'flow-collection' && top.type === 'document') {\n // Ignore all indent for top-level flow collections\n token.indent = 0;\n }\n if (token.type === 'flow-collection')\n fixFlowSeqItems(token);\n switch (top.type) {\n case 'document':\n top.value = token;\n break;\n case 'block-scalar':\n top.props.push(token); // error\n break;\n case 'block-map': {\n const it = top.items[top.items.length - 1];\n if (it.value) {\n top.items.push({ start: [], key: token, sep: [] });\n this.onKeyLine = true;\n return;\n }\n else if (it.sep) {\n it.value = token;\n }\n else {\n Object.assign(it, { key: token, sep: [] });\n this.onKeyLine = !it.explicitKey;\n return;\n }\n break;\n }\n case 'block-seq': {\n const it = top.items[top.items.length - 1];\n if (it.value)\n top.items.push({ start: [], value: token });\n else\n it.value = token;\n break;\n }\n case 'flow-collection': {\n const it = top.items[top.items.length - 1];\n if (!it || it.value)\n top.items.push({ start: [], key: token, sep: [] });\n else if (it.sep)\n it.value = token;\n else\n Object.assign(it, { key: token, sep: [] });\n return;\n }\n /* istanbul ignore next should not happen */\n default:\n yield* this.pop();\n yield* this.pop(token);\n }\n if ((top.type === 'document' ||\n top.type === 'block-map' ||\n top.type === 'block-seq') &&\n (token.type === 'block-map' || token.type === 'block-seq')) {\n const last = token.items[token.items.length - 1];\n if (last &&\n !last.sep &&\n !last.value &&\n last.start.length > 0 &&\n findNonEmptyIndex(last.start) === -1 &&\n (token.indent === 0 ||\n last.start.every(st => st.type !== 'comment' || st.indent < token.indent))) {\n if (top.type === 'document')\n top.end = last.start;\n else\n top.items.push({ start: last.start });\n token.items.splice(-1, 1);\n }\n }\n }\n }\n *stream() {\n switch (this.type) {\n case 'directive-line':\n yield { type: 'directive', offset: this.offset, source: this.source };\n return;\n case 'byte-order-mark':\n case 'space':\n case 'comment':\n case 'newline':\n yield this.sourceToken;\n return;\n case 'doc-mode':\n case 'doc-start': {\n const doc = {\n type: 'document',\n offset: this.offset,\n start: []\n };\n if (this.type === 'doc-start')\n doc.start.push(this.sourceToken);\n this.stack.push(doc);\n return;\n }\n }\n yield {\n type: 'error',\n offset: this.offset,\n message: `Unexpected ${this.type} token in YAML stream`,\n source: this.source\n };\n }\n *document(doc) {\n if (doc.value)\n return yield* this.lineEnd(doc);\n switch (this.type) {\n case 'doc-start': {\n if (findNonEmptyIndex(doc.start) !== -1) {\n yield* this.pop();\n yield* this.step();\n }\n else\n doc.start.push(this.sourceToken);\n return;\n }\n case 'anchor':\n case 'tag':\n case 'space':\n case 'comment':\n case 'newline':\n doc.start.push(this.sourceToken);\n return;\n }\n const bv = this.startBlockValue(doc);\n if (bv)\n this.stack.push(bv);\n else {\n yield {\n type: 'error',\n offset: this.offset,\n message: `Unexpected ${this.type} token in YAML document`,\n source: this.source\n };\n }\n }\n *scalar(scalar) {\n if (this.type === 'map-value-ind') {\n const prev = getPrevProps(this.peek(2));\n const start = getFirstKeyStartProps(prev);\n let sep;\n if (scalar.end) {\n sep = scalar.end;\n sep.push(this.sourceToken);\n delete scalar.end;\n }\n else\n sep = [this.sourceToken];\n const map = {\n type: 'block-map',\n offset: scalar.offset,\n indent: scalar.indent,\n items: [{ start, key: scalar, sep }]\n };\n this.onKeyLine = true;\n this.stack[this.stack.length - 1] = map;\n }\n else\n yield* this.lineEnd(scalar);\n }\n *blockScalar(scalar) {\n switch (this.type) {\n case 'space':\n case 'comment':\n case 'newline':\n scalar.props.push(this.sourceToken);\n return;\n case 'scalar':\n scalar.source = this.source;\n // block-scalar source includes trailing newline\n this.atNewLine = true;\n this.indent = 0;\n if (this.onNewLine) {\n let nl = this.source.indexOf('\\n') + 1;\n while (nl !== 0) {\n this.onNewLine(this.offset + nl);\n nl = this.source.indexOf('\\n', nl) + 1;\n }\n }\n yield* this.pop();\n break;\n /* istanbul ignore next should not happen */\n default:\n yield* this.pop();\n yield* this.step();\n }\n }\n *blockMap(map) {\n const it = map.items[map.items.length - 1];\n // it.sep is true-ish if pair already has key or : separator\n switch (this.type) {\n case 'newline':\n this.onKeyLine = false;\n if (it.value) {\n const end = 'end' in it.value ? it.value.end : undefined;\n const last = Array.isArray(end) ? end[end.length - 1] : undefined;\n if (last?.type === 'comment')\n end?.push(this.sourceToken);\n else\n map.items.push({ start: [this.sourceToken] });\n }\n else if (it.sep) {\n it.sep.push(this.sourceToken);\n }\n else {\n it.start.push(this.sourceToken);\n }\n return;\n case 'space':\n case 'comment':\n if (it.value) {\n map.items.push({ start: [this.sourceToken] });\n }\n else if (it.sep) {\n it.sep.push(this.sourceToken);\n }\n else {\n if (this.atIndentedComment(it.start, map.indent)) {\n const prev = map.items[map.items.length - 2];\n const end = prev?.value?.end;\n if (Array.isArray(end)) {\n Array.prototype.push.apply(end, it.start);\n end.push(this.sourceToken);\n map.items.pop();\n return;\n }\n }\n it.start.push(this.sourceToken);\n }\n return;\n }\n if (this.indent >= map.indent) {\n const atMapIndent = !this.onKeyLine && this.indent === map.indent;\n const atNextItem = atMapIndent &&\n (it.sep || it.explicitKey) &&\n this.type !== 'seq-item-ind';\n // For empty nodes, assign newline-separated not indented empty tokens to following node\n let start = [];\n if (atNextItem && it.sep && !it.value) {\n const nl = [];\n for (let i = 0; i < it.sep.length; ++i) {\n const st = it.sep[i];\n switch (st.type) {\n case 'newline':\n nl.push(i);\n break;\n case 'space':\n break;\n case 'comment':\n if (st.indent > map.indent)\n nl.length = 0;\n break;\n default:\n nl.length = 0;\n }\n }\n if (nl.length >= 2)\n start = it.sep.splice(nl[1]);\n }\n switch (this.type) {\n case 'anchor':\n case 'tag':\n if (atNextItem || it.value) {\n start.push(this.sourceToken);\n map.items.push({ start });\n this.onKeyLine = true;\n }\n else if (it.sep) {\n it.sep.push(this.sourceToken);\n }\n else {\n it.start.push(this.sourceToken);\n }\n return;\n case 'explicit-key-ind':\n if (!it.sep && !it.explicitKey) {\n it.start.push(this.sourceToken);\n it.explicitKey = true;\n }\n else if (atNextItem || it.value) {\n start.push(this.sourceToken);\n map.items.push({ start, explicitKey: true });\n }\n else {\n this.stack.push({\n type: 'block-map',\n offset: this.offset,\n indent: this.indent,\n items: [{ start: [this.sourceToken], explicitKey: true }]\n });\n }\n this.onKeyLine = true;\n return;\n case 'map-value-ind':\n if (it.explicitKey) {\n if (!it.sep) {\n if (includesToken(it.start, 'newline')) {\n Object.assign(it, { key: null, sep: [this.sourceToken] });\n }\n else {\n const start = getFirstKeyStartProps(it.start);\n this.stack.push({\n type: 'block-map',\n offset: this.offset,\n indent: this.indent,\n items: [{ start, key: null, sep: [this.sourceToken] }]\n });\n }\n }\n else if (it.value) {\n map.items.push({ start: [], key: null, sep: [this.sourceToken] });\n }\n else if (includesToken(it.sep, 'map-value-ind')) {\n this.stack.push({\n type: 'block-map',\n offset: this.offset,\n indent: this.indent,\n items: [{ start, key: null, sep: [this.sourceToken] }]\n });\n }\n else if (isFlowToken(it.key) &&\n !includesToken(it.sep, 'newline')) {\n const start = getFirstKeyStartProps(it.start);\n const key = it.key;\n const sep = it.sep;\n sep.push(this.sourceToken);\n // @ts-expect-error type guard is wrong here\n delete it.key;\n // @ts-expect-error type guard is wrong here\n delete it.sep;\n this.stack.push({\n type: 'block-map',\n offset: this.offset,\n indent: this.indent,\n items: [{ start, key, sep }]\n });\n }\n else if (start.length > 0) {\n // Not actually at next item\n it.sep = it.sep.concat(start, this.sourceToken);\n }\n else {\n it.sep.push(this.sourceToken);\n }\n }\n else {\n if (!it.sep) {\n Object.assign(it, { key: null, sep: [this.sourceToken] });\n }\n else if (it.value || atNextItem) {\n map.items.push({ start, key: null, sep: [this.sourceToken] });\n }\n else if (includesToken(it.sep, 'map-value-ind')) {\n this.stack.push({\n type: 'block-map',\n offset: this.offset,\n indent: this.indent,\n items: [{ start: [], key: null, sep: [this.sourceToken] }]\n });\n }\n else {\n it.sep.push(this.sourceToken);\n }\n }\n this.onKeyLine = true;\n return;\n case 'alias':\n case 'scalar':\n case 'single-quoted-scalar':\n case 'double-quoted-scalar': {\n const fs = this.flowScalar(this.type);\n if (atNextItem || it.value) {\n map.items.push({ start, key: fs, sep: [] });\n this.onKeyLine = true;\n }\n else if (it.sep) {\n this.stack.push(fs);\n }\n else {\n Object.assign(it, { key: fs, sep: [] });\n this.onKeyLine = true;\n }\n return;\n }\n default: {\n const bv = this.startBlockValue(map);\n if (bv) {\n if (bv.type === 'block-seq') {\n if (!it.explicitKey &&\n it.sep &&\n !includesToken(it.sep, 'newline')) {\n yield* this.pop({\n type: 'error',\n offset: this.offset,\n message: 'Unexpected block-seq-ind on same line with key',\n source: this.source\n });\n return;\n }\n }\n else if (atMapIndent) {\n map.items.push({ start });\n }\n this.stack.push(bv);\n return;\n }\n }\n }\n }\n yield* this.pop();\n yield* this.step();\n }\n *blockSequence(seq) {\n const it = seq.items[seq.items.length - 1];\n switch (this.type) {\n case 'newline':\n if (it.value) {\n const end = 'end' in it.value ? it.value.end : undefined;\n const last = Array.isArray(end) ? end[end.length - 1] : undefined;\n if (last?.type === 'comment')\n end?.push(this.sourceToken);\n else\n seq.items.push({ start: [this.sourceToken] });\n }\n else\n it.start.push(this.sourceToken);\n return;\n case 'space':\n case 'comment':\n if (it.value)\n seq.items.push({ start: [this.sourceToken] });\n else {\n if (this.atIndentedComment(it.start, seq.indent)) {\n const prev = seq.items[seq.items.length - 2];\n const end = prev?.value?.end;\n if (Array.isArray(end)) {\n Array.prototype.push.apply(end, it.start);\n end.push(this.sourceToken);\n seq.items.pop();\n return;\n }\n }\n it.start.push(this.sourceToken);\n }\n return;\n case 'anchor':\n case 'tag':\n if (it.value || this.indent <= seq.indent)\n break;\n it.start.push(this.sourceToken);\n return;\n case 'seq-item-ind':\n if (this.indent !== seq.indent)\n break;\n if (it.value || includesToken(it.start, 'seq-item-ind'))\n seq.items.push({ start: [this.sourceToken] });\n else\n it.start.push(this.sourceToken);\n return;\n }\n if (this.indent > seq.indent) {\n const bv = this.startBlockValue(seq);\n if (bv) {\n this.stack.push(bv);\n return;\n }\n }\n yield* this.pop();\n yield* this.step();\n }\n *flowCollection(fc) {\n const it = fc.items[fc.items.length - 1];\n if (this.type === 'flow-error-end') {\n let top;\n do {\n yield* this.pop();\n top = this.peek(1);\n } while (top?.type === 'flow-collection');\n }\n else if (fc.end.length === 0) {\n switch (this.type) {\n case 'comma':\n case 'explicit-key-ind':\n if (!it || it.sep)\n fc.items.push({ start: [this.sourceToken] });\n else\n it.start.push(this.sourceToken);\n return;\n case 'map-value-ind':\n if (!it || it.value)\n fc.items.push({ start: [], key: null, sep: [this.sourceToken] });\n else if (it.sep)\n it.sep.push(this.sourceToken);\n else\n Object.assign(it, { key: null, sep: [this.sourceToken] });\n return;\n case 'space':\n case 'comment':\n case 'newline':\n case 'anchor':\n case 'tag':\n if (!it || it.value)\n fc.items.push({ start: [this.sourceToken] });\n else if (it.sep)\n it.sep.push(this.sourceToken);\n else\n it.start.push(this.sourceToken);\n return;\n case 'alias':\n case 'scalar':\n case 'single-quoted-scalar':\n case 'double-quoted-scalar': {\n const fs = this.flowScalar(this.type);\n if (!it || it.value)\n fc.items.push({ start: [], key: fs, sep: [] });\n else if (it.sep)\n this.stack.push(fs);\n else\n Object.assign(it, { key: fs, sep: [] });\n return;\n }\n case 'flow-map-end':\n case 'flow-seq-end':\n fc.end.push(this.sourceToken);\n return;\n }\n const bv = this.startBlockValue(fc);\n /* istanbul ignore else should not happen */\n if (bv)\n this.stack.push(bv);\n else {\n yield* this.pop();\n yield* this.step();\n }\n }\n else {\n const parent = this.peek(2);\n if (parent.type === 'block-map' &&\n ((this.type === 'map-value-ind' && parent.indent === fc.indent) ||\n (this.type === 'newline' &&\n !parent.items[parent.items.length - 1].sep))) {\n yield* this.pop();\n yield* this.step();\n }\n else if (this.type === 'map-value-ind' &&\n parent.type !== 'flow-collection') {\n const prev = getPrevProps(parent);\n const start = getFirstKeyStartProps(prev);\n fixFlowSeqItems(fc);\n const sep = fc.end.splice(1, fc.end.length);\n sep.push(this.sourceToken);\n const map = {\n type: 'block-map',\n offset: fc.offset,\n indent: fc.indent,\n items: [{ start, key: fc, sep }]\n };\n this.onKeyLine = true;\n this.stack[this.stack.length - 1] = map;\n }\n else {\n yield* this.lineEnd(fc);\n }\n }\n }\n flowScalar(type) {\n if (this.onNewLine) {\n let nl = this.source.indexOf('\\n') + 1;\n while (nl !== 0) {\n this.onNewLine(this.offset + nl);\n nl = this.source.indexOf('\\n', nl) + 1;\n }\n }\n return {\n type,\n offset: this.offset,\n indent: this.indent,\n source: this.source\n };\n }\n startBlockValue(parent) {\n switch (this.type) {\n case 'alias':\n case 'scalar':\n case 'single-quoted-scalar':\n case 'double-quoted-scalar':\n return this.flowScalar(this.type);\n case 'block-scalar-header':\n return {\n type: 'block-scalar',\n offset: this.offset,\n indent: this.indent,\n props: [this.sourceToken],\n source: ''\n };\n case 'flow-map-start':\n case 'flow-seq-start':\n return {\n type: 'flow-collection',\n offset: this.offset,\n indent: this.indent,\n start: this.sourceToken,\n items: [],\n end: []\n };\n case 'seq-item-ind':\n return {\n type: 'block-seq',\n offset: this.offset,\n indent: this.indent,\n items: [{ start: [this.sourceToken] }]\n };\n case 'explicit-key-ind': {\n this.onKeyLine = true;\n const prev = getPrevProps(parent);\n const start = getFirstKeyStartProps(prev);\n start.push(this.sourceToken);\n return {\n type: 'block-map',\n offset: this.offset,\n indent: this.indent,\n items: [{ start, explicitKey: true }]\n };\n }\n case 'map-value-ind': {\n this.onKeyLine = true;\n const prev = getPrevProps(parent);\n const start = getFirstKeyStartProps(prev);\n return {\n type: 'block-map',\n offset: this.offset,\n indent: this.indent,\n items: [{ start, key: null, sep: [this.sourceToken] }]\n };\n }\n }\n return null;\n }\n atIndentedComment(start, indent) {\n if (this.type !== 'comment')\n return false;\n if (this.indent <= indent)\n return false;\n return start.every(st => st.type === 'newline' || st.type === 'space');\n }\n *documentEnd(docEnd) {\n if (this.type !== 'doc-mode') {\n if (docEnd.end)\n docEnd.end.push(this.sourceToken);\n else\n docEnd.end = [this.sourceToken];\n if (this.type === 'newline')\n yield* this.pop();\n }\n }\n *lineEnd(token) {\n switch (this.type) {\n case 'comma':\n case 'doc-start':\n case 'doc-end':\n case 'flow-seq-end':\n case 'flow-map-end':\n case 'map-value-ind':\n yield* this.pop();\n yield* this.step();\n break;\n case 'newline':\n this.onKeyLine = false;\n // fallthrough\n case 'space':\n case 'comment':\n default:\n // all other values are errors\n if (token.end)\n token.end.push(this.sourceToken);\n else\n token.end = [this.sourceToken];\n if (this.type === 'newline')\n yield* this.pop();\n }\n }\n}\n\nexports.Parser = Parser;\n","'use strict';\n\nvar composer = require('./compose/composer.js');\nvar Document = require('./doc/Document.js');\nvar errors = require('./errors.js');\nvar log = require('./log.js');\nvar identity = require('./nodes/identity.js');\nvar lineCounter = require('./parse/line-counter.js');\nvar parser = require('./parse/parser.js');\n\nfunction parseOptions(options) {\n const prettyErrors = options.prettyErrors !== false;\n const lineCounter$1 = options.lineCounter || (prettyErrors && new lineCounter.LineCounter()) || null;\n return { lineCounter: lineCounter$1, prettyErrors };\n}\n/**\n * Parse the input as a stream of YAML documents.\n *\n * Documents should be separated from each other by `...` or `---` marker lines.\n *\n * @returns If an empty `docs` array is returned, it will be of type\n * EmptyStream and contain additional stream information. In\n * TypeScript, you should use `'empty' in docs` as a type guard for it.\n */\nfunction parseAllDocuments(source, options = {}) {\n const { lineCounter, prettyErrors } = parseOptions(options);\n const parser$1 = new parser.Parser(lineCounter?.addNewLine);\n const composer$1 = new composer.Composer(options);\n const docs = Array.from(composer$1.compose(parser$1.parse(source)));\n if (prettyErrors && lineCounter)\n for (const doc of docs) {\n doc.errors.forEach(errors.prettifyError(source, lineCounter));\n doc.warnings.forEach(errors.prettifyError(source, lineCounter));\n }\n if (docs.length > 0)\n return docs;\n return Object.assign([], { empty: true }, composer$1.streamInfo());\n}\n/** Parse an input string into a single YAML.Document */\nfunction parseDocument(source, options = {}) {\n const { lineCounter, prettyErrors } = parseOptions(options);\n const parser$1 = new parser.Parser(lineCounter?.addNewLine);\n const composer$1 = new composer.Composer(options);\n // `doc` is always set by compose.end(true) at the very latest\n let doc = null;\n for (const _doc of composer$1.compose(parser$1.parse(source), true, source.length)) {\n if (!doc)\n doc = _doc;\n else if (doc.options.logLevel !== 'silent') {\n doc.errors.push(new errors.YAMLParseError(_doc.range.slice(0, 2), 'MULTIPLE_DOCS', 'Source contains multiple documents; please use YAML.parseAllDocuments()'));\n break;\n }\n }\n if (prettyErrors && lineCounter) {\n doc.errors.forEach(errors.prettifyError(source, lineCounter));\n doc.warnings.forEach(errors.prettifyError(source, lineCounter));\n }\n return doc;\n}\nfunction parse(src, reviver, options) {\n let _reviver = undefined;\n if (typeof reviver === 'function') {\n _reviver = reviver;\n }\n else if (options === undefined && reviver && typeof reviver === 'object') {\n options = reviver;\n }\n const doc = parseDocument(src, options);\n if (!doc)\n return null;\n doc.warnings.forEach(warning => log.warn(doc.options.logLevel, warning));\n if (doc.errors.length > 0) {\n if (doc.options.logLevel !== 'silent')\n throw doc.errors[0];\n else\n doc.errors = [];\n }\n return doc.toJS(Object.assign({ reviver: _reviver }, options));\n}\nfunction stringify(value, replacer, options) {\n let _replacer = null;\n if (typeof replacer === 'function' || Array.isArray(replacer)) {\n _replacer = replacer;\n }\n else if (options === undefined && replacer) {\n options = replacer;\n }\n if (typeof options === 'string')\n options = options.length;\n if (typeof options === 'number') {\n const indent = Math.round(options);\n options = indent < 1 ? undefined : indent > 8 ? { indent: 8 } : { indent };\n }\n if (value === undefined) {\n const { keepUndefined } = options ?? replacer ?? {};\n if (!keepUndefined)\n return undefined;\n }\n if (identity.isDocument(value) && !_replacer)\n return value.toString(options);\n return new Document.Document(value, _replacer, options).toString(options);\n}\n\nexports.parse = parse;\nexports.parseAllDocuments = parseAllDocuments;\nexports.parseDocument = parseDocument;\nexports.stringify = stringify;\n","'use strict';\n\nvar composer = require('./compose/composer.js');\nvar Document = require('./doc/Document.js');\nvar Schema = require('./schema/Schema.js');\nvar errors = require('./errors.js');\nvar Alias = require('./nodes/Alias.js');\nvar identity = require('./nodes/identity.js');\nvar Pair = require('./nodes/Pair.js');\nvar Scalar = require('./nodes/Scalar.js');\nvar YAMLMap = require('./nodes/YAMLMap.js');\nvar YAMLSeq = require('./nodes/YAMLSeq.js');\nvar cst = require('./parse/cst.js');\nvar lexer = require('./parse/lexer.js');\nvar lineCounter = require('./parse/line-counter.js');\nvar parser = require('./parse/parser.js');\nvar publicApi = require('./public-api.js');\nvar visit = require('./visit.js');\n\n\n\nexports.Composer = composer.Composer;\nexports.Document = Document.Document;\nexports.Schema = Schema.Schema;\nexports.YAMLError = errors.YAMLError;\nexports.YAMLParseError = errors.YAMLParseError;\nexports.YAMLWarning = errors.YAMLWarning;\nexports.Alias = Alias.Alias;\nexports.isAlias = identity.isAlias;\nexports.isCollection = identity.isCollection;\nexports.isDocument = identity.isDocument;\nexports.isMap = identity.isMap;\nexports.isNode = identity.isNode;\nexports.isPair = identity.isPair;\nexports.isScalar = identity.isScalar;\nexports.isSeq = identity.isSeq;\nexports.Pair = Pair.Pair;\nexports.Scalar = Scalar.Scalar;\nexports.YAMLMap = YAMLMap.YAMLMap;\nexports.YAMLSeq = YAMLSeq.YAMLSeq;\nexports.CST = cst;\nexports.Lexer = lexer.Lexer;\nexports.LineCounter = lineCounter.LineCounter;\nexports.Parser = parser.Parser;\nexports.parse = publicApi.parse;\nexports.parseAllDocuments = publicApi.parseAllDocuments;\nexports.parseDocument = publicApi.parseDocument;\nexports.stringify = publicApi.stringify;\nexports.visit = visit.visit;\nexports.visitAsync = visit.visitAsync;\n","/**\r\n * Frontmatter — YAML frontmatter parsing, serialization, and CRUD commands\r\n *\r\n * Uses the `yaml` npm package instead of a hand-rolled parser.\r\n */\r\n\r\nimport fs from 'node:fs';\r\nimport path from 'node:path';\r\nimport YAML from 'yaml';\r\n\r\nimport { safeReadFile, output, error } from './core.js';\r\nimport type {\r\n FrontmatterData,\r\n FrontmatterValue,\r\n FrontmatterValidationResult,\r\n FrontmatterSchema,\r\n} from './types.js';\r\n\r\n// ─── Parsing engine ───────────────────────────────────────────────────────────\r\n\r\n/**\r\n * Extract YAML frontmatter from markdown content into a typed object.\r\n */\r\nexport function extractFrontmatter(content: string): FrontmatterData {\r\n const match = content.match(/^---\\n([\\s\\S]+?)\\n---/);\r\n if (!match) return {};\r\n try {\r\n const parsed = YAML.parse(match[1]);\r\n return (parsed && typeof parsed === 'object' && !Array.isArray(parsed))\r\n ? parsed as FrontmatterData\r\n : {};\r\n } catch {\r\n return {};\r\n }\r\n}\r\n\r\n/**\r\n * Reconstruct YAML frontmatter string from an object.\r\n */\r\nexport function reconstructFrontmatter(obj: FrontmatterData): string {\r\n // Filter out null/undefined values\r\n const cleaned: FrontmatterData = {};\r\n for (const [key, value] of Object.entries(obj)) {\r\n if (value !== null && value !== undefined) {\r\n cleaned[key] = value;\r\n }\r\n }\r\n\r\n return YAML.stringify(cleaned, {\r\n lineWidth: 0, // Don't wrap long lines\r\n defaultKeyType: 'PLAIN',\r\n defaultStringType: 'PLAIN',\r\n }).trimEnd();\r\n}\r\n\r\n/**\r\n * Replace or insert frontmatter in markdown content.\r\n */\r\nexport function spliceFrontmatter(content: string, newObj: FrontmatterData): string {\r\n const yamlStr = reconstructFrontmatter(newObj);\r\n const match = content.match(/^---\\n[\\s\\S]+?\\n---/);\r\n if (match) {\r\n return `---\\n${yamlStr}\\n---` + content.slice(match[0].length);\r\n }\r\n return `---\\n${yamlStr}\\n---\\n\\n` + content;\r\n}\r\n\r\ninterface MustHaveItem {\r\n [key: string]: string | number | string[];\r\n}\r\n\r\n/**\r\n * Parse a specific block from must_haves in frontmatter.\r\n * With the yaml package, this is just object traversal.\r\n */\r\nexport function parseMustHavesBlock(content: string, blockName: string): (string | MustHaveItem)[] {\r\n const fm = extractFrontmatter(content);\r\n const mustHaves = fm.must_haves as FrontmatterData | undefined;\r\n if (!mustHaves || typeof mustHaves !== 'object') return [];\r\n const block = mustHaves[blockName];\r\n if (!Array.isArray(block)) return [];\r\n return block as (string | MustHaveItem)[];\r\n}\r\n\r\n// ─── Frontmatter schema validation ──────────────────────────────────────────\r\n\r\nexport const FRONTMATTER_SCHEMAS: Record = {\r\n plan: {\r\n required: ['phase', 'plan', 'type', 'wave', 'depends_on', 'files_modified', 'autonomous', 'must_haves'],\r\n },\r\n summary: {\r\n required: ['phase', 'plan', 'subsystem', 'tags', 'duration', 'completed'],\r\n },\r\n verification: {\r\n required: ['phase', 'verified', 'status', 'score'],\r\n },\r\n};\r\n\r\n// ─── Frontmatter CRUD commands ──────────────────────────────────────────────\r\n\r\nexport function cmdFrontmatterGet(\r\n cwd: string,\r\n filePath: string | null,\r\n field: string | null,\r\n raw: boolean,\r\n): void {\r\n if (!filePath) {\r\n error('file path required');\r\n }\r\n const fullPath = path.isAbsolute(filePath) ? filePath : path.join(cwd, filePath);\r\n const content = safeReadFile(fullPath);\r\n if (!content) {\r\n output({ error: 'File not found', path: filePath }, raw);\r\n return;\r\n }\r\n const fm = extractFrontmatter(content);\r\n if (field) {\r\n const value = fm[field];\r\n if (value === undefined) {\r\n output({ error: 'Field not found', field }, raw);\r\n return;\r\n }\r\n output({ [field]: value }, raw, JSON.stringify(value));\r\n } else {\r\n output(fm, raw);\r\n }\r\n}\r\n\r\nexport function cmdFrontmatterSet(\r\n cwd: string,\r\n filePath: string | null,\r\n field: string | null,\r\n value: string | undefined,\r\n raw: boolean,\r\n): void {\r\n if (!filePath || !field || value === undefined) {\r\n error('file, field, and value required');\r\n }\r\n const fullPath = path.isAbsolute(filePath!) ? filePath! : path.join(cwd, filePath!);\r\n if (!fs.existsSync(fullPath)) {\r\n output({ error: 'File not found', path: filePath }, raw);\r\n return;\r\n }\r\n const content = fs.readFileSync(fullPath, 'utf-8');\r\n const fm = extractFrontmatter(content);\r\n let parsedValue: FrontmatterValue;\r\n try {\r\n parsedValue = JSON.parse(value!) as FrontmatterValue;\r\n } catch {\r\n parsedValue = value!;\r\n }\r\n fm[field!] = parsedValue;\r\n const newContent = spliceFrontmatter(content, fm);\r\n fs.writeFileSync(fullPath, newContent, 'utf-8');\r\n output({ updated: true, field, value: parsedValue }, raw, 'true');\r\n}\r\n\r\nexport function cmdFrontmatterMerge(\r\n cwd: string,\r\n filePath: string | null,\r\n data: string | null,\r\n raw: boolean,\r\n): void {\r\n if (!filePath || !data) {\r\n error('file and data required');\r\n }\r\n const fullPath = path.isAbsolute(filePath!) ? filePath! : path.join(cwd, filePath!);\r\n if (!fs.existsSync(fullPath)) {\r\n output({ error: 'File not found', path: filePath }, raw);\r\n return;\r\n }\r\n const content = fs.readFileSync(fullPath, 'utf-8');\r\n const fm = extractFrontmatter(content);\r\n let mergeData: FrontmatterData;\r\n try {\r\n mergeData = JSON.parse(data!) as FrontmatterData;\r\n } catch {\r\n error('Invalid JSON for --data');\r\n return;\r\n }\r\n Object.assign(fm, mergeData);\r\n const newContent = spliceFrontmatter(content, fm);\r\n fs.writeFileSync(fullPath, newContent, 'utf-8');\r\n output({ merged: true, fields: Object.keys(mergeData) }, raw, 'true');\r\n}\r\n\r\nexport function cmdFrontmatterValidate(\r\n cwd: string,\r\n filePath: string | null,\r\n schemaName: string | null,\r\n raw: boolean,\r\n): void {\r\n if (!filePath || !schemaName) {\r\n error('file and schema required');\r\n }\r\n const schema = FRONTMATTER_SCHEMAS[schemaName!];\r\n if (!schema) {\r\n error(\r\n `Unknown schema: ${schemaName}. Available: ${Object.keys(FRONTMATTER_SCHEMAS).join(', ')}`,\r\n );\r\n }\r\n const fullPath = path.isAbsolute(filePath!) ? filePath! : path.join(cwd, filePath!);\r\n const content = safeReadFile(fullPath);\r\n if (!content) {\r\n output({ error: 'File not found', path: filePath }, raw);\r\n return;\r\n }\r\n const fm = extractFrontmatter(content);\r\n const missing = schema.required.filter(f => fm[f] === undefined);\r\n const present = schema.required.filter(f => fm[f] !== undefined);\r\n const result: FrontmatterValidationResult = {\r\n valid: missing.length === 0,\r\n missing,\r\n present,\r\n schema: schemaName!,\r\n };\r\n output(result, raw, missing.length === 0 ? 'valid' : 'invalid');\r\n}\r\n","/**\r\n * Config — Planning config CRUD operations\r\n *\r\n * Ported from maxsim/bin/lib/config.cjs\r\n */\r\n\r\nimport fs from 'node:fs';\r\nimport path from 'node:path';\r\nimport os from 'node:os';\r\n\r\nimport { output, error } from './core.js';\r\nimport type { PlanningConfig, WorkflowConfig } from './types.js';\r\nimport { PLANNING_CONFIG_DEFAULTS } from './types.js';\r\n\r\n// ─── Config CRUD commands ───────────────────────────────────────────────────\r\n\r\nexport function cmdConfigEnsureSection(cwd: string, raw: boolean): void {\r\n const configPath = path.join(cwd, '.planning', 'config.json');\r\n const planningDir = path.join(cwd, '.planning');\r\n\r\n try {\r\n if (!fs.existsSync(planningDir)) {\r\n fs.mkdirSync(planningDir, { recursive: true });\r\n }\r\n } catch (err: unknown) {\r\n error('Failed to create .planning directory: ' + (err as Error).message);\r\n }\r\n\r\n if (fs.existsSync(configPath)) {\r\n const result = { created: false, reason: 'already_exists' };\r\n output(result, raw, 'exists');\r\n return;\r\n }\r\n\r\n // Detect Brave Search API key availability\r\n const homedir = os.homedir();\r\n const braveKeyFile = path.join(homedir, '.maxsim', 'brave_api_key');\r\n const hasBraveSearch = !!(process.env.BRAVE_API_KEY || fs.existsSync(braveKeyFile));\r\n\r\n // Load user-level defaults from ~/.maxsim/defaults.json if available\r\n const globalDefaultsPath = path.join(homedir, '.maxsim', 'defaults.json');\r\n let userDefaults: Partial = {};\r\n try {\r\n if (fs.existsSync(globalDefaultsPath)) {\r\n userDefaults = JSON.parse(fs.readFileSync(globalDefaultsPath, 'utf-8')) as Partial;\r\n }\r\n } catch {\r\n // Ignore malformed global defaults, fall back to hardcoded\r\n }\r\n\r\n const hardcoded: PlanningConfig = {\r\n ...PLANNING_CONFIG_DEFAULTS,\r\n brave_search: hasBraveSearch,\r\n };\r\n\r\n const defaults: PlanningConfig = {\r\n ...hardcoded,\r\n ...userDefaults,\r\n workflow: {\r\n ...hardcoded.workflow,\r\n ...(userDefaults.workflow || {}),\r\n } as WorkflowConfig,\r\n };\r\n\r\n try {\r\n fs.writeFileSync(configPath, JSON.stringify(defaults, null, 2), 'utf-8');\r\n const result = { created: true, path: '.planning/config.json' };\r\n output(result, raw, 'created');\r\n } catch (err: unknown) {\r\n error('Failed to create config.json: ' + (err as Error).message);\r\n }\r\n}\r\n\r\nexport function cmdConfigSet(cwd: string, keyPath: string | undefined, value: string | undefined, raw: boolean): void {\r\n const configPath = path.join(cwd, '.planning', 'config.json');\r\n\r\n if (!keyPath) {\r\n error('Usage: config-set ');\r\n }\r\n\r\n // Parse value (handle booleans and numbers)\r\n let parsedValue: string | boolean | number | undefined = value;\r\n if (value === 'true') parsedValue = true;\r\n else if (value === 'false') parsedValue = false;\r\n else if (value !== undefined && !isNaN(Number(value)) && value !== '') parsedValue = Number(value);\r\n\r\n // Load existing config or start with empty object\r\n let config: Record = {};\r\n try {\r\n if (fs.existsSync(configPath)) {\r\n config = JSON.parse(fs.readFileSync(configPath, 'utf-8')) as Record;\r\n }\r\n } catch (err: unknown) {\r\n error('Failed to read config.json: ' + (err as Error).message);\r\n }\r\n\r\n // Set nested value using dot notation\r\n const keys = keyPath!.split('.');\r\n let current: Record = config;\r\n for (let i = 0; i < keys.length - 1; i++) {\r\n const key = keys[i];\r\n if (current[key] === undefined || typeof current[key] !== 'object') {\r\n current[key] = {};\r\n }\r\n current = current[key] as Record;\r\n }\r\n current[keys[keys.length - 1]] = parsedValue;\r\n\r\n try {\r\n fs.writeFileSync(configPath, JSON.stringify(config, null, 2), 'utf-8');\r\n const result = { updated: true, key: keyPath, value: parsedValue };\r\n output(result, raw, `${keyPath}=${parsedValue}`);\r\n } catch (err: unknown) {\r\n error('Failed to write config.json: ' + (err as Error).message);\r\n }\r\n}\r\n\r\nexport function cmdConfigGet(cwd: string, keyPath: string | undefined, raw: boolean): void {\r\n const configPath = path.join(cwd, '.planning', 'config.json');\r\n\r\n if (!keyPath) {\r\n error('Usage: config-get ');\r\n }\r\n\r\n let config: Record = {};\r\n try {\r\n if (fs.existsSync(configPath)) {\r\n config = JSON.parse(fs.readFileSync(configPath, 'utf-8')) as Record;\r\n } else {\r\n error('No config.json found at ' + configPath);\r\n }\r\n } catch (err: unknown) {\r\n if ((err as Error).message.startsWith('No config.json')) throw err;\r\n error('Failed to read config.json: ' + (err as Error).message);\r\n }\r\n\r\n const keys = keyPath!.split('.');\r\n let current: unknown = config;\r\n for (const key of keys) {\r\n if (current === undefined || current === null || typeof current !== 'object') {\r\n error(`Key not found: ${keyPath}`);\r\n }\r\n current = (current as Record)[key];\r\n }\r\n\r\n if (current === undefined) {\r\n error(`Key not found: ${keyPath}`);\r\n }\r\n\r\n output(current, raw, String(current));\r\n}\r\n","export default function escapeStringRegexp(string) {\n\tif (typeof string !== 'string') {\n\t\tthrow new TypeError('Expected a string');\n\t}\n\n\t// Escape characters with special meaning either inside or outside character sets.\n\t// Use a simple backslash escape when it’s always valid, and a `\\xnn` escape when the simpler form would be disallowed by Unicode patterns’ stricter grammar.\n\treturn string\n\t\t.replace(/[|\\\\{}()[\\]^$+*?.]/g, '\\\\$&')\n\t\t.replace(/-/g, '\\\\x2d');\n}\n","/**\r\n * State — STATE.md operations and progression engine\r\n *\r\n * Ported from maxsim/bin/lib/state.cjs\r\n */\r\n\r\nimport fs from 'node:fs';\r\nimport path from 'node:path';\r\n\r\nimport escapeStringRegexp from 'escape-string-regexp';\r\n\r\nimport { loadConfig, output, error, rethrowCliSignals, safeReadFile, planningPath, statePath as statePathUtil, configPath, roadmapPath, phasesPath, debugLog, todayISO, isPlanFile, isSummaryFile } from './core.js';\r\nimport type {\r\n AppConfig,\r\n StatePatchResult,\r\n StateMetricOptions,\r\n StateDecisionOptions,\r\n StateBlockerOptions,\r\n StateSessionOptions,\r\n StateSnapshot,\r\n Decision,\r\n} from './types.js';\r\n\r\n// ─── Internal helpers ────────────────────────────────────────────────────────\r\n\r\nexport function stateExtractField(content: string, fieldName: string): string | null {\r\n const pattern = new RegExp(`\\\\*\\\\*${fieldName}:\\\\*\\\\*\\\\s*(.+)`, 'i');\r\n const match = content.match(pattern);\r\n return match ? match[1].trim() : null;\r\n}\r\n\r\nexport function stateReplaceField(content: string, fieldName: string, newValue: string): string | null {\r\n const escaped = escapeStringRegexp(fieldName);\r\n const pattern = new RegExp(`(\\\\*\\\\*${escaped}:\\\\*\\\\*\\\\s*)(.*)`, 'i');\r\n if (pattern.test(content)) {\r\n return content.replace(pattern, (_match, prefix: string) => `${prefix}${newValue}`);\r\n }\r\n return null;\r\n}\r\n\r\nfunction readTextArgOrFile(cwd: string, value: string | undefined, filePath: string | undefined, label: string): string | undefined {\r\n if (!filePath) return value;\r\n const resolvedPath = path.isAbsolute(filePath) ? filePath : path.join(cwd, filePath);\r\n try {\r\n return fs.readFileSync(resolvedPath, 'utf-8').trimEnd();\r\n } catch {\r\n throw new Error(`${label} file not found: ${filePath}`);\r\n }\r\n}\r\n\r\n/**\r\n * Append an entry to a section in STATE.md content, removing placeholder text.\r\n * Returns updated content or null if section not found.\r\n */\r\nexport function appendToStateSection(\r\n content: string,\r\n sectionPattern: RegExp,\r\n entry: string,\r\n placeholderPatterns?: RegExp[],\r\n): string | null {\r\n const match = content.match(sectionPattern);\r\n if (!match) return null;\r\n\r\n let sectionBody = match[2];\r\n const defaults = [/None yet\\.?\\s*\\n?/gi, /No decisions yet\\.?\\s*\\n?/gi, /None\\.?\\s*\\n?/gi];\r\n for (const pat of placeholderPatterns || defaults) {\r\n sectionBody = sectionBody.replace(pat, '');\r\n }\r\n sectionBody = sectionBody.trimEnd() + '\\n' + entry + '\\n';\r\n\r\n return content.replace(sectionPattern, (_m, header: string) => `${header}${sectionBody}`);\r\n}\r\n\r\n// ─── State commands ──────────────────────────────────────────────────────────\r\n\r\nexport function cmdStateLoad(cwd: string, raw: boolean): void {\r\n const config: AppConfig = loadConfig(cwd);\r\n let stateRaw = '';\r\n try {\r\n stateRaw = fs.readFileSync(statePathUtil(cwd), 'utf-8');\r\n } catch (e) {\r\n /* optional op, ignore */\r\n debugLog(e);\r\n }\r\n\r\n const configExists = fs.existsSync(configPath(cwd));\r\n const roadmapExists = fs.existsSync(roadmapPath(cwd));\r\n const stateExists = stateRaw.length > 0;\r\n\r\n const result = {\r\n config,\r\n state_raw: stateRaw,\r\n state_exists: stateExists,\r\n roadmap_exists: roadmapExists,\r\n config_exists: configExists,\r\n };\r\n\r\n if (raw) {\r\n const c = config;\r\n const lines = [\r\n `model_profile=${c.model_profile}`,\r\n `commit_docs=${c.commit_docs}`,\r\n `branching_strategy=${c.branching_strategy}`,\r\n `phase_branch_template=${c.phase_branch_template}`,\r\n `milestone_branch_template=${c.milestone_branch_template}`,\r\n `parallelization=${c.parallelization}`,\r\n `research=${c.research}`,\r\n `plan_checker=${c.plan_checker}`,\r\n `verifier=${c.verifier}`,\r\n `config_exists=${configExists}`,\r\n `roadmap_exists=${roadmapExists}`,\r\n `state_exists=${stateExists}`,\r\n ];\r\n output(result, true, lines.join('\\n'));\r\n }\r\n\r\n output(result);\r\n}\r\n\r\nexport function cmdStateGet(cwd: string, section: string | null, raw: boolean): void {\r\n const statePath = statePathUtil(cwd);\r\n try {\r\n const content = fs.readFileSync(statePath, 'utf-8');\r\n\r\n if (!section) {\r\n output({ content }, raw, content);\r\n return;\r\n }\r\n\r\n const fieldEscaped = escapeStringRegexp(section);\r\n\r\n // Check for **field:** value\r\n const fieldPattern = new RegExp(`\\\\*\\\\*${fieldEscaped}:\\\\*\\\\*\\\\s*(.*)`, 'i');\r\n const fieldMatch = content.match(fieldPattern);\r\n if (fieldMatch) {\r\n output({ [section]: fieldMatch[1].trim() }, raw, fieldMatch[1].trim());\r\n return;\r\n }\r\n\r\n // Check for ## Section\r\n const sectionPattern = new RegExp(`##\\\\s*${fieldEscaped}\\\\s*\\n([\\\\s\\\\S]*?)(?=\\\\n##|$)`, 'i');\r\n const sectionMatch = content.match(sectionPattern);\r\n if (sectionMatch) {\r\n output({ [section]: sectionMatch[1].trim() }, raw, sectionMatch[1].trim());\r\n return;\r\n }\r\n\r\n output({ error: `Section or field \"${section}\" not found` }, raw, '');\r\n } catch (e: unknown) {\r\n rethrowCliSignals(e);\r\n error('STATE.md not found');\r\n }\r\n}\r\n\r\nexport function cmdStatePatch(cwd: string, patches: Record, raw: boolean): void {\r\n const statePath = statePathUtil(cwd);\r\n try {\r\n let content = fs.readFileSync(statePath, 'utf-8');\r\n const results: StatePatchResult = { updated: [], failed: [] };\r\n\r\n for (const [field, value] of Object.entries(patches)) {\r\n const fieldEscaped = escapeStringRegexp(field);\r\n const pattern = new RegExp(`(\\\\*\\\\*${fieldEscaped}:\\\\*\\\\*\\\\s*)(.*)`, 'i');\r\n\r\n if (pattern.test(content)) {\r\n content = content.replace(pattern, (_match, prefix: string) => `${prefix}${value}`);\r\n results.updated.push(field);\r\n } else {\r\n results.failed.push(field);\r\n }\r\n }\r\n\r\n if (results.updated.length > 0) {\r\n fs.writeFileSync(statePath, content, 'utf-8');\r\n }\r\n\r\n output(results, raw, results.updated.length > 0 ? 'true' : 'false');\r\n } catch (e: unknown) {\r\n rethrowCliSignals(e);\r\n error('STATE.md not found');\r\n }\r\n}\r\n\r\nexport function cmdStateUpdate(cwd: string, field: string | undefined, value: string | undefined): void {\r\n if (!field || value === undefined) {\r\n error('field and value required for state update');\r\n }\r\n\r\n const statePath = statePathUtil(cwd);\r\n try {\r\n let content = fs.readFileSync(statePath, 'utf-8');\r\n const fieldEscaped = escapeStringRegexp(field);\r\n const pattern = new RegExp(`(\\\\*\\\\*${fieldEscaped}:\\\\*\\\\*\\\\s*)(.*)`, 'i');\r\n if (pattern.test(content)) {\r\n content = content.replace(pattern, (_match, prefix: string) => `${prefix}${value}`);\r\n fs.writeFileSync(statePath, content, 'utf-8');\r\n output({ updated: true });\r\n } else {\r\n output({ updated: false, reason: `Field \"${field}\" not found in STATE.md` });\r\n }\r\n } catch (e: unknown) {\r\n rethrowCliSignals(e);\r\n output({ updated: false, reason: 'STATE.md not found' });\r\n }\r\n}\r\n\r\n// ─── State Progression Engine ────────────────────────────────────────────────\r\n\r\nexport function cmdStateAdvancePlan(cwd: string, raw: boolean): void {\r\n const statePath = statePathUtil(cwd);\r\n if (!fs.existsSync(statePath)) { output({ error: 'STATE.md not found' }, raw); return; }\r\n\r\n let content = fs.readFileSync(statePath, 'utf-8');\r\n const currentPlan = parseInt(stateExtractField(content, 'Current Plan') ?? '', 10);\r\n const totalPlans = parseInt(stateExtractField(content, 'Total Plans in Phase') ?? '', 10);\r\n const today = todayISO();\r\n\r\n if (isNaN(currentPlan) || isNaN(totalPlans)) {\r\n output({ error: 'Cannot parse Current Plan or Total Plans in Phase from STATE.md' }, raw);\r\n return;\r\n }\r\n\r\n if (currentPlan >= totalPlans) {\r\n content = stateReplaceField(content, 'Status', 'Phase complete — ready for verification') || content;\r\n content = stateReplaceField(content, 'Last Activity', today) || content;\r\n fs.writeFileSync(statePath, content, 'utf-8');\r\n output({ advanced: false, reason: 'last_plan', current_plan: currentPlan, total_plans: totalPlans, status: 'ready_for_verification' }, raw, 'false');\r\n } else {\r\n const newPlan = currentPlan + 1;\r\n content = stateReplaceField(content, 'Current Plan', String(newPlan)) || content;\r\n content = stateReplaceField(content, 'Status', 'Ready to execute') || content;\r\n content = stateReplaceField(content, 'Last Activity', today) || content;\r\n fs.writeFileSync(statePath, content, 'utf-8');\r\n output({ advanced: true, previous_plan: currentPlan, current_plan: newPlan, total_plans: totalPlans }, raw, 'true');\r\n }\r\n}\r\n\r\nexport function cmdStateRecordMetric(cwd: string, options: StateMetricOptions, raw: boolean): void {\r\n const statePath = statePathUtil(cwd);\r\n if (!fs.existsSync(statePath)) { output({ error: 'STATE.md not found' }, raw); return; }\r\n\r\n let content = fs.readFileSync(statePath, 'utf-8');\r\n const { phase, plan, duration, tasks, files } = options;\r\n\r\n if (!phase || !plan || !duration) {\r\n output({ error: 'phase, plan, and duration required' }, raw);\r\n return;\r\n }\r\n\r\n const metricsPattern = /(##\\s*Performance Metrics[\\s\\S]*?\\n\\|[^\\n]+\\n\\|[-|\\s]+\\n)([\\s\\S]*?)(?=\\n##|\\n$|$)/i;\r\n const metricsMatch = content.match(metricsPattern);\r\n\r\n if (metricsMatch) {\r\n let tableBody = metricsMatch[2].trimEnd();\r\n const newRow = `| Phase ${phase} P${plan} | ${duration} | ${tasks || '-'} tasks | ${files || '-'} files |`;\r\n\r\n if (tableBody.trim() === '' || tableBody.includes('None yet')) {\r\n tableBody = newRow;\r\n } else {\r\n tableBody = tableBody + '\\n' + newRow;\r\n }\r\n\r\n content = content.replace(metricsPattern, (_match, header: string) => `${header}${tableBody}\\n`);\r\n fs.writeFileSync(statePath, content, 'utf-8');\r\n output({ recorded: true, phase, plan, duration }, raw, 'true');\r\n } else {\r\n output({ recorded: false, reason: 'Performance Metrics section not found in STATE.md' }, raw, 'false');\r\n }\r\n}\r\n\r\nexport function cmdStateUpdateProgress(cwd: string, raw: boolean): void {\r\n const statePath = statePathUtil(cwd);\r\n if (!fs.existsSync(statePath)) { output({ error: 'STATE.md not found' }, raw); return; }\r\n\r\n let content = fs.readFileSync(statePath, 'utf-8');\r\n\r\n const phasesDir = phasesPath(cwd);\r\n let totalPlans = 0;\r\n let totalSummaries = 0;\r\n\r\n if (fs.existsSync(phasesDir)) {\r\n const phaseDirs = fs.readdirSync(phasesDir, { withFileTypes: true })\r\n .filter(e => e.isDirectory()).map(e => e.name);\r\n for (const dir of phaseDirs) {\r\n const files = fs.readdirSync(path.join(phasesDir, dir));\r\n totalPlans += files.filter(f => isPlanFile(f)).length;\r\n totalSummaries += files.filter(f => isSummaryFile(f)).length;\r\n }\r\n }\r\n\r\n const percent = totalPlans > 0 ? Math.min(100, Math.round(totalSummaries / totalPlans * 100)) : 0;\r\n const barWidth = 10;\r\n const filled = Math.round(percent / 100 * barWidth);\r\n const bar = '\\u2588'.repeat(filled) + '\\u2591'.repeat(barWidth - filled);\r\n const progressStr = `[${bar}] ${percent}%`;\r\n\r\n const progressPattern = /(\\*\\*Progress:\\*\\*\\s*).*/i;\r\n if (progressPattern.test(content)) {\r\n content = content.replace(progressPattern, (_match, prefix: string) => `${prefix}${progressStr}`);\r\n fs.writeFileSync(statePath, content, 'utf-8');\r\n output({ updated: true, percent, completed: totalSummaries, total: totalPlans, bar: progressStr }, raw, progressStr);\r\n } else {\r\n output({ updated: false, reason: 'Progress field not found in STATE.md' }, raw, 'false');\r\n }\r\n}\r\n\r\nexport function cmdStateAddDecision(cwd: string, options: StateDecisionOptions, raw: boolean): void {\r\n const statePath = statePathUtil(cwd);\r\n if (!fs.existsSync(statePath)) { output({ error: 'STATE.md not found' }, raw); return; }\r\n\r\n const { phase, summary, summary_file, rationale, rationale_file } = options;\r\n let summaryText: string | undefined;\r\n let rationaleText = '';\r\n\r\n try {\r\n summaryText = readTextArgOrFile(cwd, summary, summary_file, 'summary');\r\n rationaleText = readTextArgOrFile(cwd, rationale || '', rationale_file, 'rationale') || '';\r\n } catch (thrown: unknown) {\r\n const e = thrown as Error;\r\n output({ added: false, reason: e.message }, raw, 'false');\r\n return;\r\n }\r\n\r\n if (!summaryText) { output({ error: 'summary required' }, raw); return; }\r\n\r\n const content = fs.readFileSync(statePath, 'utf-8');\r\n const entry = `- [Phase ${phase || '?'}]: ${summaryText}${rationaleText ? ` — ${rationaleText}` : ''}`;\r\n\r\n const sectionPattern = /(###?\\s*(?:Decisions|Decisions Made|Accumulated.*Decisions)\\s*\\n)([\\s\\S]*?)(?=\\n###?|\\n##[^#]|$)/i;\r\n const updated = appendToStateSection(content, sectionPattern, entry, [/None yet\\.?\\s*\\n?/gi, /No decisions yet\\.?\\s*\\n?/gi]);\r\n\r\n if (updated) {\r\n fs.writeFileSync(statePath, updated, 'utf-8');\r\n output({ added: true, decision: entry }, raw, 'true');\r\n } else {\r\n output({ added: false, reason: 'Decisions section not found in STATE.md' }, raw, 'false');\r\n }\r\n}\r\n\r\nexport function cmdStateAddBlocker(cwd: string, text: string | StateBlockerOptions, raw: boolean): void {\r\n const statePath = statePathUtil(cwd);\r\n if (!fs.existsSync(statePath)) { output({ error: 'STATE.md not found' }, raw); return; }\r\n const blockerOptions: StateBlockerOptions = typeof text === 'object' && text !== null ? text : { text: text as string };\r\n let blockerText: string | undefined;\r\n\r\n try {\r\n blockerText = readTextArgOrFile(cwd, blockerOptions.text, blockerOptions.text_file, 'blocker');\r\n } catch (thrown: unknown) {\r\n const e = thrown as Error;\r\n output({ added: false, reason: e.message }, raw, 'false');\r\n return;\r\n }\r\n\r\n if (!blockerText) { output({ error: 'text required' }, raw); return; }\r\n\r\n const content = fs.readFileSync(statePath, 'utf-8');\r\n const entry = `- ${blockerText}`;\r\n\r\n const sectionPattern = /(###?\\s*(?:Blockers|Blockers\\/Concerns|Concerns)\\s*\\n)([\\s\\S]*?)(?=\\n###?|\\n##[^#]|$)/i;\r\n const updated = appendToStateSection(content, sectionPattern, entry, [/None\\.?\\s*\\n?/gi, /None yet\\.?\\s*\\n?/gi]);\r\n\r\n if (updated) {\r\n fs.writeFileSync(statePath, updated, 'utf-8');\r\n output({ added: true, blocker: blockerText }, raw, 'true');\r\n } else {\r\n output({ added: false, reason: 'Blockers section not found in STATE.md' }, raw, 'false');\r\n }\r\n}\r\n\r\nexport function cmdStateResolveBlocker(cwd: string, text: string | null, raw: boolean): void {\r\n const statePath = statePathUtil(cwd);\r\n if (!fs.existsSync(statePath)) { output({ error: 'STATE.md not found' }, raw); return; }\r\n if (!text) { output({ error: 'text required' }, raw); return; }\r\n\r\n let content = fs.readFileSync(statePath, 'utf-8');\r\n\r\n const sectionPattern = /(###?\\s*(?:Blockers|Blockers\\/Concerns|Concerns)\\s*\\n)([\\s\\S]*?)(?=\\n###?|\\n##[^#]|$)/i;\r\n const match = content.match(sectionPattern);\r\n\r\n if (match) {\r\n const sectionBody = match[2];\r\n const lines = sectionBody.split('\\n');\r\n const filtered = lines.filter(line => {\r\n if (!line.startsWith('- ')) return true;\r\n return !line.toLowerCase().includes(text.toLowerCase());\r\n });\r\n\r\n let newBody = filtered.join('\\n');\r\n if (!newBody.trim() || !newBody.includes('- ')) {\r\n newBody = 'None\\n';\r\n }\r\n\r\n content = content.replace(sectionPattern, (_match, header: string) => `${header}${newBody}`);\r\n fs.writeFileSync(statePath, content, 'utf-8');\r\n output({ resolved: true, blocker: text }, raw, 'true');\r\n } else {\r\n output({ resolved: false, reason: 'Blockers section not found in STATE.md' }, raw, 'false');\r\n }\r\n}\r\n\r\nexport function cmdStateRecordSession(cwd: string, options: StateSessionOptions, raw: boolean): void {\r\n const statePath = statePathUtil(cwd);\r\n if (!fs.existsSync(statePath)) { output({ error: 'STATE.md not found' }, raw); return; }\r\n\r\n let content = fs.readFileSync(statePath, 'utf-8');\r\n const now = new Date().toISOString();\r\n const updated: string[] = [];\r\n\r\n let result = stateReplaceField(content, 'Last session', now);\r\n if (result) { content = result; updated.push('Last session'); }\r\n result = stateReplaceField(content, 'Last Date', now);\r\n if (result) { content = result; updated.push('Last Date'); }\r\n\r\n if (options.stopped_at) {\r\n result = stateReplaceField(content, 'Stopped At', options.stopped_at);\r\n if (!result) result = stateReplaceField(content, 'Stopped at', options.stopped_at);\r\n if (result) { content = result; updated.push('Stopped At'); }\r\n }\r\n\r\n const resumeFile = options.resume_file || 'None';\r\n result = stateReplaceField(content, 'Resume File', resumeFile);\r\n if (!result) result = stateReplaceField(content, 'Resume file', resumeFile);\r\n if (result) { content = result; updated.push('Resume File'); }\r\n\r\n if (updated.length > 0) {\r\n fs.writeFileSync(statePath, content, 'utf-8');\r\n output({ recorded: true, updated }, raw, 'true');\r\n } else {\r\n output({ recorded: false, reason: 'No session fields found in STATE.md' }, raw, 'false');\r\n }\r\n}\r\n\r\nexport function cmdStateSnapshot(cwd: string, raw: boolean): void {\r\n const statePath = statePathUtil(cwd);\r\n\r\n if (!fs.existsSync(statePath)) {\r\n output({ error: 'STATE.md not found' }, raw);\r\n return;\r\n }\r\n\r\n const content = fs.readFileSync(statePath, 'utf-8');\r\n\r\n const extractField = (fieldName: string): string | null => {\r\n const pattern = new RegExp(`\\\\*\\\\*${fieldName}:\\\\*\\\\*\\\\s*(.+)`, 'i');\r\n const match = content.match(pattern);\r\n return match ? match[1].trim() : null;\r\n };\r\n\r\n const currentPhase = extractField('Current Phase');\r\n const currentPhaseName = extractField('Current Phase Name');\r\n const totalPhasesRaw = extractField('Total Phases');\r\n const currentPlan = extractField('Current Plan');\r\n const totalPlansRaw = extractField('Total Plans in Phase');\r\n const status = extractField('Status');\r\n const progressRaw = extractField('Progress');\r\n const lastActivity = extractField('Last Activity');\r\n const lastActivityDesc = extractField('Last Activity Description');\r\n const pausedAt = extractField('Paused At');\r\n\r\n const totalPhases = totalPhasesRaw ? parseInt(totalPhasesRaw, 10) : null;\r\n const totalPlansInPhase = totalPlansRaw ? parseInt(totalPlansRaw, 10) : null;\r\n const progressPercent = progressRaw ? parseInt(progressRaw.replace('%', ''), 10) : null;\r\n\r\n const decisions: Decision[] = [];\r\n const decisionsMatch = content.match(/##\\s*Decisions Made[\\s\\S]*?\\n\\|[^\\n]+\\n\\|[-|\\s]+\\n([\\s\\S]*?)(?=\\n##|\\n$|$)/i);\r\n if (decisionsMatch) {\r\n const tableBody = decisionsMatch[1];\r\n const rows = tableBody.trim().split('\\n').filter(r => r.includes('|'));\r\n for (const row of rows) {\r\n const cells = row.split('|').map(c => c.trim()).filter(Boolean);\r\n if (cells.length >= 3) {\r\n decisions.push({\r\n phase: cells[0],\r\n summary: cells[1],\r\n rationale: cells[2],\r\n });\r\n }\r\n }\r\n }\r\n\r\n const blockers: string[] = [];\r\n const blockersMatch = content.match(/##\\s*Blockers\\s*\\n([\\s\\S]*?)(?=\\n##|$)/i);\r\n if (blockersMatch) {\r\n const blockersSection = blockersMatch[1];\r\n const items = blockersSection.match(/^-\\s+(.+)$/gm) || [];\r\n for (const item of items) {\r\n blockers.push(item.replace(/^-\\s+/, '').trim());\r\n }\r\n }\r\n\r\n const session: StateSnapshot['session'] = {\r\n last_date: null,\r\n stopped_at: null,\r\n resume_file: null,\r\n };\r\n\r\n const sessionMatch = content.match(/##\\s*Session\\s*\\n([\\s\\S]*?)(?=\\n##|$)/i);\r\n if (sessionMatch) {\r\n const sessionSection = sessionMatch[1];\r\n const lastDateMatch = sessionSection.match(/\\*\\*Last Date:\\*\\*\\s*(.+)/i);\r\n const stoppedAtMatch = sessionSection.match(/\\*\\*Stopped At:\\*\\*\\s*(.+)/i);\r\n const resumeFileMatch = sessionSection.match(/\\*\\*Resume File:\\*\\*\\s*(.+)/i);\r\n\r\n if (lastDateMatch) session.last_date = lastDateMatch[1].trim();\r\n if (stoppedAtMatch) session.stopped_at = stoppedAtMatch[1].trim();\r\n if (resumeFileMatch) session.resume_file = resumeFileMatch[1].trim();\r\n }\r\n\r\n const snapshot: StateSnapshot = {\r\n current_phase: currentPhase,\r\n current_phase_name: currentPhaseName,\r\n total_phases: totalPhases,\r\n current_plan: currentPlan,\r\n total_plans_in_phase: totalPlansInPhase,\r\n status,\r\n progress_percent: progressPercent,\r\n last_activity: lastActivity,\r\n last_activity_desc: lastActivityDesc,\r\n decisions,\r\n blockers,\r\n paused_at: pausedAt,\r\n session,\r\n };\r\n\r\n output(snapshot, raw);\r\n}\r\n","/**\r\n * Roadmap — Roadmap parsing and update operations\r\n *\r\n * Ported from maxsim/bin/lib/roadmap.cjs\r\n */\r\n\r\nimport fs from 'node:fs';\r\nimport path from 'node:path';\r\n\r\nimport { normalizePhaseName, getPhasePattern, output, error, rethrowCliSignals, findPhaseInternal, roadmapPath, phasesPath, listSubDirs, isPlanFile, isSummaryFile, debugLog, todayISO } from './core.js';\r\nimport type {\r\n PhaseStatus,\r\n RoadmapPhase,\r\n RoadmapMilestone,\r\n RoadmapAnalysis,\r\n RoadmapGetPhaseResult,\r\n} from './types.js';\r\n\r\n// ─── Roadmap commands ────────────────────────────────────────────────────────\r\n\r\nexport function cmdRoadmapGetPhase(cwd: string, phaseNum: string, raw: boolean): void {\r\n const rmPath = roadmapPath(cwd);\r\n\r\n if (!fs.existsSync(rmPath)) {\r\n output({ found: false, error: 'ROADMAP.md not found' }, raw, '');\r\n return;\r\n }\r\n\r\n try {\r\n const content = fs.readFileSync(rmPath, 'utf-8');\r\n\r\n const escapedPhase = phaseNum.replace(/\\./g, '\\\\.');\r\n\r\n const phasePattern = getPhasePattern(escapedPhase, 'i');\r\n const headerMatch = content.match(phasePattern);\r\n\r\n if (!headerMatch) {\r\n const checklistPattern = new RegExp(\r\n `-\\\\s*\\\\[[ x]\\\\]\\\\s*\\\\*\\\\*Phase\\\\s+${escapedPhase}:\\\\s*([^*]+)\\\\*\\\\*`,\r\n 'i'\r\n );\r\n const checklistMatch = content.match(checklistPattern);\r\n\r\n if (checklistMatch) {\r\n output({\r\n found: false,\r\n phase_number: phaseNum,\r\n phase_name: checklistMatch[1].trim(),\r\n error: 'malformed_roadmap',\r\n message: `Phase ${phaseNum} exists in summary list but missing \"### Phase ${phaseNum}:\" detail section. ROADMAP.md needs both formats.`\r\n }, raw, '');\r\n return;\r\n }\r\n\r\n output({ found: false, phase_number: phaseNum }, raw, '');\r\n return;\r\n }\r\n\r\n const phaseName = headerMatch[1].trim();\r\n const headerIndex = headerMatch.index!;\r\n\r\n const restOfContent = content.slice(headerIndex);\r\n const nextHeaderMatch = restOfContent.match(/\\n#{2,4}\\s+Phase\\s+\\d/i);\r\n const sectionEnd = nextHeaderMatch\r\n ? headerIndex + nextHeaderMatch.index!\r\n : content.length;\r\n\r\n const section = content.slice(headerIndex, sectionEnd).trim();\r\n\r\n const goalMatch = section.match(/\\*\\*Goal(?::\\*\\*|\\*\\*:)\\s*([^\\n]+)/i);\r\n const goal = goalMatch ? goalMatch[1].trim() : null;\r\n\r\n const criteriaMatch = section.match(/\\*\\*Success Criteria\\*\\*[^\\n]*:\\s*\\n((?:\\s*\\d+\\.\\s*[^\\n]+\\n?)+)/i);\r\n const success_criteria = criteriaMatch\r\n ? criteriaMatch[1].trim().split('\\n').map(line => line.replace(/^\\s*\\d+\\.\\s*/, '').trim()).filter(Boolean)\r\n : [];\r\n\r\n output(\r\n {\r\n found: true,\r\n phase_number: phaseNum,\r\n phase_name: phaseName,\r\n goal,\r\n success_criteria,\r\n section,\r\n },\r\n raw,\r\n section\r\n );\r\n } catch (e: unknown) {\r\n rethrowCliSignals(e);\r\n error('Failed to read ROADMAP.md: ' + (e as Error).message);\r\n }\r\n}\r\n\r\nexport function cmdRoadmapAnalyze(cwd: string, raw: boolean): void {\r\n const rmPath = roadmapPath(cwd);\r\n\r\n if (!fs.existsSync(rmPath)) {\r\n output({ error: 'ROADMAP.md not found', milestones: [], phases: [], current_phase: null }, raw);\r\n return;\r\n }\r\n\r\n const content = fs.readFileSync(rmPath, 'utf-8');\r\n const phasesDir = phasesPath(cwd);\r\n\r\n const phasePattern = getPhasePattern();\r\n const phases: RoadmapPhase[] = [];\r\n let match: RegExpExecArray | null;\r\n\r\n while ((match = phasePattern.exec(content)) !== null) {\r\n const phaseNum = match[1];\r\n const phaseName = match[2].replace(/\\(INSERTED\\)/i, '').trim();\r\n\r\n const sectionStart = match.index;\r\n const restOfContent = content.slice(sectionStart);\r\n const nextHeader = restOfContent.match(/\\n#{2,4}\\s+Phase\\s+\\d/i);\r\n const sectionEnd = nextHeader ? sectionStart + nextHeader.index! : content.length;\r\n const section = content.slice(sectionStart, sectionEnd);\r\n\r\n const goalMatch = section.match(/\\*\\*Goal(?::\\*\\*|\\*\\*:)\\s*([^\\n]+)/i);\r\n const goal = goalMatch ? goalMatch[1].trim() : null;\r\n\r\n const dependsMatch = section.match(/\\*\\*Depends on:\\*\\*\\s*([^\\n]+)/i);\r\n const depends_on = dependsMatch ? dependsMatch[1].trim() : null;\r\n\r\n const normalized = normalizePhaseName(phaseNum);\r\n let diskStatus: PhaseStatus = 'no_directory';\r\n let planCount = 0;\r\n let summaryCount = 0;\r\n let hasContext = false;\r\n let hasResearch = false;\r\n\r\n try {\r\n const dirs = listSubDirs(phasesDir);\r\n const dirMatch = dirs.find(d => d.startsWith(normalized + '-') || d === normalized);\r\n\r\n if (dirMatch) {\r\n const phaseFiles = fs.readdirSync(path.join(phasesDir, dirMatch));\r\n planCount = phaseFiles.filter(f => isPlanFile(f)).length;\r\n summaryCount = phaseFiles.filter(f => isSummaryFile(f)).length;\r\n hasContext = phaseFiles.some(f => f.endsWith('-CONTEXT.md') || f === 'CONTEXT.md');\r\n hasResearch = phaseFiles.some(f => f.endsWith('-RESEARCH.md') || f === 'RESEARCH.md');\r\n\r\n if (summaryCount >= planCount && planCount > 0) diskStatus = 'complete';\r\n else if (summaryCount > 0) diskStatus = 'partial';\r\n else if (planCount > 0) diskStatus = 'planned';\r\n else if (hasResearch) diskStatus = 'researched';\r\n else if (hasContext) diskStatus = 'discussed';\r\n else diskStatus = 'empty';\r\n }\r\n } catch (e) {\r\n /* optional op, ignore */\r\n debugLog(e);\r\n }\r\n\r\n const checkboxPattern = new RegExp(`-\\\\s*\\\\[(x| )\\\\]\\\\s*.*Phase\\\\s+${phaseNum.replace('.', '\\\\.')}`, 'i');\r\n const checkboxMatch = content.match(checkboxPattern);\r\n const roadmapComplete = checkboxMatch ? checkboxMatch[1] === 'x' : false;\r\n\r\n phases.push({\r\n number: phaseNum,\r\n name: phaseName,\r\n goal,\r\n depends_on,\r\n plan_count: planCount,\r\n summary_count: summaryCount,\r\n has_context: hasContext,\r\n has_research: hasResearch,\r\n disk_status: diskStatus,\r\n roadmap_complete: roadmapComplete,\r\n });\r\n }\r\n\r\n const milestones: RoadmapMilestone[] = [];\r\n const milestonePattern = /##\\s*(.*v(\\d+\\.\\d+)[^(\\n]*)/gi;\r\n let mMatch: RegExpExecArray | null;\r\n while ((mMatch = milestonePattern.exec(content)) !== null) {\r\n milestones.push({\r\n heading: mMatch[1].trim(),\r\n version: 'v' + mMatch[2],\r\n });\r\n }\r\n\r\n const currentPhase = phases.find(p => p.disk_status === 'planned' || p.disk_status === 'partial') || null;\r\n const nextPhase = phases.find(p => p.disk_status === 'empty' || p.disk_status === 'no_directory' || p.disk_status === 'discussed' || p.disk_status === 'researched') || null;\r\n\r\n const totalPlans = phases.reduce((sum, p) => sum + p.plan_count, 0);\r\n const totalSummaries = phases.reduce((sum, p) => sum + p.summary_count, 0);\r\n const completedPhases = phases.filter(p => p.disk_status === 'complete').length;\r\n\r\n const checklistPattern = /-\\s*\\[[ x]\\]\\s*\\*\\*Phase\\s+(\\d+[A-Z]?(?:\\.\\d+)?)/gi;\r\n const checklistPhases = new Set();\r\n let checklistMatch: RegExpExecArray | null;\r\n while ((checklistMatch = checklistPattern.exec(content)) !== null) {\r\n checklistPhases.add(checklistMatch[1]);\r\n }\r\n const detailPhases = new Set(phases.map(p => p.number));\r\n const missingDetails = [...checklistPhases].filter(p => !detailPhases.has(p));\r\n\r\n const result: RoadmapAnalysis = {\r\n milestones,\r\n phases,\r\n phase_count: phases.length,\r\n completed_phases: completedPhases,\r\n total_plans: totalPlans,\r\n total_summaries: totalSummaries,\r\n progress_percent: totalPlans > 0 ? Math.min(100, Math.round((totalSummaries / totalPlans) * 100)) : 0,\r\n current_phase: currentPhase ? currentPhase.number : null,\r\n next_phase: nextPhase ? nextPhase.number : null,\r\n missing_phase_details: missingDetails.length > 0 ? missingDetails : null,\r\n };\r\n\r\n output(result, raw);\r\n}\r\n\r\nexport function cmdRoadmapUpdatePlanProgress(cwd: string, phaseNum: string, raw: boolean): void {\r\n if (!phaseNum) {\r\n error('phase number required for roadmap update-plan-progress');\r\n }\r\n\r\n const rmPath = roadmapPath(cwd);\r\n\r\n const phaseInfo = findPhaseInternal(cwd, phaseNum);\r\n if (!phaseInfo) {\r\n error(`Phase ${phaseNum} not found`);\r\n }\r\n\r\n const planCount = phaseInfo.plans.length;\r\n const summaryCount = phaseInfo.summaries.length;\r\n\r\n if (planCount === 0) {\r\n output({ updated: false, reason: 'No plans found', plan_count: 0, summary_count: 0 }, raw, 'no plans');\r\n return;\r\n }\r\n\r\n const isComplete = summaryCount >= planCount;\r\n const status = isComplete ? 'Complete' : summaryCount > 0 ? 'In Progress' : 'Planned';\r\n const today = todayISO();\r\n\r\n if (!fs.existsSync(rmPath)) {\r\n output({ updated: false, reason: 'ROADMAP.md not found', plan_count: planCount, summary_count: summaryCount }, raw, 'no roadmap');\r\n return;\r\n }\r\n\r\n let roadmapContent = fs.readFileSync(rmPath, 'utf-8');\r\n const phaseEscaped = phaseNum.replace('.', '\\\\.');\r\n\r\n const tablePattern = new RegExp(\r\n `(\\\\|\\\\s*${phaseEscaped}\\\\.?\\\\s[^|]*\\\\|)[^|]*(\\\\|)\\\\s*[^|]*(\\\\|)\\\\s*[^|]*(\\\\|)`,\r\n 'i'\r\n );\r\n const dateField = isComplete ? ` ${today} ` : ' ';\r\n roadmapContent = roadmapContent.replace(\r\n tablePattern,\r\n `$1 ${summaryCount}/${planCount} $2 ${status.padEnd(11)}$3${dateField}$4`\r\n );\r\n\r\n const planCountPattern = new RegExp(\r\n `(#{2,4}\\\\s*Phase\\\\s+${phaseEscaped}[\\\\s\\\\S]*?\\\\*\\\\*Plans:\\\\*\\\\*\\\\s*)[^\\\\n]+`,\r\n 'i'\r\n );\r\n const planCountText = isComplete\r\n ? `${summaryCount}/${planCount} plans complete`\r\n : `${summaryCount}/${planCount} plans executed`;\r\n roadmapContent = roadmapContent.replace(planCountPattern, `$1${planCountText}`);\r\n\r\n if (isComplete) {\r\n const checkboxPattern = new RegExp(\r\n `(-\\\\s*\\\\[)[ ](\\\\]\\\\s*.*Phase\\\\s+${phaseEscaped}[:\\\\s][^\\\\n]*)`,\r\n 'i'\r\n );\r\n roadmapContent = roadmapContent.replace(checkboxPattern, `$1x$2 (completed ${today})`);\r\n }\r\n\r\n fs.writeFileSync(rmPath, roadmapContent, 'utf-8');\r\n\r\n output({\r\n updated: true,\r\n phase: phaseNum,\r\n plan_count: planCount,\r\n summary_count: summaryCount,\r\n status,\r\n complete: isComplete,\r\n }, raw, `${summaryCount}/${planCount} ${status}`);\r\n}\r\n","/**\r\n * Milestone — Milestone and requirements lifecycle operations\r\n *\r\n * Ported from maxsim/bin/lib/milestone.cjs\r\n */\r\n\r\nimport fs from 'node:fs';\r\nimport path from 'node:path';\r\n\r\nimport { output, error, planningPath, roadmapPath as roadmapPathUtil, statePath as statePathUtil, phasesPath, todayISO, listSubDirs, isPlanFile, isSummaryFile, debugLog } from './core.js';\r\nimport { extractFrontmatter } from './frontmatter.js';\r\nimport type {\r\n MilestoneCompleteOptions,\r\n MilestoneResult,\r\n ArchiveResult,\r\n} from './types.js';\r\n\r\n// ─── Requirements commands ───────────────────────────────────────────────────\r\n\r\nexport function cmdRequirementsMarkComplete(cwd: string, reqIdsRaw: string[], raw: boolean): void {\r\n if (!reqIdsRaw || reqIdsRaw.length === 0) {\r\n error('requirement IDs required. Usage: requirements mark-complete REQ-01,REQ-02 or REQ-01 REQ-02');\r\n }\r\n\r\n const reqIds = reqIdsRaw\r\n .join(' ')\r\n .replace(/[\\[\\]]/g, '')\r\n .split(/[,\\s]+/)\r\n .map(r => r.trim())\r\n .filter(Boolean);\r\n\r\n if (reqIds.length === 0) {\r\n error('no valid requirement IDs found');\r\n }\r\n\r\n const reqPath = planningPath(cwd, 'REQUIREMENTS.md');\r\n if (!fs.existsSync(reqPath)) {\r\n output({ updated: false, reason: 'REQUIREMENTS.md not found', ids: reqIds }, raw, 'no requirements file');\r\n return;\r\n }\r\n\r\n let reqContent = fs.readFileSync(reqPath, 'utf-8');\r\n const updated: string[] = [];\r\n const notFound: string[] = [];\r\n\r\n for (const reqId of reqIds) {\r\n let found = false;\r\n\r\n const checkboxPattern = new RegExp(`(-\\\\s*\\\\[)[ ](\\\\]\\\\s*\\\\*\\\\*${reqId}\\\\*\\\\*)`, 'gi');\r\n if (checkboxPattern.test(reqContent)) {\r\n reqContent = reqContent.replace(checkboxPattern, '$1x$2');\r\n found = true;\r\n }\r\n\r\n const tablePattern = new RegExp(`(\\\\|\\\\s*${reqId}\\\\s*\\\\|[^|]+\\\\|)\\\\s*Pending\\\\s*(\\\\|)`, 'gi');\r\n if (tablePattern.test(reqContent)) {\r\n reqContent = reqContent.replace(\r\n new RegExp(`(\\\\|\\\\s*${reqId}\\\\s*\\\\|[^|]+\\\\|)\\\\s*Pending\\\\s*(\\\\|)`, 'gi'),\r\n '$1 Complete $2'\r\n );\r\n found = true;\r\n }\r\n\r\n if (found) {\r\n updated.push(reqId);\r\n } else {\r\n notFound.push(reqId);\r\n }\r\n }\r\n\r\n if (updated.length > 0) {\r\n fs.writeFileSync(reqPath, reqContent, 'utf-8');\r\n }\r\n\r\n const result: ArchiveResult = {\r\n updated: updated.length > 0,\r\n marked_complete: updated,\r\n not_found: notFound,\r\n total: reqIds.length,\r\n };\r\n\r\n output(result, raw, `${updated.length}/${reqIds.length} requirements marked complete`);\r\n}\r\n\r\n// ─── Milestone commands ──────────────────────────────────────────────────────\r\n\r\nexport function cmdMilestoneComplete(\r\n cwd: string,\r\n version: string | undefined,\r\n options: MilestoneCompleteOptions,\r\n raw: boolean,\r\n): void {\r\n if (!version) {\r\n error('version required for milestone complete (e.g., v1.0)');\r\n }\r\n\r\n const roadmapPath = roadmapPathUtil(cwd);\r\n const reqPath = planningPath(cwd, 'REQUIREMENTS.md');\r\n const statePath = statePathUtil(cwd);\r\n const milestonesPath = planningPath(cwd, 'MILESTONES.md');\r\n const archiveDir = planningPath(cwd, 'milestones');\r\n const phasesDir = phasesPath(cwd);\r\n const today = todayISO();\r\n const milestoneName = options.name || version;\r\n\r\n fs.mkdirSync(archiveDir, { recursive: true });\r\n\r\n let phaseCount = 0;\r\n let totalPlans = 0;\r\n let totalTasks = 0;\r\n const accomplishments: string[] = [];\r\n\r\n try {\r\n const dirs = listSubDirs(phasesDir, true);\r\n\r\n for (const dir of dirs) {\r\n phaseCount++;\r\n const phaseFiles = fs.readdirSync(path.join(phasesDir, dir));\r\n const plans = phaseFiles.filter(isPlanFile);\r\n const summaries = phaseFiles.filter(isSummaryFile);\r\n totalPlans += plans.length;\r\n\r\n for (const s of summaries) {\r\n try {\r\n const content = fs.readFileSync(path.join(phasesDir, dir, s), 'utf-8');\r\n const fm = extractFrontmatter(content);\r\n if (fm['one-liner']) {\r\n accomplishments.push(String(fm['one-liner']));\r\n }\r\n const taskMatches = content.match(/##\\s*Task\\s*\\d+/gi) || [];\r\n totalTasks += taskMatches.length;\r\n } catch (e) {\r\n /* optional op, ignore */\r\n debugLog(e);\r\n }\r\n }\r\n }\r\n } catch (e) {\r\n /* optional op, ignore */\r\n debugLog(e);\r\n }\r\n\r\n // Archive ROADMAP.md\r\n if (fs.existsSync(roadmapPath)) {\r\n const roadmapContent = fs.readFileSync(roadmapPath, 'utf-8');\r\n fs.writeFileSync(path.join(archiveDir, `${version}-ROADMAP.md`), roadmapContent, 'utf-8');\r\n }\r\n\r\n // Archive REQUIREMENTS.md\r\n if (fs.existsSync(reqPath)) {\r\n const reqContent = fs.readFileSync(reqPath, 'utf-8');\r\n const archiveHeader = `# Requirements Archive: ${version} ${milestoneName}\\n\\n**Archived:** ${today}\\n**Status:** SHIPPED\\n\\nFor current requirements, see \\`.planning/REQUIREMENTS.md\\`.\\n\\n---\\n\\n`;\r\n fs.writeFileSync(path.join(archiveDir, `${version}-REQUIREMENTS.md`), archiveHeader + reqContent, 'utf-8');\r\n }\r\n\r\n // Archive audit file if exists\r\n const auditFile = path.join(cwd, '.planning', `${version}-MILESTONE-AUDIT.md`);\r\n if (fs.existsSync(auditFile)) {\r\n fs.renameSync(auditFile, path.join(archiveDir, `${version}-MILESTONE-AUDIT.md`));\r\n }\r\n\r\n // Create/append MILESTONES.md entry\r\n const accomplishmentsList = accomplishments.map(a => `- ${a}`).join('\\n');\r\n const milestoneEntry = `## ${version} ${milestoneName} (Shipped: ${today})\\n\\n**Phases completed:** ${phaseCount} phases, ${totalPlans} plans, ${totalTasks} tasks\\n\\n**Key accomplishments:**\\n${accomplishmentsList || '- (none recorded)'}\\n\\n---\\n\\n`;\r\n\r\n if (fs.existsSync(milestonesPath)) {\r\n const existing = fs.readFileSync(milestonesPath, 'utf-8');\r\n fs.writeFileSync(milestonesPath, existing + '\\n' + milestoneEntry, 'utf-8');\r\n } else {\r\n fs.writeFileSync(milestonesPath, `# Milestones\\n\\n${milestoneEntry}`, 'utf-8');\r\n }\r\n\r\n // Update STATE.md\r\n if (fs.existsSync(statePath)) {\r\n let stateContent = fs.readFileSync(statePath, 'utf-8');\r\n stateContent = stateContent.replace(\r\n /(\\*\\*Status:\\*\\*\\s*).*/,\r\n `$1${version} milestone complete`\r\n );\r\n stateContent = stateContent.replace(\r\n /(\\*\\*Last Activity:\\*\\*\\s*).*/,\r\n `$1${today}`\r\n );\r\n stateContent = stateContent.replace(\r\n /(\\*\\*Last Activity Description:\\*\\*\\s*).*/,\r\n `$1${version} milestone completed and archived`\r\n );\r\n fs.writeFileSync(statePath, stateContent, 'utf-8');\r\n }\r\n\r\n // Archive phase directories if requested\r\n let phasesArchived = false;\r\n if (options.archivePhases) {\r\n try {\r\n const phaseArchiveDir = path.join(archiveDir, `${version}-phases`);\r\n fs.mkdirSync(phaseArchiveDir, { recursive: true });\r\n\r\n const phaseDirNames = listSubDirs(phasesDir);\r\n for (const dir of phaseDirNames) {\r\n fs.renameSync(path.join(phasesDir, dir), path.join(phaseArchiveDir, dir));\r\n }\r\n phasesArchived = phaseDirNames.length > 0;\r\n } catch (e) {\r\n /* optional op, ignore */\r\n debugLog(e);\r\n }\r\n }\r\n\r\n const result: MilestoneResult = {\r\n version,\r\n name: milestoneName,\r\n date: today,\r\n phases: phaseCount,\r\n plans: totalPlans,\r\n tasks: totalTasks,\r\n accomplishments,\r\n archived: {\r\n roadmap: fs.existsSync(path.join(archiveDir, `${version}-ROADMAP.md`)),\r\n requirements: fs.existsSync(path.join(archiveDir, `${version}-REQUIREMENTS.md`)),\r\n audit: fs.existsSync(path.join(archiveDir, `${version}-MILESTONE-AUDIT.md`)),\r\n phases: phasesArchived,\r\n },\r\n milestones_updated: true,\r\n state_updated: fs.existsSync(statePath),\r\n };\r\n\r\n output(result, raw);\r\n}\r\n","const ANSI_BACKGROUND_OFFSET = 10;\n\nconst wrapAnsi16 = (offset = 0) => code => `\\u001B[${code + offset}m`;\n\nconst wrapAnsi256 = (offset = 0) => code => `\\u001B[${38 + offset};5;${code}m`;\n\nconst wrapAnsi16m = (offset = 0) => (red, green, blue) => `\\u001B[${38 + offset};2;${red};${green};${blue}m`;\n\nconst styles = {\n\tmodifier: {\n\t\treset: [0, 0],\n\t\t// 21 isn't widely supported and 22 does the same thing\n\t\tbold: [1, 22],\n\t\tdim: [2, 22],\n\t\titalic: [3, 23],\n\t\tunderline: [4, 24],\n\t\toverline: [53, 55],\n\t\tinverse: [7, 27],\n\t\thidden: [8, 28],\n\t\tstrikethrough: [9, 29],\n\t},\n\tcolor: {\n\t\tblack: [30, 39],\n\t\tred: [31, 39],\n\t\tgreen: [32, 39],\n\t\tyellow: [33, 39],\n\t\tblue: [34, 39],\n\t\tmagenta: [35, 39],\n\t\tcyan: [36, 39],\n\t\twhite: [37, 39],\n\n\t\t// Bright color\n\t\tblackBright: [90, 39],\n\t\tgray: [90, 39], // Alias of `blackBright`\n\t\tgrey: [90, 39], // Alias of `blackBright`\n\t\tredBright: [91, 39],\n\t\tgreenBright: [92, 39],\n\t\tyellowBright: [93, 39],\n\t\tblueBright: [94, 39],\n\t\tmagentaBright: [95, 39],\n\t\tcyanBright: [96, 39],\n\t\twhiteBright: [97, 39],\n\t},\n\tbgColor: {\n\t\tbgBlack: [40, 49],\n\t\tbgRed: [41, 49],\n\t\tbgGreen: [42, 49],\n\t\tbgYellow: [43, 49],\n\t\tbgBlue: [44, 49],\n\t\tbgMagenta: [45, 49],\n\t\tbgCyan: [46, 49],\n\t\tbgWhite: [47, 49],\n\n\t\t// Bright color\n\t\tbgBlackBright: [100, 49],\n\t\tbgGray: [100, 49], // Alias of `bgBlackBright`\n\t\tbgGrey: [100, 49], // Alias of `bgBlackBright`\n\t\tbgRedBright: [101, 49],\n\t\tbgGreenBright: [102, 49],\n\t\tbgYellowBright: [103, 49],\n\t\tbgBlueBright: [104, 49],\n\t\tbgMagentaBright: [105, 49],\n\t\tbgCyanBright: [106, 49],\n\t\tbgWhiteBright: [107, 49],\n\t},\n};\n\nexport const modifierNames = Object.keys(styles.modifier);\nexport const foregroundColorNames = Object.keys(styles.color);\nexport const backgroundColorNames = Object.keys(styles.bgColor);\nexport const colorNames = [...foregroundColorNames, ...backgroundColorNames];\n\nfunction assembleStyles() {\n\tconst codes = new Map();\n\n\tfor (const [groupName, group] of Object.entries(styles)) {\n\t\tfor (const [styleName, style] of Object.entries(group)) {\n\t\t\tstyles[styleName] = {\n\t\t\t\topen: `\\u001B[${style[0]}m`,\n\t\t\t\tclose: `\\u001B[${style[1]}m`,\n\t\t\t};\n\n\t\t\tgroup[styleName] = styles[styleName];\n\n\t\t\tcodes.set(style[0], style[1]);\n\t\t}\n\n\t\tObject.defineProperty(styles, groupName, {\n\t\t\tvalue: group,\n\t\t\tenumerable: false,\n\t\t});\n\t}\n\n\tObject.defineProperty(styles, 'codes', {\n\t\tvalue: codes,\n\t\tenumerable: false,\n\t});\n\n\tstyles.color.close = '\\u001B[39m';\n\tstyles.bgColor.close = '\\u001B[49m';\n\n\tstyles.color.ansi = wrapAnsi16();\n\tstyles.color.ansi256 = wrapAnsi256();\n\tstyles.color.ansi16m = wrapAnsi16m();\n\tstyles.bgColor.ansi = wrapAnsi16(ANSI_BACKGROUND_OFFSET);\n\tstyles.bgColor.ansi256 = wrapAnsi256(ANSI_BACKGROUND_OFFSET);\n\tstyles.bgColor.ansi16m = wrapAnsi16m(ANSI_BACKGROUND_OFFSET);\n\n\t// From https://github.com/Qix-/color-convert/blob/3f0e0d4e92e235796ccb17f6e85c72094a651f49/conversions.js\n\tObject.defineProperties(styles, {\n\t\trgbToAnsi256: {\n\t\t\tvalue(red, green, blue) {\n\t\t\t\t// We use the extended greyscale palette here, with the exception of\n\t\t\t\t// black and white. normal palette only has 4 greyscale shades.\n\t\t\t\tif (red === green && green === blue) {\n\t\t\t\t\tif (red < 8) {\n\t\t\t\t\t\treturn 16;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (red > 248) {\n\t\t\t\t\t\treturn 231;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn Math.round(((red - 8) / 247) * 24) + 232;\n\t\t\t\t}\n\n\t\t\t\treturn 16\n\t\t\t\t\t+ (36 * Math.round(red / 255 * 5))\n\t\t\t\t\t+ (6 * Math.round(green / 255 * 5))\n\t\t\t\t\t+ Math.round(blue / 255 * 5);\n\t\t\t},\n\t\t\tenumerable: false,\n\t\t},\n\t\thexToRgb: {\n\t\t\tvalue(hex) {\n\t\t\t\tconst matches = /[a-f\\d]{6}|[a-f\\d]{3}/i.exec(hex.toString(16));\n\t\t\t\tif (!matches) {\n\t\t\t\t\treturn [0, 0, 0];\n\t\t\t\t}\n\n\t\t\t\tlet [colorString] = matches;\n\n\t\t\t\tif (colorString.length === 3) {\n\t\t\t\t\tcolorString = [...colorString].map(character => character + character).join('');\n\t\t\t\t}\n\n\t\t\t\tconst integer = Number.parseInt(colorString, 16);\n\n\t\t\t\treturn [\n\t\t\t\t\t/* eslint-disable no-bitwise */\n\t\t\t\t\t(integer >> 16) & 0xFF,\n\t\t\t\t\t(integer >> 8) & 0xFF,\n\t\t\t\t\tinteger & 0xFF,\n\t\t\t\t\t/* eslint-enable no-bitwise */\n\t\t\t\t];\n\t\t\t},\n\t\t\tenumerable: false,\n\t\t},\n\t\thexToAnsi256: {\n\t\t\tvalue: hex => styles.rgbToAnsi256(...styles.hexToRgb(hex)),\n\t\t\tenumerable: false,\n\t\t},\n\t\tansi256ToAnsi: {\n\t\t\tvalue(code) {\n\t\t\t\tif (code < 8) {\n\t\t\t\t\treturn 30 + code;\n\t\t\t\t}\n\n\t\t\t\tif (code < 16) {\n\t\t\t\t\treturn 90 + (code - 8);\n\t\t\t\t}\n\n\t\t\t\tlet red;\n\t\t\t\tlet green;\n\t\t\t\tlet blue;\n\n\t\t\t\tif (code >= 232) {\n\t\t\t\t\tred = (((code - 232) * 10) + 8) / 255;\n\t\t\t\t\tgreen = red;\n\t\t\t\t\tblue = red;\n\t\t\t\t} else {\n\t\t\t\t\tcode -= 16;\n\n\t\t\t\t\tconst remainder = code % 36;\n\n\t\t\t\t\tred = Math.floor(code / 36) / 5;\n\t\t\t\t\tgreen = Math.floor(remainder / 6) / 5;\n\t\t\t\t\tblue = (remainder % 6) / 5;\n\t\t\t\t}\n\n\t\t\t\tconst value = Math.max(red, green, blue) * 2;\n\n\t\t\t\tif (value === 0) {\n\t\t\t\t\treturn 30;\n\t\t\t\t}\n\n\t\t\t\t// eslint-disable-next-line no-bitwise\n\t\t\t\tlet result = 30 + ((Math.round(blue) << 2) | (Math.round(green) << 1) | Math.round(red));\n\n\t\t\t\tif (value === 2) {\n\t\t\t\t\tresult += 60;\n\t\t\t\t}\n\n\t\t\t\treturn result;\n\t\t\t},\n\t\t\tenumerable: false,\n\t\t},\n\t\trgbToAnsi: {\n\t\t\tvalue: (red, green, blue) => styles.ansi256ToAnsi(styles.rgbToAnsi256(red, green, blue)),\n\t\t\tenumerable: false,\n\t\t},\n\t\thexToAnsi: {\n\t\t\tvalue: hex => styles.ansi256ToAnsi(styles.hexToAnsi256(hex)),\n\t\t\tenumerable: false,\n\t\t},\n\t});\n\n\treturn styles;\n}\n\nconst ansiStyles = assembleStyles();\n\nexport default ansiStyles;\n","import process from 'node:process';\nimport os from 'node:os';\nimport tty from 'node:tty';\n\n// From: https://github.com/sindresorhus/has-flag/blob/main/index.js\n/// function hasFlag(flag, argv = globalThis.Deno?.args ?? process.argv) {\nfunction hasFlag(flag, argv = globalThis.Deno ? globalThis.Deno.args : process.argv) {\n\tconst prefix = flag.startsWith('-') ? '' : (flag.length === 1 ? '-' : '--');\n\tconst position = argv.indexOf(prefix + flag);\n\tconst terminatorPosition = argv.indexOf('--');\n\treturn position !== -1 && (terminatorPosition === -1 || position < terminatorPosition);\n}\n\nconst {env} = process;\n\nlet flagForceColor;\nif (\n\thasFlag('no-color')\n\t|| hasFlag('no-colors')\n\t|| hasFlag('color=false')\n\t|| hasFlag('color=never')\n) {\n\tflagForceColor = 0;\n} else if (\n\thasFlag('color')\n\t|| hasFlag('colors')\n\t|| hasFlag('color=true')\n\t|| hasFlag('color=always')\n) {\n\tflagForceColor = 1;\n}\n\nfunction envForceColor() {\n\tif ('FORCE_COLOR' in env) {\n\t\tif (env.FORCE_COLOR === 'true') {\n\t\t\treturn 1;\n\t\t}\n\n\t\tif (env.FORCE_COLOR === 'false') {\n\t\t\treturn 0;\n\t\t}\n\n\t\treturn env.FORCE_COLOR.length === 0 ? 1 : Math.min(Number.parseInt(env.FORCE_COLOR, 10), 3);\n\t}\n}\n\nfunction translateLevel(level) {\n\tif (level === 0) {\n\t\treturn false;\n\t}\n\n\treturn {\n\t\tlevel,\n\t\thasBasic: true,\n\t\thas256: level >= 2,\n\t\thas16m: level >= 3,\n\t};\n}\n\nfunction _supportsColor(haveStream, {streamIsTTY, sniffFlags = true} = {}) {\n\tconst noFlagForceColor = envForceColor();\n\tif (noFlagForceColor !== undefined) {\n\t\tflagForceColor = noFlagForceColor;\n\t}\n\n\tconst forceColor = sniffFlags ? flagForceColor : noFlagForceColor;\n\n\tif (forceColor === 0) {\n\t\treturn 0;\n\t}\n\n\tif (sniffFlags) {\n\t\tif (hasFlag('color=16m')\n\t\t\t|| hasFlag('color=full')\n\t\t\t|| hasFlag('color=truecolor')) {\n\t\t\treturn 3;\n\t\t}\n\n\t\tif (hasFlag('color=256')) {\n\t\t\treturn 2;\n\t\t}\n\t}\n\n\t// Check for Azure DevOps pipelines.\n\t// Has to be above the `!streamIsTTY` check.\n\tif ('TF_BUILD' in env && 'AGENT_NAME' in env) {\n\t\treturn 1;\n\t}\n\n\tif (haveStream && !streamIsTTY && forceColor === undefined) {\n\t\treturn 0;\n\t}\n\n\tconst min = forceColor || 0;\n\n\tif (env.TERM === 'dumb') {\n\t\treturn min;\n\t}\n\n\tif (process.platform === 'win32') {\n\t\t// Windows 10 build 10586 is the first Windows release that supports 256 colors.\n\t\t// Windows 10 build 14931 is the first release that supports 16m/TrueColor.\n\t\tconst osRelease = os.release().split('.');\n\t\tif (\n\t\t\tNumber(osRelease[0]) >= 10\n\t\t\t&& Number(osRelease[2]) >= 10_586\n\t\t) {\n\t\t\treturn Number(osRelease[2]) >= 14_931 ? 3 : 2;\n\t\t}\n\n\t\treturn 1;\n\t}\n\n\tif ('CI' in env) {\n\t\tif (['GITHUB_ACTIONS', 'GITEA_ACTIONS', 'CIRCLECI'].some(key => key in env)) {\n\t\t\treturn 3;\n\t\t}\n\n\t\tif (['TRAVIS', 'APPVEYOR', 'GITLAB_CI', 'BUILDKITE', 'DRONE'].some(sign => sign in env) || env.CI_NAME === 'codeship') {\n\t\t\treturn 1;\n\t\t}\n\n\t\treturn min;\n\t}\n\n\tif ('TEAMCITY_VERSION' in env) {\n\t\treturn /^(9\\.(0*[1-9]\\d*)\\.|\\d{2,}\\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0;\n\t}\n\n\tif (env.COLORTERM === 'truecolor') {\n\t\treturn 3;\n\t}\n\n\tif (env.TERM === 'xterm-kitty') {\n\t\treturn 3;\n\t}\n\n\tif (env.TERM === 'xterm-ghostty') {\n\t\treturn 3;\n\t}\n\n\tif (env.TERM === 'wezterm') {\n\t\treturn 3;\n\t}\n\n\tif ('TERM_PROGRAM' in env) {\n\t\tconst version = Number.parseInt((env.TERM_PROGRAM_VERSION || '').split('.')[0], 10);\n\n\t\tswitch (env.TERM_PROGRAM) {\n\t\t\tcase 'iTerm.app': {\n\t\t\t\treturn version >= 3 ? 3 : 2;\n\t\t\t}\n\n\t\t\tcase 'Apple_Terminal': {\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t\t// No default\n\t\t}\n\t}\n\n\tif (/-256(color)?$/i.test(env.TERM)) {\n\t\treturn 2;\n\t}\n\n\tif (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) {\n\t\treturn 1;\n\t}\n\n\tif ('COLORTERM' in env) {\n\t\treturn 1;\n\t}\n\n\treturn min;\n}\n\nexport function createSupportsColor(stream, options = {}) {\n\tconst level = _supportsColor(stream, {\n\t\tstreamIsTTY: stream && stream.isTTY,\n\t\t...options,\n\t});\n\n\treturn translateLevel(level);\n}\n\nconst supportsColor = {\n\tstdout: createSupportsColor({isTTY: tty.isatty(1)}),\n\tstderr: createSupportsColor({isTTY: tty.isatty(2)}),\n};\n\nexport default supportsColor;\n","// TODO: When targeting Node.js 16, use `String.prototype.replaceAll`.\nexport function stringReplaceAll(string, substring, replacer) {\n\tlet index = string.indexOf(substring);\n\tif (index === -1) {\n\t\treturn string;\n\t}\n\n\tconst substringLength = substring.length;\n\tlet endIndex = 0;\n\tlet returnValue = '';\n\tdo {\n\t\treturnValue += string.slice(endIndex, index) + substring + replacer;\n\t\tendIndex = index + substringLength;\n\t\tindex = string.indexOf(substring, endIndex);\n\t} while (index !== -1);\n\n\treturnValue += string.slice(endIndex);\n\treturn returnValue;\n}\n\nexport function stringEncaseCRLFWithFirstIndex(string, prefix, postfix, index) {\n\tlet endIndex = 0;\n\tlet returnValue = '';\n\tdo {\n\t\tconst gotCR = string[index - 1] === '\\r';\n\t\treturnValue += string.slice(endIndex, (gotCR ? index - 1 : index)) + prefix + (gotCR ? '\\r\\n' : '\\n') + postfix;\n\t\tendIndex = index + 1;\n\t\tindex = string.indexOf('\\n', endIndex);\n\t} while (index !== -1);\n\n\treturnValue += string.slice(endIndex);\n\treturn returnValue;\n}\n","import ansiStyles from '#ansi-styles';\nimport supportsColor from '#supports-color';\nimport { // eslint-disable-line import/order\n\tstringReplaceAll,\n\tstringEncaseCRLFWithFirstIndex,\n} from './utilities.js';\n\nconst {stdout: stdoutColor, stderr: stderrColor} = supportsColor;\n\nconst GENERATOR = Symbol('GENERATOR');\nconst STYLER = Symbol('STYLER');\nconst IS_EMPTY = Symbol('IS_EMPTY');\n\n// `supportsColor.level` → `ansiStyles.color[name]` mapping\nconst levelMapping = [\n\t'ansi',\n\t'ansi',\n\t'ansi256',\n\t'ansi16m',\n];\n\nconst styles = Object.create(null);\n\nconst applyOptions = (object, options = {}) => {\n\tif (options.level && !(Number.isInteger(options.level) && options.level >= 0 && options.level <= 3)) {\n\t\tthrow new Error('The `level` option should be an integer from 0 to 3');\n\t}\n\n\t// Detect level if not set manually\n\tconst colorLevel = stdoutColor ? stdoutColor.level : 0;\n\tobject.level = options.level === undefined ? colorLevel : options.level;\n};\n\nexport class Chalk {\n\tconstructor(options) {\n\t\t// eslint-disable-next-line no-constructor-return\n\t\treturn chalkFactory(options);\n\t}\n}\n\nconst chalkFactory = options => {\n\tconst chalk = (...strings) => strings.join(' ');\n\tapplyOptions(chalk, options);\n\n\tObject.setPrototypeOf(chalk, createChalk.prototype);\n\n\treturn chalk;\n};\n\nfunction createChalk(options) {\n\treturn chalkFactory(options);\n}\n\nObject.setPrototypeOf(createChalk.prototype, Function.prototype);\n\nfor (const [styleName, style] of Object.entries(ansiStyles)) {\n\tstyles[styleName] = {\n\t\tget() {\n\t\t\tconst builder = createBuilder(this, createStyler(style.open, style.close, this[STYLER]), this[IS_EMPTY]);\n\t\t\tObject.defineProperty(this, styleName, {value: builder});\n\t\t\treturn builder;\n\t\t},\n\t};\n}\n\nstyles.visible = {\n\tget() {\n\t\tconst builder = createBuilder(this, this[STYLER], true);\n\t\tObject.defineProperty(this, 'visible', {value: builder});\n\t\treturn builder;\n\t},\n};\n\nconst getModelAnsi = (model, level, type, ...arguments_) => {\n\tif (model === 'rgb') {\n\t\tif (level === 'ansi16m') {\n\t\t\treturn ansiStyles[type].ansi16m(...arguments_);\n\t\t}\n\n\t\tif (level === 'ansi256') {\n\t\t\treturn ansiStyles[type].ansi256(ansiStyles.rgbToAnsi256(...arguments_));\n\t\t}\n\n\t\treturn ansiStyles[type].ansi(ansiStyles.rgbToAnsi(...arguments_));\n\t}\n\n\tif (model === 'hex') {\n\t\treturn getModelAnsi('rgb', level, type, ...ansiStyles.hexToRgb(...arguments_));\n\t}\n\n\treturn ansiStyles[type][model](...arguments_);\n};\n\nconst usedModels = ['rgb', 'hex', 'ansi256'];\n\nfor (const model of usedModels) {\n\tstyles[model] = {\n\t\tget() {\n\t\t\tconst {level} = this;\n\t\t\treturn function (...arguments_) {\n\t\t\t\tconst styler = createStyler(getModelAnsi(model, levelMapping[level], 'color', ...arguments_), ansiStyles.color.close, this[STYLER]);\n\t\t\t\treturn createBuilder(this, styler, this[IS_EMPTY]);\n\t\t\t};\n\t\t},\n\t};\n\n\tconst bgModel = 'bg' + model[0].toUpperCase() + model.slice(1);\n\tstyles[bgModel] = {\n\t\tget() {\n\t\t\tconst {level} = this;\n\t\t\treturn function (...arguments_) {\n\t\t\t\tconst styler = createStyler(getModelAnsi(model, levelMapping[level], 'bgColor', ...arguments_), ansiStyles.bgColor.close, this[STYLER]);\n\t\t\t\treturn createBuilder(this, styler, this[IS_EMPTY]);\n\t\t\t};\n\t\t},\n\t};\n}\n\nconst proto = Object.defineProperties(() => {}, {\n\t...styles,\n\tlevel: {\n\t\tenumerable: true,\n\t\tget() {\n\t\t\treturn this[GENERATOR].level;\n\t\t},\n\t\tset(level) {\n\t\t\tthis[GENERATOR].level = level;\n\t\t},\n\t},\n});\n\nconst createStyler = (open, close, parent) => {\n\tlet openAll;\n\tlet closeAll;\n\tif (parent === undefined) {\n\t\topenAll = open;\n\t\tcloseAll = close;\n\t} else {\n\t\topenAll = parent.openAll + open;\n\t\tcloseAll = close + parent.closeAll;\n\t}\n\n\treturn {\n\t\topen,\n\t\tclose,\n\t\topenAll,\n\t\tcloseAll,\n\t\tparent,\n\t};\n};\n\nconst createBuilder = (self, _styler, _isEmpty) => {\n\t// Single argument is hot path, implicit coercion is faster than anything\n\t// eslint-disable-next-line no-implicit-coercion\n\tconst builder = (...arguments_) => applyStyle(builder, (arguments_.length === 1) ? ('' + arguments_[0]) : arguments_.join(' '));\n\n\t// We alter the prototype because we must return a function, but there is\n\t// no way to create a function with a different prototype\n\tObject.setPrototypeOf(builder, proto);\n\n\tbuilder[GENERATOR] = self;\n\tbuilder[STYLER] = _styler;\n\tbuilder[IS_EMPTY] = _isEmpty;\n\n\treturn builder;\n};\n\nconst applyStyle = (self, string) => {\n\tif (self.level <= 0 || !string) {\n\t\treturn self[IS_EMPTY] ? '' : string;\n\t}\n\n\tlet styler = self[STYLER];\n\n\tif (styler === undefined) {\n\t\treturn string;\n\t}\n\n\tconst {openAll, closeAll} = styler;\n\tif (string.includes('\\u001B')) {\n\t\twhile (styler !== undefined) {\n\t\t\t// Replace any instances already present with a re-opening code\n\t\t\t// otherwise only the part of the string until said closing code\n\t\t\t// will be colored, and the rest will simply be 'plain'.\n\t\t\tstring = stringReplaceAll(string, styler.close, styler.open);\n\n\t\t\tstyler = styler.parent;\n\t\t}\n\t}\n\n\t// We can move both next actions out of loop, because remaining actions in loop won't have\n\t// any/visible effect on parts we add here. Close the styling before a linebreak and reopen\n\t// after next line to fix a bleed issue on macOS: https://github.com/chalk/chalk/pull/92\n\tconst lfIndex = string.indexOf('\\n');\n\tif (lfIndex !== -1) {\n\t\tstring = stringEncaseCRLFWithFirstIndex(string, closeAll, openAll, lfIndex);\n\t}\n\n\treturn openAll + string + closeAll;\n};\n\nObject.defineProperties(createChalk.prototype, styles);\n\nconst chalk = createChalk();\nexport const chalkStderr = createChalk({level: stderrColor ? stderrColor.level : 0});\n\nexport {\n\tmodifierNames,\n\tforegroundColorNames,\n\tbackgroundColorNames,\n\tcolorNames,\n\n\t// TODO: Remove these aliases in the next major version\n\tmodifierNames as modifiers,\n\tforegroundColorNames as foregroundColors,\n\tbackgroundColorNames as backgroundColors,\n\tcolorNames as colors,\n} from './vendor/ansi-styles/index.js';\n\nexport {\n\tstdoutColor as supportsColor,\n\tstderrColor as supportsColorStderr,\n};\n\nexport default chalk;\n","/**\r\n * Commands — Standalone utility commands\r\n *\r\n * Ported from maxsim/bin/lib/commands.cjs\r\n */\r\n\r\nimport fs from 'node:fs';\r\nimport path from 'node:path';\r\n\r\nimport chalk from 'chalk';\r\nimport slugify from 'slugify';\r\nimport {\r\n safeReadFile,\r\n loadConfig,\r\n isGitIgnored,\r\n execGit,\r\n normalizePhaseName,\r\n getArchivedPhaseDirs,\r\n generateSlugInternal,\r\n getMilestoneInfo,\r\n resolveModelInternal,\r\n MODEL_PROFILES,\r\n output,\r\n error,\r\n rethrowCliSignals,\r\n findPhaseInternal,\r\n todayISO,\r\n planningPath,\r\n phasesPath,\r\n listSubDirs,\r\n isPlanFile,\r\n isSummaryFile,\r\n debugLog,\r\n} from './core.js';\r\nimport { extractFrontmatter } from './frontmatter.js';\r\nimport type {\r\n TodoItem,\r\n HistoryDigest,\r\n HistoryPhaseDigest,\r\n WebSearchOptions,\r\n WebSearchResult,\r\n ScaffoldOptions,\r\n TimestampFormat,\r\n ModelProfileName,\r\n AgentType,\r\n FrontmatterData,\r\n} from './types.js';\r\n\r\n// ─── Todo frontmatter parsing ────────────────────────────────────────────────\r\n\r\nexport interface TodoFrontmatter {\r\n created: string;\r\n title: string;\r\n area: string;\r\n completed?: string;\r\n}\r\n\r\nexport function parseTodoFrontmatter(content: string): TodoFrontmatter {\r\n const createdMatch = content.match(/^created:\\s*(.+)$/m);\r\n const titleMatch = content.match(/^title:\\s*(.+)$/m);\r\n const areaMatch = content.match(/^area:\\s*(.+)$/m);\r\n const completedMatch = content.match(/^completed:\\s*(.+)$/m);\r\n\r\n return {\r\n created: createdMatch ? createdMatch[1].trim() : 'unknown',\r\n title: titleMatch ? titleMatch[1].trim() : 'Untitled',\r\n area: areaMatch ? areaMatch[1].trim() : 'general',\r\n ...(completedMatch && { completed: completedMatch[1].trim() }),\r\n };\r\n}\r\n\r\n// ─── Slug generation ────────────────────────────────────────────────────────\r\n\r\nexport function cmdGenerateSlug(text: string | undefined, raw: boolean): void {\r\n if (!text) {\r\n error('text required for slug generation');\r\n }\r\n\r\n const slug = slugify(text, { lower: true, strict: true });\r\n\r\n const result = { slug };\r\n output(result, raw, slug);\r\n}\r\n\r\n// ─── Timestamp ──────────────────────────────────────────────────────────────\r\n\r\nexport function cmdCurrentTimestamp(format: TimestampFormat, raw: boolean): void {\r\n const now = new Date();\r\n let result: string;\r\n\r\n switch (format) {\r\n case 'date':\r\n result = todayISO();\r\n break;\r\n case 'filename':\r\n result = now.toISOString().replace(/:/g, '-').replace(/\\..+/, '');\r\n break;\r\n case 'full':\r\n default:\r\n result = now.toISOString();\r\n break;\r\n }\r\n\r\n output({ timestamp: result }, raw, result);\r\n}\r\n\r\n// ─── Todos ──────────────────────────────────────────────────────────────────\r\n\r\nexport function cmdListTodos(cwd: string, area: string | undefined, raw: boolean): void {\r\n const pendingDir = planningPath(cwd, 'todos', 'pending');\r\n\r\n let count = 0;\r\n const todos: TodoItem[] = [];\r\n\r\n try {\r\n const files = fs.readdirSync(pendingDir).filter(f => f.endsWith('.md'));\r\n\r\n for (const file of files) {\r\n try {\r\n const content = fs.readFileSync(path.join(pendingDir, file), 'utf-8');\r\n const fm = parseTodoFrontmatter(content);\r\n\r\n // Apply area filter if specified\r\n if (area && fm.area !== area) continue;\r\n\r\n count++;\r\n todos.push({\r\n file,\r\n created: fm.created,\r\n title: fm.title,\r\n area: fm.area,\r\n path: path.join('.planning', 'todos', 'pending', file),\r\n });\r\n } catch (e) {\r\n /* optional op, ignore */\r\n debugLog(e);\r\n }\r\n }\r\n } catch (e) {\r\n /* optional op, ignore */\r\n debugLog(e);\r\n }\r\n\r\n const result = { count, todos };\r\n output(result, raw, count.toString());\r\n}\r\n\r\n// ─── Path verification ──────────────────────────────────────────────────────\r\n\r\nexport function cmdVerifyPathExists(cwd: string, targetPath: string | undefined, raw: boolean): void {\r\n if (!targetPath) {\r\n error('path required for verification');\r\n }\r\n\r\n const fullPath = path.isAbsolute(targetPath) ? targetPath : path.join(cwd, targetPath);\r\n\r\n try {\r\n const stats = fs.statSync(fullPath);\r\n const type = stats.isDirectory() ? 'directory' : stats.isFile() ? 'file' : 'other';\r\n const result = { exists: true, type };\r\n output(result, raw, 'true');\r\n } catch (e: unknown) {\r\n rethrowCliSignals(e);\r\n const result = { exists: false, type: null };\r\n output(result, raw, 'false');\r\n }\r\n}\r\n\r\n// ─── History digest ─────────────────────────────────────────────────────────\r\n\r\nexport function cmdHistoryDigest(cwd: string, raw: boolean): void {\r\n const phasesDir = phasesPath(cwd);\r\n const digest: {\r\n phases: Record; affects: Set; patterns: Set }>;\r\n decisions: Array<{ phase: string; decision: string }>;\r\n tech_stack: Set | string[];\r\n } = { phases: {}, decisions: [], tech_stack: new Set() };\r\n\r\n // Collect all phase directories: archived + current\r\n const allPhaseDirs: Array<{ name: string; fullPath: string; milestone: string | null }> = [];\r\n\r\n // Add archived phases first (oldest milestones first)\r\n const archived = getArchivedPhaseDirs(cwd);\r\n for (const a of archived) {\r\n allPhaseDirs.push({ name: a.name, fullPath: a.fullPath, milestone: a.milestone });\r\n }\r\n\r\n // Add current phases\r\n if (fs.existsSync(phasesDir)) {\r\n try {\r\n const currentDirs = listSubDirs(phasesDir, true);\r\n for (const dir of currentDirs) {\r\n allPhaseDirs.push({ name: dir, fullPath: path.join(phasesDir, dir), milestone: null });\r\n }\r\n } catch (e) {\r\n /* optional op, ignore */\r\n debugLog(e);\r\n }\r\n }\r\n\r\n if (allPhaseDirs.length === 0) {\r\n const emptyDigest: HistoryDigest = { phases: {}, decisions: [], tech_stack: [] };\r\n output(emptyDigest, raw);\r\n return;\r\n }\r\n\r\n try {\r\n for (const { name: dir, fullPath: dirPath } of allPhaseDirs) {\r\n const summaries = fs.readdirSync(dirPath).filter(f => isSummaryFile(f));\r\n\r\n for (const summary of summaries) {\r\n try {\r\n const content = fs.readFileSync(path.join(dirPath, summary), 'utf-8');\r\n const fm = extractFrontmatter(content);\r\n\r\n const phaseNum = (fm.phase as string) || dir.split('-')[0];\r\n\r\n if (!digest.phases[phaseNum]) {\r\n digest.phases[phaseNum] = {\r\n name: (fm.name as string) || dir.split('-').slice(1).join(' ') || 'Unknown',\r\n provides: new Set(),\r\n affects: new Set(),\r\n patterns: new Set(),\r\n };\r\n }\r\n\r\n // Merge provides\r\n const depGraph = fm['dependency-graph'] as FrontmatterData | undefined;\r\n if (depGraph && depGraph.provides) {\r\n (depGraph.provides as string[]).forEach(p => digest.phases[phaseNum].provides.add(p));\r\n } else if (fm.provides) {\r\n (fm.provides as string[]).forEach(p => digest.phases[phaseNum].provides.add(p));\r\n }\r\n\r\n // Merge affects\r\n if (depGraph && depGraph.affects) {\r\n (depGraph.affects as string[]).forEach(a => digest.phases[phaseNum].affects.add(a));\r\n }\r\n\r\n // Merge patterns\r\n if (fm['patterns-established']) {\r\n (fm['patterns-established'] as string[]).forEach(p => digest.phases[phaseNum].patterns.add(p));\r\n }\r\n\r\n // Merge decisions\r\n if (fm['key-decisions']) {\r\n (fm['key-decisions'] as string[]).forEach(d => {\r\n digest.decisions.push({ phase: phaseNum, decision: d });\r\n });\r\n }\r\n\r\n // Merge tech stack\r\n const techStack = fm['tech-stack'] as FrontmatterData | undefined;\r\n if (techStack && techStack.added) {\r\n (techStack.added as Array).forEach(t =>\r\n (digest.tech_stack as Set).add(typeof t === 'string' ? t : (t as FrontmatterData).name as string)\r\n );\r\n }\r\n } catch (e) {\r\n /* optional op, ignore */\r\n debugLog(e);\r\n }\r\n }\r\n }\r\n\r\n // Convert Sets to Arrays for JSON output\r\n const outputDigest: HistoryDigest = {\r\n phases: {},\r\n decisions: digest.decisions,\r\n tech_stack: [...(digest.tech_stack as Set)],\r\n };\r\n for (const [p, data] of Object.entries(digest.phases)) {\r\n outputDigest.phases[p] = {\r\n name: data.name,\r\n provides: [...data.provides],\r\n affects: [...data.affects],\r\n patterns: [...data.patterns],\r\n };\r\n }\r\n\r\n output(outputDigest, raw);\r\n } catch (e: unknown) {\r\n rethrowCliSignals(e);\r\n error('Failed to generate history digest: ' + (e as Error).message);\r\n }\r\n}\r\n\r\n// ─── Model resolution ───────────────────────────────────────────────────────\r\n\r\nexport function cmdResolveModel(cwd: string, agentType: string | undefined, raw: boolean): void {\r\n if (!agentType) {\r\n error('agent-type required');\r\n }\r\n\r\n const config = loadConfig(cwd);\r\n const profile: ModelProfileName = config.model_profile || 'balanced';\r\n\r\n const agentModels = MODEL_PROFILES[agentType as AgentType];\r\n if (!agentModels) {\r\n const result = { model: 'sonnet', profile, unknown_agent: true };\r\n output(result, raw, 'sonnet');\r\n return;\r\n }\r\n\r\n const resolved = agentModels[profile] || agentModels['balanced'] || 'sonnet';\r\n const model = resolved === 'opus' ? 'inherit' : resolved;\r\n const result = { model, profile };\r\n output(result, raw, model);\r\n}\r\n\r\n// ─── Commit ─────────────────────────────────────────────────────────────────\r\n\r\nexport async function cmdCommit(\r\n cwd: string,\r\n message: string | undefined,\r\n files: string[],\r\n raw: boolean,\r\n amend: boolean,\r\n): Promise {\r\n if (!message && !amend) {\r\n error('commit message required');\r\n }\r\n\r\n const config = loadConfig(cwd);\r\n\r\n // Check commit_docs config\r\n if (!config.commit_docs) {\r\n const result = { committed: false, hash: null, reason: 'skipped_commit_docs_false' };\r\n output(result, raw, 'skipped');\r\n return;\r\n }\r\n\r\n // Check if .planning is gitignored\r\n if (await isGitIgnored(cwd, '.planning')) {\r\n const result = { committed: false, hash: null, reason: 'skipped_gitignored' };\r\n output(result, raw, 'skipped');\r\n return;\r\n }\r\n\r\n // Stage files\r\n const filesToStage = files && files.length > 0 ? files : ['.planning/'];\r\n for (const file of filesToStage) {\r\n await execGit(cwd, ['add', file]);\r\n }\r\n\r\n // Commit\r\n const commitArgs = amend ? ['commit', '--amend', '--no-edit'] : ['commit', '-m', message!];\r\n const commitResult = await execGit(cwd, commitArgs);\r\n if (commitResult.exitCode !== 0) {\r\n if (commitResult.stdout.includes('nothing to commit') || commitResult.stderr.includes('nothing to commit')) {\r\n const result = { committed: false, hash: null, reason: 'nothing_to_commit' };\r\n output(result, raw, 'nothing');\r\n return;\r\n }\r\n const result = { committed: false, hash: null, reason: 'nothing_to_commit', error: commitResult.stderr };\r\n output(result, raw, 'nothing');\r\n return;\r\n }\r\n\r\n // Get short hash\r\n const hashResult = await execGit(cwd, ['rev-parse', '--short', 'HEAD']);\r\n const hash = hashResult.exitCode === 0 ? hashResult.stdout : null;\r\n const result = { committed: true, hash, reason: 'committed' };\r\n output(result, raw, hash || 'committed');\r\n}\r\n\r\n// ─── Summary extract ────────────────────────────────────────────────────────\r\n\r\nexport function cmdSummaryExtract(\r\n cwd: string,\r\n summaryPath: string | undefined,\r\n fields: string[] | null,\r\n raw: boolean,\r\n): void {\r\n if (!summaryPath) {\r\n error('summary-path required for summary-extract');\r\n }\r\n\r\n const fullPath = path.join(cwd, summaryPath);\r\n\r\n if (!fs.existsSync(fullPath)) {\r\n output({ error: 'File not found', path: summaryPath }, raw);\r\n return;\r\n }\r\n\r\n const content = fs.readFileSync(fullPath, 'utf-8');\r\n const fm = extractFrontmatter(content);\r\n\r\n // Parse key-decisions into structured format\r\n const parseDecisions = (decisionsList: unknown): Array<{ summary: string; rationale: string | null }> => {\r\n if (!decisionsList || !Array.isArray(decisionsList)) return [];\r\n return decisionsList.map((d: string) => {\r\n const colonIdx = d.indexOf(':');\r\n if (colonIdx > 0) {\r\n return {\r\n summary: d.substring(0, colonIdx).trim(),\r\n rationale: d.substring(colonIdx + 1).trim(),\r\n };\r\n }\r\n return { summary: d, rationale: null };\r\n });\r\n };\r\n\r\n const techStack = fm['tech-stack'] as FrontmatterData | undefined;\r\n\r\n // Build full result\r\n const fullResult: Record = {\r\n path: summaryPath,\r\n one_liner: fm['one-liner'] || null,\r\n key_files: fm['key-files'] || [],\r\n tech_added: (techStack && techStack.added) || [],\r\n patterns: fm['patterns-established'] || [],\r\n decisions: parseDecisions(fm['key-decisions']),\r\n requirements_completed: fm['requirements-completed'] || [],\r\n };\r\n\r\n // If fields specified, filter to only those fields\r\n if (fields && fields.length > 0) {\r\n const filtered: Record = { path: summaryPath };\r\n for (const field of fields) {\r\n if (fullResult[field] !== undefined) {\r\n filtered[field] = fullResult[field];\r\n }\r\n }\r\n output(filtered, raw);\r\n return;\r\n }\r\n\r\n output(fullResult, raw);\r\n}\r\n\r\n// ─── Web search ─────────────────────────────────────────────────────────────\r\n\r\nexport async function cmdWebsearch(\r\n query: string | undefined,\r\n options: WebSearchOptions,\r\n raw: boolean,\r\n): Promise {\r\n const apiKey = process.env.BRAVE_API_KEY;\r\n\r\n if (!apiKey) {\r\n output({ available: false, reason: 'BRAVE_API_KEY not set' }, raw, '');\r\n return;\r\n }\r\n\r\n if (!query) {\r\n output({ available: false, error: 'Query required' }, raw, '');\r\n return;\r\n }\r\n\r\n const params = new URLSearchParams({\r\n q: query,\r\n count: String(options.limit || 10),\r\n country: 'us',\r\n search_lang: 'en',\r\n text_decorations: 'false',\r\n });\r\n\r\n if (options.freshness) {\r\n params.set('freshness', options.freshness);\r\n }\r\n\r\n try {\r\n const response = await fetch(\r\n `https://api.search.brave.com/res/v1/web/search?${params}`,\r\n {\r\n headers: {\r\n Accept: 'application/json',\r\n 'X-Subscription-Token': apiKey,\r\n },\r\n },\r\n );\r\n\r\n if (!response.ok) {\r\n output({ available: false, error: `API error: ${response.status}` }, raw, '');\r\n return;\r\n }\r\n\r\n const data = (await response.json()) as { web?: { results?: Array<{ title: string; url: string; description: string; age?: string }> } };\r\n\r\n const results: WebSearchResult[] = (data.web?.results || []).map(r => ({\r\n title: r.title,\r\n url: r.url,\r\n description: r.description,\r\n age: r.age || null,\r\n }));\r\n\r\n output(\r\n {\r\n available: true,\r\n query,\r\n count: results.length,\r\n results,\r\n },\r\n raw,\r\n results.map(r => `${r.title}\\n${r.url}\\n${r.description}`).join('\\n\\n'),\r\n );\r\n } catch (err: unknown) {\r\n rethrowCliSignals(err);\r\n output({ available: false, error: (err as Error).message }, raw, '');\r\n }\r\n}\r\n\r\n// ─── Progress render ────────────────────────────────────────────────────────\r\n\r\nexport function cmdProgressRender(cwd: string, format: string, raw: boolean): void {\r\n const phasesDir = phasesPath(cwd);\r\n const milestone = getMilestoneInfo(cwd);\r\n\r\n const phases: Array<{ number: string; name: string; plans: number; summaries: number; status: string }> = [];\r\n let totalPlans = 0;\r\n let totalSummaries = 0;\r\n\r\n try {\r\n const entries = fs.readdirSync(phasesDir, { withFileTypes: true });\r\n const dirs = entries\r\n .filter(e => e.isDirectory())\r\n .map(e => e.name)\r\n .sort((a, b) => {\r\n const aNum = parseFloat(a.match(/^(\\d+(?:\\.\\d+)?)/)?.[1] || '0');\r\n const bNum = parseFloat(b.match(/^(\\d+(?:\\.\\d+)?)/)?.[1] || '0');\r\n return aNum - bNum;\r\n });\r\n\r\n for (const dir of dirs) {\r\n const dm = dir.match(/^(\\d+(?:\\.\\d+)?)-?(.*)/);\r\n const phaseNum = dm ? dm[1] : dir;\r\n const phaseName = dm && dm[2] ? dm[2].replace(/-/g, ' ') : '';\r\n const phaseFiles = fs.readdirSync(path.join(phasesDir, dir));\r\n const planCount = phaseFiles.filter(f => isPlanFile(f)).length;\r\n const summaryCount = phaseFiles.filter(f => isSummaryFile(f)).length;\r\n\r\n totalPlans += planCount;\r\n totalSummaries += summaryCount;\r\n\r\n let status: string;\r\n if (planCount === 0) status = 'Pending';\r\n else if (summaryCount >= planCount) status = 'Complete';\r\n else if (summaryCount > 0) status = 'In Progress';\r\n else status = 'Planned';\r\n\r\n phases.push({ number: phaseNum, name: phaseName, plans: planCount, summaries: summaryCount, status });\r\n }\r\n } catch (e) {\r\n /* optional op, ignore */\r\n debugLog(e);\r\n }\r\n\r\n const percent = totalPlans > 0 ? Math.min(100, Math.round((totalSummaries / totalPlans) * 100)) : 0;\r\n\r\n if (format === 'table') {\r\n const barWidth = 10;\r\n const filled = Math.round((percent / 100) * barWidth);\r\n const bar = '\\u2588'.repeat(filled) + '\\u2591'.repeat(barWidth - filled);\r\n let out = `# ${milestone.version} ${milestone.name}\\n\\n`;\r\n out += `**Progress:** [${bar}] ${totalSummaries}/${totalPlans} plans (${percent}%)\\n\\n`;\r\n out += `| Phase | Name | Plans | Status |\\n`;\r\n out += `|-------|------|-------|--------|\\n`;\r\n for (const p of phases) {\r\n out += `| ${p.number} | ${p.name} | ${p.summaries}/${p.plans} | ${p.status} |\\n`;\r\n }\r\n output({ rendered: out }, raw, out);\r\n } else if (format === 'bar') {\r\n const barWidth = 20;\r\n const filled = Math.round((percent / 100) * barWidth);\r\n const bar = '\\u2588'.repeat(filled) + '\\u2591'.repeat(barWidth - filled);\r\n const text = `[${bar}] ${totalSummaries}/${totalPlans} plans (${percent}%)`;\r\n output({ bar: text, percent, completed: totalSummaries, total: totalPlans }, raw, text);\r\n } else if (format === 'phase-bars') {\r\n const doneCount = phases.filter(p => p.status === 'Complete').length;\r\n const inProgressCount = phases.filter(p => p.status === 'In Progress').length;\r\n const totalCount = phases.length;\r\n const header = chalk.bold(\r\n `Milestone: ${milestone.name} — ${doneCount}/${totalCount} phases complete (${percent}%)`\r\n );\r\n const lines: string[] = [header, ''];\r\n\r\n for (const p of phases) {\r\n const pPercent =\r\n p.plans > 0 ? Math.min(100, Math.round((p.summaries / p.plans) * 100)) : 0;\r\n const barWidth = 10;\r\n const filled = Math.round((pPercent / 100) * barWidth);\r\n const bar = '\\u2588'.repeat(filled) + '\\u2591'.repeat(barWidth - filled);\r\n const phaseLabel = `Phase ${p.number.padStart(2, '0')}`;\r\n const statusLabel =\r\n p.status === 'Complete'\r\n ? 'DONE'\r\n : p.status === 'In Progress'\r\n ? 'IN PROGRESS'\r\n : 'PLANNED';\r\n\r\n let line = `${phaseLabel} [${bar}] ${String(pPercent).padStart(3, ' ')}% — ${statusLabel}`;\r\n if (p.status === 'Complete') line = chalk.green(line);\r\n else if (p.status === 'In Progress') line = chalk.yellow(line);\r\n else line = chalk.dim(line);\r\n\r\n lines.push(line);\r\n }\r\n\r\n const rendered = lines.join('\\n');\r\n output({ rendered, done: doneCount, in_progress: inProgressCount, total: totalCount, percent }, raw, rendered);\r\n } else {\r\n output({\r\n milestone_version: milestone.version,\r\n milestone_name: milestone.name,\r\n phases,\r\n total_plans: totalPlans,\r\n total_summaries: totalSummaries,\r\n percent,\r\n }, raw);\r\n }\r\n}\r\n\r\n// ─── Todo complete ──────────────────────────────────────────────────────────\r\n\r\nexport function cmdTodoComplete(cwd: string, filename: string | undefined, raw: boolean): void {\r\n if (!filename) {\r\n error('filename required for todo complete');\r\n }\r\n\r\n const pendingDir = planningPath(cwd, 'todos', 'pending');\r\n const completedDir = planningPath(cwd, 'todos', 'completed');\r\n const sourcePath = path.join(pendingDir, filename);\r\n\r\n if (!fs.existsSync(sourcePath)) {\r\n error(`Todo not found: ${filename}`);\r\n }\r\n\r\n // Ensure completed directory exists\r\n fs.mkdirSync(completedDir, { recursive: true });\r\n\r\n // Read, add completion timestamp, move\r\n let content = fs.readFileSync(sourcePath, 'utf-8');\r\n const today = todayISO();\r\n content = `completed: ${today}\\n` + content;\r\n\r\n fs.writeFileSync(path.join(completedDir, filename), content, 'utf-8');\r\n fs.unlinkSync(sourcePath);\r\n\r\n output({ completed: true, file: filename, date: today }, raw, 'completed');\r\n}\r\n\r\n// ─── Scaffold ───────────────────────────────────────────────────────────────\r\n\r\nexport function cmdScaffold(\r\n cwd: string,\r\n type: string | undefined,\r\n options: ScaffoldOptions,\r\n raw: boolean,\r\n): void {\r\n const { phase, name } = options;\r\n const padded = phase ? normalizePhaseName(phase) : '00';\r\n const today = todayISO();\r\n\r\n // Find phase directory\r\n const phaseInfo = phase ? findPhaseInternal(cwd, phase) : null;\r\n const phaseDir = phaseInfo ? path.join(cwd, phaseInfo.directory) : null;\r\n\r\n if (phase && !phaseDir && type !== 'phase-dir') {\r\n error(`Phase ${phase} directory not found`);\r\n }\r\n\r\n let filePath: string;\r\n let content: string;\r\n\r\n switch (type) {\r\n case 'context': {\r\n filePath = path.join(phaseDir!, `${padded}-CONTEXT.md`);\r\n content = `---\\nphase: \"${padded}\"\\nname: \"${name || phaseInfo?.phase_name || 'Unnamed'}\"\\ncreated: ${today}\\n---\\n\\n# Phase ${phase}: ${name || phaseInfo?.phase_name || 'Unnamed'} — Context\\n\\n## Decisions\\n\\n_Decisions will be captured during /maxsim:discuss-phase ${phase}_\\n\\n## Discretion Areas\\n\\n_Areas where the executor can use judgment_\\n\\n## Deferred Ideas\\n\\n_Ideas to consider later_\\n`;\r\n break;\r\n }\r\n case 'uat': {\r\n filePath = path.join(phaseDir!, `${padded}-UAT.md`);\r\n content = `---\\nphase: \"${padded}\"\\nname: \"${name || phaseInfo?.phase_name || 'Unnamed'}\"\\ncreated: ${today}\\nstatus: pending\\n---\\n\\n# Phase ${phase}: ${name || phaseInfo?.phase_name || 'Unnamed'} — User Acceptance Testing\\n\\n## Test Results\\n\\n| # | Test | Status | Notes |\\n|---|------|--------|-------|\\n\\n## Summary\\n\\n_Pending UAT_\\n`;\r\n break;\r\n }\r\n case 'verification': {\r\n filePath = path.join(phaseDir!, `${padded}-VERIFICATION.md`);\r\n content = `---\\nphase: \"${padded}\"\\nname: \"${name || phaseInfo?.phase_name || 'Unnamed'}\"\\ncreated: ${today}\\nstatus: pending\\n---\\n\\n# Phase ${phase}: ${name || phaseInfo?.phase_name || 'Unnamed'} — Verification\\n\\n## Goal-Backward Verification\\n\\n**Phase Goal:** [From ROADMAP.md]\\n\\n## Checks\\n\\n| # | Requirement | Status | Evidence |\\n|---|------------|--------|----------|\\n\\n## Result\\n\\n_Pending verification_\\n`;\r\n break;\r\n }\r\n case 'phase-dir': {\r\n if (!phase || !name) {\r\n error('phase and name required for phase-dir scaffold');\r\n }\r\n const slug = generateSlugInternal(name);\r\n const dirName = `${padded}-${slug}`;\r\n const phasesParent = phasesPath(cwd);\r\n fs.mkdirSync(phasesParent, { recursive: true });\r\n const dirPath = path.join(phasesParent, dirName);\r\n fs.mkdirSync(dirPath, { recursive: true });\r\n output({ created: true, directory: `.planning/phases/${dirName}`, path: dirPath }, raw, dirPath);\r\n return;\r\n }\r\n default:\r\n error(`Unknown scaffold type: ${type}. Available: context, uat, verification, phase-dir`);\r\n return; // unreachable but satisfies TS\r\n }\r\n\r\n if (fs.existsSync(filePath)) {\r\n output({ created: false, reason: 'already_exists', path: filePath }, raw, 'exists');\r\n return;\r\n }\r\n\r\n fs.writeFileSync(filePath, content, 'utf-8');\r\n const relPath = path.relative(cwd, filePath);\r\n output({ created: true, path: relPath }, raw, relPath);\r\n}\r\n","/**\r\n * Verify — Verification suite, consistency, and health validation\r\n *\r\n * Ported from maxsim/bin/lib/verify.cjs\r\n */\r\n\r\nimport fs from 'node:fs';\r\nimport path from 'node:path';\r\n\r\nimport {\r\n safeReadFile,\r\n normalizePhaseName,\r\n getPhasePattern,\r\n execGit,\r\n findPhaseInternal,\r\n getMilestoneInfo,\r\n output,\r\n error,\r\n isPlanFile,\r\n isSummaryFile,\r\n planId,\r\n summaryId,\r\n roadmapPath as roadmapPathUtil,\r\n phasesPath,\r\n planningPath,\r\n statePath as statePathUtil,\r\n configPath as configPathUtil,\r\n listSubDirs,\r\n debugLog,\r\n todayISO,\r\n} from './core.js';\r\nimport { extractFrontmatter, parseMustHavesBlock } from './frontmatter.js';\r\nimport type { FrontmatterData } from './types.js';\r\n\r\n// ─── Interfaces ──────────────────────────────────────────────────────────────\r\n\r\nexport interface ValidationError {\r\n code?: string;\r\n message: string;\r\n fix?: string;\r\n repairable?: boolean;\r\n}\r\n\r\nexport interface ValidationWarning {\r\n code?: string;\r\n message: string;\r\n fix?: string;\r\n repairable?: boolean;\r\n}\r\n\r\nexport interface TaskInfo {\r\n name: string;\r\n hasFiles: boolean;\r\n hasAction: boolean;\r\n hasVerify: boolean;\r\n hasDone: boolean;\r\n}\r\n\r\nexport interface VerificationResult {\r\n passed: boolean;\r\n checks: {\r\n summary_exists: boolean;\r\n files_created: { checked: number; found: number; missing: string[] };\r\n commits_exist: boolean;\r\n self_check: 'not_found' | 'passed' | 'failed';\r\n };\r\n errors: string[];\r\n}\r\n\r\nexport interface PlanStructureResult {\r\n valid: boolean;\r\n errors: string[];\r\n warnings: string[];\r\n task_count: number;\r\n tasks: TaskInfo[];\r\n frontmatter_fields: string[];\r\n}\r\n\r\nexport interface PhaseCompletenessResult {\r\n complete: boolean;\r\n phase: string;\r\n plan_count: number;\r\n summary_count: number;\r\n incomplete_plans: string[];\r\n orphan_summaries: string[];\r\n errors: string[];\r\n warnings: string[];\r\n}\r\n\r\nexport interface ReferencesResult {\r\n valid: boolean;\r\n found: number;\r\n missing: string[];\r\n total: number;\r\n}\r\n\r\nexport interface CommitsResult {\r\n all_valid: boolean;\r\n valid: string[];\r\n invalid: string[];\r\n total: number;\r\n}\r\n\r\nexport interface ArtifactCheck {\r\n path: string;\r\n exists: boolean;\r\n issues: string[];\r\n passed: boolean;\r\n}\r\n\r\nexport interface ArtifactsResult {\r\n all_passed: boolean;\r\n passed: number;\r\n total: number;\r\n artifacts: ArtifactCheck[];\r\n}\r\n\r\nexport interface KeyLinkCheck {\r\n from: string;\r\n to: string;\r\n via: string;\r\n verified: boolean;\r\n detail: string;\r\n}\r\n\r\nexport interface KeyLinksResult {\r\n all_verified: boolean;\r\n verified: number;\r\n total: number;\r\n links: KeyLinkCheck[];\r\n}\r\n\r\nexport interface ConsistencyResult {\r\n passed: boolean;\r\n errors: string[];\r\n warnings: string[];\r\n warning_count: number;\r\n}\r\n\r\nexport interface HealthResult {\r\n status: 'healthy' | 'degraded' | 'broken';\r\n errors: ValidationError[];\r\n warnings: ValidationWarning[];\r\n info: ValidationError[];\r\n repairable_count: number;\r\n repairs_performed?: RepairAction[];\r\n}\r\n\r\ninterface RepairAction {\r\n action: string;\r\n success: boolean;\r\n path?: string;\r\n error?: string;\r\n}\r\n\r\ninterface HealthOptions {\r\n repair?: boolean;\r\n}\r\n\r\n// ─── Verify Summary ──────────────────────────────────────────────────────────\r\n\r\nexport async function cmdVerifySummary(\r\n cwd: string,\r\n summaryPath: string | null,\r\n checkFileCount: number | null,\r\n raw: boolean,\r\n): Promise {\r\n if (!summaryPath) {\r\n error('summary-path required');\r\n }\r\n\r\n const fullPath = path.join(cwd, summaryPath);\r\n const checkCount = checkFileCount || 2;\r\n\r\n if (!fs.existsSync(fullPath)) {\r\n const result: VerificationResult = {\r\n passed: false,\r\n checks: {\r\n summary_exists: false,\r\n files_created: { checked: 0, found: 0, missing: [] },\r\n commits_exist: false,\r\n self_check: 'not_found',\r\n },\r\n errors: ['SUMMARY.md not found'],\r\n };\r\n output(result, raw, 'failed');\r\n return;\r\n }\r\n\r\n const content = fs.readFileSync(fullPath, 'utf-8');\r\n const errors: string[] = [];\r\n\r\n // Spot-check files mentioned in summary\r\n const mentionedFiles = new Set();\r\n const patterns: RegExp[] = [\r\n /`([^`]+\\.[a-zA-Z]+)`/g,\r\n /(?:Created|Modified|Added|Updated|Edited):\\s*`?([^\\s`]+\\.[a-zA-Z]+)`?/gi,\r\n ];\r\n\r\n for (const pattern of patterns) {\r\n let m: RegExpExecArray | null;\r\n while ((m = pattern.exec(content)) !== null) {\r\n const filePath = m[1];\r\n if (filePath && !filePath.startsWith('http') && filePath.includes('/')) {\r\n mentionedFiles.add(filePath);\r\n }\r\n }\r\n }\r\n\r\n const filesToCheck = Array.from(mentionedFiles).slice(0, checkCount);\r\n const missing: string[] = [];\r\n for (const file of filesToCheck) {\r\n if (!fs.existsSync(path.join(cwd, file))) {\r\n missing.push(file);\r\n }\r\n }\r\n\r\n // Check commits exist\r\n const commitHashPattern = /\\b[0-9a-f]{7,40}\\b/g;\r\n const hashes = content.match(commitHashPattern) || [];\r\n let commitsExist = false;\r\n if (hashes.length > 0) {\r\n for (const hash of hashes.slice(0, 3)) {\r\n const result = await execGit(cwd, ['cat-file', '-t', hash]);\r\n if (result.exitCode === 0 && result.stdout === 'commit') {\r\n commitsExist = true;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n // Self-check section\r\n let selfCheck: 'not_found' | 'passed' | 'failed' = 'not_found';\r\n const selfCheckPattern = /##\\s*(?:Self[- ]?Check|Verification|Quality Check)/i;\r\n if (selfCheckPattern.test(content)) {\r\n const passPattern = /(?:all\\s+)?(?:pass|✓|✅|complete|succeeded)/i;\r\n const failPattern = /(?:fail|✗|❌|incomplete|blocked)/i;\r\n const checkSection = content.slice(content.search(selfCheckPattern));\r\n if (failPattern.test(checkSection)) {\r\n selfCheck = 'failed';\r\n } else if (passPattern.test(checkSection)) {\r\n selfCheck = 'passed';\r\n }\r\n }\r\n\r\n if (missing.length > 0) errors.push('Missing files: ' + missing.join(', '));\r\n if (!commitsExist && hashes.length > 0) errors.push('Referenced commit hashes not found in git history');\r\n if (selfCheck === 'failed') errors.push('Self-check section indicates failure');\r\n\r\n const checks = {\r\n summary_exists: true,\r\n files_created: { checked: filesToCheck.length, found: filesToCheck.length - missing.length, missing },\r\n commits_exist: commitsExist,\r\n self_check: selfCheck,\r\n };\r\n\r\n const passed = missing.length === 0 && selfCheck !== 'failed';\r\n const result: VerificationResult = { passed, checks, errors };\r\n output(result, raw, passed ? 'passed' : 'failed');\r\n}\r\n\r\n// ─── Verify Plan Structure ───────────────────────────────────────────────────\r\n\r\nexport function cmdVerifyPlanStructure(cwd: string, filePath: string | null, raw: boolean): void {\r\n if (!filePath) {\r\n error('file path required');\r\n }\r\n const fullPath = path.isAbsolute(filePath) ? filePath : path.join(cwd, filePath);\r\n const content = safeReadFile(fullPath);\r\n if (!content) {\r\n output({ error: 'File not found', path: filePath }, raw);\r\n return;\r\n }\r\n\r\n const fm = extractFrontmatter(content);\r\n const errors: string[] = [];\r\n const warnings: string[] = [];\r\n\r\n const required = ['phase', 'plan', 'type', 'wave', 'depends_on', 'files_modified', 'autonomous', 'must_haves'];\r\n for (const field of required) {\r\n if (fm[field] === undefined) errors.push(`Missing required frontmatter field: ${field}`);\r\n }\r\n\r\n const taskPattern = /]*>([\\s\\S]*?)<\\/task>/g;\r\n const tasks: TaskInfo[] = [];\r\n let taskMatch: RegExpExecArray | null;\r\n while ((taskMatch = taskPattern.exec(content)) !== null) {\r\n const taskContent = taskMatch[1];\r\n const nameMatch = taskContent.match(/([\\s\\S]*?)<\\/name>/);\r\n const taskName = nameMatch ? nameMatch[1].trim() : 'unnamed';\r\n const hasFiles = //.test(taskContent);\r\n const hasAction = //.test(taskContent);\r\n const hasVerify = //.test(taskContent);\r\n const hasDone = //.test(taskContent);\r\n\r\n if (!nameMatch) errors.push('Task missing element');\r\n if (!hasAction) errors.push(`Task '${taskName}' missing `);\r\n if (!hasVerify) warnings.push(`Task '${taskName}' missing `);\r\n if (!hasDone) warnings.push(`Task '${taskName}' missing `);\r\n if (!hasFiles) warnings.push(`Task '${taskName}' missing `);\r\n\r\n tasks.push({ name: taskName, hasFiles, hasAction, hasVerify, hasDone });\r\n }\r\n\r\n if (tasks.length === 0) warnings.push('No elements found');\r\n\r\n if (fm.wave && parseInt(String(fm.wave)) > 1 && (!fm.depends_on || (Array.isArray(fm.depends_on) && fm.depends_on.length === 0))) {\r\n warnings.push('Wave > 1 but depends_on is empty');\r\n }\r\n\r\n const hasCheckpoints = / isPlanFile(f));\r\n const summaries = files.filter(f => isSummaryFile(f));\r\n\r\n const planIds = new Set(plans.map(p => planId(p)));\r\n const summaryIds = new Set(summaries.map(s => summaryId(s)));\r\n\r\n const incompletePlans = [...planIds].filter(id => !summaryIds.has(id));\r\n if (incompletePlans.length > 0) {\r\n errors.push(`Plans without summaries: ${incompletePlans.join(', ')}`);\r\n }\r\n\r\n const orphanSummaries = [...summaryIds].filter(id => !planIds.has(id));\r\n if (orphanSummaries.length > 0) {\r\n warnings.push(`Summaries without plans: ${orphanSummaries.join(', ')}`);\r\n }\r\n\r\n const result: PhaseCompletenessResult = {\r\n complete: errors.length === 0,\r\n phase: phaseInfo.phase_number,\r\n plan_count: plans.length,\r\n summary_count: summaries.length,\r\n incomplete_plans: incompletePlans,\r\n orphan_summaries: orphanSummaries,\r\n errors,\r\n warnings,\r\n };\r\n output(result, raw, errors.length === 0 ? 'complete' : 'incomplete');\r\n}\r\n\r\n// ─── Verify References ───────────────────────────────────────────────────────\r\n\r\nexport function cmdVerifyReferences(cwd: string, filePath: string | null, raw: boolean): void {\r\n if (!filePath) {\r\n error('file path required');\r\n }\r\n const fullPath = path.isAbsolute(filePath) ? filePath : path.join(cwd, filePath);\r\n const content = safeReadFile(fullPath);\r\n if (!content) {\r\n output({ error: 'File not found', path: filePath }, raw);\r\n return;\r\n }\r\n\r\n const found: string[] = [];\r\n const missing: string[] = [];\r\n\r\n const atRefs = content.match(/@([^\\s\\n,)]+\\/[^\\s\\n,)]+)/g) || [];\r\n for (const ref of atRefs) {\r\n const cleanRef = ref.slice(1);\r\n const resolved = cleanRef.startsWith('~/')\r\n ? path.join(process.env.HOME || '', cleanRef.slice(2))\r\n : path.join(cwd, cleanRef);\r\n if (fs.existsSync(resolved)) {\r\n found.push(cleanRef);\r\n } else {\r\n missing.push(cleanRef);\r\n }\r\n }\r\n\r\n const backtickRefs = content.match(/`([^`]+\\/[^`]+\\.[a-zA-Z]{1,10})`/g) || [];\r\n for (const ref of backtickRefs) {\r\n const cleanRef = ref.slice(1, -1);\r\n if (cleanRef.startsWith('http') || cleanRef.includes('${') || cleanRef.includes('{{')) continue;\r\n if (found.includes(cleanRef) || missing.includes(cleanRef)) continue;\r\n const resolved = path.join(cwd, cleanRef);\r\n if (fs.existsSync(resolved)) {\r\n found.push(cleanRef);\r\n } else {\r\n missing.push(cleanRef);\r\n }\r\n }\r\n\r\n const result: ReferencesResult = {\r\n valid: missing.length === 0,\r\n found: found.length,\r\n missing,\r\n total: found.length + missing.length,\r\n };\r\n output(result, raw, missing.length === 0 ? 'valid' : 'invalid');\r\n}\r\n\r\n// ─── Verify Commits ──────────────────────────────────────────────────────────\r\n\r\nexport async function cmdVerifyCommits(cwd: string, hashes: string[], raw: boolean): Promise {\r\n if (!hashes || hashes.length === 0) {\r\n error('At least one commit hash required');\r\n }\r\n\r\n const valid: string[] = [];\r\n const invalid: string[] = [];\r\n for (const hash of hashes) {\r\n const result = await execGit(cwd, ['cat-file', '-t', hash]);\r\n if (result.exitCode === 0 && result.stdout.trim() === 'commit') {\r\n valid.push(hash);\r\n } else {\r\n invalid.push(hash);\r\n }\r\n }\r\n\r\n const commitResult: CommitsResult = {\r\n all_valid: invalid.length === 0,\r\n valid,\r\n invalid,\r\n total: hashes.length,\r\n };\r\n output(commitResult, raw, invalid.length === 0 ? 'valid' : 'invalid');\r\n}\r\n\r\n// ─── Verify Artifacts ────────────────────────────────────────────────────────\r\n\r\ninterface MustHaveArtifact {\r\n path?: string;\r\n min_lines?: number;\r\n contains?: string;\r\n exports?: string | string[];\r\n [key: string]: string | number | string[] | undefined;\r\n}\r\n\r\nexport function cmdVerifyArtifacts(cwd: string, planFilePath: string | null, raw: boolean): void {\r\n if (!planFilePath) {\r\n error('plan file path required');\r\n }\r\n const fullPath = path.isAbsolute(planFilePath) ? planFilePath : path.join(cwd, planFilePath);\r\n const content = safeReadFile(fullPath);\r\n if (!content) {\r\n output({ error: 'File not found', path: planFilePath }, raw);\r\n return;\r\n }\r\n\r\n const artifacts = parseMustHavesBlock(content, 'artifacts');\r\n if (artifacts.length === 0) {\r\n output({ error: 'No must_haves.artifacts found in frontmatter', path: planFilePath }, raw);\r\n return;\r\n }\r\n\r\n const results: ArtifactCheck[] = [];\r\n for (const artifact of artifacts) {\r\n if (typeof artifact === 'string') continue;\r\n const artObj = artifact as MustHaveArtifact;\r\n const artPath = artObj.path;\r\n if (!artPath) continue;\r\n\r\n const artFullPath = path.join(cwd, artPath);\r\n const exists = fs.existsSync(artFullPath);\r\n const check: ArtifactCheck = { path: artPath, exists, issues: [], passed: false };\r\n\r\n if (exists) {\r\n const fileContent = safeReadFile(artFullPath) || '';\r\n const lineCount = fileContent.split('\\n').length;\r\n\r\n if (artObj.min_lines && lineCount < artObj.min_lines) {\r\n check.issues.push(`Only ${lineCount} lines, need ${artObj.min_lines}`);\r\n }\r\n if (artObj.contains && !fileContent.includes(artObj.contains)) {\r\n check.issues.push(`Missing pattern: ${artObj.contains}`);\r\n }\r\n if (artObj.exports) {\r\n const exportList = Array.isArray(artObj.exports) ? artObj.exports : [artObj.exports];\r\n for (const exp of exportList) {\r\n if (!fileContent.includes(exp)) check.issues.push(`Missing export: ${exp}`);\r\n }\r\n }\r\n check.passed = check.issues.length === 0;\r\n } else {\r\n check.issues.push('File not found');\r\n }\r\n\r\n results.push(check);\r\n }\r\n\r\n const passed = results.filter(r => r.passed).length;\r\n const artifactsResult: ArtifactsResult = {\r\n all_passed: passed === results.length,\r\n passed,\r\n total: results.length,\r\n artifacts: results,\r\n };\r\n output(artifactsResult, raw, passed === results.length ? 'valid' : 'invalid');\r\n}\r\n\r\n// ─── Verify Key Links ────────────────────────────────────────────────────────\r\n\r\ninterface MustHaveKeyLink {\r\n from?: string;\r\n to?: string;\r\n via?: string;\r\n pattern?: string;\r\n [key: string]: string | number | string[] | undefined;\r\n}\r\n\r\nexport function cmdVerifyKeyLinks(cwd: string, planFilePath: string | null, raw: boolean): void {\r\n if (!planFilePath) {\r\n error('plan file path required');\r\n }\r\n const fullPath = path.isAbsolute(planFilePath) ? planFilePath : path.join(cwd, planFilePath);\r\n const content = safeReadFile(fullPath);\r\n if (!content) {\r\n output({ error: 'File not found', path: planFilePath }, raw);\r\n return;\r\n }\r\n\r\n const keyLinks = parseMustHavesBlock(content, 'key_links');\r\n if (keyLinks.length === 0) {\r\n output({ error: 'No must_haves.key_links found in frontmatter', path: planFilePath }, raw);\r\n return;\r\n }\r\n\r\n const results: KeyLinkCheck[] = [];\r\n for (const link of keyLinks) {\r\n if (typeof link === 'string') continue;\r\n const linkObj = link as MustHaveKeyLink;\r\n const check: KeyLinkCheck = {\r\n from: linkObj.from || '',\r\n to: linkObj.to || '',\r\n via: linkObj.via || '',\r\n verified: false,\r\n detail: '',\r\n };\r\n\r\n const sourceContent = safeReadFile(path.join(cwd, linkObj.from || ''));\r\n if (!sourceContent) {\r\n check.detail = 'Source file not found';\r\n } else if (linkObj.pattern) {\r\n try {\r\n const regex = new RegExp(linkObj.pattern);\r\n if (regex.test(sourceContent)) {\r\n check.verified = true;\r\n check.detail = 'Pattern found in source';\r\n } else {\r\n const targetContent = safeReadFile(path.join(cwd, linkObj.to || ''));\r\n if (targetContent && regex.test(targetContent)) {\r\n check.verified = true;\r\n check.detail = 'Pattern found in target';\r\n } else {\r\n check.detail = `Pattern \"${linkObj.pattern}\" not found in source or target`;\r\n }\r\n }\r\n } catch {\r\n check.detail = `Invalid regex pattern: ${linkObj.pattern}`;\r\n }\r\n } else {\r\n if (sourceContent.includes(linkObj.to || '')) {\r\n check.verified = true;\r\n check.detail = 'Target referenced in source';\r\n } else {\r\n check.detail = 'Target not referenced in source';\r\n }\r\n }\r\n\r\n results.push(check);\r\n }\r\n\r\n const verified = results.filter(r => r.verified).length;\r\n const linksResult: KeyLinksResult = {\r\n all_verified: verified === results.length,\r\n verified,\r\n total: results.length,\r\n links: results,\r\n };\r\n output(linksResult, raw, verified === results.length ? 'valid' : 'invalid');\r\n}\r\n\r\n// ─── Validate Consistency ────────────────────────────────────────────────────\r\n\r\nexport function cmdValidateConsistency(cwd: string, raw: boolean): void {\r\n const rmPath = roadmapPathUtil(cwd);\r\n const phasesDir = phasesPath(cwd);\r\n const errors: string[] = [];\r\n const warnings: string[] = [];\r\n\r\n if (!fs.existsSync(rmPath)) {\r\n errors.push('ROADMAP.md not found');\r\n output({ passed: false, errors, warnings }, raw, 'failed');\r\n return;\r\n }\r\n\r\n const roadmapContent = fs.readFileSync(rmPath, 'utf-8');\r\n\r\n const roadmapPhases = new Set();\r\n const phasePattern = getPhasePattern();\r\n let m: RegExpExecArray | null;\r\n while ((m = phasePattern.exec(roadmapContent)) !== null) {\r\n roadmapPhases.add(m[1]);\r\n }\r\n\r\n const diskPhases = new Set();\r\n try {\r\n const dirs = listSubDirs(phasesDir);\r\n for (const dir of dirs) {\r\n const dm = dir.match(/^(\\d+[A-Z]?(?:\\.\\d+)?)/i);\r\n if (dm) diskPhases.add(dm[1]);\r\n }\r\n } catch (e) {\r\n /* optional op, ignore */\r\n debugLog(e);\r\n }\r\n\r\n for (const p of roadmapPhases) {\r\n if (!diskPhases.has(p) && !diskPhases.has(normalizePhaseName(p))) {\r\n warnings.push(`Phase ${p} in ROADMAP.md but no directory on disk`);\r\n }\r\n }\r\n\r\n for (const p of diskPhases) {\r\n const unpadded = String(parseInt(p, 10));\r\n if (!roadmapPhases.has(p) && !roadmapPhases.has(unpadded)) {\r\n warnings.push(`Phase ${p} exists on disk but not in ROADMAP.md`);\r\n }\r\n }\r\n\r\n const integerPhases = [...diskPhases]\r\n .filter(p => !p.includes('.'))\r\n .map(p => parseInt(p, 10))\r\n .sort((a, b) => a - b);\r\n\r\n for (let i = 1; i < integerPhases.length; i++) {\r\n if (integerPhases[i] !== integerPhases[i - 1] + 1) {\r\n warnings.push(`Gap in phase numbering: ${integerPhases[i - 1]} → ${integerPhases[i]}`);\r\n }\r\n }\r\n\r\n try {\r\n const dirs = listSubDirs(phasesDir, true);\r\n\r\n for (const dir of dirs) {\r\n const phaseFiles = fs.readdirSync(path.join(phasesDir, dir));\r\n const plans = phaseFiles.filter(f => isPlanFile(f)).sort();\r\n\r\n const planNums = plans.map(p => {\r\n const pm = p.match(/-(\\d{2})-PLAN\\.md$/);\r\n return pm ? parseInt(pm[1], 10) : null;\r\n }).filter((n): n is number => n !== null);\r\n\r\n for (let i = 1; i < planNums.length; i++) {\r\n if (planNums[i] !== planNums[i - 1] + 1) {\r\n warnings.push(`Gap in plan numbering in ${dir}: plan ${planNums[i - 1]} → ${planNums[i]}`);\r\n }\r\n }\r\n\r\n const summaries = phaseFiles.filter(f => isSummaryFile(f));\r\n const planIdsSet = new Set(plans.map(p => planId(p)));\r\n const summaryIdsSet = new Set(summaries.map(s => summaryId(s)));\r\n\r\n for (const sid of summaryIdsSet) {\r\n if (!planIdsSet.has(sid)) {\r\n warnings.push(`Summary ${sid}-SUMMARY.md in ${dir} has no matching PLAN.md`);\r\n }\r\n }\r\n }\r\n } catch (e) {\r\n /* optional op, ignore */\r\n debugLog(e);\r\n }\r\n\r\n try {\r\n const dirs = listSubDirs(phasesDir);\r\n\r\n for (const dir of dirs) {\r\n const phaseFiles = fs.readdirSync(path.join(phasesDir, dir));\r\n const plans = phaseFiles.filter(f => isPlanFile(f));\r\n\r\n for (const plan of plans) {\r\n const content = fs.readFileSync(path.join(phasesDir, dir, plan), 'utf-8');\r\n const fm = extractFrontmatter(content);\r\n\r\n if (!fm.wave) {\r\n warnings.push(`${dir}/${plan}: missing 'wave' in frontmatter`);\r\n }\r\n }\r\n }\r\n } catch (e) {\r\n /* optional op, ignore */\r\n debugLog(e);\r\n }\r\n\r\n const passed = errors.length === 0;\r\n const result: ConsistencyResult = { passed, errors, warnings, warning_count: warnings.length };\r\n output(result, raw, passed ? 'passed' : 'failed');\r\n}\r\n\r\n// ─── Validate Health ─────────────────────────────────────────────────────────\r\n\r\nexport function cmdValidateHealth(cwd: string, options: HealthOptions, raw: boolean): void {\r\n const planningDir = planningPath(cwd);\r\n const projectPath = planningPath(cwd, 'PROJECT.md');\r\n const rmPath = roadmapPathUtil(cwd);\r\n const stPath = statePathUtil(cwd);\r\n const cfgPath = configPathUtil(cwd);\r\n const phasesDir = phasesPath(cwd);\r\n\r\n const errors: ValidationError[] = [];\r\n const warnings: ValidationWarning[] = [];\r\n const info: ValidationError[] = [];\r\n const repairs: string[] = [];\r\n\r\n const addIssue = (\r\n severity: 'error' | 'warning' | 'info',\r\n code: string,\r\n message: string,\r\n fix: string,\r\n repairable = false,\r\n ): void => {\r\n const issue: ValidationError = { code, message, fix, repairable };\r\n if (severity === 'error') errors.push(issue);\r\n else if (severity === 'warning') warnings.push(issue);\r\n else info.push(issue);\r\n };\r\n\r\n // Check 1: .planning/ exists\r\n if (!fs.existsSync(planningDir)) {\r\n addIssue('error', 'E001', '.planning/ directory not found', 'Run /maxsim:new-project to initialize');\r\n output({\r\n status: 'broken',\r\n errors,\r\n warnings,\r\n info,\r\n repairable_count: 0,\r\n }, raw);\r\n return;\r\n }\r\n\r\n // Check 2: PROJECT.md\r\n if (!fs.existsSync(projectPath)) {\r\n addIssue('error', 'E002', 'PROJECT.md not found', 'Run /maxsim:new-project to create');\r\n } else {\r\n const content = fs.readFileSync(projectPath, 'utf-8');\r\n const requiredSections = ['## What This Is', '## Core Value', '## Requirements'];\r\n for (const section of requiredSections) {\r\n if (!content.includes(section)) {\r\n addIssue('warning', 'W001', `PROJECT.md missing section: ${section}`, 'Add section manually');\r\n }\r\n }\r\n }\r\n\r\n // Check 3: ROADMAP.md\r\n if (!fs.existsSync(rmPath)) {\r\n addIssue('error', 'E003', 'ROADMAP.md not found', 'Run /maxsim:new-milestone to create roadmap');\r\n }\r\n\r\n // Check 4: STATE.md\r\n if (!fs.existsSync(stPath)) {\r\n addIssue('error', 'E004', 'STATE.md not found', 'Run /maxsim:health --repair to regenerate', true);\r\n repairs.push('regenerateState');\r\n } else {\r\n const stateContent = fs.readFileSync(stPath, 'utf-8');\r\n const phaseRefs = [...stateContent.matchAll(/[Pp]hase\\s+(\\d+(?:\\.\\d+)?)/g)].map(m => m[1]);\r\n const diskPhases = new Set();\r\n try {\r\n for (const dir of listSubDirs(phasesDir)) {\r\n const dm = dir.match(/^(\\d+(?:\\.\\d+)?)/);\r\n if (dm) diskPhases.add(dm[1]);\r\n }\r\n } catch (e) {\r\n /* optional op, ignore */\r\n debugLog(e);\r\n }\r\n for (const ref of phaseRefs) {\r\n const normalizedRef = String(parseInt(ref, 10)).padStart(2, '0');\r\n if (!diskPhases.has(ref) && !diskPhases.has(normalizedRef) && !diskPhases.has(String(parseInt(ref, 10)))) {\r\n if (diskPhases.size > 0) {\r\n addIssue('warning', 'W002', `STATE.md references phase ${ref}, but only phases ${[...diskPhases].sort().join(', ')} exist`, 'Run /maxsim:health --repair to regenerate STATE.md', true);\r\n if (!repairs.includes('regenerateState')) repairs.push('regenerateState');\r\n }\r\n }\r\n }\r\n }\r\n\r\n // Check 5: config.json\r\n if (!fs.existsSync(cfgPath)) {\r\n addIssue('warning', 'W003', 'config.json not found', 'Run /maxsim:health --repair to create with defaults', true);\r\n repairs.push('createConfig');\r\n } else {\r\n try {\r\n const rawContent = fs.readFileSync(cfgPath, 'utf-8');\r\n const parsed: Record = JSON.parse(rawContent) as Record;\r\n const validProfiles = ['quality', 'balanced', 'budget', 'tokenburner'];\r\n if (parsed.model_profile && !validProfiles.includes(parsed.model_profile as string)) {\r\n addIssue('warning', 'W004', `config.json: invalid model_profile \"${parsed.model_profile}\"`, `Valid values: ${validProfiles.join(', ')}`);\r\n }\r\n } catch (thrown: unknown) {\r\n const parseErr = thrown as Error;\r\n addIssue('error', 'E005', `config.json: JSON parse error - ${parseErr.message}`, 'Run /maxsim:health --repair to reset to defaults', true);\r\n repairs.push('resetConfig');\r\n }\r\n }\r\n\r\n // Check 6: Phase directory naming\r\n try {\r\n for (const dirName of listSubDirs(phasesDir)) {\r\n if (!dirName.match(/^\\d{2}(?:\\.\\d+)?-[\\w-]+$/)) {\r\n addIssue('warning', 'W005', `Phase directory \"${dirName}\" doesn't follow NN-name format`, 'Rename to match pattern (e.g., 01-setup)');\r\n }\r\n }\r\n } catch (e) {\r\n /* optional op, ignore */\r\n debugLog(e);\r\n }\r\n\r\n // Check 7: Orphaned plans\r\n try {\r\n const orphanDirs = listSubDirs(phasesDir);\r\n for (const dirName of orphanDirs) {\r\n const phaseFiles = fs.readdirSync(path.join(phasesDir, dirName));\r\n const plans = phaseFiles.filter(f => isPlanFile(f));\r\n const summaries = phaseFiles.filter(f => isSummaryFile(f));\r\n const summaryBases = new Set(summaries.map(s => summaryId(s)));\r\n\r\n for (const plan of plans) {\r\n const planBase = planId(plan);\r\n if (!summaryBases.has(planBase)) {\r\n addIssue('info', 'I001', `${dirName}/${plan} has no SUMMARY.md`, 'May be in progress');\r\n }\r\n }\r\n }\r\n } catch (e) {\r\n /* optional op, ignore */\r\n debugLog(e);\r\n }\r\n\r\n // Check 8: Roadmap consistency\r\n if (fs.existsSync(rmPath)) {\r\n const roadmapContent = fs.readFileSync(rmPath, 'utf-8');\r\n const roadmapPhases = new Set();\r\n const phasePattern = getPhasePattern();\r\n let m: RegExpExecArray | null;\r\n while ((m = phasePattern.exec(roadmapContent)) !== null) {\r\n roadmapPhases.add(m[1]);\r\n }\r\n\r\n const diskPhases = new Set();\r\n try {\r\n for (const dir of listSubDirs(phasesDir)) {\r\n const dm = dir.match(/^(\\d+[A-Z]?(?:\\.\\d+)?)/i);\r\n if (dm) diskPhases.add(dm[1]);\r\n }\r\n } catch (e) {\r\n /* optional op, ignore */\r\n debugLog(e);\r\n }\r\n\r\n for (const p of roadmapPhases) {\r\n const padded = String(parseInt(p, 10)).padStart(2, '0');\r\n if (!diskPhases.has(p) && !diskPhases.has(padded)) {\r\n addIssue('warning', 'W006', `Phase ${p} in ROADMAP.md but no directory on disk`, 'Create phase directory or remove from roadmap');\r\n }\r\n }\r\n\r\n for (const p of diskPhases) {\r\n const unpadded = String(parseInt(p, 10));\r\n if (!roadmapPhases.has(p) && !roadmapPhases.has(unpadded)) {\r\n addIssue('warning', 'W007', `Phase ${p} exists on disk but not in ROADMAP.md`, 'Add to roadmap or remove directory');\r\n }\r\n }\r\n }\r\n\r\n // Perform repairs if requested\r\n const repairActions: RepairAction[] = [];\r\n if (options.repair && repairs.length > 0) {\r\n for (const repair of repairs) {\r\n try {\r\n switch (repair) {\r\n case 'createConfig':\r\n case 'resetConfig': {\r\n const defaults = {\r\n model_profile: 'balanced',\r\n commit_docs: true,\r\n search_gitignored: false,\r\n branching_strategy: 'none',\r\n research: true,\r\n plan_checker: true,\r\n verifier: true,\r\n parallelization: true,\r\n };\r\n fs.writeFileSync(cfgPath, JSON.stringify(defaults, null, 2), 'utf-8');\r\n repairActions.push({ action: repair, success: true, path: 'config.json' });\r\n break;\r\n }\r\n case 'regenerateState': {\r\n if (fs.existsSync(stPath)) {\r\n const timestamp = new Date().toISOString().replace(/[:.]/g, '-').slice(0, 19);\r\n const backupPath = `${stPath}.bak-${timestamp}`;\r\n fs.copyFileSync(stPath, backupPath);\r\n repairActions.push({ action: 'backupState', success: true, path: backupPath });\r\n }\r\n const milestone = getMilestoneInfo(cwd);\r\n let stateContent = `# Session State\\n\\n`;\r\n stateContent += `## Project Reference\\n\\n`;\r\n stateContent += `See: .planning/PROJECT.md\\n\\n`;\r\n stateContent += `## Position\\n\\n`;\r\n stateContent += `**Milestone:** ${milestone.version} ${milestone.name}\\n`;\r\n stateContent += `**Current phase:** (determining...)\\n`;\r\n stateContent += `**Status:** Resuming\\n\\n`;\r\n stateContent += `## Session Log\\n\\n`;\r\n stateContent += `- ${todayISO()}: STATE.md regenerated by /maxsim:health --repair\\n`;\r\n fs.writeFileSync(stPath, stateContent, 'utf-8');\r\n repairActions.push({ action: repair, success: true, path: 'STATE.md' });\r\n break;\r\n }\r\n }\r\n } catch (thrown: unknown) {\r\n const repairErr = thrown as Error;\r\n repairActions.push({ action: repair, success: false, error: repairErr.message });\r\n }\r\n }\r\n }\r\n\r\n // Determine overall status\r\n let status: 'healthy' | 'degraded' | 'broken';\r\n if (errors.length > 0) {\r\n status = 'broken';\r\n } else if (warnings.length > 0) {\r\n status = 'degraded';\r\n } else {\r\n status = 'healthy';\r\n }\r\n\r\n const repairableCount = errors.filter(e => e.repairable).length +\r\n warnings.filter(w => w.repairable).length;\r\n\r\n const result: HealthResult = {\r\n status,\r\n errors,\r\n warnings,\r\n info,\r\n repairable_count: repairableCount,\r\n repairs_performed: repairActions.length > 0 ? repairActions : undefined,\r\n };\r\n output(result, raw);\r\n}\r\n","/**\r\n * Phase — Phase CRUD, query, and lifecycle operations\r\n *\r\n * Ported from maxsim/bin/lib/phase.cjs\r\n */\r\n\r\nimport fs from 'node:fs';\r\nimport path from 'node:path';\r\n\r\nimport {\r\n normalizePhaseName,\r\n comparePhaseNum,\r\n getPhasePattern,\r\n findPhaseInternal,\r\n getArchivedPhaseDirs,\r\n generateSlugInternal,\r\n output,\r\n error,\r\n rethrowCliSignals,\r\n phasesPath,\r\n roadmapPath,\r\n statePath,\r\n planningPath,\r\n isPlanFile,\r\n isSummaryFile,\r\n planId,\r\n summaryId,\r\n listSubDirs,\r\n debugLog,\r\n todayISO,\r\n escapePhaseNum,\r\n} from './core.js';\r\nimport { extractFrontmatter } from './frontmatter.js';\r\nimport type {\r\n PhaseNumber,\r\n PhasesListOptions,\r\n FrontmatterData,\r\n} from './types.js';\r\n\r\n// ─── Core result types ──────────────────────────────────────────────────────\r\n\r\nexport interface PhaseCreateOptions {\r\n includeStubs?: boolean;\r\n}\r\n\r\nexport interface PhaseAddResult {\r\n phase_number: number;\r\n padded: string;\r\n slug: string;\r\n directory: string;\r\n description: string;\r\n}\r\n\r\nexport interface PhaseInsertResult {\r\n phase_number: string;\r\n after_phase: string;\r\n slug: string;\r\n directory: string;\r\n description: string;\r\n}\r\n\r\nexport interface PhaseCompleteResult {\r\n completed_phase: string;\r\n phase_name: string | null;\r\n plans_executed: string;\r\n next_phase: string | null;\r\n next_phase_name: string | null;\r\n is_last_phase: boolean;\r\n date: string;\r\n roadmap_updated: boolean;\r\n state_updated: boolean;\r\n requirements_updated: boolean;\r\n}\r\n\r\n// ─── Stub scaffolding ───────────────────────────────────────────────────────\r\n\r\nexport function scaffoldPhaseStubs(dirPath: string, phaseId: string, name: string): void {\r\n const today = todayISO();\r\n fs.writeFileSync(\r\n path.join(dirPath, `${phaseId}-CONTEXT.md`),\r\n `# Phase ${phaseId} Context: ${name}\\n\\n**Created:** ${today}\\n**Phase goal:** [To be defined during /maxsim:discuss-phase]\\n\\n---\\n\\n_Context will be populated by /maxsim:discuss-phase_\\n`,\r\n );\r\n fs.writeFileSync(\r\n path.join(dirPath, `${phaseId}-RESEARCH.md`),\r\n `# Phase ${phaseId}: ${name} - Research\\n\\n**Researched:** Not yet\\n**Domain:** TBD\\n**Confidence:** TBD\\n\\n---\\n\\n_Research will be populated by /maxsim:research-phase_\\n`,\r\n );\r\n}\r\n\r\n// ─── Core functions ─────────────────────────────────────────────────────────\r\n\r\nexport function phaseAddCore(cwd: string, description: string, options?: PhaseCreateOptions): PhaseAddResult {\r\n const rmPath = roadmapPath(cwd);\r\n if (!fs.existsSync(rmPath)) {\r\n throw new Error('ROADMAP.md not found');\r\n }\r\n\r\n const content = fs.readFileSync(rmPath, 'utf-8');\r\n const slug = generateSlugInternal(description);\r\n\r\n const phasePattern = getPhasePattern();\r\n let maxPhase = 0;\r\n let m: RegExpExecArray | null;\r\n while ((m = phasePattern.exec(content)) !== null) {\r\n const num = parseInt(m[1], 10);\r\n if (num > maxPhase) maxPhase = num;\r\n }\r\n\r\n const newPhaseNum = maxPhase + 1;\r\n const paddedNum = String(newPhaseNum).padStart(2, '0');\r\n const dirName = `${paddedNum}-${slug}`;\r\n const dirPath = planningPath(cwd, 'phases', dirName);\r\n\r\n fs.mkdirSync(dirPath, { recursive: true });\r\n fs.writeFileSync(path.join(dirPath, '.gitkeep'), '');\r\n\r\n if (options?.includeStubs) {\r\n scaffoldPhaseStubs(dirPath, paddedNum, description);\r\n }\r\n\r\n const phaseEntry = `\\n### Phase ${newPhaseNum}: ${description}\\n\\n**Goal:** [To be planned]\\n**Requirements**: TBD\\n**Depends on:** Phase ${maxPhase}\\n**Plans:** 0 plans\\n\\nPlans:\\n- [ ] TBD (run /maxsim:plan-phase ${newPhaseNum} to break down)\\n`;\r\n\r\n let updatedContent: string;\r\n const lastSeparator = content.lastIndexOf('\\n---');\r\n if (lastSeparator > 0) {\r\n updatedContent = content.slice(0, lastSeparator) + phaseEntry + content.slice(lastSeparator);\r\n } else {\r\n updatedContent = content + phaseEntry;\r\n }\r\n\r\n fs.writeFileSync(rmPath, updatedContent, 'utf-8');\r\n\r\n return {\r\n phase_number: newPhaseNum,\r\n padded: paddedNum,\r\n slug,\r\n directory: `.planning/phases/${dirName}`,\r\n description,\r\n };\r\n}\r\n\r\nexport function phaseInsertCore(cwd: string, afterPhase: string, description: string, options?: PhaseCreateOptions): PhaseInsertResult {\r\n const rmPath = roadmapPath(cwd);\r\n if (!fs.existsSync(rmPath)) {\r\n throw new Error('ROADMAP.md not found');\r\n }\r\n\r\n const content = fs.readFileSync(rmPath, 'utf-8');\r\n const slug = generateSlugInternal(description);\r\n\r\n const normalizedAfter = normalizePhaseName(afterPhase);\r\n const unpadded = normalizedAfter.replace(/^0+/, '');\r\n const afterPhaseEscaped = '0*' + unpadded.replace(/\\./g, '\\\\.');\r\n const targetPattern = getPhasePattern(afterPhaseEscaped, 'i');\r\n if (!targetPattern.test(content)) {\r\n throw new Error(`Phase ${afterPhase} not found in ROADMAP.md`);\r\n }\r\n\r\n const phasesDirPath = phasesPath(cwd);\r\n const normalizedBase = normalizePhaseName(afterPhase);\r\n const existingDecimals: number[] = [];\r\n\r\n try {\r\n const dirs = listSubDirs(phasesDirPath);\r\n const decimalPattern = new RegExp(`^${normalizedBase}\\\\.(\\\\d+)`);\r\n for (const dir of dirs) {\r\n const dm = dir.match(decimalPattern);\r\n if (dm) existingDecimals.push(parseInt(dm[1], 10));\r\n }\r\n } catch (e) {\r\n debugLog(e);\r\n }\r\n\r\n const nextDecimal = existingDecimals.length === 0 ? 1 : Math.max(...existingDecimals) + 1;\r\n const decimalPhase = `${normalizedBase}.${nextDecimal}`;\r\n const dirName = `${decimalPhase}-${slug}`;\r\n const dirPath = planningPath(cwd, 'phases', dirName);\r\n\r\n fs.mkdirSync(dirPath, { recursive: true });\r\n fs.writeFileSync(path.join(dirPath, '.gitkeep'), '');\r\n\r\n if (options?.includeStubs) {\r\n scaffoldPhaseStubs(dirPath, decimalPhase, description);\r\n }\r\n\r\n const phaseEntry = `\\n### Phase ${decimalPhase}: ${description} (INSERTED)\\n\\n**Goal:** [Urgent work - to be planned]\\n**Requirements**: TBD\\n**Depends on:** Phase ${afterPhase}\\n**Plans:** 0 plans\\n\\nPlans:\\n- [ ] TBD (run /maxsim:plan-phase ${decimalPhase} to break down)\\n`;\r\n\r\n const headerPattern = new RegExp(`(#{2,4}\\\\s*Phase\\\\s+0*${afterPhaseEscaped}:[^\\\\n]*\\\\n)`, 'i');\r\n const headerMatch = content.match(headerPattern);\r\n if (!headerMatch) {\r\n throw new Error(`Could not find Phase ${afterPhase} header`);\r\n }\r\n\r\n const headerIdx = content.indexOf(headerMatch[0]);\r\n const afterHeader = content.slice(headerIdx + headerMatch[0].length);\r\n const nextPhaseMatch = afterHeader.match(/\\n#{2,4}\\s+Phase\\s+\\d/i);\r\n\r\n let insertIdx: number;\r\n if (nextPhaseMatch) {\r\n insertIdx = headerIdx + headerMatch[0].length + nextPhaseMatch.index!;\r\n } else {\r\n insertIdx = content.length;\r\n }\r\n\r\n const updatedContent = content.slice(0, insertIdx) + phaseEntry + content.slice(insertIdx);\r\n fs.writeFileSync(rmPath, updatedContent, 'utf-8');\r\n\r\n return {\r\n phase_number: decimalPhase,\r\n after_phase: afterPhase,\r\n slug,\r\n directory: `.planning/phases/${dirName}`,\r\n description,\r\n };\r\n}\r\n\r\nexport function phaseCompleteCore(cwd: string, phaseNum: string): PhaseCompleteResult {\r\n const rmPath = roadmapPath(cwd);\r\n const stPath = statePath(cwd);\r\n const phasesDirPath = phasesPath(cwd);\r\n const today = todayISO();\r\n\r\n const phaseInfo = findPhaseInternal(cwd, phaseNum);\r\n if (!phaseInfo) {\r\n throw new Error(`Phase ${phaseNum} not found`);\r\n }\r\n\r\n const planCount = phaseInfo.plans.length;\r\n const summaryCount = phaseInfo.summaries.length;\r\n let requirementsUpdated = false;\r\n\r\n if (fs.existsSync(rmPath)) {\r\n let roadmapContent = fs.readFileSync(rmPath, 'utf-8');\r\n\r\n const checkboxPattern = new RegExp(\r\n `(-\\\\s*\\\\[)[ ](\\\\]\\\\s*.*Phase\\\\s+${escapePhaseNum(phaseNum)}[:\\\\s][^\\\\n]*)`,\r\n 'i',\r\n );\r\n roadmapContent = roadmapContent.replace(checkboxPattern, `$1x$2 (completed ${today})`);\r\n\r\n const phaseEscaped = escapePhaseNum(phaseNum);\r\n const tablePattern = new RegExp(\r\n `(\\\\|\\\\s*${phaseEscaped}\\\\.?\\\\s[^|]*\\\\|[^|]*\\\\|)\\\\s*[^|]*(\\\\|)\\\\s*[^|]*(\\\\|)`,\r\n 'i',\r\n );\r\n roadmapContent = roadmapContent.replace(\r\n tablePattern,\r\n `$1 Complete $2 ${today} $3`,\r\n );\r\n\r\n const planCountPattern = new RegExp(\r\n `(#{2,4}\\\\s*Phase\\\\s+${phaseEscaped}[\\\\s\\\\S]*?\\\\*\\\\*Plans:\\\\*\\\\*\\\\s*)[^\\\\n]+`,\r\n 'i',\r\n );\r\n roadmapContent = roadmapContent.replace(\r\n planCountPattern,\r\n `$1${summaryCount}/${planCount} plans complete`,\r\n );\r\n\r\n fs.writeFileSync(rmPath, roadmapContent, 'utf-8');\r\n\r\n // Update REQUIREMENTS.md\r\n const reqPath = planningPath(cwd, 'REQUIREMENTS.md');\r\n if (fs.existsSync(reqPath)) {\r\n const reqMatch = roadmapContent.match(\r\n new RegExp(`Phase\\\\s+${escapePhaseNum(phaseNum)}[\\\\s\\\\S]*?\\\\*\\\\*Requirements:\\\\*\\\\*\\\\s*([^\\\\n]+)`, 'i'),\r\n );\r\n\r\n if (reqMatch) {\r\n const reqIds = reqMatch[1].replace(/[\\[\\]]/g, '').split(/[,\\s]+/).map(r => r.trim()).filter(Boolean);\r\n let reqContent = fs.readFileSync(reqPath, 'utf-8');\r\n\r\n for (const reqId of reqIds) {\r\n reqContent = reqContent.replace(\r\n new RegExp(`(-\\\\s*\\\\[)[ ](\\\\]\\\\s*\\\\*\\\\*${reqId}\\\\*\\\\*)`, 'gi'),\r\n '$1x$2',\r\n );\r\n reqContent = reqContent.replace(\r\n new RegExp(`(\\\\|\\\\s*${reqId}\\\\s*\\\\|[^|]+\\\\|)\\\\s*Pending\\\\s*(\\\\|)`, 'gi'),\r\n '$1 Complete $2',\r\n );\r\n }\r\n\r\n fs.writeFileSync(reqPath, reqContent, 'utf-8');\r\n requirementsUpdated = true;\r\n }\r\n }\r\n }\r\n\r\n // Find next phase\r\n let nextPhaseNum: string | null = null;\r\n let nextPhaseName: string | null = null;\r\n let isLastPhase = true;\r\n\r\n try {\r\n const dirs = listSubDirs(phasesDirPath, true);\r\n\r\n for (const dir of dirs) {\r\n const dm = dir.match(/^(\\d+[A-Z]?(?:\\.\\d+)?)-?(.*)/i);\r\n if (dm) {\r\n if (comparePhaseNum(dm[1], phaseNum) > 0) {\r\n nextPhaseNum = dm[1];\r\n nextPhaseName = dm[2] || null;\r\n isLastPhase = false;\r\n break;\r\n }\r\n }\r\n }\r\n } catch (e) {\r\n debugLog(e);\r\n }\r\n\r\n // Update STATE.md\r\n if (fs.existsSync(stPath)) {\r\n let stateContent = fs.readFileSync(stPath, 'utf-8');\r\n\r\n stateContent = stateContent.replace(\r\n /(\\*\\*Current Phase:\\*\\*\\s*).*/,\r\n `$1${nextPhaseNum || phaseNum}`,\r\n );\r\n\r\n if (nextPhaseName) {\r\n stateContent = stateContent.replace(\r\n /(\\*\\*Current Phase Name:\\*\\*\\s*).*/,\r\n `$1${nextPhaseName.replace(/-/g, ' ')}`,\r\n );\r\n }\r\n\r\n stateContent = stateContent.replace(\r\n /(\\*\\*Status:\\*\\*\\s*).*/,\r\n `$1${isLastPhase ? 'Milestone complete' : 'Ready to plan'}`,\r\n );\r\n\r\n stateContent = stateContent.replace(\r\n /(\\*\\*Current Plan:\\*\\*\\s*).*/,\r\n `$1Not started`,\r\n );\r\n\r\n stateContent = stateContent.replace(\r\n /(\\*\\*Last Activity:\\*\\*\\s*).*/,\r\n `$1${today}`,\r\n );\r\n\r\n stateContent = stateContent.replace(\r\n /(\\*\\*Last Activity Description:\\*\\*\\s*).*/,\r\n `$1Phase ${phaseNum} complete${nextPhaseNum ? `, transitioned to Phase ${nextPhaseNum}` : ''}`,\r\n );\r\n\r\n fs.writeFileSync(stPath, stateContent, 'utf-8');\r\n }\r\n\r\n return {\r\n completed_phase: phaseNum,\r\n phase_name: phaseInfo.phase_name,\r\n plans_executed: `${summaryCount}/${planCount}`,\r\n next_phase: nextPhaseNum,\r\n next_phase_name: nextPhaseName,\r\n is_last_phase: isLastPhase,\r\n date: today,\r\n roadmap_updated: fs.existsSync(rmPath),\r\n state_updated: fs.existsSync(stPath),\r\n requirements_updated: requirementsUpdated,\r\n };\r\n}\r\n\r\n// ─── Phase list ─────────────────────────────────────────────────────────────\r\n\r\nexport function cmdPhasesList(cwd: string, options: PhasesListOptions, raw: boolean): void {\r\n const phasesDirPath = phasesPath(cwd);\r\n const { type, phase, includeArchived } = options;\r\n\r\n if (!fs.existsSync(phasesDirPath)) {\r\n if (type) {\r\n output({ files: [], count: 0 }, raw, '');\r\n } else {\r\n output({ directories: [], count: 0 }, raw, '');\r\n }\r\n return;\r\n }\r\n\r\n try {\r\n let dirs = listSubDirs(phasesDirPath);\r\n\r\n if (includeArchived) {\r\n const archived = getArchivedPhaseDirs(cwd);\r\n for (const a of archived) {\r\n dirs.push(`${a.name} [${a.milestone}]`);\r\n }\r\n }\r\n\r\n dirs.sort((a, b) => comparePhaseNum(a, b));\r\n\r\n if (phase) {\r\n const normalized = normalizePhaseName(phase);\r\n const match = dirs.find(d => d.startsWith(normalized));\r\n if (!match) {\r\n output({ files: [], count: 0, phase_dir: null, error: 'Phase not found' }, raw, '');\r\n return;\r\n }\r\n dirs = [match];\r\n }\r\n\r\n if (type) {\r\n const files: string[] = [];\r\n for (const dir of dirs) {\r\n const dirPath = path.join(phasesDirPath, dir);\r\n const dirFiles = fs.readdirSync(dirPath);\r\n\r\n let filtered: string[];\r\n if (type === 'plans') {\r\n filtered = dirFiles.filter(isPlanFile);\r\n } else if (type === 'summaries') {\r\n filtered = dirFiles.filter(isSummaryFile);\r\n } else {\r\n filtered = dirFiles;\r\n }\r\n\r\n files.push(...filtered.sort());\r\n }\r\n\r\n const result = {\r\n files,\r\n count: files.length,\r\n phase_dir: phase ? dirs[0].replace(/^\\d+(?:\\.\\d+)?-?/, '') : null,\r\n };\r\n output(result, raw, files.join('\\n'));\r\n return;\r\n }\r\n\r\n output({ directories: dirs, count: dirs.length }, raw, dirs.join('\\n'));\r\n } catch (e: unknown) {\r\n rethrowCliSignals(e);\r\n error('Failed to list phases: ' + (e as Error).message);\r\n }\r\n}\r\n\r\n// ─── Next decimal ───────────────────────────────────────────────────────────\r\n\r\nexport function cmdPhaseNextDecimal(cwd: string, basePhase: string, raw: boolean): void {\r\n const phasesDirPath = phasesPath(cwd);\r\n const normalized = normalizePhaseName(basePhase);\r\n\r\n if (!fs.existsSync(phasesDirPath)) {\r\n output(\r\n { found: false, base_phase: normalized, next: `${normalized}.1`, existing: [] },\r\n raw,\r\n `${normalized}.1`,\r\n );\r\n return;\r\n }\r\n\r\n try {\r\n const dirs = listSubDirs(phasesDirPath);\r\n\r\n const baseExists = dirs.some(d => d.startsWith(normalized + '-') || d === normalized);\r\n\r\n const decimalPattern = new RegExp(`^${normalized}\\\\.(\\\\d+)`);\r\n const existingDecimals: string[] = [];\r\n\r\n for (const dir of dirs) {\r\n const match = dir.match(decimalPattern);\r\n if (match) {\r\n existingDecimals.push(`${normalized}.${match[1]}`);\r\n }\r\n }\r\n\r\n existingDecimals.sort((a, b) => {\r\n const aNum = parseFloat(a);\r\n const bNum = parseFloat(b);\r\n return aNum - bNum;\r\n });\r\n\r\n let nextDecimal: string;\r\n if (existingDecimals.length === 0) {\r\n nextDecimal = `${normalized}.1`;\r\n } else {\r\n const lastDecimal = existingDecimals[existingDecimals.length - 1];\r\n const lastNum = parseInt(lastDecimal.split('.')[1], 10);\r\n nextDecimal = `${normalized}.${lastNum + 1}`;\r\n }\r\n\r\n output(\r\n { found: baseExists, base_phase: normalized, next: nextDecimal, existing: existingDecimals },\r\n raw,\r\n nextDecimal,\r\n );\r\n } catch (e: unknown) {\r\n rethrowCliSignals(e);\r\n error('Failed to calculate next decimal phase: ' + (e as Error).message);\r\n }\r\n}\r\n\r\n// ─── Find phase ─────────────────────────────────────────────────────────────\r\n\r\nexport function cmdFindPhase(cwd: string, phase: string | undefined, raw: boolean): void {\r\n if (!phase) {\r\n error('phase identifier required');\r\n }\r\n\r\n const phasesDirPath = phasesPath(cwd);\r\n const normalized = normalizePhaseName(phase);\r\n\r\n const notFound = { found: false, directory: null, phase_number: null, phase_name: null, plans: [] as string[], summaries: [] as string[] };\r\n\r\n try {\r\n const dirs = listSubDirs(phasesDirPath, true);\r\n\r\n const match = dirs.find(d => d.startsWith(normalized));\r\n if (!match) {\r\n output(notFound, raw, '');\r\n return;\r\n }\r\n\r\n const dirMatch = match.match(/^(\\d+[A-Z]?(?:\\.\\d+)?)-?(.*)/i);\r\n const phaseNumber = dirMatch ? dirMatch[1] : normalized;\r\n const phaseName = dirMatch && dirMatch[2] ? dirMatch[2] : null;\r\n\r\n const phaseDir = path.join(phasesDirPath, match);\r\n const phaseFiles = fs.readdirSync(phaseDir);\r\n const plans = phaseFiles.filter(isPlanFile).sort();\r\n const summaries = phaseFiles.filter(isSummaryFile).sort();\r\n\r\n const result = {\r\n found: true,\r\n directory: path.join('.planning', 'phases', match),\r\n phase_number: phaseNumber,\r\n phase_name: phaseName,\r\n plans,\r\n summaries,\r\n };\r\n\r\n output(result, raw, result.directory);\r\n } catch (e: unknown) {\r\n rethrowCliSignals(e);\r\n output(notFound, raw, '');\r\n }\r\n}\r\n\r\n// ─── Phase plan index ───────────────────────────────────────────────────────\r\n\r\nexport function cmdPhasePlanIndex(cwd: string, phase: string | undefined, raw: boolean): void {\r\n if (!phase) {\r\n error('phase required for phase-plan-index');\r\n }\r\n\r\n const phasesDirPath = phasesPath(cwd);\r\n const normalized = normalizePhaseName(phase);\r\n\r\n let phaseDir: string | null = null;\r\n let phaseDirName: string | null = null;\r\n try {\r\n const dirs = listSubDirs(phasesDirPath, true);\r\n const match = dirs.find(d => d.startsWith(normalized));\r\n if (match) {\r\n phaseDir = path.join(phasesDirPath, match);\r\n phaseDirName = match;\r\n }\r\n } catch (e) {\r\n /* optional op, ignore */\r\n debugLog(e);\r\n }\r\n\r\n if (!phaseDir) {\r\n output({ phase: normalized, error: 'Phase not found', plans: [], waves: {}, incomplete: [], has_checkpoints: false }, raw);\r\n return;\r\n }\r\n\r\n const phaseFiles = fs.readdirSync(phaseDir);\r\n const planFiles = phaseFiles.filter(isPlanFile).sort();\r\n const summaryFiles = phaseFiles.filter(isSummaryFile);\r\n\r\n const completedPlanIds = new Set(\r\n summaryFiles.map(summaryId),\r\n );\r\n\r\n const plans: Array<{\r\n id: string;\r\n wave: number;\r\n autonomous: boolean;\r\n objective: string | null;\r\n files_modified: string[];\r\n task_count: number;\r\n has_summary: boolean;\r\n }> = [];\r\n const waves: Record = {};\r\n const incomplete: string[] = [];\r\n let hasCheckpoints = false;\r\n\r\n for (const planFile of planFiles) {\r\n const id = planId(planFile);\r\n const planPath = path.join(phaseDir, planFile);\r\n const content = fs.readFileSync(planPath, 'utf-8');\r\n const fm = extractFrontmatter(content);\r\n\r\n const taskMatches = content.match(/##\\s*Task\\s*\\d+/gi) || [];\r\n const taskCount = taskMatches.length;\r\n\r\n const wave = parseInt(fm.wave as string, 10) || 1;\r\n\r\n let autonomous = true;\r\n if (fm.autonomous !== undefined) {\r\n autonomous = fm.autonomous === 'true' || fm.autonomous === true;\r\n }\r\n\r\n if (!autonomous) {\r\n hasCheckpoints = true;\r\n }\r\n\r\n let filesModified: string[] = [];\r\n if (fm['files-modified']) {\r\n filesModified = Array.isArray(fm['files-modified']) ? fm['files-modified'] as string[] : [fm['files-modified'] as string];\r\n }\r\n\r\n const hasSummary = completedPlanIds.has(id);\r\n if (!hasSummary) {\r\n incomplete.push(id);\r\n }\r\n\r\n const plan = {\r\n id,\r\n wave,\r\n autonomous,\r\n objective: (fm.objective as string) || null,\r\n files_modified: filesModified,\r\n task_count: taskCount,\r\n has_summary: hasSummary,\r\n };\r\n\r\n plans.push(plan);\r\n\r\n const waveKey = String(wave);\r\n if (!waves[waveKey]) {\r\n waves[waveKey] = [];\r\n }\r\n waves[waveKey].push(id);\r\n }\r\n\r\n output({ phase: normalized, plans, waves, incomplete, has_checkpoints: hasCheckpoints }, raw);\r\n}\r\n\r\n// ─── Phase add ──────────────────────────────────────────────────────────────\r\n\r\nexport function cmdPhaseAdd(cwd: string, description: string | undefined, raw: boolean): void {\r\n if (!description) {\r\n error('description required for phase add');\r\n }\r\n\r\n try {\r\n const result = phaseAddCore(cwd, description, { includeStubs: false });\r\n output(\r\n { phase_number: result.phase_number, padded: result.padded, name: result.description, slug: result.slug, directory: result.directory },\r\n raw,\r\n result.padded,\r\n );\r\n } catch (e) {\r\n rethrowCliSignals(e);\r\n error((e as Error).message);\r\n }\r\n}\r\n\r\n// ─── Phase insert ───────────────────────────────────────────────────────────\r\n\r\nexport function cmdPhaseInsert(cwd: string, afterPhase: string | undefined, description: string | undefined, raw: boolean): void {\r\n if (!afterPhase || !description) {\r\n error('after-phase and description required for phase insert');\r\n }\r\n\r\n try {\r\n const result = phaseInsertCore(cwd, afterPhase, description, { includeStubs: false });\r\n output(\r\n { phase_number: result.phase_number, after_phase: result.after_phase, name: result.description, slug: result.slug, directory: result.directory },\r\n raw,\r\n result.phase_number,\r\n );\r\n } catch (e) {\r\n rethrowCliSignals(e);\r\n error((e as Error).message);\r\n }\r\n}\r\n\r\n// ─── Phase remove ───────────────────────────────────────────────────────────\r\n\r\nexport function cmdPhaseRemove(\r\n cwd: string,\r\n targetPhase: string | undefined,\r\n options: { force: boolean },\r\n raw: boolean,\r\n): void {\r\n if (!targetPhase) {\r\n error('phase number required for phase remove');\r\n }\r\n\r\n const rmPath = roadmapPath(cwd);\r\n const phasesDirPath = phasesPath(cwd);\r\n const force = options.force || false;\r\n\r\n if (!fs.existsSync(rmPath)) {\r\n error('ROADMAP.md not found');\r\n }\r\n\r\n const normalized = normalizePhaseName(targetPhase);\r\n const isDecimal = targetPhase.includes('.');\r\n\r\n let targetDir: string | null = null;\r\n try {\r\n const dirs = listSubDirs(phasesDirPath, true);\r\n targetDir = dirs.find(d => d.startsWith(normalized + '-') || d === normalized) || null;\r\n } catch (e) {\r\n /* optional op, ignore */\r\n debugLog(e);\r\n }\r\n\r\n if (targetDir && !force) {\r\n const targetPath = path.join(phasesDirPath, targetDir);\r\n const files = fs.readdirSync(targetPath);\r\n const summaries = files.filter(isSummaryFile);\r\n if (summaries.length > 0) {\r\n error(`Phase ${targetPhase} has ${summaries.length} executed plan(s). Use --force to remove anyway.`);\r\n }\r\n }\r\n\r\n if (targetDir) {\r\n fs.rmSync(path.join(phasesDirPath, targetDir), { recursive: true, force: true });\r\n }\r\n\r\n const renamedDirs: Array<{ from: string; to: string }> = [];\r\n const renamedFiles: Array<{ from: string; to: string }> = [];\r\n\r\n if (isDecimal) {\r\n const baseParts = normalized.split('.');\r\n const baseInt = baseParts[0];\r\n const removedDecimal = parseInt(baseParts[1], 10);\r\n\r\n try {\r\n const dirs = listSubDirs(phasesDirPath, true);\r\n\r\n const decPattern = new RegExp(`^${baseInt}\\\\.(\\\\d+)-(.+)$`);\r\n const toRename: Array<{ dir: string; oldDecimal: number; slug: string }> = [];\r\n for (const dir of dirs) {\r\n const dm = dir.match(decPattern);\r\n if (dm && parseInt(dm[1], 10) > removedDecimal) {\r\n toRename.push({ dir, oldDecimal: parseInt(dm[1], 10), slug: dm[2] });\r\n }\r\n }\r\n\r\n toRename.sort((a, b) => b.oldDecimal - a.oldDecimal);\r\n\r\n for (const item of toRename) {\r\n const newDecimal = item.oldDecimal - 1;\r\n const oldPhaseId = `${baseInt}.${item.oldDecimal}`;\r\n const newPhaseId = `${baseInt}.${newDecimal}`;\r\n const newDirName = `${baseInt}.${newDecimal}-${item.slug}`;\r\n\r\n fs.renameSync(path.join(phasesDirPath, item.dir), path.join(phasesDirPath, newDirName));\r\n renamedDirs.push({ from: item.dir, to: newDirName });\r\n\r\n const dirFiles = fs.readdirSync(path.join(phasesDirPath, newDirName));\r\n for (const f of dirFiles) {\r\n if (f.includes(oldPhaseId)) {\r\n const newFileName = f.replace(oldPhaseId, newPhaseId);\r\n fs.renameSync(\r\n path.join(phasesDirPath, newDirName, f),\r\n path.join(phasesDirPath, newDirName, newFileName),\r\n );\r\n renamedFiles.push({ from: f, to: newFileName });\r\n }\r\n }\r\n }\r\n } catch (e) {\r\n /* optional op, ignore */\r\n debugLog(e);\r\n }\r\n } else {\r\n const removedInt = parseInt(normalized, 10);\r\n\r\n try {\r\n const dirs = listSubDirs(phasesDirPath, true);\r\n\r\n const toRename: Array<{ dir: string; oldInt: number; letter: string; decimal: number | null; slug: string }> = [];\r\n for (const dir of dirs) {\r\n const dm = dir.match(/^(\\d+)([A-Z])?(?:\\.(\\d+))?-(.+)$/i);\r\n if (!dm) continue;\r\n const dirInt = parseInt(dm[1], 10);\r\n if (dirInt > removedInt) {\r\n toRename.push({\r\n dir,\r\n oldInt: dirInt,\r\n letter: dm[2] ? dm[2].toUpperCase() : '',\r\n decimal: dm[3] ? parseInt(dm[3], 10) : null,\r\n slug: dm[4],\r\n });\r\n }\r\n }\r\n\r\n toRename.sort((a, b) => {\r\n if (a.oldInt !== b.oldInt) return b.oldInt - a.oldInt;\r\n return (b.decimal || 0) - (a.decimal || 0);\r\n });\r\n\r\n for (const item of toRename) {\r\n const newInt = item.oldInt - 1;\r\n const newPadded = String(newInt).padStart(2, '0');\r\n const oldPadded = String(item.oldInt).padStart(2, '0');\r\n const letterSuffix = item.letter || '';\r\n const decimalSuffix = item.decimal !== null ? `.${item.decimal}` : '';\r\n const oldPrefix = `${oldPadded}${letterSuffix}${decimalSuffix}`;\r\n const newPrefix = `${newPadded}${letterSuffix}${decimalSuffix}`;\r\n const newDirName = `${newPrefix}-${item.slug}`;\r\n\r\n fs.renameSync(path.join(phasesDirPath, item.dir), path.join(phasesDirPath, newDirName));\r\n renamedDirs.push({ from: item.dir, to: newDirName });\r\n\r\n const dirFiles = fs.readdirSync(path.join(phasesDirPath, newDirName));\r\n for (const f of dirFiles) {\r\n if (f.startsWith(oldPrefix)) {\r\n const newFileName = newPrefix + f.slice(oldPrefix.length);\r\n fs.renameSync(\r\n path.join(phasesDirPath, newDirName, f),\r\n path.join(phasesDirPath, newDirName, newFileName),\r\n );\r\n renamedFiles.push({ from: f, to: newFileName });\r\n }\r\n }\r\n }\r\n } catch (e) {\r\n /* optional op, ignore */\r\n debugLog(e);\r\n }\r\n }\r\n\r\n // Update ROADMAP.md\r\n let roadmapContent = fs.readFileSync(rmPath, 'utf-8');\r\n\r\n const targetEscaped = escapePhaseNum(targetPhase);\r\n const sectionPattern = new RegExp(\r\n `\\\\n?#{2,4}\\\\s*Phase\\\\s+${targetEscaped}\\\\s*:[\\\\s\\\\S]*?(?=\\\\n#{2,4}\\\\s+Phase\\\\s+\\\\d|$)`,\r\n 'i',\r\n );\r\n roadmapContent = roadmapContent.replace(sectionPattern, '');\r\n\r\n const checkboxPattern = new RegExp(`\\\\n?-\\\\s*\\\\[[ x]\\\\]\\\\s*.*Phase\\\\s+${targetEscaped}[:\\\\s][^\\\\n]*`, 'gi');\r\n roadmapContent = roadmapContent.replace(checkboxPattern, '');\r\n\r\n const tableRowPattern = new RegExp(`\\\\n?\\\\|\\\\s*${targetEscaped}\\\\.?\\\\s[^|]*\\\\|[^\\\\n]*`, 'gi');\r\n roadmapContent = roadmapContent.replace(tableRowPattern, '');\r\n\r\n if (!isDecimal) {\r\n const removedInt = parseInt(normalized, 10);\r\n const maxPhase = 99;\r\n for (let oldNum = maxPhase; oldNum > removedInt; oldNum--) {\r\n const newNum = oldNum - 1;\r\n const oldStr = String(oldNum);\r\n const newStr = String(newNum);\r\n const oldPad = oldStr.padStart(2, '0');\r\n const newPad = newStr.padStart(2, '0');\r\n\r\n roadmapContent = roadmapContent.replace(\r\n new RegExp(`(#{2,4}\\\\s*Phase\\\\s+)${oldStr}(\\\\s*:)`, 'gi'),\r\n `$1${newStr}$2`,\r\n );\r\n roadmapContent = roadmapContent.replace(\r\n new RegExp(`(Phase\\\\s+)${oldStr}([:\\\\s])`, 'g'),\r\n `$1${newStr}$2`,\r\n );\r\n roadmapContent = roadmapContent.replace(\r\n new RegExp(`${oldPad}-(\\\\d{2})`, 'g'),\r\n `${newPad}-$1`,\r\n );\r\n roadmapContent = roadmapContent.replace(\r\n new RegExp(`(\\\\|\\\\s*)${oldStr}\\\\.\\\\s`, 'g'),\r\n `$1${newStr}. `,\r\n );\r\n roadmapContent = roadmapContent.replace(\r\n new RegExp(`(Depends on:\\\\*\\\\*\\\\s*Phase\\\\s+)${oldStr}\\\\b`, 'gi'),\r\n `$1${newStr}`,\r\n );\r\n }\r\n }\r\n\r\n fs.writeFileSync(rmPath, roadmapContent, 'utf-8');\r\n\r\n // Update STATE.md phase count\r\n const stPath = statePath(cwd);\r\n if (fs.existsSync(stPath)) {\r\n let stateContent = fs.readFileSync(stPath, 'utf-8');\r\n const totalPattern = /(\\*\\*Total Phases:\\*\\*\\s*)(\\d+)/;\r\n const totalMatch = stateContent.match(totalPattern);\r\n if (totalMatch) {\r\n const oldTotal = parseInt(totalMatch[2], 10);\r\n stateContent = stateContent.replace(totalPattern, `$1${oldTotal - 1}`);\r\n }\r\n const ofPattern = /(\\bof\\s+)(\\d+)(\\s*(?:\\(|phases?))/i;\r\n const ofMatch = stateContent.match(ofPattern);\r\n if (ofMatch) {\r\n const oldTotal = parseInt(ofMatch[2], 10);\r\n stateContent = stateContent.replace(ofPattern, `$1${oldTotal - 1}$3`);\r\n }\r\n fs.writeFileSync(stPath, stateContent, 'utf-8');\r\n }\r\n\r\n output({\r\n removed: targetPhase,\r\n directory_deleted: targetDir || null,\r\n renamed_directories: renamedDirs,\r\n renamed_files: renamedFiles,\r\n roadmap_updated: true,\r\n state_updated: fs.existsSync(stPath),\r\n }, raw);\r\n}\r\n\r\n// ─── Phase complete ─────────────────────────────────────────────────────────\r\n\r\nexport function cmdPhaseComplete(cwd: string, phaseNum: string | undefined, raw: boolean): void {\r\n if (!phaseNum) {\r\n error('phase number required for phase complete');\r\n }\r\n\r\n try {\r\n const result = phaseCompleteCore(cwd, phaseNum);\r\n output({\r\n completed_phase: result.completed_phase,\r\n phase_name: result.phase_name,\r\n plans_executed: result.plans_executed,\r\n next_phase: result.next_phase,\r\n next_phase_name: result.next_phase_name,\r\n is_last_phase: result.is_last_phase,\r\n date: result.date,\r\n roadmap_updated: result.roadmap_updated,\r\n state_updated: result.state_updated,\r\n }, raw);\r\n } catch (e) {\r\n rethrowCliSignals(e);\r\n error((e as Error).message);\r\n }\r\n}\r\n","/**\r\n * Template — Template selection and fill operations\r\n *\r\n * Ported from maxsim/bin/lib/template.cjs\r\n */\r\n\r\nimport fs from 'node:fs';\r\nimport path from 'node:path';\r\n\r\nimport {\r\n normalizePhaseName,\r\n findPhaseInternal,\r\n generateSlugInternal,\r\n output,\r\n error,\r\n todayISO,\r\n} from './core.js';\r\nimport { reconstructFrontmatter } from './frontmatter.js';\r\nimport type { FrontmatterData } from './types.js';\r\n\r\n// ─── Interfaces ──────────────────────────────────────────────────────────────\r\n\r\nexport interface TemplateSelectResult {\r\n template: string;\r\n type: 'minimal' | 'standard' | 'complex';\r\n taskCount: number;\r\n fileCount: number;\r\n hasDecisions: boolean;\r\n error?: string;\r\n}\r\n\r\nexport interface TemplateFillOptions {\r\n phase: string;\r\n name?: string;\r\n plan?: string;\r\n type?: string;\r\n wave?: string;\r\n fields?: FrontmatterData;\r\n}\r\n\r\nexport interface TemplateFillResult {\r\n created: boolean;\r\n path: string;\r\n template: string;\r\n}\r\n\r\n// ─── Template Select ─────────────────────────────────────────────────────────\r\n\r\nexport function cmdTemplateSelect(cwd: string, planPath: string | null, raw: boolean): void {\r\n if (!planPath) {\r\n error('plan-path required');\r\n }\r\n\r\n try {\r\n const fullPath = path.join(cwd, planPath);\r\n const content = fs.readFileSync(fullPath, 'utf-8');\r\n\r\n const taskMatch = content.match(/###\\s*Task\\s*\\d+/g) || [];\r\n const taskCount = taskMatch.length;\r\n\r\n const decisionMatch = content.match(/decision/gi) || [];\r\n const hasDecisions = decisionMatch.length > 0;\r\n\r\n const fileMentions = new Set();\r\n const filePattern = /`([^`]+\\.[a-zA-Z]+)`/g;\r\n let m: RegExpExecArray | null;\r\n while ((m = filePattern.exec(content)) !== null) {\r\n if (m[1].includes('/') && !m[1].startsWith('http')) {\r\n fileMentions.add(m[1]);\r\n }\r\n }\r\n const fileCount = fileMentions.size;\r\n\r\n let template = 'templates/summary-standard.md';\r\n let type: 'minimal' | 'standard' | 'complex' = 'standard';\r\n\r\n if (taskCount <= 2 && fileCount <= 3 && !hasDecisions) {\r\n template = 'templates/summary-minimal.md';\r\n type = 'minimal';\r\n } else if (hasDecisions || fileCount > 6 || taskCount > 5) {\r\n template = 'templates/summary-complex.md';\r\n type = 'complex';\r\n }\r\n\r\n const result: TemplateSelectResult = { template, type, taskCount, fileCount, hasDecisions };\r\n output(result, raw, template);\r\n } catch (thrown: unknown) {\r\n const selectErr = thrown as Error;\r\n output(\r\n { template: 'templates/summary-standard.md', type: 'standard', error: selectErr.message } as TemplateSelectResult,\r\n raw,\r\n 'templates/summary-standard.md',\r\n );\r\n }\r\n}\r\n\r\n// ─── Template Fill ───────────────────────────────────────────────────────────\r\n\r\nexport function cmdTemplateFill(\r\n cwd: string,\r\n templateType: string | null,\r\n options: TemplateFillOptions,\r\n raw: boolean,\r\n): void {\r\n if (!templateType) {\r\n error('template type required: summary, plan, or verification');\r\n }\r\n if (!options.phase) {\r\n error('--phase required');\r\n }\r\n\r\n const phaseInfo = findPhaseInternal(cwd, options.phase);\r\n if (!phaseInfo) {\r\n output({ error: 'Phase not found', phase: options.phase }, raw);\r\n return;\r\n }\r\n\r\n const padded = normalizePhaseName(options.phase);\r\n const today = todayISO();\r\n const phaseName = options.name || phaseInfo.phase_name || 'Unnamed';\r\n const phaseSlug = phaseInfo.phase_slug || generateSlugInternal(phaseName);\r\n const phaseId = `${padded}-${phaseSlug}`;\r\n const planNum = (options.plan || '01').padStart(2, '0');\r\n const fields = options.fields || {};\r\n\r\n let frontmatter: FrontmatterData;\r\n let body: string;\r\n let fileName: string;\r\n\r\n switch (templateType) {\r\n case 'summary': {\r\n frontmatter = {\r\n phase: phaseId,\r\n plan: planNum,\r\n subsystem: '[primary category]',\r\n tags: [],\r\n provides: [],\r\n affects: [],\r\n 'tech-stack': { added: [], patterns: [] },\r\n 'key-files': { created: [], modified: [] },\r\n 'key-decisions': [],\r\n 'patterns-established': [],\r\n duration: '[X]min',\r\n completed: today,\r\n ...fields,\r\n };\r\n body = [\r\n `# Phase ${options.phase}: ${phaseName} Summary`,\r\n '',\r\n '**[Substantive one-liner describing outcome]**',\r\n '',\r\n '## Performance',\r\n '- **Duration:** [time]',\r\n '- **Tasks:** [count completed]',\r\n '- **Files modified:** [count]',\r\n '',\r\n '## Accomplishments',\r\n '- [Key outcome 1]',\r\n '- [Key outcome 2]',\r\n '',\r\n '## Task Commits',\r\n '1. **Task 1: [task name]** - `hash`',\r\n '',\r\n '## Files Created/Modified',\r\n '- `path/to/file.ts` - What it does',\r\n '',\r\n '## Decisions & Deviations',\r\n '[Key decisions or \"None - followed plan as specified\"]',\r\n '',\r\n '## Next Phase Readiness',\r\n '[What\\'s ready for next phase]',\r\n ].join('\\n');\r\n fileName = `${padded}-${planNum}-SUMMARY.md`;\r\n break;\r\n }\r\n case 'plan': {\r\n const planType = options.type || 'execute';\r\n const wave = parseInt(options.wave || '1') || 1;\r\n frontmatter = {\r\n phase: phaseId,\r\n plan: planNum,\r\n type: planType,\r\n wave,\r\n depends_on: [],\r\n files_modified: [],\r\n autonomous: true,\r\n user_setup: [],\r\n must_haves: { truths: [], artifacts: [], key_links: [] },\r\n ...fields,\r\n };\r\n body = [\r\n `# Phase ${options.phase} Plan ${planNum}: [Title]`,\r\n '',\r\n '## Objective',\r\n '- **What:** [What this plan builds]',\r\n '- **Why:** [Why it matters for the phase goal]',\r\n '- **Output:** [Concrete deliverable]',\r\n '',\r\n '## Context',\r\n '@.planning/PROJECT.md',\r\n '@.planning/ROADMAP.md',\r\n '@.planning/STATE.md',\r\n '',\r\n '## Tasks',\r\n '',\r\n '',\r\n ' [Task name]',\r\n ' [file paths]',\r\n ' [What to do]',\r\n ' [How to verify]',\r\n ' [Definition of done]',\r\n '',\r\n '',\r\n '## Verification',\r\n '[How to verify this plan achieved its objective]',\r\n '',\r\n '## Success Criteria',\r\n '- [ ] [Criterion 1]',\r\n '- [ ] [Criterion 2]',\r\n ].join('\\n');\r\n fileName = `${padded}-${planNum}-PLAN.md`;\r\n break;\r\n }\r\n case 'verification': {\r\n frontmatter = {\r\n phase: phaseId,\r\n verified: new Date().toISOString(),\r\n status: 'pending',\r\n score: '0/0 must-haves verified',\r\n ...fields,\r\n };\r\n body = [\r\n `# Phase ${options.phase}: ${phaseName} — Verification`,\r\n '',\r\n '## Observable Truths',\r\n '| # | Truth | Status | Evidence |',\r\n '|---|-------|--------|----------|',\r\n '| 1 | [Truth] | pending | |',\r\n '',\r\n '## Required Artifacts',\r\n '| Artifact | Expected | Status | Details |',\r\n '|----------|----------|--------|---------|',\r\n '| [path] | [what] | pending | |',\r\n '',\r\n '## Key Link Verification',\r\n '| From | To | Via | Status | Details |',\r\n '|------|----|----|--------|---------|',\r\n '| [source] | [target] | [connection] | pending | |',\r\n '',\r\n '## Requirements Coverage',\r\n '| Requirement | Status | Blocking Issue |',\r\n '|-------------|--------|----------------|',\r\n '| [req] | pending | |',\r\n '',\r\n '## Result',\r\n '[Pending verification]',\r\n ].join('\\n');\r\n fileName = `${padded}-VERIFICATION.md`;\r\n break;\r\n }\r\n default:\r\n error(`Unknown template type: ${templateType}. Available: summary, plan, verification`);\r\n return;\r\n }\r\n\r\n const fullContent = `---\\n${reconstructFrontmatter(frontmatter)}\\n---\\n\\n${body}\\n`;\r\n const outPath = path.join(cwd, phaseInfo.directory, fileName);\r\n\r\n if (fs.existsSync(outPath)) {\r\n output({ error: 'File already exists', path: path.relative(cwd, outPath) }, raw);\r\n return;\r\n }\r\n\r\n fs.writeFileSync(outPath, fullContent, 'utf-8');\r\n const relPath = path.relative(cwd, outPath);\r\n const result: TemplateFillResult = { created: true, path: relPath, template: templateType };\r\n output(result, raw, relPath);\r\n}\r\n","/**\r\n * Dashboard Launcher — Shared dashboard lifecycle utilities\r\n *\r\n * Used by both cli.ts (tool-router) and install.ts (npx entry point).\r\n */\r\n\r\nimport fs from 'node:fs';\r\nimport path from 'node:path';\r\nimport os from 'node:os';\r\nimport { spawn, execSync } from 'node:child_process';\r\nimport { createRequire } from 'node:module';\r\n\r\n// ─── Constants ──────────────────────────────────────────────────────────────\r\n\r\nexport const DEFAULT_PORT = 3333;\r\nexport const PORT_RANGE_END = 3343;\r\nexport const HEALTH_TIMEOUT_MS = 1500;\r\n\r\n// ─── Health check ───────────────────────────────────────────────────────────\r\n\r\n/**\r\n * Check if a dashboard health endpoint is responding on the given port.\r\n */\r\nexport async function checkHealth(port: number, timeoutMs: number = HEALTH_TIMEOUT_MS): Promise {\r\n try {\r\n const controller = new AbortController();\r\n const timer = setTimeout(() => controller.abort(), timeoutMs);\r\n const res = await fetch(`http://localhost:${port}/api/health`, {\r\n signal: controller.signal,\r\n });\r\n clearTimeout(timer);\r\n if (res.ok) {\r\n const data = await res.json() as { status?: string };\r\n return data.status === 'ok';\r\n }\r\n return false;\r\n } catch {\r\n return false;\r\n }\r\n}\r\n\r\n/**\r\n * Scan the port range for a running dashboard instance.\r\n * Returns the port number if found, null otherwise.\r\n */\r\nexport async function findRunningDashboard(timeoutMs: number = HEALTH_TIMEOUT_MS): Promise {\r\n for (let port = DEFAULT_PORT; port <= PORT_RANGE_END; port++) {\r\n const running = await checkHealth(port, timeoutMs);\r\n if (running) return port;\r\n }\r\n return null;\r\n}\r\n\r\n// ─── Process management ─────────────────────────────────────────────────────\r\n\r\n/**\r\n * Kill processes listening on the given port. Cross-platform.\r\n */\r\nexport function killProcessOnPort(port: number): void {\r\n if (process.platform === 'win32') {\r\n try {\r\n const result = execSync(`netstat -ano | findstr :${port} | findstr LISTENING`, {\r\n encoding: 'utf-8',\r\n }).trim();\r\n const lines = result.split('\\n');\r\n const pids = new Set();\r\n for (const line of lines) {\r\n const parts = line.trim().split(/\\s+/);\r\n const pid = parts[parts.length - 1];\r\n if (pid && pid !== '0') pids.add(pid);\r\n }\r\n for (const pid of pids) {\r\n try {\r\n execSync(`taskkill /PID ${pid} /F`, { stdio: 'ignore' });\r\n } catch {\r\n // Process may have already exited\r\n }\r\n }\r\n } catch {\r\n // No process found on port or command failed\r\n }\r\n } else {\r\n try {\r\n execSync(`lsof -i :${port} -t | xargs kill -SIGTERM 2>/dev/null`, { stdio: 'ignore' });\r\n } catch {\r\n // No process found on port or command failed\r\n }\r\n }\r\n}\r\n\r\n// ─── Server resolution ──────────────────────────────────────────────────────\r\n\r\n/**\r\n * Resolve the dashboard server entry point path.\r\n * Tries: local project install, global install, @maxsim/dashboard package, monorepo walk.\r\n */\r\nexport function resolveDashboardServer(): string | null {\r\n // Strategy 0: Installed standalone build (production path)\r\n const localDashboard = path.join(process.cwd(), '.claude', 'dashboard', 'server.js');\r\n if (fs.existsSync(localDashboard)) return localDashboard;\r\n const globalDashboard = path.join(os.homedir(), '.claude', 'dashboard', 'server.js');\r\n if (fs.existsSync(globalDashboard)) return globalDashboard;\r\n\r\n // Strategy 1: Resolve from @maxsim/dashboard package\r\n try {\r\n const require_ = createRequire(import.meta.url);\r\n const pkgPath = require_.resolve('@maxsim/dashboard/package.json');\r\n const pkgDir = path.dirname(pkgPath);\r\n\r\n const serverJs = path.join(pkgDir, 'server.js');\r\n if (fs.existsSync(serverJs)) return serverJs;\r\n\r\n const serverTs = path.join(pkgDir, 'server.ts');\r\n if (fs.existsSync(serverTs)) return serverTs;\r\n } catch {\r\n // @maxsim/dashboard not resolvable\r\n }\r\n\r\n // Strategy 2: Walk up from this file to find the monorepo root\r\n try {\r\n let dir = path.dirname(new URL(import.meta.url).pathname);\r\n // On Windows, remove leading / from /C:/...\r\n if (process.platform === 'win32' && dir.startsWith('/')) {\r\n dir = dir.slice(1);\r\n }\r\n for (let i = 0; i < 5; i++) {\r\n const candidate = path.join(dir, 'packages', 'dashboard', 'server.ts');\r\n if (fs.existsSync(candidate)) return candidate;\r\n const candidateJs = path.join(dir, 'packages', 'dashboard', 'server.js');\r\n if (fs.existsSync(candidateJs)) return candidateJs;\r\n dir = path.dirname(dir);\r\n }\r\n } catch {\r\n // Fallback walk failed\r\n }\r\n\r\n return null;\r\n}\r\n\r\n// ─── node-pty installation ──────────────────────────────────────────────────\r\n\r\n/**\r\n * Ensure node-pty is installed in the dashboard directory.\r\n * Returns true if node-pty is available after this call.\r\n */\r\nexport function ensureNodePty(serverDir: string): boolean {\r\n const ptyModulePath = path.join(serverDir, 'node_modules', 'node-pty');\r\n if (fs.existsSync(ptyModulePath)) return true;\r\n\r\n // Ensure a package.json exists so npm install works\r\n const dashPkgPath = path.join(serverDir, 'package.json');\r\n if (!fs.existsSync(dashPkgPath)) {\r\n fs.writeFileSync(dashPkgPath, '{\"private\":true}\\n');\r\n }\r\n\r\n try {\r\n execSync('npm install node-pty --save-optional --no-audit --no-fund --loglevel=error', {\r\n cwd: serverDir,\r\n stdio: 'inherit',\r\n timeout: 120_000,\r\n });\r\n return true;\r\n } catch {\r\n return false;\r\n }\r\n}\r\n\r\n// ─── Dashboard config ───────────────────────────────────────────────────────\r\n\r\nexport interface DashboardConfig {\r\n projectCwd: string;\r\n networkMode: boolean;\r\n}\r\n\r\n/**\r\n * Read dashboard.json config from the parent directory of the dashboard dir.\r\n */\r\nexport function readDashboardConfig(serverPath: string): DashboardConfig {\r\n const dashboardDir = path.dirname(serverPath);\r\n const dashboardConfigPath = path.join(path.dirname(dashboardDir), 'dashboard.json');\r\n let projectCwd = process.cwd();\r\n let networkMode = false;\r\n\r\n if (fs.existsSync(dashboardConfigPath)) {\r\n try {\r\n const config = JSON.parse(fs.readFileSync(dashboardConfigPath, 'utf8')) as {\r\n projectCwd?: string;\r\n networkMode?: boolean;\r\n };\r\n if (config.projectCwd) projectCwd = config.projectCwd;\r\n networkMode = config.networkMode ?? false;\r\n } catch {\r\n // Use defaults\r\n }\r\n }\r\n\r\n return { projectCwd, networkMode };\r\n}\r\n\r\n// ─── Spawn ──────────────────────────────────────────────────────────────────\r\n\r\nexport interface SpawnDashboardOptions {\r\n serverPath: string;\r\n projectCwd: string;\r\n networkMode?: boolean;\r\n nodeEnv?: string;\r\n}\r\n\r\n/**\r\n * Spawn the dashboard server as a detached background process.\r\n * Returns the child process PID, or null if spawn failed.\r\n */\r\nexport function spawnDashboard(options: SpawnDashboardOptions): number | null {\r\n const { serverPath, projectCwd, networkMode = false, nodeEnv = 'production' } = options;\r\n const serverDir = path.dirname(serverPath);\r\n\r\n const isTsFile = serverPath.endsWith('.ts');\r\n const runner = 'node';\r\n const runnerArgs: string[] = isTsFile ? ['--import', 'tsx', serverPath] : [serverPath];\r\n\r\n const child = spawn(runner, runnerArgs, {\r\n cwd: serverDir,\r\n detached: true,\r\n stdio: 'ignore',\r\n env: {\r\n ...process.env,\r\n MAXSIM_PROJECT_CWD: projectCwd,\r\n MAXSIM_NETWORK_MODE: networkMode ? '1' : '0',\r\n NODE_ENV: isTsFile ? 'development' : nodeEnv,\r\n },\r\n // On Windows, use shell to ensure detached works correctly\r\n ...(process.platform === 'win32' ? { shell: true } : {}),\r\n });\r\n\r\n child.unref();\r\n return child.pid ?? null;\r\n}\r\n\r\n// ─── Poll for readiness ─────────────────────────────────────────────────────\r\n\r\n/**\r\n * Poll the port range until a dashboard health endpoint responds.\r\n * Returns the URL if found within the timeout, null otherwise.\r\n */\r\nexport async function waitForDashboard(\r\n pollIntervalMs: number = 500,\r\n pollTimeoutMs: number = 20000,\r\n healthTimeoutMs: number = 1000,\r\n): Promise {\r\n const deadline = Date.now() + pollTimeoutMs;\r\n\r\n while (Date.now() < deadline) {\r\n await new Promise(r => setTimeout(r, pollIntervalMs));\r\n for (let p = DEFAULT_PORT; p <= PORT_RANGE_END; p++) {\r\n const running = await checkHealth(p, healthTimeoutMs);\r\n if (running) return `http://localhost:${p}`;\r\n }\r\n }\r\n return null;\r\n}\r\n","/**\r\n * Init — Compound init commands for workflow bootstrapping\r\n *\r\n * Ported from maxsim/bin/lib/init.cjs\r\n */\r\n\r\nimport fs from 'node:fs';\r\nimport path from 'node:path';\r\nimport os from 'node:os';\r\nimport { execSync } from 'node:child_process';\r\n\r\nimport {\r\n loadConfig,\r\n resolveModelInternal,\r\n findPhaseInternal,\r\n getRoadmapPhaseInternal,\r\n pathExistsInternal,\r\n generateSlugInternal,\r\n getMilestoneInfo,\r\n output,\r\n error,\r\n debugLog,\r\n planningPath,\r\n phasesPath,\r\n todayISO,\r\n listSubDirs,\r\n isSummaryFile,\r\n isPlanFile,\r\n} from './core.js';\r\n\r\nimport type {\r\n AgentType,\r\n BranchingStrategy,\r\n ModelResolution,\r\n PhaseSearchResult,\r\n MilestoneInfo,\r\n AppConfig,\r\n} from './types.js';\r\n\r\n// ─── Init result types ──────────────────────────────────────────────────────\r\n\r\nexport type WorkflowType =\r\n | 'execute-phase'\r\n | 'plan-phase'\r\n | 'new-project'\r\n | 'new-milestone'\r\n | 'quick'\r\n | 'resume'\r\n | 'verify-work'\r\n | 'phase-op'\r\n | 'todos'\r\n | 'milestone-op'\r\n | 'map-codebase'\r\n | 'init-existing'\r\n | 'progress';\r\n\r\nexport interface ExecutePhaseContext {\r\n executor_model: ModelResolution;\r\n verifier_model: ModelResolution;\r\n commit_docs: boolean;\r\n parallelization: boolean;\r\n branching_strategy: BranchingStrategy;\r\n phase_branch_template: string;\r\n milestone_branch_template: string;\r\n verifier_enabled: boolean;\r\n phase_found: boolean;\r\n phase_dir: string | null;\r\n phase_number: string | null;\r\n phase_name: string | null;\r\n phase_slug: string | null;\r\n phase_req_ids: string | null;\r\n plans: string[];\r\n summaries: string[];\r\n incomplete_plans: string[];\r\n plan_count: number;\r\n incomplete_count: number;\r\n branch_name: string | null;\r\n milestone_version: string;\r\n milestone_name: string;\r\n milestone_slug: string | null;\r\n state_exists: boolean;\r\n roadmap_exists: boolean;\r\n config_exists: boolean;\r\n state_path: string;\r\n roadmap_path: string;\r\n config_path: string;\r\n}\r\n\r\nexport interface PlanPhaseContext {\r\n researcher_model: ModelResolution;\r\n planner_model: ModelResolution;\r\n checker_model: ModelResolution;\r\n research_enabled: boolean;\r\n plan_checker_enabled: boolean;\r\n commit_docs: boolean;\r\n phase_found: boolean;\r\n phase_dir: string | null;\r\n phase_number: string | null;\r\n phase_name: string | null;\r\n phase_slug: string | null;\r\n padded_phase: string | null;\r\n phase_req_ids: string | null;\r\n has_research: boolean;\r\n has_context: boolean;\r\n has_plans: boolean;\r\n plan_count: number;\r\n planning_exists: boolean;\r\n roadmap_exists: boolean;\r\n state_path: string;\r\n roadmap_path: string;\r\n requirements_path: string;\r\n context_path?: string;\r\n research_path?: string;\r\n verification_path?: string;\r\n uat_path?: string;\r\n}\r\n\r\nexport interface NewProjectContext {\r\n researcher_model: ModelResolution;\r\n synthesizer_model: ModelResolution;\r\n roadmapper_model: ModelResolution;\r\n commit_docs: boolean;\r\n project_exists: boolean;\r\n has_codebase_map: boolean;\r\n planning_exists: boolean;\r\n has_existing_code: boolean;\r\n has_package_file: boolean;\r\n is_brownfield: boolean;\r\n needs_codebase_map: boolean;\r\n has_git: boolean;\r\n brave_search_available: boolean;\r\n project_path: string;\r\n}\r\n\r\nexport interface NewMilestoneContext {\r\n researcher_model: ModelResolution;\r\n synthesizer_model: ModelResolution;\r\n roadmapper_model: ModelResolution;\r\n commit_docs: boolean;\r\n research_enabled: boolean;\r\n current_milestone: string;\r\n current_milestone_name: string;\r\n project_exists: boolean;\r\n roadmap_exists: boolean;\r\n state_exists: boolean;\r\n project_path: string;\r\n roadmap_path: string;\r\n state_path: string;\r\n}\r\n\r\nexport interface QuickContext {\r\n planner_model: ModelResolution;\r\n executor_model: ModelResolution;\r\n checker_model: ModelResolution;\r\n verifier_model: ModelResolution;\r\n commit_docs: boolean;\r\n next_num: number;\r\n slug: string | null;\r\n description: string | null;\r\n date: string;\r\n timestamp: string;\r\n quick_dir: string;\r\n task_dir: string | null;\r\n roadmap_exists: boolean;\r\n planning_exists: boolean;\r\n}\r\n\r\nexport interface ResumeContext {\r\n state_exists: boolean;\r\n roadmap_exists: boolean;\r\n project_exists: boolean;\r\n planning_exists: boolean;\r\n state_path: string;\r\n roadmap_path: string;\r\n project_path: string;\r\n has_interrupted_agent: boolean;\r\n interrupted_agent_id: string | null;\r\n commit_docs: boolean;\r\n}\r\n\r\nexport interface VerifyWorkContext {\r\n planner_model: ModelResolution;\r\n checker_model: ModelResolution;\r\n commit_docs: boolean;\r\n phase_found: boolean;\r\n phase_dir: string | null;\r\n phase_number: string | null;\r\n phase_name: string | null;\r\n has_verification: boolean;\r\n}\r\n\r\nexport interface PhaseOpContext {\r\n commit_docs: boolean;\r\n brave_search: boolean;\r\n phase_found: boolean;\r\n phase_dir: string | null;\r\n phase_number: string | null;\r\n phase_name: string | null;\r\n phase_slug: string | null;\r\n padded_phase: string | null;\r\n has_research: boolean;\r\n has_context: boolean;\r\n has_plans: boolean;\r\n has_verification: boolean;\r\n plan_count: number;\r\n roadmap_exists: boolean;\r\n planning_exists: boolean;\r\n state_path: string;\r\n roadmap_path: string;\r\n requirements_path: string;\r\n context_path?: string;\r\n research_path?: string;\r\n verification_path?: string;\r\n uat_path?: string;\r\n}\r\n\r\nexport interface TodosContext {\r\n commit_docs: boolean;\r\n date: string;\r\n timestamp: string;\r\n todo_count: number;\r\n todos: Array<{\r\n file: string;\r\n created: string;\r\n title: string;\r\n area: string;\r\n path: string;\r\n }>;\r\n area_filter: string | null;\r\n pending_dir: string;\r\n completed_dir: string;\r\n planning_exists: boolean;\r\n todos_dir_exists: boolean;\r\n pending_dir_exists: boolean;\r\n}\r\n\r\nexport interface MilestoneOpContext {\r\n commit_docs: boolean;\r\n milestone_version: string;\r\n milestone_name: string;\r\n milestone_slug: string | null;\r\n phase_count: number;\r\n completed_phases: number;\r\n all_phases_complete: boolean;\r\n archived_milestones: string[];\r\n archive_count: number;\r\n project_exists: boolean;\r\n roadmap_exists: boolean;\r\n state_exists: boolean;\r\n archive_exists: boolean;\r\n phases_dir_exists: boolean;\r\n}\r\n\r\nexport interface MapCodebaseContext {\r\n mapper_model: ModelResolution;\r\n commit_docs: boolean;\r\n search_gitignored: boolean;\r\n parallelization: boolean;\r\n codebase_dir: string;\r\n existing_maps: string[];\r\n has_maps: boolean;\r\n planning_exists: boolean;\r\n codebase_dir_exists: boolean;\r\n}\r\n\r\nexport interface InitExistingContext {\r\n researcher_model: ModelResolution;\r\n synthesizer_model: ModelResolution;\r\n roadmapper_model: ModelResolution;\r\n mapper_model: ModelResolution;\r\n commit_docs: boolean;\r\n project_exists: boolean;\r\n planning_exists: boolean;\r\n planning_files: string[];\r\n has_codebase_map: boolean;\r\n has_existing_code: boolean;\r\n has_package_file: boolean;\r\n has_git: boolean;\r\n has_readme: boolean;\r\n conflict_detected: boolean;\r\n existing_file_count: number;\r\n brave_search_available: boolean;\r\n parallelization: boolean;\r\n project_path: string;\r\n codebase_dir: string;\r\n}\r\n\r\ninterface ProgressPhaseInfo {\r\n number: string;\r\n name: string | null;\r\n directory: string;\r\n status: string;\r\n plan_count: number;\r\n summary_count: number;\r\n has_research: boolean;\r\n}\r\n\r\nexport interface ProgressContext {\r\n executor_model: ModelResolution;\r\n planner_model: ModelResolution;\r\n commit_docs: boolean;\r\n milestone_version: string;\r\n milestone_name: string;\r\n phases: ProgressPhaseInfo[];\r\n phase_count: number;\r\n completed_count: number;\r\n in_progress_count: number;\r\n current_phase: ProgressPhaseInfo | null;\r\n next_phase: ProgressPhaseInfo | null;\r\n paused_at: string | null;\r\n has_work_in_progress: boolean;\r\n project_exists: boolean;\r\n roadmap_exists: boolean;\r\n state_exists: boolean;\r\n state_path: string;\r\n roadmap_path: string;\r\n project_path: string;\r\n config_path: string;\r\n}\r\n\r\nexport type InitContext =\r\n | ExecutePhaseContext\r\n | PlanPhaseContext\r\n | NewProjectContext\r\n | NewMilestoneContext\r\n | QuickContext\r\n | ResumeContext\r\n | VerifyWorkContext\r\n | PhaseOpContext\r\n | TodosContext\r\n | MilestoneOpContext\r\n | MapCodebaseContext\r\n | InitExistingContext\r\n | ProgressContext;\r\n\r\n// ─── Helper: extract requirement IDs from roadmap phase section ─────────────\r\n\r\nfunction extractReqIds(cwd: string, phase: string): string | null {\r\n const roadmapPhase = getRoadmapPhaseInternal(cwd, phase);\r\n const reqMatch = roadmapPhase?.section?.match(/^\\*\\*Requirements\\*\\*:[^\\S\\n]*([^\\n]*)$/m);\r\n const reqExtracted = reqMatch\r\n ? reqMatch[1].replace(/[\\[\\]]/g, '').split(',').map((s: string) => s.trim()).filter(Boolean).join(', ')\r\n : null;\r\n return (reqExtracted && reqExtracted !== 'TBD') ? reqExtracted : null;\r\n}\r\n\r\n// ─── Helper: scan phase dir for artifact files ──────────────────────────────\r\n\r\ninterface PhaseArtifacts {\r\n context_path?: string;\r\n research_path?: string;\r\n verification_path?: string;\r\n uat_path?: string;\r\n}\r\n\r\nfunction scanPhaseArtifacts(cwd: string, phaseDirectory: string): PhaseArtifacts {\r\n const result: PhaseArtifacts = {};\r\n const phaseDirFull = path.join(cwd, phaseDirectory);\r\n try {\r\n const files = fs.readdirSync(phaseDirFull);\r\n const contextFile = files.find(f => f.endsWith('-CONTEXT.md') || f === 'CONTEXT.md');\r\n if (contextFile) {\r\n result.context_path = path.join(phaseDirectory, contextFile);\r\n }\r\n const researchFile = files.find(f => f.endsWith('-RESEARCH.md') || f === 'RESEARCH.md');\r\n if (researchFile) {\r\n result.research_path = path.join(phaseDirectory, researchFile);\r\n }\r\n const verificationFile = files.find(f => f.endsWith('-VERIFICATION.md') || f === 'VERIFICATION.md');\r\n if (verificationFile) {\r\n result.verification_path = path.join(phaseDirectory, verificationFile);\r\n }\r\n const uatFile = files.find(f => f.endsWith('-UAT.md') || f === 'UAT.md');\r\n if (uatFile) {\r\n result.uat_path = path.join(phaseDirectory, uatFile);\r\n }\r\n } catch (e) {\r\n /* optional op, ignore */\r\n debugLog(e);\r\n }\r\n return result;\r\n}\r\n\r\n// ─── Init commands ──────────────────────────────────────────────────────────\r\n\r\nexport function cmdInitExecutePhase(cwd: string, phase: string | undefined, raw: boolean): void {\r\n if (!phase) {\r\n error('phase required for init execute-phase');\r\n }\r\n\r\n const config = loadConfig(cwd);\r\n const phaseInfo = findPhaseInternal(cwd, phase!);\r\n const milestone = getMilestoneInfo(cwd);\r\n const phase_req_ids = extractReqIds(cwd, phase!);\r\n\r\n const result: ExecutePhaseContext = {\r\n executor_model: resolveModelInternal(cwd, 'maxsim-executor'),\r\n verifier_model: resolveModelInternal(cwd, 'maxsim-verifier'),\r\n commit_docs: config.commit_docs,\r\n parallelization: config.parallelization,\r\n branching_strategy: config.branching_strategy,\r\n phase_branch_template: config.phase_branch_template,\r\n milestone_branch_template: config.milestone_branch_template,\r\n verifier_enabled: config.verifier,\r\n phase_found: !!phaseInfo,\r\n phase_dir: phaseInfo?.directory ?? null,\r\n phase_number: phaseInfo?.phase_number ?? null,\r\n phase_name: phaseInfo?.phase_name ?? null,\r\n phase_slug: phaseInfo?.phase_slug ?? null,\r\n phase_req_ids,\r\n plans: phaseInfo?.plans ?? [],\r\n summaries: phaseInfo?.summaries ?? [],\r\n incomplete_plans: phaseInfo?.incomplete_plans ?? [],\r\n plan_count: phaseInfo?.plans?.length ?? 0,\r\n incomplete_count: phaseInfo?.incomplete_plans?.length ?? 0,\r\n branch_name: config.branching_strategy === 'phase' && phaseInfo\r\n ? config.phase_branch_template\r\n .replace('{phase}', phaseInfo.phase_number)\r\n .replace('{slug}', phaseInfo.phase_slug || 'phase')\r\n : config.branching_strategy === 'milestone'\r\n ? config.milestone_branch_template\r\n .replace('{milestone}', milestone.version)\r\n .replace('{slug}', generateSlugInternal(milestone.name) || 'milestone')\r\n : null,\r\n milestone_version: milestone.version,\r\n milestone_name: milestone.name,\r\n milestone_slug: generateSlugInternal(milestone.name),\r\n state_exists: pathExistsInternal(cwd, '.planning/STATE.md'),\r\n roadmap_exists: pathExistsInternal(cwd, '.planning/ROADMAP.md'),\r\n config_exists: pathExistsInternal(cwd, '.planning/config.json'),\r\n state_path: '.planning/STATE.md',\r\n roadmap_path: '.planning/ROADMAP.md',\r\n config_path: '.planning/config.json',\r\n };\r\n\r\n output(result, raw);\r\n}\r\n\r\nexport function cmdInitPlanPhase(cwd: string, phase: string | undefined, raw: boolean): void {\r\n if (!phase) {\r\n error('phase required for init plan-phase');\r\n }\r\n\r\n const config = loadConfig(cwd);\r\n const phaseInfo = findPhaseInternal(cwd, phase!);\r\n const phase_req_ids = extractReqIds(cwd, phase!);\r\n\r\n const result: PlanPhaseContext = {\r\n researcher_model: resolveModelInternal(cwd, 'maxsim-phase-researcher'),\r\n planner_model: resolveModelInternal(cwd, 'maxsim-planner'),\r\n checker_model: resolveModelInternal(cwd, 'maxsim-plan-checker'),\r\n research_enabled: config.research,\r\n plan_checker_enabled: config.plan_checker,\r\n commit_docs: config.commit_docs,\r\n phase_found: !!phaseInfo,\r\n phase_dir: phaseInfo?.directory ?? null,\r\n phase_number: phaseInfo?.phase_number ?? null,\r\n phase_name: phaseInfo?.phase_name ?? null,\r\n phase_slug: phaseInfo?.phase_slug ?? null,\r\n padded_phase: phaseInfo?.phase_number?.padStart(2, '0') ?? null,\r\n phase_req_ids,\r\n has_research: phaseInfo?.has_research ?? false,\r\n has_context: phaseInfo?.has_context ?? false,\r\n has_plans: (phaseInfo?.plans?.length ?? 0) > 0,\r\n plan_count: phaseInfo?.plans?.length ?? 0,\r\n planning_exists: pathExistsInternal(cwd, '.planning'),\r\n roadmap_exists: pathExistsInternal(cwd, '.planning/ROADMAP.md'),\r\n state_path: '.planning/STATE.md',\r\n roadmap_path: '.planning/ROADMAP.md',\r\n requirements_path: '.planning/REQUIREMENTS.md',\r\n };\r\n\r\n if (phaseInfo?.directory) {\r\n const artifacts = scanPhaseArtifacts(cwd, phaseInfo.directory);\r\n if (artifacts.context_path) result.context_path = artifacts.context_path;\r\n if (artifacts.research_path) result.research_path = artifacts.research_path;\r\n if (artifacts.verification_path) result.verification_path = artifacts.verification_path;\r\n if (artifacts.uat_path) result.uat_path = artifacts.uat_path;\r\n }\r\n\r\n output(result, raw);\r\n}\r\n\r\nexport function cmdInitNewProject(cwd: string, raw: boolean): void {\r\n const config = loadConfig(cwd);\r\n\r\n const homedir = os.homedir();\r\n const braveKeyFile = path.join(homedir, '.maxsim', 'brave_api_key');\r\n const hasBraveSearch = !!(process.env.BRAVE_API_KEY || fs.existsSync(braveKeyFile));\r\n\r\n let hasCode = false;\r\n let hasPackageFile = false;\r\n try {\r\n const files = execSync('find . -maxdepth 3 \\\\( -name \"*.ts\" -o -name \"*.js\" -o -name \"*.py\" -o -name \"*.go\" -o -name \"*.rs\" -o -name \"*.swift\" -o -name \"*.java\" \\\\) 2>/dev/null | grep -v node_modules | grep -v .git | head -5', {\r\n cwd,\r\n encoding: 'utf-8',\r\n stdio: ['pipe', 'pipe', 'pipe'],\r\n });\r\n hasCode = files.trim().length > 0;\r\n } catch (e) {\r\n /* optional op, ignore */\r\n debugLog(e);\r\n }\r\n\r\n hasPackageFile = pathExistsInternal(cwd, 'package.json') ||\r\n pathExistsInternal(cwd, 'requirements.txt') ||\r\n pathExistsInternal(cwd, 'Cargo.toml') ||\r\n pathExistsInternal(cwd, 'go.mod') ||\r\n pathExistsInternal(cwd, 'Package.swift');\r\n\r\n const result: NewProjectContext = {\r\n researcher_model: resolveModelInternal(cwd, 'maxsim-project-researcher'),\r\n synthesizer_model: resolveModelInternal(cwd, 'maxsim-research-synthesizer'),\r\n roadmapper_model: resolveModelInternal(cwd, 'maxsim-roadmapper'),\r\n commit_docs: config.commit_docs,\r\n project_exists: pathExistsInternal(cwd, '.planning/PROJECT.md'),\r\n has_codebase_map: pathExistsInternal(cwd, '.planning/codebase'),\r\n planning_exists: pathExistsInternal(cwd, '.planning'),\r\n has_existing_code: hasCode,\r\n has_package_file: hasPackageFile,\r\n is_brownfield: hasCode || hasPackageFile,\r\n needs_codebase_map: (hasCode || hasPackageFile) && !pathExistsInternal(cwd, '.planning/codebase'),\r\n has_git: pathExistsInternal(cwd, '.git'),\r\n brave_search_available: hasBraveSearch,\r\n project_path: '.planning/PROJECT.md',\r\n };\r\n\r\n output(result, raw);\r\n}\r\n\r\nexport function cmdInitNewMilestone(cwd: string, raw: boolean): void {\r\n const config = loadConfig(cwd);\r\n const milestone = getMilestoneInfo(cwd);\r\n\r\n const result: NewMilestoneContext = {\r\n researcher_model: resolveModelInternal(cwd, 'maxsim-project-researcher'),\r\n synthesizer_model: resolveModelInternal(cwd, 'maxsim-research-synthesizer'),\r\n roadmapper_model: resolveModelInternal(cwd, 'maxsim-roadmapper'),\r\n commit_docs: config.commit_docs,\r\n research_enabled: config.research,\r\n current_milestone: milestone.version,\r\n current_milestone_name: milestone.name,\r\n project_exists: pathExistsInternal(cwd, '.planning/PROJECT.md'),\r\n roadmap_exists: pathExistsInternal(cwd, '.planning/ROADMAP.md'),\r\n state_exists: pathExistsInternal(cwd, '.planning/STATE.md'),\r\n project_path: '.planning/PROJECT.md',\r\n roadmap_path: '.planning/ROADMAP.md',\r\n state_path: '.planning/STATE.md',\r\n };\r\n\r\n output(result, raw);\r\n}\r\n\r\nexport function cmdInitQuick(cwd: string, description: string | undefined, raw: boolean): void {\r\n const config = loadConfig(cwd);\r\n const now = new Date();\r\n const slug = description ? generateSlugInternal(description)?.substring(0, 40) ?? null : null;\r\n\r\n const quickDir = planningPath(cwd, 'quick');\r\n let nextNum = 1;\r\n try {\r\n const existing = fs.readdirSync(quickDir)\r\n .filter(f => /^\\d+-/.test(f))\r\n .map(f => parseInt(f.split('-')[0], 10))\r\n .filter(n => !isNaN(n));\r\n if (existing.length > 0) {\r\n nextNum = Math.max(...existing) + 1;\r\n }\r\n } catch (e) {\r\n /* optional op, ignore */\r\n debugLog(e);\r\n }\r\n\r\n const result: QuickContext = {\r\n planner_model: resolveModelInternal(cwd, 'maxsim-planner'),\r\n executor_model: resolveModelInternal(cwd, 'maxsim-executor'),\r\n checker_model: resolveModelInternal(cwd, 'maxsim-plan-checker'),\r\n verifier_model: resolveModelInternal(cwd, 'maxsim-verifier'),\r\n commit_docs: config.commit_docs,\r\n next_num: nextNum,\r\n slug,\r\n description: description ?? null,\r\n date: todayISO(),\r\n timestamp: now.toISOString(),\r\n quick_dir: '.planning/quick',\r\n task_dir: slug ? `.planning/quick/${nextNum}-${slug}` : null,\r\n roadmap_exists: pathExistsInternal(cwd, '.planning/ROADMAP.md'),\r\n planning_exists: pathExistsInternal(cwd, '.planning'),\r\n };\r\n\r\n output(result, raw);\r\n}\r\n\r\nexport function cmdInitResume(cwd: string, raw: boolean): void {\r\n const config = loadConfig(cwd);\r\n\r\n let interruptedAgentId: string | null = null;\r\n try {\r\n interruptedAgentId = fs.readFileSync(planningPath(cwd, 'current-agent-id.txt'), 'utf-8').trim();\r\n } catch (e) {\r\n /* optional op, ignore */\r\n debugLog(e);\r\n }\r\n\r\n const result: ResumeContext = {\r\n state_exists: pathExistsInternal(cwd, '.planning/STATE.md'),\r\n roadmap_exists: pathExistsInternal(cwd, '.planning/ROADMAP.md'),\r\n project_exists: pathExistsInternal(cwd, '.planning/PROJECT.md'),\r\n planning_exists: pathExistsInternal(cwd, '.planning'),\r\n state_path: '.planning/STATE.md',\r\n roadmap_path: '.planning/ROADMAP.md',\r\n project_path: '.planning/PROJECT.md',\r\n has_interrupted_agent: !!interruptedAgentId,\r\n interrupted_agent_id: interruptedAgentId,\r\n commit_docs: config.commit_docs,\r\n };\r\n\r\n output(result, raw);\r\n}\r\n\r\nexport function cmdInitVerifyWork(cwd: string, phase: string | undefined, raw: boolean): void {\r\n if (!phase) {\r\n error('phase required for init verify-work');\r\n }\r\n\r\n const config = loadConfig(cwd);\r\n const phaseInfo = findPhaseInternal(cwd, phase!);\r\n\r\n const result: VerifyWorkContext = {\r\n planner_model: resolveModelInternal(cwd, 'maxsim-planner'),\r\n checker_model: resolveModelInternal(cwd, 'maxsim-plan-checker'),\r\n commit_docs: config.commit_docs,\r\n phase_found: !!phaseInfo,\r\n phase_dir: phaseInfo?.directory ?? null,\r\n phase_number: phaseInfo?.phase_number ?? null,\r\n phase_name: phaseInfo?.phase_name ?? null,\r\n has_verification: phaseInfo?.has_verification ?? false,\r\n };\r\n\r\n output(result, raw);\r\n}\r\n\r\nexport function cmdInitPhaseOp(cwd: string, phase: string | undefined, raw: boolean): void {\r\n const config = loadConfig(cwd);\r\n let phaseInfo = findPhaseInternal(cwd, phase ?? '');\r\n\r\n if (!phaseInfo) {\r\n const roadmapPhase = getRoadmapPhaseInternal(cwd, phase ?? '');\r\n if (roadmapPhase?.found) {\r\n const phaseName = roadmapPhase.phase_name;\r\n phaseInfo = {\r\n found: true,\r\n directory: '', // no directory yet\r\n phase_number: roadmapPhase.phase_number,\r\n phase_name: phaseName,\r\n phase_slug: phaseName ? phaseName.toLowerCase().replace(/[^a-z0-9]+/g, '-').replace(/^-+|-+$/g, '') : null,\r\n plans: [],\r\n summaries: [],\r\n incomplete_plans: [],\r\n has_research: false,\r\n has_context: false,\r\n has_verification: false,\r\n };\r\n }\r\n }\r\n\r\n const result: PhaseOpContext = {\r\n commit_docs: config.commit_docs,\r\n brave_search: config.brave_search,\r\n phase_found: !!phaseInfo,\r\n phase_dir: phaseInfo?.directory || null,\r\n phase_number: phaseInfo?.phase_number ?? null,\r\n phase_name: phaseInfo?.phase_name ?? null,\r\n phase_slug: phaseInfo?.phase_slug ?? null,\r\n padded_phase: phaseInfo?.phase_number?.padStart(2, '0') ?? null,\r\n has_research: phaseInfo?.has_research ?? false,\r\n has_context: phaseInfo?.has_context ?? false,\r\n has_plans: (phaseInfo?.plans?.length ?? 0) > 0,\r\n has_verification: phaseInfo?.has_verification ?? false,\r\n plan_count: phaseInfo?.plans?.length ?? 0,\r\n roadmap_exists: pathExistsInternal(cwd, '.planning/ROADMAP.md'),\r\n planning_exists: pathExistsInternal(cwd, '.planning'),\r\n state_path: '.planning/STATE.md',\r\n roadmap_path: '.planning/ROADMAP.md',\r\n requirements_path: '.planning/REQUIREMENTS.md',\r\n };\r\n\r\n if (phaseInfo?.directory) {\r\n const artifacts = scanPhaseArtifacts(cwd, phaseInfo.directory);\r\n if (artifacts.context_path) result.context_path = artifacts.context_path;\r\n if (artifacts.research_path) result.research_path = artifacts.research_path;\r\n if (artifacts.verification_path) result.verification_path = artifacts.verification_path;\r\n if (artifacts.uat_path) result.uat_path = artifacts.uat_path;\r\n }\r\n\r\n output(result, raw);\r\n}\r\n\r\nexport function cmdInitTodos(cwd: string, area: string | undefined, raw: boolean): void {\r\n const config = loadConfig(cwd);\r\n const now = new Date();\r\n\r\n const pendingDir = planningPath(cwd, 'todos', 'pending');\r\n let count = 0;\r\n const todos: Array<{ file: string; created: string; title: string; area: string; path: string }> = [];\r\n\r\n try {\r\n const files = fs.readdirSync(pendingDir).filter(f => f.endsWith('.md'));\r\n for (const file of files) {\r\n try {\r\n const content = fs.readFileSync(path.join(pendingDir, file), 'utf-8');\r\n const createdMatch = content.match(/^created:\\s*(.+)$/m);\r\n const titleMatch = content.match(/^title:\\s*(.+)$/m);\r\n const areaMatch = content.match(/^area:\\s*(.+)$/m);\r\n const todoArea = areaMatch ? areaMatch[1].trim() : 'general';\r\n\r\n if (area && todoArea !== area) continue;\r\n\r\n count++;\r\n todos.push({\r\n file,\r\n created: createdMatch ? createdMatch[1].trim() : 'unknown',\r\n title: titleMatch ? titleMatch[1].trim() : 'Untitled',\r\n area: todoArea,\r\n path: path.join('.planning', 'todos', 'pending', file),\r\n });\r\n } catch (e) {\r\n /* optional op, ignore */\r\n debugLog(e);\r\n }\r\n }\r\n } catch (e) {\r\n /* optional op, ignore */\r\n debugLog(e);\r\n }\r\n\r\n const result: TodosContext = {\r\n commit_docs: config.commit_docs,\r\n date: todayISO(),\r\n timestamp: now.toISOString(),\r\n todo_count: count,\r\n todos,\r\n area_filter: area ?? null,\r\n pending_dir: '.planning/todos/pending',\r\n completed_dir: '.planning/todos/completed',\r\n planning_exists: pathExistsInternal(cwd, '.planning'),\r\n todos_dir_exists: pathExistsInternal(cwd, '.planning/todos'),\r\n pending_dir_exists: pathExistsInternal(cwd, '.planning/todos/pending'),\r\n };\r\n\r\n output(result, raw);\r\n}\r\n\r\nexport function cmdInitMilestoneOp(cwd: string, raw: boolean): void {\r\n const config = loadConfig(cwd);\r\n const milestone = getMilestoneInfo(cwd);\r\n\r\n let phaseCount = 0;\r\n let completedPhases = 0;\r\n const phasesDir = phasesPath(cwd);\r\n try {\r\n const dirs = listSubDirs(phasesDir);\r\n phaseCount = dirs.length;\r\n\r\n for (const dir of dirs) {\r\n try {\r\n const phaseFiles = fs.readdirSync(path.join(phasesDir, dir));\r\n const hasSummary = phaseFiles.some(f => isSummaryFile(f));\r\n if (hasSummary) completedPhases++;\r\n } catch (e) {\r\n /* optional op, ignore */\r\n debugLog(e);\r\n }\r\n }\r\n } catch (e) {\r\n /* optional op, ignore */\r\n debugLog(e);\r\n }\r\n\r\n const archiveDir = planningPath(cwd, 'archive');\r\n let archivedMilestones: string[] = [];\r\n try {\r\n archivedMilestones = listSubDirs(archiveDir);\r\n } catch (e) {\r\n /* optional op, ignore */\r\n debugLog(e);\r\n }\r\n\r\n const result: MilestoneOpContext = {\r\n commit_docs: config.commit_docs,\r\n milestone_version: milestone.version,\r\n milestone_name: milestone.name,\r\n milestone_slug: generateSlugInternal(milestone.name),\r\n phase_count: phaseCount,\r\n completed_phases: completedPhases,\r\n all_phases_complete: phaseCount > 0 && phaseCount === completedPhases,\r\n archived_milestones: archivedMilestones,\r\n archive_count: archivedMilestones.length,\r\n project_exists: pathExistsInternal(cwd, '.planning/PROJECT.md'),\r\n roadmap_exists: pathExistsInternal(cwd, '.planning/ROADMAP.md'),\r\n state_exists: pathExistsInternal(cwd, '.planning/STATE.md'),\r\n archive_exists: pathExistsInternal(cwd, '.planning/archive'),\r\n phases_dir_exists: pathExistsInternal(cwd, '.planning/phases'),\r\n };\r\n\r\n output(result, raw);\r\n}\r\n\r\nexport function cmdInitMapCodebase(cwd: string, raw: boolean): void {\r\n const config = loadConfig(cwd);\r\n\r\n const codebaseDir = planningPath(cwd, 'codebase');\r\n let existingMaps: string[] = [];\r\n try {\r\n existingMaps = fs.readdirSync(codebaseDir).filter(f => f.endsWith('.md'));\r\n } catch (e) {\r\n /* optional op, ignore */\r\n debugLog(e);\r\n }\r\n\r\n const result: MapCodebaseContext = {\r\n mapper_model: resolveModelInternal(cwd, 'maxsim-codebase-mapper'),\r\n commit_docs: config.commit_docs,\r\n search_gitignored: config.search_gitignored,\r\n parallelization: config.parallelization,\r\n codebase_dir: '.planning/codebase',\r\n existing_maps: existingMaps,\r\n has_maps: existingMaps.length > 0,\r\n planning_exists: pathExistsInternal(cwd, '.planning'),\r\n codebase_dir_exists: pathExistsInternal(cwd, '.planning/codebase'),\r\n };\r\n\r\n output(result, raw);\r\n}\r\n\r\nexport function cmdInitExisting(cwd: string, raw: boolean): void {\r\n const config = loadConfig(cwd);\r\n\r\n const homedir = os.homedir();\r\n const braveKeyFile = path.join(homedir, '.maxsim', 'brave_api_key');\r\n const hasBraveSearch = !!(process.env.BRAVE_API_KEY || fs.existsSync(braveKeyFile));\r\n\r\n // Detect existing code (same logic as cmdInitNewProject)\r\n let hasCode = false;\r\n let hasPackageFile = false;\r\n try {\r\n const files = execSync(\r\n 'find . -maxdepth 3 \\\\( -name \"*.ts\" -o -name \"*.js\" -o -name \"*.py\" -o -name \"*.go\" -o -name \"*.rs\" -o -name \"*.swift\" -o -name \"*.java\" \\\\) 2>/dev/null | grep -v node_modules | grep -v .git | head -5',\r\n { cwd, encoding: 'utf-8', stdio: ['pipe', 'pipe', 'pipe'] }\r\n );\r\n hasCode = files.trim().length > 0;\r\n } catch (e) {\r\n debugLog(e);\r\n }\r\n\r\n hasPackageFile =\r\n pathExistsInternal(cwd, 'package.json') ||\r\n pathExistsInternal(cwd, 'requirements.txt') ||\r\n pathExistsInternal(cwd, 'Cargo.toml') ||\r\n pathExistsInternal(cwd, 'go.mod') ||\r\n pathExistsInternal(cwd, 'Package.swift');\r\n\r\n // Detect existing .planning/ content for conflict dialog\r\n let planningFiles: string[] = [];\r\n try {\r\n const planDir = planningPath(cwd);\r\n if (fs.existsSync(planDir)) {\r\n planningFiles = fs\r\n .readdirSync(planDir, { recursive: true })\r\n .map((f) => String(f))\r\n .filter((f) => !f.startsWith('.'));\r\n }\r\n } catch (e) {\r\n debugLog(e);\r\n }\r\n\r\n const result: InitExistingContext = {\r\n researcher_model: resolveModelInternal(cwd, 'maxsim-project-researcher'),\r\n synthesizer_model: resolveModelInternal(cwd, 'maxsim-research-synthesizer'),\r\n roadmapper_model: resolveModelInternal(cwd, 'maxsim-roadmapper'),\r\n mapper_model: resolveModelInternal(cwd, 'maxsim-codebase-mapper'),\r\n commit_docs: config.commit_docs,\r\n project_exists: pathExistsInternal(cwd, '.planning/PROJECT.md'),\r\n planning_exists: pathExistsInternal(cwd, '.planning'),\r\n planning_files: planningFiles,\r\n has_codebase_map: pathExistsInternal(cwd, '.planning/codebase'),\r\n has_existing_code: hasCode,\r\n has_package_file: hasPackageFile,\r\n has_git: pathExistsInternal(cwd, '.git'),\r\n has_readme: pathExistsInternal(cwd, 'README.md'),\r\n conflict_detected: planningFiles.length > 0,\r\n existing_file_count: planningFiles.length,\r\n brave_search_available: hasBraveSearch,\r\n parallelization: config.parallelization,\r\n project_path: '.planning/PROJECT.md',\r\n codebase_dir: '.planning/codebase',\r\n };\r\n\r\n output(result, raw);\r\n}\r\n\r\nexport function cmdInitProgress(cwd: string, raw: boolean): void {\r\n const config = loadConfig(cwd);\r\n const milestone = getMilestoneInfo(cwd);\r\n\r\n const progressPhasesDir = phasesPath(cwd);\r\n const phases: ProgressPhaseInfo[] = [];\r\n let currentPhase: ProgressPhaseInfo | null = null;\r\n let nextPhase: ProgressPhaseInfo | null = null;\r\n\r\n try {\r\n const dirs = listSubDirs(progressPhasesDir, true);\r\n\r\n for (const dir of dirs) {\r\n const match = dir.match(/^(\\d+(?:\\.\\d+)?)-?(.*)/);\r\n const phaseNumber = match ? match[1] : dir;\r\n const phaseName = match && match[2] ? match[2] : null;\r\n\r\n const phaseDirPath = path.join(progressPhasesDir, dir);\r\n const phaseFiles = fs.readdirSync(phaseDirPath);\r\n\r\n const plans = phaseFiles.filter(f => isPlanFile(f));\r\n const summaries = phaseFiles.filter(f => isSummaryFile(f));\r\n const hasResearch = phaseFiles.some(f => f.endsWith('-RESEARCH.md') || f === 'RESEARCH.md');\r\n\r\n const status = summaries.length >= plans.length && plans.length > 0 ? 'complete' :\r\n plans.length > 0 ? 'in_progress' :\r\n hasResearch ? 'researched' : 'pending';\r\n\r\n const phaseInfo: ProgressPhaseInfo = {\r\n number: phaseNumber,\r\n name: phaseName,\r\n directory: path.join('.planning', 'phases', dir),\r\n status,\r\n plan_count: plans.length,\r\n summary_count: summaries.length,\r\n has_research: hasResearch,\r\n };\r\n\r\n phases.push(phaseInfo);\r\n\r\n if (!currentPhase && (status === 'in_progress' || status === 'researched')) {\r\n currentPhase = phaseInfo;\r\n }\r\n if (!nextPhase && status === 'pending') {\r\n nextPhase = phaseInfo;\r\n }\r\n }\r\n } catch (e) {\r\n /* optional op, ignore */\r\n debugLog(e);\r\n }\r\n\r\n let pausedAt: string | null = null;\r\n try {\r\n const state = fs.readFileSync(planningPath(cwd, 'STATE.md'), 'utf-8');\r\n const pauseMatch = state.match(/\\*\\*Paused At:\\*\\*\\s*(.+)/);\r\n if (pauseMatch) pausedAt = pauseMatch[1].trim();\r\n } catch (e) {\r\n /* optional op, ignore */\r\n debugLog(e);\r\n }\r\n\r\n const result: ProgressContext = {\r\n executor_model: resolveModelInternal(cwd, 'maxsim-executor'),\r\n planner_model: resolveModelInternal(cwd, 'maxsim-planner'),\r\n commit_docs: config.commit_docs,\r\n milestone_version: milestone.version,\r\n milestone_name: milestone.name,\r\n phases,\r\n phase_count: phases.length,\r\n completed_count: phases.filter(p => p.status === 'complete').length,\r\n in_progress_count: phases.filter(p => p.status === 'in_progress').length,\r\n current_phase: currentPhase,\r\n next_phase: nextPhase,\r\n paused_at: pausedAt,\r\n has_work_in_progress: !!currentPhase,\r\n project_exists: pathExistsInternal(cwd, '.planning/PROJECT.md'),\r\n roadmap_exists: pathExistsInternal(cwd, '.planning/ROADMAP.md'),\r\n state_exists: pathExistsInternal(cwd, '.planning/STATE.md'),\r\n state_path: '.planning/STATE.md',\r\n roadmap_path: '.planning/ROADMAP.md',\r\n project_path: '.planning/PROJECT.md',\r\n config_path: '.planning/config.json',\r\n };\r\n\r\n output(result, raw);\r\n}\r\n","/**\r\n * MAXSIM Tools — CLI utility for MAXSIM workflow operations\r\n *\r\n * Usage: node maxsim-tools.cjs [args] [--raw]\r\n */\r\n\r\nimport * as fs from 'node:fs';\r\nimport * as path from 'node:path';\r\nimport { spawn } from 'node:child_process';\r\n\r\nimport type { TimestampFormat } from './core/index.js';\r\n\r\nimport {\r\n error,\r\n CliOutput,\r\n CliError,\r\n writeOutput,\r\n cmdFrontmatterGet,\r\n cmdFrontmatterSet,\r\n cmdFrontmatterMerge,\r\n cmdFrontmatterValidate,\r\n cmdConfigEnsureSection,\r\n cmdConfigSet,\r\n cmdConfigGet,\r\n cmdGenerateSlug,\r\n cmdCurrentTimestamp,\r\n cmdListTodos,\r\n cmdVerifyPathExists,\r\n cmdHistoryDigest,\r\n cmdResolveModel,\r\n cmdCommit,\r\n cmdSummaryExtract,\r\n cmdWebsearch,\r\n cmdProgressRender,\r\n cmdTodoComplete,\r\n cmdScaffold,\r\n cmdStateLoad,\r\n cmdStateGet,\r\n cmdStatePatch,\r\n cmdStateUpdate,\r\n cmdStateAdvancePlan,\r\n cmdStateRecordMetric,\r\n cmdStateUpdateProgress,\r\n cmdStateAddDecision,\r\n cmdStateAddBlocker,\r\n cmdStateResolveBlocker,\r\n cmdStateRecordSession,\r\n cmdStateSnapshot,\r\n cmdRoadmapGetPhase,\r\n cmdRoadmapAnalyze,\r\n cmdRoadmapUpdatePlanProgress,\r\n cmdRequirementsMarkComplete,\r\n cmdMilestoneComplete,\r\n cmdVerifySummary,\r\n cmdVerifyPlanStructure,\r\n cmdVerifyPhaseCompleteness,\r\n cmdVerifyReferences,\r\n cmdVerifyCommits,\r\n cmdVerifyArtifacts,\r\n cmdVerifyKeyLinks,\r\n cmdValidateConsistency,\r\n cmdValidateHealth,\r\n cmdPhasesList,\r\n cmdPhaseNextDecimal,\r\n cmdFindPhase,\r\n cmdPhasePlanIndex,\r\n cmdPhaseAdd,\r\n cmdPhaseInsert,\r\n cmdPhaseRemove,\r\n cmdPhaseComplete,\r\n cmdTemplateSelect,\r\n cmdTemplateFill,\r\n cmdInitExecutePhase,\r\n cmdInitPlanPhase,\r\n cmdInitNewProject,\r\n cmdInitNewMilestone,\r\n cmdInitQuick,\r\n cmdInitResume,\r\n cmdInitVerifyWork,\r\n cmdInitPhaseOp,\r\n cmdInitTodos,\r\n cmdInitMilestoneOp,\r\n cmdInitMapCodebase,\r\n cmdInitExisting,\r\n cmdInitProgress,\r\n} from './core/index.js';\r\n\r\n// ─── Arg parsing utilities ───────────────────────────────────────────────────\r\n\r\n/** Extract a single named flag's value from args */\r\nfunction getFlag(args: string[], flag: string): string | null {\r\n const idx = args.indexOf(flag);\r\n return idx !== -1 ? args[idx + 1] ?? null : null;\r\n}\r\n\r\n/** Extract multiple named flags at once. Keys are flag names without -- prefix. */\r\nfunction getFlags(args: string[], ...flags: string[]): Record {\r\n const result: Record = {};\r\n for (const flag of flags) {\r\n const idx = args.indexOf(`--${flag}`);\r\n result[flag] = idx !== -1 ? args[idx + 1] ?? null : null;\r\n }\r\n return result;\r\n}\r\n\r\n/** Check if a boolean flag is present */\r\nfunction hasFlag(args: string[], flag: string): boolean {\r\n return args.includes(`--${flag}`);\r\n}\r\n\r\n// ─── Command handler type ────────────────────────────────────────────────────\r\n\r\ntype Handler = (args: string[], cwd: string, raw: boolean) => void | Promise;\r\n\r\n// ─── Subcommand handlers ─────────────────────────────────────────────────────\r\n\r\nconst handleState: Handler = (args, cwd, raw) => {\r\n const sub = args[1];\r\n const handlers: Record void | Promise> = {\r\n 'update': () => cmdStateUpdate(cwd, args[2], args[3]),\r\n 'get': () => cmdStateGet(cwd, args[2], raw),\r\n 'patch': () => {\r\n const patches: Record = {};\r\n for (let i = 2; i < args.length; i += 2) {\r\n const key = args[i].replace(/^--/, '');\r\n const value = args[i + 1];\r\n if (key && value !== undefined) patches[key] = value;\r\n }\r\n cmdStatePatch(cwd, patches, raw);\r\n },\r\n 'advance-plan': () => cmdStateAdvancePlan(cwd, raw),\r\n 'record-metric': () => {\r\n const f = getFlags(args, 'phase', 'plan', 'duration', 'tasks', 'files');\r\n cmdStateRecordMetric(cwd, {\r\n phase: f.phase ?? '', plan: f.plan ?? '', duration: f.duration ?? '',\r\n tasks: f.tasks ?? undefined, files: f.files ?? undefined,\r\n }, raw);\r\n },\r\n 'update-progress': () => cmdStateUpdateProgress(cwd, raw),\r\n 'add-decision': () => {\r\n const f = getFlags(args, 'phase', 'summary', 'summary-file', 'rationale', 'rationale-file');\r\n cmdStateAddDecision(cwd, {\r\n phase: f.phase ?? undefined, summary: f.summary ?? undefined,\r\n summary_file: f['summary-file'] ?? undefined,\r\n rationale: f.rationale ?? '', rationale_file: f['rationale-file'] ?? undefined,\r\n }, raw);\r\n },\r\n 'add-blocker': () => {\r\n const f = getFlags(args, 'text', 'text-file');\r\n cmdStateAddBlocker(cwd, { text: f.text ?? undefined, text_file: f['text-file'] ?? undefined }, raw);\r\n },\r\n 'resolve-blocker': () => cmdStateResolveBlocker(cwd, getFlag(args, '--text'), raw),\r\n 'record-session': () => {\r\n const f = getFlags(args, 'stopped-at', 'resume-file');\r\n cmdStateRecordSession(cwd, {\r\n stopped_at: f['stopped-at'] ?? undefined,\r\n resume_file: f['resume-file'] ?? 'None',\r\n }, raw);\r\n },\r\n };\r\n\r\n const handler = sub ? handlers[sub] : undefined;\r\n if (handler) return handler();\r\n cmdStateLoad(cwd, raw);\r\n};\r\n\r\nconst handleTemplate: Handler = (args, cwd, raw) => {\r\n const sub = args[1];\r\n if (sub === 'select') {\r\n cmdTemplateSelect(cwd, args[2], raw);\r\n } else if (sub === 'fill') {\r\n const f = getFlags(args, 'phase', 'plan', 'name', 'type', 'wave', 'fields');\r\n cmdTemplateFill(cwd, args[2], {\r\n phase: f.phase ?? '', plan: f.plan ?? undefined, name: f.name ?? undefined,\r\n type: f.type ?? 'execute', wave: f.wave ?? '1',\r\n fields: f.fields ? JSON.parse(f.fields) : {},\r\n }, raw);\r\n } else {\r\n error('Unknown template subcommand. Available: select, fill');\r\n }\r\n};\r\n\r\nconst handleFrontmatter: Handler = (args, cwd, raw) => {\r\n const sub = args[1];\r\n const file = args[2];\r\n const handlers: Record void> = {\r\n 'get': () => cmdFrontmatterGet(cwd, file, getFlag(args, '--field'), raw),\r\n 'set': () => cmdFrontmatterSet(cwd, file, getFlag(args, '--field'), getFlag(args, '--value') ?? undefined, raw),\r\n 'merge': () => cmdFrontmatterMerge(cwd, file, getFlag(args, '--data'), raw),\r\n 'validate': () => cmdFrontmatterValidate(cwd, file, getFlag(args, '--schema'), raw),\r\n };\r\n const handler = sub ? handlers[sub] : undefined;\r\n if (handler) return handler();\r\n error('Unknown frontmatter subcommand. Available: get, set, merge, validate');\r\n};\r\n\r\nconst handleVerify: Handler = async (args, cwd, raw) => {\r\n const sub = args[1];\r\n const handlers: Record void | Promise> = {\r\n 'plan-structure': () => cmdVerifyPlanStructure(cwd, args[2], raw),\r\n 'phase-completeness': () => cmdVerifyPhaseCompleteness(cwd, args[2], raw),\r\n 'references': () => cmdVerifyReferences(cwd, args[2], raw),\r\n 'commits': () => cmdVerifyCommits(cwd, args.slice(2), raw),\r\n 'artifacts': () => cmdVerifyArtifacts(cwd, args[2], raw),\r\n 'key-links': () => cmdVerifyKeyLinks(cwd, args[2], raw),\r\n };\r\n const handler = sub ? handlers[sub] : undefined;\r\n if (handler) return handler();\r\n error('Unknown verify subcommand. Available: plan-structure, phase-completeness, references, commits, artifacts, key-links');\r\n};\r\n\r\nconst handlePhases: Handler = (args, cwd, raw) => {\r\n const sub = args[1];\r\n if (sub === 'list') {\r\n const f = getFlags(args, 'type', 'phase');\r\n cmdPhasesList(cwd, { type: f.type, phase: f.phase, includeArchived: hasFlag(args, 'include-archived') }, raw);\r\n } else {\r\n error('Unknown phases subcommand. Available: list');\r\n }\r\n};\r\n\r\nconst handleRoadmap: Handler = (args, cwd, raw) => {\r\n const sub = args[1];\r\n const handlers: Record void> = {\r\n 'get-phase': () => cmdRoadmapGetPhase(cwd, args[2], raw),\r\n 'analyze': () => cmdRoadmapAnalyze(cwd, raw),\r\n 'update-plan-progress': () => cmdRoadmapUpdatePlanProgress(cwd, args[2], raw),\r\n };\r\n const handler = sub ? handlers[sub] : undefined;\r\n if (handler) return handler();\r\n error('Unknown roadmap subcommand. Available: get-phase, analyze, update-plan-progress');\r\n};\r\n\r\nconst handlePhase: Handler = (args, cwd, raw) => {\r\n const sub = args[1];\r\n const handlers: Record void> = {\r\n 'next-decimal': () => cmdPhaseNextDecimal(cwd, args[2], raw),\r\n 'add': () => cmdPhaseAdd(cwd, args.slice(2).join(' '), raw),\r\n 'insert': () => cmdPhaseInsert(cwd, args[2], args.slice(3).join(' '), raw),\r\n 'remove': () => cmdPhaseRemove(cwd, args[2], { force: hasFlag(args, 'force') }, raw),\r\n 'complete': () => cmdPhaseComplete(cwd, args[2], raw),\r\n };\r\n const handler = sub ? handlers[sub] : undefined;\r\n if (handler) return handler();\r\n error('Unknown phase subcommand. Available: next-decimal, add, insert, remove, complete');\r\n};\r\n\r\nconst handleMilestone: Handler = (args, cwd, raw) => {\r\n const sub = args[1];\r\n if (sub === 'complete') {\r\n const nameIndex = args.indexOf('--name');\r\n let milestoneName: string | null = null;\r\n if (nameIndex !== -1) {\r\n const nameArgs: string[] = [];\r\n for (let i = nameIndex + 1; i < args.length; i++) {\r\n if (args[i].startsWith('--')) break;\r\n nameArgs.push(args[i]);\r\n }\r\n milestoneName = nameArgs.join(' ') || null;\r\n }\r\n cmdMilestoneComplete(cwd, args[2], {\r\n name: milestoneName ?? undefined,\r\n archivePhases: hasFlag(args, 'archive-phases'),\r\n }, raw);\r\n } else {\r\n error('Unknown milestone subcommand. Available: complete');\r\n }\r\n};\r\n\r\nconst handleValidate: Handler = (args, cwd, raw) => {\r\n const sub = args[1];\r\n const handlers: Record void> = {\r\n 'consistency': () => cmdValidateConsistency(cwd, raw),\r\n 'health': () => cmdValidateHealth(cwd, { repair: hasFlag(args, 'repair') }, raw),\r\n };\r\n const handler = sub ? handlers[sub] : undefined;\r\n if (handler) return handler();\r\n error('Unknown validate subcommand. Available: consistency, health');\r\n};\r\n\r\nconst handleInit: Handler = (args, cwd, raw) => {\r\n const workflow = args[1];\r\n const handlers: Record void> = {\r\n 'execute-phase': () => cmdInitExecutePhase(cwd, args[2], raw),\r\n 'plan-phase': () => cmdInitPlanPhase(cwd, args[2], raw),\r\n 'new-project': () => cmdInitNewProject(cwd, raw),\r\n 'new-milestone': () => cmdInitNewMilestone(cwd, raw),\r\n 'quick': () => cmdInitQuick(cwd, args.slice(2).join(' '), raw),\r\n 'resume': () => cmdInitResume(cwd, raw),\r\n 'verify-work': () => cmdInitVerifyWork(cwd, args[2], raw),\r\n 'phase-op': () => cmdInitPhaseOp(cwd, args[2], raw),\r\n 'todos': () => cmdInitTodos(cwd, args[2], raw),\r\n 'milestone-op': () => cmdInitMilestoneOp(cwd, raw),\r\n 'map-codebase': () => cmdInitMapCodebase(cwd, raw),\r\n 'init-existing': () => cmdInitExisting(cwd, raw),\r\n 'progress': () => cmdInitProgress(cwd, raw),\r\n };\r\n const handler = workflow ? handlers[workflow] : undefined;\r\n if (handler) return handler();\r\n error(`Unknown init workflow: ${workflow}\\nAvailable: execute-phase, plan-phase, new-project, new-milestone, quick, resume, verify-work, phase-op, todos, milestone-op, map-codebase, init-existing, progress`);\r\n};\r\n\r\n// ─── Command registry ────────────────────────────────────────────────────────\r\n\r\nconst COMMANDS: Record = {\r\n 'state': handleState,\r\n 'resolve-model': (args, cwd, raw) => cmdResolveModel(cwd, args[1], raw),\r\n 'find-phase': (args, cwd, raw) => cmdFindPhase(cwd, args[1], raw),\r\n 'commit': async (args, cwd, raw) => {\r\n const files = args.indexOf('--files') !== -1\r\n ? args.slice(args.indexOf('--files') + 1).filter(a => !a.startsWith('--'))\r\n : [];\r\n await cmdCommit(cwd, args[1], files, raw, hasFlag(args, 'amend'));\r\n },\r\n 'verify-summary': async (args, cwd, raw) => {\r\n const countIndex = args.indexOf('--check-count');\r\n const checkCount = countIndex !== -1 ? parseInt(args[countIndex + 1], 10) : 2;\r\n await cmdVerifySummary(cwd, args[1], checkCount, raw);\r\n },\r\n 'template': handleTemplate,\r\n 'frontmatter': handleFrontmatter,\r\n 'verify': handleVerify,\r\n 'generate-slug': (args, _cwd, raw) => cmdGenerateSlug(args[1], raw),\r\n 'current-timestamp': (args, _cwd, raw) => cmdCurrentTimestamp((args[1] || 'full') as TimestampFormat, raw),\r\n 'list-todos': (args, cwd, raw) => cmdListTodos(cwd, args[1], raw),\r\n 'verify-path-exists': (args, cwd, raw) => cmdVerifyPathExists(cwd, args[1], raw),\r\n 'config-ensure-section': (_args, cwd, raw) => cmdConfigEnsureSection(cwd, raw),\r\n 'config-set': (args, cwd, raw) => cmdConfigSet(cwd, args[1], args[2], raw),\r\n 'config-get': (args, cwd, raw) => cmdConfigGet(cwd, args[1], raw),\r\n 'history-digest': (_args, cwd, raw) => cmdHistoryDigest(cwd, raw),\r\n 'phases': handlePhases,\r\n 'roadmap': handleRoadmap,\r\n 'requirements': (args, cwd, raw) => {\r\n if (args[1] === 'mark-complete') cmdRequirementsMarkComplete(cwd, args.slice(2), raw);\r\n else error('Unknown requirements subcommand. Available: mark-complete');\r\n },\r\n 'phase': handlePhase,\r\n 'milestone': handleMilestone,\r\n 'validate': handleValidate,\r\n 'progress': (args, cwd, raw) => cmdProgressRender(cwd, args[1] || 'json', raw),\r\n 'todo': (args, cwd, raw) => {\r\n if (args[1] === 'complete') cmdTodoComplete(cwd, args[2], raw);\r\n else error('Unknown todo subcommand. Available: complete');\r\n },\r\n 'scaffold': (args, cwd, raw) => {\r\n const f = getFlags(args, 'phase', 'name');\r\n cmdScaffold(cwd, args[1], { phase: f.phase, name: f.name ? args.slice(args.indexOf('--name') + 1).join(' ') : null }, raw);\r\n },\r\n 'init': handleInit,\r\n 'phase-plan-index': (args, cwd, raw) => cmdPhasePlanIndex(cwd, args[1], raw),\r\n 'state-snapshot': (_args, cwd, raw) => cmdStateSnapshot(cwd, raw),\r\n 'summary-extract': (args, cwd, raw) => {\r\n const fieldsIndex = args.indexOf('--fields');\r\n const fields = fieldsIndex !== -1 ? args[fieldsIndex + 1].split(',') : null;\r\n cmdSummaryExtract(cwd, args[1], fields, raw);\r\n },\r\n 'websearch': async (args, _cwd, raw) => {\r\n const f = getFlags(args, 'limit', 'freshness');\r\n await cmdWebsearch(args[1], {\r\n limit: f.limit ? parseInt(f.limit, 10) : 10,\r\n freshness: f.freshness ?? undefined,\r\n }, raw);\r\n },\r\n 'dashboard': (args) => handleDashboard(args.slice(1)),\r\n 'start-server': async () => {\r\n const serverPath = path.join(__dirname, 'mcp-server.cjs');\r\n const child = spawn(process.execPath, [serverPath], { stdio: 'inherit' });\r\n child.on('exit', (code) => process.exit(code ?? 0));\r\n },\r\n};\r\n\r\n// ─── Main ────────────────────────────────────────────────────────────────────\r\n\r\nasync function main(): Promise {\r\n try {\r\n const args: string[] = process.argv.slice(2);\r\n\r\n // Optional cwd override for sandboxed subagents running outside project root.\r\n let cwd: string = process.cwd();\r\n const cwdEqArg = args.find(arg => arg.startsWith('--cwd='));\r\n const cwdIdx = args.indexOf('--cwd');\r\n if (cwdEqArg) {\r\n const value = cwdEqArg.slice('--cwd='.length).trim();\r\n if (!value) error('Missing value for --cwd');\r\n args.splice(args.indexOf(cwdEqArg), 1);\r\n cwd = path.resolve(value);\r\n } else if (cwdIdx !== -1) {\r\n const value = args[cwdIdx + 1];\r\n if (!value || value.startsWith('--')) error('Missing value for --cwd');\r\n args.splice(cwdIdx, 2);\r\n cwd = path.resolve(value);\r\n }\r\n\r\n if (!fs.existsSync(cwd) || !fs.statSync(cwd).isDirectory()) {\r\n error(`Invalid --cwd: ${cwd}`);\r\n }\r\n\r\n const rawIndex = args.indexOf('--raw');\r\n const raw: boolean = rawIndex !== -1;\r\n if (rawIndex !== -1) args.splice(rawIndex, 1);\r\n\r\n const command: string | undefined = args[0];\r\n\r\n if (!command) {\r\n error(`Usage: maxsim-tools [args] [--raw] [--cwd ]\\nCommands: ${Object.keys(COMMANDS).join(', ')}`);\r\n }\r\n\r\n const handler = COMMANDS[command];\r\n if (!handler) {\r\n error(`Unknown command: ${command}`);\r\n }\r\n\r\n await handler(args, cwd, raw);\r\n } catch (thrown: unknown) {\r\n if (thrown instanceof CliOutput) {\r\n writeOutput(thrown);\r\n process.exit(0);\r\n }\r\n if (thrown instanceof CliError) {\r\n process.stderr.write('Error: ' + thrown.message + '\\n');\r\n process.exit(1);\r\n }\r\n // Re-throw unexpected errors\r\n throw thrown;\r\n }\r\n}\r\n\r\n// ─── Dashboard ───────────────────────────────────────────────────────────────\r\n\r\nimport {\r\n checkHealth,\r\n findRunningDashboard,\r\n killProcessOnPort,\r\n resolveDashboardServer,\r\n readDashboardConfig,\r\n ensureNodePty,\r\n spawnDashboard,\r\n DEFAULT_PORT,\r\n PORT_RANGE_END,\r\n} from './core/dashboard-launcher.js';\r\n\r\n/**\r\n * Dashboard launch command.\r\n *\r\n * Spawns the dashboard as a detached subprocess with MAXSIM_PROJECT_CWD set.\r\n * If the dashboard is already running (detected via /api/health), prints the URL.\r\n * Supports --stop to kill a running instance.\r\n */\r\nasync function handleDashboard(args: string[]): Promise {\r\n const networkMode = args.includes('--network');\r\n\r\n // Handle --stop flag\r\n if (args.includes('--stop')) {\r\n for (let port = DEFAULT_PORT; port <= PORT_RANGE_END; port++) {\r\n const running = await checkHealth(port);\r\n if (running) {\r\n console.log(`Dashboard found on port ${port} — stopping...`);\r\n killProcessOnPort(port);\r\n console.log('Dashboard stopped.');\r\n return;\r\n }\r\n }\r\n console.log('No running dashboard found.');\r\n return;\r\n }\r\n\r\n // Check if dashboard is already running\r\n const runningPort = await findRunningDashboard();\r\n if (runningPort) {\r\n console.log(`Dashboard already running at http://localhost:${runningPort}`);\r\n return;\r\n }\r\n\r\n // Resolve the dashboard server entry point\r\n const serverPath = resolveDashboardServer();\r\n if (!serverPath) {\r\n console.error('Could not find @maxsim/dashboard server entry point.');\r\n console.error('Ensure @maxsim/dashboard is installed and built.');\r\n process.exit(1);\r\n }\r\n\r\n const serverDir = path.dirname(serverPath);\r\n const dashConfig = readDashboardConfig(serverPath);\r\n\r\n // Auto-install node-pty if missing\r\n console.log('Installing node-pty for terminal support...');\r\n if (!ensureNodePty(serverDir)) {\r\n console.warn('node-pty installation failed — terminal will be unavailable.');\r\n }\r\n\r\n console.log('Dashboard starting...');\r\n\r\n const pid = spawnDashboard({\r\n serverPath,\r\n projectCwd: dashConfig.projectCwd,\r\n networkMode,\r\n });\r\n\r\n // Wait briefly for the server to start, then check health\r\n await new Promise((resolve) => setTimeout(resolve, 3000));\r\n\r\n const readyPort = await findRunningDashboard();\r\n if (readyPort) {\r\n console.log(`Dashboard ready at http://localhost:${readyPort}`);\r\n return;\r\n }\r\n\r\n console.log(`Dashboard spawned (PID ${pid}). It may take a moment to start.`);\r\n console.log(`Check http://localhost:${DEFAULT_PORT} once ready.`);\r\n}\r\n\r\nmain();\r\n"],"x_google_ignoreList":[1,2,3,4,5,6,7,8,9,10,11,12,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,88,92,93,94,95],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"cli.cjs","names":["os","tty","tty","FOLDER","Buffer2","EventEmitter","path","os","fs","node_process","node_buffer","node_process","node_process","path","fs","path","fs","os","path","fs","statePathUtil","statePath","fs","path","fs","roadmapPath","roadmapPathUtil","statePath","statePathUtil","path","styles","hasFlag","process","os","tty","fs","path","path","fs","roadmapPathUtil","statePathUtil","configPathUtil","path","fs","path","fs","path","fs","os","path","fs","path","fs","os","path","fs"],"sources":["../src/core/types.ts","../../../../../../node_modules/ms/index.js","../../../../../../node_modules/debug/src/common.js","../../../../../../node_modules/debug/src/browser.js","../../../../../../node_modules/has-flag/index.js","../../../../../../node_modules/supports-color/index.js","../../../../../../node_modules/debug/src/node.js","../../../../../../node_modules/debug/src/index.js","../../../../../../node_modules/@kwsites/file-exists/dist/src/index.js","../../../../../../node_modules/@kwsites/file-exists/dist/index.js","../../../../../../node_modules/@kwsites/promise-deferred/dist/index.js","../../../../../../node_modules/simple-git/dist/esm/index.js","../../../../../../node_modules/slugify/slugify.js","../src/core/core.ts","../../../../../../node_modules/yaml/dist/nodes/identity.js","../../../../../../node_modules/yaml/dist/visit.js","../../../../../../node_modules/yaml/dist/doc/directives.js","../../../../../../node_modules/yaml/dist/doc/anchors.js","../../../../../../node_modules/yaml/dist/doc/applyReviver.js","../../../../../../node_modules/yaml/dist/nodes/toJS.js","../../../../../../node_modules/yaml/dist/nodes/Node.js","../../../../../../node_modules/yaml/dist/nodes/Alias.js","../../../../../../node_modules/yaml/dist/nodes/Scalar.js","../../../../../../node_modules/yaml/dist/doc/createNode.js","../../../../../../node_modules/yaml/dist/nodes/Collection.js","../../../../../../node_modules/yaml/dist/stringify/stringifyComment.js","../../../../../../node_modules/yaml/dist/stringify/foldFlowLines.js","../../../../../../node_modules/yaml/dist/stringify/stringifyString.js","../../../../../../node_modules/yaml/dist/stringify/stringify.js","../../../../../../node_modules/yaml/dist/stringify/stringifyPair.js","../../../../../../node_modules/yaml/dist/log.js","../../../../../../node_modules/yaml/dist/schema/yaml-1.1/merge.js","../../../../../../node_modules/yaml/dist/nodes/addPairToJSMap.js","../../../../../../node_modules/yaml/dist/nodes/Pair.js","../../../../../../node_modules/yaml/dist/stringify/stringifyCollection.js","../../../../../../node_modules/yaml/dist/nodes/YAMLMap.js","../../../../../../node_modules/yaml/dist/schema/common/map.js","../../../../../../node_modules/yaml/dist/nodes/YAMLSeq.js","../../../../../../node_modules/yaml/dist/schema/common/seq.js","../../../../../../node_modules/yaml/dist/schema/common/string.js","../../../../../../node_modules/yaml/dist/schema/common/null.js","../../../../../../node_modules/yaml/dist/schema/core/bool.js","../../../../../../node_modules/yaml/dist/stringify/stringifyNumber.js","../../../../../../node_modules/yaml/dist/schema/core/float.js","../../../../../../node_modules/yaml/dist/schema/core/int.js","../../../../../../node_modules/yaml/dist/schema/core/schema.js","../../../../../../node_modules/yaml/dist/schema/json/schema.js","../../../../../../node_modules/yaml/dist/schema/yaml-1.1/binary.js","../../../../../../node_modules/yaml/dist/schema/yaml-1.1/pairs.js","../../../../../../node_modules/yaml/dist/schema/yaml-1.1/omap.js","../../../../../../node_modules/yaml/dist/schema/yaml-1.1/bool.js","../../../../../../node_modules/yaml/dist/schema/yaml-1.1/float.js","../../../../../../node_modules/yaml/dist/schema/yaml-1.1/int.js","../../../../../../node_modules/yaml/dist/schema/yaml-1.1/set.js","../../../../../../node_modules/yaml/dist/schema/yaml-1.1/timestamp.js","../../../../../../node_modules/yaml/dist/schema/yaml-1.1/schema.js","../../../../../../node_modules/yaml/dist/schema/tags.js","../../../../../../node_modules/yaml/dist/schema/Schema.js","../../../../../../node_modules/yaml/dist/stringify/stringifyDocument.js","../../../../../../node_modules/yaml/dist/doc/Document.js","../../../../../../node_modules/yaml/dist/errors.js","../../../../../../node_modules/yaml/dist/compose/resolve-props.js","../../../../../../node_modules/yaml/dist/compose/util-contains-newline.js","../../../../../../node_modules/yaml/dist/compose/util-flow-indent-check.js","../../../../../../node_modules/yaml/dist/compose/util-map-includes.js","../../../../../../node_modules/yaml/dist/compose/resolve-block-map.js","../../../../../../node_modules/yaml/dist/compose/resolve-block-seq.js","../../../../../../node_modules/yaml/dist/compose/resolve-end.js","../../../../../../node_modules/yaml/dist/compose/resolve-flow-collection.js","../../../../../../node_modules/yaml/dist/compose/compose-collection.js","../../../../../../node_modules/yaml/dist/compose/resolve-block-scalar.js","../../../../../../node_modules/yaml/dist/compose/resolve-flow-scalar.js","../../../../../../node_modules/yaml/dist/compose/compose-scalar.js","../../../../../../node_modules/yaml/dist/compose/util-empty-scalar-position.js","../../../../../../node_modules/yaml/dist/compose/compose-node.js","../../../../../../node_modules/yaml/dist/compose/compose-doc.js","../../../../../../node_modules/yaml/dist/compose/composer.js","../../../../../../node_modules/yaml/dist/parse/cst-scalar.js","../../../../../../node_modules/yaml/dist/parse/cst-stringify.js","../../../../../../node_modules/yaml/dist/parse/cst-visit.js","../../../../../../node_modules/yaml/dist/parse/cst.js","../../../../../../node_modules/yaml/dist/parse/lexer.js","../../../../../../node_modules/yaml/dist/parse/line-counter.js","../../../../../../node_modules/yaml/dist/parse/parser.js","../../../../../../node_modules/yaml/dist/public-api.js","../../../../../../node_modules/yaml/dist/index.js","../src/core/frontmatter.ts","../src/core/config.ts","../../../../../../node_modules/escape-string-regexp/index.js","../src/core/state.ts","../src/core/roadmap.ts","../src/core/milestone.ts","../../../../../../node_modules/chalk/source/vendor/ansi-styles/index.js","../../../../../../node_modules/chalk/source/vendor/supports-color/index.js","../../../../../../node_modules/chalk/source/utilities.js","../../../../../../node_modules/chalk/source/index.js","../src/core/commands.ts","../src/core/verify.ts","../src/core/phase.ts","../src/core/template.ts","../src/core/dashboard-launcher.ts","../src/core/skill-context.ts","../src/core/init.ts","../src/cli.ts"],"sourcesContent":["/**\r\n * @maxsim/core — Shared type definitions\r\n */\r\n\r\n// ─── Brand utility ───────────────────────────────────────────────────────────\r\n\r\ndeclare const __brand: unique symbol;\r\ntype Brand = T & { readonly [__brand]: B };\r\n\r\n// ─── Branded types ───────────────────────────────────────────────────────────\r\n\r\nexport type PhaseNumber = Brand;\r\nexport type PhasePath = Brand;\r\nexport type PhaseSlug = Brand;\r\n\r\nexport function phaseNumber(value: string): PhaseNumber {\r\n const match = value.match(/^\\d+[A-Z]?(\\.\\d+)?$/i);\r\n if (!match) {\r\n throw new Error(`Invalid phase number: ${value}`);\r\n }\r\n return value as PhaseNumber;\r\n}\r\n\r\nexport function phasePath(value: string): PhasePath {\r\n if (!value || typeof value !== 'string') {\r\n throw new Error(`Invalid phase path: ${value}`);\r\n }\r\n return value as PhasePath;\r\n}\r\n\r\nexport function phaseSlug(value: string): PhaseSlug {\r\n if (!value || typeof value !== 'string') {\r\n throw new Error(`Invalid phase slug: ${value}`);\r\n }\r\n return value as PhaseSlug;\r\n}\r\n\r\n// ─── Result type ─────────────────────────────────────────────────────────────\r\n\r\nexport type Result =\r\n | { success: true; data: T }\r\n | { success: false; error: string };\r\n\r\nexport function ok(data: T): Result {\r\n return { success: true, data };\r\n}\r\n\r\nexport function err(error: string): Result {\r\n return { success: false, error };\r\n}\r\n\r\n// ─── Core interfaces ─────────────────────────────────────────────────────────\r\n\r\nexport type BranchingStrategy = 'none' | 'phase' | 'milestone';\r\n\r\nexport type ModelTier = 'opus' | 'sonnet' | 'haiku';\r\nexport type ModelProfileName = 'quality' | 'balanced' | 'budget' | 'tokenburner';\r\nexport type ModelResolution = 'inherit' | ModelTier;\r\n\r\nexport interface ModelProfileEntry {\r\n quality: ModelTier;\r\n balanced: ModelTier;\r\n budget: ModelTier;\r\n tokenburner: ModelTier;\r\n}\r\n\r\nexport type AgentType =\r\n | 'maxsim-planner'\r\n | 'maxsim-roadmapper'\r\n | 'maxsim-executor'\r\n | 'maxsim-phase-researcher'\r\n | 'maxsim-project-researcher'\r\n | 'maxsim-research-synthesizer'\r\n | 'maxsim-debugger'\r\n | 'maxsim-codebase-mapper'\r\n | 'maxsim-verifier'\r\n | 'maxsim-plan-checker'\r\n | 'maxsim-integration-checker';\r\n\r\nexport type ModelProfiles = Record;\r\n\r\nexport interface PhaseSearchResult {\r\n found: true;\r\n directory: string;\r\n phase_number: string;\r\n phase_name: string | null;\r\n phase_slug: string | null;\r\n plans: string[];\r\n summaries: string[];\r\n incomplete_plans: string[];\r\n has_research: boolean;\r\n has_context: boolean;\r\n has_verification: boolean;\r\n archived?: string;\r\n}\r\n\r\nexport interface RoadmapPhaseInfo {\r\n found: true;\r\n phase_number: string;\r\n phase_name: string;\r\n goal: string | null;\r\n section: string;\r\n}\r\n\r\nexport interface ArchivedPhaseDir {\r\n name: string;\r\n milestone: string;\r\n basePath: string;\r\n fullPath: string;\r\n}\r\n\r\nexport interface GitResult {\r\n exitCode: number;\r\n stdout: string;\r\n stderr: string;\r\n}\r\n\r\nexport interface MilestoneInfo {\r\n version: string;\r\n name: string;\r\n}\r\n\r\nexport interface AppConfig {\r\n model_profile: ModelProfileName;\r\n commit_docs: boolean;\r\n search_gitignored: boolean;\r\n branching_strategy: BranchingStrategy;\r\n phase_branch_template: string;\r\n milestone_branch_template: string;\r\n research: boolean;\r\n plan_checker: boolean;\r\n verifier: boolean;\r\n parallelization: boolean;\r\n brave_search: boolean;\r\n model_overrides?: Partial>;\r\n}\r\n\r\n// ─── Frontmatter interfaces ────────────────────────────────────────────────\r\n\r\nexport type FrontmatterData = Record;\r\n\r\nexport type FrontmatterValue =\r\n | string\r\n | number\r\n | boolean\r\n | null\r\n | FrontmatterValue[]\r\n | { [key: string]: FrontmatterValue };\r\n\r\nexport interface FrontmatterParseResult {\r\n frontmatter: FrontmatterData;\r\n body: string;\r\n hasFrontmatter: boolean;\r\n}\r\n\r\nexport interface FrontmatterValidationResult {\r\n valid: boolean;\r\n missing: string[];\r\n present: string[];\r\n schema: string;\r\n}\r\n\r\nexport interface FrontmatterSchema {\r\n required: string[];\r\n}\r\n\r\n// ─── Config interfaces ──────────────────────────────────────────────────────\r\n\r\nexport interface PlanningConfig {\r\n model_profile: ModelProfileName;\r\n commit_docs: boolean;\r\n search_gitignored: boolean;\r\n branching_strategy: BranchingStrategy;\r\n phase_branch_template: string;\r\n milestone_branch_template: string;\r\n workflow: WorkflowConfig;\r\n parallelization: boolean;\r\n brave_search: boolean;\r\n [key: string]: unknown;\r\n}\r\n\r\nexport interface WorkflowConfig {\r\n research: boolean;\r\n plan_checker: boolean;\r\n verifier: boolean;\r\n [key: string]: boolean;\r\n}\r\n\r\nexport const PLANNING_CONFIG_DEFAULTS: PlanningConfig = {\r\n model_profile: 'balanced',\r\n commit_docs: true,\r\n search_gitignored: false,\r\n branching_strategy: 'none',\r\n phase_branch_template: 'maxsim/phase-{phase}-{slug}',\r\n milestone_branch_template: 'maxsim/{milestone}-{slug}',\r\n workflow: {\r\n research: true,\r\n plan_checker: true,\r\n verifier: true,\r\n },\r\n parallelization: true,\r\n brave_search: false,\r\n};\r\n\r\n// ─── State interfaces ────────────────────────────────────────────────────────\r\n\r\nexport interface StateSection {\r\n header: string;\r\n body: string;\r\n}\r\n\r\nexport interface Decision {\r\n phase: string;\r\n summary: string;\r\n rationale: string;\r\n}\r\n\r\nexport interface Blocker {\r\n text: string;\r\n resolved: boolean;\r\n}\r\n\r\nexport interface PerformanceMetric {\r\n phase: string;\r\n plan: string;\r\n duration: string;\r\n tasks: string;\r\n files: string;\r\n}\r\n\r\nexport interface StateData {\r\n content: string;\r\n fields: Record;\r\n decisions: Decision[];\r\n blockers: Blocker[];\r\n metrics: PerformanceMetric[];\r\n}\r\n\r\nexport interface StatePatchResult {\r\n updated: string[];\r\n failed: string[];\r\n}\r\n\r\nexport interface StateSessionOptions {\r\n stopped_at?: string;\r\n resume_file?: string;\r\n}\r\n\r\nexport interface StateMetricOptions {\r\n phase: string;\r\n plan: string;\r\n duration: string;\r\n tasks?: string;\r\n files?: string;\r\n}\r\n\r\nexport interface StateDecisionOptions {\r\n phase?: string;\r\n summary?: string;\r\n summary_file?: string;\r\n rationale?: string;\r\n rationale_file?: string;\r\n}\r\n\r\nexport interface StateBlockerOptions {\r\n text?: string;\r\n text_file?: string;\r\n}\r\n\r\nexport interface StateSnapshot {\r\n current_phase: string | null;\r\n current_phase_name: string | null;\r\n total_phases: number | null;\r\n current_plan: string | null;\r\n total_plans_in_phase: number | null;\r\n status: string | null;\r\n progress_percent: number | null;\r\n last_activity: string | null;\r\n last_activity_desc: string | null;\r\n decisions: Decision[];\r\n blockers: string[];\r\n paused_at: string | null;\r\n session: {\r\n last_date: string | null;\r\n stopped_at: string | null;\r\n resume_file: string | null;\r\n };\r\n}\r\n\r\n// ─── Roadmap interfaces ─────────────────────────────────────────────────────\r\n\r\nexport type PhaseStatus = 'no_directory' | 'empty' | 'discussed' | 'researched' | 'planned' | 'partial' | 'complete';\r\n\r\nexport interface RoadmapPhase {\r\n number: string;\r\n name: string;\r\n goal: string | null;\r\n depends_on: string | null;\r\n plan_count: number;\r\n summary_count: number;\r\n has_context: boolean;\r\n has_research: boolean;\r\n disk_status: PhaseStatus;\r\n roadmap_complete: boolean;\r\n}\r\n\r\nexport interface RoadmapMilestone {\r\n heading: string;\r\n version: string;\r\n}\r\n\r\nexport interface RoadmapAnalysis {\r\n milestones: RoadmapMilestone[];\r\n phases: RoadmapPhase[];\r\n phase_count: number;\r\n completed_phases: number;\r\n total_plans: number;\r\n total_summaries: number;\r\n progress_percent: number;\r\n current_phase: string | null;\r\n next_phase: string | null;\r\n missing_phase_details: string[] | null;\r\n}\r\n\r\nexport interface RoadmapPhaseDetail {\r\n found: true;\r\n phase_number: string;\r\n phase_name: string;\r\n goal: string | null;\r\n success_criteria: string[];\r\n section: string;\r\n}\r\n\r\nexport interface RoadmapPhaseNotFound {\r\n found: false;\r\n phase_number: string;\r\n phase_name?: string;\r\n error?: string;\r\n message?: string;\r\n}\r\n\r\nexport type RoadmapGetPhaseResult = RoadmapPhaseDetail | RoadmapPhaseNotFound;\r\n\r\n// ─── Milestone interfaces ────────────────────────────────────────────────────\r\n\r\nexport interface MilestoneCompleteOptions {\r\n name?: string;\r\n archivePhases?: boolean;\r\n}\r\n\r\nexport interface MilestoneResult {\r\n version: string;\r\n name: string;\r\n date: string;\r\n phases: number;\r\n plans: number;\r\n tasks: number;\r\n accomplishments: string[];\r\n archived: {\r\n roadmap: boolean;\r\n requirements: boolean;\r\n audit: boolean;\r\n phases: boolean;\r\n };\r\n milestones_updated: boolean;\r\n state_updated: boolean;\r\n}\r\n\r\nexport interface ArchiveResult {\r\n updated: boolean;\r\n marked_complete: string[];\r\n not_found: string[];\r\n total: number;\r\n}\r\n\r\n// ─── Commands interfaces ────────────────────────────────────────────────────\r\n\r\nexport interface TodoItem {\r\n file: string;\r\n created: string;\r\n title: string;\r\n area: string;\r\n path: string;\r\n}\r\n\r\nexport interface HistoryPhaseDigest {\r\n name: string;\r\n provides: string[];\r\n affects: string[];\r\n patterns: string[];\r\n}\r\n\r\nexport interface HistoryDigest {\r\n phases: Record;\r\n decisions: Array<{ phase: string; decision: string }>;\r\n tech_stack: string[];\r\n}\r\n\r\nexport interface SlugResult {\r\n slug: string;\r\n}\r\n\r\nexport interface WebSearchOptions {\r\n limit?: number;\r\n freshness?: string | null;\r\n}\r\n\r\nexport interface WebSearchResult {\r\n title: string;\r\n url: string;\r\n description: string;\r\n age: string | null;\r\n}\r\n\r\nexport interface ScaffoldOptions {\r\n phase: string | null;\r\n name: string | null;\r\n}\r\n\r\nexport type TimestampFormat = 'full' | 'date' | 'filename';\r\n\r\n// ─── Phase lifecycle interfaces ─────────────────────────────────────────────\r\n\r\nexport interface PhaseAddResult {\r\n phase_number: number;\r\n padded: string;\r\n name: string;\r\n slug: string | null;\r\n directory: string;\r\n}\r\n\r\nexport interface PhaseInsertResult {\r\n phase_number: string;\r\n after_phase: string;\r\n name: string;\r\n slug: string | null;\r\n directory: string;\r\n}\r\n\r\nexport interface PhaseRemoveResult {\r\n removed: string;\r\n directory_deleted: string | null;\r\n renamed_directories: Array<{ from: string; to: string }>;\r\n renamed_files: Array<{ from: string; to: string }>;\r\n roadmap_updated: boolean;\r\n state_updated: boolean;\r\n}\r\n\r\nexport interface PhaseCompleteResult {\r\n completed_phase: string;\r\n phase_name: string | null;\r\n plans_executed: string;\r\n next_phase: string | null;\r\n next_phase_name: string | null;\r\n is_last_phase: boolean;\r\n date: string;\r\n roadmap_updated: boolean;\r\n state_updated: boolean;\r\n}\r\n\r\nexport interface PhasePlanIndexResult {\r\n phase: string;\r\n plans: Array<{\r\n id: string;\r\n wave: number;\r\n autonomous: boolean;\r\n objective: string | null;\r\n files_modified: string[];\r\n task_count: number;\r\n has_summary: boolean;\r\n }>;\r\n waves: Record;\r\n incomplete: string[];\r\n has_checkpoints: boolean;\r\n}\r\n\r\nexport interface PhasesListOptions {\r\n type: string | null;\r\n phase: string | null;\r\n includeArchived: boolean;\r\n}\r\n\r\n// ─── Adapter interfaces ─────────────────────────────────────────────────────\r\n\r\nexport type RuntimeName = 'claude' | 'opencode' | 'gemini' | 'codex';\r\n\r\nexport interface AdapterConfig {\r\n runtime: RuntimeName;\r\n dirName: string;\r\n getGlobalDir(explicitDir?: string | null): string;\r\n getConfigDirFromHome(isGlobal: boolean): string;\r\n transformContent(content: string, pathPrefix: string): string;\r\n commandStructure: 'nested' | 'flat' | 'skills';\r\n}\r\n","/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar w = d * 7;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function (val, options) {\n options = options || {};\n var type = typeof val;\n if (type === 'string' && val.length > 0) {\n return parse(val);\n } else if (type === 'number' && isFinite(val)) {\n return options.long ? fmtLong(val) : fmtShort(val);\n }\n throw new Error(\n 'val is not a non-empty string or a valid number. val=' +\n JSON.stringify(val)\n );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n str = String(str);\n if (str.length > 100) {\n return;\n }\n var match = /^(-?(?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(\n str\n );\n if (!match) {\n return;\n }\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n case 'weeks':\n case 'week':\n case 'w':\n return n * w;\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n default:\n return undefined;\n }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (msAbs >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (msAbs >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (msAbs >= s) {\n return Math.round(ms / s) + 's';\n }\n return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return plural(ms, msAbs, d, 'day');\n }\n if (msAbs >= h) {\n return plural(ms, msAbs, h, 'hour');\n }\n if (msAbs >= m) {\n return plural(ms, msAbs, m, 'minute');\n }\n if (msAbs >= s) {\n return plural(ms, msAbs, s, 'second');\n }\n return ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, msAbs, n, name) {\n var isPlural = msAbs >= n * 1.5;\n return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');\n}\n","\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n */\n\nfunction setup(env) {\n\tcreateDebug.debug = createDebug;\n\tcreateDebug.default = createDebug;\n\tcreateDebug.coerce = coerce;\n\tcreateDebug.disable = disable;\n\tcreateDebug.enable = enable;\n\tcreateDebug.enabled = enabled;\n\tcreateDebug.humanize = require('ms');\n\tcreateDebug.destroy = destroy;\n\n\tObject.keys(env).forEach(key => {\n\t\tcreateDebug[key] = env[key];\n\t});\n\n\t/**\n\t* The currently active debug mode names, and names to skip.\n\t*/\n\n\tcreateDebug.names = [];\n\tcreateDebug.skips = [];\n\n\t/**\n\t* Map of special \"%n\" handling functions, for the debug \"format\" argument.\n\t*\n\t* Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n\t*/\n\tcreateDebug.formatters = {};\n\n\t/**\n\t* Selects a color for a debug namespace\n\t* @param {String} namespace The namespace string for the debug instance to be colored\n\t* @return {Number|String} An ANSI color code for the given namespace\n\t* @api private\n\t*/\n\tfunction selectColor(namespace) {\n\t\tlet hash = 0;\n\n\t\tfor (let i = 0; i < namespace.length; i++) {\n\t\t\thash = ((hash << 5) - hash) + namespace.charCodeAt(i);\n\t\t\thash |= 0; // Convert to 32bit integer\n\t\t}\n\n\t\treturn createDebug.colors[Math.abs(hash) % createDebug.colors.length];\n\t}\n\tcreateDebug.selectColor = selectColor;\n\n\t/**\n\t* Create a debugger with the given `namespace`.\n\t*\n\t* @param {String} namespace\n\t* @return {Function}\n\t* @api public\n\t*/\n\tfunction createDebug(namespace) {\n\t\tlet prevTime;\n\t\tlet enableOverride = null;\n\t\tlet namespacesCache;\n\t\tlet enabledCache;\n\n\t\tfunction debug(...args) {\n\t\t\t// Disabled?\n\t\t\tif (!debug.enabled) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst self = debug;\n\n\t\t\t// Set `diff` timestamp\n\t\t\tconst curr = Number(new Date());\n\t\t\tconst ms = curr - (prevTime || curr);\n\t\t\tself.diff = ms;\n\t\t\tself.prev = prevTime;\n\t\t\tself.curr = curr;\n\t\t\tprevTime = curr;\n\n\t\t\targs[0] = createDebug.coerce(args[0]);\n\n\t\t\tif (typeof args[0] !== 'string') {\n\t\t\t\t// Anything else let's inspect with %O\n\t\t\t\targs.unshift('%O');\n\t\t\t}\n\n\t\t\t// Apply any `formatters` transformations\n\t\t\tlet index = 0;\n\t\t\targs[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => {\n\t\t\t\t// If we encounter an escaped % then don't increase the array index\n\t\t\t\tif (match === '%%') {\n\t\t\t\t\treturn '%';\n\t\t\t\t}\n\t\t\t\tindex++;\n\t\t\t\tconst formatter = createDebug.formatters[format];\n\t\t\t\tif (typeof formatter === 'function') {\n\t\t\t\t\tconst val = args[index];\n\t\t\t\t\tmatch = formatter.call(self, val);\n\n\t\t\t\t\t// Now we need to remove `args[index]` since it's inlined in the `format`\n\t\t\t\t\targs.splice(index, 1);\n\t\t\t\t\tindex--;\n\t\t\t\t}\n\t\t\t\treturn match;\n\t\t\t});\n\n\t\t\t// Apply env-specific formatting (colors, etc.)\n\t\t\tcreateDebug.formatArgs.call(self, args);\n\n\t\t\tconst logFn = self.log || createDebug.log;\n\t\t\tlogFn.apply(self, args);\n\t\t}\n\n\t\tdebug.namespace = namespace;\n\t\tdebug.useColors = createDebug.useColors();\n\t\tdebug.color = createDebug.selectColor(namespace);\n\t\tdebug.extend = extend;\n\t\tdebug.destroy = createDebug.destroy; // XXX Temporary. Will be removed in the next major release.\n\n\t\tObject.defineProperty(debug, 'enabled', {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: false,\n\t\t\tget: () => {\n\t\t\t\tif (enableOverride !== null) {\n\t\t\t\t\treturn enableOverride;\n\t\t\t\t}\n\t\t\t\tif (namespacesCache !== createDebug.namespaces) {\n\t\t\t\t\tnamespacesCache = createDebug.namespaces;\n\t\t\t\t\tenabledCache = createDebug.enabled(namespace);\n\t\t\t\t}\n\n\t\t\t\treturn enabledCache;\n\t\t\t},\n\t\t\tset: v => {\n\t\t\t\tenableOverride = v;\n\t\t\t}\n\t\t});\n\n\t\t// Env-specific initialization logic for debug instances\n\t\tif (typeof createDebug.init === 'function') {\n\t\t\tcreateDebug.init(debug);\n\t\t}\n\n\t\treturn debug;\n\t}\n\n\tfunction extend(namespace, delimiter) {\n\t\tconst newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace);\n\t\tnewDebug.log = this.log;\n\t\treturn newDebug;\n\t}\n\n\t/**\n\t* Enables a debug mode by namespaces. This can include modes\n\t* separated by a colon and wildcards.\n\t*\n\t* @param {String} namespaces\n\t* @api public\n\t*/\n\tfunction enable(namespaces) {\n\t\tcreateDebug.save(namespaces);\n\t\tcreateDebug.namespaces = namespaces;\n\n\t\tcreateDebug.names = [];\n\t\tcreateDebug.skips = [];\n\n\t\tconst split = (typeof namespaces === 'string' ? namespaces : '')\n\t\t\t.trim()\n\t\t\t.replace(/\\s+/g, ',')\n\t\t\t.split(',')\n\t\t\t.filter(Boolean);\n\n\t\tfor (const ns of split) {\n\t\t\tif (ns[0] === '-') {\n\t\t\t\tcreateDebug.skips.push(ns.slice(1));\n\t\t\t} else {\n\t\t\t\tcreateDebug.names.push(ns);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Checks if the given string matches a namespace template, honoring\n\t * asterisks as wildcards.\n\t *\n\t * @param {String} search\n\t * @param {String} template\n\t * @return {Boolean}\n\t */\n\tfunction matchesTemplate(search, template) {\n\t\tlet searchIndex = 0;\n\t\tlet templateIndex = 0;\n\t\tlet starIndex = -1;\n\t\tlet matchIndex = 0;\n\n\t\twhile (searchIndex < search.length) {\n\t\t\tif (templateIndex < template.length && (template[templateIndex] === search[searchIndex] || template[templateIndex] === '*')) {\n\t\t\t\t// Match character or proceed with wildcard\n\t\t\t\tif (template[templateIndex] === '*') {\n\t\t\t\t\tstarIndex = templateIndex;\n\t\t\t\t\tmatchIndex = searchIndex;\n\t\t\t\t\ttemplateIndex++; // Skip the '*'\n\t\t\t\t} else {\n\t\t\t\t\tsearchIndex++;\n\t\t\t\t\ttemplateIndex++;\n\t\t\t\t}\n\t\t\t} else if (starIndex !== -1) { // eslint-disable-line no-negated-condition\n\t\t\t\t// Backtrack to the last '*' and try to match more characters\n\t\t\t\ttemplateIndex = starIndex + 1;\n\t\t\t\tmatchIndex++;\n\t\t\t\tsearchIndex = matchIndex;\n\t\t\t} else {\n\t\t\t\treturn false; // No match\n\t\t\t}\n\t\t}\n\n\t\t// Handle trailing '*' in template\n\t\twhile (templateIndex < template.length && template[templateIndex] === '*') {\n\t\t\ttemplateIndex++;\n\t\t}\n\n\t\treturn templateIndex === template.length;\n\t}\n\n\t/**\n\t* Disable debug output.\n\t*\n\t* @return {String} namespaces\n\t* @api public\n\t*/\n\tfunction disable() {\n\t\tconst namespaces = [\n\t\t\t...createDebug.names,\n\t\t\t...createDebug.skips.map(namespace => '-' + namespace)\n\t\t].join(',');\n\t\tcreateDebug.enable('');\n\t\treturn namespaces;\n\t}\n\n\t/**\n\t* Returns true if the given mode name is enabled, false otherwise.\n\t*\n\t* @param {String} name\n\t* @return {Boolean}\n\t* @api public\n\t*/\n\tfunction enabled(name) {\n\t\tfor (const skip of createDebug.skips) {\n\t\t\tif (matchesTemplate(name, skip)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tfor (const ns of createDebug.names) {\n\t\t\tif (matchesTemplate(name, ns)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t* Coerce `val`.\n\t*\n\t* @param {Mixed} val\n\t* @return {Mixed}\n\t* @api private\n\t*/\n\tfunction coerce(val) {\n\t\tif (val instanceof Error) {\n\t\t\treturn val.stack || val.message;\n\t\t}\n\t\treturn val;\n\t}\n\n\t/**\n\t* XXX DO NOT USE. This is a temporary stub function.\n\t* XXX It WILL be removed in the next major release.\n\t*/\n\tfunction destroy() {\n\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t}\n\n\tcreateDebug.enable(createDebug.load());\n\n\treturn createDebug;\n}\n\nmodule.exports = setup;\n","/* eslint-env browser */\n\n/**\n * This is the web browser implementation of `debug()`.\n */\n\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = localstorage();\nexports.destroy = (() => {\n\tlet warned = false;\n\n\treturn () => {\n\t\tif (!warned) {\n\t\t\twarned = true;\n\t\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t\t}\n\t};\n})();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n\t'#0000CC',\n\t'#0000FF',\n\t'#0033CC',\n\t'#0033FF',\n\t'#0066CC',\n\t'#0066FF',\n\t'#0099CC',\n\t'#0099FF',\n\t'#00CC00',\n\t'#00CC33',\n\t'#00CC66',\n\t'#00CC99',\n\t'#00CCCC',\n\t'#00CCFF',\n\t'#3300CC',\n\t'#3300FF',\n\t'#3333CC',\n\t'#3333FF',\n\t'#3366CC',\n\t'#3366FF',\n\t'#3399CC',\n\t'#3399FF',\n\t'#33CC00',\n\t'#33CC33',\n\t'#33CC66',\n\t'#33CC99',\n\t'#33CCCC',\n\t'#33CCFF',\n\t'#6600CC',\n\t'#6600FF',\n\t'#6633CC',\n\t'#6633FF',\n\t'#66CC00',\n\t'#66CC33',\n\t'#9900CC',\n\t'#9900FF',\n\t'#9933CC',\n\t'#9933FF',\n\t'#99CC00',\n\t'#99CC33',\n\t'#CC0000',\n\t'#CC0033',\n\t'#CC0066',\n\t'#CC0099',\n\t'#CC00CC',\n\t'#CC00FF',\n\t'#CC3300',\n\t'#CC3333',\n\t'#CC3366',\n\t'#CC3399',\n\t'#CC33CC',\n\t'#CC33FF',\n\t'#CC6600',\n\t'#CC6633',\n\t'#CC9900',\n\t'#CC9933',\n\t'#CCCC00',\n\t'#CCCC33',\n\t'#FF0000',\n\t'#FF0033',\n\t'#FF0066',\n\t'#FF0099',\n\t'#FF00CC',\n\t'#FF00FF',\n\t'#FF3300',\n\t'#FF3333',\n\t'#FF3366',\n\t'#FF3399',\n\t'#FF33CC',\n\t'#FF33FF',\n\t'#FF6600',\n\t'#FF6633',\n\t'#FF9900',\n\t'#FF9933',\n\t'#FFCC00',\n\t'#FFCC33'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\n// eslint-disable-next-line complexity\nfunction useColors() {\n\t// NB: In an Electron preload script, document will be defined but not fully\n\t// initialized. Since we know we're in Chrome, we'll just detect this case\n\t// explicitly\n\tif (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) {\n\t\treturn true;\n\t}\n\n\t// Internet Explorer and Edge do not support colors.\n\tif (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\n\t\treturn false;\n\t}\n\n\tlet m;\n\n\t// Is webkit? http://stackoverflow.com/a/16459606/376773\n\t// document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n\t// eslint-disable-next-line no-return-assign\n\treturn (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n\t\t// Is firebug? http://stackoverflow.com/a/398120/376773\n\t\t(typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n\t\t// Is firefox >= v31?\n\t\t// https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && (m = navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/)) && parseInt(m[1], 10) >= 31) ||\n\t\t// Double check webkit in userAgent just in case we are in a worker\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n\targs[0] = (this.useColors ? '%c' : '') +\n\t\tthis.namespace +\n\t\t(this.useColors ? ' %c' : ' ') +\n\t\targs[0] +\n\t\t(this.useColors ? '%c ' : ' ') +\n\t\t'+' + module.exports.humanize(this.diff);\n\n\tif (!this.useColors) {\n\t\treturn;\n\t}\n\n\tconst c = 'color: ' + this.color;\n\targs.splice(1, 0, c, 'color: inherit');\n\n\t// The final \"%c\" is somewhat tricky, because there could be other\n\t// arguments passed either before or after the %c, so we need to\n\t// figure out the correct index to insert the CSS into\n\tlet index = 0;\n\tlet lastC = 0;\n\targs[0].replace(/%[a-zA-Z%]/g, match => {\n\t\tif (match === '%%') {\n\t\t\treturn;\n\t\t}\n\t\tindex++;\n\t\tif (match === '%c') {\n\t\t\t// We only are interested in the *last* %c\n\t\t\t// (the user may have provided their own)\n\t\t\tlastC = index;\n\t\t}\n\t});\n\n\targs.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.debug()` when available.\n * No-op when `console.debug` is not a \"function\".\n * If `console.debug` is not available, falls back\n * to `console.log`.\n *\n * @api public\n */\nexports.log = console.debug || console.log || (() => {});\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\nfunction save(namespaces) {\n\ttry {\n\t\tif (namespaces) {\n\t\t\texports.storage.setItem('debug', namespaces);\n\t\t} else {\n\t\t\texports.storage.removeItem('debug');\n\t\t}\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\nfunction load() {\n\tlet r;\n\ttry {\n\t\tr = exports.storage.getItem('debug') || exports.storage.getItem('DEBUG') ;\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n\n\t// If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n\tif (!r && typeof process !== 'undefined' && 'env' in process) {\n\t\tr = process.env.DEBUG;\n\t}\n\n\treturn r;\n}\n\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\nfunction localstorage() {\n\ttry {\n\t\t// TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context\n\t\t// The Browser also has localStorage in the global context.\n\t\treturn localStorage;\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\nmodule.exports = require('./common')(exports);\n\nconst {formatters} = module.exports;\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nformatters.j = function (v) {\n\ttry {\n\t\treturn JSON.stringify(v);\n\t} catch (error) {\n\t\treturn '[UnexpectedJSONParseError]: ' + error.message;\n\t}\n};\n","'use strict';\n\nmodule.exports = (flag, argv = process.argv) => {\n\tconst prefix = flag.startsWith('-') ? '' : (flag.length === 1 ? '-' : '--');\n\tconst position = argv.indexOf(prefix + flag);\n\tconst terminatorPosition = argv.indexOf('--');\n\treturn position !== -1 && (terminatorPosition === -1 || position < terminatorPosition);\n};\n","'use strict';\nconst os = require('os');\nconst tty = require('tty');\nconst hasFlag = require('has-flag');\n\nconst {env} = process;\n\nlet forceColor;\nif (hasFlag('no-color') ||\n\thasFlag('no-colors') ||\n\thasFlag('color=false') ||\n\thasFlag('color=never')) {\n\tforceColor = 0;\n} else if (hasFlag('color') ||\n\thasFlag('colors') ||\n\thasFlag('color=true') ||\n\thasFlag('color=always')) {\n\tforceColor = 1;\n}\n\nif ('FORCE_COLOR' in env) {\n\tif (env.FORCE_COLOR === 'true') {\n\t\tforceColor = 1;\n\t} else if (env.FORCE_COLOR === 'false') {\n\t\tforceColor = 0;\n\t} else {\n\t\tforceColor = env.FORCE_COLOR.length === 0 ? 1 : Math.min(parseInt(env.FORCE_COLOR, 10), 3);\n\t}\n}\n\nfunction translateLevel(level) {\n\tif (level === 0) {\n\t\treturn false;\n\t}\n\n\treturn {\n\t\tlevel,\n\t\thasBasic: true,\n\t\thas256: level >= 2,\n\t\thas16m: level >= 3\n\t};\n}\n\nfunction supportsColor(haveStream, streamIsTTY) {\n\tif (forceColor === 0) {\n\t\treturn 0;\n\t}\n\n\tif (hasFlag('color=16m') ||\n\t\thasFlag('color=full') ||\n\t\thasFlag('color=truecolor')) {\n\t\treturn 3;\n\t}\n\n\tif (hasFlag('color=256')) {\n\t\treturn 2;\n\t}\n\n\tif (haveStream && !streamIsTTY && forceColor === undefined) {\n\t\treturn 0;\n\t}\n\n\tconst min = forceColor || 0;\n\n\tif (env.TERM === 'dumb') {\n\t\treturn min;\n\t}\n\n\tif (process.platform === 'win32') {\n\t\t// Windows 10 build 10586 is the first Windows release that supports 256 colors.\n\t\t// Windows 10 build 14931 is the first release that supports 16m/TrueColor.\n\t\tconst osRelease = os.release().split('.');\n\t\tif (\n\t\t\tNumber(osRelease[0]) >= 10 &&\n\t\t\tNumber(osRelease[2]) >= 10586\n\t\t) {\n\t\t\treturn Number(osRelease[2]) >= 14931 ? 3 : 2;\n\t\t}\n\n\t\treturn 1;\n\t}\n\n\tif ('CI' in env) {\n\t\tif (['TRAVIS', 'CIRCLECI', 'APPVEYOR', 'GITLAB_CI', 'GITHUB_ACTIONS', 'BUILDKITE'].some(sign => sign in env) || env.CI_NAME === 'codeship') {\n\t\t\treturn 1;\n\t\t}\n\n\t\treturn min;\n\t}\n\n\tif ('TEAMCITY_VERSION' in env) {\n\t\treturn /^(9\\.(0*[1-9]\\d*)\\.|\\d{2,}\\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0;\n\t}\n\n\tif (env.COLORTERM === 'truecolor') {\n\t\treturn 3;\n\t}\n\n\tif ('TERM_PROGRAM' in env) {\n\t\tconst version = parseInt((env.TERM_PROGRAM_VERSION || '').split('.')[0], 10);\n\n\t\tswitch (env.TERM_PROGRAM) {\n\t\t\tcase 'iTerm.app':\n\t\t\t\treturn version >= 3 ? 3 : 2;\n\t\t\tcase 'Apple_Terminal':\n\t\t\t\treturn 2;\n\t\t\t// No default\n\t\t}\n\t}\n\n\tif (/-256(color)?$/i.test(env.TERM)) {\n\t\treturn 2;\n\t}\n\n\tif (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) {\n\t\treturn 1;\n\t}\n\n\tif ('COLORTERM' in env) {\n\t\treturn 1;\n\t}\n\n\treturn min;\n}\n\nfunction getSupportLevel(stream) {\n\tconst level = supportsColor(stream, stream && stream.isTTY);\n\treturn translateLevel(level);\n}\n\nmodule.exports = {\n\tsupportsColor: getSupportLevel,\n\tstdout: translateLevel(supportsColor(true, tty.isatty(1))),\n\tstderr: translateLevel(supportsColor(true, tty.isatty(2)))\n};\n","/**\n * Module dependencies.\n */\n\nconst tty = require('tty');\nconst util = require('util');\n\n/**\n * This is the Node.js implementation of `debug()`.\n */\n\nexports.init = init;\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.destroy = util.deprecate(\n\t() => {},\n\t'Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.'\n);\n\n/**\n * Colors.\n */\n\nexports.colors = [6, 2, 3, 4, 5, 1];\n\ntry {\n\t// Optional dependency (as in, doesn't need to be installed, NOT like optionalDependencies in package.json)\n\t// eslint-disable-next-line import/no-extraneous-dependencies\n\tconst supportsColor = require('supports-color');\n\n\tif (supportsColor && (supportsColor.stderr || supportsColor).level >= 2) {\n\t\texports.colors = [\n\t\t\t20,\n\t\t\t21,\n\t\t\t26,\n\t\t\t27,\n\t\t\t32,\n\t\t\t33,\n\t\t\t38,\n\t\t\t39,\n\t\t\t40,\n\t\t\t41,\n\t\t\t42,\n\t\t\t43,\n\t\t\t44,\n\t\t\t45,\n\t\t\t56,\n\t\t\t57,\n\t\t\t62,\n\t\t\t63,\n\t\t\t68,\n\t\t\t69,\n\t\t\t74,\n\t\t\t75,\n\t\t\t76,\n\t\t\t77,\n\t\t\t78,\n\t\t\t79,\n\t\t\t80,\n\t\t\t81,\n\t\t\t92,\n\t\t\t93,\n\t\t\t98,\n\t\t\t99,\n\t\t\t112,\n\t\t\t113,\n\t\t\t128,\n\t\t\t129,\n\t\t\t134,\n\t\t\t135,\n\t\t\t148,\n\t\t\t149,\n\t\t\t160,\n\t\t\t161,\n\t\t\t162,\n\t\t\t163,\n\t\t\t164,\n\t\t\t165,\n\t\t\t166,\n\t\t\t167,\n\t\t\t168,\n\t\t\t169,\n\t\t\t170,\n\t\t\t171,\n\t\t\t172,\n\t\t\t173,\n\t\t\t178,\n\t\t\t179,\n\t\t\t184,\n\t\t\t185,\n\t\t\t196,\n\t\t\t197,\n\t\t\t198,\n\t\t\t199,\n\t\t\t200,\n\t\t\t201,\n\t\t\t202,\n\t\t\t203,\n\t\t\t204,\n\t\t\t205,\n\t\t\t206,\n\t\t\t207,\n\t\t\t208,\n\t\t\t209,\n\t\t\t214,\n\t\t\t215,\n\t\t\t220,\n\t\t\t221\n\t\t];\n\t}\n} catch (error) {\n\t// Swallow - we only care if `supports-color` is available; it doesn't have to be.\n}\n\n/**\n * Build up the default `inspectOpts` object from the environment variables.\n *\n * $ DEBUG_COLORS=no DEBUG_DEPTH=10 DEBUG_SHOW_HIDDEN=enabled node script.js\n */\n\nexports.inspectOpts = Object.keys(process.env).filter(key => {\n\treturn /^debug_/i.test(key);\n}).reduce((obj, key) => {\n\t// Camel-case\n\tconst prop = key\n\t\t.substring(6)\n\t\t.toLowerCase()\n\t\t.replace(/_([a-z])/g, (_, k) => {\n\t\t\treturn k.toUpperCase();\n\t\t});\n\n\t// Coerce string value into JS value\n\tlet val = process.env[key];\n\tif (/^(yes|on|true|enabled)$/i.test(val)) {\n\t\tval = true;\n\t} else if (/^(no|off|false|disabled)$/i.test(val)) {\n\t\tval = false;\n\t} else if (val === 'null') {\n\t\tval = null;\n\t} else {\n\t\tval = Number(val);\n\t}\n\n\tobj[prop] = val;\n\treturn obj;\n}, {});\n\n/**\n * Is stdout a TTY? Colored output is enabled when `true`.\n */\n\nfunction useColors() {\n\treturn 'colors' in exports.inspectOpts ?\n\t\tBoolean(exports.inspectOpts.colors) :\n\t\ttty.isatty(process.stderr.fd);\n}\n\n/**\n * Adds ANSI color escape codes if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n\tconst {namespace: name, useColors} = this;\n\n\tif (useColors) {\n\t\tconst c = this.color;\n\t\tconst colorCode = '\\u001B[3' + (c < 8 ? c : '8;5;' + c);\n\t\tconst prefix = ` ${colorCode};1m${name} \\u001B[0m`;\n\n\t\targs[0] = prefix + args[0].split('\\n').join('\\n' + prefix);\n\t\targs.push(colorCode + 'm+' + module.exports.humanize(this.diff) + '\\u001B[0m');\n\t} else {\n\t\targs[0] = getDate() + name + ' ' + args[0];\n\t}\n}\n\nfunction getDate() {\n\tif (exports.inspectOpts.hideDate) {\n\t\treturn '';\n\t}\n\treturn new Date().toISOString() + ' ';\n}\n\n/**\n * Invokes `util.formatWithOptions()` with the specified arguments and writes to stderr.\n */\n\nfunction log(...args) {\n\treturn process.stderr.write(util.formatWithOptions(exports.inspectOpts, ...args) + '\\n');\n}\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\nfunction save(namespaces) {\n\tif (namespaces) {\n\t\tprocess.env.DEBUG = namespaces;\n\t} else {\n\t\t// If you set a process.env field to null or undefined, it gets cast to the\n\t\t// string 'null' or 'undefined'. Just delete instead.\n\t\tdelete process.env.DEBUG;\n\t}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\nfunction load() {\n\treturn process.env.DEBUG;\n}\n\n/**\n * Init logic for `debug` instances.\n *\n * Create a new `inspectOpts` object in case `useColors` is set\n * differently for a particular `debug` instance.\n */\n\nfunction init(debug) {\n\tdebug.inspectOpts = {};\n\n\tconst keys = Object.keys(exports.inspectOpts);\n\tfor (let i = 0; i < keys.length; i++) {\n\t\tdebug.inspectOpts[keys[i]] = exports.inspectOpts[keys[i]];\n\t}\n}\n\nmodule.exports = require('./common')(exports);\n\nconst {formatters} = module.exports;\n\n/**\n * Map %o to `util.inspect()`, all on a single line.\n */\n\nformatters.o = function (v) {\n\tthis.inspectOpts.colors = this.useColors;\n\treturn util.inspect(v, this.inspectOpts)\n\t\t.split('\\n')\n\t\t.map(str => str.trim())\n\t\t.join(' ');\n};\n\n/**\n * Map %O to `util.inspect()`, allowing multiple lines if needed.\n */\n\nformatters.O = function (v) {\n\tthis.inspectOpts.colors = this.useColors;\n\treturn util.inspect(v, this.inspectOpts);\n};\n","/**\n * Detect Electron renderer / nwjs process, which is node, but we should\n * treat as a browser.\n */\n\nif (typeof process === 'undefined' || process.type === 'renderer' || process.browser === true || process.__nwjs) {\n\tmodule.exports = require('./browser.js');\n} else {\n\tmodule.exports = require('./node.js');\n}\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst fs_1 = require(\"fs\");\nconst debug_1 = __importDefault(require(\"debug\"));\nconst log = debug_1.default('@kwsites/file-exists');\nfunction check(path, isFile, isDirectory) {\n log(`checking %s`, path);\n try {\n const stat = fs_1.statSync(path);\n if (stat.isFile() && isFile) {\n log(`[OK] path represents a file`);\n return true;\n }\n if (stat.isDirectory() && isDirectory) {\n log(`[OK] path represents a directory`);\n return true;\n }\n log(`[FAIL] path represents something other than a file or directory`);\n return false;\n }\n catch (e) {\n if (e.code === 'ENOENT') {\n log(`[FAIL] path is not accessible: %o`, e);\n return false;\n }\n log(`[FATAL] %o`, e);\n throw e;\n }\n}\n/**\n * Synchronous validation of a path existing either as a file or as a directory.\n *\n * @param {string} path The path to check\n * @param {number} type One or both of the exported numeric constants\n */\nfunction exists(path, type = exports.READABLE) {\n return check(path, (type & exports.FILE) > 0, (type & exports.FOLDER) > 0);\n}\nexports.exists = exists;\n/**\n * Constant representing a file\n */\nexports.FILE = 1;\n/**\n * Constant representing a folder\n */\nexports.FOLDER = 2;\n/**\n * Constant representing either a file or a folder\n */\nexports.READABLE = exports.FILE + exports.FOLDER;\n//# sourceMappingURL=index.js.map","\"use strict\";\nfunction __export(m) {\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n}\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__export(require(\"./src\"));\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createDeferred = exports.deferred = void 0;\n/**\n * Creates a new `DeferredPromise`\n *\n * ```typescript\n import {deferred} from '@kwsites/promise-deferred`;\n ```\n */\nfunction deferred() {\n let done;\n let fail;\n let status = 'pending';\n const promise = new Promise((_done, _fail) => {\n done = _done;\n fail = _fail;\n });\n return {\n promise,\n done(result) {\n if (status === 'pending') {\n status = 'resolved';\n done(result);\n }\n },\n fail(error) {\n if (status === 'pending') {\n status = 'rejected';\n fail(error);\n }\n },\n get fulfilled() {\n return status !== 'pending';\n },\n get status() {\n return status;\n },\n };\n}\nexports.deferred = deferred;\n/**\n * Alias of the exported `deferred` function, to help consumers wanting to use `deferred` as the\n * local variable name rather than the factory import name, without needing to rename on import.\n *\n * ```typescript\n import {createDeferred} from '@kwsites/promise-deferred`;\n ```\n */\nexports.createDeferred = deferred;\n/**\n * Default export allows use as:\n *\n * ```typescript\n import deferred from '@kwsites/promise-deferred`;\n ```\n */\nexports.default = deferred;\n//# sourceMappingURL=index.js.map","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __esm = (fn, res) => function __init() {\n return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;\n};\nvar __commonJS = (cb, mod) => function __require() {\n return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;\n};\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/lib/args/pathspec.ts\nfunction pathspec(...paths) {\n const key = new String(paths);\n cache.set(key, paths);\n return key;\n}\nfunction isPathSpec(path) {\n return path instanceof String && cache.has(path);\n}\nfunction toPaths(pathSpec) {\n return cache.get(pathSpec) || [];\n}\nvar cache;\nvar init_pathspec = __esm({\n \"src/lib/args/pathspec.ts\"() {\n \"use strict\";\n cache = /* @__PURE__ */ new WeakMap();\n }\n});\n\n// src/lib/errors/git-error.ts\nvar GitError;\nvar init_git_error = __esm({\n \"src/lib/errors/git-error.ts\"() {\n \"use strict\";\n GitError = class extends Error {\n constructor(task, message) {\n super(message);\n this.task = task;\n Object.setPrototypeOf(this, new.target.prototype);\n }\n };\n }\n});\n\n// src/lib/errors/git-response-error.ts\nvar GitResponseError;\nvar init_git_response_error = __esm({\n \"src/lib/errors/git-response-error.ts\"() {\n \"use strict\";\n init_git_error();\n GitResponseError = class extends GitError {\n constructor(git, message) {\n super(void 0, message || String(git));\n this.git = git;\n }\n };\n }\n});\n\n// src/lib/errors/task-configuration-error.ts\nvar TaskConfigurationError;\nvar init_task_configuration_error = __esm({\n \"src/lib/errors/task-configuration-error.ts\"() {\n \"use strict\";\n init_git_error();\n TaskConfigurationError = class extends GitError {\n constructor(message) {\n super(void 0, message);\n }\n };\n }\n});\n\n// src/lib/utils/util.ts\nimport { Buffer as Buffer2 } from \"node:buffer\";\nimport { exists, FOLDER } from \"@kwsites/file-exists\";\nfunction asFunction(source) {\n if (typeof source !== \"function\") {\n return NOOP;\n }\n return source;\n}\nfunction isUserFunction(source) {\n return typeof source === \"function\" && source !== NOOP;\n}\nfunction splitOn(input, char) {\n const index = input.indexOf(char);\n if (index <= 0) {\n return [input, \"\"];\n }\n return [input.substr(0, index), input.substr(index + 1)];\n}\nfunction first(input, offset = 0) {\n return isArrayLike(input) && input.length > offset ? input[offset] : void 0;\n}\nfunction last(input, offset = 0) {\n if (isArrayLike(input) && input.length > offset) {\n return input[input.length - 1 - offset];\n }\n}\nfunction isArrayLike(input) {\n return filterHasLength(input);\n}\nfunction toLinesWithContent(input = \"\", trimmed2 = true, separator = \"\\n\") {\n return input.split(separator).reduce((output, line) => {\n const lineContent = trimmed2 ? line.trim() : line;\n if (lineContent) {\n output.push(lineContent);\n }\n return output;\n }, []);\n}\nfunction forEachLineWithContent(input, callback) {\n return toLinesWithContent(input, true).map((line) => callback(line));\n}\nfunction folderExists(path) {\n return exists(path, FOLDER);\n}\nfunction append(target, item) {\n if (Array.isArray(target)) {\n if (!target.includes(item)) {\n target.push(item);\n }\n } else {\n target.add(item);\n }\n return item;\n}\nfunction including(target, item) {\n if (Array.isArray(target) && !target.includes(item)) {\n target.push(item);\n }\n return target;\n}\nfunction remove(target, item) {\n if (Array.isArray(target)) {\n const index = target.indexOf(item);\n if (index >= 0) {\n target.splice(index, 1);\n }\n } else {\n target.delete(item);\n }\n return item;\n}\nfunction asArray(source) {\n return Array.isArray(source) ? source : [source];\n}\nfunction asCamelCase(str) {\n return str.replace(/[\\s-]+(.)/g, (_all, chr) => {\n return chr.toUpperCase();\n });\n}\nfunction asStringArray(source) {\n return asArray(source).map((item) => {\n return item instanceof String ? item : String(item);\n });\n}\nfunction asNumber(source, onNaN = 0) {\n if (source == null) {\n return onNaN;\n }\n const num = parseInt(source, 10);\n return Number.isNaN(num) ? onNaN : num;\n}\nfunction prefixedArray(input, prefix) {\n const output = [];\n for (let i = 0, max = input.length; i < max; i++) {\n output.push(prefix, input[i]);\n }\n return output;\n}\nfunction bufferToString(input) {\n return (Array.isArray(input) ? Buffer2.concat(input) : input).toString(\"utf-8\");\n}\nfunction pick(source, properties) {\n const out = {};\n properties.forEach((key) => {\n if (source[key] !== void 0) {\n out[key] = source[key];\n }\n });\n return out;\n}\nfunction delay(duration = 0) {\n return new Promise((done) => setTimeout(done, duration));\n}\nfunction orVoid(input) {\n if (input === false) {\n return void 0;\n }\n return input;\n}\nvar NULL, NOOP, objectToString;\nvar init_util = __esm({\n \"src/lib/utils/util.ts\"() {\n \"use strict\";\n init_argument_filters();\n NULL = \"\\0\";\n NOOP = () => {\n };\n objectToString = Object.prototype.toString.call.bind(Object.prototype.toString);\n }\n});\n\n// src/lib/utils/argument-filters.ts\nfunction filterType(input, filter, def) {\n if (filter(input)) {\n return input;\n }\n return arguments.length > 2 ? def : void 0;\n}\nfunction filterPrimitives(input, omit) {\n const type = isPathSpec(input) ? \"string\" : typeof input;\n return /number|string|boolean/.test(type) && (!omit || !omit.includes(type));\n}\nfunction filterPlainObject(input) {\n return !!input && objectToString(input) === \"[object Object]\";\n}\nfunction filterFunction(input) {\n return typeof input === \"function\";\n}\nvar filterArray, filterNumber, filterString, filterStringOrStringArray, filterHasLength;\nvar init_argument_filters = __esm({\n \"src/lib/utils/argument-filters.ts\"() {\n \"use strict\";\n init_pathspec();\n init_util();\n filterArray = (input) => {\n return Array.isArray(input);\n };\n filterNumber = (input) => {\n return typeof input === \"number\";\n };\n filterString = (input) => {\n return typeof input === \"string\";\n };\n filterStringOrStringArray = (input) => {\n return filterString(input) || Array.isArray(input) && input.every(filterString);\n };\n filterHasLength = (input) => {\n if (input == null || \"number|boolean|function\".includes(typeof input)) {\n return false;\n }\n return typeof input.length === \"number\";\n };\n }\n});\n\n// src/lib/utils/exit-codes.ts\nvar ExitCodes;\nvar init_exit_codes = __esm({\n \"src/lib/utils/exit-codes.ts\"() {\n \"use strict\";\n ExitCodes = /* @__PURE__ */ ((ExitCodes2) => {\n ExitCodes2[ExitCodes2[\"SUCCESS\"] = 0] = \"SUCCESS\";\n ExitCodes2[ExitCodes2[\"ERROR\"] = 1] = \"ERROR\";\n ExitCodes2[ExitCodes2[\"NOT_FOUND\"] = -2] = \"NOT_FOUND\";\n ExitCodes2[ExitCodes2[\"UNCLEAN\"] = 128] = \"UNCLEAN\";\n return ExitCodes2;\n })(ExitCodes || {});\n }\n});\n\n// src/lib/utils/git-output-streams.ts\nvar GitOutputStreams;\nvar init_git_output_streams = __esm({\n \"src/lib/utils/git-output-streams.ts\"() {\n \"use strict\";\n GitOutputStreams = class _GitOutputStreams {\n constructor(stdOut, stdErr) {\n this.stdOut = stdOut;\n this.stdErr = stdErr;\n }\n asStrings() {\n return new _GitOutputStreams(this.stdOut.toString(\"utf8\"), this.stdErr.toString(\"utf8\"));\n }\n };\n }\n});\n\n// src/lib/utils/line-parser.ts\nfunction useMatchesDefault() {\n throw new Error(`LineParser:useMatches not implemented`);\n}\nvar LineParser, RemoteLineParser;\nvar init_line_parser = __esm({\n \"src/lib/utils/line-parser.ts\"() {\n \"use strict\";\n LineParser = class {\n constructor(regExp, useMatches) {\n this.matches = [];\n this.useMatches = useMatchesDefault;\n this.parse = (line, target) => {\n this.resetMatches();\n if (!this._regExp.every((reg, index) => this.addMatch(reg, index, line(index)))) {\n return false;\n }\n return this.useMatches(target, this.prepareMatches()) !== false;\n };\n this._regExp = Array.isArray(regExp) ? regExp : [regExp];\n if (useMatches) {\n this.useMatches = useMatches;\n }\n }\n resetMatches() {\n this.matches.length = 0;\n }\n prepareMatches() {\n return this.matches;\n }\n addMatch(reg, index, line) {\n const matched = line && reg.exec(line);\n if (matched) {\n this.pushMatch(index, matched);\n }\n return !!matched;\n }\n pushMatch(_index, matched) {\n this.matches.push(...matched.slice(1));\n }\n };\n RemoteLineParser = class extends LineParser {\n addMatch(reg, index, line) {\n return /^remote:\\s/.test(String(line)) && super.addMatch(reg, index, line);\n }\n pushMatch(index, matched) {\n if (index > 0 || matched.length > 1) {\n super.pushMatch(index, matched);\n }\n }\n };\n }\n});\n\n// src/lib/utils/simple-git-options.ts\nfunction createInstanceConfig(...options) {\n const baseDir = process.cwd();\n const config = Object.assign(\n { baseDir, ...defaultOptions },\n ...options.filter((o) => typeof o === \"object\" && o)\n );\n config.baseDir = config.baseDir || baseDir;\n config.trimmed = config.trimmed === true;\n return config;\n}\nvar defaultOptions;\nvar init_simple_git_options = __esm({\n \"src/lib/utils/simple-git-options.ts\"() {\n \"use strict\";\n defaultOptions = {\n binary: \"git\",\n maxConcurrentProcesses: 5,\n config: [],\n trimmed: false\n };\n }\n});\n\n// src/lib/utils/task-options.ts\nfunction appendTaskOptions(options, commands = []) {\n if (!filterPlainObject(options)) {\n return commands;\n }\n return Object.keys(options).reduce((commands2, key) => {\n const value = options[key];\n if (isPathSpec(value)) {\n commands2.push(value);\n } else if (filterPrimitives(value, [\"boolean\"])) {\n commands2.push(key + \"=\" + value);\n } else if (Array.isArray(value)) {\n for (const v of value) {\n if (!filterPrimitives(v, [\"string\", \"number\"])) {\n commands2.push(key + \"=\" + v);\n }\n }\n } else {\n commands2.push(key);\n }\n return commands2;\n }, commands);\n}\nfunction getTrailingOptions(args, initialPrimitive = 0, objectOnly = false) {\n const command = [];\n for (let i = 0, max = initialPrimitive < 0 ? args.length : initialPrimitive; i < max; i++) {\n if (\"string|number\".includes(typeof args[i])) {\n command.push(String(args[i]));\n }\n }\n appendTaskOptions(trailingOptionsArgument(args), command);\n if (!objectOnly) {\n command.push(...trailingArrayArgument(args));\n }\n return command;\n}\nfunction trailingArrayArgument(args) {\n const hasTrailingCallback = typeof last(args) === \"function\";\n return asStringArray(filterType(last(args, hasTrailingCallback ? 1 : 0), filterArray, []));\n}\nfunction trailingOptionsArgument(args) {\n const hasTrailingCallback = filterFunction(last(args));\n return filterType(last(args, hasTrailingCallback ? 1 : 0), filterPlainObject);\n}\nfunction trailingFunctionArgument(args, includeNoop = true) {\n const callback = asFunction(last(args));\n return includeNoop || isUserFunction(callback) ? callback : void 0;\n}\nvar init_task_options = __esm({\n \"src/lib/utils/task-options.ts\"() {\n \"use strict\";\n init_argument_filters();\n init_util();\n init_pathspec();\n }\n});\n\n// src/lib/utils/task-parser.ts\nfunction callTaskParser(parser4, streams) {\n return parser4(streams.stdOut, streams.stdErr);\n}\nfunction parseStringResponse(result, parsers12, texts, trim = true) {\n asArray(texts).forEach((text) => {\n for (let lines = toLinesWithContent(text, trim), i = 0, max = lines.length; i < max; i++) {\n const line = (offset = 0) => {\n if (i + offset >= max) {\n return;\n }\n return lines[i + offset];\n };\n parsers12.some(({ parse }) => parse(line, result));\n }\n });\n return result;\n}\nvar init_task_parser = __esm({\n \"src/lib/utils/task-parser.ts\"() {\n \"use strict\";\n init_util();\n }\n});\n\n// src/lib/utils/index.ts\nvar utils_exports = {};\n__export(utils_exports, {\n ExitCodes: () => ExitCodes,\n GitOutputStreams: () => GitOutputStreams,\n LineParser: () => LineParser,\n NOOP: () => NOOP,\n NULL: () => NULL,\n RemoteLineParser: () => RemoteLineParser,\n append: () => append,\n appendTaskOptions: () => appendTaskOptions,\n asArray: () => asArray,\n asCamelCase: () => asCamelCase,\n asFunction: () => asFunction,\n asNumber: () => asNumber,\n asStringArray: () => asStringArray,\n bufferToString: () => bufferToString,\n callTaskParser: () => callTaskParser,\n createInstanceConfig: () => createInstanceConfig,\n delay: () => delay,\n filterArray: () => filterArray,\n filterFunction: () => filterFunction,\n filterHasLength: () => filterHasLength,\n filterNumber: () => filterNumber,\n filterPlainObject: () => filterPlainObject,\n filterPrimitives: () => filterPrimitives,\n filterString: () => filterString,\n filterStringOrStringArray: () => filterStringOrStringArray,\n filterType: () => filterType,\n first: () => first,\n folderExists: () => folderExists,\n forEachLineWithContent: () => forEachLineWithContent,\n getTrailingOptions: () => getTrailingOptions,\n including: () => including,\n isUserFunction: () => isUserFunction,\n last: () => last,\n objectToString: () => objectToString,\n orVoid: () => orVoid,\n parseStringResponse: () => parseStringResponse,\n pick: () => pick,\n prefixedArray: () => prefixedArray,\n remove: () => remove,\n splitOn: () => splitOn,\n toLinesWithContent: () => toLinesWithContent,\n trailingFunctionArgument: () => trailingFunctionArgument,\n trailingOptionsArgument: () => trailingOptionsArgument\n});\nvar init_utils = __esm({\n \"src/lib/utils/index.ts\"() {\n \"use strict\";\n init_argument_filters();\n init_exit_codes();\n init_git_output_streams();\n init_line_parser();\n init_simple_git_options();\n init_task_options();\n init_task_parser();\n init_util();\n }\n});\n\n// src/lib/tasks/check-is-repo.ts\nvar check_is_repo_exports = {};\n__export(check_is_repo_exports, {\n CheckRepoActions: () => CheckRepoActions,\n checkIsBareRepoTask: () => checkIsBareRepoTask,\n checkIsRepoRootTask: () => checkIsRepoRootTask,\n checkIsRepoTask: () => checkIsRepoTask\n});\nfunction checkIsRepoTask(action) {\n switch (action) {\n case \"bare\" /* BARE */:\n return checkIsBareRepoTask();\n case \"root\" /* IS_REPO_ROOT */:\n return checkIsRepoRootTask();\n }\n const commands = [\"rev-parse\", \"--is-inside-work-tree\"];\n return {\n commands,\n format: \"utf-8\",\n onError,\n parser\n };\n}\nfunction checkIsRepoRootTask() {\n const commands = [\"rev-parse\", \"--git-dir\"];\n return {\n commands,\n format: \"utf-8\",\n onError,\n parser(path) {\n return /^\\.(git)?$/.test(path.trim());\n }\n };\n}\nfunction checkIsBareRepoTask() {\n const commands = [\"rev-parse\", \"--is-bare-repository\"];\n return {\n commands,\n format: \"utf-8\",\n onError,\n parser\n };\n}\nfunction isNotRepoMessage(error) {\n return /(Not a git repository|Kein Git-Repository)/i.test(String(error));\n}\nvar CheckRepoActions, onError, parser;\nvar init_check_is_repo = __esm({\n \"src/lib/tasks/check-is-repo.ts\"() {\n \"use strict\";\n init_utils();\n CheckRepoActions = /* @__PURE__ */ ((CheckRepoActions2) => {\n CheckRepoActions2[\"BARE\"] = \"bare\";\n CheckRepoActions2[\"IN_TREE\"] = \"tree\";\n CheckRepoActions2[\"IS_REPO_ROOT\"] = \"root\";\n return CheckRepoActions2;\n })(CheckRepoActions || {});\n onError = ({ exitCode }, error, done, fail) => {\n if (exitCode === 128 /* UNCLEAN */ && isNotRepoMessage(error)) {\n return done(Buffer.from(\"false\"));\n }\n fail(error);\n };\n parser = (text) => {\n return text.trim() === \"true\";\n };\n }\n});\n\n// src/lib/responses/CleanSummary.ts\nfunction cleanSummaryParser(dryRun, text) {\n const summary = new CleanResponse(dryRun);\n const regexp = dryRun ? dryRunRemovalRegexp : removalRegexp;\n toLinesWithContent(text).forEach((line) => {\n const removed = line.replace(regexp, \"\");\n summary.paths.push(removed);\n (isFolderRegexp.test(removed) ? summary.folders : summary.files).push(removed);\n });\n return summary;\n}\nvar CleanResponse, removalRegexp, dryRunRemovalRegexp, isFolderRegexp;\nvar init_CleanSummary = __esm({\n \"src/lib/responses/CleanSummary.ts\"() {\n \"use strict\";\n init_utils();\n CleanResponse = class {\n constructor(dryRun) {\n this.dryRun = dryRun;\n this.paths = [];\n this.files = [];\n this.folders = [];\n }\n };\n removalRegexp = /^[a-z]+\\s*/i;\n dryRunRemovalRegexp = /^[a-z]+\\s+[a-z]+\\s*/i;\n isFolderRegexp = /\\/$/;\n }\n});\n\n// src/lib/tasks/task.ts\nvar task_exports = {};\n__export(task_exports, {\n EMPTY_COMMANDS: () => EMPTY_COMMANDS,\n adhocExecTask: () => adhocExecTask,\n configurationErrorTask: () => configurationErrorTask,\n isBufferTask: () => isBufferTask,\n isEmptyTask: () => isEmptyTask,\n straightThroughBufferTask: () => straightThroughBufferTask,\n straightThroughStringTask: () => straightThroughStringTask\n});\nfunction adhocExecTask(parser4) {\n return {\n commands: EMPTY_COMMANDS,\n format: \"empty\",\n parser: parser4\n };\n}\nfunction configurationErrorTask(error) {\n return {\n commands: EMPTY_COMMANDS,\n format: \"empty\",\n parser() {\n throw typeof error === \"string\" ? new TaskConfigurationError(error) : error;\n }\n };\n}\nfunction straightThroughStringTask(commands, trimmed2 = false) {\n return {\n commands,\n format: \"utf-8\",\n parser(text) {\n return trimmed2 ? String(text).trim() : text;\n }\n };\n}\nfunction straightThroughBufferTask(commands) {\n return {\n commands,\n format: \"buffer\",\n parser(buffer) {\n return buffer;\n }\n };\n}\nfunction isBufferTask(task) {\n return task.format === \"buffer\";\n}\nfunction isEmptyTask(task) {\n return task.format === \"empty\" || !task.commands.length;\n}\nvar EMPTY_COMMANDS;\nvar init_task = __esm({\n \"src/lib/tasks/task.ts\"() {\n \"use strict\";\n init_task_configuration_error();\n EMPTY_COMMANDS = [];\n }\n});\n\n// src/lib/tasks/clean.ts\nvar clean_exports = {};\n__export(clean_exports, {\n CONFIG_ERROR_INTERACTIVE_MODE: () => CONFIG_ERROR_INTERACTIVE_MODE,\n CONFIG_ERROR_MODE_REQUIRED: () => CONFIG_ERROR_MODE_REQUIRED,\n CONFIG_ERROR_UNKNOWN_OPTION: () => CONFIG_ERROR_UNKNOWN_OPTION,\n CleanOptions: () => CleanOptions,\n cleanTask: () => cleanTask,\n cleanWithOptionsTask: () => cleanWithOptionsTask,\n isCleanOptionsArray: () => isCleanOptionsArray\n});\nfunction cleanWithOptionsTask(mode, customArgs) {\n const { cleanMode, options, valid } = getCleanOptions(mode);\n if (!cleanMode) {\n return configurationErrorTask(CONFIG_ERROR_MODE_REQUIRED);\n }\n if (!valid.options) {\n return configurationErrorTask(CONFIG_ERROR_UNKNOWN_OPTION + JSON.stringify(mode));\n }\n options.push(...customArgs);\n if (options.some(isInteractiveMode)) {\n return configurationErrorTask(CONFIG_ERROR_INTERACTIVE_MODE);\n }\n return cleanTask(cleanMode, options);\n}\nfunction cleanTask(mode, customArgs) {\n const commands = [\"clean\", `-${mode}`, ...customArgs];\n return {\n commands,\n format: \"utf-8\",\n parser(text) {\n return cleanSummaryParser(mode === \"n\" /* DRY_RUN */, text);\n }\n };\n}\nfunction isCleanOptionsArray(input) {\n return Array.isArray(input) && input.every((test) => CleanOptionValues.has(test));\n}\nfunction getCleanOptions(input) {\n let cleanMode;\n let options = [];\n let valid = { cleanMode: false, options: true };\n input.replace(/[^a-z]i/g, \"\").split(\"\").forEach((char) => {\n if (isCleanMode(char)) {\n cleanMode = char;\n valid.cleanMode = true;\n } else {\n valid.options = valid.options && isKnownOption(options[options.length] = `-${char}`);\n }\n });\n return {\n cleanMode,\n options,\n valid\n };\n}\nfunction isCleanMode(cleanMode) {\n return cleanMode === \"f\" /* FORCE */ || cleanMode === \"n\" /* DRY_RUN */;\n}\nfunction isKnownOption(option) {\n return /^-[a-z]$/i.test(option) && CleanOptionValues.has(option.charAt(1));\n}\nfunction isInteractiveMode(option) {\n if (/^-[^\\-]/.test(option)) {\n return option.indexOf(\"i\") > 0;\n }\n return option === \"--interactive\";\n}\nvar CONFIG_ERROR_INTERACTIVE_MODE, CONFIG_ERROR_MODE_REQUIRED, CONFIG_ERROR_UNKNOWN_OPTION, CleanOptions, CleanOptionValues;\nvar init_clean = __esm({\n \"src/lib/tasks/clean.ts\"() {\n \"use strict\";\n init_CleanSummary();\n init_utils();\n init_task();\n CONFIG_ERROR_INTERACTIVE_MODE = \"Git clean interactive mode is not supported\";\n CONFIG_ERROR_MODE_REQUIRED = 'Git clean mode parameter (\"n\" or \"f\") is required';\n CONFIG_ERROR_UNKNOWN_OPTION = \"Git clean unknown option found in: \";\n CleanOptions = /* @__PURE__ */ ((CleanOptions2) => {\n CleanOptions2[\"DRY_RUN\"] = \"n\";\n CleanOptions2[\"FORCE\"] = \"f\";\n CleanOptions2[\"IGNORED_INCLUDED\"] = \"x\";\n CleanOptions2[\"IGNORED_ONLY\"] = \"X\";\n CleanOptions2[\"EXCLUDING\"] = \"e\";\n CleanOptions2[\"QUIET\"] = \"q\";\n CleanOptions2[\"RECURSIVE\"] = \"d\";\n return CleanOptions2;\n })(CleanOptions || {});\n CleanOptionValues = /* @__PURE__ */ new Set([\n \"i\",\n ...asStringArray(Object.values(CleanOptions))\n ]);\n }\n});\n\n// src/lib/responses/ConfigList.ts\nfunction configListParser(text) {\n const config = new ConfigList();\n for (const item of configParser(text)) {\n config.addValue(item.file, String(item.key), item.value);\n }\n return config;\n}\nfunction configGetParser(text, key) {\n let value = null;\n const values = [];\n const scopes = /* @__PURE__ */ new Map();\n for (const item of configParser(text, key)) {\n if (item.key !== key) {\n continue;\n }\n values.push(value = item.value);\n if (!scopes.has(item.file)) {\n scopes.set(item.file, []);\n }\n scopes.get(item.file).push(value);\n }\n return {\n key,\n paths: Array.from(scopes.keys()),\n scopes,\n value,\n values\n };\n}\nfunction configFilePath(filePath) {\n return filePath.replace(/^(file):/, \"\");\n}\nfunction* configParser(text, requestedKey = null) {\n const lines = text.split(\"\\0\");\n for (let i = 0, max = lines.length - 1; i < max; ) {\n const file = configFilePath(lines[i++]);\n let value = lines[i++];\n let key = requestedKey;\n if (value.includes(\"\\n\")) {\n const line = splitOn(value, \"\\n\");\n key = line[0];\n value = line[1];\n }\n yield { file, key, value };\n }\n}\nvar ConfigList;\nvar init_ConfigList = __esm({\n \"src/lib/responses/ConfigList.ts\"() {\n \"use strict\";\n init_utils();\n ConfigList = class {\n constructor() {\n this.files = [];\n this.values = /* @__PURE__ */ Object.create(null);\n }\n get all() {\n if (!this._all) {\n this._all = this.files.reduce((all, file) => {\n return Object.assign(all, this.values[file]);\n }, {});\n }\n return this._all;\n }\n addFile(file) {\n if (!(file in this.values)) {\n const latest = last(this.files);\n this.values[file] = latest ? Object.create(this.values[latest]) : {};\n this.files.push(file);\n }\n return this.values[file];\n }\n addValue(file, key, value) {\n const values = this.addFile(file);\n if (!Object.hasOwn(values, key)) {\n values[key] = value;\n } else if (Array.isArray(values[key])) {\n values[key].push(value);\n } else {\n values[key] = [values[key], value];\n }\n this._all = void 0;\n }\n };\n }\n});\n\n// src/lib/tasks/config.ts\nfunction asConfigScope(scope, fallback) {\n if (typeof scope === \"string\" && Object.hasOwn(GitConfigScope, scope)) {\n return scope;\n }\n return fallback;\n}\nfunction addConfigTask(key, value, append2, scope) {\n const commands = [\"config\", `--${scope}`];\n if (append2) {\n commands.push(\"--add\");\n }\n commands.push(key, value);\n return {\n commands,\n format: \"utf-8\",\n parser(text) {\n return text;\n }\n };\n}\nfunction getConfigTask(key, scope) {\n const commands = [\"config\", \"--null\", \"--show-origin\", \"--get-all\", key];\n if (scope) {\n commands.splice(1, 0, `--${scope}`);\n }\n return {\n commands,\n format: \"utf-8\",\n parser(text) {\n return configGetParser(text, key);\n }\n };\n}\nfunction listConfigTask(scope) {\n const commands = [\"config\", \"--list\", \"--show-origin\", \"--null\"];\n if (scope) {\n commands.push(`--${scope}`);\n }\n return {\n commands,\n format: \"utf-8\",\n parser(text) {\n return configListParser(text);\n }\n };\n}\nfunction config_default() {\n return {\n addConfig(key, value, ...rest) {\n return this._runTask(\n addConfigTask(\n key,\n value,\n rest[0] === true,\n asConfigScope(rest[1], \"local\" /* local */)\n ),\n trailingFunctionArgument(arguments)\n );\n },\n getConfig(key, scope) {\n return this._runTask(\n getConfigTask(key, asConfigScope(scope, void 0)),\n trailingFunctionArgument(arguments)\n );\n },\n listConfig(...rest) {\n return this._runTask(\n listConfigTask(asConfigScope(rest[0], void 0)),\n trailingFunctionArgument(arguments)\n );\n }\n };\n}\nvar GitConfigScope;\nvar init_config = __esm({\n \"src/lib/tasks/config.ts\"() {\n \"use strict\";\n init_ConfigList();\n init_utils();\n GitConfigScope = /* @__PURE__ */ ((GitConfigScope2) => {\n GitConfigScope2[\"system\"] = \"system\";\n GitConfigScope2[\"global\"] = \"global\";\n GitConfigScope2[\"local\"] = \"local\";\n GitConfigScope2[\"worktree\"] = \"worktree\";\n return GitConfigScope2;\n })(GitConfigScope || {});\n }\n});\n\n// src/lib/tasks/diff-name-status.ts\nfunction isDiffNameStatus(input) {\n return diffNameStatus.has(input);\n}\nvar DiffNameStatus, diffNameStatus;\nvar init_diff_name_status = __esm({\n \"src/lib/tasks/diff-name-status.ts\"() {\n \"use strict\";\n DiffNameStatus = /* @__PURE__ */ ((DiffNameStatus2) => {\n DiffNameStatus2[\"ADDED\"] = \"A\";\n DiffNameStatus2[\"COPIED\"] = \"C\";\n DiffNameStatus2[\"DELETED\"] = \"D\";\n DiffNameStatus2[\"MODIFIED\"] = \"M\";\n DiffNameStatus2[\"RENAMED\"] = \"R\";\n DiffNameStatus2[\"CHANGED\"] = \"T\";\n DiffNameStatus2[\"UNMERGED\"] = \"U\";\n DiffNameStatus2[\"UNKNOWN\"] = \"X\";\n DiffNameStatus2[\"BROKEN\"] = \"B\";\n return DiffNameStatus2;\n })(DiffNameStatus || {});\n diffNameStatus = new Set(Object.values(DiffNameStatus));\n }\n});\n\n// src/lib/tasks/grep.ts\nfunction grepQueryBuilder(...params) {\n return new GrepQuery().param(...params);\n}\nfunction parseGrep(grep) {\n const paths = /* @__PURE__ */ new Set();\n const results = {};\n forEachLineWithContent(grep, (input) => {\n const [path, line, preview] = input.split(NULL);\n paths.add(path);\n (results[path] = results[path] || []).push({\n line: asNumber(line),\n path,\n preview\n });\n });\n return {\n paths,\n results\n };\n}\nfunction grep_default() {\n return {\n grep(searchTerm) {\n const then = trailingFunctionArgument(arguments);\n const options = getTrailingOptions(arguments);\n for (const option of disallowedOptions) {\n if (options.includes(option)) {\n return this._runTask(\n configurationErrorTask(`git.grep: use of \"${option}\" is not supported.`),\n then\n );\n }\n }\n if (typeof searchTerm === \"string\") {\n searchTerm = grepQueryBuilder().param(searchTerm);\n }\n const commands = [\"grep\", \"--null\", \"-n\", \"--full-name\", ...options, ...searchTerm];\n return this._runTask(\n {\n commands,\n format: \"utf-8\",\n parser(stdOut) {\n return parseGrep(stdOut);\n }\n },\n then\n );\n }\n };\n}\nvar disallowedOptions, Query, _a, GrepQuery;\nvar init_grep = __esm({\n \"src/lib/tasks/grep.ts\"() {\n \"use strict\";\n init_utils();\n init_task();\n disallowedOptions = [\"-h\"];\n Query = Symbol(\"grepQuery\");\n GrepQuery = class {\n constructor() {\n this[_a] = [];\n }\n *[(_a = Query, Symbol.iterator)]() {\n for (const query of this[Query]) {\n yield query;\n }\n }\n and(...and) {\n and.length && this[Query].push(\"--and\", \"(\", ...prefixedArray(and, \"-e\"), \")\");\n return this;\n }\n param(...param) {\n this[Query].push(...prefixedArray(param, \"-e\"));\n return this;\n }\n };\n }\n});\n\n// src/lib/tasks/reset.ts\nvar reset_exports = {};\n__export(reset_exports, {\n ResetMode: () => ResetMode,\n getResetMode: () => getResetMode,\n resetTask: () => resetTask\n});\nfunction resetTask(mode, customArgs) {\n const commands = [\"reset\"];\n if (isValidResetMode(mode)) {\n commands.push(`--${mode}`);\n }\n commands.push(...customArgs);\n return straightThroughStringTask(commands);\n}\nfunction getResetMode(mode) {\n if (isValidResetMode(mode)) {\n return mode;\n }\n switch (typeof mode) {\n case \"string\":\n case \"undefined\":\n return \"soft\" /* SOFT */;\n }\n return;\n}\nfunction isValidResetMode(mode) {\n return typeof mode === \"string\" && validResetModes.includes(mode);\n}\nvar ResetMode, validResetModes;\nvar init_reset = __esm({\n \"src/lib/tasks/reset.ts\"() {\n \"use strict\";\n init_utils();\n init_task();\n ResetMode = /* @__PURE__ */ ((ResetMode2) => {\n ResetMode2[\"MIXED\"] = \"mixed\";\n ResetMode2[\"SOFT\"] = \"soft\";\n ResetMode2[\"HARD\"] = \"hard\";\n ResetMode2[\"MERGE\"] = \"merge\";\n ResetMode2[\"KEEP\"] = \"keep\";\n return ResetMode2;\n })(ResetMode || {});\n validResetModes = asStringArray(Object.values(ResetMode));\n }\n});\n\n// src/lib/git-logger.ts\nimport debug from \"debug\";\nfunction createLog() {\n return debug(\"simple-git\");\n}\nfunction prefixedLogger(to, prefix, forward) {\n if (!prefix || !String(prefix).replace(/\\s*/, \"\")) {\n return !forward ? to : (message, ...args) => {\n to(message, ...args);\n forward(message, ...args);\n };\n }\n return (message, ...args) => {\n to(`%s ${message}`, prefix, ...args);\n if (forward) {\n forward(message, ...args);\n }\n };\n}\nfunction childLoggerName(name, childDebugger, { namespace: parentNamespace }) {\n if (typeof name === \"string\") {\n return name;\n }\n const childNamespace = childDebugger && childDebugger.namespace || \"\";\n if (childNamespace.startsWith(parentNamespace)) {\n return childNamespace.substr(parentNamespace.length + 1);\n }\n return childNamespace || parentNamespace;\n}\nfunction createLogger(label, verbose, initialStep, infoDebugger = createLog()) {\n const labelPrefix = label && `[${label}]` || \"\";\n const spawned = [];\n const debugDebugger = typeof verbose === \"string\" ? infoDebugger.extend(verbose) : verbose;\n const key = childLoggerName(filterType(verbose, filterString), debugDebugger, infoDebugger);\n return step(initialStep);\n function sibling(name, initial) {\n return append(\n spawned,\n createLogger(label, key.replace(/^[^:]+/, name), initial, infoDebugger)\n );\n }\n function step(phase) {\n const stepPrefix = phase && `[${phase}]` || \"\";\n const debug2 = debugDebugger && prefixedLogger(debugDebugger, stepPrefix) || NOOP;\n const info = prefixedLogger(infoDebugger, `${labelPrefix} ${stepPrefix}`, debug2);\n return Object.assign(debugDebugger ? debug2 : info, {\n label,\n sibling,\n info,\n step\n });\n }\n}\nvar init_git_logger = __esm({\n \"src/lib/git-logger.ts\"() {\n \"use strict\";\n init_utils();\n debug.formatters.L = (value) => String(filterHasLength(value) ? value.length : \"-\");\n debug.formatters.B = (value) => {\n if (Buffer.isBuffer(value)) {\n return value.toString(\"utf8\");\n }\n return objectToString(value);\n };\n }\n});\n\n// src/lib/runners/tasks-pending-queue.ts\nvar TasksPendingQueue;\nvar init_tasks_pending_queue = __esm({\n \"src/lib/runners/tasks-pending-queue.ts\"() {\n \"use strict\";\n init_git_error();\n init_git_logger();\n TasksPendingQueue = class _TasksPendingQueue {\n constructor(logLabel = \"GitExecutor\") {\n this.logLabel = logLabel;\n this._queue = /* @__PURE__ */ new Map();\n }\n withProgress(task) {\n return this._queue.get(task);\n }\n createProgress(task) {\n const name = _TasksPendingQueue.getName(task.commands[0]);\n const logger = createLogger(this.logLabel, name);\n return {\n task,\n logger,\n name\n };\n }\n push(task) {\n const progress = this.createProgress(task);\n progress.logger(\"Adding task to the queue, commands = %o\", task.commands);\n this._queue.set(task, progress);\n return progress;\n }\n fatal(err) {\n for (const [task, { logger }] of Array.from(this._queue.entries())) {\n if (task === err.task) {\n logger.info(`Failed %o`, err);\n logger(\n `Fatal exception, any as-yet un-started tasks run through this executor will not be attempted`\n );\n } else {\n logger.info(\n `A fatal exception occurred in a previous task, the queue has been purged: %o`,\n err.message\n );\n }\n this.complete(task);\n }\n if (this._queue.size !== 0) {\n throw new Error(`Queue size should be zero after fatal: ${this._queue.size}`);\n }\n }\n complete(task) {\n const progress = this.withProgress(task);\n if (progress) {\n this._queue.delete(task);\n }\n }\n attempt(task) {\n const progress = this.withProgress(task);\n if (!progress) {\n throw new GitError(void 0, \"TasksPendingQueue: attempt called for an unknown task\");\n }\n progress.logger(\"Starting task\");\n return progress;\n }\n static getName(name = \"empty\") {\n return `task:${name}:${++_TasksPendingQueue.counter}`;\n }\n static {\n this.counter = 0;\n }\n };\n }\n});\n\n// src/lib/runners/git-executor-chain.ts\nimport { spawn } from \"child_process\";\nfunction pluginContext(task, commands) {\n return {\n method: first(task.commands) || \"\",\n commands\n };\n}\nfunction onErrorReceived(target, logger) {\n return (err) => {\n logger(`[ERROR] child process exception %o`, err);\n target.push(Buffer.from(String(err.stack), \"ascii\"));\n };\n}\nfunction onDataReceived(target, name, logger, output) {\n return (buffer) => {\n logger(`%s received %L bytes`, name, buffer);\n output(`%B`, buffer);\n target.push(buffer);\n };\n}\nvar GitExecutorChain;\nvar init_git_executor_chain = __esm({\n \"src/lib/runners/git-executor-chain.ts\"() {\n \"use strict\";\n init_git_error();\n init_task();\n init_utils();\n init_tasks_pending_queue();\n GitExecutorChain = class {\n constructor(_executor, _scheduler, _plugins) {\n this._executor = _executor;\n this._scheduler = _scheduler;\n this._plugins = _plugins;\n this._chain = Promise.resolve();\n this._queue = new TasksPendingQueue();\n }\n get cwd() {\n return this._cwd || this._executor.cwd;\n }\n set cwd(cwd) {\n this._cwd = cwd;\n }\n get env() {\n return this._executor.env;\n }\n get outputHandler() {\n return this._executor.outputHandler;\n }\n chain() {\n return this;\n }\n push(task) {\n this._queue.push(task);\n return this._chain = this._chain.then(() => this.attemptTask(task));\n }\n async attemptTask(task) {\n const onScheduleComplete = await this._scheduler.next();\n const onQueueComplete = () => this._queue.complete(task);\n try {\n const { logger } = this._queue.attempt(task);\n return await (isEmptyTask(task) ? this.attemptEmptyTask(task, logger) : this.attemptRemoteTask(task, logger));\n } catch (e) {\n throw this.onFatalException(task, e);\n } finally {\n onQueueComplete();\n onScheduleComplete();\n }\n }\n onFatalException(task, e) {\n const gitError = e instanceof GitError ? Object.assign(e, { task }) : new GitError(task, e && String(e));\n this._chain = Promise.resolve();\n this._queue.fatal(gitError);\n return gitError;\n }\n async attemptRemoteTask(task, logger) {\n const binary = this._plugins.exec(\"spawn.binary\", \"\", pluginContext(task, task.commands));\n const args = this._plugins.exec(\n \"spawn.args\",\n [...task.commands],\n pluginContext(task, task.commands)\n );\n const raw = await this.gitResponse(\n task,\n binary,\n args,\n this.outputHandler,\n logger.step(\"SPAWN\")\n );\n const outputStreams = await this.handleTaskData(task, args, raw, logger.step(\"HANDLE\"));\n logger(`passing response to task's parser as a %s`, task.format);\n if (isBufferTask(task)) {\n return callTaskParser(task.parser, outputStreams);\n }\n return callTaskParser(task.parser, outputStreams.asStrings());\n }\n async attemptEmptyTask(task, logger) {\n logger(`empty task bypassing child process to call to task's parser`);\n return task.parser(this);\n }\n handleTaskData(task, args, result, logger) {\n const { exitCode, rejection, stdOut, stdErr } = result;\n return new Promise((done, fail) => {\n logger(`Preparing to handle process response exitCode=%d stdOut=`, exitCode);\n const { error } = this._plugins.exec(\n \"task.error\",\n { error: rejection },\n {\n ...pluginContext(task, args),\n ...result\n }\n );\n if (error && task.onError) {\n logger.info(`exitCode=%s handling with custom error handler`);\n return task.onError(\n result,\n error,\n (newStdOut) => {\n logger.info(`custom error handler treated as success`);\n logger(`custom error returned a %s`, objectToString(newStdOut));\n done(\n new GitOutputStreams(\n Array.isArray(newStdOut) ? Buffer.concat(newStdOut) : newStdOut,\n Buffer.concat(stdErr)\n )\n );\n },\n fail\n );\n }\n if (error) {\n logger.info(\n `handling as error: exitCode=%s stdErr=%s rejection=%o`,\n exitCode,\n stdErr.length,\n rejection\n );\n return fail(error);\n }\n logger.info(`retrieving task output complete`);\n done(new GitOutputStreams(Buffer.concat(stdOut), Buffer.concat(stdErr)));\n });\n }\n async gitResponse(task, command, args, outputHandler, logger) {\n const outputLogger = logger.sibling(\"output\");\n const spawnOptions = this._plugins.exec(\n \"spawn.options\",\n {\n cwd: this.cwd,\n env: this.env,\n windowsHide: true\n },\n pluginContext(task, task.commands)\n );\n return new Promise((done) => {\n const stdOut = [];\n const stdErr = [];\n logger.info(`%s %o`, command, args);\n logger(\"%O\", spawnOptions);\n let rejection = this._beforeSpawn(task, args);\n if (rejection) {\n return done({\n stdOut,\n stdErr,\n exitCode: 9901,\n rejection\n });\n }\n this._plugins.exec(\"spawn.before\", void 0, {\n ...pluginContext(task, args),\n kill(reason) {\n rejection = reason || rejection;\n }\n });\n const spawned = spawn(command, args, spawnOptions);\n spawned.stdout.on(\n \"data\",\n onDataReceived(stdOut, \"stdOut\", logger, outputLogger.step(\"stdOut\"))\n );\n spawned.stderr.on(\n \"data\",\n onDataReceived(stdErr, \"stdErr\", logger, outputLogger.step(\"stdErr\"))\n );\n spawned.on(\"error\", onErrorReceived(stdErr, logger));\n if (outputHandler) {\n logger(`Passing child process stdOut/stdErr to custom outputHandler`);\n outputHandler(command, spawned.stdout, spawned.stderr, [...args]);\n }\n this._plugins.exec(\"spawn.after\", void 0, {\n ...pluginContext(task, args),\n spawned,\n close(exitCode, reason) {\n done({\n stdOut,\n stdErr,\n exitCode,\n rejection: rejection || reason\n });\n },\n kill(reason) {\n if (spawned.killed) {\n return;\n }\n rejection = reason;\n spawned.kill(\"SIGINT\");\n }\n });\n });\n }\n _beforeSpawn(task, args) {\n let rejection;\n this._plugins.exec(\"spawn.before\", void 0, {\n ...pluginContext(task, args),\n kill(reason) {\n rejection = reason || rejection;\n }\n });\n return rejection;\n }\n };\n }\n});\n\n// src/lib/runners/git-executor.ts\nvar git_executor_exports = {};\n__export(git_executor_exports, {\n GitExecutor: () => GitExecutor\n});\nvar GitExecutor;\nvar init_git_executor = __esm({\n \"src/lib/runners/git-executor.ts\"() {\n \"use strict\";\n init_git_executor_chain();\n GitExecutor = class {\n constructor(cwd, _scheduler, _plugins) {\n this.cwd = cwd;\n this._scheduler = _scheduler;\n this._plugins = _plugins;\n this._chain = new GitExecutorChain(this, this._scheduler, this._plugins);\n }\n chain() {\n return new GitExecutorChain(this, this._scheduler, this._plugins);\n }\n push(task) {\n return this._chain.push(task);\n }\n };\n }\n});\n\n// src/lib/task-callback.ts\nfunction taskCallback(task, response, callback = NOOP) {\n const onSuccess = (data) => {\n callback(null, data);\n };\n const onError2 = (err) => {\n if (err?.task === task) {\n callback(\n err instanceof GitResponseError ? addDeprecationNoticeToError(err) : err,\n void 0\n );\n }\n };\n response.then(onSuccess, onError2);\n}\nfunction addDeprecationNoticeToError(err) {\n let log = (name) => {\n console.warn(\n `simple-git deprecation notice: accessing GitResponseError.${name} should be GitResponseError.git.${name}, this will no longer be available in version 3`\n );\n log = NOOP;\n };\n return Object.create(err, Object.getOwnPropertyNames(err.git).reduce(descriptorReducer, {}));\n function descriptorReducer(all, name) {\n if (name in err) {\n return all;\n }\n all[name] = {\n enumerable: false,\n configurable: false,\n get() {\n log(name);\n return err.git[name];\n }\n };\n return all;\n }\n}\nvar init_task_callback = __esm({\n \"src/lib/task-callback.ts\"() {\n \"use strict\";\n init_git_response_error();\n init_utils();\n }\n});\n\n// src/lib/tasks/change-working-directory.ts\nfunction changeWorkingDirectoryTask(directory, root) {\n return adhocExecTask((instance) => {\n if (!folderExists(directory)) {\n throw new Error(`Git.cwd: cannot change to non-directory \"${directory}\"`);\n }\n return (root || instance).cwd = directory;\n });\n}\nvar init_change_working_directory = __esm({\n \"src/lib/tasks/change-working-directory.ts\"() {\n \"use strict\";\n init_utils();\n init_task();\n }\n});\n\n// src/lib/tasks/checkout.ts\nfunction checkoutTask(args) {\n const commands = [\"checkout\", ...args];\n if (commands[1] === \"-b\" && commands.includes(\"-B\")) {\n commands[1] = remove(commands, \"-B\");\n }\n return straightThroughStringTask(commands);\n}\nfunction checkout_default() {\n return {\n checkout() {\n return this._runTask(\n checkoutTask(getTrailingOptions(arguments, 1)),\n trailingFunctionArgument(arguments)\n );\n },\n checkoutBranch(branchName, startPoint) {\n return this._runTask(\n checkoutTask([\"-b\", branchName, startPoint, ...getTrailingOptions(arguments)]),\n trailingFunctionArgument(arguments)\n );\n },\n checkoutLocalBranch(branchName) {\n return this._runTask(\n checkoutTask([\"-b\", branchName, ...getTrailingOptions(arguments)]),\n trailingFunctionArgument(arguments)\n );\n }\n };\n}\nvar init_checkout = __esm({\n \"src/lib/tasks/checkout.ts\"() {\n \"use strict\";\n init_utils();\n init_task();\n }\n});\n\n// src/lib/tasks/count-objects.ts\nfunction countObjectsResponse() {\n return {\n count: 0,\n garbage: 0,\n inPack: 0,\n packs: 0,\n prunePackable: 0,\n size: 0,\n sizeGarbage: 0,\n sizePack: 0\n };\n}\nfunction count_objects_default() {\n return {\n countObjects() {\n return this._runTask({\n commands: [\"count-objects\", \"--verbose\"],\n format: \"utf-8\",\n parser(stdOut) {\n return parseStringResponse(countObjectsResponse(), [parser2], stdOut);\n }\n });\n }\n };\n}\nvar parser2;\nvar init_count_objects = __esm({\n \"src/lib/tasks/count-objects.ts\"() {\n \"use strict\";\n init_utils();\n parser2 = new LineParser(\n /([a-z-]+): (\\d+)$/,\n (result, [key, value]) => {\n const property = asCamelCase(key);\n if (Object.hasOwn(result, property)) {\n result[property] = asNumber(value);\n }\n }\n );\n }\n});\n\n// src/lib/parsers/parse-commit.ts\nfunction parseCommitResult(stdOut) {\n const result = {\n author: null,\n branch: \"\",\n commit: \"\",\n root: false,\n summary: {\n changes: 0,\n insertions: 0,\n deletions: 0\n }\n };\n return parseStringResponse(result, parsers, stdOut);\n}\nvar parsers;\nvar init_parse_commit = __esm({\n \"src/lib/parsers/parse-commit.ts\"() {\n \"use strict\";\n init_utils();\n parsers = [\n new LineParser(/^\\[([^\\s]+)( \\([^)]+\\))? ([^\\]]+)/, (result, [branch, root, commit]) => {\n result.branch = branch;\n result.commit = commit;\n result.root = !!root;\n }),\n new LineParser(/\\s*Author:\\s(.+)/i, (result, [author]) => {\n const parts = author.split(\"<\");\n const email = parts.pop();\n if (!email || !email.includes(\"@\")) {\n return;\n }\n result.author = {\n email: email.substr(0, email.length - 1),\n name: parts.join(\"<\").trim()\n };\n }),\n new LineParser(\n /(\\d+)[^,]*(?:,\\s*(\\d+)[^,]*)(?:,\\s*(\\d+))/g,\n (result, [changes, insertions, deletions]) => {\n result.summary.changes = parseInt(changes, 10) || 0;\n result.summary.insertions = parseInt(insertions, 10) || 0;\n result.summary.deletions = parseInt(deletions, 10) || 0;\n }\n ),\n new LineParser(\n /^(\\d+)[^,]*(?:,\\s*(\\d+)[^(]+\\(([+-]))?/,\n (result, [changes, lines, direction]) => {\n result.summary.changes = parseInt(changes, 10) || 0;\n const count = parseInt(lines, 10) || 0;\n if (direction === \"-\") {\n result.summary.deletions = count;\n } else if (direction === \"+\") {\n result.summary.insertions = count;\n }\n }\n )\n ];\n }\n});\n\n// src/lib/tasks/commit.ts\nfunction commitTask(message, files, customArgs) {\n const commands = [\n \"-c\",\n \"core.abbrev=40\",\n \"commit\",\n ...prefixedArray(message, \"-m\"),\n ...files,\n ...customArgs\n ];\n return {\n commands,\n format: \"utf-8\",\n parser: parseCommitResult\n };\n}\nfunction commit_default() {\n return {\n commit(message, ...rest) {\n const next = trailingFunctionArgument(arguments);\n const task = rejectDeprecatedSignatures(message) || commitTask(\n asArray(message),\n asArray(filterType(rest[0], filterStringOrStringArray, [])),\n [\n ...asStringArray(filterType(rest[1], filterArray, [])),\n ...getTrailingOptions(arguments, 0, true)\n ]\n );\n return this._runTask(task, next);\n }\n };\n function rejectDeprecatedSignatures(message) {\n return !filterStringOrStringArray(message) && configurationErrorTask(\n `git.commit: requires the commit message to be supplied as a string/string[]`\n );\n }\n}\nvar init_commit = __esm({\n \"src/lib/tasks/commit.ts\"() {\n \"use strict\";\n init_parse_commit();\n init_utils();\n init_task();\n }\n});\n\n// src/lib/tasks/first-commit.ts\nfunction first_commit_default() {\n return {\n firstCommit() {\n return this._runTask(\n straightThroughStringTask([\"rev-list\", \"--max-parents=0\", \"HEAD\"], true),\n trailingFunctionArgument(arguments)\n );\n }\n };\n}\nvar init_first_commit = __esm({\n \"src/lib/tasks/first-commit.ts\"() {\n \"use strict\";\n init_utils();\n init_task();\n }\n});\n\n// src/lib/tasks/hash-object.ts\nfunction hashObjectTask(filePath, write) {\n const commands = [\"hash-object\", filePath];\n if (write) {\n commands.push(\"-w\");\n }\n return straightThroughStringTask(commands, true);\n}\nvar init_hash_object = __esm({\n \"src/lib/tasks/hash-object.ts\"() {\n \"use strict\";\n init_task();\n }\n});\n\n// src/lib/responses/InitSummary.ts\nfunction parseInit(bare, path, text) {\n const response = String(text).trim();\n let result;\n if (result = initResponseRegex.exec(response)) {\n return new InitSummary(bare, path, false, result[1]);\n }\n if (result = reInitResponseRegex.exec(response)) {\n return new InitSummary(bare, path, true, result[1]);\n }\n let gitDir = \"\";\n const tokens = response.split(\" \");\n while (tokens.length) {\n const token = tokens.shift();\n if (token === \"in\") {\n gitDir = tokens.join(\" \");\n break;\n }\n }\n return new InitSummary(bare, path, /^re/i.test(response), gitDir);\n}\nvar InitSummary, initResponseRegex, reInitResponseRegex;\nvar init_InitSummary = __esm({\n \"src/lib/responses/InitSummary.ts\"() {\n \"use strict\";\n InitSummary = class {\n constructor(bare, path, existing, gitDir) {\n this.bare = bare;\n this.path = path;\n this.existing = existing;\n this.gitDir = gitDir;\n }\n };\n initResponseRegex = /^Init.+ repository in (.+)$/;\n reInitResponseRegex = /^Rein.+ in (.+)$/;\n }\n});\n\n// src/lib/tasks/init.ts\nfunction hasBareCommand(command) {\n return command.includes(bareCommand);\n}\nfunction initTask(bare = false, path, customArgs) {\n const commands = [\"init\", ...customArgs];\n if (bare && !hasBareCommand(commands)) {\n commands.splice(1, 0, bareCommand);\n }\n return {\n commands,\n format: \"utf-8\",\n parser(text) {\n return parseInit(commands.includes(\"--bare\"), path, text);\n }\n };\n}\nvar bareCommand;\nvar init_init = __esm({\n \"src/lib/tasks/init.ts\"() {\n \"use strict\";\n init_InitSummary();\n bareCommand = \"--bare\";\n }\n});\n\n// src/lib/args/log-format.ts\nfunction logFormatFromCommand(customArgs) {\n for (let i = 0; i < customArgs.length; i++) {\n const format = logFormatRegex.exec(customArgs[i]);\n if (format) {\n return `--${format[1]}`;\n }\n }\n return \"\" /* NONE */;\n}\nfunction isLogFormat(customArg) {\n return logFormatRegex.test(customArg);\n}\nvar logFormatRegex;\nvar init_log_format = __esm({\n \"src/lib/args/log-format.ts\"() {\n \"use strict\";\n logFormatRegex = /^--(stat|numstat|name-only|name-status)(=|$)/;\n }\n});\n\n// src/lib/responses/DiffSummary.ts\nvar DiffSummary;\nvar init_DiffSummary = __esm({\n \"src/lib/responses/DiffSummary.ts\"() {\n \"use strict\";\n DiffSummary = class {\n constructor() {\n this.changed = 0;\n this.deletions = 0;\n this.insertions = 0;\n this.files = [];\n }\n };\n }\n});\n\n// src/lib/parsers/parse-diff-summary.ts\nfunction getDiffParser(format = \"\" /* NONE */) {\n const parser4 = diffSummaryParsers[format];\n return (stdOut) => parseStringResponse(new DiffSummary(), parser4, stdOut, false);\n}\nvar statParser, numStatParser, nameOnlyParser, nameStatusParser, diffSummaryParsers;\nvar init_parse_diff_summary = __esm({\n \"src/lib/parsers/parse-diff-summary.ts\"() {\n \"use strict\";\n init_log_format();\n init_DiffSummary();\n init_diff_name_status();\n init_utils();\n statParser = [\n new LineParser(\n /^(.+)\\s+\\|\\s+(\\d+)(\\s+[+\\-]+)?$/,\n (result, [file, changes, alterations = \"\"]) => {\n result.files.push({\n file: file.trim(),\n changes: asNumber(changes),\n insertions: alterations.replace(/[^+]/g, \"\").length,\n deletions: alterations.replace(/[^-]/g, \"\").length,\n binary: false\n });\n }\n ),\n new LineParser(\n /^(.+) \\|\\s+Bin ([0-9.]+) -> ([0-9.]+) ([a-z]+)/,\n (result, [file, before, after]) => {\n result.files.push({\n file: file.trim(),\n before: asNumber(before),\n after: asNumber(after),\n binary: true\n });\n }\n ),\n new LineParser(\n /(\\d+) files? changed\\s*((?:, \\d+ [^,]+){0,2})/,\n (result, [changed, summary]) => {\n const inserted = /(\\d+) i/.exec(summary);\n const deleted = /(\\d+) d/.exec(summary);\n result.changed = asNumber(changed);\n result.insertions = asNumber(inserted?.[1]);\n result.deletions = asNumber(deleted?.[1]);\n }\n )\n ];\n numStatParser = [\n new LineParser(\n /(\\d+)\\t(\\d+)\\t(.+)$/,\n (result, [changesInsert, changesDelete, file]) => {\n const insertions = asNumber(changesInsert);\n const deletions = asNumber(changesDelete);\n result.changed++;\n result.insertions += insertions;\n result.deletions += deletions;\n result.files.push({\n file,\n changes: insertions + deletions,\n insertions,\n deletions,\n binary: false\n });\n }\n ),\n new LineParser(/-\\t-\\t(.+)$/, (result, [file]) => {\n result.changed++;\n result.files.push({\n file,\n after: 0,\n before: 0,\n binary: true\n });\n })\n ];\n nameOnlyParser = [\n new LineParser(/(.+)$/, (result, [file]) => {\n result.changed++;\n result.files.push({\n file,\n changes: 0,\n insertions: 0,\n deletions: 0,\n binary: false\n });\n })\n ];\n nameStatusParser = [\n new LineParser(\n /([ACDMRTUXB])([0-9]{0,3})\\t(.[^\\t]*)(\\t(.[^\\t]*))?$/,\n (result, [status, similarity, from, _to, to]) => {\n result.changed++;\n result.files.push({\n file: to ?? from,\n changes: 0,\n insertions: 0,\n deletions: 0,\n binary: false,\n status: orVoid(isDiffNameStatus(status) && status),\n from: orVoid(!!to && from !== to && from),\n similarity: asNumber(similarity)\n });\n }\n )\n ];\n diffSummaryParsers = {\n [\"\" /* NONE */]: statParser,\n [\"--stat\" /* STAT */]: statParser,\n [\"--numstat\" /* NUM_STAT */]: numStatParser,\n [\"--name-status\" /* NAME_STATUS */]: nameStatusParser,\n [\"--name-only\" /* NAME_ONLY */]: nameOnlyParser\n };\n }\n});\n\n// src/lib/parsers/parse-list-log-summary.ts\nfunction lineBuilder(tokens, fields) {\n return fields.reduce(\n (line, field, index) => {\n line[field] = tokens[index] || \"\";\n return line;\n },\n /* @__PURE__ */ Object.create({ diff: null })\n );\n}\nfunction createListLogSummaryParser(splitter = SPLITTER, fields = defaultFieldNames, logFormat = \"\" /* NONE */) {\n const parseDiffResult = getDiffParser(logFormat);\n return function(stdOut) {\n const all = toLinesWithContent(\n stdOut.trim(),\n false,\n START_BOUNDARY\n ).map(function(item) {\n const lineDetail = item.split(COMMIT_BOUNDARY);\n const listLogLine = lineBuilder(lineDetail[0].split(splitter), fields);\n if (lineDetail.length > 1 && !!lineDetail[1].trim()) {\n listLogLine.diff = parseDiffResult(lineDetail[1]);\n }\n return listLogLine;\n });\n return {\n all,\n latest: all.length && all[0] || null,\n total: all.length\n };\n };\n}\nvar START_BOUNDARY, COMMIT_BOUNDARY, SPLITTER, defaultFieldNames;\nvar init_parse_list_log_summary = __esm({\n \"src/lib/parsers/parse-list-log-summary.ts\"() {\n \"use strict\";\n init_utils();\n init_parse_diff_summary();\n init_log_format();\n START_BOUNDARY = \"\\xF2\\xF2\\xF2\\xF2\\xF2\\xF2 \";\n COMMIT_BOUNDARY = \" \\xF2\\xF2\";\n SPLITTER = \" \\xF2 \";\n defaultFieldNames = [\"hash\", \"date\", \"message\", \"refs\", \"author_name\", \"author_email\"];\n }\n});\n\n// src/lib/tasks/diff.ts\nvar diff_exports = {};\n__export(diff_exports, {\n diffSummaryTask: () => diffSummaryTask,\n validateLogFormatConfig: () => validateLogFormatConfig\n});\nfunction diffSummaryTask(customArgs) {\n let logFormat = logFormatFromCommand(customArgs);\n const commands = [\"diff\"];\n if (logFormat === \"\" /* NONE */) {\n logFormat = \"--stat\" /* STAT */;\n commands.push(\"--stat=4096\");\n }\n commands.push(...customArgs);\n return validateLogFormatConfig(commands) || {\n commands,\n format: \"utf-8\",\n parser: getDiffParser(logFormat)\n };\n}\nfunction validateLogFormatConfig(customArgs) {\n const flags = customArgs.filter(isLogFormat);\n if (flags.length > 1) {\n return configurationErrorTask(\n `Summary flags are mutually exclusive - pick one of ${flags.join(\",\")}`\n );\n }\n if (flags.length && customArgs.includes(\"-z\")) {\n return configurationErrorTask(\n `Summary flag ${flags} parsing is not compatible with null termination option '-z'`\n );\n }\n}\nvar init_diff = __esm({\n \"src/lib/tasks/diff.ts\"() {\n \"use strict\";\n init_log_format();\n init_parse_diff_summary();\n init_task();\n }\n});\n\n// src/lib/tasks/log.ts\nfunction prettyFormat(format, splitter) {\n const fields = [];\n const formatStr = [];\n Object.keys(format).forEach((field) => {\n fields.push(field);\n formatStr.push(String(format[field]));\n });\n return [fields, formatStr.join(splitter)];\n}\nfunction userOptions(input) {\n return Object.keys(input).reduce((out, key) => {\n if (!(key in excludeOptions)) {\n out[key] = input[key];\n }\n return out;\n }, {});\n}\nfunction parseLogOptions(opt = {}, customArgs = []) {\n const splitter = filterType(opt.splitter, filterString, SPLITTER);\n const format = filterPlainObject(opt.format) ? opt.format : {\n hash: \"%H\",\n date: opt.strictDate === false ? \"%ai\" : \"%aI\",\n message: \"%s\",\n refs: \"%D\",\n body: opt.multiLine ? \"%B\" : \"%b\",\n author_name: opt.mailMap !== false ? \"%aN\" : \"%an\",\n author_email: opt.mailMap !== false ? \"%aE\" : \"%ae\"\n };\n const [fields, formatStr] = prettyFormat(format, splitter);\n const suffix = [];\n const command = [\n `--pretty=format:${START_BOUNDARY}${formatStr}${COMMIT_BOUNDARY}`,\n ...customArgs\n ];\n const maxCount = opt.n || opt[\"max-count\"] || opt.maxCount;\n if (maxCount) {\n command.push(`--max-count=${maxCount}`);\n }\n if (opt.from || opt.to) {\n const rangeOperator = opt.symmetric !== false ? \"...\" : \"..\";\n suffix.push(`${opt.from || \"\"}${rangeOperator}${opt.to || \"\"}`);\n }\n if (filterString(opt.file)) {\n command.push(\"--follow\", pathspec(opt.file));\n }\n appendTaskOptions(userOptions(opt), command);\n return {\n fields,\n splitter,\n commands: [...command, ...suffix]\n };\n}\nfunction logTask(splitter, fields, customArgs) {\n const parser4 = createListLogSummaryParser(splitter, fields, logFormatFromCommand(customArgs));\n return {\n commands: [\"log\", ...customArgs],\n format: \"utf-8\",\n parser: parser4\n };\n}\nfunction log_default() {\n return {\n log(...rest) {\n const next = trailingFunctionArgument(arguments);\n const options = parseLogOptions(\n trailingOptionsArgument(arguments),\n asStringArray(filterType(arguments[0], filterArray, []))\n );\n const task = rejectDeprecatedSignatures(...rest) || validateLogFormatConfig(options.commands) || createLogTask(options);\n return this._runTask(task, next);\n }\n };\n function createLogTask(options) {\n return logTask(options.splitter, options.fields, options.commands);\n }\n function rejectDeprecatedSignatures(from, to) {\n return filterString(from) && filterString(to) && configurationErrorTask(\n `git.log(string, string) should be replaced with git.log({ from: string, to: string })`\n );\n }\n}\nvar excludeOptions;\nvar init_log = __esm({\n \"src/lib/tasks/log.ts\"() {\n \"use strict\";\n init_log_format();\n init_pathspec();\n init_parse_list_log_summary();\n init_utils();\n init_task();\n init_diff();\n excludeOptions = /* @__PURE__ */ ((excludeOptions2) => {\n excludeOptions2[excludeOptions2[\"--pretty\"] = 0] = \"--pretty\";\n excludeOptions2[excludeOptions2[\"max-count\"] = 1] = \"max-count\";\n excludeOptions2[excludeOptions2[\"maxCount\"] = 2] = \"maxCount\";\n excludeOptions2[excludeOptions2[\"n\"] = 3] = \"n\";\n excludeOptions2[excludeOptions2[\"file\"] = 4] = \"file\";\n excludeOptions2[excludeOptions2[\"format\"] = 5] = \"format\";\n excludeOptions2[excludeOptions2[\"from\"] = 6] = \"from\";\n excludeOptions2[excludeOptions2[\"to\"] = 7] = \"to\";\n excludeOptions2[excludeOptions2[\"splitter\"] = 8] = \"splitter\";\n excludeOptions2[excludeOptions2[\"symmetric\"] = 9] = \"symmetric\";\n excludeOptions2[excludeOptions2[\"mailMap\"] = 10] = \"mailMap\";\n excludeOptions2[excludeOptions2[\"multiLine\"] = 11] = \"multiLine\";\n excludeOptions2[excludeOptions2[\"strictDate\"] = 12] = \"strictDate\";\n return excludeOptions2;\n })(excludeOptions || {});\n }\n});\n\n// src/lib/responses/MergeSummary.ts\nvar MergeSummaryConflict, MergeSummaryDetail;\nvar init_MergeSummary = __esm({\n \"src/lib/responses/MergeSummary.ts\"() {\n \"use strict\";\n MergeSummaryConflict = class {\n constructor(reason, file = null, meta) {\n this.reason = reason;\n this.file = file;\n this.meta = meta;\n }\n toString() {\n return `${this.file}:${this.reason}`;\n }\n };\n MergeSummaryDetail = class {\n constructor() {\n this.conflicts = [];\n this.merges = [];\n this.result = \"success\";\n }\n get failed() {\n return this.conflicts.length > 0;\n }\n get reason() {\n return this.result;\n }\n toString() {\n if (this.conflicts.length) {\n return `CONFLICTS: ${this.conflicts.join(\", \")}`;\n }\n return \"OK\";\n }\n };\n }\n});\n\n// src/lib/responses/PullSummary.ts\nvar PullSummary, PullFailedSummary;\nvar init_PullSummary = __esm({\n \"src/lib/responses/PullSummary.ts\"() {\n \"use strict\";\n PullSummary = class {\n constructor() {\n this.remoteMessages = {\n all: []\n };\n this.created = [];\n this.deleted = [];\n this.files = [];\n this.deletions = {};\n this.insertions = {};\n this.summary = {\n changes: 0,\n deletions: 0,\n insertions: 0\n };\n }\n };\n PullFailedSummary = class {\n constructor() {\n this.remote = \"\";\n this.hash = {\n local: \"\",\n remote: \"\"\n };\n this.branch = {\n local: \"\",\n remote: \"\"\n };\n this.message = \"\";\n }\n toString() {\n return this.message;\n }\n };\n }\n});\n\n// src/lib/parsers/parse-remote-objects.ts\nfunction objectEnumerationResult(remoteMessages) {\n return remoteMessages.objects = remoteMessages.objects || {\n compressing: 0,\n counting: 0,\n enumerating: 0,\n packReused: 0,\n reused: { count: 0, delta: 0 },\n total: { count: 0, delta: 0 }\n };\n}\nfunction asObjectCount(source) {\n const count = /^\\s*(\\d+)/.exec(source);\n const delta = /delta (\\d+)/i.exec(source);\n return {\n count: asNumber(count && count[1] || \"0\"),\n delta: asNumber(delta && delta[1] || \"0\")\n };\n}\nvar remoteMessagesObjectParsers;\nvar init_parse_remote_objects = __esm({\n \"src/lib/parsers/parse-remote-objects.ts\"() {\n \"use strict\";\n init_utils();\n remoteMessagesObjectParsers = [\n new RemoteLineParser(\n /^remote:\\s*(enumerating|counting|compressing) objects: (\\d+),/i,\n (result, [action, count]) => {\n const key = action.toLowerCase();\n const enumeration = objectEnumerationResult(result.remoteMessages);\n Object.assign(enumeration, { [key]: asNumber(count) });\n }\n ),\n new RemoteLineParser(\n /^remote:\\s*(enumerating|counting|compressing) objects: \\d+% \\(\\d+\\/(\\d+)\\),/i,\n (result, [action, count]) => {\n const key = action.toLowerCase();\n const enumeration = objectEnumerationResult(result.remoteMessages);\n Object.assign(enumeration, { [key]: asNumber(count) });\n }\n ),\n new RemoteLineParser(\n /total ([^,]+), reused ([^,]+), pack-reused (\\d+)/i,\n (result, [total, reused, packReused]) => {\n const objects = objectEnumerationResult(result.remoteMessages);\n objects.total = asObjectCount(total);\n objects.reused = asObjectCount(reused);\n objects.packReused = asNumber(packReused);\n }\n )\n ];\n }\n});\n\n// src/lib/parsers/parse-remote-messages.ts\nfunction parseRemoteMessages(_stdOut, stdErr) {\n return parseStringResponse({ remoteMessages: new RemoteMessageSummary() }, parsers2, stdErr);\n}\nvar parsers2, RemoteMessageSummary;\nvar init_parse_remote_messages = __esm({\n \"src/lib/parsers/parse-remote-messages.ts\"() {\n \"use strict\";\n init_utils();\n init_parse_remote_objects();\n parsers2 = [\n new RemoteLineParser(/^remote:\\s*(.+)$/, (result, [text]) => {\n result.remoteMessages.all.push(text.trim());\n return false;\n }),\n ...remoteMessagesObjectParsers,\n new RemoteLineParser(\n [/create a (?:pull|merge) request/i, /\\s(https?:\\/\\/\\S+)$/],\n (result, [pullRequestUrl]) => {\n result.remoteMessages.pullRequestUrl = pullRequestUrl;\n }\n ),\n new RemoteLineParser(\n [/found (\\d+) vulnerabilities.+\\(([^)]+)\\)/i, /\\s(https?:\\/\\/\\S+)$/],\n (result, [count, summary, url]) => {\n result.remoteMessages.vulnerabilities = {\n count: asNumber(count),\n summary,\n url\n };\n }\n )\n ];\n RemoteMessageSummary = class {\n constructor() {\n this.all = [];\n }\n };\n }\n});\n\n// src/lib/parsers/parse-pull.ts\nfunction parsePullErrorResult(stdOut, stdErr) {\n const pullError = parseStringResponse(new PullFailedSummary(), errorParsers, [stdOut, stdErr]);\n return pullError.message && pullError;\n}\nvar FILE_UPDATE_REGEX, SUMMARY_REGEX, ACTION_REGEX, parsers3, errorParsers, parsePullDetail, parsePullResult;\nvar init_parse_pull = __esm({\n \"src/lib/parsers/parse-pull.ts\"() {\n \"use strict\";\n init_PullSummary();\n init_utils();\n init_parse_remote_messages();\n FILE_UPDATE_REGEX = /^\\s*(.+?)\\s+\\|\\s+\\d+\\s*(\\+*)(-*)/;\n SUMMARY_REGEX = /(\\d+)\\D+((\\d+)\\D+\\(\\+\\))?(\\D+(\\d+)\\D+\\(-\\))?/;\n ACTION_REGEX = /^(create|delete) mode \\d+ (.+)/;\n parsers3 = [\n new LineParser(FILE_UPDATE_REGEX, (result, [file, insertions, deletions]) => {\n result.files.push(file);\n if (insertions) {\n result.insertions[file] = insertions.length;\n }\n if (deletions) {\n result.deletions[file] = deletions.length;\n }\n }),\n new LineParser(SUMMARY_REGEX, (result, [changes, , insertions, , deletions]) => {\n if (insertions !== void 0 || deletions !== void 0) {\n result.summary.changes = +changes || 0;\n result.summary.insertions = +insertions || 0;\n result.summary.deletions = +deletions || 0;\n return true;\n }\n return false;\n }),\n new LineParser(ACTION_REGEX, (result, [action, file]) => {\n append(result.files, file);\n append(action === \"create\" ? result.created : result.deleted, file);\n })\n ];\n errorParsers = [\n new LineParser(/^from\\s(.+)$/i, (result, [remote]) => void (result.remote = remote)),\n new LineParser(/^fatal:\\s(.+)$/, (result, [message]) => void (result.message = message)),\n new LineParser(\n /([a-z0-9]+)\\.\\.([a-z0-9]+)\\s+(\\S+)\\s+->\\s+(\\S+)$/,\n (result, [hashLocal, hashRemote, branchLocal, branchRemote]) => {\n result.branch.local = branchLocal;\n result.hash.local = hashLocal;\n result.branch.remote = branchRemote;\n result.hash.remote = hashRemote;\n }\n )\n ];\n parsePullDetail = (stdOut, stdErr) => {\n return parseStringResponse(new PullSummary(), parsers3, [stdOut, stdErr]);\n };\n parsePullResult = (stdOut, stdErr) => {\n return Object.assign(\n new PullSummary(),\n parsePullDetail(stdOut, stdErr),\n parseRemoteMessages(stdOut, stdErr)\n );\n };\n }\n});\n\n// src/lib/parsers/parse-merge.ts\nvar parsers4, parseMergeResult, parseMergeDetail;\nvar init_parse_merge = __esm({\n \"src/lib/parsers/parse-merge.ts\"() {\n \"use strict\";\n init_MergeSummary();\n init_utils();\n init_parse_pull();\n parsers4 = [\n new LineParser(/^Auto-merging\\s+(.+)$/, (summary, [autoMerge]) => {\n summary.merges.push(autoMerge);\n }),\n new LineParser(/^CONFLICT\\s+\\((.+)\\): Merge conflict in (.+)$/, (summary, [reason, file]) => {\n summary.conflicts.push(new MergeSummaryConflict(reason, file));\n }),\n new LineParser(\n /^CONFLICT\\s+\\((.+\\/delete)\\): (.+) deleted in (.+) and/,\n (summary, [reason, file, deleteRef]) => {\n summary.conflicts.push(new MergeSummaryConflict(reason, file, { deleteRef }));\n }\n ),\n new LineParser(/^CONFLICT\\s+\\((.+)\\):/, (summary, [reason]) => {\n summary.conflicts.push(new MergeSummaryConflict(reason, null));\n }),\n new LineParser(/^Automatic merge failed;\\s+(.+)$/, (summary, [result]) => {\n summary.result = result;\n })\n ];\n parseMergeResult = (stdOut, stdErr) => {\n return Object.assign(parseMergeDetail(stdOut, stdErr), parsePullResult(stdOut, stdErr));\n };\n parseMergeDetail = (stdOut) => {\n return parseStringResponse(new MergeSummaryDetail(), parsers4, stdOut);\n };\n }\n});\n\n// src/lib/tasks/merge.ts\nfunction mergeTask(customArgs) {\n if (!customArgs.length) {\n return configurationErrorTask(\"Git.merge requires at least one option\");\n }\n return {\n commands: [\"merge\", ...customArgs],\n format: \"utf-8\",\n parser(stdOut, stdErr) {\n const merge = parseMergeResult(stdOut, stdErr);\n if (merge.failed) {\n throw new GitResponseError(merge);\n }\n return merge;\n }\n };\n}\nvar init_merge = __esm({\n \"src/lib/tasks/merge.ts\"() {\n \"use strict\";\n init_git_response_error();\n init_parse_merge();\n init_task();\n }\n});\n\n// src/lib/parsers/parse-push.ts\nfunction pushResultPushedItem(local, remote, status) {\n const deleted = status.includes(\"deleted\");\n const tag = status.includes(\"tag\") || /^refs\\/tags/.test(local);\n const alreadyUpdated = !status.includes(\"new\");\n return {\n deleted,\n tag,\n branch: !tag,\n new: !alreadyUpdated,\n alreadyUpdated,\n local,\n remote\n };\n}\nvar parsers5, parsePushResult, parsePushDetail;\nvar init_parse_push = __esm({\n \"src/lib/parsers/parse-push.ts\"() {\n \"use strict\";\n init_utils();\n init_parse_remote_messages();\n parsers5 = [\n new LineParser(/^Pushing to (.+)$/, (result, [repo]) => {\n result.repo = repo;\n }),\n new LineParser(/^updating local tracking ref '(.+)'/, (result, [local]) => {\n result.ref = {\n ...result.ref || {},\n local\n };\n }),\n new LineParser(/^[=*-]\\s+([^:]+):(\\S+)\\s+\\[(.+)]$/, (result, [local, remote, type]) => {\n result.pushed.push(pushResultPushedItem(local, remote, type));\n }),\n new LineParser(\n /^Branch '([^']+)' set up to track remote branch '([^']+)' from '([^']+)'/,\n (result, [local, remote, remoteName]) => {\n result.branch = {\n ...result.branch || {},\n local,\n remote,\n remoteName\n };\n }\n ),\n new LineParser(\n /^([^:]+):(\\S+)\\s+([a-z0-9]+)\\.\\.([a-z0-9]+)$/,\n (result, [local, remote, from, to]) => {\n result.update = {\n head: {\n local,\n remote\n },\n hash: {\n from,\n to\n }\n };\n }\n )\n ];\n parsePushResult = (stdOut, stdErr) => {\n const pushDetail = parsePushDetail(stdOut, stdErr);\n const responseDetail = parseRemoteMessages(stdOut, stdErr);\n return {\n ...pushDetail,\n ...responseDetail\n };\n };\n parsePushDetail = (stdOut, stdErr) => {\n return parseStringResponse({ pushed: [] }, parsers5, [stdOut, stdErr]);\n };\n }\n});\n\n// src/lib/tasks/push.ts\nvar push_exports = {};\n__export(push_exports, {\n pushTagsTask: () => pushTagsTask,\n pushTask: () => pushTask\n});\nfunction pushTagsTask(ref = {}, customArgs) {\n append(customArgs, \"--tags\");\n return pushTask(ref, customArgs);\n}\nfunction pushTask(ref = {}, customArgs) {\n const commands = [\"push\", ...customArgs];\n if (ref.branch) {\n commands.splice(1, 0, ref.branch);\n }\n if (ref.remote) {\n commands.splice(1, 0, ref.remote);\n }\n remove(commands, \"-v\");\n append(commands, \"--verbose\");\n append(commands, \"--porcelain\");\n return {\n commands,\n format: \"utf-8\",\n parser: parsePushResult\n };\n}\nvar init_push = __esm({\n \"src/lib/tasks/push.ts\"() {\n \"use strict\";\n init_parse_push();\n init_utils();\n }\n});\n\n// src/lib/tasks/show.ts\nfunction show_default() {\n return {\n showBuffer() {\n const commands = [\"show\", ...getTrailingOptions(arguments, 1)];\n if (!commands.includes(\"--binary\")) {\n commands.splice(1, 0, \"--binary\");\n }\n return this._runTask(\n straightThroughBufferTask(commands),\n trailingFunctionArgument(arguments)\n );\n },\n show() {\n const commands = [\"show\", ...getTrailingOptions(arguments, 1)];\n return this._runTask(\n straightThroughStringTask(commands),\n trailingFunctionArgument(arguments)\n );\n }\n };\n}\nvar init_show = __esm({\n \"src/lib/tasks/show.ts\"() {\n \"use strict\";\n init_utils();\n init_task();\n }\n});\n\n// src/lib/responses/FileStatusSummary.ts\nvar fromPathRegex, FileStatusSummary;\nvar init_FileStatusSummary = __esm({\n \"src/lib/responses/FileStatusSummary.ts\"() {\n \"use strict\";\n fromPathRegex = /^(.+)\\0(.+)$/;\n FileStatusSummary = class {\n constructor(path, index, working_dir) {\n this.path = path;\n this.index = index;\n this.working_dir = working_dir;\n if (index === \"R\" || working_dir === \"R\") {\n const detail = fromPathRegex.exec(path) || [null, path, path];\n this.from = detail[2] || \"\";\n this.path = detail[1] || \"\";\n }\n }\n };\n }\n});\n\n// src/lib/responses/StatusSummary.ts\nfunction renamedFile(line) {\n const [to, from] = line.split(NULL);\n return {\n from: from || to,\n to\n };\n}\nfunction parser3(indexX, indexY, handler) {\n return [`${indexX}${indexY}`, handler];\n}\nfunction conflicts(indexX, ...indexY) {\n return indexY.map((y) => parser3(indexX, y, (result, file) => result.conflicted.push(file)));\n}\nfunction splitLine(result, lineStr) {\n const trimmed2 = lineStr.trim();\n switch (\" \") {\n case trimmed2.charAt(2):\n return data(trimmed2.charAt(0), trimmed2.charAt(1), trimmed2.slice(3));\n case trimmed2.charAt(1):\n return data(\" \" /* NONE */, trimmed2.charAt(0), trimmed2.slice(2));\n default:\n return;\n }\n function data(index, workingDir, path) {\n const raw = `${index}${workingDir}`;\n const handler = parsers6.get(raw);\n if (handler) {\n handler(result, path);\n }\n if (raw !== \"##\" && raw !== \"!!\") {\n result.files.push(new FileStatusSummary(path, index, workingDir));\n }\n }\n}\nvar StatusSummary, parsers6, parseStatusSummary;\nvar init_StatusSummary = __esm({\n \"src/lib/responses/StatusSummary.ts\"() {\n \"use strict\";\n init_utils();\n init_FileStatusSummary();\n StatusSummary = class {\n constructor() {\n this.not_added = [];\n this.conflicted = [];\n this.created = [];\n this.deleted = [];\n this.ignored = void 0;\n this.modified = [];\n this.renamed = [];\n this.files = [];\n this.staged = [];\n this.ahead = 0;\n this.behind = 0;\n this.current = null;\n this.tracking = null;\n this.detached = false;\n this.isClean = () => {\n return !this.files.length;\n };\n }\n };\n parsers6 = new Map([\n parser3(\n \" \" /* NONE */,\n \"A\" /* ADDED */,\n (result, file) => result.created.push(file)\n ),\n parser3(\n \" \" /* NONE */,\n \"D\" /* DELETED */,\n (result, file) => result.deleted.push(file)\n ),\n parser3(\n \" \" /* NONE */,\n \"M\" /* MODIFIED */,\n (result, file) => result.modified.push(file)\n ),\n parser3(\"A\" /* ADDED */, \" \" /* NONE */, (result, file) => {\n result.created.push(file);\n result.staged.push(file);\n }),\n parser3(\"A\" /* ADDED */, \"M\" /* MODIFIED */, (result, file) => {\n result.created.push(file);\n result.staged.push(file);\n result.modified.push(file);\n }),\n parser3(\"D\" /* DELETED */, \" \" /* NONE */, (result, file) => {\n result.deleted.push(file);\n result.staged.push(file);\n }),\n parser3(\"M\" /* MODIFIED */, \" \" /* NONE */, (result, file) => {\n result.modified.push(file);\n result.staged.push(file);\n }),\n parser3(\"M\" /* MODIFIED */, \"M\" /* MODIFIED */, (result, file) => {\n result.modified.push(file);\n result.staged.push(file);\n }),\n parser3(\"R\" /* RENAMED */, \" \" /* NONE */, (result, file) => {\n result.renamed.push(renamedFile(file));\n }),\n parser3(\"R\" /* RENAMED */, \"M\" /* MODIFIED */, (result, file) => {\n const renamed = renamedFile(file);\n result.renamed.push(renamed);\n result.modified.push(renamed.to);\n }),\n parser3(\"!\" /* IGNORED */, \"!\" /* IGNORED */, (_result, _file) => {\n (_result.ignored = _result.ignored || []).push(_file);\n }),\n parser3(\n \"?\" /* UNTRACKED */,\n \"?\" /* UNTRACKED */,\n (result, file) => result.not_added.push(file)\n ),\n ...conflicts(\"A\" /* ADDED */, \"A\" /* ADDED */, \"U\" /* UNMERGED */),\n ...conflicts(\n \"D\" /* DELETED */,\n \"D\" /* DELETED */,\n \"U\" /* UNMERGED */\n ),\n ...conflicts(\n \"U\" /* UNMERGED */,\n \"A\" /* ADDED */,\n \"D\" /* DELETED */,\n \"U\" /* UNMERGED */\n ),\n [\n \"##\",\n (result, line) => {\n const aheadReg = /ahead (\\d+)/;\n const behindReg = /behind (\\d+)/;\n const currentReg = /^(.+?(?=(?:\\.{3}|\\s|$)))/;\n const trackingReg = /\\.{3}(\\S*)/;\n const onEmptyBranchReg = /\\son\\s(\\S+?)(?=\\.{3}|$)/;\n let regexResult = aheadReg.exec(line);\n result.ahead = regexResult && +regexResult[1] || 0;\n regexResult = behindReg.exec(line);\n result.behind = regexResult && +regexResult[1] || 0;\n regexResult = currentReg.exec(line);\n result.current = filterType(regexResult?.[1], filterString, null);\n regexResult = trackingReg.exec(line);\n result.tracking = filterType(regexResult?.[1], filterString, null);\n regexResult = onEmptyBranchReg.exec(line);\n if (regexResult) {\n result.current = filterType(regexResult?.[1], filterString, result.current);\n }\n result.detached = /\\(no branch\\)/.test(line);\n }\n ]\n ]);\n parseStatusSummary = function(text) {\n const lines = text.split(NULL);\n const status = new StatusSummary();\n for (let i = 0, l = lines.length; i < l; ) {\n let line = lines[i++].trim();\n if (!line) {\n continue;\n }\n if (line.charAt(0) === \"R\" /* RENAMED */) {\n line += NULL + (lines[i++] || \"\");\n }\n splitLine(status, line);\n }\n return status;\n };\n }\n});\n\n// src/lib/tasks/status.ts\nfunction statusTask(customArgs) {\n const commands = [\n \"status\",\n \"--porcelain\",\n \"-b\",\n \"-u\",\n \"--null\",\n ...customArgs.filter((arg) => !ignoredOptions.includes(arg))\n ];\n return {\n format: \"utf-8\",\n commands,\n parser(text) {\n return parseStatusSummary(text);\n }\n };\n}\nvar ignoredOptions;\nvar init_status = __esm({\n \"src/lib/tasks/status.ts\"() {\n \"use strict\";\n init_StatusSummary();\n ignoredOptions = [\"--null\", \"-z\"];\n }\n});\n\n// src/lib/tasks/version.ts\nfunction versionResponse(major = 0, minor = 0, patch = 0, agent = \"\", installed = true) {\n return Object.defineProperty(\n {\n major,\n minor,\n patch,\n agent,\n installed\n },\n \"toString\",\n {\n value() {\n return `${this.major}.${this.minor}.${this.patch}`;\n },\n configurable: false,\n enumerable: false\n }\n );\n}\nfunction notInstalledResponse() {\n return versionResponse(0, 0, 0, \"\", false);\n}\nfunction version_default() {\n return {\n version() {\n return this._runTask({\n commands: [\"--version\"],\n format: \"utf-8\",\n parser: versionParser,\n onError(result, error, done, fail) {\n if (result.exitCode === -2 /* NOT_FOUND */) {\n return done(Buffer.from(NOT_INSTALLED));\n }\n fail(error);\n }\n });\n }\n };\n}\nfunction versionParser(stdOut) {\n if (stdOut === NOT_INSTALLED) {\n return notInstalledResponse();\n }\n return parseStringResponse(versionResponse(0, 0, 0, stdOut), parsers7, stdOut);\n}\nvar NOT_INSTALLED, parsers7;\nvar init_version = __esm({\n \"src/lib/tasks/version.ts\"() {\n \"use strict\";\n init_utils();\n NOT_INSTALLED = \"installed=false\";\n parsers7 = [\n new LineParser(\n /version (\\d+)\\.(\\d+)\\.(\\d+)(?:\\s*\\((.+)\\))?/,\n (result, [major, minor, patch, agent = \"\"]) => {\n Object.assign(\n result,\n versionResponse(asNumber(major), asNumber(minor), asNumber(patch), agent)\n );\n }\n ),\n new LineParser(\n /version (\\d+)\\.(\\d+)\\.(\\D+)(.+)?$/,\n (result, [major, minor, patch, agent = \"\"]) => {\n Object.assign(result, versionResponse(asNumber(major), asNumber(minor), patch, agent));\n }\n )\n ];\n }\n});\n\n// src/lib/simple-git-api.ts\nvar simple_git_api_exports = {};\n__export(simple_git_api_exports, {\n SimpleGitApi: () => SimpleGitApi\n});\nvar SimpleGitApi;\nvar init_simple_git_api = __esm({\n \"src/lib/simple-git-api.ts\"() {\n \"use strict\";\n init_task_callback();\n init_change_working_directory();\n init_checkout();\n init_count_objects();\n init_commit();\n init_config();\n init_first_commit();\n init_grep();\n init_hash_object();\n init_init();\n init_log();\n init_merge();\n init_push();\n init_show();\n init_status();\n init_task();\n init_version();\n init_utils();\n SimpleGitApi = class {\n constructor(_executor) {\n this._executor = _executor;\n }\n _runTask(task, then) {\n const chain = this._executor.chain();\n const promise = chain.push(task);\n if (then) {\n taskCallback(task, promise, then);\n }\n return Object.create(this, {\n then: { value: promise.then.bind(promise) },\n catch: { value: promise.catch.bind(promise) },\n _executor: { value: chain }\n });\n }\n add(files) {\n return this._runTask(\n straightThroughStringTask([\"add\", ...asArray(files)]),\n trailingFunctionArgument(arguments)\n );\n }\n cwd(directory) {\n const next = trailingFunctionArgument(arguments);\n if (typeof directory === \"string\") {\n return this._runTask(changeWorkingDirectoryTask(directory, this._executor), next);\n }\n if (typeof directory?.path === \"string\") {\n return this._runTask(\n changeWorkingDirectoryTask(\n directory.path,\n directory.root && this._executor || void 0\n ),\n next\n );\n }\n return this._runTask(\n configurationErrorTask(\"Git.cwd: workingDirectory must be supplied as a string\"),\n next\n );\n }\n hashObject(path, write) {\n return this._runTask(\n hashObjectTask(path, write === true),\n trailingFunctionArgument(arguments)\n );\n }\n init(bare) {\n return this._runTask(\n initTask(bare === true, this._executor.cwd, getTrailingOptions(arguments)),\n trailingFunctionArgument(arguments)\n );\n }\n merge() {\n return this._runTask(\n mergeTask(getTrailingOptions(arguments)),\n trailingFunctionArgument(arguments)\n );\n }\n mergeFromTo(remote, branch) {\n if (!(filterString(remote) && filterString(branch))) {\n return this._runTask(\n configurationErrorTask(\n `Git.mergeFromTo requires that the 'remote' and 'branch' arguments are supplied as strings`\n )\n );\n }\n return this._runTask(\n mergeTask([remote, branch, ...getTrailingOptions(arguments)]),\n trailingFunctionArgument(arguments, false)\n );\n }\n outputHandler(handler) {\n this._executor.outputHandler = handler;\n return this;\n }\n push() {\n const task = pushTask(\n {\n remote: filterType(arguments[0], filterString),\n branch: filterType(arguments[1], filterString)\n },\n getTrailingOptions(arguments)\n );\n return this._runTask(task, trailingFunctionArgument(arguments));\n }\n stash() {\n return this._runTask(\n straightThroughStringTask([\"stash\", ...getTrailingOptions(arguments)]),\n trailingFunctionArgument(arguments)\n );\n }\n status() {\n return this._runTask(\n statusTask(getTrailingOptions(arguments)),\n trailingFunctionArgument(arguments)\n );\n }\n };\n Object.assign(\n SimpleGitApi.prototype,\n checkout_default(),\n commit_default(),\n config_default(),\n count_objects_default(),\n first_commit_default(),\n grep_default(),\n log_default(),\n show_default(),\n version_default()\n );\n }\n});\n\n// src/lib/runners/scheduler.ts\nvar scheduler_exports = {};\n__export(scheduler_exports, {\n Scheduler: () => Scheduler\n});\nimport { createDeferred } from \"@kwsites/promise-deferred\";\nvar createScheduledTask, Scheduler;\nvar init_scheduler = __esm({\n \"src/lib/runners/scheduler.ts\"() {\n \"use strict\";\n init_utils();\n init_git_logger();\n createScheduledTask = /* @__PURE__ */ (() => {\n let id = 0;\n return () => {\n id++;\n const { promise, done } = createDeferred();\n return {\n promise,\n done,\n id\n };\n };\n })();\n Scheduler = class {\n constructor(concurrency = 2) {\n this.concurrency = concurrency;\n this.logger = createLogger(\"\", \"scheduler\");\n this.pending = [];\n this.running = [];\n this.logger(`Constructed, concurrency=%s`, concurrency);\n }\n schedule() {\n if (!this.pending.length || this.running.length >= this.concurrency) {\n this.logger(\n `Schedule attempt ignored, pending=%s running=%s concurrency=%s`,\n this.pending.length,\n this.running.length,\n this.concurrency\n );\n return;\n }\n const task = append(this.running, this.pending.shift());\n this.logger(`Attempting id=%s`, task.id);\n task.done(() => {\n this.logger(`Completing id=`, task.id);\n remove(this.running, task);\n this.schedule();\n });\n }\n next() {\n const { promise, id } = append(this.pending, createScheduledTask());\n this.logger(`Scheduling id=%s`, id);\n this.schedule();\n return promise;\n }\n };\n }\n});\n\n// src/lib/tasks/apply-patch.ts\nvar apply_patch_exports = {};\n__export(apply_patch_exports, {\n applyPatchTask: () => applyPatchTask\n});\nfunction applyPatchTask(patches, customArgs) {\n return straightThroughStringTask([\"apply\", ...customArgs, ...patches]);\n}\nvar init_apply_patch = __esm({\n \"src/lib/tasks/apply-patch.ts\"() {\n \"use strict\";\n init_task();\n }\n});\n\n// src/lib/responses/BranchDeleteSummary.ts\nfunction branchDeletionSuccess(branch, hash) {\n return {\n branch,\n hash,\n success: true\n };\n}\nfunction branchDeletionFailure(branch) {\n return {\n branch,\n hash: null,\n success: false\n };\n}\nvar BranchDeletionBatch;\nvar init_BranchDeleteSummary = __esm({\n \"src/lib/responses/BranchDeleteSummary.ts\"() {\n \"use strict\";\n BranchDeletionBatch = class {\n constructor() {\n this.all = [];\n this.branches = {};\n this.errors = [];\n }\n get success() {\n return !this.errors.length;\n }\n };\n }\n});\n\n// src/lib/parsers/parse-branch-delete.ts\nfunction hasBranchDeletionError(data, processExitCode) {\n return processExitCode === 1 /* ERROR */ && deleteErrorRegex.test(data);\n}\nvar deleteSuccessRegex, deleteErrorRegex, parsers8, parseBranchDeletions;\nvar init_parse_branch_delete = __esm({\n \"src/lib/parsers/parse-branch-delete.ts\"() {\n \"use strict\";\n init_BranchDeleteSummary();\n init_utils();\n deleteSuccessRegex = /(\\S+)\\s+\\(\\S+\\s([^)]+)\\)/;\n deleteErrorRegex = /^error[^']+'([^']+)'/m;\n parsers8 = [\n new LineParser(deleteSuccessRegex, (result, [branch, hash]) => {\n const deletion = branchDeletionSuccess(branch, hash);\n result.all.push(deletion);\n result.branches[branch] = deletion;\n }),\n new LineParser(deleteErrorRegex, (result, [branch]) => {\n const deletion = branchDeletionFailure(branch);\n result.errors.push(deletion);\n result.all.push(deletion);\n result.branches[branch] = deletion;\n })\n ];\n parseBranchDeletions = (stdOut, stdErr) => {\n return parseStringResponse(new BranchDeletionBatch(), parsers8, [stdOut, stdErr]);\n };\n }\n});\n\n// src/lib/responses/BranchSummary.ts\nvar BranchSummaryResult;\nvar init_BranchSummary = __esm({\n \"src/lib/responses/BranchSummary.ts\"() {\n \"use strict\";\n BranchSummaryResult = class {\n constructor() {\n this.all = [];\n this.branches = {};\n this.current = \"\";\n this.detached = false;\n }\n push(status, detached, name, commit, label) {\n if (status === \"*\" /* CURRENT */) {\n this.detached = detached;\n this.current = name;\n }\n this.all.push(name);\n this.branches[name] = {\n current: status === \"*\" /* CURRENT */,\n linkedWorkTree: status === \"+\" /* LINKED */,\n name,\n commit,\n label\n };\n }\n };\n }\n});\n\n// src/lib/parsers/parse-branch.ts\nfunction branchStatus(input) {\n return input ? input.charAt(0) : \"\";\n}\nfunction parseBranchSummary(stdOut, currentOnly = false) {\n return parseStringResponse(\n new BranchSummaryResult(),\n currentOnly ? [currentBranchParser] : parsers9,\n stdOut\n );\n}\nvar parsers9, currentBranchParser;\nvar init_parse_branch = __esm({\n \"src/lib/parsers/parse-branch.ts\"() {\n \"use strict\";\n init_BranchSummary();\n init_utils();\n parsers9 = [\n new LineParser(\n /^([*+]\\s)?\\((?:HEAD )?detached (?:from|at) (\\S+)\\)\\s+([a-z0-9]+)\\s(.*)$/,\n (result, [current, name, commit, label]) => {\n result.push(branchStatus(current), true, name, commit, label);\n }\n ),\n new LineParser(\n /^([*+]\\s)?(\\S+)\\s+([a-z0-9]+)\\s?(.*)$/s,\n (result, [current, name, commit, label]) => {\n result.push(branchStatus(current), false, name, commit, label);\n }\n )\n ];\n currentBranchParser = new LineParser(/^(\\S+)$/s, (result, [name]) => {\n result.push(\"*\" /* CURRENT */, false, name, \"\", \"\");\n });\n }\n});\n\n// src/lib/tasks/branch.ts\nvar branch_exports = {};\n__export(branch_exports, {\n branchLocalTask: () => branchLocalTask,\n branchTask: () => branchTask,\n containsDeleteBranchCommand: () => containsDeleteBranchCommand,\n deleteBranchTask: () => deleteBranchTask,\n deleteBranchesTask: () => deleteBranchesTask\n});\nfunction containsDeleteBranchCommand(commands) {\n const deleteCommands = [\"-d\", \"-D\", \"--delete\"];\n return commands.some((command) => deleteCommands.includes(command));\n}\nfunction branchTask(customArgs) {\n const isDelete = containsDeleteBranchCommand(customArgs);\n const isCurrentOnly = customArgs.includes(\"--show-current\");\n const commands = [\"branch\", ...customArgs];\n if (commands.length === 1) {\n commands.push(\"-a\");\n }\n if (!commands.includes(\"-v\")) {\n commands.splice(1, 0, \"-v\");\n }\n return {\n format: \"utf-8\",\n commands,\n parser(stdOut, stdErr) {\n if (isDelete) {\n return parseBranchDeletions(stdOut, stdErr).all[0];\n }\n return parseBranchSummary(stdOut, isCurrentOnly);\n }\n };\n}\nfunction branchLocalTask() {\n return {\n format: \"utf-8\",\n commands: [\"branch\", \"-v\"],\n parser(stdOut) {\n return parseBranchSummary(stdOut);\n }\n };\n}\nfunction deleteBranchesTask(branches, forceDelete = false) {\n return {\n format: \"utf-8\",\n commands: [\"branch\", \"-v\", forceDelete ? \"-D\" : \"-d\", ...branches],\n parser(stdOut, stdErr) {\n return parseBranchDeletions(stdOut, stdErr);\n },\n onError({ exitCode, stdOut }, error, done, fail) {\n if (!hasBranchDeletionError(String(error), exitCode)) {\n return fail(error);\n }\n done(stdOut);\n }\n };\n}\nfunction deleteBranchTask(branch, forceDelete = false) {\n const task = {\n format: \"utf-8\",\n commands: [\"branch\", \"-v\", forceDelete ? \"-D\" : \"-d\", branch],\n parser(stdOut, stdErr) {\n return parseBranchDeletions(stdOut, stdErr).branches[branch];\n },\n onError({ exitCode, stdErr, stdOut }, error, _, fail) {\n if (!hasBranchDeletionError(String(error), exitCode)) {\n return fail(error);\n }\n throw new GitResponseError(\n task.parser(bufferToString(stdOut), bufferToString(stdErr)),\n String(error)\n );\n }\n };\n return task;\n}\nvar init_branch = __esm({\n \"src/lib/tasks/branch.ts\"() {\n \"use strict\";\n init_git_response_error();\n init_parse_branch_delete();\n init_parse_branch();\n init_utils();\n }\n});\n\n// src/lib/responses/CheckIgnore.ts\nimport { normalize } from \"node:path\";\nfunction toPath(input) {\n const path = input.trim().replace(/^[\"']|[\"']$/g, \"\");\n return path && normalize(path);\n}\nvar parseCheckIgnore;\nvar init_CheckIgnore = __esm({\n \"src/lib/responses/CheckIgnore.ts\"() {\n \"use strict\";\n parseCheckIgnore = (text) => {\n return text.split(/\\n/g).map(toPath).filter(Boolean);\n };\n }\n});\n\n// src/lib/tasks/check-ignore.ts\nvar check_ignore_exports = {};\n__export(check_ignore_exports, {\n checkIgnoreTask: () => checkIgnoreTask\n});\nfunction checkIgnoreTask(paths) {\n return {\n commands: [\"check-ignore\", ...paths],\n format: \"utf-8\",\n parser: parseCheckIgnore\n };\n}\nvar init_check_ignore = __esm({\n \"src/lib/tasks/check-ignore.ts\"() {\n \"use strict\";\n init_CheckIgnore();\n }\n});\n\n// src/lib/tasks/clone.ts\nvar clone_exports = {};\n__export(clone_exports, {\n cloneMirrorTask: () => cloneMirrorTask,\n cloneTask: () => cloneTask\n});\nfunction disallowedCommand(command) {\n return /^--upload-pack(=|$)/.test(command);\n}\nfunction cloneTask(repo, directory, customArgs) {\n const commands = [\"clone\", ...customArgs];\n filterString(repo) && commands.push(repo);\n filterString(directory) && commands.push(directory);\n const banned = commands.find(disallowedCommand);\n if (banned) {\n return configurationErrorTask(`git.fetch: potential exploit argument blocked.`);\n }\n return straightThroughStringTask(commands);\n}\nfunction cloneMirrorTask(repo, directory, customArgs) {\n append(customArgs, \"--mirror\");\n return cloneTask(repo, directory, customArgs);\n}\nvar init_clone = __esm({\n \"src/lib/tasks/clone.ts\"() {\n \"use strict\";\n init_task();\n init_utils();\n }\n});\n\n// src/lib/parsers/parse-fetch.ts\nfunction parseFetchResult(stdOut, stdErr) {\n const result = {\n raw: stdOut,\n remote: null,\n branches: [],\n tags: [],\n updated: [],\n deleted: []\n };\n return parseStringResponse(result, parsers10, [stdOut, stdErr]);\n}\nvar parsers10;\nvar init_parse_fetch = __esm({\n \"src/lib/parsers/parse-fetch.ts\"() {\n \"use strict\";\n init_utils();\n parsers10 = [\n new LineParser(/From (.+)$/, (result, [remote]) => {\n result.remote = remote;\n }),\n new LineParser(/\\* \\[new branch]\\s+(\\S+)\\s*-> (.+)$/, (result, [name, tracking]) => {\n result.branches.push({\n name,\n tracking\n });\n }),\n new LineParser(/\\* \\[new tag]\\s+(\\S+)\\s*-> (.+)$/, (result, [name, tracking]) => {\n result.tags.push({\n name,\n tracking\n });\n }),\n new LineParser(/- \\[deleted]\\s+\\S+\\s*-> (.+)$/, (result, [tracking]) => {\n result.deleted.push({\n tracking\n });\n }),\n new LineParser(\n /\\s*([^.]+)\\.\\.(\\S+)\\s+(\\S+)\\s*-> (.+)$/,\n (result, [from, to, name, tracking]) => {\n result.updated.push({\n name,\n tracking,\n to,\n from\n });\n }\n )\n ];\n }\n});\n\n// src/lib/tasks/fetch.ts\nvar fetch_exports = {};\n__export(fetch_exports, {\n fetchTask: () => fetchTask\n});\nfunction disallowedCommand2(command) {\n return /^--upload-pack(=|$)/.test(command);\n}\nfunction fetchTask(remote, branch, customArgs) {\n const commands = [\"fetch\", ...customArgs];\n if (remote && branch) {\n commands.push(remote, branch);\n }\n const banned = commands.find(disallowedCommand2);\n if (banned) {\n return configurationErrorTask(`git.fetch: potential exploit argument blocked.`);\n }\n return {\n commands,\n format: \"utf-8\",\n parser: parseFetchResult\n };\n}\nvar init_fetch = __esm({\n \"src/lib/tasks/fetch.ts\"() {\n \"use strict\";\n init_parse_fetch();\n init_task();\n }\n});\n\n// src/lib/parsers/parse-move.ts\nfunction parseMoveResult(stdOut) {\n return parseStringResponse({ moves: [] }, parsers11, stdOut);\n}\nvar parsers11;\nvar init_parse_move = __esm({\n \"src/lib/parsers/parse-move.ts\"() {\n \"use strict\";\n init_utils();\n parsers11 = [\n new LineParser(/^Renaming (.+) to (.+)$/, (result, [from, to]) => {\n result.moves.push({ from, to });\n })\n ];\n }\n});\n\n// src/lib/tasks/move.ts\nvar move_exports = {};\n__export(move_exports, {\n moveTask: () => moveTask\n});\nfunction moveTask(from, to) {\n return {\n commands: [\"mv\", \"-v\", ...asArray(from), to],\n format: \"utf-8\",\n parser: parseMoveResult\n };\n}\nvar init_move = __esm({\n \"src/lib/tasks/move.ts\"() {\n \"use strict\";\n init_parse_move();\n init_utils();\n }\n});\n\n// src/lib/tasks/pull.ts\nvar pull_exports = {};\n__export(pull_exports, {\n pullTask: () => pullTask\n});\nfunction pullTask(remote, branch, customArgs) {\n const commands = [\"pull\", ...customArgs];\n if (remote && branch) {\n commands.splice(1, 0, remote, branch);\n }\n return {\n commands,\n format: \"utf-8\",\n parser(stdOut, stdErr) {\n return parsePullResult(stdOut, stdErr);\n },\n onError(result, _error, _done, fail) {\n const pullError = parsePullErrorResult(\n bufferToString(result.stdOut),\n bufferToString(result.stdErr)\n );\n if (pullError) {\n return fail(new GitResponseError(pullError));\n }\n fail(_error);\n }\n };\n}\nvar init_pull = __esm({\n \"src/lib/tasks/pull.ts\"() {\n \"use strict\";\n init_git_response_error();\n init_parse_pull();\n init_utils();\n }\n});\n\n// src/lib/responses/GetRemoteSummary.ts\nfunction parseGetRemotes(text) {\n const remotes = {};\n forEach(text, ([name]) => remotes[name] = { name });\n return Object.values(remotes);\n}\nfunction parseGetRemotesVerbose(text) {\n const remotes = {};\n forEach(text, ([name, url, purpose]) => {\n if (!Object.hasOwn(remotes, name)) {\n remotes[name] = {\n name,\n refs: { fetch: \"\", push: \"\" }\n };\n }\n if (purpose && url) {\n remotes[name].refs[purpose.replace(/[^a-z]/g, \"\")] = url;\n }\n });\n return Object.values(remotes);\n}\nfunction forEach(text, handler) {\n forEachLineWithContent(text, (line) => handler(line.split(/\\s+/)));\n}\nvar init_GetRemoteSummary = __esm({\n \"src/lib/responses/GetRemoteSummary.ts\"() {\n \"use strict\";\n init_utils();\n }\n});\n\n// src/lib/tasks/remote.ts\nvar remote_exports = {};\n__export(remote_exports, {\n addRemoteTask: () => addRemoteTask,\n getRemotesTask: () => getRemotesTask,\n listRemotesTask: () => listRemotesTask,\n remoteTask: () => remoteTask,\n removeRemoteTask: () => removeRemoteTask\n});\nfunction addRemoteTask(remoteName, remoteRepo, customArgs) {\n return straightThroughStringTask([\"remote\", \"add\", ...customArgs, remoteName, remoteRepo]);\n}\nfunction getRemotesTask(verbose) {\n const commands = [\"remote\"];\n if (verbose) {\n commands.push(\"-v\");\n }\n return {\n commands,\n format: \"utf-8\",\n parser: verbose ? parseGetRemotesVerbose : parseGetRemotes\n };\n}\nfunction listRemotesTask(customArgs) {\n const commands = [...customArgs];\n if (commands[0] !== \"ls-remote\") {\n commands.unshift(\"ls-remote\");\n }\n return straightThroughStringTask(commands);\n}\nfunction remoteTask(customArgs) {\n const commands = [...customArgs];\n if (commands[0] !== \"remote\") {\n commands.unshift(\"remote\");\n }\n return straightThroughStringTask(commands);\n}\nfunction removeRemoteTask(remoteName) {\n return straightThroughStringTask([\"remote\", \"remove\", remoteName]);\n}\nvar init_remote = __esm({\n \"src/lib/tasks/remote.ts\"() {\n \"use strict\";\n init_GetRemoteSummary();\n init_task();\n }\n});\n\n// src/lib/tasks/stash-list.ts\nvar stash_list_exports = {};\n__export(stash_list_exports, {\n stashListTask: () => stashListTask\n});\nfunction stashListTask(opt = {}, customArgs) {\n const options = parseLogOptions(opt);\n const commands = [\"stash\", \"list\", ...options.commands, ...customArgs];\n const parser4 = createListLogSummaryParser(\n options.splitter,\n options.fields,\n logFormatFromCommand(commands)\n );\n return validateLogFormatConfig(commands) || {\n commands,\n format: \"utf-8\",\n parser: parser4\n };\n}\nvar init_stash_list = __esm({\n \"src/lib/tasks/stash-list.ts\"() {\n \"use strict\";\n init_log_format();\n init_parse_list_log_summary();\n init_diff();\n init_log();\n }\n});\n\n// src/lib/tasks/sub-module.ts\nvar sub_module_exports = {};\n__export(sub_module_exports, {\n addSubModuleTask: () => addSubModuleTask,\n initSubModuleTask: () => initSubModuleTask,\n subModuleTask: () => subModuleTask,\n updateSubModuleTask: () => updateSubModuleTask\n});\nfunction addSubModuleTask(repo, path) {\n return subModuleTask([\"add\", repo, path]);\n}\nfunction initSubModuleTask(customArgs) {\n return subModuleTask([\"init\", ...customArgs]);\n}\nfunction subModuleTask(customArgs) {\n const commands = [...customArgs];\n if (commands[0] !== \"submodule\") {\n commands.unshift(\"submodule\");\n }\n return straightThroughStringTask(commands);\n}\nfunction updateSubModuleTask(customArgs) {\n return subModuleTask([\"update\", ...customArgs]);\n}\nvar init_sub_module = __esm({\n \"src/lib/tasks/sub-module.ts\"() {\n \"use strict\";\n init_task();\n }\n});\n\n// src/lib/responses/TagList.ts\nfunction singleSorted(a, b) {\n const aIsNum = Number.isNaN(a);\n const bIsNum = Number.isNaN(b);\n if (aIsNum !== bIsNum) {\n return aIsNum ? 1 : -1;\n }\n return aIsNum ? sorted(a, b) : 0;\n}\nfunction sorted(a, b) {\n return a === b ? 0 : a > b ? 1 : -1;\n}\nfunction trimmed(input) {\n return input.trim();\n}\nfunction toNumber(input) {\n if (typeof input === \"string\") {\n return parseInt(input.replace(/^\\D+/g, \"\"), 10) || 0;\n }\n return 0;\n}\nvar TagList, parseTagList;\nvar init_TagList = __esm({\n \"src/lib/responses/TagList.ts\"() {\n \"use strict\";\n TagList = class {\n constructor(all, latest) {\n this.all = all;\n this.latest = latest;\n }\n };\n parseTagList = function(data, customSort = false) {\n const tags = data.split(\"\\n\").map(trimmed).filter(Boolean);\n if (!customSort) {\n tags.sort(function(tagA, tagB) {\n const partsA = tagA.split(\".\");\n const partsB = tagB.split(\".\");\n if (partsA.length === 1 || partsB.length === 1) {\n return singleSorted(toNumber(partsA[0]), toNumber(partsB[0]));\n }\n for (let i = 0, l = Math.max(partsA.length, partsB.length); i < l; i++) {\n const diff = sorted(toNumber(partsA[i]), toNumber(partsB[i]));\n if (diff) {\n return diff;\n }\n }\n return 0;\n });\n }\n const latest = customSort ? tags[0] : [...tags].reverse().find((tag) => tag.indexOf(\".\") >= 0);\n return new TagList(tags, latest);\n };\n }\n});\n\n// src/lib/tasks/tag.ts\nvar tag_exports = {};\n__export(tag_exports, {\n addAnnotatedTagTask: () => addAnnotatedTagTask,\n addTagTask: () => addTagTask,\n tagListTask: () => tagListTask\n});\nfunction tagListTask(customArgs = []) {\n const hasCustomSort = customArgs.some((option) => /^--sort=/.test(option));\n return {\n format: \"utf-8\",\n commands: [\"tag\", \"-l\", ...customArgs],\n parser(text) {\n return parseTagList(text, hasCustomSort);\n }\n };\n}\nfunction addTagTask(name) {\n return {\n format: \"utf-8\",\n commands: [\"tag\", name],\n parser() {\n return { name };\n }\n };\n}\nfunction addAnnotatedTagTask(name, tagMessage) {\n return {\n format: \"utf-8\",\n commands: [\"tag\", \"-a\", \"-m\", tagMessage, name],\n parser() {\n return { name };\n }\n };\n}\nvar init_tag = __esm({\n \"src/lib/tasks/tag.ts\"() {\n \"use strict\";\n init_TagList();\n }\n});\n\n// src/git.js\nvar require_git = __commonJS({\n \"src/git.js\"(exports, module) {\n \"use strict\";\n var { GitExecutor: GitExecutor2 } = (init_git_executor(), __toCommonJS(git_executor_exports));\n var { SimpleGitApi: SimpleGitApi2 } = (init_simple_git_api(), __toCommonJS(simple_git_api_exports));\n var { Scheduler: Scheduler2 } = (init_scheduler(), __toCommonJS(scheduler_exports));\n var { adhocExecTask: adhocExecTask2, configurationErrorTask: configurationErrorTask2 } = (init_task(), __toCommonJS(task_exports));\n var {\n asArray: asArray2,\n filterArray: filterArray2,\n filterPrimitives: filterPrimitives2,\n filterString: filterString2,\n filterStringOrStringArray: filterStringOrStringArray2,\n filterType: filterType2,\n getTrailingOptions: getTrailingOptions2,\n trailingFunctionArgument: trailingFunctionArgument2,\n trailingOptionsArgument: trailingOptionsArgument2\n } = (init_utils(), __toCommonJS(utils_exports));\n var { applyPatchTask: applyPatchTask2 } = (init_apply_patch(), __toCommonJS(apply_patch_exports));\n var {\n branchTask: branchTask2,\n branchLocalTask: branchLocalTask2,\n deleteBranchesTask: deleteBranchesTask2,\n deleteBranchTask: deleteBranchTask2\n } = (init_branch(), __toCommonJS(branch_exports));\n var { checkIgnoreTask: checkIgnoreTask2 } = (init_check_ignore(), __toCommonJS(check_ignore_exports));\n var { checkIsRepoTask: checkIsRepoTask2 } = (init_check_is_repo(), __toCommonJS(check_is_repo_exports));\n var { cloneTask: cloneTask2, cloneMirrorTask: cloneMirrorTask2 } = (init_clone(), __toCommonJS(clone_exports));\n var { cleanWithOptionsTask: cleanWithOptionsTask2, isCleanOptionsArray: isCleanOptionsArray2 } = (init_clean(), __toCommonJS(clean_exports));\n var { diffSummaryTask: diffSummaryTask2 } = (init_diff(), __toCommonJS(diff_exports));\n var { fetchTask: fetchTask2 } = (init_fetch(), __toCommonJS(fetch_exports));\n var { moveTask: moveTask2 } = (init_move(), __toCommonJS(move_exports));\n var { pullTask: pullTask2 } = (init_pull(), __toCommonJS(pull_exports));\n var { pushTagsTask: pushTagsTask2 } = (init_push(), __toCommonJS(push_exports));\n var {\n addRemoteTask: addRemoteTask2,\n getRemotesTask: getRemotesTask2,\n listRemotesTask: listRemotesTask2,\n remoteTask: remoteTask2,\n removeRemoteTask: removeRemoteTask2\n } = (init_remote(), __toCommonJS(remote_exports));\n var { getResetMode: getResetMode2, resetTask: resetTask2 } = (init_reset(), __toCommonJS(reset_exports));\n var { stashListTask: stashListTask2 } = (init_stash_list(), __toCommonJS(stash_list_exports));\n var {\n addSubModuleTask: addSubModuleTask2,\n initSubModuleTask: initSubModuleTask2,\n subModuleTask: subModuleTask2,\n updateSubModuleTask: updateSubModuleTask2\n } = (init_sub_module(), __toCommonJS(sub_module_exports));\n var { addAnnotatedTagTask: addAnnotatedTagTask2, addTagTask: addTagTask2, tagListTask: tagListTask2 } = (init_tag(), __toCommonJS(tag_exports));\n var { straightThroughBufferTask: straightThroughBufferTask2, straightThroughStringTask: straightThroughStringTask2 } = (init_task(), __toCommonJS(task_exports));\n function Git2(options, plugins) {\n this._plugins = plugins;\n this._executor = new GitExecutor2(\n options.baseDir,\n new Scheduler2(options.maxConcurrentProcesses),\n plugins\n );\n this._trimmed = options.trimmed;\n }\n (Git2.prototype = Object.create(SimpleGitApi2.prototype)).constructor = Git2;\n Git2.prototype.customBinary = function(command) {\n this._plugins.reconfigure(\"binary\", command);\n return this;\n };\n Git2.prototype.env = function(name, value) {\n if (arguments.length === 1 && typeof name === \"object\") {\n this._executor.env = name;\n } else {\n (this._executor.env = this._executor.env || {})[name] = value;\n }\n return this;\n };\n Git2.prototype.stashList = function(options) {\n return this._runTask(\n stashListTask2(\n trailingOptionsArgument2(arguments) || {},\n filterArray2(options) && options || []\n ),\n trailingFunctionArgument2(arguments)\n );\n };\n function createCloneTask(api, task, repoPath, localPath) {\n if (typeof repoPath !== \"string\") {\n return configurationErrorTask2(`git.${api}() requires a string 'repoPath'`);\n }\n return task(repoPath, filterType2(localPath, filterString2), getTrailingOptions2(arguments));\n }\n Git2.prototype.clone = function() {\n return this._runTask(\n createCloneTask(\"clone\", cloneTask2, ...arguments),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.mirror = function() {\n return this._runTask(\n createCloneTask(\"mirror\", cloneMirrorTask2, ...arguments),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.mv = function(from, to) {\n return this._runTask(moveTask2(from, to), trailingFunctionArgument2(arguments));\n };\n Git2.prototype.checkoutLatestTag = function(then) {\n var git = this;\n return this.pull(function() {\n git.tags(function(err, tags) {\n git.checkout(tags.latest, then);\n });\n });\n };\n Git2.prototype.pull = function(remote, branch, options, then) {\n return this._runTask(\n pullTask2(\n filterType2(remote, filterString2),\n filterType2(branch, filterString2),\n getTrailingOptions2(arguments)\n ),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.fetch = function(remote, branch) {\n return this._runTask(\n fetchTask2(\n filterType2(remote, filterString2),\n filterType2(branch, filterString2),\n getTrailingOptions2(arguments)\n ),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.silent = function(silence) {\n return this._runTask(\n adhocExecTask2(\n () => console.warn(\n \"simple-git deprecation notice: git.silent: logging should be configured using the `debug` library / `DEBUG` environment variable, this method will be removed.\"\n )\n )\n );\n };\n Git2.prototype.tags = function(options, then) {\n return this._runTask(\n tagListTask2(getTrailingOptions2(arguments)),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.rebase = function() {\n return this._runTask(\n straightThroughStringTask2([\"rebase\", ...getTrailingOptions2(arguments)]),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.reset = function(mode) {\n return this._runTask(\n resetTask2(getResetMode2(mode), getTrailingOptions2(arguments)),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.revert = function(commit) {\n const next = trailingFunctionArgument2(arguments);\n if (typeof commit !== \"string\") {\n return this._runTask(configurationErrorTask2(\"Commit must be a string\"), next);\n }\n return this._runTask(\n straightThroughStringTask2([\"revert\", ...getTrailingOptions2(arguments, 0, true), commit]),\n next\n );\n };\n Git2.prototype.addTag = function(name) {\n const task = typeof name === \"string\" ? addTagTask2(name) : configurationErrorTask2(\"Git.addTag requires a tag name\");\n return this._runTask(task, trailingFunctionArgument2(arguments));\n };\n Git2.prototype.addAnnotatedTag = function(tagName, tagMessage) {\n return this._runTask(\n addAnnotatedTagTask2(tagName, tagMessage),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.deleteLocalBranch = function(branchName, forceDelete, then) {\n return this._runTask(\n deleteBranchTask2(branchName, typeof forceDelete === \"boolean\" ? forceDelete : false),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.deleteLocalBranches = function(branchNames, forceDelete, then) {\n return this._runTask(\n deleteBranchesTask2(branchNames, typeof forceDelete === \"boolean\" ? forceDelete : false),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.branch = function(options, then) {\n return this._runTask(\n branchTask2(getTrailingOptions2(arguments)),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.branchLocal = function(then) {\n return this._runTask(branchLocalTask2(), trailingFunctionArgument2(arguments));\n };\n Git2.prototype.raw = function(commands) {\n const createRestCommands = !Array.isArray(commands);\n const command = [].slice.call(createRestCommands ? arguments : commands, 0);\n for (let i = 0; i < command.length && createRestCommands; i++) {\n if (!filterPrimitives2(command[i])) {\n command.splice(i, command.length - i);\n break;\n }\n }\n command.push(...getTrailingOptions2(arguments, 0, true));\n var next = trailingFunctionArgument2(arguments);\n if (!command.length) {\n return this._runTask(\n configurationErrorTask2(\"Raw: must supply one or more command to execute\"),\n next\n );\n }\n return this._runTask(straightThroughStringTask2(command, this._trimmed), next);\n };\n Git2.prototype.submoduleAdd = function(repo, path, then) {\n return this._runTask(addSubModuleTask2(repo, path), trailingFunctionArgument2(arguments));\n };\n Git2.prototype.submoduleUpdate = function(args, then) {\n return this._runTask(\n updateSubModuleTask2(getTrailingOptions2(arguments, true)),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.submoduleInit = function(args, then) {\n return this._runTask(\n initSubModuleTask2(getTrailingOptions2(arguments, true)),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.subModule = function(options, then) {\n return this._runTask(\n subModuleTask2(getTrailingOptions2(arguments)),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.listRemote = function() {\n return this._runTask(\n listRemotesTask2(getTrailingOptions2(arguments)),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.addRemote = function(remoteName, remoteRepo, then) {\n return this._runTask(\n addRemoteTask2(remoteName, remoteRepo, getTrailingOptions2(arguments)),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.removeRemote = function(remoteName, then) {\n return this._runTask(removeRemoteTask2(remoteName), trailingFunctionArgument2(arguments));\n };\n Git2.prototype.getRemotes = function(verbose, then) {\n return this._runTask(getRemotesTask2(verbose === true), trailingFunctionArgument2(arguments));\n };\n Git2.prototype.remote = function(options, then) {\n return this._runTask(\n remoteTask2(getTrailingOptions2(arguments)),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.tag = function(options, then) {\n const command = getTrailingOptions2(arguments);\n if (command[0] !== \"tag\") {\n command.unshift(\"tag\");\n }\n return this._runTask(straightThroughStringTask2(command), trailingFunctionArgument2(arguments));\n };\n Git2.prototype.updateServerInfo = function(then) {\n return this._runTask(\n straightThroughStringTask2([\"update-server-info\"]),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.pushTags = function(remote, then) {\n const task = pushTagsTask2(\n { remote: filterType2(remote, filterString2) },\n getTrailingOptions2(arguments)\n );\n return this._runTask(task, trailingFunctionArgument2(arguments));\n };\n Git2.prototype.rm = function(files) {\n return this._runTask(\n straightThroughStringTask2([\"rm\", \"-f\", ...asArray2(files)]),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.rmKeepLocal = function(files) {\n return this._runTask(\n straightThroughStringTask2([\"rm\", \"--cached\", ...asArray2(files)]),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.catFile = function(options, then) {\n return this._catFile(\"utf-8\", arguments);\n };\n Git2.prototype.binaryCatFile = function() {\n return this._catFile(\"buffer\", arguments);\n };\n Git2.prototype._catFile = function(format, args) {\n var handler = trailingFunctionArgument2(args);\n var command = [\"cat-file\"];\n var options = args[0];\n if (typeof options === \"string\") {\n return this._runTask(\n configurationErrorTask2(\"Git.catFile: options must be supplied as an array of strings\"),\n handler\n );\n }\n if (Array.isArray(options)) {\n command.push.apply(command, options);\n }\n const task = format === \"buffer\" ? straightThroughBufferTask2(command) : straightThroughStringTask2(command);\n return this._runTask(task, handler);\n };\n Git2.prototype.diff = function(options, then) {\n const task = filterString2(options) ? configurationErrorTask2(\n \"git.diff: supplying options as a single string is no longer supported, switch to an array of strings\"\n ) : straightThroughStringTask2([\"diff\", ...getTrailingOptions2(arguments)]);\n return this._runTask(task, trailingFunctionArgument2(arguments));\n };\n Git2.prototype.diffSummary = function() {\n return this._runTask(\n diffSummaryTask2(getTrailingOptions2(arguments, 1)),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.applyPatch = function(patches) {\n const task = !filterStringOrStringArray2(patches) ? configurationErrorTask2(\n `git.applyPatch requires one or more string patches as the first argument`\n ) : applyPatchTask2(asArray2(patches), getTrailingOptions2([].slice.call(arguments, 1)));\n return this._runTask(task, trailingFunctionArgument2(arguments));\n };\n Git2.prototype.revparse = function() {\n const commands = [\"rev-parse\", ...getTrailingOptions2(arguments, true)];\n return this._runTask(\n straightThroughStringTask2(commands, true),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.clean = function(mode, options, then) {\n const usingCleanOptionsArray = isCleanOptionsArray2(mode);\n const cleanMode = usingCleanOptionsArray && mode.join(\"\") || filterType2(mode, filterString2) || \"\";\n const customArgs = getTrailingOptions2([].slice.call(arguments, usingCleanOptionsArray ? 1 : 0));\n return this._runTask(\n cleanWithOptionsTask2(cleanMode, customArgs),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.exec = function(then) {\n const task = {\n commands: [],\n format: \"utf-8\",\n parser() {\n if (typeof then === \"function\") {\n then();\n }\n }\n };\n return this._runTask(task);\n };\n Git2.prototype.clearQueue = function() {\n return this._runTask(\n adhocExecTask2(\n () => console.warn(\n \"simple-git deprecation notice: clearQueue() is deprecated and will be removed, switch to using the abortPlugin instead.\"\n )\n )\n );\n };\n Git2.prototype.checkIgnore = function(pathnames, then) {\n return this._runTask(\n checkIgnoreTask2(asArray2(filterType2(pathnames, filterStringOrStringArray2, []))),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.checkIsRepo = function(checkType, then) {\n return this._runTask(\n checkIsRepoTask2(filterType2(checkType, filterString2)),\n trailingFunctionArgument2(arguments)\n );\n };\n module.exports = Git2;\n }\n});\n\n// src/lib/api.ts\ninit_pathspec();\n\n// src/lib/errors/git-construct-error.ts\ninit_git_error();\nvar GitConstructError = class extends GitError {\n constructor(config, message) {\n super(void 0, message);\n this.config = config;\n }\n};\n\n// src/lib/api.ts\ninit_git_error();\n\n// src/lib/errors/git-plugin-error.ts\ninit_git_error();\nvar GitPluginError = class extends GitError {\n constructor(task, plugin, message) {\n super(task, message);\n this.task = task;\n this.plugin = plugin;\n Object.setPrototypeOf(this, new.target.prototype);\n }\n};\n\n// src/lib/api.ts\ninit_git_response_error();\ninit_task_configuration_error();\ninit_check_is_repo();\ninit_clean();\ninit_config();\ninit_diff_name_status();\ninit_grep();\ninit_reset();\n\n// src/lib/plugins/abort-plugin.ts\nfunction abortPlugin(signal) {\n if (!signal) {\n return;\n }\n const onSpawnAfter = {\n type: \"spawn.after\",\n action(_data, context) {\n function kill() {\n context.kill(new GitPluginError(void 0, \"abort\", \"Abort signal received\"));\n }\n signal.addEventListener(\"abort\", kill);\n context.spawned.on(\"close\", () => signal.removeEventListener(\"abort\", kill));\n }\n };\n const onSpawnBefore = {\n type: \"spawn.before\",\n action(_data, context) {\n if (signal.aborted) {\n context.kill(new GitPluginError(void 0, \"abort\", \"Abort already signaled\"));\n }\n }\n };\n return [onSpawnBefore, onSpawnAfter];\n}\n\n// src/lib/plugins/block-unsafe-operations-plugin.ts\nfunction isConfigSwitch(arg) {\n return typeof arg === \"string\" && arg.trim().toLowerCase() === \"-c\";\n}\nfunction isCloneSwitch(char, arg) {\n if (typeof arg !== \"string\" || !arg.includes(char)) {\n return false;\n }\n const token = arg.replace(/\\0g/, \"\").replace(/^(--no)?-{1,2}/, \"\");\n return /^[\\dlsqvnobucj]+\\b/.test(token);\n}\nfunction preventProtocolOverride(arg, next) {\n if (!isConfigSwitch(arg)) {\n return;\n }\n if (!/^\\s*protocol(.[a-z]+)?.allow/.test(next)) {\n return;\n }\n throw new GitPluginError(\n void 0,\n \"unsafe\",\n \"Configuring protocol.allow is not permitted without enabling allowUnsafeExtProtocol\"\n );\n}\nfunction preventUploadPack(arg, method) {\n if (/^\\s*--(upload|receive)-pack/.test(arg)) {\n throw new GitPluginError(\n void 0,\n \"unsafe\",\n `Use of --upload-pack or --receive-pack is not permitted without enabling allowUnsafePack`\n );\n }\n if (method === \"clone\" && isCloneSwitch(\"u\", arg)) {\n throw new GitPluginError(\n void 0,\n \"unsafe\",\n `Use of clone with option -u is not permitted without enabling allowUnsafePack`\n );\n }\n if (method === \"push\" && /^\\s*--exec\\b/.test(arg)) {\n throw new GitPluginError(\n void 0,\n \"unsafe\",\n `Use of push with option --exec is not permitted without enabling allowUnsafePack`\n );\n }\n}\nfunction blockUnsafeOperationsPlugin({\n allowUnsafeProtocolOverride = false,\n allowUnsafePack = false\n} = {}) {\n return {\n type: \"spawn.args\",\n action(args, context) {\n args.forEach((current, index) => {\n const next = index < args.length ? args[index + 1] : \"\";\n allowUnsafeProtocolOverride || preventProtocolOverride(current, next);\n allowUnsafePack || preventUploadPack(current, context.method);\n });\n return args;\n }\n };\n}\n\n// src/lib/plugins/command-config-prefixing-plugin.ts\ninit_utils();\nfunction commandConfigPrefixingPlugin(configuration) {\n const prefix = prefixedArray(configuration, \"-c\");\n return {\n type: \"spawn.args\",\n action(data) {\n return [...prefix, ...data];\n }\n };\n}\n\n// src/lib/plugins/completion-detection.plugin.ts\ninit_utils();\nimport { deferred } from \"@kwsites/promise-deferred\";\nvar never = deferred().promise;\nfunction completionDetectionPlugin({\n onClose = true,\n onExit = 50\n} = {}) {\n function createEvents() {\n let exitCode = -1;\n const events = {\n close: deferred(),\n closeTimeout: deferred(),\n exit: deferred(),\n exitTimeout: deferred()\n };\n const result = Promise.race([\n onClose === false ? never : events.closeTimeout.promise,\n onExit === false ? never : events.exitTimeout.promise\n ]);\n configureTimeout(onClose, events.close, events.closeTimeout);\n configureTimeout(onExit, events.exit, events.exitTimeout);\n return {\n close(code) {\n exitCode = code;\n events.close.done();\n },\n exit(code) {\n exitCode = code;\n events.exit.done();\n },\n get exitCode() {\n return exitCode;\n },\n result\n };\n }\n function configureTimeout(flag, event, timeout) {\n if (flag === false) {\n return;\n }\n (flag === true ? event.promise : event.promise.then(() => delay(flag))).then(timeout.done);\n }\n return {\n type: \"spawn.after\",\n async action(_data, { spawned, close }) {\n const events = createEvents();\n let deferClose = true;\n let quickClose = () => void (deferClose = false);\n spawned.stdout?.on(\"data\", quickClose);\n spawned.stderr?.on(\"data\", quickClose);\n spawned.on(\"error\", quickClose);\n spawned.on(\"close\", (code) => events.close(code));\n spawned.on(\"exit\", (code) => events.exit(code));\n try {\n await events.result;\n if (deferClose) {\n await delay(50);\n }\n close(events.exitCode);\n } catch (err) {\n close(events.exitCode, err);\n }\n }\n };\n}\n\n// src/lib/plugins/custom-binary.plugin.ts\ninit_utils();\nvar WRONG_NUMBER_ERR = `Invalid value supplied for custom binary, requires a single string or an array containing either one or two strings`;\nvar WRONG_CHARS_ERR = `Invalid value supplied for custom binary, restricted characters must be removed or supply the unsafe.allowUnsafeCustomBinary option`;\nfunction isBadArgument(arg) {\n return !arg || !/^([a-z]:)?([a-z0-9/.\\\\_~-]+)$/i.test(arg);\n}\nfunction toBinaryConfig(input, allowUnsafe) {\n if (input.length < 1 || input.length > 2) {\n throw new GitPluginError(void 0, \"binary\", WRONG_NUMBER_ERR);\n }\n const isBad = input.some(isBadArgument);\n if (isBad) {\n if (allowUnsafe) {\n console.warn(WRONG_CHARS_ERR);\n } else {\n throw new GitPluginError(void 0, \"binary\", WRONG_CHARS_ERR);\n }\n }\n const [binary, prefix] = input;\n return {\n binary,\n prefix\n };\n}\nfunction customBinaryPlugin(plugins, input = [\"git\"], allowUnsafe = false) {\n let config = toBinaryConfig(asArray(input), allowUnsafe);\n plugins.on(\"binary\", (input2) => {\n config = toBinaryConfig(asArray(input2), allowUnsafe);\n });\n plugins.append(\"spawn.binary\", () => {\n return config.binary;\n });\n plugins.append(\"spawn.args\", (data) => {\n return config.prefix ? [config.prefix, ...data] : data;\n });\n}\n\n// src/lib/plugins/error-detection.plugin.ts\ninit_git_error();\nfunction isTaskError(result) {\n return !!(result.exitCode && result.stdErr.length);\n}\nfunction getErrorMessage(result) {\n return Buffer.concat([...result.stdOut, ...result.stdErr]);\n}\nfunction errorDetectionHandler(overwrite = false, isError = isTaskError, errorMessage = getErrorMessage) {\n return (error, result) => {\n if (!overwrite && error || !isError(result)) {\n return error;\n }\n return errorMessage(result);\n };\n}\nfunction errorDetectionPlugin(config) {\n return {\n type: \"task.error\",\n action(data, context) {\n const error = config(data.error, {\n stdErr: context.stdErr,\n stdOut: context.stdOut,\n exitCode: context.exitCode\n });\n if (Buffer.isBuffer(error)) {\n return { error: new GitError(void 0, error.toString(\"utf-8\")) };\n }\n return {\n error\n };\n }\n };\n}\n\n// src/lib/plugins/plugin-store.ts\ninit_utils();\nimport { EventEmitter } from \"node:events\";\nvar PluginStore = class {\n constructor() {\n this.plugins = /* @__PURE__ */ new Set();\n this.events = new EventEmitter();\n }\n on(type, listener) {\n this.events.on(type, listener);\n }\n reconfigure(type, data) {\n this.events.emit(type, data);\n }\n append(type, action) {\n const plugin = append(this.plugins, { type, action });\n return () => this.plugins.delete(plugin);\n }\n add(plugin) {\n const plugins = [];\n asArray(plugin).forEach((plugin2) => plugin2 && this.plugins.add(append(plugins, plugin2)));\n return () => {\n plugins.forEach((plugin2) => this.plugins.delete(plugin2));\n };\n }\n exec(type, data, context) {\n let output = data;\n const contextual = Object.freeze(Object.create(context));\n for (const plugin of this.plugins) {\n if (plugin.type === type) {\n output = plugin.action(output, contextual);\n }\n }\n return output;\n }\n};\n\n// src/lib/plugins/progress-monitor-plugin.ts\ninit_utils();\nfunction progressMonitorPlugin(progress) {\n const progressCommand = \"--progress\";\n const progressMethods = [\"checkout\", \"clone\", \"fetch\", \"pull\", \"push\"];\n const onProgress = {\n type: \"spawn.after\",\n action(_data, context) {\n if (!context.commands.includes(progressCommand)) {\n return;\n }\n context.spawned.stderr?.on(\"data\", (chunk) => {\n const message = /^([\\s\\S]+?):\\s*(\\d+)% \\((\\d+)\\/(\\d+)\\)/.exec(chunk.toString(\"utf8\"));\n if (!message) {\n return;\n }\n progress({\n method: context.method,\n stage: progressEventStage(message[1]),\n progress: asNumber(message[2]),\n processed: asNumber(message[3]),\n total: asNumber(message[4])\n });\n });\n }\n };\n const onArgs = {\n type: \"spawn.args\",\n action(args, context) {\n if (!progressMethods.includes(context.method)) {\n return args;\n }\n return including(args, progressCommand);\n }\n };\n return [onArgs, onProgress];\n}\nfunction progressEventStage(input) {\n return String(input.toLowerCase().split(\" \", 1)) || \"unknown\";\n}\n\n// src/lib/plugins/spawn-options-plugin.ts\ninit_utils();\nfunction spawnOptionsPlugin(spawnOptions) {\n const options = pick(spawnOptions, [\"uid\", \"gid\"]);\n return {\n type: \"spawn.options\",\n action(data) {\n return { ...options, ...data };\n }\n };\n}\n\n// src/lib/plugins/timout-plugin.ts\nfunction timeoutPlugin({\n block,\n stdErr = true,\n stdOut = true\n}) {\n if (block > 0) {\n return {\n type: \"spawn.after\",\n action(_data, context) {\n let timeout;\n function wait() {\n timeout && clearTimeout(timeout);\n timeout = setTimeout(kill, block);\n }\n function stop() {\n context.spawned.stdout?.off(\"data\", wait);\n context.spawned.stderr?.off(\"data\", wait);\n context.spawned.off(\"exit\", stop);\n context.spawned.off(\"close\", stop);\n timeout && clearTimeout(timeout);\n }\n function kill() {\n stop();\n context.kill(new GitPluginError(void 0, \"timeout\", `block timeout reached`));\n }\n stdOut && context.spawned.stdout?.on(\"data\", wait);\n stdErr && context.spawned.stderr?.on(\"data\", wait);\n context.spawned.on(\"exit\", stop);\n context.spawned.on(\"close\", stop);\n wait();\n }\n };\n }\n}\n\n// src/lib/plugins/suffix-paths.plugin.ts\ninit_pathspec();\nfunction suffixPathsPlugin() {\n return {\n type: \"spawn.args\",\n action(data) {\n const prefix = [];\n let suffix;\n function append2(args) {\n (suffix = suffix || []).push(...args);\n }\n for (let i = 0; i < data.length; i++) {\n const param = data[i];\n if (isPathSpec(param)) {\n append2(toPaths(param));\n continue;\n }\n if (param === \"--\") {\n append2(\n data.slice(i + 1).flatMap((item) => isPathSpec(item) && toPaths(item) || item)\n );\n break;\n }\n prefix.push(param);\n }\n return !suffix ? prefix : [...prefix, \"--\", ...suffix.map(String)];\n }\n };\n}\n\n// src/lib/git-factory.ts\ninit_utils();\nvar Git = require_git();\nfunction gitInstanceFactory(baseDir, options) {\n const plugins = new PluginStore();\n const config = createInstanceConfig(\n baseDir && (typeof baseDir === \"string\" ? { baseDir } : baseDir) || {},\n options\n );\n if (!folderExists(config.baseDir)) {\n throw new GitConstructError(\n config,\n `Cannot use simple-git on a directory that does not exist`\n );\n }\n if (Array.isArray(config.config)) {\n plugins.add(commandConfigPrefixingPlugin(config.config));\n }\n plugins.add(blockUnsafeOperationsPlugin(config.unsafe));\n plugins.add(suffixPathsPlugin());\n plugins.add(completionDetectionPlugin(config.completion));\n config.abort && plugins.add(abortPlugin(config.abort));\n config.progress && plugins.add(progressMonitorPlugin(config.progress));\n config.timeout && plugins.add(timeoutPlugin(config.timeout));\n config.spawnOptions && plugins.add(spawnOptionsPlugin(config.spawnOptions));\n plugins.add(errorDetectionPlugin(errorDetectionHandler(true)));\n config.errors && plugins.add(errorDetectionPlugin(config.errors));\n customBinaryPlugin(plugins, config.binary, config.unsafe?.allowUnsafeCustomBinary);\n return new Git(config, plugins);\n}\n\n// src/lib/runners/promise-wrapped.ts\ninit_git_response_error();\nvar functionNamesBuilderApi = [\"customBinary\", \"env\", \"outputHandler\", \"silent\"];\nvar functionNamesPromiseApi = [\n \"add\",\n \"addAnnotatedTag\",\n \"addConfig\",\n \"addRemote\",\n \"addTag\",\n \"applyPatch\",\n \"binaryCatFile\",\n \"branch\",\n \"branchLocal\",\n \"catFile\",\n \"checkIgnore\",\n \"checkIsRepo\",\n \"checkout\",\n \"checkoutBranch\",\n \"checkoutLatestTag\",\n \"checkoutLocalBranch\",\n \"clean\",\n \"clone\",\n \"commit\",\n \"cwd\",\n \"deleteLocalBranch\",\n \"deleteLocalBranches\",\n \"diff\",\n \"diffSummary\",\n \"exec\",\n \"fetch\",\n \"getRemotes\",\n \"init\",\n \"listConfig\",\n \"listRemote\",\n \"log\",\n \"merge\",\n \"mergeFromTo\",\n \"mirror\",\n \"mv\",\n \"pull\",\n \"push\",\n \"pushTags\",\n \"raw\",\n \"rebase\",\n \"remote\",\n \"removeRemote\",\n \"reset\",\n \"revert\",\n \"revparse\",\n \"rm\",\n \"rmKeepLocal\",\n \"show\",\n \"stash\",\n \"stashList\",\n \"status\",\n \"subModule\",\n \"submoduleAdd\",\n \"submoduleInit\",\n \"submoduleUpdate\",\n \"tag\",\n \"tags\",\n \"updateServerInfo\"\n];\nfunction gitP(...args) {\n let git;\n let chain = Promise.resolve();\n try {\n git = gitInstanceFactory(...args);\n } catch (e) {\n chain = Promise.reject(e);\n }\n function builderReturn() {\n return promiseApi;\n }\n function chainReturn() {\n return chain;\n }\n const promiseApi = [...functionNamesBuilderApi, ...functionNamesPromiseApi].reduce(\n (api, name) => {\n const isAsync = functionNamesPromiseApi.includes(name);\n const valid = isAsync ? asyncWrapper(name, git) : syncWrapper(name, git, api);\n const alternative = isAsync ? chainReturn : builderReturn;\n Object.defineProperty(api, name, {\n enumerable: false,\n configurable: false,\n value: git ? valid : alternative\n });\n return api;\n },\n {}\n );\n return promiseApi;\n function asyncWrapper(fn, git2) {\n return function(...args2) {\n if (typeof args2[args2.length] === \"function\") {\n throw new TypeError(\n \"Promise interface requires that handlers are not supplied inline, trailing function not allowed in call to \" + fn\n );\n }\n return chain.then(function() {\n return new Promise(function(resolve, reject) {\n const callback = (err, result) => {\n if (err) {\n return reject(toError(err));\n }\n resolve(result);\n };\n args2.push(callback);\n git2[fn].apply(git2, args2);\n });\n });\n };\n }\n function syncWrapper(fn, git2, api) {\n return (...args2) => {\n git2[fn](...args2);\n return api;\n };\n }\n}\nfunction toError(error) {\n if (error instanceof Error) {\n return error;\n }\n if (typeof error === \"string\") {\n return new Error(error);\n }\n return new GitResponseError(error);\n}\n\n// src/esm.mjs\nvar simpleGit = gitInstanceFactory;\nvar esm_default = gitInstanceFactory;\nexport {\n CheckRepoActions,\n CleanOptions,\n DiffNameStatus,\n GitConfigScope,\n GitConstructError,\n GitError,\n GitPluginError,\n GitResponseError,\n ResetMode,\n TaskConfigurationError,\n esm_default as default,\n gitP,\n grepQueryBuilder,\n pathspec,\n simpleGit\n};\n//# sourceMappingURL=index.js.map\n","\n;(function (name, root, factory) {\n if (typeof exports === 'object') {\n module.exports = factory()\n module.exports['default'] = factory()\n }\n /* istanbul ignore next */\n else if (typeof define === 'function' && define.amd) {\n define(factory)\n }\n else {\n root[name] = factory()\n }\n}('slugify', this, function () {\n var charMap = JSON.parse('{\"$\":\"dollar\",\"%\":\"percent\",\"&\":\"and\",\"<\":\"less\",\">\":\"greater\",\"|\":\"or\",\"¢\":\"cent\",\"£\":\"pound\",\"¤\":\"currency\",\"¥\":\"yen\",\"©\":\"(c)\",\"ª\":\"a\",\"®\":\"(r)\",\"º\":\"o\",\"À\":\"A\",\"Á\":\"A\",\"Â\":\"A\",\"Ã\":\"A\",\"Ä\":\"A\",\"Å\":\"A\",\"Æ\":\"AE\",\"Ç\":\"C\",\"È\":\"E\",\"É\":\"E\",\"Ê\":\"E\",\"Ë\":\"E\",\"Ì\":\"I\",\"Í\":\"I\",\"Î\":\"I\",\"Ï\":\"I\",\"Ð\":\"D\",\"Ñ\":\"N\",\"Ò\":\"O\",\"Ó\":\"O\",\"Ô\":\"O\",\"Õ\":\"O\",\"Ö\":\"O\",\"Ø\":\"O\",\"Ù\":\"U\",\"Ú\":\"U\",\"Û\":\"U\",\"Ü\":\"U\",\"Ý\":\"Y\",\"Þ\":\"TH\",\"ß\":\"ss\",\"à\":\"a\",\"á\":\"a\",\"â\":\"a\",\"ã\":\"a\",\"ä\":\"a\",\"å\":\"a\",\"æ\":\"ae\",\"ç\":\"c\",\"è\":\"e\",\"é\":\"e\",\"ê\":\"e\",\"ë\":\"e\",\"ì\":\"i\",\"í\":\"i\",\"î\":\"i\",\"ï\":\"i\",\"ð\":\"d\",\"ñ\":\"n\",\"ò\":\"o\",\"ó\":\"o\",\"ô\":\"o\",\"õ\":\"o\",\"ö\":\"o\",\"ø\":\"o\",\"ù\":\"u\",\"ú\":\"u\",\"û\":\"u\",\"ü\":\"u\",\"ý\":\"y\",\"þ\":\"th\",\"ÿ\":\"y\",\"Ā\":\"A\",\"ā\":\"a\",\"Ă\":\"A\",\"ă\":\"a\",\"Ą\":\"A\",\"ą\":\"a\",\"Ć\":\"C\",\"ć\":\"c\",\"Č\":\"C\",\"č\":\"c\",\"Ď\":\"D\",\"ď\":\"d\",\"Đ\":\"DJ\",\"đ\":\"dj\",\"Ē\":\"E\",\"ē\":\"e\",\"Ė\":\"E\",\"ė\":\"e\",\"Ę\":\"e\",\"ę\":\"e\",\"Ě\":\"E\",\"ě\":\"e\",\"Ğ\":\"G\",\"ğ\":\"g\",\"Ģ\":\"G\",\"ģ\":\"g\",\"Ĩ\":\"I\",\"ĩ\":\"i\",\"Ī\":\"i\",\"ī\":\"i\",\"Į\":\"I\",\"į\":\"i\",\"İ\":\"I\",\"ı\":\"i\",\"Ķ\":\"k\",\"ķ\":\"k\",\"Ļ\":\"L\",\"ļ\":\"l\",\"Ľ\":\"L\",\"ľ\":\"l\",\"Ł\":\"L\",\"ł\":\"l\",\"Ń\":\"N\",\"ń\":\"n\",\"Ņ\":\"N\",\"ņ\":\"n\",\"Ň\":\"N\",\"ň\":\"n\",\"Ō\":\"O\",\"ō\":\"o\",\"Ő\":\"O\",\"ő\":\"o\",\"Œ\":\"OE\",\"œ\":\"oe\",\"Ŕ\":\"R\",\"ŕ\":\"r\",\"Ř\":\"R\",\"ř\":\"r\",\"Ś\":\"S\",\"ś\":\"s\",\"Ş\":\"S\",\"ş\":\"s\",\"Š\":\"S\",\"š\":\"s\",\"Ţ\":\"T\",\"ţ\":\"t\",\"Ť\":\"T\",\"ť\":\"t\",\"Ũ\":\"U\",\"ũ\":\"u\",\"Ū\":\"u\",\"ū\":\"u\",\"Ů\":\"U\",\"ů\":\"u\",\"Ű\":\"U\",\"ű\":\"u\",\"Ų\":\"U\",\"ų\":\"u\",\"Ŵ\":\"W\",\"ŵ\":\"w\",\"Ŷ\":\"Y\",\"ŷ\":\"y\",\"Ÿ\":\"Y\",\"Ź\":\"Z\",\"ź\":\"z\",\"Ż\":\"Z\",\"ż\":\"z\",\"Ž\":\"Z\",\"ž\":\"z\",\"Ə\":\"E\",\"ƒ\":\"f\",\"Ơ\":\"O\",\"ơ\":\"o\",\"Ư\":\"U\",\"ư\":\"u\",\"Lj\":\"LJ\",\"lj\":\"lj\",\"Nj\":\"NJ\",\"nj\":\"nj\",\"Ș\":\"S\",\"ș\":\"s\",\"Ț\":\"T\",\"ț\":\"t\",\"ə\":\"e\",\"˚\":\"o\",\"Ά\":\"A\",\"Έ\":\"E\",\"Ή\":\"H\",\"Ί\":\"I\",\"Ό\":\"O\",\"Ύ\":\"Y\",\"Ώ\":\"W\",\"ΐ\":\"i\",\"Α\":\"A\",\"Β\":\"B\",\"Γ\":\"G\",\"Δ\":\"D\",\"Ε\":\"E\",\"Ζ\":\"Z\",\"Η\":\"H\",\"Θ\":\"8\",\"Ι\":\"I\",\"Κ\":\"K\",\"Λ\":\"L\",\"Μ\":\"M\",\"Ν\":\"N\",\"Ξ\":\"3\",\"Ο\":\"O\",\"Π\":\"P\",\"Ρ\":\"R\",\"Σ\":\"S\",\"Τ\":\"T\",\"Υ\":\"Y\",\"Φ\":\"F\",\"Χ\":\"X\",\"Ψ\":\"PS\",\"Ω\":\"W\",\"Ϊ\":\"I\",\"Ϋ\":\"Y\",\"ά\":\"a\",\"έ\":\"e\",\"ή\":\"h\",\"ί\":\"i\",\"ΰ\":\"y\",\"α\":\"a\",\"β\":\"b\",\"γ\":\"g\",\"δ\":\"d\",\"ε\":\"e\",\"ζ\":\"z\",\"η\":\"h\",\"θ\":\"8\",\"ι\":\"i\",\"κ\":\"k\",\"λ\":\"l\",\"μ\":\"m\",\"ν\":\"n\",\"ξ\":\"3\",\"ο\":\"o\",\"π\":\"p\",\"ρ\":\"r\",\"ς\":\"s\",\"σ\":\"s\",\"τ\":\"t\",\"υ\":\"y\",\"φ\":\"f\",\"χ\":\"x\",\"ψ\":\"ps\",\"ω\":\"w\",\"ϊ\":\"i\",\"ϋ\":\"y\",\"ό\":\"o\",\"ύ\":\"y\",\"ώ\":\"w\",\"Ё\":\"Yo\",\"Ђ\":\"DJ\",\"Є\":\"Ye\",\"І\":\"I\",\"Ї\":\"Yi\",\"Ј\":\"J\",\"Љ\":\"LJ\",\"Њ\":\"NJ\",\"Ћ\":\"C\",\"Џ\":\"DZ\",\"А\":\"A\",\"Б\":\"B\",\"В\":\"V\",\"Г\":\"G\",\"Д\":\"D\",\"Е\":\"E\",\"Ж\":\"Zh\",\"З\":\"Z\",\"И\":\"I\",\"Й\":\"J\",\"К\":\"K\",\"Л\":\"L\",\"М\":\"M\",\"Н\":\"N\",\"О\":\"O\",\"П\":\"P\",\"Р\":\"R\",\"С\":\"S\",\"Т\":\"T\",\"У\":\"U\",\"Ф\":\"F\",\"Х\":\"H\",\"Ц\":\"C\",\"Ч\":\"Ch\",\"Ш\":\"Sh\",\"Щ\":\"Sh\",\"Ъ\":\"U\",\"Ы\":\"Y\",\"Ь\":\"\",\"Э\":\"E\",\"Ю\":\"Yu\",\"Я\":\"Ya\",\"а\":\"a\",\"б\":\"b\",\"в\":\"v\",\"г\":\"g\",\"д\":\"d\",\"е\":\"e\",\"ж\":\"zh\",\"з\":\"z\",\"и\":\"i\",\"й\":\"j\",\"к\":\"k\",\"л\":\"l\",\"м\":\"m\",\"н\":\"n\",\"о\":\"o\",\"п\":\"p\",\"р\":\"r\",\"с\":\"s\",\"т\":\"t\",\"у\":\"u\",\"ф\":\"f\",\"х\":\"h\",\"ц\":\"c\",\"ч\":\"ch\",\"ш\":\"sh\",\"щ\":\"sh\",\"ъ\":\"u\",\"ы\":\"y\",\"ь\":\"\",\"э\":\"e\",\"ю\":\"yu\",\"я\":\"ya\",\"ё\":\"yo\",\"ђ\":\"dj\",\"є\":\"ye\",\"і\":\"i\",\"ї\":\"yi\",\"ј\":\"j\",\"љ\":\"lj\",\"њ\":\"nj\",\"ћ\":\"c\",\"ѝ\":\"u\",\"џ\":\"dz\",\"Ґ\":\"G\",\"ґ\":\"g\",\"Ғ\":\"GH\",\"ғ\":\"gh\",\"Қ\":\"KH\",\"қ\":\"kh\",\"Ң\":\"NG\",\"ң\":\"ng\",\"Ү\":\"UE\",\"ү\":\"ue\",\"Ұ\":\"U\",\"ұ\":\"u\",\"Һ\":\"H\",\"һ\":\"h\",\"Ә\":\"AE\",\"ә\":\"ae\",\"Ө\":\"OE\",\"ө\":\"oe\",\"Ա\":\"A\",\"Բ\":\"B\",\"Գ\":\"G\",\"Դ\":\"D\",\"Ե\":\"E\",\"Զ\":\"Z\",\"Է\":\"E\\'\",\"Ը\":\"Y\\'\",\"Թ\":\"T\\'\",\"Ժ\":\"JH\",\"Ի\":\"I\",\"Լ\":\"L\",\"Խ\":\"X\",\"Ծ\":\"C\\'\",\"Կ\":\"K\",\"Հ\":\"H\",\"Ձ\":\"D\\'\",\"Ղ\":\"GH\",\"Ճ\":\"TW\",\"Մ\":\"M\",\"Յ\":\"Y\",\"Ն\":\"N\",\"Շ\":\"SH\",\"Չ\":\"CH\",\"Պ\":\"P\",\"Ջ\":\"J\",\"Ռ\":\"R\\'\",\"Ս\":\"S\",\"Վ\":\"V\",\"Տ\":\"T\",\"Ր\":\"R\",\"Ց\":\"C\",\"Փ\":\"P\\'\",\"Ք\":\"Q\\'\",\"Օ\":\"O\\'\\'\",\"Ֆ\":\"F\",\"և\":\"EV\",\"ء\":\"a\",\"آ\":\"aa\",\"أ\":\"a\",\"ؤ\":\"u\",\"إ\":\"i\",\"ئ\":\"e\",\"ا\":\"a\",\"ب\":\"b\",\"ة\":\"h\",\"ت\":\"t\",\"ث\":\"th\",\"ج\":\"j\",\"ح\":\"h\",\"خ\":\"kh\",\"د\":\"d\",\"ذ\":\"th\",\"ر\":\"r\",\"ز\":\"z\",\"س\":\"s\",\"ش\":\"sh\",\"ص\":\"s\",\"ض\":\"dh\",\"ط\":\"t\",\"ظ\":\"z\",\"ع\":\"a\",\"غ\":\"gh\",\"ف\":\"f\",\"ق\":\"q\",\"ك\":\"k\",\"ل\":\"l\",\"م\":\"m\",\"ن\":\"n\",\"ه\":\"h\",\"و\":\"w\",\"ى\":\"a\",\"ي\":\"y\",\"ً\":\"an\",\"ٌ\":\"on\",\"ٍ\":\"en\",\"َ\":\"a\",\"ُ\":\"u\",\"ِ\":\"e\",\"ْ\":\"\",\"٠\":\"0\",\"١\":\"1\",\"٢\":\"2\",\"٣\":\"3\",\"٤\":\"4\",\"٥\":\"5\",\"٦\":\"6\",\"٧\":\"7\",\"٨\":\"8\",\"٩\":\"9\",\"پ\":\"p\",\"چ\":\"ch\",\"ژ\":\"zh\",\"ک\":\"k\",\"گ\":\"g\",\"ی\":\"y\",\"۰\":\"0\",\"۱\":\"1\",\"۲\":\"2\",\"۳\":\"3\",\"۴\":\"4\",\"۵\":\"5\",\"۶\":\"6\",\"۷\":\"7\",\"۸\":\"8\",\"۹\":\"9\",\"฿\":\"baht\",\"ა\":\"a\",\"ბ\":\"b\",\"გ\":\"g\",\"დ\":\"d\",\"ე\":\"e\",\"ვ\":\"v\",\"ზ\":\"z\",\"თ\":\"t\",\"ი\":\"i\",\"კ\":\"k\",\"ლ\":\"l\",\"მ\":\"m\",\"ნ\":\"n\",\"ო\":\"o\",\"პ\":\"p\",\"ჟ\":\"zh\",\"რ\":\"r\",\"ს\":\"s\",\"ტ\":\"t\",\"უ\":\"u\",\"ფ\":\"f\",\"ქ\":\"k\",\"ღ\":\"gh\",\"ყ\":\"q\",\"შ\":\"sh\",\"ჩ\":\"ch\",\"ც\":\"ts\",\"ძ\":\"dz\",\"წ\":\"ts\",\"ჭ\":\"ch\",\"ხ\":\"kh\",\"ჯ\":\"j\",\"ჰ\":\"h\",\"Ṣ\":\"S\",\"ṣ\":\"s\",\"Ẁ\":\"W\",\"ẁ\":\"w\",\"Ẃ\":\"W\",\"ẃ\":\"w\",\"Ẅ\":\"W\",\"ẅ\":\"w\",\"ẞ\":\"SS\",\"Ạ\":\"A\",\"ạ\":\"a\",\"Ả\":\"A\",\"ả\":\"a\",\"Ấ\":\"A\",\"ấ\":\"a\",\"Ầ\":\"A\",\"ầ\":\"a\",\"Ẩ\":\"A\",\"ẩ\":\"a\",\"Ẫ\":\"A\",\"ẫ\":\"a\",\"Ậ\":\"A\",\"ậ\":\"a\",\"Ắ\":\"A\",\"ắ\":\"a\",\"Ằ\":\"A\",\"ằ\":\"a\",\"Ẳ\":\"A\",\"ẳ\":\"a\",\"Ẵ\":\"A\",\"ẵ\":\"a\",\"Ặ\":\"A\",\"ặ\":\"a\",\"Ẹ\":\"E\",\"ẹ\":\"e\",\"Ẻ\":\"E\",\"ẻ\":\"e\",\"Ẽ\":\"E\",\"ẽ\":\"e\",\"Ế\":\"E\",\"ế\":\"e\",\"Ề\":\"E\",\"ề\":\"e\",\"Ể\":\"E\",\"ể\":\"e\",\"Ễ\":\"E\",\"ễ\":\"e\",\"Ệ\":\"E\",\"ệ\":\"e\",\"Ỉ\":\"I\",\"ỉ\":\"i\",\"Ị\":\"I\",\"ị\":\"i\",\"Ọ\":\"O\",\"ọ\":\"o\",\"Ỏ\":\"O\",\"ỏ\":\"o\",\"Ố\":\"O\",\"ố\":\"o\",\"Ồ\":\"O\",\"ồ\":\"o\",\"Ổ\":\"O\",\"ổ\":\"o\",\"Ỗ\":\"O\",\"ỗ\":\"o\",\"Ộ\":\"O\",\"ộ\":\"o\",\"Ớ\":\"O\",\"ớ\":\"o\",\"Ờ\":\"O\",\"ờ\":\"o\",\"Ở\":\"O\",\"ở\":\"o\",\"Ỡ\":\"O\",\"ỡ\":\"o\",\"Ợ\":\"O\",\"ợ\":\"o\",\"Ụ\":\"U\",\"ụ\":\"u\",\"Ủ\":\"U\",\"ủ\":\"u\",\"Ứ\":\"U\",\"ứ\":\"u\",\"Ừ\":\"U\",\"ừ\":\"u\",\"Ử\":\"U\",\"ử\":\"u\",\"Ữ\":\"U\",\"ữ\":\"u\",\"Ự\":\"U\",\"ự\":\"u\",\"Ỳ\":\"Y\",\"ỳ\":\"y\",\"Ỵ\":\"Y\",\"ỵ\":\"y\",\"Ỷ\":\"Y\",\"ỷ\":\"y\",\"Ỹ\":\"Y\",\"ỹ\":\"y\",\"–\":\"-\",\"‘\":\"\\'\",\"’\":\"\\'\",\"“\":\"\\\\\\\"\",\"”\":\"\\\\\\\"\",\"„\":\"\\\\\\\"\",\"†\":\"+\",\"•\":\"*\",\"…\":\"...\",\"₠\":\"ecu\",\"₢\":\"cruzeiro\",\"₣\":\"french franc\",\"₤\":\"lira\",\"₥\":\"mill\",\"₦\":\"naira\",\"₧\":\"peseta\",\"₨\":\"rupee\",\"₩\":\"won\",\"₪\":\"new shequel\",\"₫\":\"dong\",\"€\":\"euro\",\"₭\":\"kip\",\"₮\":\"tugrik\",\"₯\":\"drachma\",\"₰\":\"penny\",\"₱\":\"peso\",\"₲\":\"guarani\",\"₳\":\"austral\",\"₴\":\"hryvnia\",\"₵\":\"cedi\",\"₸\":\"kazakhstani tenge\",\"₹\":\"indian rupee\",\"₺\":\"turkish lira\",\"₽\":\"russian ruble\",\"₿\":\"bitcoin\",\"℠\":\"sm\",\"™\":\"tm\",\"∂\":\"d\",\"∆\":\"delta\",\"∑\":\"sum\",\"∞\":\"infinity\",\"♥\":\"love\",\"元\":\"yuan\",\"円\":\"yen\",\"﷼\":\"rial\",\"ﻵ\":\"laa\",\"ﻷ\":\"laa\",\"ﻹ\":\"lai\",\"ﻻ\":\"la\"}')\n var locales = JSON.parse('{\"bg\":{\"Й\":\"Y\",\"Ц\":\"Ts\",\"Щ\":\"Sht\",\"Ъ\":\"A\",\"Ь\":\"Y\",\"й\":\"y\",\"ц\":\"ts\",\"щ\":\"sht\",\"ъ\":\"a\",\"ь\":\"y\"},\"de\":{\"Ä\":\"AE\",\"ä\":\"ae\",\"Ö\":\"OE\",\"ö\":\"oe\",\"Ü\":\"UE\",\"ü\":\"ue\",\"ß\":\"ss\",\"%\":\"prozent\",\"&\":\"und\",\"|\":\"oder\",\"∑\":\"summe\",\"∞\":\"unendlich\",\"♥\":\"liebe\"},\"es\":{\"%\":\"por ciento\",\"&\":\"y\",\"<\":\"menor que\",\">\":\"mayor que\",\"|\":\"o\",\"¢\":\"centavos\",\"£\":\"libras\",\"¤\":\"moneda\",\"₣\":\"francos\",\"∑\":\"suma\",\"∞\":\"infinito\",\"♥\":\"amor\"},\"fr\":{\"%\":\"pourcent\",\"&\":\"et\",\"<\":\"plus petit\",\">\":\"plus grand\",\"|\":\"ou\",\"¢\":\"centime\",\"£\":\"livre\",\"¤\":\"devise\",\"₣\":\"franc\",\"∑\":\"somme\",\"∞\":\"infini\",\"♥\":\"amour\"},\"pt\":{\"%\":\"porcento\",\"&\":\"e\",\"<\":\"menor\",\">\":\"maior\",\"|\":\"ou\",\"¢\":\"centavo\",\"∑\":\"soma\",\"£\":\"libra\",\"∞\":\"infinito\",\"♥\":\"amor\"},\"uk\":{\"И\":\"Y\",\"и\":\"y\",\"Й\":\"Y\",\"й\":\"y\",\"Ц\":\"Ts\",\"ц\":\"ts\",\"Х\":\"Kh\",\"х\":\"kh\",\"Щ\":\"Shch\",\"щ\":\"shch\",\"Г\":\"H\",\"г\":\"h\"},\"vi\":{\"Đ\":\"D\",\"đ\":\"d\"},\"da\":{\"Ø\":\"OE\",\"ø\":\"oe\",\"Å\":\"AA\",\"å\":\"aa\",\"%\":\"procent\",\"&\":\"og\",\"|\":\"eller\",\"$\":\"dollar\",\"<\":\"mindre end\",\">\":\"større end\"},\"nb\":{\"&\":\"og\",\"Å\":\"AA\",\"Æ\":\"AE\",\"Ø\":\"OE\",\"å\":\"aa\",\"æ\":\"ae\",\"ø\":\"oe\"},\"it\":{\"&\":\"e\"},\"nl\":{\"&\":\"en\"},\"sv\":{\"&\":\"och\",\"Å\":\"AA\",\"Ä\":\"AE\",\"Ö\":\"OE\",\"å\":\"aa\",\"ä\":\"ae\",\"ö\":\"oe\"}}')\n\n function replace (string, options) {\n if (typeof string !== 'string') {\n throw new Error('slugify: string argument expected')\n }\n\n options = (typeof options === 'string')\n ? {replacement: options}\n : options || {}\n\n var locale = locales[options.locale] || {}\n\n var replacement = options.replacement === undefined ? '-' : options.replacement\n\n var trim = options.trim === undefined ? true : options.trim\n\n var slug = string.normalize().split('')\n // replace characters based on charMap\n .reduce(function (result, ch) {\n var appendChar = locale[ch];\n if (appendChar === undefined) appendChar = charMap[ch];\n if (appendChar === undefined) appendChar = ch;\n if (appendChar === replacement) appendChar = ' ';\n return result + appendChar\n // remove not allowed characters\n .replace(options.remove || /[^\\w\\s$*_+~.()'\"!\\-:@]+/g, '')\n }, '');\n\n if (options.strict) {\n slug = slug.replace(/[^A-Za-z0-9\\s]/g, '');\n }\n\n if (trim) {\n slug = slug.trim()\n }\n\n // Replace spaces with replacement character, treating multiple consecutive\n // spaces as a single space.\n slug = slug.replace(/\\s+/g, replacement);\n\n if (options.lower) {\n slug = slug.toLowerCase()\n }\n\n return slug\n }\n\n replace.extend = function (customMap) {\n Object.assign(charMap, customMap)\n }\n\n return replace\n}))\n","/**\r\n * Core — Shared utilities, constants, and internal helpers\r\n *\r\n * Ported from maxsim/bin/lib/core.cjs\r\n */\r\n\r\nimport fs from 'node:fs';\r\nimport path from 'node:path';\r\nimport os from 'node:os';\r\nimport { simpleGit } from 'simple-git';\r\nimport slugify from 'slugify';\r\n\r\nimport type {\r\n BranchingStrategy,\r\n ModelProfiles,\r\n ModelProfileName,\r\n ModelResolution,\r\n AgentType,\r\n PhaseSearchResult,\r\n RoadmapPhaseInfo,\r\n ArchivedPhaseDir,\r\n GitResult,\r\n MilestoneInfo,\r\n AppConfig,\r\n} from './types.js';\r\n\r\n// ─── Model Profile Table ─────────────────────────────────────────────────────\r\n\r\nexport const MODEL_PROFILES: ModelProfiles = {\r\n 'maxsim-planner': { quality: 'opus', balanced: 'opus', budget: 'sonnet', tokenburner: 'opus' },\r\n 'maxsim-roadmapper': { quality: 'opus', balanced: 'sonnet', budget: 'sonnet', tokenburner: 'opus' },\r\n 'maxsim-executor': { quality: 'opus', balanced: 'sonnet', budget: 'sonnet', tokenburner: 'opus' },\r\n 'maxsim-phase-researcher': { quality: 'opus', balanced: 'sonnet', budget: 'haiku', tokenburner: 'opus' },\r\n 'maxsim-project-researcher': { quality: 'opus', balanced: 'sonnet', budget: 'haiku', tokenburner: 'opus' },\r\n 'maxsim-research-synthesizer': { quality: 'sonnet', balanced: 'sonnet', budget: 'haiku', tokenburner: 'opus' },\r\n 'maxsim-debugger': { quality: 'opus', balanced: 'sonnet', budget: 'sonnet', tokenburner: 'opus' },\r\n 'maxsim-codebase-mapper': { quality: 'sonnet', balanced: 'haiku', budget: 'haiku', tokenburner: 'opus' },\r\n 'maxsim-verifier': { quality: 'sonnet', balanced: 'sonnet', budget: 'haiku', tokenburner: 'opus' },\r\n 'maxsim-plan-checker': { quality: 'sonnet', balanced: 'sonnet', budget: 'haiku', tokenburner: 'opus' },\r\n 'maxsim-integration-checker': { quality: 'sonnet', balanced: 'sonnet', budget: 'haiku', tokenburner: 'opus' },\r\n};\r\n\r\n// ─── Output helpers ──────────────────────────────────────────────────────────\r\n// These throw CliOutput / CliError instead of calling process.exit() directly.\r\n// The CLI entry point (cli.ts) catches these and calls process.exit() there.\r\n\r\n/** Thrown by output() to signal successful command completion. */\r\nexport class CliOutput {\r\n readonly result: unknown;\r\n readonly raw: boolean;\r\n readonly rawValue: unknown;\r\n constructor(result: unknown, raw?: boolean, rawValue?: unknown) {\r\n this.result = result;\r\n this.raw = raw ?? false;\r\n this.rawValue = rawValue;\r\n }\r\n}\r\n\r\n/** Thrown by error() to signal a command error. */\r\nexport class CliError {\r\n readonly message: string;\r\n constructor(message: string) {\r\n this.message = message;\r\n }\r\n}\r\n\r\nexport function output(result: unknown, raw?: boolean, rawValue?: unknown): never {\r\n throw new CliOutput(result, raw, rawValue);\r\n}\r\n\r\nexport function error(message: string): never {\r\n throw new CliError(message);\r\n}\r\n\r\n/** Re-throw CliOutput/CliError signals so catch blocks don't intercept them */\r\nexport function rethrowCliSignals(e: unknown): void {\r\n if (e instanceof CliOutput || e instanceof CliError) throw e;\r\n}\r\n\r\n/**\r\n * Handle a CliOutput by writing to stdout. Extracted so cli.ts can use it.\r\n */\r\nexport function writeOutput(out: CliOutput): void {\r\n if (out.raw && out.rawValue !== undefined) {\r\n process.stdout.write(String(out.rawValue));\r\n } else {\r\n const json = JSON.stringify(out.result, null, 2);\r\n if (json.length > 50000) {\r\n const tmpPath = path.join(os.tmpdir(), `maxsim-${Date.now()}.json`);\r\n fs.writeFileSync(tmpPath, json, 'utf-8');\r\n process.stdout.write('@file:' + tmpPath);\r\n } else {\r\n process.stdout.write(json);\r\n }\r\n }\r\n}\r\n\r\n// ─── Shared micro-utilities ─────────────────────────────────────────────────\r\n\r\n/** Today's date as YYYY-MM-DD. */\r\nexport function todayISO(): string {\r\n return new Date().toISOString().split('T')[0];\r\n}\r\n\r\n/** Canonical .planning/ sub-paths. */\r\nexport function planningPath(cwd: string, ...segments: string[]): string {\r\n return path.join(cwd, '.planning', ...segments);\r\n}\r\nexport function statePath(cwd: string): string { return planningPath(cwd, 'STATE.md'); }\r\nexport function roadmapPath(cwd: string): string { return planningPath(cwd, 'ROADMAP.md'); }\r\nexport function configPath(cwd: string): string { return planningPath(cwd, 'config.json'); }\r\nexport function phasesPath(cwd: string): string { return planningPath(cwd, 'phases'); }\r\n\r\n/** Phase-file predicates. */\r\nexport const isPlanFile = (f: string): boolean => f.endsWith('-PLAN.md') || f === 'PLAN.md';\r\nexport const isSummaryFile = (f: string): boolean => f.endsWith('-SUMMARY.md') || f === 'SUMMARY.md';\r\n\r\n/** Strip suffix to get plan/summary ID. */\r\nexport const planId = (f: string): string => f.replace('-PLAN.md', '').replace('PLAN.md', '');\r\nexport const summaryId = (f: string): string => f.replace('-SUMMARY.md', '').replace('SUMMARY.md', '');\r\n\r\n/** List subdirectory names, optionally sorted by phase number. */\r\nexport function listSubDirs(dir: string, sortByPhase = false): string[] {\r\n const dirs = fs.readdirSync(dir, { withFileTypes: true })\r\n .filter(e => e.isDirectory())\r\n .map(e => e.name);\r\n return sortByPhase ? dirs.sort((a, b) => comparePhaseNum(a, b)) : dirs;\r\n}\r\n\r\n/** Log only when MAXSIM_DEBUG is set. */\r\nexport function debugLog(e: unknown): void {\r\n if (process.env.MAXSIM_DEBUG) console.error(e);\r\n}\r\n\r\n/** Escape a phase number for use in regex. */\r\nexport function escapePhaseNum(phase: string | number): string {\r\n return String(phase).replace(/\\./g, '\\\\.');\r\n}\r\n\r\n// ─── File & Config utilities ─────────────────────────────────────────────────\r\n\r\nexport function safeReadFile(filePath: string): string | null {\r\n try {\r\n return fs.readFileSync(filePath, 'utf-8');\r\n } catch {\r\n return null;\r\n }\r\n}\r\n\r\nlet _configCache: { cwd: string; config: AppConfig } | null = null;\r\n\r\nexport function loadConfig(cwd: string): AppConfig {\r\n if (_configCache && _configCache.cwd === cwd) return _configCache.config;\r\n const cfgPath = configPath(cwd);\r\n const defaults: AppConfig = {\r\n model_profile: 'balanced',\r\n commit_docs: true,\r\n search_gitignored: false,\r\n branching_strategy: 'none',\r\n phase_branch_template: 'maxsim/phase-{phase}-{slug}',\r\n milestone_branch_template: 'maxsim/{milestone}-{slug}',\r\n research: true,\r\n plan_checker: true,\r\n verifier: true,\r\n parallelization: true,\r\n brave_search: false,\r\n };\r\n\r\n try {\r\n const raw = fs.readFileSync(cfgPath, 'utf-8');\r\n const parsed: Record = JSON.parse(raw) as Record;\r\n\r\n const get = (key: string, nested?: { section: string; field: string }): unknown => {\r\n if (parsed[key] !== undefined) return parsed[key];\r\n if (nested) {\r\n const section = parsed[nested.section];\r\n if (section && typeof section === 'object' && section !== null && nested.field in section) {\r\n return (section as Record)[nested.field];\r\n }\r\n }\r\n return undefined;\r\n };\r\n\r\n const parallelization = ((): boolean => {\r\n const val = get('parallelization');\r\n if (typeof val === 'boolean') return val;\r\n if (typeof val === 'object' && val !== null && 'enabled' in val) {\r\n return (val as { enabled: boolean }).enabled;\r\n }\r\n return defaults.parallelization;\r\n })();\r\n\r\n const result: AppConfig = {\r\n model_profile: (get('model_profile') as ModelProfileName | undefined) ?? defaults.model_profile,\r\n commit_docs: (get('commit_docs', { section: 'planning', field: 'commit_docs' }) as boolean | undefined) ?? defaults.commit_docs,\r\n search_gitignored: (get('search_gitignored', { section: 'planning', field: 'search_gitignored' }) as boolean | undefined) ?? defaults.search_gitignored,\r\n branching_strategy: (get('branching_strategy', { section: 'git', field: 'branching_strategy' }) as BranchingStrategy | undefined) ?? defaults.branching_strategy,\r\n phase_branch_template: (get('phase_branch_template', { section: 'git', field: 'phase_branch_template' }) as string | undefined) ?? defaults.phase_branch_template,\r\n milestone_branch_template: (get('milestone_branch_template', { section: 'git', field: 'milestone_branch_template' }) as string | undefined) ?? defaults.milestone_branch_template,\r\n research: (get('research', { section: 'workflow', field: 'research' }) as boolean | undefined) ?? defaults.research,\r\n plan_checker: ((get('plan_checker', { section: 'workflow', field: 'plan_checker' }) ?? get('plan_checker', { section: 'workflow', field: 'plan_check' })) as boolean | undefined) ?? defaults.plan_checker,\r\n verifier: (get('verifier', { section: 'workflow', field: 'verifier' }) as boolean | undefined) ?? defaults.verifier,\r\n parallelization,\r\n brave_search: (get('brave_search') as boolean | undefined) ?? defaults.brave_search,\r\n model_overrides: parsed['model_overrides'] as AppConfig['model_overrides'],\r\n };\r\n _configCache = { cwd, config: result };\r\n return result;\r\n } catch {\r\n _configCache = { cwd, config: defaults };\r\n return defaults;\r\n }\r\n}\r\n\r\n// ─── Git utilities ───────────────────────────────────────────────────────────\r\n\r\nexport async function isGitIgnored(cwd: string, targetPath: string): Promise {\r\n try {\r\n const git = simpleGit(cwd);\r\n const result = await git.checkIgnore(targetPath);\r\n return result.length > 0;\r\n } catch {\r\n return false;\r\n }\r\n}\r\n\r\nexport async function execGit(cwd: string, args: string[]): Promise {\r\n try {\r\n const git = simpleGit(cwd);\r\n const stdout = await git.raw(args);\r\n return { exitCode: 0, stdout: (stdout ?? '').trim(), stderr: '' };\r\n } catch (thrown: unknown) {\r\n const err = thrown as { message?: string };\r\n // simple-git throws on non-zero exit — extract what we can\r\n const message = err.message ?? '';\r\n return {\r\n exitCode: 1,\r\n stdout: '',\r\n stderr: message,\r\n };\r\n }\r\n}\r\n\r\n// ─── Phase utilities ─────────────────────────────────────────────────────────\r\n\r\nexport function normalizePhaseName(phase: string): string {\r\n const match = phase.match(/^(\\d+)([A-Z])?(\\.\\d+)?/i);\r\n if (!match) return phase;\r\n const padded = match[1].padStart(2, '0');\r\n const letter = match[2] ? match[2].toUpperCase() : '';\r\n const decimal = match[3] || '';\r\n return padded + letter + decimal;\r\n}\r\n\r\nexport function comparePhaseNum(a: string | number, b: string | number): number {\r\n const pa = String(a).match(/^(\\d+)([A-Z])?(\\.\\d+)?/i);\r\n const pb = String(b).match(/^(\\d+)([A-Z])?(\\.\\d+)?/i);\r\n if (!pa || !pb) return String(a).localeCompare(String(b));\r\n const intDiff = parseInt(pa[1], 10) - parseInt(pb[1], 10);\r\n if (intDiff !== 0) return intDiff;\r\n const la = (pa[2] || '').toUpperCase();\r\n const lb = (pb[2] || '').toUpperCase();\r\n if (la !== lb) {\r\n if (!la) return -1;\r\n if (!lb) return 1;\r\n return la < lb ? -1 : 1;\r\n }\r\n const da = pa[3] ? parseFloat(pa[3]) : -1;\r\n const db = pb[3] ? parseFloat(pb[3]) : -1;\r\n return da - db;\r\n}\r\n\r\n// ─── Phase regex helper ──────────────────────────────────────────────────────\r\n\r\n/**\r\n * Returns the canonical regex for matching Phase heading lines in ROADMAP.md.\r\n *\r\n * General form (no escapedPhaseNum):\r\n * Matches: ## Phase 03: Name Here\r\n * Group 1: phase number string (e.g. \"03\", \"3A\", \"2.1\")\r\n * Group 2: phase name string (e.g. \"Name Here\")\r\n *\r\n * Specific form (with escapedPhaseNum):\r\n * Matches: ## Phase 03: Name Here\r\n * Group 1: phase name string only\r\n *\r\n * @param escapedPhaseNum - regex-escaped phase number string to match a specific phase\r\n * @param flags - regex flags (default: 'gi')\r\n */\r\nexport function getPhasePattern(escapedPhaseNum?: string, flags = 'gim'): RegExp {\r\n if (escapedPhaseNum) {\r\n return new RegExp(\r\n `^#{2,4}\\\\s*Phase\\\\s+${escapedPhaseNum}:\\\\s*([^\\\\n]+)`,\r\n flags,\r\n );\r\n }\r\n return new RegExp(\r\n `^#{2,4}\\\\s*Phase\\\\s+(\\\\d+[A-Z]?(?:\\\\.\\\\d+)?)\\\\s*:\\\\s*([^\\\\n]+)`,\r\n flags,\r\n );\r\n}\r\n\r\nfunction searchPhaseInDir(baseDir: string, relBase: string, normalized: string): PhaseSearchResult | null {\r\n try {\r\n const dirs = listSubDirs(baseDir, true);\r\n const match = dirs.find(d => d.startsWith(normalized));\r\n if (!match) return null;\r\n\r\n const dirMatch = match.match(/^(\\d+[A-Z]?(?:\\.\\d+)?)-?(.*)/i);\r\n const phaseNumber = dirMatch ? dirMatch[1] : normalized;\r\n const phaseName = dirMatch && dirMatch[2] ? dirMatch[2] : null;\r\n const phaseDir = path.join(baseDir, match);\r\n const phaseFiles = fs.readdirSync(phaseDir);\r\n\r\n const plans = phaseFiles.filter(isPlanFile).sort();\r\n const summaries = phaseFiles.filter(isSummaryFile).sort();\r\n const hasResearch = phaseFiles.some(f => f.endsWith('-RESEARCH.md') || f === 'RESEARCH.md');\r\n const hasContext = phaseFiles.some(f => f.endsWith('-CONTEXT.md') || f === 'CONTEXT.md');\r\n const hasVerification = phaseFiles.some(f => f.endsWith('-VERIFICATION.md') || f === 'VERIFICATION.md');\r\n\r\n const completedPlanIds = new Set(summaries.map(summaryId));\r\n const incompletePlans = plans.filter(p => !completedPlanIds.has(planId(p)));\r\n\r\n return {\r\n found: true,\r\n directory: path.join(relBase, match),\r\n phase_number: phaseNumber,\r\n phase_name: phaseName,\r\n phase_slug: phaseName ? phaseName.toLowerCase().replace(/[^a-z0-9]+/g, '-').replace(/^-+|-+$/g, '') : null,\r\n plans,\r\n summaries,\r\n incomplete_plans: incompletePlans,\r\n has_research: hasResearch,\r\n has_context: hasContext,\r\n has_verification: hasVerification,\r\n };\r\n } catch {\r\n return null;\r\n }\r\n}\r\n\r\nexport function findPhaseInternal(cwd: string, phase: string): PhaseSearchResult | null {\r\n if (!phase) return null;\r\n\r\n const pd = phasesPath(cwd);\r\n const normalized = normalizePhaseName(phase);\r\n\r\n const current = searchPhaseInDir(pd, path.join('.planning', 'phases'), normalized);\r\n if (current) return current;\r\n\r\n const milestonesDir = planningPath(cwd, 'milestones');\r\n\r\n try {\r\n fs.statSync(milestonesDir);\r\n } catch {\r\n return null;\r\n }\r\n\r\n try {\r\n const milestoneEntries = fs.readdirSync(milestonesDir, { withFileTypes: true });\r\n const archiveDirs = milestoneEntries\r\n .filter(e => e.isDirectory() && /^v[\\d.]+-phases$/.test(e.name))\r\n .map(e => e.name)\r\n .sort()\r\n .reverse();\r\n\r\n for (const archiveName of archiveDirs) {\r\n const versionMatch = archiveName.match(/^(v[\\d.]+)-phases$/);\r\n if (!versionMatch) continue;\r\n const version = versionMatch[1];\r\n const archivePath = path.join(milestonesDir, archiveName);\r\n const relBase = path.join('.planning', 'milestones', archiveName);\r\n const result = searchPhaseInDir(archivePath, relBase, normalized);\r\n if (result) {\r\n result.archived = version;\r\n return result;\r\n }\r\n }\r\n } catch (e) {\r\n debugLog(e);\r\n }\r\n\r\n return null;\r\n}\r\n\r\nexport function getArchivedPhaseDirs(cwd: string): ArchivedPhaseDir[] {\r\n const milestonesDir = planningPath(cwd, 'milestones');\r\n const results: ArchivedPhaseDir[] = [];\r\n\r\n try {\r\n const milestoneEntries = fs.readdirSync(milestonesDir, { withFileTypes: true });\r\n const phaseDirs = milestoneEntries\r\n .filter(e => e.isDirectory() && /^v[\\d.]+-phases$/.test(e.name))\r\n .map(e => e.name)\r\n .sort()\r\n .reverse();\r\n\r\n for (const archiveName of phaseDirs) {\r\n const versionMatch = archiveName.match(/^(v[\\d.]+)-phases$/);\r\n if (!versionMatch) continue;\r\n const version = versionMatch[1];\r\n const archivePath = path.join(milestonesDir, archiveName);\r\n const dirs = listSubDirs(archivePath, true);\r\n\r\n for (const dir of dirs) {\r\n results.push({\r\n name: dir,\r\n milestone: version,\r\n basePath: path.join('.planning', 'milestones', archiveName),\r\n fullPath: path.join(archivePath, dir),\r\n });\r\n }\r\n }\r\n } catch (e) {\r\n debugLog(e);\r\n }\r\n\r\n return results;\r\n}\r\n\r\n// ─── Roadmap & model utilities ───────────────────────────────────────────────\r\n\r\nexport function getRoadmapPhaseInternal(cwd: string, phaseNum: string | number): RoadmapPhaseInfo | null {\r\n if (!phaseNum) return null;\r\n const rp = roadmapPath(cwd);\r\n\r\n try {\r\n const content = fs.readFileSync(rp, 'utf-8');\r\n const escapedPhase = escapePhaseNum(phaseNum);\r\n const phasePattern = getPhasePattern(escapedPhase, 'i');\r\n const headerMatch = content.match(phasePattern);\r\n if (!headerMatch) return null;\r\n\r\n const phaseName = headerMatch[1].trim();\r\n const headerIndex = headerMatch.index!;\r\n const restOfContent = content.slice(headerIndex);\r\n const nextHeaderMatch = restOfContent.match(/\\n#{2,4}\\s+Phase\\s+\\d/i);\r\n const sectionEnd = nextHeaderMatch ? headerIndex + nextHeaderMatch.index! : content.length;\r\n const section = content.slice(headerIndex, sectionEnd).trim();\r\n\r\n const goalMatch = section.match(/\\*\\*Goal(?::\\*\\*|\\*\\*:)\\s*([^\\n]+)/i);\r\n const goal = goalMatch ? goalMatch[1].trim() : null;\r\n\r\n return {\r\n found: true,\r\n phase_number: phaseNum.toString(),\r\n phase_name: phaseName,\r\n goal,\r\n section,\r\n };\r\n } catch {\r\n return null;\r\n }\r\n}\r\n\r\nexport function resolveModelInternal(cwd: string, agentType: AgentType, config?: AppConfig): ModelResolution {\r\n config = config ?? loadConfig(cwd);\r\n\r\n const override = config.model_overrides?.[agentType];\r\n if (override) {\r\n return override === 'opus' ? 'inherit' : override;\r\n }\r\n\r\n const profile: ModelProfileName = config.model_profile || 'balanced';\r\n const agentModels = MODEL_PROFILES[agentType];\r\n if (!agentModels) return 'sonnet';\r\n const resolved = agentModels[profile] || agentModels['balanced'] || 'sonnet';\r\n return resolved === 'opus' ? 'inherit' : resolved;\r\n}\r\n\r\n// ─── Misc utilities ──────────────────────────────────────────────────────────\r\n\r\nexport function pathExistsInternal(cwd: string, targetPath: string): boolean {\r\n const fullPath = path.isAbsolute(targetPath) ? targetPath : path.join(cwd, targetPath);\r\n try {\r\n fs.statSync(fullPath);\r\n return true;\r\n } catch {\r\n return false;\r\n }\r\n}\r\n\r\nexport function generateSlugInternal(text: string | null | undefined): string | null {\r\n if (!text) return null;\r\n return slugify(text, { lower: true, strict: true });\r\n}\r\n\r\nexport function getMilestoneInfo(cwd: string): MilestoneInfo {\r\n try {\r\n const roadmap = fs.readFileSync(roadmapPath(cwd), 'utf-8');\r\n const versionMatch = roadmap.match(/v(\\d+\\.\\d+)/);\r\n const nameMatch = roadmap.match(/## .*v\\d+\\.\\d+[:\\s]+([^\\n(]+)/);\r\n return {\r\n version: versionMatch ? versionMatch[0] : 'v1.0',\r\n name: nameMatch ? nameMatch[1].trim() : 'milestone',\r\n };\r\n } catch {\r\n return { version: 'v1.0', name: 'milestone' };\r\n }\r\n}\r\n","'use strict';\n\nconst ALIAS = Symbol.for('yaml.alias');\nconst DOC = Symbol.for('yaml.document');\nconst MAP = Symbol.for('yaml.map');\nconst PAIR = Symbol.for('yaml.pair');\nconst SCALAR = Symbol.for('yaml.scalar');\nconst SEQ = Symbol.for('yaml.seq');\nconst NODE_TYPE = Symbol.for('yaml.node.type');\nconst isAlias = (node) => !!node && typeof node === 'object' && node[NODE_TYPE] === ALIAS;\nconst isDocument = (node) => !!node && typeof node === 'object' && node[NODE_TYPE] === DOC;\nconst isMap = (node) => !!node && typeof node === 'object' && node[NODE_TYPE] === MAP;\nconst isPair = (node) => !!node && typeof node === 'object' && node[NODE_TYPE] === PAIR;\nconst isScalar = (node) => !!node && typeof node === 'object' && node[NODE_TYPE] === SCALAR;\nconst isSeq = (node) => !!node && typeof node === 'object' && node[NODE_TYPE] === SEQ;\nfunction isCollection(node) {\n if (node && typeof node === 'object')\n switch (node[NODE_TYPE]) {\n case MAP:\n case SEQ:\n return true;\n }\n return false;\n}\nfunction isNode(node) {\n if (node && typeof node === 'object')\n switch (node[NODE_TYPE]) {\n case ALIAS:\n case MAP:\n case SCALAR:\n case SEQ:\n return true;\n }\n return false;\n}\nconst hasAnchor = (node) => (isScalar(node) || isCollection(node)) && !!node.anchor;\n\nexports.ALIAS = ALIAS;\nexports.DOC = DOC;\nexports.MAP = MAP;\nexports.NODE_TYPE = NODE_TYPE;\nexports.PAIR = PAIR;\nexports.SCALAR = SCALAR;\nexports.SEQ = SEQ;\nexports.hasAnchor = hasAnchor;\nexports.isAlias = isAlias;\nexports.isCollection = isCollection;\nexports.isDocument = isDocument;\nexports.isMap = isMap;\nexports.isNode = isNode;\nexports.isPair = isPair;\nexports.isScalar = isScalar;\nexports.isSeq = isSeq;\n","'use strict';\n\nvar identity = require('./nodes/identity.js');\n\nconst BREAK = Symbol('break visit');\nconst SKIP = Symbol('skip children');\nconst REMOVE = Symbol('remove node');\n/**\n * Apply a visitor to an AST node or document.\n *\n * Walks through the tree (depth-first) starting from `node`, calling a\n * `visitor` function with three arguments:\n * - `key`: For sequence values and map `Pair`, the node's index in the\n * collection. Within a `Pair`, `'key'` or `'value'`, correspondingly.\n * `null` for the root node.\n * - `node`: The current node.\n * - `path`: The ancestry of the current node.\n *\n * The return value of the visitor may be used to control the traversal:\n * - `undefined` (default): Do nothing and continue\n * - `visit.SKIP`: Do not visit the children of this node, continue with next\n * sibling\n * - `visit.BREAK`: Terminate traversal completely\n * - `visit.REMOVE`: Remove the current node, then continue with the next one\n * - `Node`: Replace the current node, then continue by visiting it\n * - `number`: While iterating the items of a sequence or map, set the index\n * of the next step. This is useful especially if the index of the current\n * node has changed.\n *\n * If `visitor` is a single function, it will be called with all values\n * encountered in the tree, including e.g. `null` values. Alternatively,\n * separate visitor functions may be defined for each `Map`, `Pair`, `Seq`,\n * `Alias` and `Scalar` node. To define the same visitor function for more than\n * one node type, use the `Collection` (map and seq), `Value` (map, seq & scalar)\n * and `Node` (alias, map, seq & scalar) targets. Of all these, only the most\n * specific defined one will be used for each node.\n */\nfunction visit(node, visitor) {\n const visitor_ = initVisitor(visitor);\n if (identity.isDocument(node)) {\n const cd = visit_(null, node.contents, visitor_, Object.freeze([node]));\n if (cd === REMOVE)\n node.contents = null;\n }\n else\n visit_(null, node, visitor_, Object.freeze([]));\n}\n// Without the `as symbol` casts, TS declares these in the `visit`\n// namespace using `var`, but then complains about that because\n// `unique symbol` must be `const`.\n/** Terminate visit traversal completely */\nvisit.BREAK = BREAK;\n/** Do not visit the children of the current node */\nvisit.SKIP = SKIP;\n/** Remove the current node */\nvisit.REMOVE = REMOVE;\nfunction visit_(key, node, visitor, path) {\n const ctrl = callVisitor(key, node, visitor, path);\n if (identity.isNode(ctrl) || identity.isPair(ctrl)) {\n replaceNode(key, path, ctrl);\n return visit_(key, ctrl, visitor, path);\n }\n if (typeof ctrl !== 'symbol') {\n if (identity.isCollection(node)) {\n path = Object.freeze(path.concat(node));\n for (let i = 0; i < node.items.length; ++i) {\n const ci = visit_(i, node.items[i], visitor, path);\n if (typeof ci === 'number')\n i = ci - 1;\n else if (ci === BREAK)\n return BREAK;\n else if (ci === REMOVE) {\n node.items.splice(i, 1);\n i -= 1;\n }\n }\n }\n else if (identity.isPair(node)) {\n path = Object.freeze(path.concat(node));\n const ck = visit_('key', node.key, visitor, path);\n if (ck === BREAK)\n return BREAK;\n else if (ck === REMOVE)\n node.key = null;\n const cv = visit_('value', node.value, visitor, path);\n if (cv === BREAK)\n return BREAK;\n else if (cv === REMOVE)\n node.value = null;\n }\n }\n return ctrl;\n}\n/**\n * Apply an async visitor to an AST node or document.\n *\n * Walks through the tree (depth-first) starting from `node`, calling a\n * `visitor` function with three arguments:\n * - `key`: For sequence values and map `Pair`, the node's index in the\n * collection. Within a `Pair`, `'key'` or `'value'`, correspondingly.\n * `null` for the root node.\n * - `node`: The current node.\n * - `path`: The ancestry of the current node.\n *\n * The return value of the visitor may be used to control the traversal:\n * - `Promise`: Must resolve to one of the following values\n * - `undefined` (default): Do nothing and continue\n * - `visit.SKIP`: Do not visit the children of this node, continue with next\n * sibling\n * - `visit.BREAK`: Terminate traversal completely\n * - `visit.REMOVE`: Remove the current node, then continue with the next one\n * - `Node`: Replace the current node, then continue by visiting it\n * - `number`: While iterating the items of a sequence or map, set the index\n * of the next step. This is useful especially if the index of the current\n * node has changed.\n *\n * If `visitor` is a single function, it will be called with all values\n * encountered in the tree, including e.g. `null` values. Alternatively,\n * separate visitor functions may be defined for each `Map`, `Pair`, `Seq`,\n * `Alias` and `Scalar` node. To define the same visitor function for more than\n * one node type, use the `Collection` (map and seq), `Value` (map, seq & scalar)\n * and `Node` (alias, map, seq & scalar) targets. Of all these, only the most\n * specific defined one will be used for each node.\n */\nasync function visitAsync(node, visitor) {\n const visitor_ = initVisitor(visitor);\n if (identity.isDocument(node)) {\n const cd = await visitAsync_(null, node.contents, visitor_, Object.freeze([node]));\n if (cd === REMOVE)\n node.contents = null;\n }\n else\n await visitAsync_(null, node, visitor_, Object.freeze([]));\n}\n// Without the `as symbol` casts, TS declares these in the `visit`\n// namespace using `var`, but then complains about that because\n// `unique symbol` must be `const`.\n/** Terminate visit traversal completely */\nvisitAsync.BREAK = BREAK;\n/** Do not visit the children of the current node */\nvisitAsync.SKIP = SKIP;\n/** Remove the current node */\nvisitAsync.REMOVE = REMOVE;\nasync function visitAsync_(key, node, visitor, path) {\n const ctrl = await callVisitor(key, node, visitor, path);\n if (identity.isNode(ctrl) || identity.isPair(ctrl)) {\n replaceNode(key, path, ctrl);\n return visitAsync_(key, ctrl, visitor, path);\n }\n if (typeof ctrl !== 'symbol') {\n if (identity.isCollection(node)) {\n path = Object.freeze(path.concat(node));\n for (let i = 0; i < node.items.length; ++i) {\n const ci = await visitAsync_(i, node.items[i], visitor, path);\n if (typeof ci === 'number')\n i = ci - 1;\n else if (ci === BREAK)\n return BREAK;\n else if (ci === REMOVE) {\n node.items.splice(i, 1);\n i -= 1;\n }\n }\n }\n else if (identity.isPair(node)) {\n path = Object.freeze(path.concat(node));\n const ck = await visitAsync_('key', node.key, visitor, path);\n if (ck === BREAK)\n return BREAK;\n else if (ck === REMOVE)\n node.key = null;\n const cv = await visitAsync_('value', node.value, visitor, path);\n if (cv === BREAK)\n return BREAK;\n else if (cv === REMOVE)\n node.value = null;\n }\n }\n return ctrl;\n}\nfunction initVisitor(visitor) {\n if (typeof visitor === 'object' &&\n (visitor.Collection || visitor.Node || visitor.Value)) {\n return Object.assign({\n Alias: visitor.Node,\n Map: visitor.Node,\n Scalar: visitor.Node,\n Seq: visitor.Node\n }, visitor.Value && {\n Map: visitor.Value,\n Scalar: visitor.Value,\n Seq: visitor.Value\n }, visitor.Collection && {\n Map: visitor.Collection,\n Seq: visitor.Collection\n }, visitor);\n }\n return visitor;\n}\nfunction callVisitor(key, node, visitor, path) {\n if (typeof visitor === 'function')\n return visitor(key, node, path);\n if (identity.isMap(node))\n return visitor.Map?.(key, node, path);\n if (identity.isSeq(node))\n return visitor.Seq?.(key, node, path);\n if (identity.isPair(node))\n return visitor.Pair?.(key, node, path);\n if (identity.isScalar(node))\n return visitor.Scalar?.(key, node, path);\n if (identity.isAlias(node))\n return visitor.Alias?.(key, node, path);\n return undefined;\n}\nfunction replaceNode(key, path, node) {\n const parent = path[path.length - 1];\n if (identity.isCollection(parent)) {\n parent.items[key] = node;\n }\n else if (identity.isPair(parent)) {\n if (key === 'key')\n parent.key = node;\n else\n parent.value = node;\n }\n else if (identity.isDocument(parent)) {\n parent.contents = node;\n }\n else {\n const pt = identity.isAlias(parent) ? 'alias' : 'scalar';\n throw new Error(`Cannot replace node with ${pt} parent`);\n }\n}\n\nexports.visit = visit;\nexports.visitAsync = visitAsync;\n","'use strict';\n\nvar identity = require('../nodes/identity.js');\nvar visit = require('../visit.js');\n\nconst escapeChars = {\n '!': '%21',\n ',': '%2C',\n '[': '%5B',\n ']': '%5D',\n '{': '%7B',\n '}': '%7D'\n};\nconst escapeTagName = (tn) => tn.replace(/[!,[\\]{}]/g, ch => escapeChars[ch]);\nclass Directives {\n constructor(yaml, tags) {\n /**\n * The directives-end/doc-start marker `---`. If `null`, a marker may still be\n * included in the document's stringified representation.\n */\n this.docStart = null;\n /** The doc-end marker `...`. */\n this.docEnd = false;\n this.yaml = Object.assign({}, Directives.defaultYaml, yaml);\n this.tags = Object.assign({}, Directives.defaultTags, tags);\n }\n clone() {\n const copy = new Directives(this.yaml, this.tags);\n copy.docStart = this.docStart;\n return copy;\n }\n /**\n * During parsing, get a Directives instance for the current document and\n * update the stream state according to the current version's spec.\n */\n atDocument() {\n const res = new Directives(this.yaml, this.tags);\n switch (this.yaml.version) {\n case '1.1':\n this.atNextDocument = true;\n break;\n case '1.2':\n this.atNextDocument = false;\n this.yaml = {\n explicit: Directives.defaultYaml.explicit,\n version: '1.2'\n };\n this.tags = Object.assign({}, Directives.defaultTags);\n break;\n }\n return res;\n }\n /**\n * @param onError - May be called even if the action was successful\n * @returns `true` on success\n */\n add(line, onError) {\n if (this.atNextDocument) {\n this.yaml = { explicit: Directives.defaultYaml.explicit, version: '1.1' };\n this.tags = Object.assign({}, Directives.defaultTags);\n this.atNextDocument = false;\n }\n const parts = line.trim().split(/[ \\t]+/);\n const name = parts.shift();\n switch (name) {\n case '%TAG': {\n if (parts.length !== 2) {\n onError(0, '%TAG directive should contain exactly two parts');\n if (parts.length < 2)\n return false;\n }\n const [handle, prefix] = parts;\n this.tags[handle] = prefix;\n return true;\n }\n case '%YAML': {\n this.yaml.explicit = true;\n if (parts.length !== 1) {\n onError(0, '%YAML directive should contain exactly one part');\n return false;\n }\n const [version] = parts;\n if (version === '1.1' || version === '1.2') {\n this.yaml.version = version;\n return true;\n }\n else {\n const isValid = /^\\d+\\.\\d+$/.test(version);\n onError(6, `Unsupported YAML version ${version}`, isValid);\n return false;\n }\n }\n default:\n onError(0, `Unknown directive ${name}`, true);\n return false;\n }\n }\n /**\n * Resolves a tag, matching handles to those defined in %TAG directives.\n *\n * @returns Resolved tag, which may also be the non-specific tag `'!'` or a\n * `'!local'` tag, or `null` if unresolvable.\n */\n tagName(source, onError) {\n if (source === '!')\n return '!'; // non-specific tag\n if (source[0] !== '!') {\n onError(`Not a valid tag: ${source}`);\n return null;\n }\n if (source[1] === '<') {\n const verbatim = source.slice(2, -1);\n if (verbatim === '!' || verbatim === '!!') {\n onError(`Verbatim tags aren't resolved, so ${source} is invalid.`);\n return null;\n }\n if (source[source.length - 1] !== '>')\n onError('Verbatim tags must end with a >');\n return verbatim;\n }\n const [, handle, suffix] = source.match(/^(.*!)([^!]*)$/s);\n if (!suffix)\n onError(`The ${source} tag has no suffix`);\n const prefix = this.tags[handle];\n if (prefix) {\n try {\n return prefix + decodeURIComponent(suffix);\n }\n catch (error) {\n onError(String(error));\n return null;\n }\n }\n if (handle === '!')\n return source; // local tag\n onError(`Could not resolve tag: ${source}`);\n return null;\n }\n /**\n * Given a fully resolved tag, returns its printable string form,\n * taking into account current tag prefixes and defaults.\n */\n tagString(tag) {\n for (const [handle, prefix] of Object.entries(this.tags)) {\n if (tag.startsWith(prefix))\n return handle + escapeTagName(tag.substring(prefix.length));\n }\n return tag[0] === '!' ? tag : `!<${tag}>`;\n }\n toString(doc) {\n const lines = this.yaml.explicit\n ? [`%YAML ${this.yaml.version || '1.2'}`]\n : [];\n const tagEntries = Object.entries(this.tags);\n let tagNames;\n if (doc && tagEntries.length > 0 && identity.isNode(doc.contents)) {\n const tags = {};\n visit.visit(doc.contents, (_key, node) => {\n if (identity.isNode(node) && node.tag)\n tags[node.tag] = true;\n });\n tagNames = Object.keys(tags);\n }\n else\n tagNames = [];\n for (const [handle, prefix] of tagEntries) {\n if (handle === '!!' && prefix === 'tag:yaml.org,2002:')\n continue;\n if (!doc || tagNames.some(tn => tn.startsWith(prefix)))\n lines.push(`%TAG ${handle} ${prefix}`);\n }\n return lines.join('\\n');\n }\n}\nDirectives.defaultYaml = { explicit: false, version: '1.2' };\nDirectives.defaultTags = { '!!': 'tag:yaml.org,2002:' };\n\nexports.Directives = Directives;\n","'use strict';\n\nvar identity = require('../nodes/identity.js');\nvar visit = require('../visit.js');\n\n/**\n * Verify that the input string is a valid anchor.\n *\n * Will throw on errors.\n */\nfunction anchorIsValid(anchor) {\n if (/[\\x00-\\x19\\s,[\\]{}]/.test(anchor)) {\n const sa = JSON.stringify(anchor);\n const msg = `Anchor must not contain whitespace or control characters: ${sa}`;\n throw new Error(msg);\n }\n return true;\n}\nfunction anchorNames(root) {\n const anchors = new Set();\n visit.visit(root, {\n Value(_key, node) {\n if (node.anchor)\n anchors.add(node.anchor);\n }\n });\n return anchors;\n}\n/** Find a new anchor name with the given `prefix` and a one-indexed suffix. */\nfunction findNewAnchor(prefix, exclude) {\n for (let i = 1; true; ++i) {\n const name = `${prefix}${i}`;\n if (!exclude.has(name))\n return name;\n }\n}\nfunction createNodeAnchors(doc, prefix) {\n const aliasObjects = [];\n const sourceObjects = new Map();\n let prevAnchors = null;\n return {\n onAnchor: (source) => {\n aliasObjects.push(source);\n prevAnchors ?? (prevAnchors = anchorNames(doc));\n const anchor = findNewAnchor(prefix, prevAnchors);\n prevAnchors.add(anchor);\n return anchor;\n },\n /**\n * With circular references, the source node is only resolved after all\n * of its child nodes are. This is why anchors are set only after all of\n * the nodes have been created.\n */\n setAnchors: () => {\n for (const source of aliasObjects) {\n const ref = sourceObjects.get(source);\n if (typeof ref === 'object' &&\n ref.anchor &&\n (identity.isScalar(ref.node) || identity.isCollection(ref.node))) {\n ref.node.anchor = ref.anchor;\n }\n else {\n const error = new Error('Failed to resolve repeated object (this should not happen)');\n error.source = source;\n throw error;\n }\n }\n },\n sourceObjects\n };\n}\n\nexports.anchorIsValid = anchorIsValid;\nexports.anchorNames = anchorNames;\nexports.createNodeAnchors = createNodeAnchors;\nexports.findNewAnchor = findNewAnchor;\n","'use strict';\n\n/**\n * Applies the JSON.parse reviver algorithm as defined in the ECMA-262 spec,\n * in section 24.5.1.1 \"Runtime Semantics: InternalizeJSONProperty\" of the\n * 2021 edition: https://tc39.es/ecma262/#sec-json.parse\n *\n * Includes extensions for handling Map and Set objects.\n */\nfunction applyReviver(reviver, obj, key, val) {\n if (val && typeof val === 'object') {\n if (Array.isArray(val)) {\n for (let i = 0, len = val.length; i < len; ++i) {\n const v0 = val[i];\n const v1 = applyReviver(reviver, val, String(i), v0);\n // eslint-disable-next-line @typescript-eslint/no-array-delete\n if (v1 === undefined)\n delete val[i];\n else if (v1 !== v0)\n val[i] = v1;\n }\n }\n else if (val instanceof Map) {\n for (const k of Array.from(val.keys())) {\n const v0 = val.get(k);\n const v1 = applyReviver(reviver, val, k, v0);\n if (v1 === undefined)\n val.delete(k);\n else if (v1 !== v0)\n val.set(k, v1);\n }\n }\n else if (val instanceof Set) {\n for (const v0 of Array.from(val)) {\n const v1 = applyReviver(reviver, val, v0, v0);\n if (v1 === undefined)\n val.delete(v0);\n else if (v1 !== v0) {\n val.delete(v0);\n val.add(v1);\n }\n }\n }\n else {\n for (const [k, v0] of Object.entries(val)) {\n const v1 = applyReviver(reviver, val, k, v0);\n if (v1 === undefined)\n delete val[k];\n else if (v1 !== v0)\n val[k] = v1;\n }\n }\n }\n return reviver.call(obj, key, val);\n}\n\nexports.applyReviver = applyReviver;\n","'use strict';\n\nvar identity = require('./identity.js');\n\n/**\n * Recursively convert any node or its contents to native JavaScript\n *\n * @param value - The input value\n * @param arg - If `value` defines a `toJSON()` method, use this\n * as its first argument\n * @param ctx - Conversion context, originally set in Document#toJS(). If\n * `{ keep: true }` is not set, output should be suitable for JSON\n * stringification.\n */\nfunction toJS(value, arg, ctx) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n if (Array.isArray(value))\n return value.map((v, i) => toJS(v, String(i), ctx));\n if (value && typeof value.toJSON === 'function') {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n if (!ctx || !identity.hasAnchor(value))\n return value.toJSON(arg, ctx);\n const data = { aliasCount: 0, count: 1, res: undefined };\n ctx.anchors.set(value, data);\n ctx.onCreate = res => {\n data.res = res;\n delete ctx.onCreate;\n };\n const res = value.toJSON(arg, ctx);\n if (ctx.onCreate)\n ctx.onCreate(res);\n return res;\n }\n if (typeof value === 'bigint' && !ctx?.keep)\n return Number(value);\n return value;\n}\n\nexports.toJS = toJS;\n","'use strict';\n\nvar applyReviver = require('../doc/applyReviver.js');\nvar identity = require('./identity.js');\nvar toJS = require('./toJS.js');\n\nclass NodeBase {\n constructor(type) {\n Object.defineProperty(this, identity.NODE_TYPE, { value: type });\n }\n /** Create a copy of this node. */\n clone() {\n const copy = Object.create(Object.getPrototypeOf(this), Object.getOwnPropertyDescriptors(this));\n if (this.range)\n copy.range = this.range.slice();\n return copy;\n }\n /** A plain JavaScript representation of this node. */\n toJS(doc, { mapAsMap, maxAliasCount, onAnchor, reviver } = {}) {\n if (!identity.isDocument(doc))\n throw new TypeError('A document argument is required');\n const ctx = {\n anchors: new Map(),\n doc,\n keep: true,\n mapAsMap: mapAsMap === true,\n mapKeyWarned: false,\n maxAliasCount: typeof maxAliasCount === 'number' ? maxAliasCount : 100\n };\n const res = toJS.toJS(this, '', ctx);\n if (typeof onAnchor === 'function')\n for (const { count, res } of ctx.anchors.values())\n onAnchor(res, count);\n return typeof reviver === 'function'\n ? applyReviver.applyReviver(reviver, { '': res }, '', res)\n : res;\n }\n}\n\nexports.NodeBase = NodeBase;\n","'use strict';\n\nvar anchors = require('../doc/anchors.js');\nvar visit = require('../visit.js');\nvar identity = require('./identity.js');\nvar Node = require('./Node.js');\nvar toJS = require('./toJS.js');\n\nclass Alias extends Node.NodeBase {\n constructor(source) {\n super(identity.ALIAS);\n this.source = source;\n Object.defineProperty(this, 'tag', {\n set() {\n throw new Error('Alias nodes cannot have tags');\n }\n });\n }\n /**\n * Resolve the value of this alias within `doc`, finding the last\n * instance of the `source` anchor before this node.\n */\n resolve(doc, ctx) {\n let nodes;\n if (ctx?.aliasResolveCache) {\n nodes = ctx.aliasResolveCache;\n }\n else {\n nodes = [];\n visit.visit(doc, {\n Node: (_key, node) => {\n if (identity.isAlias(node) || identity.hasAnchor(node))\n nodes.push(node);\n }\n });\n if (ctx)\n ctx.aliasResolveCache = nodes;\n }\n let found = undefined;\n for (const node of nodes) {\n if (node === this)\n break;\n if (node.anchor === this.source)\n found = node;\n }\n return found;\n }\n toJSON(_arg, ctx) {\n if (!ctx)\n return { source: this.source };\n const { anchors, doc, maxAliasCount } = ctx;\n const source = this.resolve(doc, ctx);\n if (!source) {\n const msg = `Unresolved alias (the anchor must be set before the alias): ${this.source}`;\n throw new ReferenceError(msg);\n }\n let data = anchors.get(source);\n if (!data) {\n // Resolve anchors for Node.prototype.toJS()\n toJS.toJS(source, null, ctx);\n data = anchors.get(source);\n }\n /* istanbul ignore if */\n if (data?.res === undefined) {\n const msg = 'This should not happen: Alias anchor was not resolved?';\n throw new ReferenceError(msg);\n }\n if (maxAliasCount >= 0) {\n data.count += 1;\n if (data.aliasCount === 0)\n data.aliasCount = getAliasCount(doc, source, anchors);\n if (data.count * data.aliasCount > maxAliasCount) {\n const msg = 'Excessive alias count indicates a resource exhaustion attack';\n throw new ReferenceError(msg);\n }\n }\n return data.res;\n }\n toString(ctx, _onComment, _onChompKeep) {\n const src = `*${this.source}`;\n if (ctx) {\n anchors.anchorIsValid(this.source);\n if (ctx.options.verifyAliasOrder && !ctx.anchors.has(this.source)) {\n const msg = `Unresolved alias (the anchor must be set before the alias): ${this.source}`;\n throw new Error(msg);\n }\n if (ctx.implicitKey)\n return `${src} `;\n }\n return src;\n }\n}\nfunction getAliasCount(doc, node, anchors) {\n if (identity.isAlias(node)) {\n const source = node.resolve(doc);\n const anchor = anchors && source && anchors.get(source);\n return anchor ? anchor.count * anchor.aliasCount : 0;\n }\n else if (identity.isCollection(node)) {\n let count = 0;\n for (const item of node.items) {\n const c = getAliasCount(doc, item, anchors);\n if (c > count)\n count = c;\n }\n return count;\n }\n else if (identity.isPair(node)) {\n const kc = getAliasCount(doc, node.key, anchors);\n const vc = getAliasCount(doc, node.value, anchors);\n return Math.max(kc, vc);\n }\n return 1;\n}\n\nexports.Alias = Alias;\n","'use strict';\n\nvar identity = require('./identity.js');\nvar Node = require('./Node.js');\nvar toJS = require('./toJS.js');\n\nconst isScalarValue = (value) => !value || (typeof value !== 'function' && typeof value !== 'object');\nclass Scalar extends Node.NodeBase {\n constructor(value) {\n super(identity.SCALAR);\n this.value = value;\n }\n toJSON(arg, ctx) {\n return ctx?.keep ? this.value : toJS.toJS(this.value, arg, ctx);\n }\n toString() {\n return String(this.value);\n }\n}\nScalar.BLOCK_FOLDED = 'BLOCK_FOLDED';\nScalar.BLOCK_LITERAL = 'BLOCK_LITERAL';\nScalar.PLAIN = 'PLAIN';\nScalar.QUOTE_DOUBLE = 'QUOTE_DOUBLE';\nScalar.QUOTE_SINGLE = 'QUOTE_SINGLE';\n\nexports.Scalar = Scalar;\nexports.isScalarValue = isScalarValue;\n","'use strict';\n\nvar Alias = require('../nodes/Alias.js');\nvar identity = require('../nodes/identity.js');\nvar Scalar = require('../nodes/Scalar.js');\n\nconst defaultTagPrefix = 'tag:yaml.org,2002:';\nfunction findTagObject(value, tagName, tags) {\n if (tagName) {\n const match = tags.filter(t => t.tag === tagName);\n const tagObj = match.find(t => !t.format) ?? match[0];\n if (!tagObj)\n throw new Error(`Tag ${tagName} not found`);\n return tagObj;\n }\n return tags.find(t => t.identify?.(value) && !t.format);\n}\nfunction createNode(value, tagName, ctx) {\n if (identity.isDocument(value))\n value = value.contents;\n if (identity.isNode(value))\n return value;\n if (identity.isPair(value)) {\n const map = ctx.schema[identity.MAP].createNode?.(ctx.schema, null, ctx);\n map.items.push(value);\n return map;\n }\n if (value instanceof String ||\n value instanceof Number ||\n value instanceof Boolean ||\n (typeof BigInt !== 'undefined' && value instanceof BigInt) // not supported everywhere\n ) {\n // https://tc39.es/ecma262/#sec-serializejsonproperty\n value = value.valueOf();\n }\n const { aliasDuplicateObjects, onAnchor, onTagObj, schema, sourceObjects } = ctx;\n // Detect duplicate references to the same object & use Alias nodes for all\n // after first. The `ref` wrapper allows for circular references to resolve.\n let ref = undefined;\n if (aliasDuplicateObjects && value && typeof value === 'object') {\n ref = sourceObjects.get(value);\n if (ref) {\n ref.anchor ?? (ref.anchor = onAnchor(value));\n return new Alias.Alias(ref.anchor);\n }\n else {\n ref = { anchor: null, node: null };\n sourceObjects.set(value, ref);\n }\n }\n if (tagName?.startsWith('!!'))\n tagName = defaultTagPrefix + tagName.slice(2);\n let tagObj = findTagObject(value, tagName, schema.tags);\n if (!tagObj) {\n if (value && typeof value.toJSON === 'function') {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n value = value.toJSON();\n }\n if (!value || typeof value !== 'object') {\n const node = new Scalar.Scalar(value);\n if (ref)\n ref.node = node;\n return node;\n }\n tagObj =\n value instanceof Map\n ? schema[identity.MAP]\n : Symbol.iterator in Object(value)\n ? schema[identity.SEQ]\n : schema[identity.MAP];\n }\n if (onTagObj) {\n onTagObj(tagObj);\n delete ctx.onTagObj;\n }\n const node = tagObj?.createNode\n ? tagObj.createNode(ctx.schema, value, ctx)\n : typeof tagObj?.nodeClass?.from === 'function'\n ? tagObj.nodeClass.from(ctx.schema, value, ctx)\n : new Scalar.Scalar(value);\n if (tagName)\n node.tag = tagName;\n else if (!tagObj.default)\n node.tag = tagObj.tag;\n if (ref)\n ref.node = node;\n return node;\n}\n\nexports.createNode = createNode;\n","'use strict';\n\nvar createNode = require('../doc/createNode.js');\nvar identity = require('./identity.js');\nvar Node = require('./Node.js');\n\nfunction collectionFromPath(schema, path, value) {\n let v = value;\n for (let i = path.length - 1; i >= 0; --i) {\n const k = path[i];\n if (typeof k === 'number' && Number.isInteger(k) && k >= 0) {\n const a = [];\n a[k] = v;\n v = a;\n }\n else {\n v = new Map([[k, v]]);\n }\n }\n return createNode.createNode(v, undefined, {\n aliasDuplicateObjects: false,\n keepUndefined: false,\n onAnchor: () => {\n throw new Error('This should not happen, please report a bug.');\n },\n schema,\n sourceObjects: new Map()\n });\n}\n// Type guard is intentionally a little wrong so as to be more useful,\n// as it does not cover untypable empty non-string iterables (e.g. []).\nconst isEmptyPath = (path) => path == null ||\n (typeof path === 'object' && !!path[Symbol.iterator]().next().done);\nclass Collection extends Node.NodeBase {\n constructor(type, schema) {\n super(type);\n Object.defineProperty(this, 'schema', {\n value: schema,\n configurable: true,\n enumerable: false,\n writable: true\n });\n }\n /**\n * Create a copy of this collection.\n *\n * @param schema - If defined, overwrites the original's schema\n */\n clone(schema) {\n const copy = Object.create(Object.getPrototypeOf(this), Object.getOwnPropertyDescriptors(this));\n if (schema)\n copy.schema = schema;\n copy.items = copy.items.map(it => identity.isNode(it) || identity.isPair(it) ? it.clone(schema) : it);\n if (this.range)\n copy.range = this.range.slice();\n return copy;\n }\n /**\n * Adds a value to the collection. For `!!map` and `!!omap` the value must\n * be a Pair instance or a `{ key, value }` object, which may not have a key\n * that already exists in the map.\n */\n addIn(path, value) {\n if (isEmptyPath(path))\n this.add(value);\n else {\n const [key, ...rest] = path;\n const node = this.get(key, true);\n if (identity.isCollection(node))\n node.addIn(rest, value);\n else if (node === undefined && this.schema)\n this.set(key, collectionFromPath(this.schema, rest, value));\n else\n throw new Error(`Expected YAML collection at ${key}. Remaining path: ${rest}`);\n }\n }\n /**\n * Removes a value from the collection.\n * @returns `true` if the item was found and removed.\n */\n deleteIn(path) {\n const [key, ...rest] = path;\n if (rest.length === 0)\n return this.delete(key);\n const node = this.get(key, true);\n if (identity.isCollection(node))\n return node.deleteIn(rest);\n else\n throw new Error(`Expected YAML collection at ${key}. Remaining path: ${rest}`);\n }\n /**\n * Returns item at `key`, or `undefined` if not found. By default unwraps\n * scalar values from their surrounding node; to disable set `keepScalar` to\n * `true` (collections are always returned intact).\n */\n getIn(path, keepScalar) {\n const [key, ...rest] = path;\n const node = this.get(key, true);\n if (rest.length === 0)\n return !keepScalar && identity.isScalar(node) ? node.value : node;\n else\n return identity.isCollection(node) ? node.getIn(rest, keepScalar) : undefined;\n }\n hasAllNullValues(allowScalar) {\n return this.items.every(node => {\n if (!identity.isPair(node))\n return false;\n const n = node.value;\n return (n == null ||\n (allowScalar &&\n identity.isScalar(n) &&\n n.value == null &&\n !n.commentBefore &&\n !n.comment &&\n !n.tag));\n });\n }\n /**\n * Checks if the collection includes a value with the key `key`.\n */\n hasIn(path) {\n const [key, ...rest] = path;\n if (rest.length === 0)\n return this.has(key);\n const node = this.get(key, true);\n return identity.isCollection(node) ? node.hasIn(rest) : false;\n }\n /**\n * Sets a value in this collection. For `!!set`, `value` needs to be a\n * boolean to add/remove the item from the set.\n */\n setIn(path, value) {\n const [key, ...rest] = path;\n if (rest.length === 0) {\n this.set(key, value);\n }\n else {\n const node = this.get(key, true);\n if (identity.isCollection(node))\n node.setIn(rest, value);\n else if (node === undefined && this.schema)\n this.set(key, collectionFromPath(this.schema, rest, value));\n else\n throw new Error(`Expected YAML collection at ${key}. Remaining path: ${rest}`);\n }\n }\n}\n\nexports.Collection = Collection;\nexports.collectionFromPath = collectionFromPath;\nexports.isEmptyPath = isEmptyPath;\n","'use strict';\n\n/**\n * Stringifies a comment.\n *\n * Empty comment lines are left empty,\n * lines consisting of a single space are replaced by `#`,\n * and all other lines are prefixed with a `#`.\n */\nconst stringifyComment = (str) => str.replace(/^(?!$)(?: $)?/gm, '#');\nfunction indentComment(comment, indent) {\n if (/^\\n+$/.test(comment))\n return comment.substring(1);\n return indent ? comment.replace(/^(?! *$)/gm, indent) : comment;\n}\nconst lineComment = (str, indent, comment) => str.endsWith('\\n')\n ? indentComment(comment, indent)\n : comment.includes('\\n')\n ? '\\n' + indentComment(comment, indent)\n : (str.endsWith(' ') ? '' : ' ') + comment;\n\nexports.indentComment = indentComment;\nexports.lineComment = lineComment;\nexports.stringifyComment = stringifyComment;\n","'use strict';\n\nconst FOLD_FLOW = 'flow';\nconst FOLD_BLOCK = 'block';\nconst FOLD_QUOTED = 'quoted';\n/**\n * Tries to keep input at up to `lineWidth` characters, splitting only on spaces\n * not followed by newlines or spaces unless `mode` is `'quoted'`. Lines are\n * terminated with `\\n` and started with `indent`.\n */\nfunction foldFlowLines(text, indent, mode = 'flow', { indentAtStart, lineWidth = 80, minContentWidth = 20, onFold, onOverflow } = {}) {\n if (!lineWidth || lineWidth < 0)\n return text;\n if (lineWidth < minContentWidth)\n minContentWidth = 0;\n const endStep = Math.max(1 + minContentWidth, 1 + lineWidth - indent.length);\n if (text.length <= endStep)\n return text;\n const folds = [];\n const escapedFolds = {};\n let end = lineWidth - indent.length;\n if (typeof indentAtStart === 'number') {\n if (indentAtStart > lineWidth - Math.max(2, minContentWidth))\n folds.push(0);\n else\n end = lineWidth - indentAtStart;\n }\n let split = undefined;\n let prev = undefined;\n let overflow = false;\n let i = -1;\n let escStart = -1;\n let escEnd = -1;\n if (mode === FOLD_BLOCK) {\n i = consumeMoreIndentedLines(text, i, indent.length);\n if (i !== -1)\n end = i + endStep;\n }\n for (let ch; (ch = text[(i += 1)]);) {\n if (mode === FOLD_QUOTED && ch === '\\\\') {\n escStart = i;\n switch (text[i + 1]) {\n case 'x':\n i += 3;\n break;\n case 'u':\n i += 5;\n break;\n case 'U':\n i += 9;\n break;\n default:\n i += 1;\n }\n escEnd = i;\n }\n if (ch === '\\n') {\n if (mode === FOLD_BLOCK)\n i = consumeMoreIndentedLines(text, i, indent.length);\n end = i + indent.length + endStep;\n split = undefined;\n }\n else {\n if (ch === ' ' &&\n prev &&\n prev !== ' ' &&\n prev !== '\\n' &&\n prev !== '\\t') {\n // space surrounded by non-space can be replaced with newline + indent\n const next = text[i + 1];\n if (next && next !== ' ' && next !== '\\n' && next !== '\\t')\n split = i;\n }\n if (i >= end) {\n if (split) {\n folds.push(split);\n end = split + endStep;\n split = undefined;\n }\n else if (mode === FOLD_QUOTED) {\n // white-space collected at end may stretch past lineWidth\n while (prev === ' ' || prev === '\\t') {\n prev = ch;\n ch = text[(i += 1)];\n overflow = true;\n }\n // Account for newline escape, but don't break preceding escape\n const j = i > escEnd + 1 ? i - 2 : escStart - 1;\n // Bail out if lineWidth & minContentWidth are shorter than an escape string\n if (escapedFolds[j])\n return text;\n folds.push(j);\n escapedFolds[j] = true;\n end = j + endStep;\n split = undefined;\n }\n else {\n overflow = true;\n }\n }\n }\n prev = ch;\n }\n if (overflow && onOverflow)\n onOverflow();\n if (folds.length === 0)\n return text;\n if (onFold)\n onFold();\n let res = text.slice(0, folds[0]);\n for (let i = 0; i < folds.length; ++i) {\n const fold = folds[i];\n const end = folds[i + 1] || text.length;\n if (fold === 0)\n res = `\\n${indent}${text.slice(0, end)}`;\n else {\n if (mode === FOLD_QUOTED && escapedFolds[fold])\n res += `${text[fold]}\\\\`;\n res += `\\n${indent}${text.slice(fold + 1, end)}`;\n }\n }\n return res;\n}\n/**\n * Presumes `i + 1` is at the start of a line\n * @returns index of last newline in more-indented block\n */\nfunction consumeMoreIndentedLines(text, i, indent) {\n let end = i;\n let start = i + 1;\n let ch = text[start];\n while (ch === ' ' || ch === '\\t') {\n if (i < start + indent) {\n ch = text[++i];\n }\n else {\n do {\n ch = text[++i];\n } while (ch && ch !== '\\n');\n end = i;\n start = i + 1;\n ch = text[start];\n }\n }\n return end;\n}\n\nexports.FOLD_BLOCK = FOLD_BLOCK;\nexports.FOLD_FLOW = FOLD_FLOW;\nexports.FOLD_QUOTED = FOLD_QUOTED;\nexports.foldFlowLines = foldFlowLines;\n","'use strict';\n\nvar Scalar = require('../nodes/Scalar.js');\nvar foldFlowLines = require('./foldFlowLines.js');\n\nconst getFoldOptions = (ctx, isBlock) => ({\n indentAtStart: isBlock ? ctx.indent.length : ctx.indentAtStart,\n lineWidth: ctx.options.lineWidth,\n minContentWidth: ctx.options.minContentWidth\n});\n// Also checks for lines starting with %, as parsing the output as YAML 1.1 will\n// presume that's starting a new document.\nconst containsDocumentMarker = (str) => /^(%|---|\\.\\.\\.)/m.test(str);\nfunction lineLengthOverLimit(str, lineWidth, indentLength) {\n if (!lineWidth || lineWidth < 0)\n return false;\n const limit = lineWidth - indentLength;\n const strLen = str.length;\n if (strLen <= limit)\n return false;\n for (let i = 0, start = 0; i < strLen; ++i) {\n if (str[i] === '\\n') {\n if (i - start > limit)\n return true;\n start = i + 1;\n if (strLen - start <= limit)\n return false;\n }\n }\n return true;\n}\nfunction doubleQuotedString(value, ctx) {\n const json = JSON.stringify(value);\n if (ctx.options.doubleQuotedAsJSON)\n return json;\n const { implicitKey } = ctx;\n const minMultiLineLength = ctx.options.doubleQuotedMinMultiLineLength;\n const indent = ctx.indent || (containsDocumentMarker(value) ? ' ' : '');\n let str = '';\n let start = 0;\n for (let i = 0, ch = json[i]; ch; ch = json[++i]) {\n if (ch === ' ' && json[i + 1] === '\\\\' && json[i + 2] === 'n') {\n // space before newline needs to be escaped to not be folded\n str += json.slice(start, i) + '\\\\ ';\n i += 1;\n start = i;\n ch = '\\\\';\n }\n if (ch === '\\\\')\n switch (json[i + 1]) {\n case 'u':\n {\n str += json.slice(start, i);\n const code = json.substr(i + 2, 4);\n switch (code) {\n case '0000':\n str += '\\\\0';\n break;\n case '0007':\n str += '\\\\a';\n break;\n case '000b':\n str += '\\\\v';\n break;\n case '001b':\n str += '\\\\e';\n break;\n case '0085':\n str += '\\\\N';\n break;\n case '00a0':\n str += '\\\\_';\n break;\n case '2028':\n str += '\\\\L';\n break;\n case '2029':\n str += '\\\\P';\n break;\n default:\n if (code.substr(0, 2) === '00')\n str += '\\\\x' + code.substr(2);\n else\n str += json.substr(i, 6);\n }\n i += 5;\n start = i + 1;\n }\n break;\n case 'n':\n if (implicitKey ||\n json[i + 2] === '\"' ||\n json.length < minMultiLineLength) {\n i += 1;\n }\n else {\n // folding will eat first newline\n str += json.slice(start, i) + '\\n\\n';\n while (json[i + 2] === '\\\\' &&\n json[i + 3] === 'n' &&\n json[i + 4] !== '\"') {\n str += '\\n';\n i += 2;\n }\n str += indent;\n // space after newline needs to be escaped to not be folded\n if (json[i + 2] === ' ')\n str += '\\\\';\n i += 1;\n start = i + 1;\n }\n break;\n default:\n i += 1;\n }\n }\n str = start ? str + json.slice(start) : json;\n return implicitKey\n ? str\n : foldFlowLines.foldFlowLines(str, indent, foldFlowLines.FOLD_QUOTED, getFoldOptions(ctx, false));\n}\nfunction singleQuotedString(value, ctx) {\n if (ctx.options.singleQuote === false ||\n (ctx.implicitKey && value.includes('\\n')) ||\n /[ \\t]\\n|\\n[ \\t]/.test(value) // single quoted string can't have leading or trailing whitespace around newline\n )\n return doubleQuotedString(value, ctx);\n const indent = ctx.indent || (containsDocumentMarker(value) ? ' ' : '');\n const res = \"'\" + value.replace(/'/g, \"''\").replace(/\\n+/g, `$&\\n${indent}`) + \"'\";\n return ctx.implicitKey\n ? res\n : foldFlowLines.foldFlowLines(res, indent, foldFlowLines.FOLD_FLOW, getFoldOptions(ctx, false));\n}\nfunction quotedString(value, ctx) {\n const { singleQuote } = ctx.options;\n let qs;\n if (singleQuote === false)\n qs = doubleQuotedString;\n else {\n const hasDouble = value.includes('\"');\n const hasSingle = value.includes(\"'\");\n if (hasDouble && !hasSingle)\n qs = singleQuotedString;\n else if (hasSingle && !hasDouble)\n qs = doubleQuotedString;\n else\n qs = singleQuote ? singleQuotedString : doubleQuotedString;\n }\n return qs(value, ctx);\n}\n// The negative lookbehind avoids a polynomial search,\n// but isn't supported yet on Safari: https://caniuse.com/js-regexp-lookbehind\nlet blockEndNewlines;\ntry {\n blockEndNewlines = new RegExp('(^|(?\\n';\n // determine chomping from whitespace at value end\n let chomp;\n let endStart;\n for (endStart = value.length; endStart > 0; --endStart) {\n const ch = value[endStart - 1];\n if (ch !== '\\n' && ch !== '\\t' && ch !== ' ')\n break;\n }\n let end = value.substring(endStart);\n const endNlPos = end.indexOf('\\n');\n if (endNlPos === -1) {\n chomp = '-'; // strip\n }\n else if (value === end || endNlPos !== end.length - 1) {\n chomp = '+'; // keep\n if (onChompKeep)\n onChompKeep();\n }\n else {\n chomp = ''; // clip\n }\n if (end) {\n value = value.slice(0, -end.length);\n if (end[end.length - 1] === '\\n')\n end = end.slice(0, -1);\n end = end.replace(blockEndNewlines, `$&${indent}`);\n }\n // determine indent indicator from whitespace at value start\n let startWithSpace = false;\n let startEnd;\n let startNlPos = -1;\n for (startEnd = 0; startEnd < value.length; ++startEnd) {\n const ch = value[startEnd];\n if (ch === ' ')\n startWithSpace = true;\n else if (ch === '\\n')\n startNlPos = startEnd;\n else\n break;\n }\n let start = value.substring(0, startNlPos < startEnd ? startNlPos + 1 : startEnd);\n if (start) {\n value = value.substring(start.length);\n start = start.replace(/\\n+/g, `$&${indent}`);\n }\n const indentSize = indent ? '2' : '1'; // root is at -1\n // Leading | or > is added later\n let header = (startWithSpace ? indentSize : '') + chomp;\n if (comment) {\n header += ' ' + commentString(comment.replace(/ ?[\\r\\n]+/g, ' '));\n if (onComment)\n onComment();\n }\n if (!literal) {\n const foldedValue = value\n .replace(/\\n+/g, '\\n$&')\n .replace(/(?:^|\\n)([\\t ].*)(?:([\\n\\t ]*)\\n(?![\\n\\t ]))?/g, '$1$2') // more-indented lines aren't folded\n // ^ more-ind. ^ empty ^ capture next empty lines only at end of indent\n .replace(/\\n+/g, `$&${indent}`);\n let literalFallback = false;\n const foldOptions = getFoldOptions(ctx, true);\n if (blockQuote !== 'folded' && type !== Scalar.Scalar.BLOCK_FOLDED) {\n foldOptions.onOverflow = () => {\n literalFallback = true;\n };\n }\n const body = foldFlowLines.foldFlowLines(`${start}${foldedValue}${end}`, indent, foldFlowLines.FOLD_BLOCK, foldOptions);\n if (!literalFallback)\n return `>${header}\\n${indent}${body}`;\n }\n value = value.replace(/\\n+/g, `$&${indent}`);\n return `|${header}\\n${indent}${start}${value}${end}`;\n}\nfunction plainString(item, ctx, onComment, onChompKeep) {\n const { type, value } = item;\n const { actualString, implicitKey, indent, indentStep, inFlow } = ctx;\n if ((implicitKey && value.includes('\\n')) ||\n (inFlow && /[[\\]{},]/.test(value))) {\n return quotedString(value, ctx);\n }\n if (/^[\\n\\t ,[\\]{}#&*!|>'\"%@`]|^[?-]$|^[?-][ \\t]|[\\n:][ \\t]|[ \\t]\\n|[\\n\\t ]#|[\\n\\t :]$/.test(value)) {\n // not allowed:\n // - '-' or '?'\n // - start with an indicator character (except [?:-]) or /[?-] /\n // - '\\n ', ': ' or ' \\n' anywhere\n // - '#' not preceded by a non-space char\n // - end with ' ' or ':'\n return implicitKey || inFlow || !value.includes('\\n')\n ? quotedString(value, ctx)\n : blockString(item, ctx, onComment, onChompKeep);\n }\n if (!implicitKey &&\n !inFlow &&\n type !== Scalar.Scalar.PLAIN &&\n value.includes('\\n')) {\n // Where allowed & type not set explicitly, prefer block style for multiline strings\n return blockString(item, ctx, onComment, onChompKeep);\n }\n if (containsDocumentMarker(value)) {\n if (indent === '') {\n ctx.forceBlockIndent = true;\n return blockString(item, ctx, onComment, onChompKeep);\n }\n else if (implicitKey && indent === indentStep) {\n return quotedString(value, ctx);\n }\n }\n const str = value.replace(/\\n+/g, `$&\\n${indent}`);\n // Verify that output will be parsed as a string, as e.g. plain numbers and\n // booleans get parsed with those types in v1.2 (e.g. '42', 'true' & '0.9e-3'),\n // and others in v1.1.\n if (actualString) {\n const test = (tag) => tag.default && tag.tag !== 'tag:yaml.org,2002:str' && tag.test?.test(str);\n const { compat, tags } = ctx.doc.schema;\n if (tags.some(test) || compat?.some(test))\n return quotedString(value, ctx);\n }\n return implicitKey\n ? str\n : foldFlowLines.foldFlowLines(str, indent, foldFlowLines.FOLD_FLOW, getFoldOptions(ctx, false));\n}\nfunction stringifyString(item, ctx, onComment, onChompKeep) {\n const { implicitKey, inFlow } = ctx;\n const ss = typeof item.value === 'string'\n ? item\n : Object.assign({}, item, { value: String(item.value) });\n let { type } = item;\n if (type !== Scalar.Scalar.QUOTE_DOUBLE) {\n // force double quotes on control characters & unpaired surrogates\n if (/[\\x00-\\x08\\x0b-\\x1f\\x7f-\\x9f\\u{D800}-\\u{DFFF}]/u.test(ss.value))\n type = Scalar.Scalar.QUOTE_DOUBLE;\n }\n const _stringify = (_type) => {\n switch (_type) {\n case Scalar.Scalar.BLOCK_FOLDED:\n case Scalar.Scalar.BLOCK_LITERAL:\n return implicitKey || inFlow\n ? quotedString(ss.value, ctx) // blocks are not valid inside flow containers\n : blockString(ss, ctx, onComment, onChompKeep);\n case Scalar.Scalar.QUOTE_DOUBLE:\n return doubleQuotedString(ss.value, ctx);\n case Scalar.Scalar.QUOTE_SINGLE:\n return singleQuotedString(ss.value, ctx);\n case Scalar.Scalar.PLAIN:\n return plainString(ss, ctx, onComment, onChompKeep);\n default:\n return null;\n }\n };\n let res = _stringify(type);\n if (res === null) {\n const { defaultKeyType, defaultStringType } = ctx.options;\n const t = (implicitKey && defaultKeyType) || defaultStringType;\n res = _stringify(t);\n if (res === null)\n throw new Error(`Unsupported default string type ${t}`);\n }\n return res;\n}\n\nexports.stringifyString = stringifyString;\n","'use strict';\n\nvar anchors = require('../doc/anchors.js');\nvar identity = require('../nodes/identity.js');\nvar stringifyComment = require('./stringifyComment.js');\nvar stringifyString = require('./stringifyString.js');\n\nfunction createStringifyContext(doc, options) {\n const opt = Object.assign({\n blockQuote: true,\n commentString: stringifyComment.stringifyComment,\n defaultKeyType: null,\n defaultStringType: 'PLAIN',\n directives: null,\n doubleQuotedAsJSON: false,\n doubleQuotedMinMultiLineLength: 40,\n falseStr: 'false',\n flowCollectionPadding: true,\n indentSeq: true,\n lineWidth: 80,\n minContentWidth: 20,\n nullStr: 'null',\n simpleKeys: false,\n singleQuote: null,\n trueStr: 'true',\n verifyAliasOrder: true\n }, doc.schema.toStringOptions, options);\n let inFlow;\n switch (opt.collectionStyle) {\n case 'block':\n inFlow = false;\n break;\n case 'flow':\n inFlow = true;\n break;\n default:\n inFlow = null;\n }\n return {\n anchors: new Set(),\n doc,\n flowCollectionPadding: opt.flowCollectionPadding ? ' ' : '',\n indent: '',\n indentStep: typeof opt.indent === 'number' ? ' '.repeat(opt.indent) : ' ',\n inFlow,\n options: opt\n };\n}\nfunction getTagObject(tags, item) {\n if (item.tag) {\n const match = tags.filter(t => t.tag === item.tag);\n if (match.length > 0)\n return match.find(t => t.format === item.format) ?? match[0];\n }\n let tagObj = undefined;\n let obj;\n if (identity.isScalar(item)) {\n obj = item.value;\n let match = tags.filter(t => t.identify?.(obj));\n if (match.length > 1) {\n const testMatch = match.filter(t => t.test);\n if (testMatch.length > 0)\n match = testMatch;\n }\n tagObj =\n match.find(t => t.format === item.format) ?? match.find(t => !t.format);\n }\n else {\n obj = item;\n tagObj = tags.find(t => t.nodeClass && obj instanceof t.nodeClass);\n }\n if (!tagObj) {\n const name = obj?.constructor?.name ?? (obj === null ? 'null' : typeof obj);\n throw new Error(`Tag not resolved for ${name} value`);\n }\n return tagObj;\n}\n// needs to be called before value stringifier to allow for circular anchor refs\nfunction stringifyProps(node, tagObj, { anchors: anchors$1, doc }) {\n if (!doc.directives)\n return '';\n const props = [];\n const anchor = (identity.isScalar(node) || identity.isCollection(node)) && node.anchor;\n if (anchor && anchors.anchorIsValid(anchor)) {\n anchors$1.add(anchor);\n props.push(`&${anchor}`);\n }\n const tag = node.tag ?? (tagObj.default ? null : tagObj.tag);\n if (tag)\n props.push(doc.directives.tagString(tag));\n return props.join(' ');\n}\nfunction stringify(item, ctx, onComment, onChompKeep) {\n if (identity.isPair(item))\n return item.toString(ctx, onComment, onChompKeep);\n if (identity.isAlias(item)) {\n if (ctx.doc.directives)\n return item.toString(ctx);\n if (ctx.resolvedAliases?.has(item)) {\n throw new TypeError(`Cannot stringify circular structure without alias nodes`);\n }\n else {\n if (ctx.resolvedAliases)\n ctx.resolvedAliases.add(item);\n else\n ctx.resolvedAliases = new Set([item]);\n item = item.resolve(ctx.doc);\n }\n }\n let tagObj = undefined;\n const node = identity.isNode(item)\n ? item\n : ctx.doc.createNode(item, { onTagObj: o => (tagObj = o) });\n tagObj ?? (tagObj = getTagObject(ctx.doc.schema.tags, node));\n const props = stringifyProps(node, tagObj, ctx);\n if (props.length > 0)\n ctx.indentAtStart = (ctx.indentAtStart ?? 0) + props.length + 1;\n const str = typeof tagObj.stringify === 'function'\n ? tagObj.stringify(node, ctx, onComment, onChompKeep)\n : identity.isScalar(node)\n ? stringifyString.stringifyString(node, ctx, onComment, onChompKeep)\n : node.toString(ctx, onComment, onChompKeep);\n if (!props)\n return str;\n return identity.isScalar(node) || str[0] === '{' || str[0] === '['\n ? `${props} ${str}`\n : `${props}\\n${ctx.indent}${str}`;\n}\n\nexports.createStringifyContext = createStringifyContext;\nexports.stringify = stringify;\n","'use strict';\n\nvar identity = require('../nodes/identity.js');\nvar Scalar = require('../nodes/Scalar.js');\nvar stringify = require('./stringify.js');\nvar stringifyComment = require('./stringifyComment.js');\n\nfunction stringifyPair({ key, value }, ctx, onComment, onChompKeep) {\n const { allNullValues, doc, indent, indentStep, options: { commentString, indentSeq, simpleKeys } } = ctx;\n let keyComment = (identity.isNode(key) && key.comment) || null;\n if (simpleKeys) {\n if (keyComment) {\n throw new Error('With simple keys, key nodes cannot have comments');\n }\n if (identity.isCollection(key) || (!identity.isNode(key) && typeof key === 'object')) {\n const msg = 'With simple keys, collection cannot be used as a key value';\n throw new Error(msg);\n }\n }\n let explicitKey = !simpleKeys &&\n (!key ||\n (keyComment && value == null && !ctx.inFlow) ||\n identity.isCollection(key) ||\n (identity.isScalar(key)\n ? key.type === Scalar.Scalar.BLOCK_FOLDED || key.type === Scalar.Scalar.BLOCK_LITERAL\n : typeof key === 'object'));\n ctx = Object.assign({}, ctx, {\n allNullValues: false,\n implicitKey: !explicitKey && (simpleKeys || !allNullValues),\n indent: indent + indentStep\n });\n let keyCommentDone = false;\n let chompKeep = false;\n let str = stringify.stringify(key, ctx, () => (keyCommentDone = true), () => (chompKeep = true));\n if (!explicitKey && !ctx.inFlow && str.length > 1024) {\n if (simpleKeys)\n throw new Error('With simple keys, single line scalar must not span more than 1024 characters');\n explicitKey = true;\n }\n if (ctx.inFlow) {\n if (allNullValues || value == null) {\n if (keyCommentDone && onComment)\n onComment();\n return str === '' ? '?' : explicitKey ? `? ${str}` : str;\n }\n }\n else if ((allNullValues && !simpleKeys) || (value == null && explicitKey)) {\n str = `? ${str}`;\n if (keyComment && !keyCommentDone) {\n str += stringifyComment.lineComment(str, ctx.indent, commentString(keyComment));\n }\n else if (chompKeep && onChompKeep)\n onChompKeep();\n return str;\n }\n if (keyCommentDone)\n keyComment = null;\n if (explicitKey) {\n if (keyComment)\n str += stringifyComment.lineComment(str, ctx.indent, commentString(keyComment));\n str = `? ${str}\\n${indent}:`;\n }\n else {\n str = `${str}:`;\n if (keyComment)\n str += stringifyComment.lineComment(str, ctx.indent, commentString(keyComment));\n }\n let vsb, vcb, valueComment;\n if (identity.isNode(value)) {\n vsb = !!value.spaceBefore;\n vcb = value.commentBefore;\n valueComment = value.comment;\n }\n else {\n vsb = false;\n vcb = null;\n valueComment = null;\n if (value && typeof value === 'object')\n value = doc.createNode(value);\n }\n ctx.implicitKey = false;\n if (!explicitKey && !keyComment && identity.isScalar(value))\n ctx.indentAtStart = str.length + 1;\n chompKeep = false;\n if (!indentSeq &&\n indentStep.length >= 2 &&\n !ctx.inFlow &&\n !explicitKey &&\n identity.isSeq(value) &&\n !value.flow &&\n !value.tag &&\n !value.anchor) {\n // If indentSeq === false, consider '- ' as part of indentation where possible\n ctx.indent = ctx.indent.substring(2);\n }\n let valueCommentDone = false;\n const valueStr = stringify.stringify(value, ctx, () => (valueCommentDone = true), () => (chompKeep = true));\n let ws = ' ';\n if (keyComment || vsb || vcb) {\n ws = vsb ? '\\n' : '';\n if (vcb) {\n const cs = commentString(vcb);\n ws += `\\n${stringifyComment.indentComment(cs, ctx.indent)}`;\n }\n if (valueStr === '' && !ctx.inFlow) {\n if (ws === '\\n' && valueComment)\n ws = '\\n\\n';\n }\n else {\n ws += `\\n${ctx.indent}`;\n }\n }\n else if (!explicitKey && identity.isCollection(value)) {\n const vs0 = valueStr[0];\n const nl0 = valueStr.indexOf('\\n');\n const hasNewline = nl0 !== -1;\n const flow = ctx.inFlow ?? value.flow ?? value.items.length === 0;\n if (hasNewline || !flow) {\n let hasPropsLine = false;\n if (hasNewline && (vs0 === '&' || vs0 === '!')) {\n let sp0 = valueStr.indexOf(' ');\n if (vs0 === '&' &&\n sp0 !== -1 &&\n sp0 < nl0 &&\n valueStr[sp0 + 1] === '!') {\n sp0 = valueStr.indexOf(' ', sp0 + 1);\n }\n if (sp0 === -1 || nl0 < sp0)\n hasPropsLine = true;\n }\n if (!hasPropsLine)\n ws = `\\n${ctx.indent}`;\n }\n }\n else if (valueStr === '' || valueStr[0] === '\\n') {\n ws = '';\n }\n str += ws + valueStr;\n if (ctx.inFlow) {\n if (valueCommentDone && onComment)\n onComment();\n }\n else if (valueComment && !valueCommentDone) {\n str += stringifyComment.lineComment(str, ctx.indent, commentString(valueComment));\n }\n else if (chompKeep && onChompKeep) {\n onChompKeep();\n }\n return str;\n}\n\nexports.stringifyPair = stringifyPair;\n","'use strict';\n\nvar node_process = require('process');\n\nfunction debug(logLevel, ...messages) {\n if (logLevel === 'debug')\n console.log(...messages);\n}\nfunction warn(logLevel, warning) {\n if (logLevel === 'debug' || logLevel === 'warn') {\n if (typeof node_process.emitWarning === 'function')\n node_process.emitWarning(warning);\n else\n console.warn(warning);\n }\n}\n\nexports.debug = debug;\nexports.warn = warn;\n","'use strict';\n\nvar identity = require('../../nodes/identity.js');\nvar Scalar = require('../../nodes/Scalar.js');\n\n// If the value associated with a merge key is a single mapping node, each of\n// its key/value pairs is inserted into the current mapping, unless the key\n// already exists in it. If the value associated with the merge key is a\n// sequence, then this sequence is expected to contain mapping nodes and each\n// of these nodes is merged in turn according to its order in the sequence.\n// Keys in mapping nodes earlier in the sequence override keys specified in\n// later mapping nodes. -- http://yaml.org/type/merge.html\nconst MERGE_KEY = '<<';\nconst merge = {\n identify: value => value === MERGE_KEY ||\n (typeof value === 'symbol' && value.description === MERGE_KEY),\n default: 'key',\n tag: 'tag:yaml.org,2002:merge',\n test: /^<<$/,\n resolve: () => Object.assign(new Scalar.Scalar(Symbol(MERGE_KEY)), {\n addToJSMap: addMergeToJSMap\n }),\n stringify: () => MERGE_KEY\n};\nconst isMergeKey = (ctx, key) => (merge.identify(key) ||\n (identity.isScalar(key) &&\n (!key.type || key.type === Scalar.Scalar.PLAIN) &&\n merge.identify(key.value))) &&\n ctx?.doc.schema.tags.some(tag => tag.tag === merge.tag && tag.default);\nfunction addMergeToJSMap(ctx, map, value) {\n value = ctx && identity.isAlias(value) ? value.resolve(ctx.doc) : value;\n if (identity.isSeq(value))\n for (const it of value.items)\n mergeValue(ctx, map, it);\n else if (Array.isArray(value))\n for (const it of value)\n mergeValue(ctx, map, it);\n else\n mergeValue(ctx, map, value);\n}\nfunction mergeValue(ctx, map, value) {\n const source = ctx && identity.isAlias(value) ? value.resolve(ctx.doc) : value;\n if (!identity.isMap(source))\n throw new Error('Merge sources must be maps or map aliases');\n const srcMap = source.toJSON(null, ctx, Map);\n for (const [key, value] of srcMap) {\n if (map instanceof Map) {\n if (!map.has(key))\n map.set(key, value);\n }\n else if (map instanceof Set) {\n map.add(key);\n }\n else if (!Object.prototype.hasOwnProperty.call(map, key)) {\n Object.defineProperty(map, key, {\n value,\n writable: true,\n enumerable: true,\n configurable: true\n });\n }\n }\n return map;\n}\n\nexports.addMergeToJSMap = addMergeToJSMap;\nexports.isMergeKey = isMergeKey;\nexports.merge = merge;\n","'use strict';\n\nvar log = require('../log.js');\nvar merge = require('../schema/yaml-1.1/merge.js');\nvar stringify = require('../stringify/stringify.js');\nvar identity = require('./identity.js');\nvar toJS = require('./toJS.js');\n\nfunction addPairToJSMap(ctx, map, { key, value }) {\n if (identity.isNode(key) && key.addToJSMap)\n key.addToJSMap(ctx, map, value);\n // TODO: Should drop this special case for bare << handling\n else if (merge.isMergeKey(ctx, key))\n merge.addMergeToJSMap(ctx, map, value);\n else {\n const jsKey = toJS.toJS(key, '', ctx);\n if (map instanceof Map) {\n map.set(jsKey, toJS.toJS(value, jsKey, ctx));\n }\n else if (map instanceof Set) {\n map.add(jsKey);\n }\n else {\n const stringKey = stringifyKey(key, jsKey, ctx);\n const jsValue = toJS.toJS(value, stringKey, ctx);\n if (stringKey in map)\n Object.defineProperty(map, stringKey, {\n value: jsValue,\n writable: true,\n enumerable: true,\n configurable: true\n });\n else\n map[stringKey] = jsValue;\n }\n }\n return map;\n}\nfunction stringifyKey(key, jsKey, ctx) {\n if (jsKey === null)\n return '';\n // eslint-disable-next-line @typescript-eslint/no-base-to-string\n if (typeof jsKey !== 'object')\n return String(jsKey);\n if (identity.isNode(key) && ctx?.doc) {\n const strCtx = stringify.createStringifyContext(ctx.doc, {});\n strCtx.anchors = new Set();\n for (const node of ctx.anchors.keys())\n strCtx.anchors.add(node.anchor);\n strCtx.inFlow = true;\n strCtx.inStringifyKey = true;\n const strKey = key.toString(strCtx);\n if (!ctx.mapKeyWarned) {\n let jsonStr = JSON.stringify(strKey);\n if (jsonStr.length > 40)\n jsonStr = jsonStr.substring(0, 36) + '...\"';\n log.warn(ctx.doc.options.logLevel, `Keys with collection values will be stringified due to JS Object restrictions: ${jsonStr}. Set mapAsMap: true to use object keys.`);\n ctx.mapKeyWarned = true;\n }\n return strKey;\n }\n return JSON.stringify(jsKey);\n}\n\nexports.addPairToJSMap = addPairToJSMap;\n","'use strict';\n\nvar createNode = require('../doc/createNode.js');\nvar stringifyPair = require('../stringify/stringifyPair.js');\nvar addPairToJSMap = require('./addPairToJSMap.js');\nvar identity = require('./identity.js');\n\nfunction createPair(key, value, ctx) {\n const k = createNode.createNode(key, undefined, ctx);\n const v = createNode.createNode(value, undefined, ctx);\n return new Pair(k, v);\n}\nclass Pair {\n constructor(key, value = null) {\n Object.defineProperty(this, identity.NODE_TYPE, { value: identity.PAIR });\n this.key = key;\n this.value = value;\n }\n clone(schema) {\n let { key, value } = this;\n if (identity.isNode(key))\n key = key.clone(schema);\n if (identity.isNode(value))\n value = value.clone(schema);\n return new Pair(key, value);\n }\n toJSON(_, ctx) {\n const pair = ctx?.mapAsMap ? new Map() : {};\n return addPairToJSMap.addPairToJSMap(ctx, pair, this);\n }\n toString(ctx, onComment, onChompKeep) {\n return ctx?.doc\n ? stringifyPair.stringifyPair(this, ctx, onComment, onChompKeep)\n : JSON.stringify(this);\n }\n}\n\nexports.Pair = Pair;\nexports.createPair = createPair;\n","'use strict';\n\nvar identity = require('../nodes/identity.js');\nvar stringify = require('./stringify.js');\nvar stringifyComment = require('./stringifyComment.js');\n\nfunction stringifyCollection(collection, ctx, options) {\n const flow = ctx.inFlow ?? collection.flow;\n const stringify = flow ? stringifyFlowCollection : stringifyBlockCollection;\n return stringify(collection, ctx, options);\n}\nfunction stringifyBlockCollection({ comment, items }, ctx, { blockItemPrefix, flowChars, itemIndent, onChompKeep, onComment }) {\n const { indent, options: { commentString } } = ctx;\n const itemCtx = Object.assign({}, ctx, { indent: itemIndent, type: null });\n let chompKeep = false; // flag for the preceding node's status\n const lines = [];\n for (let i = 0; i < items.length; ++i) {\n const item = items[i];\n let comment = null;\n if (identity.isNode(item)) {\n if (!chompKeep && item.spaceBefore)\n lines.push('');\n addCommentBefore(ctx, lines, item.commentBefore, chompKeep);\n if (item.comment)\n comment = item.comment;\n }\n else if (identity.isPair(item)) {\n const ik = identity.isNode(item.key) ? item.key : null;\n if (ik) {\n if (!chompKeep && ik.spaceBefore)\n lines.push('');\n addCommentBefore(ctx, lines, ik.commentBefore, chompKeep);\n }\n }\n chompKeep = false;\n let str = stringify.stringify(item, itemCtx, () => (comment = null), () => (chompKeep = true));\n if (comment)\n str += stringifyComment.lineComment(str, itemIndent, commentString(comment));\n if (chompKeep && comment)\n chompKeep = false;\n lines.push(blockItemPrefix + str);\n }\n let str;\n if (lines.length === 0) {\n str = flowChars.start + flowChars.end;\n }\n else {\n str = lines[0];\n for (let i = 1; i < lines.length; ++i) {\n const line = lines[i];\n str += line ? `\\n${indent}${line}` : '\\n';\n }\n }\n if (comment) {\n str += '\\n' + stringifyComment.indentComment(commentString(comment), indent);\n if (onComment)\n onComment();\n }\n else if (chompKeep && onChompKeep)\n onChompKeep();\n return str;\n}\nfunction stringifyFlowCollection({ items }, ctx, { flowChars, itemIndent }) {\n const { indent, indentStep, flowCollectionPadding: fcPadding, options: { commentString } } = ctx;\n itemIndent += indentStep;\n const itemCtx = Object.assign({}, ctx, {\n indent: itemIndent,\n inFlow: true,\n type: null\n });\n let reqNewline = false;\n let linesAtValue = 0;\n const lines = [];\n for (let i = 0; i < items.length; ++i) {\n const item = items[i];\n let comment = null;\n if (identity.isNode(item)) {\n if (item.spaceBefore)\n lines.push('');\n addCommentBefore(ctx, lines, item.commentBefore, false);\n if (item.comment)\n comment = item.comment;\n }\n else if (identity.isPair(item)) {\n const ik = identity.isNode(item.key) ? item.key : null;\n if (ik) {\n if (ik.spaceBefore)\n lines.push('');\n addCommentBefore(ctx, lines, ik.commentBefore, false);\n if (ik.comment)\n reqNewline = true;\n }\n const iv = identity.isNode(item.value) ? item.value : null;\n if (iv) {\n if (iv.comment)\n comment = iv.comment;\n if (iv.commentBefore)\n reqNewline = true;\n }\n else if (item.value == null && ik?.comment) {\n comment = ik.comment;\n }\n }\n if (comment)\n reqNewline = true;\n let str = stringify.stringify(item, itemCtx, () => (comment = null));\n if (i < items.length - 1)\n str += ',';\n if (comment)\n str += stringifyComment.lineComment(str, itemIndent, commentString(comment));\n if (!reqNewline && (lines.length > linesAtValue || str.includes('\\n')))\n reqNewline = true;\n lines.push(str);\n linesAtValue = lines.length;\n }\n const { start, end } = flowChars;\n if (lines.length === 0) {\n return start + end;\n }\n else {\n if (!reqNewline) {\n const len = lines.reduce((sum, line) => sum + line.length + 2, 2);\n reqNewline = ctx.options.lineWidth > 0 && len > ctx.options.lineWidth;\n }\n if (reqNewline) {\n let str = start;\n for (const line of lines)\n str += line ? `\\n${indentStep}${indent}${line}` : '\\n';\n return `${str}\\n${indent}${end}`;\n }\n else {\n return `${start}${fcPadding}${lines.join(' ')}${fcPadding}${end}`;\n }\n }\n}\nfunction addCommentBefore({ indent, options: { commentString } }, lines, comment, chompKeep) {\n if (comment && chompKeep)\n comment = comment.replace(/^\\n+/, '');\n if (comment) {\n const ic = stringifyComment.indentComment(commentString(comment), indent);\n lines.push(ic.trimStart()); // Avoid double indent on first line\n }\n}\n\nexports.stringifyCollection = stringifyCollection;\n","'use strict';\n\nvar stringifyCollection = require('../stringify/stringifyCollection.js');\nvar addPairToJSMap = require('./addPairToJSMap.js');\nvar Collection = require('./Collection.js');\nvar identity = require('./identity.js');\nvar Pair = require('./Pair.js');\nvar Scalar = require('./Scalar.js');\n\nfunction findPair(items, key) {\n const k = identity.isScalar(key) ? key.value : key;\n for (const it of items) {\n if (identity.isPair(it)) {\n if (it.key === key || it.key === k)\n return it;\n if (identity.isScalar(it.key) && it.key.value === k)\n return it;\n }\n }\n return undefined;\n}\nclass YAMLMap extends Collection.Collection {\n static get tagName() {\n return 'tag:yaml.org,2002:map';\n }\n constructor(schema) {\n super(identity.MAP, schema);\n this.items = [];\n }\n /**\n * A generic collection parsing method that can be extended\n * to other node classes that inherit from YAMLMap\n */\n static from(schema, obj, ctx) {\n const { keepUndefined, replacer } = ctx;\n const map = new this(schema);\n const add = (key, value) => {\n if (typeof replacer === 'function')\n value = replacer.call(obj, key, value);\n else if (Array.isArray(replacer) && !replacer.includes(key))\n return;\n if (value !== undefined || keepUndefined)\n map.items.push(Pair.createPair(key, value, ctx));\n };\n if (obj instanceof Map) {\n for (const [key, value] of obj)\n add(key, value);\n }\n else if (obj && typeof obj === 'object') {\n for (const key of Object.keys(obj))\n add(key, obj[key]);\n }\n if (typeof schema.sortMapEntries === 'function') {\n map.items.sort(schema.sortMapEntries);\n }\n return map;\n }\n /**\n * Adds a value to the collection.\n *\n * @param overwrite - If not set `true`, using a key that is already in the\n * collection will throw. Otherwise, overwrites the previous value.\n */\n add(pair, overwrite) {\n let _pair;\n if (identity.isPair(pair))\n _pair = pair;\n else if (!pair || typeof pair !== 'object' || !('key' in pair)) {\n // In TypeScript, this never happens.\n _pair = new Pair.Pair(pair, pair?.value);\n }\n else\n _pair = new Pair.Pair(pair.key, pair.value);\n const prev = findPair(this.items, _pair.key);\n const sortEntries = this.schema?.sortMapEntries;\n if (prev) {\n if (!overwrite)\n throw new Error(`Key ${_pair.key} already set`);\n // For scalars, keep the old node & its comments and anchors\n if (identity.isScalar(prev.value) && Scalar.isScalarValue(_pair.value))\n prev.value.value = _pair.value;\n else\n prev.value = _pair.value;\n }\n else if (sortEntries) {\n const i = this.items.findIndex(item => sortEntries(_pair, item) < 0);\n if (i === -1)\n this.items.push(_pair);\n else\n this.items.splice(i, 0, _pair);\n }\n else {\n this.items.push(_pair);\n }\n }\n delete(key) {\n const it = findPair(this.items, key);\n if (!it)\n return false;\n const del = this.items.splice(this.items.indexOf(it), 1);\n return del.length > 0;\n }\n get(key, keepScalar) {\n const it = findPair(this.items, key);\n const node = it?.value;\n return (!keepScalar && identity.isScalar(node) ? node.value : node) ?? undefined;\n }\n has(key) {\n return !!findPair(this.items, key);\n }\n set(key, value) {\n this.add(new Pair.Pair(key, value), true);\n }\n /**\n * @param ctx - Conversion context, originally set in Document#toJS()\n * @param {Class} Type - If set, forces the returned collection type\n * @returns Instance of Type, Map, or Object\n */\n toJSON(_, ctx, Type) {\n const map = Type ? new Type() : ctx?.mapAsMap ? new Map() : {};\n if (ctx?.onCreate)\n ctx.onCreate(map);\n for (const item of this.items)\n addPairToJSMap.addPairToJSMap(ctx, map, item);\n return map;\n }\n toString(ctx, onComment, onChompKeep) {\n if (!ctx)\n return JSON.stringify(this);\n for (const item of this.items) {\n if (!identity.isPair(item))\n throw new Error(`Map items must all be pairs; found ${JSON.stringify(item)} instead`);\n }\n if (!ctx.allNullValues && this.hasAllNullValues(false))\n ctx = Object.assign({}, ctx, { allNullValues: true });\n return stringifyCollection.stringifyCollection(this, ctx, {\n blockItemPrefix: '',\n flowChars: { start: '{', end: '}' },\n itemIndent: ctx.indent || '',\n onChompKeep,\n onComment\n });\n }\n}\n\nexports.YAMLMap = YAMLMap;\nexports.findPair = findPair;\n","'use strict';\n\nvar identity = require('../../nodes/identity.js');\nvar YAMLMap = require('../../nodes/YAMLMap.js');\n\nconst map = {\n collection: 'map',\n default: true,\n nodeClass: YAMLMap.YAMLMap,\n tag: 'tag:yaml.org,2002:map',\n resolve(map, onError) {\n if (!identity.isMap(map))\n onError('Expected a mapping for this tag');\n return map;\n },\n createNode: (schema, obj, ctx) => YAMLMap.YAMLMap.from(schema, obj, ctx)\n};\n\nexports.map = map;\n","'use strict';\n\nvar createNode = require('../doc/createNode.js');\nvar stringifyCollection = require('../stringify/stringifyCollection.js');\nvar Collection = require('./Collection.js');\nvar identity = require('./identity.js');\nvar Scalar = require('./Scalar.js');\nvar toJS = require('./toJS.js');\n\nclass YAMLSeq extends Collection.Collection {\n static get tagName() {\n return 'tag:yaml.org,2002:seq';\n }\n constructor(schema) {\n super(identity.SEQ, schema);\n this.items = [];\n }\n add(value) {\n this.items.push(value);\n }\n /**\n * Removes a value from the collection.\n *\n * `key` must contain a representation of an integer for this to succeed.\n * It may be wrapped in a `Scalar`.\n *\n * @returns `true` if the item was found and removed.\n */\n delete(key) {\n const idx = asItemIndex(key);\n if (typeof idx !== 'number')\n return false;\n const del = this.items.splice(idx, 1);\n return del.length > 0;\n }\n get(key, keepScalar) {\n const idx = asItemIndex(key);\n if (typeof idx !== 'number')\n return undefined;\n const it = this.items[idx];\n return !keepScalar && identity.isScalar(it) ? it.value : it;\n }\n /**\n * Checks if the collection includes a value with the key `key`.\n *\n * `key` must contain a representation of an integer for this to succeed.\n * It may be wrapped in a `Scalar`.\n */\n has(key) {\n const idx = asItemIndex(key);\n return typeof idx === 'number' && idx < this.items.length;\n }\n /**\n * Sets a value in this collection. For `!!set`, `value` needs to be a\n * boolean to add/remove the item from the set.\n *\n * If `key` does not contain a representation of an integer, this will throw.\n * It may be wrapped in a `Scalar`.\n */\n set(key, value) {\n const idx = asItemIndex(key);\n if (typeof idx !== 'number')\n throw new Error(`Expected a valid index, not ${key}.`);\n const prev = this.items[idx];\n if (identity.isScalar(prev) && Scalar.isScalarValue(value))\n prev.value = value;\n else\n this.items[idx] = value;\n }\n toJSON(_, ctx) {\n const seq = [];\n if (ctx?.onCreate)\n ctx.onCreate(seq);\n let i = 0;\n for (const item of this.items)\n seq.push(toJS.toJS(item, String(i++), ctx));\n return seq;\n }\n toString(ctx, onComment, onChompKeep) {\n if (!ctx)\n return JSON.stringify(this);\n return stringifyCollection.stringifyCollection(this, ctx, {\n blockItemPrefix: '- ',\n flowChars: { start: '[', end: ']' },\n itemIndent: (ctx.indent || '') + ' ',\n onChompKeep,\n onComment\n });\n }\n static from(schema, obj, ctx) {\n const { replacer } = ctx;\n const seq = new this(schema);\n if (obj && Symbol.iterator in Object(obj)) {\n let i = 0;\n for (let it of obj) {\n if (typeof replacer === 'function') {\n const key = obj instanceof Set ? it : String(i++);\n it = replacer.call(obj, key, it);\n }\n seq.items.push(createNode.createNode(it, undefined, ctx));\n }\n }\n return seq;\n }\n}\nfunction asItemIndex(key) {\n let idx = identity.isScalar(key) ? key.value : key;\n if (idx && typeof idx === 'string')\n idx = Number(idx);\n return typeof idx === 'number' && Number.isInteger(idx) && idx >= 0\n ? idx\n : null;\n}\n\nexports.YAMLSeq = YAMLSeq;\n","'use strict';\n\nvar identity = require('../../nodes/identity.js');\nvar YAMLSeq = require('../../nodes/YAMLSeq.js');\n\nconst seq = {\n collection: 'seq',\n default: true,\n nodeClass: YAMLSeq.YAMLSeq,\n tag: 'tag:yaml.org,2002:seq',\n resolve(seq, onError) {\n if (!identity.isSeq(seq))\n onError('Expected a sequence for this tag');\n return seq;\n },\n createNode: (schema, obj, ctx) => YAMLSeq.YAMLSeq.from(schema, obj, ctx)\n};\n\nexports.seq = seq;\n","'use strict';\n\nvar stringifyString = require('../../stringify/stringifyString.js');\n\nconst string = {\n identify: value => typeof value === 'string',\n default: true,\n tag: 'tag:yaml.org,2002:str',\n resolve: str => str,\n stringify(item, ctx, onComment, onChompKeep) {\n ctx = Object.assign({ actualString: true }, ctx);\n return stringifyString.stringifyString(item, ctx, onComment, onChompKeep);\n }\n};\n\nexports.string = string;\n","'use strict';\n\nvar Scalar = require('../../nodes/Scalar.js');\n\nconst nullTag = {\n identify: value => value == null,\n createNode: () => new Scalar.Scalar(null),\n default: true,\n tag: 'tag:yaml.org,2002:null',\n test: /^(?:~|[Nn]ull|NULL)?$/,\n resolve: () => new Scalar.Scalar(null),\n stringify: ({ source }, ctx) => typeof source === 'string' && nullTag.test.test(source)\n ? source\n : ctx.options.nullStr\n};\n\nexports.nullTag = nullTag;\n","'use strict';\n\nvar Scalar = require('../../nodes/Scalar.js');\n\nconst boolTag = {\n identify: value => typeof value === 'boolean',\n default: true,\n tag: 'tag:yaml.org,2002:bool',\n test: /^(?:[Tt]rue|TRUE|[Ff]alse|FALSE)$/,\n resolve: str => new Scalar.Scalar(str[0] === 't' || str[0] === 'T'),\n stringify({ source, value }, ctx) {\n if (source && boolTag.test.test(source)) {\n const sv = source[0] === 't' || source[0] === 'T';\n if (value === sv)\n return source;\n }\n return value ? ctx.options.trueStr : ctx.options.falseStr;\n }\n};\n\nexports.boolTag = boolTag;\n","'use strict';\n\nfunction stringifyNumber({ format, minFractionDigits, tag, value }) {\n if (typeof value === 'bigint')\n return String(value);\n const num = typeof value === 'number' ? value : Number(value);\n if (!isFinite(num))\n return isNaN(num) ? '.nan' : num < 0 ? '-.inf' : '.inf';\n let n = Object.is(value, -0) ? '-0' : JSON.stringify(value);\n if (!format &&\n minFractionDigits &&\n (!tag || tag === 'tag:yaml.org,2002:float') &&\n /^\\d/.test(n)) {\n let i = n.indexOf('.');\n if (i < 0) {\n i = n.length;\n n += '.';\n }\n let d = minFractionDigits - (n.length - i - 1);\n while (d-- > 0)\n n += '0';\n }\n return n;\n}\n\nexports.stringifyNumber = stringifyNumber;\n","'use strict';\n\nvar Scalar = require('../../nodes/Scalar.js');\nvar stringifyNumber = require('../../stringify/stringifyNumber.js');\n\nconst floatNaN = {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n test: /^(?:[-+]?\\.(?:inf|Inf|INF)|\\.nan|\\.NaN|\\.NAN)$/,\n resolve: str => str.slice(-3).toLowerCase() === 'nan'\n ? NaN\n : str[0] === '-'\n ? Number.NEGATIVE_INFINITY\n : Number.POSITIVE_INFINITY,\n stringify: stringifyNumber.stringifyNumber\n};\nconst floatExp = {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n format: 'EXP',\n test: /^[-+]?(?:\\.[0-9]+|[0-9]+(?:\\.[0-9]*)?)[eE][-+]?[0-9]+$/,\n resolve: str => parseFloat(str),\n stringify(node) {\n const num = Number(node.value);\n return isFinite(num) ? num.toExponential() : stringifyNumber.stringifyNumber(node);\n }\n};\nconst float = {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n test: /^[-+]?(?:\\.[0-9]+|[0-9]+\\.[0-9]*)$/,\n resolve(str) {\n const node = new Scalar.Scalar(parseFloat(str));\n const dot = str.indexOf('.');\n if (dot !== -1 && str[str.length - 1] === '0')\n node.minFractionDigits = str.length - dot - 1;\n return node;\n },\n stringify: stringifyNumber.stringifyNumber\n};\n\nexports.float = float;\nexports.floatExp = floatExp;\nexports.floatNaN = floatNaN;\n","'use strict';\n\nvar stringifyNumber = require('../../stringify/stringifyNumber.js');\n\nconst intIdentify = (value) => typeof value === 'bigint' || Number.isInteger(value);\nconst intResolve = (str, offset, radix, { intAsBigInt }) => (intAsBigInt ? BigInt(str) : parseInt(str.substring(offset), radix));\nfunction intStringify(node, radix, prefix) {\n const { value } = node;\n if (intIdentify(value) && value >= 0)\n return prefix + value.toString(radix);\n return stringifyNumber.stringifyNumber(node);\n}\nconst intOct = {\n identify: value => intIdentify(value) && value >= 0,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n format: 'OCT',\n test: /^0o[0-7]+$/,\n resolve: (str, _onError, opt) => intResolve(str, 2, 8, opt),\n stringify: node => intStringify(node, 8, '0o')\n};\nconst int = {\n identify: intIdentify,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n test: /^[-+]?[0-9]+$/,\n resolve: (str, _onError, opt) => intResolve(str, 0, 10, opt),\n stringify: stringifyNumber.stringifyNumber\n};\nconst intHex = {\n identify: value => intIdentify(value) && value >= 0,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n format: 'HEX',\n test: /^0x[0-9a-fA-F]+$/,\n resolve: (str, _onError, opt) => intResolve(str, 2, 16, opt),\n stringify: node => intStringify(node, 16, '0x')\n};\n\nexports.int = int;\nexports.intHex = intHex;\nexports.intOct = intOct;\n","'use strict';\n\nvar map = require('../common/map.js');\nvar _null = require('../common/null.js');\nvar seq = require('../common/seq.js');\nvar string = require('../common/string.js');\nvar bool = require('./bool.js');\nvar float = require('./float.js');\nvar int = require('./int.js');\n\nconst schema = [\n map.map,\n seq.seq,\n string.string,\n _null.nullTag,\n bool.boolTag,\n int.intOct,\n int.int,\n int.intHex,\n float.floatNaN,\n float.floatExp,\n float.float\n];\n\nexports.schema = schema;\n","'use strict';\n\nvar Scalar = require('../../nodes/Scalar.js');\nvar map = require('../common/map.js');\nvar seq = require('../common/seq.js');\n\nfunction intIdentify(value) {\n return typeof value === 'bigint' || Number.isInteger(value);\n}\nconst stringifyJSON = ({ value }) => JSON.stringify(value);\nconst jsonScalars = [\n {\n identify: value => typeof value === 'string',\n default: true,\n tag: 'tag:yaml.org,2002:str',\n resolve: str => str,\n stringify: stringifyJSON\n },\n {\n identify: value => value == null,\n createNode: () => new Scalar.Scalar(null),\n default: true,\n tag: 'tag:yaml.org,2002:null',\n test: /^null$/,\n resolve: () => null,\n stringify: stringifyJSON\n },\n {\n identify: value => typeof value === 'boolean',\n default: true,\n tag: 'tag:yaml.org,2002:bool',\n test: /^true$|^false$/,\n resolve: str => str === 'true',\n stringify: stringifyJSON\n },\n {\n identify: intIdentify,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n test: /^-?(?:0|[1-9][0-9]*)$/,\n resolve: (str, _onError, { intAsBigInt }) => intAsBigInt ? BigInt(str) : parseInt(str, 10),\n stringify: ({ value }) => intIdentify(value) ? value.toString() : JSON.stringify(value)\n },\n {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n test: /^-?(?:0|[1-9][0-9]*)(?:\\.[0-9]*)?(?:[eE][-+]?[0-9]+)?$/,\n resolve: str => parseFloat(str),\n stringify: stringifyJSON\n }\n];\nconst jsonError = {\n default: true,\n tag: '',\n test: /^/,\n resolve(str, onError) {\n onError(`Unresolved plain scalar ${JSON.stringify(str)}`);\n return str;\n }\n};\nconst schema = [map.map, seq.seq].concat(jsonScalars, jsonError);\n\nexports.schema = schema;\n","'use strict';\n\nvar node_buffer = require('buffer');\nvar Scalar = require('../../nodes/Scalar.js');\nvar stringifyString = require('../../stringify/stringifyString.js');\n\nconst binary = {\n identify: value => value instanceof Uint8Array, // Buffer inherits from Uint8Array\n default: false,\n tag: 'tag:yaml.org,2002:binary',\n /**\n * Returns a Buffer in node and an Uint8Array in browsers\n *\n * To use the resulting buffer as an image, you'll want to do something like:\n *\n * const blob = new Blob([buffer], { type: 'image/jpeg' })\n * document.querySelector('#photo').src = URL.createObjectURL(blob)\n */\n resolve(src, onError) {\n if (typeof node_buffer.Buffer === 'function') {\n return node_buffer.Buffer.from(src, 'base64');\n }\n else if (typeof atob === 'function') {\n // On IE 11, atob() can't handle newlines\n const str = atob(src.replace(/[\\n\\r]/g, ''));\n const buffer = new Uint8Array(str.length);\n for (let i = 0; i < str.length; ++i)\n buffer[i] = str.charCodeAt(i);\n return buffer;\n }\n else {\n onError('This environment does not support reading binary tags; either Buffer or atob is required');\n return src;\n }\n },\n stringify({ comment, type, value }, ctx, onComment, onChompKeep) {\n if (!value)\n return '';\n const buf = value; // checked earlier by binary.identify()\n let str;\n if (typeof node_buffer.Buffer === 'function') {\n str =\n buf instanceof node_buffer.Buffer\n ? buf.toString('base64')\n : node_buffer.Buffer.from(buf.buffer).toString('base64');\n }\n else if (typeof btoa === 'function') {\n let s = '';\n for (let i = 0; i < buf.length; ++i)\n s += String.fromCharCode(buf[i]);\n str = btoa(s);\n }\n else {\n throw new Error('This environment does not support writing binary tags; either Buffer or btoa is required');\n }\n type ?? (type = Scalar.Scalar.BLOCK_LITERAL);\n if (type !== Scalar.Scalar.QUOTE_DOUBLE) {\n const lineWidth = Math.max(ctx.options.lineWidth - ctx.indent.length, ctx.options.minContentWidth);\n const n = Math.ceil(str.length / lineWidth);\n const lines = new Array(n);\n for (let i = 0, o = 0; i < n; ++i, o += lineWidth) {\n lines[i] = str.substr(o, lineWidth);\n }\n str = lines.join(type === Scalar.Scalar.BLOCK_LITERAL ? '\\n' : ' ');\n }\n return stringifyString.stringifyString({ comment, type, value: str }, ctx, onComment, onChompKeep);\n }\n};\n\nexports.binary = binary;\n","'use strict';\n\nvar identity = require('../../nodes/identity.js');\nvar Pair = require('../../nodes/Pair.js');\nvar Scalar = require('../../nodes/Scalar.js');\nvar YAMLSeq = require('../../nodes/YAMLSeq.js');\n\nfunction resolvePairs(seq, onError) {\n if (identity.isSeq(seq)) {\n for (let i = 0; i < seq.items.length; ++i) {\n let item = seq.items[i];\n if (identity.isPair(item))\n continue;\n else if (identity.isMap(item)) {\n if (item.items.length > 1)\n onError('Each pair must have its own sequence indicator');\n const pair = item.items[0] || new Pair.Pair(new Scalar.Scalar(null));\n if (item.commentBefore)\n pair.key.commentBefore = pair.key.commentBefore\n ? `${item.commentBefore}\\n${pair.key.commentBefore}`\n : item.commentBefore;\n if (item.comment) {\n const cn = pair.value ?? pair.key;\n cn.comment = cn.comment\n ? `${item.comment}\\n${cn.comment}`\n : item.comment;\n }\n item = pair;\n }\n seq.items[i] = identity.isPair(item) ? item : new Pair.Pair(item);\n }\n }\n else\n onError('Expected a sequence for this tag');\n return seq;\n}\nfunction createPairs(schema, iterable, ctx) {\n const { replacer } = ctx;\n const pairs = new YAMLSeq.YAMLSeq(schema);\n pairs.tag = 'tag:yaml.org,2002:pairs';\n let i = 0;\n if (iterable && Symbol.iterator in Object(iterable))\n for (let it of iterable) {\n if (typeof replacer === 'function')\n it = replacer.call(iterable, String(i++), it);\n let key, value;\n if (Array.isArray(it)) {\n if (it.length === 2) {\n key = it[0];\n value = it[1];\n }\n else\n throw new TypeError(`Expected [key, value] tuple: ${it}`);\n }\n else if (it && it instanceof Object) {\n const keys = Object.keys(it);\n if (keys.length === 1) {\n key = keys[0];\n value = it[key];\n }\n else {\n throw new TypeError(`Expected tuple with one key, not ${keys.length} keys`);\n }\n }\n else {\n key = it;\n }\n pairs.items.push(Pair.createPair(key, value, ctx));\n }\n return pairs;\n}\nconst pairs = {\n collection: 'seq',\n default: false,\n tag: 'tag:yaml.org,2002:pairs',\n resolve: resolvePairs,\n createNode: createPairs\n};\n\nexports.createPairs = createPairs;\nexports.pairs = pairs;\nexports.resolvePairs = resolvePairs;\n","'use strict';\n\nvar identity = require('../../nodes/identity.js');\nvar toJS = require('../../nodes/toJS.js');\nvar YAMLMap = require('../../nodes/YAMLMap.js');\nvar YAMLSeq = require('../../nodes/YAMLSeq.js');\nvar pairs = require('./pairs.js');\n\nclass YAMLOMap extends YAMLSeq.YAMLSeq {\n constructor() {\n super();\n this.add = YAMLMap.YAMLMap.prototype.add.bind(this);\n this.delete = YAMLMap.YAMLMap.prototype.delete.bind(this);\n this.get = YAMLMap.YAMLMap.prototype.get.bind(this);\n this.has = YAMLMap.YAMLMap.prototype.has.bind(this);\n this.set = YAMLMap.YAMLMap.prototype.set.bind(this);\n this.tag = YAMLOMap.tag;\n }\n /**\n * If `ctx` is given, the return type is actually `Map`,\n * but TypeScript won't allow widening the signature of a child method.\n */\n toJSON(_, ctx) {\n if (!ctx)\n return super.toJSON(_);\n const map = new Map();\n if (ctx?.onCreate)\n ctx.onCreate(map);\n for (const pair of this.items) {\n let key, value;\n if (identity.isPair(pair)) {\n key = toJS.toJS(pair.key, '', ctx);\n value = toJS.toJS(pair.value, key, ctx);\n }\n else {\n key = toJS.toJS(pair, '', ctx);\n }\n if (map.has(key))\n throw new Error('Ordered maps must not include duplicate keys');\n map.set(key, value);\n }\n return map;\n }\n static from(schema, iterable, ctx) {\n const pairs$1 = pairs.createPairs(schema, iterable, ctx);\n const omap = new this();\n omap.items = pairs$1.items;\n return omap;\n }\n}\nYAMLOMap.tag = 'tag:yaml.org,2002:omap';\nconst omap = {\n collection: 'seq',\n identify: value => value instanceof Map,\n nodeClass: YAMLOMap,\n default: false,\n tag: 'tag:yaml.org,2002:omap',\n resolve(seq, onError) {\n const pairs$1 = pairs.resolvePairs(seq, onError);\n const seenKeys = [];\n for (const { key } of pairs$1.items) {\n if (identity.isScalar(key)) {\n if (seenKeys.includes(key.value)) {\n onError(`Ordered maps must not include duplicate keys: ${key.value}`);\n }\n else {\n seenKeys.push(key.value);\n }\n }\n }\n return Object.assign(new YAMLOMap(), pairs$1);\n },\n createNode: (schema, iterable, ctx) => YAMLOMap.from(schema, iterable, ctx)\n};\n\nexports.YAMLOMap = YAMLOMap;\nexports.omap = omap;\n","'use strict';\n\nvar Scalar = require('../../nodes/Scalar.js');\n\nfunction boolStringify({ value, source }, ctx) {\n const boolObj = value ? trueTag : falseTag;\n if (source && boolObj.test.test(source))\n return source;\n return value ? ctx.options.trueStr : ctx.options.falseStr;\n}\nconst trueTag = {\n identify: value => value === true,\n default: true,\n tag: 'tag:yaml.org,2002:bool',\n test: /^(?:Y|y|[Yy]es|YES|[Tt]rue|TRUE|[Oo]n|ON)$/,\n resolve: () => new Scalar.Scalar(true),\n stringify: boolStringify\n};\nconst falseTag = {\n identify: value => value === false,\n default: true,\n tag: 'tag:yaml.org,2002:bool',\n test: /^(?:N|n|[Nn]o|NO|[Ff]alse|FALSE|[Oo]ff|OFF)$/,\n resolve: () => new Scalar.Scalar(false),\n stringify: boolStringify\n};\n\nexports.falseTag = falseTag;\nexports.trueTag = trueTag;\n","'use strict';\n\nvar Scalar = require('../../nodes/Scalar.js');\nvar stringifyNumber = require('../../stringify/stringifyNumber.js');\n\nconst floatNaN = {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n test: /^(?:[-+]?\\.(?:inf|Inf|INF)|\\.nan|\\.NaN|\\.NAN)$/,\n resolve: (str) => str.slice(-3).toLowerCase() === 'nan'\n ? NaN\n : str[0] === '-'\n ? Number.NEGATIVE_INFINITY\n : Number.POSITIVE_INFINITY,\n stringify: stringifyNumber.stringifyNumber\n};\nconst floatExp = {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n format: 'EXP',\n test: /^[-+]?(?:[0-9][0-9_]*)?(?:\\.[0-9_]*)?[eE][-+]?[0-9]+$/,\n resolve: (str) => parseFloat(str.replace(/_/g, '')),\n stringify(node) {\n const num = Number(node.value);\n return isFinite(num) ? num.toExponential() : stringifyNumber.stringifyNumber(node);\n }\n};\nconst float = {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n test: /^[-+]?(?:[0-9][0-9_]*)?\\.[0-9_]*$/,\n resolve(str) {\n const node = new Scalar.Scalar(parseFloat(str.replace(/_/g, '')));\n const dot = str.indexOf('.');\n if (dot !== -1) {\n const f = str.substring(dot + 1).replace(/_/g, '');\n if (f[f.length - 1] === '0')\n node.minFractionDigits = f.length;\n }\n return node;\n },\n stringify: stringifyNumber.stringifyNumber\n};\n\nexports.float = float;\nexports.floatExp = floatExp;\nexports.floatNaN = floatNaN;\n","'use strict';\n\nvar stringifyNumber = require('../../stringify/stringifyNumber.js');\n\nconst intIdentify = (value) => typeof value === 'bigint' || Number.isInteger(value);\nfunction intResolve(str, offset, radix, { intAsBigInt }) {\n const sign = str[0];\n if (sign === '-' || sign === '+')\n offset += 1;\n str = str.substring(offset).replace(/_/g, '');\n if (intAsBigInt) {\n switch (radix) {\n case 2:\n str = `0b${str}`;\n break;\n case 8:\n str = `0o${str}`;\n break;\n case 16:\n str = `0x${str}`;\n break;\n }\n const n = BigInt(str);\n return sign === '-' ? BigInt(-1) * n : n;\n }\n const n = parseInt(str, radix);\n return sign === '-' ? -1 * n : n;\n}\nfunction intStringify(node, radix, prefix) {\n const { value } = node;\n if (intIdentify(value)) {\n const str = value.toString(radix);\n return value < 0 ? '-' + prefix + str.substr(1) : prefix + str;\n }\n return stringifyNumber.stringifyNumber(node);\n}\nconst intBin = {\n identify: intIdentify,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n format: 'BIN',\n test: /^[-+]?0b[0-1_]+$/,\n resolve: (str, _onError, opt) => intResolve(str, 2, 2, opt),\n stringify: node => intStringify(node, 2, '0b')\n};\nconst intOct = {\n identify: intIdentify,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n format: 'OCT',\n test: /^[-+]?0[0-7_]+$/,\n resolve: (str, _onError, opt) => intResolve(str, 1, 8, opt),\n stringify: node => intStringify(node, 8, '0')\n};\nconst int = {\n identify: intIdentify,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n test: /^[-+]?[0-9][0-9_]*$/,\n resolve: (str, _onError, opt) => intResolve(str, 0, 10, opt),\n stringify: stringifyNumber.stringifyNumber\n};\nconst intHex = {\n identify: intIdentify,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n format: 'HEX',\n test: /^[-+]?0x[0-9a-fA-F_]+$/,\n resolve: (str, _onError, opt) => intResolve(str, 2, 16, opt),\n stringify: node => intStringify(node, 16, '0x')\n};\n\nexports.int = int;\nexports.intBin = intBin;\nexports.intHex = intHex;\nexports.intOct = intOct;\n","'use strict';\n\nvar identity = require('../../nodes/identity.js');\nvar Pair = require('../../nodes/Pair.js');\nvar YAMLMap = require('../../nodes/YAMLMap.js');\n\nclass YAMLSet extends YAMLMap.YAMLMap {\n constructor(schema) {\n super(schema);\n this.tag = YAMLSet.tag;\n }\n add(key) {\n let pair;\n if (identity.isPair(key))\n pair = key;\n else if (key &&\n typeof key === 'object' &&\n 'key' in key &&\n 'value' in key &&\n key.value === null)\n pair = new Pair.Pair(key.key, null);\n else\n pair = new Pair.Pair(key, null);\n const prev = YAMLMap.findPair(this.items, pair.key);\n if (!prev)\n this.items.push(pair);\n }\n /**\n * If `keepPair` is `true`, returns the Pair matching `key`.\n * Otherwise, returns the value of that Pair's key.\n */\n get(key, keepPair) {\n const pair = YAMLMap.findPair(this.items, key);\n return !keepPair && identity.isPair(pair)\n ? identity.isScalar(pair.key)\n ? pair.key.value\n : pair.key\n : pair;\n }\n set(key, value) {\n if (typeof value !== 'boolean')\n throw new Error(`Expected boolean value for set(key, value) in a YAML set, not ${typeof value}`);\n const prev = YAMLMap.findPair(this.items, key);\n if (prev && !value) {\n this.items.splice(this.items.indexOf(prev), 1);\n }\n else if (!prev && value) {\n this.items.push(new Pair.Pair(key));\n }\n }\n toJSON(_, ctx) {\n return super.toJSON(_, ctx, Set);\n }\n toString(ctx, onComment, onChompKeep) {\n if (!ctx)\n return JSON.stringify(this);\n if (this.hasAllNullValues(true))\n return super.toString(Object.assign({}, ctx, { allNullValues: true }), onComment, onChompKeep);\n else\n throw new Error('Set items must all have null values');\n }\n static from(schema, iterable, ctx) {\n const { replacer } = ctx;\n const set = new this(schema);\n if (iterable && Symbol.iterator in Object(iterable))\n for (let value of iterable) {\n if (typeof replacer === 'function')\n value = replacer.call(iterable, value, value);\n set.items.push(Pair.createPair(value, null, ctx));\n }\n return set;\n }\n}\nYAMLSet.tag = 'tag:yaml.org,2002:set';\nconst set = {\n collection: 'map',\n identify: value => value instanceof Set,\n nodeClass: YAMLSet,\n default: false,\n tag: 'tag:yaml.org,2002:set',\n createNode: (schema, iterable, ctx) => YAMLSet.from(schema, iterable, ctx),\n resolve(map, onError) {\n if (identity.isMap(map)) {\n if (map.hasAllNullValues(true))\n return Object.assign(new YAMLSet(), map);\n else\n onError('Set items must all have null values');\n }\n else\n onError('Expected a mapping for this tag');\n return map;\n }\n};\n\nexports.YAMLSet = YAMLSet;\nexports.set = set;\n","'use strict';\n\nvar stringifyNumber = require('../../stringify/stringifyNumber.js');\n\n/** Internal types handle bigint as number, because TS can't figure it out. */\nfunction parseSexagesimal(str, asBigInt) {\n const sign = str[0];\n const parts = sign === '-' || sign === '+' ? str.substring(1) : str;\n const num = (n) => asBigInt ? BigInt(n) : Number(n);\n const res = parts\n .replace(/_/g, '')\n .split(':')\n .reduce((res, p) => res * num(60) + num(p), num(0));\n return (sign === '-' ? num(-1) * res : res);\n}\n/**\n * hhhh:mm:ss.sss\n *\n * Internal types handle bigint as number, because TS can't figure it out.\n */\nfunction stringifySexagesimal(node) {\n let { value } = node;\n let num = (n) => n;\n if (typeof value === 'bigint')\n num = n => BigInt(n);\n else if (isNaN(value) || !isFinite(value))\n return stringifyNumber.stringifyNumber(node);\n let sign = '';\n if (value < 0) {\n sign = '-';\n value *= num(-1);\n }\n const _60 = num(60);\n const parts = [value % _60]; // seconds, including ms\n if (value < 60) {\n parts.unshift(0); // at least one : is required\n }\n else {\n value = (value - parts[0]) / _60;\n parts.unshift(value % _60); // minutes\n if (value >= 60) {\n value = (value - parts[0]) / _60;\n parts.unshift(value); // hours\n }\n }\n return (sign +\n parts\n .map(n => String(n).padStart(2, '0'))\n .join(':')\n .replace(/000000\\d*$/, '') // % 60 may introduce error\n );\n}\nconst intTime = {\n identify: value => typeof value === 'bigint' || Number.isInteger(value),\n default: true,\n tag: 'tag:yaml.org,2002:int',\n format: 'TIME',\n test: /^[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+$/,\n resolve: (str, _onError, { intAsBigInt }) => parseSexagesimal(str, intAsBigInt),\n stringify: stringifySexagesimal\n};\nconst floatTime = {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n format: 'TIME',\n test: /^[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\.[0-9_]*$/,\n resolve: str => parseSexagesimal(str, false),\n stringify: stringifySexagesimal\n};\nconst timestamp = {\n identify: value => value instanceof Date,\n default: true,\n tag: 'tag:yaml.org,2002:timestamp',\n // If the time zone is omitted, the timestamp is assumed to be specified in UTC. The time part\n // may be omitted altogether, resulting in a date format. In such a case, the time part is\n // assumed to be 00:00:00Z (start of day, UTC).\n test: RegExp('^([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})' + // YYYY-Mm-Dd\n '(?:' + // time is optional\n '(?:t|T|[ \\\\t]+)' + // t | T | whitespace\n '([0-9]{1,2}):([0-9]{1,2}):([0-9]{1,2}(\\\\.[0-9]+)?)' + // Hh:Mm:Ss(.ss)?\n '(?:[ \\\\t]*(Z|[-+][012]?[0-9](?::[0-9]{2})?))?' + // Z | +5 | -03:30\n ')?$'),\n resolve(str) {\n const match = str.match(timestamp.test);\n if (!match)\n throw new Error('!!timestamp expects a date, starting with yyyy-mm-dd');\n const [, year, month, day, hour, minute, second] = match.map(Number);\n const millisec = match[7] ? Number((match[7] + '00').substr(1, 3)) : 0;\n let date = Date.UTC(year, month - 1, day, hour || 0, minute || 0, second || 0, millisec);\n const tz = match[8];\n if (tz && tz !== 'Z') {\n let d = parseSexagesimal(tz, false);\n if (Math.abs(d) < 30)\n d *= 60;\n date -= 60000 * d;\n }\n return new Date(date);\n },\n stringify: ({ value }) => value?.toISOString().replace(/(T00:00:00)?\\.000Z$/, '') ?? ''\n};\n\nexports.floatTime = floatTime;\nexports.intTime = intTime;\nexports.timestamp = timestamp;\n","'use strict';\n\nvar map = require('../common/map.js');\nvar _null = require('../common/null.js');\nvar seq = require('../common/seq.js');\nvar string = require('../common/string.js');\nvar binary = require('./binary.js');\nvar bool = require('./bool.js');\nvar float = require('./float.js');\nvar int = require('./int.js');\nvar merge = require('./merge.js');\nvar omap = require('./omap.js');\nvar pairs = require('./pairs.js');\nvar set = require('./set.js');\nvar timestamp = require('./timestamp.js');\n\nconst schema = [\n map.map,\n seq.seq,\n string.string,\n _null.nullTag,\n bool.trueTag,\n bool.falseTag,\n int.intBin,\n int.intOct,\n int.int,\n int.intHex,\n float.floatNaN,\n float.floatExp,\n float.float,\n binary.binary,\n merge.merge,\n omap.omap,\n pairs.pairs,\n set.set,\n timestamp.intTime,\n timestamp.floatTime,\n timestamp.timestamp\n];\n\nexports.schema = schema;\n","'use strict';\n\nvar map = require('./common/map.js');\nvar _null = require('./common/null.js');\nvar seq = require('./common/seq.js');\nvar string = require('./common/string.js');\nvar bool = require('./core/bool.js');\nvar float = require('./core/float.js');\nvar int = require('./core/int.js');\nvar schema = require('./core/schema.js');\nvar schema$1 = require('./json/schema.js');\nvar binary = require('./yaml-1.1/binary.js');\nvar merge = require('./yaml-1.1/merge.js');\nvar omap = require('./yaml-1.1/omap.js');\nvar pairs = require('./yaml-1.1/pairs.js');\nvar schema$2 = require('./yaml-1.1/schema.js');\nvar set = require('./yaml-1.1/set.js');\nvar timestamp = require('./yaml-1.1/timestamp.js');\n\nconst schemas = new Map([\n ['core', schema.schema],\n ['failsafe', [map.map, seq.seq, string.string]],\n ['json', schema$1.schema],\n ['yaml11', schema$2.schema],\n ['yaml-1.1', schema$2.schema]\n]);\nconst tagsByName = {\n binary: binary.binary,\n bool: bool.boolTag,\n float: float.float,\n floatExp: float.floatExp,\n floatNaN: float.floatNaN,\n floatTime: timestamp.floatTime,\n int: int.int,\n intHex: int.intHex,\n intOct: int.intOct,\n intTime: timestamp.intTime,\n map: map.map,\n merge: merge.merge,\n null: _null.nullTag,\n omap: omap.omap,\n pairs: pairs.pairs,\n seq: seq.seq,\n set: set.set,\n timestamp: timestamp.timestamp\n};\nconst coreKnownTags = {\n 'tag:yaml.org,2002:binary': binary.binary,\n 'tag:yaml.org,2002:merge': merge.merge,\n 'tag:yaml.org,2002:omap': omap.omap,\n 'tag:yaml.org,2002:pairs': pairs.pairs,\n 'tag:yaml.org,2002:set': set.set,\n 'tag:yaml.org,2002:timestamp': timestamp.timestamp\n};\nfunction getTags(customTags, schemaName, addMergeTag) {\n const schemaTags = schemas.get(schemaName);\n if (schemaTags && !customTags) {\n return addMergeTag && !schemaTags.includes(merge.merge)\n ? schemaTags.concat(merge.merge)\n : schemaTags.slice();\n }\n let tags = schemaTags;\n if (!tags) {\n if (Array.isArray(customTags))\n tags = [];\n else {\n const keys = Array.from(schemas.keys())\n .filter(key => key !== 'yaml11')\n .map(key => JSON.stringify(key))\n .join(', ');\n throw new Error(`Unknown schema \"${schemaName}\"; use one of ${keys} or define customTags array`);\n }\n }\n if (Array.isArray(customTags)) {\n for (const tag of customTags)\n tags = tags.concat(tag);\n }\n else if (typeof customTags === 'function') {\n tags = customTags(tags.slice());\n }\n if (addMergeTag)\n tags = tags.concat(merge.merge);\n return tags.reduce((tags, tag) => {\n const tagObj = typeof tag === 'string' ? tagsByName[tag] : tag;\n if (!tagObj) {\n const tagName = JSON.stringify(tag);\n const keys = Object.keys(tagsByName)\n .map(key => JSON.stringify(key))\n .join(', ');\n throw new Error(`Unknown custom tag ${tagName}; use one of ${keys}`);\n }\n if (!tags.includes(tagObj))\n tags.push(tagObj);\n return tags;\n }, []);\n}\n\nexports.coreKnownTags = coreKnownTags;\nexports.getTags = getTags;\n","'use strict';\n\nvar identity = require('../nodes/identity.js');\nvar map = require('./common/map.js');\nvar seq = require('./common/seq.js');\nvar string = require('./common/string.js');\nvar tags = require('./tags.js');\n\nconst sortMapEntriesByKey = (a, b) => a.key < b.key ? -1 : a.key > b.key ? 1 : 0;\nclass Schema {\n constructor({ compat, customTags, merge, resolveKnownTags, schema, sortMapEntries, toStringDefaults }) {\n this.compat = Array.isArray(compat)\n ? tags.getTags(compat, 'compat')\n : compat\n ? tags.getTags(null, compat)\n : null;\n this.name = (typeof schema === 'string' && schema) || 'core';\n this.knownTags = resolveKnownTags ? tags.coreKnownTags : {};\n this.tags = tags.getTags(customTags, this.name, merge);\n this.toStringOptions = toStringDefaults ?? null;\n Object.defineProperty(this, identity.MAP, { value: map.map });\n Object.defineProperty(this, identity.SCALAR, { value: string.string });\n Object.defineProperty(this, identity.SEQ, { value: seq.seq });\n // Used by createMap()\n this.sortMapEntries =\n typeof sortMapEntries === 'function'\n ? sortMapEntries\n : sortMapEntries === true\n ? sortMapEntriesByKey\n : null;\n }\n clone() {\n const copy = Object.create(Schema.prototype, Object.getOwnPropertyDescriptors(this));\n copy.tags = this.tags.slice();\n return copy;\n }\n}\n\nexports.Schema = Schema;\n","'use strict';\n\nvar identity = require('../nodes/identity.js');\nvar stringify = require('./stringify.js');\nvar stringifyComment = require('./stringifyComment.js');\n\nfunction stringifyDocument(doc, options) {\n const lines = [];\n let hasDirectives = options.directives === true;\n if (options.directives !== false && doc.directives) {\n const dir = doc.directives.toString(doc);\n if (dir) {\n lines.push(dir);\n hasDirectives = true;\n }\n else if (doc.directives.docStart)\n hasDirectives = true;\n }\n if (hasDirectives)\n lines.push('---');\n const ctx = stringify.createStringifyContext(doc, options);\n const { commentString } = ctx.options;\n if (doc.commentBefore) {\n if (lines.length !== 1)\n lines.unshift('');\n const cs = commentString(doc.commentBefore);\n lines.unshift(stringifyComment.indentComment(cs, ''));\n }\n let chompKeep = false;\n let contentComment = null;\n if (doc.contents) {\n if (identity.isNode(doc.contents)) {\n if (doc.contents.spaceBefore && hasDirectives)\n lines.push('');\n if (doc.contents.commentBefore) {\n const cs = commentString(doc.contents.commentBefore);\n lines.push(stringifyComment.indentComment(cs, ''));\n }\n // top-level block scalars need to be indented if followed by a comment\n ctx.forceBlockIndent = !!doc.comment;\n contentComment = doc.contents.comment;\n }\n const onChompKeep = contentComment ? undefined : () => (chompKeep = true);\n let body = stringify.stringify(doc.contents, ctx, () => (contentComment = null), onChompKeep);\n if (contentComment)\n body += stringifyComment.lineComment(body, '', commentString(contentComment));\n if ((body[0] === '|' || body[0] === '>') &&\n lines[lines.length - 1] === '---') {\n // Top-level block scalars with a preceding doc marker ought to use the\n // same line for their header.\n lines[lines.length - 1] = `--- ${body}`;\n }\n else\n lines.push(body);\n }\n else {\n lines.push(stringify.stringify(doc.contents, ctx));\n }\n if (doc.directives?.docEnd) {\n if (doc.comment) {\n const cs = commentString(doc.comment);\n if (cs.includes('\\n')) {\n lines.push('...');\n lines.push(stringifyComment.indentComment(cs, ''));\n }\n else {\n lines.push(`... ${cs}`);\n }\n }\n else {\n lines.push('...');\n }\n }\n else {\n let dc = doc.comment;\n if (dc && chompKeep)\n dc = dc.replace(/^\\n+/, '');\n if (dc) {\n if ((!chompKeep || contentComment) && lines[lines.length - 1] !== '')\n lines.push('');\n lines.push(stringifyComment.indentComment(commentString(dc), ''));\n }\n }\n return lines.join('\\n') + '\\n';\n}\n\nexports.stringifyDocument = stringifyDocument;\n","'use strict';\n\nvar Alias = require('../nodes/Alias.js');\nvar Collection = require('../nodes/Collection.js');\nvar identity = require('../nodes/identity.js');\nvar Pair = require('../nodes/Pair.js');\nvar toJS = require('../nodes/toJS.js');\nvar Schema = require('../schema/Schema.js');\nvar stringifyDocument = require('../stringify/stringifyDocument.js');\nvar anchors = require('./anchors.js');\nvar applyReviver = require('./applyReviver.js');\nvar createNode = require('./createNode.js');\nvar directives = require('./directives.js');\n\nclass Document {\n constructor(value, replacer, options) {\n /** A comment before this Document */\n this.commentBefore = null;\n /** A comment immediately after this Document */\n this.comment = null;\n /** Errors encountered during parsing. */\n this.errors = [];\n /** Warnings encountered during parsing. */\n this.warnings = [];\n Object.defineProperty(this, identity.NODE_TYPE, { value: identity.DOC });\n let _replacer = null;\n if (typeof replacer === 'function' || Array.isArray(replacer)) {\n _replacer = replacer;\n }\n else if (options === undefined && replacer) {\n options = replacer;\n replacer = undefined;\n }\n const opt = Object.assign({\n intAsBigInt: false,\n keepSourceTokens: false,\n logLevel: 'warn',\n prettyErrors: true,\n strict: true,\n stringKeys: false,\n uniqueKeys: true,\n version: '1.2'\n }, options);\n this.options = opt;\n let { version } = opt;\n if (options?._directives) {\n this.directives = options._directives.atDocument();\n if (this.directives.yaml.explicit)\n version = this.directives.yaml.version;\n }\n else\n this.directives = new directives.Directives({ version });\n this.setSchema(version, options);\n // @ts-expect-error We can't really know that this matches Contents.\n this.contents =\n value === undefined ? null : this.createNode(value, _replacer, options);\n }\n /**\n * Create a deep copy of this Document and its contents.\n *\n * Custom Node values that inherit from `Object` still refer to their original instances.\n */\n clone() {\n const copy = Object.create(Document.prototype, {\n [identity.NODE_TYPE]: { value: identity.DOC }\n });\n copy.commentBefore = this.commentBefore;\n copy.comment = this.comment;\n copy.errors = this.errors.slice();\n copy.warnings = this.warnings.slice();\n copy.options = Object.assign({}, this.options);\n if (this.directives)\n copy.directives = this.directives.clone();\n copy.schema = this.schema.clone();\n // @ts-expect-error We can't really know that this matches Contents.\n copy.contents = identity.isNode(this.contents)\n ? this.contents.clone(copy.schema)\n : this.contents;\n if (this.range)\n copy.range = this.range.slice();\n return copy;\n }\n /** Adds a value to the document. */\n add(value) {\n if (assertCollection(this.contents))\n this.contents.add(value);\n }\n /** Adds a value to the document. */\n addIn(path, value) {\n if (assertCollection(this.contents))\n this.contents.addIn(path, value);\n }\n /**\n * Create a new `Alias` node, ensuring that the target `node` has the required anchor.\n *\n * If `node` already has an anchor, `name` is ignored.\n * Otherwise, the `node.anchor` value will be set to `name`,\n * or if an anchor with that name is already present in the document,\n * `name` will be used as a prefix for a new unique anchor.\n * If `name` is undefined, the generated anchor will use 'a' as a prefix.\n */\n createAlias(node, name) {\n if (!node.anchor) {\n const prev = anchors.anchorNames(this);\n node.anchor =\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n !name || prev.has(name) ? anchors.findNewAnchor(name || 'a', prev) : name;\n }\n return new Alias.Alias(node.anchor);\n }\n createNode(value, replacer, options) {\n let _replacer = undefined;\n if (typeof replacer === 'function') {\n value = replacer.call({ '': value }, '', value);\n _replacer = replacer;\n }\n else if (Array.isArray(replacer)) {\n const keyToStr = (v) => typeof v === 'number' || v instanceof String || v instanceof Number;\n const asStr = replacer.filter(keyToStr).map(String);\n if (asStr.length > 0)\n replacer = replacer.concat(asStr);\n _replacer = replacer;\n }\n else if (options === undefined && replacer) {\n options = replacer;\n replacer = undefined;\n }\n const { aliasDuplicateObjects, anchorPrefix, flow, keepUndefined, onTagObj, tag } = options ?? {};\n const { onAnchor, setAnchors, sourceObjects } = anchors.createNodeAnchors(this, \n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n anchorPrefix || 'a');\n const ctx = {\n aliasDuplicateObjects: aliasDuplicateObjects ?? true,\n keepUndefined: keepUndefined ?? false,\n onAnchor,\n onTagObj,\n replacer: _replacer,\n schema: this.schema,\n sourceObjects\n };\n const node = createNode.createNode(value, tag, ctx);\n if (flow && identity.isCollection(node))\n node.flow = true;\n setAnchors();\n return node;\n }\n /**\n * Convert a key and a value into a `Pair` using the current schema,\n * recursively wrapping all values as `Scalar` or `Collection` nodes.\n */\n createPair(key, value, options = {}) {\n const k = this.createNode(key, null, options);\n const v = this.createNode(value, null, options);\n return new Pair.Pair(k, v);\n }\n /**\n * Removes a value from the document.\n * @returns `true` if the item was found and removed.\n */\n delete(key) {\n return assertCollection(this.contents) ? this.contents.delete(key) : false;\n }\n /**\n * Removes a value from the document.\n * @returns `true` if the item was found and removed.\n */\n deleteIn(path) {\n if (Collection.isEmptyPath(path)) {\n if (this.contents == null)\n return false;\n // @ts-expect-error Presumed impossible if Strict extends false\n this.contents = null;\n return true;\n }\n return assertCollection(this.contents)\n ? this.contents.deleteIn(path)\n : false;\n }\n /**\n * Returns item at `key`, or `undefined` if not found. By default unwraps\n * scalar values from their surrounding node; to disable set `keepScalar` to\n * `true` (collections are always returned intact).\n */\n get(key, keepScalar) {\n return identity.isCollection(this.contents)\n ? this.contents.get(key, keepScalar)\n : undefined;\n }\n /**\n * Returns item at `path`, or `undefined` if not found. By default unwraps\n * scalar values from their surrounding node; to disable set `keepScalar` to\n * `true` (collections are always returned intact).\n */\n getIn(path, keepScalar) {\n if (Collection.isEmptyPath(path))\n return !keepScalar && identity.isScalar(this.contents)\n ? this.contents.value\n : this.contents;\n return identity.isCollection(this.contents)\n ? this.contents.getIn(path, keepScalar)\n : undefined;\n }\n /**\n * Checks if the document includes a value with the key `key`.\n */\n has(key) {\n return identity.isCollection(this.contents) ? this.contents.has(key) : false;\n }\n /**\n * Checks if the document includes a value at `path`.\n */\n hasIn(path) {\n if (Collection.isEmptyPath(path))\n return this.contents !== undefined;\n return identity.isCollection(this.contents) ? this.contents.hasIn(path) : false;\n }\n /**\n * Sets a value in this document. For `!!set`, `value` needs to be a\n * boolean to add/remove the item from the set.\n */\n set(key, value) {\n if (this.contents == null) {\n // @ts-expect-error We can't really know that this matches Contents.\n this.contents = Collection.collectionFromPath(this.schema, [key], value);\n }\n else if (assertCollection(this.contents)) {\n this.contents.set(key, value);\n }\n }\n /**\n * Sets a value in this document. For `!!set`, `value` needs to be a\n * boolean to add/remove the item from the set.\n */\n setIn(path, value) {\n if (Collection.isEmptyPath(path)) {\n // @ts-expect-error We can't really know that this matches Contents.\n this.contents = value;\n }\n else if (this.contents == null) {\n // @ts-expect-error We can't really know that this matches Contents.\n this.contents = Collection.collectionFromPath(this.schema, Array.from(path), value);\n }\n else if (assertCollection(this.contents)) {\n this.contents.setIn(path, value);\n }\n }\n /**\n * Change the YAML version and schema used by the document.\n * A `null` version disables support for directives, explicit tags, anchors, and aliases.\n * It also requires the `schema` option to be given as a `Schema` instance value.\n *\n * Overrides all previously set schema options.\n */\n setSchema(version, options = {}) {\n if (typeof version === 'number')\n version = String(version);\n let opt;\n switch (version) {\n case '1.1':\n if (this.directives)\n this.directives.yaml.version = '1.1';\n else\n this.directives = new directives.Directives({ version: '1.1' });\n opt = { resolveKnownTags: false, schema: 'yaml-1.1' };\n break;\n case '1.2':\n case 'next':\n if (this.directives)\n this.directives.yaml.version = version;\n else\n this.directives = new directives.Directives({ version });\n opt = { resolveKnownTags: true, schema: 'core' };\n break;\n case null:\n if (this.directives)\n delete this.directives;\n opt = null;\n break;\n default: {\n const sv = JSON.stringify(version);\n throw new Error(`Expected '1.1', '1.2' or null as first argument, but found: ${sv}`);\n }\n }\n // Not using `instanceof Schema` to allow for duck typing\n if (options.schema instanceof Object)\n this.schema = options.schema;\n else if (opt)\n this.schema = new Schema.Schema(Object.assign(opt, options));\n else\n throw new Error(`With a null YAML version, the { schema: Schema } option is required`);\n }\n // json & jsonArg are only used from toJSON()\n toJS({ json, jsonArg, mapAsMap, maxAliasCount, onAnchor, reviver } = {}) {\n const ctx = {\n anchors: new Map(),\n doc: this,\n keep: !json,\n mapAsMap: mapAsMap === true,\n mapKeyWarned: false,\n maxAliasCount: typeof maxAliasCount === 'number' ? maxAliasCount : 100\n };\n const res = toJS.toJS(this.contents, jsonArg ?? '', ctx);\n if (typeof onAnchor === 'function')\n for (const { count, res } of ctx.anchors.values())\n onAnchor(res, count);\n return typeof reviver === 'function'\n ? applyReviver.applyReviver(reviver, { '': res }, '', res)\n : res;\n }\n /**\n * A JSON representation of the document `contents`.\n *\n * @param jsonArg Used by `JSON.stringify` to indicate the array index or\n * property name.\n */\n toJSON(jsonArg, onAnchor) {\n return this.toJS({ json: true, jsonArg, mapAsMap: false, onAnchor });\n }\n /** A YAML representation of the document. */\n toString(options = {}) {\n if (this.errors.length > 0)\n throw new Error('Document with errors cannot be stringified');\n if ('indent' in options &&\n (!Number.isInteger(options.indent) || Number(options.indent) <= 0)) {\n const s = JSON.stringify(options.indent);\n throw new Error(`\"indent\" option must be a positive integer, not ${s}`);\n }\n return stringifyDocument.stringifyDocument(this, options);\n }\n}\nfunction assertCollection(contents) {\n if (identity.isCollection(contents))\n return true;\n throw new Error('Expected a YAML collection as document contents');\n}\n\nexports.Document = Document;\n","'use strict';\n\nclass YAMLError extends Error {\n constructor(name, pos, code, message) {\n super();\n this.name = name;\n this.code = code;\n this.message = message;\n this.pos = pos;\n }\n}\nclass YAMLParseError extends YAMLError {\n constructor(pos, code, message) {\n super('YAMLParseError', pos, code, message);\n }\n}\nclass YAMLWarning extends YAMLError {\n constructor(pos, code, message) {\n super('YAMLWarning', pos, code, message);\n }\n}\nconst prettifyError = (src, lc) => (error) => {\n if (error.pos[0] === -1)\n return;\n error.linePos = error.pos.map(pos => lc.linePos(pos));\n const { line, col } = error.linePos[0];\n error.message += ` at line ${line}, column ${col}`;\n let ci = col - 1;\n let lineStr = src\n .substring(lc.lineStarts[line - 1], lc.lineStarts[line])\n .replace(/[\\n\\r]+$/, '');\n // Trim to max 80 chars, keeping col position near the middle\n if (ci >= 60 && lineStr.length > 80) {\n const trimStart = Math.min(ci - 39, lineStr.length - 79);\n lineStr = '…' + lineStr.substring(trimStart);\n ci -= trimStart - 1;\n }\n if (lineStr.length > 80)\n lineStr = lineStr.substring(0, 79) + '…';\n // Include previous line in context if pointing at line start\n if (line > 1 && /^ *$/.test(lineStr.substring(0, ci))) {\n // Regexp won't match if start is trimmed\n let prev = src.substring(lc.lineStarts[line - 2], lc.lineStarts[line - 1]);\n if (prev.length > 80)\n prev = prev.substring(0, 79) + '…\\n';\n lineStr = prev + lineStr;\n }\n if (/[^ ]/.test(lineStr)) {\n let count = 1;\n const end = error.linePos[1];\n if (end?.line === line && end.col > col) {\n count = Math.max(1, Math.min(end.col - col, 80 - ci));\n }\n const pointer = ' '.repeat(ci) + '^'.repeat(count);\n error.message += `:\\n\\n${lineStr}\\n${pointer}\\n`;\n }\n};\n\nexports.YAMLError = YAMLError;\nexports.YAMLParseError = YAMLParseError;\nexports.YAMLWarning = YAMLWarning;\nexports.prettifyError = prettifyError;\n","'use strict';\n\nfunction resolveProps(tokens, { flow, indicator, next, offset, onError, parentIndent, startOnNewline }) {\n let spaceBefore = false;\n let atNewline = startOnNewline;\n let hasSpace = startOnNewline;\n let comment = '';\n let commentSep = '';\n let hasNewline = false;\n let reqSpace = false;\n let tab = null;\n let anchor = null;\n let tag = null;\n let newlineAfterProp = null;\n let comma = null;\n let found = null;\n let start = null;\n for (const token of tokens) {\n if (reqSpace) {\n if (token.type !== 'space' &&\n token.type !== 'newline' &&\n token.type !== 'comma')\n onError(token.offset, 'MISSING_CHAR', 'Tags and anchors must be separated from the next token by white space');\n reqSpace = false;\n }\n if (tab) {\n if (atNewline && token.type !== 'comment' && token.type !== 'newline') {\n onError(tab, 'TAB_AS_INDENT', 'Tabs are not allowed as indentation');\n }\n tab = null;\n }\n switch (token.type) {\n case 'space':\n // At the doc level, tabs at line start may be parsed\n // as leading white space rather than indentation.\n // In a flow collection, only the parser handles indent.\n if (!flow &&\n (indicator !== 'doc-start' || next?.type !== 'flow-collection') &&\n token.source.includes('\\t')) {\n tab = token;\n }\n hasSpace = true;\n break;\n case 'comment': {\n if (!hasSpace)\n onError(token, 'MISSING_CHAR', 'Comments must be separated from other tokens by white space characters');\n const cb = token.source.substring(1) || ' ';\n if (!comment)\n comment = cb;\n else\n comment += commentSep + cb;\n commentSep = '';\n atNewline = false;\n break;\n }\n case 'newline':\n if (atNewline) {\n if (comment)\n comment += token.source;\n else if (!found || indicator !== 'seq-item-ind')\n spaceBefore = true;\n }\n else\n commentSep += token.source;\n atNewline = true;\n hasNewline = true;\n if (anchor || tag)\n newlineAfterProp = token;\n hasSpace = true;\n break;\n case 'anchor':\n if (anchor)\n onError(token, 'MULTIPLE_ANCHORS', 'A node can have at most one anchor');\n if (token.source.endsWith(':'))\n onError(token.offset + token.source.length - 1, 'BAD_ALIAS', 'Anchor ending in : is ambiguous', true);\n anchor = token;\n start ?? (start = token.offset);\n atNewline = false;\n hasSpace = false;\n reqSpace = true;\n break;\n case 'tag': {\n if (tag)\n onError(token, 'MULTIPLE_TAGS', 'A node can have at most one tag');\n tag = token;\n start ?? (start = token.offset);\n atNewline = false;\n hasSpace = false;\n reqSpace = true;\n break;\n }\n case indicator:\n // Could here handle preceding comments differently\n if (anchor || tag)\n onError(token, 'BAD_PROP_ORDER', `Anchors and tags must be after the ${token.source} indicator`);\n if (found)\n onError(token, 'UNEXPECTED_TOKEN', `Unexpected ${token.source} in ${flow ?? 'collection'}`);\n found = token;\n atNewline =\n indicator === 'seq-item-ind' || indicator === 'explicit-key-ind';\n hasSpace = false;\n break;\n case 'comma':\n if (flow) {\n if (comma)\n onError(token, 'UNEXPECTED_TOKEN', `Unexpected , in ${flow}`);\n comma = token;\n atNewline = false;\n hasSpace = false;\n break;\n }\n // else fallthrough\n default:\n onError(token, 'UNEXPECTED_TOKEN', `Unexpected ${token.type} token`);\n atNewline = false;\n hasSpace = false;\n }\n }\n const last = tokens[tokens.length - 1];\n const end = last ? last.offset + last.source.length : offset;\n if (reqSpace &&\n next &&\n next.type !== 'space' &&\n next.type !== 'newline' &&\n next.type !== 'comma' &&\n (next.type !== 'scalar' || next.source !== '')) {\n onError(next.offset, 'MISSING_CHAR', 'Tags and anchors must be separated from the next token by white space');\n }\n if (tab &&\n ((atNewline && tab.indent <= parentIndent) ||\n next?.type === 'block-map' ||\n next?.type === 'block-seq'))\n onError(tab, 'TAB_AS_INDENT', 'Tabs are not allowed as indentation');\n return {\n comma,\n found,\n spaceBefore,\n comment,\n hasNewline,\n anchor,\n tag,\n newlineAfterProp,\n end,\n start: start ?? end\n };\n}\n\nexports.resolveProps = resolveProps;\n","'use strict';\n\nfunction containsNewline(key) {\n if (!key)\n return null;\n switch (key.type) {\n case 'alias':\n case 'scalar':\n case 'double-quoted-scalar':\n case 'single-quoted-scalar':\n if (key.source.includes('\\n'))\n return true;\n if (key.end)\n for (const st of key.end)\n if (st.type === 'newline')\n return true;\n return false;\n case 'flow-collection':\n for (const it of key.items) {\n for (const st of it.start)\n if (st.type === 'newline')\n return true;\n if (it.sep)\n for (const st of it.sep)\n if (st.type === 'newline')\n return true;\n if (containsNewline(it.key) || containsNewline(it.value))\n return true;\n }\n return false;\n default:\n return true;\n }\n}\n\nexports.containsNewline = containsNewline;\n","'use strict';\n\nvar utilContainsNewline = require('./util-contains-newline.js');\n\nfunction flowIndentCheck(indent, fc, onError) {\n if (fc?.type === 'flow-collection') {\n const end = fc.end[0];\n if (end.indent === indent &&\n (end.source === ']' || end.source === '}') &&\n utilContainsNewline.containsNewline(fc)) {\n const msg = 'Flow end indicator should be more indented than parent';\n onError(end, 'BAD_INDENT', msg, true);\n }\n }\n}\n\nexports.flowIndentCheck = flowIndentCheck;\n","'use strict';\n\nvar identity = require('../nodes/identity.js');\n\nfunction mapIncludes(ctx, items, search) {\n const { uniqueKeys } = ctx.options;\n if (uniqueKeys === false)\n return false;\n const isEqual = typeof uniqueKeys === 'function'\n ? uniqueKeys\n : (a, b) => a === b || (identity.isScalar(a) && identity.isScalar(b) && a.value === b.value);\n return items.some(pair => isEqual(pair.key, search));\n}\n\nexports.mapIncludes = mapIncludes;\n","'use strict';\n\nvar Pair = require('../nodes/Pair.js');\nvar YAMLMap = require('../nodes/YAMLMap.js');\nvar resolveProps = require('./resolve-props.js');\nvar utilContainsNewline = require('./util-contains-newline.js');\nvar utilFlowIndentCheck = require('./util-flow-indent-check.js');\nvar utilMapIncludes = require('./util-map-includes.js');\n\nconst startColMsg = 'All mapping items must start at the same column';\nfunction resolveBlockMap({ composeNode, composeEmptyNode }, ctx, bm, onError, tag) {\n const NodeClass = tag?.nodeClass ?? YAMLMap.YAMLMap;\n const map = new NodeClass(ctx.schema);\n if (ctx.atRoot)\n ctx.atRoot = false;\n let offset = bm.offset;\n let commentEnd = null;\n for (const collItem of bm.items) {\n const { start, key, sep, value } = collItem;\n // key properties\n const keyProps = resolveProps.resolveProps(start, {\n indicator: 'explicit-key-ind',\n next: key ?? sep?.[0],\n offset,\n onError,\n parentIndent: bm.indent,\n startOnNewline: true\n });\n const implicitKey = !keyProps.found;\n if (implicitKey) {\n if (key) {\n if (key.type === 'block-seq')\n onError(offset, 'BLOCK_AS_IMPLICIT_KEY', 'A block sequence may not be used as an implicit map key');\n else if ('indent' in key && key.indent !== bm.indent)\n onError(offset, 'BAD_INDENT', startColMsg);\n }\n if (!keyProps.anchor && !keyProps.tag && !sep) {\n commentEnd = keyProps.end;\n if (keyProps.comment) {\n if (map.comment)\n map.comment += '\\n' + keyProps.comment;\n else\n map.comment = keyProps.comment;\n }\n continue;\n }\n if (keyProps.newlineAfterProp || utilContainsNewline.containsNewline(key)) {\n onError(key ?? start[start.length - 1], 'MULTILINE_IMPLICIT_KEY', 'Implicit keys need to be on a single line');\n }\n }\n else if (keyProps.found?.indent !== bm.indent) {\n onError(offset, 'BAD_INDENT', startColMsg);\n }\n // key value\n ctx.atKey = true;\n const keyStart = keyProps.end;\n const keyNode = key\n ? composeNode(ctx, key, keyProps, onError)\n : composeEmptyNode(ctx, keyStart, start, null, keyProps, onError);\n if (ctx.schema.compat)\n utilFlowIndentCheck.flowIndentCheck(bm.indent, key, onError);\n ctx.atKey = false;\n if (utilMapIncludes.mapIncludes(ctx, map.items, keyNode))\n onError(keyStart, 'DUPLICATE_KEY', 'Map keys must be unique');\n // value properties\n const valueProps = resolveProps.resolveProps(sep ?? [], {\n indicator: 'map-value-ind',\n next: value,\n offset: keyNode.range[2],\n onError,\n parentIndent: bm.indent,\n startOnNewline: !key || key.type === 'block-scalar'\n });\n offset = valueProps.end;\n if (valueProps.found) {\n if (implicitKey) {\n if (value?.type === 'block-map' && !valueProps.hasNewline)\n onError(offset, 'BLOCK_AS_IMPLICIT_KEY', 'Nested mappings are not allowed in compact mappings');\n if (ctx.options.strict &&\n keyProps.start < valueProps.found.offset - 1024)\n onError(keyNode.range, 'KEY_OVER_1024_CHARS', 'The : indicator must be at most 1024 chars after the start of an implicit block mapping key');\n }\n // value value\n const valueNode = value\n ? composeNode(ctx, value, valueProps, onError)\n : composeEmptyNode(ctx, offset, sep, null, valueProps, onError);\n if (ctx.schema.compat)\n utilFlowIndentCheck.flowIndentCheck(bm.indent, value, onError);\n offset = valueNode.range[2];\n const pair = new Pair.Pair(keyNode, valueNode);\n if (ctx.options.keepSourceTokens)\n pair.srcToken = collItem;\n map.items.push(pair);\n }\n else {\n // key with no value\n if (implicitKey)\n onError(keyNode.range, 'MISSING_CHAR', 'Implicit map keys need to be followed by map values');\n if (valueProps.comment) {\n if (keyNode.comment)\n keyNode.comment += '\\n' + valueProps.comment;\n else\n keyNode.comment = valueProps.comment;\n }\n const pair = new Pair.Pair(keyNode);\n if (ctx.options.keepSourceTokens)\n pair.srcToken = collItem;\n map.items.push(pair);\n }\n }\n if (commentEnd && commentEnd < offset)\n onError(commentEnd, 'IMPOSSIBLE', 'Map comment with trailing content');\n map.range = [bm.offset, offset, commentEnd ?? offset];\n return map;\n}\n\nexports.resolveBlockMap = resolveBlockMap;\n","'use strict';\n\nvar YAMLSeq = require('../nodes/YAMLSeq.js');\nvar resolveProps = require('./resolve-props.js');\nvar utilFlowIndentCheck = require('./util-flow-indent-check.js');\n\nfunction resolveBlockSeq({ composeNode, composeEmptyNode }, ctx, bs, onError, tag) {\n const NodeClass = tag?.nodeClass ?? YAMLSeq.YAMLSeq;\n const seq = new NodeClass(ctx.schema);\n if (ctx.atRoot)\n ctx.atRoot = false;\n if (ctx.atKey)\n ctx.atKey = false;\n let offset = bs.offset;\n let commentEnd = null;\n for (const { start, value } of bs.items) {\n const props = resolveProps.resolveProps(start, {\n indicator: 'seq-item-ind',\n next: value,\n offset,\n onError,\n parentIndent: bs.indent,\n startOnNewline: true\n });\n if (!props.found) {\n if (props.anchor || props.tag || value) {\n if (value?.type === 'block-seq')\n onError(props.end, 'BAD_INDENT', 'All sequence items must start at the same column');\n else\n onError(offset, 'MISSING_CHAR', 'Sequence item without - indicator');\n }\n else {\n commentEnd = props.end;\n if (props.comment)\n seq.comment = props.comment;\n continue;\n }\n }\n const node = value\n ? composeNode(ctx, value, props, onError)\n : composeEmptyNode(ctx, props.end, start, null, props, onError);\n if (ctx.schema.compat)\n utilFlowIndentCheck.flowIndentCheck(bs.indent, value, onError);\n offset = node.range[2];\n seq.items.push(node);\n }\n seq.range = [bs.offset, offset, commentEnd ?? offset];\n return seq;\n}\n\nexports.resolveBlockSeq = resolveBlockSeq;\n","'use strict';\n\nfunction resolveEnd(end, offset, reqSpace, onError) {\n let comment = '';\n if (end) {\n let hasSpace = false;\n let sep = '';\n for (const token of end) {\n const { source, type } = token;\n switch (type) {\n case 'space':\n hasSpace = true;\n break;\n case 'comment': {\n if (reqSpace && !hasSpace)\n onError(token, 'MISSING_CHAR', 'Comments must be separated from other tokens by white space characters');\n const cb = source.substring(1) || ' ';\n if (!comment)\n comment = cb;\n else\n comment += sep + cb;\n sep = '';\n break;\n }\n case 'newline':\n if (comment)\n sep += source;\n hasSpace = true;\n break;\n default:\n onError(token, 'UNEXPECTED_TOKEN', `Unexpected ${type} at node end`);\n }\n offset += source.length;\n }\n }\n return { comment, offset };\n}\n\nexports.resolveEnd = resolveEnd;\n","'use strict';\n\nvar identity = require('../nodes/identity.js');\nvar Pair = require('../nodes/Pair.js');\nvar YAMLMap = require('../nodes/YAMLMap.js');\nvar YAMLSeq = require('../nodes/YAMLSeq.js');\nvar resolveEnd = require('./resolve-end.js');\nvar resolveProps = require('./resolve-props.js');\nvar utilContainsNewline = require('./util-contains-newline.js');\nvar utilMapIncludes = require('./util-map-includes.js');\n\nconst blockMsg = 'Block collections are not allowed within flow collections';\nconst isBlock = (token) => token && (token.type === 'block-map' || token.type === 'block-seq');\nfunction resolveFlowCollection({ composeNode, composeEmptyNode }, ctx, fc, onError, tag) {\n const isMap = fc.start.source === '{';\n const fcName = isMap ? 'flow map' : 'flow sequence';\n const NodeClass = (tag?.nodeClass ?? (isMap ? YAMLMap.YAMLMap : YAMLSeq.YAMLSeq));\n const coll = new NodeClass(ctx.schema);\n coll.flow = true;\n const atRoot = ctx.atRoot;\n if (atRoot)\n ctx.atRoot = false;\n if (ctx.atKey)\n ctx.atKey = false;\n let offset = fc.offset + fc.start.source.length;\n for (let i = 0; i < fc.items.length; ++i) {\n const collItem = fc.items[i];\n const { start, key, sep, value } = collItem;\n const props = resolveProps.resolveProps(start, {\n flow: fcName,\n indicator: 'explicit-key-ind',\n next: key ?? sep?.[0],\n offset,\n onError,\n parentIndent: fc.indent,\n startOnNewline: false\n });\n if (!props.found) {\n if (!props.anchor && !props.tag && !sep && !value) {\n if (i === 0 && props.comma)\n onError(props.comma, 'UNEXPECTED_TOKEN', `Unexpected , in ${fcName}`);\n else if (i < fc.items.length - 1)\n onError(props.start, 'UNEXPECTED_TOKEN', `Unexpected empty item in ${fcName}`);\n if (props.comment) {\n if (coll.comment)\n coll.comment += '\\n' + props.comment;\n else\n coll.comment = props.comment;\n }\n offset = props.end;\n continue;\n }\n if (!isMap && ctx.options.strict && utilContainsNewline.containsNewline(key))\n onError(key, // checked by containsNewline()\n 'MULTILINE_IMPLICIT_KEY', 'Implicit keys of flow sequence pairs need to be on a single line');\n }\n if (i === 0) {\n if (props.comma)\n onError(props.comma, 'UNEXPECTED_TOKEN', `Unexpected , in ${fcName}`);\n }\n else {\n if (!props.comma)\n onError(props.start, 'MISSING_CHAR', `Missing , between ${fcName} items`);\n if (props.comment) {\n let prevItemComment = '';\n loop: for (const st of start) {\n switch (st.type) {\n case 'comma':\n case 'space':\n break;\n case 'comment':\n prevItemComment = st.source.substring(1);\n break loop;\n default:\n break loop;\n }\n }\n if (prevItemComment) {\n let prev = coll.items[coll.items.length - 1];\n if (identity.isPair(prev))\n prev = prev.value ?? prev.key;\n if (prev.comment)\n prev.comment += '\\n' + prevItemComment;\n else\n prev.comment = prevItemComment;\n props.comment = props.comment.substring(prevItemComment.length + 1);\n }\n }\n }\n if (!isMap && !sep && !props.found) {\n // item is a value in a seq\n // → key & sep are empty, start does not include ? or :\n const valueNode = value\n ? composeNode(ctx, value, props, onError)\n : composeEmptyNode(ctx, props.end, sep, null, props, onError);\n coll.items.push(valueNode);\n offset = valueNode.range[2];\n if (isBlock(value))\n onError(valueNode.range, 'BLOCK_IN_FLOW', blockMsg);\n }\n else {\n // item is a key+value pair\n // key value\n ctx.atKey = true;\n const keyStart = props.end;\n const keyNode = key\n ? composeNode(ctx, key, props, onError)\n : composeEmptyNode(ctx, keyStart, start, null, props, onError);\n if (isBlock(key))\n onError(keyNode.range, 'BLOCK_IN_FLOW', blockMsg);\n ctx.atKey = false;\n // value properties\n const valueProps = resolveProps.resolveProps(sep ?? [], {\n flow: fcName,\n indicator: 'map-value-ind',\n next: value,\n offset: keyNode.range[2],\n onError,\n parentIndent: fc.indent,\n startOnNewline: false\n });\n if (valueProps.found) {\n if (!isMap && !props.found && ctx.options.strict) {\n if (sep)\n for (const st of sep) {\n if (st === valueProps.found)\n break;\n if (st.type === 'newline') {\n onError(st, 'MULTILINE_IMPLICIT_KEY', 'Implicit keys of flow sequence pairs need to be on a single line');\n break;\n }\n }\n if (props.start < valueProps.found.offset - 1024)\n onError(valueProps.found, 'KEY_OVER_1024_CHARS', 'The : indicator must be at most 1024 chars after the start of an implicit flow sequence key');\n }\n }\n else if (value) {\n if ('source' in value && value.source?.[0] === ':')\n onError(value, 'MISSING_CHAR', `Missing space after : in ${fcName}`);\n else\n onError(valueProps.start, 'MISSING_CHAR', `Missing , or : between ${fcName} items`);\n }\n // value value\n const valueNode = value\n ? composeNode(ctx, value, valueProps, onError)\n : valueProps.found\n ? composeEmptyNode(ctx, valueProps.end, sep, null, valueProps, onError)\n : null;\n if (valueNode) {\n if (isBlock(value))\n onError(valueNode.range, 'BLOCK_IN_FLOW', blockMsg);\n }\n else if (valueProps.comment) {\n if (keyNode.comment)\n keyNode.comment += '\\n' + valueProps.comment;\n else\n keyNode.comment = valueProps.comment;\n }\n const pair = new Pair.Pair(keyNode, valueNode);\n if (ctx.options.keepSourceTokens)\n pair.srcToken = collItem;\n if (isMap) {\n const map = coll;\n if (utilMapIncludes.mapIncludes(ctx, map.items, keyNode))\n onError(keyStart, 'DUPLICATE_KEY', 'Map keys must be unique');\n map.items.push(pair);\n }\n else {\n const map = new YAMLMap.YAMLMap(ctx.schema);\n map.flow = true;\n map.items.push(pair);\n const endRange = (valueNode ?? keyNode).range;\n map.range = [keyNode.range[0], endRange[1], endRange[2]];\n coll.items.push(map);\n }\n offset = valueNode ? valueNode.range[2] : valueProps.end;\n }\n }\n const expectedEnd = isMap ? '}' : ']';\n const [ce, ...ee] = fc.end;\n let cePos = offset;\n if (ce?.source === expectedEnd)\n cePos = ce.offset + ce.source.length;\n else {\n const name = fcName[0].toUpperCase() + fcName.substring(1);\n const msg = atRoot\n ? `${name} must end with a ${expectedEnd}`\n : `${name} in block collection must be sufficiently indented and end with a ${expectedEnd}`;\n onError(offset, atRoot ? 'MISSING_CHAR' : 'BAD_INDENT', msg);\n if (ce && ce.source.length !== 1)\n ee.unshift(ce);\n }\n if (ee.length > 0) {\n const end = resolveEnd.resolveEnd(ee, cePos, ctx.options.strict, onError);\n if (end.comment) {\n if (coll.comment)\n coll.comment += '\\n' + end.comment;\n else\n coll.comment = end.comment;\n }\n coll.range = [fc.offset, cePos, end.offset];\n }\n else {\n coll.range = [fc.offset, cePos, cePos];\n }\n return coll;\n}\n\nexports.resolveFlowCollection = resolveFlowCollection;\n","'use strict';\n\nvar identity = require('../nodes/identity.js');\nvar Scalar = require('../nodes/Scalar.js');\nvar YAMLMap = require('../nodes/YAMLMap.js');\nvar YAMLSeq = require('../nodes/YAMLSeq.js');\nvar resolveBlockMap = require('./resolve-block-map.js');\nvar resolveBlockSeq = require('./resolve-block-seq.js');\nvar resolveFlowCollection = require('./resolve-flow-collection.js');\n\nfunction resolveCollection(CN, ctx, token, onError, tagName, tag) {\n const coll = token.type === 'block-map'\n ? resolveBlockMap.resolveBlockMap(CN, ctx, token, onError, tag)\n : token.type === 'block-seq'\n ? resolveBlockSeq.resolveBlockSeq(CN, ctx, token, onError, tag)\n : resolveFlowCollection.resolveFlowCollection(CN, ctx, token, onError, tag);\n const Coll = coll.constructor;\n // If we got a tagName matching the class, or the tag name is '!',\n // then use the tagName from the node class used to create it.\n if (tagName === '!' || tagName === Coll.tagName) {\n coll.tag = Coll.tagName;\n return coll;\n }\n if (tagName)\n coll.tag = tagName;\n return coll;\n}\nfunction composeCollection(CN, ctx, token, props, onError) {\n const tagToken = props.tag;\n const tagName = !tagToken\n ? null\n : ctx.directives.tagName(tagToken.source, msg => onError(tagToken, 'TAG_RESOLVE_FAILED', msg));\n if (token.type === 'block-seq') {\n const { anchor, newlineAfterProp: nl } = props;\n const lastProp = anchor && tagToken\n ? anchor.offset > tagToken.offset\n ? anchor\n : tagToken\n : (anchor ?? tagToken);\n if (lastProp && (!nl || nl.offset < lastProp.offset)) {\n const message = 'Missing newline after block sequence props';\n onError(lastProp, 'MISSING_CHAR', message);\n }\n }\n const expType = token.type === 'block-map'\n ? 'map'\n : token.type === 'block-seq'\n ? 'seq'\n : token.start.source === '{'\n ? 'map'\n : 'seq';\n // shortcut: check if it's a generic YAMLMap or YAMLSeq\n // before jumping into the custom tag logic.\n if (!tagToken ||\n !tagName ||\n tagName === '!' ||\n (tagName === YAMLMap.YAMLMap.tagName && expType === 'map') ||\n (tagName === YAMLSeq.YAMLSeq.tagName && expType === 'seq')) {\n return resolveCollection(CN, ctx, token, onError, tagName);\n }\n let tag = ctx.schema.tags.find(t => t.tag === tagName && t.collection === expType);\n if (!tag) {\n const kt = ctx.schema.knownTags[tagName];\n if (kt?.collection === expType) {\n ctx.schema.tags.push(Object.assign({}, kt, { default: false }));\n tag = kt;\n }\n else {\n if (kt) {\n onError(tagToken, 'BAD_COLLECTION_TYPE', `${kt.tag} used for ${expType} collection, but expects ${kt.collection ?? 'scalar'}`, true);\n }\n else {\n onError(tagToken, 'TAG_RESOLVE_FAILED', `Unresolved tag: ${tagName}`, true);\n }\n return resolveCollection(CN, ctx, token, onError, tagName);\n }\n }\n const coll = resolveCollection(CN, ctx, token, onError, tagName, tag);\n const res = tag.resolve?.(coll, msg => onError(tagToken, 'TAG_RESOLVE_FAILED', msg), ctx.options) ?? coll;\n const node = identity.isNode(res)\n ? res\n : new Scalar.Scalar(res);\n node.range = coll.range;\n node.tag = tagName;\n if (tag?.format)\n node.format = tag.format;\n return node;\n}\n\nexports.composeCollection = composeCollection;\n","'use strict';\n\nvar Scalar = require('../nodes/Scalar.js');\n\nfunction resolveBlockScalar(ctx, scalar, onError) {\n const start = scalar.offset;\n const header = parseBlockScalarHeader(scalar, ctx.options.strict, onError);\n if (!header)\n return { value: '', type: null, comment: '', range: [start, start, start] };\n const type = header.mode === '>' ? Scalar.Scalar.BLOCK_FOLDED : Scalar.Scalar.BLOCK_LITERAL;\n const lines = scalar.source ? splitLines(scalar.source) : [];\n // determine the end of content & start of chomping\n let chompStart = lines.length;\n for (let i = lines.length - 1; i >= 0; --i) {\n const content = lines[i][1];\n if (content === '' || content === '\\r')\n chompStart = i;\n else\n break;\n }\n // shortcut for empty contents\n if (chompStart === 0) {\n const value = header.chomp === '+' && lines.length > 0\n ? '\\n'.repeat(Math.max(1, lines.length - 1))\n : '';\n let end = start + header.length;\n if (scalar.source)\n end += scalar.source.length;\n return { value, type, comment: header.comment, range: [start, end, end] };\n }\n // find the indentation level to trim from start\n let trimIndent = scalar.indent + header.indent;\n let offset = scalar.offset + header.length;\n let contentStart = 0;\n for (let i = 0; i < chompStart; ++i) {\n const [indent, content] = lines[i];\n if (content === '' || content === '\\r') {\n if (header.indent === 0 && indent.length > trimIndent)\n trimIndent = indent.length;\n }\n else {\n if (indent.length < trimIndent) {\n const message = 'Block scalars with more-indented leading empty lines must use an explicit indentation indicator';\n onError(offset + indent.length, 'MISSING_CHAR', message);\n }\n if (header.indent === 0)\n trimIndent = indent.length;\n contentStart = i;\n if (trimIndent === 0 && !ctx.atRoot) {\n const message = 'Block scalar values in collections must be indented';\n onError(offset, 'BAD_INDENT', message);\n }\n break;\n }\n offset += indent.length + content.length + 1;\n }\n // include trailing more-indented empty lines in content\n for (let i = lines.length - 1; i >= chompStart; --i) {\n if (lines[i][0].length > trimIndent)\n chompStart = i + 1;\n }\n let value = '';\n let sep = '';\n let prevMoreIndented = false;\n // leading whitespace is kept intact\n for (let i = 0; i < contentStart; ++i)\n value += lines[i][0].slice(trimIndent) + '\\n';\n for (let i = contentStart; i < chompStart; ++i) {\n let [indent, content] = lines[i];\n offset += indent.length + content.length + 1;\n const crlf = content[content.length - 1] === '\\r';\n if (crlf)\n content = content.slice(0, -1);\n /* istanbul ignore if already caught in lexer */\n if (content && indent.length < trimIndent) {\n const src = header.indent\n ? 'explicit indentation indicator'\n : 'first line';\n const message = `Block scalar lines must not be less indented than their ${src}`;\n onError(offset - content.length - (crlf ? 2 : 1), 'BAD_INDENT', message);\n indent = '';\n }\n if (type === Scalar.Scalar.BLOCK_LITERAL) {\n value += sep + indent.slice(trimIndent) + content;\n sep = '\\n';\n }\n else if (indent.length > trimIndent || content[0] === '\\t') {\n // more-indented content within a folded block\n if (sep === ' ')\n sep = '\\n';\n else if (!prevMoreIndented && sep === '\\n')\n sep = '\\n\\n';\n value += sep + indent.slice(trimIndent) + content;\n sep = '\\n';\n prevMoreIndented = true;\n }\n else if (content === '') {\n // empty line\n if (sep === '\\n')\n value += '\\n';\n else\n sep = '\\n';\n }\n else {\n value += sep + content;\n sep = ' ';\n prevMoreIndented = false;\n }\n }\n switch (header.chomp) {\n case '-':\n break;\n case '+':\n for (let i = chompStart; i < lines.length; ++i)\n value += '\\n' + lines[i][0].slice(trimIndent);\n if (value[value.length - 1] !== '\\n')\n value += '\\n';\n break;\n default:\n value += '\\n';\n }\n const end = start + header.length + scalar.source.length;\n return { value, type, comment: header.comment, range: [start, end, end] };\n}\nfunction parseBlockScalarHeader({ offset, props }, strict, onError) {\n /* istanbul ignore if should not happen */\n if (props[0].type !== 'block-scalar-header') {\n onError(props[0], 'IMPOSSIBLE', 'Block scalar header not found');\n return null;\n }\n const { source } = props[0];\n const mode = source[0];\n let indent = 0;\n let chomp = '';\n let error = -1;\n for (let i = 1; i < source.length; ++i) {\n const ch = source[i];\n if (!chomp && (ch === '-' || ch === '+'))\n chomp = ch;\n else {\n const n = Number(ch);\n if (!indent && n)\n indent = n;\n else if (error === -1)\n error = offset + i;\n }\n }\n if (error !== -1)\n onError(error, 'UNEXPECTED_TOKEN', `Block scalar header includes extra characters: ${source}`);\n let hasSpace = false;\n let comment = '';\n let length = source.length;\n for (let i = 1; i < props.length; ++i) {\n const token = props[i];\n switch (token.type) {\n case 'space':\n hasSpace = true;\n // fallthrough\n case 'newline':\n length += token.source.length;\n break;\n case 'comment':\n if (strict && !hasSpace) {\n const message = 'Comments must be separated from other tokens by white space characters';\n onError(token, 'MISSING_CHAR', message);\n }\n length += token.source.length;\n comment = token.source.substring(1);\n break;\n case 'error':\n onError(token, 'UNEXPECTED_TOKEN', token.message);\n length += token.source.length;\n break;\n /* istanbul ignore next should not happen */\n default: {\n const message = `Unexpected token in block scalar header: ${token.type}`;\n onError(token, 'UNEXPECTED_TOKEN', message);\n const ts = token.source;\n if (ts && typeof ts === 'string')\n length += ts.length;\n }\n }\n }\n return { mode, indent, chomp, comment, length };\n}\n/** @returns Array of lines split up as `[indent, content]` */\nfunction splitLines(source) {\n const split = source.split(/\\n( *)/);\n const first = split[0];\n const m = first.match(/^( *)/);\n const line0 = m?.[1]\n ? [m[1], first.slice(m[1].length)]\n : ['', first];\n const lines = [line0];\n for (let i = 1; i < split.length; i += 2)\n lines.push([split[i], split[i + 1]]);\n return lines;\n}\n\nexports.resolveBlockScalar = resolveBlockScalar;\n","'use strict';\n\nvar Scalar = require('../nodes/Scalar.js');\nvar resolveEnd = require('./resolve-end.js');\n\nfunction resolveFlowScalar(scalar, strict, onError) {\n const { offset, type, source, end } = scalar;\n let _type;\n let value;\n const _onError = (rel, code, msg) => onError(offset + rel, code, msg);\n switch (type) {\n case 'scalar':\n _type = Scalar.Scalar.PLAIN;\n value = plainValue(source, _onError);\n break;\n case 'single-quoted-scalar':\n _type = Scalar.Scalar.QUOTE_SINGLE;\n value = singleQuotedValue(source, _onError);\n break;\n case 'double-quoted-scalar':\n _type = Scalar.Scalar.QUOTE_DOUBLE;\n value = doubleQuotedValue(source, _onError);\n break;\n /* istanbul ignore next should not happen */\n default:\n onError(scalar, 'UNEXPECTED_TOKEN', `Expected a flow scalar value, but found: ${type}`);\n return {\n value: '',\n type: null,\n comment: '',\n range: [offset, offset + source.length, offset + source.length]\n };\n }\n const valueEnd = offset + source.length;\n const re = resolveEnd.resolveEnd(end, valueEnd, strict, onError);\n return {\n value,\n type: _type,\n comment: re.comment,\n range: [offset, valueEnd, re.offset]\n };\n}\nfunction plainValue(source, onError) {\n let badChar = '';\n switch (source[0]) {\n /* istanbul ignore next should not happen */\n case '\\t':\n badChar = 'a tab character';\n break;\n case ',':\n badChar = 'flow indicator character ,';\n break;\n case '%':\n badChar = 'directive indicator character %';\n break;\n case '|':\n case '>': {\n badChar = `block scalar indicator ${source[0]}`;\n break;\n }\n case '@':\n case '`': {\n badChar = `reserved character ${source[0]}`;\n break;\n }\n }\n if (badChar)\n onError(0, 'BAD_SCALAR_START', `Plain value cannot start with ${badChar}`);\n return foldLines(source);\n}\nfunction singleQuotedValue(source, onError) {\n if (source[source.length - 1] !== \"'\" || source.length === 1)\n onError(source.length, 'MISSING_CHAR', \"Missing closing 'quote\");\n return foldLines(source.slice(1, -1)).replace(/''/g, \"'\");\n}\nfunction foldLines(source) {\n /**\n * The negative lookbehind here and in the `re` RegExp is to\n * prevent causing a polynomial search time in certain cases.\n *\n * The try-catch is for Safari, which doesn't support this yet:\n * https://caniuse.com/js-regexp-lookbehind\n */\n let first, line;\n try {\n first = new RegExp('(.*?)(? wsStart ? source.slice(wsStart, i + 1) : ch;\n }\n else {\n res += ch;\n }\n }\n if (source[source.length - 1] !== '\"' || source.length === 1)\n onError(source.length, 'MISSING_CHAR', 'Missing closing \"quote');\n return res;\n}\n/**\n * Fold a single newline into a space, multiple newlines to N - 1 newlines.\n * Presumes `source[offset] === '\\n'`\n */\nfunction foldNewline(source, offset) {\n let fold = '';\n let ch = source[offset + 1];\n while (ch === ' ' || ch === '\\t' || ch === '\\n' || ch === '\\r') {\n if (ch === '\\r' && source[offset + 2] !== '\\n')\n break;\n if (ch === '\\n')\n fold += '\\n';\n offset += 1;\n ch = source[offset + 1];\n }\n if (!fold)\n fold = ' ';\n return { fold, offset };\n}\nconst escapeCodes = {\n '0': '\\0', // null character\n a: '\\x07', // bell character\n b: '\\b', // backspace\n e: '\\x1b', // escape character\n f: '\\f', // form feed\n n: '\\n', // line feed\n r: '\\r', // carriage return\n t: '\\t', // horizontal tab\n v: '\\v', // vertical tab\n N: '\\u0085', // Unicode next line\n _: '\\u00a0', // Unicode non-breaking space\n L: '\\u2028', // Unicode line separator\n P: '\\u2029', // Unicode paragraph separator\n ' ': ' ',\n '\"': '\"',\n '/': '/',\n '\\\\': '\\\\',\n '\\t': '\\t'\n};\nfunction parseCharCode(source, offset, length, onError) {\n const cc = source.substr(offset, length);\n const ok = cc.length === length && /^[0-9a-fA-F]+$/.test(cc);\n const code = ok ? parseInt(cc, 16) : NaN;\n if (isNaN(code)) {\n const raw = source.substr(offset - 2, length + 2);\n onError(offset - 2, 'BAD_DQ_ESCAPE', `Invalid escape sequence ${raw}`);\n return raw;\n }\n return String.fromCodePoint(code);\n}\n\nexports.resolveFlowScalar = resolveFlowScalar;\n","'use strict';\n\nvar identity = require('../nodes/identity.js');\nvar Scalar = require('../nodes/Scalar.js');\nvar resolveBlockScalar = require('./resolve-block-scalar.js');\nvar resolveFlowScalar = require('./resolve-flow-scalar.js');\n\nfunction composeScalar(ctx, token, tagToken, onError) {\n const { value, type, comment, range } = token.type === 'block-scalar'\n ? resolveBlockScalar.resolveBlockScalar(ctx, token, onError)\n : resolveFlowScalar.resolveFlowScalar(token, ctx.options.strict, onError);\n const tagName = tagToken\n ? ctx.directives.tagName(tagToken.source, msg => onError(tagToken, 'TAG_RESOLVE_FAILED', msg))\n : null;\n let tag;\n if (ctx.options.stringKeys && ctx.atKey) {\n tag = ctx.schema[identity.SCALAR];\n }\n else if (tagName)\n tag = findScalarTagByName(ctx.schema, value, tagName, tagToken, onError);\n else if (token.type === 'scalar')\n tag = findScalarTagByTest(ctx, value, token, onError);\n else\n tag = ctx.schema[identity.SCALAR];\n let scalar;\n try {\n const res = tag.resolve(value, msg => onError(tagToken ?? token, 'TAG_RESOLVE_FAILED', msg), ctx.options);\n scalar = identity.isScalar(res) ? res : new Scalar.Scalar(res);\n }\n catch (error) {\n const msg = error instanceof Error ? error.message : String(error);\n onError(tagToken ?? token, 'TAG_RESOLVE_FAILED', msg);\n scalar = new Scalar.Scalar(value);\n }\n scalar.range = range;\n scalar.source = value;\n if (type)\n scalar.type = type;\n if (tagName)\n scalar.tag = tagName;\n if (tag.format)\n scalar.format = tag.format;\n if (comment)\n scalar.comment = comment;\n return scalar;\n}\nfunction findScalarTagByName(schema, value, tagName, tagToken, onError) {\n if (tagName === '!')\n return schema[identity.SCALAR]; // non-specific tag\n const matchWithTest = [];\n for (const tag of schema.tags) {\n if (!tag.collection && tag.tag === tagName) {\n if (tag.default && tag.test)\n matchWithTest.push(tag);\n else\n return tag;\n }\n }\n for (const tag of matchWithTest)\n if (tag.test?.test(value))\n return tag;\n const kt = schema.knownTags[tagName];\n if (kt && !kt.collection) {\n // Ensure that the known tag is available for stringifying,\n // but does not get used by default.\n schema.tags.push(Object.assign({}, kt, { default: false, test: undefined }));\n return kt;\n }\n onError(tagToken, 'TAG_RESOLVE_FAILED', `Unresolved tag: ${tagName}`, tagName !== 'tag:yaml.org,2002:str');\n return schema[identity.SCALAR];\n}\nfunction findScalarTagByTest({ atKey, directives, schema }, value, token, onError) {\n const tag = schema.tags.find(tag => (tag.default === true || (atKey && tag.default === 'key')) &&\n tag.test?.test(value)) || schema[identity.SCALAR];\n if (schema.compat) {\n const compat = schema.compat.find(tag => tag.default && tag.test?.test(value)) ??\n schema[identity.SCALAR];\n if (tag.tag !== compat.tag) {\n const ts = directives.tagString(tag.tag);\n const cs = directives.tagString(compat.tag);\n const msg = `Value may be parsed as either ${ts} or ${cs}`;\n onError(token, 'TAG_RESOLVE_FAILED', msg, true);\n }\n }\n return tag;\n}\n\nexports.composeScalar = composeScalar;\n","'use strict';\n\nfunction emptyScalarPosition(offset, before, pos) {\n if (before) {\n pos ?? (pos = before.length);\n for (let i = pos - 1; i >= 0; --i) {\n let st = before[i];\n switch (st.type) {\n case 'space':\n case 'comment':\n case 'newline':\n offset -= st.source.length;\n continue;\n }\n // Technically, an empty scalar is immediately after the last non-empty\n // node, but it's more useful to place it after any whitespace.\n st = before[++i];\n while (st?.type === 'space') {\n offset += st.source.length;\n st = before[++i];\n }\n break;\n }\n }\n return offset;\n}\n\nexports.emptyScalarPosition = emptyScalarPosition;\n","'use strict';\n\nvar Alias = require('../nodes/Alias.js');\nvar identity = require('../nodes/identity.js');\nvar composeCollection = require('./compose-collection.js');\nvar composeScalar = require('./compose-scalar.js');\nvar resolveEnd = require('./resolve-end.js');\nvar utilEmptyScalarPosition = require('./util-empty-scalar-position.js');\n\nconst CN = { composeNode, composeEmptyNode };\nfunction composeNode(ctx, token, props, onError) {\n const atKey = ctx.atKey;\n const { spaceBefore, comment, anchor, tag } = props;\n let node;\n let isSrcToken = true;\n switch (token.type) {\n case 'alias':\n node = composeAlias(ctx, token, onError);\n if (anchor || tag)\n onError(token, 'ALIAS_PROPS', 'An alias node must not specify any properties');\n break;\n case 'scalar':\n case 'single-quoted-scalar':\n case 'double-quoted-scalar':\n case 'block-scalar':\n node = composeScalar.composeScalar(ctx, token, tag, onError);\n if (anchor)\n node.anchor = anchor.source.substring(1);\n break;\n case 'block-map':\n case 'block-seq':\n case 'flow-collection':\n node = composeCollection.composeCollection(CN, ctx, token, props, onError);\n if (anchor)\n node.anchor = anchor.source.substring(1);\n break;\n default: {\n const message = token.type === 'error'\n ? token.message\n : `Unsupported token (type: ${token.type})`;\n onError(token, 'UNEXPECTED_TOKEN', message);\n node = composeEmptyNode(ctx, token.offset, undefined, null, props, onError);\n isSrcToken = false;\n }\n }\n if (anchor && node.anchor === '')\n onError(anchor, 'BAD_ALIAS', 'Anchor cannot be an empty string');\n if (atKey &&\n ctx.options.stringKeys &&\n (!identity.isScalar(node) ||\n typeof node.value !== 'string' ||\n (node.tag && node.tag !== 'tag:yaml.org,2002:str'))) {\n const msg = 'With stringKeys, all keys must be strings';\n onError(tag ?? token, 'NON_STRING_KEY', msg);\n }\n if (spaceBefore)\n node.spaceBefore = true;\n if (comment) {\n if (token.type === 'scalar' && token.source === '')\n node.comment = comment;\n else\n node.commentBefore = comment;\n }\n // @ts-expect-error Type checking misses meaning of isSrcToken\n if (ctx.options.keepSourceTokens && isSrcToken)\n node.srcToken = token;\n return node;\n}\nfunction composeEmptyNode(ctx, offset, before, pos, { spaceBefore, comment, anchor, tag, end }, onError) {\n const token = {\n type: 'scalar',\n offset: utilEmptyScalarPosition.emptyScalarPosition(offset, before, pos),\n indent: -1,\n source: ''\n };\n const node = composeScalar.composeScalar(ctx, token, tag, onError);\n if (anchor) {\n node.anchor = anchor.source.substring(1);\n if (node.anchor === '')\n onError(anchor, 'BAD_ALIAS', 'Anchor cannot be an empty string');\n }\n if (spaceBefore)\n node.spaceBefore = true;\n if (comment) {\n node.comment = comment;\n node.range[2] = end;\n }\n return node;\n}\nfunction composeAlias({ options }, { offset, source, end }, onError) {\n const alias = new Alias.Alias(source.substring(1));\n if (alias.source === '')\n onError(offset, 'BAD_ALIAS', 'Alias cannot be an empty string');\n if (alias.source.endsWith(':'))\n onError(offset + source.length - 1, 'BAD_ALIAS', 'Alias ending in : is ambiguous', true);\n const valueEnd = offset + source.length;\n const re = resolveEnd.resolveEnd(end, valueEnd, options.strict, onError);\n alias.range = [offset, valueEnd, re.offset];\n if (re.comment)\n alias.comment = re.comment;\n return alias;\n}\n\nexports.composeEmptyNode = composeEmptyNode;\nexports.composeNode = composeNode;\n","'use strict';\n\nvar Document = require('../doc/Document.js');\nvar composeNode = require('./compose-node.js');\nvar resolveEnd = require('./resolve-end.js');\nvar resolveProps = require('./resolve-props.js');\n\nfunction composeDoc(options, directives, { offset, start, value, end }, onError) {\n const opts = Object.assign({ _directives: directives }, options);\n const doc = new Document.Document(undefined, opts);\n const ctx = {\n atKey: false,\n atRoot: true,\n directives: doc.directives,\n options: doc.options,\n schema: doc.schema\n };\n const props = resolveProps.resolveProps(start, {\n indicator: 'doc-start',\n next: value ?? end?.[0],\n offset,\n onError,\n parentIndent: 0,\n startOnNewline: true\n });\n if (props.found) {\n doc.directives.docStart = true;\n if (value &&\n (value.type === 'block-map' || value.type === 'block-seq') &&\n !props.hasNewline)\n onError(props.end, 'MISSING_CHAR', 'Block collection cannot start on same line with directives-end marker');\n }\n // @ts-expect-error If Contents is set, let's trust the user\n doc.contents = value\n ? composeNode.composeNode(ctx, value, props, onError)\n : composeNode.composeEmptyNode(ctx, props.end, start, null, props, onError);\n const contentEnd = doc.contents.range[2];\n const re = resolveEnd.resolveEnd(end, contentEnd, false, onError);\n if (re.comment)\n doc.comment = re.comment;\n doc.range = [offset, contentEnd, re.offset];\n return doc;\n}\n\nexports.composeDoc = composeDoc;\n","'use strict';\n\nvar node_process = require('process');\nvar directives = require('../doc/directives.js');\nvar Document = require('../doc/Document.js');\nvar errors = require('../errors.js');\nvar identity = require('../nodes/identity.js');\nvar composeDoc = require('./compose-doc.js');\nvar resolveEnd = require('./resolve-end.js');\n\nfunction getErrorPos(src) {\n if (typeof src === 'number')\n return [src, src + 1];\n if (Array.isArray(src))\n return src.length === 2 ? src : [src[0], src[1]];\n const { offset, source } = src;\n return [offset, offset + (typeof source === 'string' ? source.length : 1)];\n}\nfunction parsePrelude(prelude) {\n let comment = '';\n let atComment = false;\n let afterEmptyLine = false;\n for (let i = 0; i < prelude.length; ++i) {\n const source = prelude[i];\n switch (source[0]) {\n case '#':\n comment +=\n (comment === '' ? '' : afterEmptyLine ? '\\n\\n' : '\\n') +\n (source.substring(1) || ' ');\n atComment = true;\n afterEmptyLine = false;\n break;\n case '%':\n if (prelude[i + 1]?.[0] !== '#')\n i += 1;\n atComment = false;\n break;\n default:\n // This may be wrong after doc-end, but in that case it doesn't matter\n if (!atComment)\n afterEmptyLine = true;\n atComment = false;\n }\n }\n return { comment, afterEmptyLine };\n}\n/**\n * Compose a stream of CST nodes into a stream of YAML Documents.\n *\n * ```ts\n * import { Composer, Parser } from 'yaml'\n *\n * const src: string = ...\n * const tokens = new Parser().parse(src)\n * const docs = new Composer().compose(tokens)\n * ```\n */\nclass Composer {\n constructor(options = {}) {\n this.doc = null;\n this.atDirectives = false;\n this.prelude = [];\n this.errors = [];\n this.warnings = [];\n this.onError = (source, code, message, warning) => {\n const pos = getErrorPos(source);\n if (warning)\n this.warnings.push(new errors.YAMLWarning(pos, code, message));\n else\n this.errors.push(new errors.YAMLParseError(pos, code, message));\n };\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n this.directives = new directives.Directives({ version: options.version || '1.2' });\n this.options = options;\n }\n decorate(doc, afterDoc) {\n const { comment, afterEmptyLine } = parsePrelude(this.prelude);\n //console.log({ dc: doc.comment, prelude, comment })\n if (comment) {\n const dc = doc.contents;\n if (afterDoc) {\n doc.comment = doc.comment ? `${doc.comment}\\n${comment}` : comment;\n }\n else if (afterEmptyLine || doc.directives.docStart || !dc) {\n doc.commentBefore = comment;\n }\n else if (identity.isCollection(dc) && !dc.flow && dc.items.length > 0) {\n let it = dc.items[0];\n if (identity.isPair(it))\n it = it.key;\n const cb = it.commentBefore;\n it.commentBefore = cb ? `${comment}\\n${cb}` : comment;\n }\n else {\n const cb = dc.commentBefore;\n dc.commentBefore = cb ? `${comment}\\n${cb}` : comment;\n }\n }\n if (afterDoc) {\n Array.prototype.push.apply(doc.errors, this.errors);\n Array.prototype.push.apply(doc.warnings, this.warnings);\n }\n else {\n doc.errors = this.errors;\n doc.warnings = this.warnings;\n }\n this.prelude = [];\n this.errors = [];\n this.warnings = [];\n }\n /**\n * Current stream status information.\n *\n * Mostly useful at the end of input for an empty stream.\n */\n streamInfo() {\n return {\n comment: parsePrelude(this.prelude).comment,\n directives: this.directives,\n errors: this.errors,\n warnings: this.warnings\n };\n }\n /**\n * Compose tokens into documents.\n *\n * @param forceDoc - If the stream contains no document, still emit a final document including any comments and directives that would be applied to a subsequent document.\n * @param endOffset - Should be set if `forceDoc` is also set, to set the document range end and to indicate errors correctly.\n */\n *compose(tokens, forceDoc = false, endOffset = -1) {\n for (const token of tokens)\n yield* this.next(token);\n yield* this.end(forceDoc, endOffset);\n }\n /** Advance the composer by one CST token. */\n *next(token) {\n if (node_process.env.LOG_STREAM)\n console.dir(token, { depth: null });\n switch (token.type) {\n case 'directive':\n this.directives.add(token.source, (offset, message, warning) => {\n const pos = getErrorPos(token);\n pos[0] += offset;\n this.onError(pos, 'BAD_DIRECTIVE', message, warning);\n });\n this.prelude.push(token.source);\n this.atDirectives = true;\n break;\n case 'document': {\n const doc = composeDoc.composeDoc(this.options, this.directives, token, this.onError);\n if (this.atDirectives && !doc.directives.docStart)\n this.onError(token, 'MISSING_CHAR', 'Missing directives-end/doc-start indicator line');\n this.decorate(doc, false);\n if (this.doc)\n yield this.doc;\n this.doc = doc;\n this.atDirectives = false;\n break;\n }\n case 'byte-order-mark':\n case 'space':\n break;\n case 'comment':\n case 'newline':\n this.prelude.push(token.source);\n break;\n case 'error': {\n const msg = token.source\n ? `${token.message}: ${JSON.stringify(token.source)}`\n : token.message;\n const error = new errors.YAMLParseError(getErrorPos(token), 'UNEXPECTED_TOKEN', msg);\n if (this.atDirectives || !this.doc)\n this.errors.push(error);\n else\n this.doc.errors.push(error);\n break;\n }\n case 'doc-end': {\n if (!this.doc) {\n const msg = 'Unexpected doc-end without preceding document';\n this.errors.push(new errors.YAMLParseError(getErrorPos(token), 'UNEXPECTED_TOKEN', msg));\n break;\n }\n this.doc.directives.docEnd = true;\n const end = resolveEnd.resolveEnd(token.end, token.offset + token.source.length, this.doc.options.strict, this.onError);\n this.decorate(this.doc, true);\n if (end.comment) {\n const dc = this.doc.comment;\n this.doc.comment = dc ? `${dc}\\n${end.comment}` : end.comment;\n }\n this.doc.range[2] = end.offset;\n break;\n }\n default:\n this.errors.push(new errors.YAMLParseError(getErrorPos(token), 'UNEXPECTED_TOKEN', `Unsupported token ${token.type}`));\n }\n }\n /**\n * Call at end of input to yield any remaining document.\n *\n * @param forceDoc - If the stream contains no document, still emit a final document including any comments and directives that would be applied to a subsequent document.\n * @param endOffset - Should be set if `forceDoc` is also set, to set the document range end and to indicate errors correctly.\n */\n *end(forceDoc = false, endOffset = -1) {\n if (this.doc) {\n this.decorate(this.doc, true);\n yield this.doc;\n this.doc = null;\n }\n else if (forceDoc) {\n const opts = Object.assign({ _directives: this.directives }, this.options);\n const doc = new Document.Document(undefined, opts);\n if (this.atDirectives)\n this.onError(endOffset, 'MISSING_CHAR', 'Missing directives-end indicator line');\n doc.range = [0, endOffset, endOffset];\n this.decorate(doc, false);\n yield doc;\n }\n }\n}\n\nexports.Composer = Composer;\n","'use strict';\n\nvar resolveBlockScalar = require('../compose/resolve-block-scalar.js');\nvar resolveFlowScalar = require('../compose/resolve-flow-scalar.js');\nvar errors = require('../errors.js');\nvar stringifyString = require('../stringify/stringifyString.js');\n\nfunction resolveAsScalar(token, strict = true, onError) {\n if (token) {\n const _onError = (pos, code, message) => {\n const offset = typeof pos === 'number' ? pos : Array.isArray(pos) ? pos[0] : pos.offset;\n if (onError)\n onError(offset, code, message);\n else\n throw new errors.YAMLParseError([offset, offset + 1], code, message);\n };\n switch (token.type) {\n case 'scalar':\n case 'single-quoted-scalar':\n case 'double-quoted-scalar':\n return resolveFlowScalar.resolveFlowScalar(token, strict, _onError);\n case 'block-scalar':\n return resolveBlockScalar.resolveBlockScalar({ options: { strict } }, token, _onError);\n }\n }\n return null;\n}\n/**\n * Create a new scalar token with `value`\n *\n * Values that represent an actual string but may be parsed as a different type should use a `type` other than `'PLAIN'`,\n * as this function does not support any schema operations and won't check for such conflicts.\n *\n * @param value The string representation of the value, which will have its content properly indented.\n * @param context.end Comments and whitespace after the end of the value, or after the block scalar header. If undefined, a newline will be added.\n * @param context.implicitKey Being within an implicit key may affect the resolved type of the token's value.\n * @param context.indent The indent level of the token.\n * @param context.inFlow Is this scalar within a flow collection? This may affect the resolved type of the token's value.\n * @param context.offset The offset position of the token.\n * @param context.type The preferred type of the scalar token. If undefined, the previous type of the `token` will be used, defaulting to `'PLAIN'`.\n */\nfunction createScalarToken(value, context) {\n const { implicitKey = false, indent, inFlow = false, offset = -1, type = 'PLAIN' } = context;\n const source = stringifyString.stringifyString({ type, value }, {\n implicitKey,\n indent: indent > 0 ? ' '.repeat(indent) : '',\n inFlow,\n options: { blockQuote: true, lineWidth: -1 }\n });\n const end = context.end ?? [\n { type: 'newline', offset: -1, indent, source: '\\n' }\n ];\n switch (source[0]) {\n case '|':\n case '>': {\n const he = source.indexOf('\\n');\n const head = source.substring(0, he);\n const body = source.substring(he + 1) + '\\n';\n const props = [\n { type: 'block-scalar-header', offset, indent, source: head }\n ];\n if (!addEndtoBlockProps(props, end))\n props.push({ type: 'newline', offset: -1, indent, source: '\\n' });\n return { type: 'block-scalar', offset, indent, props, source: body };\n }\n case '\"':\n return { type: 'double-quoted-scalar', offset, indent, source, end };\n case \"'\":\n return { type: 'single-quoted-scalar', offset, indent, source, end };\n default:\n return { type: 'scalar', offset, indent, source, end };\n }\n}\n/**\n * Set the value of `token` to the given string `value`, overwriting any previous contents and type that it may have.\n *\n * Best efforts are made to retain any comments previously associated with the `token`,\n * though all contents within a collection's `items` will be overwritten.\n *\n * Values that represent an actual string but may be parsed as a different type should use a `type` other than `'PLAIN'`,\n * as this function does not support any schema operations and won't check for such conflicts.\n *\n * @param token Any token. If it does not include an `indent` value, the value will be stringified as if it were an implicit key.\n * @param value The string representation of the value, which will have its content properly indented.\n * @param context.afterKey In most cases, values after a key should have an additional level of indentation.\n * @param context.implicitKey Being within an implicit key may affect the resolved type of the token's value.\n * @param context.inFlow Being within a flow collection may affect the resolved type of the token's value.\n * @param context.type The preferred type of the scalar token. If undefined, the previous type of the `token` will be used, defaulting to `'PLAIN'`.\n */\nfunction setScalarValue(token, value, context = {}) {\n let { afterKey = false, implicitKey = false, inFlow = false, type } = context;\n let indent = 'indent' in token ? token.indent : null;\n if (afterKey && typeof indent === 'number')\n indent += 2;\n if (!type)\n switch (token.type) {\n case 'single-quoted-scalar':\n type = 'QUOTE_SINGLE';\n break;\n case 'double-quoted-scalar':\n type = 'QUOTE_DOUBLE';\n break;\n case 'block-scalar': {\n const header = token.props[0];\n if (header.type !== 'block-scalar-header')\n throw new Error('Invalid block scalar header');\n type = header.source[0] === '>' ? 'BLOCK_FOLDED' : 'BLOCK_LITERAL';\n break;\n }\n default:\n type = 'PLAIN';\n }\n const source = stringifyString.stringifyString({ type, value }, {\n implicitKey: implicitKey || indent === null,\n indent: indent !== null && indent > 0 ? ' '.repeat(indent) : '',\n inFlow,\n options: { blockQuote: true, lineWidth: -1 }\n });\n switch (source[0]) {\n case '|':\n case '>':\n setBlockScalarValue(token, source);\n break;\n case '\"':\n setFlowScalarValue(token, source, 'double-quoted-scalar');\n break;\n case \"'\":\n setFlowScalarValue(token, source, 'single-quoted-scalar');\n break;\n default:\n setFlowScalarValue(token, source, 'scalar');\n }\n}\nfunction setBlockScalarValue(token, source) {\n const he = source.indexOf('\\n');\n const head = source.substring(0, he);\n const body = source.substring(he + 1) + '\\n';\n if (token.type === 'block-scalar') {\n const header = token.props[0];\n if (header.type !== 'block-scalar-header')\n throw new Error('Invalid block scalar header');\n header.source = head;\n token.source = body;\n }\n else {\n const { offset } = token;\n const indent = 'indent' in token ? token.indent : -1;\n const props = [\n { type: 'block-scalar-header', offset, indent, source: head }\n ];\n if (!addEndtoBlockProps(props, 'end' in token ? token.end : undefined))\n props.push({ type: 'newline', offset: -1, indent, source: '\\n' });\n for (const key of Object.keys(token))\n if (key !== 'type' && key !== 'offset')\n delete token[key];\n Object.assign(token, { type: 'block-scalar', indent, props, source: body });\n }\n}\n/** @returns `true` if last token is a newline */\nfunction addEndtoBlockProps(props, end) {\n if (end)\n for (const st of end)\n switch (st.type) {\n case 'space':\n case 'comment':\n props.push(st);\n break;\n case 'newline':\n props.push(st);\n return true;\n }\n return false;\n}\nfunction setFlowScalarValue(token, source, type) {\n switch (token.type) {\n case 'scalar':\n case 'double-quoted-scalar':\n case 'single-quoted-scalar':\n token.type = type;\n token.source = source;\n break;\n case 'block-scalar': {\n const end = token.props.slice(1);\n let oa = source.length;\n if (token.props[0].type === 'block-scalar-header')\n oa -= token.props[0].source.length;\n for (const tok of end)\n tok.offset += oa;\n delete token.props;\n Object.assign(token, { type, source, end });\n break;\n }\n case 'block-map':\n case 'block-seq': {\n const offset = token.offset + source.length;\n const nl = { type: 'newline', offset, indent: token.indent, source: '\\n' };\n delete token.items;\n Object.assign(token, { type, source, end: [nl] });\n break;\n }\n default: {\n const indent = 'indent' in token ? token.indent : -1;\n const end = 'end' in token && Array.isArray(token.end)\n ? token.end.filter(st => st.type === 'space' ||\n st.type === 'comment' ||\n st.type === 'newline')\n : [];\n for (const key of Object.keys(token))\n if (key !== 'type' && key !== 'offset')\n delete token[key];\n Object.assign(token, { type, indent, source, end });\n }\n }\n}\n\nexports.createScalarToken = createScalarToken;\nexports.resolveAsScalar = resolveAsScalar;\nexports.setScalarValue = setScalarValue;\n","'use strict';\n\n/**\n * Stringify a CST document, token, or collection item\n *\n * Fair warning: This applies no validation whatsoever, and\n * simply concatenates the sources in their logical order.\n */\nconst stringify = (cst) => 'type' in cst ? stringifyToken(cst) : stringifyItem(cst);\nfunction stringifyToken(token) {\n switch (token.type) {\n case 'block-scalar': {\n let res = '';\n for (const tok of token.props)\n res += stringifyToken(tok);\n return res + token.source;\n }\n case 'block-map':\n case 'block-seq': {\n let res = '';\n for (const item of token.items)\n res += stringifyItem(item);\n return res;\n }\n case 'flow-collection': {\n let res = token.start.source;\n for (const item of token.items)\n res += stringifyItem(item);\n for (const st of token.end)\n res += st.source;\n return res;\n }\n case 'document': {\n let res = stringifyItem(token);\n if (token.end)\n for (const st of token.end)\n res += st.source;\n return res;\n }\n default: {\n let res = token.source;\n if ('end' in token && token.end)\n for (const st of token.end)\n res += st.source;\n return res;\n }\n }\n}\nfunction stringifyItem({ start, key, sep, value }) {\n let res = '';\n for (const st of start)\n res += st.source;\n if (key)\n res += stringifyToken(key);\n if (sep)\n for (const st of sep)\n res += st.source;\n if (value)\n res += stringifyToken(value);\n return res;\n}\n\nexports.stringify = stringify;\n","'use strict';\n\nconst BREAK = Symbol('break visit');\nconst SKIP = Symbol('skip children');\nconst REMOVE = Symbol('remove item');\n/**\n * Apply a visitor to a CST document or item.\n *\n * Walks through the tree (depth-first) starting from the root, calling a\n * `visitor` function with two arguments when entering each item:\n * - `item`: The current item, which included the following members:\n * - `start: SourceToken[]` – Source tokens before the key or value,\n * possibly including its anchor or tag.\n * - `key?: Token | null` – Set for pair values. May then be `null`, if\n * the key before the `:` separator is empty.\n * - `sep?: SourceToken[]` – Source tokens between the key and the value,\n * which should include the `:` map value indicator if `value` is set.\n * - `value?: Token` – The value of a sequence item, or of a map pair.\n * - `path`: The steps from the root to the current node, as an array of\n * `['key' | 'value', number]` tuples.\n *\n * The return value of the visitor may be used to control the traversal:\n * - `undefined` (default): Do nothing and continue\n * - `visit.SKIP`: Do not visit the children of this token, continue with\n * next sibling\n * - `visit.BREAK`: Terminate traversal completely\n * - `visit.REMOVE`: Remove the current item, then continue with the next one\n * - `number`: Set the index of the next step. This is useful especially if\n * the index of the current token has changed.\n * - `function`: Define the next visitor for this item. After the original\n * visitor is called on item entry, next visitors are called after handling\n * a non-empty `key` and when exiting the item.\n */\nfunction visit(cst, visitor) {\n if ('type' in cst && cst.type === 'document')\n cst = { start: cst.start, value: cst.value };\n _visit(Object.freeze([]), cst, visitor);\n}\n// Without the `as symbol` casts, TS declares these in the `visit`\n// namespace using `var`, but then complains about that because\n// `unique symbol` must be `const`.\n/** Terminate visit traversal completely */\nvisit.BREAK = BREAK;\n/** Do not visit the children of the current item */\nvisit.SKIP = SKIP;\n/** Remove the current item */\nvisit.REMOVE = REMOVE;\n/** Find the item at `path` from `cst` as the root */\nvisit.itemAtPath = (cst, path) => {\n let item = cst;\n for (const [field, index] of path) {\n const tok = item?.[field];\n if (tok && 'items' in tok) {\n item = tok.items[index];\n }\n else\n return undefined;\n }\n return item;\n};\n/**\n * Get the immediate parent collection of the item at `path` from `cst` as the root.\n *\n * Throws an error if the collection is not found, which should never happen if the item itself exists.\n */\nvisit.parentCollection = (cst, path) => {\n const parent = visit.itemAtPath(cst, path.slice(0, -1));\n const field = path[path.length - 1][0];\n const coll = parent?.[field];\n if (coll && 'items' in coll)\n return coll;\n throw new Error('Parent collection not found');\n};\nfunction _visit(path, item, visitor) {\n let ctrl = visitor(item, path);\n if (typeof ctrl === 'symbol')\n return ctrl;\n for (const field of ['key', 'value']) {\n const token = item[field];\n if (token && 'items' in token) {\n for (let i = 0; i < token.items.length; ++i) {\n const ci = _visit(Object.freeze(path.concat([[field, i]])), token.items[i], visitor);\n if (typeof ci === 'number')\n i = ci - 1;\n else if (ci === BREAK)\n return BREAK;\n else if (ci === REMOVE) {\n token.items.splice(i, 1);\n i -= 1;\n }\n }\n if (typeof ctrl === 'function' && field === 'key')\n ctrl = ctrl(item, path);\n }\n }\n return typeof ctrl === 'function' ? ctrl(item, path) : ctrl;\n}\n\nexports.visit = visit;\n","'use strict';\n\nvar cstScalar = require('./cst-scalar.js');\nvar cstStringify = require('./cst-stringify.js');\nvar cstVisit = require('./cst-visit.js');\n\n/** The byte order mark */\nconst BOM = '\\u{FEFF}';\n/** Start of doc-mode */\nconst DOCUMENT = '\\x02'; // C0: Start of Text\n/** Unexpected end of flow-mode */\nconst FLOW_END = '\\x18'; // C0: Cancel\n/** Next token is a scalar value */\nconst SCALAR = '\\x1f'; // C0: Unit Separator\n/** @returns `true` if `token` is a flow or block collection */\nconst isCollection = (token) => !!token && 'items' in token;\n/** @returns `true` if `token` is a flow or block scalar; not an alias */\nconst isScalar = (token) => !!token &&\n (token.type === 'scalar' ||\n token.type === 'single-quoted-scalar' ||\n token.type === 'double-quoted-scalar' ||\n token.type === 'block-scalar');\n/* istanbul ignore next */\n/** Get a printable representation of a lexer token */\nfunction prettyToken(token) {\n switch (token) {\n case BOM:\n return '';\n case DOCUMENT:\n return '';\n case FLOW_END:\n return '';\n case SCALAR:\n return '';\n default:\n return JSON.stringify(token);\n }\n}\n/** Identify the type of a lexer token. May return `null` for unknown tokens. */\nfunction tokenType(source) {\n switch (source) {\n case BOM:\n return 'byte-order-mark';\n case DOCUMENT:\n return 'doc-mode';\n case FLOW_END:\n return 'flow-error-end';\n case SCALAR:\n return 'scalar';\n case '---':\n return 'doc-start';\n case '...':\n return 'doc-end';\n case '':\n case '\\n':\n case '\\r\\n':\n return 'newline';\n case '-':\n return 'seq-item-ind';\n case '?':\n return 'explicit-key-ind';\n case ':':\n return 'map-value-ind';\n case '{':\n return 'flow-map-start';\n case '}':\n return 'flow-map-end';\n case '[':\n return 'flow-seq-start';\n case ']':\n return 'flow-seq-end';\n case ',':\n return 'comma';\n }\n switch (source[0]) {\n case ' ':\n case '\\t':\n return 'space';\n case '#':\n return 'comment';\n case '%':\n return 'directive-line';\n case '*':\n return 'alias';\n case '&':\n return 'anchor';\n case '!':\n return 'tag';\n case \"'\":\n return 'single-quoted-scalar';\n case '\"':\n return 'double-quoted-scalar';\n case '|':\n case '>':\n return 'block-scalar-header';\n }\n return null;\n}\n\nexports.createScalarToken = cstScalar.createScalarToken;\nexports.resolveAsScalar = cstScalar.resolveAsScalar;\nexports.setScalarValue = cstScalar.setScalarValue;\nexports.stringify = cstStringify.stringify;\nexports.visit = cstVisit.visit;\nexports.BOM = BOM;\nexports.DOCUMENT = DOCUMENT;\nexports.FLOW_END = FLOW_END;\nexports.SCALAR = SCALAR;\nexports.isCollection = isCollection;\nexports.isScalar = isScalar;\nexports.prettyToken = prettyToken;\nexports.tokenType = tokenType;\n","'use strict';\n\nvar cst = require('./cst.js');\n\n/*\nSTART -> stream\n\nstream\n directive -> line-end -> stream\n indent + line-end -> stream\n [else] -> line-start\n\nline-end\n comment -> line-end\n newline -> .\n input-end -> END\n\nline-start\n doc-start -> doc\n doc-end -> stream\n [else] -> indent -> block-start\n\nblock-start\n seq-item-start -> block-start\n explicit-key-start -> block-start\n map-value-start -> block-start\n [else] -> doc\n\ndoc\n line-end -> line-start\n spaces -> doc\n anchor -> doc\n tag -> doc\n flow-start -> flow -> doc\n flow-end -> error -> doc\n seq-item-start -> error -> doc\n explicit-key-start -> error -> doc\n map-value-start -> doc\n alias -> doc\n quote-start -> quoted-scalar -> doc\n block-scalar-header -> line-end -> block-scalar(min) -> line-start\n [else] -> plain-scalar(false, min) -> doc\n\nflow\n line-end -> flow\n spaces -> flow\n anchor -> flow\n tag -> flow\n flow-start -> flow -> flow\n flow-end -> .\n seq-item-start -> error -> flow\n explicit-key-start -> flow\n map-value-start -> flow\n alias -> flow\n quote-start -> quoted-scalar -> flow\n comma -> flow\n [else] -> plain-scalar(true, 0) -> flow\n\nquoted-scalar\n quote-end -> .\n [else] -> quoted-scalar\n\nblock-scalar(min)\n newline + peek(indent < min) -> .\n [else] -> block-scalar(min)\n\nplain-scalar(is-flow, min)\n scalar-end(is-flow) -> .\n peek(newline + (indent < min)) -> .\n [else] -> plain-scalar(min)\n*/\nfunction isEmpty(ch) {\n switch (ch) {\n case undefined:\n case ' ':\n case '\\n':\n case '\\r':\n case '\\t':\n return true;\n default:\n return false;\n }\n}\nconst hexDigits = new Set('0123456789ABCDEFabcdef');\nconst tagChars = new Set(\"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-#;/?:@&=+$_.!~*'()\");\nconst flowIndicatorChars = new Set(',[]{}');\nconst invalidAnchorChars = new Set(' ,[]{}\\n\\r\\t');\nconst isNotAnchorChar = (ch) => !ch || invalidAnchorChars.has(ch);\n/**\n * Splits an input string into lexical tokens, i.e. smaller strings that are\n * easily identifiable by `tokens.tokenType()`.\n *\n * Lexing starts always in a \"stream\" context. Incomplete input may be buffered\n * until a complete token can be emitted.\n *\n * In addition to slices of the original input, the following control characters\n * may also be emitted:\n *\n * - `\\x02` (Start of Text): A document starts with the next token\n * - `\\x18` (Cancel): Unexpected end of flow-mode (indicates an error)\n * - `\\x1f` (Unit Separator): Next token is a scalar value\n * - `\\u{FEFF}` (Byte order mark): Emitted separately outside documents\n */\nclass Lexer {\n constructor() {\n /**\n * Flag indicating whether the end of the current buffer marks the end of\n * all input\n */\n this.atEnd = false;\n /**\n * Explicit indent set in block scalar header, as an offset from the current\n * minimum indent, so e.g. set to 1 from a header `|2+`. Set to -1 if not\n * explicitly set.\n */\n this.blockScalarIndent = -1;\n /**\n * Block scalars that include a + (keep) chomping indicator in their header\n * include trailing empty lines, which are otherwise excluded from the\n * scalar's contents.\n */\n this.blockScalarKeep = false;\n /** Current input */\n this.buffer = '';\n /**\n * Flag noting whether the map value indicator : can immediately follow this\n * node within a flow context.\n */\n this.flowKey = false;\n /** Count of surrounding flow collection levels. */\n this.flowLevel = 0;\n /**\n * Minimum level of indentation required for next lines to be parsed as a\n * part of the current scalar value.\n */\n this.indentNext = 0;\n /** Indentation level of the current line. */\n this.indentValue = 0;\n /** Position of the next \\n character. */\n this.lineEndPos = null;\n /** Stores the state of the lexer if reaching the end of incpomplete input */\n this.next = null;\n /** A pointer to `buffer`; the current position of the lexer. */\n this.pos = 0;\n }\n /**\n * Generate YAML tokens from the `source` string. If `incomplete`,\n * a part of the last line may be left as a buffer for the next call.\n *\n * @returns A generator of lexical tokens\n */\n *lex(source, incomplete = false) {\n if (source) {\n if (typeof source !== 'string')\n throw TypeError('source is not a string');\n this.buffer = this.buffer ? this.buffer + source : source;\n this.lineEndPos = null;\n }\n this.atEnd = !incomplete;\n let next = this.next ?? 'stream';\n while (next && (incomplete || this.hasChars(1)))\n next = yield* this.parseNext(next);\n }\n atLineEnd() {\n let i = this.pos;\n let ch = this.buffer[i];\n while (ch === ' ' || ch === '\\t')\n ch = this.buffer[++i];\n if (!ch || ch === '#' || ch === '\\n')\n return true;\n if (ch === '\\r')\n return this.buffer[i + 1] === '\\n';\n return false;\n }\n charAt(n) {\n return this.buffer[this.pos + n];\n }\n continueScalar(offset) {\n let ch = this.buffer[offset];\n if (this.indentNext > 0) {\n let indent = 0;\n while (ch === ' ')\n ch = this.buffer[++indent + offset];\n if (ch === '\\r') {\n const next = this.buffer[indent + offset + 1];\n if (next === '\\n' || (!next && !this.atEnd))\n return offset + indent + 1;\n }\n return ch === '\\n' || indent >= this.indentNext || (!ch && !this.atEnd)\n ? offset + indent\n : -1;\n }\n if (ch === '-' || ch === '.') {\n const dt = this.buffer.substr(offset, 3);\n if ((dt === '---' || dt === '...') && isEmpty(this.buffer[offset + 3]))\n return -1;\n }\n return offset;\n }\n getLine() {\n let end = this.lineEndPos;\n if (typeof end !== 'number' || (end !== -1 && end < this.pos)) {\n end = this.buffer.indexOf('\\n', this.pos);\n this.lineEndPos = end;\n }\n if (end === -1)\n return this.atEnd ? this.buffer.substring(this.pos) : null;\n if (this.buffer[end - 1] === '\\r')\n end -= 1;\n return this.buffer.substring(this.pos, end);\n }\n hasChars(n) {\n return this.pos + n <= this.buffer.length;\n }\n setNext(state) {\n this.buffer = this.buffer.substring(this.pos);\n this.pos = 0;\n this.lineEndPos = null;\n this.next = state;\n return null;\n }\n peek(n) {\n return this.buffer.substr(this.pos, n);\n }\n *parseNext(next) {\n switch (next) {\n case 'stream':\n return yield* this.parseStream();\n case 'line-start':\n return yield* this.parseLineStart();\n case 'block-start':\n return yield* this.parseBlockStart();\n case 'doc':\n return yield* this.parseDocument();\n case 'flow':\n return yield* this.parseFlowCollection();\n case 'quoted-scalar':\n return yield* this.parseQuotedScalar();\n case 'block-scalar':\n return yield* this.parseBlockScalar();\n case 'plain-scalar':\n return yield* this.parsePlainScalar();\n }\n }\n *parseStream() {\n let line = this.getLine();\n if (line === null)\n return this.setNext('stream');\n if (line[0] === cst.BOM) {\n yield* this.pushCount(1);\n line = line.substring(1);\n }\n if (line[0] === '%') {\n let dirEnd = line.length;\n let cs = line.indexOf('#');\n while (cs !== -1) {\n const ch = line[cs - 1];\n if (ch === ' ' || ch === '\\t') {\n dirEnd = cs - 1;\n break;\n }\n else {\n cs = line.indexOf('#', cs + 1);\n }\n }\n while (true) {\n const ch = line[dirEnd - 1];\n if (ch === ' ' || ch === '\\t')\n dirEnd -= 1;\n else\n break;\n }\n const n = (yield* this.pushCount(dirEnd)) + (yield* this.pushSpaces(true));\n yield* this.pushCount(line.length - n); // possible comment\n this.pushNewline();\n return 'stream';\n }\n if (this.atLineEnd()) {\n const sp = yield* this.pushSpaces(true);\n yield* this.pushCount(line.length - sp);\n yield* this.pushNewline();\n return 'stream';\n }\n yield cst.DOCUMENT;\n return yield* this.parseLineStart();\n }\n *parseLineStart() {\n const ch = this.charAt(0);\n if (!ch && !this.atEnd)\n return this.setNext('line-start');\n if (ch === '-' || ch === '.') {\n if (!this.atEnd && !this.hasChars(4))\n return this.setNext('line-start');\n const s = this.peek(3);\n if ((s === '---' || s === '...') && isEmpty(this.charAt(3))) {\n yield* this.pushCount(3);\n this.indentValue = 0;\n this.indentNext = 0;\n return s === '---' ? 'doc' : 'stream';\n }\n }\n this.indentValue = yield* this.pushSpaces(false);\n if (this.indentNext > this.indentValue && !isEmpty(this.charAt(1)))\n this.indentNext = this.indentValue;\n return yield* this.parseBlockStart();\n }\n *parseBlockStart() {\n const [ch0, ch1] = this.peek(2);\n if (!ch1 && !this.atEnd)\n return this.setNext('block-start');\n if ((ch0 === '-' || ch0 === '?' || ch0 === ':') && isEmpty(ch1)) {\n const n = (yield* this.pushCount(1)) + (yield* this.pushSpaces(true));\n this.indentNext = this.indentValue + 1;\n this.indentValue += n;\n return yield* this.parseBlockStart();\n }\n return 'doc';\n }\n *parseDocument() {\n yield* this.pushSpaces(true);\n const line = this.getLine();\n if (line === null)\n return this.setNext('doc');\n let n = yield* this.pushIndicators();\n switch (line[n]) {\n case '#':\n yield* this.pushCount(line.length - n);\n // fallthrough\n case undefined:\n yield* this.pushNewline();\n return yield* this.parseLineStart();\n case '{':\n case '[':\n yield* this.pushCount(1);\n this.flowKey = false;\n this.flowLevel = 1;\n return 'flow';\n case '}':\n case ']':\n // this is an error\n yield* this.pushCount(1);\n return 'doc';\n case '*':\n yield* this.pushUntil(isNotAnchorChar);\n return 'doc';\n case '\"':\n case \"'\":\n return yield* this.parseQuotedScalar();\n case '|':\n case '>':\n n += yield* this.parseBlockScalarHeader();\n n += yield* this.pushSpaces(true);\n yield* this.pushCount(line.length - n);\n yield* this.pushNewline();\n return yield* this.parseBlockScalar();\n default:\n return yield* this.parsePlainScalar();\n }\n }\n *parseFlowCollection() {\n let nl, sp;\n let indent = -1;\n do {\n nl = yield* this.pushNewline();\n if (nl > 0) {\n sp = yield* this.pushSpaces(false);\n this.indentValue = indent = sp;\n }\n else {\n sp = 0;\n }\n sp += yield* this.pushSpaces(true);\n } while (nl + sp > 0);\n const line = this.getLine();\n if (line === null)\n return this.setNext('flow');\n if ((indent !== -1 && indent < this.indentNext && line[0] !== '#') ||\n (indent === 0 &&\n (line.startsWith('---') || line.startsWith('...')) &&\n isEmpty(line[3]))) {\n // Allowing for the terminal ] or } at the same (rather than greater)\n // indent level as the initial [ or { is technically invalid, but\n // failing here would be surprising to users.\n const atFlowEndMarker = indent === this.indentNext - 1 &&\n this.flowLevel === 1 &&\n (line[0] === ']' || line[0] === '}');\n if (!atFlowEndMarker) {\n // this is an error\n this.flowLevel = 0;\n yield cst.FLOW_END;\n return yield* this.parseLineStart();\n }\n }\n let n = 0;\n while (line[n] === ',') {\n n += yield* this.pushCount(1);\n n += yield* this.pushSpaces(true);\n this.flowKey = false;\n }\n n += yield* this.pushIndicators();\n switch (line[n]) {\n case undefined:\n return 'flow';\n case '#':\n yield* this.pushCount(line.length - n);\n return 'flow';\n case '{':\n case '[':\n yield* this.pushCount(1);\n this.flowKey = false;\n this.flowLevel += 1;\n return 'flow';\n case '}':\n case ']':\n yield* this.pushCount(1);\n this.flowKey = true;\n this.flowLevel -= 1;\n return this.flowLevel ? 'flow' : 'doc';\n case '*':\n yield* this.pushUntil(isNotAnchorChar);\n return 'flow';\n case '\"':\n case \"'\":\n this.flowKey = true;\n return yield* this.parseQuotedScalar();\n case ':': {\n const next = this.charAt(1);\n if (this.flowKey || isEmpty(next) || next === ',') {\n this.flowKey = false;\n yield* this.pushCount(1);\n yield* this.pushSpaces(true);\n return 'flow';\n }\n }\n // fallthrough\n default:\n this.flowKey = false;\n return yield* this.parsePlainScalar();\n }\n }\n *parseQuotedScalar() {\n const quote = this.charAt(0);\n let end = this.buffer.indexOf(quote, this.pos + 1);\n if (quote === \"'\") {\n while (end !== -1 && this.buffer[end + 1] === \"'\")\n end = this.buffer.indexOf(\"'\", end + 2);\n }\n else {\n // double-quote\n while (end !== -1) {\n let n = 0;\n while (this.buffer[end - 1 - n] === '\\\\')\n n += 1;\n if (n % 2 === 0)\n break;\n end = this.buffer.indexOf('\"', end + 1);\n }\n }\n // Only looking for newlines within the quotes\n const qb = this.buffer.substring(0, end);\n let nl = qb.indexOf('\\n', this.pos);\n if (nl !== -1) {\n while (nl !== -1) {\n const cs = this.continueScalar(nl + 1);\n if (cs === -1)\n break;\n nl = qb.indexOf('\\n', cs);\n }\n if (nl !== -1) {\n // this is an error caused by an unexpected unindent\n end = nl - (qb[nl - 1] === '\\r' ? 2 : 1);\n }\n }\n if (end === -1) {\n if (!this.atEnd)\n return this.setNext('quoted-scalar');\n end = this.buffer.length;\n }\n yield* this.pushToIndex(end + 1, false);\n return this.flowLevel ? 'flow' : 'doc';\n }\n *parseBlockScalarHeader() {\n this.blockScalarIndent = -1;\n this.blockScalarKeep = false;\n let i = this.pos;\n while (true) {\n const ch = this.buffer[++i];\n if (ch === '+')\n this.blockScalarKeep = true;\n else if (ch > '0' && ch <= '9')\n this.blockScalarIndent = Number(ch) - 1;\n else if (ch !== '-')\n break;\n }\n return yield* this.pushUntil(ch => isEmpty(ch) || ch === '#');\n }\n *parseBlockScalar() {\n let nl = this.pos - 1; // may be -1 if this.pos === 0\n let indent = 0;\n let ch;\n loop: for (let i = this.pos; (ch = this.buffer[i]); ++i) {\n switch (ch) {\n case ' ':\n indent += 1;\n break;\n case '\\n':\n nl = i;\n indent = 0;\n break;\n case '\\r': {\n const next = this.buffer[i + 1];\n if (!next && !this.atEnd)\n return this.setNext('block-scalar');\n if (next === '\\n')\n break;\n } // fallthrough\n default:\n break loop;\n }\n }\n if (!ch && !this.atEnd)\n return this.setNext('block-scalar');\n if (indent >= this.indentNext) {\n if (this.blockScalarIndent === -1)\n this.indentNext = indent;\n else {\n this.indentNext =\n this.blockScalarIndent + (this.indentNext === 0 ? 1 : this.indentNext);\n }\n do {\n const cs = this.continueScalar(nl + 1);\n if (cs === -1)\n break;\n nl = this.buffer.indexOf('\\n', cs);\n } while (nl !== -1);\n if (nl === -1) {\n if (!this.atEnd)\n return this.setNext('block-scalar');\n nl = this.buffer.length;\n }\n }\n // Trailing insufficiently indented tabs are invalid.\n // To catch that during parsing, we include them in the block scalar value.\n let i = nl + 1;\n ch = this.buffer[i];\n while (ch === ' ')\n ch = this.buffer[++i];\n if (ch === '\\t') {\n while (ch === '\\t' || ch === ' ' || ch === '\\r' || ch === '\\n')\n ch = this.buffer[++i];\n nl = i - 1;\n }\n else if (!this.blockScalarKeep) {\n do {\n let i = nl - 1;\n let ch = this.buffer[i];\n if (ch === '\\r')\n ch = this.buffer[--i];\n const lastChar = i; // Drop the line if last char not more indented\n while (ch === ' ')\n ch = this.buffer[--i];\n if (ch === '\\n' && i >= this.pos && i + 1 + indent > lastChar)\n nl = i;\n else\n break;\n } while (true);\n }\n yield cst.SCALAR;\n yield* this.pushToIndex(nl + 1, true);\n return yield* this.parseLineStart();\n }\n *parsePlainScalar() {\n const inFlow = this.flowLevel > 0;\n let end = this.pos - 1;\n let i = this.pos - 1;\n let ch;\n while ((ch = this.buffer[++i])) {\n if (ch === ':') {\n const next = this.buffer[i + 1];\n if (isEmpty(next) || (inFlow && flowIndicatorChars.has(next)))\n break;\n end = i;\n }\n else if (isEmpty(ch)) {\n let next = this.buffer[i + 1];\n if (ch === '\\r') {\n if (next === '\\n') {\n i += 1;\n ch = '\\n';\n next = this.buffer[i + 1];\n }\n else\n end = i;\n }\n if (next === '#' || (inFlow && flowIndicatorChars.has(next)))\n break;\n if (ch === '\\n') {\n const cs = this.continueScalar(i + 1);\n if (cs === -1)\n break;\n i = Math.max(i, cs - 2); // to advance, but still account for ' #'\n }\n }\n else {\n if (inFlow && flowIndicatorChars.has(ch))\n break;\n end = i;\n }\n }\n if (!ch && !this.atEnd)\n return this.setNext('plain-scalar');\n yield cst.SCALAR;\n yield* this.pushToIndex(end + 1, true);\n return inFlow ? 'flow' : 'doc';\n }\n *pushCount(n) {\n if (n > 0) {\n yield this.buffer.substr(this.pos, n);\n this.pos += n;\n return n;\n }\n return 0;\n }\n *pushToIndex(i, allowEmpty) {\n const s = this.buffer.slice(this.pos, i);\n if (s) {\n yield s;\n this.pos += s.length;\n return s.length;\n }\n else if (allowEmpty)\n yield '';\n return 0;\n }\n *pushIndicators() {\n switch (this.charAt(0)) {\n case '!':\n return ((yield* this.pushTag()) +\n (yield* this.pushSpaces(true)) +\n (yield* this.pushIndicators()));\n case '&':\n return ((yield* this.pushUntil(isNotAnchorChar)) +\n (yield* this.pushSpaces(true)) +\n (yield* this.pushIndicators()));\n case '-': // this is an error\n case '?': // this is an error outside flow collections\n case ':': {\n const inFlow = this.flowLevel > 0;\n const ch1 = this.charAt(1);\n if (isEmpty(ch1) || (inFlow && flowIndicatorChars.has(ch1))) {\n if (!inFlow)\n this.indentNext = this.indentValue + 1;\n else if (this.flowKey)\n this.flowKey = false;\n return ((yield* this.pushCount(1)) +\n (yield* this.pushSpaces(true)) +\n (yield* this.pushIndicators()));\n }\n }\n }\n return 0;\n }\n *pushTag() {\n if (this.charAt(1) === '<') {\n let i = this.pos + 2;\n let ch = this.buffer[i];\n while (!isEmpty(ch) && ch !== '>')\n ch = this.buffer[++i];\n return yield* this.pushToIndex(ch === '>' ? i + 1 : i, false);\n }\n else {\n let i = this.pos + 1;\n let ch = this.buffer[i];\n while (ch) {\n if (tagChars.has(ch))\n ch = this.buffer[++i];\n else if (ch === '%' &&\n hexDigits.has(this.buffer[i + 1]) &&\n hexDigits.has(this.buffer[i + 2])) {\n ch = this.buffer[(i += 3)];\n }\n else\n break;\n }\n return yield* this.pushToIndex(i, false);\n }\n }\n *pushNewline() {\n const ch = this.buffer[this.pos];\n if (ch === '\\n')\n return yield* this.pushCount(1);\n else if (ch === '\\r' && this.charAt(1) === '\\n')\n return yield* this.pushCount(2);\n else\n return 0;\n }\n *pushSpaces(allowTabs) {\n let i = this.pos - 1;\n let ch;\n do {\n ch = this.buffer[++i];\n } while (ch === ' ' || (allowTabs && ch === '\\t'));\n const n = i - this.pos;\n if (n > 0) {\n yield this.buffer.substr(this.pos, n);\n this.pos = i;\n }\n return n;\n }\n *pushUntil(test) {\n let i = this.pos;\n let ch = this.buffer[i];\n while (!test(ch))\n ch = this.buffer[++i];\n return yield* this.pushToIndex(i, false);\n }\n}\n\nexports.Lexer = Lexer;\n","'use strict';\n\n/**\n * Tracks newlines during parsing in order to provide an efficient API for\n * determining the one-indexed `{ line, col }` position for any offset\n * within the input.\n */\nclass LineCounter {\n constructor() {\n this.lineStarts = [];\n /**\n * Should be called in ascending order. Otherwise, call\n * `lineCounter.lineStarts.sort()` before calling `linePos()`.\n */\n this.addNewLine = (offset) => this.lineStarts.push(offset);\n /**\n * Performs a binary search and returns the 1-indexed { line, col }\n * position of `offset`. If `line === 0`, `addNewLine` has never been\n * called or `offset` is before the first known newline.\n */\n this.linePos = (offset) => {\n let low = 0;\n let high = this.lineStarts.length;\n while (low < high) {\n const mid = (low + high) >> 1; // Math.floor((low + high) / 2)\n if (this.lineStarts[mid] < offset)\n low = mid + 1;\n else\n high = mid;\n }\n if (this.lineStarts[low] === offset)\n return { line: low + 1, col: 1 };\n if (low === 0)\n return { line: 0, col: offset };\n const start = this.lineStarts[low - 1];\n return { line: low, col: offset - start + 1 };\n };\n }\n}\n\nexports.LineCounter = LineCounter;\n","'use strict';\n\nvar node_process = require('process');\nvar cst = require('./cst.js');\nvar lexer = require('./lexer.js');\n\nfunction includesToken(list, type) {\n for (let i = 0; i < list.length; ++i)\n if (list[i].type === type)\n return true;\n return false;\n}\nfunction findNonEmptyIndex(list) {\n for (let i = 0; i < list.length; ++i) {\n switch (list[i].type) {\n case 'space':\n case 'comment':\n case 'newline':\n break;\n default:\n return i;\n }\n }\n return -1;\n}\nfunction isFlowToken(token) {\n switch (token?.type) {\n case 'alias':\n case 'scalar':\n case 'single-quoted-scalar':\n case 'double-quoted-scalar':\n case 'flow-collection':\n return true;\n default:\n return false;\n }\n}\nfunction getPrevProps(parent) {\n switch (parent.type) {\n case 'document':\n return parent.start;\n case 'block-map': {\n const it = parent.items[parent.items.length - 1];\n return it.sep ?? it.start;\n }\n case 'block-seq':\n return parent.items[parent.items.length - 1].start;\n /* istanbul ignore next should not happen */\n default:\n return [];\n }\n}\n/** Note: May modify input array */\nfunction getFirstKeyStartProps(prev) {\n if (prev.length === 0)\n return [];\n let i = prev.length;\n loop: while (--i >= 0) {\n switch (prev[i].type) {\n case 'doc-start':\n case 'explicit-key-ind':\n case 'map-value-ind':\n case 'seq-item-ind':\n case 'newline':\n break loop;\n }\n }\n while (prev[++i]?.type === 'space') {\n /* loop */\n }\n return prev.splice(i, prev.length);\n}\nfunction fixFlowSeqItems(fc) {\n if (fc.start.type === 'flow-seq-start') {\n for (const it of fc.items) {\n if (it.sep &&\n !it.value &&\n !includesToken(it.start, 'explicit-key-ind') &&\n !includesToken(it.sep, 'map-value-ind')) {\n if (it.key)\n it.value = it.key;\n delete it.key;\n if (isFlowToken(it.value)) {\n if (it.value.end)\n Array.prototype.push.apply(it.value.end, it.sep);\n else\n it.value.end = it.sep;\n }\n else\n Array.prototype.push.apply(it.start, it.sep);\n delete it.sep;\n }\n }\n }\n}\n/**\n * A YAML concrete syntax tree (CST) parser\n *\n * ```ts\n * const src: string = ...\n * for (const token of new Parser().parse(src)) {\n * // token: Token\n * }\n * ```\n *\n * To use the parser with a user-provided lexer:\n *\n * ```ts\n * function* parse(source: string, lexer: Lexer) {\n * const parser = new Parser()\n * for (const lexeme of lexer.lex(source))\n * yield* parser.next(lexeme)\n * yield* parser.end()\n * }\n *\n * const src: string = ...\n * const lexer = new Lexer()\n * for (const token of parse(src, lexer)) {\n * // token: Token\n * }\n * ```\n */\nclass Parser {\n /**\n * @param onNewLine - If defined, called separately with the start position of\n * each new line (in `parse()`, including the start of input).\n */\n constructor(onNewLine) {\n /** If true, space and sequence indicators count as indentation */\n this.atNewLine = true;\n /** If true, next token is a scalar value */\n this.atScalar = false;\n /** Current indentation level */\n this.indent = 0;\n /** Current offset since the start of parsing */\n this.offset = 0;\n /** On the same line with a block map key */\n this.onKeyLine = false;\n /** Top indicates the node that's currently being built */\n this.stack = [];\n /** The source of the current token, set in parse() */\n this.source = '';\n /** The type of the current token, set in parse() */\n this.type = '';\n // Must be defined after `next()`\n this.lexer = new lexer.Lexer();\n this.onNewLine = onNewLine;\n }\n /**\n * Parse `source` as a YAML stream.\n * If `incomplete`, a part of the last line may be left as a buffer for the next call.\n *\n * Errors are not thrown, but yielded as `{ type: 'error', message }` tokens.\n *\n * @returns A generator of tokens representing each directive, document, and other structure.\n */\n *parse(source, incomplete = false) {\n if (this.onNewLine && this.offset === 0)\n this.onNewLine(0);\n for (const lexeme of this.lexer.lex(source, incomplete))\n yield* this.next(lexeme);\n if (!incomplete)\n yield* this.end();\n }\n /**\n * Advance the parser by the `source` of one lexical token.\n */\n *next(source) {\n this.source = source;\n if (node_process.env.LOG_TOKENS)\n console.log('|', cst.prettyToken(source));\n if (this.atScalar) {\n this.atScalar = false;\n yield* this.step();\n this.offset += source.length;\n return;\n }\n const type = cst.tokenType(source);\n if (!type) {\n const message = `Not a YAML token: ${source}`;\n yield* this.pop({ type: 'error', offset: this.offset, message, source });\n this.offset += source.length;\n }\n else if (type === 'scalar') {\n this.atNewLine = false;\n this.atScalar = true;\n this.type = 'scalar';\n }\n else {\n this.type = type;\n yield* this.step();\n switch (type) {\n case 'newline':\n this.atNewLine = true;\n this.indent = 0;\n if (this.onNewLine)\n this.onNewLine(this.offset + source.length);\n break;\n case 'space':\n if (this.atNewLine && source[0] === ' ')\n this.indent += source.length;\n break;\n case 'explicit-key-ind':\n case 'map-value-ind':\n case 'seq-item-ind':\n if (this.atNewLine)\n this.indent += source.length;\n break;\n case 'doc-mode':\n case 'flow-error-end':\n return;\n default:\n this.atNewLine = false;\n }\n this.offset += source.length;\n }\n }\n /** Call at end of input to push out any remaining constructions */\n *end() {\n while (this.stack.length > 0)\n yield* this.pop();\n }\n get sourceToken() {\n const st = {\n type: this.type,\n offset: this.offset,\n indent: this.indent,\n source: this.source\n };\n return st;\n }\n *step() {\n const top = this.peek(1);\n if (this.type === 'doc-end' && top?.type !== 'doc-end') {\n while (this.stack.length > 0)\n yield* this.pop();\n this.stack.push({\n type: 'doc-end',\n offset: this.offset,\n source: this.source\n });\n return;\n }\n if (!top)\n return yield* this.stream();\n switch (top.type) {\n case 'document':\n return yield* this.document(top);\n case 'alias':\n case 'scalar':\n case 'single-quoted-scalar':\n case 'double-quoted-scalar':\n return yield* this.scalar(top);\n case 'block-scalar':\n return yield* this.blockScalar(top);\n case 'block-map':\n return yield* this.blockMap(top);\n case 'block-seq':\n return yield* this.blockSequence(top);\n case 'flow-collection':\n return yield* this.flowCollection(top);\n case 'doc-end':\n return yield* this.documentEnd(top);\n }\n /* istanbul ignore next should not happen */\n yield* this.pop();\n }\n peek(n) {\n return this.stack[this.stack.length - n];\n }\n *pop(error) {\n const token = error ?? this.stack.pop();\n /* istanbul ignore if should not happen */\n if (!token) {\n const message = 'Tried to pop an empty stack';\n yield { type: 'error', offset: this.offset, source: '', message };\n }\n else if (this.stack.length === 0) {\n yield token;\n }\n else {\n const top = this.peek(1);\n if (token.type === 'block-scalar') {\n // Block scalars use their parent rather than header indent\n token.indent = 'indent' in top ? top.indent : 0;\n }\n else if (token.type === 'flow-collection' && top.type === 'document') {\n // Ignore all indent for top-level flow collections\n token.indent = 0;\n }\n if (token.type === 'flow-collection')\n fixFlowSeqItems(token);\n switch (top.type) {\n case 'document':\n top.value = token;\n break;\n case 'block-scalar':\n top.props.push(token); // error\n break;\n case 'block-map': {\n const it = top.items[top.items.length - 1];\n if (it.value) {\n top.items.push({ start: [], key: token, sep: [] });\n this.onKeyLine = true;\n return;\n }\n else if (it.sep) {\n it.value = token;\n }\n else {\n Object.assign(it, { key: token, sep: [] });\n this.onKeyLine = !it.explicitKey;\n return;\n }\n break;\n }\n case 'block-seq': {\n const it = top.items[top.items.length - 1];\n if (it.value)\n top.items.push({ start: [], value: token });\n else\n it.value = token;\n break;\n }\n case 'flow-collection': {\n const it = top.items[top.items.length - 1];\n if (!it || it.value)\n top.items.push({ start: [], key: token, sep: [] });\n else if (it.sep)\n it.value = token;\n else\n Object.assign(it, { key: token, sep: [] });\n return;\n }\n /* istanbul ignore next should not happen */\n default:\n yield* this.pop();\n yield* this.pop(token);\n }\n if ((top.type === 'document' ||\n top.type === 'block-map' ||\n top.type === 'block-seq') &&\n (token.type === 'block-map' || token.type === 'block-seq')) {\n const last = token.items[token.items.length - 1];\n if (last &&\n !last.sep &&\n !last.value &&\n last.start.length > 0 &&\n findNonEmptyIndex(last.start) === -1 &&\n (token.indent === 0 ||\n last.start.every(st => st.type !== 'comment' || st.indent < token.indent))) {\n if (top.type === 'document')\n top.end = last.start;\n else\n top.items.push({ start: last.start });\n token.items.splice(-1, 1);\n }\n }\n }\n }\n *stream() {\n switch (this.type) {\n case 'directive-line':\n yield { type: 'directive', offset: this.offset, source: this.source };\n return;\n case 'byte-order-mark':\n case 'space':\n case 'comment':\n case 'newline':\n yield this.sourceToken;\n return;\n case 'doc-mode':\n case 'doc-start': {\n const doc = {\n type: 'document',\n offset: this.offset,\n start: []\n };\n if (this.type === 'doc-start')\n doc.start.push(this.sourceToken);\n this.stack.push(doc);\n return;\n }\n }\n yield {\n type: 'error',\n offset: this.offset,\n message: `Unexpected ${this.type} token in YAML stream`,\n source: this.source\n };\n }\n *document(doc) {\n if (doc.value)\n return yield* this.lineEnd(doc);\n switch (this.type) {\n case 'doc-start': {\n if (findNonEmptyIndex(doc.start) !== -1) {\n yield* this.pop();\n yield* this.step();\n }\n else\n doc.start.push(this.sourceToken);\n return;\n }\n case 'anchor':\n case 'tag':\n case 'space':\n case 'comment':\n case 'newline':\n doc.start.push(this.sourceToken);\n return;\n }\n const bv = this.startBlockValue(doc);\n if (bv)\n this.stack.push(bv);\n else {\n yield {\n type: 'error',\n offset: this.offset,\n message: `Unexpected ${this.type} token in YAML document`,\n source: this.source\n };\n }\n }\n *scalar(scalar) {\n if (this.type === 'map-value-ind') {\n const prev = getPrevProps(this.peek(2));\n const start = getFirstKeyStartProps(prev);\n let sep;\n if (scalar.end) {\n sep = scalar.end;\n sep.push(this.sourceToken);\n delete scalar.end;\n }\n else\n sep = [this.sourceToken];\n const map = {\n type: 'block-map',\n offset: scalar.offset,\n indent: scalar.indent,\n items: [{ start, key: scalar, sep }]\n };\n this.onKeyLine = true;\n this.stack[this.stack.length - 1] = map;\n }\n else\n yield* this.lineEnd(scalar);\n }\n *blockScalar(scalar) {\n switch (this.type) {\n case 'space':\n case 'comment':\n case 'newline':\n scalar.props.push(this.sourceToken);\n return;\n case 'scalar':\n scalar.source = this.source;\n // block-scalar source includes trailing newline\n this.atNewLine = true;\n this.indent = 0;\n if (this.onNewLine) {\n let nl = this.source.indexOf('\\n') + 1;\n while (nl !== 0) {\n this.onNewLine(this.offset + nl);\n nl = this.source.indexOf('\\n', nl) + 1;\n }\n }\n yield* this.pop();\n break;\n /* istanbul ignore next should not happen */\n default:\n yield* this.pop();\n yield* this.step();\n }\n }\n *blockMap(map) {\n const it = map.items[map.items.length - 1];\n // it.sep is true-ish if pair already has key or : separator\n switch (this.type) {\n case 'newline':\n this.onKeyLine = false;\n if (it.value) {\n const end = 'end' in it.value ? it.value.end : undefined;\n const last = Array.isArray(end) ? end[end.length - 1] : undefined;\n if (last?.type === 'comment')\n end?.push(this.sourceToken);\n else\n map.items.push({ start: [this.sourceToken] });\n }\n else if (it.sep) {\n it.sep.push(this.sourceToken);\n }\n else {\n it.start.push(this.sourceToken);\n }\n return;\n case 'space':\n case 'comment':\n if (it.value) {\n map.items.push({ start: [this.sourceToken] });\n }\n else if (it.sep) {\n it.sep.push(this.sourceToken);\n }\n else {\n if (this.atIndentedComment(it.start, map.indent)) {\n const prev = map.items[map.items.length - 2];\n const end = prev?.value?.end;\n if (Array.isArray(end)) {\n Array.prototype.push.apply(end, it.start);\n end.push(this.sourceToken);\n map.items.pop();\n return;\n }\n }\n it.start.push(this.sourceToken);\n }\n return;\n }\n if (this.indent >= map.indent) {\n const atMapIndent = !this.onKeyLine && this.indent === map.indent;\n const atNextItem = atMapIndent &&\n (it.sep || it.explicitKey) &&\n this.type !== 'seq-item-ind';\n // For empty nodes, assign newline-separated not indented empty tokens to following node\n let start = [];\n if (atNextItem && it.sep && !it.value) {\n const nl = [];\n for (let i = 0; i < it.sep.length; ++i) {\n const st = it.sep[i];\n switch (st.type) {\n case 'newline':\n nl.push(i);\n break;\n case 'space':\n break;\n case 'comment':\n if (st.indent > map.indent)\n nl.length = 0;\n break;\n default:\n nl.length = 0;\n }\n }\n if (nl.length >= 2)\n start = it.sep.splice(nl[1]);\n }\n switch (this.type) {\n case 'anchor':\n case 'tag':\n if (atNextItem || it.value) {\n start.push(this.sourceToken);\n map.items.push({ start });\n this.onKeyLine = true;\n }\n else if (it.sep) {\n it.sep.push(this.sourceToken);\n }\n else {\n it.start.push(this.sourceToken);\n }\n return;\n case 'explicit-key-ind':\n if (!it.sep && !it.explicitKey) {\n it.start.push(this.sourceToken);\n it.explicitKey = true;\n }\n else if (atNextItem || it.value) {\n start.push(this.sourceToken);\n map.items.push({ start, explicitKey: true });\n }\n else {\n this.stack.push({\n type: 'block-map',\n offset: this.offset,\n indent: this.indent,\n items: [{ start: [this.sourceToken], explicitKey: true }]\n });\n }\n this.onKeyLine = true;\n return;\n case 'map-value-ind':\n if (it.explicitKey) {\n if (!it.sep) {\n if (includesToken(it.start, 'newline')) {\n Object.assign(it, { key: null, sep: [this.sourceToken] });\n }\n else {\n const start = getFirstKeyStartProps(it.start);\n this.stack.push({\n type: 'block-map',\n offset: this.offset,\n indent: this.indent,\n items: [{ start, key: null, sep: [this.sourceToken] }]\n });\n }\n }\n else if (it.value) {\n map.items.push({ start: [], key: null, sep: [this.sourceToken] });\n }\n else if (includesToken(it.sep, 'map-value-ind')) {\n this.stack.push({\n type: 'block-map',\n offset: this.offset,\n indent: this.indent,\n items: [{ start, key: null, sep: [this.sourceToken] }]\n });\n }\n else if (isFlowToken(it.key) &&\n !includesToken(it.sep, 'newline')) {\n const start = getFirstKeyStartProps(it.start);\n const key = it.key;\n const sep = it.sep;\n sep.push(this.sourceToken);\n // @ts-expect-error type guard is wrong here\n delete it.key;\n // @ts-expect-error type guard is wrong here\n delete it.sep;\n this.stack.push({\n type: 'block-map',\n offset: this.offset,\n indent: this.indent,\n items: [{ start, key, sep }]\n });\n }\n else if (start.length > 0) {\n // Not actually at next item\n it.sep = it.sep.concat(start, this.sourceToken);\n }\n else {\n it.sep.push(this.sourceToken);\n }\n }\n else {\n if (!it.sep) {\n Object.assign(it, { key: null, sep: [this.sourceToken] });\n }\n else if (it.value || atNextItem) {\n map.items.push({ start, key: null, sep: [this.sourceToken] });\n }\n else if (includesToken(it.sep, 'map-value-ind')) {\n this.stack.push({\n type: 'block-map',\n offset: this.offset,\n indent: this.indent,\n items: [{ start: [], key: null, sep: [this.sourceToken] }]\n });\n }\n else {\n it.sep.push(this.sourceToken);\n }\n }\n this.onKeyLine = true;\n return;\n case 'alias':\n case 'scalar':\n case 'single-quoted-scalar':\n case 'double-quoted-scalar': {\n const fs = this.flowScalar(this.type);\n if (atNextItem || it.value) {\n map.items.push({ start, key: fs, sep: [] });\n this.onKeyLine = true;\n }\n else if (it.sep) {\n this.stack.push(fs);\n }\n else {\n Object.assign(it, { key: fs, sep: [] });\n this.onKeyLine = true;\n }\n return;\n }\n default: {\n const bv = this.startBlockValue(map);\n if (bv) {\n if (bv.type === 'block-seq') {\n if (!it.explicitKey &&\n it.sep &&\n !includesToken(it.sep, 'newline')) {\n yield* this.pop({\n type: 'error',\n offset: this.offset,\n message: 'Unexpected block-seq-ind on same line with key',\n source: this.source\n });\n return;\n }\n }\n else if (atMapIndent) {\n map.items.push({ start });\n }\n this.stack.push(bv);\n return;\n }\n }\n }\n }\n yield* this.pop();\n yield* this.step();\n }\n *blockSequence(seq) {\n const it = seq.items[seq.items.length - 1];\n switch (this.type) {\n case 'newline':\n if (it.value) {\n const end = 'end' in it.value ? it.value.end : undefined;\n const last = Array.isArray(end) ? end[end.length - 1] : undefined;\n if (last?.type === 'comment')\n end?.push(this.sourceToken);\n else\n seq.items.push({ start: [this.sourceToken] });\n }\n else\n it.start.push(this.sourceToken);\n return;\n case 'space':\n case 'comment':\n if (it.value)\n seq.items.push({ start: [this.sourceToken] });\n else {\n if (this.atIndentedComment(it.start, seq.indent)) {\n const prev = seq.items[seq.items.length - 2];\n const end = prev?.value?.end;\n if (Array.isArray(end)) {\n Array.prototype.push.apply(end, it.start);\n end.push(this.sourceToken);\n seq.items.pop();\n return;\n }\n }\n it.start.push(this.sourceToken);\n }\n return;\n case 'anchor':\n case 'tag':\n if (it.value || this.indent <= seq.indent)\n break;\n it.start.push(this.sourceToken);\n return;\n case 'seq-item-ind':\n if (this.indent !== seq.indent)\n break;\n if (it.value || includesToken(it.start, 'seq-item-ind'))\n seq.items.push({ start: [this.sourceToken] });\n else\n it.start.push(this.sourceToken);\n return;\n }\n if (this.indent > seq.indent) {\n const bv = this.startBlockValue(seq);\n if (bv) {\n this.stack.push(bv);\n return;\n }\n }\n yield* this.pop();\n yield* this.step();\n }\n *flowCollection(fc) {\n const it = fc.items[fc.items.length - 1];\n if (this.type === 'flow-error-end') {\n let top;\n do {\n yield* this.pop();\n top = this.peek(1);\n } while (top?.type === 'flow-collection');\n }\n else if (fc.end.length === 0) {\n switch (this.type) {\n case 'comma':\n case 'explicit-key-ind':\n if (!it || it.sep)\n fc.items.push({ start: [this.sourceToken] });\n else\n it.start.push(this.sourceToken);\n return;\n case 'map-value-ind':\n if (!it || it.value)\n fc.items.push({ start: [], key: null, sep: [this.sourceToken] });\n else if (it.sep)\n it.sep.push(this.sourceToken);\n else\n Object.assign(it, { key: null, sep: [this.sourceToken] });\n return;\n case 'space':\n case 'comment':\n case 'newline':\n case 'anchor':\n case 'tag':\n if (!it || it.value)\n fc.items.push({ start: [this.sourceToken] });\n else if (it.sep)\n it.sep.push(this.sourceToken);\n else\n it.start.push(this.sourceToken);\n return;\n case 'alias':\n case 'scalar':\n case 'single-quoted-scalar':\n case 'double-quoted-scalar': {\n const fs = this.flowScalar(this.type);\n if (!it || it.value)\n fc.items.push({ start: [], key: fs, sep: [] });\n else if (it.sep)\n this.stack.push(fs);\n else\n Object.assign(it, { key: fs, sep: [] });\n return;\n }\n case 'flow-map-end':\n case 'flow-seq-end':\n fc.end.push(this.sourceToken);\n return;\n }\n const bv = this.startBlockValue(fc);\n /* istanbul ignore else should not happen */\n if (bv)\n this.stack.push(bv);\n else {\n yield* this.pop();\n yield* this.step();\n }\n }\n else {\n const parent = this.peek(2);\n if (parent.type === 'block-map' &&\n ((this.type === 'map-value-ind' && parent.indent === fc.indent) ||\n (this.type === 'newline' &&\n !parent.items[parent.items.length - 1].sep))) {\n yield* this.pop();\n yield* this.step();\n }\n else if (this.type === 'map-value-ind' &&\n parent.type !== 'flow-collection') {\n const prev = getPrevProps(parent);\n const start = getFirstKeyStartProps(prev);\n fixFlowSeqItems(fc);\n const sep = fc.end.splice(1, fc.end.length);\n sep.push(this.sourceToken);\n const map = {\n type: 'block-map',\n offset: fc.offset,\n indent: fc.indent,\n items: [{ start, key: fc, sep }]\n };\n this.onKeyLine = true;\n this.stack[this.stack.length - 1] = map;\n }\n else {\n yield* this.lineEnd(fc);\n }\n }\n }\n flowScalar(type) {\n if (this.onNewLine) {\n let nl = this.source.indexOf('\\n') + 1;\n while (nl !== 0) {\n this.onNewLine(this.offset + nl);\n nl = this.source.indexOf('\\n', nl) + 1;\n }\n }\n return {\n type,\n offset: this.offset,\n indent: this.indent,\n source: this.source\n };\n }\n startBlockValue(parent) {\n switch (this.type) {\n case 'alias':\n case 'scalar':\n case 'single-quoted-scalar':\n case 'double-quoted-scalar':\n return this.flowScalar(this.type);\n case 'block-scalar-header':\n return {\n type: 'block-scalar',\n offset: this.offset,\n indent: this.indent,\n props: [this.sourceToken],\n source: ''\n };\n case 'flow-map-start':\n case 'flow-seq-start':\n return {\n type: 'flow-collection',\n offset: this.offset,\n indent: this.indent,\n start: this.sourceToken,\n items: [],\n end: []\n };\n case 'seq-item-ind':\n return {\n type: 'block-seq',\n offset: this.offset,\n indent: this.indent,\n items: [{ start: [this.sourceToken] }]\n };\n case 'explicit-key-ind': {\n this.onKeyLine = true;\n const prev = getPrevProps(parent);\n const start = getFirstKeyStartProps(prev);\n start.push(this.sourceToken);\n return {\n type: 'block-map',\n offset: this.offset,\n indent: this.indent,\n items: [{ start, explicitKey: true }]\n };\n }\n case 'map-value-ind': {\n this.onKeyLine = true;\n const prev = getPrevProps(parent);\n const start = getFirstKeyStartProps(prev);\n return {\n type: 'block-map',\n offset: this.offset,\n indent: this.indent,\n items: [{ start, key: null, sep: [this.sourceToken] }]\n };\n }\n }\n return null;\n }\n atIndentedComment(start, indent) {\n if (this.type !== 'comment')\n return false;\n if (this.indent <= indent)\n return false;\n return start.every(st => st.type === 'newline' || st.type === 'space');\n }\n *documentEnd(docEnd) {\n if (this.type !== 'doc-mode') {\n if (docEnd.end)\n docEnd.end.push(this.sourceToken);\n else\n docEnd.end = [this.sourceToken];\n if (this.type === 'newline')\n yield* this.pop();\n }\n }\n *lineEnd(token) {\n switch (this.type) {\n case 'comma':\n case 'doc-start':\n case 'doc-end':\n case 'flow-seq-end':\n case 'flow-map-end':\n case 'map-value-ind':\n yield* this.pop();\n yield* this.step();\n break;\n case 'newline':\n this.onKeyLine = false;\n // fallthrough\n case 'space':\n case 'comment':\n default:\n // all other values are errors\n if (token.end)\n token.end.push(this.sourceToken);\n else\n token.end = [this.sourceToken];\n if (this.type === 'newline')\n yield* this.pop();\n }\n }\n}\n\nexports.Parser = Parser;\n","'use strict';\n\nvar composer = require('./compose/composer.js');\nvar Document = require('./doc/Document.js');\nvar errors = require('./errors.js');\nvar log = require('./log.js');\nvar identity = require('./nodes/identity.js');\nvar lineCounter = require('./parse/line-counter.js');\nvar parser = require('./parse/parser.js');\n\nfunction parseOptions(options) {\n const prettyErrors = options.prettyErrors !== false;\n const lineCounter$1 = options.lineCounter || (prettyErrors && new lineCounter.LineCounter()) || null;\n return { lineCounter: lineCounter$1, prettyErrors };\n}\n/**\n * Parse the input as a stream of YAML documents.\n *\n * Documents should be separated from each other by `...` or `---` marker lines.\n *\n * @returns If an empty `docs` array is returned, it will be of type\n * EmptyStream and contain additional stream information. In\n * TypeScript, you should use `'empty' in docs` as a type guard for it.\n */\nfunction parseAllDocuments(source, options = {}) {\n const { lineCounter, prettyErrors } = parseOptions(options);\n const parser$1 = new parser.Parser(lineCounter?.addNewLine);\n const composer$1 = new composer.Composer(options);\n const docs = Array.from(composer$1.compose(parser$1.parse(source)));\n if (prettyErrors && lineCounter)\n for (const doc of docs) {\n doc.errors.forEach(errors.prettifyError(source, lineCounter));\n doc.warnings.forEach(errors.prettifyError(source, lineCounter));\n }\n if (docs.length > 0)\n return docs;\n return Object.assign([], { empty: true }, composer$1.streamInfo());\n}\n/** Parse an input string into a single YAML.Document */\nfunction parseDocument(source, options = {}) {\n const { lineCounter, prettyErrors } = parseOptions(options);\n const parser$1 = new parser.Parser(lineCounter?.addNewLine);\n const composer$1 = new composer.Composer(options);\n // `doc` is always set by compose.end(true) at the very latest\n let doc = null;\n for (const _doc of composer$1.compose(parser$1.parse(source), true, source.length)) {\n if (!doc)\n doc = _doc;\n else if (doc.options.logLevel !== 'silent') {\n doc.errors.push(new errors.YAMLParseError(_doc.range.slice(0, 2), 'MULTIPLE_DOCS', 'Source contains multiple documents; please use YAML.parseAllDocuments()'));\n break;\n }\n }\n if (prettyErrors && lineCounter) {\n doc.errors.forEach(errors.prettifyError(source, lineCounter));\n doc.warnings.forEach(errors.prettifyError(source, lineCounter));\n }\n return doc;\n}\nfunction parse(src, reviver, options) {\n let _reviver = undefined;\n if (typeof reviver === 'function') {\n _reviver = reviver;\n }\n else if (options === undefined && reviver && typeof reviver === 'object') {\n options = reviver;\n }\n const doc = parseDocument(src, options);\n if (!doc)\n return null;\n doc.warnings.forEach(warning => log.warn(doc.options.logLevel, warning));\n if (doc.errors.length > 0) {\n if (doc.options.logLevel !== 'silent')\n throw doc.errors[0];\n else\n doc.errors = [];\n }\n return doc.toJS(Object.assign({ reviver: _reviver }, options));\n}\nfunction stringify(value, replacer, options) {\n let _replacer = null;\n if (typeof replacer === 'function' || Array.isArray(replacer)) {\n _replacer = replacer;\n }\n else if (options === undefined && replacer) {\n options = replacer;\n }\n if (typeof options === 'string')\n options = options.length;\n if (typeof options === 'number') {\n const indent = Math.round(options);\n options = indent < 1 ? undefined : indent > 8 ? { indent: 8 } : { indent };\n }\n if (value === undefined) {\n const { keepUndefined } = options ?? replacer ?? {};\n if (!keepUndefined)\n return undefined;\n }\n if (identity.isDocument(value) && !_replacer)\n return value.toString(options);\n return new Document.Document(value, _replacer, options).toString(options);\n}\n\nexports.parse = parse;\nexports.parseAllDocuments = parseAllDocuments;\nexports.parseDocument = parseDocument;\nexports.stringify = stringify;\n","'use strict';\n\nvar composer = require('./compose/composer.js');\nvar Document = require('./doc/Document.js');\nvar Schema = require('./schema/Schema.js');\nvar errors = require('./errors.js');\nvar Alias = require('./nodes/Alias.js');\nvar identity = require('./nodes/identity.js');\nvar Pair = require('./nodes/Pair.js');\nvar Scalar = require('./nodes/Scalar.js');\nvar YAMLMap = require('./nodes/YAMLMap.js');\nvar YAMLSeq = require('./nodes/YAMLSeq.js');\nvar cst = require('./parse/cst.js');\nvar lexer = require('./parse/lexer.js');\nvar lineCounter = require('./parse/line-counter.js');\nvar parser = require('./parse/parser.js');\nvar publicApi = require('./public-api.js');\nvar visit = require('./visit.js');\n\n\n\nexports.Composer = composer.Composer;\nexports.Document = Document.Document;\nexports.Schema = Schema.Schema;\nexports.YAMLError = errors.YAMLError;\nexports.YAMLParseError = errors.YAMLParseError;\nexports.YAMLWarning = errors.YAMLWarning;\nexports.Alias = Alias.Alias;\nexports.isAlias = identity.isAlias;\nexports.isCollection = identity.isCollection;\nexports.isDocument = identity.isDocument;\nexports.isMap = identity.isMap;\nexports.isNode = identity.isNode;\nexports.isPair = identity.isPair;\nexports.isScalar = identity.isScalar;\nexports.isSeq = identity.isSeq;\nexports.Pair = Pair.Pair;\nexports.Scalar = Scalar.Scalar;\nexports.YAMLMap = YAMLMap.YAMLMap;\nexports.YAMLSeq = YAMLSeq.YAMLSeq;\nexports.CST = cst;\nexports.Lexer = lexer.Lexer;\nexports.LineCounter = lineCounter.LineCounter;\nexports.Parser = parser.Parser;\nexports.parse = publicApi.parse;\nexports.parseAllDocuments = publicApi.parseAllDocuments;\nexports.parseDocument = publicApi.parseDocument;\nexports.stringify = publicApi.stringify;\nexports.visit = visit.visit;\nexports.visitAsync = visit.visitAsync;\n","/**\r\n * Frontmatter — YAML frontmatter parsing, serialization, and CRUD commands\r\n *\r\n * Uses the `yaml` npm package instead of a hand-rolled parser.\r\n */\r\n\r\nimport fs from 'node:fs';\r\nimport path from 'node:path';\r\nimport YAML from 'yaml';\r\n\r\nimport { safeReadFile, output, error } from './core.js';\r\nimport type {\r\n FrontmatterData,\r\n FrontmatterValue,\r\n FrontmatterValidationResult,\r\n FrontmatterSchema,\r\n} from './types.js';\r\n\r\n// ─── Parsing engine ───────────────────────────────────────────────────────────\r\n\r\n/**\r\n * Extract YAML frontmatter from markdown content into a typed object.\r\n */\r\nexport function extractFrontmatter(content: string): FrontmatterData {\r\n const match = content.match(/^---\\n([\\s\\S]+?)\\n---/);\r\n if (!match) return {};\r\n try {\r\n const parsed = YAML.parse(match[1]);\r\n return (parsed && typeof parsed === 'object' && !Array.isArray(parsed))\r\n ? parsed as FrontmatterData\r\n : {};\r\n } catch {\r\n return {};\r\n }\r\n}\r\n\r\n/**\r\n * Reconstruct YAML frontmatter string from an object.\r\n */\r\nexport function reconstructFrontmatter(obj: FrontmatterData): string {\r\n // Filter out null/undefined values\r\n const cleaned: FrontmatterData = {};\r\n for (const [key, value] of Object.entries(obj)) {\r\n if (value !== null && value !== undefined) {\r\n cleaned[key] = value;\r\n }\r\n }\r\n\r\n return YAML.stringify(cleaned, {\r\n lineWidth: 0, // Don't wrap long lines\r\n defaultKeyType: 'PLAIN',\r\n defaultStringType: 'PLAIN',\r\n }).trimEnd();\r\n}\r\n\r\n/**\r\n * Replace or insert frontmatter in markdown content.\r\n */\r\nexport function spliceFrontmatter(content: string, newObj: FrontmatterData): string {\r\n const yamlStr = reconstructFrontmatter(newObj);\r\n const match = content.match(/^---\\n[\\s\\S]+?\\n---/);\r\n if (match) {\r\n return `---\\n${yamlStr}\\n---` + content.slice(match[0].length);\r\n }\r\n return `---\\n${yamlStr}\\n---\\n\\n` + content;\r\n}\r\n\r\ninterface MustHaveItem {\r\n [key: string]: string | number | string[];\r\n}\r\n\r\n/**\r\n * Parse a specific block from must_haves in frontmatter.\r\n * With the yaml package, this is just object traversal.\r\n */\r\nexport function parseMustHavesBlock(content: string, blockName: string): (string | MustHaveItem)[] {\r\n const fm = extractFrontmatter(content);\r\n const mustHaves = fm.must_haves as FrontmatterData | undefined;\r\n if (!mustHaves || typeof mustHaves !== 'object') return [];\r\n const block = mustHaves[blockName];\r\n if (!Array.isArray(block)) return [];\r\n return block as (string | MustHaveItem)[];\r\n}\r\n\r\n// ─── Frontmatter schema validation ──────────────────────────────────────────\r\n\r\nexport const FRONTMATTER_SCHEMAS: Record = {\r\n plan: {\r\n required: ['phase', 'plan', 'type', 'wave', 'depends_on', 'files_modified', 'autonomous', 'must_haves'],\r\n },\r\n summary: {\r\n required: ['phase', 'plan', 'subsystem', 'tags', 'duration', 'completed'],\r\n },\r\n verification: {\r\n required: ['phase', 'verified', 'status', 'score'],\r\n },\r\n};\r\n\r\n// ─── Frontmatter CRUD commands ──────────────────────────────────────────────\r\n\r\nexport function cmdFrontmatterGet(\r\n cwd: string,\r\n filePath: string | null,\r\n field: string | null,\r\n raw: boolean,\r\n): void {\r\n if (!filePath) {\r\n error('file path required');\r\n }\r\n const fullPath = path.isAbsolute(filePath) ? filePath : path.join(cwd, filePath);\r\n const content = safeReadFile(fullPath);\r\n if (!content) {\r\n output({ error: 'File not found', path: filePath }, raw);\r\n return;\r\n }\r\n const fm = extractFrontmatter(content);\r\n if (field) {\r\n const value = fm[field];\r\n if (value === undefined) {\r\n output({ error: 'Field not found', field }, raw);\r\n return;\r\n }\r\n output({ [field]: value }, raw, JSON.stringify(value));\r\n } else {\r\n output(fm, raw);\r\n }\r\n}\r\n\r\nexport function cmdFrontmatterSet(\r\n cwd: string,\r\n filePath: string | null,\r\n field: string | null,\r\n value: string | undefined,\r\n raw: boolean,\r\n): void {\r\n if (!filePath || !field || value === undefined) {\r\n error('file, field, and value required');\r\n }\r\n const fullPath = path.isAbsolute(filePath!) ? filePath! : path.join(cwd, filePath!);\r\n if (!fs.existsSync(fullPath)) {\r\n output({ error: 'File not found', path: filePath }, raw);\r\n return;\r\n }\r\n const content = fs.readFileSync(fullPath, 'utf-8');\r\n const fm = extractFrontmatter(content);\r\n let parsedValue: FrontmatterValue;\r\n try {\r\n parsedValue = JSON.parse(value!) as FrontmatterValue;\r\n } catch {\r\n parsedValue = value!;\r\n }\r\n fm[field!] = parsedValue;\r\n const newContent = spliceFrontmatter(content, fm);\r\n fs.writeFileSync(fullPath, newContent, 'utf-8');\r\n output({ updated: true, field, value: parsedValue }, raw, 'true');\r\n}\r\n\r\nexport function cmdFrontmatterMerge(\r\n cwd: string,\r\n filePath: string | null,\r\n data: string | null,\r\n raw: boolean,\r\n): void {\r\n if (!filePath || !data) {\r\n error('file and data required');\r\n }\r\n const fullPath = path.isAbsolute(filePath!) ? filePath! : path.join(cwd, filePath!);\r\n if (!fs.existsSync(fullPath)) {\r\n output({ error: 'File not found', path: filePath }, raw);\r\n return;\r\n }\r\n const content = fs.readFileSync(fullPath, 'utf-8');\r\n const fm = extractFrontmatter(content);\r\n let mergeData: FrontmatterData;\r\n try {\r\n mergeData = JSON.parse(data!) as FrontmatterData;\r\n } catch {\r\n error('Invalid JSON for --data');\r\n return;\r\n }\r\n Object.assign(fm, mergeData);\r\n const newContent = spliceFrontmatter(content, fm);\r\n fs.writeFileSync(fullPath, newContent, 'utf-8');\r\n output({ merged: true, fields: Object.keys(mergeData) }, raw, 'true');\r\n}\r\n\r\nexport function cmdFrontmatterValidate(\r\n cwd: string,\r\n filePath: string | null,\r\n schemaName: string | null,\r\n raw: boolean,\r\n): void {\r\n if (!filePath || !schemaName) {\r\n error('file and schema required');\r\n }\r\n const schema = FRONTMATTER_SCHEMAS[schemaName!];\r\n if (!schema) {\r\n error(\r\n `Unknown schema: ${schemaName}. Available: ${Object.keys(FRONTMATTER_SCHEMAS).join(', ')}`,\r\n );\r\n }\r\n const fullPath = path.isAbsolute(filePath!) ? filePath! : path.join(cwd, filePath!);\r\n const content = safeReadFile(fullPath);\r\n if (!content) {\r\n output({ error: 'File not found', path: filePath }, raw);\r\n return;\r\n }\r\n const fm = extractFrontmatter(content);\r\n const missing = schema.required.filter(f => fm[f] === undefined);\r\n const present = schema.required.filter(f => fm[f] !== undefined);\r\n const result: FrontmatterValidationResult = {\r\n valid: missing.length === 0,\r\n missing,\r\n present,\r\n schema: schemaName!,\r\n };\r\n output(result, raw, missing.length === 0 ? 'valid' : 'invalid');\r\n}\r\n","/**\r\n * Config — Planning config CRUD operations\r\n *\r\n * Ported from maxsim/bin/lib/config.cjs\r\n */\r\n\r\nimport fs from 'node:fs';\r\nimport path from 'node:path';\r\nimport os from 'node:os';\r\n\r\nimport { output, error } from './core.js';\r\nimport type { PlanningConfig, WorkflowConfig } from './types.js';\r\nimport { PLANNING_CONFIG_DEFAULTS } from './types.js';\r\n\r\n// ─── Config CRUD commands ───────────────────────────────────────────────────\r\n\r\nexport function cmdConfigEnsureSection(cwd: string, raw: boolean): void {\r\n const configPath = path.join(cwd, '.planning', 'config.json');\r\n const planningDir = path.join(cwd, '.planning');\r\n\r\n try {\r\n if (!fs.existsSync(planningDir)) {\r\n fs.mkdirSync(planningDir, { recursive: true });\r\n }\r\n } catch (err: unknown) {\r\n error('Failed to create .planning directory: ' + (err as Error).message);\r\n }\r\n\r\n if (fs.existsSync(configPath)) {\r\n const result = { created: false, reason: 'already_exists' };\r\n output(result, raw, 'exists');\r\n return;\r\n }\r\n\r\n // Detect Brave Search API key availability\r\n const homedir = os.homedir();\r\n const braveKeyFile = path.join(homedir, '.maxsim', 'brave_api_key');\r\n const hasBraveSearch = !!(process.env.BRAVE_API_KEY || fs.existsSync(braveKeyFile));\r\n\r\n // Load user-level defaults from ~/.maxsim/defaults.json if available\r\n const globalDefaultsPath = path.join(homedir, '.maxsim', 'defaults.json');\r\n let userDefaults: Partial = {};\r\n try {\r\n if (fs.existsSync(globalDefaultsPath)) {\r\n userDefaults = JSON.parse(fs.readFileSync(globalDefaultsPath, 'utf-8')) as Partial;\r\n }\r\n } catch {\r\n // Ignore malformed global defaults, fall back to hardcoded\r\n }\r\n\r\n const hardcoded: PlanningConfig = {\r\n ...PLANNING_CONFIG_DEFAULTS,\r\n brave_search: hasBraveSearch,\r\n };\r\n\r\n const defaults: PlanningConfig = {\r\n ...hardcoded,\r\n ...userDefaults,\r\n workflow: {\r\n ...hardcoded.workflow,\r\n ...(userDefaults.workflow || {}),\r\n } as WorkflowConfig,\r\n };\r\n\r\n try {\r\n fs.writeFileSync(configPath, JSON.stringify(defaults, null, 2), 'utf-8');\r\n const result = { created: true, path: '.planning/config.json' };\r\n output(result, raw, 'created');\r\n } catch (err: unknown) {\r\n error('Failed to create config.json: ' + (err as Error).message);\r\n }\r\n}\r\n\r\nexport function cmdConfigSet(cwd: string, keyPath: string | undefined, value: string | undefined, raw: boolean): void {\r\n const configPath = path.join(cwd, '.planning', 'config.json');\r\n\r\n if (!keyPath) {\r\n error('Usage: config-set ');\r\n }\r\n\r\n // Parse value (handle booleans and numbers)\r\n let parsedValue: string | boolean | number | undefined = value;\r\n if (value === 'true') parsedValue = true;\r\n else if (value === 'false') parsedValue = false;\r\n else if (value !== undefined && !isNaN(Number(value)) && value !== '') parsedValue = Number(value);\r\n\r\n // Load existing config or start with empty object\r\n let config: Record = {};\r\n try {\r\n if (fs.existsSync(configPath)) {\r\n config = JSON.parse(fs.readFileSync(configPath, 'utf-8')) as Record;\r\n }\r\n } catch (err: unknown) {\r\n error('Failed to read config.json: ' + (err as Error).message);\r\n }\r\n\r\n // Set nested value using dot notation\r\n const keys = keyPath!.split('.');\r\n let current: Record = config;\r\n for (let i = 0; i < keys.length - 1; i++) {\r\n const key = keys[i];\r\n if (current[key] === undefined || typeof current[key] !== 'object') {\r\n current[key] = {};\r\n }\r\n current = current[key] as Record;\r\n }\r\n current[keys[keys.length - 1]] = parsedValue;\r\n\r\n try {\r\n fs.writeFileSync(configPath, JSON.stringify(config, null, 2), 'utf-8');\r\n const result = { updated: true, key: keyPath, value: parsedValue };\r\n output(result, raw, `${keyPath}=${parsedValue}`);\r\n } catch (err: unknown) {\r\n error('Failed to write config.json: ' + (err as Error).message);\r\n }\r\n}\r\n\r\nexport function cmdConfigGet(cwd: string, keyPath: string | undefined, raw: boolean): void {\r\n const configPath = path.join(cwd, '.planning', 'config.json');\r\n\r\n if (!keyPath) {\r\n error('Usage: config-get ');\r\n }\r\n\r\n let config: Record = {};\r\n try {\r\n if (fs.existsSync(configPath)) {\r\n config = JSON.parse(fs.readFileSync(configPath, 'utf-8')) as Record;\r\n } else {\r\n error('No config.json found at ' + configPath);\r\n }\r\n } catch (err: unknown) {\r\n if ((err as Error).message.startsWith('No config.json')) throw err;\r\n error('Failed to read config.json: ' + (err as Error).message);\r\n }\r\n\r\n const keys = keyPath!.split('.');\r\n let current: unknown = config;\r\n for (const key of keys) {\r\n if (current === undefined || current === null || typeof current !== 'object') {\r\n error(`Key not found: ${keyPath}`);\r\n }\r\n current = (current as Record)[key];\r\n }\r\n\r\n if (current === undefined) {\r\n error(`Key not found: ${keyPath}`);\r\n }\r\n\r\n output(current, raw, String(current));\r\n}\r\n","export default function escapeStringRegexp(string) {\n\tif (typeof string !== 'string') {\n\t\tthrow new TypeError('Expected a string');\n\t}\n\n\t// Escape characters with special meaning either inside or outside character sets.\n\t// Use a simple backslash escape when it’s always valid, and a `\\xnn` escape when the simpler form would be disallowed by Unicode patterns’ stricter grammar.\n\treturn string\n\t\t.replace(/[|\\\\{}()[\\]^$+*?.]/g, '\\\\$&')\n\t\t.replace(/-/g, '\\\\x2d');\n}\n","/**\r\n * State — STATE.md operations and progression engine\r\n *\r\n * Ported from maxsim/bin/lib/state.cjs\r\n */\r\n\r\nimport fs from 'node:fs';\r\nimport path from 'node:path';\r\n\r\nimport escapeStringRegexp from 'escape-string-regexp';\r\n\r\nimport { loadConfig, output, error, rethrowCliSignals, safeReadFile, planningPath, statePath as statePathUtil, configPath, roadmapPath, phasesPath, debugLog, todayISO, isPlanFile, isSummaryFile } from './core.js';\r\nimport type {\r\n AppConfig,\r\n StatePatchResult,\r\n StateMetricOptions,\r\n StateDecisionOptions,\r\n StateBlockerOptions,\r\n StateSessionOptions,\r\n StateSnapshot,\r\n Decision,\r\n} from './types.js';\r\n\r\n// ─── Internal helpers ────────────────────────────────────────────────────────\r\n\r\nexport function stateExtractField(content: string, fieldName: string): string | null {\r\n const pattern = new RegExp(`\\\\*\\\\*${fieldName}:\\\\*\\\\*\\\\s*(.+)`, 'i');\r\n const match = content.match(pattern);\r\n return match ? match[1].trim() : null;\r\n}\r\n\r\nexport function stateReplaceField(content: string, fieldName: string, newValue: string): string | null {\r\n const escaped = escapeStringRegexp(fieldName);\r\n const pattern = new RegExp(`(\\\\*\\\\*${escaped}:\\\\*\\\\*\\\\s*)(.*)`, 'i');\r\n if (pattern.test(content)) {\r\n return content.replace(pattern, (_match, prefix: string) => `${prefix}${newValue}`);\r\n }\r\n return null;\r\n}\r\n\r\nfunction readTextArgOrFile(cwd: string, value: string | undefined, filePath: string | undefined, label: string): string | undefined {\r\n if (!filePath) return value;\r\n const resolvedPath = path.isAbsolute(filePath) ? filePath : path.join(cwd, filePath);\r\n try {\r\n return fs.readFileSync(resolvedPath, 'utf-8').trimEnd();\r\n } catch {\r\n throw new Error(`${label} file not found: ${filePath}`);\r\n }\r\n}\r\n\r\n/**\r\n * Append an entry to a section in STATE.md content, removing placeholder text.\r\n * Returns updated content or null if section not found.\r\n */\r\nexport function appendToStateSection(\r\n content: string,\r\n sectionPattern: RegExp,\r\n entry: string,\r\n placeholderPatterns?: RegExp[],\r\n): string | null {\r\n const match = content.match(sectionPattern);\r\n if (!match) return null;\r\n\r\n let sectionBody = match[2];\r\n const defaults = [/None yet\\.?\\s*\\n?/gi, /No decisions yet\\.?\\s*\\n?/gi, /None\\.?\\s*\\n?/gi];\r\n for (const pat of placeholderPatterns || defaults) {\r\n sectionBody = sectionBody.replace(pat, '');\r\n }\r\n sectionBody = sectionBody.trimEnd() + '\\n' + entry + '\\n';\r\n\r\n return content.replace(sectionPattern, (_m, header: string) => `${header}${sectionBody}`);\r\n}\r\n\r\n// ─── State commands ──────────────────────────────────────────────────────────\r\n\r\nexport function cmdStateLoad(cwd: string, raw: boolean): void {\r\n const config: AppConfig = loadConfig(cwd);\r\n let stateRaw = '';\r\n try {\r\n stateRaw = fs.readFileSync(statePathUtil(cwd), 'utf-8');\r\n } catch (e) {\r\n /* optional op, ignore */\r\n debugLog(e);\r\n }\r\n\r\n const configExists = fs.existsSync(configPath(cwd));\r\n const roadmapExists = fs.existsSync(roadmapPath(cwd));\r\n const stateExists = stateRaw.length > 0;\r\n\r\n const result = {\r\n config,\r\n state_raw: stateRaw,\r\n state_exists: stateExists,\r\n roadmap_exists: roadmapExists,\r\n config_exists: configExists,\r\n };\r\n\r\n if (raw) {\r\n const c = config;\r\n const lines = [\r\n `model_profile=${c.model_profile}`,\r\n `commit_docs=${c.commit_docs}`,\r\n `branching_strategy=${c.branching_strategy}`,\r\n `phase_branch_template=${c.phase_branch_template}`,\r\n `milestone_branch_template=${c.milestone_branch_template}`,\r\n `parallelization=${c.parallelization}`,\r\n `research=${c.research}`,\r\n `plan_checker=${c.plan_checker}`,\r\n `verifier=${c.verifier}`,\r\n `config_exists=${configExists}`,\r\n `roadmap_exists=${roadmapExists}`,\r\n `state_exists=${stateExists}`,\r\n ];\r\n output(result, true, lines.join('\\n'));\r\n }\r\n\r\n output(result);\r\n}\r\n\r\nexport function cmdStateGet(cwd: string, section: string | null, raw: boolean): void {\r\n const statePath = statePathUtil(cwd);\r\n try {\r\n const content = fs.readFileSync(statePath, 'utf-8');\r\n\r\n if (!section) {\r\n output({ content }, raw, content);\r\n return;\r\n }\r\n\r\n const fieldEscaped = escapeStringRegexp(section);\r\n\r\n // Check for **field:** value\r\n const fieldPattern = new RegExp(`\\\\*\\\\*${fieldEscaped}:\\\\*\\\\*\\\\s*(.*)`, 'i');\r\n const fieldMatch = content.match(fieldPattern);\r\n if (fieldMatch) {\r\n output({ [section]: fieldMatch[1].trim() }, raw, fieldMatch[1].trim());\r\n return;\r\n }\r\n\r\n // Check for ## Section\r\n const sectionPattern = new RegExp(`##\\\\s*${fieldEscaped}\\\\s*\\n([\\\\s\\\\S]*?)(?=\\\\n##|$)`, 'i');\r\n const sectionMatch = content.match(sectionPattern);\r\n if (sectionMatch) {\r\n output({ [section]: sectionMatch[1].trim() }, raw, sectionMatch[1].trim());\r\n return;\r\n }\r\n\r\n output({ error: `Section or field \"${section}\" not found` }, raw, '');\r\n } catch (e: unknown) {\r\n rethrowCliSignals(e);\r\n error('STATE.md not found');\r\n }\r\n}\r\n\r\nexport function cmdStatePatch(cwd: string, patches: Record, raw: boolean): void {\r\n const statePath = statePathUtil(cwd);\r\n try {\r\n let content = fs.readFileSync(statePath, 'utf-8');\r\n const results: StatePatchResult = { updated: [], failed: [] };\r\n\r\n for (const [field, value] of Object.entries(patches)) {\r\n const fieldEscaped = escapeStringRegexp(field);\r\n const pattern = new RegExp(`(\\\\*\\\\*${fieldEscaped}:\\\\*\\\\*\\\\s*)(.*)`, 'i');\r\n\r\n if (pattern.test(content)) {\r\n content = content.replace(pattern, (_match, prefix: string) => `${prefix}${value}`);\r\n results.updated.push(field);\r\n } else {\r\n results.failed.push(field);\r\n }\r\n }\r\n\r\n if (results.updated.length > 0) {\r\n fs.writeFileSync(statePath, content, 'utf-8');\r\n }\r\n\r\n output(results, raw, results.updated.length > 0 ? 'true' : 'false');\r\n } catch (e: unknown) {\r\n rethrowCliSignals(e);\r\n error('STATE.md not found');\r\n }\r\n}\r\n\r\nexport function cmdStateUpdate(cwd: string, field: string | undefined, value: string | undefined): void {\r\n if (!field || value === undefined) {\r\n error('field and value required for state update');\r\n }\r\n\r\n const statePath = statePathUtil(cwd);\r\n try {\r\n let content = fs.readFileSync(statePath, 'utf-8');\r\n const fieldEscaped = escapeStringRegexp(field);\r\n const pattern = new RegExp(`(\\\\*\\\\*${fieldEscaped}:\\\\*\\\\*\\\\s*)(.*)`, 'i');\r\n if (pattern.test(content)) {\r\n content = content.replace(pattern, (_match, prefix: string) => `${prefix}${value}`);\r\n fs.writeFileSync(statePath, content, 'utf-8');\r\n output({ updated: true });\r\n } else {\r\n output({ updated: false, reason: `Field \"${field}\" not found in STATE.md` });\r\n }\r\n } catch (e: unknown) {\r\n rethrowCliSignals(e);\r\n output({ updated: false, reason: 'STATE.md not found' });\r\n }\r\n}\r\n\r\n// ─── State Progression Engine ────────────────────────────────────────────────\r\n\r\nexport function cmdStateAdvancePlan(cwd: string, raw: boolean): void {\r\n const statePath = statePathUtil(cwd);\r\n if (!fs.existsSync(statePath)) { output({ error: 'STATE.md not found' }, raw); return; }\r\n\r\n let content = fs.readFileSync(statePath, 'utf-8');\r\n const currentPlan = parseInt(stateExtractField(content, 'Current Plan') ?? '', 10);\r\n const totalPlans = parseInt(stateExtractField(content, 'Total Plans in Phase') ?? '', 10);\r\n const today = todayISO();\r\n\r\n if (isNaN(currentPlan) || isNaN(totalPlans)) {\r\n output({ error: 'Cannot parse Current Plan or Total Plans in Phase from STATE.md' }, raw);\r\n return;\r\n }\r\n\r\n if (currentPlan >= totalPlans) {\r\n content = stateReplaceField(content, 'Status', 'Phase complete — ready for verification') || content;\r\n content = stateReplaceField(content, 'Last Activity', today) || content;\r\n fs.writeFileSync(statePath, content, 'utf-8');\r\n output({ advanced: false, reason: 'last_plan', current_plan: currentPlan, total_plans: totalPlans, status: 'ready_for_verification' }, raw, 'false');\r\n } else {\r\n const newPlan = currentPlan + 1;\r\n content = stateReplaceField(content, 'Current Plan', String(newPlan)) || content;\r\n content = stateReplaceField(content, 'Status', 'Ready to execute') || content;\r\n content = stateReplaceField(content, 'Last Activity', today) || content;\r\n fs.writeFileSync(statePath, content, 'utf-8');\r\n output({ advanced: true, previous_plan: currentPlan, current_plan: newPlan, total_plans: totalPlans }, raw, 'true');\r\n }\r\n}\r\n\r\nexport function cmdStateRecordMetric(cwd: string, options: StateMetricOptions, raw: boolean): void {\r\n const statePath = statePathUtil(cwd);\r\n if (!fs.existsSync(statePath)) { output({ error: 'STATE.md not found' }, raw); return; }\r\n\r\n let content = fs.readFileSync(statePath, 'utf-8');\r\n const { phase, plan, duration, tasks, files } = options;\r\n\r\n if (!phase || !plan || !duration) {\r\n output({ error: 'phase, plan, and duration required' }, raw);\r\n return;\r\n }\r\n\r\n const metricsPattern = /(##\\s*Performance Metrics[\\s\\S]*?\\n\\|[^\\n]+\\n\\|[-|\\s]+\\n)([\\s\\S]*?)(?=\\n##|\\n$|$)/i;\r\n const metricsMatch = content.match(metricsPattern);\r\n\r\n if (metricsMatch) {\r\n let tableBody = metricsMatch[2].trimEnd();\r\n const newRow = `| Phase ${phase} P${plan} | ${duration} | ${tasks || '-'} tasks | ${files || '-'} files |`;\r\n\r\n if (tableBody.trim() === '' || tableBody.includes('None yet')) {\r\n tableBody = newRow;\r\n } else {\r\n tableBody = tableBody + '\\n' + newRow;\r\n }\r\n\r\n content = content.replace(metricsPattern, (_match, header: string) => `${header}${tableBody}\\n`);\r\n fs.writeFileSync(statePath, content, 'utf-8');\r\n output({ recorded: true, phase, plan, duration }, raw, 'true');\r\n } else {\r\n output({ recorded: false, reason: 'Performance Metrics section not found in STATE.md' }, raw, 'false');\r\n }\r\n}\r\n\r\nexport function cmdStateUpdateProgress(cwd: string, raw: boolean): void {\r\n const statePath = statePathUtil(cwd);\r\n if (!fs.existsSync(statePath)) { output({ error: 'STATE.md not found' }, raw); return; }\r\n\r\n let content = fs.readFileSync(statePath, 'utf-8');\r\n\r\n const phasesDir = phasesPath(cwd);\r\n let totalPlans = 0;\r\n let totalSummaries = 0;\r\n\r\n if (fs.existsSync(phasesDir)) {\r\n const phaseDirs = fs.readdirSync(phasesDir, { withFileTypes: true })\r\n .filter(e => e.isDirectory()).map(e => e.name);\r\n for (const dir of phaseDirs) {\r\n const files = fs.readdirSync(path.join(phasesDir, dir));\r\n totalPlans += files.filter(f => isPlanFile(f)).length;\r\n totalSummaries += files.filter(f => isSummaryFile(f)).length;\r\n }\r\n }\r\n\r\n const percent = totalPlans > 0 ? Math.min(100, Math.round(totalSummaries / totalPlans * 100)) : 0;\r\n const barWidth = 10;\r\n const filled = Math.round(percent / 100 * barWidth);\r\n const bar = '\\u2588'.repeat(filled) + '\\u2591'.repeat(barWidth - filled);\r\n const progressStr = `[${bar}] ${percent}%`;\r\n\r\n const progressPattern = /(\\*\\*Progress:\\*\\*\\s*).*/i;\r\n if (progressPattern.test(content)) {\r\n content = content.replace(progressPattern, (_match, prefix: string) => `${prefix}${progressStr}`);\r\n fs.writeFileSync(statePath, content, 'utf-8');\r\n output({ updated: true, percent, completed: totalSummaries, total: totalPlans, bar: progressStr }, raw, progressStr);\r\n } else {\r\n output({ updated: false, reason: 'Progress field not found in STATE.md' }, raw, 'false');\r\n }\r\n}\r\n\r\nexport function cmdStateAddDecision(cwd: string, options: StateDecisionOptions, raw: boolean): void {\r\n const statePath = statePathUtil(cwd);\r\n if (!fs.existsSync(statePath)) { output({ error: 'STATE.md not found' }, raw); return; }\r\n\r\n const { phase, summary, summary_file, rationale, rationale_file } = options;\r\n let summaryText: string | undefined;\r\n let rationaleText = '';\r\n\r\n try {\r\n summaryText = readTextArgOrFile(cwd, summary, summary_file, 'summary');\r\n rationaleText = readTextArgOrFile(cwd, rationale || '', rationale_file, 'rationale') || '';\r\n } catch (thrown: unknown) {\r\n const e = thrown as Error;\r\n output({ added: false, reason: e.message }, raw, 'false');\r\n return;\r\n }\r\n\r\n if (!summaryText) { output({ error: 'summary required' }, raw); return; }\r\n\r\n const content = fs.readFileSync(statePath, 'utf-8');\r\n const entry = `- [Phase ${phase || '?'}]: ${summaryText}${rationaleText ? ` — ${rationaleText}` : ''}`;\r\n\r\n const sectionPattern = /(###?\\s*(?:Decisions|Decisions Made|Accumulated.*Decisions)\\s*\\n)([\\s\\S]*?)(?=\\n###?|\\n##[^#]|$)/i;\r\n const updated = appendToStateSection(content, sectionPattern, entry, [/None yet\\.?\\s*\\n?/gi, /No decisions yet\\.?\\s*\\n?/gi]);\r\n\r\n if (updated) {\r\n fs.writeFileSync(statePath, updated, 'utf-8');\r\n output({ added: true, decision: entry }, raw, 'true');\r\n } else {\r\n output({ added: false, reason: 'Decisions section not found in STATE.md' }, raw, 'false');\r\n }\r\n}\r\n\r\nexport function cmdStateAddBlocker(cwd: string, text: string | StateBlockerOptions, raw: boolean): void {\r\n const statePath = statePathUtil(cwd);\r\n if (!fs.existsSync(statePath)) { output({ error: 'STATE.md not found' }, raw); return; }\r\n const blockerOptions: StateBlockerOptions = typeof text === 'object' && text !== null ? text : { text: text as string };\r\n let blockerText: string | undefined;\r\n\r\n try {\r\n blockerText = readTextArgOrFile(cwd, blockerOptions.text, blockerOptions.text_file, 'blocker');\r\n } catch (thrown: unknown) {\r\n const e = thrown as Error;\r\n output({ added: false, reason: e.message }, raw, 'false');\r\n return;\r\n }\r\n\r\n if (!blockerText) { output({ error: 'text required' }, raw); return; }\r\n\r\n const content = fs.readFileSync(statePath, 'utf-8');\r\n const entry = `- ${blockerText}`;\r\n\r\n const sectionPattern = /(###?\\s*(?:Blockers|Blockers\\/Concerns|Concerns)\\s*\\n)([\\s\\S]*?)(?=\\n###?|\\n##[^#]|$)/i;\r\n const updated = appendToStateSection(content, sectionPattern, entry, [/None\\.?\\s*\\n?/gi, /None yet\\.?\\s*\\n?/gi]);\r\n\r\n if (updated) {\r\n fs.writeFileSync(statePath, updated, 'utf-8');\r\n output({ added: true, blocker: blockerText }, raw, 'true');\r\n } else {\r\n output({ added: false, reason: 'Blockers section not found in STATE.md' }, raw, 'false');\r\n }\r\n}\r\n\r\nexport function cmdStateResolveBlocker(cwd: string, text: string | null, raw: boolean): void {\r\n const statePath = statePathUtil(cwd);\r\n if (!fs.existsSync(statePath)) { output({ error: 'STATE.md not found' }, raw); return; }\r\n if (!text) { output({ error: 'text required' }, raw); return; }\r\n\r\n let content = fs.readFileSync(statePath, 'utf-8');\r\n\r\n const sectionPattern = /(###?\\s*(?:Blockers|Blockers\\/Concerns|Concerns)\\s*\\n)([\\s\\S]*?)(?=\\n###?|\\n##[^#]|$)/i;\r\n const match = content.match(sectionPattern);\r\n\r\n if (match) {\r\n const sectionBody = match[2];\r\n const lines = sectionBody.split('\\n');\r\n const filtered = lines.filter(line => {\r\n if (!line.startsWith('- ')) return true;\r\n return !line.toLowerCase().includes(text.toLowerCase());\r\n });\r\n\r\n let newBody = filtered.join('\\n');\r\n if (!newBody.trim() || !newBody.includes('- ')) {\r\n newBody = 'None\\n';\r\n }\r\n\r\n content = content.replace(sectionPattern, (_match, header: string) => `${header}${newBody}`);\r\n fs.writeFileSync(statePath, content, 'utf-8');\r\n output({ resolved: true, blocker: text }, raw, 'true');\r\n } else {\r\n output({ resolved: false, reason: 'Blockers section not found in STATE.md' }, raw, 'false');\r\n }\r\n}\r\n\r\nexport function cmdStateRecordSession(cwd: string, options: StateSessionOptions, raw: boolean): void {\r\n const statePath = statePathUtil(cwd);\r\n if (!fs.existsSync(statePath)) { output({ error: 'STATE.md not found' }, raw); return; }\r\n\r\n let content = fs.readFileSync(statePath, 'utf-8');\r\n const now = new Date().toISOString();\r\n const updated: string[] = [];\r\n\r\n let result = stateReplaceField(content, 'Last session', now);\r\n if (result) { content = result; updated.push('Last session'); }\r\n result = stateReplaceField(content, 'Last Date', now);\r\n if (result) { content = result; updated.push('Last Date'); }\r\n\r\n if (options.stopped_at) {\r\n result = stateReplaceField(content, 'Stopped At', options.stopped_at);\r\n if (!result) result = stateReplaceField(content, 'Stopped at', options.stopped_at);\r\n if (result) { content = result; updated.push('Stopped At'); }\r\n }\r\n\r\n const resumeFile = options.resume_file || 'None';\r\n result = stateReplaceField(content, 'Resume File', resumeFile);\r\n if (!result) result = stateReplaceField(content, 'Resume file', resumeFile);\r\n if (result) { content = result; updated.push('Resume File'); }\r\n\r\n if (updated.length > 0) {\r\n fs.writeFileSync(statePath, content, 'utf-8');\r\n output({ recorded: true, updated }, raw, 'true');\r\n } else {\r\n output({ recorded: false, reason: 'No session fields found in STATE.md' }, raw, 'false');\r\n }\r\n}\r\n\r\nexport function cmdStateSnapshot(cwd: string, raw: boolean): void {\r\n const statePath = statePathUtil(cwd);\r\n\r\n if (!fs.existsSync(statePath)) {\r\n output({ error: 'STATE.md not found' }, raw);\r\n return;\r\n }\r\n\r\n const content = fs.readFileSync(statePath, 'utf-8');\r\n\r\n const extractField = (fieldName: string): string | null => {\r\n const pattern = new RegExp(`\\\\*\\\\*${fieldName}:\\\\*\\\\*\\\\s*(.+)`, 'i');\r\n const match = content.match(pattern);\r\n return match ? match[1].trim() : null;\r\n };\r\n\r\n const currentPhase = extractField('Current Phase');\r\n const currentPhaseName = extractField('Current Phase Name');\r\n const totalPhasesRaw = extractField('Total Phases');\r\n const currentPlan = extractField('Current Plan');\r\n const totalPlansRaw = extractField('Total Plans in Phase');\r\n const status = extractField('Status');\r\n const progressRaw = extractField('Progress');\r\n const lastActivity = extractField('Last Activity');\r\n const lastActivityDesc = extractField('Last Activity Description');\r\n const pausedAt = extractField('Paused At');\r\n\r\n const totalPhases = totalPhasesRaw ? parseInt(totalPhasesRaw, 10) : null;\r\n const totalPlansInPhase = totalPlansRaw ? parseInt(totalPlansRaw, 10) : null;\r\n const progressPercent = progressRaw ? parseInt(progressRaw.replace('%', ''), 10) : null;\r\n\r\n const decisions: Decision[] = [];\r\n const decisionsMatch = content.match(/##\\s*Decisions Made[\\s\\S]*?\\n\\|[^\\n]+\\n\\|[-|\\s]+\\n([\\s\\S]*?)(?=\\n##|\\n$|$)/i);\r\n if (decisionsMatch) {\r\n const tableBody = decisionsMatch[1];\r\n const rows = tableBody.trim().split('\\n').filter(r => r.includes('|'));\r\n for (const row of rows) {\r\n const cells = row.split('|').map(c => c.trim()).filter(Boolean);\r\n if (cells.length >= 3) {\r\n decisions.push({\r\n phase: cells[0],\r\n summary: cells[1],\r\n rationale: cells[2],\r\n });\r\n }\r\n }\r\n }\r\n\r\n const blockers: string[] = [];\r\n const blockersMatch = content.match(/##\\s*Blockers\\s*\\n([\\s\\S]*?)(?=\\n##|$)/i);\r\n if (blockersMatch) {\r\n const blockersSection = blockersMatch[1];\r\n const items = blockersSection.match(/^-\\s+(.+)$/gm) || [];\r\n for (const item of items) {\r\n blockers.push(item.replace(/^-\\s+/, '').trim());\r\n }\r\n }\r\n\r\n const session: StateSnapshot['session'] = {\r\n last_date: null,\r\n stopped_at: null,\r\n resume_file: null,\r\n };\r\n\r\n const sessionMatch = content.match(/##\\s*Session\\s*\\n([\\s\\S]*?)(?=\\n##|$)/i);\r\n if (sessionMatch) {\r\n const sessionSection = sessionMatch[1];\r\n const lastDateMatch = sessionSection.match(/\\*\\*Last Date:\\*\\*\\s*(.+)/i);\r\n const stoppedAtMatch = sessionSection.match(/\\*\\*Stopped At:\\*\\*\\s*(.+)/i);\r\n const resumeFileMatch = sessionSection.match(/\\*\\*Resume File:\\*\\*\\s*(.+)/i);\r\n\r\n if (lastDateMatch) session.last_date = lastDateMatch[1].trim();\r\n if (stoppedAtMatch) session.stopped_at = stoppedAtMatch[1].trim();\r\n if (resumeFileMatch) session.resume_file = resumeFileMatch[1].trim();\r\n }\r\n\r\n const snapshot: StateSnapshot = {\r\n current_phase: currentPhase,\r\n current_phase_name: currentPhaseName,\r\n total_phases: totalPhases,\r\n current_plan: currentPlan,\r\n total_plans_in_phase: totalPlansInPhase,\r\n status,\r\n progress_percent: progressPercent,\r\n last_activity: lastActivity,\r\n last_activity_desc: lastActivityDesc,\r\n decisions,\r\n blockers,\r\n paused_at: pausedAt,\r\n session,\r\n };\r\n\r\n output(snapshot, raw);\r\n}\r\n","/**\r\n * Roadmap — Roadmap parsing and update operations\r\n *\r\n * Ported from maxsim/bin/lib/roadmap.cjs\r\n */\r\n\r\nimport fs from 'node:fs';\r\nimport path from 'node:path';\r\n\r\nimport { normalizePhaseName, getPhasePattern, output, error, rethrowCliSignals, findPhaseInternal, roadmapPath, phasesPath, listSubDirs, isPlanFile, isSummaryFile, debugLog, todayISO } from './core.js';\r\nimport type {\r\n PhaseStatus,\r\n RoadmapPhase,\r\n RoadmapMilestone,\r\n RoadmapAnalysis,\r\n RoadmapGetPhaseResult,\r\n} from './types.js';\r\n\r\n// ─── Roadmap commands ────────────────────────────────────────────────────────\r\n\r\nexport function cmdRoadmapGetPhase(cwd: string, phaseNum: string, raw: boolean): void {\r\n const rmPath = roadmapPath(cwd);\r\n\r\n if (!fs.existsSync(rmPath)) {\r\n output({ found: false, error: 'ROADMAP.md not found' }, raw, '');\r\n return;\r\n }\r\n\r\n try {\r\n const content = fs.readFileSync(rmPath, 'utf-8');\r\n\r\n const escapedPhase = phaseNum.replace(/\\./g, '\\\\.');\r\n\r\n const phasePattern = getPhasePattern(escapedPhase, 'i');\r\n const headerMatch = content.match(phasePattern);\r\n\r\n if (!headerMatch) {\r\n const checklistPattern = new RegExp(\r\n `-\\\\s*\\\\[[ x]\\\\]\\\\s*\\\\*\\\\*Phase\\\\s+${escapedPhase}:\\\\s*([^*]+)\\\\*\\\\*`,\r\n 'i'\r\n );\r\n const checklistMatch = content.match(checklistPattern);\r\n\r\n if (checklistMatch) {\r\n output({\r\n found: false,\r\n phase_number: phaseNum,\r\n phase_name: checklistMatch[1].trim(),\r\n error: 'malformed_roadmap',\r\n message: `Phase ${phaseNum} exists in summary list but missing \"### Phase ${phaseNum}:\" detail section. ROADMAP.md needs both formats.`\r\n }, raw, '');\r\n return;\r\n }\r\n\r\n output({ found: false, phase_number: phaseNum }, raw, '');\r\n return;\r\n }\r\n\r\n const phaseName = headerMatch[1].trim();\r\n const headerIndex = headerMatch.index!;\r\n\r\n const restOfContent = content.slice(headerIndex);\r\n const nextHeaderMatch = restOfContent.match(/\\n#{2,4}\\s+Phase\\s+\\d/i);\r\n const sectionEnd = nextHeaderMatch\r\n ? headerIndex + nextHeaderMatch.index!\r\n : content.length;\r\n\r\n const section = content.slice(headerIndex, sectionEnd).trim();\r\n\r\n const goalMatch = section.match(/\\*\\*Goal(?::\\*\\*|\\*\\*:)\\s*([^\\n]+)/i);\r\n const goal = goalMatch ? goalMatch[1].trim() : null;\r\n\r\n const criteriaMatch = section.match(/\\*\\*Success Criteria\\*\\*[^\\n]*:\\s*\\n((?:\\s*\\d+\\.\\s*[^\\n]+\\n?)+)/i);\r\n const success_criteria = criteriaMatch\r\n ? criteriaMatch[1].trim().split('\\n').map(line => line.replace(/^\\s*\\d+\\.\\s*/, '').trim()).filter(Boolean)\r\n : [];\r\n\r\n output(\r\n {\r\n found: true,\r\n phase_number: phaseNum,\r\n phase_name: phaseName,\r\n goal,\r\n success_criteria,\r\n section,\r\n },\r\n raw,\r\n section\r\n );\r\n } catch (e: unknown) {\r\n rethrowCliSignals(e);\r\n error('Failed to read ROADMAP.md: ' + (e as Error).message);\r\n }\r\n}\r\n\r\nexport function cmdRoadmapAnalyze(cwd: string, raw: boolean): void {\r\n const rmPath = roadmapPath(cwd);\r\n\r\n if (!fs.existsSync(rmPath)) {\r\n output({ error: 'ROADMAP.md not found', milestones: [], phases: [], current_phase: null }, raw);\r\n return;\r\n }\r\n\r\n const content = fs.readFileSync(rmPath, 'utf-8');\r\n const phasesDir = phasesPath(cwd);\r\n\r\n const phasePattern = getPhasePattern();\r\n const phases: RoadmapPhase[] = [];\r\n let match: RegExpExecArray | null;\r\n\r\n while ((match = phasePattern.exec(content)) !== null) {\r\n const phaseNum = match[1];\r\n const phaseName = match[2].replace(/\\(INSERTED\\)/i, '').trim();\r\n\r\n const sectionStart = match.index;\r\n const restOfContent = content.slice(sectionStart);\r\n const nextHeader = restOfContent.match(/\\n#{2,4}\\s+Phase\\s+\\d/i);\r\n const sectionEnd = nextHeader ? sectionStart + nextHeader.index! : content.length;\r\n const section = content.slice(sectionStart, sectionEnd);\r\n\r\n const goalMatch = section.match(/\\*\\*Goal(?::\\*\\*|\\*\\*:)\\s*([^\\n]+)/i);\r\n const goal = goalMatch ? goalMatch[1].trim() : null;\r\n\r\n const dependsMatch = section.match(/\\*\\*Depends on:\\*\\*\\s*([^\\n]+)/i);\r\n const depends_on = dependsMatch ? dependsMatch[1].trim() : null;\r\n\r\n const normalized = normalizePhaseName(phaseNum);\r\n let diskStatus: PhaseStatus = 'no_directory';\r\n let planCount = 0;\r\n let summaryCount = 0;\r\n let hasContext = false;\r\n let hasResearch = false;\r\n\r\n try {\r\n const dirs = listSubDirs(phasesDir);\r\n const dirMatch = dirs.find(d => d.startsWith(normalized + '-') || d === normalized);\r\n\r\n if (dirMatch) {\r\n const phaseFiles = fs.readdirSync(path.join(phasesDir, dirMatch));\r\n planCount = phaseFiles.filter(f => isPlanFile(f)).length;\r\n summaryCount = phaseFiles.filter(f => isSummaryFile(f)).length;\r\n hasContext = phaseFiles.some(f => f.endsWith('-CONTEXT.md') || f === 'CONTEXT.md');\r\n hasResearch = phaseFiles.some(f => f.endsWith('-RESEARCH.md') || f === 'RESEARCH.md');\r\n\r\n if (summaryCount >= planCount && planCount > 0) diskStatus = 'complete';\r\n else if (summaryCount > 0) diskStatus = 'partial';\r\n else if (planCount > 0) diskStatus = 'planned';\r\n else if (hasResearch) diskStatus = 'researched';\r\n else if (hasContext) diskStatus = 'discussed';\r\n else diskStatus = 'empty';\r\n }\r\n } catch (e) {\r\n /* optional op, ignore */\r\n debugLog(e);\r\n }\r\n\r\n const checkboxPattern = new RegExp(`-\\\\s*\\\\[(x| )\\\\]\\\\s*.*Phase\\\\s+${phaseNum.replace('.', '\\\\.')}`, 'i');\r\n const checkboxMatch = content.match(checkboxPattern);\r\n const roadmapComplete = checkboxMatch ? checkboxMatch[1] === 'x' : false;\r\n\r\n phases.push({\r\n number: phaseNum,\r\n name: phaseName,\r\n goal,\r\n depends_on,\r\n plan_count: planCount,\r\n summary_count: summaryCount,\r\n has_context: hasContext,\r\n has_research: hasResearch,\r\n disk_status: diskStatus,\r\n roadmap_complete: roadmapComplete,\r\n });\r\n }\r\n\r\n const milestones: RoadmapMilestone[] = [];\r\n const milestonePattern = /##\\s*(.*v(\\d+\\.\\d+)[^(\\n]*)/gi;\r\n let mMatch: RegExpExecArray | null;\r\n while ((mMatch = milestonePattern.exec(content)) !== null) {\r\n milestones.push({\r\n heading: mMatch[1].trim(),\r\n version: 'v' + mMatch[2],\r\n });\r\n }\r\n\r\n const currentPhase = phases.find(p => p.disk_status === 'planned' || p.disk_status === 'partial') || null;\r\n const nextPhase = phases.find(p => p.disk_status === 'empty' || p.disk_status === 'no_directory' || p.disk_status === 'discussed' || p.disk_status === 'researched') || null;\r\n\r\n const totalPlans = phases.reduce((sum, p) => sum + p.plan_count, 0);\r\n const totalSummaries = phases.reduce((sum, p) => sum + p.summary_count, 0);\r\n const completedPhases = phases.filter(p => p.disk_status === 'complete').length;\r\n\r\n const checklistPattern = /-\\s*\\[[ x]\\]\\s*\\*\\*Phase\\s+(\\d+[A-Z]?(?:\\.\\d+)?)/gi;\r\n const checklistPhases = new Set();\r\n let checklistMatch: RegExpExecArray | null;\r\n while ((checklistMatch = checklistPattern.exec(content)) !== null) {\r\n checklistPhases.add(checklistMatch[1]);\r\n }\r\n const detailPhases = new Set(phases.map(p => p.number));\r\n const missingDetails = [...checklistPhases].filter(p => !detailPhases.has(p));\r\n\r\n const result: RoadmapAnalysis = {\r\n milestones,\r\n phases,\r\n phase_count: phases.length,\r\n completed_phases: completedPhases,\r\n total_plans: totalPlans,\r\n total_summaries: totalSummaries,\r\n progress_percent: totalPlans > 0 ? Math.min(100, Math.round((totalSummaries / totalPlans) * 100)) : 0,\r\n current_phase: currentPhase ? currentPhase.number : null,\r\n next_phase: nextPhase ? nextPhase.number : null,\r\n missing_phase_details: missingDetails.length > 0 ? missingDetails : null,\r\n };\r\n\r\n output(result, raw);\r\n}\r\n\r\nexport function cmdRoadmapUpdatePlanProgress(cwd: string, phaseNum: string, raw: boolean): void {\r\n if (!phaseNum) {\r\n error('phase number required for roadmap update-plan-progress');\r\n }\r\n\r\n const rmPath = roadmapPath(cwd);\r\n\r\n const phaseInfo = findPhaseInternal(cwd, phaseNum);\r\n if (!phaseInfo) {\r\n error(`Phase ${phaseNum} not found`);\r\n }\r\n\r\n const planCount = phaseInfo.plans.length;\r\n const summaryCount = phaseInfo.summaries.length;\r\n\r\n if (planCount === 0) {\r\n output({ updated: false, reason: 'No plans found', plan_count: 0, summary_count: 0 }, raw, 'no plans');\r\n return;\r\n }\r\n\r\n const isComplete = summaryCount >= planCount;\r\n const status = isComplete ? 'Complete' : summaryCount > 0 ? 'In Progress' : 'Planned';\r\n const today = todayISO();\r\n\r\n if (!fs.existsSync(rmPath)) {\r\n output({ updated: false, reason: 'ROADMAP.md not found', plan_count: planCount, summary_count: summaryCount }, raw, 'no roadmap');\r\n return;\r\n }\r\n\r\n let roadmapContent = fs.readFileSync(rmPath, 'utf-8');\r\n const phaseEscaped = phaseNum.replace('.', '\\\\.');\r\n\r\n const tablePattern = new RegExp(\r\n `(\\\\|\\\\s*${phaseEscaped}\\\\.?\\\\s[^|]*\\\\|)[^|]*(\\\\|)\\\\s*[^|]*(\\\\|)\\\\s*[^|]*(\\\\|)`,\r\n 'i'\r\n );\r\n const dateField = isComplete ? ` ${today} ` : ' ';\r\n roadmapContent = roadmapContent.replace(\r\n tablePattern,\r\n `$1 ${summaryCount}/${planCount} $2 ${status.padEnd(11)}$3${dateField}$4`\r\n );\r\n\r\n const planCountPattern = new RegExp(\r\n `(#{2,4}\\\\s*Phase\\\\s+${phaseEscaped}[\\\\s\\\\S]*?\\\\*\\\\*Plans:\\\\*\\\\*\\\\s*)[^\\\\n]+`,\r\n 'i'\r\n );\r\n const planCountText = isComplete\r\n ? `${summaryCount}/${planCount} plans complete`\r\n : `${summaryCount}/${planCount} plans executed`;\r\n roadmapContent = roadmapContent.replace(planCountPattern, `$1${planCountText}`);\r\n\r\n if (isComplete) {\r\n const checkboxPattern = new RegExp(\r\n `(-\\\\s*\\\\[)[ ](\\\\]\\\\s*.*Phase\\\\s+${phaseEscaped}[:\\\\s][^\\\\n]*)`,\r\n 'i'\r\n );\r\n roadmapContent = roadmapContent.replace(checkboxPattern, `$1x$2 (completed ${today})`);\r\n }\r\n\r\n fs.writeFileSync(rmPath, roadmapContent, 'utf-8');\r\n\r\n output({\r\n updated: true,\r\n phase: phaseNum,\r\n plan_count: planCount,\r\n summary_count: summaryCount,\r\n status,\r\n complete: isComplete,\r\n }, raw, `${summaryCount}/${planCount} ${status}`);\r\n}\r\n","/**\r\n * Milestone — Milestone and requirements lifecycle operations\r\n *\r\n * Ported from maxsim/bin/lib/milestone.cjs\r\n */\r\n\r\nimport fs from 'node:fs';\r\nimport path from 'node:path';\r\n\r\nimport { output, error, planningPath, roadmapPath as roadmapPathUtil, statePath as statePathUtil, phasesPath, todayISO, listSubDirs, isPlanFile, isSummaryFile, debugLog } from './core.js';\r\nimport { extractFrontmatter } from './frontmatter.js';\r\nimport type {\r\n MilestoneCompleteOptions,\r\n MilestoneResult,\r\n ArchiveResult,\r\n} from './types.js';\r\n\r\n// ─── Requirements commands ───────────────────────────────────────────────────\r\n\r\nexport function cmdRequirementsMarkComplete(cwd: string, reqIdsRaw: string[], raw: boolean): void {\r\n if (!reqIdsRaw || reqIdsRaw.length === 0) {\r\n error('requirement IDs required. Usage: requirements mark-complete REQ-01,REQ-02 or REQ-01 REQ-02');\r\n }\r\n\r\n const reqIds = reqIdsRaw\r\n .join(' ')\r\n .replace(/[\\[\\]]/g, '')\r\n .split(/[,\\s]+/)\r\n .map(r => r.trim())\r\n .filter(Boolean);\r\n\r\n if (reqIds.length === 0) {\r\n error('no valid requirement IDs found');\r\n }\r\n\r\n const reqPath = planningPath(cwd, 'REQUIREMENTS.md');\r\n if (!fs.existsSync(reqPath)) {\r\n output({ updated: false, reason: 'REQUIREMENTS.md not found', ids: reqIds }, raw, 'no requirements file');\r\n return;\r\n }\r\n\r\n let reqContent = fs.readFileSync(reqPath, 'utf-8');\r\n const updated: string[] = [];\r\n const notFound: string[] = [];\r\n\r\n for (const reqId of reqIds) {\r\n let found = false;\r\n\r\n const checkboxPattern = new RegExp(`(-\\\\s*\\\\[)[ ](\\\\]\\\\s*\\\\*\\\\*${reqId}\\\\*\\\\*)`, 'gi');\r\n if (checkboxPattern.test(reqContent)) {\r\n reqContent = reqContent.replace(checkboxPattern, '$1x$2');\r\n found = true;\r\n }\r\n\r\n const tablePattern = new RegExp(`(\\\\|\\\\s*${reqId}\\\\s*\\\\|[^|]+\\\\|)\\\\s*Pending\\\\s*(\\\\|)`, 'gi');\r\n if (tablePattern.test(reqContent)) {\r\n reqContent = reqContent.replace(\r\n new RegExp(`(\\\\|\\\\s*${reqId}\\\\s*\\\\|[^|]+\\\\|)\\\\s*Pending\\\\s*(\\\\|)`, 'gi'),\r\n '$1 Complete $2'\r\n );\r\n found = true;\r\n }\r\n\r\n if (found) {\r\n updated.push(reqId);\r\n } else {\r\n notFound.push(reqId);\r\n }\r\n }\r\n\r\n if (updated.length > 0) {\r\n fs.writeFileSync(reqPath, reqContent, 'utf-8');\r\n }\r\n\r\n const result: ArchiveResult = {\r\n updated: updated.length > 0,\r\n marked_complete: updated,\r\n not_found: notFound,\r\n total: reqIds.length,\r\n };\r\n\r\n output(result, raw, `${updated.length}/${reqIds.length} requirements marked complete`);\r\n}\r\n\r\n// ─── Milestone commands ──────────────────────────────────────────────────────\r\n\r\nexport function cmdMilestoneComplete(\r\n cwd: string,\r\n version: string | undefined,\r\n options: MilestoneCompleteOptions,\r\n raw: boolean,\r\n): void {\r\n if (!version) {\r\n error('version required for milestone complete (e.g., v1.0)');\r\n }\r\n\r\n const roadmapPath = roadmapPathUtil(cwd);\r\n const reqPath = planningPath(cwd, 'REQUIREMENTS.md');\r\n const statePath = statePathUtil(cwd);\r\n const milestonesPath = planningPath(cwd, 'MILESTONES.md');\r\n const archiveDir = planningPath(cwd, 'milestones');\r\n const phasesDir = phasesPath(cwd);\r\n const today = todayISO();\r\n const milestoneName = options.name || version;\r\n\r\n fs.mkdirSync(archiveDir, { recursive: true });\r\n\r\n let phaseCount = 0;\r\n let totalPlans = 0;\r\n let totalTasks = 0;\r\n const accomplishments: string[] = [];\r\n\r\n try {\r\n const dirs = listSubDirs(phasesDir, true);\r\n\r\n for (const dir of dirs) {\r\n phaseCount++;\r\n const phaseFiles = fs.readdirSync(path.join(phasesDir, dir));\r\n const plans = phaseFiles.filter(isPlanFile);\r\n const summaries = phaseFiles.filter(isSummaryFile);\r\n totalPlans += plans.length;\r\n\r\n for (const s of summaries) {\r\n try {\r\n const content = fs.readFileSync(path.join(phasesDir, dir, s), 'utf-8');\r\n const fm = extractFrontmatter(content);\r\n if (fm['one-liner']) {\r\n accomplishments.push(String(fm['one-liner']));\r\n }\r\n const taskMatches = content.match(/##\\s*Task\\s*\\d+/gi) || [];\r\n totalTasks += taskMatches.length;\r\n } catch (e) {\r\n /* optional op, ignore */\r\n debugLog(e);\r\n }\r\n }\r\n }\r\n } catch (e) {\r\n /* optional op, ignore */\r\n debugLog(e);\r\n }\r\n\r\n // Archive ROADMAP.md\r\n if (fs.existsSync(roadmapPath)) {\r\n const roadmapContent = fs.readFileSync(roadmapPath, 'utf-8');\r\n fs.writeFileSync(path.join(archiveDir, `${version}-ROADMAP.md`), roadmapContent, 'utf-8');\r\n }\r\n\r\n // Archive REQUIREMENTS.md\r\n if (fs.existsSync(reqPath)) {\r\n const reqContent = fs.readFileSync(reqPath, 'utf-8');\r\n const archiveHeader = `# Requirements Archive: ${version} ${milestoneName}\\n\\n**Archived:** ${today}\\n**Status:** SHIPPED\\n\\nFor current requirements, see \\`.planning/REQUIREMENTS.md\\`.\\n\\n---\\n\\n`;\r\n fs.writeFileSync(path.join(archiveDir, `${version}-REQUIREMENTS.md`), archiveHeader + reqContent, 'utf-8');\r\n }\r\n\r\n // Archive audit file if exists\r\n const auditFile = path.join(cwd, '.planning', `${version}-MILESTONE-AUDIT.md`);\r\n if (fs.existsSync(auditFile)) {\r\n fs.renameSync(auditFile, path.join(archiveDir, `${version}-MILESTONE-AUDIT.md`));\r\n }\r\n\r\n // Create/append MILESTONES.md entry\r\n const accomplishmentsList = accomplishments.map(a => `- ${a}`).join('\\n');\r\n const milestoneEntry = `## ${version} ${milestoneName} (Shipped: ${today})\\n\\n**Phases completed:** ${phaseCount} phases, ${totalPlans} plans, ${totalTasks} tasks\\n\\n**Key accomplishments:**\\n${accomplishmentsList || '- (none recorded)'}\\n\\n---\\n\\n`;\r\n\r\n if (fs.existsSync(milestonesPath)) {\r\n const existing = fs.readFileSync(milestonesPath, 'utf-8');\r\n fs.writeFileSync(milestonesPath, existing + '\\n' + milestoneEntry, 'utf-8');\r\n } else {\r\n fs.writeFileSync(milestonesPath, `# Milestones\\n\\n${milestoneEntry}`, 'utf-8');\r\n }\r\n\r\n // Update STATE.md\r\n if (fs.existsSync(statePath)) {\r\n let stateContent = fs.readFileSync(statePath, 'utf-8');\r\n stateContent = stateContent.replace(\r\n /(\\*\\*Status:\\*\\*\\s*).*/,\r\n `$1${version} milestone complete`\r\n );\r\n stateContent = stateContent.replace(\r\n /(\\*\\*Last Activity:\\*\\*\\s*).*/,\r\n `$1${today}`\r\n );\r\n stateContent = stateContent.replace(\r\n /(\\*\\*Last Activity Description:\\*\\*\\s*).*/,\r\n `$1${version} milestone completed and archived`\r\n );\r\n fs.writeFileSync(statePath, stateContent, 'utf-8');\r\n }\r\n\r\n // Archive phase directories if requested\r\n let phasesArchived = false;\r\n if (options.archivePhases) {\r\n try {\r\n const phaseArchiveDir = path.join(archiveDir, `${version}-phases`);\r\n fs.mkdirSync(phaseArchiveDir, { recursive: true });\r\n\r\n const phaseDirNames = listSubDirs(phasesDir);\r\n for (const dir of phaseDirNames) {\r\n fs.renameSync(path.join(phasesDir, dir), path.join(phaseArchiveDir, dir));\r\n }\r\n phasesArchived = phaseDirNames.length > 0;\r\n } catch (e) {\r\n /* optional op, ignore */\r\n debugLog(e);\r\n }\r\n }\r\n\r\n const result: MilestoneResult = {\r\n version,\r\n name: milestoneName,\r\n date: today,\r\n phases: phaseCount,\r\n plans: totalPlans,\r\n tasks: totalTasks,\r\n accomplishments,\r\n archived: {\r\n roadmap: fs.existsSync(path.join(archiveDir, `${version}-ROADMAP.md`)),\r\n requirements: fs.existsSync(path.join(archiveDir, `${version}-REQUIREMENTS.md`)),\r\n audit: fs.existsSync(path.join(archiveDir, `${version}-MILESTONE-AUDIT.md`)),\r\n phases: phasesArchived,\r\n },\r\n milestones_updated: true,\r\n state_updated: fs.existsSync(statePath),\r\n };\r\n\r\n output(result, raw);\r\n}\r\n","const ANSI_BACKGROUND_OFFSET = 10;\n\nconst wrapAnsi16 = (offset = 0) => code => `\\u001B[${code + offset}m`;\n\nconst wrapAnsi256 = (offset = 0) => code => `\\u001B[${38 + offset};5;${code}m`;\n\nconst wrapAnsi16m = (offset = 0) => (red, green, blue) => `\\u001B[${38 + offset};2;${red};${green};${blue}m`;\n\nconst styles = {\n\tmodifier: {\n\t\treset: [0, 0],\n\t\t// 21 isn't widely supported and 22 does the same thing\n\t\tbold: [1, 22],\n\t\tdim: [2, 22],\n\t\titalic: [3, 23],\n\t\tunderline: [4, 24],\n\t\toverline: [53, 55],\n\t\tinverse: [7, 27],\n\t\thidden: [8, 28],\n\t\tstrikethrough: [9, 29],\n\t},\n\tcolor: {\n\t\tblack: [30, 39],\n\t\tred: [31, 39],\n\t\tgreen: [32, 39],\n\t\tyellow: [33, 39],\n\t\tblue: [34, 39],\n\t\tmagenta: [35, 39],\n\t\tcyan: [36, 39],\n\t\twhite: [37, 39],\n\n\t\t// Bright color\n\t\tblackBright: [90, 39],\n\t\tgray: [90, 39], // Alias of `blackBright`\n\t\tgrey: [90, 39], // Alias of `blackBright`\n\t\tredBright: [91, 39],\n\t\tgreenBright: [92, 39],\n\t\tyellowBright: [93, 39],\n\t\tblueBright: [94, 39],\n\t\tmagentaBright: [95, 39],\n\t\tcyanBright: [96, 39],\n\t\twhiteBright: [97, 39],\n\t},\n\tbgColor: {\n\t\tbgBlack: [40, 49],\n\t\tbgRed: [41, 49],\n\t\tbgGreen: [42, 49],\n\t\tbgYellow: [43, 49],\n\t\tbgBlue: [44, 49],\n\t\tbgMagenta: [45, 49],\n\t\tbgCyan: [46, 49],\n\t\tbgWhite: [47, 49],\n\n\t\t// Bright color\n\t\tbgBlackBright: [100, 49],\n\t\tbgGray: [100, 49], // Alias of `bgBlackBright`\n\t\tbgGrey: [100, 49], // Alias of `bgBlackBright`\n\t\tbgRedBright: [101, 49],\n\t\tbgGreenBright: [102, 49],\n\t\tbgYellowBright: [103, 49],\n\t\tbgBlueBright: [104, 49],\n\t\tbgMagentaBright: [105, 49],\n\t\tbgCyanBright: [106, 49],\n\t\tbgWhiteBright: [107, 49],\n\t},\n};\n\nexport const modifierNames = Object.keys(styles.modifier);\nexport const foregroundColorNames = Object.keys(styles.color);\nexport const backgroundColorNames = Object.keys(styles.bgColor);\nexport const colorNames = [...foregroundColorNames, ...backgroundColorNames];\n\nfunction assembleStyles() {\n\tconst codes = new Map();\n\n\tfor (const [groupName, group] of Object.entries(styles)) {\n\t\tfor (const [styleName, style] of Object.entries(group)) {\n\t\t\tstyles[styleName] = {\n\t\t\t\topen: `\\u001B[${style[0]}m`,\n\t\t\t\tclose: `\\u001B[${style[1]}m`,\n\t\t\t};\n\n\t\t\tgroup[styleName] = styles[styleName];\n\n\t\t\tcodes.set(style[0], style[1]);\n\t\t}\n\n\t\tObject.defineProperty(styles, groupName, {\n\t\t\tvalue: group,\n\t\t\tenumerable: false,\n\t\t});\n\t}\n\n\tObject.defineProperty(styles, 'codes', {\n\t\tvalue: codes,\n\t\tenumerable: false,\n\t});\n\n\tstyles.color.close = '\\u001B[39m';\n\tstyles.bgColor.close = '\\u001B[49m';\n\n\tstyles.color.ansi = wrapAnsi16();\n\tstyles.color.ansi256 = wrapAnsi256();\n\tstyles.color.ansi16m = wrapAnsi16m();\n\tstyles.bgColor.ansi = wrapAnsi16(ANSI_BACKGROUND_OFFSET);\n\tstyles.bgColor.ansi256 = wrapAnsi256(ANSI_BACKGROUND_OFFSET);\n\tstyles.bgColor.ansi16m = wrapAnsi16m(ANSI_BACKGROUND_OFFSET);\n\n\t// From https://github.com/Qix-/color-convert/blob/3f0e0d4e92e235796ccb17f6e85c72094a651f49/conversions.js\n\tObject.defineProperties(styles, {\n\t\trgbToAnsi256: {\n\t\t\tvalue(red, green, blue) {\n\t\t\t\t// We use the extended greyscale palette here, with the exception of\n\t\t\t\t// black and white. normal palette only has 4 greyscale shades.\n\t\t\t\tif (red === green && green === blue) {\n\t\t\t\t\tif (red < 8) {\n\t\t\t\t\t\treturn 16;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (red > 248) {\n\t\t\t\t\t\treturn 231;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn Math.round(((red - 8) / 247) * 24) + 232;\n\t\t\t\t}\n\n\t\t\t\treturn 16\n\t\t\t\t\t+ (36 * Math.round(red / 255 * 5))\n\t\t\t\t\t+ (6 * Math.round(green / 255 * 5))\n\t\t\t\t\t+ Math.round(blue / 255 * 5);\n\t\t\t},\n\t\t\tenumerable: false,\n\t\t},\n\t\thexToRgb: {\n\t\t\tvalue(hex) {\n\t\t\t\tconst matches = /[a-f\\d]{6}|[a-f\\d]{3}/i.exec(hex.toString(16));\n\t\t\t\tif (!matches) {\n\t\t\t\t\treturn [0, 0, 0];\n\t\t\t\t}\n\n\t\t\t\tlet [colorString] = matches;\n\n\t\t\t\tif (colorString.length === 3) {\n\t\t\t\t\tcolorString = [...colorString].map(character => character + character).join('');\n\t\t\t\t}\n\n\t\t\t\tconst integer = Number.parseInt(colorString, 16);\n\n\t\t\t\treturn [\n\t\t\t\t\t/* eslint-disable no-bitwise */\n\t\t\t\t\t(integer >> 16) & 0xFF,\n\t\t\t\t\t(integer >> 8) & 0xFF,\n\t\t\t\t\tinteger & 0xFF,\n\t\t\t\t\t/* eslint-enable no-bitwise */\n\t\t\t\t];\n\t\t\t},\n\t\t\tenumerable: false,\n\t\t},\n\t\thexToAnsi256: {\n\t\t\tvalue: hex => styles.rgbToAnsi256(...styles.hexToRgb(hex)),\n\t\t\tenumerable: false,\n\t\t},\n\t\tansi256ToAnsi: {\n\t\t\tvalue(code) {\n\t\t\t\tif (code < 8) {\n\t\t\t\t\treturn 30 + code;\n\t\t\t\t}\n\n\t\t\t\tif (code < 16) {\n\t\t\t\t\treturn 90 + (code - 8);\n\t\t\t\t}\n\n\t\t\t\tlet red;\n\t\t\t\tlet green;\n\t\t\t\tlet blue;\n\n\t\t\t\tif (code >= 232) {\n\t\t\t\t\tred = (((code - 232) * 10) + 8) / 255;\n\t\t\t\t\tgreen = red;\n\t\t\t\t\tblue = red;\n\t\t\t\t} else {\n\t\t\t\t\tcode -= 16;\n\n\t\t\t\t\tconst remainder = code % 36;\n\n\t\t\t\t\tred = Math.floor(code / 36) / 5;\n\t\t\t\t\tgreen = Math.floor(remainder / 6) / 5;\n\t\t\t\t\tblue = (remainder % 6) / 5;\n\t\t\t\t}\n\n\t\t\t\tconst value = Math.max(red, green, blue) * 2;\n\n\t\t\t\tif (value === 0) {\n\t\t\t\t\treturn 30;\n\t\t\t\t}\n\n\t\t\t\t// eslint-disable-next-line no-bitwise\n\t\t\t\tlet result = 30 + ((Math.round(blue) << 2) | (Math.round(green) << 1) | Math.round(red));\n\n\t\t\t\tif (value === 2) {\n\t\t\t\t\tresult += 60;\n\t\t\t\t}\n\n\t\t\t\treturn result;\n\t\t\t},\n\t\t\tenumerable: false,\n\t\t},\n\t\trgbToAnsi: {\n\t\t\tvalue: (red, green, blue) => styles.ansi256ToAnsi(styles.rgbToAnsi256(red, green, blue)),\n\t\t\tenumerable: false,\n\t\t},\n\t\thexToAnsi: {\n\t\t\tvalue: hex => styles.ansi256ToAnsi(styles.hexToAnsi256(hex)),\n\t\t\tenumerable: false,\n\t\t},\n\t});\n\n\treturn styles;\n}\n\nconst ansiStyles = assembleStyles();\n\nexport default ansiStyles;\n","import process from 'node:process';\nimport os from 'node:os';\nimport tty from 'node:tty';\n\n// From: https://github.com/sindresorhus/has-flag/blob/main/index.js\n/// function hasFlag(flag, argv = globalThis.Deno?.args ?? process.argv) {\nfunction hasFlag(flag, argv = globalThis.Deno ? globalThis.Deno.args : process.argv) {\n\tconst prefix = flag.startsWith('-') ? '' : (flag.length === 1 ? '-' : '--');\n\tconst position = argv.indexOf(prefix + flag);\n\tconst terminatorPosition = argv.indexOf('--');\n\treturn position !== -1 && (terminatorPosition === -1 || position < terminatorPosition);\n}\n\nconst {env} = process;\n\nlet flagForceColor;\nif (\n\thasFlag('no-color')\n\t|| hasFlag('no-colors')\n\t|| hasFlag('color=false')\n\t|| hasFlag('color=never')\n) {\n\tflagForceColor = 0;\n} else if (\n\thasFlag('color')\n\t|| hasFlag('colors')\n\t|| hasFlag('color=true')\n\t|| hasFlag('color=always')\n) {\n\tflagForceColor = 1;\n}\n\nfunction envForceColor() {\n\tif ('FORCE_COLOR' in env) {\n\t\tif (env.FORCE_COLOR === 'true') {\n\t\t\treturn 1;\n\t\t}\n\n\t\tif (env.FORCE_COLOR === 'false') {\n\t\t\treturn 0;\n\t\t}\n\n\t\treturn env.FORCE_COLOR.length === 0 ? 1 : Math.min(Number.parseInt(env.FORCE_COLOR, 10), 3);\n\t}\n}\n\nfunction translateLevel(level) {\n\tif (level === 0) {\n\t\treturn false;\n\t}\n\n\treturn {\n\t\tlevel,\n\t\thasBasic: true,\n\t\thas256: level >= 2,\n\t\thas16m: level >= 3,\n\t};\n}\n\nfunction _supportsColor(haveStream, {streamIsTTY, sniffFlags = true} = {}) {\n\tconst noFlagForceColor = envForceColor();\n\tif (noFlagForceColor !== undefined) {\n\t\tflagForceColor = noFlagForceColor;\n\t}\n\n\tconst forceColor = sniffFlags ? flagForceColor : noFlagForceColor;\n\n\tif (forceColor === 0) {\n\t\treturn 0;\n\t}\n\n\tif (sniffFlags) {\n\t\tif (hasFlag('color=16m')\n\t\t\t|| hasFlag('color=full')\n\t\t\t|| hasFlag('color=truecolor')) {\n\t\t\treturn 3;\n\t\t}\n\n\t\tif (hasFlag('color=256')) {\n\t\t\treturn 2;\n\t\t}\n\t}\n\n\t// Check for Azure DevOps pipelines.\n\t// Has to be above the `!streamIsTTY` check.\n\tif ('TF_BUILD' in env && 'AGENT_NAME' in env) {\n\t\treturn 1;\n\t}\n\n\tif (haveStream && !streamIsTTY && forceColor === undefined) {\n\t\treturn 0;\n\t}\n\n\tconst min = forceColor || 0;\n\n\tif (env.TERM === 'dumb') {\n\t\treturn min;\n\t}\n\n\tif (process.platform === 'win32') {\n\t\t// Windows 10 build 10586 is the first Windows release that supports 256 colors.\n\t\t// Windows 10 build 14931 is the first release that supports 16m/TrueColor.\n\t\tconst osRelease = os.release().split('.');\n\t\tif (\n\t\t\tNumber(osRelease[0]) >= 10\n\t\t\t&& Number(osRelease[2]) >= 10_586\n\t\t) {\n\t\t\treturn Number(osRelease[2]) >= 14_931 ? 3 : 2;\n\t\t}\n\n\t\treturn 1;\n\t}\n\n\tif ('CI' in env) {\n\t\tif (['GITHUB_ACTIONS', 'GITEA_ACTIONS', 'CIRCLECI'].some(key => key in env)) {\n\t\t\treturn 3;\n\t\t}\n\n\t\tif (['TRAVIS', 'APPVEYOR', 'GITLAB_CI', 'BUILDKITE', 'DRONE'].some(sign => sign in env) || env.CI_NAME === 'codeship') {\n\t\t\treturn 1;\n\t\t}\n\n\t\treturn min;\n\t}\n\n\tif ('TEAMCITY_VERSION' in env) {\n\t\treturn /^(9\\.(0*[1-9]\\d*)\\.|\\d{2,}\\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0;\n\t}\n\n\tif (env.COLORTERM === 'truecolor') {\n\t\treturn 3;\n\t}\n\n\tif (env.TERM === 'xterm-kitty') {\n\t\treturn 3;\n\t}\n\n\tif (env.TERM === 'xterm-ghostty') {\n\t\treturn 3;\n\t}\n\n\tif (env.TERM === 'wezterm') {\n\t\treturn 3;\n\t}\n\n\tif ('TERM_PROGRAM' in env) {\n\t\tconst version = Number.parseInt((env.TERM_PROGRAM_VERSION || '').split('.')[0], 10);\n\n\t\tswitch (env.TERM_PROGRAM) {\n\t\t\tcase 'iTerm.app': {\n\t\t\t\treturn version >= 3 ? 3 : 2;\n\t\t\t}\n\n\t\t\tcase 'Apple_Terminal': {\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t\t// No default\n\t\t}\n\t}\n\n\tif (/-256(color)?$/i.test(env.TERM)) {\n\t\treturn 2;\n\t}\n\n\tif (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) {\n\t\treturn 1;\n\t}\n\n\tif ('COLORTERM' in env) {\n\t\treturn 1;\n\t}\n\n\treturn min;\n}\n\nexport function createSupportsColor(stream, options = {}) {\n\tconst level = _supportsColor(stream, {\n\t\tstreamIsTTY: stream && stream.isTTY,\n\t\t...options,\n\t});\n\n\treturn translateLevel(level);\n}\n\nconst supportsColor = {\n\tstdout: createSupportsColor({isTTY: tty.isatty(1)}),\n\tstderr: createSupportsColor({isTTY: tty.isatty(2)}),\n};\n\nexport default supportsColor;\n","// TODO: When targeting Node.js 16, use `String.prototype.replaceAll`.\nexport function stringReplaceAll(string, substring, replacer) {\n\tlet index = string.indexOf(substring);\n\tif (index === -1) {\n\t\treturn string;\n\t}\n\n\tconst substringLength = substring.length;\n\tlet endIndex = 0;\n\tlet returnValue = '';\n\tdo {\n\t\treturnValue += string.slice(endIndex, index) + substring + replacer;\n\t\tendIndex = index + substringLength;\n\t\tindex = string.indexOf(substring, endIndex);\n\t} while (index !== -1);\n\n\treturnValue += string.slice(endIndex);\n\treturn returnValue;\n}\n\nexport function stringEncaseCRLFWithFirstIndex(string, prefix, postfix, index) {\n\tlet endIndex = 0;\n\tlet returnValue = '';\n\tdo {\n\t\tconst gotCR = string[index - 1] === '\\r';\n\t\treturnValue += string.slice(endIndex, (gotCR ? index - 1 : index)) + prefix + (gotCR ? '\\r\\n' : '\\n') + postfix;\n\t\tendIndex = index + 1;\n\t\tindex = string.indexOf('\\n', endIndex);\n\t} while (index !== -1);\n\n\treturnValue += string.slice(endIndex);\n\treturn returnValue;\n}\n","import ansiStyles from '#ansi-styles';\nimport supportsColor from '#supports-color';\nimport { // eslint-disable-line import/order\n\tstringReplaceAll,\n\tstringEncaseCRLFWithFirstIndex,\n} from './utilities.js';\n\nconst {stdout: stdoutColor, stderr: stderrColor} = supportsColor;\n\nconst GENERATOR = Symbol('GENERATOR');\nconst STYLER = Symbol('STYLER');\nconst IS_EMPTY = Symbol('IS_EMPTY');\n\n// `supportsColor.level` → `ansiStyles.color[name]` mapping\nconst levelMapping = [\n\t'ansi',\n\t'ansi',\n\t'ansi256',\n\t'ansi16m',\n];\n\nconst styles = Object.create(null);\n\nconst applyOptions = (object, options = {}) => {\n\tif (options.level && !(Number.isInteger(options.level) && options.level >= 0 && options.level <= 3)) {\n\t\tthrow new Error('The `level` option should be an integer from 0 to 3');\n\t}\n\n\t// Detect level if not set manually\n\tconst colorLevel = stdoutColor ? stdoutColor.level : 0;\n\tobject.level = options.level === undefined ? colorLevel : options.level;\n};\n\nexport class Chalk {\n\tconstructor(options) {\n\t\t// eslint-disable-next-line no-constructor-return\n\t\treturn chalkFactory(options);\n\t}\n}\n\nconst chalkFactory = options => {\n\tconst chalk = (...strings) => strings.join(' ');\n\tapplyOptions(chalk, options);\n\n\tObject.setPrototypeOf(chalk, createChalk.prototype);\n\n\treturn chalk;\n};\n\nfunction createChalk(options) {\n\treturn chalkFactory(options);\n}\n\nObject.setPrototypeOf(createChalk.prototype, Function.prototype);\n\nfor (const [styleName, style] of Object.entries(ansiStyles)) {\n\tstyles[styleName] = {\n\t\tget() {\n\t\t\tconst builder = createBuilder(this, createStyler(style.open, style.close, this[STYLER]), this[IS_EMPTY]);\n\t\t\tObject.defineProperty(this, styleName, {value: builder});\n\t\t\treturn builder;\n\t\t},\n\t};\n}\n\nstyles.visible = {\n\tget() {\n\t\tconst builder = createBuilder(this, this[STYLER], true);\n\t\tObject.defineProperty(this, 'visible', {value: builder});\n\t\treturn builder;\n\t},\n};\n\nconst getModelAnsi = (model, level, type, ...arguments_) => {\n\tif (model === 'rgb') {\n\t\tif (level === 'ansi16m') {\n\t\t\treturn ansiStyles[type].ansi16m(...arguments_);\n\t\t}\n\n\t\tif (level === 'ansi256') {\n\t\t\treturn ansiStyles[type].ansi256(ansiStyles.rgbToAnsi256(...arguments_));\n\t\t}\n\n\t\treturn ansiStyles[type].ansi(ansiStyles.rgbToAnsi(...arguments_));\n\t}\n\n\tif (model === 'hex') {\n\t\treturn getModelAnsi('rgb', level, type, ...ansiStyles.hexToRgb(...arguments_));\n\t}\n\n\treturn ansiStyles[type][model](...arguments_);\n};\n\nconst usedModels = ['rgb', 'hex', 'ansi256'];\n\nfor (const model of usedModels) {\n\tstyles[model] = {\n\t\tget() {\n\t\t\tconst {level} = this;\n\t\t\treturn function (...arguments_) {\n\t\t\t\tconst styler = createStyler(getModelAnsi(model, levelMapping[level], 'color', ...arguments_), ansiStyles.color.close, this[STYLER]);\n\t\t\t\treturn createBuilder(this, styler, this[IS_EMPTY]);\n\t\t\t};\n\t\t},\n\t};\n\n\tconst bgModel = 'bg' + model[0].toUpperCase() + model.slice(1);\n\tstyles[bgModel] = {\n\t\tget() {\n\t\t\tconst {level} = this;\n\t\t\treturn function (...arguments_) {\n\t\t\t\tconst styler = createStyler(getModelAnsi(model, levelMapping[level], 'bgColor', ...arguments_), ansiStyles.bgColor.close, this[STYLER]);\n\t\t\t\treturn createBuilder(this, styler, this[IS_EMPTY]);\n\t\t\t};\n\t\t},\n\t};\n}\n\nconst proto = Object.defineProperties(() => {}, {\n\t...styles,\n\tlevel: {\n\t\tenumerable: true,\n\t\tget() {\n\t\t\treturn this[GENERATOR].level;\n\t\t},\n\t\tset(level) {\n\t\t\tthis[GENERATOR].level = level;\n\t\t},\n\t},\n});\n\nconst createStyler = (open, close, parent) => {\n\tlet openAll;\n\tlet closeAll;\n\tif (parent === undefined) {\n\t\topenAll = open;\n\t\tcloseAll = close;\n\t} else {\n\t\topenAll = parent.openAll + open;\n\t\tcloseAll = close + parent.closeAll;\n\t}\n\n\treturn {\n\t\topen,\n\t\tclose,\n\t\topenAll,\n\t\tcloseAll,\n\t\tparent,\n\t};\n};\n\nconst createBuilder = (self, _styler, _isEmpty) => {\n\t// Single argument is hot path, implicit coercion is faster than anything\n\t// eslint-disable-next-line no-implicit-coercion\n\tconst builder = (...arguments_) => applyStyle(builder, (arguments_.length === 1) ? ('' + arguments_[0]) : arguments_.join(' '));\n\n\t// We alter the prototype because we must return a function, but there is\n\t// no way to create a function with a different prototype\n\tObject.setPrototypeOf(builder, proto);\n\n\tbuilder[GENERATOR] = self;\n\tbuilder[STYLER] = _styler;\n\tbuilder[IS_EMPTY] = _isEmpty;\n\n\treturn builder;\n};\n\nconst applyStyle = (self, string) => {\n\tif (self.level <= 0 || !string) {\n\t\treturn self[IS_EMPTY] ? '' : string;\n\t}\n\n\tlet styler = self[STYLER];\n\n\tif (styler === undefined) {\n\t\treturn string;\n\t}\n\n\tconst {openAll, closeAll} = styler;\n\tif (string.includes('\\u001B')) {\n\t\twhile (styler !== undefined) {\n\t\t\t// Replace any instances already present with a re-opening code\n\t\t\t// otherwise only the part of the string until said closing code\n\t\t\t// will be colored, and the rest will simply be 'plain'.\n\t\t\tstring = stringReplaceAll(string, styler.close, styler.open);\n\n\t\t\tstyler = styler.parent;\n\t\t}\n\t}\n\n\t// We can move both next actions out of loop, because remaining actions in loop won't have\n\t// any/visible effect on parts we add here. Close the styling before a linebreak and reopen\n\t// after next line to fix a bleed issue on macOS: https://github.com/chalk/chalk/pull/92\n\tconst lfIndex = string.indexOf('\\n');\n\tif (lfIndex !== -1) {\n\t\tstring = stringEncaseCRLFWithFirstIndex(string, closeAll, openAll, lfIndex);\n\t}\n\n\treturn openAll + string + closeAll;\n};\n\nObject.defineProperties(createChalk.prototype, styles);\n\nconst chalk = createChalk();\nexport const chalkStderr = createChalk({level: stderrColor ? stderrColor.level : 0});\n\nexport {\n\tmodifierNames,\n\tforegroundColorNames,\n\tbackgroundColorNames,\n\tcolorNames,\n\n\t// TODO: Remove these aliases in the next major version\n\tmodifierNames as modifiers,\n\tforegroundColorNames as foregroundColors,\n\tbackgroundColorNames as backgroundColors,\n\tcolorNames as colors,\n} from './vendor/ansi-styles/index.js';\n\nexport {\n\tstdoutColor as supportsColor,\n\tstderrColor as supportsColorStderr,\n};\n\nexport default chalk;\n","/**\r\n * Commands — Standalone utility commands\r\n *\r\n * Ported from maxsim/bin/lib/commands.cjs\r\n */\r\n\r\nimport fs from 'node:fs';\r\nimport path from 'node:path';\r\n\r\nimport chalk from 'chalk';\r\nimport slugify from 'slugify';\r\nimport {\r\n safeReadFile,\r\n loadConfig,\r\n isGitIgnored,\r\n execGit,\r\n normalizePhaseName,\r\n getArchivedPhaseDirs,\r\n generateSlugInternal,\r\n getMilestoneInfo,\r\n resolveModelInternal,\r\n MODEL_PROFILES,\r\n output,\r\n error,\r\n rethrowCliSignals,\r\n findPhaseInternal,\r\n todayISO,\r\n planningPath,\r\n phasesPath,\r\n listSubDirs,\r\n isPlanFile,\r\n isSummaryFile,\r\n debugLog,\r\n} from './core.js';\r\nimport { extractFrontmatter } from './frontmatter.js';\r\nimport type {\r\n TodoItem,\r\n HistoryDigest,\r\n HistoryPhaseDigest,\r\n WebSearchOptions,\r\n WebSearchResult,\r\n ScaffoldOptions,\r\n TimestampFormat,\r\n ModelProfileName,\r\n AgentType,\r\n FrontmatterData,\r\n} from './types.js';\r\n\r\n// ─── Todo frontmatter parsing ────────────────────────────────────────────────\r\n\r\nexport interface TodoFrontmatter {\r\n created: string;\r\n title: string;\r\n area: string;\r\n completed?: string;\r\n}\r\n\r\nexport function parseTodoFrontmatter(content: string): TodoFrontmatter {\r\n const createdMatch = content.match(/^created:\\s*(.+)$/m);\r\n const titleMatch = content.match(/^title:\\s*(.+)$/m);\r\n const areaMatch = content.match(/^area:\\s*(.+)$/m);\r\n const completedMatch = content.match(/^completed:\\s*(.+)$/m);\r\n\r\n return {\r\n created: createdMatch ? createdMatch[1].trim() : 'unknown',\r\n title: titleMatch ? titleMatch[1].trim() : 'Untitled',\r\n area: areaMatch ? areaMatch[1].trim() : 'general',\r\n ...(completedMatch && { completed: completedMatch[1].trim() }),\r\n };\r\n}\r\n\r\n// ─── Slug generation ────────────────────────────────────────────────────────\r\n\r\nexport function cmdGenerateSlug(text: string | undefined, raw: boolean): void {\r\n if (!text) {\r\n error('text required for slug generation');\r\n }\r\n\r\n const slug = slugify(text, { lower: true, strict: true });\r\n\r\n const result = { slug };\r\n output(result, raw, slug);\r\n}\r\n\r\n// ─── Timestamp ──────────────────────────────────────────────────────────────\r\n\r\nexport function cmdCurrentTimestamp(format: TimestampFormat, raw: boolean): void {\r\n const now = new Date();\r\n let result: string;\r\n\r\n switch (format) {\r\n case 'date':\r\n result = todayISO();\r\n break;\r\n case 'filename':\r\n result = now.toISOString().replace(/:/g, '-').replace(/\\..+/, '');\r\n break;\r\n case 'full':\r\n default:\r\n result = now.toISOString();\r\n break;\r\n }\r\n\r\n output({ timestamp: result }, raw, result);\r\n}\r\n\r\n// ─── Todos ──────────────────────────────────────────────────────────────────\r\n\r\nexport function cmdListTodos(cwd: string, area: string | undefined, raw: boolean): void {\r\n const pendingDir = planningPath(cwd, 'todos', 'pending');\r\n\r\n let count = 0;\r\n const todos: TodoItem[] = [];\r\n\r\n try {\r\n const files = fs.readdirSync(pendingDir).filter(f => f.endsWith('.md'));\r\n\r\n for (const file of files) {\r\n try {\r\n const content = fs.readFileSync(path.join(pendingDir, file), 'utf-8');\r\n const fm = parseTodoFrontmatter(content);\r\n\r\n // Apply area filter if specified\r\n if (area && fm.area !== area) continue;\r\n\r\n count++;\r\n todos.push({\r\n file,\r\n created: fm.created,\r\n title: fm.title,\r\n area: fm.area,\r\n path: path.join('.planning', 'todos', 'pending', file),\r\n });\r\n } catch (e) {\r\n /* optional op, ignore */\r\n debugLog(e);\r\n }\r\n }\r\n } catch (e) {\r\n /* optional op, ignore */\r\n debugLog(e);\r\n }\r\n\r\n const result = { count, todos };\r\n output(result, raw, count.toString());\r\n}\r\n\r\n// ─── Path verification ──────────────────────────────────────────────────────\r\n\r\nexport function cmdVerifyPathExists(cwd: string, targetPath: string | undefined, raw: boolean): void {\r\n if (!targetPath) {\r\n error('path required for verification');\r\n }\r\n\r\n const fullPath = path.isAbsolute(targetPath) ? targetPath : path.join(cwd, targetPath);\r\n\r\n try {\r\n const stats = fs.statSync(fullPath);\r\n const type = stats.isDirectory() ? 'directory' : stats.isFile() ? 'file' : 'other';\r\n const result = { exists: true, type };\r\n output(result, raw, 'true');\r\n } catch (e: unknown) {\r\n rethrowCliSignals(e);\r\n const result = { exists: false, type: null };\r\n output(result, raw, 'false');\r\n }\r\n}\r\n\r\n// ─── History digest ─────────────────────────────────────────────────────────\r\n\r\nexport function cmdHistoryDigest(cwd: string, raw: boolean): void {\r\n const phasesDir = phasesPath(cwd);\r\n const digest: {\r\n phases: Record; affects: Set; patterns: Set }>;\r\n decisions: Array<{ phase: string; decision: string }>;\r\n tech_stack: Set | string[];\r\n } = { phases: {}, decisions: [], tech_stack: new Set() };\r\n\r\n // Collect all phase directories: archived + current\r\n const allPhaseDirs: Array<{ name: string; fullPath: string; milestone: string | null }> = [];\r\n\r\n // Add archived phases first (oldest milestones first)\r\n const archived = getArchivedPhaseDirs(cwd);\r\n for (const a of archived) {\r\n allPhaseDirs.push({ name: a.name, fullPath: a.fullPath, milestone: a.milestone });\r\n }\r\n\r\n // Add current phases\r\n if (fs.existsSync(phasesDir)) {\r\n try {\r\n const currentDirs = listSubDirs(phasesDir, true);\r\n for (const dir of currentDirs) {\r\n allPhaseDirs.push({ name: dir, fullPath: path.join(phasesDir, dir), milestone: null });\r\n }\r\n } catch (e) {\r\n /* optional op, ignore */\r\n debugLog(e);\r\n }\r\n }\r\n\r\n if (allPhaseDirs.length === 0) {\r\n const emptyDigest: HistoryDigest = { phases: {}, decisions: [], tech_stack: [] };\r\n output(emptyDigest, raw);\r\n return;\r\n }\r\n\r\n try {\r\n for (const { name: dir, fullPath: dirPath } of allPhaseDirs) {\r\n const summaries = fs.readdirSync(dirPath).filter(f => isSummaryFile(f));\r\n\r\n for (const summary of summaries) {\r\n try {\r\n const content = fs.readFileSync(path.join(dirPath, summary), 'utf-8');\r\n const fm = extractFrontmatter(content);\r\n\r\n const phaseNum = (fm.phase as string) || dir.split('-')[0];\r\n\r\n if (!digest.phases[phaseNum]) {\r\n digest.phases[phaseNum] = {\r\n name: (fm.name as string) || dir.split('-').slice(1).join(' ') || 'Unknown',\r\n provides: new Set(),\r\n affects: new Set(),\r\n patterns: new Set(),\r\n };\r\n }\r\n\r\n // Merge provides\r\n const depGraph = fm['dependency-graph'] as FrontmatterData | undefined;\r\n if (depGraph && depGraph.provides) {\r\n (depGraph.provides as string[]).forEach(p => digest.phases[phaseNum].provides.add(p));\r\n } else if (fm.provides) {\r\n (fm.provides as string[]).forEach(p => digest.phases[phaseNum].provides.add(p));\r\n }\r\n\r\n // Merge affects\r\n if (depGraph && depGraph.affects) {\r\n (depGraph.affects as string[]).forEach(a => digest.phases[phaseNum].affects.add(a));\r\n }\r\n\r\n // Merge patterns\r\n if (fm['patterns-established']) {\r\n (fm['patterns-established'] as string[]).forEach(p => digest.phases[phaseNum].patterns.add(p));\r\n }\r\n\r\n // Merge decisions\r\n if (fm['key-decisions']) {\r\n (fm['key-decisions'] as string[]).forEach(d => {\r\n digest.decisions.push({ phase: phaseNum, decision: d });\r\n });\r\n }\r\n\r\n // Merge tech stack\r\n const techStack = fm['tech-stack'] as FrontmatterData | undefined;\r\n if (techStack && techStack.added) {\r\n (techStack.added as Array).forEach(t =>\r\n (digest.tech_stack as Set).add(typeof t === 'string' ? t : (t as FrontmatterData).name as string)\r\n );\r\n }\r\n } catch (e) {\r\n /* optional op, ignore */\r\n debugLog(e);\r\n }\r\n }\r\n }\r\n\r\n // Convert Sets to Arrays for JSON output\r\n const outputDigest: HistoryDigest = {\r\n phases: {},\r\n decisions: digest.decisions,\r\n tech_stack: [...(digest.tech_stack as Set)],\r\n };\r\n for (const [p, data] of Object.entries(digest.phases)) {\r\n outputDigest.phases[p] = {\r\n name: data.name,\r\n provides: [...data.provides],\r\n affects: [...data.affects],\r\n patterns: [...data.patterns],\r\n };\r\n }\r\n\r\n output(outputDigest, raw);\r\n } catch (e: unknown) {\r\n rethrowCliSignals(e);\r\n error('Failed to generate history digest: ' + (e as Error).message);\r\n }\r\n}\r\n\r\n// ─── Model resolution ───────────────────────────────────────────────────────\r\n\r\nexport function cmdResolveModel(cwd: string, agentType: string | undefined, raw: boolean): void {\r\n if (!agentType) {\r\n error('agent-type required');\r\n }\r\n\r\n const config = loadConfig(cwd);\r\n const profile: ModelProfileName = config.model_profile || 'balanced';\r\n\r\n const agentModels = MODEL_PROFILES[agentType as AgentType];\r\n if (!agentModels) {\r\n const result = { model: 'sonnet', profile, unknown_agent: true };\r\n output(result, raw, 'sonnet');\r\n return;\r\n }\r\n\r\n const resolved = agentModels[profile] || agentModels['balanced'] || 'sonnet';\r\n const model = resolved === 'opus' ? 'inherit' : resolved;\r\n const result = { model, profile };\r\n output(result, raw, model);\r\n}\r\n\r\n// ─── Commit ─────────────────────────────────────────────────────────────────\r\n\r\nexport async function cmdCommit(\r\n cwd: string,\r\n message: string | undefined,\r\n files: string[],\r\n raw: boolean,\r\n amend: boolean,\r\n): Promise {\r\n if (!message && !amend) {\r\n error('commit message required');\r\n }\r\n\r\n const config = loadConfig(cwd);\r\n\r\n // Check commit_docs config\r\n if (!config.commit_docs) {\r\n const result = { committed: false, hash: null, reason: 'skipped_commit_docs_false' };\r\n output(result, raw, 'skipped');\r\n return;\r\n }\r\n\r\n // Check if .planning is gitignored\r\n if (await isGitIgnored(cwd, '.planning')) {\r\n const result = { committed: false, hash: null, reason: 'skipped_gitignored' };\r\n output(result, raw, 'skipped');\r\n return;\r\n }\r\n\r\n // Stage files\r\n const filesToStage = files && files.length > 0 ? files : ['.planning/'];\r\n for (const file of filesToStage) {\r\n await execGit(cwd, ['add', file]);\r\n }\r\n\r\n // Commit\r\n const commitArgs = amend ? ['commit', '--amend', '--no-edit'] : ['commit', '-m', message!];\r\n const commitResult = await execGit(cwd, commitArgs);\r\n if (commitResult.exitCode !== 0) {\r\n if (commitResult.stdout.includes('nothing to commit') || commitResult.stderr.includes('nothing to commit')) {\r\n const result = { committed: false, hash: null, reason: 'nothing_to_commit' };\r\n output(result, raw, 'nothing');\r\n return;\r\n }\r\n const result = { committed: false, hash: null, reason: 'nothing_to_commit', error: commitResult.stderr };\r\n output(result, raw, 'nothing');\r\n return;\r\n }\r\n\r\n // Get short hash\r\n const hashResult = await execGit(cwd, ['rev-parse', '--short', 'HEAD']);\r\n const hash = hashResult.exitCode === 0 ? hashResult.stdout : null;\r\n const result = { committed: true, hash, reason: 'committed' };\r\n output(result, raw, hash || 'committed');\r\n}\r\n\r\n// ─── Summary extract ────────────────────────────────────────────────────────\r\n\r\nexport function cmdSummaryExtract(\r\n cwd: string,\r\n summaryPath: string | undefined,\r\n fields: string[] | null,\r\n raw: boolean,\r\n): void {\r\n if (!summaryPath) {\r\n error('summary-path required for summary-extract');\r\n }\r\n\r\n const fullPath = path.join(cwd, summaryPath);\r\n\r\n if (!fs.existsSync(fullPath)) {\r\n output({ error: 'File not found', path: summaryPath }, raw);\r\n return;\r\n }\r\n\r\n const content = fs.readFileSync(fullPath, 'utf-8');\r\n const fm = extractFrontmatter(content);\r\n\r\n // Parse key-decisions into structured format\r\n const parseDecisions = (decisionsList: unknown): Array<{ summary: string; rationale: string | null }> => {\r\n if (!decisionsList || !Array.isArray(decisionsList)) return [];\r\n return decisionsList.map((d: string) => {\r\n const colonIdx = d.indexOf(':');\r\n if (colonIdx > 0) {\r\n return {\r\n summary: d.substring(0, colonIdx).trim(),\r\n rationale: d.substring(colonIdx + 1).trim(),\r\n };\r\n }\r\n return { summary: d, rationale: null };\r\n });\r\n };\r\n\r\n const techStack = fm['tech-stack'] as FrontmatterData | undefined;\r\n\r\n // Build full result\r\n const fullResult: Record = {\r\n path: summaryPath,\r\n one_liner: fm['one-liner'] || null,\r\n key_files: fm['key-files'] || [],\r\n tech_added: (techStack && techStack.added) || [],\r\n patterns: fm['patterns-established'] || [],\r\n decisions: parseDecisions(fm['key-decisions']),\r\n requirements_completed: fm['requirements-completed'] || [],\r\n };\r\n\r\n // If fields specified, filter to only those fields\r\n if (fields && fields.length > 0) {\r\n const filtered: Record = { path: summaryPath };\r\n for (const field of fields) {\r\n if (fullResult[field] !== undefined) {\r\n filtered[field] = fullResult[field];\r\n }\r\n }\r\n output(filtered, raw);\r\n return;\r\n }\r\n\r\n output(fullResult, raw);\r\n}\r\n\r\n// ─── Web search ─────────────────────────────────────────────────────────────\r\n\r\nexport async function cmdWebsearch(\r\n query: string | undefined,\r\n options: WebSearchOptions,\r\n raw: boolean,\r\n): Promise {\r\n const apiKey = process.env.BRAVE_API_KEY;\r\n\r\n if (!apiKey) {\r\n output({ available: false, reason: 'BRAVE_API_KEY not set' }, raw, '');\r\n return;\r\n }\r\n\r\n if (!query) {\r\n output({ available: false, error: 'Query required' }, raw, '');\r\n return;\r\n }\r\n\r\n const params = new URLSearchParams({\r\n q: query,\r\n count: String(options.limit || 10),\r\n country: 'us',\r\n search_lang: 'en',\r\n text_decorations: 'false',\r\n });\r\n\r\n if (options.freshness) {\r\n params.set('freshness', options.freshness);\r\n }\r\n\r\n try {\r\n const response = await fetch(\r\n `https://api.search.brave.com/res/v1/web/search?${params}`,\r\n {\r\n headers: {\r\n Accept: 'application/json',\r\n 'X-Subscription-Token': apiKey,\r\n },\r\n },\r\n );\r\n\r\n if (!response.ok) {\r\n output({ available: false, error: `API error: ${response.status}` }, raw, '');\r\n return;\r\n }\r\n\r\n const data = (await response.json()) as { web?: { results?: Array<{ title: string; url: string; description: string; age?: string }> } };\r\n\r\n const results: WebSearchResult[] = (data.web?.results || []).map(r => ({\r\n title: r.title,\r\n url: r.url,\r\n description: r.description,\r\n age: r.age || null,\r\n }));\r\n\r\n output(\r\n {\r\n available: true,\r\n query,\r\n count: results.length,\r\n results,\r\n },\r\n raw,\r\n results.map(r => `${r.title}\\n${r.url}\\n${r.description}`).join('\\n\\n'),\r\n );\r\n } catch (err: unknown) {\r\n rethrowCliSignals(err);\r\n output({ available: false, error: (err as Error).message }, raw, '');\r\n }\r\n}\r\n\r\n// ─── Progress render ────────────────────────────────────────────────────────\r\n\r\nexport function cmdProgressRender(cwd: string, format: string, raw: boolean): void {\r\n const phasesDir = phasesPath(cwd);\r\n const milestone = getMilestoneInfo(cwd);\r\n\r\n const phases: Array<{ number: string; name: string; plans: number; summaries: number; status: string }> = [];\r\n let totalPlans = 0;\r\n let totalSummaries = 0;\r\n\r\n try {\r\n const entries = fs.readdirSync(phasesDir, { withFileTypes: true });\r\n const dirs = entries\r\n .filter(e => e.isDirectory())\r\n .map(e => e.name)\r\n .sort((a, b) => {\r\n const aNum = parseFloat(a.match(/^(\\d+(?:\\.\\d+)?)/)?.[1] || '0');\r\n const bNum = parseFloat(b.match(/^(\\d+(?:\\.\\d+)?)/)?.[1] || '0');\r\n return aNum - bNum;\r\n });\r\n\r\n for (const dir of dirs) {\r\n const dm = dir.match(/^(\\d+(?:\\.\\d+)?)-?(.*)/);\r\n const phaseNum = dm ? dm[1] : dir;\r\n const phaseName = dm && dm[2] ? dm[2].replace(/-/g, ' ') : '';\r\n const phaseFiles = fs.readdirSync(path.join(phasesDir, dir));\r\n const planCount = phaseFiles.filter(f => isPlanFile(f)).length;\r\n const summaryCount = phaseFiles.filter(f => isSummaryFile(f)).length;\r\n\r\n totalPlans += planCount;\r\n totalSummaries += summaryCount;\r\n\r\n let status: string;\r\n if (planCount === 0) status = 'Pending';\r\n else if (summaryCount >= planCount) status = 'Complete';\r\n else if (summaryCount > 0) status = 'In Progress';\r\n else status = 'Planned';\r\n\r\n phases.push({ number: phaseNum, name: phaseName, plans: planCount, summaries: summaryCount, status });\r\n }\r\n } catch (e) {\r\n /* optional op, ignore */\r\n debugLog(e);\r\n }\r\n\r\n const percent = totalPlans > 0 ? Math.min(100, Math.round((totalSummaries / totalPlans) * 100)) : 0;\r\n\r\n if (format === 'table') {\r\n const barWidth = 10;\r\n const filled = Math.round((percent / 100) * barWidth);\r\n const bar = '\\u2588'.repeat(filled) + '\\u2591'.repeat(barWidth - filled);\r\n let out = `# ${milestone.version} ${milestone.name}\\n\\n`;\r\n out += `**Progress:** [${bar}] ${totalSummaries}/${totalPlans} plans (${percent}%)\\n\\n`;\r\n out += `| Phase | Name | Plans | Status |\\n`;\r\n out += `|-------|------|-------|--------|\\n`;\r\n for (const p of phases) {\r\n out += `| ${p.number} | ${p.name} | ${p.summaries}/${p.plans} | ${p.status} |\\n`;\r\n }\r\n output({ rendered: out }, raw, out);\r\n } else if (format === 'bar') {\r\n const barWidth = 20;\r\n const filled = Math.round((percent / 100) * barWidth);\r\n const bar = '\\u2588'.repeat(filled) + '\\u2591'.repeat(barWidth - filled);\r\n const text = `[${bar}] ${totalSummaries}/${totalPlans} plans (${percent}%)`;\r\n output({ bar: text, percent, completed: totalSummaries, total: totalPlans }, raw, text);\r\n } else if (format === 'phase-bars') {\r\n const doneCount = phases.filter(p => p.status === 'Complete').length;\r\n const inProgressCount = phases.filter(p => p.status === 'In Progress').length;\r\n const totalCount = phases.length;\r\n const header = chalk.bold(\r\n `Milestone: ${milestone.name} — ${doneCount}/${totalCount} phases complete (${percent}%)`\r\n );\r\n const lines: string[] = [header, ''];\r\n\r\n for (const p of phases) {\r\n const pPercent =\r\n p.plans > 0 ? Math.min(100, Math.round((p.summaries / p.plans) * 100)) : 0;\r\n const barWidth = 10;\r\n const filled = Math.round((pPercent / 100) * barWidth);\r\n const bar = '\\u2588'.repeat(filled) + '\\u2591'.repeat(barWidth - filled);\r\n const phaseLabel = `Phase ${p.number.padStart(2, '0')}`;\r\n const statusLabel =\r\n p.status === 'Complete'\r\n ? 'DONE'\r\n : p.status === 'In Progress'\r\n ? 'IN PROGRESS'\r\n : 'PLANNED';\r\n\r\n let line = `${phaseLabel} [${bar}] ${String(pPercent).padStart(3, ' ')}% — ${statusLabel}`;\r\n if (p.status === 'Complete') line = chalk.green(line);\r\n else if (p.status === 'In Progress') line = chalk.yellow(line);\r\n else line = chalk.dim(line);\r\n\r\n lines.push(line);\r\n }\r\n\r\n const rendered = lines.join('\\n');\r\n output({ rendered, done: doneCount, in_progress: inProgressCount, total: totalCount, percent }, raw, rendered);\r\n } else {\r\n output({\r\n milestone_version: milestone.version,\r\n milestone_name: milestone.name,\r\n phases,\r\n total_plans: totalPlans,\r\n total_summaries: totalSummaries,\r\n percent,\r\n }, raw);\r\n }\r\n}\r\n\r\n// ─── Todo complete ──────────────────────────────────────────────────────────\r\n\r\nexport function cmdTodoComplete(cwd: string, filename: string | undefined, raw: boolean): void {\r\n if (!filename) {\r\n error('filename required for todo complete');\r\n }\r\n\r\n const pendingDir = planningPath(cwd, 'todos', 'pending');\r\n const completedDir = planningPath(cwd, 'todos', 'completed');\r\n const sourcePath = path.join(pendingDir, filename);\r\n\r\n if (!fs.existsSync(sourcePath)) {\r\n error(`Todo not found: ${filename}`);\r\n }\r\n\r\n // Ensure completed directory exists\r\n fs.mkdirSync(completedDir, { recursive: true });\r\n\r\n // Read, add completion timestamp, move\r\n let content = fs.readFileSync(sourcePath, 'utf-8');\r\n const today = todayISO();\r\n content = `completed: ${today}\\n` + content;\r\n\r\n fs.writeFileSync(path.join(completedDir, filename), content, 'utf-8');\r\n fs.unlinkSync(sourcePath);\r\n\r\n output({ completed: true, file: filename, date: today }, raw, 'completed');\r\n}\r\n\r\n// ─── Scaffold ───────────────────────────────────────────────────────────────\r\n\r\nexport function cmdScaffold(\r\n cwd: string,\r\n type: string | undefined,\r\n options: ScaffoldOptions,\r\n raw: boolean,\r\n): void {\r\n const { phase, name } = options;\r\n const padded = phase ? normalizePhaseName(phase) : '00';\r\n const today = todayISO();\r\n\r\n // Find phase directory\r\n const phaseInfo = phase ? findPhaseInternal(cwd, phase) : null;\r\n const phaseDir = phaseInfo ? path.join(cwd, phaseInfo.directory) : null;\r\n\r\n if (phase && !phaseDir && type !== 'phase-dir') {\r\n error(`Phase ${phase} directory not found`);\r\n }\r\n\r\n let filePath: string;\r\n let content: string;\r\n\r\n switch (type) {\r\n case 'context': {\r\n filePath = path.join(phaseDir!, `${padded}-CONTEXT.md`);\r\n content = `---\\nphase: \"${padded}\"\\nname: \"${name || phaseInfo?.phase_name || 'Unnamed'}\"\\ncreated: ${today}\\n---\\n\\n# Phase ${phase}: ${name || phaseInfo?.phase_name || 'Unnamed'} — Context\\n\\n## Decisions\\n\\n_Decisions will be captured during /maxsim:discuss-phase ${phase}_\\n\\n## Discretion Areas\\n\\n_Areas where the executor can use judgment_\\n\\n## Deferred Ideas\\n\\n_Ideas to consider later_\\n`;\r\n break;\r\n }\r\n case 'uat': {\r\n filePath = path.join(phaseDir!, `${padded}-UAT.md`);\r\n content = `---\\nphase: \"${padded}\"\\nname: \"${name || phaseInfo?.phase_name || 'Unnamed'}\"\\ncreated: ${today}\\nstatus: pending\\n---\\n\\n# Phase ${phase}: ${name || phaseInfo?.phase_name || 'Unnamed'} — User Acceptance Testing\\n\\n## Test Results\\n\\n| # | Test | Status | Notes |\\n|---|------|--------|-------|\\n\\n## Summary\\n\\n_Pending UAT_\\n`;\r\n break;\r\n }\r\n case 'verification': {\r\n filePath = path.join(phaseDir!, `${padded}-VERIFICATION.md`);\r\n content = `---\\nphase: \"${padded}\"\\nname: \"${name || phaseInfo?.phase_name || 'Unnamed'}\"\\ncreated: ${today}\\nstatus: pending\\n---\\n\\n# Phase ${phase}: ${name || phaseInfo?.phase_name || 'Unnamed'} — Verification\\n\\n## Goal-Backward Verification\\n\\n**Phase Goal:** [From ROADMAP.md]\\n\\n## Checks\\n\\n| # | Requirement | Status | Evidence |\\n|---|------------|--------|----------|\\n\\n## Result\\n\\n_Pending verification_\\n`;\r\n break;\r\n }\r\n case 'phase-dir': {\r\n if (!phase || !name) {\r\n error('phase and name required for phase-dir scaffold');\r\n }\r\n const slug = generateSlugInternal(name);\r\n const dirName = `${padded}-${slug}`;\r\n const phasesParent = phasesPath(cwd);\r\n fs.mkdirSync(phasesParent, { recursive: true });\r\n const dirPath = path.join(phasesParent, dirName);\r\n fs.mkdirSync(dirPath, { recursive: true });\r\n output({ created: true, directory: `.planning/phases/${dirName}`, path: dirPath }, raw, dirPath);\r\n return;\r\n }\r\n default:\r\n error(`Unknown scaffold type: ${type}. Available: context, uat, verification, phase-dir`);\r\n return; // unreachable but satisfies TS\r\n }\r\n\r\n if (fs.existsSync(filePath)) {\r\n output({ created: false, reason: 'already_exists', path: filePath }, raw, 'exists');\r\n return;\r\n }\r\n\r\n fs.writeFileSync(filePath, content, 'utf-8');\r\n const relPath = path.relative(cwd, filePath);\r\n output({ created: true, path: relPath }, raw, relPath);\r\n}\r\n","/**\r\n * Verify — Verification suite, consistency, and health validation\r\n *\r\n * Ported from maxsim/bin/lib/verify.cjs\r\n */\r\n\r\nimport fs from 'node:fs';\r\nimport path from 'node:path';\r\n\r\nimport {\r\n safeReadFile,\r\n normalizePhaseName,\r\n getPhasePattern,\r\n execGit,\r\n findPhaseInternal,\r\n getMilestoneInfo,\r\n output,\r\n error,\r\n isPlanFile,\r\n isSummaryFile,\r\n planId,\r\n summaryId,\r\n roadmapPath as roadmapPathUtil,\r\n phasesPath,\r\n planningPath,\r\n statePath as statePathUtil,\r\n configPath as configPathUtil,\r\n listSubDirs,\r\n debugLog,\r\n todayISO,\r\n} from './core.js';\r\nimport { extractFrontmatter, parseMustHavesBlock } from './frontmatter.js';\r\nimport type { FrontmatterData } from './types.js';\r\n\r\n// ─── Interfaces ──────────────────────────────────────────────────────────────\r\n\r\nexport interface ValidationError {\r\n code?: string;\r\n message: string;\r\n fix?: string;\r\n repairable?: boolean;\r\n}\r\n\r\nexport interface ValidationWarning {\r\n code?: string;\r\n message: string;\r\n fix?: string;\r\n repairable?: boolean;\r\n}\r\n\r\nexport interface TaskInfo {\r\n name: string;\r\n hasFiles: boolean;\r\n hasAction: boolean;\r\n hasVerify: boolean;\r\n hasDone: boolean;\r\n}\r\n\r\nexport interface VerificationResult {\r\n passed: boolean;\r\n checks: {\r\n summary_exists: boolean;\r\n files_created: { checked: number; found: number; missing: string[] };\r\n commits_exist: boolean;\r\n self_check: 'not_found' | 'passed' | 'failed';\r\n };\r\n errors: string[];\r\n}\r\n\r\nexport interface PlanStructureResult {\r\n valid: boolean;\r\n errors: string[];\r\n warnings: string[];\r\n task_count: number;\r\n tasks: TaskInfo[];\r\n frontmatter_fields: string[];\r\n}\r\n\r\nexport interface PhaseCompletenessResult {\r\n complete: boolean;\r\n phase: string;\r\n plan_count: number;\r\n summary_count: number;\r\n incomplete_plans: string[];\r\n orphan_summaries: string[];\r\n errors: string[];\r\n warnings: string[];\r\n}\r\n\r\nexport interface ReferencesResult {\r\n valid: boolean;\r\n found: number;\r\n missing: string[];\r\n total: number;\r\n}\r\n\r\nexport interface CommitsResult {\r\n all_valid: boolean;\r\n valid: string[];\r\n invalid: string[];\r\n total: number;\r\n}\r\n\r\nexport interface ArtifactCheck {\r\n path: string;\r\n exists: boolean;\r\n issues: string[];\r\n passed: boolean;\r\n}\r\n\r\nexport interface ArtifactsResult {\r\n all_passed: boolean;\r\n passed: number;\r\n total: number;\r\n artifacts: ArtifactCheck[];\r\n}\r\n\r\nexport interface KeyLinkCheck {\r\n from: string;\r\n to: string;\r\n via: string;\r\n verified: boolean;\r\n detail: string;\r\n}\r\n\r\nexport interface KeyLinksResult {\r\n all_verified: boolean;\r\n verified: number;\r\n total: number;\r\n links: KeyLinkCheck[];\r\n}\r\n\r\nexport interface ConsistencyResult {\r\n passed: boolean;\r\n errors: string[];\r\n warnings: string[];\r\n warning_count: number;\r\n}\r\n\r\nexport interface HealthResult {\r\n status: 'healthy' | 'degraded' | 'broken';\r\n errors: ValidationError[];\r\n warnings: ValidationWarning[];\r\n info: ValidationError[];\r\n repairable_count: number;\r\n repairs_performed?: RepairAction[];\r\n}\r\n\r\ninterface RepairAction {\r\n action: string;\r\n success: boolean;\r\n path?: string;\r\n error?: string;\r\n}\r\n\r\ninterface HealthOptions {\r\n repair?: boolean;\r\n}\r\n\r\n// ─── Verify Summary ──────────────────────────────────────────────────────────\r\n\r\nexport async function cmdVerifySummary(\r\n cwd: string,\r\n summaryPath: string | null,\r\n checkFileCount: number | null,\r\n raw: boolean,\r\n): Promise {\r\n if (!summaryPath) {\r\n error('summary-path required');\r\n }\r\n\r\n const fullPath = path.join(cwd, summaryPath);\r\n const checkCount = checkFileCount || 2;\r\n\r\n if (!fs.existsSync(fullPath)) {\r\n const result: VerificationResult = {\r\n passed: false,\r\n checks: {\r\n summary_exists: false,\r\n files_created: { checked: 0, found: 0, missing: [] },\r\n commits_exist: false,\r\n self_check: 'not_found',\r\n },\r\n errors: ['SUMMARY.md not found'],\r\n };\r\n output(result, raw, 'failed');\r\n return;\r\n }\r\n\r\n const content = fs.readFileSync(fullPath, 'utf-8');\r\n const errors: string[] = [];\r\n\r\n // Spot-check files mentioned in summary\r\n const mentionedFiles = new Set();\r\n const patterns: RegExp[] = [\r\n /`([^`]+\\.[a-zA-Z]+)`/g,\r\n /(?:Created|Modified|Added|Updated|Edited):\\s*`?([^\\s`]+\\.[a-zA-Z]+)`?/gi,\r\n ];\r\n\r\n for (const pattern of patterns) {\r\n let m: RegExpExecArray | null;\r\n while ((m = pattern.exec(content)) !== null) {\r\n const filePath = m[1];\r\n if (filePath && !filePath.startsWith('http') && filePath.includes('/')) {\r\n mentionedFiles.add(filePath);\r\n }\r\n }\r\n }\r\n\r\n const filesToCheck = Array.from(mentionedFiles).slice(0, checkCount);\r\n const missing: string[] = [];\r\n for (const file of filesToCheck) {\r\n if (!fs.existsSync(path.join(cwd, file))) {\r\n missing.push(file);\r\n }\r\n }\r\n\r\n // Check commits exist\r\n const commitHashPattern = /\\b[0-9a-f]{7,40}\\b/g;\r\n const hashes = content.match(commitHashPattern) || [];\r\n let commitsExist = false;\r\n if (hashes.length > 0) {\r\n for (const hash of hashes.slice(0, 3)) {\r\n const result = await execGit(cwd, ['cat-file', '-t', hash]);\r\n if (result.exitCode === 0 && result.stdout === 'commit') {\r\n commitsExist = true;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n // Self-check section\r\n let selfCheck: 'not_found' | 'passed' | 'failed' = 'not_found';\r\n const selfCheckPattern = /##\\s*(?:Self[- ]?Check|Verification|Quality Check)/i;\r\n if (selfCheckPattern.test(content)) {\r\n const passPattern = /(?:all\\s+)?(?:pass|✓|✅|complete|succeeded)/i;\r\n const failPattern = /(?:fail|✗|❌|incomplete|blocked)/i;\r\n const checkSection = content.slice(content.search(selfCheckPattern));\r\n if (failPattern.test(checkSection)) {\r\n selfCheck = 'failed';\r\n } else if (passPattern.test(checkSection)) {\r\n selfCheck = 'passed';\r\n }\r\n }\r\n\r\n if (missing.length > 0) errors.push('Missing files: ' + missing.join(', '));\r\n if (!commitsExist && hashes.length > 0) errors.push('Referenced commit hashes not found in git history');\r\n if (selfCheck === 'failed') errors.push('Self-check section indicates failure');\r\n\r\n const checks = {\r\n summary_exists: true,\r\n files_created: { checked: filesToCheck.length, found: filesToCheck.length - missing.length, missing },\r\n commits_exist: commitsExist,\r\n self_check: selfCheck,\r\n };\r\n\r\n const passed = missing.length === 0 && selfCheck !== 'failed';\r\n const result: VerificationResult = { passed, checks, errors };\r\n output(result, raw, passed ? 'passed' : 'failed');\r\n}\r\n\r\n// ─── Verify Plan Structure ───────────────────────────────────────────────────\r\n\r\nexport function cmdVerifyPlanStructure(cwd: string, filePath: string | null, raw: boolean): void {\r\n if (!filePath) {\r\n error('file path required');\r\n }\r\n const fullPath = path.isAbsolute(filePath) ? filePath : path.join(cwd, filePath);\r\n const content = safeReadFile(fullPath);\r\n if (!content) {\r\n output({ error: 'File not found', path: filePath }, raw);\r\n return;\r\n }\r\n\r\n const fm = extractFrontmatter(content);\r\n const errors: string[] = [];\r\n const warnings: string[] = [];\r\n\r\n const required = ['phase', 'plan', 'type', 'wave', 'depends_on', 'files_modified', 'autonomous', 'must_haves'];\r\n for (const field of required) {\r\n if (fm[field] === undefined) errors.push(`Missing required frontmatter field: ${field}`);\r\n }\r\n\r\n const taskPattern = /]*>([\\s\\S]*?)<\\/task>/g;\r\n const tasks: TaskInfo[] = [];\r\n let taskMatch: RegExpExecArray | null;\r\n while ((taskMatch = taskPattern.exec(content)) !== null) {\r\n const taskContent = taskMatch[1];\r\n const nameMatch = taskContent.match(/([\\s\\S]*?)<\\/name>/);\r\n const taskName = nameMatch ? nameMatch[1].trim() : 'unnamed';\r\n const hasFiles = //.test(taskContent);\r\n const hasAction = //.test(taskContent);\r\n const hasVerify = //.test(taskContent);\r\n const hasDone = //.test(taskContent);\r\n\r\n if (!nameMatch) errors.push('Task missing element');\r\n if (!hasAction) errors.push(`Task '${taskName}' missing `);\r\n if (!hasVerify) warnings.push(`Task '${taskName}' missing `);\r\n if (!hasDone) warnings.push(`Task '${taskName}' missing `);\r\n if (!hasFiles) warnings.push(`Task '${taskName}' missing `);\r\n\r\n tasks.push({ name: taskName, hasFiles, hasAction, hasVerify, hasDone });\r\n }\r\n\r\n if (tasks.length === 0) warnings.push('No elements found');\r\n\r\n if (fm.wave && parseInt(String(fm.wave)) > 1 && (!fm.depends_on || (Array.isArray(fm.depends_on) && fm.depends_on.length === 0))) {\r\n warnings.push('Wave > 1 but depends_on is empty');\r\n }\r\n\r\n const hasCheckpoints = / isPlanFile(f));\r\n const summaries = files.filter(f => isSummaryFile(f));\r\n\r\n const planIds = new Set(plans.map(p => planId(p)));\r\n const summaryIds = new Set(summaries.map(s => summaryId(s)));\r\n\r\n const incompletePlans = [...planIds].filter(id => !summaryIds.has(id));\r\n if (incompletePlans.length > 0) {\r\n errors.push(`Plans without summaries: ${incompletePlans.join(', ')}`);\r\n }\r\n\r\n const orphanSummaries = [...summaryIds].filter(id => !planIds.has(id));\r\n if (orphanSummaries.length > 0) {\r\n warnings.push(`Summaries without plans: ${orphanSummaries.join(', ')}`);\r\n }\r\n\r\n const result: PhaseCompletenessResult = {\r\n complete: errors.length === 0,\r\n phase: phaseInfo.phase_number,\r\n plan_count: plans.length,\r\n summary_count: summaries.length,\r\n incomplete_plans: incompletePlans,\r\n orphan_summaries: orphanSummaries,\r\n errors,\r\n warnings,\r\n };\r\n output(result, raw, errors.length === 0 ? 'complete' : 'incomplete');\r\n}\r\n\r\n// ─── Verify References ───────────────────────────────────────────────────────\r\n\r\nexport function cmdVerifyReferences(cwd: string, filePath: string | null, raw: boolean): void {\r\n if (!filePath) {\r\n error('file path required');\r\n }\r\n const fullPath = path.isAbsolute(filePath) ? filePath : path.join(cwd, filePath);\r\n const content = safeReadFile(fullPath);\r\n if (!content) {\r\n output({ error: 'File not found', path: filePath }, raw);\r\n return;\r\n }\r\n\r\n const found: string[] = [];\r\n const missing: string[] = [];\r\n\r\n const atRefs = content.match(/@([^\\s\\n,)]+\\/[^\\s\\n,)]+)/g) || [];\r\n for (const ref of atRefs) {\r\n const cleanRef = ref.slice(1);\r\n const resolved = cleanRef.startsWith('~/')\r\n ? path.join(process.env.HOME || '', cleanRef.slice(2))\r\n : path.join(cwd, cleanRef);\r\n if (fs.existsSync(resolved)) {\r\n found.push(cleanRef);\r\n } else {\r\n missing.push(cleanRef);\r\n }\r\n }\r\n\r\n const backtickRefs = content.match(/`([^`]+\\/[^`]+\\.[a-zA-Z]{1,10})`/g) || [];\r\n for (const ref of backtickRefs) {\r\n const cleanRef = ref.slice(1, -1);\r\n if (cleanRef.startsWith('http') || cleanRef.includes('${') || cleanRef.includes('{{')) continue;\r\n if (found.includes(cleanRef) || missing.includes(cleanRef)) continue;\r\n const resolved = path.join(cwd, cleanRef);\r\n if (fs.existsSync(resolved)) {\r\n found.push(cleanRef);\r\n } else {\r\n missing.push(cleanRef);\r\n }\r\n }\r\n\r\n const result: ReferencesResult = {\r\n valid: missing.length === 0,\r\n found: found.length,\r\n missing,\r\n total: found.length + missing.length,\r\n };\r\n output(result, raw, missing.length === 0 ? 'valid' : 'invalid');\r\n}\r\n\r\n// ─── Verify Commits ──────────────────────────────────────────────────────────\r\n\r\nexport async function cmdVerifyCommits(cwd: string, hashes: string[], raw: boolean): Promise {\r\n if (!hashes || hashes.length === 0) {\r\n error('At least one commit hash required');\r\n }\r\n\r\n const valid: string[] = [];\r\n const invalid: string[] = [];\r\n for (const hash of hashes) {\r\n const result = await execGit(cwd, ['cat-file', '-t', hash]);\r\n if (result.exitCode === 0 && result.stdout.trim() === 'commit') {\r\n valid.push(hash);\r\n } else {\r\n invalid.push(hash);\r\n }\r\n }\r\n\r\n const commitResult: CommitsResult = {\r\n all_valid: invalid.length === 0,\r\n valid,\r\n invalid,\r\n total: hashes.length,\r\n };\r\n output(commitResult, raw, invalid.length === 0 ? 'valid' : 'invalid');\r\n}\r\n\r\n// ─── Verify Artifacts ────────────────────────────────────────────────────────\r\n\r\ninterface MustHaveArtifact {\r\n path?: string;\r\n min_lines?: number;\r\n contains?: string;\r\n exports?: string | string[];\r\n [key: string]: string | number | string[] | undefined;\r\n}\r\n\r\nexport function cmdVerifyArtifacts(cwd: string, planFilePath: string | null, raw: boolean): void {\r\n if (!planFilePath) {\r\n error('plan file path required');\r\n }\r\n const fullPath = path.isAbsolute(planFilePath) ? planFilePath : path.join(cwd, planFilePath);\r\n const content = safeReadFile(fullPath);\r\n if (!content) {\r\n output({ error: 'File not found', path: planFilePath }, raw);\r\n return;\r\n }\r\n\r\n const artifacts = parseMustHavesBlock(content, 'artifacts');\r\n if (artifacts.length === 0) {\r\n output({ error: 'No must_haves.artifacts found in frontmatter', path: planFilePath }, raw);\r\n return;\r\n }\r\n\r\n const results: ArtifactCheck[] = [];\r\n for (const artifact of artifacts) {\r\n if (typeof artifact === 'string') continue;\r\n const artObj = artifact as MustHaveArtifact;\r\n const artPath = artObj.path;\r\n if (!artPath) continue;\r\n\r\n const artFullPath = path.join(cwd, artPath);\r\n const exists = fs.existsSync(artFullPath);\r\n const check: ArtifactCheck = { path: artPath, exists, issues: [], passed: false };\r\n\r\n if (exists) {\r\n const fileContent = safeReadFile(artFullPath) || '';\r\n const lineCount = fileContent.split('\\n').length;\r\n\r\n if (artObj.min_lines && lineCount < artObj.min_lines) {\r\n check.issues.push(`Only ${lineCount} lines, need ${artObj.min_lines}`);\r\n }\r\n if (artObj.contains && !fileContent.includes(artObj.contains)) {\r\n check.issues.push(`Missing pattern: ${artObj.contains}`);\r\n }\r\n if (artObj.exports) {\r\n const exportList = Array.isArray(artObj.exports) ? artObj.exports : [artObj.exports];\r\n for (const exp of exportList) {\r\n if (!fileContent.includes(exp)) check.issues.push(`Missing export: ${exp}`);\r\n }\r\n }\r\n check.passed = check.issues.length === 0;\r\n } else {\r\n check.issues.push('File not found');\r\n }\r\n\r\n results.push(check);\r\n }\r\n\r\n const passed = results.filter(r => r.passed).length;\r\n const artifactsResult: ArtifactsResult = {\r\n all_passed: passed === results.length,\r\n passed,\r\n total: results.length,\r\n artifacts: results,\r\n };\r\n output(artifactsResult, raw, passed === results.length ? 'valid' : 'invalid');\r\n}\r\n\r\n// ─── Verify Key Links ────────────────────────────────────────────────────────\r\n\r\ninterface MustHaveKeyLink {\r\n from?: string;\r\n to?: string;\r\n via?: string;\r\n pattern?: string;\r\n [key: string]: string | number | string[] | undefined;\r\n}\r\n\r\nexport function cmdVerifyKeyLinks(cwd: string, planFilePath: string | null, raw: boolean): void {\r\n if (!planFilePath) {\r\n error('plan file path required');\r\n }\r\n const fullPath = path.isAbsolute(planFilePath) ? planFilePath : path.join(cwd, planFilePath);\r\n const content = safeReadFile(fullPath);\r\n if (!content) {\r\n output({ error: 'File not found', path: planFilePath }, raw);\r\n return;\r\n }\r\n\r\n const keyLinks = parseMustHavesBlock(content, 'key_links');\r\n if (keyLinks.length === 0) {\r\n output({ error: 'No must_haves.key_links found in frontmatter', path: planFilePath }, raw);\r\n return;\r\n }\r\n\r\n const results: KeyLinkCheck[] = [];\r\n for (const link of keyLinks) {\r\n if (typeof link === 'string') continue;\r\n const linkObj = link as MustHaveKeyLink;\r\n const check: KeyLinkCheck = {\r\n from: linkObj.from || '',\r\n to: linkObj.to || '',\r\n via: linkObj.via || '',\r\n verified: false,\r\n detail: '',\r\n };\r\n\r\n const sourceContent = safeReadFile(path.join(cwd, linkObj.from || ''));\r\n if (!sourceContent) {\r\n check.detail = 'Source file not found';\r\n } else if (linkObj.pattern) {\r\n try {\r\n const regex = new RegExp(linkObj.pattern);\r\n if (regex.test(sourceContent)) {\r\n check.verified = true;\r\n check.detail = 'Pattern found in source';\r\n } else {\r\n const targetContent = safeReadFile(path.join(cwd, linkObj.to || ''));\r\n if (targetContent && regex.test(targetContent)) {\r\n check.verified = true;\r\n check.detail = 'Pattern found in target';\r\n } else {\r\n check.detail = `Pattern \"${linkObj.pattern}\" not found in source or target`;\r\n }\r\n }\r\n } catch {\r\n check.detail = `Invalid regex pattern: ${linkObj.pattern}`;\r\n }\r\n } else {\r\n if (sourceContent.includes(linkObj.to || '')) {\r\n check.verified = true;\r\n check.detail = 'Target referenced in source';\r\n } else {\r\n check.detail = 'Target not referenced in source';\r\n }\r\n }\r\n\r\n results.push(check);\r\n }\r\n\r\n const verified = results.filter(r => r.verified).length;\r\n const linksResult: KeyLinksResult = {\r\n all_verified: verified === results.length,\r\n verified,\r\n total: results.length,\r\n links: results,\r\n };\r\n output(linksResult, raw, verified === results.length ? 'valid' : 'invalid');\r\n}\r\n\r\n// ─── Validate Consistency ────────────────────────────────────────────────────\r\n\r\nexport function cmdValidateConsistency(cwd: string, raw: boolean): void {\r\n const rmPath = roadmapPathUtil(cwd);\r\n const phasesDir = phasesPath(cwd);\r\n const errors: string[] = [];\r\n const warnings: string[] = [];\r\n\r\n if (!fs.existsSync(rmPath)) {\r\n errors.push('ROADMAP.md not found');\r\n output({ passed: false, errors, warnings }, raw, 'failed');\r\n return;\r\n }\r\n\r\n const roadmapContent = fs.readFileSync(rmPath, 'utf-8');\r\n\r\n const roadmapPhases = new Set();\r\n const phasePattern = getPhasePattern();\r\n let m: RegExpExecArray | null;\r\n while ((m = phasePattern.exec(roadmapContent)) !== null) {\r\n roadmapPhases.add(m[1]);\r\n }\r\n\r\n const diskPhases = new Set();\r\n try {\r\n const dirs = listSubDirs(phasesDir);\r\n for (const dir of dirs) {\r\n const dm = dir.match(/^(\\d+[A-Z]?(?:\\.\\d+)?)/i);\r\n if (dm) diskPhases.add(dm[1]);\r\n }\r\n } catch (e) {\r\n /* optional op, ignore */\r\n debugLog(e);\r\n }\r\n\r\n for (const p of roadmapPhases) {\r\n if (!diskPhases.has(p) && !diskPhases.has(normalizePhaseName(p))) {\r\n warnings.push(`Phase ${p} in ROADMAP.md but no directory on disk`);\r\n }\r\n }\r\n\r\n for (const p of diskPhases) {\r\n const unpadded = String(parseInt(p, 10));\r\n if (!roadmapPhases.has(p) && !roadmapPhases.has(unpadded)) {\r\n warnings.push(`Phase ${p} exists on disk but not in ROADMAP.md`);\r\n }\r\n }\r\n\r\n const integerPhases = [...diskPhases]\r\n .filter(p => !p.includes('.'))\r\n .map(p => parseInt(p, 10))\r\n .sort((a, b) => a - b);\r\n\r\n for (let i = 1; i < integerPhases.length; i++) {\r\n if (integerPhases[i] !== integerPhases[i - 1] + 1) {\r\n warnings.push(`Gap in phase numbering: ${integerPhases[i - 1]} → ${integerPhases[i]}`);\r\n }\r\n }\r\n\r\n try {\r\n const dirs = listSubDirs(phasesDir, true);\r\n\r\n for (const dir of dirs) {\r\n const phaseFiles = fs.readdirSync(path.join(phasesDir, dir));\r\n const plans = phaseFiles.filter(f => isPlanFile(f)).sort();\r\n\r\n const planNums = plans.map(p => {\r\n const pm = p.match(/-(\\d{2})-PLAN\\.md$/);\r\n return pm ? parseInt(pm[1], 10) : null;\r\n }).filter((n): n is number => n !== null);\r\n\r\n for (let i = 1; i < planNums.length; i++) {\r\n if (planNums[i] !== planNums[i - 1] + 1) {\r\n warnings.push(`Gap in plan numbering in ${dir}: plan ${planNums[i - 1]} → ${planNums[i]}`);\r\n }\r\n }\r\n\r\n const summaries = phaseFiles.filter(f => isSummaryFile(f));\r\n const planIdsSet = new Set(plans.map(p => planId(p)));\r\n const summaryIdsSet = new Set(summaries.map(s => summaryId(s)));\r\n\r\n for (const sid of summaryIdsSet) {\r\n if (!planIdsSet.has(sid)) {\r\n warnings.push(`Summary ${sid}-SUMMARY.md in ${dir} has no matching PLAN.md`);\r\n }\r\n }\r\n }\r\n } catch (e) {\r\n /* optional op, ignore */\r\n debugLog(e);\r\n }\r\n\r\n try {\r\n const dirs = listSubDirs(phasesDir);\r\n\r\n for (const dir of dirs) {\r\n const phaseFiles = fs.readdirSync(path.join(phasesDir, dir));\r\n const plans = phaseFiles.filter(f => isPlanFile(f));\r\n\r\n for (const plan of plans) {\r\n const content = fs.readFileSync(path.join(phasesDir, dir, plan), 'utf-8');\r\n const fm = extractFrontmatter(content);\r\n\r\n if (!fm.wave) {\r\n warnings.push(`${dir}/${plan}: missing 'wave' in frontmatter`);\r\n }\r\n }\r\n }\r\n } catch (e) {\r\n /* optional op, ignore */\r\n debugLog(e);\r\n }\r\n\r\n const passed = errors.length === 0;\r\n const result: ConsistencyResult = { passed, errors, warnings, warning_count: warnings.length };\r\n output(result, raw, passed ? 'passed' : 'failed');\r\n}\r\n\r\n// ─── Validate Health ─────────────────────────────────────────────────────────\r\n\r\nexport function cmdValidateHealth(cwd: string, options: HealthOptions, raw: boolean): void {\r\n const planningDir = planningPath(cwd);\r\n const projectPath = planningPath(cwd, 'PROJECT.md');\r\n const rmPath = roadmapPathUtil(cwd);\r\n const stPath = statePathUtil(cwd);\r\n const cfgPath = configPathUtil(cwd);\r\n const phasesDir = phasesPath(cwd);\r\n\r\n const errors: ValidationError[] = [];\r\n const warnings: ValidationWarning[] = [];\r\n const info: ValidationError[] = [];\r\n const repairs: string[] = [];\r\n\r\n const addIssue = (\r\n severity: 'error' | 'warning' | 'info',\r\n code: string,\r\n message: string,\r\n fix: string,\r\n repairable = false,\r\n ): void => {\r\n const issue: ValidationError = { code, message, fix, repairable };\r\n if (severity === 'error') errors.push(issue);\r\n else if (severity === 'warning') warnings.push(issue);\r\n else info.push(issue);\r\n };\r\n\r\n // Check 1: .planning/ exists\r\n if (!fs.existsSync(planningDir)) {\r\n addIssue('error', 'E001', '.planning/ directory not found', 'Run /maxsim:new-project to initialize');\r\n output({\r\n status: 'broken',\r\n errors,\r\n warnings,\r\n info,\r\n repairable_count: 0,\r\n }, raw);\r\n return;\r\n }\r\n\r\n // Check 2: PROJECT.md\r\n if (!fs.existsSync(projectPath)) {\r\n addIssue('error', 'E002', 'PROJECT.md not found', 'Run /maxsim:new-project to create');\r\n } else {\r\n const content = fs.readFileSync(projectPath, 'utf-8');\r\n const requiredSections = ['## What This Is', '## Core Value', '## Requirements'];\r\n for (const section of requiredSections) {\r\n if (!content.includes(section)) {\r\n addIssue('warning', 'W001', `PROJECT.md missing section: ${section}`, 'Add section manually');\r\n }\r\n }\r\n }\r\n\r\n // Check 3: ROADMAP.md\r\n if (!fs.existsSync(rmPath)) {\r\n addIssue('error', 'E003', 'ROADMAP.md not found', 'Run /maxsim:new-milestone to create roadmap');\r\n }\r\n\r\n // Check 4: STATE.md\r\n if (!fs.existsSync(stPath)) {\r\n addIssue('error', 'E004', 'STATE.md not found', 'Run /maxsim:health --repair to regenerate', true);\r\n repairs.push('regenerateState');\r\n } else {\r\n const stateContent = fs.readFileSync(stPath, 'utf-8');\r\n const phaseRefs = [...stateContent.matchAll(/[Pp]hase\\s+(\\d+(?:\\.\\d+)?)/g)].map(m => m[1]);\r\n const diskPhases = new Set();\r\n try {\r\n for (const dir of listSubDirs(phasesDir)) {\r\n const dm = dir.match(/^(\\d+(?:\\.\\d+)?)/);\r\n if (dm) diskPhases.add(dm[1]);\r\n }\r\n } catch (e) {\r\n /* optional op, ignore */\r\n debugLog(e);\r\n }\r\n for (const ref of phaseRefs) {\r\n const normalizedRef = String(parseInt(ref, 10)).padStart(2, '0');\r\n if (!diskPhases.has(ref) && !diskPhases.has(normalizedRef) && !diskPhases.has(String(parseInt(ref, 10)))) {\r\n if (diskPhases.size > 0) {\r\n addIssue('warning', 'W002', `STATE.md references phase ${ref}, but only phases ${[...diskPhases].sort().join(', ')} exist`, 'Run /maxsim:health --repair to regenerate STATE.md', true);\r\n if (!repairs.includes('regenerateState')) repairs.push('regenerateState');\r\n }\r\n }\r\n }\r\n }\r\n\r\n // Check 5: config.json\r\n if (!fs.existsSync(cfgPath)) {\r\n addIssue('warning', 'W003', 'config.json not found', 'Run /maxsim:health --repair to create with defaults', true);\r\n repairs.push('createConfig');\r\n } else {\r\n try {\r\n const rawContent = fs.readFileSync(cfgPath, 'utf-8');\r\n const parsed: Record = JSON.parse(rawContent) as Record;\r\n const validProfiles = ['quality', 'balanced', 'budget', 'tokenburner'];\r\n if (parsed.model_profile && !validProfiles.includes(parsed.model_profile as string)) {\r\n addIssue('warning', 'W004', `config.json: invalid model_profile \"${parsed.model_profile}\"`, `Valid values: ${validProfiles.join(', ')}`);\r\n }\r\n } catch (thrown: unknown) {\r\n const parseErr = thrown as Error;\r\n addIssue('error', 'E005', `config.json: JSON parse error - ${parseErr.message}`, 'Run /maxsim:health --repair to reset to defaults', true);\r\n repairs.push('resetConfig');\r\n }\r\n }\r\n\r\n // Check 6: Phase directory naming\r\n try {\r\n for (const dirName of listSubDirs(phasesDir)) {\r\n if (!dirName.match(/^\\d{2}(?:\\.\\d+)?-[\\w-]+$/)) {\r\n addIssue('warning', 'W005', `Phase directory \"${dirName}\" doesn't follow NN-name format`, 'Rename to match pattern (e.g., 01-setup)');\r\n }\r\n }\r\n } catch (e) {\r\n /* optional op, ignore */\r\n debugLog(e);\r\n }\r\n\r\n // Check 7: Orphaned plans\r\n try {\r\n const orphanDirs = listSubDirs(phasesDir);\r\n for (const dirName of orphanDirs) {\r\n const phaseFiles = fs.readdirSync(path.join(phasesDir, dirName));\r\n const plans = phaseFiles.filter(f => isPlanFile(f));\r\n const summaries = phaseFiles.filter(f => isSummaryFile(f));\r\n const summaryBases = new Set(summaries.map(s => summaryId(s)));\r\n\r\n for (const plan of plans) {\r\n const planBase = planId(plan);\r\n if (!summaryBases.has(planBase)) {\r\n addIssue('info', 'I001', `${dirName}/${plan} has no SUMMARY.md`, 'May be in progress');\r\n }\r\n }\r\n }\r\n } catch (e) {\r\n /* optional op, ignore */\r\n debugLog(e);\r\n }\r\n\r\n // Check 8: Roadmap consistency\r\n if (fs.existsSync(rmPath)) {\r\n const roadmapContent = fs.readFileSync(rmPath, 'utf-8');\r\n const roadmapPhases = new Set();\r\n const phasePattern = getPhasePattern();\r\n let m: RegExpExecArray | null;\r\n while ((m = phasePattern.exec(roadmapContent)) !== null) {\r\n roadmapPhases.add(m[1]);\r\n }\r\n\r\n const diskPhases = new Set();\r\n try {\r\n for (const dir of listSubDirs(phasesDir)) {\r\n const dm = dir.match(/^(\\d+[A-Z]?(?:\\.\\d+)?)/i);\r\n if (dm) diskPhases.add(dm[1]);\r\n }\r\n } catch (e) {\r\n /* optional op, ignore */\r\n debugLog(e);\r\n }\r\n\r\n for (const p of roadmapPhases) {\r\n const padded = String(parseInt(p, 10)).padStart(2, '0');\r\n if (!diskPhases.has(p) && !diskPhases.has(padded)) {\r\n addIssue('warning', 'W006', `Phase ${p} in ROADMAP.md but no directory on disk`, 'Create phase directory or remove from roadmap');\r\n }\r\n }\r\n\r\n for (const p of diskPhases) {\r\n const unpadded = String(parseInt(p, 10));\r\n if (!roadmapPhases.has(p) && !roadmapPhases.has(unpadded)) {\r\n addIssue('warning', 'W007', `Phase ${p} exists on disk but not in ROADMAP.md`, 'Add to roadmap or remove directory');\r\n }\r\n }\r\n }\r\n\r\n // Perform repairs if requested\r\n const repairActions: RepairAction[] = [];\r\n if (options.repair && repairs.length > 0) {\r\n for (const repair of repairs) {\r\n try {\r\n switch (repair) {\r\n case 'createConfig':\r\n case 'resetConfig': {\r\n const defaults = {\r\n model_profile: 'balanced',\r\n commit_docs: true,\r\n search_gitignored: false,\r\n branching_strategy: 'none',\r\n research: true,\r\n plan_checker: true,\r\n verifier: true,\r\n parallelization: true,\r\n };\r\n fs.writeFileSync(cfgPath, JSON.stringify(defaults, null, 2), 'utf-8');\r\n repairActions.push({ action: repair, success: true, path: 'config.json' });\r\n break;\r\n }\r\n case 'regenerateState': {\r\n if (fs.existsSync(stPath)) {\r\n const timestamp = new Date().toISOString().replace(/[:.]/g, '-').slice(0, 19);\r\n const backupPath = `${stPath}.bak-${timestamp}`;\r\n fs.copyFileSync(stPath, backupPath);\r\n repairActions.push({ action: 'backupState', success: true, path: backupPath });\r\n }\r\n const milestone = getMilestoneInfo(cwd);\r\n let stateContent = `# Session State\\n\\n`;\r\n stateContent += `## Project Reference\\n\\n`;\r\n stateContent += `See: .planning/PROJECT.md\\n\\n`;\r\n stateContent += `## Position\\n\\n`;\r\n stateContent += `**Milestone:** ${milestone.version} ${milestone.name}\\n`;\r\n stateContent += `**Current phase:** (determining...)\\n`;\r\n stateContent += `**Status:** Resuming\\n\\n`;\r\n stateContent += `## Session Log\\n\\n`;\r\n stateContent += `- ${todayISO()}: STATE.md regenerated by /maxsim:health --repair\\n`;\r\n fs.writeFileSync(stPath, stateContent, 'utf-8');\r\n repairActions.push({ action: repair, success: true, path: 'STATE.md' });\r\n break;\r\n }\r\n }\r\n } catch (thrown: unknown) {\r\n const repairErr = thrown as Error;\r\n repairActions.push({ action: repair, success: false, error: repairErr.message });\r\n }\r\n }\r\n }\r\n\r\n // Determine overall status\r\n let status: 'healthy' | 'degraded' | 'broken';\r\n if (errors.length > 0) {\r\n status = 'broken';\r\n } else if (warnings.length > 0) {\r\n status = 'degraded';\r\n } else {\r\n status = 'healthy';\r\n }\r\n\r\n const repairableCount = errors.filter(e => e.repairable).length +\r\n warnings.filter(w => w.repairable).length;\r\n\r\n const result: HealthResult = {\r\n status,\r\n errors,\r\n warnings,\r\n info,\r\n repairable_count: repairableCount,\r\n repairs_performed: repairActions.length > 0 ? repairActions : undefined,\r\n };\r\n output(result, raw);\r\n}\r\n","/**\r\n * Phase — Phase CRUD, query, and lifecycle operations\r\n *\r\n * Ported from maxsim/bin/lib/phase.cjs\r\n */\r\n\r\nimport fs from 'node:fs';\r\nimport path from 'node:path';\r\n\r\nimport {\r\n normalizePhaseName,\r\n comparePhaseNum,\r\n getPhasePattern,\r\n findPhaseInternal,\r\n getArchivedPhaseDirs,\r\n generateSlugInternal,\r\n output,\r\n error,\r\n rethrowCliSignals,\r\n phasesPath,\r\n roadmapPath,\r\n statePath,\r\n planningPath,\r\n isPlanFile,\r\n isSummaryFile,\r\n planId,\r\n summaryId,\r\n listSubDirs,\r\n debugLog,\r\n todayISO,\r\n escapePhaseNum,\r\n} from './core.js';\r\nimport { extractFrontmatter } from './frontmatter.js';\r\nimport type {\r\n PhaseNumber,\r\n PhasesListOptions,\r\n FrontmatterData,\r\n} from './types.js';\r\n\r\n// ─── Core result types ──────────────────────────────────────────────────────\r\n\r\nexport interface PhaseCreateOptions {\r\n includeStubs?: boolean;\r\n}\r\n\r\nexport interface PhaseAddResult {\r\n phase_number: number;\r\n padded: string;\r\n slug: string;\r\n directory: string;\r\n description: string;\r\n}\r\n\r\nexport interface PhaseInsertResult {\r\n phase_number: string;\r\n after_phase: string;\r\n slug: string;\r\n directory: string;\r\n description: string;\r\n}\r\n\r\nexport interface PhaseCompleteResult {\r\n completed_phase: string;\r\n phase_name: string | null;\r\n plans_executed: string;\r\n next_phase: string | null;\r\n next_phase_name: string | null;\r\n is_last_phase: boolean;\r\n date: string;\r\n roadmap_updated: boolean;\r\n state_updated: boolean;\r\n requirements_updated: boolean;\r\n}\r\n\r\n// ─── Stub scaffolding ───────────────────────────────────────────────────────\r\n\r\nexport function scaffoldPhaseStubs(dirPath: string, phaseId: string, name: string): void {\r\n const today = todayISO();\r\n fs.writeFileSync(\r\n path.join(dirPath, `${phaseId}-CONTEXT.md`),\r\n `# Phase ${phaseId} Context: ${name}\\n\\n**Created:** ${today}\\n**Phase goal:** [To be defined during /maxsim:discuss-phase]\\n\\n---\\n\\n_Context will be populated by /maxsim:discuss-phase_\\n`,\r\n );\r\n fs.writeFileSync(\r\n path.join(dirPath, `${phaseId}-RESEARCH.md`),\r\n `# Phase ${phaseId}: ${name} - Research\\n\\n**Researched:** Not yet\\n**Domain:** TBD\\n**Confidence:** TBD\\n\\n---\\n\\n_Research will be populated by /maxsim:research-phase_\\n`,\r\n );\r\n}\r\n\r\n// ─── Core functions ─────────────────────────────────────────────────────────\r\n\r\nexport function phaseAddCore(cwd: string, description: string, options?: PhaseCreateOptions): PhaseAddResult {\r\n const rmPath = roadmapPath(cwd);\r\n if (!fs.existsSync(rmPath)) {\r\n throw new Error('ROADMAP.md not found');\r\n }\r\n\r\n const content = fs.readFileSync(rmPath, 'utf-8');\r\n const slug = generateSlugInternal(description);\r\n\r\n const phasePattern = getPhasePattern();\r\n let maxPhase = 0;\r\n let m: RegExpExecArray | null;\r\n while ((m = phasePattern.exec(content)) !== null) {\r\n const num = parseInt(m[1], 10);\r\n if (num > maxPhase) maxPhase = num;\r\n }\r\n\r\n const newPhaseNum = maxPhase + 1;\r\n const paddedNum = String(newPhaseNum).padStart(2, '0');\r\n const dirName = `${paddedNum}-${slug}`;\r\n const dirPath = planningPath(cwd, 'phases', dirName);\r\n\r\n fs.mkdirSync(dirPath, { recursive: true });\r\n fs.writeFileSync(path.join(dirPath, '.gitkeep'), '');\r\n\r\n if (options?.includeStubs) {\r\n scaffoldPhaseStubs(dirPath, paddedNum, description);\r\n }\r\n\r\n const phaseEntry = `\\n### Phase ${newPhaseNum}: ${description}\\n\\n**Goal:** [To be planned]\\n**Requirements**: TBD\\n**Depends on:** Phase ${maxPhase}\\n**Plans:** 0 plans\\n\\nPlans:\\n- [ ] TBD (run /maxsim:plan-phase ${newPhaseNum} to break down)\\n`;\r\n\r\n let updatedContent: string;\r\n const lastSeparator = content.lastIndexOf('\\n---');\r\n if (lastSeparator > 0) {\r\n updatedContent = content.slice(0, lastSeparator) + phaseEntry + content.slice(lastSeparator);\r\n } else {\r\n updatedContent = content + phaseEntry;\r\n }\r\n\r\n fs.writeFileSync(rmPath, updatedContent, 'utf-8');\r\n\r\n return {\r\n phase_number: newPhaseNum,\r\n padded: paddedNum,\r\n slug,\r\n directory: `.planning/phases/${dirName}`,\r\n description,\r\n };\r\n}\r\n\r\nexport function phaseInsertCore(cwd: string, afterPhase: string, description: string, options?: PhaseCreateOptions): PhaseInsertResult {\r\n const rmPath = roadmapPath(cwd);\r\n if (!fs.existsSync(rmPath)) {\r\n throw new Error('ROADMAP.md not found');\r\n }\r\n\r\n const content = fs.readFileSync(rmPath, 'utf-8');\r\n const slug = generateSlugInternal(description);\r\n\r\n const normalizedAfter = normalizePhaseName(afterPhase);\r\n const unpadded = normalizedAfter.replace(/^0+/, '');\r\n const afterPhaseEscaped = '0*' + unpadded.replace(/\\./g, '\\\\.');\r\n const targetPattern = getPhasePattern(afterPhaseEscaped, 'i');\r\n if (!targetPattern.test(content)) {\r\n throw new Error(`Phase ${afterPhase} not found in ROADMAP.md`);\r\n }\r\n\r\n const phasesDirPath = phasesPath(cwd);\r\n const normalizedBase = normalizePhaseName(afterPhase);\r\n const existingDecimals: number[] = [];\r\n\r\n try {\r\n const dirs = listSubDirs(phasesDirPath);\r\n const decimalPattern = new RegExp(`^${normalizedBase}\\\\.(\\\\d+)`);\r\n for (const dir of dirs) {\r\n const dm = dir.match(decimalPattern);\r\n if (dm) existingDecimals.push(parseInt(dm[1], 10));\r\n }\r\n } catch (e) {\r\n debugLog(e);\r\n }\r\n\r\n const nextDecimal = existingDecimals.length === 0 ? 1 : Math.max(...existingDecimals) + 1;\r\n const decimalPhase = `${normalizedBase}.${nextDecimal}`;\r\n const dirName = `${decimalPhase}-${slug}`;\r\n const dirPath = planningPath(cwd, 'phases', dirName);\r\n\r\n fs.mkdirSync(dirPath, { recursive: true });\r\n fs.writeFileSync(path.join(dirPath, '.gitkeep'), '');\r\n\r\n if (options?.includeStubs) {\r\n scaffoldPhaseStubs(dirPath, decimalPhase, description);\r\n }\r\n\r\n const phaseEntry = `\\n### Phase ${decimalPhase}: ${description} (INSERTED)\\n\\n**Goal:** [Urgent work - to be planned]\\n**Requirements**: TBD\\n**Depends on:** Phase ${afterPhase}\\n**Plans:** 0 plans\\n\\nPlans:\\n- [ ] TBD (run /maxsim:plan-phase ${decimalPhase} to break down)\\n`;\r\n\r\n const headerPattern = new RegExp(`(#{2,4}\\\\s*Phase\\\\s+0*${afterPhaseEscaped}:[^\\\\n]*\\\\n)`, 'i');\r\n const headerMatch = content.match(headerPattern);\r\n if (!headerMatch) {\r\n throw new Error(`Could not find Phase ${afterPhase} header`);\r\n }\r\n\r\n const headerIdx = content.indexOf(headerMatch[0]);\r\n const afterHeader = content.slice(headerIdx + headerMatch[0].length);\r\n const nextPhaseMatch = afterHeader.match(/\\n#{2,4}\\s+Phase\\s+\\d/i);\r\n\r\n let insertIdx: number;\r\n if (nextPhaseMatch) {\r\n insertIdx = headerIdx + headerMatch[0].length + nextPhaseMatch.index!;\r\n } else {\r\n insertIdx = content.length;\r\n }\r\n\r\n const updatedContent = content.slice(0, insertIdx) + phaseEntry + content.slice(insertIdx);\r\n fs.writeFileSync(rmPath, updatedContent, 'utf-8');\r\n\r\n return {\r\n phase_number: decimalPhase,\r\n after_phase: afterPhase,\r\n slug,\r\n directory: `.planning/phases/${dirName}`,\r\n description,\r\n };\r\n}\r\n\r\nexport function phaseCompleteCore(cwd: string, phaseNum: string): PhaseCompleteResult {\r\n const rmPath = roadmapPath(cwd);\r\n const stPath = statePath(cwd);\r\n const phasesDirPath = phasesPath(cwd);\r\n const today = todayISO();\r\n\r\n const phaseInfo = findPhaseInternal(cwd, phaseNum);\r\n if (!phaseInfo) {\r\n throw new Error(`Phase ${phaseNum} not found`);\r\n }\r\n\r\n const planCount = phaseInfo.plans.length;\r\n const summaryCount = phaseInfo.summaries.length;\r\n let requirementsUpdated = false;\r\n\r\n if (fs.existsSync(rmPath)) {\r\n let roadmapContent = fs.readFileSync(rmPath, 'utf-8');\r\n\r\n const checkboxPattern = new RegExp(\r\n `(-\\\\s*\\\\[)[ ](\\\\]\\\\s*.*Phase\\\\s+${escapePhaseNum(phaseNum)}[:\\\\s][^\\\\n]*)`,\r\n 'i',\r\n );\r\n roadmapContent = roadmapContent.replace(checkboxPattern, `$1x$2 (completed ${today})`);\r\n\r\n const phaseEscaped = escapePhaseNum(phaseNum);\r\n const tablePattern = new RegExp(\r\n `(\\\\|\\\\s*${phaseEscaped}\\\\.?\\\\s[^|]*\\\\|[^|]*\\\\|)\\\\s*[^|]*(\\\\|)\\\\s*[^|]*(\\\\|)`,\r\n 'i',\r\n );\r\n roadmapContent = roadmapContent.replace(\r\n tablePattern,\r\n `$1 Complete $2 ${today} $3`,\r\n );\r\n\r\n const planCountPattern = new RegExp(\r\n `(#{2,4}\\\\s*Phase\\\\s+${phaseEscaped}[\\\\s\\\\S]*?\\\\*\\\\*Plans:\\\\*\\\\*\\\\s*)[^\\\\n]+`,\r\n 'i',\r\n );\r\n roadmapContent = roadmapContent.replace(\r\n planCountPattern,\r\n `$1${summaryCount}/${planCount} plans complete`,\r\n );\r\n\r\n fs.writeFileSync(rmPath, roadmapContent, 'utf-8');\r\n\r\n // Update REQUIREMENTS.md\r\n const reqPath = planningPath(cwd, 'REQUIREMENTS.md');\r\n if (fs.existsSync(reqPath)) {\r\n const reqMatch = roadmapContent.match(\r\n new RegExp(`Phase\\\\s+${escapePhaseNum(phaseNum)}[\\\\s\\\\S]*?\\\\*\\\\*Requirements:\\\\*\\\\*\\\\s*([^\\\\n]+)`, 'i'),\r\n );\r\n\r\n if (reqMatch) {\r\n const reqIds = reqMatch[1].replace(/[\\[\\]]/g, '').split(/[,\\s]+/).map(r => r.trim()).filter(Boolean);\r\n let reqContent = fs.readFileSync(reqPath, 'utf-8');\r\n\r\n for (const reqId of reqIds) {\r\n reqContent = reqContent.replace(\r\n new RegExp(`(-\\\\s*\\\\[)[ ](\\\\]\\\\s*\\\\*\\\\*${reqId}\\\\*\\\\*)`, 'gi'),\r\n '$1x$2',\r\n );\r\n reqContent = reqContent.replace(\r\n new RegExp(`(\\\\|\\\\s*${reqId}\\\\s*\\\\|[^|]+\\\\|)\\\\s*Pending\\\\s*(\\\\|)`, 'gi'),\r\n '$1 Complete $2',\r\n );\r\n }\r\n\r\n fs.writeFileSync(reqPath, reqContent, 'utf-8');\r\n requirementsUpdated = true;\r\n }\r\n }\r\n }\r\n\r\n // Find next phase\r\n let nextPhaseNum: string | null = null;\r\n let nextPhaseName: string | null = null;\r\n let isLastPhase = true;\r\n\r\n try {\r\n const dirs = listSubDirs(phasesDirPath, true);\r\n\r\n for (const dir of dirs) {\r\n const dm = dir.match(/^(\\d+[A-Z]?(?:\\.\\d+)?)-?(.*)/i);\r\n if (dm) {\r\n if (comparePhaseNum(dm[1], phaseNum) > 0) {\r\n nextPhaseNum = dm[1];\r\n nextPhaseName = dm[2] || null;\r\n isLastPhase = false;\r\n break;\r\n }\r\n }\r\n }\r\n } catch (e) {\r\n debugLog(e);\r\n }\r\n\r\n // Update STATE.md\r\n if (fs.existsSync(stPath)) {\r\n let stateContent = fs.readFileSync(stPath, 'utf-8');\r\n\r\n stateContent = stateContent.replace(\r\n /(\\*\\*Current Phase:\\*\\*\\s*).*/,\r\n `$1${nextPhaseNum || phaseNum}`,\r\n );\r\n\r\n if (nextPhaseName) {\r\n stateContent = stateContent.replace(\r\n /(\\*\\*Current Phase Name:\\*\\*\\s*).*/,\r\n `$1${nextPhaseName.replace(/-/g, ' ')}`,\r\n );\r\n }\r\n\r\n stateContent = stateContent.replace(\r\n /(\\*\\*Status:\\*\\*\\s*).*/,\r\n `$1${isLastPhase ? 'Milestone complete' : 'Ready to plan'}`,\r\n );\r\n\r\n stateContent = stateContent.replace(\r\n /(\\*\\*Current Plan:\\*\\*\\s*).*/,\r\n `$1Not started`,\r\n );\r\n\r\n stateContent = stateContent.replace(\r\n /(\\*\\*Last Activity:\\*\\*\\s*).*/,\r\n `$1${today}`,\r\n );\r\n\r\n stateContent = stateContent.replace(\r\n /(\\*\\*Last Activity Description:\\*\\*\\s*).*/,\r\n `$1Phase ${phaseNum} complete${nextPhaseNum ? `, transitioned to Phase ${nextPhaseNum}` : ''}`,\r\n );\r\n\r\n fs.writeFileSync(stPath, stateContent, 'utf-8');\r\n }\r\n\r\n return {\r\n completed_phase: phaseNum,\r\n phase_name: phaseInfo.phase_name,\r\n plans_executed: `${summaryCount}/${planCount}`,\r\n next_phase: nextPhaseNum,\r\n next_phase_name: nextPhaseName,\r\n is_last_phase: isLastPhase,\r\n date: today,\r\n roadmap_updated: fs.existsSync(rmPath),\r\n state_updated: fs.existsSync(stPath),\r\n requirements_updated: requirementsUpdated,\r\n };\r\n}\r\n\r\n// ─── Phase list ─────────────────────────────────────────────────────────────\r\n\r\nexport function cmdPhasesList(cwd: string, options: PhasesListOptions, raw: boolean): void {\r\n const phasesDirPath = phasesPath(cwd);\r\n const { type, phase, includeArchived } = options;\r\n\r\n if (!fs.existsSync(phasesDirPath)) {\r\n if (type) {\r\n output({ files: [], count: 0 }, raw, '');\r\n } else {\r\n output({ directories: [], count: 0 }, raw, '');\r\n }\r\n return;\r\n }\r\n\r\n try {\r\n let dirs = listSubDirs(phasesDirPath);\r\n\r\n if (includeArchived) {\r\n const archived = getArchivedPhaseDirs(cwd);\r\n for (const a of archived) {\r\n dirs.push(`${a.name} [${a.milestone}]`);\r\n }\r\n }\r\n\r\n dirs.sort((a, b) => comparePhaseNum(a, b));\r\n\r\n if (phase) {\r\n const normalized = normalizePhaseName(phase);\r\n const match = dirs.find(d => d.startsWith(normalized));\r\n if (!match) {\r\n output({ files: [], count: 0, phase_dir: null, error: 'Phase not found' }, raw, '');\r\n return;\r\n }\r\n dirs = [match];\r\n }\r\n\r\n if (type) {\r\n const files: string[] = [];\r\n for (const dir of dirs) {\r\n const dirPath = path.join(phasesDirPath, dir);\r\n const dirFiles = fs.readdirSync(dirPath);\r\n\r\n let filtered: string[];\r\n if (type === 'plans') {\r\n filtered = dirFiles.filter(isPlanFile);\r\n } else if (type === 'summaries') {\r\n filtered = dirFiles.filter(isSummaryFile);\r\n } else {\r\n filtered = dirFiles;\r\n }\r\n\r\n files.push(...filtered.sort());\r\n }\r\n\r\n const result = {\r\n files,\r\n count: files.length,\r\n phase_dir: phase ? dirs[0].replace(/^\\d+(?:\\.\\d+)?-?/, '') : null,\r\n };\r\n output(result, raw, files.join('\\n'));\r\n return;\r\n }\r\n\r\n output({ directories: dirs, count: dirs.length }, raw, dirs.join('\\n'));\r\n } catch (e: unknown) {\r\n rethrowCliSignals(e);\r\n error('Failed to list phases: ' + (e as Error).message);\r\n }\r\n}\r\n\r\n// ─── Next decimal ───────────────────────────────────────────────────────────\r\n\r\nexport function cmdPhaseNextDecimal(cwd: string, basePhase: string, raw: boolean): void {\r\n const phasesDirPath = phasesPath(cwd);\r\n const normalized = normalizePhaseName(basePhase);\r\n\r\n if (!fs.existsSync(phasesDirPath)) {\r\n output(\r\n { found: false, base_phase: normalized, next: `${normalized}.1`, existing: [] },\r\n raw,\r\n `${normalized}.1`,\r\n );\r\n return;\r\n }\r\n\r\n try {\r\n const dirs = listSubDirs(phasesDirPath);\r\n\r\n const baseExists = dirs.some(d => d.startsWith(normalized + '-') || d === normalized);\r\n\r\n const decimalPattern = new RegExp(`^${normalized}\\\\.(\\\\d+)`);\r\n const existingDecimals: string[] = [];\r\n\r\n for (const dir of dirs) {\r\n const match = dir.match(decimalPattern);\r\n if (match) {\r\n existingDecimals.push(`${normalized}.${match[1]}`);\r\n }\r\n }\r\n\r\n existingDecimals.sort((a, b) => {\r\n const aNum = parseFloat(a);\r\n const bNum = parseFloat(b);\r\n return aNum - bNum;\r\n });\r\n\r\n let nextDecimal: string;\r\n if (existingDecimals.length === 0) {\r\n nextDecimal = `${normalized}.1`;\r\n } else {\r\n const lastDecimal = existingDecimals[existingDecimals.length - 1];\r\n const lastNum = parseInt(lastDecimal.split('.')[1], 10);\r\n nextDecimal = `${normalized}.${lastNum + 1}`;\r\n }\r\n\r\n output(\r\n { found: baseExists, base_phase: normalized, next: nextDecimal, existing: existingDecimals },\r\n raw,\r\n nextDecimal,\r\n );\r\n } catch (e: unknown) {\r\n rethrowCliSignals(e);\r\n error('Failed to calculate next decimal phase: ' + (e as Error).message);\r\n }\r\n}\r\n\r\n// ─── Find phase ─────────────────────────────────────────────────────────────\r\n\r\nexport function cmdFindPhase(cwd: string, phase: string | undefined, raw: boolean): void {\r\n if (!phase) {\r\n error('phase identifier required');\r\n }\r\n\r\n const phasesDirPath = phasesPath(cwd);\r\n const normalized = normalizePhaseName(phase);\r\n\r\n const notFound = { found: false, directory: null, phase_number: null, phase_name: null, plans: [] as string[], summaries: [] as string[] };\r\n\r\n try {\r\n const dirs = listSubDirs(phasesDirPath, true);\r\n\r\n const match = dirs.find(d => d.startsWith(normalized));\r\n if (!match) {\r\n output(notFound, raw, '');\r\n return;\r\n }\r\n\r\n const dirMatch = match.match(/^(\\d+[A-Z]?(?:\\.\\d+)?)-?(.*)/i);\r\n const phaseNumber = dirMatch ? dirMatch[1] : normalized;\r\n const phaseName = dirMatch && dirMatch[2] ? dirMatch[2] : null;\r\n\r\n const phaseDir = path.join(phasesDirPath, match);\r\n const phaseFiles = fs.readdirSync(phaseDir);\r\n const plans = phaseFiles.filter(isPlanFile).sort();\r\n const summaries = phaseFiles.filter(isSummaryFile).sort();\r\n\r\n const result = {\r\n found: true,\r\n directory: path.join('.planning', 'phases', match),\r\n phase_number: phaseNumber,\r\n phase_name: phaseName,\r\n plans,\r\n summaries,\r\n };\r\n\r\n output(result, raw, result.directory);\r\n } catch (e: unknown) {\r\n rethrowCliSignals(e);\r\n output(notFound, raw, '');\r\n }\r\n}\r\n\r\n// ─── Phase plan index ───────────────────────────────────────────────────────\r\n\r\nexport function cmdPhasePlanIndex(cwd: string, phase: string | undefined, raw: boolean): void {\r\n if (!phase) {\r\n error('phase required for phase-plan-index');\r\n }\r\n\r\n const phasesDirPath = phasesPath(cwd);\r\n const normalized = normalizePhaseName(phase);\r\n\r\n let phaseDir: string | null = null;\r\n let phaseDirName: string | null = null;\r\n try {\r\n const dirs = listSubDirs(phasesDirPath, true);\r\n const match = dirs.find(d => d.startsWith(normalized));\r\n if (match) {\r\n phaseDir = path.join(phasesDirPath, match);\r\n phaseDirName = match;\r\n }\r\n } catch (e) {\r\n /* optional op, ignore */\r\n debugLog(e);\r\n }\r\n\r\n if (!phaseDir) {\r\n output({ phase: normalized, error: 'Phase not found', plans: [], waves: {}, incomplete: [], has_checkpoints: false }, raw);\r\n return;\r\n }\r\n\r\n const phaseFiles = fs.readdirSync(phaseDir);\r\n const planFiles = phaseFiles.filter(isPlanFile).sort();\r\n const summaryFiles = phaseFiles.filter(isSummaryFile);\r\n\r\n const completedPlanIds = new Set(\r\n summaryFiles.map(summaryId),\r\n );\r\n\r\n const plans: Array<{\r\n id: string;\r\n wave: number;\r\n autonomous: boolean;\r\n objective: string | null;\r\n files_modified: string[];\r\n task_count: number;\r\n has_summary: boolean;\r\n }> = [];\r\n const waves: Record = {};\r\n const incomplete: string[] = [];\r\n let hasCheckpoints = false;\r\n\r\n for (const planFile of planFiles) {\r\n const id = planId(planFile);\r\n const planPath = path.join(phaseDir, planFile);\r\n const content = fs.readFileSync(planPath, 'utf-8');\r\n const fm = extractFrontmatter(content);\r\n\r\n const taskMatches = content.match(/##\\s*Task\\s*\\d+/gi) || [];\r\n const taskCount = taskMatches.length;\r\n\r\n const wave = parseInt(fm.wave as string, 10) || 1;\r\n\r\n let autonomous = true;\r\n if (fm.autonomous !== undefined) {\r\n autonomous = fm.autonomous === 'true' || fm.autonomous === true;\r\n }\r\n\r\n if (!autonomous) {\r\n hasCheckpoints = true;\r\n }\r\n\r\n let filesModified: string[] = [];\r\n if (fm['files-modified']) {\r\n filesModified = Array.isArray(fm['files-modified']) ? fm['files-modified'] as string[] : [fm['files-modified'] as string];\r\n }\r\n\r\n const hasSummary = completedPlanIds.has(id);\r\n if (!hasSummary) {\r\n incomplete.push(id);\r\n }\r\n\r\n const plan = {\r\n id,\r\n wave,\r\n autonomous,\r\n objective: (fm.objective as string) || null,\r\n files_modified: filesModified,\r\n task_count: taskCount,\r\n has_summary: hasSummary,\r\n };\r\n\r\n plans.push(plan);\r\n\r\n const waveKey = String(wave);\r\n if (!waves[waveKey]) {\r\n waves[waveKey] = [];\r\n }\r\n waves[waveKey].push(id);\r\n }\r\n\r\n output({ phase: normalized, plans, waves, incomplete, has_checkpoints: hasCheckpoints }, raw);\r\n}\r\n\r\n// ─── Phase add ──────────────────────────────────────────────────────────────\r\n\r\nexport function cmdPhaseAdd(cwd: string, description: string | undefined, raw: boolean): void {\r\n if (!description) {\r\n error('description required for phase add');\r\n }\r\n\r\n try {\r\n const result = phaseAddCore(cwd, description, { includeStubs: false });\r\n output(\r\n { phase_number: result.phase_number, padded: result.padded, name: result.description, slug: result.slug, directory: result.directory },\r\n raw,\r\n result.padded,\r\n );\r\n } catch (e) {\r\n rethrowCliSignals(e);\r\n error((e as Error).message);\r\n }\r\n}\r\n\r\n// ─── Phase insert ───────────────────────────────────────────────────────────\r\n\r\nexport function cmdPhaseInsert(cwd: string, afterPhase: string | undefined, description: string | undefined, raw: boolean): void {\r\n if (!afterPhase || !description) {\r\n error('after-phase and description required for phase insert');\r\n }\r\n\r\n try {\r\n const result = phaseInsertCore(cwd, afterPhase, description, { includeStubs: false });\r\n output(\r\n { phase_number: result.phase_number, after_phase: result.after_phase, name: result.description, slug: result.slug, directory: result.directory },\r\n raw,\r\n result.phase_number,\r\n );\r\n } catch (e) {\r\n rethrowCliSignals(e);\r\n error((e as Error).message);\r\n }\r\n}\r\n\r\n// ─── Phase remove ───────────────────────────────────────────────────────────\r\n\r\nexport function cmdPhaseRemove(\r\n cwd: string,\r\n targetPhase: string | undefined,\r\n options: { force: boolean },\r\n raw: boolean,\r\n): void {\r\n if (!targetPhase) {\r\n error('phase number required for phase remove');\r\n }\r\n\r\n const rmPath = roadmapPath(cwd);\r\n const phasesDirPath = phasesPath(cwd);\r\n const force = options.force || false;\r\n\r\n if (!fs.existsSync(rmPath)) {\r\n error('ROADMAP.md not found');\r\n }\r\n\r\n const normalized = normalizePhaseName(targetPhase);\r\n const isDecimal = targetPhase.includes('.');\r\n\r\n let targetDir: string | null = null;\r\n try {\r\n const dirs = listSubDirs(phasesDirPath, true);\r\n targetDir = dirs.find(d => d.startsWith(normalized + '-') || d === normalized) || null;\r\n } catch (e) {\r\n /* optional op, ignore */\r\n debugLog(e);\r\n }\r\n\r\n if (targetDir && !force) {\r\n const targetPath = path.join(phasesDirPath, targetDir);\r\n const files = fs.readdirSync(targetPath);\r\n const summaries = files.filter(isSummaryFile);\r\n if (summaries.length > 0) {\r\n error(`Phase ${targetPhase} has ${summaries.length} executed plan(s). Use --force to remove anyway.`);\r\n }\r\n }\r\n\r\n if (targetDir) {\r\n fs.rmSync(path.join(phasesDirPath, targetDir), { recursive: true, force: true });\r\n }\r\n\r\n const renamedDirs: Array<{ from: string; to: string }> = [];\r\n const renamedFiles: Array<{ from: string; to: string }> = [];\r\n\r\n if (isDecimal) {\r\n const baseParts = normalized.split('.');\r\n const baseInt = baseParts[0];\r\n const removedDecimal = parseInt(baseParts[1], 10);\r\n\r\n try {\r\n const dirs = listSubDirs(phasesDirPath, true);\r\n\r\n const decPattern = new RegExp(`^${baseInt}\\\\.(\\\\d+)-(.+)$`);\r\n const toRename: Array<{ dir: string; oldDecimal: number; slug: string }> = [];\r\n for (const dir of dirs) {\r\n const dm = dir.match(decPattern);\r\n if (dm && parseInt(dm[1], 10) > removedDecimal) {\r\n toRename.push({ dir, oldDecimal: parseInt(dm[1], 10), slug: dm[2] });\r\n }\r\n }\r\n\r\n toRename.sort((a, b) => b.oldDecimal - a.oldDecimal);\r\n\r\n for (const item of toRename) {\r\n const newDecimal = item.oldDecimal - 1;\r\n const oldPhaseId = `${baseInt}.${item.oldDecimal}`;\r\n const newPhaseId = `${baseInt}.${newDecimal}`;\r\n const newDirName = `${baseInt}.${newDecimal}-${item.slug}`;\r\n\r\n fs.renameSync(path.join(phasesDirPath, item.dir), path.join(phasesDirPath, newDirName));\r\n renamedDirs.push({ from: item.dir, to: newDirName });\r\n\r\n const dirFiles = fs.readdirSync(path.join(phasesDirPath, newDirName));\r\n for (const f of dirFiles) {\r\n if (f.includes(oldPhaseId)) {\r\n const newFileName = f.replace(oldPhaseId, newPhaseId);\r\n fs.renameSync(\r\n path.join(phasesDirPath, newDirName, f),\r\n path.join(phasesDirPath, newDirName, newFileName),\r\n );\r\n renamedFiles.push({ from: f, to: newFileName });\r\n }\r\n }\r\n }\r\n } catch (e) {\r\n /* optional op, ignore */\r\n debugLog(e);\r\n }\r\n } else {\r\n const removedInt = parseInt(normalized, 10);\r\n\r\n try {\r\n const dirs = listSubDirs(phasesDirPath, true);\r\n\r\n const toRename: Array<{ dir: string; oldInt: number; letter: string; decimal: number | null; slug: string }> = [];\r\n for (const dir of dirs) {\r\n const dm = dir.match(/^(\\d+)([A-Z])?(?:\\.(\\d+))?-(.+)$/i);\r\n if (!dm) continue;\r\n const dirInt = parseInt(dm[1], 10);\r\n if (dirInt > removedInt) {\r\n toRename.push({\r\n dir,\r\n oldInt: dirInt,\r\n letter: dm[2] ? dm[2].toUpperCase() : '',\r\n decimal: dm[3] ? parseInt(dm[3], 10) : null,\r\n slug: dm[4],\r\n });\r\n }\r\n }\r\n\r\n toRename.sort((a, b) => {\r\n if (a.oldInt !== b.oldInt) return b.oldInt - a.oldInt;\r\n return (b.decimal || 0) - (a.decimal || 0);\r\n });\r\n\r\n for (const item of toRename) {\r\n const newInt = item.oldInt - 1;\r\n const newPadded = String(newInt).padStart(2, '0');\r\n const oldPadded = String(item.oldInt).padStart(2, '0');\r\n const letterSuffix = item.letter || '';\r\n const decimalSuffix = item.decimal !== null ? `.${item.decimal}` : '';\r\n const oldPrefix = `${oldPadded}${letterSuffix}${decimalSuffix}`;\r\n const newPrefix = `${newPadded}${letterSuffix}${decimalSuffix}`;\r\n const newDirName = `${newPrefix}-${item.slug}`;\r\n\r\n fs.renameSync(path.join(phasesDirPath, item.dir), path.join(phasesDirPath, newDirName));\r\n renamedDirs.push({ from: item.dir, to: newDirName });\r\n\r\n const dirFiles = fs.readdirSync(path.join(phasesDirPath, newDirName));\r\n for (const f of dirFiles) {\r\n if (f.startsWith(oldPrefix)) {\r\n const newFileName = newPrefix + f.slice(oldPrefix.length);\r\n fs.renameSync(\r\n path.join(phasesDirPath, newDirName, f),\r\n path.join(phasesDirPath, newDirName, newFileName),\r\n );\r\n renamedFiles.push({ from: f, to: newFileName });\r\n }\r\n }\r\n }\r\n } catch (e) {\r\n /* optional op, ignore */\r\n debugLog(e);\r\n }\r\n }\r\n\r\n // Update ROADMAP.md\r\n let roadmapContent = fs.readFileSync(rmPath, 'utf-8');\r\n\r\n const targetEscaped = escapePhaseNum(targetPhase);\r\n const sectionPattern = new RegExp(\r\n `\\\\n?#{2,4}\\\\s*Phase\\\\s+${targetEscaped}\\\\s*:[\\\\s\\\\S]*?(?=\\\\n#{2,4}\\\\s+Phase\\\\s+\\\\d|$)`,\r\n 'i',\r\n );\r\n roadmapContent = roadmapContent.replace(sectionPattern, '');\r\n\r\n const checkboxPattern = new RegExp(`\\\\n?-\\\\s*\\\\[[ x]\\\\]\\\\s*.*Phase\\\\s+${targetEscaped}[:\\\\s][^\\\\n]*`, 'gi');\r\n roadmapContent = roadmapContent.replace(checkboxPattern, '');\r\n\r\n const tableRowPattern = new RegExp(`\\\\n?\\\\|\\\\s*${targetEscaped}\\\\.?\\\\s[^|]*\\\\|[^\\\\n]*`, 'gi');\r\n roadmapContent = roadmapContent.replace(tableRowPattern, '');\r\n\r\n if (!isDecimal) {\r\n const removedInt = parseInt(normalized, 10);\r\n const maxPhase = 99;\r\n for (let oldNum = maxPhase; oldNum > removedInt; oldNum--) {\r\n const newNum = oldNum - 1;\r\n const oldStr = String(oldNum);\r\n const newStr = String(newNum);\r\n const oldPad = oldStr.padStart(2, '0');\r\n const newPad = newStr.padStart(2, '0');\r\n\r\n roadmapContent = roadmapContent.replace(\r\n new RegExp(`(#{2,4}\\\\s*Phase\\\\s+)${oldStr}(\\\\s*:)`, 'gi'),\r\n `$1${newStr}$2`,\r\n );\r\n roadmapContent = roadmapContent.replace(\r\n new RegExp(`(Phase\\\\s+)${oldStr}([:\\\\s])`, 'g'),\r\n `$1${newStr}$2`,\r\n );\r\n roadmapContent = roadmapContent.replace(\r\n new RegExp(`${oldPad}-(\\\\d{2})`, 'g'),\r\n `${newPad}-$1`,\r\n );\r\n roadmapContent = roadmapContent.replace(\r\n new RegExp(`(\\\\|\\\\s*)${oldStr}\\\\.\\\\s`, 'g'),\r\n `$1${newStr}. `,\r\n );\r\n roadmapContent = roadmapContent.replace(\r\n new RegExp(`(Depends on:\\\\*\\\\*\\\\s*Phase\\\\s+)${oldStr}\\\\b`, 'gi'),\r\n `$1${newStr}`,\r\n );\r\n }\r\n }\r\n\r\n fs.writeFileSync(rmPath, roadmapContent, 'utf-8');\r\n\r\n // Update STATE.md phase count\r\n const stPath = statePath(cwd);\r\n if (fs.existsSync(stPath)) {\r\n let stateContent = fs.readFileSync(stPath, 'utf-8');\r\n const totalPattern = /(\\*\\*Total Phases:\\*\\*\\s*)(\\d+)/;\r\n const totalMatch = stateContent.match(totalPattern);\r\n if (totalMatch) {\r\n const oldTotal = parseInt(totalMatch[2], 10);\r\n stateContent = stateContent.replace(totalPattern, `$1${oldTotal - 1}`);\r\n }\r\n const ofPattern = /(\\bof\\s+)(\\d+)(\\s*(?:\\(|phases?))/i;\r\n const ofMatch = stateContent.match(ofPattern);\r\n if (ofMatch) {\r\n const oldTotal = parseInt(ofMatch[2], 10);\r\n stateContent = stateContent.replace(ofPattern, `$1${oldTotal - 1}$3`);\r\n }\r\n fs.writeFileSync(stPath, stateContent, 'utf-8');\r\n }\r\n\r\n output({\r\n removed: targetPhase,\r\n directory_deleted: targetDir || null,\r\n renamed_directories: renamedDirs,\r\n renamed_files: renamedFiles,\r\n roadmap_updated: true,\r\n state_updated: fs.existsSync(stPath),\r\n }, raw);\r\n}\r\n\r\n// ─── Phase complete ─────────────────────────────────────────────────────────\r\n\r\nexport function cmdPhaseComplete(cwd: string, phaseNum: string | undefined, raw: boolean): void {\r\n if (!phaseNum) {\r\n error('phase number required for phase complete');\r\n }\r\n\r\n try {\r\n const result = phaseCompleteCore(cwd, phaseNum);\r\n output({\r\n completed_phase: result.completed_phase,\r\n phase_name: result.phase_name,\r\n plans_executed: result.plans_executed,\r\n next_phase: result.next_phase,\r\n next_phase_name: result.next_phase_name,\r\n is_last_phase: result.is_last_phase,\r\n date: result.date,\r\n roadmap_updated: result.roadmap_updated,\r\n state_updated: result.state_updated,\r\n }, raw);\r\n } catch (e) {\r\n rethrowCliSignals(e);\r\n error((e as Error).message);\r\n }\r\n}\r\n","/**\r\n * Template — Template selection and fill operations\r\n *\r\n * Ported from maxsim/bin/lib/template.cjs\r\n */\r\n\r\nimport fs from 'node:fs';\r\nimport path from 'node:path';\r\n\r\nimport {\r\n normalizePhaseName,\r\n findPhaseInternal,\r\n generateSlugInternal,\r\n output,\r\n error,\r\n todayISO,\r\n} from './core.js';\r\nimport { reconstructFrontmatter } from './frontmatter.js';\r\nimport type { FrontmatterData } from './types.js';\r\n\r\n// ─── Interfaces ──────────────────────────────────────────────────────────────\r\n\r\nexport interface TemplateSelectResult {\r\n template: string;\r\n type: 'minimal' | 'standard' | 'complex';\r\n taskCount: number;\r\n fileCount: number;\r\n hasDecisions: boolean;\r\n error?: string;\r\n}\r\n\r\nexport interface TemplateFillOptions {\r\n phase: string;\r\n name?: string;\r\n plan?: string;\r\n type?: string;\r\n wave?: string;\r\n fields?: FrontmatterData;\r\n}\r\n\r\nexport interface TemplateFillResult {\r\n created: boolean;\r\n path: string;\r\n template: string;\r\n}\r\n\r\n// ─── Template Select ─────────────────────────────────────────────────────────\r\n\r\nexport function cmdTemplateSelect(cwd: string, planPath: string | null, raw: boolean): void {\r\n if (!planPath) {\r\n error('plan-path required');\r\n }\r\n\r\n try {\r\n const fullPath = path.join(cwd, planPath);\r\n const content = fs.readFileSync(fullPath, 'utf-8');\r\n\r\n const taskMatch = content.match(/###\\s*Task\\s*\\d+/g) || [];\r\n const taskCount = taskMatch.length;\r\n\r\n const decisionMatch = content.match(/decision/gi) || [];\r\n const hasDecisions = decisionMatch.length > 0;\r\n\r\n const fileMentions = new Set();\r\n const filePattern = /`([^`]+\\.[a-zA-Z]+)`/g;\r\n let m: RegExpExecArray | null;\r\n while ((m = filePattern.exec(content)) !== null) {\r\n if (m[1].includes('/') && !m[1].startsWith('http')) {\r\n fileMentions.add(m[1]);\r\n }\r\n }\r\n const fileCount = fileMentions.size;\r\n\r\n let template = 'templates/summary-standard.md';\r\n let type: 'minimal' | 'standard' | 'complex' = 'standard';\r\n\r\n if (taskCount <= 2 && fileCount <= 3 && !hasDecisions) {\r\n template = 'templates/summary-minimal.md';\r\n type = 'minimal';\r\n } else if (hasDecisions || fileCount > 6 || taskCount > 5) {\r\n template = 'templates/summary-complex.md';\r\n type = 'complex';\r\n }\r\n\r\n const result: TemplateSelectResult = { template, type, taskCount, fileCount, hasDecisions };\r\n output(result, raw, template);\r\n } catch (thrown: unknown) {\r\n const selectErr = thrown as Error;\r\n output(\r\n { template: 'templates/summary-standard.md', type: 'standard', error: selectErr.message } as TemplateSelectResult,\r\n raw,\r\n 'templates/summary-standard.md',\r\n );\r\n }\r\n}\r\n\r\n// ─── Template Fill ───────────────────────────────────────────────────────────\r\n\r\nexport function cmdTemplateFill(\r\n cwd: string,\r\n templateType: string | null,\r\n options: TemplateFillOptions,\r\n raw: boolean,\r\n): void {\r\n if (!templateType) {\r\n error('template type required: summary, plan, or verification');\r\n }\r\n if (!options.phase) {\r\n error('--phase required');\r\n }\r\n\r\n const phaseInfo = findPhaseInternal(cwd, options.phase);\r\n if (!phaseInfo) {\r\n output({ error: 'Phase not found', phase: options.phase }, raw);\r\n return;\r\n }\r\n\r\n const padded = normalizePhaseName(options.phase);\r\n const today = todayISO();\r\n const phaseName = options.name || phaseInfo.phase_name || 'Unnamed';\r\n const phaseSlug = phaseInfo.phase_slug || generateSlugInternal(phaseName);\r\n const phaseId = `${padded}-${phaseSlug}`;\r\n const planNum = (options.plan || '01').padStart(2, '0');\r\n const fields = options.fields || {};\r\n\r\n let frontmatter: FrontmatterData;\r\n let body: string;\r\n let fileName: string;\r\n\r\n switch (templateType) {\r\n case 'summary': {\r\n frontmatter = {\r\n phase: phaseId,\r\n plan: planNum,\r\n subsystem: '[primary category]',\r\n tags: [],\r\n provides: [],\r\n affects: [],\r\n 'tech-stack': { added: [], patterns: [] },\r\n 'key-files': { created: [], modified: [] },\r\n 'key-decisions': [],\r\n 'patterns-established': [],\r\n duration: '[X]min',\r\n completed: today,\r\n ...fields,\r\n };\r\n body = [\r\n `# Phase ${options.phase}: ${phaseName} Summary`,\r\n '',\r\n '**[Substantive one-liner describing outcome]**',\r\n '',\r\n '## Performance',\r\n '- **Duration:** [time]',\r\n '- **Tasks:** [count completed]',\r\n '- **Files modified:** [count]',\r\n '',\r\n '## Accomplishments',\r\n '- [Key outcome 1]',\r\n '- [Key outcome 2]',\r\n '',\r\n '## Task Commits',\r\n '1. **Task 1: [task name]** - `hash`',\r\n '',\r\n '## Files Created/Modified',\r\n '- `path/to/file.ts` - What it does',\r\n '',\r\n '## Decisions & Deviations',\r\n '[Key decisions or \"None - followed plan as specified\"]',\r\n '',\r\n '## Next Phase Readiness',\r\n '[What\\'s ready for next phase]',\r\n ].join('\\n');\r\n fileName = `${padded}-${planNum}-SUMMARY.md`;\r\n break;\r\n }\r\n case 'plan': {\r\n const planType = options.type || 'execute';\r\n const wave = parseInt(options.wave || '1') || 1;\r\n frontmatter = {\r\n phase: phaseId,\r\n plan: planNum,\r\n type: planType,\r\n wave,\r\n depends_on: [],\r\n files_modified: [],\r\n autonomous: true,\r\n user_setup: [],\r\n must_haves: { truths: [], artifacts: [], key_links: [] },\r\n ...fields,\r\n };\r\n body = [\r\n `# Phase ${options.phase} Plan ${planNum}: [Title]`,\r\n '',\r\n '## Objective',\r\n '- **What:** [What this plan builds]',\r\n '- **Why:** [Why it matters for the phase goal]',\r\n '- **Output:** [Concrete deliverable]',\r\n '',\r\n '## Context',\r\n '@.planning/PROJECT.md',\r\n '@.planning/ROADMAP.md',\r\n '@.planning/STATE.md',\r\n '',\r\n '## Tasks',\r\n '',\r\n '',\r\n ' [Task name]',\r\n ' [file paths]',\r\n ' [What to do]',\r\n ' [How to verify]',\r\n ' [Definition of done]',\r\n '',\r\n '',\r\n '## Verification',\r\n '[How to verify this plan achieved its objective]',\r\n '',\r\n '## Success Criteria',\r\n '- [ ] [Criterion 1]',\r\n '- [ ] [Criterion 2]',\r\n ].join('\\n');\r\n fileName = `${padded}-${planNum}-PLAN.md`;\r\n break;\r\n }\r\n case 'verification': {\r\n frontmatter = {\r\n phase: phaseId,\r\n verified: new Date().toISOString(),\r\n status: 'pending',\r\n score: '0/0 must-haves verified',\r\n ...fields,\r\n };\r\n body = [\r\n `# Phase ${options.phase}: ${phaseName} — Verification`,\r\n '',\r\n '## Observable Truths',\r\n '| # | Truth | Status | Evidence |',\r\n '|---|-------|--------|----------|',\r\n '| 1 | [Truth] | pending | |',\r\n '',\r\n '## Required Artifacts',\r\n '| Artifact | Expected | Status | Details |',\r\n '|----------|----------|--------|---------|',\r\n '| [path] | [what] | pending | |',\r\n '',\r\n '## Key Link Verification',\r\n '| From | To | Via | Status | Details |',\r\n '|------|----|----|--------|---------|',\r\n '| [source] | [target] | [connection] | pending | |',\r\n '',\r\n '## Requirements Coverage',\r\n '| Requirement | Status | Blocking Issue |',\r\n '|-------------|--------|----------------|',\r\n '| [req] | pending | |',\r\n '',\r\n '## Result',\r\n '[Pending verification]',\r\n ].join('\\n');\r\n fileName = `${padded}-VERIFICATION.md`;\r\n break;\r\n }\r\n default:\r\n error(`Unknown template type: ${templateType}. Available: summary, plan, verification`);\r\n return;\r\n }\r\n\r\n const fullContent = `---\\n${reconstructFrontmatter(frontmatter)}\\n---\\n\\n${body}\\n`;\r\n const outPath = path.join(cwd, phaseInfo.directory, fileName);\r\n\r\n if (fs.existsSync(outPath)) {\r\n output({ error: 'File already exists', path: path.relative(cwd, outPath) }, raw);\r\n return;\r\n }\r\n\r\n fs.writeFileSync(outPath, fullContent, 'utf-8');\r\n const relPath = path.relative(cwd, outPath);\r\n const result: TemplateFillResult = { created: true, path: relPath, template: templateType };\r\n output(result, raw, relPath);\r\n}\r\n","/**\r\n * Dashboard Launcher — Shared dashboard lifecycle utilities\r\n *\r\n * Used by both cli.ts (tool-router) and install.ts (npx entry point).\r\n */\r\n\r\nimport fs from 'node:fs';\r\nimport path from 'node:path';\r\nimport os from 'node:os';\r\nimport { spawn, execSync } from 'node:child_process';\r\nimport { createRequire } from 'node:module';\r\n\r\n// ─── Constants ──────────────────────────────────────────────────────────────\r\n\r\nexport const DEFAULT_PORT = 3333;\r\nexport const PORT_RANGE_END = 3343;\r\nexport const HEALTH_TIMEOUT_MS = 1500;\r\n\r\n// ─── Health check ───────────────────────────────────────────────────────────\r\n\r\n/**\r\n * Check if a dashboard health endpoint is responding on the given port.\r\n */\r\nexport async function checkHealth(port: number, timeoutMs: number = HEALTH_TIMEOUT_MS): Promise {\r\n try {\r\n const controller = new AbortController();\r\n const timer = setTimeout(() => controller.abort(), timeoutMs);\r\n const res = await fetch(`http://localhost:${port}/api/health`, {\r\n signal: controller.signal,\r\n });\r\n clearTimeout(timer);\r\n if (res.ok) {\r\n const data = await res.json() as { status?: string };\r\n return data.status === 'ok';\r\n }\r\n return false;\r\n } catch {\r\n return false;\r\n }\r\n}\r\n\r\n/**\r\n * Scan the port range for a running dashboard instance.\r\n * Returns the port number if found, null otherwise.\r\n */\r\nexport async function findRunningDashboard(timeoutMs: number = HEALTH_TIMEOUT_MS): Promise {\r\n for (let port = DEFAULT_PORT; port <= PORT_RANGE_END; port++) {\r\n const running = await checkHealth(port, timeoutMs);\r\n if (running) return port;\r\n }\r\n return null;\r\n}\r\n\r\n// ─── Process management ─────────────────────────────────────────────────────\r\n\r\n/**\r\n * Kill processes listening on the given port. Cross-platform.\r\n */\r\nexport function killProcessOnPort(port: number): void {\r\n if (process.platform === 'win32') {\r\n try {\r\n const result = execSync(`netstat -ano | findstr :${port} | findstr LISTENING`, {\r\n encoding: 'utf-8',\r\n }).trim();\r\n const lines = result.split('\\n');\r\n const pids = new Set();\r\n for (const line of lines) {\r\n const parts = line.trim().split(/\\s+/);\r\n const pid = parts[parts.length - 1];\r\n if (pid && pid !== '0') pids.add(pid);\r\n }\r\n for (const pid of pids) {\r\n try {\r\n execSync(`taskkill /PID ${pid} /F`, { stdio: 'ignore' });\r\n } catch {\r\n // Process may have already exited\r\n }\r\n }\r\n } catch {\r\n // No process found on port or command failed\r\n }\r\n } else {\r\n try {\r\n execSync(`lsof -i :${port} -t | xargs kill -SIGTERM 2>/dev/null`, { stdio: 'ignore' });\r\n } catch {\r\n // No process found on port or command failed\r\n }\r\n }\r\n}\r\n\r\n// ─── Server resolution ──────────────────────────────────────────────────────\r\n\r\n/**\r\n * Resolve the dashboard server entry point path.\r\n * Tries: local project install, global install, @maxsim/dashboard package, monorepo walk.\r\n */\r\nexport function resolveDashboardServer(): string | null {\r\n // Strategy 0: Installed standalone build (production path)\r\n const localDashboard = path.join(process.cwd(), '.claude', 'dashboard', 'server.js');\r\n if (fs.existsSync(localDashboard)) return localDashboard;\r\n const globalDashboard = path.join(os.homedir(), '.claude', 'dashboard', 'server.js');\r\n if (fs.existsSync(globalDashboard)) return globalDashboard;\r\n\r\n // Strategy 1: Resolve from @maxsim/dashboard package\r\n try {\r\n const require_ = createRequire(import.meta.url);\r\n const pkgPath = require_.resolve('@maxsim/dashboard/package.json');\r\n const pkgDir = path.dirname(pkgPath);\r\n\r\n const serverJs = path.join(pkgDir, 'server.js');\r\n if (fs.existsSync(serverJs)) return serverJs;\r\n\r\n const serverTs = path.join(pkgDir, 'server.ts');\r\n if (fs.existsSync(serverTs)) return serverTs;\r\n } catch {\r\n // @maxsim/dashboard not resolvable\r\n }\r\n\r\n // Strategy 2: Walk up from this file to find the monorepo root\r\n try {\r\n let dir = path.dirname(new URL(import.meta.url).pathname);\r\n // On Windows, remove leading / from /C:/...\r\n if (process.platform === 'win32' && dir.startsWith('/')) {\r\n dir = dir.slice(1);\r\n }\r\n for (let i = 0; i < 5; i++) {\r\n const candidate = path.join(dir, 'packages', 'dashboard', 'server.ts');\r\n if (fs.existsSync(candidate)) return candidate;\r\n const candidateJs = path.join(dir, 'packages', 'dashboard', 'server.js');\r\n if (fs.existsSync(candidateJs)) return candidateJs;\r\n dir = path.dirname(dir);\r\n }\r\n } catch {\r\n // Fallback walk failed\r\n }\r\n\r\n return null;\r\n}\r\n\r\n// ─── node-pty installation ──────────────────────────────────────────────────\r\n\r\n/**\r\n * Ensure node-pty is installed in the dashboard directory.\r\n * Returns true if node-pty is available after this call.\r\n */\r\nexport function ensureNodePty(serverDir: string): boolean {\r\n const ptyModulePath = path.join(serverDir, 'node_modules', 'node-pty');\r\n if (fs.existsSync(ptyModulePath)) return true;\r\n\r\n // Ensure a package.json exists so npm install works\r\n const dashPkgPath = path.join(serverDir, 'package.json');\r\n if (!fs.existsSync(dashPkgPath)) {\r\n fs.writeFileSync(dashPkgPath, '{\"private\":true}\\n');\r\n }\r\n\r\n try {\r\n execSync('npm install node-pty --save-optional --no-audit --no-fund --loglevel=error', {\r\n cwd: serverDir,\r\n stdio: 'inherit',\r\n timeout: 120_000,\r\n });\r\n return true;\r\n } catch {\r\n return false;\r\n }\r\n}\r\n\r\n// ─── Dashboard config ───────────────────────────────────────────────────────\r\n\r\nexport interface DashboardConfig {\r\n projectCwd: string;\r\n networkMode: boolean;\r\n}\r\n\r\n/**\r\n * Read dashboard.json config from the parent directory of the dashboard dir.\r\n */\r\nexport function readDashboardConfig(serverPath: string): DashboardConfig {\r\n const dashboardDir = path.dirname(serverPath);\r\n const dashboardConfigPath = path.join(path.dirname(dashboardDir), 'dashboard.json');\r\n let projectCwd = process.cwd();\r\n let networkMode = false;\r\n\r\n if (fs.existsSync(dashboardConfigPath)) {\r\n try {\r\n const config = JSON.parse(fs.readFileSync(dashboardConfigPath, 'utf8')) as {\r\n projectCwd?: string;\r\n networkMode?: boolean;\r\n };\r\n if (config.projectCwd) projectCwd = config.projectCwd;\r\n networkMode = config.networkMode ?? false;\r\n } catch {\r\n // Use defaults\r\n }\r\n }\r\n\r\n return { projectCwd, networkMode };\r\n}\r\n\r\n// ─── Spawn ──────────────────────────────────────────────────────────────────\r\n\r\nexport interface SpawnDashboardOptions {\r\n serverPath: string;\r\n projectCwd: string;\r\n networkMode?: boolean;\r\n nodeEnv?: string;\r\n}\r\n\r\n/**\r\n * Spawn the dashboard server as a detached background process.\r\n * Returns the child process PID, or null if spawn failed.\r\n */\r\nexport function spawnDashboard(options: SpawnDashboardOptions): number | null {\r\n const { serverPath, projectCwd, networkMode = false, nodeEnv = 'production' } = options;\r\n const serverDir = path.dirname(serverPath);\r\n\r\n const isTsFile = serverPath.endsWith('.ts');\r\n const runner = 'node';\r\n const runnerArgs: string[] = isTsFile ? ['--import', 'tsx', serverPath] : [serverPath];\r\n\r\n const child = spawn(runner, runnerArgs, {\r\n cwd: serverDir,\r\n detached: true,\r\n stdio: 'ignore',\r\n env: {\r\n ...process.env,\r\n MAXSIM_PROJECT_CWD: projectCwd,\r\n MAXSIM_NETWORK_MODE: networkMode ? '1' : '0',\r\n NODE_ENV: isTsFile ? 'development' : nodeEnv,\r\n },\r\n // On Windows, use shell to ensure detached works correctly\r\n ...(process.platform === 'win32' ? { shell: true } : {}),\r\n });\r\n\r\n child.unref();\r\n return child.pid ?? null;\r\n}\r\n\r\n// ─── Poll for readiness ─────────────────────────────────────────────────────\r\n\r\n/**\r\n * Poll the port range until a dashboard health endpoint responds.\r\n * Returns the URL if found within the timeout, null otherwise.\r\n */\r\nexport async function waitForDashboard(\r\n pollIntervalMs: number = 500,\r\n pollTimeoutMs: number = 20000,\r\n healthTimeoutMs: number = 1000,\r\n): Promise {\r\n const deadline = Date.now() + pollTimeoutMs;\r\n\r\n while (Date.now() < deadline) {\r\n await new Promise(r => setTimeout(r, pollIntervalMs));\r\n for (let p = DEFAULT_PORT; p <= PORT_RANGE_END; p++) {\r\n const running = await checkHealth(p, healthTimeoutMs);\r\n if (running) return `http://localhost:${p}`;\r\n }\r\n }\r\n return null;\r\n}\r\n","/**\r\n * Skill Context — Provides MAXSIM state to skills via a single CLI call\r\n */\r\n\r\nimport fs from 'node:fs';\r\nimport path from 'node:path';\r\n\r\nimport {\r\n loadConfig,\r\n findPhaseInternal,\r\n pathExistsInternal,\r\n safeReadFile,\r\n output,\r\n statePath,\r\n isPlanFile,\r\n isSummaryFile,\r\n} from './core.js';\r\n\r\nimport { stateExtractField } from './state.js';\r\nimport type { AppConfig, PhaseSearchResult } from './types.js';\r\n\r\n// ─── Types ───────────────────────────────────────────────────────────────────\r\n\r\nexport interface SkillContextResult {\r\n skill_name: string;\r\n planning_dir: string | null;\r\n phase: {\r\n number: string | null;\r\n name: string | null;\r\n directory: string | null;\r\n };\r\n state: {\r\n current_focus: string | null;\r\n position: string | null;\r\n status: string | null;\r\n };\r\n blockers: string[];\r\n decisions: Array<{ phase: string; summary: string; rationale: string }>;\r\n artifacts: {\r\n plan: string | null;\r\n summary: string | null;\r\n research: string | null;\r\n context: string | null;\r\n verification: string | null;\r\n };\r\n config: {\r\n model_profile: string;\r\n commit_docs: boolean;\r\n branching_strategy: string;\r\n };\r\n}\r\n\r\n// ─── Command ─────────────────────────────────────────────────────────────────\r\n\r\nexport function cmdSkillContext(cwd: string, skillName: string, raw: boolean): void {\r\n const planningExists = pathExistsInternal(cwd, '.planning');\r\n\r\n if (!planningExists) {\r\n const result: SkillContextResult = {\r\n skill_name: skillName,\r\n planning_dir: null,\r\n phase: { number: null, name: null, directory: null },\r\n state: { current_focus: null, position: null, status: null },\r\n blockers: [],\r\n decisions: [],\r\n artifacts: { plan: null, summary: null, research: null, context: null, verification: null },\r\n config: { model_profile: 'balanced', commit_docs: true, branching_strategy: 'none' },\r\n };\r\n output(result, raw);\r\n return;\r\n }\r\n\r\n // Load config\r\n const config: AppConfig = loadConfig(cwd);\r\n\r\n // Read STATE.md\r\n const stateContent = safeReadFile(statePath(cwd));\r\n let currentPhase: string | null = null;\r\n let currentPhaseName: string | null = null;\r\n let currentPlan: string | null = null;\r\n let status: string | null = null;\r\n const blockers: string[] = [];\r\n const decisions: Array<{ phase: string; summary: string; rationale: string }> = [];\r\n\r\n if (stateContent) {\r\n currentPhase = stateExtractField(stateContent, 'Current Phase');\r\n currentPhaseName = stateExtractField(stateContent, 'Current Phase Name');\r\n currentPlan = stateExtractField(stateContent, 'Current Plan');\r\n status = stateExtractField(stateContent, 'Status');\r\n\r\n // Extract blockers\r\n const blockersMatch = stateContent.match(/##\\s*Blockers\\s*\\n([\\s\\S]*?)(?=\\n##|$)/i);\r\n if (blockersMatch) {\r\n const items = blockersMatch[1].match(/^-\\s+(.+)$/gm) || [];\r\n for (const item of items) {\r\n blockers.push(item.replace(/^-\\s+/, '').trim());\r\n }\r\n }\r\n\r\n // Extract decisions\r\n const decisionsMatch = stateContent.match(/##\\s*Decisions Made[\\s\\S]*?\\n\\|[^\\n]+\\n\\|[-|\\s]+\\n([\\s\\S]*?)(?=\\n##|\\n$|$)/i);\r\n if (decisionsMatch) {\r\n const rows = decisionsMatch[1].trim().split('\\n').filter(r => r.includes('|'));\r\n for (const row of rows) {\r\n const cells = row.split('|').map(c => c.trim()).filter(Boolean);\r\n if (cells.length >= 3) {\r\n decisions.push({ phase: cells[0], summary: cells[1], rationale: cells[2] });\r\n }\r\n }\r\n }\r\n }\r\n\r\n // Find phase directory and artifacts\r\n const phaseInfo: PhaseSearchResult | null = currentPhase\r\n ? findPhaseInternal(cwd, currentPhase)\r\n : null;\r\n\r\n const phaseDir = phaseInfo?.directory ?? null;\r\n const phaseNumber = phaseInfo?.phase_number ?? currentPhase;\r\n const phaseName = phaseInfo?.phase_name ?? currentPhaseName;\r\n\r\n // Resolve artifact paths within the phase directory\r\n const artifacts: SkillContextResult['artifacts'] = {\r\n plan: null,\r\n summary: null,\r\n research: null,\r\n context: null,\r\n verification: null,\r\n };\r\n\r\n if (phaseDir) {\r\n const absPhaseDir = path.isAbsolute(phaseDir) ? phaseDir : path.join(cwd, phaseDir);\r\n try {\r\n const files = fs.readdirSync(absPhaseDir);\r\n for (const f of files) {\r\n if (isPlanFile(f)) {\r\n artifacts.plan = path.join(phaseDir, f);\r\n } else if (isSummaryFile(f)) {\r\n artifacts.summary = path.join(phaseDir, f);\r\n } else if (f.endsWith('-RESEARCH.md') || f === 'RESEARCH.md') {\r\n artifacts.research = path.join(phaseDir, f);\r\n } else if (f.endsWith('-CONTEXT.md') || f === 'CONTEXT.md') {\r\n artifacts.context = path.join(phaseDir, f);\r\n } else if (f.endsWith('-VERIFICATION.md') || f === 'VERIFICATION.md') {\r\n artifacts.verification = path.join(phaseDir, f);\r\n }\r\n }\r\n } catch {\r\n // Phase directory unreadable — leave artifacts as null\r\n }\r\n }\r\n\r\n // Build position string\r\n const totalPlans = stateContent ? stateExtractField(stateContent, 'Total Plans in Phase') : null;\r\n const position = currentPlan && totalPlans\r\n ? `Plan ${currentPlan} of ${totalPlans}`\r\n : currentPlan\r\n ? `Plan ${currentPlan}`\r\n : null;\r\n\r\n const result: SkillContextResult = {\r\n skill_name: skillName,\r\n planning_dir: '.planning',\r\n phase: {\r\n number: phaseNumber ?? null,\r\n name: phaseName ?? null,\r\n directory: phaseDir,\r\n },\r\n state: {\r\n current_focus: currentPhaseName ?? null,\r\n position,\r\n status,\r\n },\r\n blockers,\r\n decisions,\r\n artifacts,\r\n config: {\r\n model_profile: config.model_profile,\r\n commit_docs: config.commit_docs,\r\n branching_strategy: config.branching_strategy,\r\n },\r\n };\r\n\r\n output(result, raw);\r\n}\r\n","/**\r\n * Init — Compound init commands for workflow bootstrapping\r\n *\r\n * Ported from maxsim/bin/lib/init.cjs\r\n */\r\n\r\nimport fs from 'node:fs';\r\nimport path from 'node:path';\r\nimport os from 'node:os';\r\nimport { execSync } from 'node:child_process';\r\n\r\nimport {\r\n loadConfig,\r\n resolveModelInternal,\r\n findPhaseInternal,\r\n getRoadmapPhaseInternal,\r\n pathExistsInternal,\r\n generateSlugInternal,\r\n getMilestoneInfo,\r\n output,\r\n error,\r\n debugLog,\r\n planningPath,\r\n phasesPath,\r\n todayISO,\r\n listSubDirs,\r\n isSummaryFile,\r\n isPlanFile,\r\n} from './core.js';\r\n\r\nimport type {\r\n AgentType,\r\n BranchingStrategy,\r\n ModelResolution,\r\n PhaseSearchResult,\r\n MilestoneInfo,\r\n AppConfig,\r\n} from './types.js';\r\n\r\n// ─── Init result types ──────────────────────────────────────────────────────\r\n\r\nexport type WorkflowType =\r\n | 'execute-phase'\r\n | 'plan-phase'\r\n | 'new-project'\r\n | 'new-milestone'\r\n | 'quick'\r\n | 'resume'\r\n | 'verify-work'\r\n | 'phase-op'\r\n | 'todos'\r\n | 'milestone-op'\r\n | 'map-codebase'\r\n | 'init-existing'\r\n | 'progress';\r\n\r\nexport interface ExecutePhaseContext {\r\n executor_model: ModelResolution;\r\n verifier_model: ModelResolution;\r\n commit_docs: boolean;\r\n parallelization: boolean;\r\n branching_strategy: BranchingStrategy;\r\n phase_branch_template: string;\r\n milestone_branch_template: string;\r\n verifier_enabled: boolean;\r\n phase_found: boolean;\r\n phase_dir: string | null;\r\n phase_number: string | null;\r\n phase_name: string | null;\r\n phase_slug: string | null;\r\n phase_req_ids: string | null;\r\n plans: string[];\r\n summaries: string[];\r\n incomplete_plans: string[];\r\n plan_count: number;\r\n incomplete_count: number;\r\n branch_name: string | null;\r\n milestone_version: string;\r\n milestone_name: string;\r\n milestone_slug: string | null;\r\n state_exists: boolean;\r\n roadmap_exists: boolean;\r\n config_exists: boolean;\r\n state_path: string;\r\n roadmap_path: string;\r\n config_path: string;\r\n}\r\n\r\nexport interface PlanPhaseContext {\r\n researcher_model: ModelResolution;\r\n planner_model: ModelResolution;\r\n checker_model: ModelResolution;\r\n research_enabled: boolean;\r\n plan_checker_enabled: boolean;\r\n commit_docs: boolean;\r\n phase_found: boolean;\r\n phase_dir: string | null;\r\n phase_number: string | null;\r\n phase_name: string | null;\r\n phase_slug: string | null;\r\n padded_phase: string | null;\r\n phase_req_ids: string | null;\r\n has_research: boolean;\r\n has_context: boolean;\r\n has_plans: boolean;\r\n plan_count: number;\r\n planning_exists: boolean;\r\n roadmap_exists: boolean;\r\n state_path: string;\r\n roadmap_path: string;\r\n requirements_path: string;\r\n context_path?: string;\r\n research_path?: string;\r\n verification_path?: string;\r\n uat_path?: string;\r\n}\r\n\r\nexport interface NewProjectContext {\r\n researcher_model: ModelResolution;\r\n synthesizer_model: ModelResolution;\r\n roadmapper_model: ModelResolution;\r\n commit_docs: boolean;\r\n project_exists: boolean;\r\n has_codebase_map: boolean;\r\n planning_exists: boolean;\r\n has_existing_code: boolean;\r\n has_package_file: boolean;\r\n is_brownfield: boolean;\r\n needs_codebase_map: boolean;\r\n has_git: boolean;\r\n brave_search_available: boolean;\r\n project_path: string;\r\n}\r\n\r\nexport interface NewMilestoneContext {\r\n researcher_model: ModelResolution;\r\n synthesizer_model: ModelResolution;\r\n roadmapper_model: ModelResolution;\r\n commit_docs: boolean;\r\n research_enabled: boolean;\r\n current_milestone: string;\r\n current_milestone_name: string;\r\n project_exists: boolean;\r\n roadmap_exists: boolean;\r\n state_exists: boolean;\r\n project_path: string;\r\n roadmap_path: string;\r\n state_path: string;\r\n}\r\n\r\nexport interface QuickContext {\r\n planner_model: ModelResolution;\r\n executor_model: ModelResolution;\r\n checker_model: ModelResolution;\r\n verifier_model: ModelResolution;\r\n commit_docs: boolean;\r\n next_num: number;\r\n slug: string | null;\r\n description: string | null;\r\n date: string;\r\n timestamp: string;\r\n quick_dir: string;\r\n task_dir: string | null;\r\n roadmap_exists: boolean;\r\n planning_exists: boolean;\r\n}\r\n\r\nexport interface ResumeContext {\r\n state_exists: boolean;\r\n roadmap_exists: boolean;\r\n project_exists: boolean;\r\n planning_exists: boolean;\r\n state_path: string;\r\n roadmap_path: string;\r\n project_path: string;\r\n has_interrupted_agent: boolean;\r\n interrupted_agent_id: string | null;\r\n commit_docs: boolean;\r\n}\r\n\r\nexport interface VerifyWorkContext {\r\n planner_model: ModelResolution;\r\n checker_model: ModelResolution;\r\n commit_docs: boolean;\r\n phase_found: boolean;\r\n phase_dir: string | null;\r\n phase_number: string | null;\r\n phase_name: string | null;\r\n has_verification: boolean;\r\n}\r\n\r\nexport interface PhaseOpContext {\r\n commit_docs: boolean;\r\n brave_search: boolean;\r\n phase_found: boolean;\r\n phase_dir: string | null;\r\n phase_number: string | null;\r\n phase_name: string | null;\r\n phase_slug: string | null;\r\n padded_phase: string | null;\r\n has_research: boolean;\r\n has_context: boolean;\r\n has_plans: boolean;\r\n has_verification: boolean;\r\n plan_count: number;\r\n roadmap_exists: boolean;\r\n planning_exists: boolean;\r\n state_path: string;\r\n roadmap_path: string;\r\n requirements_path: string;\r\n context_path?: string;\r\n research_path?: string;\r\n verification_path?: string;\r\n uat_path?: string;\r\n}\r\n\r\nexport interface TodosContext {\r\n commit_docs: boolean;\r\n date: string;\r\n timestamp: string;\r\n todo_count: number;\r\n todos: Array<{\r\n file: string;\r\n created: string;\r\n title: string;\r\n area: string;\r\n path: string;\r\n }>;\r\n area_filter: string | null;\r\n pending_dir: string;\r\n completed_dir: string;\r\n planning_exists: boolean;\r\n todos_dir_exists: boolean;\r\n pending_dir_exists: boolean;\r\n}\r\n\r\nexport interface MilestoneOpContext {\r\n commit_docs: boolean;\r\n milestone_version: string;\r\n milestone_name: string;\r\n milestone_slug: string | null;\r\n phase_count: number;\r\n completed_phases: number;\r\n all_phases_complete: boolean;\r\n archived_milestones: string[];\r\n archive_count: number;\r\n project_exists: boolean;\r\n roadmap_exists: boolean;\r\n state_exists: boolean;\r\n archive_exists: boolean;\r\n phases_dir_exists: boolean;\r\n}\r\n\r\nexport interface MapCodebaseContext {\r\n mapper_model: ModelResolution;\r\n commit_docs: boolean;\r\n search_gitignored: boolean;\r\n parallelization: boolean;\r\n codebase_dir: string;\r\n existing_maps: string[];\r\n has_maps: boolean;\r\n planning_exists: boolean;\r\n codebase_dir_exists: boolean;\r\n}\r\n\r\nexport interface InitExistingContext {\r\n researcher_model: ModelResolution;\r\n synthesizer_model: ModelResolution;\r\n roadmapper_model: ModelResolution;\r\n mapper_model: ModelResolution;\r\n commit_docs: boolean;\r\n project_exists: boolean;\r\n planning_exists: boolean;\r\n planning_files: string[];\r\n has_codebase_map: boolean;\r\n has_existing_code: boolean;\r\n has_package_file: boolean;\r\n has_git: boolean;\r\n has_readme: boolean;\r\n conflict_detected: boolean;\r\n existing_file_count: number;\r\n brave_search_available: boolean;\r\n parallelization: boolean;\r\n project_path: string;\r\n codebase_dir: string;\r\n}\r\n\r\ninterface ProgressPhaseInfo {\r\n number: string;\r\n name: string | null;\r\n directory: string;\r\n status: string;\r\n plan_count: number;\r\n summary_count: number;\r\n has_research: boolean;\r\n}\r\n\r\nexport interface ProgressContext {\r\n executor_model: ModelResolution;\r\n planner_model: ModelResolution;\r\n commit_docs: boolean;\r\n milestone_version: string;\r\n milestone_name: string;\r\n phases: ProgressPhaseInfo[];\r\n phase_count: number;\r\n completed_count: number;\r\n in_progress_count: number;\r\n current_phase: ProgressPhaseInfo | null;\r\n next_phase: ProgressPhaseInfo | null;\r\n paused_at: string | null;\r\n has_work_in_progress: boolean;\r\n project_exists: boolean;\r\n roadmap_exists: boolean;\r\n state_exists: boolean;\r\n state_path: string;\r\n roadmap_path: string;\r\n project_path: string;\r\n config_path: string;\r\n}\r\n\r\nexport type InitContext =\r\n | ExecutePhaseContext\r\n | PlanPhaseContext\r\n | NewProjectContext\r\n | NewMilestoneContext\r\n | QuickContext\r\n | ResumeContext\r\n | VerifyWorkContext\r\n | PhaseOpContext\r\n | TodosContext\r\n | MilestoneOpContext\r\n | MapCodebaseContext\r\n | InitExistingContext\r\n | ProgressContext;\r\n\r\n// ─── Helper: extract requirement IDs from roadmap phase section ─────────────\r\n\r\nfunction extractReqIds(cwd: string, phase: string): string | null {\r\n const roadmapPhase = getRoadmapPhaseInternal(cwd, phase);\r\n const reqMatch = roadmapPhase?.section?.match(/^\\*\\*Requirements\\*\\*:[^\\S\\n]*([^\\n]*)$/m);\r\n const reqExtracted = reqMatch\r\n ? reqMatch[1].replace(/[\\[\\]]/g, '').split(',').map((s: string) => s.trim()).filter(Boolean).join(', ')\r\n : null;\r\n return (reqExtracted && reqExtracted !== 'TBD') ? reqExtracted : null;\r\n}\r\n\r\n// ─── Helper: scan phase dir for artifact files ──────────────────────────────\r\n\r\ninterface PhaseArtifacts {\r\n context_path?: string;\r\n research_path?: string;\r\n verification_path?: string;\r\n uat_path?: string;\r\n}\r\n\r\nfunction scanPhaseArtifacts(cwd: string, phaseDirectory: string): PhaseArtifacts {\r\n const result: PhaseArtifacts = {};\r\n const phaseDirFull = path.join(cwd, phaseDirectory);\r\n try {\r\n const files = fs.readdirSync(phaseDirFull);\r\n const contextFile = files.find(f => f.endsWith('-CONTEXT.md') || f === 'CONTEXT.md');\r\n if (contextFile) {\r\n result.context_path = path.join(phaseDirectory, contextFile);\r\n }\r\n const researchFile = files.find(f => f.endsWith('-RESEARCH.md') || f === 'RESEARCH.md');\r\n if (researchFile) {\r\n result.research_path = path.join(phaseDirectory, researchFile);\r\n }\r\n const verificationFile = files.find(f => f.endsWith('-VERIFICATION.md') || f === 'VERIFICATION.md');\r\n if (verificationFile) {\r\n result.verification_path = path.join(phaseDirectory, verificationFile);\r\n }\r\n const uatFile = files.find(f => f.endsWith('-UAT.md') || f === 'UAT.md');\r\n if (uatFile) {\r\n result.uat_path = path.join(phaseDirectory, uatFile);\r\n }\r\n } catch (e) {\r\n /* optional op, ignore */\r\n debugLog(e);\r\n }\r\n return result;\r\n}\r\n\r\n// ─── Init commands ──────────────────────────────────────────────────────────\r\n\r\nexport function cmdInitExecutePhase(cwd: string, phase: string | undefined, raw: boolean): void {\r\n if (!phase) {\r\n error('phase required for init execute-phase');\r\n }\r\n\r\n const config = loadConfig(cwd);\r\n const phaseInfo = findPhaseInternal(cwd, phase!);\r\n const milestone = getMilestoneInfo(cwd);\r\n const phase_req_ids = extractReqIds(cwd, phase!);\r\n\r\n const result: ExecutePhaseContext = {\r\n executor_model: resolveModelInternal(cwd, 'maxsim-executor'),\r\n verifier_model: resolveModelInternal(cwd, 'maxsim-verifier'),\r\n commit_docs: config.commit_docs,\r\n parallelization: config.parallelization,\r\n branching_strategy: config.branching_strategy,\r\n phase_branch_template: config.phase_branch_template,\r\n milestone_branch_template: config.milestone_branch_template,\r\n verifier_enabled: config.verifier,\r\n phase_found: !!phaseInfo,\r\n phase_dir: phaseInfo?.directory ?? null,\r\n phase_number: phaseInfo?.phase_number ?? null,\r\n phase_name: phaseInfo?.phase_name ?? null,\r\n phase_slug: phaseInfo?.phase_slug ?? null,\r\n phase_req_ids,\r\n plans: phaseInfo?.plans ?? [],\r\n summaries: phaseInfo?.summaries ?? [],\r\n incomplete_plans: phaseInfo?.incomplete_plans ?? [],\r\n plan_count: phaseInfo?.plans?.length ?? 0,\r\n incomplete_count: phaseInfo?.incomplete_plans?.length ?? 0,\r\n branch_name: config.branching_strategy === 'phase' && phaseInfo\r\n ? config.phase_branch_template\r\n .replace('{phase}', phaseInfo.phase_number)\r\n .replace('{slug}', phaseInfo.phase_slug || 'phase')\r\n : config.branching_strategy === 'milestone'\r\n ? config.milestone_branch_template\r\n .replace('{milestone}', milestone.version)\r\n .replace('{slug}', generateSlugInternal(milestone.name) || 'milestone')\r\n : null,\r\n milestone_version: milestone.version,\r\n milestone_name: milestone.name,\r\n milestone_slug: generateSlugInternal(milestone.name),\r\n state_exists: pathExistsInternal(cwd, '.planning/STATE.md'),\r\n roadmap_exists: pathExistsInternal(cwd, '.planning/ROADMAP.md'),\r\n config_exists: pathExistsInternal(cwd, '.planning/config.json'),\r\n state_path: '.planning/STATE.md',\r\n roadmap_path: '.planning/ROADMAP.md',\r\n config_path: '.planning/config.json',\r\n };\r\n\r\n output(result, raw);\r\n}\r\n\r\nexport function cmdInitPlanPhase(cwd: string, phase: string | undefined, raw: boolean): void {\r\n if (!phase) {\r\n error('phase required for init plan-phase');\r\n }\r\n\r\n const config = loadConfig(cwd);\r\n const phaseInfo = findPhaseInternal(cwd, phase!);\r\n const phase_req_ids = extractReqIds(cwd, phase!);\r\n\r\n const result: PlanPhaseContext = {\r\n researcher_model: resolveModelInternal(cwd, 'maxsim-phase-researcher'),\r\n planner_model: resolveModelInternal(cwd, 'maxsim-planner'),\r\n checker_model: resolveModelInternal(cwd, 'maxsim-plan-checker'),\r\n research_enabled: config.research,\r\n plan_checker_enabled: config.plan_checker,\r\n commit_docs: config.commit_docs,\r\n phase_found: !!phaseInfo,\r\n phase_dir: phaseInfo?.directory ?? null,\r\n phase_number: phaseInfo?.phase_number ?? null,\r\n phase_name: phaseInfo?.phase_name ?? null,\r\n phase_slug: phaseInfo?.phase_slug ?? null,\r\n padded_phase: phaseInfo?.phase_number?.padStart(2, '0') ?? null,\r\n phase_req_ids,\r\n has_research: phaseInfo?.has_research ?? false,\r\n has_context: phaseInfo?.has_context ?? false,\r\n has_plans: (phaseInfo?.plans?.length ?? 0) > 0,\r\n plan_count: phaseInfo?.plans?.length ?? 0,\r\n planning_exists: pathExistsInternal(cwd, '.planning'),\r\n roadmap_exists: pathExistsInternal(cwd, '.planning/ROADMAP.md'),\r\n state_path: '.planning/STATE.md',\r\n roadmap_path: '.planning/ROADMAP.md',\r\n requirements_path: '.planning/REQUIREMENTS.md',\r\n };\r\n\r\n if (phaseInfo?.directory) {\r\n const artifacts = scanPhaseArtifacts(cwd, phaseInfo.directory);\r\n if (artifacts.context_path) result.context_path = artifacts.context_path;\r\n if (artifacts.research_path) result.research_path = artifacts.research_path;\r\n if (artifacts.verification_path) result.verification_path = artifacts.verification_path;\r\n if (artifacts.uat_path) result.uat_path = artifacts.uat_path;\r\n }\r\n\r\n output(result, raw);\r\n}\r\n\r\nexport function cmdInitNewProject(cwd: string, raw: boolean): void {\r\n const config = loadConfig(cwd);\r\n\r\n const homedir = os.homedir();\r\n const braveKeyFile = path.join(homedir, '.maxsim', 'brave_api_key');\r\n const hasBraveSearch = !!(process.env.BRAVE_API_KEY || fs.existsSync(braveKeyFile));\r\n\r\n let hasCode = false;\r\n let hasPackageFile = false;\r\n try {\r\n const files = execSync('find . -maxdepth 3 \\\\( -name \"*.ts\" -o -name \"*.js\" -o -name \"*.py\" -o -name \"*.go\" -o -name \"*.rs\" -o -name \"*.swift\" -o -name \"*.java\" \\\\) 2>/dev/null | grep -v node_modules | grep -v .git | head -5', {\r\n cwd,\r\n encoding: 'utf-8',\r\n stdio: ['pipe', 'pipe', 'pipe'],\r\n });\r\n hasCode = files.trim().length > 0;\r\n } catch (e) {\r\n /* optional op, ignore */\r\n debugLog(e);\r\n }\r\n\r\n hasPackageFile = pathExistsInternal(cwd, 'package.json') ||\r\n pathExistsInternal(cwd, 'requirements.txt') ||\r\n pathExistsInternal(cwd, 'Cargo.toml') ||\r\n pathExistsInternal(cwd, 'go.mod') ||\r\n pathExistsInternal(cwd, 'Package.swift');\r\n\r\n const result: NewProjectContext = {\r\n researcher_model: resolveModelInternal(cwd, 'maxsim-project-researcher'),\r\n synthesizer_model: resolveModelInternal(cwd, 'maxsim-research-synthesizer'),\r\n roadmapper_model: resolveModelInternal(cwd, 'maxsim-roadmapper'),\r\n commit_docs: config.commit_docs,\r\n project_exists: pathExistsInternal(cwd, '.planning/PROJECT.md'),\r\n has_codebase_map: pathExistsInternal(cwd, '.planning/codebase'),\r\n planning_exists: pathExistsInternal(cwd, '.planning'),\r\n has_existing_code: hasCode,\r\n has_package_file: hasPackageFile,\r\n is_brownfield: hasCode || hasPackageFile,\r\n needs_codebase_map: (hasCode || hasPackageFile) && !pathExistsInternal(cwd, '.planning/codebase'),\r\n has_git: pathExistsInternal(cwd, '.git'),\r\n brave_search_available: hasBraveSearch,\r\n project_path: '.planning/PROJECT.md',\r\n };\r\n\r\n output(result, raw);\r\n}\r\n\r\nexport function cmdInitNewMilestone(cwd: string, raw: boolean): void {\r\n const config = loadConfig(cwd);\r\n const milestone = getMilestoneInfo(cwd);\r\n\r\n const result: NewMilestoneContext = {\r\n researcher_model: resolveModelInternal(cwd, 'maxsim-project-researcher'),\r\n synthesizer_model: resolveModelInternal(cwd, 'maxsim-research-synthesizer'),\r\n roadmapper_model: resolveModelInternal(cwd, 'maxsim-roadmapper'),\r\n commit_docs: config.commit_docs,\r\n research_enabled: config.research,\r\n current_milestone: milestone.version,\r\n current_milestone_name: milestone.name,\r\n project_exists: pathExistsInternal(cwd, '.planning/PROJECT.md'),\r\n roadmap_exists: pathExistsInternal(cwd, '.planning/ROADMAP.md'),\r\n state_exists: pathExistsInternal(cwd, '.planning/STATE.md'),\r\n project_path: '.planning/PROJECT.md',\r\n roadmap_path: '.planning/ROADMAP.md',\r\n state_path: '.planning/STATE.md',\r\n };\r\n\r\n output(result, raw);\r\n}\r\n\r\nexport function cmdInitQuick(cwd: string, description: string | undefined, raw: boolean): void {\r\n const config = loadConfig(cwd);\r\n const now = new Date();\r\n const slug = description ? generateSlugInternal(description)?.substring(0, 40) ?? null : null;\r\n\r\n const quickDir = planningPath(cwd, 'quick');\r\n let nextNum = 1;\r\n try {\r\n const existing = fs.readdirSync(quickDir)\r\n .filter(f => /^\\d+-/.test(f))\r\n .map(f => parseInt(f.split('-')[0], 10))\r\n .filter(n => !isNaN(n));\r\n if (existing.length > 0) {\r\n nextNum = Math.max(...existing) + 1;\r\n }\r\n } catch (e) {\r\n /* optional op, ignore */\r\n debugLog(e);\r\n }\r\n\r\n const result: QuickContext = {\r\n planner_model: resolveModelInternal(cwd, 'maxsim-planner'),\r\n executor_model: resolveModelInternal(cwd, 'maxsim-executor'),\r\n checker_model: resolveModelInternal(cwd, 'maxsim-plan-checker'),\r\n verifier_model: resolveModelInternal(cwd, 'maxsim-verifier'),\r\n commit_docs: config.commit_docs,\r\n next_num: nextNum,\r\n slug,\r\n description: description ?? null,\r\n date: todayISO(),\r\n timestamp: now.toISOString(),\r\n quick_dir: '.planning/quick',\r\n task_dir: slug ? `.planning/quick/${nextNum}-${slug}` : null,\r\n roadmap_exists: pathExistsInternal(cwd, '.planning/ROADMAP.md'),\r\n planning_exists: pathExistsInternal(cwd, '.planning'),\r\n };\r\n\r\n output(result, raw);\r\n}\r\n\r\nexport function cmdInitResume(cwd: string, raw: boolean): void {\r\n const config = loadConfig(cwd);\r\n\r\n let interruptedAgentId: string | null = null;\r\n try {\r\n interruptedAgentId = fs.readFileSync(planningPath(cwd, 'current-agent-id.txt'), 'utf-8').trim();\r\n } catch (e) {\r\n /* optional op, ignore */\r\n debugLog(e);\r\n }\r\n\r\n const result: ResumeContext = {\r\n state_exists: pathExistsInternal(cwd, '.planning/STATE.md'),\r\n roadmap_exists: pathExistsInternal(cwd, '.planning/ROADMAP.md'),\r\n project_exists: pathExistsInternal(cwd, '.planning/PROJECT.md'),\r\n planning_exists: pathExistsInternal(cwd, '.planning'),\r\n state_path: '.planning/STATE.md',\r\n roadmap_path: '.planning/ROADMAP.md',\r\n project_path: '.planning/PROJECT.md',\r\n has_interrupted_agent: !!interruptedAgentId,\r\n interrupted_agent_id: interruptedAgentId,\r\n commit_docs: config.commit_docs,\r\n };\r\n\r\n output(result, raw);\r\n}\r\n\r\nexport function cmdInitVerifyWork(cwd: string, phase: string | undefined, raw: boolean): void {\r\n if (!phase) {\r\n error('phase required for init verify-work');\r\n }\r\n\r\n const config = loadConfig(cwd);\r\n const phaseInfo = findPhaseInternal(cwd, phase!);\r\n\r\n const result: VerifyWorkContext = {\r\n planner_model: resolveModelInternal(cwd, 'maxsim-planner'),\r\n checker_model: resolveModelInternal(cwd, 'maxsim-plan-checker'),\r\n commit_docs: config.commit_docs,\r\n phase_found: !!phaseInfo,\r\n phase_dir: phaseInfo?.directory ?? null,\r\n phase_number: phaseInfo?.phase_number ?? null,\r\n phase_name: phaseInfo?.phase_name ?? null,\r\n has_verification: phaseInfo?.has_verification ?? false,\r\n };\r\n\r\n output(result, raw);\r\n}\r\n\r\nexport function cmdInitPhaseOp(cwd: string, phase: string | undefined, raw: boolean): void {\r\n const config = loadConfig(cwd);\r\n let phaseInfo = findPhaseInternal(cwd, phase ?? '');\r\n\r\n if (!phaseInfo) {\r\n const roadmapPhase = getRoadmapPhaseInternal(cwd, phase ?? '');\r\n if (roadmapPhase?.found) {\r\n const phaseName = roadmapPhase.phase_name;\r\n phaseInfo = {\r\n found: true,\r\n directory: '', // no directory yet\r\n phase_number: roadmapPhase.phase_number,\r\n phase_name: phaseName,\r\n phase_slug: phaseName ? phaseName.toLowerCase().replace(/[^a-z0-9]+/g, '-').replace(/^-+|-+$/g, '') : null,\r\n plans: [],\r\n summaries: [],\r\n incomplete_plans: [],\r\n has_research: false,\r\n has_context: false,\r\n has_verification: false,\r\n };\r\n }\r\n }\r\n\r\n const result: PhaseOpContext = {\r\n commit_docs: config.commit_docs,\r\n brave_search: config.brave_search,\r\n phase_found: !!phaseInfo,\r\n phase_dir: phaseInfo?.directory || null,\r\n phase_number: phaseInfo?.phase_number ?? null,\r\n phase_name: phaseInfo?.phase_name ?? null,\r\n phase_slug: phaseInfo?.phase_slug ?? null,\r\n padded_phase: phaseInfo?.phase_number?.padStart(2, '0') ?? null,\r\n has_research: phaseInfo?.has_research ?? false,\r\n has_context: phaseInfo?.has_context ?? false,\r\n has_plans: (phaseInfo?.plans?.length ?? 0) > 0,\r\n has_verification: phaseInfo?.has_verification ?? false,\r\n plan_count: phaseInfo?.plans?.length ?? 0,\r\n roadmap_exists: pathExistsInternal(cwd, '.planning/ROADMAP.md'),\r\n planning_exists: pathExistsInternal(cwd, '.planning'),\r\n state_path: '.planning/STATE.md',\r\n roadmap_path: '.planning/ROADMAP.md',\r\n requirements_path: '.planning/REQUIREMENTS.md',\r\n };\r\n\r\n if (phaseInfo?.directory) {\r\n const artifacts = scanPhaseArtifacts(cwd, phaseInfo.directory);\r\n if (artifacts.context_path) result.context_path = artifacts.context_path;\r\n if (artifacts.research_path) result.research_path = artifacts.research_path;\r\n if (artifacts.verification_path) result.verification_path = artifacts.verification_path;\r\n if (artifacts.uat_path) result.uat_path = artifacts.uat_path;\r\n }\r\n\r\n output(result, raw);\r\n}\r\n\r\nexport function cmdInitTodos(cwd: string, area: string | undefined, raw: boolean): void {\r\n const config = loadConfig(cwd);\r\n const now = new Date();\r\n\r\n const pendingDir = planningPath(cwd, 'todos', 'pending');\r\n let count = 0;\r\n const todos: Array<{ file: string; created: string; title: string; area: string; path: string }> = [];\r\n\r\n try {\r\n const files = fs.readdirSync(pendingDir).filter(f => f.endsWith('.md'));\r\n for (const file of files) {\r\n try {\r\n const content = fs.readFileSync(path.join(pendingDir, file), 'utf-8');\r\n const createdMatch = content.match(/^created:\\s*(.+)$/m);\r\n const titleMatch = content.match(/^title:\\s*(.+)$/m);\r\n const areaMatch = content.match(/^area:\\s*(.+)$/m);\r\n const todoArea = areaMatch ? areaMatch[1].trim() : 'general';\r\n\r\n if (area && todoArea !== area) continue;\r\n\r\n count++;\r\n todos.push({\r\n file,\r\n created: createdMatch ? createdMatch[1].trim() : 'unknown',\r\n title: titleMatch ? titleMatch[1].trim() : 'Untitled',\r\n area: todoArea,\r\n path: path.join('.planning', 'todos', 'pending', file),\r\n });\r\n } catch (e) {\r\n /* optional op, ignore */\r\n debugLog(e);\r\n }\r\n }\r\n } catch (e) {\r\n /* optional op, ignore */\r\n debugLog(e);\r\n }\r\n\r\n const result: TodosContext = {\r\n commit_docs: config.commit_docs,\r\n date: todayISO(),\r\n timestamp: now.toISOString(),\r\n todo_count: count,\r\n todos,\r\n area_filter: area ?? null,\r\n pending_dir: '.planning/todos/pending',\r\n completed_dir: '.planning/todos/completed',\r\n planning_exists: pathExistsInternal(cwd, '.planning'),\r\n todos_dir_exists: pathExistsInternal(cwd, '.planning/todos'),\r\n pending_dir_exists: pathExistsInternal(cwd, '.planning/todos/pending'),\r\n };\r\n\r\n output(result, raw);\r\n}\r\n\r\nexport function cmdInitMilestoneOp(cwd: string, raw: boolean): void {\r\n const config = loadConfig(cwd);\r\n const milestone = getMilestoneInfo(cwd);\r\n\r\n let phaseCount = 0;\r\n let completedPhases = 0;\r\n const phasesDir = phasesPath(cwd);\r\n try {\r\n const dirs = listSubDirs(phasesDir);\r\n phaseCount = dirs.length;\r\n\r\n for (const dir of dirs) {\r\n try {\r\n const phaseFiles = fs.readdirSync(path.join(phasesDir, dir));\r\n const hasSummary = phaseFiles.some(f => isSummaryFile(f));\r\n if (hasSummary) completedPhases++;\r\n } catch (e) {\r\n /* optional op, ignore */\r\n debugLog(e);\r\n }\r\n }\r\n } catch (e) {\r\n /* optional op, ignore */\r\n debugLog(e);\r\n }\r\n\r\n const archiveDir = planningPath(cwd, 'archive');\r\n let archivedMilestones: string[] = [];\r\n try {\r\n archivedMilestones = listSubDirs(archiveDir);\r\n } catch (e) {\r\n /* optional op, ignore */\r\n debugLog(e);\r\n }\r\n\r\n const result: MilestoneOpContext = {\r\n commit_docs: config.commit_docs,\r\n milestone_version: milestone.version,\r\n milestone_name: milestone.name,\r\n milestone_slug: generateSlugInternal(milestone.name),\r\n phase_count: phaseCount,\r\n completed_phases: completedPhases,\r\n all_phases_complete: phaseCount > 0 && phaseCount === completedPhases,\r\n archived_milestones: archivedMilestones,\r\n archive_count: archivedMilestones.length,\r\n project_exists: pathExistsInternal(cwd, '.planning/PROJECT.md'),\r\n roadmap_exists: pathExistsInternal(cwd, '.planning/ROADMAP.md'),\r\n state_exists: pathExistsInternal(cwd, '.planning/STATE.md'),\r\n archive_exists: pathExistsInternal(cwd, '.planning/archive'),\r\n phases_dir_exists: pathExistsInternal(cwd, '.planning/phases'),\r\n };\r\n\r\n output(result, raw);\r\n}\r\n\r\nexport function cmdInitMapCodebase(cwd: string, raw: boolean): void {\r\n const config = loadConfig(cwd);\r\n\r\n const codebaseDir = planningPath(cwd, 'codebase');\r\n let existingMaps: string[] = [];\r\n try {\r\n existingMaps = fs.readdirSync(codebaseDir).filter(f => f.endsWith('.md'));\r\n } catch (e) {\r\n /* optional op, ignore */\r\n debugLog(e);\r\n }\r\n\r\n const result: MapCodebaseContext = {\r\n mapper_model: resolveModelInternal(cwd, 'maxsim-codebase-mapper'),\r\n commit_docs: config.commit_docs,\r\n search_gitignored: config.search_gitignored,\r\n parallelization: config.parallelization,\r\n codebase_dir: '.planning/codebase',\r\n existing_maps: existingMaps,\r\n has_maps: existingMaps.length > 0,\r\n planning_exists: pathExistsInternal(cwd, '.planning'),\r\n codebase_dir_exists: pathExistsInternal(cwd, '.planning/codebase'),\r\n };\r\n\r\n output(result, raw);\r\n}\r\n\r\nexport function cmdInitExisting(cwd: string, raw: boolean): void {\r\n const config = loadConfig(cwd);\r\n\r\n const homedir = os.homedir();\r\n const braveKeyFile = path.join(homedir, '.maxsim', 'brave_api_key');\r\n const hasBraveSearch = !!(process.env.BRAVE_API_KEY || fs.existsSync(braveKeyFile));\r\n\r\n // Detect existing code (same logic as cmdInitNewProject)\r\n let hasCode = false;\r\n let hasPackageFile = false;\r\n try {\r\n const files = execSync(\r\n 'find . -maxdepth 3 \\\\( -name \"*.ts\" -o -name \"*.js\" -o -name \"*.py\" -o -name \"*.go\" -o -name \"*.rs\" -o -name \"*.swift\" -o -name \"*.java\" \\\\) 2>/dev/null | grep -v node_modules | grep -v .git | head -5',\r\n { cwd, encoding: 'utf-8', stdio: ['pipe', 'pipe', 'pipe'] }\r\n );\r\n hasCode = files.trim().length > 0;\r\n } catch (e) {\r\n debugLog(e);\r\n }\r\n\r\n hasPackageFile =\r\n pathExistsInternal(cwd, 'package.json') ||\r\n pathExistsInternal(cwd, 'requirements.txt') ||\r\n pathExistsInternal(cwd, 'Cargo.toml') ||\r\n pathExistsInternal(cwd, 'go.mod') ||\r\n pathExistsInternal(cwd, 'Package.swift');\r\n\r\n // Detect existing .planning/ content for conflict dialog\r\n let planningFiles: string[] = [];\r\n try {\r\n const planDir = planningPath(cwd);\r\n if (fs.existsSync(planDir)) {\r\n planningFiles = fs\r\n .readdirSync(planDir, { recursive: true })\r\n .map((f) => String(f))\r\n .filter((f) => !f.startsWith('.'));\r\n }\r\n } catch (e) {\r\n debugLog(e);\r\n }\r\n\r\n const result: InitExistingContext = {\r\n researcher_model: resolveModelInternal(cwd, 'maxsim-project-researcher'),\r\n synthesizer_model: resolveModelInternal(cwd, 'maxsim-research-synthesizer'),\r\n roadmapper_model: resolveModelInternal(cwd, 'maxsim-roadmapper'),\r\n mapper_model: resolveModelInternal(cwd, 'maxsim-codebase-mapper'),\r\n commit_docs: config.commit_docs,\r\n project_exists: pathExistsInternal(cwd, '.planning/PROJECT.md'),\r\n planning_exists: pathExistsInternal(cwd, '.planning'),\r\n planning_files: planningFiles,\r\n has_codebase_map: pathExistsInternal(cwd, '.planning/codebase'),\r\n has_existing_code: hasCode,\r\n has_package_file: hasPackageFile,\r\n has_git: pathExistsInternal(cwd, '.git'),\r\n has_readme: pathExistsInternal(cwd, 'README.md'),\r\n conflict_detected: planningFiles.length > 0,\r\n existing_file_count: planningFiles.length,\r\n brave_search_available: hasBraveSearch,\r\n parallelization: config.parallelization,\r\n project_path: '.planning/PROJECT.md',\r\n codebase_dir: '.planning/codebase',\r\n };\r\n\r\n output(result, raw);\r\n}\r\n\r\nexport function cmdInitProgress(cwd: string, raw: boolean): void {\r\n const config = loadConfig(cwd);\r\n const milestone = getMilestoneInfo(cwd);\r\n\r\n const progressPhasesDir = phasesPath(cwd);\r\n const phases: ProgressPhaseInfo[] = [];\r\n let currentPhase: ProgressPhaseInfo | null = null;\r\n let nextPhase: ProgressPhaseInfo | null = null;\r\n\r\n try {\r\n const dirs = listSubDirs(progressPhasesDir, true);\r\n\r\n for (const dir of dirs) {\r\n const match = dir.match(/^(\\d+(?:\\.\\d+)?)-?(.*)/);\r\n const phaseNumber = match ? match[1] : dir;\r\n const phaseName = match && match[2] ? match[2] : null;\r\n\r\n const phaseDirPath = path.join(progressPhasesDir, dir);\r\n const phaseFiles = fs.readdirSync(phaseDirPath);\r\n\r\n const plans = phaseFiles.filter(f => isPlanFile(f));\r\n const summaries = phaseFiles.filter(f => isSummaryFile(f));\r\n const hasResearch = phaseFiles.some(f => f.endsWith('-RESEARCH.md') || f === 'RESEARCH.md');\r\n\r\n const status = summaries.length >= plans.length && plans.length > 0 ? 'complete' :\r\n plans.length > 0 ? 'in_progress' :\r\n hasResearch ? 'researched' : 'pending';\r\n\r\n const phaseInfo: ProgressPhaseInfo = {\r\n number: phaseNumber,\r\n name: phaseName,\r\n directory: path.join('.planning', 'phases', dir),\r\n status,\r\n plan_count: plans.length,\r\n summary_count: summaries.length,\r\n has_research: hasResearch,\r\n };\r\n\r\n phases.push(phaseInfo);\r\n\r\n if (!currentPhase && (status === 'in_progress' || status === 'researched')) {\r\n currentPhase = phaseInfo;\r\n }\r\n if (!nextPhase && status === 'pending') {\r\n nextPhase = phaseInfo;\r\n }\r\n }\r\n } catch (e) {\r\n /* optional op, ignore */\r\n debugLog(e);\r\n }\r\n\r\n let pausedAt: string | null = null;\r\n try {\r\n const state = fs.readFileSync(planningPath(cwd, 'STATE.md'), 'utf-8');\r\n const pauseMatch = state.match(/\\*\\*Paused At:\\*\\*\\s*(.+)/);\r\n if (pauseMatch) pausedAt = pauseMatch[1].trim();\r\n } catch (e) {\r\n /* optional op, ignore */\r\n debugLog(e);\r\n }\r\n\r\n const result: ProgressContext = {\r\n executor_model: resolveModelInternal(cwd, 'maxsim-executor'),\r\n planner_model: resolveModelInternal(cwd, 'maxsim-planner'),\r\n commit_docs: config.commit_docs,\r\n milestone_version: milestone.version,\r\n milestone_name: milestone.name,\r\n phases,\r\n phase_count: phases.length,\r\n completed_count: phases.filter(p => p.status === 'complete').length,\r\n in_progress_count: phases.filter(p => p.status === 'in_progress').length,\r\n current_phase: currentPhase,\r\n next_phase: nextPhase,\r\n paused_at: pausedAt,\r\n has_work_in_progress: !!currentPhase,\r\n project_exists: pathExistsInternal(cwd, '.planning/PROJECT.md'),\r\n roadmap_exists: pathExistsInternal(cwd, '.planning/ROADMAP.md'),\r\n state_exists: pathExistsInternal(cwd, '.planning/STATE.md'),\r\n state_path: '.planning/STATE.md',\r\n roadmap_path: '.planning/ROADMAP.md',\r\n project_path: '.planning/PROJECT.md',\r\n config_path: '.planning/config.json',\r\n };\r\n\r\n output(result, raw);\r\n}\r\n","/**\r\n * MAXSIM Tools — CLI utility for MAXSIM workflow operations\r\n *\r\n * Usage: node maxsim-tools.cjs [args] [--raw]\r\n */\r\n\r\nimport * as fs from 'node:fs';\r\nimport * as path from 'node:path';\r\nimport { spawn } from 'node:child_process';\r\n\r\nimport type { TimestampFormat } from './core/index.js';\r\n\r\nimport {\r\n error,\r\n CliOutput,\r\n CliError,\r\n writeOutput,\r\n cmdFrontmatterGet,\r\n cmdFrontmatterSet,\r\n cmdFrontmatterMerge,\r\n cmdFrontmatterValidate,\r\n cmdConfigEnsureSection,\r\n cmdConfigSet,\r\n cmdConfigGet,\r\n cmdGenerateSlug,\r\n cmdCurrentTimestamp,\r\n cmdListTodos,\r\n cmdVerifyPathExists,\r\n cmdHistoryDigest,\r\n cmdResolveModel,\r\n cmdCommit,\r\n cmdSummaryExtract,\r\n cmdWebsearch,\r\n cmdProgressRender,\r\n cmdTodoComplete,\r\n cmdScaffold,\r\n cmdStateLoad,\r\n cmdStateGet,\r\n cmdStatePatch,\r\n cmdStateUpdate,\r\n cmdStateAdvancePlan,\r\n cmdStateRecordMetric,\r\n cmdStateUpdateProgress,\r\n cmdStateAddDecision,\r\n cmdStateAddBlocker,\r\n cmdStateResolveBlocker,\r\n cmdStateRecordSession,\r\n cmdStateSnapshot,\r\n cmdRoadmapGetPhase,\r\n cmdRoadmapAnalyze,\r\n cmdRoadmapUpdatePlanProgress,\r\n cmdRequirementsMarkComplete,\r\n cmdMilestoneComplete,\r\n cmdVerifySummary,\r\n cmdVerifyPlanStructure,\r\n cmdVerifyPhaseCompleteness,\r\n cmdVerifyReferences,\r\n cmdVerifyCommits,\r\n cmdVerifyArtifacts,\r\n cmdVerifyKeyLinks,\r\n cmdValidateConsistency,\r\n cmdValidateHealth,\r\n cmdPhasesList,\r\n cmdPhaseNextDecimal,\r\n cmdFindPhase,\r\n cmdPhasePlanIndex,\r\n cmdPhaseAdd,\r\n cmdPhaseInsert,\r\n cmdPhaseRemove,\r\n cmdPhaseComplete,\r\n cmdTemplateSelect,\r\n cmdTemplateFill,\r\n cmdInitExecutePhase,\r\n cmdInitPlanPhase,\r\n cmdInitNewProject,\r\n cmdInitNewMilestone,\r\n cmdInitQuick,\r\n cmdInitResume,\r\n cmdInitVerifyWork,\r\n cmdInitPhaseOp,\r\n cmdInitTodos,\r\n cmdInitMilestoneOp,\r\n cmdInitMapCodebase,\r\n cmdInitExisting,\r\n cmdInitProgress,\r\n cmdSkillContext,\r\n} from './core/index.js';\r\n\r\n// ─── Arg parsing utilities ───────────────────────────────────────────────────\r\n\r\n/** Extract a single named flag's value from args */\r\nfunction getFlag(args: string[], flag: string): string | null {\r\n const idx = args.indexOf(flag);\r\n return idx !== -1 ? args[idx + 1] ?? null : null;\r\n}\r\n\r\n/** Extract multiple named flags at once. Keys are flag names without -- prefix. */\r\nfunction getFlags(args: string[], ...flags: string[]): Record {\r\n const result: Record = {};\r\n for (const flag of flags) {\r\n const idx = args.indexOf(`--${flag}`);\r\n result[flag] = idx !== -1 ? args[idx + 1] ?? null : null;\r\n }\r\n return result;\r\n}\r\n\r\n/** Check if a boolean flag is present */\r\nfunction hasFlag(args: string[], flag: string): boolean {\r\n return args.includes(`--${flag}`);\r\n}\r\n\r\n// ─── Command handler type ────────────────────────────────────────────────────\r\n\r\ntype Handler = (args: string[], cwd: string, raw: boolean) => void | Promise;\r\n\r\n// ─── Subcommand handlers ─────────────────────────────────────────────────────\r\n\r\nconst handleState: Handler = (args, cwd, raw) => {\r\n const sub = args[1];\r\n const handlers: Record void | Promise> = {\r\n 'update': () => cmdStateUpdate(cwd, args[2], args[3]),\r\n 'get': () => cmdStateGet(cwd, args[2], raw),\r\n 'patch': () => {\r\n const patches: Record = {};\r\n for (let i = 2; i < args.length; i += 2) {\r\n const key = args[i].replace(/^--/, '');\r\n const value = args[i + 1];\r\n if (key && value !== undefined) patches[key] = value;\r\n }\r\n cmdStatePatch(cwd, patches, raw);\r\n },\r\n 'advance-plan': () => cmdStateAdvancePlan(cwd, raw),\r\n 'record-metric': () => {\r\n const f = getFlags(args, 'phase', 'plan', 'duration', 'tasks', 'files');\r\n cmdStateRecordMetric(cwd, {\r\n phase: f.phase ?? '', plan: f.plan ?? '', duration: f.duration ?? '',\r\n tasks: f.tasks ?? undefined, files: f.files ?? undefined,\r\n }, raw);\r\n },\r\n 'update-progress': () => cmdStateUpdateProgress(cwd, raw),\r\n 'add-decision': () => {\r\n const f = getFlags(args, 'phase', 'summary', 'summary-file', 'rationale', 'rationale-file');\r\n cmdStateAddDecision(cwd, {\r\n phase: f.phase ?? undefined, summary: f.summary ?? undefined,\r\n summary_file: f['summary-file'] ?? undefined,\r\n rationale: f.rationale ?? '', rationale_file: f['rationale-file'] ?? undefined,\r\n }, raw);\r\n },\r\n 'add-blocker': () => {\r\n const f = getFlags(args, 'text', 'text-file');\r\n cmdStateAddBlocker(cwd, { text: f.text ?? undefined, text_file: f['text-file'] ?? undefined }, raw);\r\n },\r\n 'resolve-blocker': () => cmdStateResolveBlocker(cwd, getFlag(args, '--text'), raw),\r\n 'record-session': () => {\r\n const f = getFlags(args, 'stopped-at', 'resume-file');\r\n cmdStateRecordSession(cwd, {\r\n stopped_at: f['stopped-at'] ?? undefined,\r\n resume_file: f['resume-file'] ?? 'None',\r\n }, raw);\r\n },\r\n };\r\n\r\n const handler = sub ? handlers[sub] : undefined;\r\n if (handler) return handler();\r\n cmdStateLoad(cwd, raw);\r\n};\r\n\r\nconst handleTemplate: Handler = (args, cwd, raw) => {\r\n const sub = args[1];\r\n if (sub === 'select') {\r\n cmdTemplateSelect(cwd, args[2], raw);\r\n } else if (sub === 'fill') {\r\n const f = getFlags(args, 'phase', 'plan', 'name', 'type', 'wave', 'fields');\r\n cmdTemplateFill(cwd, args[2], {\r\n phase: f.phase ?? '', plan: f.plan ?? undefined, name: f.name ?? undefined,\r\n type: f.type ?? 'execute', wave: f.wave ?? '1',\r\n fields: f.fields ? JSON.parse(f.fields) : {},\r\n }, raw);\r\n } else {\r\n error('Unknown template subcommand. Available: select, fill');\r\n }\r\n};\r\n\r\nconst handleFrontmatter: Handler = (args, cwd, raw) => {\r\n const sub = args[1];\r\n const file = args[2];\r\n const handlers: Record void> = {\r\n 'get': () => cmdFrontmatterGet(cwd, file, getFlag(args, '--field'), raw),\r\n 'set': () => cmdFrontmatterSet(cwd, file, getFlag(args, '--field'), getFlag(args, '--value') ?? undefined, raw),\r\n 'merge': () => cmdFrontmatterMerge(cwd, file, getFlag(args, '--data'), raw),\r\n 'validate': () => cmdFrontmatterValidate(cwd, file, getFlag(args, '--schema'), raw),\r\n };\r\n const handler = sub ? handlers[sub] : undefined;\r\n if (handler) return handler();\r\n error('Unknown frontmatter subcommand. Available: get, set, merge, validate');\r\n};\r\n\r\nconst handleVerify: Handler = async (args, cwd, raw) => {\r\n const sub = args[1];\r\n const handlers: Record void | Promise> = {\r\n 'plan-structure': () => cmdVerifyPlanStructure(cwd, args[2], raw),\r\n 'phase-completeness': () => cmdVerifyPhaseCompleteness(cwd, args[2], raw),\r\n 'references': () => cmdVerifyReferences(cwd, args[2], raw),\r\n 'commits': () => cmdVerifyCommits(cwd, args.slice(2), raw),\r\n 'artifacts': () => cmdVerifyArtifacts(cwd, args[2], raw),\r\n 'key-links': () => cmdVerifyKeyLinks(cwd, args[2], raw),\r\n };\r\n const handler = sub ? handlers[sub] : undefined;\r\n if (handler) return handler();\r\n error('Unknown verify subcommand. Available: plan-structure, phase-completeness, references, commits, artifacts, key-links');\r\n};\r\n\r\nconst handlePhases: Handler = (args, cwd, raw) => {\r\n const sub = args[1];\r\n if (sub === 'list') {\r\n const f = getFlags(args, 'type', 'phase');\r\n cmdPhasesList(cwd, { type: f.type, phase: f.phase, includeArchived: hasFlag(args, 'include-archived') }, raw);\r\n } else {\r\n error('Unknown phases subcommand. Available: list');\r\n }\r\n};\r\n\r\nconst handleRoadmap: Handler = (args, cwd, raw) => {\r\n const sub = args[1];\r\n const handlers: Record void> = {\r\n 'get-phase': () => cmdRoadmapGetPhase(cwd, args[2], raw),\r\n 'analyze': () => cmdRoadmapAnalyze(cwd, raw),\r\n 'update-plan-progress': () => cmdRoadmapUpdatePlanProgress(cwd, args[2], raw),\r\n };\r\n const handler = sub ? handlers[sub] : undefined;\r\n if (handler) return handler();\r\n error('Unknown roadmap subcommand. Available: get-phase, analyze, update-plan-progress');\r\n};\r\n\r\nconst handlePhase: Handler = (args, cwd, raw) => {\r\n const sub = args[1];\r\n const handlers: Record void> = {\r\n 'next-decimal': () => cmdPhaseNextDecimal(cwd, args[2], raw),\r\n 'add': () => cmdPhaseAdd(cwd, args.slice(2).join(' '), raw),\r\n 'insert': () => cmdPhaseInsert(cwd, args[2], args.slice(3).join(' '), raw),\r\n 'remove': () => cmdPhaseRemove(cwd, args[2], { force: hasFlag(args, 'force') }, raw),\r\n 'complete': () => cmdPhaseComplete(cwd, args[2], raw),\r\n };\r\n const handler = sub ? handlers[sub] : undefined;\r\n if (handler) return handler();\r\n error('Unknown phase subcommand. Available: next-decimal, add, insert, remove, complete');\r\n};\r\n\r\nconst handleMilestone: Handler = (args, cwd, raw) => {\r\n const sub = args[1];\r\n if (sub === 'complete') {\r\n const nameIndex = args.indexOf('--name');\r\n let milestoneName: string | null = null;\r\n if (nameIndex !== -1) {\r\n const nameArgs: string[] = [];\r\n for (let i = nameIndex + 1; i < args.length; i++) {\r\n if (args[i].startsWith('--')) break;\r\n nameArgs.push(args[i]);\r\n }\r\n milestoneName = nameArgs.join(' ') || null;\r\n }\r\n cmdMilestoneComplete(cwd, args[2], {\r\n name: milestoneName ?? undefined,\r\n archivePhases: hasFlag(args, 'archive-phases'),\r\n }, raw);\r\n } else {\r\n error('Unknown milestone subcommand. Available: complete');\r\n }\r\n};\r\n\r\nconst handleValidate: Handler = (args, cwd, raw) => {\r\n const sub = args[1];\r\n const handlers: Record void> = {\r\n 'consistency': () => cmdValidateConsistency(cwd, raw),\r\n 'health': () => cmdValidateHealth(cwd, { repair: hasFlag(args, 'repair') }, raw),\r\n };\r\n const handler = sub ? handlers[sub] : undefined;\r\n if (handler) return handler();\r\n error('Unknown validate subcommand. Available: consistency, health');\r\n};\r\n\r\nconst handleInit: Handler = (args, cwd, raw) => {\r\n const workflow = args[1];\r\n const handlers: Record void> = {\r\n 'execute-phase': () => cmdInitExecutePhase(cwd, args[2], raw),\r\n 'plan-phase': () => cmdInitPlanPhase(cwd, args[2], raw),\r\n 'new-project': () => cmdInitNewProject(cwd, raw),\r\n 'new-milestone': () => cmdInitNewMilestone(cwd, raw),\r\n 'quick': () => cmdInitQuick(cwd, args.slice(2).join(' '), raw),\r\n 'resume': () => cmdInitResume(cwd, raw),\r\n 'verify-work': () => cmdInitVerifyWork(cwd, args[2], raw),\r\n 'phase-op': () => cmdInitPhaseOp(cwd, args[2], raw),\r\n 'todos': () => cmdInitTodos(cwd, args[2], raw),\r\n 'milestone-op': () => cmdInitMilestoneOp(cwd, raw),\r\n 'map-codebase': () => cmdInitMapCodebase(cwd, raw),\r\n 'init-existing': () => cmdInitExisting(cwd, raw),\r\n 'progress': () => cmdInitProgress(cwd, raw),\r\n };\r\n const handler = workflow ? handlers[workflow] : undefined;\r\n if (handler) return handler();\r\n error(`Unknown init workflow: ${workflow}\\nAvailable: execute-phase, plan-phase, new-project, new-milestone, quick, resume, verify-work, phase-op, todos, milestone-op, map-codebase, init-existing, progress`);\r\n};\r\n\r\n// ─── Command registry ────────────────────────────────────────────────────────\r\n\r\nconst COMMANDS: Record = {\r\n 'state': handleState,\r\n 'resolve-model': (args, cwd, raw) => cmdResolveModel(cwd, args[1], raw),\r\n 'find-phase': (args, cwd, raw) => cmdFindPhase(cwd, args[1], raw),\r\n 'commit': async (args, cwd, raw) => {\r\n const files = args.indexOf('--files') !== -1\r\n ? args.slice(args.indexOf('--files') + 1).filter(a => !a.startsWith('--'))\r\n : [];\r\n await cmdCommit(cwd, args[1], files, raw, hasFlag(args, 'amend'));\r\n },\r\n 'verify-summary': async (args, cwd, raw) => {\r\n const countIndex = args.indexOf('--check-count');\r\n const checkCount = countIndex !== -1 ? parseInt(args[countIndex + 1], 10) : 2;\r\n await cmdVerifySummary(cwd, args[1], checkCount, raw);\r\n },\r\n 'template': handleTemplate,\r\n 'frontmatter': handleFrontmatter,\r\n 'verify': handleVerify,\r\n 'generate-slug': (args, _cwd, raw) => cmdGenerateSlug(args[1], raw),\r\n 'current-timestamp': (args, _cwd, raw) => cmdCurrentTimestamp((args[1] || 'full') as TimestampFormat, raw),\r\n 'list-todos': (args, cwd, raw) => cmdListTodos(cwd, args[1], raw),\r\n 'verify-path-exists': (args, cwd, raw) => cmdVerifyPathExists(cwd, args[1], raw),\r\n 'config-ensure-section': (_args, cwd, raw) => cmdConfigEnsureSection(cwd, raw),\r\n 'config-set': (args, cwd, raw) => cmdConfigSet(cwd, args[1], args[2], raw),\r\n 'config-get': (args, cwd, raw) => cmdConfigGet(cwd, args[1], raw),\r\n 'history-digest': (_args, cwd, raw) => cmdHistoryDigest(cwd, raw),\r\n 'phases': handlePhases,\r\n 'roadmap': handleRoadmap,\r\n 'requirements': (args, cwd, raw) => {\r\n if (args[1] === 'mark-complete') cmdRequirementsMarkComplete(cwd, args.slice(2), raw);\r\n else error('Unknown requirements subcommand. Available: mark-complete');\r\n },\r\n 'phase': handlePhase,\r\n 'milestone': handleMilestone,\r\n 'validate': handleValidate,\r\n 'progress': (args, cwd, raw) => cmdProgressRender(cwd, args[1] || 'json', raw),\r\n 'todo': (args, cwd, raw) => {\r\n if (args[1] === 'complete') cmdTodoComplete(cwd, args[2], raw);\r\n else error('Unknown todo subcommand. Available: complete');\r\n },\r\n 'scaffold': (args, cwd, raw) => {\r\n const f = getFlags(args, 'phase', 'name');\r\n cmdScaffold(cwd, args[1], { phase: f.phase, name: f.name ? args.slice(args.indexOf('--name') + 1).join(' ') : null }, raw);\r\n },\r\n 'init': handleInit,\r\n 'skill-context': (args, cwd, raw) => cmdSkillContext(cwd, args[1] || 'unknown', raw),\r\n 'phase-plan-index': (args, cwd, raw) => cmdPhasePlanIndex(cwd, args[1], raw),\r\n 'state-snapshot': (_args, cwd, raw) => cmdStateSnapshot(cwd, raw),\r\n 'summary-extract': (args, cwd, raw) => {\r\n const fieldsIndex = args.indexOf('--fields');\r\n const fields = fieldsIndex !== -1 ? args[fieldsIndex + 1].split(',') : null;\r\n cmdSummaryExtract(cwd, args[1], fields, raw);\r\n },\r\n 'websearch': async (args, _cwd, raw) => {\r\n const f = getFlags(args, 'limit', 'freshness');\r\n await cmdWebsearch(args[1], {\r\n limit: f.limit ? parseInt(f.limit, 10) : 10,\r\n freshness: f.freshness ?? undefined,\r\n }, raw);\r\n },\r\n 'dashboard': (args) => handleDashboard(args.slice(1)),\r\n 'start-server': async () => {\r\n const serverPath = path.join(__dirname, 'mcp-server.cjs');\r\n const child = spawn(process.execPath, [serverPath], { stdio: 'inherit' });\r\n child.on('exit', (code) => process.exit(code ?? 0));\r\n },\r\n};\r\n\r\n// ─── Main ────────────────────────────────────────────────────────────────────\r\n\r\nasync function main(): Promise {\r\n try {\r\n const args: string[] = process.argv.slice(2);\r\n\r\n // Optional cwd override for sandboxed subagents running outside project root.\r\n let cwd: string = process.cwd();\r\n const cwdEqArg = args.find(arg => arg.startsWith('--cwd='));\r\n const cwdIdx = args.indexOf('--cwd');\r\n if (cwdEqArg) {\r\n const value = cwdEqArg.slice('--cwd='.length).trim();\r\n if (!value) error('Missing value for --cwd');\r\n args.splice(args.indexOf(cwdEqArg), 1);\r\n cwd = path.resolve(value);\r\n } else if (cwdIdx !== -1) {\r\n const value = args[cwdIdx + 1];\r\n if (!value || value.startsWith('--')) error('Missing value for --cwd');\r\n args.splice(cwdIdx, 2);\r\n cwd = path.resolve(value);\r\n }\r\n\r\n if (!fs.existsSync(cwd) || !fs.statSync(cwd).isDirectory()) {\r\n error(`Invalid --cwd: ${cwd}`);\r\n }\r\n\r\n const rawIndex = args.indexOf('--raw');\r\n const raw: boolean = rawIndex !== -1;\r\n if (rawIndex !== -1) args.splice(rawIndex, 1);\r\n\r\n const command: string | undefined = args[0];\r\n\r\n if (!command) {\r\n error(`Usage: maxsim-tools [args] [--raw] [--cwd ]\\nCommands: ${Object.keys(COMMANDS).join(', ')}`);\r\n }\r\n\r\n const handler = COMMANDS[command];\r\n if (!handler) {\r\n error(`Unknown command: ${command}`);\r\n }\r\n\r\n await handler(args, cwd, raw);\r\n } catch (thrown: unknown) {\r\n if (thrown instanceof CliOutput) {\r\n writeOutput(thrown);\r\n process.exit(0);\r\n }\r\n if (thrown instanceof CliError) {\r\n process.stderr.write('Error: ' + thrown.message + '\\n');\r\n process.exit(1);\r\n }\r\n // Re-throw unexpected errors\r\n throw thrown;\r\n }\r\n}\r\n\r\n// ─── Dashboard ───────────────────────────────────────────────────────────────\r\n\r\nimport {\r\n checkHealth,\r\n findRunningDashboard,\r\n killProcessOnPort,\r\n resolveDashboardServer,\r\n readDashboardConfig,\r\n ensureNodePty,\r\n spawnDashboard,\r\n DEFAULT_PORT,\r\n PORT_RANGE_END,\r\n} from './core/dashboard-launcher.js';\r\n\r\n/**\r\n * Dashboard launch command.\r\n *\r\n * Spawns the dashboard as a detached subprocess with MAXSIM_PROJECT_CWD set.\r\n * If the dashboard is already running (detected via /api/health), prints the URL.\r\n * Supports --stop to kill a running instance.\r\n */\r\nasync function handleDashboard(args: string[]): Promise {\r\n const networkMode = args.includes('--network');\r\n\r\n // Handle --stop flag\r\n if (args.includes('--stop')) {\r\n for (let port = DEFAULT_PORT; port <= PORT_RANGE_END; port++) {\r\n const running = await checkHealth(port);\r\n if (running) {\r\n console.log(`Dashboard found on port ${port} — stopping...`);\r\n killProcessOnPort(port);\r\n console.log('Dashboard stopped.');\r\n return;\r\n }\r\n }\r\n console.log('No running dashboard found.');\r\n return;\r\n }\r\n\r\n // Check if dashboard is already running\r\n const runningPort = await findRunningDashboard();\r\n if (runningPort) {\r\n console.log(`Dashboard already running at http://localhost:${runningPort}`);\r\n return;\r\n }\r\n\r\n // Resolve the dashboard server entry point\r\n const serverPath = resolveDashboardServer();\r\n if (!serverPath) {\r\n console.error('Could not find @maxsim/dashboard server entry point.');\r\n console.error('Ensure @maxsim/dashboard is installed and built.');\r\n process.exit(1);\r\n }\r\n\r\n const serverDir = path.dirname(serverPath);\r\n const dashConfig = readDashboardConfig(serverPath);\r\n\r\n // Auto-install node-pty if missing\r\n console.log('Installing node-pty for terminal support...');\r\n if (!ensureNodePty(serverDir)) {\r\n console.warn('node-pty installation failed — terminal will be unavailable.');\r\n }\r\n\r\n console.log('Dashboard starting...');\r\n\r\n const pid = spawnDashboard({\r\n serverPath,\r\n projectCwd: dashConfig.projectCwd,\r\n networkMode,\r\n });\r\n\r\n // Wait briefly for the server to start, then check health\r\n await new Promise((resolve) => setTimeout(resolve, 3000));\r\n\r\n const readyPort = await findRunningDashboard();\r\n if (readyPort) {\r\n console.log(`Dashboard ready at http://localhost:${readyPort}`);\r\n return;\r\n }\r\n\r\n console.log(`Dashboard spawned (PID ${pid}). It may take a moment to start.`);\r\n console.log(`Check http://localhost:${DEFAULT_PORT} once ready.`);\r\n}\r\n\r\nmain();\r\n"],"x_google_ignoreList":[1,2,3,4,5,6,7,8,9,10,11,12,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,88,92,93,94,95],"mappings":"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"} \ No newline at end of file diff --git a/packages/cli/dist/cli.js b/packages/cli/dist/cli.js index 818df39..8614f56 100644 --- a/packages/cli/dist/cli.js +++ b/packages/cli/dist/cli.js @@ -300,6 +300,7 @@ const COMMANDS = { (0, index_js_1.cmdScaffold)(cwd, args[1], { phase: f.phase, name: f.name ? args.slice(args.indexOf('--name') + 1).join(' ') : null }, raw); }, 'init': handleInit, + 'skill-context': (args, cwd, raw) => (0, index_js_1.cmdSkillContext)(cwd, args[1] || 'unknown', raw), 'phase-plan-index': (args, cwd, raw) => (0, index_js_1.cmdPhasePlanIndex)(cwd, args[1], raw), 'state-snapshot': (_args, cwd, raw) => (0, index_js_1.cmdStateSnapshot)(cwd, raw), 'summary-extract': (args, cwd, raw) => { diff --git a/packages/cli/dist/cli.js.map b/packages/cli/dist/cli.js.map index b846e4a..00f7ae2 100644 --- a/packages/cli/dist/cli.js.map +++ b/packages/cli/dist/cli.js.map @@ -1 +1 @@ -{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/cli/dist/core/index.d.ts b/packages/cli/dist/core/index.d.ts index fcc45ce..8974cc5 100644 --- a/packages/cli/dist/core/index.d.ts +++ b/packages/cli/dist/core/index.d.ts @@ -17,6 +17,8 @@ export type { TemplateSelectResult, TemplateFillOptions, TemplateFillResult, } f export { cmdTemplateSelect, cmdTemplateFill, } from './template.js'; export { checkHealth, findRunningDashboard, killProcessOnPort, resolveDashboardServer, readDashboardConfig, ensureNodePty, spawnDashboard, waitForDashboard, DEFAULT_PORT, PORT_RANGE_END, HEALTH_TIMEOUT_MS, } from './dashboard-launcher.js'; export type { DashboardConfig, SpawnDashboardOptions, } from './dashboard-launcher.js'; +export type { SkillContextResult } from './skill-context.js'; +export { cmdSkillContext } from './skill-context.js'; export type { WorkflowType, InitContext, ExecutePhaseContext, PlanPhaseContext, NewProjectContext, NewMilestoneContext, QuickContext, ResumeContext, VerifyWorkContext, PhaseOpContext, TodosContext, MilestoneOpContext, MapCodebaseContext, InitExistingContext, ProgressContext, } from './init.js'; export { cmdInitExecutePhase, cmdInitPlanPhase, cmdInitNewProject, cmdInitNewMilestone, cmdInitQuick, cmdInitResume, cmdInitVerifyWork, cmdInitPhaseOp, cmdInitTodos, cmdInitMilestoneOp, cmdInitMapCodebase, cmdInitExisting, cmdInitProgress, } from './init.js'; //# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/packages/cli/dist/core/index.d.ts.map b/packages/cli/dist/core/index.d.ts.map index ef45c4d..67a4d68 100644 --- a/packages/cli/dist/core/index.d.ts.map +++ b/packages/cli/dist/core/index.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/cli/dist/core/index.js b/packages/cli/dist/core/index.js index 2a93f7e..2f1d482 100644 --- a/packages/cli/dist/core/index.js +++ b/packages/cli/dist/core/index.js @@ -5,7 +5,7 @@ Object.defineProperty(exports, "__esModule", { value: true }); exports.cmdStateAddBlocker = exports.cmdStateAddDecision = exports.cmdStateUpdateProgress = exports.cmdStateRecordMetric = exports.cmdStateAdvancePlan = exports.cmdStateUpdate = exports.cmdStatePatch = exports.cmdStateGet = exports.cmdStateLoad = exports.stateReplaceField = exports.stateExtractField = exports.cmdConfigGet = exports.cmdConfigSet = exports.cmdConfigEnsureSection = exports.cmdFrontmatterValidate = exports.cmdFrontmatterMerge = exports.cmdFrontmatterSet = exports.cmdFrontmatterGet = exports.FRONTMATTER_SCHEMAS = exports.parseMustHavesBlock = exports.spliceFrontmatter = exports.reconstructFrontmatter = exports.extractFrontmatter = exports.getMilestoneInfo = exports.generateSlugInternal = exports.pathExistsInternal = exports.resolveModelInternal = exports.getRoadmapPhaseInternal = exports.getArchivedPhaseDirs = exports.findPhaseInternal = exports.getPhasePattern = exports.comparePhaseNum = exports.normalizePhaseName = exports.execGit = exports.isGitIgnored = exports.loadConfig = exports.safeReadFile = exports.writeOutput = exports.rethrowCliSignals = exports.CliError = exports.CliOutput = exports.error = exports.output = exports.MODEL_PROFILES = exports.PLANNING_CONFIG_DEFAULTS = exports.err = exports.ok = exports.phaseSlug = exports.phasePath = exports.phaseNumber = void 0; exports.HEALTH_TIMEOUT_MS = exports.PORT_RANGE_END = exports.DEFAULT_PORT = exports.waitForDashboard = exports.spawnDashboard = exports.ensureNodePty = exports.readDashboardConfig = exports.resolveDashboardServer = exports.killProcessOnPort = exports.findRunningDashboard = exports.checkHealth = exports.cmdTemplateFill = exports.cmdTemplateSelect = exports.cmdPhaseComplete = exports.cmdPhaseRemove = exports.cmdPhaseInsert = exports.cmdPhaseAdd = exports.cmdPhasePlanIndex = exports.cmdFindPhase = exports.cmdPhaseNextDecimal = exports.cmdPhasesList = exports.cmdValidateHealth = exports.cmdValidateConsistency = exports.cmdVerifyKeyLinks = exports.cmdVerifyArtifacts = exports.cmdVerifyCommits = exports.cmdVerifyReferences = exports.cmdVerifyPhaseCompleteness = exports.cmdVerifyPlanStructure = exports.cmdVerifySummary = exports.cmdScaffold = exports.cmdTodoComplete = exports.cmdProgressRender = exports.cmdWebsearch = exports.cmdSummaryExtract = exports.cmdCommit = exports.cmdResolveModel = exports.cmdHistoryDigest = exports.cmdVerifyPathExists = exports.cmdListTodos = exports.cmdCurrentTimestamp = exports.cmdGenerateSlug = exports.cmdMilestoneComplete = exports.cmdRequirementsMarkComplete = exports.cmdRoadmapUpdatePlanProgress = exports.cmdRoadmapAnalyze = exports.cmdRoadmapGetPhase = exports.cmdStateSnapshot = exports.cmdStateRecordSession = exports.cmdStateResolveBlocker = void 0; -exports.cmdInitProgress = exports.cmdInitExisting = exports.cmdInitMapCodebase = exports.cmdInitMilestoneOp = exports.cmdInitTodos = exports.cmdInitPhaseOp = exports.cmdInitVerifyWork = exports.cmdInitResume = exports.cmdInitQuick = exports.cmdInitNewMilestone = exports.cmdInitNewProject = exports.cmdInitPlanPhase = exports.cmdInitExecutePhase = void 0; +exports.cmdInitProgress = exports.cmdInitExisting = exports.cmdInitMapCodebase = exports.cmdInitMilestoneOp = exports.cmdInitTodos = exports.cmdInitPhaseOp = exports.cmdInitVerifyWork = exports.cmdInitResume = exports.cmdInitQuick = exports.cmdInitNewMilestone = exports.cmdInitNewProject = exports.cmdInitPlanPhase = exports.cmdInitExecutePhase = exports.cmdSkillContext = void 0; // Runtime value exports from types var types_js_1 = require("./types.js"); Object.defineProperty(exports, "phaseNumber", { enumerable: true, get: function () { return types_js_1.phaseNumber; } }); @@ -128,6 +128,8 @@ Object.defineProperty(exports, "waitForDashboard", { enumerable: true, get: func Object.defineProperty(exports, "DEFAULT_PORT", { enumerable: true, get: function () { return dashboard_launcher_js_1.DEFAULT_PORT; } }); Object.defineProperty(exports, "PORT_RANGE_END", { enumerable: true, get: function () { return dashboard_launcher_js_1.PORT_RANGE_END; } }); Object.defineProperty(exports, "HEALTH_TIMEOUT_MS", { enumerable: true, get: function () { return dashboard_launcher_js_1.HEALTH_TIMEOUT_MS; } }); +var skill_context_js_1 = require("./skill-context.js"); +Object.defineProperty(exports, "cmdSkillContext", { enumerable: true, get: function () { return skill_context_js_1.cmdSkillContext; } }); var init_js_1 = require("./init.js"); Object.defineProperty(exports, "cmdInitExecutePhase", { enumerable: true, get: function () { return init_js_1.cmdInitExecutePhase; } }); Object.defineProperty(exports, "cmdInitPlanPhase", { enumerable: true, get: function () { return init_js_1.cmdInitPlanPhase; } }); diff --git a/packages/cli/dist/core/index.js.map b/packages/cli/dist/core/index.js.map index 961338e..c592aaf 100644 --- a/packages/cli/dist/core/index.js.map +++ b/packages/cli/dist/core/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/cli/dist/core/skill-context.d.ts b/packages/cli/dist/core/skill-context.d.ts new file mode 100644 index 0000000..a5c5270 --- /dev/null +++ b/packages/cli/dist/core/skill-context.d.ts @@ -0,0 +1,37 @@ +/** + * Skill Context — Provides MAXSIM state to skills via a single CLI call + */ +export interface SkillContextResult { + skill_name: string; + planning_dir: string | null; + phase: { + number: string | null; + name: string | null; + directory: string | null; + }; + state: { + current_focus: string | null; + position: string | null; + status: string | null; + }; + blockers: string[]; + decisions: Array<{ + phase: string; + summary: string; + rationale: string; + }>; + artifacts: { + plan: string | null; + summary: string | null; + research: string | null; + context: string | null; + verification: string | null; + }; + config: { + model_profile: string; + commit_docs: boolean; + branching_strategy: string; + }; +} +export declare function cmdSkillContext(cwd: string, skillName: string, raw: boolean): void; +//# sourceMappingURL=skill-context.d.ts.map \ No newline at end of file diff --git a/packages/cli/dist/core/skill-context.d.ts.map b/packages/cli/dist/core/skill-context.d.ts.map new file mode 100644 index 0000000..d51483c --- /dev/null +++ b/packages/cli/dist/core/skill-context.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"skill-context.d.ts","sourceRoot":"","sources":["../../src/core/skill-context.ts"],"names":[],"mappings":"AAAA;;GAEG;AAqBH,MAAM,WAAW,kBAAkB;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,KAAK,EAAE;QACL,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;QACtB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;QACpB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;KAC1B,CAAC;IACF,KAAK,EAAE;QACL,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;QAC7B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;QACxB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;KACvB,CAAC;IACF,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,SAAS,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACxE,SAAS,EAAE;QACT,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;QACpB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;QACvB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;QACxB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;QACvB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;KAC7B,CAAC;IACF,MAAM,EAAE;QACN,aAAa,EAAE,MAAM,CAAC;QACtB,WAAW,EAAE,OAAO,CAAC;QACrB,kBAAkB,EAAE,MAAM,CAAC;KAC5B,CAAC;CACH;AAID,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,IAAI,CAkIlF"} \ No newline at end of file diff --git a/packages/cli/dist/core/skill-context.js b/packages/cli/dist/core/skill-context.js new file mode 100644 index 0000000..165f98a --- /dev/null +++ b/packages/cli/dist/core/skill-context.js @@ -0,0 +1,138 @@ +"use strict"; +/** + * Skill Context — Provides MAXSIM state to skills via a single CLI call + */ +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.cmdSkillContext = cmdSkillContext; +const node_fs_1 = __importDefault(require("node:fs")); +const node_path_1 = __importDefault(require("node:path")); +const core_js_1 = require("./core.js"); +const state_js_1 = require("./state.js"); +// ─── Command ───────────────────────────────────────────────────────────────── +function cmdSkillContext(cwd, skillName, raw) { + const planningExists = (0, core_js_1.pathExistsInternal)(cwd, '.planning'); + if (!planningExists) { + const result = { + skill_name: skillName, + planning_dir: null, + phase: { number: null, name: null, directory: null }, + state: { current_focus: null, position: null, status: null }, + blockers: [], + decisions: [], + artifacts: { plan: null, summary: null, research: null, context: null, verification: null }, + config: { model_profile: 'balanced', commit_docs: true, branching_strategy: 'none' }, + }; + (0, core_js_1.output)(result, raw); + return; + } + // Load config + const config = (0, core_js_1.loadConfig)(cwd); + // Read STATE.md + const stateContent = (0, core_js_1.safeReadFile)((0, core_js_1.statePath)(cwd)); + let currentPhase = null; + let currentPhaseName = null; + let currentPlan = null; + let status = null; + const blockers = []; + const decisions = []; + if (stateContent) { + currentPhase = (0, state_js_1.stateExtractField)(stateContent, 'Current Phase'); + currentPhaseName = (0, state_js_1.stateExtractField)(stateContent, 'Current Phase Name'); + currentPlan = (0, state_js_1.stateExtractField)(stateContent, 'Current Plan'); + status = (0, state_js_1.stateExtractField)(stateContent, 'Status'); + // Extract blockers + const blockersMatch = stateContent.match(/##\s*Blockers\s*\n([\s\S]*?)(?=\n##|$)/i); + if (blockersMatch) { + const items = blockersMatch[1].match(/^-\s+(.+)$/gm) || []; + for (const item of items) { + blockers.push(item.replace(/^-\s+/, '').trim()); + } + } + // Extract decisions + const decisionsMatch = stateContent.match(/##\s*Decisions Made[\s\S]*?\n\|[^\n]+\n\|[-|\s]+\n([\s\S]*?)(?=\n##|\n$|$)/i); + if (decisionsMatch) { + const rows = decisionsMatch[1].trim().split('\n').filter(r => r.includes('|')); + for (const row of rows) { + const cells = row.split('|').map(c => c.trim()).filter(Boolean); + if (cells.length >= 3) { + decisions.push({ phase: cells[0], summary: cells[1], rationale: cells[2] }); + } + } + } + } + // Find phase directory and artifacts + const phaseInfo = currentPhase + ? (0, core_js_1.findPhaseInternal)(cwd, currentPhase) + : null; + const phaseDir = phaseInfo?.directory ?? null; + const phaseNumber = phaseInfo?.phase_number ?? currentPhase; + const phaseName = phaseInfo?.phase_name ?? currentPhaseName; + // Resolve artifact paths within the phase directory + const artifacts = { + plan: null, + summary: null, + research: null, + context: null, + verification: null, + }; + if (phaseDir) { + const absPhaseDir = node_path_1.default.isAbsolute(phaseDir) ? phaseDir : node_path_1.default.join(cwd, phaseDir); + try { + const files = node_fs_1.default.readdirSync(absPhaseDir); + for (const f of files) { + if ((0, core_js_1.isPlanFile)(f)) { + artifacts.plan = node_path_1.default.join(phaseDir, f); + } + else if ((0, core_js_1.isSummaryFile)(f)) { + artifacts.summary = node_path_1.default.join(phaseDir, f); + } + else if (f.endsWith('-RESEARCH.md') || f === 'RESEARCH.md') { + artifacts.research = node_path_1.default.join(phaseDir, f); + } + else if (f.endsWith('-CONTEXT.md') || f === 'CONTEXT.md') { + artifacts.context = node_path_1.default.join(phaseDir, f); + } + else if (f.endsWith('-VERIFICATION.md') || f === 'VERIFICATION.md') { + artifacts.verification = node_path_1.default.join(phaseDir, f); + } + } + } + catch { + // Phase directory unreadable — leave artifacts as null + } + } + // Build position string + const totalPlans = stateContent ? (0, state_js_1.stateExtractField)(stateContent, 'Total Plans in Phase') : null; + const position = currentPlan && totalPlans + ? `Plan ${currentPlan} of ${totalPlans}` + : currentPlan + ? `Plan ${currentPlan}` + : null; + const result = { + skill_name: skillName, + planning_dir: '.planning', + phase: { + number: phaseNumber ?? null, + name: phaseName ?? null, + directory: phaseDir, + }, + state: { + current_focus: currentPhaseName ?? null, + position, + status, + }, + blockers, + decisions, + artifacts, + config: { + model_profile: config.model_profile, + commit_docs: config.commit_docs, + branching_strategy: config.branching_strategy, + }, + }; + (0, core_js_1.output)(result, raw); +} +//# sourceMappingURL=skill-context.js.map \ No newline at end of file diff --git a/packages/cli/dist/core/skill-context.js.map b/packages/cli/dist/core/skill-context.js.map new file mode 100644 index 0000000..ff015d2 --- /dev/null +++ b/packages/cli/dist/core/skill-context.js.map @@ -0,0 +1 @@ +{"version":3,"file":"skill-context.js","sourceRoot":"","sources":["../../src/core/skill-context.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/cli/dist/install.cjs b/packages/cli/dist/install.cjs index 1635569..b72eada 100644 --- a/packages/cli/dist/install.cjs +++ b/packages/cli/dist/install.cjs @@ -47,7 +47,7 @@ let node_crypto = require("node:crypto"); node_crypto = __toESM(node_crypto); let node_child_process = require("node:child_process"); -//#region ../../node_modules/universalify/index.js +//#region ../../../../../node_modules/universalify/index.js var require_universalify = /* @__PURE__ */ __commonJSMin(((exports) => { exports.fromCallback = function(fn) { return Object.defineProperty(function(...args) { @@ -71,7 +71,7 @@ var require_universalify = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/graceful-fs/polyfills.js +//#region ../../../../../node_modules/graceful-fs/polyfills.js var require_polyfills = /* @__PURE__ */ __commonJSMin(((exports, module) => { var constants = require("constants"); var origCwd = process.cwd; @@ -324,7 +324,7 @@ var require_polyfills = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/graceful-fs/legacy-streams.js +//#region ../../../../../node_modules/graceful-fs/legacy-streams.js var require_legacy_streams = /* @__PURE__ */ __commonJSMin(((exports, module) => { var Stream$1 = require("stream").Stream; module.exports = legacy; @@ -414,7 +414,7 @@ var require_legacy_streams = /* @__PURE__ */ __commonJSMin(((exports, module) => })); //#endregion -//#region ../../node_modules/graceful-fs/clone.js +//#region ../../../../../node_modules/graceful-fs/clone.js var require_clone = /* @__PURE__ */ __commonJSMin(((exports, module) => { module.exports = clone; var getPrototypeOf = Object.getPrototypeOf || function(obj) { @@ -432,7 +432,7 @@ var require_clone = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/graceful-fs/graceful-fs.js +//#region ../../../../../node_modules/graceful-fs/graceful-fs.js var require_graceful_fs = /* @__PURE__ */ __commonJSMin(((exports, module) => { var fs = require("fs"); var polyfills = require_polyfills(); @@ -789,7 +789,7 @@ var require_graceful_fs = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/fs-extra/lib/fs/index.js +//#region ../../../../../node_modules/fs-extra/lib/fs/index.js var require_fs = /* @__PURE__ */ __commonJSMin(((exports) => { const u = require_universalify().fromCallback; const fs = require_graceful_fs(); @@ -898,7 +898,7 @@ var require_fs = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/fs-extra/lib/mkdirs/utils.js +//#region ../../../../../node_modules/fs-extra/lib/mkdirs/utils.js var require_utils$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => { const path$11 = require("path"); module.exports.checkPath = function checkPath(pth) { @@ -913,7 +913,7 @@ var require_utils$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/fs-extra/lib/mkdirs/make-dir.js +//#region ../../../../../node_modules/fs-extra/lib/mkdirs/make-dir.js var require_make_dir = /* @__PURE__ */ __commonJSMin(((exports, module) => { const fs = require_fs(); const { checkPath } = require_utils$1(); @@ -942,7 +942,7 @@ var require_make_dir = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/fs-extra/lib/mkdirs/index.js +//#region ../../../../../node_modules/fs-extra/lib/mkdirs/index.js var require_mkdirs = /* @__PURE__ */ __commonJSMin(((exports, module) => { const u = require_universalify().fromPromise; const { makeDir: _makeDir, makeDirSync } = require_make_dir(); @@ -958,7 +958,7 @@ var require_mkdirs = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/fs-extra/lib/path-exists/index.js +//#region ../../../../../node_modules/fs-extra/lib/path-exists/index.js var require_path_exists = /* @__PURE__ */ __commonJSMin(((exports, module) => { const u = require_universalify().fromPromise; const fs = require_fs(); @@ -972,7 +972,7 @@ var require_path_exists = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/fs-extra/lib/util/utimes.js +//#region ../../../../../node_modules/fs-extra/lib/util/utimes.js var require_utimes = /* @__PURE__ */ __commonJSMin(((exports, module) => { const fs = require_fs(); const u = require_universalify().fromPromise; @@ -1002,7 +1002,7 @@ var require_utimes = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/fs-extra/lib/util/stat.js +//#region ../../../../../node_modules/fs-extra/lib/util/stat.js var require_stat = /* @__PURE__ */ __commonJSMin(((exports, module) => { const fs = require_fs(); const path$10 = require("path"); @@ -1129,7 +1129,7 @@ var require_stat = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/fs-extra/lib/util/async.js +//#region ../../../../../node_modules/fs-extra/lib/util/async.js var require_async = /* @__PURE__ */ __commonJSMin(((exports, module) => { async function asyncIteratorConcurrentProcess(iterator, fn) { const promises = []; @@ -1142,7 +1142,7 @@ var require_async = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/fs-extra/lib/copy/copy.js +//#region ../../../../../node_modules/fs-extra/lib/copy/copy.js var require_copy$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => { const fs = require_fs(); const path$9 = require("path"); @@ -1234,7 +1234,7 @@ var require_copy$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/fs-extra/lib/copy/copy-sync.js +//#region ../../../../../node_modules/fs-extra/lib/copy/copy-sync.js var require_copy_sync = /* @__PURE__ */ __commonJSMin(((exports, module) => { const fs = require_graceful_fs(); const path$8 = require("path"); @@ -1348,7 +1348,7 @@ var require_copy_sync = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/fs-extra/lib/copy/index.js +//#region ../../../../../node_modules/fs-extra/lib/copy/index.js var require_copy = /* @__PURE__ */ __commonJSMin(((exports, module) => { const u = require_universalify().fromPromise; module.exports = { @@ -1358,7 +1358,7 @@ var require_copy = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/fs-extra/lib/remove/index.js +//#region ../../../../../node_modules/fs-extra/lib/remove/index.js var require_remove = /* @__PURE__ */ __commonJSMin(((exports, module) => { const fs = require_graceful_fs(); const u = require_universalify().fromCallback; @@ -1381,7 +1381,7 @@ var require_remove = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/fs-extra/lib/empty/index.js +//#region ../../../../../node_modules/fs-extra/lib/empty/index.js var require_empty = /* @__PURE__ */ __commonJSMin(((exports, module) => { const u = require_universalify().fromPromise; const fs = require_fs(); @@ -1418,7 +1418,7 @@ var require_empty = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/fs-extra/lib/ensure/file.js +//#region ../../../../../node_modules/fs-extra/lib/ensure/file.js var require_file = /* @__PURE__ */ __commonJSMin(((exports, module) => { const u = require_universalify().fromPromise; const path$6 = require("path"); @@ -1466,7 +1466,7 @@ var require_file = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/fs-extra/lib/ensure/link.js +//#region ../../../../../node_modules/fs-extra/lib/ensure/link.js var require_link = /* @__PURE__ */ __commonJSMin(((exports, module) => { const u = require_universalify().fromPromise; const path$5 = require("path"); @@ -1515,7 +1515,7 @@ var require_link = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/fs-extra/lib/ensure/symlink-paths.js +//#region ../../../../../node_modules/fs-extra/lib/ensure/symlink-paths.js var require_symlink_paths = /* @__PURE__ */ __commonJSMin(((exports, module) => { const path$4 = require("path"); const fs = require_fs(); @@ -1599,7 +1599,7 @@ var require_symlink_paths = /* @__PURE__ */ __commonJSMin(((exports, module) => })); //#endregion -//#region ../../node_modules/fs-extra/lib/ensure/symlink-type.js +//#region ../../../../../node_modules/fs-extra/lib/ensure/symlink-type.js var require_symlink_type = /* @__PURE__ */ __commonJSMin(((exports, module) => { const fs = require_fs(); const u = require_universalify().fromPromise; @@ -1630,7 +1630,7 @@ var require_symlink_type = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/fs-extra/lib/ensure/symlink.js +//#region ../../../../../node_modules/fs-extra/lib/ensure/symlink.js var require_symlink = /* @__PURE__ */ __commonJSMin(((exports, module) => { const u = require_universalify().fromPromise; const path$3 = require("path"); @@ -1679,7 +1679,7 @@ var require_symlink = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/fs-extra/lib/ensure/index.js +//#region ../../../../../node_modules/fs-extra/lib/ensure/index.js var require_ensure = /* @__PURE__ */ __commonJSMin(((exports, module) => { const { createFile, createFileSync } = require_file(); const { createLink, createLinkSync } = require_link(); @@ -1701,7 +1701,7 @@ var require_ensure = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/jsonfile/utils.js +//#region ../../../../../node_modules/jsonfile/utils.js var require_utils = /* @__PURE__ */ __commonJSMin(((exports, module) => { function stringify(obj, { EOL = "\n", finalEOL = true, replacer = null, spaces } = {}) { const EOF = finalEOL ? EOL : ""; @@ -1718,7 +1718,7 @@ var require_utils = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/jsonfile/index.js +//#region ../../../../../node_modules/jsonfile/index.js var require_jsonfile$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => { let _fs; try { @@ -1781,7 +1781,7 @@ var require_jsonfile$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/fs-extra/lib/json/jsonfile.js +//#region ../../../../../node_modules/fs-extra/lib/json/jsonfile.js var require_jsonfile = /* @__PURE__ */ __commonJSMin(((exports, module) => { const jsonFile = require_jsonfile$1(); module.exports = { @@ -1793,7 +1793,7 @@ var require_jsonfile = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/fs-extra/lib/output-file/index.js +//#region ../../../../../node_modules/fs-extra/lib/output-file/index.js var require_output_file = /* @__PURE__ */ __commonJSMin(((exports, module) => { const u = require_universalify().fromPromise; const fs = require_fs(); @@ -1817,7 +1817,7 @@ var require_output_file = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/fs-extra/lib/json/output-json.js +//#region ../../../../../node_modules/fs-extra/lib/json/output-json.js var require_output_json = /* @__PURE__ */ __commonJSMin(((exports, module) => { const { stringify } = require_utils(); const { outputFile } = require_output_file(); @@ -1828,7 +1828,7 @@ var require_output_json = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/fs-extra/lib/json/output-json-sync.js +//#region ../../../../../node_modules/fs-extra/lib/json/output-json-sync.js var require_output_json_sync = /* @__PURE__ */ __commonJSMin(((exports, module) => { const { stringify } = require_utils(); const { outputFileSync } = require_output_file(); @@ -1839,7 +1839,7 @@ var require_output_json_sync = /* @__PURE__ */ __commonJSMin(((exports, module) })); //#endregion -//#region ../../node_modules/fs-extra/lib/json/index.js +//#region ../../../../../node_modules/fs-extra/lib/json/index.js var require_json = /* @__PURE__ */ __commonJSMin(((exports, module) => { const u = require_universalify().fromPromise; const jsonFile = require_jsonfile(); @@ -1855,7 +1855,7 @@ var require_json = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/fs-extra/lib/move/move.js +//#region ../../../../../node_modules/fs-extra/lib/move/move.js var require_move$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => { const fs = require_fs(); const path$1 = require("path"); @@ -1896,7 +1896,7 @@ var require_move$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/fs-extra/lib/move/move-sync.js +//#region ../../../../../node_modules/fs-extra/lib/move/move-sync.js var require_move_sync = /* @__PURE__ */ __commonJSMin(((exports, module) => { const fs = require_graceful_fs(); const path = require("path"); @@ -1945,7 +1945,7 @@ var require_move_sync = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/fs-extra/lib/move/index.js +//#region ../../../../../node_modules/fs-extra/lib/move/index.js var require_move = /* @__PURE__ */ __commonJSMin(((exports, module) => { const u = require_universalify().fromPromise; module.exports = { @@ -1955,7 +1955,7 @@ var require_move = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/fs-extra/lib/index.js +//#region ../../../../../node_modules/fs-extra/lib/index.js var require_lib$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => { module.exports = { ...require_fs(), @@ -1972,7 +1972,7 @@ var require_lib$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/chalk/source/vendor/ansi-styles/index.js +//#region ../../../../../node_modules/chalk/source/vendor/ansi-styles/index.js var import_lib = /* @__PURE__ */ __toESM(require_lib$1()); const ANSI_BACKGROUND_OFFSET = 10; const wrapAnsi16 = (offset = 0) => (code) => `\u001B[${code + offset}m`; @@ -2138,7 +2138,7 @@ function assembleStyles() { const ansiStyles = assembleStyles(); //#endregion -//#region ../../node_modules/chalk/source/vendor/supports-color/index.js +//#region ../../../../../node_modules/chalk/source/vendor/supports-color/index.js function hasFlag(flag, argv = globalThis.Deno ? globalThis.Deno.args : node_process.default.argv) { const prefix = flag.startsWith("-") ? "" : flag.length === 1 ? "-" : "--"; const position = argv.indexOf(prefix + flag); @@ -2227,7 +2227,7 @@ const supportsColor = { }; //#endregion -//#region ../../node_modules/chalk/source/utilities.js +//#region ../../../../../node_modules/chalk/source/utilities.js function stringReplaceAll(string, substring, replacer) { let index = string.indexOf(substring); if (index === -1) return string; @@ -2256,7 +2256,7 @@ function stringEncaseCRLFWithFirstIndex(string, prefix, postfix, index) { } //#endregion -//#region ../../node_modules/chalk/source/index.js +//#region ../../../../../node_modules/chalk/source/index.js const { stdout: stdoutColor, stderr: stderrColor } = supportsColor; const GENERATOR = Symbol("GENERATOR"); const STYLER = Symbol("STYLER"); @@ -2379,7 +2379,7 @@ const chalk = createChalk(); const chalkStderr = createChalk({ level: stderrColor ? stderrColor.level : 0 }); //#endregion -//#region ../../node_modules/mimic-function/index.js +//#region ../../../../../node_modules/mimic-function/index.js const copyProperty = (to, from, property, ignoreNonConfigurable) => { if (property === "length" || property === "prototype") return; if (property === "arguments" || property === "caller") return; @@ -2420,7 +2420,7 @@ function mimicFunction(to, from, { ignoreNonConfigurable = false } = {}) { } //#endregion -//#region ../../node_modules/restore-cursor/node_modules/onetime/index.js +//#region ../../../../../node_modules/restore-cursor/node_modules/onetime/index.js const calledFunctions = /* @__PURE__ */ new WeakMap(); const onetime = (function_, options = {}) => { if (typeof function_ !== "function") throw new TypeError("Expected a function"); @@ -2445,7 +2445,7 @@ onetime.callCount = (function_) => { }; //#endregion -//#region ../../node_modules/restore-cursor/node_modules/signal-exit/dist/mjs/signals.js +//#region ../../../../../node_modules/restore-cursor/node_modules/signal-exit/dist/mjs/signals.js /** * This is not the set of all possible signals. * @@ -2478,7 +2478,7 @@ if (process.platform !== "win32") signals$1.push("SIGALRM", "SIGABRT", "SIGVTALR if (process.platform === "linux") signals$1.push("SIGIO", "SIGPOLL", "SIGPWR", "SIGSTKFLT"); //#endregion -//#region ../../node_modules/restore-cursor/node_modules/signal-exit/dist/mjs/index.js +//#region ../../../../../node_modules/restore-cursor/node_modules/signal-exit/dist/mjs/index.js const processOk$1 = (process) => !!process && typeof process === "object" && typeof process.removeListener === "function" && typeof process.emit === "function" && typeof process.reallyExit === "function" && typeof process.listeners === "function" && typeof process.kill === "function" && typeof process.pid === "number" && typeof process.on === "function"; const kExitEmitter$1 = Symbol.for("signal-exit emitter"); const global$2 = globalThis; @@ -2646,7 +2646,7 @@ const process$8 = globalThis.process; const { onExit: onExit$1, load: load$1, unload: unload$1 } = signalExitWrap$1(processOk$1(process$8) ? new SignalExit$1(process$8) : new SignalExitFallback$1()); //#endregion -//#region ../../node_modules/restore-cursor/index.js +//#region ../../../../../node_modules/restore-cursor/index.js const terminal = node_process.default.stderr.isTTY ? node_process.default.stderr : node_process.default.stdout.isTTY ? node_process.default.stdout : void 0; const restoreCursor = terminal ? onetime(() => { onExit$1(() => { @@ -2655,7 +2655,7 @@ const restoreCursor = terminal ? onetime(() => { }) : () => {}; //#endregion -//#region ../../node_modules/cli-cursor/index.js +//#region ../../../../../node_modules/cli-cursor/index.js let isHidden = false; const cliCursor = {}; cliCursor.show = (writableStream = node_process.default.stderr) => { @@ -2676,7 +2676,7 @@ cliCursor.toggle = (force, writableStream) => { }; //#endregion -//#region ../../node_modules/cli-spinners/spinners.json +//#region ../../../../../node_modules/cli-spinners/spinners.json var spinners_default = { dots: { "interval": 80, @@ -4334,12 +4334,12 @@ var spinners_default = { }; //#endregion -//#region ../../node_modules/cli-spinners/index.js +//#region ../../../../../node_modules/cli-spinners/index.js var cli_spinners_default = spinners_default; const spinnersList = Object.keys(spinners_default); //#endregion -//#region ../../node_modules/yoctocolors/base.js +//#region ../../../../../node_modules/yoctocolors/base.js const hasColors = node_tty.default?.WriteStream?.prototype?.hasColors?.() ?? false; const format = (open, close) => { if (!hasColors) return (input) => input; @@ -4404,7 +4404,7 @@ const bgCyanBright = format(106, 49); const bgWhiteBright = format(107, 49); //#endregion -//#region ../../node_modules/is-unicode-supported/index.js +//#region ../../../../../node_modules/is-unicode-supported/index.js function isUnicodeSupported$1() { const { env } = node_process.default; const { TERM, TERM_PROGRAM } = env; @@ -4413,7 +4413,7 @@ function isUnicodeSupported$1() { } //#endregion -//#region ../../node_modules/log-symbols/symbols.js +//#region ../../../../../node_modules/log-symbols/symbols.js const _isUnicodeSupported = isUnicodeSupported$1(); const info = blue(_isUnicodeSupported ? "ℹ" : "i"); const success = green(_isUnicodeSupported ? "✔" : "√"); @@ -4421,13 +4421,13 @@ const warning = yellow(_isUnicodeSupported ? "⚠" : "‼"); const error = red(_isUnicodeSupported ? "✖" : "×"); //#endregion -//#region ../../node_modules/ansi-regex/index.js +//#region ../../../../../node_modules/ansi-regex/index.js function ansiRegex({ onlyFirst = false } = {}) { return new RegExp(`(?:\\u001B\\][\\s\\S]*?(?:\\u0007|\\u001B\\u005C|\\u009C))|[\\u001B\\u009B][[\\]()#;?]*(?:\\d{1,4}(?:[;:]\\d{0,4})*)?[\\dA-PR-TZcf-nq-uy=><~]`, onlyFirst ? void 0 : "g"); } //#endregion -//#region ../../node_modules/ora/node_modules/strip-ansi/index.js +//#region ../../../../../node_modules/ora/node_modules/strip-ansi/index.js const regex = ansiRegex(); function stripAnsi(string) { if (typeof string !== "string") throw new TypeError(`Expected a \`string\`, got \`${typeof string}\``); @@ -4435,7 +4435,7 @@ function stripAnsi(string) { } //#endregion -//#region ../../node_modules/get-east-asian-width/lookup-data.js +//#region ../../../../../node_modules/get-east-asian-width/lookup-data.js const ambiguousRanges = [ 161, 161, @@ -5084,7 +5084,7 @@ const wideRanges = [ ]; //#endregion -//#region ../../node_modules/get-east-asian-width/utilities.js +//#region ../../../../../node_modules/get-east-asian-width/utilities.js /** Binary search on a sorted flat array of [start, end] pairs. @@ -5106,7 +5106,7 @@ const isInRange = (ranges, codePoint) => { }; //#endregion -//#region ../../node_modules/get-east-asian-width/lookup.js +//#region ../../../../../node_modules/get-east-asian-width/lookup.js const minimumAmbiguousCodePoint = ambiguousRanges[0]; const maximumAmbiguousCodePoint = ambiguousRanges.at(-1); const minimumFullWidthCodePoint = fullwidthRanges[0]; @@ -5148,7 +5148,7 @@ const isWide = (codePoint) => { }; //#endregion -//#region ../../node_modules/get-east-asian-width/index.js +//#region ../../../../../node_modules/get-east-asian-width/index.js function validate(codePoint) { if (!Number.isSafeInteger(codePoint)) throw new TypeError(`Expected a code point, got \`${typeof codePoint}\`.`); } @@ -5159,7 +5159,7 @@ function eastAsianWidth(codePoint, { ambiguousAsWide = false } = {}) { } //#endregion -//#region ../../node_modules/ora/node_modules/string-width/index.js +//#region ../../../../../node_modules/ora/node_modules/string-width/index.js /** Logic: - Segment graphemes to match how terminals render clusters. @@ -5220,13 +5220,13 @@ function stringWidth(input, options = {}) { } //#endregion -//#region ../../node_modules/is-interactive/index.js +//#region ../../../../../node_modules/is-interactive/index.js function isInteractive({ stream = process.stdout } = {}) { return Boolean(stream && stream.isTTY && process.env.TERM !== "dumb" && !("CI" in process.env)); } //#endregion -//#region ../../node_modules/stdin-discarder/index.js +//#region ../../../../../node_modules/stdin-discarder/index.js const ASCII_ETX_CODE = 3; var StdinDiscarder = class { #activeCount = 0; @@ -5274,7 +5274,7 @@ const stdinDiscarder = new StdinDiscarder(); var stdin_discarder_default = Object.freeze(stdinDiscarder); //#endregion -//#region ../../node_modules/ora/index.js +//#region ../../../../../node_modules/ora/index.js const RENDER_DEFERRAL_TIMEOUT = 200; const SYNCHRONIZED_OUTPUT_ENABLE = "\x1B[?2026h"; const SYNCHRONIZED_OUTPUT_DISABLE = "\x1B[?2026l"; @@ -5643,7 +5643,7 @@ function ora(options) { } //#endregion -//#region ../../node_modules/@inquirer/core/dist/lib/key.js +//#region ../../../../../node_modules/@inquirer/core/dist/lib/key.js const isUpKey = (key, keybindings = []) => key.name === "up" || keybindings.includes("vim") && key.name === "k" || keybindings.includes("emacs") && key.ctrl && key.name === "p"; const isDownKey = (key, keybindings = []) => key.name === "down" || keybindings.includes("vim") && key.name === "j" || keybindings.includes("emacs") && key.ctrl && key.name === "n"; const isSpaceKey = (key) => key.name === "space"; @@ -5653,7 +5653,7 @@ const isNumberKey = (key) => "1234567890".includes(key.name); const isEnterKey = (key) => key.name === "enter" || key.name === "return"; //#endregion -//#region ../../node_modules/@inquirer/core/dist/lib/errors.js +//#region ../../../../../node_modules/@inquirer/core/dist/lib/errors.js var AbortPromptError = class extends Error { name = "AbortPromptError"; message = "Prompt was aborted"; @@ -5677,7 +5677,7 @@ var ValidationError = class extends Error { }; //#endregion -//#region ../../node_modules/@inquirer/core/dist/lib/hook-engine.js +//#region ../../../../../node_modules/@inquirer/core/dist/lib/hook-engine.js const hookStorage = new node_async_hooks.AsyncLocalStorage(); function createStore(rl) { return { @@ -5774,7 +5774,7 @@ const effectScheduler = { }; //#endregion -//#region ../../node_modules/@inquirer/core/dist/lib/use-state.js +//#region ../../../../../node_modules/@inquirer/core/dist/lib/use-state.js function useState(defaultValue) { return withPointer((pointer) => { const setState = node_async_hooks.AsyncResource.bind(function setState(newValue) { @@ -5791,7 +5791,7 @@ function useState(defaultValue) { } //#endregion -//#region ../../node_modules/@inquirer/core/dist/lib/use-effect.js +//#region ../../../../../node_modules/@inquirer/core/dist/lib/use-effect.js function useEffect(cb, depArray) { withPointer((pointer) => { const oldDeps = pointer.get(); @@ -5801,7 +5801,7 @@ function useEffect(cb, depArray) { } //#endregion -//#region ../../node_modules/@inquirer/figures/dist/index.js +//#region ../../../../../node_modules/@inquirer/figures/dist/index.js function isUnicodeSupported() { if (node_process.default.platform !== "win32") return node_process.default.env["TERM"] !== "linux"; return Boolean(node_process.default.env["WT_SESSION"]) || Boolean(node_process.default.env["TERMINUS_SUBLIME"]) || node_process.default.env["ConEmuTask"] === "{cmd::Cmder}" || node_process.default.env["TERM_PROGRAM"] === "Terminus-Sublime" || node_process.default.env["TERM_PROGRAM"] === "vscode" || node_process.default.env["TERM"] === "xterm-256color" || node_process.default.env["TERM"] === "alacritty" || node_process.default.env["TERMINAL_EMULATOR"] === "JetBrains-JediTerm"; @@ -6087,7 +6087,7 @@ const figures = shouldUseMain ? mainSymbols : fallbackSymbols; const replacements = Object.entries(specialMainSymbols); //#endregion -//#region ../../node_modules/@inquirer/core/dist/lib/theme.js +//#region ../../../../../node_modules/@inquirer/core/dist/lib/theme.js const defaultTheme = { prefix: { idle: (0, node_util.styleText)("blue", "?"), @@ -6120,7 +6120,7 @@ const defaultTheme = { }; //#endregion -//#region ../../node_modules/@inquirer/core/dist/lib/make-theme.js +//#region ../../../../../node_modules/@inquirer/core/dist/lib/make-theme.js function isPlainObject(value) { if (typeof value !== "object" || value === null) return false; let proto = value; @@ -6140,7 +6140,7 @@ function makeTheme(...themes) { } //#endregion -//#region ../../node_modules/@inquirer/core/dist/lib/use-prefix.js +//#region ../../../../../node_modules/@inquirer/core/dist/lib/use-prefix.js function usePrefix({ status = "idle", theme }) { const [showLoader, setShowLoader] = useState(false); const [tick, setTick] = useState(0); @@ -6167,7 +6167,7 @@ function usePrefix({ status = "idle", theme }) { } //#endregion -//#region ../../node_modules/@inquirer/core/dist/lib/use-memo.js +//#region ../../../../../node_modules/@inquirer/core/dist/lib/use-memo.js function useMemo(fn, dependencies) { return withPointer((pointer) => { const prev = pointer.get(); @@ -6184,13 +6184,13 @@ function useMemo(fn, dependencies) { } //#endregion -//#region ../../node_modules/@inquirer/core/dist/lib/use-ref.js +//#region ../../../../../node_modules/@inquirer/core/dist/lib/use-ref.js function useRef(val) { return useState({ current: val })[0]; } //#endregion -//#region ../../node_modules/@inquirer/core/dist/lib/use-keypress.js +//#region ../../../../../node_modules/@inquirer/core/dist/lib/use-keypress.js function useKeypress(userHandler) { const signal = useRef(userHandler); signal.current = userHandler; @@ -6209,7 +6209,7 @@ function useKeypress(userHandler) { } //#endregion -//#region ../../node_modules/cli-width/index.js +//#region ../../../../../node_modules/cli-width/index.js var require_cli_width = /* @__PURE__ */ __commonJSMin(((exports, module) => { module.exports = cliWidth; function normalizeOpts(options) { @@ -6238,7 +6238,7 @@ var require_cli_width = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/fast-string-truncated-width/dist/utils.js +//#region ../../../../../node_modules/fast-string-truncated-width/dist/utils.js const getCodePointsLength = (() => { const SURROGATE_PAIR_RE = /[\uD800-\uDBFF][\uDC00-\uDFFF]/g; return (input) => { @@ -6256,7 +6256,7 @@ const isWideNotCJKTNotEmoji = (x) => { }; //#endregion -//#region ../../node_modules/fast-string-truncated-width/dist/index.js +//#region ../../../../../node_modules/fast-string-truncated-width/dist/index.js const ANSI_RE = /[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]|\u001b\]8;[^;]*;.*?(?:\u0007|\u001b\u005c)/y; const CONTROL_RE = /[\x00-\x08\x0A-\x1F\x7F-\x9F]{1,1000}/y; const CJKT_WIDE_RE = /(?:(?![\uFF61-\uFF9F\uFF00-\uFFEF])[\p{Script=Han}\p{Script=Hiragana}\p{Script=Katakana}\p{Script=Hangul}\p{Script=Tangut}]){1,1000}/uy; @@ -6347,7 +6347,7 @@ const getStringTruncatedWidth = (input, truncationOptions = {}, widthOptions = { }; //#endregion -//#region ../../node_modules/fast-string-width/dist/index.js +//#region ../../../../../node_modules/fast-string-width/dist/index.js const NO_TRUNCATION = { limit: Infinity, ellipsis: "", @@ -6358,7 +6358,7 @@ const fastStringWidth = (input, options = {}) => { }; //#endregion -//#region ../../node_modules/fast-wrap-ansi/lib/main.js +//#region ../../../../../node_modules/fast-wrap-ansi/lib/main.js const ESC$1 = "\x1B"; const CSI = "›"; const END_CODE = 39; @@ -6524,7 +6524,7 @@ function wrapAnsi(string, columns, options) { } //#endregion -//#region ../../node_modules/@inquirer/core/dist/lib/utils.js +//#region ../../../../../node_modules/@inquirer/core/dist/lib/utils.js var import_cli_width = /* @__PURE__ */ __toESM(require_cli_width(), 1); /** * Force line returns at specific width. This function is ANSI code friendly and it'll @@ -6551,7 +6551,7 @@ function readlineWidth() { } //#endregion -//#region ../../node_modules/@inquirer/core/dist/lib/pagination/use-pagination.js +//#region ../../../../../node_modules/@inquirer/core/dist/lib/pagination/use-pagination.js function usePointerPosition({ active, renderedItems, pageSize, loop }) { const state = useRef({ lastPointer: active, @@ -6635,7 +6635,7 @@ function usePagination({ items, active, renderItem, pageSize, loop = true }) { } //#endregion -//#region ../../node_modules/mute-stream/lib/index.js +//#region ../../../../../node_modules/mute-stream/lib/index.js var require_lib = /* @__PURE__ */ __commonJSMin(((exports, module) => { const Stream = require("stream"); var MuteStream = class extends Stream { @@ -6732,7 +6732,7 @@ var require_lib = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/@inquirer/core/node_modules/signal-exit/dist/mjs/signals.js +//#region ../../../../../node_modules/@inquirer/core/node_modules/signal-exit/dist/mjs/signals.js /** * This is not the set of all possible signals. * @@ -6765,7 +6765,7 @@ if (process.platform !== "win32") signals.push("SIGALRM", "SIGABRT", "SIGVTALRM" if (process.platform === "linux") signals.push("SIGIO", "SIGPOLL", "SIGPWR", "SIGSTKFLT"); //#endregion -//#region ../../node_modules/@inquirer/core/node_modules/signal-exit/dist/mjs/index.js +//#region ../../../../../node_modules/@inquirer/core/node_modules/signal-exit/dist/mjs/index.js const processOk = (process) => !!process && typeof process === "object" && typeof process.removeListener === "function" && typeof process.emit === "function" && typeof process.reallyExit === "function" && typeof process.listeners === "function" && typeof process.kill === "function" && typeof process.pid === "number" && typeof process.on === "function"; const kExitEmitter = Symbol.for("signal-exit emitter"); const global$1 = globalThis; @@ -6933,7 +6933,7 @@ const process$1 = globalThis.process; const { onExit, load, unload } = signalExitWrap(processOk(process$1) ? new SignalExit(process$1) : new SignalExitFallback()); //#endregion -//#region ../../node_modules/@inquirer/ansi/dist/index.js +//#region ../../../../../node_modules/@inquirer/ansi/dist/index.js const ESC = "\x1B["; /** Move cursor to first column */ const cursorLeft = ESC + "G"; @@ -6955,7 +6955,7 @@ const eraseLine = ESC + "2K"; const eraseLines = (lines) => lines > 0 ? (eraseLine + cursorUp(1)).repeat(lines - 1) + eraseLine + cursorLeft : ""; //#endregion -//#region ../../node_modules/@inquirer/core/dist/lib/screen-manager.js +//#region ../../../../../node_modules/@inquirer/core/dist/lib/screen-manager.js const height = (content) => content.split("\n").length; const lastLine = (content) => content.split("\n").pop() ?? ""; var ScreenManager = class { @@ -7011,7 +7011,7 @@ var ScreenManager = class { }; //#endregion -//#region ../../node_modules/@inquirer/core/dist/lib/promise-polyfill.js +//#region ../../../../../node_modules/@inquirer/core/dist/lib/promise-polyfill.js var PromisePolyfill = class extends Promise { static withResolver() { let resolve; @@ -7028,7 +7028,7 @@ var PromisePolyfill = class extends Promise { }; //#endregion -//#region ../../node_modules/@inquirer/core/dist/lib/create-prompt.js +//#region ../../../../../node_modules/@inquirer/core/dist/lib/create-prompt.js var import_lib$1 = /* @__PURE__ */ __toESM(require_lib(), 1); const nativeSetImmediate = globalThis.setImmediate; function getCallSites() { @@ -7122,7 +7122,7 @@ function createPrompt(view) { } //#endregion -//#region ../../node_modules/@inquirer/core/dist/lib/Separator.js +//#region ../../../../../node_modules/@inquirer/core/dist/lib/Separator.js /** * Separator object * Used to space/separate choices group @@ -7139,7 +7139,7 @@ var Separator = class { }; //#endregion -//#region ../../node_modules/@inquirer/checkbox/dist/index.js +//#region ../../../../../node_modules/@inquirer/checkbox/dist/index.js const checkboxTheme = { icon: { checked: (0, node_util.styleText)("green", figures.circleFilled), @@ -7320,7 +7320,7 @@ var dist_default$2 = createPrompt((config, done) => { }); //#endregion -//#region ../../node_modules/@inquirer/confirm/dist/index.js +//#region ../../../../../node_modules/@inquirer/confirm/dist/index.js function getBooleanValue(value, defaultValue) { let answer = defaultValue !== false; if (/^(y|yes)/i.test(value)) answer = true; @@ -7361,7 +7361,7 @@ var dist_default$1 = createPrompt((config, done) => { }); //#endregion -//#region ../../node_modules/@inquirer/select/dist/index.js +//#region ../../../../../node_modules/@inquirer/select/dist/index.js const selectTheme = { icon: { cursor: figures.pointer }, style: { @@ -7517,7 +7517,7 @@ var dist_default = createPrompt((config, done) => { }); //#endregion -//#region ../../node_modules/minimist/index.js +//#region ../../../../../node_modules/minimist/index.js var require_minimist = /* @__PURE__ */ __commonJSMin(((exports, module) => { function hasKey(obj, keys) { var o = obj; diff --git a/packages/cli/dist/install.cjs.map b/packages/cli/dist/install.cjs.map index b8f942f..4aa4011 100644 --- a/packages/cli/dist/install.cjs.map +++ b/packages/cli/dist/install.cjs.map @@ -1 +1 @@ -{"version":3,"file":"install.cjs","names":["Stream","path","path","path","path","path","path","path","path","path","path","path","styles","process","os","tty","signals","processOk","kExitEmitter","global","ObjectDefineProperty","Emitter","SignalExitBase","signalExitWrap","SignalExitFallback","SignalExit","process","#process","#sigListeners","signals","#emitter","#hupSig","#originalProcessReallyExit","#originalProcessEmit","#loaded","#processEmit","#processReallyExit","process","process","spinners","tty","isUnicodeSupported","process","isUnicodeSupported","isFullWidth","isFullWidth","process","#activeCount","#realStart","#realStop","#stdin","#stdinWasPaused","#stdinWasRaw","#handleInputBound","#isInternalWrite","#deferRenderTimer","#tryRender","#getFullPrefixText","#getFullSuffixText","#options","process","#stream","#linesToClear","#frameIndex","#computeLineCountFrom","#spinner","isUnicodeSupported","cliSpinners","#id","#formatAffix","#lastFrameTime","#internalWrite","#hookedStreams","#hookedWrite","#hookStream","#stringifyChunk","#chunkTerminatesLine","#clearRenderDeferral","#scheduleRenderDeferral","#drainHandler","#buildOutputLine","#isDiscardingStdin","#installHook","#uninstallHook","logSymbols.success","logSymbols.error","logSymbols.warning","logSymbols.info","AsyncLocalStorage","AsyncResource","AsyncResource","process","NO_TRUNCATION","fastStringTruncatedWidth","ESC","stringWidth","#isTTY","#destSrc","#proxy","global","process","#process","#sigListeners","#emitter","#hupSig","#originalProcessReallyExit","#originalProcessEmit","#loaded","#processEmit","#processReallyExit","MuteStream","readline","onSignalExit","AsyncResource","isSelectable","isNavigable","normalizeChoices","path","os","fs","getGlobalDir","path","os","getConfigDirFromHome","transformContent","getOpencodeGlobalDir","path","os","getGlobalDir","getConfigDirFromHome","transformContent","getGlobalDir","path","os","getConfigDirFromHome","transformContent","getGlobalDir","path","os","getConfigDirFromHome","fs","path","path","fs","os","path","fs","os","path","fs","confirm","fs","path","fs","crypto","path","path","fs","path","os","fs","path","os","fs","confirm","checkbox","select"],"sources":["../../../node_modules/universalify/index.js","../../../node_modules/graceful-fs/polyfills.js","../../../node_modules/graceful-fs/legacy-streams.js","../../../node_modules/graceful-fs/clone.js","../../../node_modules/graceful-fs/graceful-fs.js","../../../node_modules/fs-extra/lib/fs/index.js","../../../node_modules/fs-extra/lib/mkdirs/utils.js","../../../node_modules/fs-extra/lib/mkdirs/make-dir.js","../../../node_modules/fs-extra/lib/mkdirs/index.js","../../../node_modules/fs-extra/lib/path-exists/index.js","../../../node_modules/fs-extra/lib/util/utimes.js","../../../node_modules/fs-extra/lib/util/stat.js","../../../node_modules/fs-extra/lib/util/async.js","../../../node_modules/fs-extra/lib/copy/copy.js","../../../node_modules/fs-extra/lib/copy/copy-sync.js","../../../node_modules/fs-extra/lib/copy/index.js","../../../node_modules/fs-extra/lib/remove/index.js","../../../node_modules/fs-extra/lib/empty/index.js","../../../node_modules/fs-extra/lib/ensure/file.js","../../../node_modules/fs-extra/lib/ensure/link.js","../../../node_modules/fs-extra/lib/ensure/symlink-paths.js","../../../node_modules/fs-extra/lib/ensure/symlink-type.js","../../../node_modules/fs-extra/lib/ensure/symlink.js","../../../node_modules/fs-extra/lib/ensure/index.js","../../../node_modules/jsonfile/utils.js","../../../node_modules/jsonfile/index.js","../../../node_modules/fs-extra/lib/json/jsonfile.js","../../../node_modules/fs-extra/lib/output-file/index.js","../../../node_modules/fs-extra/lib/json/output-json.js","../../../node_modules/fs-extra/lib/json/output-json-sync.js","../../../node_modules/fs-extra/lib/json/index.js","../../../node_modules/fs-extra/lib/move/move.js","../../../node_modules/fs-extra/lib/move/move-sync.js","../../../node_modules/fs-extra/lib/move/index.js","../../../node_modules/fs-extra/lib/index.js","../../../node_modules/chalk/source/vendor/ansi-styles/index.js","../../../node_modules/chalk/source/vendor/supports-color/index.js","../../../node_modules/chalk/source/utilities.js","../../../node_modules/chalk/source/index.js","../../../node_modules/mimic-function/index.js","../../../node_modules/restore-cursor/node_modules/onetime/index.js","../../../node_modules/restore-cursor/node_modules/signal-exit/dist/mjs/signals.js","../../../node_modules/restore-cursor/node_modules/signal-exit/dist/mjs/index.js","../../../node_modules/restore-cursor/index.js","../../../node_modules/cli-cursor/index.js","../../../node_modules/cli-spinners/spinners.json","../../../node_modules/cli-spinners/index.js","../../../node_modules/yoctocolors/base.js","../../../node_modules/is-unicode-supported/index.js","../../../node_modules/log-symbols/symbols.js","../../../node_modules/ansi-regex/index.js","../../../node_modules/ora/node_modules/strip-ansi/index.js","../../../node_modules/get-east-asian-width/lookup-data.js","../../../node_modules/get-east-asian-width/utilities.js","../../../node_modules/get-east-asian-width/lookup.js","../../../node_modules/get-east-asian-width/index.js","../../../node_modules/ora/node_modules/string-width/index.js","../../../node_modules/is-interactive/index.js","../../../node_modules/stdin-discarder/index.js","../../../node_modules/ora/index.js","../../../node_modules/@inquirer/core/dist/lib/key.js","../../../node_modules/@inquirer/core/dist/lib/errors.js","../../../node_modules/@inquirer/core/dist/lib/hook-engine.js","../../../node_modules/@inquirer/core/dist/lib/use-state.js","../../../node_modules/@inquirer/core/dist/lib/use-effect.js","../../../node_modules/@inquirer/figures/dist/index.js","../../../node_modules/@inquirer/core/dist/lib/theme.js","../../../node_modules/@inquirer/core/dist/lib/make-theme.js","../../../node_modules/@inquirer/core/dist/lib/use-prefix.js","../../../node_modules/@inquirer/core/dist/lib/use-memo.js","../../../node_modules/@inquirer/core/dist/lib/use-ref.js","../../../node_modules/@inquirer/core/dist/lib/use-keypress.js","../../../node_modules/cli-width/index.js","../../../node_modules/fast-string-truncated-width/dist/utils.js","../../../node_modules/fast-string-truncated-width/dist/index.js","../../../node_modules/fast-string-width/dist/index.js","../../../node_modules/fast-wrap-ansi/lib/main.js","../../../node_modules/@inquirer/core/dist/lib/utils.js","../../../node_modules/@inquirer/core/dist/lib/pagination/use-pagination.js","../../../node_modules/mute-stream/lib/index.js","../../../node_modules/@inquirer/core/node_modules/signal-exit/dist/mjs/signals.js","../../../node_modules/@inquirer/core/node_modules/signal-exit/dist/mjs/index.js","../../../node_modules/@inquirer/ansi/dist/index.js","../../../node_modules/@inquirer/core/dist/lib/screen-manager.js","../../../node_modules/@inquirer/core/dist/lib/promise-polyfill.js","../../../node_modules/@inquirer/core/dist/lib/create-prompt.js","../../../node_modules/@inquirer/core/dist/lib/Separator.js","../../../node_modules/@inquirer/checkbox/dist/index.js","../../../node_modules/@inquirer/confirm/dist/index.js","../../../node_modules/@inquirer/select/dist/index.js","../../../node_modules/minimist/index.js","../src/adapters/base.ts","../src/adapters/claude.ts","../src/adapters/transforms/tool-maps.ts","../src/adapters/transforms/content.ts","../src/adapters/transforms/frontmatter.ts","../src/adapters/opencode.ts","../src/adapters/gemini.ts","../src/adapters/codex.ts","../src/install/shared.ts","../src/install/adapters.ts","../src/install/dashboard.ts","../src/install/hooks.ts","../src/install/copy.ts","../src/install/manifest.ts","../src/install/patches.ts","../src/install/uninstall.ts","../src/install/index.ts"],"sourcesContent":["'use strict'\n\nexports.fromCallback = function (fn) {\n return Object.defineProperty(function (...args) {\n if (typeof args[args.length - 1] === 'function') fn.apply(this, args)\n else {\n return new Promise((resolve, reject) => {\n args.push((err, res) => (err != null) ? reject(err) : resolve(res))\n fn.apply(this, args)\n })\n }\n }, 'name', { value: fn.name })\n}\n\nexports.fromPromise = function (fn) {\n return Object.defineProperty(function (...args) {\n const cb = args[args.length - 1]\n if (typeof cb !== 'function') return fn.apply(this, args)\n else {\n args.pop()\n fn.apply(this, args).then(r => cb(null, r), cb)\n }\n }, 'name', { value: fn.name })\n}\n","var constants = require('constants')\n\nvar origCwd = process.cwd\nvar cwd = null\n\nvar platform = process.env.GRACEFUL_FS_PLATFORM || process.platform\n\nprocess.cwd = function() {\n if (!cwd)\n cwd = origCwd.call(process)\n return cwd\n}\ntry {\n process.cwd()\n} catch (er) {}\n\n// This check is needed until node.js 12 is required\nif (typeof process.chdir === 'function') {\n var chdir = process.chdir\n process.chdir = function (d) {\n cwd = null\n chdir.call(process, d)\n }\n if (Object.setPrototypeOf) Object.setPrototypeOf(process.chdir, chdir)\n}\n\nmodule.exports = patch\n\nfunction patch (fs) {\n // (re-)implement some things that are known busted or missing.\n\n // lchmod, broken prior to 0.6.2\n // back-port the fix here.\n if (constants.hasOwnProperty('O_SYMLINK') &&\n process.version.match(/^v0\\.6\\.[0-2]|^v0\\.5\\./)) {\n patchLchmod(fs)\n }\n\n // lutimes implementation, or no-op\n if (!fs.lutimes) {\n patchLutimes(fs)\n }\n\n // https://github.com/isaacs/node-graceful-fs/issues/4\n // Chown should not fail on einval or eperm if non-root.\n // It should not fail on enosys ever, as this just indicates\n // that a fs doesn't support the intended operation.\n\n fs.chown = chownFix(fs.chown)\n fs.fchown = chownFix(fs.fchown)\n fs.lchown = chownFix(fs.lchown)\n\n fs.chmod = chmodFix(fs.chmod)\n fs.fchmod = chmodFix(fs.fchmod)\n fs.lchmod = chmodFix(fs.lchmod)\n\n fs.chownSync = chownFixSync(fs.chownSync)\n fs.fchownSync = chownFixSync(fs.fchownSync)\n fs.lchownSync = chownFixSync(fs.lchownSync)\n\n fs.chmodSync = chmodFixSync(fs.chmodSync)\n fs.fchmodSync = chmodFixSync(fs.fchmodSync)\n fs.lchmodSync = chmodFixSync(fs.lchmodSync)\n\n fs.stat = statFix(fs.stat)\n fs.fstat = statFix(fs.fstat)\n fs.lstat = statFix(fs.lstat)\n\n fs.statSync = statFixSync(fs.statSync)\n fs.fstatSync = statFixSync(fs.fstatSync)\n fs.lstatSync = statFixSync(fs.lstatSync)\n\n // if lchmod/lchown do not exist, then make them no-ops\n if (fs.chmod && !fs.lchmod) {\n fs.lchmod = function (path, mode, cb) {\n if (cb) process.nextTick(cb)\n }\n fs.lchmodSync = function () {}\n }\n if (fs.chown && !fs.lchown) {\n fs.lchown = function (path, uid, gid, cb) {\n if (cb) process.nextTick(cb)\n }\n fs.lchownSync = function () {}\n }\n\n // on Windows, A/V software can lock the directory, causing this\n // to fail with an EACCES or EPERM if the directory contains newly\n // created files. Try again on failure, for up to 60 seconds.\n\n // Set the timeout this long because some Windows Anti-Virus, such as Parity\n // bit9, may lock files for up to a minute, causing npm package install\n // failures. Also, take care to yield the scheduler. Windows scheduling gives\n // CPU to a busy looping process, which can cause the program causing the lock\n // contention to be starved of CPU by node, so the contention doesn't resolve.\n if (platform === \"win32\") {\n fs.rename = typeof fs.rename !== 'function' ? fs.rename\n : (function (fs$rename) {\n function rename (from, to, cb) {\n var start = Date.now()\n var backoff = 0;\n fs$rename(from, to, function CB (er) {\n if (er\n && (er.code === \"EACCES\" || er.code === \"EPERM\" || er.code === \"EBUSY\")\n && Date.now() - start < 60000) {\n setTimeout(function() {\n fs.stat(to, function (stater, st) {\n if (stater && stater.code === \"ENOENT\")\n fs$rename(from, to, CB);\n else\n cb(er)\n })\n }, backoff)\n if (backoff < 100)\n backoff += 10;\n return;\n }\n if (cb) cb(er)\n })\n }\n if (Object.setPrototypeOf) Object.setPrototypeOf(rename, fs$rename)\n return rename\n })(fs.rename)\n }\n\n // if read() returns EAGAIN, then just try it again.\n fs.read = typeof fs.read !== 'function' ? fs.read\n : (function (fs$read) {\n function read (fd, buffer, offset, length, position, callback_) {\n var callback\n if (callback_ && typeof callback_ === 'function') {\n var eagCounter = 0\n callback = function (er, _, __) {\n if (er && er.code === 'EAGAIN' && eagCounter < 10) {\n eagCounter ++\n return fs$read.call(fs, fd, buffer, offset, length, position, callback)\n }\n callback_.apply(this, arguments)\n }\n }\n return fs$read.call(fs, fd, buffer, offset, length, position, callback)\n }\n\n // This ensures `util.promisify` works as it does for native `fs.read`.\n if (Object.setPrototypeOf) Object.setPrototypeOf(read, fs$read)\n return read\n })(fs.read)\n\n fs.readSync = typeof fs.readSync !== 'function' ? fs.readSync\n : (function (fs$readSync) { return function (fd, buffer, offset, length, position) {\n var eagCounter = 0\n while (true) {\n try {\n return fs$readSync.call(fs, fd, buffer, offset, length, position)\n } catch (er) {\n if (er.code === 'EAGAIN' && eagCounter < 10) {\n eagCounter ++\n continue\n }\n throw er\n }\n }\n }})(fs.readSync)\n\n function patchLchmod (fs) {\n fs.lchmod = function (path, mode, callback) {\n fs.open( path\n , constants.O_WRONLY | constants.O_SYMLINK\n , mode\n , function (err, fd) {\n if (err) {\n if (callback) callback(err)\n return\n }\n // prefer to return the chmod error, if one occurs,\n // but still try to close, and report closing errors if they occur.\n fs.fchmod(fd, mode, function (err) {\n fs.close(fd, function(err2) {\n if (callback) callback(err || err2)\n })\n })\n })\n }\n\n fs.lchmodSync = function (path, mode) {\n var fd = fs.openSync(path, constants.O_WRONLY | constants.O_SYMLINK, mode)\n\n // prefer to return the chmod error, if one occurs,\n // but still try to close, and report closing errors if they occur.\n var threw = true\n var ret\n try {\n ret = fs.fchmodSync(fd, mode)\n threw = false\n } finally {\n if (threw) {\n try {\n fs.closeSync(fd)\n } catch (er) {}\n } else {\n fs.closeSync(fd)\n }\n }\n return ret\n }\n }\n\n function patchLutimes (fs) {\n if (constants.hasOwnProperty(\"O_SYMLINK\") && fs.futimes) {\n fs.lutimes = function (path, at, mt, cb) {\n fs.open(path, constants.O_SYMLINK, function (er, fd) {\n if (er) {\n if (cb) cb(er)\n return\n }\n fs.futimes(fd, at, mt, function (er) {\n fs.close(fd, function (er2) {\n if (cb) cb(er || er2)\n })\n })\n })\n }\n\n fs.lutimesSync = function (path, at, mt) {\n var fd = fs.openSync(path, constants.O_SYMLINK)\n var ret\n var threw = true\n try {\n ret = fs.futimesSync(fd, at, mt)\n threw = false\n } finally {\n if (threw) {\n try {\n fs.closeSync(fd)\n } catch (er) {}\n } else {\n fs.closeSync(fd)\n }\n }\n return ret\n }\n\n } else if (fs.futimes) {\n fs.lutimes = function (_a, _b, _c, cb) { if (cb) process.nextTick(cb) }\n fs.lutimesSync = function () {}\n }\n }\n\n function chmodFix (orig) {\n if (!orig) return orig\n return function (target, mode, cb) {\n return orig.call(fs, target, mode, function (er) {\n if (chownErOk(er)) er = null\n if (cb) cb.apply(this, arguments)\n })\n }\n }\n\n function chmodFixSync (orig) {\n if (!orig) return orig\n return function (target, mode) {\n try {\n return orig.call(fs, target, mode)\n } catch (er) {\n if (!chownErOk(er)) throw er\n }\n }\n }\n\n\n function chownFix (orig) {\n if (!orig) return orig\n return function (target, uid, gid, cb) {\n return orig.call(fs, target, uid, gid, function (er) {\n if (chownErOk(er)) er = null\n if (cb) cb.apply(this, arguments)\n })\n }\n }\n\n function chownFixSync (orig) {\n if (!orig) return orig\n return function (target, uid, gid) {\n try {\n return orig.call(fs, target, uid, gid)\n } catch (er) {\n if (!chownErOk(er)) throw er\n }\n }\n }\n\n function statFix (orig) {\n if (!orig) return orig\n // Older versions of Node erroneously returned signed integers for\n // uid + gid.\n return function (target, options, cb) {\n if (typeof options === 'function') {\n cb = options\n options = null\n }\n function callback (er, stats) {\n if (stats) {\n if (stats.uid < 0) stats.uid += 0x100000000\n if (stats.gid < 0) stats.gid += 0x100000000\n }\n if (cb) cb.apply(this, arguments)\n }\n return options ? orig.call(fs, target, options, callback)\n : orig.call(fs, target, callback)\n }\n }\n\n function statFixSync (orig) {\n if (!orig) return orig\n // Older versions of Node erroneously returned signed integers for\n // uid + gid.\n return function (target, options) {\n var stats = options ? orig.call(fs, target, options)\n : orig.call(fs, target)\n if (stats) {\n if (stats.uid < 0) stats.uid += 0x100000000\n if (stats.gid < 0) stats.gid += 0x100000000\n }\n return stats;\n }\n }\n\n // ENOSYS means that the fs doesn't support the op. Just ignore\n // that, because it doesn't matter.\n //\n // if there's no getuid, or if getuid() is something other\n // than 0, and the error is EINVAL or EPERM, then just ignore\n // it.\n //\n // This specific case is a silent failure in cp, install, tar,\n // and most other unix tools that manage permissions.\n //\n // When running as root, or if other types of errors are\n // encountered, then it's strict.\n function chownErOk (er) {\n if (!er)\n return true\n\n if (er.code === \"ENOSYS\")\n return true\n\n var nonroot = !process.getuid || process.getuid() !== 0\n if (nonroot) {\n if (er.code === \"EINVAL\" || er.code === \"EPERM\")\n return true\n }\n\n return false\n }\n}\n","var Stream = require('stream').Stream\n\nmodule.exports = legacy\n\nfunction legacy (fs) {\n return {\n ReadStream: ReadStream,\n WriteStream: WriteStream\n }\n\n function ReadStream (path, options) {\n if (!(this instanceof ReadStream)) return new ReadStream(path, options);\n\n Stream.call(this);\n\n var self = this;\n\n this.path = path;\n this.fd = null;\n this.readable = true;\n this.paused = false;\n\n this.flags = 'r';\n this.mode = 438; /*=0666*/\n this.bufferSize = 64 * 1024;\n\n options = options || {};\n\n // Mixin options into this\n var keys = Object.keys(options);\n for (var index = 0, length = keys.length; index < length; index++) {\n var key = keys[index];\n this[key] = options[key];\n }\n\n if (this.encoding) this.setEncoding(this.encoding);\n\n if (this.start !== undefined) {\n if ('number' !== typeof this.start) {\n throw TypeError('start must be a Number');\n }\n if (this.end === undefined) {\n this.end = Infinity;\n } else if ('number' !== typeof this.end) {\n throw TypeError('end must be a Number');\n }\n\n if (this.start > this.end) {\n throw new Error('start must be <= end');\n }\n\n this.pos = this.start;\n }\n\n if (this.fd !== null) {\n process.nextTick(function() {\n self._read();\n });\n return;\n }\n\n fs.open(this.path, this.flags, this.mode, function (err, fd) {\n if (err) {\n self.emit('error', err);\n self.readable = false;\n return;\n }\n\n self.fd = fd;\n self.emit('open', fd);\n self._read();\n })\n }\n\n function WriteStream (path, options) {\n if (!(this instanceof WriteStream)) return new WriteStream(path, options);\n\n Stream.call(this);\n\n this.path = path;\n this.fd = null;\n this.writable = true;\n\n this.flags = 'w';\n this.encoding = 'binary';\n this.mode = 438; /*=0666*/\n this.bytesWritten = 0;\n\n options = options || {};\n\n // Mixin options into this\n var keys = Object.keys(options);\n for (var index = 0, length = keys.length; index < length; index++) {\n var key = keys[index];\n this[key] = options[key];\n }\n\n if (this.start !== undefined) {\n if ('number' !== typeof this.start) {\n throw TypeError('start must be a Number');\n }\n if (this.start < 0) {\n throw new Error('start must be >= zero');\n }\n\n this.pos = this.start;\n }\n\n this.busy = false;\n this._queue = [];\n\n if (this.fd === null) {\n this._open = fs.open;\n this._queue.push([this._open, this.path, this.flags, this.mode, undefined]);\n this.flush();\n }\n }\n}\n","'use strict'\n\nmodule.exports = clone\n\nvar getPrototypeOf = Object.getPrototypeOf || function (obj) {\n return obj.__proto__\n}\n\nfunction clone (obj) {\n if (obj === null || typeof obj !== 'object')\n return obj\n\n if (obj instanceof Object)\n var copy = { __proto__: getPrototypeOf(obj) }\n else\n var copy = Object.create(null)\n\n Object.getOwnPropertyNames(obj).forEach(function (key) {\n Object.defineProperty(copy, key, Object.getOwnPropertyDescriptor(obj, key))\n })\n\n return copy\n}\n","var fs = require('fs')\nvar polyfills = require('./polyfills.js')\nvar legacy = require('./legacy-streams.js')\nvar clone = require('./clone.js')\n\nvar util = require('util')\n\n/* istanbul ignore next - node 0.x polyfill */\nvar gracefulQueue\nvar previousSymbol\n\n/* istanbul ignore else - node 0.x polyfill */\nif (typeof Symbol === 'function' && typeof Symbol.for === 'function') {\n gracefulQueue = Symbol.for('graceful-fs.queue')\n // This is used in testing by future versions\n previousSymbol = Symbol.for('graceful-fs.previous')\n} else {\n gracefulQueue = '___graceful-fs.queue'\n previousSymbol = '___graceful-fs.previous'\n}\n\nfunction noop () {}\n\nfunction publishQueue(context, queue) {\n Object.defineProperty(context, gracefulQueue, {\n get: function() {\n return queue\n }\n })\n}\n\nvar debug = noop\nif (util.debuglog)\n debug = util.debuglog('gfs4')\nelse if (/\\bgfs4\\b/i.test(process.env.NODE_DEBUG || ''))\n debug = function() {\n var m = util.format.apply(util, arguments)\n m = 'GFS4: ' + m.split(/\\n/).join('\\nGFS4: ')\n console.error(m)\n }\n\n// Once time initialization\nif (!fs[gracefulQueue]) {\n // This queue can be shared by multiple loaded instances\n var queue = global[gracefulQueue] || []\n publishQueue(fs, queue)\n\n // Patch fs.close/closeSync to shared queue version, because we need\n // to retry() whenever a close happens *anywhere* in the program.\n // This is essential when multiple graceful-fs instances are\n // in play at the same time.\n fs.close = (function (fs$close) {\n function close (fd, cb) {\n return fs$close.call(fs, fd, function (err) {\n // This function uses the graceful-fs shared queue\n if (!err) {\n resetQueue()\n }\n\n if (typeof cb === 'function')\n cb.apply(this, arguments)\n })\n }\n\n Object.defineProperty(close, previousSymbol, {\n value: fs$close\n })\n return close\n })(fs.close)\n\n fs.closeSync = (function (fs$closeSync) {\n function closeSync (fd) {\n // This function uses the graceful-fs shared queue\n fs$closeSync.apply(fs, arguments)\n resetQueue()\n }\n\n Object.defineProperty(closeSync, previousSymbol, {\n value: fs$closeSync\n })\n return closeSync\n })(fs.closeSync)\n\n if (/\\bgfs4\\b/i.test(process.env.NODE_DEBUG || '')) {\n process.on('exit', function() {\n debug(fs[gracefulQueue])\n require('assert').equal(fs[gracefulQueue].length, 0)\n })\n }\n}\n\nif (!global[gracefulQueue]) {\n publishQueue(global, fs[gracefulQueue]);\n}\n\nmodule.exports = patch(clone(fs))\nif (process.env.TEST_GRACEFUL_FS_GLOBAL_PATCH && !fs.__patched) {\n module.exports = patch(fs)\n fs.__patched = true;\n}\n\nfunction patch (fs) {\n // Everything that references the open() function needs to be in here\n polyfills(fs)\n fs.gracefulify = patch\n\n fs.createReadStream = createReadStream\n fs.createWriteStream = createWriteStream\n var fs$readFile = fs.readFile\n fs.readFile = readFile\n function readFile (path, options, cb) {\n if (typeof options === 'function')\n cb = options, options = null\n\n return go$readFile(path, options, cb)\n\n function go$readFile (path, options, cb, startTime) {\n return fs$readFile(path, options, function (err) {\n if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))\n enqueue([go$readFile, [path, options, cb], err, startTime || Date.now(), Date.now()])\n else {\n if (typeof cb === 'function')\n cb.apply(this, arguments)\n }\n })\n }\n }\n\n var fs$writeFile = fs.writeFile\n fs.writeFile = writeFile\n function writeFile (path, data, options, cb) {\n if (typeof options === 'function')\n cb = options, options = null\n\n return go$writeFile(path, data, options, cb)\n\n function go$writeFile (path, data, options, cb, startTime) {\n return fs$writeFile(path, data, options, function (err) {\n if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))\n enqueue([go$writeFile, [path, data, options, cb], err, startTime || Date.now(), Date.now()])\n else {\n if (typeof cb === 'function')\n cb.apply(this, arguments)\n }\n })\n }\n }\n\n var fs$appendFile = fs.appendFile\n if (fs$appendFile)\n fs.appendFile = appendFile\n function appendFile (path, data, options, cb) {\n if (typeof options === 'function')\n cb = options, options = null\n\n return go$appendFile(path, data, options, cb)\n\n function go$appendFile (path, data, options, cb, startTime) {\n return fs$appendFile(path, data, options, function (err) {\n if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))\n enqueue([go$appendFile, [path, data, options, cb], err, startTime || Date.now(), Date.now()])\n else {\n if (typeof cb === 'function')\n cb.apply(this, arguments)\n }\n })\n }\n }\n\n var fs$copyFile = fs.copyFile\n if (fs$copyFile)\n fs.copyFile = copyFile\n function copyFile (src, dest, flags, cb) {\n if (typeof flags === 'function') {\n cb = flags\n flags = 0\n }\n return go$copyFile(src, dest, flags, cb)\n\n function go$copyFile (src, dest, flags, cb, startTime) {\n return fs$copyFile(src, dest, flags, function (err) {\n if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))\n enqueue([go$copyFile, [src, dest, flags, cb], err, startTime || Date.now(), Date.now()])\n else {\n if (typeof cb === 'function')\n cb.apply(this, arguments)\n }\n })\n }\n }\n\n var fs$readdir = fs.readdir\n fs.readdir = readdir\n var noReaddirOptionVersions = /^v[0-5]\\./\n function readdir (path, options, cb) {\n if (typeof options === 'function')\n cb = options, options = null\n\n var go$readdir = noReaddirOptionVersions.test(process.version)\n ? function go$readdir (path, options, cb, startTime) {\n return fs$readdir(path, fs$readdirCallback(\n path, options, cb, startTime\n ))\n }\n : function go$readdir (path, options, cb, startTime) {\n return fs$readdir(path, options, fs$readdirCallback(\n path, options, cb, startTime\n ))\n }\n\n return go$readdir(path, options, cb)\n\n function fs$readdirCallback (path, options, cb, startTime) {\n return function (err, files) {\n if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))\n enqueue([\n go$readdir,\n [path, options, cb],\n err,\n startTime || Date.now(),\n Date.now()\n ])\n else {\n if (files && files.sort)\n files.sort()\n\n if (typeof cb === 'function')\n cb.call(this, err, files)\n }\n }\n }\n }\n\n if (process.version.substr(0, 4) === 'v0.8') {\n var legStreams = legacy(fs)\n ReadStream = legStreams.ReadStream\n WriteStream = legStreams.WriteStream\n }\n\n var fs$ReadStream = fs.ReadStream\n if (fs$ReadStream) {\n ReadStream.prototype = Object.create(fs$ReadStream.prototype)\n ReadStream.prototype.open = ReadStream$open\n }\n\n var fs$WriteStream = fs.WriteStream\n if (fs$WriteStream) {\n WriteStream.prototype = Object.create(fs$WriteStream.prototype)\n WriteStream.prototype.open = WriteStream$open\n }\n\n Object.defineProperty(fs, 'ReadStream', {\n get: function () {\n return ReadStream\n },\n set: function (val) {\n ReadStream = val\n },\n enumerable: true,\n configurable: true\n })\n Object.defineProperty(fs, 'WriteStream', {\n get: function () {\n return WriteStream\n },\n set: function (val) {\n WriteStream = val\n },\n enumerable: true,\n configurable: true\n })\n\n // legacy names\n var FileReadStream = ReadStream\n Object.defineProperty(fs, 'FileReadStream', {\n get: function () {\n return FileReadStream\n },\n set: function (val) {\n FileReadStream = val\n },\n enumerable: true,\n configurable: true\n })\n var FileWriteStream = WriteStream\n Object.defineProperty(fs, 'FileWriteStream', {\n get: function () {\n return FileWriteStream\n },\n set: function (val) {\n FileWriteStream = val\n },\n enumerable: true,\n configurable: true\n })\n\n function ReadStream (path, options) {\n if (this instanceof ReadStream)\n return fs$ReadStream.apply(this, arguments), this\n else\n return ReadStream.apply(Object.create(ReadStream.prototype), arguments)\n }\n\n function ReadStream$open () {\n var that = this\n open(that.path, that.flags, that.mode, function (err, fd) {\n if (err) {\n if (that.autoClose)\n that.destroy()\n\n that.emit('error', err)\n } else {\n that.fd = fd\n that.emit('open', fd)\n that.read()\n }\n })\n }\n\n function WriteStream (path, options) {\n if (this instanceof WriteStream)\n return fs$WriteStream.apply(this, arguments), this\n else\n return WriteStream.apply(Object.create(WriteStream.prototype), arguments)\n }\n\n function WriteStream$open () {\n var that = this\n open(that.path, that.flags, that.mode, function (err, fd) {\n if (err) {\n that.destroy()\n that.emit('error', err)\n } else {\n that.fd = fd\n that.emit('open', fd)\n }\n })\n }\n\n function createReadStream (path, options) {\n return new fs.ReadStream(path, options)\n }\n\n function createWriteStream (path, options) {\n return new fs.WriteStream(path, options)\n }\n\n var fs$open = fs.open\n fs.open = open\n function open (path, flags, mode, cb) {\n if (typeof mode === 'function')\n cb = mode, mode = null\n\n return go$open(path, flags, mode, cb)\n\n function go$open (path, flags, mode, cb, startTime) {\n return fs$open(path, flags, mode, function (err, fd) {\n if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))\n enqueue([go$open, [path, flags, mode, cb], err, startTime || Date.now(), Date.now()])\n else {\n if (typeof cb === 'function')\n cb.apply(this, arguments)\n }\n })\n }\n }\n\n return fs\n}\n\nfunction enqueue (elem) {\n debug('ENQUEUE', elem[0].name, elem[1])\n fs[gracefulQueue].push(elem)\n retry()\n}\n\n// keep track of the timeout between retry() calls\nvar retryTimer\n\n// reset the startTime and lastTime to now\n// this resets the start of the 60 second overall timeout as well as the\n// delay between attempts so that we'll retry these jobs sooner\nfunction resetQueue () {\n var now = Date.now()\n for (var i = 0; i < fs[gracefulQueue].length; ++i) {\n // entries that are only a length of 2 are from an older version, don't\n // bother modifying those since they'll be retried anyway.\n if (fs[gracefulQueue][i].length > 2) {\n fs[gracefulQueue][i][3] = now // startTime\n fs[gracefulQueue][i][4] = now // lastTime\n }\n }\n // call retry to make sure we're actively processing the queue\n retry()\n}\n\nfunction retry () {\n // clear the timer and remove it to help prevent unintended concurrency\n clearTimeout(retryTimer)\n retryTimer = undefined\n\n if (fs[gracefulQueue].length === 0)\n return\n\n var elem = fs[gracefulQueue].shift()\n var fn = elem[0]\n var args = elem[1]\n // these items may be unset if they were added by an older graceful-fs\n var err = elem[2]\n var startTime = elem[3]\n var lastTime = elem[4]\n\n // if we don't have a startTime we have no way of knowing if we've waited\n // long enough, so go ahead and retry this item now\n if (startTime === undefined) {\n debug('RETRY', fn.name, args)\n fn.apply(null, args)\n } else if (Date.now() - startTime >= 60000) {\n // it's been more than 60 seconds total, bail now\n debug('TIMEOUT', fn.name, args)\n var cb = args.pop()\n if (typeof cb === 'function')\n cb.call(null, err)\n } else {\n // the amount of time between the last attempt and right now\n var sinceAttempt = Date.now() - lastTime\n // the amount of time between when we first tried, and when we last tried\n // rounded up to at least 1\n var sinceStart = Math.max(lastTime - startTime, 1)\n // backoff. wait longer than the total time we've been retrying, but only\n // up to a maximum of 100ms\n var desiredDelay = Math.min(sinceStart * 1.2, 100)\n // it's been long enough since the last retry, do it again\n if (sinceAttempt >= desiredDelay) {\n debug('RETRY', fn.name, args)\n fn.apply(null, args.concat([startTime]))\n } else {\n // if we can't do this job yet, push it to the end of the queue\n // and let the next iteration check again\n fs[gracefulQueue].push(elem)\n }\n }\n\n // schedule our next run if one isn't already scheduled\n if (retryTimer === undefined) {\n retryTimer = setTimeout(retry, 0)\n }\n}\n","'use strict'\n// This is adapted from https://github.com/normalize/mz\n// Copyright (c) 2014-2016 Jonathan Ong me@jongleberry.com and Contributors\nconst u = require('universalify').fromCallback\nconst fs = require('graceful-fs')\n\nconst api = [\n 'access',\n 'appendFile',\n 'chmod',\n 'chown',\n 'close',\n 'copyFile',\n 'cp',\n 'fchmod',\n 'fchown',\n 'fdatasync',\n 'fstat',\n 'fsync',\n 'ftruncate',\n 'futimes',\n 'glob',\n 'lchmod',\n 'lchown',\n 'lutimes',\n 'link',\n 'lstat',\n 'mkdir',\n 'mkdtemp',\n 'open',\n 'opendir',\n 'readdir',\n 'readFile',\n 'readlink',\n 'realpath',\n 'rename',\n 'rm',\n 'rmdir',\n 'stat',\n 'statfs',\n 'symlink',\n 'truncate',\n 'unlink',\n 'utimes',\n 'writeFile'\n].filter(key => {\n // Some commands are not available on some systems. Ex:\n // fs.cp was added in Node.js v16.7.0\n // fs.statfs was added in Node v19.6.0, v18.15.0\n // fs.glob was added in Node.js v22.0.0\n // fs.lchown is not available on at least some Linux\n return typeof fs[key] === 'function'\n})\n\n// Export cloned fs:\nObject.assign(exports, fs)\n\n// Universalify async methods:\napi.forEach(method => {\n exports[method] = u(fs[method])\n})\n\n// We differ from mz/fs in that we still ship the old, broken, fs.exists()\n// since we are a drop-in replacement for the native module\nexports.exists = function (filename, callback) {\n if (typeof callback === 'function') {\n return fs.exists(filename, callback)\n }\n return new Promise(resolve => {\n return fs.exists(filename, resolve)\n })\n}\n\n// fs.read(), fs.write(), fs.readv(), & fs.writev() need special treatment due to multiple callback args\n\nexports.read = function (fd, buffer, offset, length, position, callback) {\n if (typeof callback === 'function') {\n return fs.read(fd, buffer, offset, length, position, callback)\n }\n return new Promise((resolve, reject) => {\n fs.read(fd, buffer, offset, length, position, (err, bytesRead, buffer) => {\n if (err) return reject(err)\n resolve({ bytesRead, buffer })\n })\n })\n}\n\n// Function signature can be\n// fs.write(fd, buffer[, offset[, length[, position]]], callback)\n// OR\n// fs.write(fd, string[, position[, encoding]], callback)\n// We need to handle both cases, so we use ...args\nexports.write = function (fd, buffer, ...args) {\n if (typeof args[args.length - 1] === 'function') {\n return fs.write(fd, buffer, ...args)\n }\n\n return new Promise((resolve, reject) => {\n fs.write(fd, buffer, ...args, (err, bytesWritten, buffer) => {\n if (err) return reject(err)\n resolve({ bytesWritten, buffer })\n })\n })\n}\n\n// Function signature is\n// s.readv(fd, buffers[, position], callback)\n// We need to handle the optional arg, so we use ...args\nexports.readv = function (fd, buffers, ...args) {\n if (typeof args[args.length - 1] === 'function') {\n return fs.readv(fd, buffers, ...args)\n }\n\n return new Promise((resolve, reject) => {\n fs.readv(fd, buffers, ...args, (err, bytesRead, buffers) => {\n if (err) return reject(err)\n resolve({ bytesRead, buffers })\n })\n })\n}\n\n// Function signature is\n// s.writev(fd, buffers[, position], callback)\n// We need to handle the optional arg, so we use ...args\nexports.writev = function (fd, buffers, ...args) {\n if (typeof args[args.length - 1] === 'function') {\n return fs.writev(fd, buffers, ...args)\n }\n\n return new Promise((resolve, reject) => {\n fs.writev(fd, buffers, ...args, (err, bytesWritten, buffers) => {\n if (err) return reject(err)\n resolve({ bytesWritten, buffers })\n })\n })\n}\n\n// fs.realpath.native sometimes not available if fs is monkey-patched\nif (typeof fs.realpath.native === 'function') {\n exports.realpath.native = u(fs.realpath.native)\n} else {\n process.emitWarning(\n 'fs.realpath.native is not a function. Is fs being monkey-patched?',\n 'Warning', 'fs-extra-WARN0003'\n )\n}\n","// Adapted from https://github.com/sindresorhus/make-dir\n// Copyright (c) Sindre Sorhus (sindresorhus.com)\n// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n'use strict'\nconst path = require('path')\n\n// https://github.com/nodejs/node/issues/8987\n// https://github.com/libuv/libuv/pull/1088\nmodule.exports.checkPath = function checkPath (pth) {\n if (process.platform === 'win32') {\n const pathHasInvalidWinCharacters = /[<>:\"|?*]/.test(pth.replace(path.parse(pth).root, ''))\n\n if (pathHasInvalidWinCharacters) {\n const error = new Error(`Path contains invalid characters: ${pth}`)\n error.code = 'EINVAL'\n throw error\n }\n }\n}\n","'use strict'\nconst fs = require('../fs')\nconst { checkPath } = require('./utils')\n\nconst getMode = options => {\n const defaults = { mode: 0o777 }\n if (typeof options === 'number') return options\n return ({ ...defaults, ...options }).mode\n}\n\nmodule.exports.makeDir = async (dir, options) => {\n checkPath(dir)\n\n return fs.mkdir(dir, {\n mode: getMode(options),\n recursive: true\n })\n}\n\nmodule.exports.makeDirSync = (dir, options) => {\n checkPath(dir)\n\n return fs.mkdirSync(dir, {\n mode: getMode(options),\n recursive: true\n })\n}\n","'use strict'\nconst u = require('universalify').fromPromise\nconst { makeDir: _makeDir, makeDirSync } = require('./make-dir')\nconst makeDir = u(_makeDir)\n\nmodule.exports = {\n mkdirs: makeDir,\n mkdirsSync: makeDirSync,\n // alias\n mkdirp: makeDir,\n mkdirpSync: makeDirSync,\n ensureDir: makeDir,\n ensureDirSync: makeDirSync\n}\n","'use strict'\nconst u = require('universalify').fromPromise\nconst fs = require('../fs')\n\nfunction pathExists (path) {\n return fs.access(path).then(() => true).catch(() => false)\n}\n\nmodule.exports = {\n pathExists: u(pathExists),\n pathExistsSync: fs.existsSync\n}\n","'use strict'\n\nconst fs = require('../fs')\nconst u = require('universalify').fromPromise\n\nasync function utimesMillis (path, atime, mtime) {\n // if (!HAS_MILLIS_RES) return fs.utimes(path, atime, mtime, callback)\n const fd = await fs.open(path, 'r+')\n\n let closeErr = null\n\n try {\n await fs.futimes(fd, atime, mtime)\n } finally {\n try {\n await fs.close(fd)\n } catch (e) {\n closeErr = e\n }\n }\n\n if (closeErr) {\n throw closeErr\n }\n}\n\nfunction utimesMillisSync (path, atime, mtime) {\n const fd = fs.openSync(path, 'r+')\n fs.futimesSync(fd, atime, mtime)\n return fs.closeSync(fd)\n}\n\nmodule.exports = {\n utimesMillis: u(utimesMillis),\n utimesMillisSync\n}\n","'use strict'\n\nconst fs = require('../fs')\nconst path = require('path')\nconst u = require('universalify').fromPromise\n\nfunction getStats (src, dest, opts) {\n const statFunc = opts.dereference\n ? (file) => fs.stat(file, { bigint: true })\n : (file) => fs.lstat(file, { bigint: true })\n return Promise.all([\n statFunc(src),\n statFunc(dest).catch(err => {\n if (err.code === 'ENOENT') return null\n throw err\n })\n ]).then(([srcStat, destStat]) => ({ srcStat, destStat }))\n}\n\nfunction getStatsSync (src, dest, opts) {\n let destStat\n const statFunc = opts.dereference\n ? (file) => fs.statSync(file, { bigint: true })\n : (file) => fs.lstatSync(file, { bigint: true })\n const srcStat = statFunc(src)\n try {\n destStat = statFunc(dest)\n } catch (err) {\n if (err.code === 'ENOENT') return { srcStat, destStat: null }\n throw err\n }\n return { srcStat, destStat }\n}\n\nasync function checkPaths (src, dest, funcName, opts) {\n const { srcStat, destStat } = await getStats(src, dest, opts)\n if (destStat) {\n if (areIdentical(srcStat, destStat)) {\n const srcBaseName = path.basename(src)\n const destBaseName = path.basename(dest)\n if (funcName === 'move' &&\n srcBaseName !== destBaseName &&\n srcBaseName.toLowerCase() === destBaseName.toLowerCase()) {\n return { srcStat, destStat, isChangingCase: true }\n }\n throw new Error('Source and destination must not be the same.')\n }\n if (srcStat.isDirectory() && !destStat.isDirectory()) {\n throw new Error(`Cannot overwrite non-directory '${dest}' with directory '${src}'.`)\n }\n if (!srcStat.isDirectory() && destStat.isDirectory()) {\n throw new Error(`Cannot overwrite directory '${dest}' with non-directory '${src}'.`)\n }\n }\n\n if (srcStat.isDirectory() && isSrcSubdir(src, dest)) {\n throw new Error(errMsg(src, dest, funcName))\n }\n\n return { srcStat, destStat }\n}\n\nfunction checkPathsSync (src, dest, funcName, opts) {\n const { srcStat, destStat } = getStatsSync(src, dest, opts)\n\n if (destStat) {\n if (areIdentical(srcStat, destStat)) {\n const srcBaseName = path.basename(src)\n const destBaseName = path.basename(dest)\n if (funcName === 'move' &&\n srcBaseName !== destBaseName &&\n srcBaseName.toLowerCase() === destBaseName.toLowerCase()) {\n return { srcStat, destStat, isChangingCase: true }\n }\n throw new Error('Source and destination must not be the same.')\n }\n if (srcStat.isDirectory() && !destStat.isDirectory()) {\n throw new Error(`Cannot overwrite non-directory '${dest}' with directory '${src}'.`)\n }\n if (!srcStat.isDirectory() && destStat.isDirectory()) {\n throw new Error(`Cannot overwrite directory '${dest}' with non-directory '${src}'.`)\n }\n }\n\n if (srcStat.isDirectory() && isSrcSubdir(src, dest)) {\n throw new Error(errMsg(src, dest, funcName))\n }\n return { srcStat, destStat }\n}\n\n// recursively check if dest parent is a subdirectory of src.\n// It works for all file types including symlinks since it\n// checks the src and dest inodes. It starts from the deepest\n// parent and stops once it reaches the src parent or the root path.\nasync function checkParentPaths (src, srcStat, dest, funcName) {\n const srcParent = path.resolve(path.dirname(src))\n const destParent = path.resolve(path.dirname(dest))\n if (destParent === srcParent || destParent === path.parse(destParent).root) return\n\n let destStat\n try {\n destStat = await fs.stat(destParent, { bigint: true })\n } catch (err) {\n if (err.code === 'ENOENT') return\n throw err\n }\n\n if (areIdentical(srcStat, destStat)) {\n throw new Error(errMsg(src, dest, funcName))\n }\n\n return checkParentPaths(src, srcStat, destParent, funcName)\n}\n\nfunction checkParentPathsSync (src, srcStat, dest, funcName) {\n const srcParent = path.resolve(path.dirname(src))\n const destParent = path.resolve(path.dirname(dest))\n if (destParent === srcParent || destParent === path.parse(destParent).root) return\n let destStat\n try {\n destStat = fs.statSync(destParent, { bigint: true })\n } catch (err) {\n if (err.code === 'ENOENT') return\n throw err\n }\n if (areIdentical(srcStat, destStat)) {\n throw new Error(errMsg(src, dest, funcName))\n }\n return checkParentPathsSync(src, srcStat, destParent, funcName)\n}\n\nfunction areIdentical (srcStat, destStat) {\n // stat.dev can be 0n on windows when node version >= 22.x.x\n return destStat.ino !== undefined && destStat.dev !== undefined && destStat.ino === srcStat.ino && destStat.dev === srcStat.dev\n}\n\n// return true if dest is a subdir of src, otherwise false.\n// It only checks the path strings.\nfunction isSrcSubdir (src, dest) {\n const srcArr = path.resolve(src).split(path.sep).filter(i => i)\n const destArr = path.resolve(dest).split(path.sep).filter(i => i)\n return srcArr.every((cur, i) => destArr[i] === cur)\n}\n\nfunction errMsg (src, dest, funcName) {\n return `Cannot ${funcName} '${src}' to a subdirectory of itself, '${dest}'.`\n}\n\nmodule.exports = {\n // checkPaths\n checkPaths: u(checkPaths),\n checkPathsSync,\n // checkParent\n checkParentPaths: u(checkParentPaths),\n checkParentPathsSync,\n // Misc\n isSrcSubdir,\n areIdentical\n}\n","'use strict'\n\n// https://github.com/jprichardson/node-fs-extra/issues/1056\n// Performing parallel operations on each item of an async iterator is\n// surprisingly hard; you need to have handlers in place to avoid getting an\n// UnhandledPromiseRejectionWarning.\n// NOTE: This function does not presently handle return values, only errors\nasync function asyncIteratorConcurrentProcess (iterator, fn) {\n const promises = []\n for await (const item of iterator) {\n promises.push(\n fn(item).then(\n () => null,\n (err) => err ?? new Error('unknown error')\n )\n )\n }\n await Promise.all(\n promises.map((promise) =>\n promise.then((possibleErr) => {\n if (possibleErr !== null) throw possibleErr\n })\n )\n )\n}\n\nmodule.exports = {\n asyncIteratorConcurrentProcess\n}\n","'use strict'\n\nconst fs = require('../fs')\nconst path = require('path')\nconst { mkdirs } = require('../mkdirs')\nconst { pathExists } = require('../path-exists')\nconst { utimesMillis } = require('../util/utimes')\nconst stat = require('../util/stat')\nconst { asyncIteratorConcurrentProcess } = require('../util/async')\n\nasync function copy (src, dest, opts = {}) {\n if (typeof opts === 'function') {\n opts = { filter: opts }\n }\n\n opts.clobber = 'clobber' in opts ? !!opts.clobber : true // default to true for now\n opts.overwrite = 'overwrite' in opts ? !!opts.overwrite : opts.clobber // overwrite falls back to clobber\n\n // Warn about using preserveTimestamps on 32-bit node\n if (opts.preserveTimestamps && process.arch === 'ia32') {\n process.emitWarning(\n 'Using the preserveTimestamps option in 32-bit node is not recommended;\\n\\n' +\n '\\tsee https://github.com/jprichardson/node-fs-extra/issues/269',\n 'Warning', 'fs-extra-WARN0001'\n )\n }\n\n const { srcStat, destStat } = await stat.checkPaths(src, dest, 'copy', opts)\n\n await stat.checkParentPaths(src, srcStat, dest, 'copy')\n\n const include = await runFilter(src, dest, opts)\n\n if (!include) return\n\n // check if the parent of dest exists, and create it if it doesn't exist\n const destParent = path.dirname(dest)\n const dirExists = await pathExists(destParent)\n if (!dirExists) {\n await mkdirs(destParent)\n }\n\n await getStatsAndPerformCopy(destStat, src, dest, opts)\n}\n\nasync function runFilter (src, dest, opts) {\n if (!opts.filter) return true\n return opts.filter(src, dest)\n}\n\nasync function getStatsAndPerformCopy (destStat, src, dest, opts) {\n const statFn = opts.dereference ? fs.stat : fs.lstat\n const srcStat = await statFn(src)\n\n if (srcStat.isDirectory()) return onDir(srcStat, destStat, src, dest, opts)\n\n if (\n srcStat.isFile() ||\n srcStat.isCharacterDevice() ||\n srcStat.isBlockDevice()\n ) return onFile(srcStat, destStat, src, dest, opts)\n\n if (srcStat.isSymbolicLink()) return onLink(destStat, src, dest, opts)\n if (srcStat.isSocket()) throw new Error(`Cannot copy a socket file: ${src}`)\n if (srcStat.isFIFO()) throw new Error(`Cannot copy a FIFO pipe: ${src}`)\n throw new Error(`Unknown file: ${src}`)\n}\n\nasync function onFile (srcStat, destStat, src, dest, opts) {\n if (!destStat) return copyFile(srcStat, src, dest, opts)\n\n if (opts.overwrite) {\n await fs.unlink(dest)\n return copyFile(srcStat, src, dest, opts)\n }\n if (opts.errorOnExist) {\n throw new Error(`'${dest}' already exists`)\n }\n}\n\nasync function copyFile (srcStat, src, dest, opts) {\n await fs.copyFile(src, dest)\n if (opts.preserveTimestamps) {\n // Make sure the file is writable before setting the timestamp\n // otherwise open fails with EPERM when invoked with 'r+'\n // (through utimes call)\n if (fileIsNotWritable(srcStat.mode)) {\n await makeFileWritable(dest, srcStat.mode)\n }\n\n // Set timestamps and mode correspondingly\n\n // Note that The initial srcStat.atime cannot be trusted\n // because it is modified by the read(2) system call\n // (See https://nodejs.org/api/fs.html#fs_stat_time_values)\n const updatedSrcStat = await fs.stat(src)\n await utimesMillis(dest, updatedSrcStat.atime, updatedSrcStat.mtime)\n }\n\n return fs.chmod(dest, srcStat.mode)\n}\n\nfunction fileIsNotWritable (srcMode) {\n return (srcMode & 0o200) === 0\n}\n\nfunction makeFileWritable (dest, srcMode) {\n return fs.chmod(dest, srcMode | 0o200)\n}\n\nasync function onDir (srcStat, destStat, src, dest, opts) {\n // the dest directory might not exist, create it\n if (!destStat) {\n await fs.mkdir(dest)\n }\n\n // iterate through the files in the current directory to copy everything\n await asyncIteratorConcurrentProcess(await fs.opendir(src), async (item) => {\n const srcItem = path.join(src, item.name)\n const destItem = path.join(dest, item.name)\n\n const include = await runFilter(srcItem, destItem, opts)\n // only copy the item if it matches the filter function\n if (include) {\n const { destStat } = await stat.checkPaths(srcItem, destItem, 'copy', opts)\n // If the item is a copyable file, `getStatsAndPerformCopy` will copy it\n // If the item is a directory, `getStatsAndPerformCopy` will call `onDir` recursively\n await getStatsAndPerformCopy(destStat, srcItem, destItem, opts)\n }\n })\n\n if (!destStat) {\n await fs.chmod(dest, srcStat.mode)\n }\n}\n\nasync function onLink (destStat, src, dest, opts) {\n let resolvedSrc = await fs.readlink(src)\n if (opts.dereference) {\n resolvedSrc = path.resolve(process.cwd(), resolvedSrc)\n }\n if (!destStat) {\n return fs.symlink(resolvedSrc, dest)\n }\n\n let resolvedDest = null\n try {\n resolvedDest = await fs.readlink(dest)\n } catch (e) {\n // dest exists and is a regular file or directory,\n // Windows may throw UNKNOWN error. If dest already exists,\n // fs throws error anyway, so no need to guard against it here.\n if (e.code === 'EINVAL' || e.code === 'UNKNOWN') return fs.symlink(resolvedSrc, dest)\n throw e\n }\n if (opts.dereference) {\n resolvedDest = path.resolve(process.cwd(), resolvedDest)\n }\n // If both symlinks resolve to the same target, they are still distinct symlinks\n // that can be copied/overwritten. Only check subdirectory constraints when\n // the resolved paths are different.\n if (resolvedSrc !== resolvedDest) {\n if (stat.isSrcSubdir(resolvedSrc, resolvedDest)) {\n throw new Error(`Cannot copy '${resolvedSrc}' to a subdirectory of itself, '${resolvedDest}'.`)\n }\n\n // do not copy if src is a subdir of dest since unlinking\n // dest in this case would result in removing src contents\n // and therefore a broken symlink would be created.\n if (stat.isSrcSubdir(resolvedDest, resolvedSrc)) {\n throw new Error(`Cannot overwrite '${resolvedDest}' with '${resolvedSrc}'.`)\n }\n }\n\n // copy the link\n await fs.unlink(dest)\n return fs.symlink(resolvedSrc, dest)\n}\n\nmodule.exports = copy\n","'use strict'\n\nconst fs = require('graceful-fs')\nconst path = require('path')\nconst mkdirsSync = require('../mkdirs').mkdirsSync\nconst utimesMillisSync = require('../util/utimes').utimesMillisSync\nconst stat = require('../util/stat')\n\nfunction copySync (src, dest, opts) {\n if (typeof opts === 'function') {\n opts = { filter: opts }\n }\n\n opts = opts || {}\n opts.clobber = 'clobber' in opts ? !!opts.clobber : true // default to true for now\n opts.overwrite = 'overwrite' in opts ? !!opts.overwrite : opts.clobber // overwrite falls back to clobber\n\n // Warn about using preserveTimestamps on 32-bit node\n if (opts.preserveTimestamps && process.arch === 'ia32') {\n process.emitWarning(\n 'Using the preserveTimestamps option in 32-bit node is not recommended;\\n\\n' +\n '\\tsee https://github.com/jprichardson/node-fs-extra/issues/269',\n 'Warning', 'fs-extra-WARN0002'\n )\n }\n\n const { srcStat, destStat } = stat.checkPathsSync(src, dest, 'copy', opts)\n stat.checkParentPathsSync(src, srcStat, dest, 'copy')\n if (opts.filter && !opts.filter(src, dest)) return\n const destParent = path.dirname(dest)\n if (!fs.existsSync(destParent)) mkdirsSync(destParent)\n return getStats(destStat, src, dest, opts)\n}\n\nfunction getStats (destStat, src, dest, opts) {\n const statSync = opts.dereference ? fs.statSync : fs.lstatSync\n const srcStat = statSync(src)\n\n if (srcStat.isDirectory()) return onDir(srcStat, destStat, src, dest, opts)\n else if (srcStat.isFile() ||\n srcStat.isCharacterDevice() ||\n srcStat.isBlockDevice()) return onFile(srcStat, destStat, src, dest, opts)\n else if (srcStat.isSymbolicLink()) return onLink(destStat, src, dest, opts)\n else if (srcStat.isSocket()) throw new Error(`Cannot copy a socket file: ${src}`)\n else if (srcStat.isFIFO()) throw new Error(`Cannot copy a FIFO pipe: ${src}`)\n throw new Error(`Unknown file: ${src}`)\n}\n\nfunction onFile (srcStat, destStat, src, dest, opts) {\n if (!destStat) return copyFile(srcStat, src, dest, opts)\n return mayCopyFile(srcStat, src, dest, opts)\n}\n\nfunction mayCopyFile (srcStat, src, dest, opts) {\n if (opts.overwrite) {\n fs.unlinkSync(dest)\n return copyFile(srcStat, src, dest, opts)\n } else if (opts.errorOnExist) {\n throw new Error(`'${dest}' already exists`)\n }\n}\n\nfunction copyFile (srcStat, src, dest, opts) {\n fs.copyFileSync(src, dest)\n if (opts.preserveTimestamps) handleTimestamps(srcStat.mode, src, dest)\n return setDestMode(dest, srcStat.mode)\n}\n\nfunction handleTimestamps (srcMode, src, dest) {\n // Make sure the file is writable before setting the timestamp\n // otherwise open fails with EPERM when invoked with 'r+'\n // (through utimes call)\n if (fileIsNotWritable(srcMode)) makeFileWritable(dest, srcMode)\n return setDestTimestamps(src, dest)\n}\n\nfunction fileIsNotWritable (srcMode) {\n return (srcMode & 0o200) === 0\n}\n\nfunction makeFileWritable (dest, srcMode) {\n return setDestMode(dest, srcMode | 0o200)\n}\n\nfunction setDestMode (dest, srcMode) {\n return fs.chmodSync(dest, srcMode)\n}\n\nfunction setDestTimestamps (src, dest) {\n // The initial srcStat.atime cannot be trusted\n // because it is modified by the read(2) system call\n // (See https://nodejs.org/api/fs.html#fs_stat_time_values)\n const updatedSrcStat = fs.statSync(src)\n return utimesMillisSync(dest, updatedSrcStat.atime, updatedSrcStat.mtime)\n}\n\nfunction onDir (srcStat, destStat, src, dest, opts) {\n if (!destStat) return mkDirAndCopy(srcStat.mode, src, dest, opts)\n return copyDir(src, dest, opts)\n}\n\nfunction mkDirAndCopy (srcMode, src, dest, opts) {\n fs.mkdirSync(dest)\n copyDir(src, dest, opts)\n return setDestMode(dest, srcMode)\n}\n\nfunction copyDir (src, dest, opts) {\n const dir = fs.opendirSync(src)\n\n try {\n let dirent\n\n while ((dirent = dir.readSync()) !== null) {\n copyDirItem(dirent.name, src, dest, opts)\n }\n } finally {\n dir.closeSync()\n }\n}\n\nfunction copyDirItem (item, src, dest, opts) {\n const srcItem = path.join(src, item)\n const destItem = path.join(dest, item)\n if (opts.filter && !opts.filter(srcItem, destItem)) return\n const { destStat } = stat.checkPathsSync(srcItem, destItem, 'copy', opts)\n return getStats(destStat, srcItem, destItem, opts)\n}\n\nfunction onLink (destStat, src, dest, opts) {\n let resolvedSrc = fs.readlinkSync(src)\n if (opts.dereference) {\n resolvedSrc = path.resolve(process.cwd(), resolvedSrc)\n }\n\n if (!destStat) {\n return fs.symlinkSync(resolvedSrc, dest)\n } else {\n let resolvedDest\n try {\n resolvedDest = fs.readlinkSync(dest)\n } catch (err) {\n // dest exists and is a regular file or directory,\n // Windows may throw UNKNOWN error. If dest already exists,\n // fs throws error anyway, so no need to guard against it here.\n if (err.code === 'EINVAL' || err.code === 'UNKNOWN') return fs.symlinkSync(resolvedSrc, dest)\n throw err\n }\n if (opts.dereference) {\n resolvedDest = path.resolve(process.cwd(), resolvedDest)\n }\n // If both symlinks resolve to the same target, they are still distinct symlinks\n // that can be copied/overwritten. Only check subdirectory constraints when\n // the resolved paths are different.\n if (resolvedSrc !== resolvedDest) {\n if (stat.isSrcSubdir(resolvedSrc, resolvedDest)) {\n throw new Error(`Cannot copy '${resolvedSrc}' to a subdirectory of itself, '${resolvedDest}'.`)\n }\n\n // prevent copy if src is a subdir of dest since unlinking\n // dest in this case would result in removing src contents\n // and therefore a broken symlink would be created.\n if (stat.isSrcSubdir(resolvedDest, resolvedSrc)) {\n throw new Error(`Cannot overwrite '${resolvedDest}' with '${resolvedSrc}'.`)\n }\n }\n return copyLink(resolvedSrc, dest)\n }\n}\n\nfunction copyLink (resolvedSrc, dest) {\n fs.unlinkSync(dest)\n return fs.symlinkSync(resolvedSrc, dest)\n}\n\nmodule.exports = copySync\n","'use strict'\n\nconst u = require('universalify').fromPromise\nmodule.exports = {\n copy: u(require('./copy')),\n copySync: require('./copy-sync')\n}\n","'use strict'\n\nconst fs = require('graceful-fs')\nconst u = require('universalify').fromCallback\n\nfunction remove (path, callback) {\n fs.rm(path, { recursive: true, force: true }, callback)\n}\n\nfunction removeSync (path) {\n fs.rmSync(path, { recursive: true, force: true })\n}\n\nmodule.exports = {\n remove: u(remove),\n removeSync\n}\n","'use strict'\n\nconst u = require('universalify').fromPromise\nconst fs = require('../fs')\nconst path = require('path')\nconst mkdir = require('../mkdirs')\nconst remove = require('../remove')\n\nconst emptyDir = u(async function emptyDir (dir) {\n let items\n try {\n items = await fs.readdir(dir)\n } catch {\n return mkdir.mkdirs(dir)\n }\n\n return Promise.all(items.map(item => remove.remove(path.join(dir, item))))\n})\n\nfunction emptyDirSync (dir) {\n let items\n try {\n items = fs.readdirSync(dir)\n } catch {\n return mkdir.mkdirsSync(dir)\n }\n\n items.forEach(item => {\n item = path.join(dir, item)\n remove.removeSync(item)\n })\n}\n\nmodule.exports = {\n emptyDirSync,\n emptydirSync: emptyDirSync,\n emptyDir,\n emptydir: emptyDir\n}\n","'use strict'\n\nconst u = require('universalify').fromPromise\nconst path = require('path')\nconst fs = require('../fs')\nconst mkdir = require('../mkdirs')\n\nasync function createFile (file) {\n let stats\n try {\n stats = await fs.stat(file)\n } catch { }\n if (stats && stats.isFile()) return\n\n const dir = path.dirname(file)\n\n let dirStats = null\n try {\n dirStats = await fs.stat(dir)\n } catch (err) {\n // if the directory doesn't exist, make it\n if (err.code === 'ENOENT') {\n await mkdir.mkdirs(dir)\n await fs.writeFile(file, '')\n return\n } else {\n throw err\n }\n }\n\n if (dirStats.isDirectory()) {\n await fs.writeFile(file, '')\n } else {\n // parent is not a directory\n // This is just to cause an internal ENOTDIR error to be thrown\n await fs.readdir(dir)\n }\n}\n\nfunction createFileSync (file) {\n let stats\n try {\n stats = fs.statSync(file)\n } catch { }\n if (stats && stats.isFile()) return\n\n const dir = path.dirname(file)\n try {\n if (!fs.statSync(dir).isDirectory()) {\n // parent is not a directory\n // This is just to cause an internal ENOTDIR error to be thrown\n fs.readdirSync(dir)\n }\n } catch (err) {\n // If the stat call above failed because the directory doesn't exist, create it\n if (err && err.code === 'ENOENT') mkdir.mkdirsSync(dir)\n else throw err\n }\n\n fs.writeFileSync(file, '')\n}\n\nmodule.exports = {\n createFile: u(createFile),\n createFileSync\n}\n","'use strict'\n\nconst u = require('universalify').fromPromise\nconst path = require('path')\nconst fs = require('../fs')\nconst mkdir = require('../mkdirs')\nconst { pathExists } = require('../path-exists')\nconst { areIdentical } = require('../util/stat')\n\nasync function createLink (srcpath, dstpath) {\n let dstStat\n try {\n dstStat = await fs.lstat(dstpath)\n } catch {\n // ignore error\n }\n\n let srcStat\n try {\n srcStat = await fs.lstat(srcpath)\n } catch (err) {\n err.message = err.message.replace('lstat', 'ensureLink')\n throw err\n }\n\n if (dstStat && areIdentical(srcStat, dstStat)) return\n\n const dir = path.dirname(dstpath)\n\n const dirExists = await pathExists(dir)\n\n if (!dirExists) {\n await mkdir.mkdirs(dir)\n }\n\n await fs.link(srcpath, dstpath)\n}\n\nfunction createLinkSync (srcpath, dstpath) {\n let dstStat\n try {\n dstStat = fs.lstatSync(dstpath)\n } catch {}\n\n try {\n const srcStat = fs.lstatSync(srcpath)\n if (dstStat && areIdentical(srcStat, dstStat)) return\n } catch (err) {\n err.message = err.message.replace('lstat', 'ensureLink')\n throw err\n }\n\n const dir = path.dirname(dstpath)\n const dirExists = fs.existsSync(dir)\n if (dirExists) return fs.linkSync(srcpath, dstpath)\n mkdir.mkdirsSync(dir)\n\n return fs.linkSync(srcpath, dstpath)\n}\n\nmodule.exports = {\n createLink: u(createLink),\n createLinkSync\n}\n","'use strict'\n\nconst path = require('path')\nconst fs = require('../fs')\nconst { pathExists } = require('../path-exists')\n\nconst u = require('universalify').fromPromise\n\n/**\n * Function that returns two types of paths, one relative to symlink, and one\n * relative to the current working directory. Checks if path is absolute or\n * relative. If the path is relative, this function checks if the path is\n * relative to symlink or relative to current working directory. This is an\n * initiative to find a smarter `srcpath` to supply when building symlinks.\n * This allows you to determine which path to use out of one of three possible\n * types of source paths. The first is an absolute path. This is detected by\n * `path.isAbsolute()`. When an absolute path is provided, it is checked to\n * see if it exists. If it does it's used, if not an error is returned\n * (callback)/ thrown (sync). The other two options for `srcpath` are a\n * relative url. By default Node's `fs.symlink` works by creating a symlink\n * using `dstpath` and expects the `srcpath` to be relative to the newly\n * created symlink. If you provide a `srcpath` that does not exist on the file\n * system it results in a broken symlink. To minimize this, the function\n * checks to see if the 'relative to symlink' source file exists, and if it\n * does it will use it. If it does not, it checks if there's a file that\n * exists that is relative to the current working directory, if does its used.\n * This preserves the expectations of the original fs.symlink spec and adds\n * the ability to pass in `relative to current working direcotry` paths.\n */\n\nasync function symlinkPaths (srcpath, dstpath) {\n if (path.isAbsolute(srcpath)) {\n try {\n await fs.lstat(srcpath)\n } catch (err) {\n err.message = err.message.replace('lstat', 'ensureSymlink')\n throw err\n }\n\n return {\n toCwd: srcpath,\n toDst: srcpath\n }\n }\n\n const dstdir = path.dirname(dstpath)\n const relativeToDst = path.join(dstdir, srcpath)\n\n const exists = await pathExists(relativeToDst)\n if (exists) {\n return {\n toCwd: relativeToDst,\n toDst: srcpath\n }\n }\n\n try {\n await fs.lstat(srcpath)\n } catch (err) {\n err.message = err.message.replace('lstat', 'ensureSymlink')\n throw err\n }\n\n return {\n toCwd: srcpath,\n toDst: path.relative(dstdir, srcpath)\n }\n}\n\nfunction symlinkPathsSync (srcpath, dstpath) {\n if (path.isAbsolute(srcpath)) {\n const exists = fs.existsSync(srcpath)\n if (!exists) throw new Error('absolute srcpath does not exist')\n return {\n toCwd: srcpath,\n toDst: srcpath\n }\n }\n\n const dstdir = path.dirname(dstpath)\n const relativeToDst = path.join(dstdir, srcpath)\n const exists = fs.existsSync(relativeToDst)\n if (exists) {\n return {\n toCwd: relativeToDst,\n toDst: srcpath\n }\n }\n\n const srcExists = fs.existsSync(srcpath)\n if (!srcExists) throw new Error('relative srcpath does not exist')\n return {\n toCwd: srcpath,\n toDst: path.relative(dstdir, srcpath)\n }\n}\n\nmodule.exports = {\n symlinkPaths: u(symlinkPaths),\n symlinkPathsSync\n}\n","'use strict'\n\nconst fs = require('../fs')\nconst u = require('universalify').fromPromise\n\nasync function symlinkType (srcpath, type) {\n if (type) return type\n\n let stats\n try {\n stats = await fs.lstat(srcpath)\n } catch {\n return 'file'\n }\n\n return (stats && stats.isDirectory()) ? 'dir' : 'file'\n}\n\nfunction symlinkTypeSync (srcpath, type) {\n if (type) return type\n\n let stats\n try {\n stats = fs.lstatSync(srcpath)\n } catch {\n return 'file'\n }\n return (stats && stats.isDirectory()) ? 'dir' : 'file'\n}\n\nmodule.exports = {\n symlinkType: u(symlinkType),\n symlinkTypeSync\n}\n","'use strict'\n\nconst u = require('universalify').fromPromise\nconst path = require('path')\nconst fs = require('../fs')\n\nconst { mkdirs, mkdirsSync } = require('../mkdirs')\n\nconst { symlinkPaths, symlinkPathsSync } = require('./symlink-paths')\nconst { symlinkType, symlinkTypeSync } = require('./symlink-type')\n\nconst { pathExists } = require('../path-exists')\n\nconst { areIdentical } = require('../util/stat')\n\nasync function createSymlink (srcpath, dstpath, type) {\n let stats\n try {\n stats = await fs.lstat(dstpath)\n } catch { }\n\n if (stats && stats.isSymbolicLink()) {\n const [srcStat, dstStat] = await Promise.all([\n fs.stat(srcpath),\n fs.stat(dstpath)\n ])\n\n if (areIdentical(srcStat, dstStat)) return\n }\n\n const relative = await symlinkPaths(srcpath, dstpath)\n srcpath = relative.toDst\n const toType = await symlinkType(relative.toCwd, type)\n const dir = path.dirname(dstpath)\n\n if (!(await pathExists(dir))) {\n await mkdirs(dir)\n }\n\n return fs.symlink(srcpath, dstpath, toType)\n}\n\nfunction createSymlinkSync (srcpath, dstpath, type) {\n let stats\n try {\n stats = fs.lstatSync(dstpath)\n } catch { }\n if (stats && stats.isSymbolicLink()) {\n const srcStat = fs.statSync(srcpath)\n const dstStat = fs.statSync(dstpath)\n if (areIdentical(srcStat, dstStat)) return\n }\n\n const relative = symlinkPathsSync(srcpath, dstpath)\n srcpath = relative.toDst\n type = symlinkTypeSync(relative.toCwd, type)\n const dir = path.dirname(dstpath)\n const exists = fs.existsSync(dir)\n if (exists) return fs.symlinkSync(srcpath, dstpath, type)\n mkdirsSync(dir)\n return fs.symlinkSync(srcpath, dstpath, type)\n}\n\nmodule.exports = {\n createSymlink: u(createSymlink),\n createSymlinkSync\n}\n","'use strict'\n\nconst { createFile, createFileSync } = require('./file')\nconst { createLink, createLinkSync } = require('./link')\nconst { createSymlink, createSymlinkSync } = require('./symlink')\n\nmodule.exports = {\n // file\n createFile,\n createFileSync,\n ensureFile: createFile,\n ensureFileSync: createFileSync,\n // link\n createLink,\n createLinkSync,\n ensureLink: createLink,\n ensureLinkSync: createLinkSync,\n // symlink\n createSymlink,\n createSymlinkSync,\n ensureSymlink: createSymlink,\n ensureSymlinkSync: createSymlinkSync\n}\n","function stringify (obj, { EOL = '\\n', finalEOL = true, replacer = null, spaces } = {}) {\n const EOF = finalEOL ? EOL : ''\n const str = JSON.stringify(obj, replacer, spaces)\n\n return str.replace(/\\n/g, EOL) + EOF\n}\n\nfunction stripBom (content) {\n // we do this because JSON.parse would convert it to a utf8 string if encoding wasn't specified\n if (Buffer.isBuffer(content)) content = content.toString('utf8')\n return content.replace(/^\\uFEFF/, '')\n}\n\nmodule.exports = { stringify, stripBom }\n","let _fs\ntry {\n _fs = require('graceful-fs')\n} catch (_) {\n _fs = require('fs')\n}\nconst universalify = require('universalify')\nconst { stringify, stripBom } = require('./utils')\n\nasync function _readFile (file, options = {}) {\n if (typeof options === 'string') {\n options = { encoding: options }\n }\n\n const fs = options.fs || _fs\n\n const shouldThrow = 'throws' in options ? options.throws : true\n\n let data = await universalify.fromCallback(fs.readFile)(file, options)\n\n data = stripBom(data)\n\n let obj\n try {\n obj = JSON.parse(data, options ? options.reviver : null)\n } catch (err) {\n if (shouldThrow) {\n err.message = `${file}: ${err.message}`\n throw err\n } else {\n return null\n }\n }\n\n return obj\n}\n\nconst readFile = universalify.fromPromise(_readFile)\n\nfunction readFileSync (file, options = {}) {\n if (typeof options === 'string') {\n options = { encoding: options }\n }\n\n const fs = options.fs || _fs\n\n const shouldThrow = 'throws' in options ? options.throws : true\n\n try {\n let content = fs.readFileSync(file, options)\n content = stripBom(content)\n return JSON.parse(content, options.reviver)\n } catch (err) {\n if (shouldThrow) {\n err.message = `${file}: ${err.message}`\n throw err\n } else {\n return null\n }\n }\n}\n\nasync function _writeFile (file, obj, options = {}) {\n const fs = options.fs || _fs\n\n const str = stringify(obj, options)\n\n await universalify.fromCallback(fs.writeFile)(file, str, options)\n}\n\nconst writeFile = universalify.fromPromise(_writeFile)\n\nfunction writeFileSync (file, obj, options = {}) {\n const fs = options.fs || _fs\n\n const str = stringify(obj, options)\n // not sure if fs.writeFileSync returns anything, but just in case\n return fs.writeFileSync(file, str, options)\n}\n\n// NOTE: do not change this export format; required for ESM compat\n// see https://github.com/jprichardson/node-jsonfile/pull/162 for details\nmodule.exports = {\n readFile,\n readFileSync,\n writeFile,\n writeFileSync\n}\n","'use strict'\n\nconst jsonFile = require('jsonfile')\n\nmodule.exports = {\n // jsonfile exports\n readJson: jsonFile.readFile,\n readJsonSync: jsonFile.readFileSync,\n writeJson: jsonFile.writeFile,\n writeJsonSync: jsonFile.writeFileSync\n}\n","'use strict'\n\nconst u = require('universalify').fromPromise\nconst fs = require('../fs')\nconst path = require('path')\nconst mkdir = require('../mkdirs')\nconst pathExists = require('../path-exists').pathExists\n\nasync function outputFile (file, data, encoding = 'utf-8') {\n const dir = path.dirname(file)\n\n if (!(await pathExists(dir))) {\n await mkdir.mkdirs(dir)\n }\n\n return fs.writeFile(file, data, encoding)\n}\n\nfunction outputFileSync (file, ...args) {\n const dir = path.dirname(file)\n if (!fs.existsSync(dir)) {\n mkdir.mkdirsSync(dir)\n }\n\n fs.writeFileSync(file, ...args)\n}\n\nmodule.exports = {\n outputFile: u(outputFile),\n outputFileSync\n}\n","'use strict'\n\nconst { stringify } = require('jsonfile/utils')\nconst { outputFile } = require('../output-file')\n\nasync function outputJson (file, data, options = {}) {\n const str = stringify(data, options)\n\n await outputFile(file, str, options)\n}\n\nmodule.exports = outputJson\n","'use strict'\n\nconst { stringify } = require('jsonfile/utils')\nconst { outputFileSync } = require('../output-file')\n\nfunction outputJsonSync (file, data, options) {\n const str = stringify(data, options)\n\n outputFileSync(file, str, options)\n}\n\nmodule.exports = outputJsonSync\n","'use strict'\n\nconst u = require('universalify').fromPromise\nconst jsonFile = require('./jsonfile')\n\njsonFile.outputJson = u(require('./output-json'))\njsonFile.outputJsonSync = require('./output-json-sync')\n// aliases\njsonFile.outputJSON = jsonFile.outputJson\njsonFile.outputJSONSync = jsonFile.outputJsonSync\njsonFile.writeJSON = jsonFile.writeJson\njsonFile.writeJSONSync = jsonFile.writeJsonSync\njsonFile.readJSON = jsonFile.readJson\njsonFile.readJSONSync = jsonFile.readJsonSync\n\nmodule.exports = jsonFile\n","'use strict'\n\nconst fs = require('../fs')\nconst path = require('path')\nconst { copy } = require('../copy')\nconst { remove } = require('../remove')\nconst { mkdirp } = require('../mkdirs')\nconst { pathExists } = require('../path-exists')\nconst stat = require('../util/stat')\n\nasync function move (src, dest, opts = {}) {\n const overwrite = opts.overwrite || opts.clobber || false\n\n const { srcStat, isChangingCase = false } = await stat.checkPaths(src, dest, 'move', opts)\n\n await stat.checkParentPaths(src, srcStat, dest, 'move')\n\n // If the parent of dest is not root, make sure it exists before proceeding\n const destParent = path.dirname(dest)\n const parsedParentPath = path.parse(destParent)\n if (parsedParentPath.root !== destParent) {\n await mkdirp(destParent)\n }\n\n return doRename(src, dest, overwrite, isChangingCase)\n}\n\nasync function doRename (src, dest, overwrite, isChangingCase) {\n if (!isChangingCase) {\n if (overwrite) {\n await remove(dest)\n } else if (await pathExists(dest)) {\n throw new Error('dest already exists.')\n }\n }\n\n try {\n // Try w/ rename first, and try copy + remove if EXDEV\n await fs.rename(src, dest)\n } catch (err) {\n if (err.code !== 'EXDEV') {\n throw err\n }\n await moveAcrossDevice(src, dest, overwrite)\n }\n}\n\nasync function moveAcrossDevice (src, dest, overwrite) {\n const opts = {\n overwrite,\n errorOnExist: true,\n preserveTimestamps: true\n }\n\n await copy(src, dest, opts)\n return remove(src)\n}\n\nmodule.exports = move\n","'use strict'\n\nconst fs = require('graceful-fs')\nconst path = require('path')\nconst copySync = require('../copy').copySync\nconst removeSync = require('../remove').removeSync\nconst mkdirpSync = require('../mkdirs').mkdirpSync\nconst stat = require('../util/stat')\n\nfunction moveSync (src, dest, opts) {\n opts = opts || {}\n const overwrite = opts.overwrite || opts.clobber || false\n\n const { srcStat, isChangingCase = false } = stat.checkPathsSync(src, dest, 'move', opts)\n stat.checkParentPathsSync(src, srcStat, dest, 'move')\n if (!isParentRoot(dest)) mkdirpSync(path.dirname(dest))\n return doRename(src, dest, overwrite, isChangingCase)\n}\n\nfunction isParentRoot (dest) {\n const parent = path.dirname(dest)\n const parsedPath = path.parse(parent)\n return parsedPath.root === parent\n}\n\nfunction doRename (src, dest, overwrite, isChangingCase) {\n if (isChangingCase) return rename(src, dest, overwrite)\n if (overwrite) {\n removeSync(dest)\n return rename(src, dest, overwrite)\n }\n if (fs.existsSync(dest)) throw new Error('dest already exists.')\n return rename(src, dest, overwrite)\n}\n\nfunction rename (src, dest, overwrite) {\n try {\n fs.renameSync(src, dest)\n } catch (err) {\n if (err.code !== 'EXDEV') throw err\n return moveAcrossDevice(src, dest, overwrite)\n }\n}\n\nfunction moveAcrossDevice (src, dest, overwrite) {\n const opts = {\n overwrite,\n errorOnExist: true,\n preserveTimestamps: true\n }\n copySync(src, dest, opts)\n return removeSync(src)\n}\n\nmodule.exports = moveSync\n","'use strict'\n\nconst u = require('universalify').fromPromise\nmodule.exports = {\n move: u(require('./move')),\n moveSync: require('./move-sync')\n}\n","'use strict'\n\nmodule.exports = {\n // Export promiseified graceful-fs:\n ...require('./fs'),\n // Export extra methods:\n ...require('./copy'),\n ...require('./empty'),\n ...require('./ensure'),\n ...require('./json'),\n ...require('./mkdirs'),\n ...require('./move'),\n ...require('./output-file'),\n ...require('./path-exists'),\n ...require('./remove')\n}\n","const ANSI_BACKGROUND_OFFSET = 10;\n\nconst wrapAnsi16 = (offset = 0) => code => `\\u001B[${code + offset}m`;\n\nconst wrapAnsi256 = (offset = 0) => code => `\\u001B[${38 + offset};5;${code}m`;\n\nconst wrapAnsi16m = (offset = 0) => (red, green, blue) => `\\u001B[${38 + offset};2;${red};${green};${blue}m`;\n\nconst styles = {\n\tmodifier: {\n\t\treset: [0, 0],\n\t\t// 21 isn't widely supported and 22 does the same thing\n\t\tbold: [1, 22],\n\t\tdim: [2, 22],\n\t\titalic: [3, 23],\n\t\tunderline: [4, 24],\n\t\toverline: [53, 55],\n\t\tinverse: [7, 27],\n\t\thidden: [8, 28],\n\t\tstrikethrough: [9, 29],\n\t},\n\tcolor: {\n\t\tblack: [30, 39],\n\t\tred: [31, 39],\n\t\tgreen: [32, 39],\n\t\tyellow: [33, 39],\n\t\tblue: [34, 39],\n\t\tmagenta: [35, 39],\n\t\tcyan: [36, 39],\n\t\twhite: [37, 39],\n\n\t\t// Bright color\n\t\tblackBright: [90, 39],\n\t\tgray: [90, 39], // Alias of `blackBright`\n\t\tgrey: [90, 39], // Alias of `blackBright`\n\t\tredBright: [91, 39],\n\t\tgreenBright: [92, 39],\n\t\tyellowBright: [93, 39],\n\t\tblueBright: [94, 39],\n\t\tmagentaBright: [95, 39],\n\t\tcyanBright: [96, 39],\n\t\twhiteBright: [97, 39],\n\t},\n\tbgColor: {\n\t\tbgBlack: [40, 49],\n\t\tbgRed: [41, 49],\n\t\tbgGreen: [42, 49],\n\t\tbgYellow: [43, 49],\n\t\tbgBlue: [44, 49],\n\t\tbgMagenta: [45, 49],\n\t\tbgCyan: [46, 49],\n\t\tbgWhite: [47, 49],\n\n\t\t// Bright color\n\t\tbgBlackBright: [100, 49],\n\t\tbgGray: [100, 49], // Alias of `bgBlackBright`\n\t\tbgGrey: [100, 49], // Alias of `bgBlackBright`\n\t\tbgRedBright: [101, 49],\n\t\tbgGreenBright: [102, 49],\n\t\tbgYellowBright: [103, 49],\n\t\tbgBlueBright: [104, 49],\n\t\tbgMagentaBright: [105, 49],\n\t\tbgCyanBright: [106, 49],\n\t\tbgWhiteBright: [107, 49],\n\t},\n};\n\nexport const modifierNames = Object.keys(styles.modifier);\nexport const foregroundColorNames = Object.keys(styles.color);\nexport const backgroundColorNames = Object.keys(styles.bgColor);\nexport const colorNames = [...foregroundColorNames, ...backgroundColorNames];\n\nfunction assembleStyles() {\n\tconst codes = new Map();\n\n\tfor (const [groupName, group] of Object.entries(styles)) {\n\t\tfor (const [styleName, style] of Object.entries(group)) {\n\t\t\tstyles[styleName] = {\n\t\t\t\topen: `\\u001B[${style[0]}m`,\n\t\t\t\tclose: `\\u001B[${style[1]}m`,\n\t\t\t};\n\n\t\t\tgroup[styleName] = styles[styleName];\n\n\t\t\tcodes.set(style[0], style[1]);\n\t\t}\n\n\t\tObject.defineProperty(styles, groupName, {\n\t\t\tvalue: group,\n\t\t\tenumerable: false,\n\t\t});\n\t}\n\n\tObject.defineProperty(styles, 'codes', {\n\t\tvalue: codes,\n\t\tenumerable: false,\n\t});\n\n\tstyles.color.close = '\\u001B[39m';\n\tstyles.bgColor.close = '\\u001B[49m';\n\n\tstyles.color.ansi = wrapAnsi16();\n\tstyles.color.ansi256 = wrapAnsi256();\n\tstyles.color.ansi16m = wrapAnsi16m();\n\tstyles.bgColor.ansi = wrapAnsi16(ANSI_BACKGROUND_OFFSET);\n\tstyles.bgColor.ansi256 = wrapAnsi256(ANSI_BACKGROUND_OFFSET);\n\tstyles.bgColor.ansi16m = wrapAnsi16m(ANSI_BACKGROUND_OFFSET);\n\n\t// From https://github.com/Qix-/color-convert/blob/3f0e0d4e92e235796ccb17f6e85c72094a651f49/conversions.js\n\tObject.defineProperties(styles, {\n\t\trgbToAnsi256: {\n\t\t\tvalue(red, green, blue) {\n\t\t\t\t// We use the extended greyscale palette here, with the exception of\n\t\t\t\t// black and white. normal palette only has 4 greyscale shades.\n\t\t\t\tif (red === green && green === blue) {\n\t\t\t\t\tif (red < 8) {\n\t\t\t\t\t\treturn 16;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (red > 248) {\n\t\t\t\t\t\treturn 231;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn Math.round(((red - 8) / 247) * 24) + 232;\n\t\t\t\t}\n\n\t\t\t\treturn 16\n\t\t\t\t\t+ (36 * Math.round(red / 255 * 5))\n\t\t\t\t\t+ (6 * Math.round(green / 255 * 5))\n\t\t\t\t\t+ Math.round(blue / 255 * 5);\n\t\t\t},\n\t\t\tenumerable: false,\n\t\t},\n\t\thexToRgb: {\n\t\t\tvalue(hex) {\n\t\t\t\tconst matches = /[a-f\\d]{6}|[a-f\\d]{3}/i.exec(hex.toString(16));\n\t\t\t\tif (!matches) {\n\t\t\t\t\treturn [0, 0, 0];\n\t\t\t\t}\n\n\t\t\t\tlet [colorString] = matches;\n\n\t\t\t\tif (colorString.length === 3) {\n\t\t\t\t\tcolorString = [...colorString].map(character => character + character).join('');\n\t\t\t\t}\n\n\t\t\t\tconst integer = Number.parseInt(colorString, 16);\n\n\t\t\t\treturn [\n\t\t\t\t\t/* eslint-disable no-bitwise */\n\t\t\t\t\t(integer >> 16) & 0xFF,\n\t\t\t\t\t(integer >> 8) & 0xFF,\n\t\t\t\t\tinteger & 0xFF,\n\t\t\t\t\t/* eslint-enable no-bitwise */\n\t\t\t\t];\n\t\t\t},\n\t\t\tenumerable: false,\n\t\t},\n\t\thexToAnsi256: {\n\t\t\tvalue: hex => styles.rgbToAnsi256(...styles.hexToRgb(hex)),\n\t\t\tenumerable: false,\n\t\t},\n\t\tansi256ToAnsi: {\n\t\t\tvalue(code) {\n\t\t\t\tif (code < 8) {\n\t\t\t\t\treturn 30 + code;\n\t\t\t\t}\n\n\t\t\t\tif (code < 16) {\n\t\t\t\t\treturn 90 + (code - 8);\n\t\t\t\t}\n\n\t\t\t\tlet red;\n\t\t\t\tlet green;\n\t\t\t\tlet blue;\n\n\t\t\t\tif (code >= 232) {\n\t\t\t\t\tred = (((code - 232) * 10) + 8) / 255;\n\t\t\t\t\tgreen = red;\n\t\t\t\t\tblue = red;\n\t\t\t\t} else {\n\t\t\t\t\tcode -= 16;\n\n\t\t\t\t\tconst remainder = code % 36;\n\n\t\t\t\t\tred = Math.floor(code / 36) / 5;\n\t\t\t\t\tgreen = Math.floor(remainder / 6) / 5;\n\t\t\t\t\tblue = (remainder % 6) / 5;\n\t\t\t\t}\n\n\t\t\t\tconst value = Math.max(red, green, blue) * 2;\n\n\t\t\t\tif (value === 0) {\n\t\t\t\t\treturn 30;\n\t\t\t\t}\n\n\t\t\t\t// eslint-disable-next-line no-bitwise\n\t\t\t\tlet result = 30 + ((Math.round(blue) << 2) | (Math.round(green) << 1) | Math.round(red));\n\n\t\t\t\tif (value === 2) {\n\t\t\t\t\tresult += 60;\n\t\t\t\t}\n\n\t\t\t\treturn result;\n\t\t\t},\n\t\t\tenumerable: false,\n\t\t},\n\t\trgbToAnsi: {\n\t\t\tvalue: (red, green, blue) => styles.ansi256ToAnsi(styles.rgbToAnsi256(red, green, blue)),\n\t\t\tenumerable: false,\n\t\t},\n\t\thexToAnsi: {\n\t\t\tvalue: hex => styles.ansi256ToAnsi(styles.hexToAnsi256(hex)),\n\t\t\tenumerable: false,\n\t\t},\n\t});\n\n\treturn styles;\n}\n\nconst ansiStyles = assembleStyles();\n\nexport default ansiStyles;\n","import process from 'node:process';\nimport os from 'node:os';\nimport tty from 'node:tty';\n\n// From: https://github.com/sindresorhus/has-flag/blob/main/index.js\n/// function hasFlag(flag, argv = globalThis.Deno?.args ?? process.argv) {\nfunction hasFlag(flag, argv = globalThis.Deno ? globalThis.Deno.args : process.argv) {\n\tconst prefix = flag.startsWith('-') ? '' : (flag.length === 1 ? '-' : '--');\n\tconst position = argv.indexOf(prefix + flag);\n\tconst terminatorPosition = argv.indexOf('--');\n\treturn position !== -1 && (terminatorPosition === -1 || position < terminatorPosition);\n}\n\nconst {env} = process;\n\nlet flagForceColor;\nif (\n\thasFlag('no-color')\n\t|| hasFlag('no-colors')\n\t|| hasFlag('color=false')\n\t|| hasFlag('color=never')\n) {\n\tflagForceColor = 0;\n} else if (\n\thasFlag('color')\n\t|| hasFlag('colors')\n\t|| hasFlag('color=true')\n\t|| hasFlag('color=always')\n) {\n\tflagForceColor = 1;\n}\n\nfunction envForceColor() {\n\tif ('FORCE_COLOR' in env) {\n\t\tif (env.FORCE_COLOR === 'true') {\n\t\t\treturn 1;\n\t\t}\n\n\t\tif (env.FORCE_COLOR === 'false') {\n\t\t\treturn 0;\n\t\t}\n\n\t\treturn env.FORCE_COLOR.length === 0 ? 1 : Math.min(Number.parseInt(env.FORCE_COLOR, 10), 3);\n\t}\n}\n\nfunction translateLevel(level) {\n\tif (level === 0) {\n\t\treturn false;\n\t}\n\n\treturn {\n\t\tlevel,\n\t\thasBasic: true,\n\t\thas256: level >= 2,\n\t\thas16m: level >= 3,\n\t};\n}\n\nfunction _supportsColor(haveStream, {streamIsTTY, sniffFlags = true} = {}) {\n\tconst noFlagForceColor = envForceColor();\n\tif (noFlagForceColor !== undefined) {\n\t\tflagForceColor = noFlagForceColor;\n\t}\n\n\tconst forceColor = sniffFlags ? flagForceColor : noFlagForceColor;\n\n\tif (forceColor === 0) {\n\t\treturn 0;\n\t}\n\n\tif (sniffFlags) {\n\t\tif (hasFlag('color=16m')\n\t\t\t|| hasFlag('color=full')\n\t\t\t|| hasFlag('color=truecolor')) {\n\t\t\treturn 3;\n\t\t}\n\n\t\tif (hasFlag('color=256')) {\n\t\t\treturn 2;\n\t\t}\n\t}\n\n\t// Check for Azure DevOps pipelines.\n\t// Has to be above the `!streamIsTTY` check.\n\tif ('TF_BUILD' in env && 'AGENT_NAME' in env) {\n\t\treturn 1;\n\t}\n\n\tif (haveStream && !streamIsTTY && forceColor === undefined) {\n\t\treturn 0;\n\t}\n\n\tconst min = forceColor || 0;\n\n\tif (env.TERM === 'dumb') {\n\t\treturn min;\n\t}\n\n\tif (process.platform === 'win32') {\n\t\t// Windows 10 build 10586 is the first Windows release that supports 256 colors.\n\t\t// Windows 10 build 14931 is the first release that supports 16m/TrueColor.\n\t\tconst osRelease = os.release().split('.');\n\t\tif (\n\t\t\tNumber(osRelease[0]) >= 10\n\t\t\t&& Number(osRelease[2]) >= 10_586\n\t\t) {\n\t\t\treturn Number(osRelease[2]) >= 14_931 ? 3 : 2;\n\t\t}\n\n\t\treturn 1;\n\t}\n\n\tif ('CI' in env) {\n\t\tif (['GITHUB_ACTIONS', 'GITEA_ACTIONS', 'CIRCLECI'].some(key => key in env)) {\n\t\t\treturn 3;\n\t\t}\n\n\t\tif (['TRAVIS', 'APPVEYOR', 'GITLAB_CI', 'BUILDKITE', 'DRONE'].some(sign => sign in env) || env.CI_NAME === 'codeship') {\n\t\t\treturn 1;\n\t\t}\n\n\t\treturn min;\n\t}\n\n\tif ('TEAMCITY_VERSION' in env) {\n\t\treturn /^(9\\.(0*[1-9]\\d*)\\.|\\d{2,}\\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0;\n\t}\n\n\tif (env.COLORTERM === 'truecolor') {\n\t\treturn 3;\n\t}\n\n\tif (env.TERM === 'xterm-kitty') {\n\t\treturn 3;\n\t}\n\n\tif (env.TERM === 'xterm-ghostty') {\n\t\treturn 3;\n\t}\n\n\tif (env.TERM === 'wezterm') {\n\t\treturn 3;\n\t}\n\n\tif ('TERM_PROGRAM' in env) {\n\t\tconst version = Number.parseInt((env.TERM_PROGRAM_VERSION || '').split('.')[0], 10);\n\n\t\tswitch (env.TERM_PROGRAM) {\n\t\t\tcase 'iTerm.app': {\n\t\t\t\treturn version >= 3 ? 3 : 2;\n\t\t\t}\n\n\t\t\tcase 'Apple_Terminal': {\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t\t// No default\n\t\t}\n\t}\n\n\tif (/-256(color)?$/i.test(env.TERM)) {\n\t\treturn 2;\n\t}\n\n\tif (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) {\n\t\treturn 1;\n\t}\n\n\tif ('COLORTERM' in env) {\n\t\treturn 1;\n\t}\n\n\treturn min;\n}\n\nexport function createSupportsColor(stream, options = {}) {\n\tconst level = _supportsColor(stream, {\n\t\tstreamIsTTY: stream && stream.isTTY,\n\t\t...options,\n\t});\n\n\treturn translateLevel(level);\n}\n\nconst supportsColor = {\n\tstdout: createSupportsColor({isTTY: tty.isatty(1)}),\n\tstderr: createSupportsColor({isTTY: tty.isatty(2)}),\n};\n\nexport default supportsColor;\n","// TODO: When targeting Node.js 16, use `String.prototype.replaceAll`.\nexport function stringReplaceAll(string, substring, replacer) {\n\tlet index = string.indexOf(substring);\n\tif (index === -1) {\n\t\treturn string;\n\t}\n\n\tconst substringLength = substring.length;\n\tlet endIndex = 0;\n\tlet returnValue = '';\n\tdo {\n\t\treturnValue += string.slice(endIndex, index) + substring + replacer;\n\t\tendIndex = index + substringLength;\n\t\tindex = string.indexOf(substring, endIndex);\n\t} while (index !== -1);\n\n\treturnValue += string.slice(endIndex);\n\treturn returnValue;\n}\n\nexport function stringEncaseCRLFWithFirstIndex(string, prefix, postfix, index) {\n\tlet endIndex = 0;\n\tlet returnValue = '';\n\tdo {\n\t\tconst gotCR = string[index - 1] === '\\r';\n\t\treturnValue += string.slice(endIndex, (gotCR ? index - 1 : index)) + prefix + (gotCR ? '\\r\\n' : '\\n') + postfix;\n\t\tendIndex = index + 1;\n\t\tindex = string.indexOf('\\n', endIndex);\n\t} while (index !== -1);\n\n\treturnValue += string.slice(endIndex);\n\treturn returnValue;\n}\n","import ansiStyles from '#ansi-styles';\nimport supportsColor from '#supports-color';\nimport { // eslint-disable-line import/order\n\tstringReplaceAll,\n\tstringEncaseCRLFWithFirstIndex,\n} from './utilities.js';\n\nconst {stdout: stdoutColor, stderr: stderrColor} = supportsColor;\n\nconst GENERATOR = Symbol('GENERATOR');\nconst STYLER = Symbol('STYLER');\nconst IS_EMPTY = Symbol('IS_EMPTY');\n\n// `supportsColor.level` → `ansiStyles.color[name]` mapping\nconst levelMapping = [\n\t'ansi',\n\t'ansi',\n\t'ansi256',\n\t'ansi16m',\n];\n\nconst styles = Object.create(null);\n\nconst applyOptions = (object, options = {}) => {\n\tif (options.level && !(Number.isInteger(options.level) && options.level >= 0 && options.level <= 3)) {\n\t\tthrow new Error('The `level` option should be an integer from 0 to 3');\n\t}\n\n\t// Detect level if not set manually\n\tconst colorLevel = stdoutColor ? stdoutColor.level : 0;\n\tobject.level = options.level === undefined ? colorLevel : options.level;\n};\n\nexport class Chalk {\n\tconstructor(options) {\n\t\t// eslint-disable-next-line no-constructor-return\n\t\treturn chalkFactory(options);\n\t}\n}\n\nconst chalkFactory = options => {\n\tconst chalk = (...strings) => strings.join(' ');\n\tapplyOptions(chalk, options);\n\n\tObject.setPrototypeOf(chalk, createChalk.prototype);\n\n\treturn chalk;\n};\n\nfunction createChalk(options) {\n\treturn chalkFactory(options);\n}\n\nObject.setPrototypeOf(createChalk.prototype, Function.prototype);\n\nfor (const [styleName, style] of Object.entries(ansiStyles)) {\n\tstyles[styleName] = {\n\t\tget() {\n\t\t\tconst builder = createBuilder(this, createStyler(style.open, style.close, this[STYLER]), this[IS_EMPTY]);\n\t\t\tObject.defineProperty(this, styleName, {value: builder});\n\t\t\treturn builder;\n\t\t},\n\t};\n}\n\nstyles.visible = {\n\tget() {\n\t\tconst builder = createBuilder(this, this[STYLER], true);\n\t\tObject.defineProperty(this, 'visible', {value: builder});\n\t\treturn builder;\n\t},\n};\n\nconst getModelAnsi = (model, level, type, ...arguments_) => {\n\tif (model === 'rgb') {\n\t\tif (level === 'ansi16m') {\n\t\t\treturn ansiStyles[type].ansi16m(...arguments_);\n\t\t}\n\n\t\tif (level === 'ansi256') {\n\t\t\treturn ansiStyles[type].ansi256(ansiStyles.rgbToAnsi256(...arguments_));\n\t\t}\n\n\t\treturn ansiStyles[type].ansi(ansiStyles.rgbToAnsi(...arguments_));\n\t}\n\n\tif (model === 'hex') {\n\t\treturn getModelAnsi('rgb', level, type, ...ansiStyles.hexToRgb(...arguments_));\n\t}\n\n\treturn ansiStyles[type][model](...arguments_);\n};\n\nconst usedModels = ['rgb', 'hex', 'ansi256'];\n\nfor (const model of usedModels) {\n\tstyles[model] = {\n\t\tget() {\n\t\t\tconst {level} = this;\n\t\t\treturn function (...arguments_) {\n\t\t\t\tconst styler = createStyler(getModelAnsi(model, levelMapping[level], 'color', ...arguments_), ansiStyles.color.close, this[STYLER]);\n\t\t\t\treturn createBuilder(this, styler, this[IS_EMPTY]);\n\t\t\t};\n\t\t},\n\t};\n\n\tconst bgModel = 'bg' + model[0].toUpperCase() + model.slice(1);\n\tstyles[bgModel] = {\n\t\tget() {\n\t\t\tconst {level} = this;\n\t\t\treturn function (...arguments_) {\n\t\t\t\tconst styler = createStyler(getModelAnsi(model, levelMapping[level], 'bgColor', ...arguments_), ansiStyles.bgColor.close, this[STYLER]);\n\t\t\t\treturn createBuilder(this, styler, this[IS_EMPTY]);\n\t\t\t};\n\t\t},\n\t};\n}\n\nconst proto = Object.defineProperties(() => {}, {\n\t...styles,\n\tlevel: {\n\t\tenumerable: true,\n\t\tget() {\n\t\t\treturn this[GENERATOR].level;\n\t\t},\n\t\tset(level) {\n\t\t\tthis[GENERATOR].level = level;\n\t\t},\n\t},\n});\n\nconst createStyler = (open, close, parent) => {\n\tlet openAll;\n\tlet closeAll;\n\tif (parent === undefined) {\n\t\topenAll = open;\n\t\tcloseAll = close;\n\t} else {\n\t\topenAll = parent.openAll + open;\n\t\tcloseAll = close + parent.closeAll;\n\t}\n\n\treturn {\n\t\topen,\n\t\tclose,\n\t\topenAll,\n\t\tcloseAll,\n\t\tparent,\n\t};\n};\n\nconst createBuilder = (self, _styler, _isEmpty) => {\n\t// Single argument is hot path, implicit coercion is faster than anything\n\t// eslint-disable-next-line no-implicit-coercion\n\tconst builder = (...arguments_) => applyStyle(builder, (arguments_.length === 1) ? ('' + arguments_[0]) : arguments_.join(' '));\n\n\t// We alter the prototype because we must return a function, but there is\n\t// no way to create a function with a different prototype\n\tObject.setPrototypeOf(builder, proto);\n\n\tbuilder[GENERATOR] = self;\n\tbuilder[STYLER] = _styler;\n\tbuilder[IS_EMPTY] = _isEmpty;\n\n\treturn builder;\n};\n\nconst applyStyle = (self, string) => {\n\tif (self.level <= 0 || !string) {\n\t\treturn self[IS_EMPTY] ? '' : string;\n\t}\n\n\tlet styler = self[STYLER];\n\n\tif (styler === undefined) {\n\t\treturn string;\n\t}\n\n\tconst {openAll, closeAll} = styler;\n\tif (string.includes('\\u001B')) {\n\t\twhile (styler !== undefined) {\n\t\t\t// Replace any instances already present with a re-opening code\n\t\t\t// otherwise only the part of the string until said closing code\n\t\t\t// will be colored, and the rest will simply be 'plain'.\n\t\t\tstring = stringReplaceAll(string, styler.close, styler.open);\n\n\t\t\tstyler = styler.parent;\n\t\t}\n\t}\n\n\t// We can move both next actions out of loop, because remaining actions in loop won't have\n\t// any/visible effect on parts we add here. Close the styling before a linebreak and reopen\n\t// after next line to fix a bleed issue on macOS: https://github.com/chalk/chalk/pull/92\n\tconst lfIndex = string.indexOf('\\n');\n\tif (lfIndex !== -1) {\n\t\tstring = stringEncaseCRLFWithFirstIndex(string, closeAll, openAll, lfIndex);\n\t}\n\n\treturn openAll + string + closeAll;\n};\n\nObject.defineProperties(createChalk.prototype, styles);\n\nconst chalk = createChalk();\nexport const chalkStderr = createChalk({level: stderrColor ? stderrColor.level : 0});\n\nexport {\n\tmodifierNames,\n\tforegroundColorNames,\n\tbackgroundColorNames,\n\tcolorNames,\n\n\t// TODO: Remove these aliases in the next major version\n\tmodifierNames as modifiers,\n\tforegroundColorNames as foregroundColors,\n\tbackgroundColorNames as backgroundColors,\n\tcolorNames as colors,\n} from './vendor/ansi-styles/index.js';\n\nexport {\n\tstdoutColor as supportsColor,\n\tstderrColor as supportsColorStderr,\n};\n\nexport default chalk;\n","const copyProperty = (to, from, property, ignoreNonConfigurable) => {\n\t// `Function#length` should reflect the parameters of `to` not `from` since we keep its body.\n\t// `Function#prototype` is non-writable and non-configurable so can never be modified.\n\tif (property === 'length' || property === 'prototype') {\n\t\treturn;\n\t}\n\n\t// `Function#arguments` and `Function#caller` should not be copied. They were reported to be present in `Reflect.ownKeys` for some devices in React Native (#41), so we explicitly ignore them here.\n\tif (property === 'arguments' || property === 'caller') {\n\t\treturn;\n\t}\n\n\tconst toDescriptor = Object.getOwnPropertyDescriptor(to, property);\n\tconst fromDescriptor = Object.getOwnPropertyDescriptor(from, property);\n\n\tif (!canCopyProperty(toDescriptor, fromDescriptor) && ignoreNonConfigurable) {\n\t\treturn;\n\t}\n\n\tObject.defineProperty(to, property, fromDescriptor);\n};\n\n// `Object.defineProperty()` throws if the property exists, is not configurable and either:\n// - one its descriptors is changed\n// - it is non-writable and its value is changed\nconst canCopyProperty = function (toDescriptor, fromDescriptor) {\n\treturn toDescriptor === undefined || toDescriptor.configurable || (\n\t\ttoDescriptor.writable === fromDescriptor.writable\n\t\t&& toDescriptor.enumerable === fromDescriptor.enumerable\n\t\t&& toDescriptor.configurable === fromDescriptor.configurable\n\t\t&& (toDescriptor.writable || toDescriptor.value === fromDescriptor.value)\n\t);\n};\n\nconst changePrototype = (to, from) => {\n\tconst fromPrototype = Object.getPrototypeOf(from);\n\tif (fromPrototype === Object.getPrototypeOf(to)) {\n\t\treturn;\n\t}\n\n\tObject.setPrototypeOf(to, fromPrototype);\n};\n\nconst wrappedToString = (withName, fromBody) => `/* Wrapped ${withName}*/\\n${fromBody}`;\n\nconst toStringDescriptor = Object.getOwnPropertyDescriptor(Function.prototype, 'toString');\nconst toStringName = Object.getOwnPropertyDescriptor(Function.prototype.toString, 'name');\n\n// We call `from.toString()` early (not lazily) to ensure `from` can be garbage collected.\n// We use `bind()` instead of a closure for the same reason.\n// Calling `from.toString()` early also allows caching it in case `to.toString()` is called several times.\nconst changeToString = (to, from, name) => {\n\tconst withName = name === '' ? '' : `with ${name.trim()}() `;\n\tconst newToString = wrappedToString.bind(null, withName, from.toString());\n\t// Ensure `to.toString.toString` is non-enumerable and has the same `same`\n\tObject.defineProperty(newToString, 'name', toStringName);\n\tconst {writable, enumerable, configurable} = toStringDescriptor; // We destructue to avoid a potential `get` descriptor.\n\tObject.defineProperty(to, 'toString', {value: newToString, writable, enumerable, configurable});\n};\n\nexport default function mimicFunction(to, from, {ignoreNonConfigurable = false} = {}) {\n\tconst {name} = to;\n\n\tfor (const property of Reflect.ownKeys(from)) {\n\t\tcopyProperty(to, from, property, ignoreNonConfigurable);\n\t}\n\n\tchangePrototype(to, from);\n\tchangeToString(to, from, name);\n\n\treturn to;\n}\n","import mimicFunction from 'mimic-function';\n\nconst calledFunctions = new WeakMap();\n\nconst onetime = (function_, options = {}) => {\n\tif (typeof function_ !== 'function') {\n\t\tthrow new TypeError('Expected a function');\n\t}\n\n\tlet returnValue;\n\tlet callCount = 0;\n\tconst functionName = function_.displayName || function_.name || '';\n\n\tconst onetime = function (...arguments_) {\n\t\tcalledFunctions.set(onetime, ++callCount);\n\n\t\tif (callCount === 1) {\n\t\t\treturnValue = function_.apply(this, arguments_);\n\t\t\tfunction_ = undefined;\n\t\t} else if (options.throw === true) {\n\t\t\tthrow new Error(`Function \\`${functionName}\\` can only be called once`);\n\t\t}\n\n\t\treturn returnValue;\n\t};\n\n\tmimicFunction(onetime, function_);\n\tcalledFunctions.set(onetime, callCount);\n\n\treturn onetime;\n};\n\nonetime.callCount = function_ => {\n\tif (!calledFunctions.has(function_)) {\n\t\tthrow new Error(`The given function \\`${function_.name}\\` is not wrapped by the \\`onetime\\` package`);\n\t}\n\n\treturn calledFunctions.get(function_);\n};\n\nexport default onetime;\n","/**\n * This is not the set of all possible signals.\n *\n * It IS, however, the set of all signals that trigger\n * an exit on either Linux or BSD systems. Linux is a\n * superset of the signal names supported on BSD, and\n * the unknown signals just fail to register, so we can\n * catch that easily enough.\n *\n * Windows signals are a different set, since there are\n * signals that terminate Windows processes, but don't\n * terminate (or don't even exist) on Posix systems.\n *\n * Don't bother with SIGKILL. It's uncatchable, which\n * means that we can't fire any callbacks anyway.\n *\n * If a user does happen to register a handler on a non-\n * fatal signal like SIGWINCH or something, and then\n * exit, it'll end up firing `process.emit('exit')`, so\n * the handler will be fired anyway.\n *\n * SIGBUS, SIGFPE, SIGSEGV and SIGILL, when not raised\n * artificially, inherently leave the process in a\n * state from which it is not safe to try and enter JS\n * listeners.\n */\nexport const signals = [];\nsignals.push('SIGHUP', 'SIGINT', 'SIGTERM');\nif (process.platform !== 'win32') {\n signals.push('SIGALRM', 'SIGABRT', 'SIGVTALRM', 'SIGXCPU', 'SIGXFSZ', 'SIGUSR2', 'SIGTRAP', 'SIGSYS', 'SIGQUIT', 'SIGIOT'\n // should detect profiler and enable/disable accordingly.\n // see #21\n // 'SIGPROF'\n );\n}\nif (process.platform === 'linux') {\n signals.push('SIGIO', 'SIGPOLL', 'SIGPWR', 'SIGSTKFLT');\n}\n//# sourceMappingURL=signals.js.map","// Note: since nyc uses this module to output coverage, any lines\n// that are in the direct sync flow of nyc's outputCoverage are\n// ignored, since we can never get coverage for them.\n// grab a reference to node's real process object right away\nimport { signals } from './signals.js';\nexport { signals };\nconst processOk = (process) => !!process &&\n typeof process === 'object' &&\n typeof process.removeListener === 'function' &&\n typeof process.emit === 'function' &&\n typeof process.reallyExit === 'function' &&\n typeof process.listeners === 'function' &&\n typeof process.kill === 'function' &&\n typeof process.pid === 'number' &&\n typeof process.on === 'function';\nconst kExitEmitter = Symbol.for('signal-exit emitter');\nconst global = globalThis;\nconst ObjectDefineProperty = Object.defineProperty.bind(Object);\n// teeny special purpose ee\nclass Emitter {\n emitted = {\n afterExit: false,\n exit: false,\n };\n listeners = {\n afterExit: [],\n exit: [],\n };\n count = 0;\n id = Math.random();\n constructor() {\n if (global[kExitEmitter]) {\n return global[kExitEmitter];\n }\n ObjectDefineProperty(global, kExitEmitter, {\n value: this,\n writable: false,\n enumerable: false,\n configurable: false,\n });\n }\n on(ev, fn) {\n this.listeners[ev].push(fn);\n }\n removeListener(ev, fn) {\n const list = this.listeners[ev];\n const i = list.indexOf(fn);\n /* c8 ignore start */\n if (i === -1) {\n return;\n }\n /* c8 ignore stop */\n if (i === 0 && list.length === 1) {\n list.length = 0;\n }\n else {\n list.splice(i, 1);\n }\n }\n emit(ev, code, signal) {\n if (this.emitted[ev]) {\n return false;\n }\n this.emitted[ev] = true;\n let ret = false;\n for (const fn of this.listeners[ev]) {\n ret = fn(code, signal) === true || ret;\n }\n if (ev === 'exit') {\n ret = this.emit('afterExit', code, signal) || ret;\n }\n return ret;\n }\n}\nclass SignalExitBase {\n}\nconst signalExitWrap = (handler) => {\n return {\n onExit(cb, opts) {\n return handler.onExit(cb, opts);\n },\n load() {\n return handler.load();\n },\n unload() {\n return handler.unload();\n },\n };\n};\nclass SignalExitFallback extends SignalExitBase {\n onExit() {\n return () => { };\n }\n load() { }\n unload() { }\n}\nclass SignalExit extends SignalExitBase {\n // \"SIGHUP\" throws an `ENOSYS` error on Windows,\n // so use a supported signal instead\n /* c8 ignore start */\n #hupSig = process.platform === 'win32' ? 'SIGINT' : 'SIGHUP';\n /* c8 ignore stop */\n #emitter = new Emitter();\n #process;\n #originalProcessEmit;\n #originalProcessReallyExit;\n #sigListeners = {};\n #loaded = false;\n constructor(process) {\n super();\n this.#process = process;\n // { : , ... }\n this.#sigListeners = {};\n for (const sig of signals) {\n this.#sigListeners[sig] = () => {\n // If there are no other listeners, an exit is coming!\n // Simplest way: remove us and then re-send the signal.\n // We know that this will kill the process, so we can\n // safely emit now.\n const listeners = this.#process.listeners(sig);\n let { count } = this.#emitter;\n // This is a workaround for the fact that signal-exit v3 and signal\n // exit v4 are not aware of each other, and each will attempt to let\n // the other handle it, so neither of them do. To correct this, we\n // detect if we're the only handler *except* for previous versions\n // of signal-exit, and increment by the count of listeners it has\n // created.\n /* c8 ignore start */\n const p = process;\n if (typeof p.__signal_exit_emitter__ === 'object' &&\n typeof p.__signal_exit_emitter__.count === 'number') {\n count += p.__signal_exit_emitter__.count;\n }\n /* c8 ignore stop */\n if (listeners.length === count) {\n this.unload();\n const ret = this.#emitter.emit('exit', null, sig);\n /* c8 ignore start */\n const s = sig === 'SIGHUP' ? this.#hupSig : sig;\n if (!ret)\n process.kill(process.pid, s);\n /* c8 ignore stop */\n }\n };\n }\n this.#originalProcessReallyExit = process.reallyExit;\n this.#originalProcessEmit = process.emit;\n }\n onExit(cb, opts) {\n /* c8 ignore start */\n if (!processOk(this.#process)) {\n return () => { };\n }\n /* c8 ignore stop */\n if (this.#loaded === false) {\n this.load();\n }\n const ev = opts?.alwaysLast ? 'afterExit' : 'exit';\n this.#emitter.on(ev, cb);\n return () => {\n this.#emitter.removeListener(ev, cb);\n if (this.#emitter.listeners['exit'].length === 0 &&\n this.#emitter.listeners['afterExit'].length === 0) {\n this.unload();\n }\n };\n }\n load() {\n if (this.#loaded) {\n return;\n }\n this.#loaded = true;\n // This is the number of onSignalExit's that are in play.\n // It's important so that we can count the correct number of\n // listeners on signals, and don't wait for the other one to\n // handle it instead of us.\n this.#emitter.count += 1;\n for (const sig of signals) {\n try {\n const fn = this.#sigListeners[sig];\n if (fn)\n this.#process.on(sig, fn);\n }\n catch (_) { }\n }\n this.#process.emit = (ev, ...a) => {\n return this.#processEmit(ev, ...a);\n };\n this.#process.reallyExit = (code) => {\n return this.#processReallyExit(code);\n };\n }\n unload() {\n if (!this.#loaded) {\n return;\n }\n this.#loaded = false;\n signals.forEach(sig => {\n const listener = this.#sigListeners[sig];\n /* c8 ignore start */\n if (!listener) {\n throw new Error('Listener not defined for signal: ' + sig);\n }\n /* c8 ignore stop */\n try {\n this.#process.removeListener(sig, listener);\n /* c8 ignore start */\n }\n catch (_) { }\n /* c8 ignore stop */\n });\n this.#process.emit = this.#originalProcessEmit;\n this.#process.reallyExit = this.#originalProcessReallyExit;\n this.#emitter.count -= 1;\n }\n #processReallyExit(code) {\n /* c8 ignore start */\n if (!processOk(this.#process)) {\n return 0;\n }\n this.#process.exitCode = code || 0;\n /* c8 ignore stop */\n this.#emitter.emit('exit', this.#process.exitCode, null);\n return this.#originalProcessReallyExit.call(this.#process, this.#process.exitCode);\n }\n #processEmit(ev, ...args) {\n const og = this.#originalProcessEmit;\n if (ev === 'exit' && processOk(this.#process)) {\n if (typeof args[0] === 'number') {\n this.#process.exitCode = args[0];\n /* c8 ignore start */\n }\n /* c8 ignore start */\n const ret = og.call(this.#process, ev, ...args);\n /* c8 ignore start */\n this.#emitter.emit('exit', this.#process.exitCode, null);\n /* c8 ignore stop */\n return ret;\n }\n else {\n return og.call(this.#process, ev, ...args);\n }\n }\n}\nconst process = globalThis.process;\n// wrap so that we call the method on the actual handler, without\n// exporting it directly.\nexport const { \n/**\n * Called when the process is exiting, whether via signal, explicit\n * exit, or running out of stuff to do.\n *\n * If the global process object is not suitable for instrumentation,\n * then this will be a no-op.\n *\n * Returns a function that may be used to unload signal-exit.\n */\nonExit, \n/**\n * Load the listeners. Likely you never need to call this, unless\n * doing a rather deep integration with signal-exit functionality.\n * Mostly exposed for the benefit of testing.\n *\n * @internal\n */\nload, \n/**\n * Unload the listeners. Likely you never need to call this, unless\n * doing a rather deep integration with signal-exit functionality.\n * Mostly exposed for the benefit of testing.\n *\n * @internal\n */\nunload, } = signalExitWrap(processOk(process) ? new SignalExit(process) : new SignalExitFallback());\n//# sourceMappingURL=index.js.map","import process from 'node:process';\nimport onetime from 'onetime';\nimport {onExit} from 'signal-exit';\n\nconst terminal = process.stderr.isTTY\n\t? process.stderr\n\t: (process.stdout.isTTY ? process.stdout : undefined);\n\nconst restoreCursor = terminal ? onetime(() => {\n\tonExit(() => {\n\t\tterminal.write('\\u001B[?25h');\n\t}, {alwaysLast: true});\n}) : () => {};\n\nexport default restoreCursor;\n","import process from 'node:process';\nimport restoreCursor from 'restore-cursor';\n\nlet isHidden = false;\n\nconst cliCursor = {};\n\ncliCursor.show = (writableStream = process.stderr) => {\n\tif (!writableStream.isTTY) {\n\t\treturn;\n\t}\n\n\tisHidden = false;\n\twritableStream.write('\\u001B[?25h');\n};\n\ncliCursor.hide = (writableStream = process.stderr) => {\n\tif (!writableStream.isTTY) {\n\t\treturn;\n\t}\n\n\trestoreCursor();\n\tisHidden = true;\n\twritableStream.write('\\u001B[?25l');\n};\n\ncliCursor.toggle = (force, writableStream) => {\n\tif (force !== undefined) {\n\t\tisHidden = force;\n\t}\n\n\tif (isHidden) {\n\t\tcliCursor.show(writableStream);\n\t} else {\n\t\tcliCursor.hide(writableStream);\n\t}\n};\n\nexport default cliCursor;\n","","import spinners from './spinners.json' with {type: 'json'};\n\nexport default spinners;\n\nconst spinnersList = Object.keys(spinners);\n\nexport function randomSpinner() {\n\tconst randomIndex = Math.floor(Math.random() * spinnersList.length);\n\tconst spinnerName = spinnersList[randomIndex];\n\treturn spinners[spinnerName];\n}\n","import tty from 'node:tty';\n\n// eslint-disable-next-line no-warning-comments\n// TODO: Use a better method when it's added to Node.js (https://github.com/nodejs/node/pull/40240)\n// Lots of optionals here to support Deno.\nconst hasColors = tty?.WriteStream?.prototype?.hasColors?.() ?? false;\n\nconst format = (open, close) => {\n\tif (!hasColors) {\n\t\treturn input => input;\n\t}\n\n\tconst openCode = `\\u001B[${open}m`;\n\tconst closeCode = `\\u001B[${close}m`;\n\n\treturn input => {\n\t\tconst string = input + ''; // eslint-disable-line no-implicit-coercion -- This is faster.\n\t\tlet index = string.indexOf(closeCode);\n\n\t\tif (index === -1) {\n\t\t\t// Note: Intentionally not using string interpolation for performance reasons.\n\t\t\treturn openCode + string + closeCode;\n\t\t}\n\n\t\t// Handle nested colors.\n\n\t\t// We could have done this, but it's too slow (as of Node.js 22).\n\t\t// return openCode + string.replaceAll(closeCode, (close === 22 ? closeCode : '') + openCode) + closeCode;\n\n\t\tlet result = openCode;\n\t\tlet lastIndex = 0;\n\n\t\t// SGR 22 resets both bold (1) and dim (2). When we encounter a nested\n\t\t// close for styles that use 22, we need to re-open the outer style.\n\t\tconst reopenOnNestedClose = close === 22;\n\t\tconst replaceCode = (reopenOnNestedClose ? closeCode : '') + openCode;\n\n\t\twhile (index !== -1) {\n\t\t\tresult += string.slice(lastIndex, index) + replaceCode;\n\t\t\tlastIndex = index + closeCode.length;\n\t\t\tindex = string.indexOf(closeCode, lastIndex);\n\t\t}\n\n\t\tresult += string.slice(lastIndex) + closeCode;\n\n\t\treturn result;\n\t};\n};\n\nexport const reset = format(0, 0);\nexport const bold = format(1, 22);\nexport const dim = format(2, 22);\nexport const italic = format(3, 23);\nexport const underline = format(4, 24);\nexport const overline = format(53, 55);\nexport const inverse = format(7, 27);\nexport const hidden = format(8, 28);\nexport const strikethrough = format(9, 29);\n\nexport const black = format(30, 39);\nexport const red = format(31, 39);\nexport const green = format(32, 39);\nexport const yellow = format(33, 39);\nexport const blue = format(34, 39);\nexport const magenta = format(35, 39);\nexport const cyan = format(36, 39);\nexport const white = format(37, 39);\nexport const gray = format(90, 39);\n\nexport const bgBlack = format(40, 49);\nexport const bgRed = format(41, 49);\nexport const bgGreen = format(42, 49);\nexport const bgYellow = format(43, 49);\nexport const bgBlue = format(44, 49);\nexport const bgMagenta = format(45, 49);\nexport const bgCyan = format(46, 49);\nexport const bgWhite = format(47, 49);\nexport const bgGray = format(100, 49);\n\nexport const redBright = format(91, 39);\nexport const greenBright = format(92, 39);\nexport const yellowBright = format(93, 39);\nexport const blueBright = format(94, 39);\nexport const magentaBright = format(95, 39);\nexport const cyanBright = format(96, 39);\nexport const whiteBright = format(97, 39);\n\nexport const bgRedBright = format(101, 49);\nexport const bgGreenBright = format(102, 49);\nexport const bgYellowBright = format(103, 49);\nexport const bgBlueBright = format(104, 49);\nexport const bgMagentaBright = format(105, 49);\nexport const bgCyanBright = format(106, 49);\nexport const bgWhiteBright = format(107, 49);\n","import process from 'node:process';\n\nexport default function isUnicodeSupported() {\n\tconst {env} = process;\n\tconst {TERM, TERM_PROGRAM} = env;\n\n\tif (process.platform !== 'win32') {\n\t\treturn TERM !== 'linux'; // Linux console (kernel)\n\t}\n\n\treturn Boolean(env.WT_SESSION) // Windows Terminal\n\t\t|| Boolean(env.TERMINUS_SUBLIME) // Terminus (<0.2.27)\n\t\t|| env.ConEmuTask === '{cmd::Cmder}' // ConEmu and cmder\n\t\t|| TERM_PROGRAM === 'Terminus-Sublime'\n\t\t|| TERM_PROGRAM === 'vscode'\n\t\t|| TERM === 'xterm-256color'\n\t\t|| TERM === 'alacritty'\n\t\t|| TERM === 'rxvt-unicode'\n\t\t|| TERM === 'rxvt-unicode-256color'\n\t\t|| env.TERMINAL_EMULATOR === 'JetBrains-JediTerm';\n}\n","import {\n\tblue,\n\tgreen,\n\tyellow,\n\tred,\n} from 'yoctocolors';\nimport isUnicodeSupported from 'is-unicode-supported';\n\nconst _isUnicodeSupported = isUnicodeSupported();\n\nexport const info = blue(_isUnicodeSupported ? 'ℹ' : 'i');\nexport const success = green(_isUnicodeSupported ? '✔' : '√');\nexport const warning = yellow(_isUnicodeSupported ? '⚠' : '‼');\nexport const error = red(_isUnicodeSupported ? '✖' : '×');\n","export default function ansiRegex({onlyFirst = false} = {}) {\n\t// Valid string terminator sequences are BEL, ESC\\, and 0x9c\n\tconst ST = '(?:\\\\u0007|\\\\u001B\\\\u005C|\\\\u009C)';\n\n\t// OSC sequences only: ESC ] ... ST (non-greedy until the first ST)\n\tconst osc = `(?:\\\\u001B\\\\][\\\\s\\\\S]*?${ST})`;\n\n\t// CSI and related: ESC/C1, optional intermediates, optional params (supports ; and :) then final byte\n\tconst csi = '[\\\\u001B\\\\u009B][[\\\\]()#;?]*(?:\\\\d{1,4}(?:[;:]\\\\d{0,4})*)?[\\\\dA-PR-TZcf-nq-uy=><~]';\n\n\tconst pattern = `${osc}|${csi}`;\n\n\treturn new RegExp(pattern, onlyFirst ? undefined : 'g');\n}\n","import ansiRegex from 'ansi-regex';\n\nconst regex = ansiRegex();\n\nexport default function stripAnsi(string) {\n\tif (typeof string !== 'string') {\n\t\tthrow new TypeError(`Expected a \\`string\\`, got \\`${typeof string}\\``);\n\t}\n\n\t// Even though the regex is global, we don't need to reset the `.lastIndex`\n\t// because unlike `.exec()` and `.test()`, `.replace()` does it automatically\n\t// and doing it manually has a performance penalty.\n\treturn string.replace(regex, '');\n}\n","// Generated by scripts/build.js\n\n// prettier-ignore\nconst ambiguousRanges = [161, 161, 164, 164, 167, 168, 170, 170, 173, 174, 176, 180, 182, 186, 188, 191, 198, 198, 208, 208, 215, 216, 222, 225, 230, 230, 232, 234, 236, 237, 240, 240, 242, 243, 247, 250, 252, 252, 254, 254, 257, 257, 273, 273, 275, 275, 283, 283, 294, 295, 299, 299, 305, 307, 312, 312, 319, 322, 324, 324, 328, 331, 333, 333, 338, 339, 358, 359, 363, 363, 462, 462, 464, 464, 466, 466, 468, 468, 470, 470, 472, 472, 474, 474, 476, 476, 593, 593, 609, 609, 708, 708, 711, 711, 713, 715, 717, 717, 720, 720, 728, 731, 733, 733, 735, 735, 768, 879, 913, 929, 931, 937, 945, 961, 963, 969, 1025, 1025, 1040, 1103, 1105, 1105, 8208, 8208, 8211, 8214, 8216, 8217, 8220, 8221, 8224, 8226, 8228, 8231, 8240, 8240, 8242, 8243, 8245, 8245, 8251, 8251, 8254, 8254, 8308, 8308, 8319, 8319, 8321, 8324, 8364, 8364, 8451, 8451, 8453, 8453, 8457, 8457, 8467, 8467, 8470, 8470, 8481, 8482, 8486, 8486, 8491, 8491, 8531, 8532, 8539, 8542, 8544, 8555, 8560, 8569, 8585, 8585, 8592, 8601, 8632, 8633, 8658, 8658, 8660, 8660, 8679, 8679, 8704, 8704, 8706, 8707, 8711, 8712, 8715, 8715, 8719, 8719, 8721, 8721, 8725, 8725, 8730, 8730, 8733, 8736, 8739, 8739, 8741, 8741, 8743, 8748, 8750, 8750, 8756, 8759, 8764, 8765, 8776, 8776, 8780, 8780, 8786, 8786, 8800, 8801, 8804, 8807, 8810, 8811, 8814, 8815, 8834, 8835, 8838, 8839, 8853, 8853, 8857, 8857, 8869, 8869, 8895, 8895, 8978, 8978, 9312, 9449, 9451, 9547, 9552, 9587, 9600, 9615, 9618, 9621, 9632, 9633, 9635, 9641, 9650, 9651, 9654, 9655, 9660, 9661, 9664, 9665, 9670, 9672, 9675, 9675, 9678, 9681, 9698, 9701, 9711, 9711, 9733, 9734, 9737, 9737, 9742, 9743, 9756, 9756, 9758, 9758, 9792, 9792, 9794, 9794, 9824, 9825, 9827, 9829, 9831, 9834, 9836, 9837, 9839, 9839, 9886, 9887, 9919, 9919, 9926, 9933, 9935, 9939, 9941, 9953, 9955, 9955, 9960, 9961, 9963, 9969, 9972, 9972, 9974, 9977, 9979, 9980, 9982, 9983, 10045, 10045, 10102, 10111, 11094, 11097, 12872, 12879, 57344, 63743, 65024, 65039, 65533, 65533, 127232, 127242, 127248, 127277, 127280, 127337, 127344, 127373, 127375, 127376, 127387, 127404, 917760, 917999, 983040, 1048573, 1048576, 1114109];\n\n// prettier-ignore\nconst fullwidthRanges = [12288, 12288, 65281, 65376, 65504, 65510];\n\n// prettier-ignore\nconst halfwidthRanges = [8361, 8361, 65377, 65470, 65474, 65479, 65482, 65487, 65490, 65495, 65498, 65500, 65512, 65518];\n\n// prettier-ignore\nconst narrowRanges = [32, 126, 162, 163, 165, 166, 172, 172, 175, 175, 10214, 10221, 10629, 10630];\n\n// prettier-ignore\nconst wideRanges = [4352, 4447, 8986, 8987, 9001, 9002, 9193, 9196, 9200, 9200, 9203, 9203, 9725, 9726, 9748, 9749, 9776, 9783, 9800, 9811, 9855, 9855, 9866, 9871, 9875, 9875, 9889, 9889, 9898, 9899, 9917, 9918, 9924, 9925, 9934, 9934, 9940, 9940, 9962, 9962, 9970, 9971, 9973, 9973, 9978, 9978, 9981, 9981, 9989, 9989, 9994, 9995, 10024, 10024, 10060, 10060, 10062, 10062, 10067, 10069, 10071, 10071, 10133, 10135, 10160, 10160, 10175, 10175, 11035, 11036, 11088, 11088, 11093, 11093, 11904, 11929, 11931, 12019, 12032, 12245, 12272, 12287, 12289, 12350, 12353, 12438, 12441, 12543, 12549, 12591, 12593, 12686, 12688, 12773, 12783, 12830, 12832, 12871, 12880, 42124, 42128, 42182, 43360, 43388, 44032, 55203, 63744, 64255, 65040, 65049, 65072, 65106, 65108, 65126, 65128, 65131, 94176, 94180, 94192, 94198, 94208, 101589, 101631, 101662, 101760, 101874, 110576, 110579, 110581, 110587, 110589, 110590, 110592, 110882, 110898, 110898, 110928, 110930, 110933, 110933, 110948, 110951, 110960, 111355, 119552, 119638, 119648, 119670, 126980, 126980, 127183, 127183, 127374, 127374, 127377, 127386, 127488, 127490, 127504, 127547, 127552, 127560, 127568, 127569, 127584, 127589, 127744, 127776, 127789, 127797, 127799, 127868, 127870, 127891, 127904, 127946, 127951, 127955, 127968, 127984, 127988, 127988, 127992, 128062, 128064, 128064, 128066, 128252, 128255, 128317, 128331, 128334, 128336, 128359, 128378, 128378, 128405, 128406, 128420, 128420, 128507, 128591, 128640, 128709, 128716, 128716, 128720, 128722, 128725, 128728, 128732, 128735, 128747, 128748, 128756, 128764, 128992, 129003, 129008, 129008, 129292, 129338, 129340, 129349, 129351, 129535, 129648, 129660, 129664, 129674, 129678, 129734, 129736, 129736, 129741, 129756, 129759, 129770, 129775, 129784, 131072, 196605, 196608, 262141];\n\nexport {ambiguousRanges, fullwidthRanges, halfwidthRanges, narrowRanges, wideRanges};\n","/**\nBinary search on a sorted flat array of [start, end] pairs.\n\n@param {number[]} ranges - Flat array of inclusive [start, end] range pairs, e.g. [0, 5, 10, 20].\n@param {number} codePoint - The value to search for.\n@returns {boolean} Whether the value falls within any of the ranges.\n*/\nexport const isInRange = (ranges, codePoint) => {\n\tlet low = 0;\n\tlet high = Math.floor(ranges.length / 2) - 1;\n\twhile (low <= high) {\n\t\tconst mid = Math.floor((low + high) / 2);\n\t\tconst i = mid * 2;\n\t\tif (codePoint < ranges[i]) {\n\t\t\thigh = mid - 1;\n\t\t} else if (codePoint > ranges[i + 1]) {\n\t\t\tlow = mid + 1;\n\t\t} else {\n\t\t\treturn true;\n\t\t}\n\t}\n\n\treturn false;\n};\n","import {\n\tambiguousRanges,\n\tfullwidthRanges,\n\thalfwidthRanges,\n\tnarrowRanges,\n\twideRanges,\n} from './lookup-data.js';\nimport {isInRange} from './utilities.js';\n\nconst minimumAmbiguousCodePoint = ambiguousRanges[0];\nconst maximumAmbiguousCodePoint = ambiguousRanges.at(-1);\nconst minimumFullWidthCodePoint = fullwidthRanges[0];\nconst maximumFullWidthCodePoint = fullwidthRanges.at(-1);\nconst minimumHalfWidthCodePoint = halfwidthRanges[0];\nconst maximumHalfWidthCodePoint = halfwidthRanges.at(-1);\nconst minimumNarrowCodePoint = narrowRanges[0];\nconst maximumNarrowCodePoint = narrowRanges.at(-1);\nconst minimumWideCodePoint = wideRanges[0];\nconst maximumWideCodePoint = wideRanges.at(-1);\n\nconst commonCjkCodePoint = 0x4E_00;\nconst [wideFastPathStart, wideFastPathEnd] = findWideFastPathRange(wideRanges);\n\n// Use a hot-path range so common `isWide` calls can skip binary search.\n// The range containing U+4E00 covers common CJK ideographs;\n// fallback to the largest range for resilience to Unicode table changes.\nfunction findWideFastPathRange(ranges) {\n\tlet fastPathStart = ranges[0];\n\tlet fastPathEnd = ranges[1];\n\n\tfor (let index = 0; index < ranges.length; index += 2) {\n\t\tconst start = ranges[index];\n\t\tconst end = ranges[index + 1];\n\n\t\tif (\n\t\t\tcommonCjkCodePoint >= start\n\t\t\t&& commonCjkCodePoint <= end\n\t\t) {\n\t\t\treturn [start, end];\n\t\t}\n\n\t\tif ((end - start) > (fastPathEnd - fastPathStart)) {\n\t\t\tfastPathStart = start;\n\t\t\tfastPathEnd = end;\n\t\t}\n\t}\n\n\treturn [fastPathStart, fastPathEnd];\n}\n\nexport const isAmbiguous = codePoint => {\n\tif (\n\t\tcodePoint < minimumAmbiguousCodePoint\n\t\t|| codePoint > maximumAmbiguousCodePoint\n\t) {\n\t\treturn false;\n\t}\n\n\treturn isInRange(ambiguousRanges, codePoint);\n};\n\nexport const isFullWidth = codePoint => {\n\tif (\n\t\tcodePoint < minimumFullWidthCodePoint\n\t\t|| codePoint > maximumFullWidthCodePoint\n\t) {\n\t\treturn false;\n\t}\n\n\treturn isInRange(fullwidthRanges, codePoint);\n};\n\nconst isHalfWidth = codePoint => {\n\tif (\n\t\tcodePoint < minimumHalfWidthCodePoint\n\t\t|| codePoint > maximumHalfWidthCodePoint\n\t) {\n\t\treturn false;\n\t}\n\n\treturn isInRange(halfwidthRanges, codePoint);\n};\n\nconst isNarrow = codePoint => {\n\tif (\n\t\tcodePoint < minimumNarrowCodePoint\n\t\t|| codePoint > maximumNarrowCodePoint\n\t) {\n\t\treturn false;\n\t}\n\n\treturn isInRange(narrowRanges, codePoint);\n};\n\nexport const isWide = codePoint => {\n\tif (\n\t\tcodePoint >= wideFastPathStart\n\t\t&& codePoint <= wideFastPathEnd\n\t) {\n\t\treturn true;\n\t}\n\n\tif (\n\t\tcodePoint < minimumWideCodePoint\n\t\t|| codePoint > maximumWideCodePoint\n\t) {\n\t\treturn false;\n\t}\n\n\treturn isInRange(wideRanges, codePoint);\n};\n\nexport function getCategory(codePoint) {\n\tif (isAmbiguous(codePoint)) {\n\t\treturn 'ambiguous';\n\t}\n\n\tif (isFullWidth(codePoint)) {\n\t\treturn 'fullwidth';\n\t}\n\n\tif (isHalfWidth(codePoint)) {\n\t\treturn 'halfwidth';\n\t}\n\n\tif (isNarrow(codePoint)) {\n\t\treturn 'narrow';\n\t}\n\n\tif (isWide(codePoint)) {\n\t\treturn 'wide';\n\t}\n\n\treturn 'neutral';\n}\n","import {getCategory, isAmbiguous, isFullWidth, isWide} from './lookup.js';\n\nfunction validate(codePoint) {\n\tif (!Number.isSafeInteger(codePoint)) {\n\t\tthrow new TypeError(`Expected a code point, got \\`${typeof codePoint}\\`.`);\n\t}\n}\n\nexport function eastAsianWidthType(codePoint) {\n\tvalidate(codePoint);\n\n\treturn getCategory(codePoint);\n}\n\nexport function eastAsianWidth(codePoint, {ambiguousAsWide = false} = {}) {\n\tvalidate(codePoint);\n\n\tif (\n\t\tisFullWidth(codePoint)\n\t\t|| isWide(codePoint)\n\t\t|| (ambiguousAsWide && isAmbiguous(codePoint))\n\t) {\n\t\treturn 2;\n\t}\n\n\treturn 1;\n}\n\n// Private exports for https://github.com/sindresorhus/is-fullwidth-code-point\nexport {isFullWidth as _isFullWidth, isWide as _isWide} from './lookup.js';\n","import stripAnsi from 'strip-ansi';\nimport {eastAsianWidth} from 'get-east-asian-width';\n\n/**\nLogic:\n- Segment graphemes to match how terminals render clusters.\n- Width rules:\n\t1. Skip non-printing clusters (Default_Ignorable, Control, pure Mark, lone Surrogates). Tabs are ignored by design.\n\t2. RGI emoji clusters (\\p{RGI_Emoji}) are double-width.\n\t3. Minimally-qualified/unqualified emoji clusters (ZWJ sequences with 2+ Extended_Pictographic, or keycap sequences) are double-width.\n\t4. Otherwise use East Asian Width of the cluster's first visible code point, and add widths for trailing Halfwidth/Fullwidth Forms within the same cluster (e.g., dakuten/handakuten/prolonged sound mark).\n*/\n\nconst segmenter = new Intl.Segmenter();\n\n// Whole-cluster zero-width\nconst zeroWidthClusterRegex = /^(?:\\p{Default_Ignorable_Code_Point}|\\p{Control}|\\p{Format}|\\p{Mark}|\\p{Surrogate})+$/v;\n\n// Pick the base scalar if the cluster starts with Prepend/Format/Marks\nconst leadingNonPrintingRegex = /^[\\p{Default_Ignorable_Code_Point}\\p{Control}\\p{Format}\\p{Mark}\\p{Surrogate}]+/v;\n\n// RGI emoji sequences\nconst rgiEmojiRegex = /^\\p{RGI_Emoji}$/v;\n\n// Detect minimally-qualified/unqualified emoji sequences (missing VS16 but still render as double-width)\nconst unqualifiedKeycapRegex = /^[\\d#*]\\u20E3$/;\nconst extendedPictographicRegex = /\\p{Extended_Pictographic}/gu;\n\nfunction isDoubleWidthNonRgiEmojiSequence(segment) {\n\t// Real emoji clusters are < 30 chars; guard against pathological input\n\tif (segment.length > 50) {\n\t\treturn false;\n\t}\n\n\tif (unqualifiedKeycapRegex.test(segment)) {\n\t\treturn true;\n\t}\n\n\t// ZWJ sequences with 2+ Extended_Pictographic\n\tif (segment.includes('\\u200D')) {\n\t\tconst pictographics = segment.match(extendedPictographicRegex);\n\t\treturn pictographics !== null && pictographics.length >= 2;\n\t}\n\n\treturn false;\n}\n\nfunction baseVisible(segment) {\n\treturn segment.replace(leadingNonPrintingRegex, '');\n}\n\nfunction isZeroWidthCluster(segment) {\n\treturn zeroWidthClusterRegex.test(segment);\n}\n\nfunction trailingHalfwidthWidth(segment, eastAsianWidthOptions) {\n\tlet extra = 0;\n\tif (segment.length > 1) {\n\t\tfor (const char of segment.slice(1)) {\n\t\t\tif (char >= '\\uFF00' && char <= '\\uFFEF') {\n\t\t\t\textra += eastAsianWidth(char.codePointAt(0), eastAsianWidthOptions);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn extra;\n}\n\nexport default function stringWidth(input, options = {}) {\n\tif (typeof input !== 'string' || input.length === 0) {\n\t\treturn 0;\n\t}\n\n\tconst {\n\t\tambiguousIsNarrow = true,\n\t\tcountAnsiEscapeCodes = false,\n\t} = options;\n\n\tlet string = input;\n\n\t// Avoid calling stripAnsi when there are no ANSI escape sequences (ESC = 0x1B, CSI = 0x9B)\n\tif (!countAnsiEscapeCodes && (string.includes('\\u001B') || string.includes('\\u009B'))) {\n\t\tstring = stripAnsi(string);\n\t}\n\n\tif (string.length === 0) {\n\t\treturn 0;\n\t}\n\n\t// Fast path: printable ASCII (0x20–0x7E) needs no segmenter, regex, or EAW lookup — width equals length.\n\tif (/^[\\u0020-\\u007E]*$/.test(string)) {\n\t\treturn string.length;\n\t}\n\n\tlet width = 0;\n\tconst eastAsianWidthOptions = {ambiguousAsWide: !ambiguousIsNarrow};\n\n\tfor (const {segment} of segmenter.segment(string)) {\n\t\t// Zero-width / non-printing clusters\n\t\tif (isZeroWidthCluster(segment)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Emoji width logic\n\t\tif (rgiEmojiRegex.test(segment) || isDoubleWidthNonRgiEmojiSequence(segment)) {\n\t\t\twidth += 2;\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Everything else: EAW of the cluster’s first visible scalar\n\t\tconst codePoint = baseVisible(segment).codePointAt(0);\n\t\twidth += eastAsianWidth(codePoint, eastAsianWidthOptions);\n\n\t\t// Add width for trailing Halfwidth and Fullwidth Forms (e.g., ゙, ゚, ー)\n\t\twidth += trailingHalfwidthWidth(segment, eastAsianWidthOptions);\n\t}\n\n\treturn width;\n}\n","export default function isInteractive({stream = process.stdout} = {}) {\n\treturn Boolean(\n\t\tstream && stream.isTTY &&\n\t\tprocess.env.TERM !== 'dumb' &&\n\t\t!('CI' in process.env)\n\t);\n}\n","import process from 'node:process';\n\nconst ASCII_ETX_CODE = 0x03; // Ctrl+C\n\nclass StdinDiscarder {\n\t#activeCount = 0;\n\t#stdin;\n\t#stdinWasPaused = false;\n\t#stdinWasRaw = false;\n\t#handleInputBound = chunk => {\n\t\tif (!chunk?.length) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst code = typeof chunk === 'string' ? chunk.codePointAt(0) : chunk[0];\n\t\tif (code === ASCII_ETX_CODE) {\n\t\t\tif (process.listenerCount('SIGINT') > 0) {\n\t\t\t\tprocess.emit('SIGINT');\n\t\t\t} else {\n\t\t\t\tprocess.kill(process.pid, 'SIGINT');\n\t\t\t}\n\t\t}\n\t};\n\n\tstart() {\n\t\tthis.#activeCount++;\n\t\tif (this.#activeCount === 1) {\n\t\t\tthis.#realStart();\n\t\t}\n\t}\n\n\tstop() {\n\t\tif (this.#activeCount === 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (--this.#activeCount === 0) {\n\t\t\tthis.#realStop();\n\t\t}\n\t}\n\n\t#realStart() {\n\t\tconst {stdin} = process;\n\n\t\tif (process.platform === 'win32' || !stdin?.isTTY || typeof stdin.setRawMode !== 'function') {\n\t\t\tthis.#stdin = undefined;\n\t\t\treturn;\n\t\t}\n\n\t\tthis.#stdin = stdin;\n\t\tthis.#stdinWasPaused = stdin.isPaused();\n\t\tthis.#stdinWasRaw = Boolean(stdin.isRaw);\n\n\t\tstdin.setRawMode(true);\n\t\tstdin.prependListener('data', this.#handleInputBound);\n\n\t\tif (this.#stdinWasPaused) {\n\t\t\tstdin.resume();\n\t\t}\n\t}\n\n\t#realStop() {\n\t\tif (!this.#stdin) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst stdin = this.#stdin;\n\n\t\tstdin.off('data', this.#handleInputBound);\n\n\t\tif (stdin.isTTY) {\n\t\t\tstdin.setRawMode?.(this.#stdinWasRaw);\n\t\t}\n\n\t\tif (this.#stdinWasPaused) {\n\t\t\tstdin.pause();\n\t\t}\n\n\t\tthis.#stdin = undefined;\n\t\tthis.#stdinWasPaused = false;\n\t\tthis.#stdinWasRaw = false;\n\t}\n}\n\nconst stdinDiscarder = new StdinDiscarder();\n\nexport default Object.freeze(stdinDiscarder);\n","import process from 'node:process';\nimport {stripVTControlCharacters} from 'node:util';\nimport chalk from 'chalk';\nimport cliCursor from 'cli-cursor';\nimport cliSpinners from 'cli-spinners';\nimport logSymbols from 'log-symbols';\nimport stringWidth from 'string-width';\nimport isInteractive from 'is-interactive';\nimport isUnicodeSupported from 'is-unicode-supported';\nimport stdinDiscarder from 'stdin-discarder';\n\n// Constants\nconst RENDER_DEFERRAL_TIMEOUT = 200; // Milliseconds to wait before re-rendering after partial chunk write\nconst SYNCHRONIZED_OUTPUT_ENABLE = '\\u001B[?2026h';\nconst SYNCHRONIZED_OUTPUT_DISABLE = '\\u001B[?2026l';\n\n// Global state for concurrent spinner detection\nconst activeHooksPerStream = new Map(); // Stream → ora instance\n\nclass Ora {\n\t#linesToClear = 0;\n\t#frameIndex = -1;\n\t#lastFrameTime = 0;\n\t#options;\n\t#spinner;\n\t#stream;\n\t#id;\n\t#hookedStreams = new Map();\n\t#isInternalWrite = false;\n\t#drainHandler;\n\t#deferRenderTimer;\n\t#isDiscardingStdin = false;\n\tcolor;\n\n\t// Helper to execute writes while preventing hook recursion\n\t#internalWrite(fn) {\n\t\tthis.#isInternalWrite = true;\n\t\ttry {\n\t\t\treturn fn();\n\t\t} finally {\n\t\t\tthis.#isInternalWrite = false;\n\t\t}\n\t}\n\n\t// Helper to render if still spinning\n\t#tryRender() {\n\t\tif (this.isSpinning) {\n\t\t\tthis.render();\n\t\t}\n\t}\n\n\t#stringifyChunk(chunk, encoding) {\n\t\tif (chunk === undefined || chunk === null) {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (typeof chunk === 'string') {\n\t\t\treturn chunk;\n\t\t}\n\n\t\t/* eslint-disable n/prefer-global/buffer */\n\t\tif (Buffer.isBuffer(chunk) || ArrayBuffer.isView(chunk)) {\n\t\t\tconst normalizedEncoding = (typeof encoding === 'string' && encoding && encoding !== 'buffer') ? encoding : 'utf8';\n\t\t\treturn Buffer.from(chunk).toString(normalizedEncoding);\n\t\t}\n\t\t/* eslint-enable n/prefer-global/buffer */\n\n\t\treturn String(chunk);\n\t}\n\n\t#chunkTerminatesLine(chunkString) {\n\t\tif (!chunkString) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst lastCharacter = chunkString.at(-1);\n\t\treturn lastCharacter === '\\n' || lastCharacter === '\\r';\n\t}\n\n\t#scheduleRenderDeferral() {\n\t\t// If already deferred, don't reset timer - let it complete\n\t\tif (this.#deferRenderTimer) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.#deferRenderTimer = setTimeout(() => {\n\t\t\tthis.#deferRenderTimer = undefined;\n\n\t\t\tif (this.isSpinning) {\n\t\t\t\tthis.#tryRender();\n\t\t\t}\n\t\t}, RENDER_DEFERRAL_TIMEOUT);\n\n\t\tif (typeof this.#deferRenderTimer?.unref === 'function') {\n\t\t\tthis.#deferRenderTimer.unref();\n\t\t}\n\t}\n\n\t#clearRenderDeferral() {\n\t\tif (this.#deferRenderTimer) {\n\t\t\tclearTimeout(this.#deferRenderTimer);\n\t\t\tthis.#deferRenderTimer = undefined;\n\t\t}\n\t}\n\n\t// Helper to build complete line with symbol, text, prefix, and suffix\n\t#buildOutputLine(symbol, text, prefixText, suffixText) {\n\t\tconst fullPrefixText = this.#getFullPrefixText(prefixText, ' ');\n\t\tconst separatorText = symbol ? ' ' : '';\n\t\tconst fullText = (typeof text === 'string') ? separatorText + text : '';\n\t\tconst fullSuffixText = this.#getFullSuffixText(suffixText, ' ');\n\t\treturn fullPrefixText + symbol + fullText + fullSuffixText;\n\t}\n\n\tconstructor(options) {\n\t\tif (typeof options === 'string') {\n\t\t\toptions = {\n\t\t\t\ttext: options,\n\t\t\t};\n\t\t}\n\n\t\tthis.#options = {\n\t\t\tcolor: 'cyan',\n\t\t\tstream: process.stderr,\n\t\t\tdiscardStdin: true,\n\t\t\thideCursor: true,\n\t\t\t...options,\n\t\t};\n\n\t\t// Public\n\t\tthis.color = this.#options.color;\n\n\t\tthis.#stream = this.#options.stream;\n\n\t\t// Normalize isEnabled and isSilent into options\n\t\tif (typeof this.#options.isEnabled !== 'boolean') {\n\t\t\tthis.#options.isEnabled = isInteractive({stream: this.#stream});\n\t\t}\n\n\t\tif (typeof this.#options.isSilent !== 'boolean') {\n\t\t\tthis.#options.isSilent = false;\n\t\t}\n\n\t\t// Set *after* `this.#stream`.\n\t\t// Store original interval before spinner setter clears it\n\t\tconst userInterval = this.#options.interval;\n\t\t// It's important that these use the public setters.\n\t\tthis.spinner = this.#options.spinner;\n\t\tthis.#options.interval = userInterval;\n\t\tthis.text = this.#options.text;\n\t\tthis.prefixText = this.#options.prefixText;\n\t\tthis.suffixText = this.#options.suffixText;\n\t\tthis.indent = this.#options.indent;\n\n\t\tif (process.env.NODE_ENV === 'test') {\n\t\t\tthis._stream = this.#stream;\n\t\t\tthis._isEnabled = this.#options.isEnabled;\n\n\t\t\tObject.defineProperty(this, '_linesToClear', {\n\t\t\t\tget() {\n\t\t\t\t\treturn this.#linesToClear;\n\t\t\t\t},\n\t\t\t\tset(newValue) {\n\t\t\t\t\tthis.#linesToClear = newValue;\n\t\t\t\t},\n\t\t\t});\n\n\t\t\tObject.defineProperty(this, '_frameIndex', {\n\t\t\t\tget() {\n\t\t\t\t\treturn this.#frameIndex;\n\t\t\t\t},\n\t\t\t});\n\n\t\t\tObject.defineProperty(this, '_lineCount', {\n\t\t\t\tget() {\n\t\t\t\t\tconst columns = this.#stream.columns ?? 80;\n\t\t\t\t\tconst prefixText = typeof this.#options.prefixText === 'function' ? '' : this.#options.prefixText;\n\t\t\t\t\tconst suffixText = typeof this.#options.suffixText === 'function' ? '' : this.#options.suffixText;\n\t\t\t\t\tconst fullPrefixText = (typeof prefixText === 'string' && prefixText !== '') ? prefixText + ' ' : '';\n\t\t\t\t\tconst fullSuffixText = (typeof suffixText === 'string' && suffixText !== '') ? ' ' + suffixText : '';\n\t\t\t\t\tconst spinnerChar = '-';\n\t\t\t\t\tconst fullText = ' '.repeat(this.#options.indent) + fullPrefixText + spinnerChar + (typeof this.#options.text === 'string' ? ' ' + this.#options.text : '') + fullSuffixText;\n\t\t\t\t\treturn this.#computeLineCountFrom(fullText, columns);\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\t}\n\n\tget indent() {\n\t\treturn this.#options.indent;\n\t}\n\n\tset indent(indent = 0) {\n\t\tif (!(indent >= 0 && Number.isInteger(indent))) {\n\t\t\tthrow new Error('The `indent` option must be an integer from 0 and up');\n\t\t}\n\n\t\tthis.#options.indent = indent;\n\t}\n\n\tget interval() {\n\t\treturn this.#options.interval ?? this.#spinner.interval ?? 100;\n\t}\n\n\tget spinner() {\n\t\treturn this.#spinner;\n\t}\n\n\tset spinner(spinner) {\n\t\tthis.#frameIndex = -1;\n\t\tthis.#options.interval = undefined;\n\n\t\tif (typeof spinner === 'object') {\n\t\t\tif (!Array.isArray(spinner.frames) || spinner.frames.length === 0 || spinner.frames.some(frame => typeof frame !== 'string')) {\n\t\t\t\tthrow new Error('The given spinner must have a non-empty `frames` array of strings');\n\t\t\t}\n\n\t\t\tif (spinner.interval !== undefined && !(Number.isInteger(spinner.interval) && spinner.interval > 0)) {\n\t\t\t\tthrow new Error('`spinner.interval` must be a positive integer if provided');\n\t\t\t}\n\n\t\t\tthis.#spinner = spinner;\n\t\t} else if (!isUnicodeSupported()) {\n\t\t\tthis.#spinner = cliSpinners.line;\n\t\t} else if (spinner === undefined) {\n\t\t\t// Set default spinner\n\t\t\tthis.#spinner = cliSpinners.dots;\n\t\t} else if (spinner !== 'default' && cliSpinners[spinner]) {\n\t\t\tthis.#spinner = cliSpinners[spinner];\n\t\t} else {\n\t\t\tthrow new Error(`There is no built-in spinner named '${spinner}'. See https://github.com/sindresorhus/cli-spinners/blob/main/spinners.json for a full list.`);\n\t\t}\n\t}\n\n\tget text() {\n\t\treturn this.#options.text;\n\t}\n\n\tset text(value = '') {\n\t\tthis.#options.text = value;\n\t}\n\n\tget prefixText() {\n\t\treturn this.#options.prefixText;\n\t}\n\n\tset prefixText(value = '') {\n\t\tthis.#options.prefixText = value;\n\t}\n\n\tget suffixText() {\n\t\treturn this.#options.suffixText;\n\t}\n\n\tset suffixText(value = '') {\n\t\tthis.#options.suffixText = value;\n\t}\n\n\tget isSpinning() {\n\t\treturn this.#id !== undefined;\n\t}\n\n\t#formatAffix(value, separator, placeBefore = false) {\n\t\tconst resolved = typeof value === 'function' ? value() : value;\n\t\tif (typeof resolved === 'string' && resolved !== '') {\n\t\t\treturn placeBefore ? (separator + resolved) : (resolved + separator);\n\t\t}\n\n\t\treturn '';\n\t}\n\n\t#getFullPrefixText(prefixText = this.#options.prefixText, postfix = ' ') {\n\t\treturn this.#formatAffix(prefixText, postfix, false);\n\t}\n\n\t#getFullSuffixText(suffixText = this.#options.suffixText, prefix = ' ') {\n\t\treturn this.#formatAffix(suffixText, prefix, true);\n\t}\n\n\t#computeLineCountFrom(text, columns) {\n\t\tlet count = 0;\n\t\tfor (const line of stripVTControlCharacters(text).split('\\n')) {\n\t\t\tcount += Math.max(1, Math.ceil(stringWidth(line) / columns));\n\t\t}\n\n\t\treturn count;\n\t}\n\n\tget isEnabled() {\n\t\treturn this.#options.isEnabled && !this.#options.isSilent;\n\t}\n\n\tset isEnabled(value) {\n\t\tif (typeof value !== 'boolean') {\n\t\t\tthrow new TypeError('The `isEnabled` option must be a boolean');\n\t\t}\n\n\t\tthis.#options.isEnabled = value;\n\t}\n\n\tget isSilent() {\n\t\treturn this.#options.isSilent;\n\t}\n\n\tset isSilent(value) {\n\t\tif (typeof value !== 'boolean') {\n\t\t\tthrow new TypeError('The `isSilent` option must be a boolean');\n\t\t}\n\n\t\tthis.#options.isSilent = value;\n\t}\n\n\tframe() {\n\t\t// Only advance frame if enough time has passed (throttle to interval)\n\t\tconst now = Date.now();\n\t\tif (this.#frameIndex === -1 || now - this.#lastFrameTime >= this.interval) {\n\t\t\tthis.#frameIndex = (this.#frameIndex + 1) % this.#spinner.frames.length;\n\t\t\tthis.#lastFrameTime = now;\n\t\t}\n\n\t\tconst {frames} = this.#spinner;\n\t\tlet frame = frames[this.#frameIndex];\n\n\t\tif (this.color) {\n\t\t\tframe = chalk[this.color](frame);\n\t\t}\n\n\t\tconst fullPrefixText = this.#getFullPrefixText(this.#options.prefixText, ' ');\n\t\tconst fullText = typeof this.text === 'string' ? ' ' + this.text : '';\n\t\tconst fullSuffixText = this.#getFullSuffixText(this.#options.suffixText, ' ');\n\n\t\treturn fullPrefixText + frame + fullText + fullSuffixText;\n\t}\n\n\tclear() {\n\t\tif (!this.isEnabled || !this.#stream.isTTY) {\n\t\t\treturn this;\n\t\t}\n\n\t\t// Protect cursor control methods (cursorTo, moveCursor, clearLine) which internally call stream.write\n\t\tthis.#internalWrite(() => {\n\t\t\tthis.#stream.cursorTo(0);\n\n\t\t\tfor (let index = 0; index < this.#linesToClear; index++) {\n\t\t\t\tif (index > 0) {\n\t\t\t\t\tthis.#stream.moveCursor(0, -1);\n\t\t\t\t}\n\n\t\t\t\tthis.#stream.clearLine(1);\n\t\t\t}\n\n\t\t\tif (this.#options.indent) {\n\t\t\t\tthis.#stream.cursorTo(this.#options.indent);\n\t\t\t}\n\t\t});\n\n\t\tthis.#linesToClear = 0;\n\n\t\treturn this;\n\t}\n\n\t// Helper to hook a single stream\n\t#hookStream(stream) {\n\t\tif (!stream || this.#hookedStreams.has(stream) || !stream.isTTY || typeof stream.write !== 'function') {\n\t\t\treturn;\n\t\t}\n\n\t\t// Detect concurrent spinners\n\t\tif (activeHooksPerStream.has(stream)) {\n\t\t\tconsole.warn('[ora] Multiple concurrent spinners detected. This may cause visual corruption. Use one spinner at a time.');\n\t\t}\n\n\t\tconst originalWrite = stream.write;\n\t\tthis.#hookedStreams.set(stream, originalWrite);\n\t\tactiveHooksPerStream.set(stream, this);\n\t\tstream.write = (chunk, encoding, callback) => this.#hookedWrite(stream, originalWrite, chunk, encoding, callback);\n\t}\n\n\t/**\n\tIntercept stream writes while spinner is active to handle external writes cleanly without visual corruption.\n\tHooks process stdio streams and the active spinner stream so console.log(), console.error(), and direct writes stay tidy.\n\t*/\n\t#installHook() {\n\t\tif (!this.isEnabled || this.#hookedStreams.size > 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst streamsToHook = new Set([this.#stream, process.stdout, process.stderr]);\n\n\t\tfor (const stream of streamsToHook) {\n\t\t\tthis.#hookStream(stream);\n\t\t}\n\t}\n\n\t#uninstallHook() {\n\t\tfor (const [stream, originalWrite] of this.#hookedStreams) {\n\t\t\tstream.write = originalWrite;\n\t\t\tif (activeHooksPerStream.get(stream) === this) {\n\t\t\t\tactiveHooksPerStream.delete(stream);\n\t\t\t}\n\t\t}\n\n\t\tthis.#hookedStreams.clear();\n\t}\n\n\t// eslint-disable-next-line max-params -- Need stream and originalWrite for multi-stream support\n\t#hookedWrite(stream, originalWrite, chunk, encoding, callback) {\n\t\t// Handle both write(chunk, encoding, callback) and write(chunk, callback) signatures\n\t\tif (typeof encoding === 'function') {\n\t\t\tcallback = encoding;\n\t\t\tencoding = undefined;\n\t\t}\n\n\t\t// Pass through our own internal writes (spinner rendering, cursor control)\n\t\tif (this.#isInternalWrite) {\n\t\t\treturn originalWrite.call(stream, chunk, encoding, callback);\n\t\t}\n\n\t\t// External write detected - clear spinner, write content, re-render if appropriate\n\t\tthis.clear();\n\n\t\tconst chunkString = this.#stringifyChunk(chunk, encoding);\n\t\tconst chunkTerminatesLine = this.#chunkTerminatesLine(chunkString);\n\n\t\tconst writeResult = originalWrite.call(stream, chunk, encoding, callback);\n\n\t\t// Schedule or clear render deferral based on chunk content\n\t\tif (chunkTerminatesLine) {\n\t\t\tthis.#clearRenderDeferral();\n\t\t} else if (chunkString.length > 0) {\n\t\t\tthis.#scheduleRenderDeferral();\n\t\t}\n\n\t\t// Re-render spinner below the new output if still spinning and not deferred\n\t\tif (this.isSpinning && !this.#deferRenderTimer) {\n\t\t\tthis.render();\n\t\t}\n\n\t\treturn writeResult;\n\t}\n\n\trender() {\n\t\tif (!this.isEnabled || this.#drainHandler || this.#deferRenderTimer) {\n\t\t\treturn this;\n\t\t}\n\n\t\tconst useSynchronizedOutput = this.#stream.isTTY;\n\t\tlet shouldDisableSynchronizedOutput = false;\n\n\t\ttry {\n\t\t\tif (useSynchronizedOutput) {\n\t\t\t\tthis.#internalWrite(() => this.#stream.write(SYNCHRONIZED_OUTPUT_ENABLE));\n\t\t\t\tshouldDisableSynchronizedOutput = true;\n\t\t\t}\n\n\t\t\tthis.clear();\n\n\t\t\tlet frameContent = this.frame();\n\t\t\tconst columns = this.#stream.columns ?? 80;\n\t\t\tconst actualLineCount = this.#computeLineCountFrom(frameContent, columns);\n\n\t\t\t// If content would exceed viewport height, truncate it to prevent garbage\n\t\t\tconst consoleHeight = this.#stream.rows;\n\t\t\tif (consoleHeight && consoleHeight > 1 && actualLineCount > consoleHeight) {\n\t\t\t\tconst lines = frameContent.split('\\n');\n\t\t\t\tconst maxLines = consoleHeight - 1; // Reserve one line for truncation message\n\t\t\t\tframeContent = [...lines.slice(0, maxLines), '... (content truncated to fit terminal)'].join('\\n');\n\t\t\t}\n\n\t\t\tconst canContinue = this.#internalWrite(() => this.#stream.write(frameContent));\n\n\t\t\t// Handle backpressure - pause rendering if stream buffer is full\n\t\t\tif (canContinue === false && this.#stream.isTTY) {\n\t\t\t\tthis.#drainHandler = () => {\n\t\t\t\t\tthis.#drainHandler = undefined;\n\t\t\t\t\tthis.#tryRender();\n\t\t\t\t};\n\n\t\t\t\tthis.#stream.once('drain', this.#drainHandler);\n\t\t\t}\n\n\t\t\tthis.#linesToClear = this.#computeLineCountFrom(frameContent, columns);\n\t\t} finally {\n\t\t\tif (shouldDisableSynchronizedOutput) {\n\t\t\t\tthis.#internalWrite(() => this.#stream.write(SYNCHRONIZED_OUTPUT_DISABLE));\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t}\n\n\tstart(text) {\n\t\tif (text) {\n\t\t\tthis.text = text;\n\t\t}\n\n\t\tif (this.isSilent) {\n\t\t\treturn this;\n\t\t}\n\n\t\tif (!this.isEnabled) {\n\t\t\tconst symbol = this.text ? '-' : '';\n\t\t\tconst line = ' '.repeat(this.#options.indent) + this.#buildOutputLine(symbol, this.text, this.#options.prefixText, this.#options.suffixText);\n\n\t\t\tif (line.trim() !== '') {\n\t\t\t\tthis.#internalWrite(() => this.#stream.write(line + '\\n'));\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\n\t\tif (this.isSpinning) {\n\t\t\treturn this;\n\t\t}\n\n\t\tif (this.#options.hideCursor) {\n\t\t\tcliCursor.hide(this.#stream);\n\t\t}\n\n\t\tif (this.#options.discardStdin && process.stdin.isTTY) {\n\t\t\tstdinDiscarder.start();\n\t\t\tthis.#isDiscardingStdin = true;\n\t\t}\n\n\t\tthis.#installHook();\n\t\tthis.render();\n\t\tthis.#id = setInterval(this.render.bind(this), this.interval);\n\n\t\treturn this;\n\t}\n\n\tstop() {\n\t\tclearInterval(this.#id);\n\t\tthis.#id = undefined;\n\t\tthis.#frameIndex = -1;\n\t\tthis.#lastFrameTime = 0;\n\n\t\tthis.#clearRenderDeferral();\n\t\tthis.#uninstallHook();\n\n\t\t// Clean up drain handler if it exists\n\t\tif (this.#drainHandler) {\n\t\t\tthis.#stream.removeListener('drain', this.#drainHandler);\n\t\t\tthis.#drainHandler = undefined;\n\t\t}\n\n\t\tif (this.isEnabled) {\n\t\t\tthis.clear();\n\t\t\tif (this.#options.hideCursor) {\n\t\t\t\tcliCursor.show(this.#stream);\n\t\t\t}\n\t\t}\n\n\t\tif (this.#isDiscardingStdin) {\n\t\t\tthis.#isDiscardingStdin = false;\n\t\t\tstdinDiscarder.stop();\n\t\t}\n\n\t\treturn this;\n\t}\n\n\tsucceed(text) {\n\t\treturn this.stopAndPersist({symbol: logSymbols.success, text});\n\t}\n\n\tfail(text) {\n\t\treturn this.stopAndPersist({symbol: logSymbols.error, text});\n\t}\n\n\twarn(text) {\n\t\treturn this.stopAndPersist({symbol: logSymbols.warning, text});\n\t}\n\n\tinfo(text) {\n\t\treturn this.stopAndPersist({symbol: logSymbols.info, text});\n\t}\n\n\tstopAndPersist(options = {}) {\n\t\tif (this.isSilent) {\n\t\t\treturn this;\n\t\t}\n\n\t\tconst symbol = options.symbol ?? ' ';\n\t\tconst text = options.text ?? this.text;\n\t\tconst prefixText = options.prefixText ?? this.#options.prefixText;\n\t\tconst suffixText = options.suffixText ?? this.#options.suffixText;\n\n\t\tconst textToWrite = this.#buildOutputLine(symbol, text, prefixText, suffixText) + '\\n';\n\n\t\tthis.stop();\n\t\tthis.#internalWrite(() => this.#stream.write(textToWrite));\n\n\t\treturn this;\n\t}\n}\n\nexport default function ora(options) {\n\treturn new Ora(options);\n}\n\nexport async function oraPromise(action, options) {\n\tconst actionIsFunction = typeof action === 'function';\n\tconst actionIsPromise = typeof action.then === 'function';\n\n\tif (!actionIsFunction && !actionIsPromise) {\n\t\tthrow new TypeError('Parameter `action` must be a Function or a Promise');\n\t}\n\n\tconst {successText, failText} = typeof options === 'object'\n\t\t? options\n\t\t: {successText: undefined, failText: undefined};\n\n\tconst spinner = ora(options).start();\n\n\ttry {\n\t\tconst promise = actionIsFunction ? action(spinner) : action;\n\t\tconst result = await promise;\n\n\t\tspinner.succeed(successText === undefined\n\t\t\t? undefined\n\t\t\t: (typeof successText === 'string' ? successText : successText(result)));\n\n\t\treturn result;\n\t} catch (error) {\n\t\tspinner.fail(failText === undefined\n\t\t\t? undefined\n\t\t\t: (typeof failText === 'string' ? failText : failText(error)));\n\n\t\tthrow error;\n\t}\n}\n\nexport {default as spinners} from 'cli-spinners';\n","export const isUpKey = (key, keybindings = []) => \n// The up key\nkey.name === 'up' ||\n // Vim keybinding: hjkl keys map to left/down/up/right\n (keybindings.includes('vim') && key.name === 'k') ||\n // Emacs keybinding: Ctrl+P means \"previous\" in Emacs navigation conventions\n (keybindings.includes('emacs') && key.ctrl && key.name === 'p');\nexport const isDownKey = (key, keybindings = []) => \n// The down key\nkey.name === 'down' ||\n // Vim keybinding: hjkl keys map to left/down/up/right\n (keybindings.includes('vim') && key.name === 'j') ||\n // Emacs keybinding: Ctrl+N means \"next\" in Emacs navigation conventions\n (keybindings.includes('emacs') && key.ctrl && key.name === 'n');\nexport const isSpaceKey = (key) => key.name === 'space';\nexport const isBackspaceKey = (key) => key.name === 'backspace';\nexport const isTabKey = (key) => key.name === 'tab';\nexport const isNumberKey = (key) => '1234567890'.includes(key.name);\nexport const isEnterKey = (key) => key.name === 'enter' || key.name === 'return';\nexport const isShiftKey = (key) => key.shift;\n","export class AbortPromptError extends Error {\n name = 'AbortPromptError';\n message = 'Prompt was aborted';\n constructor(options) {\n super();\n this.cause = options?.cause;\n }\n}\nexport class CancelPromptError extends Error {\n name = 'CancelPromptError';\n message = 'Prompt was canceled';\n}\nexport class ExitPromptError extends Error {\n name = 'ExitPromptError';\n}\nexport class HookError extends Error {\n name = 'HookError';\n}\nexport class ValidationError extends Error {\n name = 'ValidationError';\n}\n","/* eslint @typescript-eslint/no-explicit-any: [\"off\"] */\nimport { AsyncLocalStorage, AsyncResource } from 'node:async_hooks';\nimport { HookError, ValidationError } from \"./errors.js\";\nconst hookStorage = new AsyncLocalStorage();\nfunction createStore(rl) {\n const store = {\n rl,\n hooks: [],\n hooksCleanup: [],\n hooksEffect: [],\n index: 0,\n handleChange() { },\n };\n return store;\n}\n// Run callback in with the hook engine setup.\nexport function withHooks(rl, cb) {\n const store = createStore(rl);\n return hookStorage.run(store, () => {\n function cycle(render) {\n store.handleChange = () => {\n store.index = 0;\n render();\n };\n store.handleChange();\n }\n return cb(cycle);\n });\n}\n// Safe getStore utility that'll return the store or throw if undefined.\nfunction getStore() {\n const store = hookStorage.getStore();\n if (!store) {\n throw new HookError('[Inquirer] Hook functions can only be called from within a prompt');\n }\n return store;\n}\nexport function readline() {\n return getStore().rl;\n}\n// Merge state updates happening within the callback function to avoid multiple renders.\nexport function withUpdates(fn) {\n const wrapped = (...args) => {\n const store = getStore();\n let shouldUpdate = false;\n const oldHandleChange = store.handleChange;\n store.handleChange = () => {\n shouldUpdate = true;\n };\n const returnValue = fn(...args);\n if (shouldUpdate) {\n oldHandleChange();\n }\n store.handleChange = oldHandleChange;\n return returnValue;\n };\n return AsyncResource.bind(wrapped);\n}\nexport function withPointer(cb) {\n const store = getStore();\n const { index } = store;\n const pointer = {\n get() {\n return store.hooks[index];\n },\n set(value) {\n store.hooks[index] = value;\n },\n initialized: index in store.hooks,\n };\n const returnValue = cb(pointer);\n store.index++;\n return returnValue;\n}\nexport function handleChange() {\n getStore().handleChange();\n}\nexport const effectScheduler = {\n queue(cb) {\n const store = getStore();\n const { index } = store;\n store.hooksEffect.push(() => {\n store.hooksCleanup[index]?.();\n const cleanFn = cb(readline());\n if (cleanFn != null && typeof cleanFn !== 'function') {\n throw new ValidationError('useEffect return value must be a cleanup function or nothing.');\n }\n store.hooksCleanup[index] = cleanFn;\n });\n },\n run() {\n const store = getStore();\n withUpdates(() => {\n store.hooksEffect.forEach((effect) => {\n effect();\n });\n // Warning: Clean the hooks before exiting the `withUpdates` block.\n // Failure to do so means an updates would hit the same effects again.\n store.hooksEffect.length = 0;\n })();\n },\n clearAll() {\n const store = getStore();\n store.hooksCleanup.forEach((cleanFn) => {\n cleanFn?.();\n });\n store.hooksEffect.length = 0;\n store.hooksCleanup.length = 0;\n },\n};\n","import { AsyncResource } from 'node:async_hooks';\nimport { withPointer, handleChange } from \"./hook-engine.js\";\nexport function useState(defaultValue) {\n return withPointer((pointer) => {\n const setState = AsyncResource.bind(function setState(newValue) {\n // Noop if the value is still the same.\n if (pointer.get() !== newValue) {\n pointer.set(newValue);\n // Trigger re-render\n handleChange();\n }\n });\n if (pointer.initialized) {\n return [pointer.get(), setState];\n }\n const value = typeof defaultValue === 'function' ? defaultValue() : defaultValue;\n pointer.set(value);\n return [value, setState];\n });\n}\n","import { withPointer, effectScheduler } from \"./hook-engine.js\";\nexport function useEffect(cb, depArray) {\n withPointer((pointer) => {\n const oldDeps = pointer.get();\n const hasChanged = !Array.isArray(oldDeps) || depArray.some((dep, i) => !Object.is(dep, oldDeps[i]));\n if (hasChanged) {\n effectScheduler.queue(cb);\n }\n pointer.set(depArray);\n });\n}\n","// process.env dot-notation access prints:\n// Property 'TERM' comes from an index signature, so it must be accessed with ['TERM'].ts(4111)\n/* eslint dot-notation: [\"off\"] */\nimport process from 'node:process';\n// Ported from is-unicode-supported\nfunction isUnicodeSupported() {\n if (process.platform !== 'win32') {\n return process.env['TERM'] !== 'linux'; // Linux console (kernel)\n }\n return (Boolean(process.env['WT_SESSION']) || // Windows Terminal\n Boolean(process.env['TERMINUS_SUBLIME']) || // Terminus (<0.2.27)\n process.env['ConEmuTask'] === '{cmd::Cmder}' || // ConEmu and cmder\n process.env['TERM_PROGRAM'] === 'Terminus-Sublime' ||\n process.env['TERM_PROGRAM'] === 'vscode' ||\n process.env['TERM'] === 'xterm-256color' ||\n process.env['TERM'] === 'alacritty' ||\n process.env['TERMINAL_EMULATOR'] === 'JetBrains-JediTerm');\n}\n// Ported from figures\nconst common = {\n circleQuestionMark: '(?)',\n questionMarkPrefix: '(?)',\n square: '█',\n squareDarkShade: '▓',\n squareMediumShade: '▒',\n squareLightShade: '░',\n squareTop: '▀',\n squareBottom: '▄',\n squareLeft: '▌',\n squareRight: '▐',\n squareCenter: '■',\n bullet: '●',\n dot: '․',\n ellipsis: '…',\n pointerSmall: '›',\n triangleUp: '▲',\n triangleUpSmall: '▴',\n triangleDown: '▼',\n triangleDownSmall: '▾',\n triangleLeftSmall: '◂',\n triangleRightSmall: '▸',\n home: '⌂',\n heart: '♥',\n musicNote: '♪',\n musicNoteBeamed: '♫',\n arrowUp: '↑',\n arrowDown: '↓',\n arrowLeft: '←',\n arrowRight: '→',\n arrowLeftRight: '↔',\n arrowUpDown: '↕',\n almostEqual: '≈',\n notEqual: '≠',\n lessOrEqual: '≤',\n greaterOrEqual: '≥',\n identical: '≡',\n infinity: '∞',\n subscriptZero: '₀',\n subscriptOne: '₁',\n subscriptTwo: '₂',\n subscriptThree: '₃',\n subscriptFour: '₄',\n subscriptFive: '₅',\n subscriptSix: '₆',\n subscriptSeven: '₇',\n subscriptEight: '₈',\n subscriptNine: '₉',\n oneHalf: '½',\n oneThird: '⅓',\n oneQuarter: '¼',\n oneFifth: '⅕',\n oneSixth: '⅙',\n oneEighth: '⅛',\n twoThirds: '⅔',\n twoFifths: '⅖',\n threeQuarters: '¾',\n threeFifths: '⅗',\n threeEighths: '⅜',\n fourFifths: '⅘',\n fiveSixths: '⅚',\n fiveEighths: '⅝',\n sevenEighths: '⅞',\n line: '─',\n lineBold: '━',\n lineDouble: '═',\n lineDashed0: '┄',\n lineDashed1: '┅',\n lineDashed2: '┈',\n lineDashed3: '┉',\n lineDashed4: '╌',\n lineDashed5: '╍',\n lineDashed6: '╴',\n lineDashed7: '╶',\n lineDashed8: '╸',\n lineDashed9: '╺',\n lineDashed10: '╼',\n lineDashed11: '╾',\n lineDashed12: '−',\n lineDashed13: '–',\n lineDashed14: '‐',\n lineDashed15: '⁃',\n lineVertical: '│',\n lineVerticalBold: '┃',\n lineVerticalDouble: '║',\n lineVerticalDashed0: '┆',\n lineVerticalDashed1: '┇',\n lineVerticalDashed2: '┊',\n lineVerticalDashed3: '┋',\n lineVerticalDashed4: '╎',\n lineVerticalDashed5: '╏',\n lineVerticalDashed6: '╵',\n lineVerticalDashed7: '╷',\n lineVerticalDashed8: '╹',\n lineVerticalDashed9: '╻',\n lineVerticalDashed10: '╽',\n lineVerticalDashed11: '╿',\n lineDownLeft: '┐',\n lineDownLeftArc: '╮',\n lineDownBoldLeftBold: '┓',\n lineDownBoldLeft: '┒',\n lineDownLeftBold: '┑',\n lineDownDoubleLeftDouble: '╗',\n lineDownDoubleLeft: '╖',\n lineDownLeftDouble: '╕',\n lineDownRight: '┌',\n lineDownRightArc: '╭',\n lineDownBoldRightBold: '┏',\n lineDownBoldRight: '┎',\n lineDownRightBold: '┍',\n lineDownDoubleRightDouble: '╔',\n lineDownDoubleRight: '╓',\n lineDownRightDouble: '╒',\n lineUpLeft: '┘',\n lineUpLeftArc: '╯',\n lineUpBoldLeftBold: '┛',\n lineUpBoldLeft: '┚',\n lineUpLeftBold: '┙',\n lineUpDoubleLeftDouble: '╝',\n lineUpDoubleLeft: '╜',\n lineUpLeftDouble: '╛',\n lineUpRight: '└',\n lineUpRightArc: '╰',\n lineUpBoldRightBold: '┗',\n lineUpBoldRight: '┖',\n lineUpRightBold: '┕',\n lineUpDoubleRightDouble: '╚',\n lineUpDoubleRight: '╙',\n lineUpRightDouble: '╘',\n lineUpDownLeft: '┤',\n lineUpBoldDownBoldLeftBold: '┫',\n lineUpBoldDownBoldLeft: '┨',\n lineUpDownLeftBold: '┥',\n lineUpBoldDownLeftBold: '┩',\n lineUpDownBoldLeftBold: '┪',\n lineUpDownBoldLeft: '┧',\n lineUpBoldDownLeft: '┦',\n lineUpDoubleDownDoubleLeftDouble: '╣',\n lineUpDoubleDownDoubleLeft: '╢',\n lineUpDownLeftDouble: '╡',\n lineUpDownRight: '├',\n lineUpBoldDownBoldRightBold: '┣',\n lineUpBoldDownBoldRight: '┠',\n lineUpDownRightBold: '┝',\n lineUpBoldDownRightBold: '┡',\n lineUpDownBoldRightBold: '┢',\n lineUpDownBoldRight: '┟',\n lineUpBoldDownRight: '┞',\n lineUpDoubleDownDoubleRightDouble: '╠',\n lineUpDoubleDownDoubleRight: '╟',\n lineUpDownRightDouble: '╞',\n lineDownLeftRight: '┬',\n lineDownBoldLeftBoldRightBold: '┳',\n lineDownLeftBoldRightBold: '┯',\n lineDownBoldLeftRight: '┰',\n lineDownBoldLeftBoldRight: '┱',\n lineDownBoldLeftRightBold: '┲',\n lineDownLeftRightBold: '┮',\n lineDownLeftBoldRight: '┭',\n lineDownDoubleLeftDoubleRightDouble: '╦',\n lineDownDoubleLeftRight: '╥',\n lineDownLeftDoubleRightDouble: '╤',\n lineUpLeftRight: '┴',\n lineUpBoldLeftBoldRightBold: '┻',\n lineUpLeftBoldRightBold: '┷',\n lineUpBoldLeftRight: '┸',\n lineUpBoldLeftBoldRight: '┹',\n lineUpBoldLeftRightBold: '┺',\n lineUpLeftRightBold: '┶',\n lineUpLeftBoldRight: '┵',\n lineUpDoubleLeftDoubleRightDouble: '╩',\n lineUpDoubleLeftRight: '╨',\n lineUpLeftDoubleRightDouble: '╧',\n lineUpDownLeftRight: '┼',\n lineUpBoldDownBoldLeftBoldRightBold: '╋',\n lineUpDownBoldLeftBoldRightBold: '╈',\n lineUpBoldDownLeftBoldRightBold: '╇',\n lineUpBoldDownBoldLeftRightBold: '╊',\n lineUpBoldDownBoldLeftBoldRight: '╉',\n lineUpBoldDownLeftRight: '╀',\n lineUpDownBoldLeftRight: '╁',\n lineUpDownLeftBoldRight: '┽',\n lineUpDownLeftRightBold: '┾',\n lineUpBoldDownBoldLeftRight: '╂',\n lineUpDownLeftBoldRightBold: '┿',\n lineUpBoldDownLeftBoldRight: '╃',\n lineUpBoldDownLeftRightBold: '╄',\n lineUpDownBoldLeftBoldRight: '╅',\n lineUpDownBoldLeftRightBold: '╆',\n lineUpDoubleDownDoubleLeftDoubleRightDouble: '╬',\n lineUpDoubleDownDoubleLeftRight: '╫',\n lineUpDownLeftDoubleRightDouble: '╪',\n lineCross: '╳',\n lineBackslash: '╲',\n lineSlash: '╱',\n};\nconst specialMainSymbols = {\n tick: '✔',\n info: 'ℹ',\n warning: '⚠',\n cross: '✘',\n squareSmall: '◻',\n squareSmallFilled: '◼',\n circle: '◯',\n circleFilled: '◉',\n circleDotted: '◌',\n circleDouble: '◎',\n circleCircle: 'ⓞ',\n circleCross: 'ⓧ',\n circlePipe: 'Ⓘ',\n radioOn: '◉',\n radioOff: '◯',\n checkboxOn: '☒',\n checkboxOff: '☐',\n checkboxCircleOn: 'ⓧ',\n checkboxCircleOff: 'Ⓘ',\n pointer: '❯',\n triangleUpOutline: '△',\n triangleLeft: '◀',\n triangleRight: '▶',\n lozenge: '◆',\n lozengeOutline: '◇',\n hamburger: '☰',\n smiley: '㋡',\n mustache: '෴',\n star: '★',\n play: '▶',\n nodejs: '⬢',\n oneSeventh: '⅐',\n oneNinth: '⅑',\n oneTenth: '⅒',\n};\nconst specialFallbackSymbols = {\n tick: '√',\n info: 'i',\n warning: '‼',\n cross: '×',\n squareSmall: '□',\n squareSmallFilled: '■',\n circle: '( )',\n circleFilled: '(*)',\n circleDotted: '( )',\n circleDouble: '( )',\n circleCircle: '(○)',\n circleCross: '(×)',\n circlePipe: '(│)',\n radioOn: '(*)',\n radioOff: '( )',\n checkboxOn: '[×]',\n checkboxOff: '[ ]',\n checkboxCircleOn: '(×)',\n checkboxCircleOff: '( )',\n pointer: '>',\n triangleUpOutline: '∆',\n triangleLeft: '◄',\n triangleRight: '►',\n lozenge: '♦',\n lozengeOutline: '◊',\n hamburger: '≡',\n smiley: '☺',\n mustache: '┌─┐',\n star: '✶',\n play: '►',\n nodejs: '♦',\n oneSeventh: '1/7',\n oneNinth: '1/9',\n oneTenth: '1/10',\n};\nexport const mainSymbols = {\n ...common,\n ...specialMainSymbols,\n};\nexport const fallbackSymbols = {\n ...common,\n ...specialFallbackSymbols,\n};\nconst shouldUseMain = isUnicodeSupported();\nconst figures = shouldUseMain\n ? mainSymbols\n : fallbackSymbols;\nexport default figures;\nconst replacements = Object.entries(specialMainSymbols);\n// On terminals which do not support Unicode symbols, substitute them to other symbols\nexport const replaceSymbols = (string, { useFallback = !shouldUseMain } = {}) => {\n if (useFallback) {\n for (const [key, mainSymbol] of replacements) {\n const fallbackSymbol = fallbackSymbols[key];\n if (!fallbackSymbol) {\n throw new Error(`Unable to find fallback for ${key}`);\n }\n string = string.replaceAll(mainSymbol, fallbackSymbol);\n }\n }\n return string;\n};\n","import { styleText } from 'node:util';\nimport figures from '@inquirer/figures';\nexport const defaultTheme = {\n prefix: {\n idle: styleText('blue', '?'),\n done: styleText('green', figures.tick),\n },\n spinner: {\n interval: 80,\n frames: ['⠋', '⠙', '⠹', '⠸', '⠼', '⠴', '⠦', '⠧', '⠇', '⠏'].map((frame) => styleText('yellow', frame)),\n },\n style: {\n answer: (text) => styleText('cyan', text),\n message: (text) => styleText('bold', text),\n error: (text) => styleText('red', `> ${text}`),\n defaultAnswer: (text) => styleText('dim', `(${text})`),\n help: (text) => styleText('dim', text),\n highlight: (text) => styleText('cyan', text),\n key: (text) => styleText('cyan', styleText('bold', `<${text}>`)),\n },\n};\n","import { defaultTheme } from \"./theme.js\";\nfunction isPlainObject(value) {\n if (typeof value !== 'object' || value === null)\n return false;\n let proto = value;\n while (Object.getPrototypeOf(proto) !== null) {\n proto = Object.getPrototypeOf(proto);\n }\n return Object.getPrototypeOf(value) === proto;\n}\nfunction deepMerge(...objects) {\n const output = {};\n for (const obj of objects) {\n for (const [key, value] of Object.entries(obj)) {\n const prevValue = output[key];\n output[key] =\n isPlainObject(prevValue) && isPlainObject(value)\n ? deepMerge(prevValue, value)\n : value;\n }\n }\n return output;\n}\nexport function makeTheme(...themes) {\n const themesToMerge = [\n defaultTheme,\n ...themes.filter((theme) => theme != null),\n ];\n return deepMerge(...themesToMerge);\n}\n","import { useState } from \"./use-state.js\";\nimport { useEffect } from \"./use-effect.js\";\nimport { makeTheme } from \"./make-theme.js\";\nexport function usePrefix({ status = 'idle', theme, }) {\n const [showLoader, setShowLoader] = useState(false);\n const [tick, setTick] = useState(0);\n const { prefix, spinner } = makeTheme(theme);\n useEffect(() => {\n if (status === 'loading') {\n let tickInterval;\n let inc = -1;\n // Delay displaying spinner by 300ms, to avoid flickering\n const delayTimeout = setTimeout(() => {\n setShowLoader(true);\n tickInterval = setInterval(() => {\n inc = inc + 1;\n setTick(inc % spinner.frames.length);\n }, spinner.interval);\n }, 300);\n return () => {\n clearTimeout(delayTimeout);\n clearInterval(tickInterval);\n };\n }\n else {\n setShowLoader(false);\n }\n }, [status]);\n if (showLoader) {\n return spinner.frames[tick];\n }\n // There's a delay before we show the loader. So we want to ignore `loading` here, and pass idle instead.\n const iconName = status === 'loading' ? 'idle' : status;\n return typeof prefix === 'string' ? prefix : (prefix[iconName] ?? prefix['idle']);\n}\n","import { withPointer } from \"./hook-engine.js\";\nexport function useMemo(fn, dependencies) {\n return withPointer((pointer) => {\n const prev = pointer.get();\n if (!prev ||\n prev.dependencies.length !== dependencies.length ||\n prev.dependencies.some((dep, i) => dep !== dependencies[i])) {\n const value = fn();\n pointer.set({ value, dependencies });\n return value;\n }\n return prev.value;\n });\n}\n","import { useState } from \"./use-state.js\";\nexport function useRef(val) {\n return useState({ current: val })[0];\n}\n","import { useRef } from \"./use-ref.js\";\nimport { useEffect } from \"./use-effect.js\";\nimport { withUpdates } from \"./hook-engine.js\";\nexport function useKeypress(userHandler) {\n const signal = useRef(userHandler);\n signal.current = userHandler;\n useEffect((rl) => {\n let ignore = false;\n const handler = withUpdates((_input, event) => {\n if (ignore)\n return;\n void signal.current(event, rl);\n });\n rl.input.on('keypress', handler);\n return () => {\n ignore = true;\n rl.input.removeListener('keypress', handler);\n };\n }, []);\n}\n","'use strict';\n\nmodule.exports = cliWidth;\n\nfunction normalizeOpts(options) {\n const defaultOpts = {\n defaultWidth: 0,\n output: process.stdout,\n tty: require('tty'),\n };\n\n if (!options) {\n return defaultOpts;\n }\n\n Object.keys(defaultOpts).forEach(function (key) {\n if (!options[key]) {\n options[key] = defaultOpts[key];\n }\n });\n\n return options;\n}\n\nfunction cliWidth(options) {\n const opts = normalizeOpts(options);\n\n if (opts.output.getWindowSize) {\n return opts.output.getWindowSize()[0] || opts.defaultWidth;\n }\n\n if (opts.tty.getWindowSize) {\n return opts.tty.getWindowSize()[1] || opts.defaultWidth;\n }\n\n if (opts.output.columns) {\n return opts.output.columns;\n }\n\n if (process.env.CLI_WIDTH) {\n const width = parseInt(process.env.CLI_WIDTH, 10);\n\n if (!isNaN(width) && width !== 0) {\n return width;\n }\n }\n\n return opts.defaultWidth;\n}\n","/* MAIN */\nconst getCodePointsLength = (() => {\n const SURROGATE_PAIR_RE = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g;\n return (input) => {\n let surrogatePairsNr = 0;\n SURROGATE_PAIR_RE.lastIndex = 0;\n while (SURROGATE_PAIR_RE.test(input)) {\n surrogatePairsNr += 1;\n }\n return input.length - surrogatePairsNr;\n };\n})();\nconst isFullWidth = (x) => {\n return x === 0x3000 || x >= 0xFF01 && x <= 0xFF60 || x >= 0xFFE0 && x <= 0xFFE6;\n};\nconst isWideNotCJKTNotEmoji = (x) => {\n return x === 0x231B || x === 0x2329 || x >= 0x2FF0 && x <= 0x2FFF || x >= 0x3001 && x <= 0x303E || x >= 0x3099 && x <= 0x30FF || x >= 0x3105 && x <= 0x312F || x >= 0x3131 && x <= 0x318E || x >= 0x3190 && x <= 0x31E3 || x >= 0x31EF && x <= 0x321E || x >= 0x3220 && x <= 0x3247 || x >= 0x3250 && x <= 0x4DBF || x >= 0xFE10 && x <= 0xFE19 || x >= 0xFE30 && x <= 0xFE52 || x >= 0xFE54 && x <= 0xFE66 || x >= 0xFE68 && x <= 0xFE6B || x >= 0x1F200 && x <= 0x1F202 || x >= 0x1F210 && x <= 0x1F23B || x >= 0x1F240 && x <= 0x1F248 || x >= 0x20000 && x <= 0x2FFFD || x >= 0x30000 && x <= 0x3FFFD;\n};\n/* EXPORT */\nexport { getCodePointsLength, isFullWidth, isWideNotCJKTNotEmoji };\n","/* IMPORT */\nimport { getCodePointsLength, isFullWidth, isWideNotCJKTNotEmoji } from './utils.js';\n/* HELPERS */\nconst ANSI_RE = /[\\u001b\\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]|\\u001b\\]8;[^;]*;.*?(?:\\u0007|\\u001b\\u005c)/y;\nconst CONTROL_RE = /[\\x00-\\x08\\x0A-\\x1F\\x7F-\\x9F]{1,1000}/y;\nconst CJKT_WIDE_RE = /(?:(?![\\uFF61-\\uFF9F\\uFF00-\\uFFEF])[\\p{Script=Han}\\p{Script=Hiragana}\\p{Script=Katakana}\\p{Script=Hangul}\\p{Script=Tangut}]){1,1000}/yu;\nconst TAB_RE = /\\t{1,1000}/y;\nconst EMOJI_RE = /[\\u{1F1E6}-\\u{1F1FF}]{2}|\\u{1F3F4}[\\u{E0061}-\\u{E007A}]{2}[\\u{E0030}-\\u{E0039}\\u{E0061}-\\u{E007A}]{1,3}\\u{E007F}|(?:\\p{Emoji}\\uFE0F\\u20E3?|\\p{Emoji_Modifier_Base}\\p{Emoji_Modifier}?|\\p{Emoji_Presentation})(?:\\u200D(?:\\p{Emoji_Modifier_Base}\\p{Emoji_Modifier}?|\\p{Emoji_Presentation}|\\p{Emoji}\\uFE0F\\u20E3?))*/yu;\nconst LATIN_RE = /(?:[\\x20-\\x7E\\xA0-\\xFF](?!\\uFE0F)){1,1000}/y;\nconst MODIFIER_RE = /\\p{M}+/gu;\nconst NO_TRUNCATION = { limit: Infinity, ellipsis: '' };\n/* MAIN */\nconst getStringTruncatedWidth = (input, truncationOptions = {}, widthOptions = {}) => {\n /* CONSTANTS */\n const LIMIT = truncationOptions.limit ?? Infinity;\n const ELLIPSIS = truncationOptions.ellipsis ?? '';\n const ELLIPSIS_WIDTH = truncationOptions?.ellipsisWidth ?? (ELLIPSIS ? getStringTruncatedWidth(ELLIPSIS, NO_TRUNCATION, widthOptions).width : 0);\n const ANSI_WIDTH = 0;\n const CONTROL_WIDTH = widthOptions.controlWidth ?? 0;\n const TAB_WIDTH = widthOptions.tabWidth ?? 8;\n const EMOJI_WIDTH = widthOptions.emojiWidth ?? 2;\n const FULL_WIDTH_WIDTH = 2;\n const REGULAR_WIDTH = widthOptions.regularWidth ?? 1;\n const WIDE_WIDTH = widthOptions.wideWidth ?? FULL_WIDTH_WIDTH;\n const PARSE_BLOCKS = [\n [LATIN_RE, REGULAR_WIDTH],\n [ANSI_RE, ANSI_WIDTH],\n [CONTROL_RE, CONTROL_WIDTH],\n [TAB_RE, TAB_WIDTH],\n [EMOJI_RE, EMOJI_WIDTH],\n [CJKT_WIDE_RE, WIDE_WIDTH],\n ];\n /* STATE */\n let indexPrev = 0;\n let index = 0;\n let length = input.length;\n let lengthExtra = 0;\n let truncationEnabled = false;\n let truncationIndex = length;\n let truncationLimit = Math.max(0, LIMIT - ELLIPSIS_WIDTH);\n let unmatchedStart = 0;\n let unmatchedEnd = 0;\n let width = 0;\n let widthExtra = 0;\n /* PARSE LOOP */\n outer: while (true) {\n /* UNMATCHED */\n if ((unmatchedEnd > unmatchedStart) || (index >= length && index > indexPrev)) {\n const unmatched = input.slice(unmatchedStart, unmatchedEnd) || input.slice(indexPrev, index);\n lengthExtra = 0;\n for (const char of unmatched.replaceAll(MODIFIER_RE, '')) {\n const codePoint = char.codePointAt(0) || 0;\n if (isFullWidth(codePoint)) {\n widthExtra = FULL_WIDTH_WIDTH;\n }\n else if (isWideNotCJKTNotEmoji(codePoint)) {\n widthExtra = WIDE_WIDTH;\n }\n else {\n widthExtra = REGULAR_WIDTH;\n }\n if ((width + widthExtra) > truncationLimit) {\n truncationIndex = Math.min(truncationIndex, Math.max(unmatchedStart, indexPrev) + lengthExtra);\n }\n if ((width + widthExtra) > LIMIT) {\n truncationEnabled = true;\n break outer;\n }\n lengthExtra += char.length;\n width += widthExtra;\n }\n unmatchedStart = unmatchedEnd = 0;\n }\n /* EXITING */\n if (index >= length) {\n break outer;\n }\n /* PARSE BLOCKS */\n for (let i = 0, l = PARSE_BLOCKS.length; i < l; i++) {\n const [BLOCK_RE, BLOCK_WIDTH] = PARSE_BLOCKS[i];\n BLOCK_RE.lastIndex = index;\n if (BLOCK_RE.test(input)) {\n lengthExtra = BLOCK_RE === CJKT_WIDE_RE ? getCodePointsLength(input.slice(index, BLOCK_RE.lastIndex)) : BLOCK_RE === EMOJI_RE ? 1 : BLOCK_RE.lastIndex - index;\n widthExtra = lengthExtra * BLOCK_WIDTH;\n if ((width + widthExtra) > truncationLimit) {\n truncationIndex = Math.min(truncationIndex, index + Math.floor((truncationLimit - width) / BLOCK_WIDTH));\n }\n if ((width + widthExtra) > LIMIT) {\n truncationEnabled = true;\n break outer;\n }\n width += widthExtra;\n unmatchedStart = indexPrev;\n unmatchedEnd = index;\n index = indexPrev = BLOCK_RE.lastIndex;\n continue outer;\n }\n }\n /* UNMATCHED INDEX */\n index += 1;\n }\n /* RETURN */\n return {\n width: truncationEnabled ? truncationLimit : width,\n index: truncationEnabled ? truncationIndex : length,\n truncated: truncationEnabled,\n ellipsed: truncationEnabled && LIMIT >= ELLIPSIS_WIDTH\n };\n};\n/* EXPORT */\nexport default getStringTruncatedWidth;\n","/* IMPORT */\nimport fastStringTruncatedWidth from 'fast-string-truncated-width';\n/* HELPERS */\nconst NO_TRUNCATION = {\n limit: Infinity,\n ellipsis: '',\n ellipsisWidth: 0,\n};\n/* MAIN */\nconst fastStringWidth = (input, options = {}) => {\n return fastStringTruncatedWidth(input, NO_TRUNCATION, options).width;\n};\n/* EXPORT */\nexport default fastStringWidth;\n","import stringWidth from 'fast-string-width';\nconst ESC = '\\x1B';\nconst CSI = '\\x9B';\nconst END_CODE = 39;\nconst ANSI_ESCAPE_BELL = '\\u0007';\nconst ANSI_CSI = '[';\nconst ANSI_OSC = ']';\nconst ANSI_SGR_TERMINATOR = 'm';\nconst ANSI_ESCAPE_LINK = `${ANSI_OSC}8;;`;\nconst GROUP_REGEX = new RegExp(`(?:\\\\${ANSI_CSI}(?\\\\d+)m|\\\\${ANSI_ESCAPE_LINK}(?.*)${ANSI_ESCAPE_BELL})`, 'y');\nconst getClosingCode = (openingCode) => {\n if (openingCode >= 30 && openingCode <= 37)\n return 39;\n if (openingCode >= 90 && openingCode <= 97)\n return 39;\n if (openingCode >= 40 && openingCode <= 47)\n return 49;\n if (openingCode >= 100 && openingCode <= 107)\n return 49;\n if (openingCode === 1 || openingCode === 2)\n return 22;\n if (openingCode === 3)\n return 23;\n if (openingCode === 4)\n return 24;\n if (openingCode === 7)\n return 27;\n if (openingCode === 8)\n return 28;\n if (openingCode === 9)\n return 29;\n if (openingCode === 0)\n return 0;\n return undefined;\n};\nconst wrapAnsiCode = (code) => `${ESC}${ANSI_CSI}${code}${ANSI_SGR_TERMINATOR}`;\nconst wrapAnsiHyperlink = (url) => `${ESC}${ANSI_ESCAPE_LINK}${url}${ANSI_ESCAPE_BELL}`;\nconst wrapWord = (rows, word, columns) => {\n const characters = word[Symbol.iterator]();\n let isInsideEscape = false;\n let isInsideLinkEscape = false;\n let lastRow = rows.at(-1);\n let visible = lastRow === undefined ? 0 : stringWidth(lastRow);\n let currentCharacter = characters.next();\n let nextCharacter = characters.next();\n let rawCharacterIndex = 0;\n while (!currentCharacter.done) {\n const character = currentCharacter.value;\n const characterLength = stringWidth(character);\n if (visible + characterLength <= columns) {\n rows[rows.length - 1] += character;\n }\n else {\n rows.push(character);\n visible = 0;\n }\n if (character === ESC || character === CSI) {\n isInsideEscape = true;\n isInsideLinkEscape = word.startsWith(ANSI_ESCAPE_LINK, rawCharacterIndex + 1);\n }\n if (isInsideEscape) {\n if (isInsideLinkEscape) {\n if (character === ANSI_ESCAPE_BELL) {\n isInsideEscape = false;\n isInsideLinkEscape = false;\n }\n }\n else if (character === ANSI_SGR_TERMINATOR) {\n isInsideEscape = false;\n }\n }\n else {\n visible += characterLength;\n if (visible === columns && !nextCharacter.done) {\n rows.push('');\n visible = 0;\n }\n }\n currentCharacter = nextCharacter;\n nextCharacter = characters.next();\n rawCharacterIndex += character.length;\n }\n lastRow = rows.at(-1);\n if (!visible && lastRow !== undefined && lastRow.length && rows.length > 1) {\n rows[rows.length - 2] += rows.pop();\n }\n};\nconst stringVisibleTrimSpacesRight = (string) => {\n const words = string.split(' ');\n let last = words.length;\n while (last) {\n if (stringWidth(words[last - 1])) {\n break;\n }\n last--;\n }\n if (last === words.length) {\n return string;\n }\n return words.slice(0, last).join(' ') + words.slice(last).join('');\n};\nconst exec = (string, columns, options = {}) => {\n if (options.trim !== false && string.trim() === '') {\n return '';\n }\n let returnValue = '';\n let escapeCode;\n let escapeUrl;\n const words = string.split(' ');\n let rows = [''];\n let rowLength = 0;\n for (let index = 0; index < words.length; index++) {\n const word = words[index];\n if (options.trim !== false) {\n const row = rows.at(-1) ?? '';\n const trimmed = row.trimStart();\n if (row.length !== trimmed.length) {\n rows[rows.length - 1] = trimmed;\n rowLength = stringWidth(trimmed);\n }\n }\n if (index !== 0) {\n if (rowLength >= columns &&\n (options.wordWrap === false || options.trim === false)) {\n rows.push('');\n rowLength = 0;\n }\n if (rowLength || options.trim === false) {\n rows[rows.length - 1] += ' ';\n rowLength++;\n }\n }\n const wordLength = stringWidth(word);\n if (options.hard && wordLength > columns) {\n const remainingColumns = columns - rowLength;\n const breaksStartingThisLine = 1 + Math.floor((wordLength - remainingColumns - 1) / columns);\n const breaksStartingNextLine = Math.floor((wordLength - 1) / columns);\n if (breaksStartingNextLine < breaksStartingThisLine) {\n rows.push('');\n }\n wrapWord(rows, word, columns);\n rowLength = stringWidth(rows.at(-1) ?? '');\n continue;\n }\n if (rowLength + wordLength > columns && rowLength && wordLength) {\n if (options.wordWrap === false && rowLength < columns) {\n wrapWord(rows, word, columns);\n rowLength = stringWidth(rows.at(-1) ?? '');\n continue;\n }\n rows.push('');\n rowLength = 0;\n }\n if (rowLength + wordLength > columns && options.wordWrap === false) {\n wrapWord(rows, word, columns);\n rowLength = stringWidth(rows.at(-1) ?? '');\n continue;\n }\n rows[rows.length - 1] += word;\n rowLength += wordLength;\n }\n if (options.trim !== false) {\n rows = rows.map((row) => stringVisibleTrimSpacesRight(row));\n }\n const preString = rows.join('\\n');\n let inSurrogate = false;\n for (let i = 0; i < preString.length; i++) {\n const character = preString[i];\n returnValue += character;\n if (!inSurrogate) {\n inSurrogate = character >= '\\ud800' && character <= '\\udbff';\n if (inSurrogate) {\n continue;\n }\n }\n else {\n inSurrogate = false;\n }\n if (character === ESC || character === CSI) {\n GROUP_REGEX.lastIndex = i + 1;\n const groupsResult = GROUP_REGEX.exec(preString);\n const groups = groupsResult?.groups;\n if (groups?.code !== undefined) {\n const code = Number.parseFloat(groups.code);\n escapeCode = code === END_CODE ? undefined : code;\n }\n else if (groups?.uri !== undefined) {\n escapeUrl = groups.uri.length === 0 ? undefined : groups.uri;\n }\n }\n if (preString[i + 1] === '\\n') {\n if (escapeUrl) {\n returnValue += wrapAnsiHyperlink('');\n }\n const closingCode = escapeCode ? getClosingCode(escapeCode) : undefined;\n if (escapeCode && closingCode) {\n returnValue += wrapAnsiCode(closingCode);\n }\n }\n else if (character === '\\n') {\n if (escapeCode && getClosingCode(escapeCode)) {\n returnValue += wrapAnsiCode(escapeCode);\n }\n if (escapeUrl) {\n returnValue += wrapAnsiHyperlink(escapeUrl);\n }\n }\n }\n return returnValue;\n};\nconst CRLF_OR_LF = /\\r?\\n/;\nexport function wrapAnsi(string, columns, options) {\n return String(string)\n .normalize()\n .split(CRLF_OR_LF)\n .map((line) => exec(line, columns, options))\n .join('\\n');\n}\n//# sourceMappingURL=main.js.map","import cliWidth from 'cli-width';\nimport { wrapAnsi } from 'fast-wrap-ansi';\nimport { readline } from \"./hook-engine.js\";\n/**\n * Force line returns at specific width. This function is ANSI code friendly and it'll\n * ignore invisible codes during width calculation.\n * @param {string} content\n * @param {number} width\n * @return {string}\n */\nexport function breakLines(content, width) {\n return content\n .split('\\n')\n .flatMap((line) => wrapAnsi(line, width, { trim: false, hard: true })\n .split('\\n')\n .map((str) => str.trimEnd()))\n .join('\\n');\n}\n/**\n * Returns the width of the active readline, or 80 as default value.\n * @returns {number}\n */\nexport function readlineWidth() {\n return cliWidth({ defaultWidth: 80, output: readline().output });\n}\n","import { useRef } from \"../use-ref.js\";\nimport { readlineWidth, breakLines } from \"../utils.js\";\nfunction usePointerPosition({ active, renderedItems, pageSize, loop, }) {\n const state = useRef({\n lastPointer: active,\n lastActive: undefined,\n });\n const { lastPointer, lastActive } = state.current;\n const middle = Math.floor(pageSize / 2);\n const renderedLength = renderedItems.reduce((acc, item) => acc + item.length, 0);\n const defaultPointerPosition = renderedItems\n .slice(0, active)\n .reduce((acc, item) => acc + item.length, 0);\n let pointer = defaultPointerPosition;\n if (renderedLength > pageSize) {\n if (loop) {\n /**\n * Creates the next position for the pointer considering an infinitely\n * looping list of items to be rendered on the page.\n *\n * The goal is to progressively move the cursor to the middle position as the user move down, and then keep\n * the cursor there. When the user move up, maintain the cursor position.\n */\n // By default, keep the cursor position as-is.\n pointer = lastPointer;\n if (\n // First render, skip this logic.\n lastActive != null &&\n // Only move the pointer down when the user moves down.\n lastActive < active &&\n // Check user didn't move up across page boundary.\n active - lastActive < pageSize) {\n pointer = Math.min(\n // Furthest allowed position for the pointer is the middle of the list\n middle, Math.abs(active - lastActive) === 1\n ? Math.min(\n // Move the pointer at most the height of the last active item.\n lastPointer + (renderedItems[lastActive]?.length ?? 0), \n // If the user moved by one item, move the pointer to the natural position of the active item as\n // long as it doesn't move the cursor up.\n Math.max(defaultPointerPosition, lastPointer))\n : // Otherwise, move the pointer down by the difference between the active and last active item.\n lastPointer + active - lastActive);\n }\n }\n else {\n /**\n * Creates the next position for the pointer considering a finite list of\n * items to be rendered on a page.\n *\n * The goal is to keep the pointer in the middle of the page whenever possible, until\n * we reach the bounds of the list (top or bottom). In which case, the cursor moves progressively\n * to the bottom or top of the list.\n */\n const spaceUnderActive = renderedItems\n .slice(active)\n .reduce((acc, item) => acc + item.length, 0);\n pointer =\n spaceUnderActive < pageSize - middle\n ? // If the active item is near the end of the list, progressively move the cursor towards the end.\n pageSize - spaceUnderActive\n : // Otherwise, progressively move the pointer to the middle of the list.\n Math.min(defaultPointerPosition, middle);\n }\n }\n // Save state for the next render\n state.current.lastPointer = pointer;\n state.current.lastActive = active;\n return pointer;\n}\nexport function usePagination({ items, active, renderItem, pageSize, loop = true, }) {\n const width = readlineWidth();\n const bound = (num) => ((num % items.length) + items.length) % items.length;\n const renderedItems = items.map((item, index) => {\n if (item == null)\n return [];\n return breakLines(renderItem({ item, index, isActive: index === active }), width).split('\\n');\n });\n const renderedLength = renderedItems.reduce((acc, item) => acc + item.length, 0);\n const renderItemAtIndex = (index) => renderedItems[index] ?? [];\n const pointer = usePointerPosition({ active, renderedItems, pageSize, loop });\n // Render the active item to decide the position.\n // If the active item fits under the pointer, we render it there.\n // Otherwise, we need to render it to fit at the bottom of the page; moving the pointer up.\n const activeItem = renderItemAtIndex(active).slice(0, pageSize);\n const activeItemPosition = pointer + activeItem.length <= pageSize ? pointer : pageSize - activeItem.length;\n // Create an array of lines for the page, and add the lines of the active item into the page\n const pageBuffer = Array.from({ length: pageSize });\n pageBuffer.splice(activeItemPosition, activeItem.length, ...activeItem);\n // Store to prevent rendering the same item twice\n const itemVisited = new Set([active]);\n // Fill the page under the active item\n let bufferPointer = activeItemPosition + activeItem.length;\n let itemPointer = bound(active + 1);\n while (bufferPointer < pageSize &&\n !itemVisited.has(itemPointer) &&\n (loop && renderedLength > pageSize ? itemPointer !== active : itemPointer > active)) {\n const lines = renderItemAtIndex(itemPointer);\n const linesToAdd = lines.slice(0, pageSize - bufferPointer);\n pageBuffer.splice(bufferPointer, linesToAdd.length, ...linesToAdd);\n // Move pointers for next iteration\n itemVisited.add(itemPointer);\n bufferPointer += linesToAdd.length;\n itemPointer = bound(itemPointer + 1);\n }\n // Fill the page over the active item\n bufferPointer = activeItemPosition - 1;\n itemPointer = bound(active - 1);\n while (bufferPointer >= 0 &&\n !itemVisited.has(itemPointer) &&\n (loop && renderedLength > pageSize ? itemPointer !== active : itemPointer < active)) {\n const lines = renderItemAtIndex(itemPointer);\n const linesToAdd = lines.slice(Math.max(0, lines.length - bufferPointer - 1));\n pageBuffer.splice(bufferPointer - linesToAdd.length + 1, linesToAdd.length, ...linesToAdd);\n // Move pointers for next iteration\n itemVisited.add(itemPointer);\n bufferPointer -= linesToAdd.length;\n itemPointer = bound(itemPointer - 1);\n }\n return pageBuffer.filter((line) => typeof line === 'string').join('\\n');\n}\n","const Stream = require('stream')\n\nclass MuteStream extends Stream {\n #isTTY = null\n\n constructor (opts = {}) {\n super(opts)\n this.writable = this.readable = true\n this.muted = false\n this.on('pipe', this._onpipe)\n this.replace = opts.replace\n\n // For readline-type situations\n // This much at the start of a line being redrawn after a ctrl char\n // is seen (such as backspace) won't be redrawn as the replacement\n this._prompt = opts.prompt || null\n this._hadControl = false\n }\n\n #destSrc (key, def) {\n if (this._dest) {\n return this._dest[key]\n }\n if (this._src) {\n return this._src[key]\n }\n return def\n }\n\n #proxy (method, ...args) {\n if (typeof this._dest?.[method] === 'function') {\n this._dest[method](...args)\n }\n if (typeof this._src?.[method] === 'function') {\n this._src[method](...args)\n }\n }\n\n get isTTY () {\n if (this.#isTTY !== null) {\n return this.#isTTY\n }\n return this.#destSrc('isTTY', false)\n }\n\n // basically just get replace the getter/setter with a regular value\n set isTTY (val) {\n this.#isTTY = val\n }\n\n get rows () {\n return this.#destSrc('rows')\n }\n\n get columns () {\n return this.#destSrc('columns')\n }\n\n mute () {\n this.muted = true\n }\n\n unmute () {\n this.muted = false\n }\n\n _onpipe (src) {\n this._src = src\n }\n\n pipe (dest, options) {\n this._dest = dest\n return super.pipe(dest, options)\n }\n\n pause () {\n if (this._src) {\n return this._src.pause()\n }\n }\n\n resume () {\n if (this._src) {\n return this._src.resume()\n }\n }\n\n write (c) {\n if (this.muted) {\n if (!this.replace) {\n return true\n }\n // eslint-disable-next-line no-control-regex\n if (c.match(/^\\u001b/)) {\n if (c.indexOf(this._prompt) === 0) {\n c = c.slice(this._prompt.length)\n c = c.replace(/./g, this.replace)\n c = this._prompt + c\n }\n this._hadControl = true\n return this.emit('data', c)\n } else {\n if (this._prompt && this._hadControl &&\n c.indexOf(this._prompt) === 0) {\n this._hadControl = false\n this.emit('data', this._prompt)\n c = c.slice(this._prompt.length)\n }\n c = c.toString().replace(/./g, this.replace)\n }\n }\n this.emit('data', c)\n }\n\n end (c) {\n if (this.muted) {\n if (c && this.replace) {\n c = c.toString().replace(/./g, this.replace)\n } else {\n c = null\n }\n }\n if (c) {\n this.emit('data', c)\n }\n this.emit('end')\n }\n\n destroy (...args) {\n return this.#proxy('destroy', ...args)\n }\n\n destroySoon (...args) {\n return this.#proxy('destroySoon', ...args)\n }\n\n close (...args) {\n return this.#proxy('close', ...args)\n }\n}\n\nmodule.exports = MuteStream\n","/**\n * This is not the set of all possible signals.\n *\n * It IS, however, the set of all signals that trigger\n * an exit on either Linux or BSD systems. Linux is a\n * superset of the signal names supported on BSD, and\n * the unknown signals just fail to register, so we can\n * catch that easily enough.\n *\n * Windows signals are a different set, since there are\n * signals that terminate Windows processes, but don't\n * terminate (or don't even exist) on Posix systems.\n *\n * Don't bother with SIGKILL. It's uncatchable, which\n * means that we can't fire any callbacks anyway.\n *\n * If a user does happen to register a handler on a non-\n * fatal signal like SIGWINCH or something, and then\n * exit, it'll end up firing `process.emit('exit')`, so\n * the handler will be fired anyway.\n *\n * SIGBUS, SIGFPE, SIGSEGV and SIGILL, when not raised\n * artificially, inherently leave the process in a\n * state from which it is not safe to try and enter JS\n * listeners.\n */\nexport const signals = [];\nsignals.push('SIGHUP', 'SIGINT', 'SIGTERM');\nif (process.platform !== 'win32') {\n signals.push('SIGALRM', 'SIGABRT', 'SIGVTALRM', 'SIGXCPU', 'SIGXFSZ', 'SIGUSR2', 'SIGTRAP', 'SIGSYS', 'SIGQUIT', 'SIGIOT'\n // should detect profiler and enable/disable accordingly.\n // see #21\n // 'SIGPROF'\n );\n}\nif (process.platform === 'linux') {\n signals.push('SIGIO', 'SIGPOLL', 'SIGPWR', 'SIGSTKFLT');\n}\n//# sourceMappingURL=signals.js.map","// Note: since nyc uses this module to output coverage, any lines\n// that are in the direct sync flow of nyc's outputCoverage are\n// ignored, since we can never get coverage for them.\n// grab a reference to node's real process object right away\nimport { signals } from './signals.js';\nexport { signals };\nconst processOk = (process) => !!process &&\n typeof process === 'object' &&\n typeof process.removeListener === 'function' &&\n typeof process.emit === 'function' &&\n typeof process.reallyExit === 'function' &&\n typeof process.listeners === 'function' &&\n typeof process.kill === 'function' &&\n typeof process.pid === 'number' &&\n typeof process.on === 'function';\nconst kExitEmitter = Symbol.for('signal-exit emitter');\nconst global = globalThis;\nconst ObjectDefineProperty = Object.defineProperty.bind(Object);\n// teeny special purpose ee\nclass Emitter {\n emitted = {\n afterExit: false,\n exit: false,\n };\n listeners = {\n afterExit: [],\n exit: [],\n };\n count = 0;\n id = Math.random();\n constructor() {\n if (global[kExitEmitter]) {\n return global[kExitEmitter];\n }\n ObjectDefineProperty(global, kExitEmitter, {\n value: this,\n writable: false,\n enumerable: false,\n configurable: false,\n });\n }\n on(ev, fn) {\n this.listeners[ev].push(fn);\n }\n removeListener(ev, fn) {\n const list = this.listeners[ev];\n const i = list.indexOf(fn);\n /* c8 ignore start */\n if (i === -1) {\n return;\n }\n /* c8 ignore stop */\n if (i === 0 && list.length === 1) {\n list.length = 0;\n }\n else {\n list.splice(i, 1);\n }\n }\n emit(ev, code, signal) {\n if (this.emitted[ev]) {\n return false;\n }\n this.emitted[ev] = true;\n let ret = false;\n for (const fn of this.listeners[ev]) {\n ret = fn(code, signal) === true || ret;\n }\n if (ev === 'exit') {\n ret = this.emit('afterExit', code, signal) || ret;\n }\n return ret;\n }\n}\nclass SignalExitBase {\n}\nconst signalExitWrap = (handler) => {\n return {\n onExit(cb, opts) {\n return handler.onExit(cb, opts);\n },\n load() {\n return handler.load();\n },\n unload() {\n return handler.unload();\n },\n };\n};\nclass SignalExitFallback extends SignalExitBase {\n onExit() {\n return () => { };\n }\n load() { }\n unload() { }\n}\nclass SignalExit extends SignalExitBase {\n // \"SIGHUP\" throws an `ENOSYS` error on Windows,\n // so use a supported signal instead\n /* c8 ignore start */\n #hupSig = process.platform === 'win32' ? 'SIGINT' : 'SIGHUP';\n /* c8 ignore stop */\n #emitter = new Emitter();\n #process;\n #originalProcessEmit;\n #originalProcessReallyExit;\n #sigListeners = {};\n #loaded = false;\n constructor(process) {\n super();\n this.#process = process;\n // { : , ... }\n this.#sigListeners = {};\n for (const sig of signals) {\n this.#sigListeners[sig] = () => {\n // If there are no other listeners, an exit is coming!\n // Simplest way: remove us and then re-send the signal.\n // We know that this will kill the process, so we can\n // safely emit now.\n const listeners = this.#process.listeners(sig);\n let { count } = this.#emitter;\n // This is a workaround for the fact that signal-exit v3 and signal\n // exit v4 are not aware of each other, and each will attempt to let\n // the other handle it, so neither of them do. To correct this, we\n // detect if we're the only handler *except* for previous versions\n // of signal-exit, and increment by the count of listeners it has\n // created.\n /* c8 ignore start */\n const p = process;\n if (typeof p.__signal_exit_emitter__ === 'object' &&\n typeof p.__signal_exit_emitter__.count === 'number') {\n count += p.__signal_exit_emitter__.count;\n }\n /* c8 ignore stop */\n if (listeners.length === count) {\n this.unload();\n const ret = this.#emitter.emit('exit', null, sig);\n /* c8 ignore start */\n const s = sig === 'SIGHUP' ? this.#hupSig : sig;\n if (!ret)\n process.kill(process.pid, s);\n /* c8 ignore stop */\n }\n };\n }\n this.#originalProcessReallyExit = process.reallyExit;\n this.#originalProcessEmit = process.emit;\n }\n onExit(cb, opts) {\n /* c8 ignore start */\n if (!processOk(this.#process)) {\n return () => { };\n }\n /* c8 ignore stop */\n if (this.#loaded === false) {\n this.load();\n }\n const ev = opts?.alwaysLast ? 'afterExit' : 'exit';\n this.#emitter.on(ev, cb);\n return () => {\n this.#emitter.removeListener(ev, cb);\n if (this.#emitter.listeners['exit'].length === 0 &&\n this.#emitter.listeners['afterExit'].length === 0) {\n this.unload();\n }\n };\n }\n load() {\n if (this.#loaded) {\n return;\n }\n this.#loaded = true;\n // This is the number of onSignalExit's that are in play.\n // It's important so that we can count the correct number of\n // listeners on signals, and don't wait for the other one to\n // handle it instead of us.\n this.#emitter.count += 1;\n for (const sig of signals) {\n try {\n const fn = this.#sigListeners[sig];\n if (fn)\n this.#process.on(sig, fn);\n }\n catch (_) { }\n }\n this.#process.emit = (ev, ...a) => {\n return this.#processEmit(ev, ...a);\n };\n this.#process.reallyExit = (code) => {\n return this.#processReallyExit(code);\n };\n }\n unload() {\n if (!this.#loaded) {\n return;\n }\n this.#loaded = false;\n signals.forEach(sig => {\n const listener = this.#sigListeners[sig];\n /* c8 ignore start */\n if (!listener) {\n throw new Error('Listener not defined for signal: ' + sig);\n }\n /* c8 ignore stop */\n try {\n this.#process.removeListener(sig, listener);\n /* c8 ignore start */\n }\n catch (_) { }\n /* c8 ignore stop */\n });\n this.#process.emit = this.#originalProcessEmit;\n this.#process.reallyExit = this.#originalProcessReallyExit;\n this.#emitter.count -= 1;\n }\n #processReallyExit(code) {\n /* c8 ignore start */\n if (!processOk(this.#process)) {\n return 0;\n }\n this.#process.exitCode = code || 0;\n /* c8 ignore stop */\n this.#emitter.emit('exit', this.#process.exitCode, null);\n return this.#originalProcessReallyExit.call(this.#process, this.#process.exitCode);\n }\n #processEmit(ev, ...args) {\n const og = this.#originalProcessEmit;\n if (ev === 'exit' && processOk(this.#process)) {\n if (typeof args[0] === 'number') {\n this.#process.exitCode = args[0];\n /* c8 ignore start */\n }\n /* c8 ignore start */\n const ret = og.call(this.#process, ev, ...args);\n /* c8 ignore start */\n this.#emitter.emit('exit', this.#process.exitCode, null);\n /* c8 ignore stop */\n return ret;\n }\n else {\n return og.call(this.#process, ev, ...args);\n }\n }\n}\nconst process = globalThis.process;\n// wrap so that we call the method on the actual handler, without\n// exporting it directly.\nexport const { \n/**\n * Called when the process is exiting, whether via signal, explicit\n * exit, or running out of stuff to do.\n *\n * If the global process object is not suitable for instrumentation,\n * then this will be a no-op.\n *\n * Returns a function that may be used to unload signal-exit.\n */\nonExit, \n/**\n * Load the listeners. Likely you never need to call this, unless\n * doing a rather deep integration with signal-exit functionality.\n * Mostly exposed for the benefit of testing.\n *\n * @internal\n */\nload, \n/**\n * Unload the listeners. Likely you never need to call this, unless\n * doing a rather deep integration with signal-exit functionality.\n * Mostly exposed for the benefit of testing.\n *\n * @internal\n */\nunload, } = signalExitWrap(processOk(process) ? new SignalExit(process) : new SignalExitFallback());\n//# sourceMappingURL=index.js.map","const ESC = '\\u001B[';\n/** Move cursor to first column */\nexport const cursorLeft = ESC + 'G';\n/** Hide the cursor */\nexport const cursorHide = ESC + '?25l';\n/** Show the cursor */\nexport const cursorShow = ESC + '?25h';\n/** Move cursor up by count rows */\nexport const cursorUp = (rows = 1) => (rows > 0 ? `${ESC}${rows}A` : '');\n/** Move cursor down by count rows */\nexport const cursorDown = (rows = 1) => rows > 0 ? `${ESC}${rows}B` : '';\n/** Move cursor to position (x, y) */\nexport const cursorTo = (x, y) => {\n if (typeof y === 'number' && !Number.isNaN(y)) {\n return `${ESC}${y + 1};${x + 1}H`;\n }\n return `${ESC}${x + 1}G`;\n};\nconst eraseLine = ESC + '2K';\n/** Erase the specified number of lines above the cursor */\nexport const eraseLines = (lines) => lines > 0 ? (eraseLine + cursorUp(1)).repeat(lines - 1) + eraseLine + cursorLeft : '';\n","import { stripVTControlCharacters } from 'node:util';\nimport { breakLines, readlineWidth } from \"./utils.js\";\nimport { cursorDown, cursorUp, cursorTo, cursorShow, eraseLines } from '@inquirer/ansi';\nconst height = (content) => content.split('\\n').length;\nconst lastLine = (content) => content.split('\\n').pop() ?? '';\nexport default class ScreenManager {\n // These variables are keeping information to allow correct prompt re-rendering\n height = 0;\n extraLinesUnderPrompt = 0;\n cursorPos;\n rl;\n constructor(rl) {\n this.rl = rl;\n this.cursorPos = rl.getCursorPos();\n }\n write(content) {\n this.rl.output.unmute();\n this.rl.output.write(content);\n this.rl.output.mute();\n }\n render(content, bottomContent = '') {\n // Write message to screen and setPrompt to control backspace\n const promptLine = lastLine(content);\n const rawPromptLine = stripVTControlCharacters(promptLine);\n // Remove the rl.line from our prompt. We can't rely on the content of\n // rl.line (mainly because of the password prompt), so just rely on it's\n // length.\n let prompt = rawPromptLine;\n if (this.rl.line.length > 0) {\n prompt = prompt.slice(0, -this.rl.line.length);\n }\n this.rl.setPrompt(prompt);\n // SetPrompt will change cursor position, now we can get correct value\n this.cursorPos = this.rl.getCursorPos();\n const width = readlineWidth();\n content = breakLines(content, width);\n bottomContent = breakLines(bottomContent, width);\n // Manually insert an extra line if we're at the end of the line.\n // This prevent the cursor from appearing at the beginning of the\n // current line.\n if (rawPromptLine.length % width === 0) {\n content += '\\n';\n }\n let output = content + (bottomContent ? '\\n' + bottomContent : '');\n /**\n * Re-adjust the cursor at the correct position.\n */\n // We need to consider parts of the prompt under the cursor as part of the bottom\n // content in order to correctly cleanup and re-render.\n const promptLineUpDiff = Math.floor(rawPromptLine.length / width) - this.cursorPos.rows;\n const bottomContentHeight = promptLineUpDiff + (bottomContent ? height(bottomContent) : 0);\n // Return cursor to the input position (on top of the bottomContent)\n if (bottomContentHeight > 0)\n output += cursorUp(bottomContentHeight);\n // Return cursor to the initial left offset.\n output += cursorTo(this.cursorPos.cols);\n /**\n * Render and store state for future re-rendering\n */\n this.write(cursorDown(this.extraLinesUnderPrompt) + eraseLines(this.height) + output);\n this.extraLinesUnderPrompt = bottomContentHeight;\n this.height = height(output);\n }\n checkCursorPos() {\n const cursorPos = this.rl.getCursorPos();\n if (cursorPos.cols !== this.cursorPos.cols) {\n this.write(cursorTo(cursorPos.cols));\n this.cursorPos = cursorPos;\n }\n }\n done({ clearContent }) {\n this.rl.setPrompt('');\n let output = cursorDown(this.extraLinesUnderPrompt);\n output += clearContent ? eraseLines(this.height) : '\\n';\n output += cursorShow;\n this.write(output);\n this.rl.close();\n }\n}\n","// TODO: Remove this class once Node 22 becomes the minimum supported version.\nexport class PromisePolyfill extends Promise {\n // Available starting from Node 22\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/withResolvers\n static withResolver() {\n let resolve;\n let reject;\n const promise = new Promise((res, rej) => {\n resolve = res;\n reject = rej;\n });\n return { promise, resolve: resolve, reject: reject };\n }\n}\n","import * as readline from 'node:readline';\nimport { AsyncResource } from 'node:async_hooks';\nimport MuteStream from 'mute-stream';\nimport { onExit as onSignalExit } from 'signal-exit';\nimport ScreenManager from \"./screen-manager.js\";\nimport { PromisePolyfill } from \"./promise-polyfill.js\";\nimport { withHooks, effectScheduler } from \"./hook-engine.js\";\nimport { AbortPromptError, CancelPromptError, ExitPromptError } from \"./errors.js\";\n// Capture the real setImmediate at module load time so it works even when test\n// frameworks mock timers with vi.useFakeTimers() or similar.\nconst nativeSetImmediate = globalThis.setImmediate;\nfunction getCallSites() {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n const _prepareStackTrace = Error.prepareStackTrace;\n let result = [];\n try {\n Error.prepareStackTrace = (_, callSites) => {\n const callSitesWithoutCurrent = callSites.slice(1);\n result = callSitesWithoutCurrent;\n return callSitesWithoutCurrent;\n };\n // oxlint-disable-next-line no-unused-expressions\n new Error().stack;\n }\n catch {\n // An error will occur if the Node flag --frozen-intrinsics is used.\n // https://nodejs.org/api/cli.html#--frozen-intrinsics\n return result;\n }\n Error.prepareStackTrace = _prepareStackTrace;\n return result;\n}\nexport function createPrompt(view) {\n const callSites = getCallSites();\n const prompt = (config, context = {}) => {\n // Default `input` to stdin\n const { input = process.stdin, signal } = context;\n const cleanups = new Set();\n // Add mute capabilities to the output\n const output = new MuteStream();\n output.pipe(context.output ?? process.stdout);\n // Pre-mute the output so that readline doesn't echo stale keystrokes\n // to the terminal before the first render. ScreenManager will unmute/mute\n // the output around each render call as needed.\n output.mute();\n const rl = readline.createInterface({\n terminal: true,\n input,\n output,\n });\n const screen = new ScreenManager(rl);\n const { promise, resolve, reject } = PromisePolyfill.withResolver();\n const cancel = () => reject(new CancelPromptError());\n if (signal) {\n const abort = () => reject(new AbortPromptError({ cause: signal.reason }));\n if (signal.aborted) {\n abort();\n return Object.assign(promise, { cancel });\n }\n signal.addEventListener('abort', abort);\n cleanups.add(() => signal.removeEventListener('abort', abort));\n }\n cleanups.add(onSignalExit((code, signal) => {\n reject(new ExitPromptError(`User force closed the prompt with ${code} ${signal}`));\n }));\n // SIGINT must be explicitly handled by the prompt so the ExitPromptError can be handled.\n // Otherwise, the prompt will stop and in some scenarios never resolve.\n // Ref issue #1741\n const sigint = () => reject(new ExitPromptError(`User force closed the prompt with SIGINT`));\n rl.on('SIGINT', sigint);\n cleanups.add(() => rl.removeListener('SIGINT', sigint));\n return withHooks(rl, (cycle) => {\n // The close event triggers immediately when the user press ctrl+c. SignalExit on the other hand\n // triggers after the process is done (which happens after timeouts are done triggering.)\n // We triggers the hooks cleanup phase on rl `close` so active timeouts can be cleared.\n const hooksCleanup = AsyncResource.bind(() => effectScheduler.clearAll());\n rl.on('close', hooksCleanup);\n cleanups.add(() => rl.removeListener('close', hooksCleanup));\n const startCycle = () => {\n // Re-renders only happen when the state change; but the readline cursor could\n // change position and that also requires a re-render (and a manual one because\n // we mute the streams). We set the listener after the initial workLoop to avoid\n // a double render if render triggered by a state change sets the cursor to the\n // right position.\n const checkCursorPos = () => screen.checkCursorPos();\n rl.input.on('keypress', checkCursorPos);\n cleanups.add(() => rl.input.removeListener('keypress', checkCursorPos));\n cycle(() => {\n try {\n const nextView = view(config, (value) => {\n setImmediate(() => resolve(value));\n });\n // Typescript won't allow this, but not all users rely on typescript.\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (nextView === undefined) {\n const callerFilename = callSites[1]?.getFileName();\n throw new Error(`Prompt functions must return a string.\\n at ${callerFilename}`);\n }\n const [content, bottomContent] = typeof nextView === 'string' ? [nextView] : nextView;\n screen.render(content, bottomContent);\n effectScheduler.run();\n }\n catch (error) {\n reject(error);\n }\n });\n };\n // Proper Readable streams (like process.stdin) may have OS-level buffered\n // data that arrives in the poll phase when readline resumes the stream.\n // Deferring the first render by one setImmediate tick (check phase, after\n // poll) lets that stale data flow through readline harmlessly—no keypress\n // handlers are registered yet and the output is muted, so the stale\n // keystrokes are silently discarded.\n // Old-style streams (like MuteStream) have no such buffering, so the\n // render cycle starts immediately.\n //\n // @see https://github.com/SBoudrias/Inquirer.js/issues/1303\n if ('readableFlowing' in input) {\n nativeSetImmediate(startCycle);\n }\n else {\n startCycle();\n }\n return Object.assign(promise\n .then((answer) => {\n effectScheduler.clearAll();\n return answer;\n }, (error) => {\n effectScheduler.clearAll();\n throw error;\n })\n // Wait for the promise to settle, then cleanup.\n .finally(() => {\n cleanups.forEach((cleanup) => cleanup());\n screen.done({ clearContent: Boolean(context.clearPromptOnDone) });\n output.end();\n })\n // Once cleanup is done, let the expose promise resolve/reject to the internal one.\n .then(() => promise), { cancel });\n });\n };\n return prompt;\n}\n","import { styleText } from 'node:util';\nimport figures from '@inquirer/figures';\n/**\n * Separator object\n * Used to space/separate choices group\n */\nexport class Separator {\n separator = styleText('dim', Array.from({ length: 15 }).join(figures.line));\n type = 'separator';\n constructor(separator) {\n if (separator) {\n this.separator = separator;\n }\n }\n static isSeparator(choice) {\n return Boolean(choice &&\n typeof choice === 'object' &&\n 'type' in choice &&\n choice.type === 'separator');\n }\n}\n","import { createPrompt, useState, useKeypress, usePrefix, usePagination, useMemo, makeTheme, isUpKey, isDownKey, isSpaceKey, isNumberKey, isEnterKey, ValidationError, Separator, } from '@inquirer/core';\nimport { cursorHide } from '@inquirer/ansi';\nimport { styleText } from 'node:util';\nimport figures from '@inquirer/figures';\nconst checkboxTheme = {\n icon: {\n checked: styleText('green', figures.circleFilled),\n unchecked: figures.circle,\n cursor: figures.pointer,\n disabledChecked: styleText('green', figures.circleDouble),\n disabledUnchecked: '-',\n },\n style: {\n disabled: (text) => styleText('dim', text),\n renderSelectedChoices: (selectedChoices) => selectedChoices.map((choice) => choice.short).join(', '),\n description: (text) => styleText('cyan', text),\n keysHelpTip: (keys) => keys\n .map(([key, action]) => `${styleText('bold', key)} ${styleText('dim', action)}`)\n .join(styleText('dim', ' • ')),\n },\n i18n: { disabledError: 'This option is disabled and cannot be toggled.' },\n keybindings: [],\n};\nfunction isSelectable(item) {\n return !Separator.isSeparator(item) && !item.disabled;\n}\nfunction isNavigable(item) {\n return !Separator.isSeparator(item);\n}\nfunction isChecked(item) {\n return !Separator.isSeparator(item) && item.checked;\n}\nfunction toggle(item) {\n return isSelectable(item) ? { ...item, checked: !item.checked } : item;\n}\nfunction check(checked) {\n return function (item) {\n return isSelectable(item) ? { ...item, checked } : item;\n };\n}\nfunction normalizeChoices(choices) {\n return choices.map((choice) => {\n if (Separator.isSeparator(choice))\n return choice;\n if (typeof choice === 'string') {\n return {\n value: choice,\n name: choice,\n short: choice,\n checkedName: choice,\n disabled: false,\n checked: false,\n };\n }\n const name = choice.name ?? String(choice.value);\n const normalizedChoice = {\n value: choice.value,\n name,\n short: choice.short ?? name,\n checkedName: choice.checkedName ?? name,\n disabled: choice.disabled ?? false,\n checked: choice.checked ?? false,\n };\n if (choice.description) {\n normalizedChoice.description = choice.description;\n }\n return normalizedChoice;\n });\n}\nexport default createPrompt((config, done) => {\n const { pageSize = 7, loop = true, required, validate = () => true } = config;\n const shortcuts = { all: 'a', invert: 'i', ...config.shortcuts };\n const theme = makeTheme(checkboxTheme, config.theme);\n const { keybindings } = theme;\n const [status, setStatus] = useState('idle');\n const prefix = usePrefix({ status, theme });\n const [items, setItems] = useState(normalizeChoices(config.choices));\n const bounds = useMemo(() => {\n const first = items.findIndex(isNavigable);\n const last = items.findLastIndex(isNavigable);\n if (first === -1) {\n throw new ValidationError('[checkbox prompt] No selectable choices. All choices are disabled.');\n }\n return { first, last };\n }, [items]);\n const [active, setActive] = useState(bounds.first);\n const [errorMsg, setError] = useState();\n useKeypress(async (key) => {\n if (isEnterKey(key)) {\n const selection = items.filter(isChecked);\n const isValid = await validate([...selection]);\n if (required && !selection.length) {\n setError('At least one choice must be selected');\n }\n else if (isValid === true) {\n setStatus('done');\n done(selection.map((choice) => choice.value));\n }\n else {\n setError(isValid || 'You must select a valid value');\n }\n }\n else if (isUpKey(key, keybindings) || isDownKey(key, keybindings)) {\n if (errorMsg) {\n setError(undefined);\n }\n if (loop ||\n (isUpKey(key, keybindings) && active !== bounds.first) ||\n (isDownKey(key, keybindings) && active !== bounds.last)) {\n const offset = isUpKey(key, keybindings) ? -1 : 1;\n let next = active;\n do {\n next = (next + offset + items.length) % items.length;\n } while (!isNavigable(items[next]));\n setActive(next);\n }\n }\n else if (isSpaceKey(key)) {\n const activeItem = items[active];\n if (activeItem && !Separator.isSeparator(activeItem)) {\n if (activeItem.disabled) {\n setError(theme.i18n.disabledError);\n }\n else {\n setError(undefined);\n setItems(items.map((choice, i) => (i === active ? toggle(choice) : choice)));\n }\n }\n }\n else if (key.name === shortcuts.all) {\n const selectAll = items.some((choice) => isSelectable(choice) && !choice.checked);\n setItems(items.map(check(selectAll)));\n }\n else if (key.name === shortcuts.invert) {\n setItems(items.map(toggle));\n }\n else if (isNumberKey(key)) {\n const selectedIndex = Number(key.name) - 1;\n // Find the nth item (ignoring separators)\n let selectableIndex = -1;\n const position = items.findIndex((item) => {\n if (Separator.isSeparator(item))\n return false;\n selectableIndex++;\n return selectableIndex === selectedIndex;\n });\n const selectedItem = items[position];\n if (selectedItem && isSelectable(selectedItem)) {\n setActive(position);\n setItems(items.map((choice, i) => (i === position ? toggle(choice) : choice)));\n }\n }\n });\n const message = theme.style.message(config.message, status);\n let description;\n const page = usePagination({\n items,\n active,\n renderItem({ item, isActive }) {\n if (Separator.isSeparator(item)) {\n return ` ${item.separator}`;\n }\n const cursor = isActive ? theme.icon.cursor : ' ';\n if (item.disabled) {\n const disabledLabel = typeof item.disabled === 'string' ? item.disabled : '(disabled)';\n const checkbox = item.checked\n ? theme.icon.disabledChecked\n : theme.icon.disabledUnchecked;\n return theme.style.disabled(`${cursor}${checkbox} ${item.name} ${disabledLabel}`);\n }\n if (isActive) {\n description = item.description;\n }\n const checkbox = item.checked ? theme.icon.checked : theme.icon.unchecked;\n const name = item.checked ? item.checkedName : item.name;\n const color = isActive ? theme.style.highlight : (x) => x;\n return color(`${cursor}${checkbox} ${name}`);\n },\n pageSize,\n loop,\n });\n if (status === 'done') {\n const selection = items.filter(isChecked);\n const answer = theme.style.answer(theme.style.renderSelectedChoices(selection, items));\n return [prefix, message, answer].filter(Boolean).join(' ');\n }\n const keys = [\n ['↑↓', 'navigate'],\n ['space', 'select'],\n ];\n if (shortcuts.all)\n keys.push([shortcuts.all, 'all']);\n if (shortcuts.invert)\n keys.push([shortcuts.invert, 'invert']);\n keys.push(['⏎', 'submit']);\n const helpLine = theme.style.keysHelpTip(keys);\n const lines = [\n [prefix, message].filter(Boolean).join(' '),\n page,\n ' ',\n description ? theme.style.description(description) : '',\n errorMsg ? theme.style.error(errorMsg) : '',\n helpLine,\n ]\n .filter(Boolean)\n .join('\\n')\n .trimEnd();\n return `${lines}${cursorHide}`;\n});\nexport { Separator } from '@inquirer/core';\n","import { createPrompt, useState, useKeypress, isEnterKey, isTabKey, usePrefix, makeTheme, } from '@inquirer/core';\nfunction getBooleanValue(value, defaultValue) {\n let answer = defaultValue !== false;\n if (/^(y|yes)/i.test(value))\n answer = true;\n else if (/^(n|no)/i.test(value))\n answer = false;\n return answer;\n}\nfunction boolToString(value) {\n return value ? 'Yes' : 'No';\n}\nexport default createPrompt((config, done) => {\n const { transformer = boolToString } = config;\n const [status, setStatus] = useState('idle');\n const [value, setValue] = useState('');\n const theme = makeTheme(config.theme);\n const prefix = usePrefix({ status, theme });\n useKeypress((key, rl) => {\n if (status !== 'idle')\n return;\n if (isEnterKey(key)) {\n const answer = getBooleanValue(value, config.default);\n setValue(transformer(answer));\n setStatus('done');\n done(answer);\n }\n else if (isTabKey(key)) {\n const answer = boolToString(!getBooleanValue(value, config.default));\n rl.clearLine(0); // Remove the tab character.\n rl.write(answer);\n setValue(answer);\n }\n else {\n setValue(rl.line);\n }\n });\n let formattedValue = value;\n let defaultValue = '';\n if (status === 'done') {\n formattedValue = theme.style.answer(value);\n }\n else {\n defaultValue = ` ${theme.style.defaultAnswer(config.default === false ? 'y/N' : 'Y/n')}`;\n }\n const message = theme.style.message(config.message, status);\n return `${prefix} ${message}${defaultValue} ${formattedValue}`;\n});\n","import { createPrompt, useState, useKeypress, usePrefix, usePagination, useRef, useMemo, useEffect, isBackspaceKey, isEnterKey, isUpKey, isDownKey, isNumberKey, Separator, ValidationError, makeTheme, } from '@inquirer/core';\nimport { cursorHide } from '@inquirer/ansi';\nimport { styleText } from 'node:util';\nimport figures from '@inquirer/figures';\nconst selectTheme = {\n icon: { cursor: figures.pointer },\n style: {\n disabled: (text) => styleText('dim', text),\n description: (text) => styleText('cyan', text),\n keysHelpTip: (keys) => keys\n .map(([key, action]) => `${styleText('bold', key)} ${styleText('dim', action)}`)\n .join(styleText('dim', ' • ')),\n },\n i18n: { disabledError: 'This option is disabled and cannot be selected.' },\n indexMode: 'hidden',\n keybindings: [],\n};\nfunction isSelectable(item) {\n return !Separator.isSeparator(item) && !item.disabled;\n}\nfunction isNavigable(item) {\n return !Separator.isSeparator(item);\n}\nfunction normalizeChoices(choices) {\n return choices.map((choice) => {\n if (Separator.isSeparator(choice))\n return choice;\n if (typeof choice !== 'object' || choice === null || !('value' in choice)) {\n // It's a raw value (string, number, etc.)\n const name = String(choice);\n return {\n value: choice,\n name,\n short: name,\n disabled: false,\n };\n }\n const name = choice.name ?? String(choice.value);\n const normalizedChoice = {\n value: choice.value,\n name,\n short: choice.short ?? name,\n disabled: choice.disabled ?? false,\n };\n if (choice.description) {\n normalizedChoice.description = choice.description;\n }\n return normalizedChoice;\n });\n}\nexport default createPrompt((config, done) => {\n const { loop = true, pageSize = 7 } = config;\n const theme = makeTheme(selectTheme, config.theme);\n const { keybindings } = theme;\n const [status, setStatus] = useState('idle');\n const prefix = usePrefix({ status, theme });\n const searchTimeoutRef = useRef();\n // Vim keybindings (j/k) conflict with typing those letters in search,\n // so search must be disabled when vim bindings are enabled\n const searchEnabled = !keybindings.includes('vim');\n const items = useMemo(() => normalizeChoices(config.choices), [config.choices]);\n const bounds = useMemo(() => {\n const first = items.findIndex(isNavigable);\n const last = items.findLastIndex(isNavigable);\n if (first === -1) {\n throw new ValidationError('[select prompt] No selectable choices. All choices are disabled.');\n }\n return { first, last };\n }, [items]);\n const defaultItemIndex = useMemo(() => {\n if (!('default' in config))\n return -1;\n return items.findIndex((item) => isSelectable(item) && item.value === config.default);\n }, [config.default, items]);\n const [active, setActive] = useState(defaultItemIndex === -1 ? bounds.first : defaultItemIndex);\n // Safe to assume the cursor position always point to a Choice.\n const selectedChoice = items[active];\n const [errorMsg, setError] = useState();\n useKeypress((key, rl) => {\n clearTimeout(searchTimeoutRef.current);\n if (errorMsg) {\n setError(undefined);\n }\n if (isEnterKey(key)) {\n if (selectedChoice.disabled) {\n setError(theme.i18n.disabledError);\n }\n else {\n setStatus('done');\n done(selectedChoice.value);\n }\n }\n else if (isUpKey(key, keybindings) || isDownKey(key, keybindings)) {\n rl.clearLine(0);\n if (loop ||\n (isUpKey(key, keybindings) && active !== bounds.first) ||\n (isDownKey(key, keybindings) && active !== bounds.last)) {\n const offset = isUpKey(key, keybindings) ? -1 : 1;\n let next = active;\n do {\n next = (next + offset + items.length) % items.length;\n } while (!isNavigable(items[next]));\n setActive(next);\n }\n }\n else if (isNumberKey(key) && !Number.isNaN(Number(rl.line))) {\n const selectedIndex = Number(rl.line) - 1;\n // Find the nth item (ignoring separators)\n let selectableIndex = -1;\n const position = items.findIndex((item) => {\n if (Separator.isSeparator(item))\n return false;\n selectableIndex++;\n return selectableIndex === selectedIndex;\n });\n const item = items[position];\n if (item != null && isSelectable(item)) {\n setActive(position);\n }\n searchTimeoutRef.current = setTimeout(() => {\n rl.clearLine(0);\n }, 700);\n }\n else if (isBackspaceKey(key)) {\n rl.clearLine(0);\n }\n else if (searchEnabled) {\n const searchTerm = rl.line.toLowerCase();\n const matchIndex = items.findIndex((item) => {\n if (Separator.isSeparator(item) || !isSelectable(item))\n return false;\n return item.name.toLowerCase().startsWith(searchTerm);\n });\n if (matchIndex !== -1) {\n setActive(matchIndex);\n }\n searchTimeoutRef.current = setTimeout(() => {\n rl.clearLine(0);\n }, 700);\n }\n });\n useEffect(() => () => {\n clearTimeout(searchTimeoutRef.current);\n }, []);\n const message = theme.style.message(config.message, status);\n const helpLine = theme.style.keysHelpTip([\n ['↑↓', 'navigate'],\n ['⏎', 'select'],\n ]);\n let separatorCount = 0;\n const page = usePagination({\n items,\n active,\n renderItem({ item, isActive, index }) {\n if (Separator.isSeparator(item)) {\n separatorCount++;\n return ` ${item.separator}`;\n }\n const cursor = isActive ? theme.icon.cursor : ' ';\n const indexLabel = theme.indexMode === 'number' ? `${index + 1 - separatorCount}. ` : '';\n if (item.disabled) {\n const disabledLabel = typeof item.disabled === 'string' ? item.disabled : '(disabled)';\n const disabledCursor = isActive ? theme.icon.cursor : '-';\n return theme.style.disabled(`${disabledCursor} ${indexLabel}${item.name} ${disabledLabel}`);\n }\n const color = isActive ? theme.style.highlight : (x) => x;\n return color(`${cursor} ${indexLabel}${item.name}`);\n },\n pageSize,\n loop,\n });\n if (status === 'done') {\n return [prefix, message, theme.style.answer(selectedChoice.short)]\n .filter(Boolean)\n .join(' ');\n }\n const { description } = selectedChoice;\n const lines = [\n [prefix, message].filter(Boolean).join(' '),\n page,\n ' ',\n description ? theme.style.description(description) : '',\n errorMsg ? theme.style.error(errorMsg) : '',\n helpLine,\n ]\n .filter(Boolean)\n .join('\\n')\n .trimEnd();\n return `${lines}${cursorHide}`;\n});\nexport { Separator } from '@inquirer/core';\n","'use strict';\n\nfunction hasKey(obj, keys) {\n\tvar o = obj;\n\tkeys.slice(0, -1).forEach(function (key) {\n\t\to = o[key] || {};\n\t});\n\n\tvar key = keys[keys.length - 1];\n\treturn key in o;\n}\n\nfunction isNumber(x) {\n\tif (typeof x === 'number') { return true; }\n\tif ((/^0x[0-9a-f]+$/i).test(x)) { return true; }\n\treturn (/^[-+]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(e[-+]?\\d+)?$/).test(x);\n}\n\nfunction isConstructorOrProto(obj, key) {\n\treturn (key === 'constructor' && typeof obj[key] === 'function') || key === '__proto__';\n}\n\nmodule.exports = function (args, opts) {\n\tif (!opts) { opts = {}; }\n\n\tvar flags = {\n\t\tbools: {},\n\t\tstrings: {},\n\t\tunknownFn: null,\n\t};\n\n\tif (typeof opts.unknown === 'function') {\n\t\tflags.unknownFn = opts.unknown;\n\t}\n\n\tif (typeof opts.boolean === 'boolean' && opts.boolean) {\n\t\tflags.allBools = true;\n\t} else {\n\t\t[].concat(opts.boolean).filter(Boolean).forEach(function (key) {\n\t\t\tflags.bools[key] = true;\n\t\t});\n\t}\n\n\tvar aliases = {};\n\n\tfunction aliasIsBoolean(key) {\n\t\treturn aliases[key].some(function (x) {\n\t\t\treturn flags.bools[x];\n\t\t});\n\t}\n\n\tObject.keys(opts.alias || {}).forEach(function (key) {\n\t\taliases[key] = [].concat(opts.alias[key]);\n\t\taliases[key].forEach(function (x) {\n\t\t\taliases[x] = [key].concat(aliases[key].filter(function (y) {\n\t\t\t\treturn x !== y;\n\t\t\t}));\n\t\t});\n\t});\n\n\t[].concat(opts.string).filter(Boolean).forEach(function (key) {\n\t\tflags.strings[key] = true;\n\t\tif (aliases[key]) {\n\t\t\t[].concat(aliases[key]).forEach(function (k) {\n\t\t\t\tflags.strings[k] = true;\n\t\t\t});\n\t\t}\n\t});\n\n\tvar defaults = opts.default || {};\n\n\tvar argv = { _: [] };\n\n\tfunction argDefined(key, arg) {\n\t\treturn (flags.allBools && (/^--[^=]+$/).test(arg))\n\t\t\t|| flags.strings[key]\n\t\t\t|| flags.bools[key]\n\t\t\t|| aliases[key];\n\t}\n\n\tfunction setKey(obj, keys, value) {\n\t\tvar o = obj;\n\t\tfor (var i = 0; i < keys.length - 1; i++) {\n\t\t\tvar key = keys[i];\n\t\t\tif (isConstructorOrProto(o, key)) { return; }\n\t\t\tif (o[key] === undefined) { o[key] = {}; }\n\t\t\tif (\n\t\t\t\to[key] === Object.prototype\n\t\t\t\t|| o[key] === Number.prototype\n\t\t\t\t|| o[key] === String.prototype\n\t\t\t) {\n\t\t\t\to[key] = {};\n\t\t\t}\n\t\t\tif (o[key] === Array.prototype) { o[key] = []; }\n\t\t\to = o[key];\n\t\t}\n\n\t\tvar lastKey = keys[keys.length - 1];\n\t\tif (isConstructorOrProto(o, lastKey)) { return; }\n\t\tif (\n\t\t\to === Object.prototype\n\t\t\t|| o === Number.prototype\n\t\t\t|| o === String.prototype\n\t\t) {\n\t\t\to = {};\n\t\t}\n\t\tif (o === Array.prototype) { o = []; }\n\t\tif (o[lastKey] === undefined || flags.bools[lastKey] || typeof o[lastKey] === 'boolean') {\n\t\t\to[lastKey] = value;\n\t\t} else if (Array.isArray(o[lastKey])) {\n\t\t\to[lastKey].push(value);\n\t\t} else {\n\t\t\to[lastKey] = [o[lastKey], value];\n\t\t}\n\t}\n\n\tfunction setArg(key, val, arg) {\n\t\tif (arg && flags.unknownFn && !argDefined(key, arg)) {\n\t\t\tif (flags.unknownFn(arg) === false) { return; }\n\t\t}\n\n\t\tvar value = !flags.strings[key] && isNumber(val)\n\t\t\t? Number(val)\n\t\t\t: val;\n\t\tsetKey(argv, key.split('.'), value);\n\n\t\t(aliases[key] || []).forEach(function (x) {\n\t\t\tsetKey(argv, x.split('.'), value);\n\t\t});\n\t}\n\n\tObject.keys(flags.bools).forEach(function (key) {\n\t\tsetArg(key, defaults[key] === undefined ? false : defaults[key]);\n\t});\n\n\tvar notFlags = [];\n\n\tif (args.indexOf('--') !== -1) {\n\t\tnotFlags = args.slice(args.indexOf('--') + 1);\n\t\targs = args.slice(0, args.indexOf('--'));\n\t}\n\n\tfor (var i = 0; i < args.length; i++) {\n\t\tvar arg = args[i];\n\t\tvar key;\n\t\tvar next;\n\n\t\tif ((/^--.+=/).test(arg)) {\n\t\t\t// Using [\\s\\S] instead of . because js doesn't support the\n\t\t\t// 'dotall' regex modifier. See:\n\t\t\t// http://stackoverflow.com/a/1068308/13216\n\t\t\tvar m = arg.match(/^--([^=]+)=([\\s\\S]*)$/);\n\t\t\tkey = m[1];\n\t\t\tvar value = m[2];\n\t\t\tif (flags.bools[key]) {\n\t\t\t\tvalue = value !== 'false';\n\t\t\t}\n\t\t\tsetArg(key, value, arg);\n\t\t} else if ((/^--no-.+/).test(arg)) {\n\t\t\tkey = arg.match(/^--no-(.+)/)[1];\n\t\t\tsetArg(key, false, arg);\n\t\t} else if ((/^--.+/).test(arg)) {\n\t\t\tkey = arg.match(/^--(.+)/)[1];\n\t\t\tnext = args[i + 1];\n\t\t\tif (\n\t\t\t\tnext !== undefined\n\t\t\t\t&& !(/^(-|--)[^-]/).test(next)\n\t\t\t\t&& !flags.bools[key]\n\t\t\t\t&& !flags.allBools\n\t\t\t\t&& (aliases[key] ? !aliasIsBoolean(key) : true)\n\t\t\t) {\n\t\t\t\tsetArg(key, next, arg);\n\t\t\t\ti += 1;\n\t\t\t} else if ((/^(true|false)$/).test(next)) {\n\t\t\t\tsetArg(key, next === 'true', arg);\n\t\t\t\ti += 1;\n\t\t\t} else {\n\t\t\t\tsetArg(key, flags.strings[key] ? '' : true, arg);\n\t\t\t}\n\t\t} else if ((/^-[^-]+/).test(arg)) {\n\t\t\tvar letters = arg.slice(1, -1).split('');\n\n\t\t\tvar broken = false;\n\t\t\tfor (var j = 0; j < letters.length; j++) {\n\t\t\t\tnext = arg.slice(j + 2);\n\n\t\t\t\tif (next === '-') {\n\t\t\t\t\tsetArg(letters[j], next, arg);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif ((/[A-Za-z]/).test(letters[j]) && next[0] === '=') {\n\t\t\t\t\tsetArg(letters[j], next.slice(1), arg);\n\t\t\t\t\tbroken = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\t(/[A-Za-z]/).test(letters[j])\n\t\t\t\t\t&& (/-?\\d+(\\.\\d*)?(e-?\\d+)?$/).test(next)\n\t\t\t\t) {\n\t\t\t\t\tsetArg(letters[j], next, arg);\n\t\t\t\t\tbroken = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tif (letters[j + 1] && letters[j + 1].match(/\\W/)) {\n\t\t\t\t\tsetArg(letters[j], arg.slice(j + 2), arg);\n\t\t\t\t\tbroken = true;\n\t\t\t\t\tbreak;\n\t\t\t\t} else {\n\t\t\t\t\tsetArg(letters[j], flags.strings[letters[j]] ? '' : true, arg);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tkey = arg.slice(-1)[0];\n\t\t\tif (!broken && key !== '-') {\n\t\t\t\tif (\n\t\t\t\t\targs[i + 1]\n\t\t\t\t\t&& !(/^(-|--)[^-]/).test(args[i + 1])\n\t\t\t\t\t&& !flags.bools[key]\n\t\t\t\t\t&& (aliases[key] ? !aliasIsBoolean(key) : true)\n\t\t\t\t) {\n\t\t\t\t\tsetArg(key, args[i + 1], arg);\n\t\t\t\t\ti += 1;\n\t\t\t\t} else if (args[i + 1] && (/^(true|false)$/).test(args[i + 1])) {\n\t\t\t\t\tsetArg(key, args[i + 1] === 'true', arg);\n\t\t\t\t\ti += 1;\n\t\t\t\t} else {\n\t\t\t\t\tsetArg(key, flags.strings[key] ? '' : true, arg);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tif (!flags.unknownFn || flags.unknownFn(arg) !== false) {\n\t\t\t\targv._.push(flags.strings._ || !isNumber(arg) ? arg : Number(arg));\n\t\t\t}\n\t\t\tif (opts.stopEarly) {\n\t\t\t\targv._.push.apply(argv._, args.slice(i + 1));\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tObject.keys(defaults).forEach(function (k) {\n\t\tif (!hasKey(argv, k.split('.'))) {\n\t\t\tsetKey(argv, k.split('.'), defaults[k]);\n\n\t\t\t(aliases[k] || []).forEach(function (x) {\n\t\t\t\tsetKey(argv, x.split('.'), defaults[k]);\n\t\t\t});\n\t\t}\n\t});\n\n\tif (opts['--']) {\n\t\targv['--'] = notFlags.slice();\n\t} else {\n\t\tnotFlags.forEach(function (k) {\n\t\t\targv._.push(k);\n\t\t});\n\t}\n\n\treturn argv;\n};\n","/**\r\n * @maxsim/adapters — Shared base utilities extracted from bin/install.js\r\n */\r\n\r\nimport * as path from 'node:path';\r\nimport * as os from 'node:os';\r\nimport * as fs from 'node:fs';\r\n\r\n/**\r\n * Expand ~ to home directory (shell doesn't expand in env vars passed to node)\r\n */\r\nexport function expandTilde(filePath: string): string {\r\n if (filePath && filePath.startsWith('~/')) {\r\n return path.join(os.homedir(), filePath.slice(2));\r\n }\r\n return filePath;\r\n}\r\n\r\n/**\r\n * Extract YAML frontmatter and body from markdown content.\r\n * Returns null frontmatter if content doesn't start with ---.\r\n */\r\nexport function extractFrontmatterAndBody(\r\n content: string,\r\n): { frontmatter: string | null; body: string } {\r\n if (!content.startsWith('---')) {\r\n return { frontmatter: null, body: content };\r\n }\r\n\r\n const endIndex = content.indexOf('---', 3);\r\n if (endIndex === -1) {\r\n return { frontmatter: null, body: content };\r\n }\r\n\r\n return {\r\n frontmatter: content.substring(3, endIndex).trim(),\r\n body: content.substring(endIndex + 3),\r\n };\r\n}\r\n\r\n/**\r\n * Process Co-Authored-By lines based on attribution setting.\r\n * @param content - File content to process\r\n * @param attribution - null=remove, undefined=keep default, string=replace\r\n */\r\nexport function processAttribution(\r\n content: string,\r\n attribution: null | undefined | string,\r\n): string {\r\n if (attribution === null) {\r\n return content.replace(/(\\r?\\n){2}Co-Authored-By:.*$/gim, '');\r\n }\r\n if (attribution === undefined) {\r\n return content;\r\n }\r\n const safeAttribution = attribution.replace(/\\$/g, '$$$$');\r\n return content.replace(\r\n /Co-Authored-By:.*$/gim,\r\n `Co-Authored-By: ${safeAttribution}`,\r\n );\r\n}\r\n\r\n/**\r\n * Build a hook command path using forward slashes for cross-platform compatibility.\r\n */\r\nexport function buildHookCommand(configDir: string, hookName: string): string {\r\n const hooksPath = configDir.replace(/\\\\/g, '/') + '/hooks/' + hookName;\r\n return `node \"${hooksPath}\"`;\r\n}\r\n\r\n/**\r\n * Read and parse settings.json, returning empty object if it doesn't exist.\r\n */\r\nexport function readSettings(\r\n settingsPath: string,\r\n): Record {\r\n if (fs.existsSync(settingsPath)) {\r\n try {\r\n return JSON.parse(fs.readFileSync(settingsPath, 'utf8'));\r\n } catch {\r\n return {};\r\n }\r\n }\r\n return {};\r\n}\r\n\r\n/**\r\n * Write settings.json with proper formatting.\r\n */\r\nexport function writeSettings(\r\n settingsPath: string,\r\n settings: Record,\r\n): void {\r\n fs.writeFileSync(settingsPath, JSON.stringify(settings, null, 2) + '\\n');\r\n}\r\n","/**\r\n * @maxsim/adapters — Claude Code adapter\r\n *\r\n * Ports the Claude-specific logic from bin/install.js:\r\n * - getGlobalDir('claude', ...) (lines 135-142)\r\n * - getDirName('claude') (line 49)\r\n * - getConfigDirFromHome('claude', isGlobal) (lines 58-72)\r\n * - copyWithPathReplacement for Claude (lines 839-892)\r\n */\r\n\r\nimport * as path from 'node:path';\r\nimport * as os from 'node:os';\r\nimport type { AdapterConfig } from '../core/index.js';\r\nimport { expandTilde } from './base.js';\r\n\r\n/**\r\n * Get the global config directory for Claude Code.\r\n * Priority: explicitDir > CLAUDE_CONFIG_DIR env > ~/.claude\r\n */\r\nfunction getGlobalDir(explicitDir?: string | null): string {\r\n if (explicitDir) {\r\n return expandTilde(explicitDir);\r\n }\r\n if (process.env.CLAUDE_CONFIG_DIR) {\r\n return expandTilde(process.env.CLAUDE_CONFIG_DIR);\r\n }\r\n return path.join(os.homedir(), '.claude');\r\n}\r\n\r\n/**\r\n * Get the config directory path relative to home for hook templating.\r\n * Used for path.join(homeDir, '', ...) replacement in hooks.\r\n */\r\nfunction getConfigDirFromHome(isGlobal: boolean): string {\r\n // Both global and local use '.claude' for Claude Code\r\n return \"'.claude'\";\r\n}\r\n\r\n/**\r\n * Transform markdown content for Claude Code installation.\r\n * For Claude, this is path replacement only — no frontmatter conversion needed.\r\n * Replaces ~/.claude/ and ./.claude/ references with the actual install path prefix.\r\n */\r\nfunction transformContent(content: string, pathPrefix: string): string {\r\n const globalClaudeRegex = /~\\/\\.claude\\//g;\r\n const localClaudeRegex = /\\.\\/\\.claude\\//g;\r\n let result = content.replace(globalClaudeRegex, pathPrefix);\r\n result = result.replace(localClaudeRegex, `./.claude/`);\r\n return result;\r\n}\r\n\r\n/**\r\n * Claude Code adapter configuration.\r\n * Claude uses nested command structure (commands/maxsim/*.md).\r\n */\r\nexport const claudeAdapter: AdapterConfig = {\r\n runtime: 'claude',\r\n dirName: '.claude',\r\n getGlobalDir,\r\n getConfigDirFromHome,\r\n transformContent,\r\n commandStructure: 'nested',\r\n};\r\n\r\n/**\r\n * Install Claude Code adapter files.\r\n * Stub — actual install orchestration will be implemented in Phase 5.\r\n */\r\nexport function installClaude(): void {\r\n // Phase 5 will implement the full install orchestration.\r\n // The adapter exposes this function per CONTEXT.md decision.\r\n throw new Error('installClaude() not yet implemented — see Phase 5');\r\n}\r\n","/**\r\n * @maxsim/adapters — Tool name mappings per runtime\r\n *\r\n * Ported from bin/install.js lines ~327-390\r\n */\r\n\r\n/** Tool name mapping from Claude Code to OpenCode */\r\nconst claudeToOpencodeTools: Record = {\r\n AskUserQuestion: 'question',\r\n SlashCommand: 'skill',\r\n TodoWrite: 'todowrite',\r\n WebFetch: 'webfetch',\r\n WebSearch: 'websearch',\r\n};\r\n\r\n/** Tool name mapping from Claude Code to Gemini CLI */\r\nconst claudeToGeminiTools: Record = {\r\n Read: 'read_file',\r\n Write: 'write_file',\r\n Edit: 'replace',\r\n Bash: 'run_shell_command',\r\n Glob: 'glob',\r\n Grep: 'search_file_content',\r\n WebSearch: 'google_web_search',\r\n WebFetch: 'web_fetch',\r\n TodoWrite: 'write_todos',\r\n AskUserQuestion: 'ask_user',\r\n};\r\n\r\n/**\r\n * Convert a Claude Code tool name to OpenCode format.\r\n * - Applies special mappings (AskUserQuestion -> question, etc.)\r\n * - Converts to lowercase (except MCP tools which keep their format)\r\n */\r\nexport function convertToolName(claudeTool: string): string {\r\n if (claudeToOpencodeTools[claudeTool]) {\r\n return claudeToOpencodeTools[claudeTool];\r\n }\r\n if (claudeTool.startsWith('mcp__')) {\r\n return claudeTool;\r\n }\r\n return claudeTool.toLowerCase();\r\n}\r\n\r\n/**\r\n * Convert a Claude Code tool name to Gemini CLI format.\r\n * - Applies Claude->Gemini mapping (Read->read_file, Bash->run_shell_command, etc.)\r\n * - Filters out MCP tools (mcp__*) -- auto-discovered at runtime in Gemini\r\n * - Filters out Task -- agents are auto-registered as tools in Gemini\r\n * @returns Gemini tool name, or null if tool should be excluded\r\n */\r\nexport function convertGeminiToolName(claudeTool: string): string | null {\r\n if (claudeTool.startsWith('mcp__')) {\r\n return null;\r\n }\r\n if (claudeTool === 'Task') {\r\n return null;\r\n }\r\n if (claudeToGeminiTools[claudeTool]) {\r\n return claudeToGeminiTools[claudeTool];\r\n }\r\n return claudeTool.toLowerCase();\r\n}\r\n","/**\r\n * @maxsim/adapters — Content transformation utilities\r\n *\r\n * Ported from bin/install.js lines ~423-564\r\n */\r\n\r\nimport { convertGeminiToolName } from './tool-maps.js';\r\n\r\n/**\r\n * Convert /maxsim:command-name to $maxsim-command-name for Codex skill mentions.\r\n * Ported from install.js line ~423\r\n */\r\nexport function convertSlashCommandsToCodexSkillMentions(content: string): string {\r\n let converted = content.replace(/\\/maxsim:([a-z0-9-]+)/gi, (_, commandName: string) => {\r\n return `$maxsim-${String(commandName).toLowerCase()}`;\r\n });\r\n converted = converted.replace(/\\/maxsim-help\\b/g, '$maxsim-help');\r\n return converted;\r\n}\r\n\r\n/**\r\n * Convert Claude markdown to Codex markdown format.\r\n * Replaces slash commands and $ARGUMENTS placeholder.\r\n * Ported from install.js line ~431\r\n */\r\nexport function convertClaudeToCodexMarkdown(content: string): string {\r\n let converted = convertSlashCommandsToCodexSkillMentions(content);\r\n converted = converted.replace(/\\$ARGUMENTS\\b/g, '{{MAXSIM_ARGS}}');\r\n return converted;\r\n}\r\n\r\n/**\r\n * Strip HTML tags for Gemini CLI output.\r\n * Terminals don't support subscript -- converts text to italic *(text)*.\r\n * Ported from install.js line ~474\r\n */\r\nexport function stripSubTags(content: string): string {\r\n return content.replace(/(.*?)<\\/sub>/g, '*($1)*');\r\n}\r\n\r\n/**\r\n * Convert Claude Code agent frontmatter to Gemini CLI format.\r\n * - tools: must be a YAML array (not comma-separated string)\r\n * - tool names: must use Gemini built-in names (read_file, not Read)\r\n * - color: must be removed (causes validation error)\r\n * - mcp__* tools: must be excluded (auto-discovered at runtime)\r\n * - ${VAR} patterns: escaped to $VAR for Gemini template compatibility\r\n *\r\n * Ported from install.js line ~487\r\n */\r\nexport function convertClaudeToGeminiAgent(content: string): string {\r\n if (!content.startsWith('---')) return content;\r\n\r\n const endIndex = content.indexOf('---', 3);\r\n if (endIndex === -1) return content;\r\n\r\n const frontmatter = content.substring(3, endIndex).trim();\r\n const body = content.substring(endIndex + 3);\r\n\r\n const lines = frontmatter.split('\\n');\r\n const newLines: string[] = [];\r\n let inAllowedTools = false;\r\n const tools: string[] = [];\r\n\r\n for (const line of lines) {\r\n const trimmed = line.trim();\r\n\r\n if (trimmed.startsWith('allowed-tools:')) {\r\n inAllowedTools = true;\r\n continue;\r\n }\r\n\r\n if (trimmed.startsWith('tools:')) {\r\n const toolsValue = trimmed.substring(6).trim();\r\n if (toolsValue) {\r\n const parsed = toolsValue.split(',').map((t) => t.trim()).filter((t) => t);\r\n for (const t of parsed) {\r\n const mapped = convertGeminiToolName(t);\r\n if (mapped) tools.push(mapped);\r\n }\r\n } else {\r\n inAllowedTools = true;\r\n }\r\n continue;\r\n }\r\n\r\n if (trimmed.startsWith('color:')) continue;\r\n\r\n if (inAllowedTools) {\r\n if (trimmed.startsWith('- ')) {\r\n const mapped = convertGeminiToolName(trimmed.substring(2).trim());\r\n if (mapped) tools.push(mapped);\r\n continue;\r\n } else if (trimmed && !trimmed.startsWith('-')) {\r\n inAllowedTools = false;\r\n }\r\n }\r\n\r\n if (!inAllowedTools) {\r\n newLines.push(line);\r\n }\r\n }\r\n\r\n if (tools.length > 0) {\r\n newLines.push('tools:');\r\n for (const tool of tools) {\r\n newLines.push(` - ${tool}`);\r\n }\r\n }\r\n\r\n const newFrontmatter = newLines.join('\\n').trim();\r\n\r\n // Escape ${VAR} patterns in agent body for Gemini CLI compatibility.\r\n const escapedBody = body.replace(/\\$\\{(\\w+)\\}/g, '$$$1');\r\n\r\n return `---\\n${newFrontmatter}\\n---${stripSubTags(escapedBody)}`;\r\n}\r\n\r\n/**\r\n * Replace path references in markdown content for a target runtime.\r\n * Replaces ~/.claude/ with pathPrefix and ./.claude/ with ./dirName/.\r\n */\r\nexport function replacePathReferences(\r\n content: string,\r\n pathPrefix: string,\r\n dirName: string,\r\n): string {\r\n const globalClaudeRegex = /~\\/\\.claude\\//g;\r\n const localClaudeRegex = /\\.\\/\\.claude\\//g;\r\n let result = content.replace(globalClaudeRegex, pathPrefix);\r\n result = result.replace(localClaudeRegex, `./${dirName}/`);\r\n return result;\r\n}\r\n","/**\r\n * @maxsim/adapters — Frontmatter conversion functions for opencode, gemini, codex\r\n *\r\n * Ported from bin/install.js lines ~308-711\r\n */\r\n\r\nimport { extractFrontmatterAndBody } from '../base.js';\r\nimport { convertToolName } from './tool-maps.js';\r\nimport { convertClaudeToCodexMarkdown } from './content.js';\r\n\r\n/** Color name to hex mapping for opencode compatibility */\r\nexport const colorNameToHex: Record = {\r\n cyan: '#00FFFF',\r\n red: '#FF0000',\r\n green: '#00FF00',\r\n blue: '#0000FF',\r\n yellow: '#FFFF00',\r\n magenta: '#FF00FF',\r\n orange: '#FFA500',\r\n purple: '#800080',\r\n pink: '#FFC0CB',\r\n white: '#FFFFFF',\r\n black: '#000000',\r\n gray: '#808080',\r\n grey: '#808080',\r\n};\r\n\r\n/** Collapse whitespace to single line */\r\nexport function toSingleLine(value: string): string {\r\n return value.replace(/\\s+/g, ' ').trim();\r\n}\r\n\r\n/** Quote a value for YAML using JSON.stringify */\r\nexport function yamlQuote(value: string): string {\r\n return JSON.stringify(value);\r\n}\r\n\r\n/** Extract a single-line field value from YAML frontmatter text */\r\nexport function extractFrontmatterField(\r\n frontmatter: string,\r\n fieldName: string,\r\n): string | null {\r\n const regex = new RegExp(`^${fieldName}:\\\\s*(.+)$`, 'm');\r\n const match = frontmatter.match(regex);\r\n if (!match) return null;\r\n return match[1].trim().replace(/^['\"]|['\"]$/g, '');\r\n}\r\n\r\n/**\r\n * Convert Claude Code frontmatter to OpenCode format.\r\n * - Converts 'allowed-tools:' array to 'tools:' object with tool: true entries\r\n * - Converts color names to hex\r\n * - Removes name: field (opencode uses filename)\r\n * - Replaces tool name references in body content\r\n * - Replaces /maxsim: with /maxsim- (flat command structure)\r\n * - Replaces ~/.claude with ~/.config/opencode\r\n * - Replaces subagent_type=\"general-purpose\" with \"general\"\r\n *\r\n * Ported from install.js line ~566\r\n */\r\nexport function convertClaudeToOpencodeFrontmatter(content: string): string {\r\n // Replace tool name references in content (applies to all files)\r\n let convertedContent = content;\r\n convertedContent = convertedContent.replace(/\\bAskUserQuestion\\b/g, 'question');\r\n convertedContent = convertedContent.replace(/\\bSlashCommand\\b/g, 'skill');\r\n convertedContent = convertedContent.replace(/\\bTodoWrite\\b/g, 'todowrite');\r\n convertedContent = convertedContent.replace(/\\/maxsim:/g, '/maxsim-');\r\n convertedContent = convertedContent.replace(/~\\/\\.claude\\b/g, '~/.config/opencode');\r\n convertedContent = convertedContent.replace(\r\n /subagent_type=\"general-purpose\"/g,\r\n 'subagent_type=\"general\"',\r\n );\r\n\r\n if (!convertedContent.startsWith('---')) {\r\n return convertedContent;\r\n }\r\n\r\n const endIndex = convertedContent.indexOf('---', 3);\r\n if (endIndex === -1) {\r\n return convertedContent;\r\n }\r\n\r\n const frontmatter = convertedContent.substring(3, endIndex).trim();\r\n const body = convertedContent.substring(endIndex + 3);\r\n\r\n const lines = frontmatter.split('\\n');\r\n const newLines: string[] = [];\r\n let inAllowedTools = false;\r\n const allowedTools: string[] = [];\r\n\r\n for (const line of lines) {\r\n const trimmed = line.trim();\r\n\r\n if (trimmed.startsWith('allowed-tools:')) {\r\n inAllowedTools = true;\r\n continue;\r\n }\r\n\r\n if (trimmed.startsWith('tools:')) {\r\n const toolsValue = trimmed.substring(6).trim();\r\n if (toolsValue) {\r\n const tools = toolsValue.split(',').map((t) => t.trim()).filter((t) => t);\r\n allowedTools.push(...tools);\r\n }\r\n continue;\r\n }\r\n\r\n if (trimmed.startsWith('name:')) {\r\n continue;\r\n }\r\n\r\n if (trimmed.startsWith('color:')) {\r\n const colorValue = trimmed.substring(6).trim().toLowerCase();\r\n const hexColor = colorNameToHex[colorValue];\r\n if (hexColor) {\r\n newLines.push(`color: \"${hexColor}\"`);\r\n } else if (colorValue.startsWith('#')) {\r\n if (/^#[0-9a-f]{3}$|^#[0-9a-f]{6}$/i.test(colorValue)) {\r\n newLines.push(line);\r\n }\r\n }\r\n continue;\r\n }\r\n\r\n if (inAllowedTools) {\r\n if (trimmed.startsWith('- ')) {\r\n allowedTools.push(trimmed.substring(2).trim());\r\n continue;\r\n } else if (trimmed && !trimmed.startsWith('-')) {\r\n inAllowedTools = false;\r\n }\r\n }\r\n\r\n if (!inAllowedTools) {\r\n newLines.push(line);\r\n }\r\n }\r\n\r\n if (allowedTools.length > 0) {\r\n newLines.push('tools:');\r\n for (const tool of allowedTools) {\r\n newLines.push(` ${convertToolName(tool)}: true`);\r\n }\r\n }\r\n\r\n const newFrontmatter = newLines.join('\\n').trim();\r\n return `---\\n${newFrontmatter}\\n---${body}`;\r\n}\r\n\r\n/**\r\n * Convert Claude Code markdown command to Gemini TOML format.\r\n * Ported from install.js line ~677\r\n */\r\nexport function convertClaudeToGeminiToml(content: string): string {\r\n if (!content.startsWith('---')) {\r\n return `prompt = ${JSON.stringify(content)}\\n`;\r\n }\r\n\r\n const endIndex = content.indexOf('---', 3);\r\n if (endIndex === -1) {\r\n return `prompt = ${JSON.stringify(content)}\\n`;\r\n }\r\n\r\n const frontmatter = content.substring(3, endIndex).trim();\r\n const body = content.substring(endIndex + 3).trim();\r\n\r\n let description = '';\r\n const lines = frontmatter.split('\\n');\r\n for (const line of lines) {\r\n const trimmed = line.trim();\r\n if (trimmed.startsWith('description:')) {\r\n description = trimmed.substring(12).trim();\r\n break;\r\n }\r\n }\r\n\r\n let toml = '';\r\n if (description) {\r\n toml += `description = ${JSON.stringify(description)}\\n`;\r\n }\r\n toml += `prompt = ${JSON.stringify(body)}\\n`;\r\n\r\n return toml;\r\n}\r\n\r\n/**\r\n * Convert Claude command to Codex skill format with adapter header.\r\n * Ported from install.js line ~452\r\n */\r\nexport function convertClaudeCommandToCodexSkill(\r\n content: string,\r\n skillName: string,\r\n): string {\r\n const converted = convertClaudeToCodexMarkdown(content);\r\n const { frontmatter, body } = extractFrontmatterAndBody(converted);\r\n let description = `Run MAXSIM workflow ${skillName}.`;\r\n if (frontmatter) {\r\n const maybeDescription = extractFrontmatterField(frontmatter, 'description');\r\n if (maybeDescription) {\r\n description = maybeDescription;\r\n }\r\n }\r\n description = toSingleLine(description);\r\n const shortDescription =\r\n description.length > 180 ? `${description.slice(0, 177)}...` : description;\r\n const adapter = getCodexSkillAdapterHeader(skillName);\r\n\r\n return `---\\nname: ${yamlQuote(skillName)}\\ndescription: ${yamlQuote(description)}\\nmetadata:\\n short-description: ${yamlQuote(shortDescription)}\\n---\\n\\n${adapter}\\n\\n${body.trimStart()}`;\r\n}\r\n\r\n/**\r\n * Generate the Codex skill adapter header block.\r\n * Ported from install.js line ~437\r\n */\r\nexport function getCodexSkillAdapterHeader(skillName: string): string {\r\n const invocation = `$${skillName}`;\r\n return `\r\nCodex skills-first mode:\r\n- This skill is invoked by mentioning \\`${invocation}\\`.\r\n- Treat all user text after \\`${invocation}\\` as \\`{{MAXSIM_ARGS}}\\`.\r\n- If no arguments are present, treat \\`{{MAXSIM_ARGS}}\\` as empty.\r\n\r\nLegacy orchestration compatibility:\r\n- Any \\`Task(...)\\` pattern in referenced workflow docs is legacy syntax.\r\n- Implement equivalent behavior with Codex collaboration tools: \\`spawn_agent\\`, \\`wait\\`, \\`send_input\\`, and \\`close_agent\\`.\r\n- Treat legacy \\`subagent_type\\` names as role hints in the spawned message.\r\n`;\r\n}\r\n","/**\r\n * @maxsim/adapters — OpenCode adapter\r\n *\r\n * Ports the OpenCode-specific logic from bin/install.js:\r\n * - getOpencodeGlobalDir() (lines 79-97)\r\n * - getGlobalDir('opencode', ...) (lines 104-111)\r\n * - getDirName('opencode') (line 46)\r\n * - getConfigDirFromHome('opencode', isGlobal) (lines 58-68)\r\n * - convertClaudeToOpencodeFrontmatter + path replacement\r\n */\r\n\r\nimport * as path from 'node:path';\r\nimport * as os from 'node:os';\r\nimport type { AdapterConfig } from '../core/index.js';\r\nimport { expandTilde } from './base.js';\r\nimport { convertClaudeToOpencodeFrontmatter } from './transforms/frontmatter.js';\r\nimport { replacePathReferences } from './transforms/content.js';\r\n\r\n/**\r\n * Get the global config directory for OpenCode.\r\n * OpenCode follows XDG Base Directory spec and uses ~/.config/opencode/.\r\n * Priority: OPENCODE_CONFIG_DIR > dirname(OPENCODE_CONFIG) > XDG_CONFIG_HOME/opencode > ~/.config/opencode\r\n */\r\nfunction getOpencodeGlobalDir(): string {\r\n if (process.env.OPENCODE_CONFIG_DIR) {\r\n return expandTilde(process.env.OPENCODE_CONFIG_DIR);\r\n }\r\n if (process.env.OPENCODE_CONFIG) {\r\n return path.dirname(expandTilde(process.env.OPENCODE_CONFIG));\r\n }\r\n if (process.env.XDG_CONFIG_HOME) {\r\n return path.join(expandTilde(process.env.XDG_CONFIG_HOME), 'opencode');\r\n }\r\n return path.join(os.homedir(), '.config', 'opencode');\r\n}\r\n\r\n/**\r\n * Get the global config directory for OpenCode.\r\n * Priority: explicitDir > env vars (via getOpencodeGlobalDir)\r\n */\r\nfunction getGlobalDir(explicitDir?: string | null): string {\r\n if (explicitDir) {\r\n return expandTilde(explicitDir);\r\n }\r\n return getOpencodeGlobalDir();\r\n}\r\n\r\n/**\r\n * Get the config directory path relative to home for hook templating.\r\n */\r\nfunction getConfigDirFromHome(isGlobal: boolean): string {\r\n if (!isGlobal) {\r\n return \"'.opencode'\";\r\n }\r\n return \"'.config', 'opencode'\";\r\n}\r\n\r\n/**\r\n * Transform markdown content for OpenCode installation.\r\n * Applies frontmatter conversion and path replacement.\r\n */\r\nfunction transformContent(content: string, pathPrefix: string): string {\r\n let result = replacePathReferences(content, pathPrefix, '.opencode');\r\n // Also replace ~/.opencode/ references\r\n result = result.replace(/~\\/\\.opencode\\//g, pathPrefix);\r\n result = convertClaudeToOpencodeFrontmatter(result);\r\n return result;\r\n}\r\n\r\n/**\r\n * OpenCode adapter configuration.\r\n * OpenCode uses flat command structure (command/maxsim-*.md).\r\n */\r\nexport const opencodeAdapter: AdapterConfig = {\r\n runtime: 'opencode',\r\n dirName: '.opencode',\r\n getGlobalDir,\r\n getConfigDirFromHome,\r\n transformContent,\r\n commandStructure: 'flat',\r\n};\r\n","/**\r\n * @maxsim/adapters — Gemini adapter\r\n *\r\n * Ports the Gemini-specific logic from bin/install.js:\r\n * - getGlobalDir('gemini', ...) (lines 113-122)\r\n * - getDirName('gemini') (line 47)\r\n * - getConfigDirFromHome('gemini', isGlobal) (line 69)\r\n * - convertClaudeToGeminiToml + convertClaudeToGeminiAgent + stripSubTags\r\n */\r\n\r\nimport * as path from 'node:path';\r\nimport * as os from 'node:os';\r\nimport type { AdapterConfig } from '../core/index.js';\r\nimport { expandTilde } from './base.js';\r\nimport { convertClaudeToGeminiToml } from './transforms/frontmatter.js';\r\nimport {\r\n convertClaudeToGeminiAgent,\r\n stripSubTags,\r\n replacePathReferences,\r\n} from './transforms/content.js';\r\n\r\n/**\r\n * Get the global config directory for Gemini.\r\n * Priority: explicitDir > GEMINI_CONFIG_DIR env > ~/.gemini\r\n */\r\nfunction getGlobalDir(explicitDir?: string | null): string {\r\n if (explicitDir) {\r\n return expandTilde(explicitDir);\r\n }\r\n if (process.env.GEMINI_CONFIG_DIR) {\r\n return expandTilde(process.env.GEMINI_CONFIG_DIR);\r\n }\r\n return path.join(os.homedir(), '.gemini');\r\n}\r\n\r\n/**\r\n * Get the config directory path relative to home for hook templating.\r\n */\r\nfunction getConfigDirFromHome(_isGlobal: boolean): string {\r\n return \"'.gemini'\";\r\n}\r\n\r\n/**\r\n * Transform markdown content for Gemini installation.\r\n * Applies TOML conversion for commands, agent conversion for agents,\r\n * stripSubTags, and path replacement.\r\n */\r\nfunction transformContent(content: string, pathPrefix: string): string {\r\n let result = replacePathReferences(content, pathPrefix, '.gemini');\r\n result = stripSubTags(result);\r\n result = convertClaudeToGeminiToml(result);\r\n return result;\r\n}\r\n\r\n/**\r\n * Gemini adapter configuration.\r\n * Gemini uses nested command structure (commands/maxsim/*.toml).\r\n */\r\nexport const geminiAdapter: AdapterConfig = {\r\n runtime: 'gemini',\r\n dirName: '.gemini',\r\n getGlobalDir,\r\n getConfigDirFromHome,\r\n transformContent,\r\n commandStructure: 'nested',\r\n};\r\n\r\n// Re-export Gemini-specific transforms for use by install orchestration\r\nexport { convertClaudeToGeminiToml, convertClaudeToGeminiAgent, stripSubTags };\r\n","/**\r\n * @maxsim/adapters — Codex adapter\r\n *\r\n * Ports the Codex-specific logic from bin/install.js:\r\n * - getGlobalDir('codex', ...) (lines 124-133)\r\n * - getDirName('codex') (line 48)\r\n * - getConfigDirFromHome('codex', isGlobal) (line 70)\r\n * - convertClaudeCommandToCodexSkill + convertClaudeToCodexMarkdown\r\n */\r\n\r\nimport * as path from 'node:path';\r\nimport * as os from 'node:os';\r\nimport type { AdapterConfig } from '../core/index.js';\r\nimport { expandTilde } from './base.js';\r\nimport { convertClaudeCommandToCodexSkill } from './transforms/frontmatter.js';\r\nimport {\r\n convertClaudeToCodexMarkdown,\r\n replacePathReferences,\r\n} from './transforms/content.js';\r\n\r\n/**\r\n * Get the global config directory for Codex.\r\n * Priority: explicitDir > CODEX_HOME env > ~/.codex\r\n */\r\nfunction getGlobalDir(explicitDir?: string | null): string {\r\n if (explicitDir) {\r\n return expandTilde(explicitDir);\r\n }\r\n if (process.env.CODEX_HOME) {\r\n return expandTilde(process.env.CODEX_HOME);\r\n }\r\n return path.join(os.homedir(), '.codex');\r\n}\r\n\r\n/**\r\n * Get the config directory path relative to home for hook templating.\r\n */\r\nfunction getConfigDirFromHome(_isGlobal: boolean): string {\r\n return \"'.codex'\";\r\n}\r\n\r\n/**\r\n * Transform markdown content for Codex installation.\r\n * Applies Codex markdown conversion and path replacement.\r\n */\r\nfunction transformContent(content: string, pathPrefix: string): string {\r\n let result = replacePathReferences(content, pathPrefix, '.codex');\r\n result = result.replace(/~\\/\\.codex\\//g, pathPrefix);\r\n result = convertClaudeCommandToCodexSkill(result);\r\n return result;\r\n}\r\n\r\n/**\r\n * Codex adapter configuration.\r\n * Codex uses skill-based command structure (skills/maxsim-star/SKILL.md).\r\n */\r\nexport const codexAdapter: AdapterConfig = {\r\n runtime: 'codex',\r\n dirName: '.codex',\r\n getGlobalDir,\r\n getConfigDirFromHome,\r\n transformContent,\r\n commandStructure: 'skills',\r\n};\r\n\r\n// Re-export Codex-specific transforms for use by install orchestration\r\nexport { convertClaudeCommandToCodexSkill, convertClaudeToCodexMarkdown };\r\n","import * as fs from 'node:fs';\r\nimport * as path from 'node:path';\r\nimport fsExtra from 'fs-extra';\r\n\r\nimport type { RuntimeName, AdapterConfig } from '../adapters/index.js';\r\nimport {\r\n claudeAdapter,\r\n opencodeAdapter,\r\n geminiAdapter,\r\n codexAdapter,\r\n} from '../adapters/index.js';\r\n\r\n// Get version from package.json — read at runtime so semantic-release's version bump\r\n// is reflected without needing to rebuild dist/install.cjs after the version bump.\r\nexport const pkg = JSON.parse(fs.readFileSync(path.resolve(__dirname, '..', 'package.json'), 'utf-8')) as { version: string };\r\n\r\n// Resolve template asset root — bundled into dist/assets/templates at publish time\r\nexport const templatesRoot = path.resolve(__dirname, 'assets', 'templates');\r\n\r\n/**\r\n * Adapter registry keyed by runtime name\r\n */\r\nconst adapterMap: Record = {\r\n claude: claudeAdapter,\r\n opencode: opencodeAdapter,\r\n gemini: geminiAdapter,\r\n codex: codexAdapter,\r\n};\r\n\r\n/**\r\n * Get adapter for a runtime\r\n */\r\nexport function getAdapter(runtime: RuntimeName): AdapterConfig {\r\n return adapterMap[runtime];\r\n}\r\n\r\n/**\r\n * Get the global config directory for a runtime, using adapter\r\n */\r\nexport function getGlobalDir(runtime: RuntimeName, explicitDir: string | null = null): string {\r\n return getAdapter(runtime).getGlobalDir(explicitDir);\r\n}\r\n\r\n/**\r\n * Get the config directory path relative to home for hook templating\r\n */\r\nexport function getConfigDirFromHome(runtime: RuntimeName, isGlobal: boolean): string {\r\n return getAdapter(runtime).getConfigDirFromHome(isGlobal);\r\n}\r\n\r\n/**\r\n * Get the local directory name for a runtime\r\n */\r\nexport function getDirName(runtime: RuntimeName): string {\r\n return getAdapter(runtime).dirName;\r\n}\r\n\r\n/**\r\n * Recursively remove a directory, handling Windows read-only file attributes.\r\n * fs-extra handles cross-platform edge cases (EPERM on Windows, symlinks, etc.)\r\n */\r\nexport function safeRmDir(dirPath: string): void {\r\n fsExtra.removeSync(dirPath);\r\n}\r\n\r\n/**\r\n * Recursively copy a directory (dereferences symlinks)\r\n */\r\nexport function copyDirRecursive(src: string, dest: string): void {\r\n fsExtra.copySync(src, dest, { dereference: true });\r\n}\r\n\r\n/**\r\n * Get the global config directory for OpenCode (for JSONC permissions)\r\n * OpenCode follows XDG Base Directory spec\r\n */\r\nexport function getOpencodeGlobalDir(): string {\r\n return opencodeAdapter.getGlobalDir();\r\n}\r\n\r\n/**\r\n * Verify a directory exists and contains files\r\n */\r\nexport function verifyInstalled(dirPath: string, description: string): boolean {\r\n if (!fs.existsSync(dirPath)) {\r\n console.error(\r\n ` \\u2717 Failed to install ${description}: directory not created`,\r\n );\r\n return false;\r\n }\r\n try {\r\n const entries = fs.readdirSync(dirPath);\r\n if (entries.length === 0) {\r\n console.error(\r\n ` \\u2717 Failed to install ${description}: directory is empty`,\r\n );\r\n return false;\r\n }\r\n } catch (e: unknown) {\r\n console.error(\r\n ` \\u2717 Failed to install ${description}: ${(e as Error).message}`,\r\n );\r\n return false;\r\n }\r\n return true;\r\n}\r\n\r\n/**\r\n * Verify a file exists\r\n */\r\nexport function verifyFileInstalled(filePath: string, description: string): boolean {\r\n if (!fs.existsSync(filePath)) {\r\n console.error(\r\n ` \\u2717 Failed to install ${description}: file not created`,\r\n );\r\n return false;\r\n }\r\n return true;\r\n}\r\n\r\nexport interface InstallResult {\r\n settingsPath: string | null;\r\n settings: Record | null;\r\n statuslineCommand: string | null;\r\n runtime: RuntimeName;\r\n}\r\n","import * as fs from 'node:fs';\r\nimport * as os from 'node:os';\r\nimport * as path from 'node:path';\r\n\r\nimport chalk from 'chalk';\r\n\r\nimport type { RuntimeName } from '../adapters/index.js';\r\nimport {\r\n readSettings,\r\n} from '../adapters/index.js';\r\nimport { getGlobalDir, getOpencodeGlobalDir } from './shared.js';\r\n\r\n// Cache for attribution settings (populated once per runtime during install)\r\nconst attributionCache = new Map();\r\n\r\n/**\r\n * Get commit attribution setting for a runtime\r\n * @returns null = remove, undefined = keep default, string = custom\r\n */\r\nexport function getCommitAttribution(runtime: RuntimeName, explicitConfigDir: string | null): null | undefined | string {\r\n if (attributionCache.has(runtime)) {\r\n return attributionCache.get(runtime);\r\n }\r\n\r\n let result: null | undefined | string;\r\n\r\n if (runtime === 'opencode') {\r\n const config = readSettings(\r\n path.join(getGlobalDir('opencode', null), 'opencode.json'),\r\n ) as Record;\r\n result =\r\n (config as { disable_ai_attribution?: boolean }).disable_ai_attribution === true\r\n ? null\r\n : undefined;\r\n } else if (runtime === 'gemini') {\r\n const settings = readSettings(\r\n path.join(getGlobalDir('gemini', explicitConfigDir), 'settings.json'),\r\n ) as Record;\r\n const attr = settings.attribution as { commit?: string } | undefined;\r\n if (!attr || attr.commit === undefined) {\r\n result = undefined;\r\n } else if (attr.commit === '') {\r\n result = null;\r\n } else {\r\n result = attr.commit;\r\n }\r\n } else if (runtime === 'claude') {\r\n const settings = readSettings(\r\n path.join(getGlobalDir('claude', explicitConfigDir), 'settings.json'),\r\n ) as Record;\r\n const attr = settings.attribution as { commit?: string } | undefined;\r\n if (!attr || attr.commit === undefined) {\r\n result = undefined;\r\n } else if (attr.commit === '') {\r\n result = null;\r\n } else {\r\n result = attr.commit;\r\n }\r\n } else {\r\n result = undefined;\r\n }\r\n\r\n attributionCache.set(runtime, result);\r\n return result;\r\n}\r\n\r\n/**\r\n * Parse JSONC (JSON with Comments) by stripping comments and trailing commas.\r\n */\r\nexport function parseJsonc(content: string): Record {\r\n if (content.charCodeAt(0) === 0xfeff) {\r\n content = content.slice(1);\r\n }\r\n\r\n let result = '';\r\n let inString = false;\r\n let i = 0;\r\n while (i < content.length) {\r\n const char = content[i];\r\n const next = content[i + 1];\r\n\r\n if (inString) {\r\n result += char;\r\n if (char === '\\\\' && i + 1 < content.length) {\r\n result += next;\r\n i += 2;\r\n continue;\r\n }\r\n if (char === '\"') {\r\n inString = false;\r\n }\r\n i++;\r\n } else {\r\n if (char === '\"') {\r\n inString = true;\r\n result += char;\r\n i++;\r\n } else if (char === '/' && next === '/') {\r\n while (i < content.length && content[i] !== '\\n') {\r\n i++;\r\n }\r\n } else if (char === '/' && next === '*') {\r\n i += 2;\r\n while (\r\n i < content.length - 1 &&\r\n !(content[i] === '*' && content[i + 1] === '/')\r\n ) {\r\n i++;\r\n }\r\n i += 2;\r\n } else {\r\n result += char;\r\n i++;\r\n }\r\n }\r\n }\r\n\r\n result = result.replace(/,(\\s*[}\\]])/g, '$1');\r\n\r\n return JSON.parse(result) as Record;\r\n}\r\n\r\n/**\r\n * Configure OpenCode permissions to allow reading MAXSIM reference docs\r\n */\r\nexport function configureOpencodePermissions(isGlobal: boolean = true): void {\r\n const opencodeConfigDir = isGlobal\r\n ? getOpencodeGlobalDir()\r\n : path.join(process.cwd(), '.opencode');\r\n const configPath = path.join(opencodeConfigDir, 'opencode.json');\r\n\r\n fs.mkdirSync(opencodeConfigDir, { recursive: true });\r\n\r\n let config: Record = {};\r\n if (fs.existsSync(configPath)) {\r\n try {\r\n const content = fs.readFileSync(configPath, 'utf8');\r\n config = parseJsonc(content);\r\n } catch (e: unknown) {\r\n console.log(\r\n ` ${chalk.yellow('\\u26a0')} Could not parse opencode.json - skipping permission config`,\r\n );\r\n console.log(\r\n ` ${chalk.dim(`Reason: ${(e as Error).message}`)}`,\r\n );\r\n console.log(\r\n ` ${chalk.dim('Your config was NOT modified. Fix the syntax manually if needed.')}`,\r\n );\r\n return;\r\n }\r\n }\r\n\r\n type PermissionConfig = Record>;\r\n if (!config.permission) {\r\n config.permission = {} as PermissionConfig;\r\n }\r\n const permission = config.permission as PermissionConfig;\r\n\r\n const defaultConfigDir = path.join(os.homedir(), '.config', 'opencode');\r\n const maxsimPath =\r\n opencodeConfigDir === defaultConfigDir\r\n ? '~/.config/opencode/maxsim/*'\r\n : `${opencodeConfigDir.replace(/\\\\/g, '/')}/maxsim/*`;\r\n\r\n let modified = false;\r\n\r\n if (!permission.read || typeof permission.read !== 'object') {\r\n permission.read = {};\r\n }\r\n if (permission.read[maxsimPath] !== 'allow') {\r\n permission.read[maxsimPath] = 'allow';\r\n modified = true;\r\n }\r\n\r\n if (\r\n !permission.external_directory ||\r\n typeof permission.external_directory !== 'object'\r\n ) {\r\n permission.external_directory = {};\r\n }\r\n if (permission.external_directory[maxsimPath] !== 'allow') {\r\n permission.external_directory[maxsimPath] = 'allow';\r\n modified = true;\r\n }\r\n\r\n if (!modified) {\r\n return;\r\n }\r\n\r\n fs.writeFileSync(configPath, JSON.stringify(config, null, 2) + '\\n');\r\n console.log(\r\n ` ${chalk.green('\\u2713')} Configured read permission for MAXSIM docs`,\r\n );\r\n}\r\n","import * as fs from 'node:fs';\r\nimport * as path from 'node:path';\r\nimport * as os from 'node:os';\r\nimport { execSync as execSyncBase } from 'node:child_process';\r\n\r\nimport chalk from 'chalk';\r\n\r\nimport { safeRmDir, copyDirRecursive } from './shared.js';\r\n\r\n/** Check whether the current process is running with admin/root privileges. */\r\nexport function isElevated(): boolean {\r\n if (process.platform === 'win32') {\r\n try {\r\n execSyncBase('net session', { stdio: 'pipe' });\r\n return true;\r\n } catch {\r\n return false;\r\n }\r\n }\r\n // Linux / macOS: check if uid is 0\r\n return process.getuid?.() === 0;\r\n}\r\n\r\n/**\r\n * Add a firewall rule to allow inbound traffic on the given port.\r\n * Handles Windows (netsh), Linux (ufw / iptables), and macOS (no rule needed).\r\n */\r\nexport function applyFirewallRule(port: number): void {\r\n const platform = process.platform;\r\n try {\r\n if (platform === 'win32') {\r\n const cmd = `netsh advfirewall firewall add rule name=\"MAXSIM Dashboard\" dir=in action=allow protocol=TCP localport=${port}`;\r\n if (isElevated()) {\r\n execSyncBase(cmd, { stdio: 'pipe' });\r\n console.log(chalk.green(' \\u2713 Windows Firewall rule added for port ' + port));\r\n } else {\r\n // Trigger UAC elevation via PowerShell — this opens the Windows UAC dialog\r\n console.log(chalk.gray(' Requesting administrator privileges for firewall rule...'));\r\n const psCmd = `Start-Process cmd -ArgumentList '/c ${cmd}' -Verb RunAs -Wait`;\r\n execSyncBase(`powershell -NoProfile -Command \"${psCmd}\"`, { stdio: 'pipe' });\r\n console.log(chalk.green(' \\u2713 Windows Firewall rule added for port ' + port));\r\n }\r\n } else if (platform === 'linux') {\r\n const sudoPrefix = isElevated() ? '' : 'sudo ';\r\n try {\r\n execSyncBase(`${sudoPrefix}ufw allow ${port}/tcp`, { stdio: 'pipe' });\r\n console.log(chalk.green(' \\u2713 UFW rule added for port ' + port));\r\n } catch {\r\n try {\r\n execSyncBase(`${sudoPrefix}iptables -A INPUT -p tcp --dport ${port} -j ACCEPT`, { stdio: 'pipe' });\r\n console.log(chalk.green(' \\u2713 iptables rule added for port ' + port));\r\n } catch {\r\n console.log(chalk.yellow(` \\u26a0 Could not add firewall rule automatically. Run: sudo ufw allow ${port}/tcp`));\r\n }\r\n }\r\n } else if (platform === 'darwin') {\r\n // macOS does not block inbound connections by default — no rule needed\r\n console.log(chalk.gray(' macOS: No firewall rule needed (inbound connections are allowed by default)'));\r\n }\r\n } catch (err) {\r\n console.warn(chalk.yellow(` \\u26a0 Firewall rule failed: ${(err as Error).message}`));\r\n console.warn(chalk.gray(` You may need to manually allow port ${port} through your firewall.`));\r\n }\r\n}\r\n\r\n/**\r\n * Walk up from cwd to find the MAXSIM monorepo root (has packages/dashboard/src/server.ts)\r\n */\r\nexport function findMonorepoRoot(startDir: string): string | null {\r\n let dir = startDir;\r\n for (let i = 0; i < 10; i++) {\r\n if (fs.existsSync(path.join(dir, 'packages', 'dashboard', 'src', 'server.ts'))) {\r\n return dir;\r\n }\r\n const parent = path.dirname(dir);\r\n if (parent === dir) break;\r\n dir = parent;\r\n }\r\n return null;\r\n}\r\n\r\n/**\r\n * Handle the `dashboard` subcommand — refresh assets, install node-pty, launch server\r\n */\r\nexport async function runDashboardSubcommand(argv: Record): Promise {\r\n const { spawn: spawnDash, execSync: execSyncDash } = await import('node:child_process');\r\n\r\n // Always refresh dashboard from bundled assets before launching.\r\n const dashboardAssetSrc = path.resolve(__dirname, 'assets', 'dashboard');\r\n const installDir = path.join(process.cwd(), '.claude');\r\n const installDashDir = path.join(installDir, 'dashboard');\r\n\r\n if (fs.existsSync(dashboardAssetSrc)) {\r\n // Preserve node_modules (contains native addons like node-pty) across refreshes\r\n const nodeModulesDir = path.join(installDashDir, 'node_modules');\r\n const nodeModulesTmp = path.join(installDir, '_dashboard_node_modules_tmp');\r\n const hadNodeModules = fs.existsSync(nodeModulesDir);\r\n if (hadNodeModules) {\r\n fs.renameSync(nodeModulesDir, nodeModulesTmp);\r\n }\r\n\r\n // Clean existing dashboard dir to prevent stale files from old installs\r\n safeRmDir(installDashDir);\r\n fs.mkdirSync(installDashDir, { recursive: true });\r\n // Dashboard is now Vite+Express: server.js (self-contained) + client/ (static)\r\n copyDirRecursive(dashboardAssetSrc, installDashDir);\r\n\r\n // Restore node_modules if it was preserved\r\n if (hadNodeModules && fs.existsSync(nodeModulesTmp)) {\r\n fs.renameSync(nodeModulesTmp, nodeModulesDir);\r\n }\r\n\r\n // Write/update dashboard.json\r\n const dashConfigPath = path.join(installDir, 'dashboard.json');\r\n if (!fs.existsSync(dashConfigPath)) {\r\n fs.writeFileSync(dashConfigPath, JSON.stringify({ projectCwd: process.cwd() }, null, 2) + '\\n');\r\n }\r\n }\r\n\r\n // Resolve server path: local project first, then global\r\n const localDashboard = path.join(process.cwd(), '.claude', 'dashboard', 'server.js');\r\n const globalDashboard = path.join(os.homedir(), '.claude', 'dashboard', 'server.js');\r\n\r\n let serverPath: string | null = null;\r\n if (fs.existsSync(localDashboard)) {\r\n serverPath = localDashboard;\r\n } else if (fs.existsSync(globalDashboard)) {\r\n serverPath = globalDashboard;\r\n }\r\n\r\n if (!serverPath) {\r\n console.log(chalk.yellow('\\n Dashboard not available.\\n'));\r\n console.log(' Install MAXSIM first: ' + chalk.cyan('npx maxsimcli@latest') + '\\n');\r\n process.exit(0);\r\n }\r\n\r\n // --network flag overrides stored config (lets users enable network mode ad-hoc)\r\n const forceNetwork = !!argv['network'];\r\n\r\n // Read projectCwd from dashboard.json (one level up from dashboard/ dir)\r\n const dashboardDir = path.dirname(serverPath);\r\n const dashboardConfigPath = path.join(path.dirname(dashboardDir), 'dashboard.json');\r\n let projectCwd = process.cwd();\r\n let networkMode = forceNetwork;\r\n if (fs.existsSync(dashboardConfigPath)) {\r\n try {\r\n const config = JSON.parse(fs.readFileSync(dashboardConfigPath, 'utf8')) as { projectCwd?: string; networkMode?: boolean };\r\n if (config.projectCwd) {\r\n projectCwd = config.projectCwd;\r\n }\r\n if (!forceNetwork) {\r\n networkMode = config.networkMode ?? false;\r\n }\r\n } catch {\r\n // Use default cwd\r\n }\r\n }\r\n\r\n // node-pty is a native addon that cannot be bundled — auto-install if missing\r\n const dashDirForPty = path.dirname(serverPath);\r\n const ptyModulePath = path.join(dashDirForPty, 'node_modules', 'node-pty');\r\n if (!fs.existsSync(ptyModulePath)) {\r\n console.log(chalk.gray(' Installing node-pty for terminal support...'));\r\n try {\r\n // Ensure a package.json exists so npm install works in the dashboard dir\r\n const dashPkgPath = path.join(dashDirForPty, 'package.json');\r\n if (!fs.existsSync(dashPkgPath)) {\r\n fs.writeFileSync(dashPkgPath, '{\"private\":true}\\n');\r\n }\r\n execSyncDash('npm install node-pty --save-optional --no-audit --no-fund --loglevel=error', {\r\n cwd: dashDirForPty,\r\n stdio: 'inherit',\r\n timeout: 120_000,\r\n });\r\n } catch {\r\n console.warn(chalk.yellow(' node-pty installation failed — terminal will be unavailable.'));\r\n }\r\n }\r\n\r\n console.log(chalk.blue('Starting dashboard...'));\r\n console.log(chalk.gray(` Project: ${projectCwd}`));\r\n console.log(chalk.gray(` Server: ${serverPath}`));\r\n if (networkMode) {\r\n console.log(chalk.gray(' Network: enabled (local network access + QR code)'));\r\n }\r\n console.log('');\r\n\r\n // Use stdio: 'ignore' (fully detached) — a piped stderr causes the server to crash on\r\n // Windows when the read-end is closed after the parent reads the ready message (EPIPE).\r\n const child = spawnDash(process.execPath, [serverPath], {\r\n cwd: dashboardDir,\r\n detached: true,\r\n stdio: 'ignore',\r\n env: {\r\n ...process.env,\r\n MAXSIM_PROJECT_CWD: projectCwd,\r\n MAXSIM_NETWORK_MODE: networkMode ? '1' : '0',\r\n NODE_ENV: 'production',\r\n },\r\n });\r\n child.unref();\r\n\r\n // Poll /api/health until the server is ready (or 20s timeout).\r\n const POLL_INTERVAL_MS = 500;\r\n const POLL_TIMEOUT_MS = 20000;\r\n const HEALTH_TIMEOUT_MS = 1000;\r\n const DEFAULT_PORT = 3333;\r\n const PORT_RANGE_END = 3343;\r\n let foundUrl: string | null = null;\r\n const deadline = Date.now() + POLL_TIMEOUT_MS;\r\n\r\n while (Date.now() < deadline) {\r\n await new Promise(r => setTimeout(r, POLL_INTERVAL_MS));\r\n for (let p = DEFAULT_PORT; p <= PORT_RANGE_END; p++) {\r\n try {\r\n const controller = new AbortController();\r\n const timer = setTimeout(() => controller.abort(), HEALTH_TIMEOUT_MS);\r\n const res = await fetch(`http://localhost:${p}/api/health`, { signal: controller.signal });\r\n clearTimeout(timer);\r\n if (res.ok) {\r\n const data = await res.json() as { status?: string };\r\n if (data.status === 'ok') {\r\n foundUrl = `http://localhost:${p}`;\r\n break;\r\n }\r\n }\r\n } catch { /* not ready yet */ }\r\n }\r\n if (foundUrl) break;\r\n }\r\n\r\n if (foundUrl) {\r\n console.log(chalk.green(` Dashboard ready at ${foundUrl}`));\r\n } else {\r\n console.log(chalk.yellow('\\n Dashboard did not respond after 20s. The server may still be starting — check http://localhost:3333'));\r\n }\r\n process.exit(0);\r\n}\r\n","import * as fs from 'node:fs';\r\n\r\nimport chalk from 'chalk';\r\nimport { confirm } from '@inquirer/prompts';\r\n\r\nimport type { RuntimeName } from '../adapters/index.js';\r\nimport {\r\n readSettings,\r\n writeSettings,\r\n buildHookCommand,\r\n} from '../adapters/index.js';\r\nimport { configureOpencodePermissions } from './adapters.js';\r\nimport { getDirName, getConfigDirFromHome, verifyInstalled } from './shared.js';\r\nimport type { InstallResult } from './shared.js';\r\nimport * as path from 'node:path';\r\nimport ora from 'ora';\r\n\r\n/**\r\n * Clean up orphaned files from previous MAXSIM versions\r\n */\r\nexport function cleanupOrphanedFiles(configDir: string): void {\r\n const orphanedFiles = [\r\n 'hooks/maxsim-notify.sh',\r\n 'hooks/statusline.js',\r\n ];\r\n\r\n for (const relPath of orphanedFiles) {\r\n const fullPath = path.join(configDir, relPath);\r\n if (fs.existsSync(fullPath)) {\r\n fs.unlinkSync(fullPath);\r\n console.log(` ${chalk.green('\\u2713')} Removed orphaned ${relPath}`);\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * Clean up orphaned hook registrations from settings.json\r\n */\r\nexport function cleanupOrphanedHooks(\r\n settings: Record,\r\n): Record {\r\n const orphanedHookPatterns = [\r\n 'maxsim-notify.sh',\r\n 'hooks/statusline.js',\r\n 'maxsim-intel-index.js',\r\n 'maxsim-intel-session.js',\r\n 'maxsim-intel-prune.js',\r\n ];\r\n\r\n let cleanedHooks = false;\r\n\r\n interface HookEntry {\r\n hooks?: Array<{ command?: string }>;\r\n }\r\n\r\n const hooks = settings.hooks as Record | undefined;\r\n if (hooks) {\r\n for (const eventType of Object.keys(hooks)) {\r\n const hookEntries = hooks[eventType];\r\n if (Array.isArray(hookEntries)) {\r\n const filtered = hookEntries.filter((entry: HookEntry) => {\r\n if (entry.hooks && Array.isArray(entry.hooks)) {\r\n const hasOrphaned = entry.hooks.some(\r\n (h) =>\r\n h.command &&\r\n orphanedHookPatterns.some((pattern) =>\r\n h.command!.includes(pattern),\r\n ),\r\n );\r\n if (hasOrphaned) {\r\n cleanedHooks = true;\r\n return false;\r\n }\r\n }\r\n return true;\r\n });\r\n hooks[eventType] = filtered;\r\n }\r\n }\r\n }\r\n\r\n if (cleanedHooks) {\r\n console.log(\r\n ` ${chalk.green('\\u2713')} Removed orphaned hook registrations`,\r\n );\r\n }\r\n\r\n const statusLine = settings.statusLine as { command?: string } | undefined;\r\n if (\r\n statusLine &&\r\n statusLine.command &&\r\n statusLine.command.includes('statusline.js') &&\r\n !statusLine.command.includes('maxsim-statusline.js')\r\n ) {\r\n statusLine.command = statusLine.command.replace(\r\n /statusline\\.js/,\r\n 'maxsim-statusline.js',\r\n );\r\n console.log(\r\n ` ${chalk.green('\\u2713')} Updated statusline path (statusline.js \\u2192 maxsim-statusline.js)`,\r\n );\r\n }\r\n\r\n return settings;\r\n}\r\n\r\n/**\r\n * Install hook files and configure settings.json for a runtime\r\n */\r\nexport function installHookFiles(\r\n targetDir: string,\r\n runtime: RuntimeName,\r\n isGlobal: boolean,\r\n failures: string[],\r\n): void {\r\n const dirName = getDirName(runtime);\r\n const isCodex = runtime === 'codex';\r\n\r\n if (isCodex) return;\r\n\r\n // Copy hooks from bundled assets directory\r\n let hooksSrc: string | null = null;\r\n const bundledHooksDir = path.resolve(__dirname, 'assets', 'hooks');\r\n if (fs.existsSync(bundledHooksDir)) {\r\n hooksSrc = bundledHooksDir;\r\n } else {\r\n console.warn(` ${chalk.yellow('!')} bundled hooks not found - hooks will not be installed`);\r\n }\r\n\r\n if (hooksSrc) {\r\n const spinner = ora({ text: 'Installing hooks...', color: 'cyan' }).start();\r\n const hooksDest = path.join(targetDir, 'hooks');\r\n fs.mkdirSync(hooksDest, { recursive: true });\r\n const hookEntries = fs.readdirSync(hooksSrc);\r\n const configDirReplacement = getConfigDirFromHome(runtime, isGlobal);\r\n for (const entry of hookEntries) {\r\n const srcFile = path.join(hooksSrc, entry);\r\n if (fs.statSync(srcFile).isFile() && entry.endsWith('.cjs') && !entry.includes('.d.')) {\r\n const destName = entry.replace(/\\.cjs$/, '.js');\r\n const destFile = path.join(hooksDest, destName);\r\n let content = fs.readFileSync(srcFile, 'utf8');\r\n content = content.replace(/'\\.claude'/g, configDirReplacement);\r\n fs.writeFileSync(destFile, content);\r\n }\r\n }\r\n if (verifyInstalled(hooksDest, 'hooks')) {\r\n spinner.succeed(chalk.green('\\u2713') + ' Installed hooks (bundled)');\r\n } else {\r\n spinner.fail('Failed to install hooks');\r\n failures.push('hooks');\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * Configure hooks and statusline in settings.json\r\n */\r\nexport function configureSettingsHooks(\r\n targetDir: string,\r\n runtime: RuntimeName,\r\n isGlobal: boolean,\r\n): { settingsPath: string; settings: Record; statuslineCommand: string; updateCheckCommand: string; contextMonitorCommand: string } {\r\n const dirName = getDirName(runtime);\r\n const isOpencode = runtime === 'opencode';\r\n\r\n const settingsPath = path.join(targetDir, 'settings.json');\r\n const settings = cleanupOrphanedHooks(readSettings(settingsPath));\r\n const statuslineCommand = isGlobal\r\n ? buildHookCommand(targetDir, 'maxsim-statusline.js')\r\n : 'node ' + dirName + '/hooks/maxsim-statusline.js';\r\n const updateCheckCommand = isGlobal\r\n ? buildHookCommand(targetDir, 'maxsim-check-update.js')\r\n : 'node ' + dirName + '/hooks/maxsim-check-update.js';\r\n const contextMonitorCommand = isGlobal\r\n ? buildHookCommand(targetDir, 'maxsim-context-monitor.js')\r\n : 'node ' + dirName + '/hooks/maxsim-context-monitor.js';\r\n\r\n interface InstallHookEntry {\r\n hooks?: Array<{ type: string; command: string }>;\r\n }\r\n\r\n // Configure SessionStart hook for update checking (skip for opencode)\r\n if (!isOpencode) {\r\n if (!settings.hooks) {\r\n settings.hooks = {};\r\n }\r\n const installHooks = settings.hooks as Record;\r\n if (!installHooks.SessionStart) {\r\n installHooks.SessionStart = [];\r\n }\r\n\r\n const hasMaxsimUpdateHook = installHooks.SessionStart.some(\r\n (entry: InstallHookEntry) =>\r\n entry.hooks &&\r\n entry.hooks.some(\r\n (h) => h.command && h.command.includes('maxsim-check-update'),\r\n ),\r\n );\r\n\r\n if (!hasMaxsimUpdateHook) {\r\n installHooks.SessionStart.push({\r\n hooks: [\r\n {\r\n type: 'command',\r\n command: updateCheckCommand,\r\n },\r\n ],\r\n });\r\n console.log(\r\n ` ${chalk.green('\\u2713')} Configured update check hook`,\r\n );\r\n }\r\n\r\n // Configure PostToolUse hook for context window monitoring\r\n if (!installHooks.PostToolUse) {\r\n installHooks.PostToolUse = [];\r\n }\r\n\r\n const hasContextMonitorHook = installHooks.PostToolUse.some(\r\n (entry: InstallHookEntry) =>\r\n entry.hooks &&\r\n entry.hooks.some(\r\n (h) => h.command && h.command.includes('maxsim-context-monitor'),\r\n ),\r\n );\r\n\r\n if (!hasContextMonitorHook) {\r\n installHooks.PostToolUse.push({\r\n hooks: [\r\n {\r\n type: 'command',\r\n command: contextMonitorCommand,\r\n },\r\n ],\r\n });\r\n console.log(\r\n ` ${chalk.green('\\u2713')} Configured context window monitor hook`,\r\n );\r\n }\r\n }\r\n\r\n return { settingsPath, settings, statuslineCommand, updateCheckCommand, contextMonitorCommand };\r\n}\r\n\r\n/**\r\n * Handle statusline configuration — returns true if MAXSIM statusline should be installed\r\n */\r\nexport async function handleStatusline(\r\n settings: Record,\r\n isInteractive: boolean,\r\n forceStatusline: boolean,\r\n): Promise {\r\n const hasExisting = settings.statusLine != null;\r\n\r\n if (!hasExisting) return true;\r\n if (forceStatusline) return true;\r\n\r\n if (!isInteractive) {\r\n console.log(\r\n chalk.yellow('\\u26a0') + ' Skipping statusline (already configured)',\r\n );\r\n console.log(\r\n ' Use ' + chalk.cyan('--force-statusline') + ' to replace\\n',\r\n );\r\n return false;\r\n }\r\n\r\n const statusLine = settings.statusLine as { command?: string; url?: string };\r\n const existingCmd = statusLine.command || statusLine.url || '(custom)';\r\n\r\n console.log();\r\n console.log(chalk.yellow('\\u26a0 Existing statusline detected'));\r\n console.log();\r\n console.log(' Your current statusline:');\r\n console.log(' ' + chalk.dim(`command: ${existingCmd}`));\r\n console.log();\r\n console.log(' MAXSIM includes a statusline showing:');\r\n console.log(' \\u2022 Model name');\r\n console.log(' \\u2022 Current task (from todo list)');\r\n console.log(' \\u2022 Context window usage (color-coded)');\r\n console.log();\r\n\r\n const shouldReplace = await confirm({\r\n message: 'Replace with MAXSIM statusline?',\r\n default: false,\r\n });\r\n\r\n return shouldReplace;\r\n}\r\n\r\n/**\r\n * Apply statusline config, then print completion message\r\n */\r\nexport function finishInstall(\r\n settingsPath: string | null,\r\n settings: Record | null,\r\n statuslineCommand: string | null,\r\n shouldInstallStatusline: boolean,\r\n runtime: RuntimeName = 'claude',\r\n isGlobal: boolean = true,\r\n): void {\r\n const isOpencode = runtime === 'opencode';\r\n const isCodex = runtime === 'codex';\r\n\r\n if (shouldInstallStatusline && !isOpencode && !isCodex) {\r\n settings!.statusLine = {\r\n type: 'command',\r\n command: statuslineCommand,\r\n };\r\n console.log(` ${chalk.green('\\u2713')} Configured statusline`);\r\n }\r\n\r\n if (!isCodex && settingsPath && settings) {\r\n writeSettings(settingsPath, settings);\r\n }\r\n\r\n if (isOpencode) {\r\n configureOpencodePermissions(isGlobal);\r\n }\r\n\r\n let program = 'Claude Code';\r\n if (runtime === 'opencode') program = 'OpenCode';\r\n if (runtime === 'gemini') program = 'Gemini';\r\n if (runtime === 'codex') program = 'Codex';\r\n\r\n let command = '/maxsim:help';\r\n if (runtime === 'opencode') command = '/maxsim-help';\r\n if (runtime === 'codex') command = '$maxsim-help';\r\n console.log(`\r\n ${chalk.green('Done!')} Launch ${program} and run ${chalk.cyan(command)}.\r\n\r\n ${chalk.cyan('Join the community:')} https://discord.gg/5JJgD5svVS\r\n`);\r\n}\r\n","import * as fs from 'node:fs';\r\nimport * as path from 'node:path';\r\n\r\nimport type { RuntimeName } from '../adapters/index.js';\r\nimport {\r\n processAttribution,\r\n convertClaudeToOpencodeFrontmatter,\r\n convertClaudeToGeminiToml,\r\n convertClaudeCommandToCodexSkill,\r\n convertClaudeToCodexMarkdown,\r\n stripSubTags,\r\n} from '../adapters/index.js';\r\nimport { getDirName } from './shared.js';\r\nimport { getCommitAttribution } from './adapters.js';\r\n\r\n/**\r\n * Copy commands to a flat structure for OpenCode\r\n * OpenCode expects: command/maxsim-help.md (invoked as /maxsim-help)\r\n * Source structure: commands/maxsim/help.md\r\n */\r\nexport function copyFlattenedCommands(\r\n srcDir: string,\r\n destDir: string,\r\n prefix: string,\r\n pathPrefix: string,\r\n runtime: RuntimeName,\r\n explicitConfigDir: string | null,\r\n): void {\r\n if (!fs.existsSync(srcDir)) {\r\n return;\r\n }\r\n\r\n if (fs.existsSync(destDir)) {\r\n for (const file of fs.readdirSync(destDir)) {\r\n if (file.startsWith(`${prefix}-`) && file.endsWith('.md')) {\r\n fs.unlinkSync(path.join(destDir, file));\r\n }\r\n }\r\n } else {\r\n fs.mkdirSync(destDir, { recursive: true });\r\n }\r\n\r\n const entries = fs.readdirSync(srcDir, { withFileTypes: true });\r\n\r\n for (const entry of entries) {\r\n const srcPath = path.join(srcDir, entry.name);\r\n\r\n if (entry.isDirectory()) {\r\n copyFlattenedCommands(\r\n srcPath,\r\n destDir,\r\n `${prefix}-${entry.name}`,\r\n pathPrefix,\r\n runtime,\r\n explicitConfigDir,\r\n );\r\n } else if (entry.name.endsWith('.md')) {\r\n const baseName = entry.name.replace('.md', '');\r\n const destName = `${prefix}-${baseName}.md`;\r\n const destPath = path.join(destDir, destName);\r\n\r\n let content = fs.readFileSync(srcPath, 'utf8');\r\n const globalClaudeRegex = /~\\/\\.claude\\//g;\r\n const localClaudeRegex = /\\.\\/\\.claude\\//g;\r\n const opencodeDirRegex = /~\\/\\.opencode\\//g;\r\n content = content.replace(globalClaudeRegex, pathPrefix);\r\n content = content.replace(localClaudeRegex, `./${getDirName(runtime)}/`);\r\n content = content.replace(opencodeDirRegex, pathPrefix);\r\n content = processAttribution(content, getCommitAttribution(runtime, explicitConfigDir));\r\n content = convertClaudeToOpencodeFrontmatter(content);\r\n\r\n fs.writeFileSync(destPath, content);\r\n }\r\n }\r\n}\r\n\r\nexport function listCodexSkillNames(\r\n skillsDir: string,\r\n prefix: string = 'maxsim-',\r\n): string[] {\r\n if (!fs.existsSync(skillsDir)) return [];\r\n const entries = fs.readdirSync(skillsDir, { withFileTypes: true });\r\n return entries\r\n .filter((entry) => entry.isDirectory() && entry.name.startsWith(prefix))\r\n .filter((entry) =>\r\n fs.existsSync(path.join(skillsDir, entry.name, 'SKILL.md')),\r\n )\r\n .map((entry) => entry.name)\r\n .sort();\r\n}\r\n\r\nexport function copyCommandsAsCodexSkills(\r\n srcDir: string,\r\n skillsDir: string,\r\n prefix: string,\r\n pathPrefix: string,\r\n runtime: RuntimeName,\r\n explicitConfigDir: string | null,\r\n): void {\r\n if (!fs.existsSync(srcDir)) {\r\n return;\r\n }\r\n\r\n fs.mkdirSync(skillsDir, { recursive: true });\r\n\r\n const existing = fs.readdirSync(skillsDir, { withFileTypes: true });\r\n for (const entry of existing) {\r\n if (entry.isDirectory() && entry.name.startsWith(`${prefix}-`)) {\r\n fs.rmSync(path.join(skillsDir, entry.name), { recursive: true });\r\n }\r\n }\r\n\r\n function recurse(currentSrcDir: string, currentPrefix: string): void {\r\n const entries = fs.readdirSync(currentSrcDir, { withFileTypes: true });\r\n\r\n for (const entry of entries) {\r\n const srcPath = path.join(currentSrcDir, entry.name);\r\n if (entry.isDirectory()) {\r\n recurse(srcPath, `${currentPrefix}-${entry.name}`);\r\n continue;\r\n }\r\n\r\n if (!entry.name.endsWith('.md')) {\r\n continue;\r\n }\r\n\r\n const baseName = entry.name.replace('.md', '');\r\n const skillName = `${currentPrefix}-${baseName}`;\r\n const skillDir = path.join(skillsDir, skillName);\r\n fs.mkdirSync(skillDir, { recursive: true });\r\n\r\n let content = fs.readFileSync(srcPath, 'utf8');\r\n const globalClaudeRegex = /~\\/\\.claude\\//g;\r\n const localClaudeRegex = /\\.\\/\\.claude\\//g;\r\n const codexDirRegex = /~\\/\\.codex\\//g;\r\n content = content.replace(globalClaudeRegex, pathPrefix);\r\n content = content.replace(localClaudeRegex, `./${getDirName(runtime)}/`);\r\n content = content.replace(codexDirRegex, pathPrefix);\r\n content = processAttribution(content, getCommitAttribution(runtime, explicitConfigDir));\r\n content = convertClaudeCommandToCodexSkill(content, skillName);\r\n\r\n fs.writeFileSync(path.join(skillDir, 'SKILL.md'), content);\r\n }\r\n }\r\n\r\n recurse(srcDir, prefix);\r\n}\r\n\r\n/**\r\n * Recursively copy directory, replacing paths in .md files\r\n * Deletes existing destDir first to remove orphaned files from previous versions\r\n */\r\nexport function copyWithPathReplacement(\r\n srcDir: string,\r\n destDir: string,\r\n pathPrefix: string,\r\n runtime: RuntimeName,\r\n explicitConfigDir: string | null,\r\n isCommand: boolean = false,\r\n): void {\r\n const isOpencode = runtime === 'opencode';\r\n const isCodex = runtime === 'codex';\r\n const dirName = getDirName(runtime);\r\n\r\n if (fs.existsSync(destDir)) {\r\n fs.rmSync(destDir, { recursive: true });\r\n }\r\n fs.mkdirSync(destDir, { recursive: true });\r\n\r\n const entries = fs.readdirSync(srcDir, { withFileTypes: true });\r\n\r\n for (const entry of entries) {\r\n const srcPath = path.join(srcDir, entry.name);\r\n const destPath = path.join(destDir, entry.name);\r\n\r\n if (entry.isDirectory()) {\r\n copyWithPathReplacement(srcPath, destPath, pathPrefix, runtime, explicitConfigDir, isCommand);\r\n } else if (entry.name.endsWith('.md')) {\r\n let content = fs.readFileSync(srcPath, 'utf8');\r\n const globalClaudeRegex = /~\\/\\.claude\\//g;\r\n const localClaudeRegex = /\\.\\/\\.claude\\//g;\r\n content = content.replace(globalClaudeRegex, pathPrefix);\r\n content = content.replace(localClaudeRegex, `./${dirName}/`);\r\n content = processAttribution(content, getCommitAttribution(runtime, explicitConfigDir));\r\n\r\n if (isOpencode) {\r\n content = convertClaudeToOpencodeFrontmatter(content);\r\n fs.writeFileSync(destPath, content);\r\n } else if (runtime === 'gemini') {\r\n if (isCommand) {\r\n content = stripSubTags(content);\r\n const tomlContent = convertClaudeToGeminiToml(content);\r\n const tomlPath = destPath.replace(/\\.md$/, '.toml');\r\n fs.writeFileSync(tomlPath, tomlContent);\r\n } else {\r\n fs.writeFileSync(destPath, content);\r\n }\r\n } else if (isCodex) {\r\n content = convertClaudeToCodexMarkdown(content);\r\n fs.writeFileSync(destPath, content);\r\n } else {\r\n fs.writeFileSync(destPath, content);\r\n }\r\n } else {\r\n fs.copyFileSync(srcPath, destPath);\r\n }\r\n }\r\n}\r\n","import * as fs from 'node:fs';\r\nimport * as path from 'node:path';\r\nimport * as crypto from 'node:crypto';\r\n\r\nimport type { RuntimeName } from '../adapters/index.js';\r\nimport { pkg } from './shared.js';\r\nimport { listCodexSkillNames } from './copy.js';\r\n\r\nexport const MANIFEST_NAME = 'maxsim-file-manifest.json';\r\n\r\n/**\r\n * Compute SHA256 hash of file contents\r\n */\r\nexport function fileHash(filePath: string): string {\r\n const content = fs.readFileSync(filePath);\r\n return crypto.createHash('sha256').update(content).digest('hex');\r\n}\r\n\r\n/**\r\n * Recursively collect all files in dir with their hashes\r\n */\r\nexport function generateManifest(\r\n dir: string,\r\n baseDir?: string,\r\n): Record {\r\n if (!baseDir) baseDir = dir;\r\n const manifest: Record = {};\r\n if (!fs.existsSync(dir)) return manifest;\r\n const entries = fs.readdirSync(dir, { withFileTypes: true });\r\n for (const entry of entries) {\r\n const fullPath = path.join(dir, entry.name);\r\n const relPath = path.relative(baseDir, fullPath).replace(/\\\\/g, '/');\r\n if (entry.isDirectory()) {\r\n Object.assign(manifest, generateManifest(fullPath, baseDir));\r\n } else {\r\n manifest[relPath] = fileHash(fullPath);\r\n }\r\n }\r\n return manifest;\r\n}\r\n\r\nexport interface Manifest {\r\n version: string;\r\n timestamp: string;\r\n files: Record;\r\n}\r\n\r\n/**\r\n * Write file manifest after installation for future modification detection\r\n */\r\nexport function writeManifest(\r\n configDir: string,\r\n runtime: RuntimeName = 'claude',\r\n): Manifest {\r\n const isOpencode = runtime === 'opencode';\r\n const isCodex = runtime === 'codex';\r\n const maxsimDir = path.join(configDir, 'maxsim');\r\n const commandsDir = path.join(configDir, 'commands', 'maxsim');\r\n const opencodeCommandDir = path.join(configDir, 'command');\r\n const codexSkillsDir = path.join(configDir, 'skills');\r\n const agentsDir = path.join(configDir, 'agents');\r\n const manifest: Manifest = {\r\n version: pkg.version,\r\n timestamp: new Date().toISOString(),\r\n files: {},\r\n };\r\n\r\n const maxsimHashes = generateManifest(maxsimDir);\r\n for (const [rel, hash] of Object.entries(maxsimHashes)) {\r\n manifest.files['maxsim/' + rel] = hash;\r\n }\r\n if (!isOpencode && !isCodex && fs.existsSync(commandsDir)) {\r\n const cmdHashes = generateManifest(commandsDir);\r\n for (const [rel, hash] of Object.entries(cmdHashes)) {\r\n manifest.files['commands/maxsim/' + rel] = hash;\r\n }\r\n }\r\n if (isOpencode && fs.existsSync(opencodeCommandDir)) {\r\n for (const file of fs.readdirSync(opencodeCommandDir)) {\r\n if (file.startsWith('maxsim-') && file.endsWith('.md')) {\r\n manifest.files['command/' + file] = fileHash(\r\n path.join(opencodeCommandDir, file),\r\n );\r\n }\r\n }\r\n }\r\n if (isCodex && fs.existsSync(codexSkillsDir)) {\r\n for (const skillName of listCodexSkillNames(codexSkillsDir)) {\r\n const skillRoot = path.join(codexSkillsDir, skillName);\r\n const skillHashes = generateManifest(skillRoot);\r\n for (const [rel, hash] of Object.entries(skillHashes)) {\r\n manifest.files[`skills/${skillName}/${rel}`] = hash;\r\n }\r\n }\r\n }\r\n if (fs.existsSync(agentsDir)) {\r\n for (const file of fs.readdirSync(agentsDir)) {\r\n if (file.startsWith('maxsim-') && file.endsWith('.md')) {\r\n manifest.files['agents/' + file] = fileHash(\r\n path.join(agentsDir, file),\r\n );\r\n }\r\n }\r\n }\r\n // Include skills in manifest (agents/skills//*)\r\n const skillsManifestDir = path.join(agentsDir, 'skills');\r\n if (fs.existsSync(skillsManifestDir)) {\r\n const skillHashes = generateManifest(skillsManifestDir);\r\n for (const [rel, hash] of Object.entries(skillHashes)) {\r\n manifest.files['agents/skills/' + rel] = hash;\r\n }\r\n }\r\n\r\n fs.writeFileSync(\r\n path.join(configDir, MANIFEST_NAME),\r\n JSON.stringify(manifest, null, 2),\r\n );\r\n return manifest;\r\n}\r\n","import * as fs from 'node:fs';\r\nimport * as path from 'node:path';\r\n\r\nimport chalk from 'chalk';\r\n\r\nimport type { RuntimeName } from '../adapters/index.js';\r\nimport { MANIFEST_NAME, fileHash } from './manifest.js';\r\nimport type { Manifest } from './manifest.js';\r\n\r\nexport const PATCHES_DIR_NAME = 'maxsim-local-patches';\r\n\r\ninterface BackupMeta {\r\n backed_up_at: string;\r\n from_version: string;\r\n files: string[];\r\n}\r\n\r\n/**\r\n * Detect user-modified MAXSIM files by comparing against install manifest.\r\n */\r\nexport function saveLocalPatches(configDir: string): string[] {\r\n const manifestPath = path.join(configDir, MANIFEST_NAME);\r\n if (!fs.existsSync(manifestPath)) return [];\r\n\r\n let manifest: Manifest;\r\n try {\r\n manifest = JSON.parse(\r\n fs.readFileSync(manifestPath, 'utf8'),\r\n ) as Manifest;\r\n } catch {\r\n return [];\r\n }\r\n\r\n const patchesDir = path.join(configDir, PATCHES_DIR_NAME);\r\n const modified: string[] = [];\r\n\r\n for (const [relPath, originalHash] of Object.entries(manifest.files || {})) {\r\n const fullPath = path.join(configDir, relPath);\r\n if (!fs.existsSync(fullPath)) continue;\r\n const currentHash = fileHash(fullPath);\r\n if (currentHash !== originalHash) {\r\n const backupPath = path.join(patchesDir, relPath);\r\n fs.mkdirSync(path.dirname(backupPath), { recursive: true });\r\n fs.copyFileSync(fullPath, backupPath);\r\n modified.push(relPath);\r\n }\r\n }\r\n\r\n if (modified.length > 0) {\r\n const meta: BackupMeta = {\r\n backed_up_at: new Date().toISOString(),\r\n from_version: manifest.version,\r\n files: modified,\r\n };\r\n fs.writeFileSync(\r\n path.join(patchesDir, 'backup-meta.json'),\r\n JSON.stringify(meta, null, 2),\r\n );\r\n console.log(\r\n ' ' +\r\n chalk.yellow('i') +\r\n ' Found ' +\r\n modified.length +\r\n ' locally modified MAXSIM file(s) \\u2014 backed up to ' +\r\n PATCHES_DIR_NAME +\r\n '/',\r\n );\r\n for (const f of modified) {\r\n console.log(' ' + chalk.dim(f));\r\n }\r\n }\r\n return modified;\r\n}\r\n\r\n/**\r\n * After install, report backed-up patches for user to reapply.\r\n */\r\nexport function reportLocalPatches(\r\n configDir: string,\r\n runtime: RuntimeName = 'claude',\r\n): string[] {\r\n const patchesDir = path.join(configDir, PATCHES_DIR_NAME);\r\n const metaPath = path.join(patchesDir, 'backup-meta.json');\r\n if (!fs.existsSync(metaPath)) return [];\r\n\r\n let meta: BackupMeta;\r\n try {\r\n meta = JSON.parse(\r\n fs.readFileSync(metaPath, 'utf8'),\r\n ) as BackupMeta;\r\n } catch {\r\n return [];\r\n }\r\n\r\n if (meta.files && meta.files.length > 0) {\r\n const reapplyCommand =\r\n runtime === 'opencode'\r\n ? '/maxsim-reapply-patches'\r\n : runtime === 'codex'\r\n ? '$maxsim-reapply-patches'\r\n : '/maxsim:reapply-patches';\r\n console.log('');\r\n console.log(\r\n ' ' +\r\n chalk.yellow('Local patches detected') +\r\n ' (from v' +\r\n meta.from_version +\r\n '):',\r\n );\r\n for (const f of meta.files) {\r\n console.log(' ' + chalk.cyan(f));\r\n }\r\n console.log('');\r\n console.log(\r\n ' Your modifications are saved in ' +\r\n chalk.cyan(PATCHES_DIR_NAME + '/'),\r\n );\r\n console.log(\r\n ' Run ' +\r\n chalk.cyan(reapplyCommand) +\r\n ' to merge them into the new version.',\r\n );\r\n console.log(' Or manually compare and merge the files.');\r\n console.log('');\r\n }\r\n return meta.files || [];\r\n}\r\n","import * as fs from 'node:fs';\r\nimport * as path from 'node:path';\r\nimport * as os from 'node:os';\r\n\r\nimport chalk from 'chalk';\r\n\r\nimport type { RuntimeName } from '../adapters/index.js';\r\nimport { readSettings, writeSettings } from '../adapters/index.js';\r\nimport { getDirName, getGlobalDir, getOpencodeGlobalDir } from './shared.js';\r\n\r\n/**\r\n * Uninstall MAXSIM from the specified directory for a specific runtime\r\n */\r\nexport function uninstall(isGlobal: boolean, runtime: RuntimeName = 'claude', explicitConfigDir: string | null = null): void {\r\n const isOpencode = runtime === 'opencode';\r\n const isCodex = runtime === 'codex';\r\n const dirName = getDirName(runtime);\r\n\r\n const targetDir = isGlobal\r\n ? getGlobalDir(runtime, explicitConfigDir)\r\n : path.join(process.cwd(), dirName);\r\n\r\n const locationLabel = isGlobal\r\n ? targetDir.replace(os.homedir(), '~')\r\n : targetDir.replace(process.cwd(), '.');\r\n\r\n let runtimeLabel = 'Claude Code';\r\n if (runtime === 'opencode') runtimeLabel = 'OpenCode';\r\n if (runtime === 'gemini') runtimeLabel = 'Gemini';\r\n if (runtime === 'codex') runtimeLabel = 'Codex';\r\n\r\n console.log(\r\n ` Uninstalling MAXSIM from ${chalk.cyan(runtimeLabel)} at ${chalk.cyan(locationLabel)}\\n`,\r\n );\r\n\r\n if (!fs.existsSync(targetDir)) {\r\n console.log(\r\n ` ${chalk.yellow('\\u26a0')} Directory does not exist: ${locationLabel}`,\r\n );\r\n console.log(` Nothing to uninstall.\\n`);\r\n return;\r\n }\r\n\r\n let removedCount = 0;\r\n\r\n // 1. Remove MAXSIM commands/skills\r\n if (isOpencode) {\r\n const commandDir = path.join(targetDir, 'command');\r\n if (fs.existsSync(commandDir)) {\r\n const files = fs.readdirSync(commandDir);\r\n for (const file of files) {\r\n if (file.startsWith('maxsim-') && file.endsWith('.md')) {\r\n fs.unlinkSync(path.join(commandDir, file));\r\n removedCount++;\r\n }\r\n }\r\n console.log(\r\n ` ${chalk.green('\\u2713')} Removed MAXSIM commands from command/`,\r\n );\r\n }\r\n } else if (isCodex) {\r\n const skillsDir = path.join(targetDir, 'skills');\r\n if (fs.existsSync(skillsDir)) {\r\n let skillCount = 0;\r\n const entries = fs.readdirSync(skillsDir, { withFileTypes: true });\r\n for (const entry of entries) {\r\n if (entry.isDirectory() && entry.name.startsWith('maxsim-')) {\r\n fs.rmSync(path.join(skillsDir, entry.name), { recursive: true });\r\n skillCount++;\r\n }\r\n }\r\n if (skillCount > 0) {\r\n removedCount++;\r\n console.log(\r\n ` ${chalk.green('\\u2713')} Removed ${skillCount} Codex skills`,\r\n );\r\n }\r\n }\r\n } else {\r\n const maxsimCommandsDir = path.join(targetDir, 'commands', 'maxsim');\r\n if (fs.existsSync(maxsimCommandsDir)) {\r\n fs.rmSync(maxsimCommandsDir, { recursive: true });\r\n removedCount++;\r\n console.log(` ${chalk.green('\\u2713')} Removed commands/maxsim/`);\r\n }\r\n }\r\n\r\n // 2. Remove maxsim directory\r\n const maxsimDir = path.join(targetDir, 'maxsim');\r\n if (fs.existsSync(maxsimDir)) {\r\n fs.rmSync(maxsimDir, { recursive: true });\r\n removedCount++;\r\n console.log(` ${chalk.green('\\u2713')} Removed maxsim/`);\r\n }\r\n\r\n // 3. Remove MAXSIM agents\r\n const agentsDir = path.join(targetDir, 'agents');\r\n if (fs.existsSync(agentsDir)) {\r\n const files = fs.readdirSync(agentsDir);\r\n let agentCount = 0;\r\n for (const file of files) {\r\n if (file.startsWith('maxsim-') && file.endsWith('.md')) {\r\n fs.unlinkSync(path.join(agentsDir, file));\r\n agentCount++;\r\n }\r\n }\r\n if (agentCount > 0) {\r\n removedCount++;\r\n console.log(\r\n ` ${chalk.green('\\u2713')} Removed ${agentCount} MAXSIM agents`,\r\n );\r\n }\r\n }\r\n\r\n // 4. Remove MAXSIM hooks\r\n const hooksDir = path.join(targetDir, 'hooks');\r\n if (fs.existsSync(hooksDir)) {\r\n const maxsimHooks = [\r\n 'maxsim-statusline.js',\r\n 'maxsim-check-update.js',\r\n 'maxsim-check-update.sh',\r\n 'maxsim-context-monitor.js',\r\n ];\r\n let hookCount = 0;\r\n for (const hook of maxsimHooks) {\r\n const hookPath = path.join(hooksDir, hook);\r\n if (fs.existsSync(hookPath)) {\r\n fs.unlinkSync(hookPath);\r\n hookCount++;\r\n }\r\n }\r\n if (hookCount > 0) {\r\n removedCount++;\r\n console.log(\r\n ` ${chalk.green('\\u2713')} Removed ${hookCount} MAXSIM hooks`,\r\n );\r\n }\r\n }\r\n\r\n // 5. Remove MAXSIM package.json (CommonJS mode marker)\r\n const pkgJsonPath = path.join(targetDir, 'package.json');\r\n if (fs.existsSync(pkgJsonPath)) {\r\n try {\r\n const content = fs.readFileSync(pkgJsonPath, 'utf8').trim();\r\n if (content === '{\"type\":\"commonjs\"}') {\r\n fs.unlinkSync(pkgJsonPath);\r\n removedCount++;\r\n console.log(\r\n ` ${chalk.green('\\u2713')} Removed MAXSIM package.json`,\r\n );\r\n }\r\n } catch {\r\n // Ignore read errors\r\n }\r\n }\r\n\r\n // 6. Clean up settings.json\r\n const settingsPath = path.join(targetDir, 'settings.json');\r\n if (fs.existsSync(settingsPath)) {\r\n const settings = readSettings(settingsPath);\r\n let settingsModified = false;\r\n\r\n interface StatusLine {\r\n command?: string;\r\n url?: string;\r\n }\r\n\r\n interface SettingsHookEntry {\r\n hooks?: Array<{ command?: string }>;\r\n }\r\n\r\n const statusLine = settings.statusLine as StatusLine | undefined;\r\n if (\r\n statusLine &&\r\n statusLine.command &&\r\n statusLine.command.includes('maxsim-statusline')\r\n ) {\r\n delete settings.statusLine;\r\n settingsModified = true;\r\n console.log(\r\n ` ${chalk.green('\\u2713')} Removed MAXSIM statusline from settings`,\r\n );\r\n }\r\n\r\n const settingsHooks = settings.hooks as\r\n | Record\r\n | undefined;\r\n if (settingsHooks && settingsHooks.SessionStart) {\r\n const before = settingsHooks.SessionStart.length;\r\n settingsHooks.SessionStart = settingsHooks.SessionStart.filter(\r\n (entry: SettingsHookEntry) => {\r\n if (entry.hooks && Array.isArray(entry.hooks)) {\r\n const hasMaxsimHook = entry.hooks.some(\r\n (h) =>\r\n h.command &&\r\n (h.command.includes('maxsim-check-update') ||\r\n h.command.includes('maxsim-statusline')),\r\n );\r\n return !hasMaxsimHook;\r\n }\r\n return true;\r\n },\r\n );\r\n if (settingsHooks.SessionStart.length < before) {\r\n settingsModified = true;\r\n console.log(\r\n ` ${chalk.green('\\u2713')} Removed MAXSIM hooks from settings`,\r\n );\r\n }\r\n if (settingsHooks.SessionStart.length === 0) {\r\n delete settingsHooks.SessionStart;\r\n }\r\n }\r\n\r\n if (settingsHooks && settingsHooks.PostToolUse) {\r\n const before = settingsHooks.PostToolUse.length;\r\n settingsHooks.PostToolUse = settingsHooks.PostToolUse.filter(\r\n (entry: SettingsHookEntry) => {\r\n if (entry.hooks && Array.isArray(entry.hooks)) {\r\n const hasMaxsimHook = entry.hooks.some(\r\n (h) =>\r\n h.command &&\r\n h.command.includes('maxsim-context-monitor'),\r\n );\r\n return !hasMaxsimHook;\r\n }\r\n return true;\r\n },\r\n );\r\n if (settingsHooks.PostToolUse.length < before) {\r\n settingsModified = true;\r\n console.log(\r\n ` ${chalk.green('\\u2713')} Removed context monitor hook from settings`,\r\n );\r\n }\r\n if (settingsHooks.PostToolUse.length === 0) {\r\n delete settingsHooks.PostToolUse;\r\n }\r\n }\r\n\r\n if (settingsHooks && Object.keys(settingsHooks).length === 0) {\r\n delete settings.hooks;\r\n }\r\n\r\n if (settingsModified) {\r\n writeSettings(settingsPath, settings);\r\n removedCount++;\r\n }\r\n }\r\n\r\n // 7. For OpenCode, clean up permissions from opencode.json\r\n if (isOpencode) {\r\n const opencodeConfigDir = isGlobal\r\n ? getOpencodeGlobalDir()\r\n : path.join(process.cwd(), '.opencode');\r\n const configPath = path.join(opencodeConfigDir, 'opencode.json');\r\n if (fs.existsSync(configPath)) {\r\n try {\r\n const config = JSON.parse(\r\n fs.readFileSync(configPath, 'utf8'),\r\n ) as Record;\r\n let modified = false;\r\n\r\n const permission = config.permission as\r\n | Record>\r\n | undefined;\r\n if (permission) {\r\n for (const permType of ['read', 'external_directory'] as const) {\r\n if (permission[permType]) {\r\n const keys = Object.keys(permission[permType]);\r\n for (const key of keys) {\r\n if (key.includes('maxsim')) {\r\n delete permission[permType][key];\r\n modified = true;\r\n }\r\n }\r\n if (Object.keys(permission[permType]).length === 0) {\r\n delete permission[permType];\r\n }\r\n }\r\n }\r\n if (Object.keys(permission).length === 0) {\r\n delete config.permission;\r\n }\r\n }\r\n\r\n if (modified) {\r\n fs.writeFileSync(\r\n configPath,\r\n JSON.stringify(config, null, 2) + '\\n',\r\n );\r\n removedCount++;\r\n console.log(\r\n ` ${chalk.green('\\u2713')} Removed MAXSIM permissions from opencode.json`,\r\n );\r\n }\r\n } catch {\r\n // Ignore JSON parse errors\r\n }\r\n }\r\n }\r\n\r\n if (removedCount === 0) {\r\n console.log(\r\n ` ${chalk.yellow('\\u26a0')} No MAXSIM files found to remove.`,\r\n );\r\n }\r\n\r\n console.log(`\r\n ${chalk.green('Done!')} MAXSIM has been uninstalled from ${runtimeLabel}.\r\n Your other files and settings have been preserved.\r\n`);\r\n}\r\n","import * as fs from 'node:fs';\r\nimport * as path from 'node:path';\r\nimport * as os from 'node:os';\r\nimport fsExtra from 'fs-extra';\r\n\r\nimport chalk from 'chalk';\r\nimport figlet from 'figlet';\r\nimport ora from 'ora';\r\nimport { select, checkbox, confirm } from '@inquirer/prompts';\r\nimport minimist from 'minimist';\r\n\r\nimport type { RuntimeName } from '../adapters/index.js';\r\nimport {\r\n processAttribution,\r\n convertClaudeToOpencodeFrontmatter,\r\n convertClaudeToGeminiAgent,\r\n convertClaudeToCodexMarkdown,\r\n} from '../adapters/index.js';\r\nimport {\r\n pkg,\r\n templatesRoot,\r\n getGlobalDir,\r\n getDirName,\r\n safeRmDir,\r\n copyDirRecursive,\r\n verifyInstalled,\r\n verifyFileInstalled,\r\n} from './shared.js';\r\nimport type { InstallResult } from './shared.js';\r\nimport { getCommitAttribution } from './adapters.js';\r\nimport { runDashboardSubcommand, applyFirewallRule } from './dashboard.js';\r\nimport {\r\n cleanupOrphanedFiles,\r\n installHookFiles,\r\n configureSettingsHooks,\r\n handleStatusline,\r\n finishInstall,\r\n} from './hooks.js';\r\nimport { writeManifest, MANIFEST_NAME } from './manifest.js';\r\nimport { saveLocalPatches, reportLocalPatches } from './patches.js';\r\nimport {\r\n copyFlattenedCommands,\r\n copyCommandsAsCodexSkills,\r\n copyWithPathReplacement,\r\n listCodexSkillNames,\r\n} from './copy.js';\r\nimport { uninstall } from './uninstall.js';\r\n\r\n// Parse args\r\nconst args = process.argv.slice(2);\r\nconst argv = minimist(args, {\r\n boolean: ['global', 'local', 'opencode', 'claude', 'gemini', 'codex', 'both', 'all', 'uninstall', 'help', 'version', 'force-statusline', 'network'],\r\n string: ['config-dir'],\r\n alias: { g: 'global', l: 'local', u: 'uninstall', h: 'help', c: 'config-dir' },\r\n});\r\nconst hasGlobal = !!argv['global'];\r\nconst hasLocal = !!argv['local'];\r\nconst hasOpencode = !!argv['opencode'];\r\nconst hasClaude = !!argv['claude'];\r\nconst hasGemini = !!argv['gemini'];\r\nconst hasCodex = !!argv['codex'];\r\nconst hasBoth = !!argv['both']; // Legacy flag, keeps working\r\nconst hasAll = !!argv['all'];\r\nconst hasUninstall = !!argv['uninstall'];\r\n\r\n// Runtime selection - can be set by flags or interactive prompt\r\nlet selectedRuntimes: RuntimeName[] = [];\r\nif (hasAll) {\r\n selectedRuntimes = ['claude', 'opencode', 'gemini', 'codex'];\r\n} else if (hasBoth) {\r\n selectedRuntimes = ['claude', 'opencode'];\r\n} else {\r\n if (hasOpencode) selectedRuntimes.push('opencode');\r\n if (hasClaude) selectedRuntimes.push('claude');\r\n if (hasGemini) selectedRuntimes.push('gemini');\r\n if (hasCodex) selectedRuntimes.push('codex');\r\n}\r\n\r\nconst banner =\r\n '\\n' +\r\n chalk.cyan(\r\n figlet.textSync('MAXSIM', { font: 'ANSI Shadow' })\r\n .split('\\n')\r\n .map((line) => ' ' + line)\r\n .join('\\n'),\r\n ) +\r\n '\\n' +\r\n '\\n' +\r\n ' MAXSIM ' +\r\n chalk.dim('v' + pkg.version) +\r\n '\\n' +\r\n ' A meta-prompting, context engineering and spec-driven\\n' +\r\n ' development system for Claude Code, OpenCode, Gemini, and Codex.\\n';\r\n\r\n// Parse --config-dir argument\r\nconst explicitConfigDir: string | null = argv['config-dir'] || null;\r\nconst hasHelp = !!argv['help'];\r\nconst hasVersion = !!argv['version'];\r\nconst forceStatusline = !!argv['force-statusline'];\r\n\r\n// Show version if requested (before banner for clean output)\r\nif (hasVersion) {\r\n console.log(pkg.version);\r\n process.exit(0);\r\n}\r\n\r\nconsole.log(banner);\r\n\r\n// Show help if requested\r\nif (hasHelp) {\r\n console.log(\r\n ` ${chalk.yellow('Usage:')} npx maxsimcli [options]\\n\\n ${chalk.yellow('Options:')}\\n ${chalk.cyan('-g, --global')} Install globally (to config directory)\\n ${chalk.cyan('-l, --local')} Install locally (to current directory)\\n ${chalk.cyan('--claude')} Install for Claude Code only\\n ${chalk.cyan('--opencode')} Install for OpenCode only\\n ${chalk.cyan('--gemini')} Install for Gemini only\\n ${chalk.cyan('--codex')} Install for Codex only\\n ${chalk.cyan('--all')} Install for all runtimes\\n ${chalk.cyan('-u, --uninstall')} Uninstall MAXSIM (remove all MAXSIM files)\\n ${chalk.cyan('-c, --config-dir ')} Specify custom config directory\\n ${chalk.cyan('-h, --help')} Show this help message\\n ${chalk.cyan('--force-statusline')} Replace existing statusline config\\n\\n ${chalk.yellow('Examples:')}\\n ${chalk.dim('# Interactive install (prompts for runtime and location)')}\\n npx maxsimcli\\n\\n ${chalk.dim('# Install for Claude Code globally')}\\n npx maxsimcli --claude --global\\n\\n ${chalk.dim('# Install for Gemini globally')}\\n npx maxsimcli --gemini --global\\n\\n ${chalk.dim('# Install for Codex globally')}\\n npx maxsimcli --codex --global\\n\\n ${chalk.dim('# Install for all runtimes globally')}\\n npx maxsimcli --all --global\\n\\n ${chalk.dim('# Install to custom config directory')}\\n npx maxsimcli --codex --global --config-dir ~/.codex-work\\n\\n ${chalk.dim('# Install to current project only')}\\n npx maxsimcli --claude --local\\n\\n ${chalk.dim('# Uninstall MAXSIM from Codex globally')}\\n npx maxsimcli --codex --global --uninstall\\n\\n ${chalk.yellow('Notes:')}\\n The --config-dir option is useful when you have multiple configurations.\\n It takes priority over CLAUDE_CONFIG_DIR / GEMINI_CONFIG_DIR / CODEX_HOME environment variables.\\n`,\r\n );\r\n process.exit(0);\r\n}\r\n\r\nasync function install(\r\n isGlobal: boolean,\r\n runtime: RuntimeName = 'claude',\r\n): Promise {\r\n const isOpencode = runtime === 'opencode';\r\n const isGemini = runtime === 'gemini';\r\n const isCodex = runtime === 'codex';\r\n const dirName = getDirName(runtime);\r\n const src = templatesRoot;\r\n\r\n const targetDir = isGlobal\r\n ? getGlobalDir(runtime, explicitConfigDir)\r\n : path.join(process.cwd(), dirName);\r\n\r\n const locationLabel = isGlobal\r\n ? targetDir.replace(os.homedir(), '~')\r\n : targetDir.replace(process.cwd(), '.');\r\n\r\n const pathPrefix = isGlobal\r\n ? `${targetDir.replace(/\\\\/g, '/')}/`\r\n : `./${dirName}/`;\r\n\r\n let runtimeLabel = 'Claude Code';\r\n if (isOpencode) runtimeLabel = 'OpenCode';\r\n if (isGemini) runtimeLabel = 'Gemini';\r\n if (isCodex) runtimeLabel = 'Codex';\r\n\r\n console.log(\r\n ` Installing for ${chalk.cyan(runtimeLabel)} to ${chalk.cyan(locationLabel)}\\n`,\r\n );\r\n\r\n const failures: string[] = [];\r\n\r\n // Save any locally modified MAXSIM files before they get wiped\r\n saveLocalPatches(targetDir);\r\n\r\n // Clean up orphaned files from previous versions\r\n cleanupOrphanedFiles(targetDir);\r\n\r\n // OpenCode uses command/ (flat), Codex uses skills/, Claude/Gemini use commands/maxsim/\r\n let spinner = ora({ text: 'Installing commands...', color: 'cyan' }).start();\r\n if (isOpencode) {\r\n const commandDir = path.join(targetDir, 'command');\r\n fs.mkdirSync(commandDir, { recursive: true });\r\n\r\n const maxsimSrc = path.join(src, 'commands', 'maxsim');\r\n copyFlattenedCommands(maxsimSrc, commandDir, 'maxsim', pathPrefix, runtime, explicitConfigDir);\r\n if (verifyInstalled(commandDir, 'command/maxsim-*')) {\r\n const count = fs\r\n .readdirSync(commandDir)\r\n .filter((f) => f.startsWith('maxsim-')).length;\r\n spinner.succeed(chalk.green('\\u2713') + ` Installed ${count} commands to command/`);\r\n } else {\r\n spinner.fail('Failed to install commands');\r\n failures.push('command/maxsim-*');\r\n }\r\n } else if (isCodex) {\r\n const skillsDir = path.join(targetDir, 'skills');\r\n const maxsimSrc = path.join(src, 'commands', 'maxsim');\r\n copyCommandsAsCodexSkills(maxsimSrc, skillsDir, 'maxsim', pathPrefix, runtime, explicitConfigDir);\r\n const installedSkillNames = listCodexSkillNames(skillsDir);\r\n if (installedSkillNames.length > 0) {\r\n spinner.succeed(chalk.green('\\u2713') + ` Installed ${installedSkillNames.length} skills to skills/`);\r\n } else {\r\n spinner.fail('Failed to install skills');\r\n failures.push('skills/maxsim-*');\r\n }\r\n } else {\r\n const commandsDir = path.join(targetDir, 'commands');\r\n fs.mkdirSync(commandsDir, { recursive: true });\r\n\r\n const maxsimSrc = path.join(src, 'commands', 'maxsim');\r\n const maxsimDest = path.join(commandsDir, 'maxsim');\r\n copyWithPathReplacement(maxsimSrc, maxsimDest, pathPrefix, runtime, explicitConfigDir, true);\r\n if (verifyInstalled(maxsimDest, 'commands/maxsim')) {\r\n spinner.succeed(chalk.green('\\u2713') + ' Installed commands/maxsim');\r\n } else {\r\n spinner.fail('Failed to install commands/maxsim');\r\n failures.push('commands/maxsim');\r\n }\r\n }\r\n\r\n // Copy maxsim directory content (workflows, templates, references) with path replacement\r\n spinner = ora({ text: 'Installing workflows and templates...', color: 'cyan' }).start();\r\n const skillDest = path.join(targetDir, 'maxsim');\r\n const maxsimSubdirs = ['workflows', 'templates', 'references'];\r\n if (fs.existsSync(skillDest)) {\r\n fs.rmSync(skillDest, { recursive: true });\r\n }\r\n fs.mkdirSync(skillDest, { recursive: true });\r\n for (const subdir of maxsimSubdirs) {\r\n const subdirSrc = path.join(src, subdir);\r\n if (fs.existsSync(subdirSrc)) {\r\n const subdirDest = path.join(skillDest, subdir);\r\n copyWithPathReplacement(subdirSrc, subdirDest, pathPrefix, runtime, explicitConfigDir);\r\n }\r\n }\r\n if (verifyInstalled(skillDest, 'maxsim')) {\r\n spinner.succeed(chalk.green('\\u2713') + ' Installed maxsim');\r\n } else {\r\n spinner.fail('Failed to install maxsim');\r\n failures.push('maxsim');\r\n }\r\n\r\n // Copy agents to agents directory\r\n const agentsSrc = path.join(src, 'agents');\r\n if (fs.existsSync(agentsSrc)) {\r\n spinner = ora({ text: 'Installing agents...', color: 'cyan' }).start();\r\n const agentsDest = path.join(targetDir, 'agents');\r\n fs.mkdirSync(agentsDest, { recursive: true });\r\n\r\n // Remove old MAXSIM agents before copying new ones\r\n if (fs.existsSync(agentsDest)) {\r\n for (const file of fs.readdirSync(agentsDest)) {\r\n if (file.startsWith('maxsim-') && file.endsWith('.md')) {\r\n fs.unlinkSync(path.join(agentsDest, file));\r\n }\r\n }\r\n }\r\n\r\n const agentEntries = fs.readdirSync(agentsSrc, { withFileTypes: true });\r\n for (const entry of agentEntries) {\r\n if (entry.isFile() && entry.name.endsWith('.md')) {\r\n let content = fs.readFileSync(\r\n path.join(agentsSrc, entry.name),\r\n 'utf8',\r\n );\r\n const dirRegex = /~\\/\\.claude\\//g;\r\n content = content.replace(dirRegex, pathPrefix);\r\n content = processAttribution(content, getCommitAttribution(runtime, explicitConfigDir));\r\n if (isOpencode) {\r\n content = convertClaudeToOpencodeFrontmatter(content);\r\n } else if (isGemini) {\r\n content = convertClaudeToGeminiAgent(content);\r\n } else if (isCodex) {\r\n content = convertClaudeToCodexMarkdown(content);\r\n }\r\n fs.writeFileSync(path.join(agentsDest, entry.name), content);\r\n }\r\n }\r\n if (verifyInstalled(agentsDest, 'agents')) {\r\n spinner.succeed(chalk.green('\\u2713') + ' Installed agents');\r\n } else {\r\n spinner.fail('Failed to install agents');\r\n failures.push('agents');\r\n }\r\n }\r\n\r\n // Copy skills to agents/skills/ directory\r\n const skillsSrc = path.join(src, 'skills');\r\n if (fs.existsSync(skillsSrc)) {\r\n spinner = ora({ text: 'Installing skills...', color: 'cyan' }).start();\r\n const skillsDest = path.join(targetDir, 'agents', 'skills');\r\n\r\n // Remove old MAXSIM built-in skills before copying new ones (preserve user custom skills)\r\n if (fs.existsSync(skillsDest)) {\r\n const builtInSkills = ['tdd', 'systematic-debugging', 'verification-before-completion'];\r\n for (const skill of builtInSkills) {\r\n const skillDir = path.join(skillsDest, skill);\r\n if (fs.existsSync(skillDir)) {\r\n fs.rmSync(skillDir, { recursive: true });\r\n }\r\n }\r\n }\r\n\r\n // Copy skills directory recursively\r\n fsExtra.copySync(skillsSrc, skillsDest, { overwrite: true });\r\n\r\n // Process path prefixes in skill files\r\n const skillEntries = fs.readdirSync(skillsDest, { withFileTypes: true });\r\n for (const entry of skillEntries) {\r\n if (entry.isDirectory()) {\r\n const skillMd = path.join(skillsDest, entry.name, 'SKILL.md');\r\n if (fs.existsSync(skillMd)) {\r\n let content = fs.readFileSync(skillMd, 'utf8');\r\n const dirRegex = /~\\/\\.claude\\//g;\r\n content = content.replace(dirRegex, pathPrefix);\r\n content = processAttribution(content, getCommitAttribution(runtime, explicitConfigDir));\r\n fs.writeFileSync(skillMd, content);\r\n }\r\n }\r\n }\r\n\r\n const installedSkillDirs = fs.readdirSync(skillsDest, { withFileTypes: true })\r\n .filter(e => e.isDirectory()).length;\r\n if (installedSkillDirs > 0) {\r\n spinner.succeed(chalk.green('\\u2713') + ` Installed ${installedSkillDirs} skills to agents/skills/`);\r\n } else {\r\n spinner.fail('Failed to install skills');\r\n failures.push('agents/skills');\r\n }\r\n }\r\n\r\n // Copy CHANGELOG.md\r\n const changelogSrc = path.join(src, '..', 'CHANGELOG.md');\r\n const changelogDest = path.join(targetDir, 'maxsim', 'CHANGELOG.md');\r\n if (fs.existsSync(changelogSrc)) {\r\n spinner = ora({ text: 'Installing CHANGELOG.md...', color: 'cyan' }).start();\r\n fs.copyFileSync(changelogSrc, changelogDest);\r\n if (verifyFileInstalled(changelogDest, 'CHANGELOG.md')) {\r\n spinner.succeed(chalk.green('\\u2713') + ' Installed CHANGELOG.md');\r\n } else {\r\n spinner.fail('Failed to install CHANGELOG.md');\r\n failures.push('CHANGELOG.md');\r\n }\r\n }\r\n\r\n // Copy CLAUDE.md\r\n const claudeMdSrc = path.join(src, 'CLAUDE.md');\r\n const claudeMdDest = path.join(targetDir, 'CLAUDE.md');\r\n if (fs.existsSync(claudeMdSrc)) {\r\n spinner = ora({ text: 'Installing CLAUDE.md...', color: 'cyan' }).start();\r\n fs.copyFileSync(claudeMdSrc, claudeMdDest);\r\n if (verifyFileInstalled(claudeMdDest, 'CLAUDE.md')) {\r\n spinner.succeed(chalk.green('\\u2713') + ' Installed CLAUDE.md');\r\n } else {\r\n spinner.fail('Failed to install CLAUDE.md');\r\n failures.push('CLAUDE.md');\r\n }\r\n }\r\n\r\n // Write VERSION file\r\n const versionDest = path.join(targetDir, 'maxsim', 'VERSION');\r\n fs.writeFileSync(versionDest, pkg.version);\r\n if (verifyFileInstalled(versionDest, 'VERSION')) {\r\n console.log(\r\n ` ${chalk.green('\\u2713')} Wrote VERSION (${pkg.version})`,\r\n );\r\n } else {\r\n failures.push('VERSION');\r\n }\r\n\r\n if (!isCodex) {\r\n // Write package.json to force CommonJS mode for MAXSIM scripts\r\n const pkgJsonDest = path.join(targetDir, 'package.json');\r\n fs.writeFileSync(pkgJsonDest, '{\"type\":\"commonjs\"}\\n');\r\n console.log(\r\n ` ${chalk.green('\\u2713')} Wrote package.json (CommonJS mode)`,\r\n );\r\n\r\n // Install maxsim-tools.cjs binary\r\n const toolSrc = path.resolve(__dirname, 'cli.cjs');\r\n const binDir = path.join(targetDir, 'maxsim', 'bin');\r\n const toolDest = path.join(binDir, 'maxsim-tools.cjs');\r\n if (fs.existsSync(toolSrc)) {\r\n fs.mkdirSync(binDir, { recursive: true });\r\n fs.copyFileSync(toolSrc, toolDest);\r\n console.log(` ${chalk.green('\\u2713')} Installed maxsim-tools.cjs`);\r\n } else {\r\n console.warn(` ${chalk.yellow('!')} cli.cjs not found at ${toolSrc} — maxsim-tools.cjs not installed`);\r\n failures.push('maxsim-tools.cjs');\r\n }\r\n\r\n // Install mcp-server.cjs\r\n const mcpSrc = path.resolve(__dirname, 'mcp-server.cjs');\r\n const mcpDest = path.join(binDir, 'mcp-server.cjs');\r\n if (fs.existsSync(mcpSrc)) {\r\n fs.mkdirSync(binDir, { recursive: true });\r\n fs.copyFileSync(mcpSrc, mcpDest);\r\n console.log(` ${chalk.green('\\u2713')} Installed mcp-server.cjs`);\r\n } else {\r\n console.warn(` ${chalk.yellow('!')} mcp-server.cjs not found — MCP server not installed`);\r\n }\r\n\r\n // Install hooks\r\n installHookFiles(targetDir, runtime, isGlobal, failures);\r\n }\r\n\r\n // Copy dashboard\r\n const dashboardSrc = path.resolve(__dirname, 'assets', 'dashboard');\r\n if (fs.existsSync(dashboardSrc)) {\r\n let networkMode = false;\r\n try {\r\n networkMode = await confirm({\r\n message: 'Allow dashboard to be accessible on your local network? (adds firewall rule, enables QR code)',\r\n default: false,\r\n });\r\n } catch {\r\n // Non-interactive terminal — default to false\r\n }\r\n\r\n spinner = ora({ text: 'Installing dashboard...', color: 'cyan' }).start();\r\n const dashboardDest = path.join(targetDir, 'dashboard');\r\n safeRmDir(dashboardDest);\r\n copyDirRecursive(dashboardSrc, dashboardDest);\r\n\r\n const dashboardConfigDest = path.join(targetDir, 'dashboard.json');\r\n const projectCwd = isGlobal ? targetDir : process.cwd();\r\n fs.writeFileSync(dashboardConfigDest, JSON.stringify({ projectCwd, networkMode }, null, 2) + '\\n');\r\n\r\n if (fs.existsSync(path.join(dashboardDest, 'server.js'))) {\r\n spinner.succeed(chalk.green('\\u2713') + ' Installed dashboard');\r\n } else {\r\n spinner.succeed(chalk.green('\\u2713') + ' Installed dashboard (server.js not found in bundle)');\r\n }\r\n\r\n if (networkMode) {\r\n applyFirewallRule(3333);\r\n }\r\n }\r\n\r\n // Write .mcp.json for Claude Code MCP server auto-discovery\r\n if (!isOpencode && !isCodex && !isGemini) {\r\n const mcpJsonPath = isGlobal\r\n ? path.join(targetDir, '..', '.mcp.json')\r\n : path.join(process.cwd(), '.mcp.json');\r\n let mcpConfig: Record = {};\r\n\r\n if (fs.existsSync(mcpJsonPath)) {\r\n try {\r\n mcpConfig = JSON.parse(fs.readFileSync(mcpJsonPath, 'utf-8'));\r\n } catch {\r\n // Corrupted file — start fresh\r\n }\r\n }\r\n\r\n const mcpServers = (mcpConfig.mcpServers as Record) ?? {};\r\n mcpServers['maxsim'] = {\r\n command: 'node',\r\n args: ['.claude/maxsim/bin/mcp-server.cjs'],\r\n env: {},\r\n };\r\n mcpConfig.mcpServers = mcpServers;\r\n\r\n fs.writeFileSync(mcpJsonPath, JSON.stringify(mcpConfig, null, 2) + '\\n', 'utf-8');\r\n console.log(` ${chalk.green('\\u2713')} Configured .mcp.json for MCP server auto-discovery`);\r\n }\r\n\r\n if (failures.length > 0) {\r\n console.error(\r\n `\\n ${chalk.yellow('Installation incomplete!')} Failed: ${failures.join(', ')}`,\r\n );\r\n process.exit(1);\r\n }\r\n\r\n // Write file manifest for future modification detection\r\n writeManifest(targetDir, runtime);\r\n console.log(\r\n ` ${chalk.green('\\u2713')} Wrote file manifest (${MANIFEST_NAME})`,\r\n );\r\n\r\n // Report any backed-up local patches\r\n reportLocalPatches(targetDir, runtime);\r\n\r\n if (isCodex) {\r\n return {\r\n settingsPath: null,\r\n settings: null,\r\n statuslineCommand: null,\r\n runtime,\r\n };\r\n }\r\n\r\n // Configure statusline and hooks in settings.json\r\n const { settingsPath, settings, statuslineCommand } = configureSettingsHooks(targetDir, runtime, isGlobal);\r\n\r\n // Enable experimental agents for Gemini CLI\r\n if (isGemini) {\r\n if (!settings.experimental) {\r\n settings.experimental = {};\r\n }\r\n const experimental = settings.experimental as Record;\r\n if (!experimental.enableAgents) {\r\n experimental.enableAgents = true;\r\n console.log(\r\n ` ${chalk.green('\\u2713')} Enabled experimental agents`,\r\n );\r\n }\r\n }\r\n\r\n return { settingsPath, settings, statuslineCommand, runtime };\r\n}\r\n\r\n/**\r\n * Prompt for runtime selection (multi-select)\r\n */\r\nasync function promptRuntime(): Promise {\r\n const selected = await checkbox({\r\n message: 'Which runtime(s) would you like to install for?',\r\n choices: [\r\n { name: 'Claude Code ' + chalk.dim('(~/.claude)'), value: 'claude', checked: true },\r\n { name: 'OpenCode ' + chalk.dim('(~/.config/opencode)') + ' — open source, free models', value: 'opencode' },\r\n { name: 'Gemini ' + chalk.dim('(~/.gemini)'), value: 'gemini' },\r\n { name: 'Codex ' + chalk.dim('(~/.codex)'), value: 'codex' },\r\n ],\r\n validate: (choices) => choices.length > 0 || 'Please select at least one runtime',\r\n });\r\n return selected;\r\n}\r\n\r\n/**\r\n * Prompt for install location\r\n */\r\nasync function promptLocation(runtimes: RuntimeName[]): Promise {\r\n if (!process.stdin.isTTY) {\r\n console.log(\r\n chalk.yellow('Non-interactive terminal detected, defaulting to global install') + '\\n',\r\n );\r\n return true; // isGlobal\r\n }\r\n\r\n const pathExamples = runtimes\r\n .map((r) => getGlobalDir(r, explicitConfigDir).replace(os.homedir(), '~'))\r\n .join(', ');\r\n\r\n const localExamples = runtimes.map((r) => `./${getDirName(r)}`).join(', ');\r\n\r\n const choice = await select<'global' | 'local'>({\r\n message: 'Where would you like to install?',\r\n choices: [\r\n {\r\n name: 'Global ' + chalk.dim(`(${pathExamples})`) + ' — available in all projects',\r\n value: 'global',\r\n },\r\n {\r\n name: 'Local ' + chalk.dim(`(${localExamples})`) + ' — this project only',\r\n value: 'local',\r\n },\r\n ],\r\n });\r\n\r\n return choice === 'global';\r\n}\r\n\r\n/**\r\n * Prompt whether to enable Agent Teams (Claude only, experimental feature)\r\n */\r\nasync function promptAgentTeams(): Promise {\r\n console.log();\r\n console.log(chalk.cyan(' Agent Teams') + chalk.dim(' (experimental)'));\r\n console.log(chalk.dim(' Coordinate multiple Claude Code instances working in parallel.'));\r\n console.log(chalk.dim(' Enables CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS in settings.json.'));\r\n console.log();\r\n\r\n return confirm({\r\n message: 'Enable Agent Teams?',\r\n default: false,\r\n });\r\n}\r\n\r\n/**\r\n * Install MAXSIM for all selected runtimes\r\n */\r\nasync function installAllRuntimes(\r\n runtimes: RuntimeName[],\r\n isGlobal: boolean,\r\n isInteractive: boolean,\r\n): Promise {\r\n const results: InstallResult[] = [];\r\n\r\n for (const runtime of runtimes) {\r\n const result = await install(isGlobal, runtime);\r\n results.push(result);\r\n }\r\n\r\n const statuslineRuntimes: RuntimeName[] = ['claude', 'gemini'];\r\n const primaryStatuslineResult = results.find((r) =>\r\n statuslineRuntimes.includes(r.runtime),\r\n );\r\n\r\n let shouldInstallStatusline = false;\r\n if (primaryStatuslineResult && primaryStatuslineResult.settings) {\r\n shouldInstallStatusline = await handleStatusline(\r\n primaryStatuslineResult.settings,\r\n isInteractive,\r\n forceStatusline,\r\n );\r\n }\r\n\r\n // Prompt for Agent Teams if Claude is in the selected runtimes\r\n let enableAgentTeams = false;\r\n if (isInteractive && runtimes.includes('claude')) {\r\n enableAgentTeams = await promptAgentTeams();\r\n }\r\n\r\n for (const result of results) {\r\n const useStatusline =\r\n statuslineRuntimes.includes(result.runtime) && shouldInstallStatusline;\r\n\r\n // Apply Agent Teams setting for Claude\r\n if (result.runtime === 'claude' && enableAgentTeams && result.settings) {\r\n const env = (result.settings.env as Record) ?? {};\r\n env['CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS'] = '1';\r\n result.settings.env = env;\r\n }\r\n\r\n finishInstall(\r\n result.settingsPath,\r\n result.settings,\r\n result.statuslineCommand,\r\n useStatusline,\r\n result.runtime,\r\n isGlobal,\r\n );\r\n }\r\n}\r\n\r\n// Main logic\r\n// Subcommand routing — intercept before install flow\r\nconst subcommand = argv._[0];\r\n\r\n(async () => {\r\n // Dashboard subcommand\r\n if (subcommand === 'dashboard') {\r\n await runDashboardSubcommand(argv);\r\n return;\r\n }\r\n\r\n if (hasGlobal && hasLocal) {\r\n console.error(chalk.yellow('Cannot specify both --global and --local'));\r\n process.exit(1);\r\n } else if (explicitConfigDir && hasLocal) {\r\n console.error(chalk.yellow('Cannot use --config-dir with --local'));\r\n process.exit(1);\r\n } else if (hasUninstall) {\r\n if (!hasGlobal && !hasLocal) {\r\n console.error(chalk.yellow('--uninstall requires --global or --local'));\r\n process.exit(1);\r\n }\r\n const runtimes: RuntimeName[] =\r\n selectedRuntimes.length > 0 ? selectedRuntimes : ['claude'];\r\n for (const runtime of runtimes) {\r\n uninstall(hasGlobal, runtime, explicitConfigDir);\r\n }\r\n } else if (selectedRuntimes.length > 0) {\r\n if (!hasGlobal && !hasLocal) {\r\n const isGlobal = await promptLocation(selectedRuntimes);\r\n await installAllRuntimes(selectedRuntimes, isGlobal, true);\r\n } else {\r\n await installAllRuntimes(selectedRuntimes, hasGlobal, false);\r\n }\r\n } else if (hasGlobal || hasLocal) {\r\n await installAllRuntimes(['claude'], hasGlobal, false);\r\n } else {\r\n if (!process.stdin.isTTY) {\r\n console.log(\r\n chalk.yellow('Non-interactive terminal detected, defaulting to Claude Code global install') + '\\n',\r\n );\r\n await installAllRuntimes(['claude'], true, false);\r\n } else {\r\n const runtimes = await promptRuntime();\r\n const isGlobal = await promptLocation(runtimes);\r\n await installAllRuntimes(runtimes, isGlobal, true);\r\n }\r\n }\r\n})().catch((err: unknown) => {\r\n if (err instanceof Error && err.message.includes('User force closed')) {\r\n // User pressed Ctrl+C during an @inquirer/prompts prompt — exit cleanly\r\n console.log('\\n' + chalk.yellow('Installation cancelled') + '\\n');\r\n process.exit(0);\r\n }\r\n console.error(chalk.red('Unexpected error:'), err);\r\n process.exit(1);\r\n});\r\n"],"x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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"} \ No newline at end of file +{"version":3,"file":"install.cjs","names":["Stream","path","path","path","path","path","path","path","path","path","path","path","styles","process","os","tty","signals","processOk","kExitEmitter","global","ObjectDefineProperty","Emitter","SignalExitBase","signalExitWrap","SignalExitFallback","SignalExit","process","#process","#sigListeners","signals","#emitter","#hupSig","#originalProcessReallyExit","#originalProcessEmit","#loaded","#processEmit","#processReallyExit","process","process","spinners","tty","isUnicodeSupported","process","isUnicodeSupported","isFullWidth","isFullWidth","process","#activeCount","#realStart","#realStop","#stdin","#stdinWasPaused","#stdinWasRaw","#handleInputBound","#isInternalWrite","#deferRenderTimer","#tryRender","#getFullPrefixText","#getFullSuffixText","#options","process","#stream","#linesToClear","#frameIndex","#computeLineCountFrom","#spinner","isUnicodeSupported","cliSpinners","#id","#formatAffix","#lastFrameTime","#internalWrite","#hookedStreams","#hookedWrite","#hookStream","#stringifyChunk","#chunkTerminatesLine","#clearRenderDeferral","#scheduleRenderDeferral","#drainHandler","#buildOutputLine","#isDiscardingStdin","#installHook","#uninstallHook","logSymbols.success","logSymbols.error","logSymbols.warning","logSymbols.info","AsyncLocalStorage","AsyncResource","AsyncResource","process","NO_TRUNCATION","fastStringTruncatedWidth","ESC","stringWidth","#isTTY","#destSrc","#proxy","global","process","#process","#sigListeners","#emitter","#hupSig","#originalProcessReallyExit","#originalProcessEmit","#loaded","#processEmit","#processReallyExit","MuteStream","readline","onSignalExit","AsyncResource","isSelectable","isNavigable","normalizeChoices","path","os","fs","getGlobalDir","path","os","getConfigDirFromHome","transformContent","getOpencodeGlobalDir","path","os","getGlobalDir","getConfigDirFromHome","transformContent","getGlobalDir","path","os","getConfigDirFromHome","transformContent","getGlobalDir","path","os","getConfigDirFromHome","fs","path","path","fs","os","path","fs","os","path","fs","confirm","fs","path","fs","crypto","path","path","fs","path","os","fs","path","os","fs","confirm","checkbox","select"],"sources":["../../../../../../node_modules/universalify/index.js","../../../../../../node_modules/graceful-fs/polyfills.js","../../../../../../node_modules/graceful-fs/legacy-streams.js","../../../../../../node_modules/graceful-fs/clone.js","../../../../../../node_modules/graceful-fs/graceful-fs.js","../../../../../../node_modules/fs-extra/lib/fs/index.js","../../../../../../node_modules/fs-extra/lib/mkdirs/utils.js","../../../../../../node_modules/fs-extra/lib/mkdirs/make-dir.js","../../../../../../node_modules/fs-extra/lib/mkdirs/index.js","../../../../../../node_modules/fs-extra/lib/path-exists/index.js","../../../../../../node_modules/fs-extra/lib/util/utimes.js","../../../../../../node_modules/fs-extra/lib/util/stat.js","../../../../../../node_modules/fs-extra/lib/util/async.js","../../../../../../node_modules/fs-extra/lib/copy/copy.js","../../../../../../node_modules/fs-extra/lib/copy/copy-sync.js","../../../../../../node_modules/fs-extra/lib/copy/index.js","../../../../../../node_modules/fs-extra/lib/remove/index.js","../../../../../../node_modules/fs-extra/lib/empty/index.js","../../../../../../node_modules/fs-extra/lib/ensure/file.js","../../../../../../node_modules/fs-extra/lib/ensure/link.js","../../../../../../node_modules/fs-extra/lib/ensure/symlink-paths.js","../../../../../../node_modules/fs-extra/lib/ensure/symlink-type.js","../../../../../../node_modules/fs-extra/lib/ensure/symlink.js","../../../../../../node_modules/fs-extra/lib/ensure/index.js","../../../../../../node_modules/jsonfile/utils.js","../../../../../../node_modules/jsonfile/index.js","../../../../../../node_modules/fs-extra/lib/json/jsonfile.js","../../../../../../node_modules/fs-extra/lib/output-file/index.js","../../../../../../node_modules/fs-extra/lib/json/output-json.js","../../../../../../node_modules/fs-extra/lib/json/output-json-sync.js","../../../../../../node_modules/fs-extra/lib/json/index.js","../../../../../../node_modules/fs-extra/lib/move/move.js","../../../../../../node_modules/fs-extra/lib/move/move-sync.js","../../../../../../node_modules/fs-extra/lib/move/index.js","../../../../../../node_modules/fs-extra/lib/index.js","../../../../../../node_modules/chalk/source/vendor/ansi-styles/index.js","../../../../../../node_modules/chalk/source/vendor/supports-color/index.js","../../../../../../node_modules/chalk/source/utilities.js","../../../../../../node_modules/chalk/source/index.js","../../../../../../node_modules/mimic-function/index.js","../../../../../../node_modules/restore-cursor/node_modules/onetime/index.js","../../../../../../node_modules/restore-cursor/node_modules/signal-exit/dist/mjs/signals.js","../../../../../../node_modules/restore-cursor/node_modules/signal-exit/dist/mjs/index.js","../../../../../../node_modules/restore-cursor/index.js","../../../../../../node_modules/cli-cursor/index.js","../../../../../../node_modules/cli-spinners/spinners.json","../../../../../../node_modules/cli-spinners/index.js","../../../../../../node_modules/yoctocolors/base.js","../../../../../../node_modules/is-unicode-supported/index.js","../../../../../../node_modules/log-symbols/symbols.js","../../../../../../node_modules/ansi-regex/index.js","../../../../../../node_modules/ora/node_modules/strip-ansi/index.js","../../../../../../node_modules/get-east-asian-width/lookup-data.js","../../../../../../node_modules/get-east-asian-width/utilities.js","../../../../../../node_modules/get-east-asian-width/lookup.js","../../../../../../node_modules/get-east-asian-width/index.js","../../../../../../node_modules/ora/node_modules/string-width/index.js","../../../../../../node_modules/is-interactive/index.js","../../../../../../node_modules/stdin-discarder/index.js","../../../../../../node_modules/ora/index.js","../../../../../../node_modules/@inquirer/core/dist/lib/key.js","../../../../../../node_modules/@inquirer/core/dist/lib/errors.js","../../../../../../node_modules/@inquirer/core/dist/lib/hook-engine.js","../../../../../../node_modules/@inquirer/core/dist/lib/use-state.js","../../../../../../node_modules/@inquirer/core/dist/lib/use-effect.js","../../../../../../node_modules/@inquirer/figures/dist/index.js","../../../../../../node_modules/@inquirer/core/dist/lib/theme.js","../../../../../../node_modules/@inquirer/core/dist/lib/make-theme.js","../../../../../../node_modules/@inquirer/core/dist/lib/use-prefix.js","../../../../../../node_modules/@inquirer/core/dist/lib/use-memo.js","../../../../../../node_modules/@inquirer/core/dist/lib/use-ref.js","../../../../../../node_modules/@inquirer/core/dist/lib/use-keypress.js","../../../../../../node_modules/cli-width/index.js","../../../../../../node_modules/fast-string-truncated-width/dist/utils.js","../../../../../../node_modules/fast-string-truncated-width/dist/index.js","../../../../../../node_modules/fast-string-width/dist/index.js","../../../../../../node_modules/fast-wrap-ansi/lib/main.js","../../../../../../node_modules/@inquirer/core/dist/lib/utils.js","../../../../../../node_modules/@inquirer/core/dist/lib/pagination/use-pagination.js","../../../../../../node_modules/mute-stream/lib/index.js","../../../../../../node_modules/@inquirer/core/node_modules/signal-exit/dist/mjs/signals.js","../../../../../../node_modules/@inquirer/core/node_modules/signal-exit/dist/mjs/index.js","../../../../../../node_modules/@inquirer/ansi/dist/index.js","../../../../../../node_modules/@inquirer/core/dist/lib/screen-manager.js","../../../../../../node_modules/@inquirer/core/dist/lib/promise-polyfill.js","../../../../../../node_modules/@inquirer/core/dist/lib/create-prompt.js","../../../../../../node_modules/@inquirer/core/dist/lib/Separator.js","../../../../../../node_modules/@inquirer/checkbox/dist/index.js","../../../../../../node_modules/@inquirer/confirm/dist/index.js","../../../../../../node_modules/@inquirer/select/dist/index.js","../../../../../../node_modules/minimist/index.js","../src/adapters/base.ts","../src/adapters/claude.ts","../src/adapters/transforms/tool-maps.ts","../src/adapters/transforms/content.ts","../src/adapters/transforms/frontmatter.ts","../src/adapters/opencode.ts","../src/adapters/gemini.ts","../src/adapters/codex.ts","../src/install/shared.ts","../src/install/adapters.ts","../src/install/dashboard.ts","../src/install/hooks.ts","../src/install/copy.ts","../src/install/manifest.ts","../src/install/patches.ts","../src/install/uninstall.ts","../src/install/index.ts"],"sourcesContent":["'use strict'\n\nexports.fromCallback = function (fn) {\n return Object.defineProperty(function (...args) {\n if (typeof args[args.length - 1] === 'function') fn.apply(this, args)\n else {\n return new Promise((resolve, reject) => {\n args.push((err, res) => (err != null) ? reject(err) : resolve(res))\n fn.apply(this, args)\n })\n }\n }, 'name', { value: fn.name })\n}\n\nexports.fromPromise = function (fn) {\n return Object.defineProperty(function (...args) {\n const cb = args[args.length - 1]\n if (typeof cb !== 'function') return fn.apply(this, args)\n else {\n args.pop()\n fn.apply(this, args).then(r => cb(null, r), cb)\n }\n }, 'name', { value: fn.name })\n}\n","var constants = require('constants')\n\nvar origCwd = process.cwd\nvar cwd = null\n\nvar platform = process.env.GRACEFUL_FS_PLATFORM || process.platform\n\nprocess.cwd = function() {\n if (!cwd)\n cwd = origCwd.call(process)\n return cwd\n}\ntry {\n process.cwd()\n} catch (er) {}\n\n// This check is needed until node.js 12 is required\nif (typeof process.chdir === 'function') {\n var chdir = process.chdir\n process.chdir = function (d) {\n cwd = null\n chdir.call(process, d)\n }\n if (Object.setPrototypeOf) Object.setPrototypeOf(process.chdir, chdir)\n}\n\nmodule.exports = patch\n\nfunction patch (fs) {\n // (re-)implement some things that are known busted or missing.\n\n // lchmod, broken prior to 0.6.2\n // back-port the fix here.\n if (constants.hasOwnProperty('O_SYMLINK') &&\n process.version.match(/^v0\\.6\\.[0-2]|^v0\\.5\\./)) {\n patchLchmod(fs)\n }\n\n // lutimes implementation, or no-op\n if (!fs.lutimes) {\n patchLutimes(fs)\n }\n\n // https://github.com/isaacs/node-graceful-fs/issues/4\n // Chown should not fail on einval or eperm if non-root.\n // It should not fail on enosys ever, as this just indicates\n // that a fs doesn't support the intended operation.\n\n fs.chown = chownFix(fs.chown)\n fs.fchown = chownFix(fs.fchown)\n fs.lchown = chownFix(fs.lchown)\n\n fs.chmod = chmodFix(fs.chmod)\n fs.fchmod = chmodFix(fs.fchmod)\n fs.lchmod = chmodFix(fs.lchmod)\n\n fs.chownSync = chownFixSync(fs.chownSync)\n fs.fchownSync = chownFixSync(fs.fchownSync)\n fs.lchownSync = chownFixSync(fs.lchownSync)\n\n fs.chmodSync = chmodFixSync(fs.chmodSync)\n fs.fchmodSync = chmodFixSync(fs.fchmodSync)\n fs.lchmodSync = chmodFixSync(fs.lchmodSync)\n\n fs.stat = statFix(fs.stat)\n fs.fstat = statFix(fs.fstat)\n fs.lstat = statFix(fs.lstat)\n\n fs.statSync = statFixSync(fs.statSync)\n fs.fstatSync = statFixSync(fs.fstatSync)\n fs.lstatSync = statFixSync(fs.lstatSync)\n\n // if lchmod/lchown do not exist, then make them no-ops\n if (fs.chmod && !fs.lchmod) {\n fs.lchmod = function (path, mode, cb) {\n if (cb) process.nextTick(cb)\n }\n fs.lchmodSync = function () {}\n }\n if (fs.chown && !fs.lchown) {\n fs.lchown = function (path, uid, gid, cb) {\n if (cb) process.nextTick(cb)\n }\n fs.lchownSync = function () {}\n }\n\n // on Windows, A/V software can lock the directory, causing this\n // to fail with an EACCES or EPERM if the directory contains newly\n // created files. Try again on failure, for up to 60 seconds.\n\n // Set the timeout this long because some Windows Anti-Virus, such as Parity\n // bit9, may lock files for up to a minute, causing npm package install\n // failures. Also, take care to yield the scheduler. Windows scheduling gives\n // CPU to a busy looping process, which can cause the program causing the lock\n // contention to be starved of CPU by node, so the contention doesn't resolve.\n if (platform === \"win32\") {\n fs.rename = typeof fs.rename !== 'function' ? fs.rename\n : (function (fs$rename) {\n function rename (from, to, cb) {\n var start = Date.now()\n var backoff = 0;\n fs$rename(from, to, function CB (er) {\n if (er\n && (er.code === \"EACCES\" || er.code === \"EPERM\" || er.code === \"EBUSY\")\n && Date.now() - start < 60000) {\n setTimeout(function() {\n fs.stat(to, function (stater, st) {\n if (stater && stater.code === \"ENOENT\")\n fs$rename(from, to, CB);\n else\n cb(er)\n })\n }, backoff)\n if (backoff < 100)\n backoff += 10;\n return;\n }\n if (cb) cb(er)\n })\n }\n if (Object.setPrototypeOf) Object.setPrototypeOf(rename, fs$rename)\n return rename\n })(fs.rename)\n }\n\n // if read() returns EAGAIN, then just try it again.\n fs.read = typeof fs.read !== 'function' ? fs.read\n : (function (fs$read) {\n function read (fd, buffer, offset, length, position, callback_) {\n var callback\n if (callback_ && typeof callback_ === 'function') {\n var eagCounter = 0\n callback = function (er, _, __) {\n if (er && er.code === 'EAGAIN' && eagCounter < 10) {\n eagCounter ++\n return fs$read.call(fs, fd, buffer, offset, length, position, callback)\n }\n callback_.apply(this, arguments)\n }\n }\n return fs$read.call(fs, fd, buffer, offset, length, position, callback)\n }\n\n // This ensures `util.promisify` works as it does for native `fs.read`.\n if (Object.setPrototypeOf) Object.setPrototypeOf(read, fs$read)\n return read\n })(fs.read)\n\n fs.readSync = typeof fs.readSync !== 'function' ? fs.readSync\n : (function (fs$readSync) { return function (fd, buffer, offset, length, position) {\n var eagCounter = 0\n while (true) {\n try {\n return fs$readSync.call(fs, fd, buffer, offset, length, position)\n } catch (er) {\n if (er.code === 'EAGAIN' && eagCounter < 10) {\n eagCounter ++\n continue\n }\n throw er\n }\n }\n }})(fs.readSync)\n\n function patchLchmod (fs) {\n fs.lchmod = function (path, mode, callback) {\n fs.open( path\n , constants.O_WRONLY | constants.O_SYMLINK\n , mode\n , function (err, fd) {\n if (err) {\n if (callback) callback(err)\n return\n }\n // prefer to return the chmod error, if one occurs,\n // but still try to close, and report closing errors if they occur.\n fs.fchmod(fd, mode, function (err) {\n fs.close(fd, function(err2) {\n if (callback) callback(err || err2)\n })\n })\n })\n }\n\n fs.lchmodSync = function (path, mode) {\n var fd = fs.openSync(path, constants.O_WRONLY | constants.O_SYMLINK, mode)\n\n // prefer to return the chmod error, if one occurs,\n // but still try to close, and report closing errors if they occur.\n var threw = true\n var ret\n try {\n ret = fs.fchmodSync(fd, mode)\n threw = false\n } finally {\n if (threw) {\n try {\n fs.closeSync(fd)\n } catch (er) {}\n } else {\n fs.closeSync(fd)\n }\n }\n return ret\n }\n }\n\n function patchLutimes (fs) {\n if (constants.hasOwnProperty(\"O_SYMLINK\") && fs.futimes) {\n fs.lutimes = function (path, at, mt, cb) {\n fs.open(path, constants.O_SYMLINK, function (er, fd) {\n if (er) {\n if (cb) cb(er)\n return\n }\n fs.futimes(fd, at, mt, function (er) {\n fs.close(fd, function (er2) {\n if (cb) cb(er || er2)\n })\n })\n })\n }\n\n fs.lutimesSync = function (path, at, mt) {\n var fd = fs.openSync(path, constants.O_SYMLINK)\n var ret\n var threw = true\n try {\n ret = fs.futimesSync(fd, at, mt)\n threw = false\n } finally {\n if (threw) {\n try {\n fs.closeSync(fd)\n } catch (er) {}\n } else {\n fs.closeSync(fd)\n }\n }\n return ret\n }\n\n } else if (fs.futimes) {\n fs.lutimes = function (_a, _b, _c, cb) { if (cb) process.nextTick(cb) }\n fs.lutimesSync = function () {}\n }\n }\n\n function chmodFix (orig) {\n if (!orig) return orig\n return function (target, mode, cb) {\n return orig.call(fs, target, mode, function (er) {\n if (chownErOk(er)) er = null\n if (cb) cb.apply(this, arguments)\n })\n }\n }\n\n function chmodFixSync (orig) {\n if (!orig) return orig\n return function (target, mode) {\n try {\n return orig.call(fs, target, mode)\n } catch (er) {\n if (!chownErOk(er)) throw er\n }\n }\n }\n\n\n function chownFix (orig) {\n if (!orig) return orig\n return function (target, uid, gid, cb) {\n return orig.call(fs, target, uid, gid, function (er) {\n if (chownErOk(er)) er = null\n if (cb) cb.apply(this, arguments)\n })\n }\n }\n\n function chownFixSync (orig) {\n if (!orig) return orig\n return function (target, uid, gid) {\n try {\n return orig.call(fs, target, uid, gid)\n } catch (er) {\n if (!chownErOk(er)) throw er\n }\n }\n }\n\n function statFix (orig) {\n if (!orig) return orig\n // Older versions of Node erroneously returned signed integers for\n // uid + gid.\n return function (target, options, cb) {\n if (typeof options === 'function') {\n cb = options\n options = null\n }\n function callback (er, stats) {\n if (stats) {\n if (stats.uid < 0) stats.uid += 0x100000000\n if (stats.gid < 0) stats.gid += 0x100000000\n }\n if (cb) cb.apply(this, arguments)\n }\n return options ? orig.call(fs, target, options, callback)\n : orig.call(fs, target, callback)\n }\n }\n\n function statFixSync (orig) {\n if (!orig) return orig\n // Older versions of Node erroneously returned signed integers for\n // uid + gid.\n return function (target, options) {\n var stats = options ? orig.call(fs, target, options)\n : orig.call(fs, target)\n if (stats) {\n if (stats.uid < 0) stats.uid += 0x100000000\n if (stats.gid < 0) stats.gid += 0x100000000\n }\n return stats;\n }\n }\n\n // ENOSYS means that the fs doesn't support the op. Just ignore\n // that, because it doesn't matter.\n //\n // if there's no getuid, or if getuid() is something other\n // than 0, and the error is EINVAL or EPERM, then just ignore\n // it.\n //\n // This specific case is a silent failure in cp, install, tar,\n // and most other unix tools that manage permissions.\n //\n // When running as root, or if other types of errors are\n // encountered, then it's strict.\n function chownErOk (er) {\n if (!er)\n return true\n\n if (er.code === \"ENOSYS\")\n return true\n\n var nonroot = !process.getuid || process.getuid() !== 0\n if (nonroot) {\n if (er.code === \"EINVAL\" || er.code === \"EPERM\")\n return true\n }\n\n return false\n }\n}\n","var Stream = require('stream').Stream\n\nmodule.exports = legacy\n\nfunction legacy (fs) {\n return {\n ReadStream: ReadStream,\n WriteStream: WriteStream\n }\n\n function ReadStream (path, options) {\n if (!(this instanceof ReadStream)) return new ReadStream(path, options);\n\n Stream.call(this);\n\n var self = this;\n\n this.path = path;\n this.fd = null;\n this.readable = true;\n this.paused = false;\n\n this.flags = 'r';\n this.mode = 438; /*=0666*/\n this.bufferSize = 64 * 1024;\n\n options = options || {};\n\n // Mixin options into this\n var keys = Object.keys(options);\n for (var index = 0, length = keys.length; index < length; index++) {\n var key = keys[index];\n this[key] = options[key];\n }\n\n if (this.encoding) this.setEncoding(this.encoding);\n\n if (this.start !== undefined) {\n if ('number' !== typeof this.start) {\n throw TypeError('start must be a Number');\n }\n if (this.end === undefined) {\n this.end = Infinity;\n } else if ('number' !== typeof this.end) {\n throw TypeError('end must be a Number');\n }\n\n if (this.start > this.end) {\n throw new Error('start must be <= end');\n }\n\n this.pos = this.start;\n }\n\n if (this.fd !== null) {\n process.nextTick(function() {\n self._read();\n });\n return;\n }\n\n fs.open(this.path, this.flags, this.mode, function (err, fd) {\n if (err) {\n self.emit('error', err);\n self.readable = false;\n return;\n }\n\n self.fd = fd;\n self.emit('open', fd);\n self._read();\n })\n }\n\n function WriteStream (path, options) {\n if (!(this instanceof WriteStream)) return new WriteStream(path, options);\n\n Stream.call(this);\n\n this.path = path;\n this.fd = null;\n this.writable = true;\n\n this.flags = 'w';\n this.encoding = 'binary';\n this.mode = 438; /*=0666*/\n this.bytesWritten = 0;\n\n options = options || {};\n\n // Mixin options into this\n var keys = Object.keys(options);\n for (var index = 0, length = keys.length; index < length; index++) {\n var key = keys[index];\n this[key] = options[key];\n }\n\n if (this.start !== undefined) {\n if ('number' !== typeof this.start) {\n throw TypeError('start must be a Number');\n }\n if (this.start < 0) {\n throw new Error('start must be >= zero');\n }\n\n this.pos = this.start;\n }\n\n this.busy = false;\n this._queue = [];\n\n if (this.fd === null) {\n this._open = fs.open;\n this._queue.push([this._open, this.path, this.flags, this.mode, undefined]);\n this.flush();\n }\n }\n}\n","'use strict'\n\nmodule.exports = clone\n\nvar getPrototypeOf = Object.getPrototypeOf || function (obj) {\n return obj.__proto__\n}\n\nfunction clone (obj) {\n if (obj === null || typeof obj !== 'object')\n return obj\n\n if (obj instanceof Object)\n var copy = { __proto__: getPrototypeOf(obj) }\n else\n var copy = Object.create(null)\n\n Object.getOwnPropertyNames(obj).forEach(function (key) {\n Object.defineProperty(copy, key, Object.getOwnPropertyDescriptor(obj, key))\n })\n\n return copy\n}\n","var fs = require('fs')\nvar polyfills = require('./polyfills.js')\nvar legacy = require('./legacy-streams.js')\nvar clone = require('./clone.js')\n\nvar util = require('util')\n\n/* istanbul ignore next - node 0.x polyfill */\nvar gracefulQueue\nvar previousSymbol\n\n/* istanbul ignore else - node 0.x polyfill */\nif (typeof Symbol === 'function' && typeof Symbol.for === 'function') {\n gracefulQueue = Symbol.for('graceful-fs.queue')\n // This is used in testing by future versions\n previousSymbol = Symbol.for('graceful-fs.previous')\n} else {\n gracefulQueue = '___graceful-fs.queue'\n previousSymbol = '___graceful-fs.previous'\n}\n\nfunction noop () {}\n\nfunction publishQueue(context, queue) {\n Object.defineProperty(context, gracefulQueue, {\n get: function() {\n return queue\n }\n })\n}\n\nvar debug = noop\nif (util.debuglog)\n debug = util.debuglog('gfs4')\nelse if (/\\bgfs4\\b/i.test(process.env.NODE_DEBUG || ''))\n debug = function() {\n var m = util.format.apply(util, arguments)\n m = 'GFS4: ' + m.split(/\\n/).join('\\nGFS4: ')\n console.error(m)\n }\n\n// Once time initialization\nif (!fs[gracefulQueue]) {\n // This queue can be shared by multiple loaded instances\n var queue = global[gracefulQueue] || []\n publishQueue(fs, queue)\n\n // Patch fs.close/closeSync to shared queue version, because we need\n // to retry() whenever a close happens *anywhere* in the program.\n // This is essential when multiple graceful-fs instances are\n // in play at the same time.\n fs.close = (function (fs$close) {\n function close (fd, cb) {\n return fs$close.call(fs, fd, function (err) {\n // This function uses the graceful-fs shared queue\n if (!err) {\n resetQueue()\n }\n\n if (typeof cb === 'function')\n cb.apply(this, arguments)\n })\n }\n\n Object.defineProperty(close, previousSymbol, {\n value: fs$close\n })\n return close\n })(fs.close)\n\n fs.closeSync = (function (fs$closeSync) {\n function closeSync (fd) {\n // This function uses the graceful-fs shared queue\n fs$closeSync.apply(fs, arguments)\n resetQueue()\n }\n\n Object.defineProperty(closeSync, previousSymbol, {\n value: fs$closeSync\n })\n return closeSync\n })(fs.closeSync)\n\n if (/\\bgfs4\\b/i.test(process.env.NODE_DEBUG || '')) {\n process.on('exit', function() {\n debug(fs[gracefulQueue])\n require('assert').equal(fs[gracefulQueue].length, 0)\n })\n }\n}\n\nif (!global[gracefulQueue]) {\n publishQueue(global, fs[gracefulQueue]);\n}\n\nmodule.exports = patch(clone(fs))\nif (process.env.TEST_GRACEFUL_FS_GLOBAL_PATCH && !fs.__patched) {\n module.exports = patch(fs)\n fs.__patched = true;\n}\n\nfunction patch (fs) {\n // Everything that references the open() function needs to be in here\n polyfills(fs)\n fs.gracefulify = patch\n\n fs.createReadStream = createReadStream\n fs.createWriteStream = createWriteStream\n var fs$readFile = fs.readFile\n fs.readFile = readFile\n function readFile (path, options, cb) {\n if (typeof options === 'function')\n cb = options, options = null\n\n return go$readFile(path, options, cb)\n\n function go$readFile (path, options, cb, startTime) {\n return fs$readFile(path, options, function (err) {\n if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))\n enqueue([go$readFile, [path, options, cb], err, startTime || Date.now(), Date.now()])\n else {\n if (typeof cb === 'function')\n cb.apply(this, arguments)\n }\n })\n }\n }\n\n var fs$writeFile = fs.writeFile\n fs.writeFile = writeFile\n function writeFile (path, data, options, cb) {\n if (typeof options === 'function')\n cb = options, options = null\n\n return go$writeFile(path, data, options, cb)\n\n function go$writeFile (path, data, options, cb, startTime) {\n return fs$writeFile(path, data, options, function (err) {\n if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))\n enqueue([go$writeFile, [path, data, options, cb], err, startTime || Date.now(), Date.now()])\n else {\n if (typeof cb === 'function')\n cb.apply(this, arguments)\n }\n })\n }\n }\n\n var fs$appendFile = fs.appendFile\n if (fs$appendFile)\n fs.appendFile = appendFile\n function appendFile (path, data, options, cb) {\n if (typeof options === 'function')\n cb = options, options = null\n\n return go$appendFile(path, data, options, cb)\n\n function go$appendFile (path, data, options, cb, startTime) {\n return fs$appendFile(path, data, options, function (err) {\n if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))\n enqueue([go$appendFile, [path, data, options, cb], err, startTime || Date.now(), Date.now()])\n else {\n if (typeof cb === 'function')\n cb.apply(this, arguments)\n }\n })\n }\n }\n\n var fs$copyFile = fs.copyFile\n if (fs$copyFile)\n fs.copyFile = copyFile\n function copyFile (src, dest, flags, cb) {\n if (typeof flags === 'function') {\n cb = flags\n flags = 0\n }\n return go$copyFile(src, dest, flags, cb)\n\n function go$copyFile (src, dest, flags, cb, startTime) {\n return fs$copyFile(src, dest, flags, function (err) {\n if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))\n enqueue([go$copyFile, [src, dest, flags, cb], err, startTime || Date.now(), Date.now()])\n else {\n if (typeof cb === 'function')\n cb.apply(this, arguments)\n }\n })\n }\n }\n\n var fs$readdir = fs.readdir\n fs.readdir = readdir\n var noReaddirOptionVersions = /^v[0-5]\\./\n function readdir (path, options, cb) {\n if (typeof options === 'function')\n cb = options, options = null\n\n var go$readdir = noReaddirOptionVersions.test(process.version)\n ? function go$readdir (path, options, cb, startTime) {\n return fs$readdir(path, fs$readdirCallback(\n path, options, cb, startTime\n ))\n }\n : function go$readdir (path, options, cb, startTime) {\n return fs$readdir(path, options, fs$readdirCallback(\n path, options, cb, startTime\n ))\n }\n\n return go$readdir(path, options, cb)\n\n function fs$readdirCallback (path, options, cb, startTime) {\n return function (err, files) {\n if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))\n enqueue([\n go$readdir,\n [path, options, cb],\n err,\n startTime || Date.now(),\n Date.now()\n ])\n else {\n if (files && files.sort)\n files.sort()\n\n if (typeof cb === 'function')\n cb.call(this, err, files)\n }\n }\n }\n }\n\n if (process.version.substr(0, 4) === 'v0.8') {\n var legStreams = legacy(fs)\n ReadStream = legStreams.ReadStream\n WriteStream = legStreams.WriteStream\n }\n\n var fs$ReadStream = fs.ReadStream\n if (fs$ReadStream) {\n ReadStream.prototype = Object.create(fs$ReadStream.prototype)\n ReadStream.prototype.open = ReadStream$open\n }\n\n var fs$WriteStream = fs.WriteStream\n if (fs$WriteStream) {\n WriteStream.prototype = Object.create(fs$WriteStream.prototype)\n WriteStream.prototype.open = WriteStream$open\n }\n\n Object.defineProperty(fs, 'ReadStream', {\n get: function () {\n return ReadStream\n },\n set: function (val) {\n ReadStream = val\n },\n enumerable: true,\n configurable: true\n })\n Object.defineProperty(fs, 'WriteStream', {\n get: function () {\n return WriteStream\n },\n set: function (val) {\n WriteStream = val\n },\n enumerable: true,\n configurable: true\n })\n\n // legacy names\n var FileReadStream = ReadStream\n Object.defineProperty(fs, 'FileReadStream', {\n get: function () {\n return FileReadStream\n },\n set: function (val) {\n FileReadStream = val\n },\n enumerable: true,\n configurable: true\n })\n var FileWriteStream = WriteStream\n Object.defineProperty(fs, 'FileWriteStream', {\n get: function () {\n return FileWriteStream\n },\n set: function (val) {\n FileWriteStream = val\n },\n enumerable: true,\n configurable: true\n })\n\n function ReadStream (path, options) {\n if (this instanceof ReadStream)\n return fs$ReadStream.apply(this, arguments), this\n else\n return ReadStream.apply(Object.create(ReadStream.prototype), arguments)\n }\n\n function ReadStream$open () {\n var that = this\n open(that.path, that.flags, that.mode, function (err, fd) {\n if (err) {\n if (that.autoClose)\n that.destroy()\n\n that.emit('error', err)\n } else {\n that.fd = fd\n that.emit('open', fd)\n that.read()\n }\n })\n }\n\n function WriteStream (path, options) {\n if (this instanceof WriteStream)\n return fs$WriteStream.apply(this, arguments), this\n else\n return WriteStream.apply(Object.create(WriteStream.prototype), arguments)\n }\n\n function WriteStream$open () {\n var that = this\n open(that.path, that.flags, that.mode, function (err, fd) {\n if (err) {\n that.destroy()\n that.emit('error', err)\n } else {\n that.fd = fd\n that.emit('open', fd)\n }\n })\n }\n\n function createReadStream (path, options) {\n return new fs.ReadStream(path, options)\n }\n\n function createWriteStream (path, options) {\n return new fs.WriteStream(path, options)\n }\n\n var fs$open = fs.open\n fs.open = open\n function open (path, flags, mode, cb) {\n if (typeof mode === 'function')\n cb = mode, mode = null\n\n return go$open(path, flags, mode, cb)\n\n function go$open (path, flags, mode, cb, startTime) {\n return fs$open(path, flags, mode, function (err, fd) {\n if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))\n enqueue([go$open, [path, flags, mode, cb], err, startTime || Date.now(), Date.now()])\n else {\n if (typeof cb === 'function')\n cb.apply(this, arguments)\n }\n })\n }\n }\n\n return fs\n}\n\nfunction enqueue (elem) {\n debug('ENQUEUE', elem[0].name, elem[1])\n fs[gracefulQueue].push(elem)\n retry()\n}\n\n// keep track of the timeout between retry() calls\nvar retryTimer\n\n// reset the startTime and lastTime to now\n// this resets the start of the 60 second overall timeout as well as the\n// delay between attempts so that we'll retry these jobs sooner\nfunction resetQueue () {\n var now = Date.now()\n for (var i = 0; i < fs[gracefulQueue].length; ++i) {\n // entries that are only a length of 2 are from an older version, don't\n // bother modifying those since they'll be retried anyway.\n if (fs[gracefulQueue][i].length > 2) {\n fs[gracefulQueue][i][3] = now // startTime\n fs[gracefulQueue][i][4] = now // lastTime\n }\n }\n // call retry to make sure we're actively processing the queue\n retry()\n}\n\nfunction retry () {\n // clear the timer and remove it to help prevent unintended concurrency\n clearTimeout(retryTimer)\n retryTimer = undefined\n\n if (fs[gracefulQueue].length === 0)\n return\n\n var elem = fs[gracefulQueue].shift()\n var fn = elem[0]\n var args = elem[1]\n // these items may be unset if they were added by an older graceful-fs\n var err = elem[2]\n var startTime = elem[3]\n var lastTime = elem[4]\n\n // if we don't have a startTime we have no way of knowing if we've waited\n // long enough, so go ahead and retry this item now\n if (startTime === undefined) {\n debug('RETRY', fn.name, args)\n fn.apply(null, args)\n } else if (Date.now() - startTime >= 60000) {\n // it's been more than 60 seconds total, bail now\n debug('TIMEOUT', fn.name, args)\n var cb = args.pop()\n if (typeof cb === 'function')\n cb.call(null, err)\n } else {\n // the amount of time between the last attempt and right now\n var sinceAttempt = Date.now() - lastTime\n // the amount of time between when we first tried, and when we last tried\n // rounded up to at least 1\n var sinceStart = Math.max(lastTime - startTime, 1)\n // backoff. wait longer than the total time we've been retrying, but only\n // up to a maximum of 100ms\n var desiredDelay = Math.min(sinceStart * 1.2, 100)\n // it's been long enough since the last retry, do it again\n if (sinceAttempt >= desiredDelay) {\n debug('RETRY', fn.name, args)\n fn.apply(null, args.concat([startTime]))\n } else {\n // if we can't do this job yet, push it to the end of the queue\n // and let the next iteration check again\n fs[gracefulQueue].push(elem)\n }\n }\n\n // schedule our next run if one isn't already scheduled\n if (retryTimer === undefined) {\n retryTimer = setTimeout(retry, 0)\n }\n}\n","'use strict'\n// This is adapted from https://github.com/normalize/mz\n// Copyright (c) 2014-2016 Jonathan Ong me@jongleberry.com and Contributors\nconst u = require('universalify').fromCallback\nconst fs = require('graceful-fs')\n\nconst api = [\n 'access',\n 'appendFile',\n 'chmod',\n 'chown',\n 'close',\n 'copyFile',\n 'cp',\n 'fchmod',\n 'fchown',\n 'fdatasync',\n 'fstat',\n 'fsync',\n 'ftruncate',\n 'futimes',\n 'glob',\n 'lchmod',\n 'lchown',\n 'lutimes',\n 'link',\n 'lstat',\n 'mkdir',\n 'mkdtemp',\n 'open',\n 'opendir',\n 'readdir',\n 'readFile',\n 'readlink',\n 'realpath',\n 'rename',\n 'rm',\n 'rmdir',\n 'stat',\n 'statfs',\n 'symlink',\n 'truncate',\n 'unlink',\n 'utimes',\n 'writeFile'\n].filter(key => {\n // Some commands are not available on some systems. Ex:\n // fs.cp was added in Node.js v16.7.0\n // fs.statfs was added in Node v19.6.0, v18.15.0\n // fs.glob was added in Node.js v22.0.0\n // fs.lchown is not available on at least some Linux\n return typeof fs[key] === 'function'\n})\n\n// Export cloned fs:\nObject.assign(exports, fs)\n\n// Universalify async methods:\napi.forEach(method => {\n exports[method] = u(fs[method])\n})\n\n// We differ from mz/fs in that we still ship the old, broken, fs.exists()\n// since we are a drop-in replacement for the native module\nexports.exists = function (filename, callback) {\n if (typeof callback === 'function') {\n return fs.exists(filename, callback)\n }\n return new Promise(resolve => {\n return fs.exists(filename, resolve)\n })\n}\n\n// fs.read(), fs.write(), fs.readv(), & fs.writev() need special treatment due to multiple callback args\n\nexports.read = function (fd, buffer, offset, length, position, callback) {\n if (typeof callback === 'function') {\n return fs.read(fd, buffer, offset, length, position, callback)\n }\n return new Promise((resolve, reject) => {\n fs.read(fd, buffer, offset, length, position, (err, bytesRead, buffer) => {\n if (err) return reject(err)\n resolve({ bytesRead, buffer })\n })\n })\n}\n\n// Function signature can be\n// fs.write(fd, buffer[, offset[, length[, position]]], callback)\n// OR\n// fs.write(fd, string[, position[, encoding]], callback)\n// We need to handle both cases, so we use ...args\nexports.write = function (fd, buffer, ...args) {\n if (typeof args[args.length - 1] === 'function') {\n return fs.write(fd, buffer, ...args)\n }\n\n return new Promise((resolve, reject) => {\n fs.write(fd, buffer, ...args, (err, bytesWritten, buffer) => {\n if (err) return reject(err)\n resolve({ bytesWritten, buffer })\n })\n })\n}\n\n// Function signature is\n// s.readv(fd, buffers[, position], callback)\n// We need to handle the optional arg, so we use ...args\nexports.readv = function (fd, buffers, ...args) {\n if (typeof args[args.length - 1] === 'function') {\n return fs.readv(fd, buffers, ...args)\n }\n\n return new Promise((resolve, reject) => {\n fs.readv(fd, buffers, ...args, (err, bytesRead, buffers) => {\n if (err) return reject(err)\n resolve({ bytesRead, buffers })\n })\n })\n}\n\n// Function signature is\n// s.writev(fd, buffers[, position], callback)\n// We need to handle the optional arg, so we use ...args\nexports.writev = function (fd, buffers, ...args) {\n if (typeof args[args.length - 1] === 'function') {\n return fs.writev(fd, buffers, ...args)\n }\n\n return new Promise((resolve, reject) => {\n fs.writev(fd, buffers, ...args, (err, bytesWritten, buffers) => {\n if (err) return reject(err)\n resolve({ bytesWritten, buffers })\n })\n })\n}\n\n// fs.realpath.native sometimes not available if fs is monkey-patched\nif (typeof fs.realpath.native === 'function') {\n exports.realpath.native = u(fs.realpath.native)\n} else {\n process.emitWarning(\n 'fs.realpath.native is not a function. Is fs being monkey-patched?',\n 'Warning', 'fs-extra-WARN0003'\n )\n}\n","// Adapted from https://github.com/sindresorhus/make-dir\n// Copyright (c) Sindre Sorhus (sindresorhus.com)\n// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n'use strict'\nconst path = require('path')\n\n// https://github.com/nodejs/node/issues/8987\n// https://github.com/libuv/libuv/pull/1088\nmodule.exports.checkPath = function checkPath (pth) {\n if (process.platform === 'win32') {\n const pathHasInvalidWinCharacters = /[<>:\"|?*]/.test(pth.replace(path.parse(pth).root, ''))\n\n if (pathHasInvalidWinCharacters) {\n const error = new Error(`Path contains invalid characters: ${pth}`)\n error.code = 'EINVAL'\n throw error\n }\n }\n}\n","'use strict'\nconst fs = require('../fs')\nconst { checkPath } = require('./utils')\n\nconst getMode = options => {\n const defaults = { mode: 0o777 }\n if (typeof options === 'number') return options\n return ({ ...defaults, ...options }).mode\n}\n\nmodule.exports.makeDir = async (dir, options) => {\n checkPath(dir)\n\n return fs.mkdir(dir, {\n mode: getMode(options),\n recursive: true\n })\n}\n\nmodule.exports.makeDirSync = (dir, options) => {\n checkPath(dir)\n\n return fs.mkdirSync(dir, {\n mode: getMode(options),\n recursive: true\n })\n}\n","'use strict'\nconst u = require('universalify').fromPromise\nconst { makeDir: _makeDir, makeDirSync } = require('./make-dir')\nconst makeDir = u(_makeDir)\n\nmodule.exports = {\n mkdirs: makeDir,\n mkdirsSync: makeDirSync,\n // alias\n mkdirp: makeDir,\n mkdirpSync: makeDirSync,\n ensureDir: makeDir,\n ensureDirSync: makeDirSync\n}\n","'use strict'\nconst u = require('universalify').fromPromise\nconst fs = require('../fs')\n\nfunction pathExists (path) {\n return fs.access(path).then(() => true).catch(() => false)\n}\n\nmodule.exports = {\n pathExists: u(pathExists),\n pathExistsSync: fs.existsSync\n}\n","'use strict'\n\nconst fs = require('../fs')\nconst u = require('universalify').fromPromise\n\nasync function utimesMillis (path, atime, mtime) {\n // if (!HAS_MILLIS_RES) return fs.utimes(path, atime, mtime, callback)\n const fd = await fs.open(path, 'r+')\n\n let closeErr = null\n\n try {\n await fs.futimes(fd, atime, mtime)\n } finally {\n try {\n await fs.close(fd)\n } catch (e) {\n closeErr = e\n }\n }\n\n if (closeErr) {\n throw closeErr\n }\n}\n\nfunction utimesMillisSync (path, atime, mtime) {\n const fd = fs.openSync(path, 'r+')\n fs.futimesSync(fd, atime, mtime)\n return fs.closeSync(fd)\n}\n\nmodule.exports = {\n utimesMillis: u(utimesMillis),\n utimesMillisSync\n}\n","'use strict'\n\nconst fs = require('../fs')\nconst path = require('path')\nconst u = require('universalify').fromPromise\n\nfunction getStats (src, dest, opts) {\n const statFunc = opts.dereference\n ? (file) => fs.stat(file, { bigint: true })\n : (file) => fs.lstat(file, { bigint: true })\n return Promise.all([\n statFunc(src),\n statFunc(dest).catch(err => {\n if (err.code === 'ENOENT') return null\n throw err\n })\n ]).then(([srcStat, destStat]) => ({ srcStat, destStat }))\n}\n\nfunction getStatsSync (src, dest, opts) {\n let destStat\n const statFunc = opts.dereference\n ? (file) => fs.statSync(file, { bigint: true })\n : (file) => fs.lstatSync(file, { bigint: true })\n const srcStat = statFunc(src)\n try {\n destStat = statFunc(dest)\n } catch (err) {\n if (err.code === 'ENOENT') return { srcStat, destStat: null }\n throw err\n }\n return { srcStat, destStat }\n}\n\nasync function checkPaths (src, dest, funcName, opts) {\n const { srcStat, destStat } = await getStats(src, dest, opts)\n if (destStat) {\n if (areIdentical(srcStat, destStat)) {\n const srcBaseName = path.basename(src)\n const destBaseName = path.basename(dest)\n if (funcName === 'move' &&\n srcBaseName !== destBaseName &&\n srcBaseName.toLowerCase() === destBaseName.toLowerCase()) {\n return { srcStat, destStat, isChangingCase: true }\n }\n throw new Error('Source and destination must not be the same.')\n }\n if (srcStat.isDirectory() && !destStat.isDirectory()) {\n throw new Error(`Cannot overwrite non-directory '${dest}' with directory '${src}'.`)\n }\n if (!srcStat.isDirectory() && destStat.isDirectory()) {\n throw new Error(`Cannot overwrite directory '${dest}' with non-directory '${src}'.`)\n }\n }\n\n if (srcStat.isDirectory() && isSrcSubdir(src, dest)) {\n throw new Error(errMsg(src, dest, funcName))\n }\n\n return { srcStat, destStat }\n}\n\nfunction checkPathsSync (src, dest, funcName, opts) {\n const { srcStat, destStat } = getStatsSync(src, dest, opts)\n\n if (destStat) {\n if (areIdentical(srcStat, destStat)) {\n const srcBaseName = path.basename(src)\n const destBaseName = path.basename(dest)\n if (funcName === 'move' &&\n srcBaseName !== destBaseName &&\n srcBaseName.toLowerCase() === destBaseName.toLowerCase()) {\n return { srcStat, destStat, isChangingCase: true }\n }\n throw new Error('Source and destination must not be the same.')\n }\n if (srcStat.isDirectory() && !destStat.isDirectory()) {\n throw new Error(`Cannot overwrite non-directory '${dest}' with directory '${src}'.`)\n }\n if (!srcStat.isDirectory() && destStat.isDirectory()) {\n throw new Error(`Cannot overwrite directory '${dest}' with non-directory '${src}'.`)\n }\n }\n\n if (srcStat.isDirectory() && isSrcSubdir(src, dest)) {\n throw new Error(errMsg(src, dest, funcName))\n }\n return { srcStat, destStat }\n}\n\n// recursively check if dest parent is a subdirectory of src.\n// It works for all file types including symlinks since it\n// checks the src and dest inodes. It starts from the deepest\n// parent and stops once it reaches the src parent or the root path.\nasync function checkParentPaths (src, srcStat, dest, funcName) {\n const srcParent = path.resolve(path.dirname(src))\n const destParent = path.resolve(path.dirname(dest))\n if (destParent === srcParent || destParent === path.parse(destParent).root) return\n\n let destStat\n try {\n destStat = await fs.stat(destParent, { bigint: true })\n } catch (err) {\n if (err.code === 'ENOENT') return\n throw err\n }\n\n if (areIdentical(srcStat, destStat)) {\n throw new Error(errMsg(src, dest, funcName))\n }\n\n return checkParentPaths(src, srcStat, destParent, funcName)\n}\n\nfunction checkParentPathsSync (src, srcStat, dest, funcName) {\n const srcParent = path.resolve(path.dirname(src))\n const destParent = path.resolve(path.dirname(dest))\n if (destParent === srcParent || destParent === path.parse(destParent).root) return\n let destStat\n try {\n destStat = fs.statSync(destParent, { bigint: true })\n } catch (err) {\n if (err.code === 'ENOENT') return\n throw err\n }\n if (areIdentical(srcStat, destStat)) {\n throw new Error(errMsg(src, dest, funcName))\n }\n return checkParentPathsSync(src, srcStat, destParent, funcName)\n}\n\nfunction areIdentical (srcStat, destStat) {\n // stat.dev can be 0n on windows when node version >= 22.x.x\n return destStat.ino !== undefined && destStat.dev !== undefined && destStat.ino === srcStat.ino && destStat.dev === srcStat.dev\n}\n\n// return true if dest is a subdir of src, otherwise false.\n// It only checks the path strings.\nfunction isSrcSubdir (src, dest) {\n const srcArr = path.resolve(src).split(path.sep).filter(i => i)\n const destArr = path.resolve(dest).split(path.sep).filter(i => i)\n return srcArr.every((cur, i) => destArr[i] === cur)\n}\n\nfunction errMsg (src, dest, funcName) {\n return `Cannot ${funcName} '${src}' to a subdirectory of itself, '${dest}'.`\n}\n\nmodule.exports = {\n // checkPaths\n checkPaths: u(checkPaths),\n checkPathsSync,\n // checkParent\n checkParentPaths: u(checkParentPaths),\n checkParentPathsSync,\n // Misc\n isSrcSubdir,\n areIdentical\n}\n","'use strict'\n\n// https://github.com/jprichardson/node-fs-extra/issues/1056\n// Performing parallel operations on each item of an async iterator is\n// surprisingly hard; you need to have handlers in place to avoid getting an\n// UnhandledPromiseRejectionWarning.\n// NOTE: This function does not presently handle return values, only errors\nasync function asyncIteratorConcurrentProcess (iterator, fn) {\n const promises = []\n for await (const item of iterator) {\n promises.push(\n fn(item).then(\n () => null,\n (err) => err ?? new Error('unknown error')\n )\n )\n }\n await Promise.all(\n promises.map((promise) =>\n promise.then((possibleErr) => {\n if (possibleErr !== null) throw possibleErr\n })\n )\n )\n}\n\nmodule.exports = {\n asyncIteratorConcurrentProcess\n}\n","'use strict'\n\nconst fs = require('../fs')\nconst path = require('path')\nconst { mkdirs } = require('../mkdirs')\nconst { pathExists } = require('../path-exists')\nconst { utimesMillis } = require('../util/utimes')\nconst stat = require('../util/stat')\nconst { asyncIteratorConcurrentProcess } = require('../util/async')\n\nasync function copy (src, dest, opts = {}) {\n if (typeof opts === 'function') {\n opts = { filter: opts }\n }\n\n opts.clobber = 'clobber' in opts ? !!opts.clobber : true // default to true for now\n opts.overwrite = 'overwrite' in opts ? !!opts.overwrite : opts.clobber // overwrite falls back to clobber\n\n // Warn about using preserveTimestamps on 32-bit node\n if (opts.preserveTimestamps && process.arch === 'ia32') {\n process.emitWarning(\n 'Using the preserveTimestamps option in 32-bit node is not recommended;\\n\\n' +\n '\\tsee https://github.com/jprichardson/node-fs-extra/issues/269',\n 'Warning', 'fs-extra-WARN0001'\n )\n }\n\n const { srcStat, destStat } = await stat.checkPaths(src, dest, 'copy', opts)\n\n await stat.checkParentPaths(src, srcStat, dest, 'copy')\n\n const include = await runFilter(src, dest, opts)\n\n if (!include) return\n\n // check if the parent of dest exists, and create it if it doesn't exist\n const destParent = path.dirname(dest)\n const dirExists = await pathExists(destParent)\n if (!dirExists) {\n await mkdirs(destParent)\n }\n\n await getStatsAndPerformCopy(destStat, src, dest, opts)\n}\n\nasync function runFilter (src, dest, opts) {\n if (!opts.filter) return true\n return opts.filter(src, dest)\n}\n\nasync function getStatsAndPerformCopy (destStat, src, dest, opts) {\n const statFn = opts.dereference ? fs.stat : fs.lstat\n const srcStat = await statFn(src)\n\n if (srcStat.isDirectory()) return onDir(srcStat, destStat, src, dest, opts)\n\n if (\n srcStat.isFile() ||\n srcStat.isCharacterDevice() ||\n srcStat.isBlockDevice()\n ) return onFile(srcStat, destStat, src, dest, opts)\n\n if (srcStat.isSymbolicLink()) return onLink(destStat, src, dest, opts)\n if (srcStat.isSocket()) throw new Error(`Cannot copy a socket file: ${src}`)\n if (srcStat.isFIFO()) throw new Error(`Cannot copy a FIFO pipe: ${src}`)\n throw new Error(`Unknown file: ${src}`)\n}\n\nasync function onFile (srcStat, destStat, src, dest, opts) {\n if (!destStat) return copyFile(srcStat, src, dest, opts)\n\n if (opts.overwrite) {\n await fs.unlink(dest)\n return copyFile(srcStat, src, dest, opts)\n }\n if (opts.errorOnExist) {\n throw new Error(`'${dest}' already exists`)\n }\n}\n\nasync function copyFile (srcStat, src, dest, opts) {\n await fs.copyFile(src, dest)\n if (opts.preserveTimestamps) {\n // Make sure the file is writable before setting the timestamp\n // otherwise open fails with EPERM when invoked with 'r+'\n // (through utimes call)\n if (fileIsNotWritable(srcStat.mode)) {\n await makeFileWritable(dest, srcStat.mode)\n }\n\n // Set timestamps and mode correspondingly\n\n // Note that The initial srcStat.atime cannot be trusted\n // because it is modified by the read(2) system call\n // (See https://nodejs.org/api/fs.html#fs_stat_time_values)\n const updatedSrcStat = await fs.stat(src)\n await utimesMillis(dest, updatedSrcStat.atime, updatedSrcStat.mtime)\n }\n\n return fs.chmod(dest, srcStat.mode)\n}\n\nfunction fileIsNotWritable (srcMode) {\n return (srcMode & 0o200) === 0\n}\n\nfunction makeFileWritable (dest, srcMode) {\n return fs.chmod(dest, srcMode | 0o200)\n}\n\nasync function onDir (srcStat, destStat, src, dest, opts) {\n // the dest directory might not exist, create it\n if (!destStat) {\n await fs.mkdir(dest)\n }\n\n // iterate through the files in the current directory to copy everything\n await asyncIteratorConcurrentProcess(await fs.opendir(src), async (item) => {\n const srcItem = path.join(src, item.name)\n const destItem = path.join(dest, item.name)\n\n const include = await runFilter(srcItem, destItem, opts)\n // only copy the item if it matches the filter function\n if (include) {\n const { destStat } = await stat.checkPaths(srcItem, destItem, 'copy', opts)\n // If the item is a copyable file, `getStatsAndPerformCopy` will copy it\n // If the item is a directory, `getStatsAndPerformCopy` will call `onDir` recursively\n await getStatsAndPerformCopy(destStat, srcItem, destItem, opts)\n }\n })\n\n if (!destStat) {\n await fs.chmod(dest, srcStat.mode)\n }\n}\n\nasync function onLink (destStat, src, dest, opts) {\n let resolvedSrc = await fs.readlink(src)\n if (opts.dereference) {\n resolvedSrc = path.resolve(process.cwd(), resolvedSrc)\n }\n if (!destStat) {\n return fs.symlink(resolvedSrc, dest)\n }\n\n let resolvedDest = null\n try {\n resolvedDest = await fs.readlink(dest)\n } catch (e) {\n // dest exists and is a regular file or directory,\n // Windows may throw UNKNOWN error. If dest already exists,\n // fs throws error anyway, so no need to guard against it here.\n if (e.code === 'EINVAL' || e.code === 'UNKNOWN') return fs.symlink(resolvedSrc, dest)\n throw e\n }\n if (opts.dereference) {\n resolvedDest = path.resolve(process.cwd(), resolvedDest)\n }\n // If both symlinks resolve to the same target, they are still distinct symlinks\n // that can be copied/overwritten. Only check subdirectory constraints when\n // the resolved paths are different.\n if (resolvedSrc !== resolvedDest) {\n if (stat.isSrcSubdir(resolvedSrc, resolvedDest)) {\n throw new Error(`Cannot copy '${resolvedSrc}' to a subdirectory of itself, '${resolvedDest}'.`)\n }\n\n // do not copy if src is a subdir of dest since unlinking\n // dest in this case would result in removing src contents\n // and therefore a broken symlink would be created.\n if (stat.isSrcSubdir(resolvedDest, resolvedSrc)) {\n throw new Error(`Cannot overwrite '${resolvedDest}' with '${resolvedSrc}'.`)\n }\n }\n\n // copy the link\n await fs.unlink(dest)\n return fs.symlink(resolvedSrc, dest)\n}\n\nmodule.exports = copy\n","'use strict'\n\nconst fs = require('graceful-fs')\nconst path = require('path')\nconst mkdirsSync = require('../mkdirs').mkdirsSync\nconst utimesMillisSync = require('../util/utimes').utimesMillisSync\nconst stat = require('../util/stat')\n\nfunction copySync (src, dest, opts) {\n if (typeof opts === 'function') {\n opts = { filter: opts }\n }\n\n opts = opts || {}\n opts.clobber = 'clobber' in opts ? !!opts.clobber : true // default to true for now\n opts.overwrite = 'overwrite' in opts ? !!opts.overwrite : opts.clobber // overwrite falls back to clobber\n\n // Warn about using preserveTimestamps on 32-bit node\n if (opts.preserveTimestamps && process.arch === 'ia32') {\n process.emitWarning(\n 'Using the preserveTimestamps option in 32-bit node is not recommended;\\n\\n' +\n '\\tsee https://github.com/jprichardson/node-fs-extra/issues/269',\n 'Warning', 'fs-extra-WARN0002'\n )\n }\n\n const { srcStat, destStat } = stat.checkPathsSync(src, dest, 'copy', opts)\n stat.checkParentPathsSync(src, srcStat, dest, 'copy')\n if (opts.filter && !opts.filter(src, dest)) return\n const destParent = path.dirname(dest)\n if (!fs.existsSync(destParent)) mkdirsSync(destParent)\n return getStats(destStat, src, dest, opts)\n}\n\nfunction getStats (destStat, src, dest, opts) {\n const statSync = opts.dereference ? fs.statSync : fs.lstatSync\n const srcStat = statSync(src)\n\n if (srcStat.isDirectory()) return onDir(srcStat, destStat, src, dest, opts)\n else if (srcStat.isFile() ||\n srcStat.isCharacterDevice() ||\n srcStat.isBlockDevice()) return onFile(srcStat, destStat, src, dest, opts)\n else if (srcStat.isSymbolicLink()) return onLink(destStat, src, dest, opts)\n else if (srcStat.isSocket()) throw new Error(`Cannot copy a socket file: ${src}`)\n else if (srcStat.isFIFO()) throw new Error(`Cannot copy a FIFO pipe: ${src}`)\n throw new Error(`Unknown file: ${src}`)\n}\n\nfunction onFile (srcStat, destStat, src, dest, opts) {\n if (!destStat) return copyFile(srcStat, src, dest, opts)\n return mayCopyFile(srcStat, src, dest, opts)\n}\n\nfunction mayCopyFile (srcStat, src, dest, opts) {\n if (opts.overwrite) {\n fs.unlinkSync(dest)\n return copyFile(srcStat, src, dest, opts)\n } else if (opts.errorOnExist) {\n throw new Error(`'${dest}' already exists`)\n }\n}\n\nfunction copyFile (srcStat, src, dest, opts) {\n fs.copyFileSync(src, dest)\n if (opts.preserveTimestamps) handleTimestamps(srcStat.mode, src, dest)\n return setDestMode(dest, srcStat.mode)\n}\n\nfunction handleTimestamps (srcMode, src, dest) {\n // Make sure the file is writable before setting the timestamp\n // otherwise open fails with EPERM when invoked with 'r+'\n // (through utimes call)\n if (fileIsNotWritable(srcMode)) makeFileWritable(dest, srcMode)\n return setDestTimestamps(src, dest)\n}\n\nfunction fileIsNotWritable (srcMode) {\n return (srcMode & 0o200) === 0\n}\n\nfunction makeFileWritable (dest, srcMode) {\n return setDestMode(dest, srcMode | 0o200)\n}\n\nfunction setDestMode (dest, srcMode) {\n return fs.chmodSync(dest, srcMode)\n}\n\nfunction setDestTimestamps (src, dest) {\n // The initial srcStat.atime cannot be trusted\n // because it is modified by the read(2) system call\n // (See https://nodejs.org/api/fs.html#fs_stat_time_values)\n const updatedSrcStat = fs.statSync(src)\n return utimesMillisSync(dest, updatedSrcStat.atime, updatedSrcStat.mtime)\n}\n\nfunction onDir (srcStat, destStat, src, dest, opts) {\n if (!destStat) return mkDirAndCopy(srcStat.mode, src, dest, opts)\n return copyDir(src, dest, opts)\n}\n\nfunction mkDirAndCopy (srcMode, src, dest, opts) {\n fs.mkdirSync(dest)\n copyDir(src, dest, opts)\n return setDestMode(dest, srcMode)\n}\n\nfunction copyDir (src, dest, opts) {\n const dir = fs.opendirSync(src)\n\n try {\n let dirent\n\n while ((dirent = dir.readSync()) !== null) {\n copyDirItem(dirent.name, src, dest, opts)\n }\n } finally {\n dir.closeSync()\n }\n}\n\nfunction copyDirItem (item, src, dest, opts) {\n const srcItem = path.join(src, item)\n const destItem = path.join(dest, item)\n if (opts.filter && !opts.filter(srcItem, destItem)) return\n const { destStat } = stat.checkPathsSync(srcItem, destItem, 'copy', opts)\n return getStats(destStat, srcItem, destItem, opts)\n}\n\nfunction onLink (destStat, src, dest, opts) {\n let resolvedSrc = fs.readlinkSync(src)\n if (opts.dereference) {\n resolvedSrc = path.resolve(process.cwd(), resolvedSrc)\n }\n\n if (!destStat) {\n return fs.symlinkSync(resolvedSrc, dest)\n } else {\n let resolvedDest\n try {\n resolvedDest = fs.readlinkSync(dest)\n } catch (err) {\n // dest exists and is a regular file or directory,\n // Windows may throw UNKNOWN error. If dest already exists,\n // fs throws error anyway, so no need to guard against it here.\n if (err.code === 'EINVAL' || err.code === 'UNKNOWN') return fs.symlinkSync(resolvedSrc, dest)\n throw err\n }\n if (opts.dereference) {\n resolvedDest = path.resolve(process.cwd(), resolvedDest)\n }\n // If both symlinks resolve to the same target, they are still distinct symlinks\n // that can be copied/overwritten. Only check subdirectory constraints when\n // the resolved paths are different.\n if (resolvedSrc !== resolvedDest) {\n if (stat.isSrcSubdir(resolvedSrc, resolvedDest)) {\n throw new Error(`Cannot copy '${resolvedSrc}' to a subdirectory of itself, '${resolvedDest}'.`)\n }\n\n // prevent copy if src is a subdir of dest since unlinking\n // dest in this case would result in removing src contents\n // and therefore a broken symlink would be created.\n if (stat.isSrcSubdir(resolvedDest, resolvedSrc)) {\n throw new Error(`Cannot overwrite '${resolvedDest}' with '${resolvedSrc}'.`)\n }\n }\n return copyLink(resolvedSrc, dest)\n }\n}\n\nfunction copyLink (resolvedSrc, dest) {\n fs.unlinkSync(dest)\n return fs.symlinkSync(resolvedSrc, dest)\n}\n\nmodule.exports = copySync\n","'use strict'\n\nconst u = require('universalify').fromPromise\nmodule.exports = {\n copy: u(require('./copy')),\n copySync: require('./copy-sync')\n}\n","'use strict'\n\nconst fs = require('graceful-fs')\nconst u = require('universalify').fromCallback\n\nfunction remove (path, callback) {\n fs.rm(path, { recursive: true, force: true }, callback)\n}\n\nfunction removeSync (path) {\n fs.rmSync(path, { recursive: true, force: true })\n}\n\nmodule.exports = {\n remove: u(remove),\n removeSync\n}\n","'use strict'\n\nconst u = require('universalify').fromPromise\nconst fs = require('../fs')\nconst path = require('path')\nconst mkdir = require('../mkdirs')\nconst remove = require('../remove')\n\nconst emptyDir = u(async function emptyDir (dir) {\n let items\n try {\n items = await fs.readdir(dir)\n } catch {\n return mkdir.mkdirs(dir)\n }\n\n return Promise.all(items.map(item => remove.remove(path.join(dir, item))))\n})\n\nfunction emptyDirSync (dir) {\n let items\n try {\n items = fs.readdirSync(dir)\n } catch {\n return mkdir.mkdirsSync(dir)\n }\n\n items.forEach(item => {\n item = path.join(dir, item)\n remove.removeSync(item)\n })\n}\n\nmodule.exports = {\n emptyDirSync,\n emptydirSync: emptyDirSync,\n emptyDir,\n emptydir: emptyDir\n}\n","'use strict'\n\nconst u = require('universalify').fromPromise\nconst path = require('path')\nconst fs = require('../fs')\nconst mkdir = require('../mkdirs')\n\nasync function createFile (file) {\n let stats\n try {\n stats = await fs.stat(file)\n } catch { }\n if (stats && stats.isFile()) return\n\n const dir = path.dirname(file)\n\n let dirStats = null\n try {\n dirStats = await fs.stat(dir)\n } catch (err) {\n // if the directory doesn't exist, make it\n if (err.code === 'ENOENT') {\n await mkdir.mkdirs(dir)\n await fs.writeFile(file, '')\n return\n } else {\n throw err\n }\n }\n\n if (dirStats.isDirectory()) {\n await fs.writeFile(file, '')\n } else {\n // parent is not a directory\n // This is just to cause an internal ENOTDIR error to be thrown\n await fs.readdir(dir)\n }\n}\n\nfunction createFileSync (file) {\n let stats\n try {\n stats = fs.statSync(file)\n } catch { }\n if (stats && stats.isFile()) return\n\n const dir = path.dirname(file)\n try {\n if (!fs.statSync(dir).isDirectory()) {\n // parent is not a directory\n // This is just to cause an internal ENOTDIR error to be thrown\n fs.readdirSync(dir)\n }\n } catch (err) {\n // If the stat call above failed because the directory doesn't exist, create it\n if (err && err.code === 'ENOENT') mkdir.mkdirsSync(dir)\n else throw err\n }\n\n fs.writeFileSync(file, '')\n}\n\nmodule.exports = {\n createFile: u(createFile),\n createFileSync\n}\n","'use strict'\n\nconst u = require('universalify').fromPromise\nconst path = require('path')\nconst fs = require('../fs')\nconst mkdir = require('../mkdirs')\nconst { pathExists } = require('../path-exists')\nconst { areIdentical } = require('../util/stat')\n\nasync function createLink (srcpath, dstpath) {\n let dstStat\n try {\n dstStat = await fs.lstat(dstpath)\n } catch {\n // ignore error\n }\n\n let srcStat\n try {\n srcStat = await fs.lstat(srcpath)\n } catch (err) {\n err.message = err.message.replace('lstat', 'ensureLink')\n throw err\n }\n\n if (dstStat && areIdentical(srcStat, dstStat)) return\n\n const dir = path.dirname(dstpath)\n\n const dirExists = await pathExists(dir)\n\n if (!dirExists) {\n await mkdir.mkdirs(dir)\n }\n\n await fs.link(srcpath, dstpath)\n}\n\nfunction createLinkSync (srcpath, dstpath) {\n let dstStat\n try {\n dstStat = fs.lstatSync(dstpath)\n } catch {}\n\n try {\n const srcStat = fs.lstatSync(srcpath)\n if (dstStat && areIdentical(srcStat, dstStat)) return\n } catch (err) {\n err.message = err.message.replace('lstat', 'ensureLink')\n throw err\n }\n\n const dir = path.dirname(dstpath)\n const dirExists = fs.existsSync(dir)\n if (dirExists) return fs.linkSync(srcpath, dstpath)\n mkdir.mkdirsSync(dir)\n\n return fs.linkSync(srcpath, dstpath)\n}\n\nmodule.exports = {\n createLink: u(createLink),\n createLinkSync\n}\n","'use strict'\n\nconst path = require('path')\nconst fs = require('../fs')\nconst { pathExists } = require('../path-exists')\n\nconst u = require('universalify').fromPromise\n\n/**\n * Function that returns two types of paths, one relative to symlink, and one\n * relative to the current working directory. Checks if path is absolute or\n * relative. If the path is relative, this function checks if the path is\n * relative to symlink or relative to current working directory. This is an\n * initiative to find a smarter `srcpath` to supply when building symlinks.\n * This allows you to determine which path to use out of one of three possible\n * types of source paths. The first is an absolute path. This is detected by\n * `path.isAbsolute()`. When an absolute path is provided, it is checked to\n * see if it exists. If it does it's used, if not an error is returned\n * (callback)/ thrown (sync). The other two options for `srcpath` are a\n * relative url. By default Node's `fs.symlink` works by creating a symlink\n * using `dstpath` and expects the `srcpath` to be relative to the newly\n * created symlink. If you provide a `srcpath` that does not exist on the file\n * system it results in a broken symlink. To minimize this, the function\n * checks to see if the 'relative to symlink' source file exists, and if it\n * does it will use it. If it does not, it checks if there's a file that\n * exists that is relative to the current working directory, if does its used.\n * This preserves the expectations of the original fs.symlink spec and adds\n * the ability to pass in `relative to current working direcotry` paths.\n */\n\nasync function symlinkPaths (srcpath, dstpath) {\n if (path.isAbsolute(srcpath)) {\n try {\n await fs.lstat(srcpath)\n } catch (err) {\n err.message = err.message.replace('lstat', 'ensureSymlink')\n throw err\n }\n\n return {\n toCwd: srcpath,\n toDst: srcpath\n }\n }\n\n const dstdir = path.dirname(dstpath)\n const relativeToDst = path.join(dstdir, srcpath)\n\n const exists = await pathExists(relativeToDst)\n if (exists) {\n return {\n toCwd: relativeToDst,\n toDst: srcpath\n }\n }\n\n try {\n await fs.lstat(srcpath)\n } catch (err) {\n err.message = err.message.replace('lstat', 'ensureSymlink')\n throw err\n }\n\n return {\n toCwd: srcpath,\n toDst: path.relative(dstdir, srcpath)\n }\n}\n\nfunction symlinkPathsSync (srcpath, dstpath) {\n if (path.isAbsolute(srcpath)) {\n const exists = fs.existsSync(srcpath)\n if (!exists) throw new Error('absolute srcpath does not exist')\n return {\n toCwd: srcpath,\n toDst: srcpath\n }\n }\n\n const dstdir = path.dirname(dstpath)\n const relativeToDst = path.join(dstdir, srcpath)\n const exists = fs.existsSync(relativeToDst)\n if (exists) {\n return {\n toCwd: relativeToDst,\n toDst: srcpath\n }\n }\n\n const srcExists = fs.existsSync(srcpath)\n if (!srcExists) throw new Error('relative srcpath does not exist')\n return {\n toCwd: srcpath,\n toDst: path.relative(dstdir, srcpath)\n }\n}\n\nmodule.exports = {\n symlinkPaths: u(symlinkPaths),\n symlinkPathsSync\n}\n","'use strict'\n\nconst fs = require('../fs')\nconst u = require('universalify').fromPromise\n\nasync function symlinkType (srcpath, type) {\n if (type) return type\n\n let stats\n try {\n stats = await fs.lstat(srcpath)\n } catch {\n return 'file'\n }\n\n return (stats && stats.isDirectory()) ? 'dir' : 'file'\n}\n\nfunction symlinkTypeSync (srcpath, type) {\n if (type) return type\n\n let stats\n try {\n stats = fs.lstatSync(srcpath)\n } catch {\n return 'file'\n }\n return (stats && stats.isDirectory()) ? 'dir' : 'file'\n}\n\nmodule.exports = {\n symlinkType: u(symlinkType),\n symlinkTypeSync\n}\n","'use strict'\n\nconst u = require('universalify').fromPromise\nconst path = require('path')\nconst fs = require('../fs')\n\nconst { mkdirs, mkdirsSync } = require('../mkdirs')\n\nconst { symlinkPaths, symlinkPathsSync } = require('./symlink-paths')\nconst { symlinkType, symlinkTypeSync } = require('./symlink-type')\n\nconst { pathExists } = require('../path-exists')\n\nconst { areIdentical } = require('../util/stat')\n\nasync function createSymlink (srcpath, dstpath, type) {\n let stats\n try {\n stats = await fs.lstat(dstpath)\n } catch { }\n\n if (stats && stats.isSymbolicLink()) {\n const [srcStat, dstStat] = await Promise.all([\n fs.stat(srcpath),\n fs.stat(dstpath)\n ])\n\n if (areIdentical(srcStat, dstStat)) return\n }\n\n const relative = await symlinkPaths(srcpath, dstpath)\n srcpath = relative.toDst\n const toType = await symlinkType(relative.toCwd, type)\n const dir = path.dirname(dstpath)\n\n if (!(await pathExists(dir))) {\n await mkdirs(dir)\n }\n\n return fs.symlink(srcpath, dstpath, toType)\n}\n\nfunction createSymlinkSync (srcpath, dstpath, type) {\n let stats\n try {\n stats = fs.lstatSync(dstpath)\n } catch { }\n if (stats && stats.isSymbolicLink()) {\n const srcStat = fs.statSync(srcpath)\n const dstStat = fs.statSync(dstpath)\n if (areIdentical(srcStat, dstStat)) return\n }\n\n const relative = symlinkPathsSync(srcpath, dstpath)\n srcpath = relative.toDst\n type = symlinkTypeSync(relative.toCwd, type)\n const dir = path.dirname(dstpath)\n const exists = fs.existsSync(dir)\n if (exists) return fs.symlinkSync(srcpath, dstpath, type)\n mkdirsSync(dir)\n return fs.symlinkSync(srcpath, dstpath, type)\n}\n\nmodule.exports = {\n createSymlink: u(createSymlink),\n createSymlinkSync\n}\n","'use strict'\n\nconst { createFile, createFileSync } = require('./file')\nconst { createLink, createLinkSync } = require('./link')\nconst { createSymlink, createSymlinkSync } = require('./symlink')\n\nmodule.exports = {\n // file\n createFile,\n createFileSync,\n ensureFile: createFile,\n ensureFileSync: createFileSync,\n // link\n createLink,\n createLinkSync,\n ensureLink: createLink,\n ensureLinkSync: createLinkSync,\n // symlink\n createSymlink,\n createSymlinkSync,\n ensureSymlink: createSymlink,\n ensureSymlinkSync: createSymlinkSync\n}\n","function stringify (obj, { EOL = '\\n', finalEOL = true, replacer = null, spaces } = {}) {\n const EOF = finalEOL ? EOL : ''\n const str = JSON.stringify(obj, replacer, spaces)\n\n return str.replace(/\\n/g, EOL) + EOF\n}\n\nfunction stripBom (content) {\n // we do this because JSON.parse would convert it to a utf8 string if encoding wasn't specified\n if (Buffer.isBuffer(content)) content = content.toString('utf8')\n return content.replace(/^\\uFEFF/, '')\n}\n\nmodule.exports = { stringify, stripBom }\n","let _fs\ntry {\n _fs = require('graceful-fs')\n} catch (_) {\n _fs = require('fs')\n}\nconst universalify = require('universalify')\nconst { stringify, stripBom } = require('./utils')\n\nasync function _readFile (file, options = {}) {\n if (typeof options === 'string') {\n options = { encoding: options }\n }\n\n const fs = options.fs || _fs\n\n const shouldThrow = 'throws' in options ? options.throws : true\n\n let data = await universalify.fromCallback(fs.readFile)(file, options)\n\n data = stripBom(data)\n\n let obj\n try {\n obj = JSON.parse(data, options ? options.reviver : null)\n } catch (err) {\n if (shouldThrow) {\n err.message = `${file}: ${err.message}`\n throw err\n } else {\n return null\n }\n }\n\n return obj\n}\n\nconst readFile = universalify.fromPromise(_readFile)\n\nfunction readFileSync (file, options = {}) {\n if (typeof options === 'string') {\n options = { encoding: options }\n }\n\n const fs = options.fs || _fs\n\n const shouldThrow = 'throws' in options ? options.throws : true\n\n try {\n let content = fs.readFileSync(file, options)\n content = stripBom(content)\n return JSON.parse(content, options.reviver)\n } catch (err) {\n if (shouldThrow) {\n err.message = `${file}: ${err.message}`\n throw err\n } else {\n return null\n }\n }\n}\n\nasync function _writeFile (file, obj, options = {}) {\n const fs = options.fs || _fs\n\n const str = stringify(obj, options)\n\n await universalify.fromCallback(fs.writeFile)(file, str, options)\n}\n\nconst writeFile = universalify.fromPromise(_writeFile)\n\nfunction writeFileSync (file, obj, options = {}) {\n const fs = options.fs || _fs\n\n const str = stringify(obj, options)\n // not sure if fs.writeFileSync returns anything, but just in case\n return fs.writeFileSync(file, str, options)\n}\n\n// NOTE: do not change this export format; required for ESM compat\n// see https://github.com/jprichardson/node-jsonfile/pull/162 for details\nmodule.exports = {\n readFile,\n readFileSync,\n writeFile,\n writeFileSync\n}\n","'use strict'\n\nconst jsonFile = require('jsonfile')\n\nmodule.exports = {\n // jsonfile exports\n readJson: jsonFile.readFile,\n readJsonSync: jsonFile.readFileSync,\n writeJson: jsonFile.writeFile,\n writeJsonSync: jsonFile.writeFileSync\n}\n","'use strict'\n\nconst u = require('universalify').fromPromise\nconst fs = require('../fs')\nconst path = require('path')\nconst mkdir = require('../mkdirs')\nconst pathExists = require('../path-exists').pathExists\n\nasync function outputFile (file, data, encoding = 'utf-8') {\n const dir = path.dirname(file)\n\n if (!(await pathExists(dir))) {\n await mkdir.mkdirs(dir)\n }\n\n return fs.writeFile(file, data, encoding)\n}\n\nfunction outputFileSync (file, ...args) {\n const dir = path.dirname(file)\n if (!fs.existsSync(dir)) {\n mkdir.mkdirsSync(dir)\n }\n\n fs.writeFileSync(file, ...args)\n}\n\nmodule.exports = {\n outputFile: u(outputFile),\n outputFileSync\n}\n","'use strict'\n\nconst { stringify } = require('jsonfile/utils')\nconst { outputFile } = require('../output-file')\n\nasync function outputJson (file, data, options = {}) {\n const str = stringify(data, options)\n\n await outputFile(file, str, options)\n}\n\nmodule.exports = outputJson\n","'use strict'\n\nconst { stringify } = require('jsonfile/utils')\nconst { outputFileSync } = require('../output-file')\n\nfunction outputJsonSync (file, data, options) {\n const str = stringify(data, options)\n\n outputFileSync(file, str, options)\n}\n\nmodule.exports = outputJsonSync\n","'use strict'\n\nconst u = require('universalify').fromPromise\nconst jsonFile = require('./jsonfile')\n\njsonFile.outputJson = u(require('./output-json'))\njsonFile.outputJsonSync = require('./output-json-sync')\n// aliases\njsonFile.outputJSON = jsonFile.outputJson\njsonFile.outputJSONSync = jsonFile.outputJsonSync\njsonFile.writeJSON = jsonFile.writeJson\njsonFile.writeJSONSync = jsonFile.writeJsonSync\njsonFile.readJSON = jsonFile.readJson\njsonFile.readJSONSync = jsonFile.readJsonSync\n\nmodule.exports = jsonFile\n","'use strict'\n\nconst fs = require('../fs')\nconst path = require('path')\nconst { copy } = require('../copy')\nconst { remove } = require('../remove')\nconst { mkdirp } = require('../mkdirs')\nconst { pathExists } = require('../path-exists')\nconst stat = require('../util/stat')\n\nasync function move (src, dest, opts = {}) {\n const overwrite = opts.overwrite || opts.clobber || false\n\n const { srcStat, isChangingCase = false } = await stat.checkPaths(src, dest, 'move', opts)\n\n await stat.checkParentPaths(src, srcStat, dest, 'move')\n\n // If the parent of dest is not root, make sure it exists before proceeding\n const destParent = path.dirname(dest)\n const parsedParentPath = path.parse(destParent)\n if (parsedParentPath.root !== destParent) {\n await mkdirp(destParent)\n }\n\n return doRename(src, dest, overwrite, isChangingCase)\n}\n\nasync function doRename (src, dest, overwrite, isChangingCase) {\n if (!isChangingCase) {\n if (overwrite) {\n await remove(dest)\n } else if (await pathExists(dest)) {\n throw new Error('dest already exists.')\n }\n }\n\n try {\n // Try w/ rename first, and try copy + remove if EXDEV\n await fs.rename(src, dest)\n } catch (err) {\n if (err.code !== 'EXDEV') {\n throw err\n }\n await moveAcrossDevice(src, dest, overwrite)\n }\n}\n\nasync function moveAcrossDevice (src, dest, overwrite) {\n const opts = {\n overwrite,\n errorOnExist: true,\n preserveTimestamps: true\n }\n\n await copy(src, dest, opts)\n return remove(src)\n}\n\nmodule.exports = move\n","'use strict'\n\nconst fs = require('graceful-fs')\nconst path = require('path')\nconst copySync = require('../copy').copySync\nconst removeSync = require('../remove').removeSync\nconst mkdirpSync = require('../mkdirs').mkdirpSync\nconst stat = require('../util/stat')\n\nfunction moveSync (src, dest, opts) {\n opts = opts || {}\n const overwrite = opts.overwrite || opts.clobber || false\n\n const { srcStat, isChangingCase = false } = stat.checkPathsSync(src, dest, 'move', opts)\n stat.checkParentPathsSync(src, srcStat, dest, 'move')\n if (!isParentRoot(dest)) mkdirpSync(path.dirname(dest))\n return doRename(src, dest, overwrite, isChangingCase)\n}\n\nfunction isParentRoot (dest) {\n const parent = path.dirname(dest)\n const parsedPath = path.parse(parent)\n return parsedPath.root === parent\n}\n\nfunction doRename (src, dest, overwrite, isChangingCase) {\n if (isChangingCase) return rename(src, dest, overwrite)\n if (overwrite) {\n removeSync(dest)\n return rename(src, dest, overwrite)\n }\n if (fs.existsSync(dest)) throw new Error('dest already exists.')\n return rename(src, dest, overwrite)\n}\n\nfunction rename (src, dest, overwrite) {\n try {\n fs.renameSync(src, dest)\n } catch (err) {\n if (err.code !== 'EXDEV') throw err\n return moveAcrossDevice(src, dest, overwrite)\n }\n}\n\nfunction moveAcrossDevice (src, dest, overwrite) {\n const opts = {\n overwrite,\n errorOnExist: true,\n preserveTimestamps: true\n }\n copySync(src, dest, opts)\n return removeSync(src)\n}\n\nmodule.exports = moveSync\n","'use strict'\n\nconst u = require('universalify').fromPromise\nmodule.exports = {\n move: u(require('./move')),\n moveSync: require('./move-sync')\n}\n","'use strict'\n\nmodule.exports = {\n // Export promiseified graceful-fs:\n ...require('./fs'),\n // Export extra methods:\n ...require('./copy'),\n ...require('./empty'),\n ...require('./ensure'),\n ...require('./json'),\n ...require('./mkdirs'),\n ...require('./move'),\n ...require('./output-file'),\n ...require('./path-exists'),\n ...require('./remove')\n}\n","const ANSI_BACKGROUND_OFFSET = 10;\n\nconst wrapAnsi16 = (offset = 0) => code => `\\u001B[${code + offset}m`;\n\nconst wrapAnsi256 = (offset = 0) => code => `\\u001B[${38 + offset};5;${code}m`;\n\nconst wrapAnsi16m = (offset = 0) => (red, green, blue) => `\\u001B[${38 + offset};2;${red};${green};${blue}m`;\n\nconst styles = {\n\tmodifier: {\n\t\treset: [0, 0],\n\t\t// 21 isn't widely supported and 22 does the same thing\n\t\tbold: [1, 22],\n\t\tdim: [2, 22],\n\t\titalic: [3, 23],\n\t\tunderline: [4, 24],\n\t\toverline: [53, 55],\n\t\tinverse: [7, 27],\n\t\thidden: [8, 28],\n\t\tstrikethrough: [9, 29],\n\t},\n\tcolor: {\n\t\tblack: [30, 39],\n\t\tred: [31, 39],\n\t\tgreen: [32, 39],\n\t\tyellow: [33, 39],\n\t\tblue: [34, 39],\n\t\tmagenta: [35, 39],\n\t\tcyan: [36, 39],\n\t\twhite: [37, 39],\n\n\t\t// Bright color\n\t\tblackBright: [90, 39],\n\t\tgray: [90, 39], // Alias of `blackBright`\n\t\tgrey: [90, 39], // Alias of `blackBright`\n\t\tredBright: [91, 39],\n\t\tgreenBright: [92, 39],\n\t\tyellowBright: [93, 39],\n\t\tblueBright: [94, 39],\n\t\tmagentaBright: [95, 39],\n\t\tcyanBright: [96, 39],\n\t\twhiteBright: [97, 39],\n\t},\n\tbgColor: {\n\t\tbgBlack: [40, 49],\n\t\tbgRed: [41, 49],\n\t\tbgGreen: [42, 49],\n\t\tbgYellow: [43, 49],\n\t\tbgBlue: [44, 49],\n\t\tbgMagenta: [45, 49],\n\t\tbgCyan: [46, 49],\n\t\tbgWhite: [47, 49],\n\n\t\t// Bright color\n\t\tbgBlackBright: [100, 49],\n\t\tbgGray: [100, 49], // Alias of `bgBlackBright`\n\t\tbgGrey: [100, 49], // Alias of `bgBlackBright`\n\t\tbgRedBright: [101, 49],\n\t\tbgGreenBright: [102, 49],\n\t\tbgYellowBright: [103, 49],\n\t\tbgBlueBright: [104, 49],\n\t\tbgMagentaBright: [105, 49],\n\t\tbgCyanBright: [106, 49],\n\t\tbgWhiteBright: [107, 49],\n\t},\n};\n\nexport const modifierNames = Object.keys(styles.modifier);\nexport const foregroundColorNames = Object.keys(styles.color);\nexport const backgroundColorNames = Object.keys(styles.bgColor);\nexport const colorNames = [...foregroundColorNames, ...backgroundColorNames];\n\nfunction assembleStyles() {\n\tconst codes = new Map();\n\n\tfor (const [groupName, group] of Object.entries(styles)) {\n\t\tfor (const [styleName, style] of Object.entries(group)) {\n\t\t\tstyles[styleName] = {\n\t\t\t\topen: `\\u001B[${style[0]}m`,\n\t\t\t\tclose: `\\u001B[${style[1]}m`,\n\t\t\t};\n\n\t\t\tgroup[styleName] = styles[styleName];\n\n\t\t\tcodes.set(style[0], style[1]);\n\t\t}\n\n\t\tObject.defineProperty(styles, groupName, {\n\t\t\tvalue: group,\n\t\t\tenumerable: false,\n\t\t});\n\t}\n\n\tObject.defineProperty(styles, 'codes', {\n\t\tvalue: codes,\n\t\tenumerable: false,\n\t});\n\n\tstyles.color.close = '\\u001B[39m';\n\tstyles.bgColor.close = '\\u001B[49m';\n\n\tstyles.color.ansi = wrapAnsi16();\n\tstyles.color.ansi256 = wrapAnsi256();\n\tstyles.color.ansi16m = wrapAnsi16m();\n\tstyles.bgColor.ansi = wrapAnsi16(ANSI_BACKGROUND_OFFSET);\n\tstyles.bgColor.ansi256 = wrapAnsi256(ANSI_BACKGROUND_OFFSET);\n\tstyles.bgColor.ansi16m = wrapAnsi16m(ANSI_BACKGROUND_OFFSET);\n\n\t// From https://github.com/Qix-/color-convert/blob/3f0e0d4e92e235796ccb17f6e85c72094a651f49/conversions.js\n\tObject.defineProperties(styles, {\n\t\trgbToAnsi256: {\n\t\t\tvalue(red, green, blue) {\n\t\t\t\t// We use the extended greyscale palette here, with the exception of\n\t\t\t\t// black and white. normal palette only has 4 greyscale shades.\n\t\t\t\tif (red === green && green === blue) {\n\t\t\t\t\tif (red < 8) {\n\t\t\t\t\t\treturn 16;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (red > 248) {\n\t\t\t\t\t\treturn 231;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn Math.round(((red - 8) / 247) * 24) + 232;\n\t\t\t\t}\n\n\t\t\t\treturn 16\n\t\t\t\t\t+ (36 * Math.round(red / 255 * 5))\n\t\t\t\t\t+ (6 * Math.round(green / 255 * 5))\n\t\t\t\t\t+ Math.round(blue / 255 * 5);\n\t\t\t},\n\t\t\tenumerable: false,\n\t\t},\n\t\thexToRgb: {\n\t\t\tvalue(hex) {\n\t\t\t\tconst matches = /[a-f\\d]{6}|[a-f\\d]{3}/i.exec(hex.toString(16));\n\t\t\t\tif (!matches) {\n\t\t\t\t\treturn [0, 0, 0];\n\t\t\t\t}\n\n\t\t\t\tlet [colorString] = matches;\n\n\t\t\t\tif (colorString.length === 3) {\n\t\t\t\t\tcolorString = [...colorString].map(character => character + character).join('');\n\t\t\t\t}\n\n\t\t\t\tconst integer = Number.parseInt(colorString, 16);\n\n\t\t\t\treturn [\n\t\t\t\t\t/* eslint-disable no-bitwise */\n\t\t\t\t\t(integer >> 16) & 0xFF,\n\t\t\t\t\t(integer >> 8) & 0xFF,\n\t\t\t\t\tinteger & 0xFF,\n\t\t\t\t\t/* eslint-enable no-bitwise */\n\t\t\t\t];\n\t\t\t},\n\t\t\tenumerable: false,\n\t\t},\n\t\thexToAnsi256: {\n\t\t\tvalue: hex => styles.rgbToAnsi256(...styles.hexToRgb(hex)),\n\t\t\tenumerable: false,\n\t\t},\n\t\tansi256ToAnsi: {\n\t\t\tvalue(code) {\n\t\t\t\tif (code < 8) {\n\t\t\t\t\treturn 30 + code;\n\t\t\t\t}\n\n\t\t\t\tif (code < 16) {\n\t\t\t\t\treturn 90 + (code - 8);\n\t\t\t\t}\n\n\t\t\t\tlet red;\n\t\t\t\tlet green;\n\t\t\t\tlet blue;\n\n\t\t\t\tif (code >= 232) {\n\t\t\t\t\tred = (((code - 232) * 10) + 8) / 255;\n\t\t\t\t\tgreen = red;\n\t\t\t\t\tblue = red;\n\t\t\t\t} else {\n\t\t\t\t\tcode -= 16;\n\n\t\t\t\t\tconst remainder = code % 36;\n\n\t\t\t\t\tred = Math.floor(code / 36) / 5;\n\t\t\t\t\tgreen = Math.floor(remainder / 6) / 5;\n\t\t\t\t\tblue = (remainder % 6) / 5;\n\t\t\t\t}\n\n\t\t\t\tconst value = Math.max(red, green, blue) * 2;\n\n\t\t\t\tif (value === 0) {\n\t\t\t\t\treturn 30;\n\t\t\t\t}\n\n\t\t\t\t// eslint-disable-next-line no-bitwise\n\t\t\t\tlet result = 30 + ((Math.round(blue) << 2) | (Math.round(green) << 1) | Math.round(red));\n\n\t\t\t\tif (value === 2) {\n\t\t\t\t\tresult += 60;\n\t\t\t\t}\n\n\t\t\t\treturn result;\n\t\t\t},\n\t\t\tenumerable: false,\n\t\t},\n\t\trgbToAnsi: {\n\t\t\tvalue: (red, green, blue) => styles.ansi256ToAnsi(styles.rgbToAnsi256(red, green, blue)),\n\t\t\tenumerable: false,\n\t\t},\n\t\thexToAnsi: {\n\t\t\tvalue: hex => styles.ansi256ToAnsi(styles.hexToAnsi256(hex)),\n\t\t\tenumerable: false,\n\t\t},\n\t});\n\n\treturn styles;\n}\n\nconst ansiStyles = assembleStyles();\n\nexport default ansiStyles;\n","import process from 'node:process';\nimport os from 'node:os';\nimport tty from 'node:tty';\n\n// From: https://github.com/sindresorhus/has-flag/blob/main/index.js\n/// function hasFlag(flag, argv = globalThis.Deno?.args ?? process.argv) {\nfunction hasFlag(flag, argv = globalThis.Deno ? globalThis.Deno.args : process.argv) {\n\tconst prefix = flag.startsWith('-') ? '' : (flag.length === 1 ? '-' : '--');\n\tconst position = argv.indexOf(prefix + flag);\n\tconst terminatorPosition = argv.indexOf('--');\n\treturn position !== -1 && (terminatorPosition === -1 || position < terminatorPosition);\n}\n\nconst {env} = process;\n\nlet flagForceColor;\nif (\n\thasFlag('no-color')\n\t|| hasFlag('no-colors')\n\t|| hasFlag('color=false')\n\t|| hasFlag('color=never')\n) {\n\tflagForceColor = 0;\n} else if (\n\thasFlag('color')\n\t|| hasFlag('colors')\n\t|| hasFlag('color=true')\n\t|| hasFlag('color=always')\n) {\n\tflagForceColor = 1;\n}\n\nfunction envForceColor() {\n\tif ('FORCE_COLOR' in env) {\n\t\tif (env.FORCE_COLOR === 'true') {\n\t\t\treturn 1;\n\t\t}\n\n\t\tif (env.FORCE_COLOR === 'false') {\n\t\t\treturn 0;\n\t\t}\n\n\t\treturn env.FORCE_COLOR.length === 0 ? 1 : Math.min(Number.parseInt(env.FORCE_COLOR, 10), 3);\n\t}\n}\n\nfunction translateLevel(level) {\n\tif (level === 0) {\n\t\treturn false;\n\t}\n\n\treturn {\n\t\tlevel,\n\t\thasBasic: true,\n\t\thas256: level >= 2,\n\t\thas16m: level >= 3,\n\t};\n}\n\nfunction _supportsColor(haveStream, {streamIsTTY, sniffFlags = true} = {}) {\n\tconst noFlagForceColor = envForceColor();\n\tif (noFlagForceColor !== undefined) {\n\t\tflagForceColor = noFlagForceColor;\n\t}\n\n\tconst forceColor = sniffFlags ? flagForceColor : noFlagForceColor;\n\n\tif (forceColor === 0) {\n\t\treturn 0;\n\t}\n\n\tif (sniffFlags) {\n\t\tif (hasFlag('color=16m')\n\t\t\t|| hasFlag('color=full')\n\t\t\t|| hasFlag('color=truecolor')) {\n\t\t\treturn 3;\n\t\t}\n\n\t\tif (hasFlag('color=256')) {\n\t\t\treturn 2;\n\t\t}\n\t}\n\n\t// Check for Azure DevOps pipelines.\n\t// Has to be above the `!streamIsTTY` check.\n\tif ('TF_BUILD' in env && 'AGENT_NAME' in env) {\n\t\treturn 1;\n\t}\n\n\tif (haveStream && !streamIsTTY && forceColor === undefined) {\n\t\treturn 0;\n\t}\n\n\tconst min = forceColor || 0;\n\n\tif (env.TERM === 'dumb') {\n\t\treturn min;\n\t}\n\n\tif (process.platform === 'win32') {\n\t\t// Windows 10 build 10586 is the first Windows release that supports 256 colors.\n\t\t// Windows 10 build 14931 is the first release that supports 16m/TrueColor.\n\t\tconst osRelease = os.release().split('.');\n\t\tif (\n\t\t\tNumber(osRelease[0]) >= 10\n\t\t\t&& Number(osRelease[2]) >= 10_586\n\t\t) {\n\t\t\treturn Number(osRelease[2]) >= 14_931 ? 3 : 2;\n\t\t}\n\n\t\treturn 1;\n\t}\n\n\tif ('CI' in env) {\n\t\tif (['GITHUB_ACTIONS', 'GITEA_ACTIONS', 'CIRCLECI'].some(key => key in env)) {\n\t\t\treturn 3;\n\t\t}\n\n\t\tif (['TRAVIS', 'APPVEYOR', 'GITLAB_CI', 'BUILDKITE', 'DRONE'].some(sign => sign in env) || env.CI_NAME === 'codeship') {\n\t\t\treturn 1;\n\t\t}\n\n\t\treturn min;\n\t}\n\n\tif ('TEAMCITY_VERSION' in env) {\n\t\treturn /^(9\\.(0*[1-9]\\d*)\\.|\\d{2,}\\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0;\n\t}\n\n\tif (env.COLORTERM === 'truecolor') {\n\t\treturn 3;\n\t}\n\n\tif (env.TERM === 'xterm-kitty') {\n\t\treturn 3;\n\t}\n\n\tif (env.TERM === 'xterm-ghostty') {\n\t\treturn 3;\n\t}\n\n\tif (env.TERM === 'wezterm') {\n\t\treturn 3;\n\t}\n\n\tif ('TERM_PROGRAM' in env) {\n\t\tconst version = Number.parseInt((env.TERM_PROGRAM_VERSION || '').split('.')[0], 10);\n\n\t\tswitch (env.TERM_PROGRAM) {\n\t\t\tcase 'iTerm.app': {\n\t\t\t\treturn version >= 3 ? 3 : 2;\n\t\t\t}\n\n\t\t\tcase 'Apple_Terminal': {\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t\t// No default\n\t\t}\n\t}\n\n\tif (/-256(color)?$/i.test(env.TERM)) {\n\t\treturn 2;\n\t}\n\n\tif (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) {\n\t\treturn 1;\n\t}\n\n\tif ('COLORTERM' in env) {\n\t\treturn 1;\n\t}\n\n\treturn min;\n}\n\nexport function createSupportsColor(stream, options = {}) {\n\tconst level = _supportsColor(stream, {\n\t\tstreamIsTTY: stream && stream.isTTY,\n\t\t...options,\n\t});\n\n\treturn translateLevel(level);\n}\n\nconst supportsColor = {\n\tstdout: createSupportsColor({isTTY: tty.isatty(1)}),\n\tstderr: createSupportsColor({isTTY: tty.isatty(2)}),\n};\n\nexport default supportsColor;\n","// TODO: When targeting Node.js 16, use `String.prototype.replaceAll`.\nexport function stringReplaceAll(string, substring, replacer) {\n\tlet index = string.indexOf(substring);\n\tif (index === -1) {\n\t\treturn string;\n\t}\n\n\tconst substringLength = substring.length;\n\tlet endIndex = 0;\n\tlet returnValue = '';\n\tdo {\n\t\treturnValue += string.slice(endIndex, index) + substring + replacer;\n\t\tendIndex = index + substringLength;\n\t\tindex = string.indexOf(substring, endIndex);\n\t} while (index !== -1);\n\n\treturnValue += string.slice(endIndex);\n\treturn returnValue;\n}\n\nexport function stringEncaseCRLFWithFirstIndex(string, prefix, postfix, index) {\n\tlet endIndex = 0;\n\tlet returnValue = '';\n\tdo {\n\t\tconst gotCR = string[index - 1] === '\\r';\n\t\treturnValue += string.slice(endIndex, (gotCR ? index - 1 : index)) + prefix + (gotCR ? '\\r\\n' : '\\n') + postfix;\n\t\tendIndex = index + 1;\n\t\tindex = string.indexOf('\\n', endIndex);\n\t} while (index !== -1);\n\n\treturnValue += string.slice(endIndex);\n\treturn returnValue;\n}\n","import ansiStyles from '#ansi-styles';\nimport supportsColor from '#supports-color';\nimport { // eslint-disable-line import/order\n\tstringReplaceAll,\n\tstringEncaseCRLFWithFirstIndex,\n} from './utilities.js';\n\nconst {stdout: stdoutColor, stderr: stderrColor} = supportsColor;\n\nconst GENERATOR = Symbol('GENERATOR');\nconst STYLER = Symbol('STYLER');\nconst IS_EMPTY = Symbol('IS_EMPTY');\n\n// `supportsColor.level` → `ansiStyles.color[name]` mapping\nconst levelMapping = [\n\t'ansi',\n\t'ansi',\n\t'ansi256',\n\t'ansi16m',\n];\n\nconst styles = Object.create(null);\n\nconst applyOptions = (object, options = {}) => {\n\tif (options.level && !(Number.isInteger(options.level) && options.level >= 0 && options.level <= 3)) {\n\t\tthrow new Error('The `level` option should be an integer from 0 to 3');\n\t}\n\n\t// Detect level if not set manually\n\tconst colorLevel = stdoutColor ? stdoutColor.level : 0;\n\tobject.level = options.level === undefined ? colorLevel : options.level;\n};\n\nexport class Chalk {\n\tconstructor(options) {\n\t\t// eslint-disable-next-line no-constructor-return\n\t\treturn chalkFactory(options);\n\t}\n}\n\nconst chalkFactory = options => {\n\tconst chalk = (...strings) => strings.join(' ');\n\tapplyOptions(chalk, options);\n\n\tObject.setPrototypeOf(chalk, createChalk.prototype);\n\n\treturn chalk;\n};\n\nfunction createChalk(options) {\n\treturn chalkFactory(options);\n}\n\nObject.setPrototypeOf(createChalk.prototype, Function.prototype);\n\nfor (const [styleName, style] of Object.entries(ansiStyles)) {\n\tstyles[styleName] = {\n\t\tget() {\n\t\t\tconst builder = createBuilder(this, createStyler(style.open, style.close, this[STYLER]), this[IS_EMPTY]);\n\t\t\tObject.defineProperty(this, styleName, {value: builder});\n\t\t\treturn builder;\n\t\t},\n\t};\n}\n\nstyles.visible = {\n\tget() {\n\t\tconst builder = createBuilder(this, this[STYLER], true);\n\t\tObject.defineProperty(this, 'visible', {value: builder});\n\t\treturn builder;\n\t},\n};\n\nconst getModelAnsi = (model, level, type, ...arguments_) => {\n\tif (model === 'rgb') {\n\t\tif (level === 'ansi16m') {\n\t\t\treturn ansiStyles[type].ansi16m(...arguments_);\n\t\t}\n\n\t\tif (level === 'ansi256') {\n\t\t\treturn ansiStyles[type].ansi256(ansiStyles.rgbToAnsi256(...arguments_));\n\t\t}\n\n\t\treturn ansiStyles[type].ansi(ansiStyles.rgbToAnsi(...arguments_));\n\t}\n\n\tif (model === 'hex') {\n\t\treturn getModelAnsi('rgb', level, type, ...ansiStyles.hexToRgb(...arguments_));\n\t}\n\n\treturn ansiStyles[type][model](...arguments_);\n};\n\nconst usedModels = ['rgb', 'hex', 'ansi256'];\n\nfor (const model of usedModels) {\n\tstyles[model] = {\n\t\tget() {\n\t\t\tconst {level} = this;\n\t\t\treturn function (...arguments_) {\n\t\t\t\tconst styler = createStyler(getModelAnsi(model, levelMapping[level], 'color', ...arguments_), ansiStyles.color.close, this[STYLER]);\n\t\t\t\treturn createBuilder(this, styler, this[IS_EMPTY]);\n\t\t\t};\n\t\t},\n\t};\n\n\tconst bgModel = 'bg' + model[0].toUpperCase() + model.slice(1);\n\tstyles[bgModel] = {\n\t\tget() {\n\t\t\tconst {level} = this;\n\t\t\treturn function (...arguments_) {\n\t\t\t\tconst styler = createStyler(getModelAnsi(model, levelMapping[level], 'bgColor', ...arguments_), ansiStyles.bgColor.close, this[STYLER]);\n\t\t\t\treturn createBuilder(this, styler, this[IS_EMPTY]);\n\t\t\t};\n\t\t},\n\t};\n}\n\nconst proto = Object.defineProperties(() => {}, {\n\t...styles,\n\tlevel: {\n\t\tenumerable: true,\n\t\tget() {\n\t\t\treturn this[GENERATOR].level;\n\t\t},\n\t\tset(level) {\n\t\t\tthis[GENERATOR].level = level;\n\t\t},\n\t},\n});\n\nconst createStyler = (open, close, parent) => {\n\tlet openAll;\n\tlet closeAll;\n\tif (parent === undefined) {\n\t\topenAll = open;\n\t\tcloseAll = close;\n\t} else {\n\t\topenAll = parent.openAll + open;\n\t\tcloseAll = close + parent.closeAll;\n\t}\n\n\treturn {\n\t\topen,\n\t\tclose,\n\t\topenAll,\n\t\tcloseAll,\n\t\tparent,\n\t};\n};\n\nconst createBuilder = (self, _styler, _isEmpty) => {\n\t// Single argument is hot path, implicit coercion is faster than anything\n\t// eslint-disable-next-line no-implicit-coercion\n\tconst builder = (...arguments_) => applyStyle(builder, (arguments_.length === 1) ? ('' + arguments_[0]) : arguments_.join(' '));\n\n\t// We alter the prototype because we must return a function, but there is\n\t// no way to create a function with a different prototype\n\tObject.setPrototypeOf(builder, proto);\n\n\tbuilder[GENERATOR] = self;\n\tbuilder[STYLER] = _styler;\n\tbuilder[IS_EMPTY] = _isEmpty;\n\n\treturn builder;\n};\n\nconst applyStyle = (self, string) => {\n\tif (self.level <= 0 || !string) {\n\t\treturn self[IS_EMPTY] ? '' : string;\n\t}\n\n\tlet styler = self[STYLER];\n\n\tif (styler === undefined) {\n\t\treturn string;\n\t}\n\n\tconst {openAll, closeAll} = styler;\n\tif (string.includes('\\u001B')) {\n\t\twhile (styler !== undefined) {\n\t\t\t// Replace any instances already present with a re-opening code\n\t\t\t// otherwise only the part of the string until said closing code\n\t\t\t// will be colored, and the rest will simply be 'plain'.\n\t\t\tstring = stringReplaceAll(string, styler.close, styler.open);\n\n\t\t\tstyler = styler.parent;\n\t\t}\n\t}\n\n\t// We can move both next actions out of loop, because remaining actions in loop won't have\n\t// any/visible effect on parts we add here. Close the styling before a linebreak and reopen\n\t// after next line to fix a bleed issue on macOS: https://github.com/chalk/chalk/pull/92\n\tconst lfIndex = string.indexOf('\\n');\n\tif (lfIndex !== -1) {\n\t\tstring = stringEncaseCRLFWithFirstIndex(string, closeAll, openAll, lfIndex);\n\t}\n\n\treturn openAll + string + closeAll;\n};\n\nObject.defineProperties(createChalk.prototype, styles);\n\nconst chalk = createChalk();\nexport const chalkStderr = createChalk({level: stderrColor ? stderrColor.level : 0});\n\nexport {\n\tmodifierNames,\n\tforegroundColorNames,\n\tbackgroundColorNames,\n\tcolorNames,\n\n\t// TODO: Remove these aliases in the next major version\n\tmodifierNames as modifiers,\n\tforegroundColorNames as foregroundColors,\n\tbackgroundColorNames as backgroundColors,\n\tcolorNames as colors,\n} from './vendor/ansi-styles/index.js';\n\nexport {\n\tstdoutColor as supportsColor,\n\tstderrColor as supportsColorStderr,\n};\n\nexport default chalk;\n","const copyProperty = (to, from, property, ignoreNonConfigurable) => {\n\t// `Function#length` should reflect the parameters of `to` not `from` since we keep its body.\n\t// `Function#prototype` is non-writable and non-configurable so can never be modified.\n\tif (property === 'length' || property === 'prototype') {\n\t\treturn;\n\t}\n\n\t// `Function#arguments` and `Function#caller` should not be copied. They were reported to be present in `Reflect.ownKeys` for some devices in React Native (#41), so we explicitly ignore them here.\n\tif (property === 'arguments' || property === 'caller') {\n\t\treturn;\n\t}\n\n\tconst toDescriptor = Object.getOwnPropertyDescriptor(to, property);\n\tconst fromDescriptor = Object.getOwnPropertyDescriptor(from, property);\n\n\tif (!canCopyProperty(toDescriptor, fromDescriptor) && ignoreNonConfigurable) {\n\t\treturn;\n\t}\n\n\tObject.defineProperty(to, property, fromDescriptor);\n};\n\n// `Object.defineProperty()` throws if the property exists, is not configurable and either:\n// - one its descriptors is changed\n// - it is non-writable and its value is changed\nconst canCopyProperty = function (toDescriptor, fromDescriptor) {\n\treturn toDescriptor === undefined || toDescriptor.configurable || (\n\t\ttoDescriptor.writable === fromDescriptor.writable\n\t\t&& toDescriptor.enumerable === fromDescriptor.enumerable\n\t\t&& toDescriptor.configurable === fromDescriptor.configurable\n\t\t&& (toDescriptor.writable || toDescriptor.value === fromDescriptor.value)\n\t);\n};\n\nconst changePrototype = (to, from) => {\n\tconst fromPrototype = Object.getPrototypeOf(from);\n\tif (fromPrototype === Object.getPrototypeOf(to)) {\n\t\treturn;\n\t}\n\n\tObject.setPrototypeOf(to, fromPrototype);\n};\n\nconst wrappedToString = (withName, fromBody) => `/* Wrapped ${withName}*/\\n${fromBody}`;\n\nconst toStringDescriptor = Object.getOwnPropertyDescriptor(Function.prototype, 'toString');\nconst toStringName = Object.getOwnPropertyDescriptor(Function.prototype.toString, 'name');\n\n// We call `from.toString()` early (not lazily) to ensure `from` can be garbage collected.\n// We use `bind()` instead of a closure for the same reason.\n// Calling `from.toString()` early also allows caching it in case `to.toString()` is called several times.\nconst changeToString = (to, from, name) => {\n\tconst withName = name === '' ? '' : `with ${name.trim()}() `;\n\tconst newToString = wrappedToString.bind(null, withName, from.toString());\n\t// Ensure `to.toString.toString` is non-enumerable and has the same `same`\n\tObject.defineProperty(newToString, 'name', toStringName);\n\tconst {writable, enumerable, configurable} = toStringDescriptor; // We destructue to avoid a potential `get` descriptor.\n\tObject.defineProperty(to, 'toString', {value: newToString, writable, enumerable, configurable});\n};\n\nexport default function mimicFunction(to, from, {ignoreNonConfigurable = false} = {}) {\n\tconst {name} = to;\n\n\tfor (const property of Reflect.ownKeys(from)) {\n\t\tcopyProperty(to, from, property, ignoreNonConfigurable);\n\t}\n\n\tchangePrototype(to, from);\n\tchangeToString(to, from, name);\n\n\treturn to;\n}\n","import mimicFunction from 'mimic-function';\n\nconst calledFunctions = new WeakMap();\n\nconst onetime = (function_, options = {}) => {\n\tif (typeof function_ !== 'function') {\n\t\tthrow new TypeError('Expected a function');\n\t}\n\n\tlet returnValue;\n\tlet callCount = 0;\n\tconst functionName = function_.displayName || function_.name || '';\n\n\tconst onetime = function (...arguments_) {\n\t\tcalledFunctions.set(onetime, ++callCount);\n\n\t\tif (callCount === 1) {\n\t\t\treturnValue = function_.apply(this, arguments_);\n\t\t\tfunction_ = undefined;\n\t\t} else if (options.throw === true) {\n\t\t\tthrow new Error(`Function \\`${functionName}\\` can only be called once`);\n\t\t}\n\n\t\treturn returnValue;\n\t};\n\n\tmimicFunction(onetime, function_);\n\tcalledFunctions.set(onetime, callCount);\n\n\treturn onetime;\n};\n\nonetime.callCount = function_ => {\n\tif (!calledFunctions.has(function_)) {\n\t\tthrow new Error(`The given function \\`${function_.name}\\` is not wrapped by the \\`onetime\\` package`);\n\t}\n\n\treturn calledFunctions.get(function_);\n};\n\nexport default onetime;\n","/**\n * This is not the set of all possible signals.\n *\n * It IS, however, the set of all signals that trigger\n * an exit on either Linux or BSD systems. Linux is a\n * superset of the signal names supported on BSD, and\n * the unknown signals just fail to register, so we can\n * catch that easily enough.\n *\n * Windows signals are a different set, since there are\n * signals that terminate Windows processes, but don't\n * terminate (or don't even exist) on Posix systems.\n *\n * Don't bother with SIGKILL. It's uncatchable, which\n * means that we can't fire any callbacks anyway.\n *\n * If a user does happen to register a handler on a non-\n * fatal signal like SIGWINCH or something, and then\n * exit, it'll end up firing `process.emit('exit')`, so\n * the handler will be fired anyway.\n *\n * SIGBUS, SIGFPE, SIGSEGV and SIGILL, when not raised\n * artificially, inherently leave the process in a\n * state from which it is not safe to try and enter JS\n * listeners.\n */\nexport const signals = [];\nsignals.push('SIGHUP', 'SIGINT', 'SIGTERM');\nif (process.platform !== 'win32') {\n signals.push('SIGALRM', 'SIGABRT', 'SIGVTALRM', 'SIGXCPU', 'SIGXFSZ', 'SIGUSR2', 'SIGTRAP', 'SIGSYS', 'SIGQUIT', 'SIGIOT'\n // should detect profiler and enable/disable accordingly.\n // see #21\n // 'SIGPROF'\n );\n}\nif (process.platform === 'linux') {\n signals.push('SIGIO', 'SIGPOLL', 'SIGPWR', 'SIGSTKFLT');\n}\n//# sourceMappingURL=signals.js.map","// Note: since nyc uses this module to output coverage, any lines\n// that are in the direct sync flow of nyc's outputCoverage are\n// ignored, since we can never get coverage for them.\n// grab a reference to node's real process object right away\nimport { signals } from './signals.js';\nexport { signals };\nconst processOk = (process) => !!process &&\n typeof process === 'object' &&\n typeof process.removeListener === 'function' &&\n typeof process.emit === 'function' &&\n typeof process.reallyExit === 'function' &&\n typeof process.listeners === 'function' &&\n typeof process.kill === 'function' &&\n typeof process.pid === 'number' &&\n typeof process.on === 'function';\nconst kExitEmitter = Symbol.for('signal-exit emitter');\nconst global = globalThis;\nconst ObjectDefineProperty = Object.defineProperty.bind(Object);\n// teeny special purpose ee\nclass Emitter {\n emitted = {\n afterExit: false,\n exit: false,\n };\n listeners = {\n afterExit: [],\n exit: [],\n };\n count = 0;\n id = Math.random();\n constructor() {\n if (global[kExitEmitter]) {\n return global[kExitEmitter];\n }\n ObjectDefineProperty(global, kExitEmitter, {\n value: this,\n writable: false,\n enumerable: false,\n configurable: false,\n });\n }\n on(ev, fn) {\n this.listeners[ev].push(fn);\n }\n removeListener(ev, fn) {\n const list = this.listeners[ev];\n const i = list.indexOf(fn);\n /* c8 ignore start */\n if (i === -1) {\n return;\n }\n /* c8 ignore stop */\n if (i === 0 && list.length === 1) {\n list.length = 0;\n }\n else {\n list.splice(i, 1);\n }\n }\n emit(ev, code, signal) {\n if (this.emitted[ev]) {\n return false;\n }\n this.emitted[ev] = true;\n let ret = false;\n for (const fn of this.listeners[ev]) {\n ret = fn(code, signal) === true || ret;\n }\n if (ev === 'exit') {\n ret = this.emit('afterExit', code, signal) || ret;\n }\n return ret;\n }\n}\nclass SignalExitBase {\n}\nconst signalExitWrap = (handler) => {\n return {\n onExit(cb, opts) {\n return handler.onExit(cb, opts);\n },\n load() {\n return handler.load();\n },\n unload() {\n return handler.unload();\n },\n };\n};\nclass SignalExitFallback extends SignalExitBase {\n onExit() {\n return () => { };\n }\n load() { }\n unload() { }\n}\nclass SignalExit extends SignalExitBase {\n // \"SIGHUP\" throws an `ENOSYS` error on Windows,\n // so use a supported signal instead\n /* c8 ignore start */\n #hupSig = process.platform === 'win32' ? 'SIGINT' : 'SIGHUP';\n /* c8 ignore stop */\n #emitter = new Emitter();\n #process;\n #originalProcessEmit;\n #originalProcessReallyExit;\n #sigListeners = {};\n #loaded = false;\n constructor(process) {\n super();\n this.#process = process;\n // { : , ... }\n this.#sigListeners = {};\n for (const sig of signals) {\n this.#sigListeners[sig] = () => {\n // If there are no other listeners, an exit is coming!\n // Simplest way: remove us and then re-send the signal.\n // We know that this will kill the process, so we can\n // safely emit now.\n const listeners = this.#process.listeners(sig);\n let { count } = this.#emitter;\n // This is a workaround for the fact that signal-exit v3 and signal\n // exit v4 are not aware of each other, and each will attempt to let\n // the other handle it, so neither of them do. To correct this, we\n // detect if we're the only handler *except* for previous versions\n // of signal-exit, and increment by the count of listeners it has\n // created.\n /* c8 ignore start */\n const p = process;\n if (typeof p.__signal_exit_emitter__ === 'object' &&\n typeof p.__signal_exit_emitter__.count === 'number') {\n count += p.__signal_exit_emitter__.count;\n }\n /* c8 ignore stop */\n if (listeners.length === count) {\n this.unload();\n const ret = this.#emitter.emit('exit', null, sig);\n /* c8 ignore start */\n const s = sig === 'SIGHUP' ? this.#hupSig : sig;\n if (!ret)\n process.kill(process.pid, s);\n /* c8 ignore stop */\n }\n };\n }\n this.#originalProcessReallyExit = process.reallyExit;\n this.#originalProcessEmit = process.emit;\n }\n onExit(cb, opts) {\n /* c8 ignore start */\n if (!processOk(this.#process)) {\n return () => { };\n }\n /* c8 ignore stop */\n if (this.#loaded === false) {\n this.load();\n }\n const ev = opts?.alwaysLast ? 'afterExit' : 'exit';\n this.#emitter.on(ev, cb);\n return () => {\n this.#emitter.removeListener(ev, cb);\n if (this.#emitter.listeners['exit'].length === 0 &&\n this.#emitter.listeners['afterExit'].length === 0) {\n this.unload();\n }\n };\n }\n load() {\n if (this.#loaded) {\n return;\n }\n this.#loaded = true;\n // This is the number of onSignalExit's that are in play.\n // It's important so that we can count the correct number of\n // listeners on signals, and don't wait for the other one to\n // handle it instead of us.\n this.#emitter.count += 1;\n for (const sig of signals) {\n try {\n const fn = this.#sigListeners[sig];\n if (fn)\n this.#process.on(sig, fn);\n }\n catch (_) { }\n }\n this.#process.emit = (ev, ...a) => {\n return this.#processEmit(ev, ...a);\n };\n this.#process.reallyExit = (code) => {\n return this.#processReallyExit(code);\n };\n }\n unload() {\n if (!this.#loaded) {\n return;\n }\n this.#loaded = false;\n signals.forEach(sig => {\n const listener = this.#sigListeners[sig];\n /* c8 ignore start */\n if (!listener) {\n throw new Error('Listener not defined for signal: ' + sig);\n }\n /* c8 ignore stop */\n try {\n this.#process.removeListener(sig, listener);\n /* c8 ignore start */\n }\n catch (_) { }\n /* c8 ignore stop */\n });\n this.#process.emit = this.#originalProcessEmit;\n this.#process.reallyExit = this.#originalProcessReallyExit;\n this.#emitter.count -= 1;\n }\n #processReallyExit(code) {\n /* c8 ignore start */\n if (!processOk(this.#process)) {\n return 0;\n }\n this.#process.exitCode = code || 0;\n /* c8 ignore stop */\n this.#emitter.emit('exit', this.#process.exitCode, null);\n return this.#originalProcessReallyExit.call(this.#process, this.#process.exitCode);\n }\n #processEmit(ev, ...args) {\n const og = this.#originalProcessEmit;\n if (ev === 'exit' && processOk(this.#process)) {\n if (typeof args[0] === 'number') {\n this.#process.exitCode = args[0];\n /* c8 ignore start */\n }\n /* c8 ignore start */\n const ret = og.call(this.#process, ev, ...args);\n /* c8 ignore start */\n this.#emitter.emit('exit', this.#process.exitCode, null);\n /* c8 ignore stop */\n return ret;\n }\n else {\n return og.call(this.#process, ev, ...args);\n }\n }\n}\nconst process = globalThis.process;\n// wrap so that we call the method on the actual handler, without\n// exporting it directly.\nexport const { \n/**\n * Called when the process is exiting, whether via signal, explicit\n * exit, or running out of stuff to do.\n *\n * If the global process object is not suitable for instrumentation,\n * then this will be a no-op.\n *\n * Returns a function that may be used to unload signal-exit.\n */\nonExit, \n/**\n * Load the listeners. Likely you never need to call this, unless\n * doing a rather deep integration with signal-exit functionality.\n * Mostly exposed for the benefit of testing.\n *\n * @internal\n */\nload, \n/**\n * Unload the listeners. Likely you never need to call this, unless\n * doing a rather deep integration with signal-exit functionality.\n * Mostly exposed for the benefit of testing.\n *\n * @internal\n */\nunload, } = signalExitWrap(processOk(process) ? new SignalExit(process) : new SignalExitFallback());\n//# sourceMappingURL=index.js.map","import process from 'node:process';\nimport onetime from 'onetime';\nimport {onExit} from 'signal-exit';\n\nconst terminal = process.stderr.isTTY\n\t? process.stderr\n\t: (process.stdout.isTTY ? process.stdout : undefined);\n\nconst restoreCursor = terminal ? onetime(() => {\n\tonExit(() => {\n\t\tterminal.write('\\u001B[?25h');\n\t}, {alwaysLast: true});\n}) : () => {};\n\nexport default restoreCursor;\n","import process from 'node:process';\nimport restoreCursor from 'restore-cursor';\n\nlet isHidden = false;\n\nconst cliCursor = {};\n\ncliCursor.show = (writableStream = process.stderr) => {\n\tif (!writableStream.isTTY) {\n\t\treturn;\n\t}\n\n\tisHidden = false;\n\twritableStream.write('\\u001B[?25h');\n};\n\ncliCursor.hide = (writableStream = process.stderr) => {\n\tif (!writableStream.isTTY) {\n\t\treturn;\n\t}\n\n\trestoreCursor();\n\tisHidden = true;\n\twritableStream.write('\\u001B[?25l');\n};\n\ncliCursor.toggle = (force, writableStream) => {\n\tif (force !== undefined) {\n\t\tisHidden = force;\n\t}\n\n\tif (isHidden) {\n\t\tcliCursor.show(writableStream);\n\t} else {\n\t\tcliCursor.hide(writableStream);\n\t}\n};\n\nexport default cliCursor;\n","","import spinners from './spinners.json' with {type: 'json'};\n\nexport default spinners;\n\nconst spinnersList = Object.keys(spinners);\n\nexport function randomSpinner() {\n\tconst randomIndex = Math.floor(Math.random() * spinnersList.length);\n\tconst spinnerName = spinnersList[randomIndex];\n\treturn spinners[spinnerName];\n}\n","import tty from 'node:tty';\n\n// eslint-disable-next-line no-warning-comments\n// TODO: Use a better method when it's added to Node.js (https://github.com/nodejs/node/pull/40240)\n// Lots of optionals here to support Deno.\nconst hasColors = tty?.WriteStream?.prototype?.hasColors?.() ?? false;\n\nconst format = (open, close) => {\n\tif (!hasColors) {\n\t\treturn input => input;\n\t}\n\n\tconst openCode = `\\u001B[${open}m`;\n\tconst closeCode = `\\u001B[${close}m`;\n\n\treturn input => {\n\t\tconst string = input + ''; // eslint-disable-line no-implicit-coercion -- This is faster.\n\t\tlet index = string.indexOf(closeCode);\n\n\t\tif (index === -1) {\n\t\t\t// Note: Intentionally not using string interpolation for performance reasons.\n\t\t\treturn openCode + string + closeCode;\n\t\t}\n\n\t\t// Handle nested colors.\n\n\t\t// We could have done this, but it's too slow (as of Node.js 22).\n\t\t// return openCode + string.replaceAll(closeCode, (close === 22 ? closeCode : '') + openCode) + closeCode;\n\n\t\tlet result = openCode;\n\t\tlet lastIndex = 0;\n\n\t\t// SGR 22 resets both bold (1) and dim (2). When we encounter a nested\n\t\t// close for styles that use 22, we need to re-open the outer style.\n\t\tconst reopenOnNestedClose = close === 22;\n\t\tconst replaceCode = (reopenOnNestedClose ? closeCode : '') + openCode;\n\n\t\twhile (index !== -1) {\n\t\t\tresult += string.slice(lastIndex, index) + replaceCode;\n\t\t\tlastIndex = index + closeCode.length;\n\t\t\tindex = string.indexOf(closeCode, lastIndex);\n\t\t}\n\n\t\tresult += string.slice(lastIndex) + closeCode;\n\n\t\treturn result;\n\t};\n};\n\nexport const reset = format(0, 0);\nexport const bold = format(1, 22);\nexport const dim = format(2, 22);\nexport const italic = format(3, 23);\nexport const underline = format(4, 24);\nexport const overline = format(53, 55);\nexport const inverse = format(7, 27);\nexport const hidden = format(8, 28);\nexport const strikethrough = format(9, 29);\n\nexport const black = format(30, 39);\nexport const red = format(31, 39);\nexport const green = format(32, 39);\nexport const yellow = format(33, 39);\nexport const blue = format(34, 39);\nexport const magenta = format(35, 39);\nexport const cyan = format(36, 39);\nexport const white = format(37, 39);\nexport const gray = format(90, 39);\n\nexport const bgBlack = format(40, 49);\nexport const bgRed = format(41, 49);\nexport const bgGreen = format(42, 49);\nexport const bgYellow = format(43, 49);\nexport const bgBlue = format(44, 49);\nexport const bgMagenta = format(45, 49);\nexport const bgCyan = format(46, 49);\nexport const bgWhite = format(47, 49);\nexport const bgGray = format(100, 49);\n\nexport const redBright = format(91, 39);\nexport const greenBright = format(92, 39);\nexport const yellowBright = format(93, 39);\nexport const blueBright = format(94, 39);\nexport const magentaBright = format(95, 39);\nexport const cyanBright = format(96, 39);\nexport const whiteBright = format(97, 39);\n\nexport const bgRedBright = format(101, 49);\nexport const bgGreenBright = format(102, 49);\nexport const bgYellowBright = format(103, 49);\nexport const bgBlueBright = format(104, 49);\nexport const bgMagentaBright = format(105, 49);\nexport const bgCyanBright = format(106, 49);\nexport const bgWhiteBright = format(107, 49);\n","import process from 'node:process';\n\nexport default function isUnicodeSupported() {\n\tconst {env} = process;\n\tconst {TERM, TERM_PROGRAM} = env;\n\n\tif (process.platform !== 'win32') {\n\t\treturn TERM !== 'linux'; // Linux console (kernel)\n\t}\n\n\treturn Boolean(env.WT_SESSION) // Windows Terminal\n\t\t|| Boolean(env.TERMINUS_SUBLIME) // Terminus (<0.2.27)\n\t\t|| env.ConEmuTask === '{cmd::Cmder}' // ConEmu and cmder\n\t\t|| TERM_PROGRAM === 'Terminus-Sublime'\n\t\t|| TERM_PROGRAM === 'vscode'\n\t\t|| TERM === 'xterm-256color'\n\t\t|| TERM === 'alacritty'\n\t\t|| TERM === 'rxvt-unicode'\n\t\t|| TERM === 'rxvt-unicode-256color'\n\t\t|| env.TERMINAL_EMULATOR === 'JetBrains-JediTerm';\n}\n","import {\n\tblue,\n\tgreen,\n\tyellow,\n\tred,\n} from 'yoctocolors';\nimport isUnicodeSupported from 'is-unicode-supported';\n\nconst _isUnicodeSupported = isUnicodeSupported();\n\nexport const info = blue(_isUnicodeSupported ? 'ℹ' : 'i');\nexport const success = green(_isUnicodeSupported ? '✔' : '√');\nexport const warning = yellow(_isUnicodeSupported ? '⚠' : '‼');\nexport const error = red(_isUnicodeSupported ? '✖' : '×');\n","export default function ansiRegex({onlyFirst = false} = {}) {\n\t// Valid string terminator sequences are BEL, ESC\\, and 0x9c\n\tconst ST = '(?:\\\\u0007|\\\\u001B\\\\u005C|\\\\u009C)';\n\n\t// OSC sequences only: ESC ] ... ST (non-greedy until the first ST)\n\tconst osc = `(?:\\\\u001B\\\\][\\\\s\\\\S]*?${ST})`;\n\n\t// CSI and related: ESC/C1, optional intermediates, optional params (supports ; and :) then final byte\n\tconst csi = '[\\\\u001B\\\\u009B][[\\\\]()#;?]*(?:\\\\d{1,4}(?:[;:]\\\\d{0,4})*)?[\\\\dA-PR-TZcf-nq-uy=><~]';\n\n\tconst pattern = `${osc}|${csi}`;\n\n\treturn new RegExp(pattern, onlyFirst ? undefined : 'g');\n}\n","import ansiRegex from 'ansi-regex';\n\nconst regex = ansiRegex();\n\nexport default function stripAnsi(string) {\n\tif (typeof string !== 'string') {\n\t\tthrow new TypeError(`Expected a \\`string\\`, got \\`${typeof string}\\``);\n\t}\n\n\t// Even though the regex is global, we don't need to reset the `.lastIndex`\n\t// because unlike `.exec()` and `.test()`, `.replace()` does it automatically\n\t// and doing it manually has a performance penalty.\n\treturn string.replace(regex, '');\n}\n","// Generated by scripts/build.js\n\n// prettier-ignore\nconst ambiguousRanges = [161, 161, 164, 164, 167, 168, 170, 170, 173, 174, 176, 180, 182, 186, 188, 191, 198, 198, 208, 208, 215, 216, 222, 225, 230, 230, 232, 234, 236, 237, 240, 240, 242, 243, 247, 250, 252, 252, 254, 254, 257, 257, 273, 273, 275, 275, 283, 283, 294, 295, 299, 299, 305, 307, 312, 312, 319, 322, 324, 324, 328, 331, 333, 333, 338, 339, 358, 359, 363, 363, 462, 462, 464, 464, 466, 466, 468, 468, 470, 470, 472, 472, 474, 474, 476, 476, 593, 593, 609, 609, 708, 708, 711, 711, 713, 715, 717, 717, 720, 720, 728, 731, 733, 733, 735, 735, 768, 879, 913, 929, 931, 937, 945, 961, 963, 969, 1025, 1025, 1040, 1103, 1105, 1105, 8208, 8208, 8211, 8214, 8216, 8217, 8220, 8221, 8224, 8226, 8228, 8231, 8240, 8240, 8242, 8243, 8245, 8245, 8251, 8251, 8254, 8254, 8308, 8308, 8319, 8319, 8321, 8324, 8364, 8364, 8451, 8451, 8453, 8453, 8457, 8457, 8467, 8467, 8470, 8470, 8481, 8482, 8486, 8486, 8491, 8491, 8531, 8532, 8539, 8542, 8544, 8555, 8560, 8569, 8585, 8585, 8592, 8601, 8632, 8633, 8658, 8658, 8660, 8660, 8679, 8679, 8704, 8704, 8706, 8707, 8711, 8712, 8715, 8715, 8719, 8719, 8721, 8721, 8725, 8725, 8730, 8730, 8733, 8736, 8739, 8739, 8741, 8741, 8743, 8748, 8750, 8750, 8756, 8759, 8764, 8765, 8776, 8776, 8780, 8780, 8786, 8786, 8800, 8801, 8804, 8807, 8810, 8811, 8814, 8815, 8834, 8835, 8838, 8839, 8853, 8853, 8857, 8857, 8869, 8869, 8895, 8895, 8978, 8978, 9312, 9449, 9451, 9547, 9552, 9587, 9600, 9615, 9618, 9621, 9632, 9633, 9635, 9641, 9650, 9651, 9654, 9655, 9660, 9661, 9664, 9665, 9670, 9672, 9675, 9675, 9678, 9681, 9698, 9701, 9711, 9711, 9733, 9734, 9737, 9737, 9742, 9743, 9756, 9756, 9758, 9758, 9792, 9792, 9794, 9794, 9824, 9825, 9827, 9829, 9831, 9834, 9836, 9837, 9839, 9839, 9886, 9887, 9919, 9919, 9926, 9933, 9935, 9939, 9941, 9953, 9955, 9955, 9960, 9961, 9963, 9969, 9972, 9972, 9974, 9977, 9979, 9980, 9982, 9983, 10045, 10045, 10102, 10111, 11094, 11097, 12872, 12879, 57344, 63743, 65024, 65039, 65533, 65533, 127232, 127242, 127248, 127277, 127280, 127337, 127344, 127373, 127375, 127376, 127387, 127404, 917760, 917999, 983040, 1048573, 1048576, 1114109];\n\n// prettier-ignore\nconst fullwidthRanges = [12288, 12288, 65281, 65376, 65504, 65510];\n\n// prettier-ignore\nconst halfwidthRanges = [8361, 8361, 65377, 65470, 65474, 65479, 65482, 65487, 65490, 65495, 65498, 65500, 65512, 65518];\n\n// prettier-ignore\nconst narrowRanges = [32, 126, 162, 163, 165, 166, 172, 172, 175, 175, 10214, 10221, 10629, 10630];\n\n// prettier-ignore\nconst wideRanges = [4352, 4447, 8986, 8987, 9001, 9002, 9193, 9196, 9200, 9200, 9203, 9203, 9725, 9726, 9748, 9749, 9776, 9783, 9800, 9811, 9855, 9855, 9866, 9871, 9875, 9875, 9889, 9889, 9898, 9899, 9917, 9918, 9924, 9925, 9934, 9934, 9940, 9940, 9962, 9962, 9970, 9971, 9973, 9973, 9978, 9978, 9981, 9981, 9989, 9989, 9994, 9995, 10024, 10024, 10060, 10060, 10062, 10062, 10067, 10069, 10071, 10071, 10133, 10135, 10160, 10160, 10175, 10175, 11035, 11036, 11088, 11088, 11093, 11093, 11904, 11929, 11931, 12019, 12032, 12245, 12272, 12287, 12289, 12350, 12353, 12438, 12441, 12543, 12549, 12591, 12593, 12686, 12688, 12773, 12783, 12830, 12832, 12871, 12880, 42124, 42128, 42182, 43360, 43388, 44032, 55203, 63744, 64255, 65040, 65049, 65072, 65106, 65108, 65126, 65128, 65131, 94176, 94180, 94192, 94198, 94208, 101589, 101631, 101662, 101760, 101874, 110576, 110579, 110581, 110587, 110589, 110590, 110592, 110882, 110898, 110898, 110928, 110930, 110933, 110933, 110948, 110951, 110960, 111355, 119552, 119638, 119648, 119670, 126980, 126980, 127183, 127183, 127374, 127374, 127377, 127386, 127488, 127490, 127504, 127547, 127552, 127560, 127568, 127569, 127584, 127589, 127744, 127776, 127789, 127797, 127799, 127868, 127870, 127891, 127904, 127946, 127951, 127955, 127968, 127984, 127988, 127988, 127992, 128062, 128064, 128064, 128066, 128252, 128255, 128317, 128331, 128334, 128336, 128359, 128378, 128378, 128405, 128406, 128420, 128420, 128507, 128591, 128640, 128709, 128716, 128716, 128720, 128722, 128725, 128728, 128732, 128735, 128747, 128748, 128756, 128764, 128992, 129003, 129008, 129008, 129292, 129338, 129340, 129349, 129351, 129535, 129648, 129660, 129664, 129674, 129678, 129734, 129736, 129736, 129741, 129756, 129759, 129770, 129775, 129784, 131072, 196605, 196608, 262141];\n\nexport {ambiguousRanges, fullwidthRanges, halfwidthRanges, narrowRanges, wideRanges};\n","/**\nBinary search on a sorted flat array of [start, end] pairs.\n\n@param {number[]} ranges - Flat array of inclusive [start, end] range pairs, e.g. [0, 5, 10, 20].\n@param {number} codePoint - The value to search for.\n@returns {boolean} Whether the value falls within any of the ranges.\n*/\nexport const isInRange = (ranges, codePoint) => {\n\tlet low = 0;\n\tlet high = Math.floor(ranges.length / 2) - 1;\n\twhile (low <= high) {\n\t\tconst mid = Math.floor((low + high) / 2);\n\t\tconst i = mid * 2;\n\t\tif (codePoint < ranges[i]) {\n\t\t\thigh = mid - 1;\n\t\t} else if (codePoint > ranges[i + 1]) {\n\t\t\tlow = mid + 1;\n\t\t} else {\n\t\t\treturn true;\n\t\t}\n\t}\n\n\treturn false;\n};\n","import {\n\tambiguousRanges,\n\tfullwidthRanges,\n\thalfwidthRanges,\n\tnarrowRanges,\n\twideRanges,\n} from './lookup-data.js';\nimport {isInRange} from './utilities.js';\n\nconst minimumAmbiguousCodePoint = ambiguousRanges[0];\nconst maximumAmbiguousCodePoint = ambiguousRanges.at(-1);\nconst minimumFullWidthCodePoint = fullwidthRanges[0];\nconst maximumFullWidthCodePoint = fullwidthRanges.at(-1);\nconst minimumHalfWidthCodePoint = halfwidthRanges[0];\nconst maximumHalfWidthCodePoint = halfwidthRanges.at(-1);\nconst minimumNarrowCodePoint = narrowRanges[0];\nconst maximumNarrowCodePoint = narrowRanges.at(-1);\nconst minimumWideCodePoint = wideRanges[0];\nconst maximumWideCodePoint = wideRanges.at(-1);\n\nconst commonCjkCodePoint = 0x4E_00;\nconst [wideFastPathStart, wideFastPathEnd] = findWideFastPathRange(wideRanges);\n\n// Use a hot-path range so common `isWide` calls can skip binary search.\n// The range containing U+4E00 covers common CJK ideographs;\n// fallback to the largest range for resilience to Unicode table changes.\nfunction findWideFastPathRange(ranges) {\n\tlet fastPathStart = ranges[0];\n\tlet fastPathEnd = ranges[1];\n\n\tfor (let index = 0; index < ranges.length; index += 2) {\n\t\tconst start = ranges[index];\n\t\tconst end = ranges[index + 1];\n\n\t\tif (\n\t\t\tcommonCjkCodePoint >= start\n\t\t\t&& commonCjkCodePoint <= end\n\t\t) {\n\t\t\treturn [start, end];\n\t\t}\n\n\t\tif ((end - start) > (fastPathEnd - fastPathStart)) {\n\t\t\tfastPathStart = start;\n\t\t\tfastPathEnd = end;\n\t\t}\n\t}\n\n\treturn [fastPathStart, fastPathEnd];\n}\n\nexport const isAmbiguous = codePoint => {\n\tif (\n\t\tcodePoint < minimumAmbiguousCodePoint\n\t\t|| codePoint > maximumAmbiguousCodePoint\n\t) {\n\t\treturn false;\n\t}\n\n\treturn isInRange(ambiguousRanges, codePoint);\n};\n\nexport const isFullWidth = codePoint => {\n\tif (\n\t\tcodePoint < minimumFullWidthCodePoint\n\t\t|| codePoint > maximumFullWidthCodePoint\n\t) {\n\t\treturn false;\n\t}\n\n\treturn isInRange(fullwidthRanges, codePoint);\n};\n\nconst isHalfWidth = codePoint => {\n\tif (\n\t\tcodePoint < minimumHalfWidthCodePoint\n\t\t|| codePoint > maximumHalfWidthCodePoint\n\t) {\n\t\treturn false;\n\t}\n\n\treturn isInRange(halfwidthRanges, codePoint);\n};\n\nconst isNarrow = codePoint => {\n\tif (\n\t\tcodePoint < minimumNarrowCodePoint\n\t\t|| codePoint > maximumNarrowCodePoint\n\t) {\n\t\treturn false;\n\t}\n\n\treturn isInRange(narrowRanges, codePoint);\n};\n\nexport const isWide = codePoint => {\n\tif (\n\t\tcodePoint >= wideFastPathStart\n\t\t&& codePoint <= wideFastPathEnd\n\t) {\n\t\treturn true;\n\t}\n\n\tif (\n\t\tcodePoint < minimumWideCodePoint\n\t\t|| codePoint > maximumWideCodePoint\n\t) {\n\t\treturn false;\n\t}\n\n\treturn isInRange(wideRanges, codePoint);\n};\n\nexport function getCategory(codePoint) {\n\tif (isAmbiguous(codePoint)) {\n\t\treturn 'ambiguous';\n\t}\n\n\tif (isFullWidth(codePoint)) {\n\t\treturn 'fullwidth';\n\t}\n\n\tif (isHalfWidth(codePoint)) {\n\t\treturn 'halfwidth';\n\t}\n\n\tif (isNarrow(codePoint)) {\n\t\treturn 'narrow';\n\t}\n\n\tif (isWide(codePoint)) {\n\t\treturn 'wide';\n\t}\n\n\treturn 'neutral';\n}\n","import {getCategory, isAmbiguous, isFullWidth, isWide} from './lookup.js';\n\nfunction validate(codePoint) {\n\tif (!Number.isSafeInteger(codePoint)) {\n\t\tthrow new TypeError(`Expected a code point, got \\`${typeof codePoint}\\`.`);\n\t}\n}\n\nexport function eastAsianWidthType(codePoint) {\n\tvalidate(codePoint);\n\n\treturn getCategory(codePoint);\n}\n\nexport function eastAsianWidth(codePoint, {ambiguousAsWide = false} = {}) {\n\tvalidate(codePoint);\n\n\tif (\n\t\tisFullWidth(codePoint)\n\t\t|| isWide(codePoint)\n\t\t|| (ambiguousAsWide && isAmbiguous(codePoint))\n\t) {\n\t\treturn 2;\n\t}\n\n\treturn 1;\n}\n\n// Private exports for https://github.com/sindresorhus/is-fullwidth-code-point\nexport {isFullWidth as _isFullWidth, isWide as _isWide} from './lookup.js';\n","import stripAnsi from 'strip-ansi';\nimport {eastAsianWidth} from 'get-east-asian-width';\n\n/**\nLogic:\n- Segment graphemes to match how terminals render clusters.\n- Width rules:\n\t1. Skip non-printing clusters (Default_Ignorable, Control, pure Mark, lone Surrogates). Tabs are ignored by design.\n\t2. RGI emoji clusters (\\p{RGI_Emoji}) are double-width.\n\t3. Minimally-qualified/unqualified emoji clusters (ZWJ sequences with 2+ Extended_Pictographic, or keycap sequences) are double-width.\n\t4. Otherwise use East Asian Width of the cluster's first visible code point, and add widths for trailing Halfwidth/Fullwidth Forms within the same cluster (e.g., dakuten/handakuten/prolonged sound mark).\n*/\n\nconst segmenter = new Intl.Segmenter();\n\n// Whole-cluster zero-width\nconst zeroWidthClusterRegex = /^(?:\\p{Default_Ignorable_Code_Point}|\\p{Control}|\\p{Format}|\\p{Mark}|\\p{Surrogate})+$/v;\n\n// Pick the base scalar if the cluster starts with Prepend/Format/Marks\nconst leadingNonPrintingRegex = /^[\\p{Default_Ignorable_Code_Point}\\p{Control}\\p{Format}\\p{Mark}\\p{Surrogate}]+/v;\n\n// RGI emoji sequences\nconst rgiEmojiRegex = /^\\p{RGI_Emoji}$/v;\n\n// Detect minimally-qualified/unqualified emoji sequences (missing VS16 but still render as double-width)\nconst unqualifiedKeycapRegex = /^[\\d#*]\\u20E3$/;\nconst extendedPictographicRegex = /\\p{Extended_Pictographic}/gu;\n\nfunction isDoubleWidthNonRgiEmojiSequence(segment) {\n\t// Real emoji clusters are < 30 chars; guard against pathological input\n\tif (segment.length > 50) {\n\t\treturn false;\n\t}\n\n\tif (unqualifiedKeycapRegex.test(segment)) {\n\t\treturn true;\n\t}\n\n\t// ZWJ sequences with 2+ Extended_Pictographic\n\tif (segment.includes('\\u200D')) {\n\t\tconst pictographics = segment.match(extendedPictographicRegex);\n\t\treturn pictographics !== null && pictographics.length >= 2;\n\t}\n\n\treturn false;\n}\n\nfunction baseVisible(segment) {\n\treturn segment.replace(leadingNonPrintingRegex, '');\n}\n\nfunction isZeroWidthCluster(segment) {\n\treturn zeroWidthClusterRegex.test(segment);\n}\n\nfunction trailingHalfwidthWidth(segment, eastAsianWidthOptions) {\n\tlet extra = 0;\n\tif (segment.length > 1) {\n\t\tfor (const char of segment.slice(1)) {\n\t\t\tif (char >= '\\uFF00' && char <= '\\uFFEF') {\n\t\t\t\textra += eastAsianWidth(char.codePointAt(0), eastAsianWidthOptions);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn extra;\n}\n\nexport default function stringWidth(input, options = {}) {\n\tif (typeof input !== 'string' || input.length === 0) {\n\t\treturn 0;\n\t}\n\n\tconst {\n\t\tambiguousIsNarrow = true,\n\t\tcountAnsiEscapeCodes = false,\n\t} = options;\n\n\tlet string = input;\n\n\t// Avoid calling stripAnsi when there are no ANSI escape sequences (ESC = 0x1B, CSI = 0x9B)\n\tif (!countAnsiEscapeCodes && (string.includes('\\u001B') || string.includes('\\u009B'))) {\n\t\tstring = stripAnsi(string);\n\t}\n\n\tif (string.length === 0) {\n\t\treturn 0;\n\t}\n\n\t// Fast path: printable ASCII (0x20–0x7E) needs no segmenter, regex, or EAW lookup — width equals length.\n\tif (/^[\\u0020-\\u007E]*$/.test(string)) {\n\t\treturn string.length;\n\t}\n\n\tlet width = 0;\n\tconst eastAsianWidthOptions = {ambiguousAsWide: !ambiguousIsNarrow};\n\n\tfor (const {segment} of segmenter.segment(string)) {\n\t\t// Zero-width / non-printing clusters\n\t\tif (isZeroWidthCluster(segment)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Emoji width logic\n\t\tif (rgiEmojiRegex.test(segment) || isDoubleWidthNonRgiEmojiSequence(segment)) {\n\t\t\twidth += 2;\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Everything else: EAW of the cluster’s first visible scalar\n\t\tconst codePoint = baseVisible(segment).codePointAt(0);\n\t\twidth += eastAsianWidth(codePoint, eastAsianWidthOptions);\n\n\t\t// Add width for trailing Halfwidth and Fullwidth Forms (e.g., ゙, ゚, ー)\n\t\twidth += trailingHalfwidthWidth(segment, eastAsianWidthOptions);\n\t}\n\n\treturn width;\n}\n","export default function isInteractive({stream = process.stdout} = {}) {\n\treturn Boolean(\n\t\tstream && stream.isTTY &&\n\t\tprocess.env.TERM !== 'dumb' &&\n\t\t!('CI' in process.env)\n\t);\n}\n","import process from 'node:process';\n\nconst ASCII_ETX_CODE = 0x03; // Ctrl+C\n\nclass StdinDiscarder {\n\t#activeCount = 0;\n\t#stdin;\n\t#stdinWasPaused = false;\n\t#stdinWasRaw = false;\n\t#handleInputBound = chunk => {\n\t\tif (!chunk?.length) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst code = typeof chunk === 'string' ? chunk.codePointAt(0) : chunk[0];\n\t\tif (code === ASCII_ETX_CODE) {\n\t\t\tif (process.listenerCount('SIGINT') > 0) {\n\t\t\t\tprocess.emit('SIGINT');\n\t\t\t} else {\n\t\t\t\tprocess.kill(process.pid, 'SIGINT');\n\t\t\t}\n\t\t}\n\t};\n\n\tstart() {\n\t\tthis.#activeCount++;\n\t\tif (this.#activeCount === 1) {\n\t\t\tthis.#realStart();\n\t\t}\n\t}\n\n\tstop() {\n\t\tif (this.#activeCount === 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (--this.#activeCount === 0) {\n\t\t\tthis.#realStop();\n\t\t}\n\t}\n\n\t#realStart() {\n\t\tconst {stdin} = process;\n\n\t\tif (process.platform === 'win32' || !stdin?.isTTY || typeof stdin.setRawMode !== 'function') {\n\t\t\tthis.#stdin = undefined;\n\t\t\treturn;\n\t\t}\n\n\t\tthis.#stdin = stdin;\n\t\tthis.#stdinWasPaused = stdin.isPaused();\n\t\tthis.#stdinWasRaw = Boolean(stdin.isRaw);\n\n\t\tstdin.setRawMode(true);\n\t\tstdin.prependListener('data', this.#handleInputBound);\n\n\t\tif (this.#stdinWasPaused) {\n\t\t\tstdin.resume();\n\t\t}\n\t}\n\n\t#realStop() {\n\t\tif (!this.#stdin) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst stdin = this.#stdin;\n\n\t\tstdin.off('data', this.#handleInputBound);\n\n\t\tif (stdin.isTTY) {\n\t\t\tstdin.setRawMode?.(this.#stdinWasRaw);\n\t\t}\n\n\t\tif (this.#stdinWasPaused) {\n\t\t\tstdin.pause();\n\t\t}\n\n\t\tthis.#stdin = undefined;\n\t\tthis.#stdinWasPaused = false;\n\t\tthis.#stdinWasRaw = false;\n\t}\n}\n\nconst stdinDiscarder = new StdinDiscarder();\n\nexport default Object.freeze(stdinDiscarder);\n","import process from 'node:process';\nimport {stripVTControlCharacters} from 'node:util';\nimport chalk from 'chalk';\nimport cliCursor from 'cli-cursor';\nimport cliSpinners from 'cli-spinners';\nimport logSymbols from 'log-symbols';\nimport stringWidth from 'string-width';\nimport isInteractive from 'is-interactive';\nimport isUnicodeSupported from 'is-unicode-supported';\nimport stdinDiscarder from 'stdin-discarder';\n\n// Constants\nconst RENDER_DEFERRAL_TIMEOUT = 200; // Milliseconds to wait before re-rendering after partial chunk write\nconst SYNCHRONIZED_OUTPUT_ENABLE = '\\u001B[?2026h';\nconst SYNCHRONIZED_OUTPUT_DISABLE = '\\u001B[?2026l';\n\n// Global state for concurrent spinner detection\nconst activeHooksPerStream = new Map(); // Stream → ora instance\n\nclass Ora {\n\t#linesToClear = 0;\n\t#frameIndex = -1;\n\t#lastFrameTime = 0;\n\t#options;\n\t#spinner;\n\t#stream;\n\t#id;\n\t#hookedStreams = new Map();\n\t#isInternalWrite = false;\n\t#drainHandler;\n\t#deferRenderTimer;\n\t#isDiscardingStdin = false;\n\tcolor;\n\n\t// Helper to execute writes while preventing hook recursion\n\t#internalWrite(fn) {\n\t\tthis.#isInternalWrite = true;\n\t\ttry {\n\t\t\treturn fn();\n\t\t} finally {\n\t\t\tthis.#isInternalWrite = false;\n\t\t}\n\t}\n\n\t// Helper to render if still spinning\n\t#tryRender() {\n\t\tif (this.isSpinning) {\n\t\t\tthis.render();\n\t\t}\n\t}\n\n\t#stringifyChunk(chunk, encoding) {\n\t\tif (chunk === undefined || chunk === null) {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (typeof chunk === 'string') {\n\t\t\treturn chunk;\n\t\t}\n\n\t\t/* eslint-disable n/prefer-global/buffer */\n\t\tif (Buffer.isBuffer(chunk) || ArrayBuffer.isView(chunk)) {\n\t\t\tconst normalizedEncoding = (typeof encoding === 'string' && encoding && encoding !== 'buffer') ? encoding : 'utf8';\n\t\t\treturn Buffer.from(chunk).toString(normalizedEncoding);\n\t\t}\n\t\t/* eslint-enable n/prefer-global/buffer */\n\n\t\treturn String(chunk);\n\t}\n\n\t#chunkTerminatesLine(chunkString) {\n\t\tif (!chunkString) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst lastCharacter = chunkString.at(-1);\n\t\treturn lastCharacter === '\\n' || lastCharacter === '\\r';\n\t}\n\n\t#scheduleRenderDeferral() {\n\t\t// If already deferred, don't reset timer - let it complete\n\t\tif (this.#deferRenderTimer) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.#deferRenderTimer = setTimeout(() => {\n\t\t\tthis.#deferRenderTimer = undefined;\n\n\t\t\tif (this.isSpinning) {\n\t\t\t\tthis.#tryRender();\n\t\t\t}\n\t\t}, RENDER_DEFERRAL_TIMEOUT);\n\n\t\tif (typeof this.#deferRenderTimer?.unref === 'function') {\n\t\t\tthis.#deferRenderTimer.unref();\n\t\t}\n\t}\n\n\t#clearRenderDeferral() {\n\t\tif (this.#deferRenderTimer) {\n\t\t\tclearTimeout(this.#deferRenderTimer);\n\t\t\tthis.#deferRenderTimer = undefined;\n\t\t}\n\t}\n\n\t// Helper to build complete line with symbol, text, prefix, and suffix\n\t#buildOutputLine(symbol, text, prefixText, suffixText) {\n\t\tconst fullPrefixText = this.#getFullPrefixText(prefixText, ' ');\n\t\tconst separatorText = symbol ? ' ' : '';\n\t\tconst fullText = (typeof text === 'string') ? separatorText + text : '';\n\t\tconst fullSuffixText = this.#getFullSuffixText(suffixText, ' ');\n\t\treturn fullPrefixText + symbol + fullText + fullSuffixText;\n\t}\n\n\tconstructor(options) {\n\t\tif (typeof options === 'string') {\n\t\t\toptions = {\n\t\t\t\ttext: options,\n\t\t\t};\n\t\t}\n\n\t\tthis.#options = {\n\t\t\tcolor: 'cyan',\n\t\t\tstream: process.stderr,\n\t\t\tdiscardStdin: true,\n\t\t\thideCursor: true,\n\t\t\t...options,\n\t\t};\n\n\t\t// Public\n\t\tthis.color = this.#options.color;\n\n\t\tthis.#stream = this.#options.stream;\n\n\t\t// Normalize isEnabled and isSilent into options\n\t\tif (typeof this.#options.isEnabled !== 'boolean') {\n\t\t\tthis.#options.isEnabled = isInteractive({stream: this.#stream});\n\t\t}\n\n\t\tif (typeof this.#options.isSilent !== 'boolean') {\n\t\t\tthis.#options.isSilent = false;\n\t\t}\n\n\t\t// Set *after* `this.#stream`.\n\t\t// Store original interval before spinner setter clears it\n\t\tconst userInterval = this.#options.interval;\n\t\t// It's important that these use the public setters.\n\t\tthis.spinner = this.#options.spinner;\n\t\tthis.#options.interval = userInterval;\n\t\tthis.text = this.#options.text;\n\t\tthis.prefixText = this.#options.prefixText;\n\t\tthis.suffixText = this.#options.suffixText;\n\t\tthis.indent = this.#options.indent;\n\n\t\tif (process.env.NODE_ENV === 'test') {\n\t\t\tthis._stream = this.#stream;\n\t\t\tthis._isEnabled = this.#options.isEnabled;\n\n\t\t\tObject.defineProperty(this, '_linesToClear', {\n\t\t\t\tget() {\n\t\t\t\t\treturn this.#linesToClear;\n\t\t\t\t},\n\t\t\t\tset(newValue) {\n\t\t\t\t\tthis.#linesToClear = newValue;\n\t\t\t\t},\n\t\t\t});\n\n\t\t\tObject.defineProperty(this, '_frameIndex', {\n\t\t\t\tget() {\n\t\t\t\t\treturn this.#frameIndex;\n\t\t\t\t},\n\t\t\t});\n\n\t\t\tObject.defineProperty(this, '_lineCount', {\n\t\t\t\tget() {\n\t\t\t\t\tconst columns = this.#stream.columns ?? 80;\n\t\t\t\t\tconst prefixText = typeof this.#options.prefixText === 'function' ? '' : this.#options.prefixText;\n\t\t\t\t\tconst suffixText = typeof this.#options.suffixText === 'function' ? '' : this.#options.suffixText;\n\t\t\t\t\tconst fullPrefixText = (typeof prefixText === 'string' && prefixText !== '') ? prefixText + ' ' : '';\n\t\t\t\t\tconst fullSuffixText = (typeof suffixText === 'string' && suffixText !== '') ? ' ' + suffixText : '';\n\t\t\t\t\tconst spinnerChar = '-';\n\t\t\t\t\tconst fullText = ' '.repeat(this.#options.indent) + fullPrefixText + spinnerChar + (typeof this.#options.text === 'string' ? ' ' + this.#options.text : '') + fullSuffixText;\n\t\t\t\t\treturn this.#computeLineCountFrom(fullText, columns);\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\t}\n\n\tget indent() {\n\t\treturn this.#options.indent;\n\t}\n\n\tset indent(indent = 0) {\n\t\tif (!(indent >= 0 && Number.isInteger(indent))) {\n\t\t\tthrow new Error('The `indent` option must be an integer from 0 and up');\n\t\t}\n\n\t\tthis.#options.indent = indent;\n\t}\n\n\tget interval() {\n\t\treturn this.#options.interval ?? this.#spinner.interval ?? 100;\n\t}\n\n\tget spinner() {\n\t\treturn this.#spinner;\n\t}\n\n\tset spinner(spinner) {\n\t\tthis.#frameIndex = -1;\n\t\tthis.#options.interval = undefined;\n\n\t\tif (typeof spinner === 'object') {\n\t\t\tif (!Array.isArray(spinner.frames) || spinner.frames.length === 0 || spinner.frames.some(frame => typeof frame !== 'string')) {\n\t\t\t\tthrow new Error('The given spinner must have a non-empty `frames` array of strings');\n\t\t\t}\n\n\t\t\tif (spinner.interval !== undefined && !(Number.isInteger(spinner.interval) && spinner.interval > 0)) {\n\t\t\t\tthrow new Error('`spinner.interval` must be a positive integer if provided');\n\t\t\t}\n\n\t\t\tthis.#spinner = spinner;\n\t\t} else if (!isUnicodeSupported()) {\n\t\t\tthis.#spinner = cliSpinners.line;\n\t\t} else if (spinner === undefined) {\n\t\t\t// Set default spinner\n\t\t\tthis.#spinner = cliSpinners.dots;\n\t\t} else if (spinner !== 'default' && cliSpinners[spinner]) {\n\t\t\tthis.#spinner = cliSpinners[spinner];\n\t\t} else {\n\t\t\tthrow new Error(`There is no built-in spinner named '${spinner}'. See https://github.com/sindresorhus/cli-spinners/blob/main/spinners.json for a full list.`);\n\t\t}\n\t}\n\n\tget text() {\n\t\treturn this.#options.text;\n\t}\n\n\tset text(value = '') {\n\t\tthis.#options.text = value;\n\t}\n\n\tget prefixText() {\n\t\treturn this.#options.prefixText;\n\t}\n\n\tset prefixText(value = '') {\n\t\tthis.#options.prefixText = value;\n\t}\n\n\tget suffixText() {\n\t\treturn this.#options.suffixText;\n\t}\n\n\tset suffixText(value = '') {\n\t\tthis.#options.suffixText = value;\n\t}\n\n\tget isSpinning() {\n\t\treturn this.#id !== undefined;\n\t}\n\n\t#formatAffix(value, separator, placeBefore = false) {\n\t\tconst resolved = typeof value === 'function' ? value() : value;\n\t\tif (typeof resolved === 'string' && resolved !== '') {\n\t\t\treturn placeBefore ? (separator + resolved) : (resolved + separator);\n\t\t}\n\n\t\treturn '';\n\t}\n\n\t#getFullPrefixText(prefixText = this.#options.prefixText, postfix = ' ') {\n\t\treturn this.#formatAffix(prefixText, postfix, false);\n\t}\n\n\t#getFullSuffixText(suffixText = this.#options.suffixText, prefix = ' ') {\n\t\treturn this.#formatAffix(suffixText, prefix, true);\n\t}\n\n\t#computeLineCountFrom(text, columns) {\n\t\tlet count = 0;\n\t\tfor (const line of stripVTControlCharacters(text).split('\\n')) {\n\t\t\tcount += Math.max(1, Math.ceil(stringWidth(line) / columns));\n\t\t}\n\n\t\treturn count;\n\t}\n\n\tget isEnabled() {\n\t\treturn this.#options.isEnabled && !this.#options.isSilent;\n\t}\n\n\tset isEnabled(value) {\n\t\tif (typeof value !== 'boolean') {\n\t\t\tthrow new TypeError('The `isEnabled` option must be a boolean');\n\t\t}\n\n\t\tthis.#options.isEnabled = value;\n\t}\n\n\tget isSilent() {\n\t\treturn this.#options.isSilent;\n\t}\n\n\tset isSilent(value) {\n\t\tif (typeof value !== 'boolean') {\n\t\t\tthrow new TypeError('The `isSilent` option must be a boolean');\n\t\t}\n\n\t\tthis.#options.isSilent = value;\n\t}\n\n\tframe() {\n\t\t// Only advance frame if enough time has passed (throttle to interval)\n\t\tconst now = Date.now();\n\t\tif (this.#frameIndex === -1 || now - this.#lastFrameTime >= this.interval) {\n\t\t\tthis.#frameIndex = (this.#frameIndex + 1) % this.#spinner.frames.length;\n\t\t\tthis.#lastFrameTime = now;\n\t\t}\n\n\t\tconst {frames} = this.#spinner;\n\t\tlet frame = frames[this.#frameIndex];\n\n\t\tif (this.color) {\n\t\t\tframe = chalk[this.color](frame);\n\t\t}\n\n\t\tconst fullPrefixText = this.#getFullPrefixText(this.#options.prefixText, ' ');\n\t\tconst fullText = typeof this.text === 'string' ? ' ' + this.text : '';\n\t\tconst fullSuffixText = this.#getFullSuffixText(this.#options.suffixText, ' ');\n\n\t\treturn fullPrefixText + frame + fullText + fullSuffixText;\n\t}\n\n\tclear() {\n\t\tif (!this.isEnabled || !this.#stream.isTTY) {\n\t\t\treturn this;\n\t\t}\n\n\t\t// Protect cursor control methods (cursorTo, moveCursor, clearLine) which internally call stream.write\n\t\tthis.#internalWrite(() => {\n\t\t\tthis.#stream.cursorTo(0);\n\n\t\t\tfor (let index = 0; index < this.#linesToClear; index++) {\n\t\t\t\tif (index > 0) {\n\t\t\t\t\tthis.#stream.moveCursor(0, -1);\n\t\t\t\t}\n\n\t\t\t\tthis.#stream.clearLine(1);\n\t\t\t}\n\n\t\t\tif (this.#options.indent) {\n\t\t\t\tthis.#stream.cursorTo(this.#options.indent);\n\t\t\t}\n\t\t});\n\n\t\tthis.#linesToClear = 0;\n\n\t\treturn this;\n\t}\n\n\t// Helper to hook a single stream\n\t#hookStream(stream) {\n\t\tif (!stream || this.#hookedStreams.has(stream) || !stream.isTTY || typeof stream.write !== 'function') {\n\t\t\treturn;\n\t\t}\n\n\t\t// Detect concurrent spinners\n\t\tif (activeHooksPerStream.has(stream)) {\n\t\t\tconsole.warn('[ora] Multiple concurrent spinners detected. This may cause visual corruption. Use one spinner at a time.');\n\t\t}\n\n\t\tconst originalWrite = stream.write;\n\t\tthis.#hookedStreams.set(stream, originalWrite);\n\t\tactiveHooksPerStream.set(stream, this);\n\t\tstream.write = (chunk, encoding, callback) => this.#hookedWrite(stream, originalWrite, chunk, encoding, callback);\n\t}\n\n\t/**\n\tIntercept stream writes while spinner is active to handle external writes cleanly without visual corruption.\n\tHooks process stdio streams and the active spinner stream so console.log(), console.error(), and direct writes stay tidy.\n\t*/\n\t#installHook() {\n\t\tif (!this.isEnabled || this.#hookedStreams.size > 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst streamsToHook = new Set([this.#stream, process.stdout, process.stderr]);\n\n\t\tfor (const stream of streamsToHook) {\n\t\t\tthis.#hookStream(stream);\n\t\t}\n\t}\n\n\t#uninstallHook() {\n\t\tfor (const [stream, originalWrite] of this.#hookedStreams) {\n\t\t\tstream.write = originalWrite;\n\t\t\tif (activeHooksPerStream.get(stream) === this) {\n\t\t\t\tactiveHooksPerStream.delete(stream);\n\t\t\t}\n\t\t}\n\n\t\tthis.#hookedStreams.clear();\n\t}\n\n\t// eslint-disable-next-line max-params -- Need stream and originalWrite for multi-stream support\n\t#hookedWrite(stream, originalWrite, chunk, encoding, callback) {\n\t\t// Handle both write(chunk, encoding, callback) and write(chunk, callback) signatures\n\t\tif (typeof encoding === 'function') {\n\t\t\tcallback = encoding;\n\t\t\tencoding = undefined;\n\t\t}\n\n\t\t// Pass through our own internal writes (spinner rendering, cursor control)\n\t\tif (this.#isInternalWrite) {\n\t\t\treturn originalWrite.call(stream, chunk, encoding, callback);\n\t\t}\n\n\t\t// External write detected - clear spinner, write content, re-render if appropriate\n\t\tthis.clear();\n\n\t\tconst chunkString = this.#stringifyChunk(chunk, encoding);\n\t\tconst chunkTerminatesLine = this.#chunkTerminatesLine(chunkString);\n\n\t\tconst writeResult = originalWrite.call(stream, chunk, encoding, callback);\n\n\t\t// Schedule or clear render deferral based on chunk content\n\t\tif (chunkTerminatesLine) {\n\t\t\tthis.#clearRenderDeferral();\n\t\t} else if (chunkString.length > 0) {\n\t\t\tthis.#scheduleRenderDeferral();\n\t\t}\n\n\t\t// Re-render spinner below the new output if still spinning and not deferred\n\t\tif (this.isSpinning && !this.#deferRenderTimer) {\n\t\t\tthis.render();\n\t\t}\n\n\t\treturn writeResult;\n\t}\n\n\trender() {\n\t\tif (!this.isEnabled || this.#drainHandler || this.#deferRenderTimer) {\n\t\t\treturn this;\n\t\t}\n\n\t\tconst useSynchronizedOutput = this.#stream.isTTY;\n\t\tlet shouldDisableSynchronizedOutput = false;\n\n\t\ttry {\n\t\t\tif (useSynchronizedOutput) {\n\t\t\t\tthis.#internalWrite(() => this.#stream.write(SYNCHRONIZED_OUTPUT_ENABLE));\n\t\t\t\tshouldDisableSynchronizedOutput = true;\n\t\t\t}\n\n\t\t\tthis.clear();\n\n\t\t\tlet frameContent = this.frame();\n\t\t\tconst columns = this.#stream.columns ?? 80;\n\t\t\tconst actualLineCount = this.#computeLineCountFrom(frameContent, columns);\n\n\t\t\t// If content would exceed viewport height, truncate it to prevent garbage\n\t\t\tconst consoleHeight = this.#stream.rows;\n\t\t\tif (consoleHeight && consoleHeight > 1 && actualLineCount > consoleHeight) {\n\t\t\t\tconst lines = frameContent.split('\\n');\n\t\t\t\tconst maxLines = consoleHeight - 1; // Reserve one line for truncation message\n\t\t\t\tframeContent = [...lines.slice(0, maxLines), '... (content truncated to fit terminal)'].join('\\n');\n\t\t\t}\n\n\t\t\tconst canContinue = this.#internalWrite(() => this.#stream.write(frameContent));\n\n\t\t\t// Handle backpressure - pause rendering if stream buffer is full\n\t\t\tif (canContinue === false && this.#stream.isTTY) {\n\t\t\t\tthis.#drainHandler = () => {\n\t\t\t\t\tthis.#drainHandler = undefined;\n\t\t\t\t\tthis.#tryRender();\n\t\t\t\t};\n\n\t\t\t\tthis.#stream.once('drain', this.#drainHandler);\n\t\t\t}\n\n\t\t\tthis.#linesToClear = this.#computeLineCountFrom(frameContent, columns);\n\t\t} finally {\n\t\t\tif (shouldDisableSynchronizedOutput) {\n\t\t\t\tthis.#internalWrite(() => this.#stream.write(SYNCHRONIZED_OUTPUT_DISABLE));\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t}\n\n\tstart(text) {\n\t\tif (text) {\n\t\t\tthis.text = text;\n\t\t}\n\n\t\tif (this.isSilent) {\n\t\t\treturn this;\n\t\t}\n\n\t\tif (!this.isEnabled) {\n\t\t\tconst symbol = this.text ? '-' : '';\n\t\t\tconst line = ' '.repeat(this.#options.indent) + this.#buildOutputLine(symbol, this.text, this.#options.prefixText, this.#options.suffixText);\n\n\t\t\tif (line.trim() !== '') {\n\t\t\t\tthis.#internalWrite(() => this.#stream.write(line + '\\n'));\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\n\t\tif (this.isSpinning) {\n\t\t\treturn this;\n\t\t}\n\n\t\tif (this.#options.hideCursor) {\n\t\t\tcliCursor.hide(this.#stream);\n\t\t}\n\n\t\tif (this.#options.discardStdin && process.stdin.isTTY) {\n\t\t\tstdinDiscarder.start();\n\t\t\tthis.#isDiscardingStdin = true;\n\t\t}\n\n\t\tthis.#installHook();\n\t\tthis.render();\n\t\tthis.#id = setInterval(this.render.bind(this), this.interval);\n\n\t\treturn this;\n\t}\n\n\tstop() {\n\t\tclearInterval(this.#id);\n\t\tthis.#id = undefined;\n\t\tthis.#frameIndex = -1;\n\t\tthis.#lastFrameTime = 0;\n\n\t\tthis.#clearRenderDeferral();\n\t\tthis.#uninstallHook();\n\n\t\t// Clean up drain handler if it exists\n\t\tif (this.#drainHandler) {\n\t\t\tthis.#stream.removeListener('drain', this.#drainHandler);\n\t\t\tthis.#drainHandler = undefined;\n\t\t}\n\n\t\tif (this.isEnabled) {\n\t\t\tthis.clear();\n\t\t\tif (this.#options.hideCursor) {\n\t\t\t\tcliCursor.show(this.#stream);\n\t\t\t}\n\t\t}\n\n\t\tif (this.#isDiscardingStdin) {\n\t\t\tthis.#isDiscardingStdin = false;\n\t\t\tstdinDiscarder.stop();\n\t\t}\n\n\t\treturn this;\n\t}\n\n\tsucceed(text) {\n\t\treturn this.stopAndPersist({symbol: logSymbols.success, text});\n\t}\n\n\tfail(text) {\n\t\treturn this.stopAndPersist({symbol: logSymbols.error, text});\n\t}\n\n\twarn(text) {\n\t\treturn this.stopAndPersist({symbol: logSymbols.warning, text});\n\t}\n\n\tinfo(text) {\n\t\treturn this.stopAndPersist({symbol: logSymbols.info, text});\n\t}\n\n\tstopAndPersist(options = {}) {\n\t\tif (this.isSilent) {\n\t\t\treturn this;\n\t\t}\n\n\t\tconst symbol = options.symbol ?? ' ';\n\t\tconst text = options.text ?? this.text;\n\t\tconst prefixText = options.prefixText ?? this.#options.prefixText;\n\t\tconst suffixText = options.suffixText ?? this.#options.suffixText;\n\n\t\tconst textToWrite = this.#buildOutputLine(symbol, text, prefixText, suffixText) + '\\n';\n\n\t\tthis.stop();\n\t\tthis.#internalWrite(() => this.#stream.write(textToWrite));\n\n\t\treturn this;\n\t}\n}\n\nexport default function ora(options) {\n\treturn new Ora(options);\n}\n\nexport async function oraPromise(action, options) {\n\tconst actionIsFunction = typeof action === 'function';\n\tconst actionIsPromise = typeof action.then === 'function';\n\n\tif (!actionIsFunction && !actionIsPromise) {\n\t\tthrow new TypeError('Parameter `action` must be a Function or a Promise');\n\t}\n\n\tconst {successText, failText} = typeof options === 'object'\n\t\t? options\n\t\t: {successText: undefined, failText: undefined};\n\n\tconst spinner = ora(options).start();\n\n\ttry {\n\t\tconst promise = actionIsFunction ? action(spinner) : action;\n\t\tconst result = await promise;\n\n\t\tspinner.succeed(successText === undefined\n\t\t\t? undefined\n\t\t\t: (typeof successText === 'string' ? successText : successText(result)));\n\n\t\treturn result;\n\t} catch (error) {\n\t\tspinner.fail(failText === undefined\n\t\t\t? undefined\n\t\t\t: (typeof failText === 'string' ? failText : failText(error)));\n\n\t\tthrow error;\n\t}\n}\n\nexport {default as spinners} from 'cli-spinners';\n","export const isUpKey = (key, keybindings = []) => \n// The up key\nkey.name === 'up' ||\n // Vim keybinding: hjkl keys map to left/down/up/right\n (keybindings.includes('vim') && key.name === 'k') ||\n // Emacs keybinding: Ctrl+P means \"previous\" in Emacs navigation conventions\n (keybindings.includes('emacs') && key.ctrl && key.name === 'p');\nexport const isDownKey = (key, keybindings = []) => \n// The down key\nkey.name === 'down' ||\n // Vim keybinding: hjkl keys map to left/down/up/right\n (keybindings.includes('vim') && key.name === 'j') ||\n // Emacs keybinding: Ctrl+N means \"next\" in Emacs navigation conventions\n (keybindings.includes('emacs') && key.ctrl && key.name === 'n');\nexport const isSpaceKey = (key) => key.name === 'space';\nexport const isBackspaceKey = (key) => key.name === 'backspace';\nexport const isTabKey = (key) => key.name === 'tab';\nexport const isNumberKey = (key) => '1234567890'.includes(key.name);\nexport const isEnterKey = (key) => key.name === 'enter' || key.name === 'return';\nexport const isShiftKey = (key) => key.shift;\n","export class AbortPromptError extends Error {\n name = 'AbortPromptError';\n message = 'Prompt was aborted';\n constructor(options) {\n super();\n this.cause = options?.cause;\n }\n}\nexport class CancelPromptError extends Error {\n name = 'CancelPromptError';\n message = 'Prompt was canceled';\n}\nexport class ExitPromptError extends Error {\n name = 'ExitPromptError';\n}\nexport class HookError extends Error {\n name = 'HookError';\n}\nexport class ValidationError extends Error {\n name = 'ValidationError';\n}\n","/* eslint @typescript-eslint/no-explicit-any: [\"off\"] */\nimport { AsyncLocalStorage, AsyncResource } from 'node:async_hooks';\nimport { HookError, ValidationError } from \"./errors.js\";\nconst hookStorage = new AsyncLocalStorage();\nfunction createStore(rl) {\n const store = {\n rl,\n hooks: [],\n hooksCleanup: [],\n hooksEffect: [],\n index: 0,\n handleChange() { },\n };\n return store;\n}\n// Run callback in with the hook engine setup.\nexport function withHooks(rl, cb) {\n const store = createStore(rl);\n return hookStorage.run(store, () => {\n function cycle(render) {\n store.handleChange = () => {\n store.index = 0;\n render();\n };\n store.handleChange();\n }\n return cb(cycle);\n });\n}\n// Safe getStore utility that'll return the store or throw if undefined.\nfunction getStore() {\n const store = hookStorage.getStore();\n if (!store) {\n throw new HookError('[Inquirer] Hook functions can only be called from within a prompt');\n }\n return store;\n}\nexport function readline() {\n return getStore().rl;\n}\n// Merge state updates happening within the callback function to avoid multiple renders.\nexport function withUpdates(fn) {\n const wrapped = (...args) => {\n const store = getStore();\n let shouldUpdate = false;\n const oldHandleChange = store.handleChange;\n store.handleChange = () => {\n shouldUpdate = true;\n };\n const returnValue = fn(...args);\n if (shouldUpdate) {\n oldHandleChange();\n }\n store.handleChange = oldHandleChange;\n return returnValue;\n };\n return AsyncResource.bind(wrapped);\n}\nexport function withPointer(cb) {\n const store = getStore();\n const { index } = store;\n const pointer = {\n get() {\n return store.hooks[index];\n },\n set(value) {\n store.hooks[index] = value;\n },\n initialized: index in store.hooks,\n };\n const returnValue = cb(pointer);\n store.index++;\n return returnValue;\n}\nexport function handleChange() {\n getStore().handleChange();\n}\nexport const effectScheduler = {\n queue(cb) {\n const store = getStore();\n const { index } = store;\n store.hooksEffect.push(() => {\n store.hooksCleanup[index]?.();\n const cleanFn = cb(readline());\n if (cleanFn != null && typeof cleanFn !== 'function') {\n throw new ValidationError('useEffect return value must be a cleanup function or nothing.');\n }\n store.hooksCleanup[index] = cleanFn;\n });\n },\n run() {\n const store = getStore();\n withUpdates(() => {\n store.hooksEffect.forEach((effect) => {\n effect();\n });\n // Warning: Clean the hooks before exiting the `withUpdates` block.\n // Failure to do so means an updates would hit the same effects again.\n store.hooksEffect.length = 0;\n })();\n },\n clearAll() {\n const store = getStore();\n store.hooksCleanup.forEach((cleanFn) => {\n cleanFn?.();\n });\n store.hooksEffect.length = 0;\n store.hooksCleanup.length = 0;\n },\n};\n","import { AsyncResource } from 'node:async_hooks';\nimport { withPointer, handleChange } from \"./hook-engine.js\";\nexport function useState(defaultValue) {\n return withPointer((pointer) => {\n const setState = AsyncResource.bind(function setState(newValue) {\n // Noop if the value is still the same.\n if (pointer.get() !== newValue) {\n pointer.set(newValue);\n // Trigger re-render\n handleChange();\n }\n });\n if (pointer.initialized) {\n return [pointer.get(), setState];\n }\n const value = typeof defaultValue === 'function' ? defaultValue() : defaultValue;\n pointer.set(value);\n return [value, setState];\n });\n}\n","import { withPointer, effectScheduler } from \"./hook-engine.js\";\nexport function useEffect(cb, depArray) {\n withPointer((pointer) => {\n const oldDeps = pointer.get();\n const hasChanged = !Array.isArray(oldDeps) || depArray.some((dep, i) => !Object.is(dep, oldDeps[i]));\n if (hasChanged) {\n effectScheduler.queue(cb);\n }\n pointer.set(depArray);\n });\n}\n","// process.env dot-notation access prints:\n// Property 'TERM' comes from an index signature, so it must be accessed with ['TERM'].ts(4111)\n/* eslint dot-notation: [\"off\"] */\nimport process from 'node:process';\n// Ported from is-unicode-supported\nfunction isUnicodeSupported() {\n if (process.platform !== 'win32') {\n return process.env['TERM'] !== 'linux'; // Linux console (kernel)\n }\n return (Boolean(process.env['WT_SESSION']) || // Windows Terminal\n Boolean(process.env['TERMINUS_SUBLIME']) || // Terminus (<0.2.27)\n process.env['ConEmuTask'] === '{cmd::Cmder}' || // ConEmu and cmder\n process.env['TERM_PROGRAM'] === 'Terminus-Sublime' ||\n process.env['TERM_PROGRAM'] === 'vscode' ||\n process.env['TERM'] === 'xterm-256color' ||\n process.env['TERM'] === 'alacritty' ||\n process.env['TERMINAL_EMULATOR'] === 'JetBrains-JediTerm');\n}\n// Ported from figures\nconst common = {\n circleQuestionMark: '(?)',\n questionMarkPrefix: '(?)',\n square: '█',\n squareDarkShade: '▓',\n squareMediumShade: '▒',\n squareLightShade: '░',\n squareTop: '▀',\n squareBottom: '▄',\n squareLeft: '▌',\n squareRight: '▐',\n squareCenter: '■',\n bullet: '●',\n dot: '․',\n ellipsis: '…',\n pointerSmall: '›',\n triangleUp: '▲',\n triangleUpSmall: '▴',\n triangleDown: '▼',\n triangleDownSmall: '▾',\n triangleLeftSmall: '◂',\n triangleRightSmall: '▸',\n home: '⌂',\n heart: '♥',\n musicNote: '♪',\n musicNoteBeamed: '♫',\n arrowUp: '↑',\n arrowDown: '↓',\n arrowLeft: '←',\n arrowRight: '→',\n arrowLeftRight: '↔',\n arrowUpDown: '↕',\n almostEqual: '≈',\n notEqual: '≠',\n lessOrEqual: '≤',\n greaterOrEqual: '≥',\n identical: '≡',\n infinity: '∞',\n subscriptZero: '₀',\n subscriptOne: '₁',\n subscriptTwo: '₂',\n subscriptThree: '₃',\n subscriptFour: '₄',\n subscriptFive: '₅',\n subscriptSix: '₆',\n subscriptSeven: '₇',\n subscriptEight: '₈',\n subscriptNine: '₉',\n oneHalf: '½',\n oneThird: '⅓',\n oneQuarter: '¼',\n oneFifth: '⅕',\n oneSixth: '⅙',\n oneEighth: '⅛',\n twoThirds: '⅔',\n twoFifths: '⅖',\n threeQuarters: '¾',\n threeFifths: '⅗',\n threeEighths: '⅜',\n fourFifths: '⅘',\n fiveSixths: '⅚',\n fiveEighths: '⅝',\n sevenEighths: '⅞',\n line: '─',\n lineBold: '━',\n lineDouble: '═',\n lineDashed0: '┄',\n lineDashed1: '┅',\n lineDashed2: '┈',\n lineDashed3: '┉',\n lineDashed4: '╌',\n lineDashed5: '╍',\n lineDashed6: '╴',\n lineDashed7: '╶',\n lineDashed8: '╸',\n lineDashed9: '╺',\n lineDashed10: '╼',\n lineDashed11: '╾',\n lineDashed12: '−',\n lineDashed13: '–',\n lineDashed14: '‐',\n lineDashed15: '⁃',\n lineVertical: '│',\n lineVerticalBold: '┃',\n lineVerticalDouble: '║',\n lineVerticalDashed0: '┆',\n lineVerticalDashed1: '┇',\n lineVerticalDashed2: '┊',\n lineVerticalDashed3: '┋',\n lineVerticalDashed4: '╎',\n lineVerticalDashed5: '╏',\n lineVerticalDashed6: '╵',\n lineVerticalDashed7: '╷',\n lineVerticalDashed8: '╹',\n lineVerticalDashed9: '╻',\n lineVerticalDashed10: '╽',\n lineVerticalDashed11: '╿',\n lineDownLeft: '┐',\n lineDownLeftArc: '╮',\n lineDownBoldLeftBold: '┓',\n lineDownBoldLeft: '┒',\n lineDownLeftBold: '┑',\n lineDownDoubleLeftDouble: '╗',\n lineDownDoubleLeft: '╖',\n lineDownLeftDouble: '╕',\n lineDownRight: '┌',\n lineDownRightArc: '╭',\n lineDownBoldRightBold: '┏',\n lineDownBoldRight: '┎',\n lineDownRightBold: '┍',\n lineDownDoubleRightDouble: '╔',\n lineDownDoubleRight: '╓',\n lineDownRightDouble: '╒',\n lineUpLeft: '┘',\n lineUpLeftArc: '╯',\n lineUpBoldLeftBold: '┛',\n lineUpBoldLeft: '┚',\n lineUpLeftBold: '┙',\n lineUpDoubleLeftDouble: '╝',\n lineUpDoubleLeft: '╜',\n lineUpLeftDouble: '╛',\n lineUpRight: '└',\n lineUpRightArc: '╰',\n lineUpBoldRightBold: '┗',\n lineUpBoldRight: '┖',\n lineUpRightBold: '┕',\n lineUpDoubleRightDouble: '╚',\n lineUpDoubleRight: '╙',\n lineUpRightDouble: '╘',\n lineUpDownLeft: '┤',\n lineUpBoldDownBoldLeftBold: '┫',\n lineUpBoldDownBoldLeft: '┨',\n lineUpDownLeftBold: '┥',\n lineUpBoldDownLeftBold: '┩',\n lineUpDownBoldLeftBold: '┪',\n lineUpDownBoldLeft: '┧',\n lineUpBoldDownLeft: '┦',\n lineUpDoubleDownDoubleLeftDouble: '╣',\n lineUpDoubleDownDoubleLeft: '╢',\n lineUpDownLeftDouble: '╡',\n lineUpDownRight: '├',\n lineUpBoldDownBoldRightBold: '┣',\n lineUpBoldDownBoldRight: '┠',\n lineUpDownRightBold: '┝',\n lineUpBoldDownRightBold: '┡',\n lineUpDownBoldRightBold: '┢',\n lineUpDownBoldRight: '┟',\n lineUpBoldDownRight: '┞',\n lineUpDoubleDownDoubleRightDouble: '╠',\n lineUpDoubleDownDoubleRight: '╟',\n lineUpDownRightDouble: '╞',\n lineDownLeftRight: '┬',\n lineDownBoldLeftBoldRightBold: '┳',\n lineDownLeftBoldRightBold: '┯',\n lineDownBoldLeftRight: '┰',\n lineDownBoldLeftBoldRight: '┱',\n lineDownBoldLeftRightBold: '┲',\n lineDownLeftRightBold: '┮',\n lineDownLeftBoldRight: '┭',\n lineDownDoubleLeftDoubleRightDouble: '╦',\n lineDownDoubleLeftRight: '╥',\n lineDownLeftDoubleRightDouble: '╤',\n lineUpLeftRight: '┴',\n lineUpBoldLeftBoldRightBold: '┻',\n lineUpLeftBoldRightBold: '┷',\n lineUpBoldLeftRight: '┸',\n lineUpBoldLeftBoldRight: '┹',\n lineUpBoldLeftRightBold: '┺',\n lineUpLeftRightBold: '┶',\n lineUpLeftBoldRight: '┵',\n lineUpDoubleLeftDoubleRightDouble: '╩',\n lineUpDoubleLeftRight: '╨',\n lineUpLeftDoubleRightDouble: '╧',\n lineUpDownLeftRight: '┼',\n lineUpBoldDownBoldLeftBoldRightBold: '╋',\n lineUpDownBoldLeftBoldRightBold: '╈',\n lineUpBoldDownLeftBoldRightBold: '╇',\n lineUpBoldDownBoldLeftRightBold: '╊',\n lineUpBoldDownBoldLeftBoldRight: '╉',\n lineUpBoldDownLeftRight: '╀',\n lineUpDownBoldLeftRight: '╁',\n lineUpDownLeftBoldRight: '┽',\n lineUpDownLeftRightBold: '┾',\n lineUpBoldDownBoldLeftRight: '╂',\n lineUpDownLeftBoldRightBold: '┿',\n lineUpBoldDownLeftBoldRight: '╃',\n lineUpBoldDownLeftRightBold: '╄',\n lineUpDownBoldLeftBoldRight: '╅',\n lineUpDownBoldLeftRightBold: '╆',\n lineUpDoubleDownDoubleLeftDoubleRightDouble: '╬',\n lineUpDoubleDownDoubleLeftRight: '╫',\n lineUpDownLeftDoubleRightDouble: '╪',\n lineCross: '╳',\n lineBackslash: '╲',\n lineSlash: '╱',\n};\nconst specialMainSymbols = {\n tick: '✔',\n info: 'ℹ',\n warning: '⚠',\n cross: '✘',\n squareSmall: '◻',\n squareSmallFilled: '◼',\n circle: '◯',\n circleFilled: '◉',\n circleDotted: '◌',\n circleDouble: '◎',\n circleCircle: 'ⓞ',\n circleCross: 'ⓧ',\n circlePipe: 'Ⓘ',\n radioOn: '◉',\n radioOff: '◯',\n checkboxOn: '☒',\n checkboxOff: '☐',\n checkboxCircleOn: 'ⓧ',\n checkboxCircleOff: 'Ⓘ',\n pointer: '❯',\n triangleUpOutline: '△',\n triangleLeft: '◀',\n triangleRight: '▶',\n lozenge: '◆',\n lozengeOutline: '◇',\n hamburger: '☰',\n smiley: '㋡',\n mustache: '෴',\n star: '★',\n play: '▶',\n nodejs: '⬢',\n oneSeventh: '⅐',\n oneNinth: '⅑',\n oneTenth: '⅒',\n};\nconst specialFallbackSymbols = {\n tick: '√',\n info: 'i',\n warning: '‼',\n cross: '×',\n squareSmall: '□',\n squareSmallFilled: '■',\n circle: '( )',\n circleFilled: '(*)',\n circleDotted: '( )',\n circleDouble: '( )',\n circleCircle: '(○)',\n circleCross: '(×)',\n circlePipe: '(│)',\n radioOn: '(*)',\n radioOff: '( )',\n checkboxOn: '[×]',\n checkboxOff: '[ ]',\n checkboxCircleOn: '(×)',\n checkboxCircleOff: '( )',\n pointer: '>',\n triangleUpOutline: '∆',\n triangleLeft: '◄',\n triangleRight: '►',\n lozenge: '♦',\n lozengeOutline: '◊',\n hamburger: '≡',\n smiley: '☺',\n mustache: '┌─┐',\n star: '✶',\n play: '►',\n nodejs: '♦',\n oneSeventh: '1/7',\n oneNinth: '1/9',\n oneTenth: '1/10',\n};\nexport const mainSymbols = {\n ...common,\n ...specialMainSymbols,\n};\nexport const fallbackSymbols = {\n ...common,\n ...specialFallbackSymbols,\n};\nconst shouldUseMain = isUnicodeSupported();\nconst figures = shouldUseMain\n ? mainSymbols\n : fallbackSymbols;\nexport default figures;\nconst replacements = Object.entries(specialMainSymbols);\n// On terminals which do not support Unicode symbols, substitute them to other symbols\nexport const replaceSymbols = (string, { useFallback = !shouldUseMain } = {}) => {\n if (useFallback) {\n for (const [key, mainSymbol] of replacements) {\n const fallbackSymbol = fallbackSymbols[key];\n if (!fallbackSymbol) {\n throw new Error(`Unable to find fallback for ${key}`);\n }\n string = string.replaceAll(mainSymbol, fallbackSymbol);\n }\n }\n return string;\n};\n","import { styleText } from 'node:util';\nimport figures from '@inquirer/figures';\nexport const defaultTheme = {\n prefix: {\n idle: styleText('blue', '?'),\n done: styleText('green', figures.tick),\n },\n spinner: {\n interval: 80,\n frames: ['⠋', '⠙', '⠹', '⠸', '⠼', '⠴', '⠦', '⠧', '⠇', '⠏'].map((frame) => styleText('yellow', frame)),\n },\n style: {\n answer: (text) => styleText('cyan', text),\n message: (text) => styleText('bold', text),\n error: (text) => styleText('red', `> ${text}`),\n defaultAnswer: (text) => styleText('dim', `(${text})`),\n help: (text) => styleText('dim', text),\n highlight: (text) => styleText('cyan', text),\n key: (text) => styleText('cyan', styleText('bold', `<${text}>`)),\n },\n};\n","import { defaultTheme } from \"./theme.js\";\nfunction isPlainObject(value) {\n if (typeof value !== 'object' || value === null)\n return false;\n let proto = value;\n while (Object.getPrototypeOf(proto) !== null) {\n proto = Object.getPrototypeOf(proto);\n }\n return Object.getPrototypeOf(value) === proto;\n}\nfunction deepMerge(...objects) {\n const output = {};\n for (const obj of objects) {\n for (const [key, value] of Object.entries(obj)) {\n const prevValue = output[key];\n output[key] =\n isPlainObject(prevValue) && isPlainObject(value)\n ? deepMerge(prevValue, value)\n : value;\n }\n }\n return output;\n}\nexport function makeTheme(...themes) {\n const themesToMerge = [\n defaultTheme,\n ...themes.filter((theme) => theme != null),\n ];\n return deepMerge(...themesToMerge);\n}\n","import { useState } from \"./use-state.js\";\nimport { useEffect } from \"./use-effect.js\";\nimport { makeTheme } from \"./make-theme.js\";\nexport function usePrefix({ status = 'idle', theme, }) {\n const [showLoader, setShowLoader] = useState(false);\n const [tick, setTick] = useState(0);\n const { prefix, spinner } = makeTheme(theme);\n useEffect(() => {\n if (status === 'loading') {\n let tickInterval;\n let inc = -1;\n // Delay displaying spinner by 300ms, to avoid flickering\n const delayTimeout = setTimeout(() => {\n setShowLoader(true);\n tickInterval = setInterval(() => {\n inc = inc + 1;\n setTick(inc % spinner.frames.length);\n }, spinner.interval);\n }, 300);\n return () => {\n clearTimeout(delayTimeout);\n clearInterval(tickInterval);\n };\n }\n else {\n setShowLoader(false);\n }\n }, [status]);\n if (showLoader) {\n return spinner.frames[tick];\n }\n // There's a delay before we show the loader. So we want to ignore `loading` here, and pass idle instead.\n const iconName = status === 'loading' ? 'idle' : status;\n return typeof prefix === 'string' ? prefix : (prefix[iconName] ?? prefix['idle']);\n}\n","import { withPointer } from \"./hook-engine.js\";\nexport function useMemo(fn, dependencies) {\n return withPointer((pointer) => {\n const prev = pointer.get();\n if (!prev ||\n prev.dependencies.length !== dependencies.length ||\n prev.dependencies.some((dep, i) => dep !== dependencies[i])) {\n const value = fn();\n pointer.set({ value, dependencies });\n return value;\n }\n return prev.value;\n });\n}\n","import { useState } from \"./use-state.js\";\nexport function useRef(val) {\n return useState({ current: val })[0];\n}\n","import { useRef } from \"./use-ref.js\";\nimport { useEffect } from \"./use-effect.js\";\nimport { withUpdates } from \"./hook-engine.js\";\nexport function useKeypress(userHandler) {\n const signal = useRef(userHandler);\n signal.current = userHandler;\n useEffect((rl) => {\n let ignore = false;\n const handler = withUpdates((_input, event) => {\n if (ignore)\n return;\n void signal.current(event, rl);\n });\n rl.input.on('keypress', handler);\n return () => {\n ignore = true;\n rl.input.removeListener('keypress', handler);\n };\n }, []);\n}\n","'use strict';\n\nmodule.exports = cliWidth;\n\nfunction normalizeOpts(options) {\n const defaultOpts = {\n defaultWidth: 0,\n output: process.stdout,\n tty: require('tty'),\n };\n\n if (!options) {\n return defaultOpts;\n }\n\n Object.keys(defaultOpts).forEach(function (key) {\n if (!options[key]) {\n options[key] = defaultOpts[key];\n }\n });\n\n return options;\n}\n\nfunction cliWidth(options) {\n const opts = normalizeOpts(options);\n\n if (opts.output.getWindowSize) {\n return opts.output.getWindowSize()[0] || opts.defaultWidth;\n }\n\n if (opts.tty.getWindowSize) {\n return opts.tty.getWindowSize()[1] || opts.defaultWidth;\n }\n\n if (opts.output.columns) {\n return opts.output.columns;\n }\n\n if (process.env.CLI_WIDTH) {\n const width = parseInt(process.env.CLI_WIDTH, 10);\n\n if (!isNaN(width) && width !== 0) {\n return width;\n }\n }\n\n return opts.defaultWidth;\n}\n","/* MAIN */\nconst getCodePointsLength = (() => {\n const SURROGATE_PAIR_RE = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g;\n return (input) => {\n let surrogatePairsNr = 0;\n SURROGATE_PAIR_RE.lastIndex = 0;\n while (SURROGATE_PAIR_RE.test(input)) {\n surrogatePairsNr += 1;\n }\n return input.length - surrogatePairsNr;\n };\n})();\nconst isFullWidth = (x) => {\n return x === 0x3000 || x >= 0xFF01 && x <= 0xFF60 || x >= 0xFFE0 && x <= 0xFFE6;\n};\nconst isWideNotCJKTNotEmoji = (x) => {\n return x === 0x231B || x === 0x2329 || x >= 0x2FF0 && x <= 0x2FFF || x >= 0x3001 && x <= 0x303E || x >= 0x3099 && x <= 0x30FF || x >= 0x3105 && x <= 0x312F || x >= 0x3131 && x <= 0x318E || x >= 0x3190 && x <= 0x31E3 || x >= 0x31EF && x <= 0x321E || x >= 0x3220 && x <= 0x3247 || x >= 0x3250 && x <= 0x4DBF || x >= 0xFE10 && x <= 0xFE19 || x >= 0xFE30 && x <= 0xFE52 || x >= 0xFE54 && x <= 0xFE66 || x >= 0xFE68 && x <= 0xFE6B || x >= 0x1F200 && x <= 0x1F202 || x >= 0x1F210 && x <= 0x1F23B || x >= 0x1F240 && x <= 0x1F248 || x >= 0x20000 && x <= 0x2FFFD || x >= 0x30000 && x <= 0x3FFFD;\n};\n/* EXPORT */\nexport { getCodePointsLength, isFullWidth, isWideNotCJKTNotEmoji };\n","/* IMPORT */\nimport { getCodePointsLength, isFullWidth, isWideNotCJKTNotEmoji } from './utils.js';\n/* HELPERS */\nconst ANSI_RE = /[\\u001b\\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]|\\u001b\\]8;[^;]*;.*?(?:\\u0007|\\u001b\\u005c)/y;\nconst CONTROL_RE = /[\\x00-\\x08\\x0A-\\x1F\\x7F-\\x9F]{1,1000}/y;\nconst CJKT_WIDE_RE = /(?:(?![\\uFF61-\\uFF9F\\uFF00-\\uFFEF])[\\p{Script=Han}\\p{Script=Hiragana}\\p{Script=Katakana}\\p{Script=Hangul}\\p{Script=Tangut}]){1,1000}/yu;\nconst TAB_RE = /\\t{1,1000}/y;\nconst EMOJI_RE = /[\\u{1F1E6}-\\u{1F1FF}]{2}|\\u{1F3F4}[\\u{E0061}-\\u{E007A}]{2}[\\u{E0030}-\\u{E0039}\\u{E0061}-\\u{E007A}]{1,3}\\u{E007F}|(?:\\p{Emoji}\\uFE0F\\u20E3?|\\p{Emoji_Modifier_Base}\\p{Emoji_Modifier}?|\\p{Emoji_Presentation})(?:\\u200D(?:\\p{Emoji_Modifier_Base}\\p{Emoji_Modifier}?|\\p{Emoji_Presentation}|\\p{Emoji}\\uFE0F\\u20E3?))*/yu;\nconst LATIN_RE = /(?:[\\x20-\\x7E\\xA0-\\xFF](?!\\uFE0F)){1,1000}/y;\nconst MODIFIER_RE = /\\p{M}+/gu;\nconst NO_TRUNCATION = { limit: Infinity, ellipsis: '' };\n/* MAIN */\nconst getStringTruncatedWidth = (input, truncationOptions = {}, widthOptions = {}) => {\n /* CONSTANTS */\n const LIMIT = truncationOptions.limit ?? Infinity;\n const ELLIPSIS = truncationOptions.ellipsis ?? '';\n const ELLIPSIS_WIDTH = truncationOptions?.ellipsisWidth ?? (ELLIPSIS ? getStringTruncatedWidth(ELLIPSIS, NO_TRUNCATION, widthOptions).width : 0);\n const ANSI_WIDTH = 0;\n const CONTROL_WIDTH = widthOptions.controlWidth ?? 0;\n const TAB_WIDTH = widthOptions.tabWidth ?? 8;\n const EMOJI_WIDTH = widthOptions.emojiWidth ?? 2;\n const FULL_WIDTH_WIDTH = 2;\n const REGULAR_WIDTH = widthOptions.regularWidth ?? 1;\n const WIDE_WIDTH = widthOptions.wideWidth ?? FULL_WIDTH_WIDTH;\n const PARSE_BLOCKS = [\n [LATIN_RE, REGULAR_WIDTH],\n [ANSI_RE, ANSI_WIDTH],\n [CONTROL_RE, CONTROL_WIDTH],\n [TAB_RE, TAB_WIDTH],\n [EMOJI_RE, EMOJI_WIDTH],\n [CJKT_WIDE_RE, WIDE_WIDTH],\n ];\n /* STATE */\n let indexPrev = 0;\n let index = 0;\n let length = input.length;\n let lengthExtra = 0;\n let truncationEnabled = false;\n let truncationIndex = length;\n let truncationLimit = Math.max(0, LIMIT - ELLIPSIS_WIDTH);\n let unmatchedStart = 0;\n let unmatchedEnd = 0;\n let width = 0;\n let widthExtra = 0;\n /* PARSE LOOP */\n outer: while (true) {\n /* UNMATCHED */\n if ((unmatchedEnd > unmatchedStart) || (index >= length && index > indexPrev)) {\n const unmatched = input.slice(unmatchedStart, unmatchedEnd) || input.slice(indexPrev, index);\n lengthExtra = 0;\n for (const char of unmatched.replaceAll(MODIFIER_RE, '')) {\n const codePoint = char.codePointAt(0) || 0;\n if (isFullWidth(codePoint)) {\n widthExtra = FULL_WIDTH_WIDTH;\n }\n else if (isWideNotCJKTNotEmoji(codePoint)) {\n widthExtra = WIDE_WIDTH;\n }\n else {\n widthExtra = REGULAR_WIDTH;\n }\n if ((width + widthExtra) > truncationLimit) {\n truncationIndex = Math.min(truncationIndex, Math.max(unmatchedStart, indexPrev) + lengthExtra);\n }\n if ((width + widthExtra) > LIMIT) {\n truncationEnabled = true;\n break outer;\n }\n lengthExtra += char.length;\n width += widthExtra;\n }\n unmatchedStart = unmatchedEnd = 0;\n }\n /* EXITING */\n if (index >= length) {\n break outer;\n }\n /* PARSE BLOCKS */\n for (let i = 0, l = PARSE_BLOCKS.length; i < l; i++) {\n const [BLOCK_RE, BLOCK_WIDTH] = PARSE_BLOCKS[i];\n BLOCK_RE.lastIndex = index;\n if (BLOCK_RE.test(input)) {\n lengthExtra = BLOCK_RE === CJKT_WIDE_RE ? getCodePointsLength(input.slice(index, BLOCK_RE.lastIndex)) : BLOCK_RE === EMOJI_RE ? 1 : BLOCK_RE.lastIndex - index;\n widthExtra = lengthExtra * BLOCK_WIDTH;\n if ((width + widthExtra) > truncationLimit) {\n truncationIndex = Math.min(truncationIndex, index + Math.floor((truncationLimit - width) / BLOCK_WIDTH));\n }\n if ((width + widthExtra) > LIMIT) {\n truncationEnabled = true;\n break outer;\n }\n width += widthExtra;\n unmatchedStart = indexPrev;\n unmatchedEnd = index;\n index = indexPrev = BLOCK_RE.lastIndex;\n continue outer;\n }\n }\n /* UNMATCHED INDEX */\n index += 1;\n }\n /* RETURN */\n return {\n width: truncationEnabled ? truncationLimit : width,\n index: truncationEnabled ? truncationIndex : length,\n truncated: truncationEnabled,\n ellipsed: truncationEnabled && LIMIT >= ELLIPSIS_WIDTH\n };\n};\n/* EXPORT */\nexport default getStringTruncatedWidth;\n","/* IMPORT */\nimport fastStringTruncatedWidth from 'fast-string-truncated-width';\n/* HELPERS */\nconst NO_TRUNCATION = {\n limit: Infinity,\n ellipsis: '',\n ellipsisWidth: 0,\n};\n/* MAIN */\nconst fastStringWidth = (input, options = {}) => {\n return fastStringTruncatedWidth(input, NO_TRUNCATION, options).width;\n};\n/* EXPORT */\nexport default fastStringWidth;\n","import stringWidth from 'fast-string-width';\nconst ESC = '\\x1B';\nconst CSI = '\\x9B';\nconst END_CODE = 39;\nconst ANSI_ESCAPE_BELL = '\\u0007';\nconst ANSI_CSI = '[';\nconst ANSI_OSC = ']';\nconst ANSI_SGR_TERMINATOR = 'm';\nconst ANSI_ESCAPE_LINK = `${ANSI_OSC}8;;`;\nconst GROUP_REGEX = new RegExp(`(?:\\\\${ANSI_CSI}(?\\\\d+)m|\\\\${ANSI_ESCAPE_LINK}(?.*)${ANSI_ESCAPE_BELL})`, 'y');\nconst getClosingCode = (openingCode) => {\n if (openingCode >= 30 && openingCode <= 37)\n return 39;\n if (openingCode >= 90 && openingCode <= 97)\n return 39;\n if (openingCode >= 40 && openingCode <= 47)\n return 49;\n if (openingCode >= 100 && openingCode <= 107)\n return 49;\n if (openingCode === 1 || openingCode === 2)\n return 22;\n if (openingCode === 3)\n return 23;\n if (openingCode === 4)\n return 24;\n if (openingCode === 7)\n return 27;\n if (openingCode === 8)\n return 28;\n if (openingCode === 9)\n return 29;\n if (openingCode === 0)\n return 0;\n return undefined;\n};\nconst wrapAnsiCode = (code) => `${ESC}${ANSI_CSI}${code}${ANSI_SGR_TERMINATOR}`;\nconst wrapAnsiHyperlink = (url) => `${ESC}${ANSI_ESCAPE_LINK}${url}${ANSI_ESCAPE_BELL}`;\nconst wrapWord = (rows, word, columns) => {\n const characters = word[Symbol.iterator]();\n let isInsideEscape = false;\n let isInsideLinkEscape = false;\n let lastRow = rows.at(-1);\n let visible = lastRow === undefined ? 0 : stringWidth(lastRow);\n let currentCharacter = characters.next();\n let nextCharacter = characters.next();\n let rawCharacterIndex = 0;\n while (!currentCharacter.done) {\n const character = currentCharacter.value;\n const characterLength = stringWidth(character);\n if (visible + characterLength <= columns) {\n rows[rows.length - 1] += character;\n }\n else {\n rows.push(character);\n visible = 0;\n }\n if (character === ESC || character === CSI) {\n isInsideEscape = true;\n isInsideLinkEscape = word.startsWith(ANSI_ESCAPE_LINK, rawCharacterIndex + 1);\n }\n if (isInsideEscape) {\n if (isInsideLinkEscape) {\n if (character === ANSI_ESCAPE_BELL) {\n isInsideEscape = false;\n isInsideLinkEscape = false;\n }\n }\n else if (character === ANSI_SGR_TERMINATOR) {\n isInsideEscape = false;\n }\n }\n else {\n visible += characterLength;\n if (visible === columns && !nextCharacter.done) {\n rows.push('');\n visible = 0;\n }\n }\n currentCharacter = nextCharacter;\n nextCharacter = characters.next();\n rawCharacterIndex += character.length;\n }\n lastRow = rows.at(-1);\n if (!visible && lastRow !== undefined && lastRow.length && rows.length > 1) {\n rows[rows.length - 2] += rows.pop();\n }\n};\nconst stringVisibleTrimSpacesRight = (string) => {\n const words = string.split(' ');\n let last = words.length;\n while (last) {\n if (stringWidth(words[last - 1])) {\n break;\n }\n last--;\n }\n if (last === words.length) {\n return string;\n }\n return words.slice(0, last).join(' ') + words.slice(last).join('');\n};\nconst exec = (string, columns, options = {}) => {\n if (options.trim !== false && string.trim() === '') {\n return '';\n }\n let returnValue = '';\n let escapeCode;\n let escapeUrl;\n const words = string.split(' ');\n let rows = [''];\n let rowLength = 0;\n for (let index = 0; index < words.length; index++) {\n const word = words[index];\n if (options.trim !== false) {\n const row = rows.at(-1) ?? '';\n const trimmed = row.trimStart();\n if (row.length !== trimmed.length) {\n rows[rows.length - 1] = trimmed;\n rowLength = stringWidth(trimmed);\n }\n }\n if (index !== 0) {\n if (rowLength >= columns &&\n (options.wordWrap === false || options.trim === false)) {\n rows.push('');\n rowLength = 0;\n }\n if (rowLength || options.trim === false) {\n rows[rows.length - 1] += ' ';\n rowLength++;\n }\n }\n const wordLength = stringWidth(word);\n if (options.hard && wordLength > columns) {\n const remainingColumns = columns - rowLength;\n const breaksStartingThisLine = 1 + Math.floor((wordLength - remainingColumns - 1) / columns);\n const breaksStartingNextLine = Math.floor((wordLength - 1) / columns);\n if (breaksStartingNextLine < breaksStartingThisLine) {\n rows.push('');\n }\n wrapWord(rows, word, columns);\n rowLength = stringWidth(rows.at(-1) ?? '');\n continue;\n }\n if (rowLength + wordLength > columns && rowLength && wordLength) {\n if (options.wordWrap === false && rowLength < columns) {\n wrapWord(rows, word, columns);\n rowLength = stringWidth(rows.at(-1) ?? '');\n continue;\n }\n rows.push('');\n rowLength = 0;\n }\n if (rowLength + wordLength > columns && options.wordWrap === false) {\n wrapWord(rows, word, columns);\n rowLength = stringWidth(rows.at(-1) ?? '');\n continue;\n }\n rows[rows.length - 1] += word;\n rowLength += wordLength;\n }\n if (options.trim !== false) {\n rows = rows.map((row) => stringVisibleTrimSpacesRight(row));\n }\n const preString = rows.join('\\n');\n let inSurrogate = false;\n for (let i = 0; i < preString.length; i++) {\n const character = preString[i];\n returnValue += character;\n if (!inSurrogate) {\n inSurrogate = character >= '\\ud800' && character <= '\\udbff';\n if (inSurrogate) {\n continue;\n }\n }\n else {\n inSurrogate = false;\n }\n if (character === ESC || character === CSI) {\n GROUP_REGEX.lastIndex = i + 1;\n const groupsResult = GROUP_REGEX.exec(preString);\n const groups = groupsResult?.groups;\n if (groups?.code !== undefined) {\n const code = Number.parseFloat(groups.code);\n escapeCode = code === END_CODE ? undefined : code;\n }\n else if (groups?.uri !== undefined) {\n escapeUrl = groups.uri.length === 0 ? undefined : groups.uri;\n }\n }\n if (preString[i + 1] === '\\n') {\n if (escapeUrl) {\n returnValue += wrapAnsiHyperlink('');\n }\n const closingCode = escapeCode ? getClosingCode(escapeCode) : undefined;\n if (escapeCode && closingCode) {\n returnValue += wrapAnsiCode(closingCode);\n }\n }\n else if (character === '\\n') {\n if (escapeCode && getClosingCode(escapeCode)) {\n returnValue += wrapAnsiCode(escapeCode);\n }\n if (escapeUrl) {\n returnValue += wrapAnsiHyperlink(escapeUrl);\n }\n }\n }\n return returnValue;\n};\nconst CRLF_OR_LF = /\\r?\\n/;\nexport function wrapAnsi(string, columns, options) {\n return String(string)\n .normalize()\n .split(CRLF_OR_LF)\n .map((line) => exec(line, columns, options))\n .join('\\n');\n}\n//# sourceMappingURL=main.js.map","import cliWidth from 'cli-width';\nimport { wrapAnsi } from 'fast-wrap-ansi';\nimport { readline } from \"./hook-engine.js\";\n/**\n * Force line returns at specific width. This function is ANSI code friendly and it'll\n * ignore invisible codes during width calculation.\n * @param {string} content\n * @param {number} width\n * @return {string}\n */\nexport function breakLines(content, width) {\n return content\n .split('\\n')\n .flatMap((line) => wrapAnsi(line, width, { trim: false, hard: true })\n .split('\\n')\n .map((str) => str.trimEnd()))\n .join('\\n');\n}\n/**\n * Returns the width of the active readline, or 80 as default value.\n * @returns {number}\n */\nexport function readlineWidth() {\n return cliWidth({ defaultWidth: 80, output: readline().output });\n}\n","import { useRef } from \"../use-ref.js\";\nimport { readlineWidth, breakLines } from \"../utils.js\";\nfunction usePointerPosition({ active, renderedItems, pageSize, loop, }) {\n const state = useRef({\n lastPointer: active,\n lastActive: undefined,\n });\n const { lastPointer, lastActive } = state.current;\n const middle = Math.floor(pageSize / 2);\n const renderedLength = renderedItems.reduce((acc, item) => acc + item.length, 0);\n const defaultPointerPosition = renderedItems\n .slice(0, active)\n .reduce((acc, item) => acc + item.length, 0);\n let pointer = defaultPointerPosition;\n if (renderedLength > pageSize) {\n if (loop) {\n /**\n * Creates the next position for the pointer considering an infinitely\n * looping list of items to be rendered on the page.\n *\n * The goal is to progressively move the cursor to the middle position as the user move down, and then keep\n * the cursor there. When the user move up, maintain the cursor position.\n */\n // By default, keep the cursor position as-is.\n pointer = lastPointer;\n if (\n // First render, skip this logic.\n lastActive != null &&\n // Only move the pointer down when the user moves down.\n lastActive < active &&\n // Check user didn't move up across page boundary.\n active - lastActive < pageSize) {\n pointer = Math.min(\n // Furthest allowed position for the pointer is the middle of the list\n middle, Math.abs(active - lastActive) === 1\n ? Math.min(\n // Move the pointer at most the height of the last active item.\n lastPointer + (renderedItems[lastActive]?.length ?? 0), \n // If the user moved by one item, move the pointer to the natural position of the active item as\n // long as it doesn't move the cursor up.\n Math.max(defaultPointerPosition, lastPointer))\n : // Otherwise, move the pointer down by the difference between the active and last active item.\n lastPointer + active - lastActive);\n }\n }\n else {\n /**\n * Creates the next position for the pointer considering a finite list of\n * items to be rendered on a page.\n *\n * The goal is to keep the pointer in the middle of the page whenever possible, until\n * we reach the bounds of the list (top or bottom). In which case, the cursor moves progressively\n * to the bottom or top of the list.\n */\n const spaceUnderActive = renderedItems\n .slice(active)\n .reduce((acc, item) => acc + item.length, 0);\n pointer =\n spaceUnderActive < pageSize - middle\n ? // If the active item is near the end of the list, progressively move the cursor towards the end.\n pageSize - spaceUnderActive\n : // Otherwise, progressively move the pointer to the middle of the list.\n Math.min(defaultPointerPosition, middle);\n }\n }\n // Save state for the next render\n state.current.lastPointer = pointer;\n state.current.lastActive = active;\n return pointer;\n}\nexport function usePagination({ items, active, renderItem, pageSize, loop = true, }) {\n const width = readlineWidth();\n const bound = (num) => ((num % items.length) + items.length) % items.length;\n const renderedItems = items.map((item, index) => {\n if (item == null)\n return [];\n return breakLines(renderItem({ item, index, isActive: index === active }), width).split('\\n');\n });\n const renderedLength = renderedItems.reduce((acc, item) => acc + item.length, 0);\n const renderItemAtIndex = (index) => renderedItems[index] ?? [];\n const pointer = usePointerPosition({ active, renderedItems, pageSize, loop });\n // Render the active item to decide the position.\n // If the active item fits under the pointer, we render it there.\n // Otherwise, we need to render it to fit at the bottom of the page; moving the pointer up.\n const activeItem = renderItemAtIndex(active).slice(0, pageSize);\n const activeItemPosition = pointer + activeItem.length <= pageSize ? pointer : pageSize - activeItem.length;\n // Create an array of lines for the page, and add the lines of the active item into the page\n const pageBuffer = Array.from({ length: pageSize });\n pageBuffer.splice(activeItemPosition, activeItem.length, ...activeItem);\n // Store to prevent rendering the same item twice\n const itemVisited = new Set([active]);\n // Fill the page under the active item\n let bufferPointer = activeItemPosition + activeItem.length;\n let itemPointer = bound(active + 1);\n while (bufferPointer < pageSize &&\n !itemVisited.has(itemPointer) &&\n (loop && renderedLength > pageSize ? itemPointer !== active : itemPointer > active)) {\n const lines = renderItemAtIndex(itemPointer);\n const linesToAdd = lines.slice(0, pageSize - bufferPointer);\n pageBuffer.splice(bufferPointer, linesToAdd.length, ...linesToAdd);\n // Move pointers for next iteration\n itemVisited.add(itemPointer);\n bufferPointer += linesToAdd.length;\n itemPointer = bound(itemPointer + 1);\n }\n // Fill the page over the active item\n bufferPointer = activeItemPosition - 1;\n itemPointer = bound(active - 1);\n while (bufferPointer >= 0 &&\n !itemVisited.has(itemPointer) &&\n (loop && renderedLength > pageSize ? itemPointer !== active : itemPointer < active)) {\n const lines = renderItemAtIndex(itemPointer);\n const linesToAdd = lines.slice(Math.max(0, lines.length - bufferPointer - 1));\n pageBuffer.splice(bufferPointer - linesToAdd.length + 1, linesToAdd.length, ...linesToAdd);\n // Move pointers for next iteration\n itemVisited.add(itemPointer);\n bufferPointer -= linesToAdd.length;\n itemPointer = bound(itemPointer - 1);\n }\n return pageBuffer.filter((line) => typeof line === 'string').join('\\n');\n}\n","const Stream = require('stream')\n\nclass MuteStream extends Stream {\n #isTTY = null\n\n constructor (opts = {}) {\n super(opts)\n this.writable = this.readable = true\n this.muted = false\n this.on('pipe', this._onpipe)\n this.replace = opts.replace\n\n // For readline-type situations\n // This much at the start of a line being redrawn after a ctrl char\n // is seen (such as backspace) won't be redrawn as the replacement\n this._prompt = opts.prompt || null\n this._hadControl = false\n }\n\n #destSrc (key, def) {\n if (this._dest) {\n return this._dest[key]\n }\n if (this._src) {\n return this._src[key]\n }\n return def\n }\n\n #proxy (method, ...args) {\n if (typeof this._dest?.[method] === 'function') {\n this._dest[method](...args)\n }\n if (typeof this._src?.[method] === 'function') {\n this._src[method](...args)\n }\n }\n\n get isTTY () {\n if (this.#isTTY !== null) {\n return this.#isTTY\n }\n return this.#destSrc('isTTY', false)\n }\n\n // basically just get replace the getter/setter with a regular value\n set isTTY (val) {\n this.#isTTY = val\n }\n\n get rows () {\n return this.#destSrc('rows')\n }\n\n get columns () {\n return this.#destSrc('columns')\n }\n\n mute () {\n this.muted = true\n }\n\n unmute () {\n this.muted = false\n }\n\n _onpipe (src) {\n this._src = src\n }\n\n pipe (dest, options) {\n this._dest = dest\n return super.pipe(dest, options)\n }\n\n pause () {\n if (this._src) {\n return this._src.pause()\n }\n }\n\n resume () {\n if (this._src) {\n return this._src.resume()\n }\n }\n\n write (c) {\n if (this.muted) {\n if (!this.replace) {\n return true\n }\n // eslint-disable-next-line no-control-regex\n if (c.match(/^\\u001b/)) {\n if (c.indexOf(this._prompt) === 0) {\n c = c.slice(this._prompt.length)\n c = c.replace(/./g, this.replace)\n c = this._prompt + c\n }\n this._hadControl = true\n return this.emit('data', c)\n } else {\n if (this._prompt && this._hadControl &&\n c.indexOf(this._prompt) === 0) {\n this._hadControl = false\n this.emit('data', this._prompt)\n c = c.slice(this._prompt.length)\n }\n c = c.toString().replace(/./g, this.replace)\n }\n }\n this.emit('data', c)\n }\n\n end (c) {\n if (this.muted) {\n if (c && this.replace) {\n c = c.toString().replace(/./g, this.replace)\n } else {\n c = null\n }\n }\n if (c) {\n this.emit('data', c)\n }\n this.emit('end')\n }\n\n destroy (...args) {\n return this.#proxy('destroy', ...args)\n }\n\n destroySoon (...args) {\n return this.#proxy('destroySoon', ...args)\n }\n\n close (...args) {\n return this.#proxy('close', ...args)\n }\n}\n\nmodule.exports = MuteStream\n","/**\n * This is not the set of all possible signals.\n *\n * It IS, however, the set of all signals that trigger\n * an exit on either Linux or BSD systems. Linux is a\n * superset of the signal names supported on BSD, and\n * the unknown signals just fail to register, so we can\n * catch that easily enough.\n *\n * Windows signals are a different set, since there are\n * signals that terminate Windows processes, but don't\n * terminate (or don't even exist) on Posix systems.\n *\n * Don't bother with SIGKILL. It's uncatchable, which\n * means that we can't fire any callbacks anyway.\n *\n * If a user does happen to register a handler on a non-\n * fatal signal like SIGWINCH or something, and then\n * exit, it'll end up firing `process.emit('exit')`, so\n * the handler will be fired anyway.\n *\n * SIGBUS, SIGFPE, SIGSEGV and SIGILL, when not raised\n * artificially, inherently leave the process in a\n * state from which it is not safe to try and enter JS\n * listeners.\n */\nexport const signals = [];\nsignals.push('SIGHUP', 'SIGINT', 'SIGTERM');\nif (process.platform !== 'win32') {\n signals.push('SIGALRM', 'SIGABRT', 'SIGVTALRM', 'SIGXCPU', 'SIGXFSZ', 'SIGUSR2', 'SIGTRAP', 'SIGSYS', 'SIGQUIT', 'SIGIOT'\n // should detect profiler and enable/disable accordingly.\n // see #21\n // 'SIGPROF'\n );\n}\nif (process.platform === 'linux') {\n signals.push('SIGIO', 'SIGPOLL', 'SIGPWR', 'SIGSTKFLT');\n}\n//# sourceMappingURL=signals.js.map","// Note: since nyc uses this module to output coverage, any lines\n// that are in the direct sync flow of nyc's outputCoverage are\n// ignored, since we can never get coverage for them.\n// grab a reference to node's real process object right away\nimport { signals } from './signals.js';\nexport { signals };\nconst processOk = (process) => !!process &&\n typeof process === 'object' &&\n typeof process.removeListener === 'function' &&\n typeof process.emit === 'function' &&\n typeof process.reallyExit === 'function' &&\n typeof process.listeners === 'function' &&\n typeof process.kill === 'function' &&\n typeof process.pid === 'number' &&\n typeof process.on === 'function';\nconst kExitEmitter = Symbol.for('signal-exit emitter');\nconst global = globalThis;\nconst ObjectDefineProperty = Object.defineProperty.bind(Object);\n// teeny special purpose ee\nclass Emitter {\n emitted = {\n afterExit: false,\n exit: false,\n };\n listeners = {\n afterExit: [],\n exit: [],\n };\n count = 0;\n id = Math.random();\n constructor() {\n if (global[kExitEmitter]) {\n return global[kExitEmitter];\n }\n ObjectDefineProperty(global, kExitEmitter, {\n value: this,\n writable: false,\n enumerable: false,\n configurable: false,\n });\n }\n on(ev, fn) {\n this.listeners[ev].push(fn);\n }\n removeListener(ev, fn) {\n const list = this.listeners[ev];\n const i = list.indexOf(fn);\n /* c8 ignore start */\n if (i === -1) {\n return;\n }\n /* c8 ignore stop */\n if (i === 0 && list.length === 1) {\n list.length = 0;\n }\n else {\n list.splice(i, 1);\n }\n }\n emit(ev, code, signal) {\n if (this.emitted[ev]) {\n return false;\n }\n this.emitted[ev] = true;\n let ret = false;\n for (const fn of this.listeners[ev]) {\n ret = fn(code, signal) === true || ret;\n }\n if (ev === 'exit') {\n ret = this.emit('afterExit', code, signal) || ret;\n }\n return ret;\n }\n}\nclass SignalExitBase {\n}\nconst signalExitWrap = (handler) => {\n return {\n onExit(cb, opts) {\n return handler.onExit(cb, opts);\n },\n load() {\n return handler.load();\n },\n unload() {\n return handler.unload();\n },\n };\n};\nclass SignalExitFallback extends SignalExitBase {\n onExit() {\n return () => { };\n }\n load() { }\n unload() { }\n}\nclass SignalExit extends SignalExitBase {\n // \"SIGHUP\" throws an `ENOSYS` error on Windows,\n // so use a supported signal instead\n /* c8 ignore start */\n #hupSig = process.platform === 'win32' ? 'SIGINT' : 'SIGHUP';\n /* c8 ignore stop */\n #emitter = new Emitter();\n #process;\n #originalProcessEmit;\n #originalProcessReallyExit;\n #sigListeners = {};\n #loaded = false;\n constructor(process) {\n super();\n this.#process = process;\n // { : , ... }\n this.#sigListeners = {};\n for (const sig of signals) {\n this.#sigListeners[sig] = () => {\n // If there are no other listeners, an exit is coming!\n // Simplest way: remove us and then re-send the signal.\n // We know that this will kill the process, so we can\n // safely emit now.\n const listeners = this.#process.listeners(sig);\n let { count } = this.#emitter;\n // This is a workaround for the fact that signal-exit v3 and signal\n // exit v4 are not aware of each other, and each will attempt to let\n // the other handle it, so neither of them do. To correct this, we\n // detect if we're the only handler *except* for previous versions\n // of signal-exit, and increment by the count of listeners it has\n // created.\n /* c8 ignore start */\n const p = process;\n if (typeof p.__signal_exit_emitter__ === 'object' &&\n typeof p.__signal_exit_emitter__.count === 'number') {\n count += p.__signal_exit_emitter__.count;\n }\n /* c8 ignore stop */\n if (listeners.length === count) {\n this.unload();\n const ret = this.#emitter.emit('exit', null, sig);\n /* c8 ignore start */\n const s = sig === 'SIGHUP' ? this.#hupSig : sig;\n if (!ret)\n process.kill(process.pid, s);\n /* c8 ignore stop */\n }\n };\n }\n this.#originalProcessReallyExit = process.reallyExit;\n this.#originalProcessEmit = process.emit;\n }\n onExit(cb, opts) {\n /* c8 ignore start */\n if (!processOk(this.#process)) {\n return () => { };\n }\n /* c8 ignore stop */\n if (this.#loaded === false) {\n this.load();\n }\n const ev = opts?.alwaysLast ? 'afterExit' : 'exit';\n this.#emitter.on(ev, cb);\n return () => {\n this.#emitter.removeListener(ev, cb);\n if (this.#emitter.listeners['exit'].length === 0 &&\n this.#emitter.listeners['afterExit'].length === 0) {\n this.unload();\n }\n };\n }\n load() {\n if (this.#loaded) {\n return;\n }\n this.#loaded = true;\n // This is the number of onSignalExit's that are in play.\n // It's important so that we can count the correct number of\n // listeners on signals, and don't wait for the other one to\n // handle it instead of us.\n this.#emitter.count += 1;\n for (const sig of signals) {\n try {\n const fn = this.#sigListeners[sig];\n if (fn)\n this.#process.on(sig, fn);\n }\n catch (_) { }\n }\n this.#process.emit = (ev, ...a) => {\n return this.#processEmit(ev, ...a);\n };\n this.#process.reallyExit = (code) => {\n return this.#processReallyExit(code);\n };\n }\n unload() {\n if (!this.#loaded) {\n return;\n }\n this.#loaded = false;\n signals.forEach(sig => {\n const listener = this.#sigListeners[sig];\n /* c8 ignore start */\n if (!listener) {\n throw new Error('Listener not defined for signal: ' + sig);\n }\n /* c8 ignore stop */\n try {\n this.#process.removeListener(sig, listener);\n /* c8 ignore start */\n }\n catch (_) { }\n /* c8 ignore stop */\n });\n this.#process.emit = this.#originalProcessEmit;\n this.#process.reallyExit = this.#originalProcessReallyExit;\n this.#emitter.count -= 1;\n }\n #processReallyExit(code) {\n /* c8 ignore start */\n if (!processOk(this.#process)) {\n return 0;\n }\n this.#process.exitCode = code || 0;\n /* c8 ignore stop */\n this.#emitter.emit('exit', this.#process.exitCode, null);\n return this.#originalProcessReallyExit.call(this.#process, this.#process.exitCode);\n }\n #processEmit(ev, ...args) {\n const og = this.#originalProcessEmit;\n if (ev === 'exit' && processOk(this.#process)) {\n if (typeof args[0] === 'number') {\n this.#process.exitCode = args[0];\n /* c8 ignore start */\n }\n /* c8 ignore start */\n const ret = og.call(this.#process, ev, ...args);\n /* c8 ignore start */\n this.#emitter.emit('exit', this.#process.exitCode, null);\n /* c8 ignore stop */\n return ret;\n }\n else {\n return og.call(this.#process, ev, ...args);\n }\n }\n}\nconst process = globalThis.process;\n// wrap so that we call the method on the actual handler, without\n// exporting it directly.\nexport const { \n/**\n * Called when the process is exiting, whether via signal, explicit\n * exit, or running out of stuff to do.\n *\n * If the global process object is not suitable for instrumentation,\n * then this will be a no-op.\n *\n * Returns a function that may be used to unload signal-exit.\n */\nonExit, \n/**\n * Load the listeners. Likely you never need to call this, unless\n * doing a rather deep integration with signal-exit functionality.\n * Mostly exposed for the benefit of testing.\n *\n * @internal\n */\nload, \n/**\n * Unload the listeners. Likely you never need to call this, unless\n * doing a rather deep integration with signal-exit functionality.\n * Mostly exposed for the benefit of testing.\n *\n * @internal\n */\nunload, } = signalExitWrap(processOk(process) ? new SignalExit(process) : new SignalExitFallback());\n//# sourceMappingURL=index.js.map","const ESC = '\\u001B[';\n/** Move cursor to first column */\nexport const cursorLeft = ESC + 'G';\n/** Hide the cursor */\nexport const cursorHide = ESC + '?25l';\n/** Show the cursor */\nexport const cursorShow = ESC + '?25h';\n/** Move cursor up by count rows */\nexport const cursorUp = (rows = 1) => (rows > 0 ? `${ESC}${rows}A` : '');\n/** Move cursor down by count rows */\nexport const cursorDown = (rows = 1) => rows > 0 ? `${ESC}${rows}B` : '';\n/** Move cursor to position (x, y) */\nexport const cursorTo = (x, y) => {\n if (typeof y === 'number' && !Number.isNaN(y)) {\n return `${ESC}${y + 1};${x + 1}H`;\n }\n return `${ESC}${x + 1}G`;\n};\nconst eraseLine = ESC + '2K';\n/** Erase the specified number of lines above the cursor */\nexport const eraseLines = (lines) => lines > 0 ? (eraseLine + cursorUp(1)).repeat(lines - 1) + eraseLine + cursorLeft : '';\n","import { stripVTControlCharacters } from 'node:util';\nimport { breakLines, readlineWidth } from \"./utils.js\";\nimport { cursorDown, cursorUp, cursorTo, cursorShow, eraseLines } from '@inquirer/ansi';\nconst height = (content) => content.split('\\n').length;\nconst lastLine = (content) => content.split('\\n').pop() ?? '';\nexport default class ScreenManager {\n // These variables are keeping information to allow correct prompt re-rendering\n height = 0;\n extraLinesUnderPrompt = 0;\n cursorPos;\n rl;\n constructor(rl) {\n this.rl = rl;\n this.cursorPos = rl.getCursorPos();\n }\n write(content) {\n this.rl.output.unmute();\n this.rl.output.write(content);\n this.rl.output.mute();\n }\n render(content, bottomContent = '') {\n // Write message to screen and setPrompt to control backspace\n const promptLine = lastLine(content);\n const rawPromptLine = stripVTControlCharacters(promptLine);\n // Remove the rl.line from our prompt. We can't rely on the content of\n // rl.line (mainly because of the password prompt), so just rely on it's\n // length.\n let prompt = rawPromptLine;\n if (this.rl.line.length > 0) {\n prompt = prompt.slice(0, -this.rl.line.length);\n }\n this.rl.setPrompt(prompt);\n // SetPrompt will change cursor position, now we can get correct value\n this.cursorPos = this.rl.getCursorPos();\n const width = readlineWidth();\n content = breakLines(content, width);\n bottomContent = breakLines(bottomContent, width);\n // Manually insert an extra line if we're at the end of the line.\n // This prevent the cursor from appearing at the beginning of the\n // current line.\n if (rawPromptLine.length % width === 0) {\n content += '\\n';\n }\n let output = content + (bottomContent ? '\\n' + bottomContent : '');\n /**\n * Re-adjust the cursor at the correct position.\n */\n // We need to consider parts of the prompt under the cursor as part of the bottom\n // content in order to correctly cleanup and re-render.\n const promptLineUpDiff = Math.floor(rawPromptLine.length / width) - this.cursorPos.rows;\n const bottomContentHeight = promptLineUpDiff + (bottomContent ? height(bottomContent) : 0);\n // Return cursor to the input position (on top of the bottomContent)\n if (bottomContentHeight > 0)\n output += cursorUp(bottomContentHeight);\n // Return cursor to the initial left offset.\n output += cursorTo(this.cursorPos.cols);\n /**\n * Render and store state for future re-rendering\n */\n this.write(cursorDown(this.extraLinesUnderPrompt) + eraseLines(this.height) + output);\n this.extraLinesUnderPrompt = bottomContentHeight;\n this.height = height(output);\n }\n checkCursorPos() {\n const cursorPos = this.rl.getCursorPos();\n if (cursorPos.cols !== this.cursorPos.cols) {\n this.write(cursorTo(cursorPos.cols));\n this.cursorPos = cursorPos;\n }\n }\n done({ clearContent }) {\n this.rl.setPrompt('');\n let output = cursorDown(this.extraLinesUnderPrompt);\n output += clearContent ? eraseLines(this.height) : '\\n';\n output += cursorShow;\n this.write(output);\n this.rl.close();\n }\n}\n","// TODO: Remove this class once Node 22 becomes the minimum supported version.\nexport class PromisePolyfill extends Promise {\n // Available starting from Node 22\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/withResolvers\n static withResolver() {\n let resolve;\n let reject;\n const promise = new Promise((res, rej) => {\n resolve = res;\n reject = rej;\n });\n return { promise, resolve: resolve, reject: reject };\n }\n}\n","import * as readline from 'node:readline';\nimport { AsyncResource } from 'node:async_hooks';\nimport MuteStream from 'mute-stream';\nimport { onExit as onSignalExit } from 'signal-exit';\nimport ScreenManager from \"./screen-manager.js\";\nimport { PromisePolyfill } from \"./promise-polyfill.js\";\nimport { withHooks, effectScheduler } from \"./hook-engine.js\";\nimport { AbortPromptError, CancelPromptError, ExitPromptError } from \"./errors.js\";\n// Capture the real setImmediate at module load time so it works even when test\n// frameworks mock timers with vi.useFakeTimers() or similar.\nconst nativeSetImmediate = globalThis.setImmediate;\nfunction getCallSites() {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n const _prepareStackTrace = Error.prepareStackTrace;\n let result = [];\n try {\n Error.prepareStackTrace = (_, callSites) => {\n const callSitesWithoutCurrent = callSites.slice(1);\n result = callSitesWithoutCurrent;\n return callSitesWithoutCurrent;\n };\n // oxlint-disable-next-line no-unused-expressions\n new Error().stack;\n }\n catch {\n // An error will occur if the Node flag --frozen-intrinsics is used.\n // https://nodejs.org/api/cli.html#--frozen-intrinsics\n return result;\n }\n Error.prepareStackTrace = _prepareStackTrace;\n return result;\n}\nexport function createPrompt(view) {\n const callSites = getCallSites();\n const prompt = (config, context = {}) => {\n // Default `input` to stdin\n const { input = process.stdin, signal } = context;\n const cleanups = new Set();\n // Add mute capabilities to the output\n const output = new MuteStream();\n output.pipe(context.output ?? process.stdout);\n // Pre-mute the output so that readline doesn't echo stale keystrokes\n // to the terminal before the first render. ScreenManager will unmute/mute\n // the output around each render call as needed.\n output.mute();\n const rl = readline.createInterface({\n terminal: true,\n input,\n output,\n });\n const screen = new ScreenManager(rl);\n const { promise, resolve, reject } = PromisePolyfill.withResolver();\n const cancel = () => reject(new CancelPromptError());\n if (signal) {\n const abort = () => reject(new AbortPromptError({ cause: signal.reason }));\n if (signal.aborted) {\n abort();\n return Object.assign(promise, { cancel });\n }\n signal.addEventListener('abort', abort);\n cleanups.add(() => signal.removeEventListener('abort', abort));\n }\n cleanups.add(onSignalExit((code, signal) => {\n reject(new ExitPromptError(`User force closed the prompt with ${code} ${signal}`));\n }));\n // SIGINT must be explicitly handled by the prompt so the ExitPromptError can be handled.\n // Otherwise, the prompt will stop and in some scenarios never resolve.\n // Ref issue #1741\n const sigint = () => reject(new ExitPromptError(`User force closed the prompt with SIGINT`));\n rl.on('SIGINT', sigint);\n cleanups.add(() => rl.removeListener('SIGINT', sigint));\n return withHooks(rl, (cycle) => {\n // The close event triggers immediately when the user press ctrl+c. SignalExit on the other hand\n // triggers after the process is done (which happens after timeouts are done triggering.)\n // We triggers the hooks cleanup phase on rl `close` so active timeouts can be cleared.\n const hooksCleanup = AsyncResource.bind(() => effectScheduler.clearAll());\n rl.on('close', hooksCleanup);\n cleanups.add(() => rl.removeListener('close', hooksCleanup));\n const startCycle = () => {\n // Re-renders only happen when the state change; but the readline cursor could\n // change position and that also requires a re-render (and a manual one because\n // we mute the streams). We set the listener after the initial workLoop to avoid\n // a double render if render triggered by a state change sets the cursor to the\n // right position.\n const checkCursorPos = () => screen.checkCursorPos();\n rl.input.on('keypress', checkCursorPos);\n cleanups.add(() => rl.input.removeListener('keypress', checkCursorPos));\n cycle(() => {\n try {\n const nextView = view(config, (value) => {\n setImmediate(() => resolve(value));\n });\n // Typescript won't allow this, but not all users rely on typescript.\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (nextView === undefined) {\n const callerFilename = callSites[1]?.getFileName();\n throw new Error(`Prompt functions must return a string.\\n at ${callerFilename}`);\n }\n const [content, bottomContent] = typeof nextView === 'string' ? [nextView] : nextView;\n screen.render(content, bottomContent);\n effectScheduler.run();\n }\n catch (error) {\n reject(error);\n }\n });\n };\n // Proper Readable streams (like process.stdin) may have OS-level buffered\n // data that arrives in the poll phase when readline resumes the stream.\n // Deferring the first render by one setImmediate tick (check phase, after\n // poll) lets that stale data flow through readline harmlessly—no keypress\n // handlers are registered yet and the output is muted, so the stale\n // keystrokes are silently discarded.\n // Old-style streams (like MuteStream) have no such buffering, so the\n // render cycle starts immediately.\n //\n // @see https://github.com/SBoudrias/Inquirer.js/issues/1303\n if ('readableFlowing' in input) {\n nativeSetImmediate(startCycle);\n }\n else {\n startCycle();\n }\n return Object.assign(promise\n .then((answer) => {\n effectScheduler.clearAll();\n return answer;\n }, (error) => {\n effectScheduler.clearAll();\n throw error;\n })\n // Wait for the promise to settle, then cleanup.\n .finally(() => {\n cleanups.forEach((cleanup) => cleanup());\n screen.done({ clearContent: Boolean(context.clearPromptOnDone) });\n output.end();\n })\n // Once cleanup is done, let the expose promise resolve/reject to the internal one.\n .then(() => promise), { cancel });\n });\n };\n return prompt;\n}\n","import { styleText } from 'node:util';\nimport figures from '@inquirer/figures';\n/**\n * Separator object\n * Used to space/separate choices group\n */\nexport class Separator {\n separator = styleText('dim', Array.from({ length: 15 }).join(figures.line));\n type = 'separator';\n constructor(separator) {\n if (separator) {\n this.separator = separator;\n }\n }\n static isSeparator(choice) {\n return Boolean(choice &&\n typeof choice === 'object' &&\n 'type' in choice &&\n choice.type === 'separator');\n }\n}\n","import { createPrompt, useState, useKeypress, usePrefix, usePagination, useMemo, makeTheme, isUpKey, isDownKey, isSpaceKey, isNumberKey, isEnterKey, ValidationError, Separator, } from '@inquirer/core';\nimport { cursorHide } from '@inquirer/ansi';\nimport { styleText } from 'node:util';\nimport figures from '@inquirer/figures';\nconst checkboxTheme = {\n icon: {\n checked: styleText('green', figures.circleFilled),\n unchecked: figures.circle,\n cursor: figures.pointer,\n disabledChecked: styleText('green', figures.circleDouble),\n disabledUnchecked: '-',\n },\n style: {\n disabled: (text) => styleText('dim', text),\n renderSelectedChoices: (selectedChoices) => selectedChoices.map((choice) => choice.short).join(', '),\n description: (text) => styleText('cyan', text),\n keysHelpTip: (keys) => keys\n .map(([key, action]) => `${styleText('bold', key)} ${styleText('dim', action)}`)\n .join(styleText('dim', ' • ')),\n },\n i18n: { disabledError: 'This option is disabled and cannot be toggled.' },\n keybindings: [],\n};\nfunction isSelectable(item) {\n return !Separator.isSeparator(item) && !item.disabled;\n}\nfunction isNavigable(item) {\n return !Separator.isSeparator(item);\n}\nfunction isChecked(item) {\n return !Separator.isSeparator(item) && item.checked;\n}\nfunction toggle(item) {\n return isSelectable(item) ? { ...item, checked: !item.checked } : item;\n}\nfunction check(checked) {\n return function (item) {\n return isSelectable(item) ? { ...item, checked } : item;\n };\n}\nfunction normalizeChoices(choices) {\n return choices.map((choice) => {\n if (Separator.isSeparator(choice))\n return choice;\n if (typeof choice === 'string') {\n return {\n value: choice,\n name: choice,\n short: choice,\n checkedName: choice,\n disabled: false,\n checked: false,\n };\n }\n const name = choice.name ?? String(choice.value);\n const normalizedChoice = {\n value: choice.value,\n name,\n short: choice.short ?? name,\n checkedName: choice.checkedName ?? name,\n disabled: choice.disabled ?? false,\n checked: choice.checked ?? false,\n };\n if (choice.description) {\n normalizedChoice.description = choice.description;\n }\n return normalizedChoice;\n });\n}\nexport default createPrompt((config, done) => {\n const { pageSize = 7, loop = true, required, validate = () => true } = config;\n const shortcuts = { all: 'a', invert: 'i', ...config.shortcuts };\n const theme = makeTheme(checkboxTheme, config.theme);\n const { keybindings } = theme;\n const [status, setStatus] = useState('idle');\n const prefix = usePrefix({ status, theme });\n const [items, setItems] = useState(normalizeChoices(config.choices));\n const bounds = useMemo(() => {\n const first = items.findIndex(isNavigable);\n const last = items.findLastIndex(isNavigable);\n if (first === -1) {\n throw new ValidationError('[checkbox prompt] No selectable choices. All choices are disabled.');\n }\n return { first, last };\n }, [items]);\n const [active, setActive] = useState(bounds.first);\n const [errorMsg, setError] = useState();\n useKeypress(async (key) => {\n if (isEnterKey(key)) {\n const selection = items.filter(isChecked);\n const isValid = await validate([...selection]);\n if (required && !selection.length) {\n setError('At least one choice must be selected');\n }\n else if (isValid === true) {\n setStatus('done');\n done(selection.map((choice) => choice.value));\n }\n else {\n setError(isValid || 'You must select a valid value');\n }\n }\n else if (isUpKey(key, keybindings) || isDownKey(key, keybindings)) {\n if (errorMsg) {\n setError(undefined);\n }\n if (loop ||\n (isUpKey(key, keybindings) && active !== bounds.first) ||\n (isDownKey(key, keybindings) && active !== bounds.last)) {\n const offset = isUpKey(key, keybindings) ? -1 : 1;\n let next = active;\n do {\n next = (next + offset + items.length) % items.length;\n } while (!isNavigable(items[next]));\n setActive(next);\n }\n }\n else if (isSpaceKey(key)) {\n const activeItem = items[active];\n if (activeItem && !Separator.isSeparator(activeItem)) {\n if (activeItem.disabled) {\n setError(theme.i18n.disabledError);\n }\n else {\n setError(undefined);\n setItems(items.map((choice, i) => (i === active ? toggle(choice) : choice)));\n }\n }\n }\n else if (key.name === shortcuts.all) {\n const selectAll = items.some((choice) => isSelectable(choice) && !choice.checked);\n setItems(items.map(check(selectAll)));\n }\n else if (key.name === shortcuts.invert) {\n setItems(items.map(toggle));\n }\n else if (isNumberKey(key)) {\n const selectedIndex = Number(key.name) - 1;\n // Find the nth item (ignoring separators)\n let selectableIndex = -1;\n const position = items.findIndex((item) => {\n if (Separator.isSeparator(item))\n return false;\n selectableIndex++;\n return selectableIndex === selectedIndex;\n });\n const selectedItem = items[position];\n if (selectedItem && isSelectable(selectedItem)) {\n setActive(position);\n setItems(items.map((choice, i) => (i === position ? toggle(choice) : choice)));\n }\n }\n });\n const message = theme.style.message(config.message, status);\n let description;\n const page = usePagination({\n items,\n active,\n renderItem({ item, isActive }) {\n if (Separator.isSeparator(item)) {\n return ` ${item.separator}`;\n }\n const cursor = isActive ? theme.icon.cursor : ' ';\n if (item.disabled) {\n const disabledLabel = typeof item.disabled === 'string' ? item.disabled : '(disabled)';\n const checkbox = item.checked\n ? theme.icon.disabledChecked\n : theme.icon.disabledUnchecked;\n return theme.style.disabled(`${cursor}${checkbox} ${item.name} ${disabledLabel}`);\n }\n if (isActive) {\n description = item.description;\n }\n const checkbox = item.checked ? theme.icon.checked : theme.icon.unchecked;\n const name = item.checked ? item.checkedName : item.name;\n const color = isActive ? theme.style.highlight : (x) => x;\n return color(`${cursor}${checkbox} ${name}`);\n },\n pageSize,\n loop,\n });\n if (status === 'done') {\n const selection = items.filter(isChecked);\n const answer = theme.style.answer(theme.style.renderSelectedChoices(selection, items));\n return [prefix, message, answer].filter(Boolean).join(' ');\n }\n const keys = [\n ['↑↓', 'navigate'],\n ['space', 'select'],\n ];\n if (shortcuts.all)\n keys.push([shortcuts.all, 'all']);\n if (shortcuts.invert)\n keys.push([shortcuts.invert, 'invert']);\n keys.push(['⏎', 'submit']);\n const helpLine = theme.style.keysHelpTip(keys);\n const lines = [\n [prefix, message].filter(Boolean).join(' '),\n page,\n ' ',\n description ? theme.style.description(description) : '',\n errorMsg ? theme.style.error(errorMsg) : '',\n helpLine,\n ]\n .filter(Boolean)\n .join('\\n')\n .trimEnd();\n return `${lines}${cursorHide}`;\n});\nexport { Separator } from '@inquirer/core';\n","import { createPrompt, useState, useKeypress, isEnterKey, isTabKey, usePrefix, makeTheme, } from '@inquirer/core';\nfunction getBooleanValue(value, defaultValue) {\n let answer = defaultValue !== false;\n if (/^(y|yes)/i.test(value))\n answer = true;\n else if (/^(n|no)/i.test(value))\n answer = false;\n return answer;\n}\nfunction boolToString(value) {\n return value ? 'Yes' : 'No';\n}\nexport default createPrompt((config, done) => {\n const { transformer = boolToString } = config;\n const [status, setStatus] = useState('idle');\n const [value, setValue] = useState('');\n const theme = makeTheme(config.theme);\n const prefix = usePrefix({ status, theme });\n useKeypress((key, rl) => {\n if (status !== 'idle')\n return;\n if (isEnterKey(key)) {\n const answer = getBooleanValue(value, config.default);\n setValue(transformer(answer));\n setStatus('done');\n done(answer);\n }\n else if (isTabKey(key)) {\n const answer = boolToString(!getBooleanValue(value, config.default));\n rl.clearLine(0); // Remove the tab character.\n rl.write(answer);\n setValue(answer);\n }\n else {\n setValue(rl.line);\n }\n });\n let formattedValue = value;\n let defaultValue = '';\n if (status === 'done') {\n formattedValue = theme.style.answer(value);\n }\n else {\n defaultValue = ` ${theme.style.defaultAnswer(config.default === false ? 'y/N' : 'Y/n')}`;\n }\n const message = theme.style.message(config.message, status);\n return `${prefix} ${message}${defaultValue} ${formattedValue}`;\n});\n","import { createPrompt, useState, useKeypress, usePrefix, usePagination, useRef, useMemo, useEffect, isBackspaceKey, isEnterKey, isUpKey, isDownKey, isNumberKey, Separator, ValidationError, makeTheme, } from '@inquirer/core';\nimport { cursorHide } from '@inquirer/ansi';\nimport { styleText } from 'node:util';\nimport figures from '@inquirer/figures';\nconst selectTheme = {\n icon: { cursor: figures.pointer },\n style: {\n disabled: (text) => styleText('dim', text),\n description: (text) => styleText('cyan', text),\n keysHelpTip: (keys) => keys\n .map(([key, action]) => `${styleText('bold', key)} ${styleText('dim', action)}`)\n .join(styleText('dim', ' • ')),\n },\n i18n: { disabledError: 'This option is disabled and cannot be selected.' },\n indexMode: 'hidden',\n keybindings: [],\n};\nfunction isSelectable(item) {\n return !Separator.isSeparator(item) && !item.disabled;\n}\nfunction isNavigable(item) {\n return !Separator.isSeparator(item);\n}\nfunction normalizeChoices(choices) {\n return choices.map((choice) => {\n if (Separator.isSeparator(choice))\n return choice;\n if (typeof choice !== 'object' || choice === null || !('value' in choice)) {\n // It's a raw value (string, number, etc.)\n const name = String(choice);\n return {\n value: choice,\n name,\n short: name,\n disabled: false,\n };\n }\n const name = choice.name ?? String(choice.value);\n const normalizedChoice = {\n value: choice.value,\n name,\n short: choice.short ?? name,\n disabled: choice.disabled ?? false,\n };\n if (choice.description) {\n normalizedChoice.description = choice.description;\n }\n return normalizedChoice;\n });\n}\nexport default createPrompt((config, done) => {\n const { loop = true, pageSize = 7 } = config;\n const theme = makeTheme(selectTheme, config.theme);\n const { keybindings } = theme;\n const [status, setStatus] = useState('idle');\n const prefix = usePrefix({ status, theme });\n const searchTimeoutRef = useRef();\n // Vim keybindings (j/k) conflict with typing those letters in search,\n // so search must be disabled when vim bindings are enabled\n const searchEnabled = !keybindings.includes('vim');\n const items = useMemo(() => normalizeChoices(config.choices), [config.choices]);\n const bounds = useMemo(() => {\n const first = items.findIndex(isNavigable);\n const last = items.findLastIndex(isNavigable);\n if (first === -1) {\n throw new ValidationError('[select prompt] No selectable choices. All choices are disabled.');\n }\n return { first, last };\n }, [items]);\n const defaultItemIndex = useMemo(() => {\n if (!('default' in config))\n return -1;\n return items.findIndex((item) => isSelectable(item) && item.value === config.default);\n }, [config.default, items]);\n const [active, setActive] = useState(defaultItemIndex === -1 ? bounds.first : defaultItemIndex);\n // Safe to assume the cursor position always point to a Choice.\n const selectedChoice = items[active];\n const [errorMsg, setError] = useState();\n useKeypress((key, rl) => {\n clearTimeout(searchTimeoutRef.current);\n if (errorMsg) {\n setError(undefined);\n }\n if (isEnterKey(key)) {\n if (selectedChoice.disabled) {\n setError(theme.i18n.disabledError);\n }\n else {\n setStatus('done');\n done(selectedChoice.value);\n }\n }\n else if (isUpKey(key, keybindings) || isDownKey(key, keybindings)) {\n rl.clearLine(0);\n if (loop ||\n (isUpKey(key, keybindings) && active !== bounds.first) ||\n (isDownKey(key, keybindings) && active !== bounds.last)) {\n const offset = isUpKey(key, keybindings) ? -1 : 1;\n let next = active;\n do {\n next = (next + offset + items.length) % items.length;\n } while (!isNavigable(items[next]));\n setActive(next);\n }\n }\n else if (isNumberKey(key) && !Number.isNaN(Number(rl.line))) {\n const selectedIndex = Number(rl.line) - 1;\n // Find the nth item (ignoring separators)\n let selectableIndex = -1;\n const position = items.findIndex((item) => {\n if (Separator.isSeparator(item))\n return false;\n selectableIndex++;\n return selectableIndex === selectedIndex;\n });\n const item = items[position];\n if (item != null && isSelectable(item)) {\n setActive(position);\n }\n searchTimeoutRef.current = setTimeout(() => {\n rl.clearLine(0);\n }, 700);\n }\n else if (isBackspaceKey(key)) {\n rl.clearLine(0);\n }\n else if (searchEnabled) {\n const searchTerm = rl.line.toLowerCase();\n const matchIndex = items.findIndex((item) => {\n if (Separator.isSeparator(item) || !isSelectable(item))\n return false;\n return item.name.toLowerCase().startsWith(searchTerm);\n });\n if (matchIndex !== -1) {\n setActive(matchIndex);\n }\n searchTimeoutRef.current = setTimeout(() => {\n rl.clearLine(0);\n }, 700);\n }\n });\n useEffect(() => () => {\n clearTimeout(searchTimeoutRef.current);\n }, []);\n const message = theme.style.message(config.message, status);\n const helpLine = theme.style.keysHelpTip([\n ['↑↓', 'navigate'],\n ['⏎', 'select'],\n ]);\n let separatorCount = 0;\n const page = usePagination({\n items,\n active,\n renderItem({ item, isActive, index }) {\n if (Separator.isSeparator(item)) {\n separatorCount++;\n return ` ${item.separator}`;\n }\n const cursor = isActive ? theme.icon.cursor : ' ';\n const indexLabel = theme.indexMode === 'number' ? `${index + 1 - separatorCount}. ` : '';\n if (item.disabled) {\n const disabledLabel = typeof item.disabled === 'string' ? item.disabled : '(disabled)';\n const disabledCursor = isActive ? theme.icon.cursor : '-';\n return theme.style.disabled(`${disabledCursor} ${indexLabel}${item.name} ${disabledLabel}`);\n }\n const color = isActive ? theme.style.highlight : (x) => x;\n return color(`${cursor} ${indexLabel}${item.name}`);\n },\n pageSize,\n loop,\n });\n if (status === 'done') {\n return [prefix, message, theme.style.answer(selectedChoice.short)]\n .filter(Boolean)\n .join(' ');\n }\n const { description } = selectedChoice;\n const lines = [\n [prefix, message].filter(Boolean).join(' '),\n page,\n ' ',\n description ? theme.style.description(description) : '',\n errorMsg ? theme.style.error(errorMsg) : '',\n helpLine,\n ]\n .filter(Boolean)\n .join('\\n')\n .trimEnd();\n return `${lines}${cursorHide}`;\n});\nexport { Separator } from '@inquirer/core';\n","'use strict';\n\nfunction hasKey(obj, keys) {\n\tvar o = obj;\n\tkeys.slice(0, -1).forEach(function (key) {\n\t\to = o[key] || {};\n\t});\n\n\tvar key = keys[keys.length - 1];\n\treturn key in o;\n}\n\nfunction isNumber(x) {\n\tif (typeof x === 'number') { return true; }\n\tif ((/^0x[0-9a-f]+$/i).test(x)) { return true; }\n\treturn (/^[-+]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(e[-+]?\\d+)?$/).test(x);\n}\n\nfunction isConstructorOrProto(obj, key) {\n\treturn (key === 'constructor' && typeof obj[key] === 'function') || key === '__proto__';\n}\n\nmodule.exports = function (args, opts) {\n\tif (!opts) { opts = {}; }\n\n\tvar flags = {\n\t\tbools: {},\n\t\tstrings: {},\n\t\tunknownFn: null,\n\t};\n\n\tif (typeof opts.unknown === 'function') {\n\t\tflags.unknownFn = opts.unknown;\n\t}\n\n\tif (typeof opts.boolean === 'boolean' && opts.boolean) {\n\t\tflags.allBools = true;\n\t} else {\n\t\t[].concat(opts.boolean).filter(Boolean).forEach(function (key) {\n\t\t\tflags.bools[key] = true;\n\t\t});\n\t}\n\n\tvar aliases = {};\n\n\tfunction aliasIsBoolean(key) {\n\t\treturn aliases[key].some(function (x) {\n\t\t\treturn flags.bools[x];\n\t\t});\n\t}\n\n\tObject.keys(opts.alias || {}).forEach(function (key) {\n\t\taliases[key] = [].concat(opts.alias[key]);\n\t\taliases[key].forEach(function (x) {\n\t\t\taliases[x] = [key].concat(aliases[key].filter(function (y) {\n\t\t\t\treturn x !== y;\n\t\t\t}));\n\t\t});\n\t});\n\n\t[].concat(opts.string).filter(Boolean).forEach(function (key) {\n\t\tflags.strings[key] = true;\n\t\tif (aliases[key]) {\n\t\t\t[].concat(aliases[key]).forEach(function (k) {\n\t\t\t\tflags.strings[k] = true;\n\t\t\t});\n\t\t}\n\t});\n\n\tvar defaults = opts.default || {};\n\n\tvar argv = { _: [] };\n\n\tfunction argDefined(key, arg) {\n\t\treturn (flags.allBools && (/^--[^=]+$/).test(arg))\n\t\t\t|| flags.strings[key]\n\t\t\t|| flags.bools[key]\n\t\t\t|| aliases[key];\n\t}\n\n\tfunction setKey(obj, keys, value) {\n\t\tvar o = obj;\n\t\tfor (var i = 0; i < keys.length - 1; i++) {\n\t\t\tvar key = keys[i];\n\t\t\tif (isConstructorOrProto(o, key)) { return; }\n\t\t\tif (o[key] === undefined) { o[key] = {}; }\n\t\t\tif (\n\t\t\t\to[key] === Object.prototype\n\t\t\t\t|| o[key] === Number.prototype\n\t\t\t\t|| o[key] === String.prototype\n\t\t\t) {\n\t\t\t\to[key] = {};\n\t\t\t}\n\t\t\tif (o[key] === Array.prototype) { o[key] = []; }\n\t\t\to = o[key];\n\t\t}\n\n\t\tvar lastKey = keys[keys.length - 1];\n\t\tif (isConstructorOrProto(o, lastKey)) { return; }\n\t\tif (\n\t\t\to === Object.prototype\n\t\t\t|| o === Number.prototype\n\t\t\t|| o === String.prototype\n\t\t) {\n\t\t\to = {};\n\t\t}\n\t\tif (o === Array.prototype) { o = []; }\n\t\tif (o[lastKey] === undefined || flags.bools[lastKey] || typeof o[lastKey] === 'boolean') {\n\t\t\to[lastKey] = value;\n\t\t} else if (Array.isArray(o[lastKey])) {\n\t\t\to[lastKey].push(value);\n\t\t} else {\n\t\t\to[lastKey] = [o[lastKey], value];\n\t\t}\n\t}\n\n\tfunction setArg(key, val, arg) {\n\t\tif (arg && flags.unknownFn && !argDefined(key, arg)) {\n\t\t\tif (flags.unknownFn(arg) === false) { return; }\n\t\t}\n\n\t\tvar value = !flags.strings[key] && isNumber(val)\n\t\t\t? Number(val)\n\t\t\t: val;\n\t\tsetKey(argv, key.split('.'), value);\n\n\t\t(aliases[key] || []).forEach(function (x) {\n\t\t\tsetKey(argv, x.split('.'), value);\n\t\t});\n\t}\n\n\tObject.keys(flags.bools).forEach(function (key) {\n\t\tsetArg(key, defaults[key] === undefined ? false : defaults[key]);\n\t});\n\n\tvar notFlags = [];\n\n\tif (args.indexOf('--') !== -1) {\n\t\tnotFlags = args.slice(args.indexOf('--') + 1);\n\t\targs = args.slice(0, args.indexOf('--'));\n\t}\n\n\tfor (var i = 0; i < args.length; i++) {\n\t\tvar arg = args[i];\n\t\tvar key;\n\t\tvar next;\n\n\t\tif ((/^--.+=/).test(arg)) {\n\t\t\t// Using [\\s\\S] instead of . because js doesn't support the\n\t\t\t// 'dotall' regex modifier. See:\n\t\t\t// http://stackoverflow.com/a/1068308/13216\n\t\t\tvar m = arg.match(/^--([^=]+)=([\\s\\S]*)$/);\n\t\t\tkey = m[1];\n\t\t\tvar value = m[2];\n\t\t\tif (flags.bools[key]) {\n\t\t\t\tvalue = value !== 'false';\n\t\t\t}\n\t\t\tsetArg(key, value, arg);\n\t\t} else if ((/^--no-.+/).test(arg)) {\n\t\t\tkey = arg.match(/^--no-(.+)/)[1];\n\t\t\tsetArg(key, false, arg);\n\t\t} else if ((/^--.+/).test(arg)) {\n\t\t\tkey = arg.match(/^--(.+)/)[1];\n\t\t\tnext = args[i + 1];\n\t\t\tif (\n\t\t\t\tnext !== undefined\n\t\t\t\t&& !(/^(-|--)[^-]/).test(next)\n\t\t\t\t&& !flags.bools[key]\n\t\t\t\t&& !flags.allBools\n\t\t\t\t&& (aliases[key] ? !aliasIsBoolean(key) : true)\n\t\t\t) {\n\t\t\t\tsetArg(key, next, arg);\n\t\t\t\ti += 1;\n\t\t\t} else if ((/^(true|false)$/).test(next)) {\n\t\t\t\tsetArg(key, next === 'true', arg);\n\t\t\t\ti += 1;\n\t\t\t} else {\n\t\t\t\tsetArg(key, flags.strings[key] ? '' : true, arg);\n\t\t\t}\n\t\t} else if ((/^-[^-]+/).test(arg)) {\n\t\t\tvar letters = arg.slice(1, -1).split('');\n\n\t\t\tvar broken = false;\n\t\t\tfor (var j = 0; j < letters.length; j++) {\n\t\t\t\tnext = arg.slice(j + 2);\n\n\t\t\t\tif (next === '-') {\n\t\t\t\t\tsetArg(letters[j], next, arg);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif ((/[A-Za-z]/).test(letters[j]) && next[0] === '=') {\n\t\t\t\t\tsetArg(letters[j], next.slice(1), arg);\n\t\t\t\t\tbroken = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\t(/[A-Za-z]/).test(letters[j])\n\t\t\t\t\t&& (/-?\\d+(\\.\\d*)?(e-?\\d+)?$/).test(next)\n\t\t\t\t) {\n\t\t\t\t\tsetArg(letters[j], next, arg);\n\t\t\t\t\tbroken = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tif (letters[j + 1] && letters[j + 1].match(/\\W/)) {\n\t\t\t\t\tsetArg(letters[j], arg.slice(j + 2), arg);\n\t\t\t\t\tbroken = true;\n\t\t\t\t\tbreak;\n\t\t\t\t} else {\n\t\t\t\t\tsetArg(letters[j], flags.strings[letters[j]] ? '' : true, arg);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tkey = arg.slice(-1)[0];\n\t\t\tif (!broken && key !== '-') {\n\t\t\t\tif (\n\t\t\t\t\targs[i + 1]\n\t\t\t\t\t&& !(/^(-|--)[^-]/).test(args[i + 1])\n\t\t\t\t\t&& !flags.bools[key]\n\t\t\t\t\t&& (aliases[key] ? !aliasIsBoolean(key) : true)\n\t\t\t\t) {\n\t\t\t\t\tsetArg(key, args[i + 1], arg);\n\t\t\t\t\ti += 1;\n\t\t\t\t} else if (args[i + 1] && (/^(true|false)$/).test(args[i + 1])) {\n\t\t\t\t\tsetArg(key, args[i + 1] === 'true', arg);\n\t\t\t\t\ti += 1;\n\t\t\t\t} else {\n\t\t\t\t\tsetArg(key, flags.strings[key] ? '' : true, arg);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tif (!flags.unknownFn || flags.unknownFn(arg) !== false) {\n\t\t\t\targv._.push(flags.strings._ || !isNumber(arg) ? arg : Number(arg));\n\t\t\t}\n\t\t\tif (opts.stopEarly) {\n\t\t\t\targv._.push.apply(argv._, args.slice(i + 1));\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tObject.keys(defaults).forEach(function (k) {\n\t\tif (!hasKey(argv, k.split('.'))) {\n\t\t\tsetKey(argv, k.split('.'), defaults[k]);\n\n\t\t\t(aliases[k] || []).forEach(function (x) {\n\t\t\t\tsetKey(argv, x.split('.'), defaults[k]);\n\t\t\t});\n\t\t}\n\t});\n\n\tif (opts['--']) {\n\t\targv['--'] = notFlags.slice();\n\t} else {\n\t\tnotFlags.forEach(function (k) {\n\t\t\targv._.push(k);\n\t\t});\n\t}\n\n\treturn argv;\n};\n","/**\r\n * @maxsim/adapters — Shared base utilities extracted from bin/install.js\r\n */\r\n\r\nimport * as path from 'node:path';\r\nimport * as os from 'node:os';\r\nimport * as fs from 'node:fs';\r\n\r\n/**\r\n * Expand ~ to home directory (shell doesn't expand in env vars passed to node)\r\n */\r\nexport function expandTilde(filePath: string): string {\r\n if (filePath && filePath.startsWith('~/')) {\r\n return path.join(os.homedir(), filePath.slice(2));\r\n }\r\n return filePath;\r\n}\r\n\r\n/**\r\n * Extract YAML frontmatter and body from markdown content.\r\n * Returns null frontmatter if content doesn't start with ---.\r\n */\r\nexport function extractFrontmatterAndBody(\r\n content: string,\r\n): { frontmatter: string | null; body: string } {\r\n if (!content.startsWith('---')) {\r\n return { frontmatter: null, body: content };\r\n }\r\n\r\n const endIndex = content.indexOf('---', 3);\r\n if (endIndex === -1) {\r\n return { frontmatter: null, body: content };\r\n }\r\n\r\n return {\r\n frontmatter: content.substring(3, endIndex).trim(),\r\n body: content.substring(endIndex + 3),\r\n };\r\n}\r\n\r\n/**\r\n * Process Co-Authored-By lines based on attribution setting.\r\n * @param content - File content to process\r\n * @param attribution - null=remove, undefined=keep default, string=replace\r\n */\r\nexport function processAttribution(\r\n content: string,\r\n attribution: null | undefined | string,\r\n): string {\r\n if (attribution === null) {\r\n return content.replace(/(\\r?\\n){2}Co-Authored-By:.*$/gim, '');\r\n }\r\n if (attribution === undefined) {\r\n return content;\r\n }\r\n const safeAttribution = attribution.replace(/\\$/g, '$$$$');\r\n return content.replace(\r\n /Co-Authored-By:.*$/gim,\r\n `Co-Authored-By: ${safeAttribution}`,\r\n );\r\n}\r\n\r\n/**\r\n * Build a hook command path using forward slashes for cross-platform compatibility.\r\n */\r\nexport function buildHookCommand(configDir: string, hookName: string): string {\r\n const hooksPath = configDir.replace(/\\\\/g, '/') + '/hooks/' + hookName;\r\n return `node \"${hooksPath}\"`;\r\n}\r\n\r\n/**\r\n * Read and parse settings.json, returning empty object if it doesn't exist.\r\n */\r\nexport function readSettings(\r\n settingsPath: string,\r\n): Record {\r\n if (fs.existsSync(settingsPath)) {\r\n try {\r\n return JSON.parse(fs.readFileSync(settingsPath, 'utf8'));\r\n } catch {\r\n return {};\r\n }\r\n }\r\n return {};\r\n}\r\n\r\n/**\r\n * Write settings.json with proper formatting.\r\n */\r\nexport function writeSettings(\r\n settingsPath: string,\r\n settings: Record,\r\n): void {\r\n fs.writeFileSync(settingsPath, JSON.stringify(settings, null, 2) + '\\n');\r\n}\r\n","/**\r\n * @maxsim/adapters — Claude Code adapter\r\n *\r\n * Ports the Claude-specific logic from bin/install.js:\r\n * - getGlobalDir('claude', ...) (lines 135-142)\r\n * - getDirName('claude') (line 49)\r\n * - getConfigDirFromHome('claude', isGlobal) (lines 58-72)\r\n * - copyWithPathReplacement for Claude (lines 839-892)\r\n */\r\n\r\nimport * as path from 'node:path';\r\nimport * as os from 'node:os';\r\nimport type { AdapterConfig } from '../core/index.js';\r\nimport { expandTilde } from './base.js';\r\n\r\n/**\r\n * Get the global config directory for Claude Code.\r\n * Priority: explicitDir > CLAUDE_CONFIG_DIR env > ~/.claude\r\n */\r\nfunction getGlobalDir(explicitDir?: string | null): string {\r\n if (explicitDir) {\r\n return expandTilde(explicitDir);\r\n }\r\n if (process.env.CLAUDE_CONFIG_DIR) {\r\n return expandTilde(process.env.CLAUDE_CONFIG_DIR);\r\n }\r\n return path.join(os.homedir(), '.claude');\r\n}\r\n\r\n/**\r\n * Get the config directory path relative to home for hook templating.\r\n * Used for path.join(homeDir, '', ...) replacement in hooks.\r\n */\r\nfunction getConfigDirFromHome(isGlobal: boolean): string {\r\n // Both global and local use '.claude' for Claude Code\r\n return \"'.claude'\";\r\n}\r\n\r\n/**\r\n * Transform markdown content for Claude Code installation.\r\n * For Claude, this is path replacement only — no frontmatter conversion needed.\r\n * Replaces ~/.claude/ and ./.claude/ references with the actual install path prefix.\r\n */\r\nfunction transformContent(content: string, pathPrefix: string): string {\r\n const globalClaudeRegex = /~\\/\\.claude\\//g;\r\n const localClaudeRegex = /\\.\\/\\.claude\\//g;\r\n let result = content.replace(globalClaudeRegex, pathPrefix);\r\n result = result.replace(localClaudeRegex, `./.claude/`);\r\n return result;\r\n}\r\n\r\n/**\r\n * Claude Code adapter configuration.\r\n * Claude uses nested command structure (commands/maxsim/*.md).\r\n */\r\nexport const claudeAdapter: AdapterConfig = {\r\n runtime: 'claude',\r\n dirName: '.claude',\r\n getGlobalDir,\r\n getConfigDirFromHome,\r\n transformContent,\r\n commandStructure: 'nested',\r\n};\r\n\r\n/**\r\n * Install Claude Code adapter files.\r\n * Stub — actual install orchestration will be implemented in Phase 5.\r\n */\r\nexport function installClaude(): void {\r\n // Phase 5 will implement the full install orchestration.\r\n // The adapter exposes this function per CONTEXT.md decision.\r\n throw new Error('installClaude() not yet implemented — see Phase 5');\r\n}\r\n","/**\r\n * @maxsim/adapters — Tool name mappings per runtime\r\n *\r\n * Ported from bin/install.js lines ~327-390\r\n */\r\n\r\n/** Tool name mapping from Claude Code to OpenCode */\r\nconst claudeToOpencodeTools: Record = {\r\n AskUserQuestion: 'question',\r\n SlashCommand: 'skill',\r\n TodoWrite: 'todowrite',\r\n WebFetch: 'webfetch',\r\n WebSearch: 'websearch',\r\n};\r\n\r\n/** Tool name mapping from Claude Code to Gemini CLI */\r\nconst claudeToGeminiTools: Record = {\r\n Read: 'read_file',\r\n Write: 'write_file',\r\n Edit: 'replace',\r\n Bash: 'run_shell_command',\r\n Glob: 'glob',\r\n Grep: 'search_file_content',\r\n WebSearch: 'google_web_search',\r\n WebFetch: 'web_fetch',\r\n TodoWrite: 'write_todos',\r\n AskUserQuestion: 'ask_user',\r\n};\r\n\r\n/**\r\n * Convert a Claude Code tool name to OpenCode format.\r\n * - Applies special mappings (AskUserQuestion -> question, etc.)\r\n * - Converts to lowercase (except MCP tools which keep their format)\r\n */\r\nexport function convertToolName(claudeTool: string): string {\r\n if (claudeToOpencodeTools[claudeTool]) {\r\n return claudeToOpencodeTools[claudeTool];\r\n }\r\n if (claudeTool.startsWith('mcp__')) {\r\n return claudeTool;\r\n }\r\n return claudeTool.toLowerCase();\r\n}\r\n\r\n/**\r\n * Convert a Claude Code tool name to Gemini CLI format.\r\n * - Applies Claude->Gemini mapping (Read->read_file, Bash->run_shell_command, etc.)\r\n * - Filters out MCP tools (mcp__*) -- auto-discovered at runtime in Gemini\r\n * - Filters out Task -- agents are auto-registered as tools in Gemini\r\n * @returns Gemini tool name, or null if tool should be excluded\r\n */\r\nexport function convertGeminiToolName(claudeTool: string): string | null {\r\n if (claudeTool.startsWith('mcp__')) {\r\n return null;\r\n }\r\n if (claudeTool === 'Task') {\r\n return null;\r\n }\r\n if (claudeToGeminiTools[claudeTool]) {\r\n return claudeToGeminiTools[claudeTool];\r\n }\r\n return claudeTool.toLowerCase();\r\n}\r\n","/**\r\n * @maxsim/adapters — Content transformation utilities\r\n *\r\n * Ported from bin/install.js lines ~423-564\r\n */\r\n\r\nimport { convertGeminiToolName } from './tool-maps.js';\r\n\r\n/**\r\n * Convert /maxsim:command-name to $maxsim-command-name for Codex skill mentions.\r\n * Ported from install.js line ~423\r\n */\r\nexport function convertSlashCommandsToCodexSkillMentions(content: string): string {\r\n let converted = content.replace(/\\/maxsim:([a-z0-9-]+)/gi, (_, commandName: string) => {\r\n return `$maxsim-${String(commandName).toLowerCase()}`;\r\n });\r\n converted = converted.replace(/\\/maxsim-help\\b/g, '$maxsim-help');\r\n return converted;\r\n}\r\n\r\n/**\r\n * Convert Claude markdown to Codex markdown format.\r\n * Replaces slash commands and $ARGUMENTS placeholder.\r\n * Ported from install.js line ~431\r\n */\r\nexport function convertClaudeToCodexMarkdown(content: string): string {\r\n let converted = convertSlashCommandsToCodexSkillMentions(content);\r\n converted = converted.replace(/\\$ARGUMENTS\\b/g, '{{MAXSIM_ARGS}}');\r\n return converted;\r\n}\r\n\r\n/**\r\n * Strip HTML tags for Gemini CLI output.\r\n * Terminals don't support subscript -- converts text to italic *(text)*.\r\n * Ported from install.js line ~474\r\n */\r\nexport function stripSubTags(content: string): string {\r\n return content.replace(/(.*?)<\\/sub>/g, '*($1)*');\r\n}\r\n\r\n/**\r\n * Convert Claude Code agent frontmatter to Gemini CLI format.\r\n * - tools: must be a YAML array (not comma-separated string)\r\n * - tool names: must use Gemini built-in names (read_file, not Read)\r\n * - color: must be removed (causes validation error)\r\n * - mcp__* tools: must be excluded (auto-discovered at runtime)\r\n * - ${VAR} patterns: escaped to $VAR for Gemini template compatibility\r\n *\r\n * Ported from install.js line ~487\r\n */\r\nexport function convertClaudeToGeminiAgent(content: string): string {\r\n if (!content.startsWith('---')) return content;\r\n\r\n const endIndex = content.indexOf('---', 3);\r\n if (endIndex === -1) return content;\r\n\r\n const frontmatter = content.substring(3, endIndex).trim();\r\n const body = content.substring(endIndex + 3);\r\n\r\n const lines = frontmatter.split('\\n');\r\n const newLines: string[] = [];\r\n let inAllowedTools = false;\r\n const tools: string[] = [];\r\n\r\n for (const line of lines) {\r\n const trimmed = line.trim();\r\n\r\n if (trimmed.startsWith('allowed-tools:')) {\r\n inAllowedTools = true;\r\n continue;\r\n }\r\n\r\n if (trimmed.startsWith('tools:')) {\r\n const toolsValue = trimmed.substring(6).trim();\r\n if (toolsValue) {\r\n const parsed = toolsValue.split(',').map((t) => t.trim()).filter((t) => t);\r\n for (const t of parsed) {\r\n const mapped = convertGeminiToolName(t);\r\n if (mapped) tools.push(mapped);\r\n }\r\n } else {\r\n inAllowedTools = true;\r\n }\r\n continue;\r\n }\r\n\r\n if (trimmed.startsWith('color:')) continue;\r\n\r\n if (inAllowedTools) {\r\n if (trimmed.startsWith('- ')) {\r\n const mapped = convertGeminiToolName(trimmed.substring(2).trim());\r\n if (mapped) tools.push(mapped);\r\n continue;\r\n } else if (trimmed && !trimmed.startsWith('-')) {\r\n inAllowedTools = false;\r\n }\r\n }\r\n\r\n if (!inAllowedTools) {\r\n newLines.push(line);\r\n }\r\n }\r\n\r\n if (tools.length > 0) {\r\n newLines.push('tools:');\r\n for (const tool of tools) {\r\n newLines.push(` - ${tool}`);\r\n }\r\n }\r\n\r\n const newFrontmatter = newLines.join('\\n').trim();\r\n\r\n // Escape ${VAR} patterns in agent body for Gemini CLI compatibility.\r\n const escapedBody = body.replace(/\\$\\{(\\w+)\\}/g, '$$$1');\r\n\r\n return `---\\n${newFrontmatter}\\n---${stripSubTags(escapedBody)}`;\r\n}\r\n\r\n/**\r\n * Replace path references in markdown content for a target runtime.\r\n * Replaces ~/.claude/ with pathPrefix and ./.claude/ with ./dirName/.\r\n */\r\nexport function replacePathReferences(\r\n content: string,\r\n pathPrefix: string,\r\n dirName: string,\r\n): string {\r\n const globalClaudeRegex = /~\\/\\.claude\\//g;\r\n const localClaudeRegex = /\\.\\/\\.claude\\//g;\r\n let result = content.replace(globalClaudeRegex, pathPrefix);\r\n result = result.replace(localClaudeRegex, `./${dirName}/`);\r\n return result;\r\n}\r\n","/**\r\n * @maxsim/adapters — Frontmatter conversion functions for opencode, gemini, codex\r\n *\r\n * Ported from bin/install.js lines ~308-711\r\n */\r\n\r\nimport { extractFrontmatterAndBody } from '../base.js';\r\nimport { convertToolName } from './tool-maps.js';\r\nimport { convertClaudeToCodexMarkdown } from './content.js';\r\n\r\n/** Color name to hex mapping for opencode compatibility */\r\nexport const colorNameToHex: Record = {\r\n cyan: '#00FFFF',\r\n red: '#FF0000',\r\n green: '#00FF00',\r\n blue: '#0000FF',\r\n yellow: '#FFFF00',\r\n magenta: '#FF00FF',\r\n orange: '#FFA500',\r\n purple: '#800080',\r\n pink: '#FFC0CB',\r\n white: '#FFFFFF',\r\n black: '#000000',\r\n gray: '#808080',\r\n grey: '#808080',\r\n};\r\n\r\n/** Collapse whitespace to single line */\r\nexport function toSingleLine(value: string): string {\r\n return value.replace(/\\s+/g, ' ').trim();\r\n}\r\n\r\n/** Quote a value for YAML using JSON.stringify */\r\nexport function yamlQuote(value: string): string {\r\n return JSON.stringify(value);\r\n}\r\n\r\n/** Extract a single-line field value from YAML frontmatter text */\r\nexport function extractFrontmatterField(\r\n frontmatter: string,\r\n fieldName: string,\r\n): string | null {\r\n const regex = new RegExp(`^${fieldName}:\\\\s*(.+)$`, 'm');\r\n const match = frontmatter.match(regex);\r\n if (!match) return null;\r\n return match[1].trim().replace(/^['\"]|['\"]$/g, '');\r\n}\r\n\r\n/**\r\n * Convert Claude Code frontmatter to OpenCode format.\r\n * - Converts 'allowed-tools:' array to 'tools:' object with tool: true entries\r\n * - Converts color names to hex\r\n * - Removes name: field (opencode uses filename)\r\n * - Replaces tool name references in body content\r\n * - Replaces /maxsim: with /maxsim- (flat command structure)\r\n * - Replaces ~/.claude with ~/.config/opencode\r\n * - Replaces subagent_type=\"general-purpose\" with \"general\"\r\n *\r\n * Ported from install.js line ~566\r\n */\r\nexport function convertClaudeToOpencodeFrontmatter(content: string): string {\r\n // Replace tool name references in content (applies to all files)\r\n let convertedContent = content;\r\n convertedContent = convertedContent.replace(/\\bAskUserQuestion\\b/g, 'question');\r\n convertedContent = convertedContent.replace(/\\bSlashCommand\\b/g, 'skill');\r\n convertedContent = convertedContent.replace(/\\bTodoWrite\\b/g, 'todowrite');\r\n convertedContent = convertedContent.replace(/\\/maxsim:/g, '/maxsim-');\r\n convertedContent = convertedContent.replace(/~\\/\\.claude\\b/g, '~/.config/opencode');\r\n convertedContent = convertedContent.replace(\r\n /subagent_type=\"general-purpose\"/g,\r\n 'subagent_type=\"general\"',\r\n );\r\n\r\n if (!convertedContent.startsWith('---')) {\r\n return convertedContent;\r\n }\r\n\r\n const endIndex = convertedContent.indexOf('---', 3);\r\n if (endIndex === -1) {\r\n return convertedContent;\r\n }\r\n\r\n const frontmatter = convertedContent.substring(3, endIndex).trim();\r\n const body = convertedContent.substring(endIndex + 3);\r\n\r\n const lines = frontmatter.split('\\n');\r\n const newLines: string[] = [];\r\n let inAllowedTools = false;\r\n const allowedTools: string[] = [];\r\n\r\n for (const line of lines) {\r\n const trimmed = line.trim();\r\n\r\n if (trimmed.startsWith('allowed-tools:')) {\r\n inAllowedTools = true;\r\n continue;\r\n }\r\n\r\n if (trimmed.startsWith('tools:')) {\r\n const toolsValue = trimmed.substring(6).trim();\r\n if (toolsValue) {\r\n const tools = toolsValue.split(',').map((t) => t.trim()).filter((t) => t);\r\n allowedTools.push(...tools);\r\n }\r\n continue;\r\n }\r\n\r\n if (trimmed.startsWith('name:')) {\r\n continue;\r\n }\r\n\r\n if (trimmed.startsWith('color:')) {\r\n const colorValue = trimmed.substring(6).trim().toLowerCase();\r\n const hexColor = colorNameToHex[colorValue];\r\n if (hexColor) {\r\n newLines.push(`color: \"${hexColor}\"`);\r\n } else if (colorValue.startsWith('#')) {\r\n if (/^#[0-9a-f]{3}$|^#[0-9a-f]{6}$/i.test(colorValue)) {\r\n newLines.push(line);\r\n }\r\n }\r\n continue;\r\n }\r\n\r\n if (inAllowedTools) {\r\n if (trimmed.startsWith('- ')) {\r\n allowedTools.push(trimmed.substring(2).trim());\r\n continue;\r\n } else if (trimmed && !trimmed.startsWith('-')) {\r\n inAllowedTools = false;\r\n }\r\n }\r\n\r\n if (!inAllowedTools) {\r\n newLines.push(line);\r\n }\r\n }\r\n\r\n if (allowedTools.length > 0) {\r\n newLines.push('tools:');\r\n for (const tool of allowedTools) {\r\n newLines.push(` ${convertToolName(tool)}: true`);\r\n }\r\n }\r\n\r\n const newFrontmatter = newLines.join('\\n').trim();\r\n return `---\\n${newFrontmatter}\\n---${body}`;\r\n}\r\n\r\n/**\r\n * Convert Claude Code markdown command to Gemini TOML format.\r\n * Ported from install.js line ~677\r\n */\r\nexport function convertClaudeToGeminiToml(content: string): string {\r\n if (!content.startsWith('---')) {\r\n return `prompt = ${JSON.stringify(content)}\\n`;\r\n }\r\n\r\n const endIndex = content.indexOf('---', 3);\r\n if (endIndex === -1) {\r\n return `prompt = ${JSON.stringify(content)}\\n`;\r\n }\r\n\r\n const frontmatter = content.substring(3, endIndex).trim();\r\n const body = content.substring(endIndex + 3).trim();\r\n\r\n let description = '';\r\n const lines = frontmatter.split('\\n');\r\n for (const line of lines) {\r\n const trimmed = line.trim();\r\n if (trimmed.startsWith('description:')) {\r\n description = trimmed.substring(12).trim();\r\n break;\r\n }\r\n }\r\n\r\n let toml = '';\r\n if (description) {\r\n toml += `description = ${JSON.stringify(description)}\\n`;\r\n }\r\n toml += `prompt = ${JSON.stringify(body)}\\n`;\r\n\r\n return toml;\r\n}\r\n\r\n/**\r\n * Convert Claude command to Codex skill format with adapter header.\r\n * Ported from install.js line ~452\r\n */\r\nexport function convertClaudeCommandToCodexSkill(\r\n content: string,\r\n skillName: string,\r\n): string {\r\n const converted = convertClaudeToCodexMarkdown(content);\r\n const { frontmatter, body } = extractFrontmatterAndBody(converted);\r\n let description = `Run MAXSIM workflow ${skillName}.`;\r\n if (frontmatter) {\r\n const maybeDescription = extractFrontmatterField(frontmatter, 'description');\r\n if (maybeDescription) {\r\n description = maybeDescription;\r\n }\r\n }\r\n description = toSingleLine(description);\r\n const shortDescription =\r\n description.length > 180 ? `${description.slice(0, 177)}...` : description;\r\n const adapter = getCodexSkillAdapterHeader(skillName);\r\n\r\n return `---\\nname: ${yamlQuote(skillName)}\\ndescription: ${yamlQuote(description)}\\nmetadata:\\n short-description: ${yamlQuote(shortDescription)}\\n---\\n\\n${adapter}\\n\\n${body.trimStart()}`;\r\n}\r\n\r\n/**\r\n * Generate the Codex skill adapter header block.\r\n * Ported from install.js line ~437\r\n */\r\nexport function getCodexSkillAdapterHeader(skillName: string): string {\r\n const invocation = `$${skillName}`;\r\n return `\r\nCodex skills-first mode:\r\n- This skill is invoked by mentioning \\`${invocation}\\`.\r\n- Treat all user text after \\`${invocation}\\` as \\`{{MAXSIM_ARGS}}\\`.\r\n- If no arguments are present, treat \\`{{MAXSIM_ARGS}}\\` as empty.\r\n\r\nLegacy orchestration compatibility:\r\n- Any \\`Task(...)\\` pattern in referenced workflow docs is legacy syntax.\r\n- Implement equivalent behavior with Codex collaboration tools: \\`spawn_agent\\`, \\`wait\\`, \\`send_input\\`, and \\`close_agent\\`.\r\n- Treat legacy \\`subagent_type\\` names as role hints in the spawned message.\r\n`;\r\n}\r\n","/**\r\n * @maxsim/adapters — OpenCode adapter\r\n *\r\n * Ports the OpenCode-specific logic from bin/install.js:\r\n * - getOpencodeGlobalDir() (lines 79-97)\r\n * - getGlobalDir('opencode', ...) (lines 104-111)\r\n * - getDirName('opencode') (line 46)\r\n * - getConfigDirFromHome('opencode', isGlobal) (lines 58-68)\r\n * - convertClaudeToOpencodeFrontmatter + path replacement\r\n */\r\n\r\nimport * as path from 'node:path';\r\nimport * as os from 'node:os';\r\nimport type { AdapterConfig } from '../core/index.js';\r\nimport { expandTilde } from './base.js';\r\nimport { convertClaudeToOpencodeFrontmatter } from './transforms/frontmatter.js';\r\nimport { replacePathReferences } from './transforms/content.js';\r\n\r\n/**\r\n * Get the global config directory for OpenCode.\r\n * OpenCode follows XDG Base Directory spec and uses ~/.config/opencode/.\r\n * Priority: OPENCODE_CONFIG_DIR > dirname(OPENCODE_CONFIG) > XDG_CONFIG_HOME/opencode > ~/.config/opencode\r\n */\r\nfunction getOpencodeGlobalDir(): string {\r\n if (process.env.OPENCODE_CONFIG_DIR) {\r\n return expandTilde(process.env.OPENCODE_CONFIG_DIR);\r\n }\r\n if (process.env.OPENCODE_CONFIG) {\r\n return path.dirname(expandTilde(process.env.OPENCODE_CONFIG));\r\n }\r\n if (process.env.XDG_CONFIG_HOME) {\r\n return path.join(expandTilde(process.env.XDG_CONFIG_HOME), 'opencode');\r\n }\r\n return path.join(os.homedir(), '.config', 'opencode');\r\n}\r\n\r\n/**\r\n * Get the global config directory for OpenCode.\r\n * Priority: explicitDir > env vars (via getOpencodeGlobalDir)\r\n */\r\nfunction getGlobalDir(explicitDir?: string | null): string {\r\n if (explicitDir) {\r\n return expandTilde(explicitDir);\r\n }\r\n return getOpencodeGlobalDir();\r\n}\r\n\r\n/**\r\n * Get the config directory path relative to home for hook templating.\r\n */\r\nfunction getConfigDirFromHome(isGlobal: boolean): string {\r\n if (!isGlobal) {\r\n return \"'.opencode'\";\r\n }\r\n return \"'.config', 'opencode'\";\r\n}\r\n\r\n/**\r\n * Transform markdown content for OpenCode installation.\r\n * Applies frontmatter conversion and path replacement.\r\n */\r\nfunction transformContent(content: string, pathPrefix: string): string {\r\n let result = replacePathReferences(content, pathPrefix, '.opencode');\r\n // Also replace ~/.opencode/ references\r\n result = result.replace(/~\\/\\.opencode\\//g, pathPrefix);\r\n result = convertClaudeToOpencodeFrontmatter(result);\r\n return result;\r\n}\r\n\r\n/**\r\n * OpenCode adapter configuration.\r\n * OpenCode uses flat command structure (command/maxsim-*.md).\r\n */\r\nexport const opencodeAdapter: AdapterConfig = {\r\n runtime: 'opencode',\r\n dirName: '.opencode',\r\n getGlobalDir,\r\n getConfigDirFromHome,\r\n transformContent,\r\n commandStructure: 'flat',\r\n};\r\n","/**\r\n * @maxsim/adapters — Gemini adapter\r\n *\r\n * Ports the Gemini-specific logic from bin/install.js:\r\n * - getGlobalDir('gemini', ...) (lines 113-122)\r\n * - getDirName('gemini') (line 47)\r\n * - getConfigDirFromHome('gemini', isGlobal) (line 69)\r\n * - convertClaudeToGeminiToml + convertClaudeToGeminiAgent + stripSubTags\r\n */\r\n\r\nimport * as path from 'node:path';\r\nimport * as os from 'node:os';\r\nimport type { AdapterConfig } from '../core/index.js';\r\nimport { expandTilde } from './base.js';\r\nimport { convertClaudeToGeminiToml } from './transforms/frontmatter.js';\r\nimport {\r\n convertClaudeToGeminiAgent,\r\n stripSubTags,\r\n replacePathReferences,\r\n} from './transforms/content.js';\r\n\r\n/**\r\n * Get the global config directory for Gemini.\r\n * Priority: explicitDir > GEMINI_CONFIG_DIR env > ~/.gemini\r\n */\r\nfunction getGlobalDir(explicitDir?: string | null): string {\r\n if (explicitDir) {\r\n return expandTilde(explicitDir);\r\n }\r\n if (process.env.GEMINI_CONFIG_DIR) {\r\n return expandTilde(process.env.GEMINI_CONFIG_DIR);\r\n }\r\n return path.join(os.homedir(), '.gemini');\r\n}\r\n\r\n/**\r\n * Get the config directory path relative to home for hook templating.\r\n */\r\nfunction getConfigDirFromHome(_isGlobal: boolean): string {\r\n return \"'.gemini'\";\r\n}\r\n\r\n/**\r\n * Transform markdown content for Gemini installation.\r\n * Applies TOML conversion for commands, agent conversion for agents,\r\n * stripSubTags, and path replacement.\r\n */\r\nfunction transformContent(content: string, pathPrefix: string): string {\r\n let result = replacePathReferences(content, pathPrefix, '.gemini');\r\n result = stripSubTags(result);\r\n result = convertClaudeToGeminiToml(result);\r\n return result;\r\n}\r\n\r\n/**\r\n * Gemini adapter configuration.\r\n * Gemini uses nested command structure (commands/maxsim/*.toml).\r\n */\r\nexport const geminiAdapter: AdapterConfig = {\r\n runtime: 'gemini',\r\n dirName: '.gemini',\r\n getGlobalDir,\r\n getConfigDirFromHome,\r\n transformContent,\r\n commandStructure: 'nested',\r\n};\r\n\r\n// Re-export Gemini-specific transforms for use by install orchestration\r\nexport { convertClaudeToGeminiToml, convertClaudeToGeminiAgent, stripSubTags };\r\n","/**\r\n * @maxsim/adapters — Codex adapter\r\n *\r\n * Ports the Codex-specific logic from bin/install.js:\r\n * - getGlobalDir('codex', ...) (lines 124-133)\r\n * - getDirName('codex') (line 48)\r\n * - getConfigDirFromHome('codex', isGlobal) (line 70)\r\n * - convertClaudeCommandToCodexSkill + convertClaudeToCodexMarkdown\r\n */\r\n\r\nimport * as path from 'node:path';\r\nimport * as os from 'node:os';\r\nimport type { AdapterConfig } from '../core/index.js';\r\nimport { expandTilde } from './base.js';\r\nimport { convertClaudeCommandToCodexSkill } from './transforms/frontmatter.js';\r\nimport {\r\n convertClaudeToCodexMarkdown,\r\n replacePathReferences,\r\n} from './transforms/content.js';\r\n\r\n/**\r\n * Get the global config directory for Codex.\r\n * Priority: explicitDir > CODEX_HOME env > ~/.codex\r\n */\r\nfunction getGlobalDir(explicitDir?: string | null): string {\r\n if (explicitDir) {\r\n return expandTilde(explicitDir);\r\n }\r\n if (process.env.CODEX_HOME) {\r\n return expandTilde(process.env.CODEX_HOME);\r\n }\r\n return path.join(os.homedir(), '.codex');\r\n}\r\n\r\n/**\r\n * Get the config directory path relative to home for hook templating.\r\n */\r\nfunction getConfigDirFromHome(_isGlobal: boolean): string {\r\n return \"'.codex'\";\r\n}\r\n\r\n/**\r\n * Transform markdown content for Codex installation.\r\n * Applies Codex markdown conversion and path replacement.\r\n */\r\nfunction transformContent(content: string, pathPrefix: string): string {\r\n let result = replacePathReferences(content, pathPrefix, '.codex');\r\n result = result.replace(/~\\/\\.codex\\//g, pathPrefix);\r\n result = convertClaudeCommandToCodexSkill(result);\r\n return result;\r\n}\r\n\r\n/**\r\n * Codex adapter configuration.\r\n * Codex uses skill-based command structure (skills/maxsim-star/SKILL.md).\r\n */\r\nexport const codexAdapter: AdapterConfig = {\r\n runtime: 'codex',\r\n dirName: '.codex',\r\n getGlobalDir,\r\n getConfigDirFromHome,\r\n transformContent,\r\n commandStructure: 'skills',\r\n};\r\n\r\n// Re-export Codex-specific transforms for use by install orchestration\r\nexport { convertClaudeCommandToCodexSkill, convertClaudeToCodexMarkdown };\r\n","import * as fs from 'node:fs';\r\nimport * as path from 'node:path';\r\nimport fsExtra from 'fs-extra';\r\n\r\nimport type { RuntimeName, AdapterConfig } from '../adapters/index.js';\r\nimport {\r\n claudeAdapter,\r\n opencodeAdapter,\r\n geminiAdapter,\r\n codexAdapter,\r\n} from '../adapters/index.js';\r\n\r\n// Get version from package.json — read at runtime so semantic-release's version bump\r\n// is reflected without needing to rebuild dist/install.cjs after the version bump.\r\nexport const pkg = JSON.parse(fs.readFileSync(path.resolve(__dirname, '..', 'package.json'), 'utf-8')) as { version: string };\r\n\r\n// Resolve template asset root — bundled into dist/assets/templates at publish time\r\nexport const templatesRoot = path.resolve(__dirname, 'assets', 'templates');\r\n\r\n/**\r\n * Adapter registry keyed by runtime name\r\n */\r\nconst adapterMap: Record = {\r\n claude: claudeAdapter,\r\n opencode: opencodeAdapter,\r\n gemini: geminiAdapter,\r\n codex: codexAdapter,\r\n};\r\n\r\n/**\r\n * Get adapter for a runtime\r\n */\r\nexport function getAdapter(runtime: RuntimeName): AdapterConfig {\r\n return adapterMap[runtime];\r\n}\r\n\r\n/**\r\n * Get the global config directory for a runtime, using adapter\r\n */\r\nexport function getGlobalDir(runtime: RuntimeName, explicitDir: string | null = null): string {\r\n return getAdapter(runtime).getGlobalDir(explicitDir);\r\n}\r\n\r\n/**\r\n * Get the config directory path relative to home for hook templating\r\n */\r\nexport function getConfigDirFromHome(runtime: RuntimeName, isGlobal: boolean): string {\r\n return getAdapter(runtime).getConfigDirFromHome(isGlobal);\r\n}\r\n\r\n/**\r\n * Get the local directory name for a runtime\r\n */\r\nexport function getDirName(runtime: RuntimeName): string {\r\n return getAdapter(runtime).dirName;\r\n}\r\n\r\n/**\r\n * Recursively remove a directory, handling Windows read-only file attributes.\r\n * fs-extra handles cross-platform edge cases (EPERM on Windows, symlinks, etc.)\r\n */\r\nexport function safeRmDir(dirPath: string): void {\r\n fsExtra.removeSync(dirPath);\r\n}\r\n\r\n/**\r\n * Recursively copy a directory (dereferences symlinks)\r\n */\r\nexport function copyDirRecursive(src: string, dest: string): void {\r\n fsExtra.copySync(src, dest, { dereference: true });\r\n}\r\n\r\n/**\r\n * Get the global config directory for OpenCode (for JSONC permissions)\r\n * OpenCode follows XDG Base Directory spec\r\n */\r\nexport function getOpencodeGlobalDir(): string {\r\n return opencodeAdapter.getGlobalDir();\r\n}\r\n\r\n/**\r\n * Verify a directory exists and contains files\r\n */\r\nexport function verifyInstalled(dirPath: string, description: string): boolean {\r\n if (!fs.existsSync(dirPath)) {\r\n console.error(\r\n ` \\u2717 Failed to install ${description}: directory not created`,\r\n );\r\n return false;\r\n }\r\n try {\r\n const entries = fs.readdirSync(dirPath);\r\n if (entries.length === 0) {\r\n console.error(\r\n ` \\u2717 Failed to install ${description}: directory is empty`,\r\n );\r\n return false;\r\n }\r\n } catch (e: unknown) {\r\n console.error(\r\n ` \\u2717 Failed to install ${description}: ${(e as Error).message}`,\r\n );\r\n return false;\r\n }\r\n return true;\r\n}\r\n\r\n/**\r\n * Verify a file exists\r\n */\r\nexport function verifyFileInstalled(filePath: string, description: string): boolean {\r\n if (!fs.existsSync(filePath)) {\r\n console.error(\r\n ` \\u2717 Failed to install ${description}: file not created`,\r\n );\r\n return false;\r\n }\r\n return true;\r\n}\r\n\r\nexport interface InstallResult {\r\n settingsPath: string | null;\r\n settings: Record | null;\r\n statuslineCommand: string | null;\r\n runtime: RuntimeName;\r\n}\r\n","import * as fs from 'node:fs';\r\nimport * as os from 'node:os';\r\nimport * as path from 'node:path';\r\n\r\nimport chalk from 'chalk';\r\n\r\nimport type { RuntimeName } from '../adapters/index.js';\r\nimport {\r\n readSettings,\r\n} from '../adapters/index.js';\r\nimport { getGlobalDir, getOpencodeGlobalDir } from './shared.js';\r\n\r\n// Cache for attribution settings (populated once per runtime during install)\r\nconst attributionCache = new Map();\r\n\r\n/**\r\n * Get commit attribution setting for a runtime\r\n * @returns null = remove, undefined = keep default, string = custom\r\n */\r\nexport function getCommitAttribution(runtime: RuntimeName, explicitConfigDir: string | null): null | undefined | string {\r\n if (attributionCache.has(runtime)) {\r\n return attributionCache.get(runtime);\r\n }\r\n\r\n let result: null | undefined | string;\r\n\r\n if (runtime === 'opencode') {\r\n const config = readSettings(\r\n path.join(getGlobalDir('opencode', null), 'opencode.json'),\r\n ) as Record;\r\n result =\r\n (config as { disable_ai_attribution?: boolean }).disable_ai_attribution === true\r\n ? null\r\n : undefined;\r\n } else if (runtime === 'gemini') {\r\n const settings = readSettings(\r\n path.join(getGlobalDir('gemini', explicitConfigDir), 'settings.json'),\r\n ) as Record;\r\n const attr = settings.attribution as { commit?: string } | undefined;\r\n if (!attr || attr.commit === undefined) {\r\n result = undefined;\r\n } else if (attr.commit === '') {\r\n result = null;\r\n } else {\r\n result = attr.commit;\r\n }\r\n } else if (runtime === 'claude') {\r\n const settings = readSettings(\r\n path.join(getGlobalDir('claude', explicitConfigDir), 'settings.json'),\r\n ) as Record;\r\n const attr = settings.attribution as { commit?: string } | undefined;\r\n if (!attr || attr.commit === undefined) {\r\n result = undefined;\r\n } else if (attr.commit === '') {\r\n result = null;\r\n } else {\r\n result = attr.commit;\r\n }\r\n } else {\r\n result = undefined;\r\n }\r\n\r\n attributionCache.set(runtime, result);\r\n return result;\r\n}\r\n\r\n/**\r\n * Parse JSONC (JSON with Comments) by stripping comments and trailing commas.\r\n */\r\nexport function parseJsonc(content: string): Record {\r\n if (content.charCodeAt(0) === 0xfeff) {\r\n content = content.slice(1);\r\n }\r\n\r\n let result = '';\r\n let inString = false;\r\n let i = 0;\r\n while (i < content.length) {\r\n const char = content[i];\r\n const next = content[i + 1];\r\n\r\n if (inString) {\r\n result += char;\r\n if (char === '\\\\' && i + 1 < content.length) {\r\n result += next;\r\n i += 2;\r\n continue;\r\n }\r\n if (char === '\"') {\r\n inString = false;\r\n }\r\n i++;\r\n } else {\r\n if (char === '\"') {\r\n inString = true;\r\n result += char;\r\n i++;\r\n } else if (char === '/' && next === '/') {\r\n while (i < content.length && content[i] !== '\\n') {\r\n i++;\r\n }\r\n } else if (char === '/' && next === '*') {\r\n i += 2;\r\n while (\r\n i < content.length - 1 &&\r\n !(content[i] === '*' && content[i + 1] === '/')\r\n ) {\r\n i++;\r\n }\r\n i += 2;\r\n } else {\r\n result += char;\r\n i++;\r\n }\r\n }\r\n }\r\n\r\n result = result.replace(/,(\\s*[}\\]])/g, '$1');\r\n\r\n return JSON.parse(result) as Record;\r\n}\r\n\r\n/**\r\n * Configure OpenCode permissions to allow reading MAXSIM reference docs\r\n */\r\nexport function configureOpencodePermissions(isGlobal: boolean = true): void {\r\n const opencodeConfigDir = isGlobal\r\n ? getOpencodeGlobalDir()\r\n : path.join(process.cwd(), '.opencode');\r\n const configPath = path.join(opencodeConfigDir, 'opencode.json');\r\n\r\n fs.mkdirSync(opencodeConfigDir, { recursive: true });\r\n\r\n let config: Record = {};\r\n if (fs.existsSync(configPath)) {\r\n try {\r\n const content = fs.readFileSync(configPath, 'utf8');\r\n config = parseJsonc(content);\r\n } catch (e: unknown) {\r\n console.log(\r\n ` ${chalk.yellow('\\u26a0')} Could not parse opencode.json - skipping permission config`,\r\n );\r\n console.log(\r\n ` ${chalk.dim(`Reason: ${(e as Error).message}`)}`,\r\n );\r\n console.log(\r\n ` ${chalk.dim('Your config was NOT modified. Fix the syntax manually if needed.')}`,\r\n );\r\n return;\r\n }\r\n }\r\n\r\n type PermissionConfig = Record>;\r\n if (!config.permission) {\r\n config.permission = {} as PermissionConfig;\r\n }\r\n const permission = config.permission as PermissionConfig;\r\n\r\n const defaultConfigDir = path.join(os.homedir(), '.config', 'opencode');\r\n const maxsimPath =\r\n opencodeConfigDir === defaultConfigDir\r\n ? '~/.config/opencode/maxsim/*'\r\n : `${opencodeConfigDir.replace(/\\\\/g, '/')}/maxsim/*`;\r\n\r\n let modified = false;\r\n\r\n if (!permission.read || typeof permission.read !== 'object') {\r\n permission.read = {};\r\n }\r\n if (permission.read[maxsimPath] !== 'allow') {\r\n permission.read[maxsimPath] = 'allow';\r\n modified = true;\r\n }\r\n\r\n if (\r\n !permission.external_directory ||\r\n typeof permission.external_directory !== 'object'\r\n ) {\r\n permission.external_directory = {};\r\n }\r\n if (permission.external_directory[maxsimPath] !== 'allow') {\r\n permission.external_directory[maxsimPath] = 'allow';\r\n modified = true;\r\n }\r\n\r\n if (!modified) {\r\n return;\r\n }\r\n\r\n fs.writeFileSync(configPath, JSON.stringify(config, null, 2) + '\\n');\r\n console.log(\r\n ` ${chalk.green('\\u2713')} Configured read permission for MAXSIM docs`,\r\n );\r\n}\r\n","import * as fs from 'node:fs';\r\nimport * as path from 'node:path';\r\nimport * as os from 'node:os';\r\nimport { execSync as execSyncBase } from 'node:child_process';\r\n\r\nimport chalk from 'chalk';\r\n\r\nimport { safeRmDir, copyDirRecursive } from './shared.js';\r\n\r\n/** Check whether the current process is running with admin/root privileges. */\r\nexport function isElevated(): boolean {\r\n if (process.platform === 'win32') {\r\n try {\r\n execSyncBase('net session', { stdio: 'pipe' });\r\n return true;\r\n } catch {\r\n return false;\r\n }\r\n }\r\n // Linux / macOS: check if uid is 0\r\n return process.getuid?.() === 0;\r\n}\r\n\r\n/**\r\n * Add a firewall rule to allow inbound traffic on the given port.\r\n * Handles Windows (netsh), Linux (ufw / iptables), and macOS (no rule needed).\r\n */\r\nexport function applyFirewallRule(port: number): void {\r\n const platform = process.platform;\r\n try {\r\n if (platform === 'win32') {\r\n const cmd = `netsh advfirewall firewall add rule name=\"MAXSIM Dashboard\" dir=in action=allow protocol=TCP localport=${port}`;\r\n if (isElevated()) {\r\n execSyncBase(cmd, { stdio: 'pipe' });\r\n console.log(chalk.green(' \\u2713 Windows Firewall rule added for port ' + port));\r\n } else {\r\n // Trigger UAC elevation via PowerShell — this opens the Windows UAC dialog\r\n console.log(chalk.gray(' Requesting administrator privileges for firewall rule...'));\r\n const psCmd = `Start-Process cmd -ArgumentList '/c ${cmd}' -Verb RunAs -Wait`;\r\n execSyncBase(`powershell -NoProfile -Command \"${psCmd}\"`, { stdio: 'pipe' });\r\n console.log(chalk.green(' \\u2713 Windows Firewall rule added for port ' + port));\r\n }\r\n } else if (platform === 'linux') {\r\n const sudoPrefix = isElevated() ? '' : 'sudo ';\r\n try {\r\n execSyncBase(`${sudoPrefix}ufw allow ${port}/tcp`, { stdio: 'pipe' });\r\n console.log(chalk.green(' \\u2713 UFW rule added for port ' + port));\r\n } catch {\r\n try {\r\n execSyncBase(`${sudoPrefix}iptables -A INPUT -p tcp --dport ${port} -j ACCEPT`, { stdio: 'pipe' });\r\n console.log(chalk.green(' \\u2713 iptables rule added for port ' + port));\r\n } catch {\r\n console.log(chalk.yellow(` \\u26a0 Could not add firewall rule automatically. Run: sudo ufw allow ${port}/tcp`));\r\n }\r\n }\r\n } else if (platform === 'darwin') {\r\n // macOS does not block inbound connections by default — no rule needed\r\n console.log(chalk.gray(' macOS: No firewall rule needed (inbound connections are allowed by default)'));\r\n }\r\n } catch (err) {\r\n console.warn(chalk.yellow(` \\u26a0 Firewall rule failed: ${(err as Error).message}`));\r\n console.warn(chalk.gray(` You may need to manually allow port ${port} through your firewall.`));\r\n }\r\n}\r\n\r\n/**\r\n * Walk up from cwd to find the MAXSIM monorepo root (has packages/dashboard/src/server.ts)\r\n */\r\nexport function findMonorepoRoot(startDir: string): string | null {\r\n let dir = startDir;\r\n for (let i = 0; i < 10; i++) {\r\n if (fs.existsSync(path.join(dir, 'packages', 'dashboard', 'src', 'server.ts'))) {\r\n return dir;\r\n }\r\n const parent = path.dirname(dir);\r\n if (parent === dir) break;\r\n dir = parent;\r\n }\r\n return null;\r\n}\r\n\r\n/**\r\n * Handle the `dashboard` subcommand — refresh assets, install node-pty, launch server\r\n */\r\nexport async function runDashboardSubcommand(argv: Record): Promise {\r\n const { spawn: spawnDash, execSync: execSyncDash } = await import('node:child_process');\r\n\r\n // Always refresh dashboard from bundled assets before launching.\r\n const dashboardAssetSrc = path.resolve(__dirname, 'assets', 'dashboard');\r\n const installDir = path.join(process.cwd(), '.claude');\r\n const installDashDir = path.join(installDir, 'dashboard');\r\n\r\n if (fs.existsSync(dashboardAssetSrc)) {\r\n // Preserve node_modules (contains native addons like node-pty) across refreshes\r\n const nodeModulesDir = path.join(installDashDir, 'node_modules');\r\n const nodeModulesTmp = path.join(installDir, '_dashboard_node_modules_tmp');\r\n const hadNodeModules = fs.existsSync(nodeModulesDir);\r\n if (hadNodeModules) {\r\n fs.renameSync(nodeModulesDir, nodeModulesTmp);\r\n }\r\n\r\n // Clean existing dashboard dir to prevent stale files from old installs\r\n safeRmDir(installDashDir);\r\n fs.mkdirSync(installDashDir, { recursive: true });\r\n // Dashboard is now Vite+Express: server.js (self-contained) + client/ (static)\r\n copyDirRecursive(dashboardAssetSrc, installDashDir);\r\n\r\n // Restore node_modules if it was preserved\r\n if (hadNodeModules && fs.existsSync(nodeModulesTmp)) {\r\n fs.renameSync(nodeModulesTmp, nodeModulesDir);\r\n }\r\n\r\n // Write/update dashboard.json\r\n const dashConfigPath = path.join(installDir, 'dashboard.json');\r\n if (!fs.existsSync(dashConfigPath)) {\r\n fs.writeFileSync(dashConfigPath, JSON.stringify({ projectCwd: process.cwd() }, null, 2) + '\\n');\r\n }\r\n }\r\n\r\n // Resolve server path: local project first, then global\r\n const localDashboard = path.join(process.cwd(), '.claude', 'dashboard', 'server.js');\r\n const globalDashboard = path.join(os.homedir(), '.claude', 'dashboard', 'server.js');\r\n\r\n let serverPath: string | null = null;\r\n if (fs.existsSync(localDashboard)) {\r\n serverPath = localDashboard;\r\n } else if (fs.existsSync(globalDashboard)) {\r\n serverPath = globalDashboard;\r\n }\r\n\r\n if (!serverPath) {\r\n console.log(chalk.yellow('\\n Dashboard not available.\\n'));\r\n console.log(' Install MAXSIM first: ' + chalk.cyan('npx maxsimcli@latest') + '\\n');\r\n process.exit(0);\r\n }\r\n\r\n // --network flag overrides stored config (lets users enable network mode ad-hoc)\r\n const forceNetwork = !!argv['network'];\r\n\r\n // Read projectCwd from dashboard.json (one level up from dashboard/ dir)\r\n const dashboardDir = path.dirname(serverPath);\r\n const dashboardConfigPath = path.join(path.dirname(dashboardDir), 'dashboard.json');\r\n let projectCwd = process.cwd();\r\n let networkMode = forceNetwork;\r\n if (fs.existsSync(dashboardConfigPath)) {\r\n try {\r\n const config = JSON.parse(fs.readFileSync(dashboardConfigPath, 'utf8')) as { projectCwd?: string; networkMode?: boolean };\r\n if (config.projectCwd) {\r\n projectCwd = config.projectCwd;\r\n }\r\n if (!forceNetwork) {\r\n networkMode = config.networkMode ?? false;\r\n }\r\n } catch {\r\n // Use default cwd\r\n }\r\n }\r\n\r\n // node-pty is a native addon that cannot be bundled — auto-install if missing\r\n const dashDirForPty = path.dirname(serverPath);\r\n const ptyModulePath = path.join(dashDirForPty, 'node_modules', 'node-pty');\r\n if (!fs.existsSync(ptyModulePath)) {\r\n console.log(chalk.gray(' Installing node-pty for terminal support...'));\r\n try {\r\n // Ensure a package.json exists so npm install works in the dashboard dir\r\n const dashPkgPath = path.join(dashDirForPty, 'package.json');\r\n if (!fs.existsSync(dashPkgPath)) {\r\n fs.writeFileSync(dashPkgPath, '{\"private\":true}\\n');\r\n }\r\n execSyncDash('npm install node-pty --save-optional --no-audit --no-fund --loglevel=error', {\r\n cwd: dashDirForPty,\r\n stdio: 'inherit',\r\n timeout: 120_000,\r\n });\r\n } catch {\r\n console.warn(chalk.yellow(' node-pty installation failed — terminal will be unavailable.'));\r\n }\r\n }\r\n\r\n console.log(chalk.blue('Starting dashboard...'));\r\n console.log(chalk.gray(` Project: ${projectCwd}`));\r\n console.log(chalk.gray(` Server: ${serverPath}`));\r\n if (networkMode) {\r\n console.log(chalk.gray(' Network: enabled (local network access + QR code)'));\r\n }\r\n console.log('');\r\n\r\n // Use stdio: 'ignore' (fully detached) — a piped stderr causes the server to crash on\r\n // Windows when the read-end is closed after the parent reads the ready message (EPIPE).\r\n const child = spawnDash(process.execPath, [serverPath], {\r\n cwd: dashboardDir,\r\n detached: true,\r\n stdio: 'ignore',\r\n env: {\r\n ...process.env,\r\n MAXSIM_PROJECT_CWD: projectCwd,\r\n MAXSIM_NETWORK_MODE: networkMode ? '1' : '0',\r\n NODE_ENV: 'production',\r\n },\r\n });\r\n child.unref();\r\n\r\n // Poll /api/health until the server is ready (or 20s timeout).\r\n const POLL_INTERVAL_MS = 500;\r\n const POLL_TIMEOUT_MS = 20000;\r\n const HEALTH_TIMEOUT_MS = 1000;\r\n const DEFAULT_PORT = 3333;\r\n const PORT_RANGE_END = 3343;\r\n let foundUrl: string | null = null;\r\n const deadline = Date.now() + POLL_TIMEOUT_MS;\r\n\r\n while (Date.now() < deadline) {\r\n await new Promise(r => setTimeout(r, POLL_INTERVAL_MS));\r\n for (let p = DEFAULT_PORT; p <= PORT_RANGE_END; p++) {\r\n try {\r\n const controller = new AbortController();\r\n const timer = setTimeout(() => controller.abort(), HEALTH_TIMEOUT_MS);\r\n const res = await fetch(`http://localhost:${p}/api/health`, { signal: controller.signal });\r\n clearTimeout(timer);\r\n if (res.ok) {\r\n const data = await res.json() as { status?: string };\r\n if (data.status === 'ok') {\r\n foundUrl = `http://localhost:${p}`;\r\n break;\r\n }\r\n }\r\n } catch { /* not ready yet */ }\r\n }\r\n if (foundUrl) break;\r\n }\r\n\r\n if (foundUrl) {\r\n console.log(chalk.green(` Dashboard ready at ${foundUrl}`));\r\n } else {\r\n console.log(chalk.yellow('\\n Dashboard did not respond after 20s. The server may still be starting — check http://localhost:3333'));\r\n }\r\n process.exit(0);\r\n}\r\n","import * as fs from 'node:fs';\r\n\r\nimport chalk from 'chalk';\r\nimport { confirm } from '@inquirer/prompts';\r\n\r\nimport type { RuntimeName } from '../adapters/index.js';\r\nimport {\r\n readSettings,\r\n writeSettings,\r\n buildHookCommand,\r\n} from '../adapters/index.js';\r\nimport { configureOpencodePermissions } from './adapters.js';\r\nimport { getDirName, getConfigDirFromHome, verifyInstalled } from './shared.js';\r\nimport type { InstallResult } from './shared.js';\r\nimport * as path from 'node:path';\r\nimport ora from 'ora';\r\n\r\n/**\r\n * Clean up orphaned files from previous MAXSIM versions\r\n */\r\nexport function cleanupOrphanedFiles(configDir: string): void {\r\n const orphanedFiles = [\r\n 'hooks/maxsim-notify.sh',\r\n 'hooks/statusline.js',\r\n ];\r\n\r\n for (const relPath of orphanedFiles) {\r\n const fullPath = path.join(configDir, relPath);\r\n if (fs.existsSync(fullPath)) {\r\n fs.unlinkSync(fullPath);\r\n console.log(` ${chalk.green('\\u2713')} Removed orphaned ${relPath}`);\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * Clean up orphaned hook registrations from settings.json\r\n */\r\nexport function cleanupOrphanedHooks(\r\n settings: Record,\r\n): Record {\r\n const orphanedHookPatterns = [\r\n 'maxsim-notify.sh',\r\n 'hooks/statusline.js',\r\n 'maxsim-intel-index.js',\r\n 'maxsim-intel-session.js',\r\n 'maxsim-intel-prune.js',\r\n ];\r\n\r\n let cleanedHooks = false;\r\n\r\n interface HookEntry {\r\n hooks?: Array<{ command?: string }>;\r\n }\r\n\r\n const hooks = settings.hooks as Record | undefined;\r\n if (hooks) {\r\n for (const eventType of Object.keys(hooks)) {\r\n const hookEntries = hooks[eventType];\r\n if (Array.isArray(hookEntries)) {\r\n const filtered = hookEntries.filter((entry: HookEntry) => {\r\n if (entry.hooks && Array.isArray(entry.hooks)) {\r\n const hasOrphaned = entry.hooks.some(\r\n (h) =>\r\n h.command &&\r\n orphanedHookPatterns.some((pattern) =>\r\n h.command!.includes(pattern),\r\n ),\r\n );\r\n if (hasOrphaned) {\r\n cleanedHooks = true;\r\n return false;\r\n }\r\n }\r\n return true;\r\n });\r\n hooks[eventType] = filtered;\r\n }\r\n }\r\n }\r\n\r\n if (cleanedHooks) {\r\n console.log(\r\n ` ${chalk.green('\\u2713')} Removed orphaned hook registrations`,\r\n );\r\n }\r\n\r\n const statusLine = settings.statusLine as { command?: string } | undefined;\r\n if (\r\n statusLine &&\r\n statusLine.command &&\r\n statusLine.command.includes('statusline.js') &&\r\n !statusLine.command.includes('maxsim-statusline.js')\r\n ) {\r\n statusLine.command = statusLine.command.replace(\r\n /statusline\\.js/,\r\n 'maxsim-statusline.js',\r\n );\r\n console.log(\r\n ` ${chalk.green('\\u2713')} Updated statusline path (statusline.js \\u2192 maxsim-statusline.js)`,\r\n );\r\n }\r\n\r\n return settings;\r\n}\r\n\r\n/**\r\n * Install hook files and configure settings.json for a runtime\r\n */\r\nexport function installHookFiles(\r\n targetDir: string,\r\n runtime: RuntimeName,\r\n isGlobal: boolean,\r\n failures: string[],\r\n): void {\r\n const dirName = getDirName(runtime);\r\n const isCodex = runtime === 'codex';\r\n\r\n if (isCodex) return;\r\n\r\n // Copy hooks from bundled assets directory\r\n let hooksSrc: string | null = null;\r\n const bundledHooksDir = path.resolve(__dirname, 'assets', 'hooks');\r\n if (fs.existsSync(bundledHooksDir)) {\r\n hooksSrc = bundledHooksDir;\r\n } else {\r\n console.warn(` ${chalk.yellow('!')} bundled hooks not found - hooks will not be installed`);\r\n }\r\n\r\n if (hooksSrc) {\r\n const spinner = ora({ text: 'Installing hooks...', color: 'cyan' }).start();\r\n const hooksDest = path.join(targetDir, 'hooks');\r\n fs.mkdirSync(hooksDest, { recursive: true });\r\n const hookEntries = fs.readdirSync(hooksSrc);\r\n const configDirReplacement = getConfigDirFromHome(runtime, isGlobal);\r\n for (const entry of hookEntries) {\r\n const srcFile = path.join(hooksSrc, entry);\r\n if (fs.statSync(srcFile).isFile() && entry.endsWith('.cjs') && !entry.includes('.d.')) {\r\n const destName = entry.replace(/\\.cjs$/, '.js');\r\n const destFile = path.join(hooksDest, destName);\r\n let content = fs.readFileSync(srcFile, 'utf8');\r\n content = content.replace(/'\\.claude'/g, configDirReplacement);\r\n fs.writeFileSync(destFile, content);\r\n }\r\n }\r\n if (verifyInstalled(hooksDest, 'hooks')) {\r\n spinner.succeed(chalk.green('\\u2713') + ' Installed hooks (bundled)');\r\n } else {\r\n spinner.fail('Failed to install hooks');\r\n failures.push('hooks');\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * Configure hooks and statusline in settings.json\r\n */\r\nexport function configureSettingsHooks(\r\n targetDir: string,\r\n runtime: RuntimeName,\r\n isGlobal: boolean,\r\n): { settingsPath: string; settings: Record; statuslineCommand: string; updateCheckCommand: string; contextMonitorCommand: string } {\r\n const dirName = getDirName(runtime);\r\n const isOpencode = runtime === 'opencode';\r\n\r\n const settingsPath = path.join(targetDir, 'settings.json');\r\n const settings = cleanupOrphanedHooks(readSettings(settingsPath));\r\n const statuslineCommand = isGlobal\r\n ? buildHookCommand(targetDir, 'maxsim-statusline.js')\r\n : 'node ' + dirName + '/hooks/maxsim-statusline.js';\r\n const updateCheckCommand = isGlobal\r\n ? buildHookCommand(targetDir, 'maxsim-check-update.js')\r\n : 'node ' + dirName + '/hooks/maxsim-check-update.js';\r\n const contextMonitorCommand = isGlobal\r\n ? buildHookCommand(targetDir, 'maxsim-context-monitor.js')\r\n : 'node ' + dirName + '/hooks/maxsim-context-monitor.js';\r\n\r\n interface InstallHookEntry {\r\n hooks?: Array<{ type: string; command: string }>;\r\n }\r\n\r\n // Configure SessionStart hook for update checking (skip for opencode)\r\n if (!isOpencode) {\r\n if (!settings.hooks) {\r\n settings.hooks = {};\r\n }\r\n const installHooks = settings.hooks as Record;\r\n if (!installHooks.SessionStart) {\r\n installHooks.SessionStart = [];\r\n }\r\n\r\n const hasMaxsimUpdateHook = installHooks.SessionStart.some(\r\n (entry: InstallHookEntry) =>\r\n entry.hooks &&\r\n entry.hooks.some(\r\n (h) => h.command && h.command.includes('maxsim-check-update'),\r\n ),\r\n );\r\n\r\n if (!hasMaxsimUpdateHook) {\r\n installHooks.SessionStart.push({\r\n hooks: [\r\n {\r\n type: 'command',\r\n command: updateCheckCommand,\r\n },\r\n ],\r\n });\r\n console.log(\r\n ` ${chalk.green('\\u2713')} Configured update check hook`,\r\n );\r\n }\r\n\r\n // Configure PostToolUse hook for context window monitoring\r\n if (!installHooks.PostToolUse) {\r\n installHooks.PostToolUse = [];\r\n }\r\n\r\n const hasContextMonitorHook = installHooks.PostToolUse.some(\r\n (entry: InstallHookEntry) =>\r\n entry.hooks &&\r\n entry.hooks.some(\r\n (h) => h.command && h.command.includes('maxsim-context-monitor'),\r\n ),\r\n );\r\n\r\n if (!hasContextMonitorHook) {\r\n installHooks.PostToolUse.push({\r\n hooks: [\r\n {\r\n type: 'command',\r\n command: contextMonitorCommand,\r\n },\r\n ],\r\n });\r\n console.log(\r\n ` ${chalk.green('\\u2713')} Configured context window monitor hook`,\r\n );\r\n }\r\n }\r\n\r\n return { settingsPath, settings, statuslineCommand, updateCheckCommand, contextMonitorCommand };\r\n}\r\n\r\n/**\r\n * Handle statusline configuration — returns true if MAXSIM statusline should be installed\r\n */\r\nexport async function handleStatusline(\r\n settings: Record,\r\n isInteractive: boolean,\r\n forceStatusline: boolean,\r\n): Promise {\r\n const hasExisting = settings.statusLine != null;\r\n\r\n if (!hasExisting) return true;\r\n if (forceStatusline) return true;\r\n\r\n if (!isInteractive) {\r\n console.log(\r\n chalk.yellow('\\u26a0') + ' Skipping statusline (already configured)',\r\n );\r\n console.log(\r\n ' Use ' + chalk.cyan('--force-statusline') + ' to replace\\n',\r\n );\r\n return false;\r\n }\r\n\r\n const statusLine = settings.statusLine as { command?: string; url?: string };\r\n const existingCmd = statusLine.command || statusLine.url || '(custom)';\r\n\r\n console.log();\r\n console.log(chalk.yellow('\\u26a0 Existing statusline detected'));\r\n console.log();\r\n console.log(' Your current statusline:');\r\n console.log(' ' + chalk.dim(`command: ${existingCmd}`));\r\n console.log();\r\n console.log(' MAXSIM includes a statusline showing:');\r\n console.log(' \\u2022 Model name');\r\n console.log(' \\u2022 Current task (from todo list)');\r\n console.log(' \\u2022 Context window usage (color-coded)');\r\n console.log();\r\n\r\n const shouldReplace = await confirm({\r\n message: 'Replace with MAXSIM statusline?',\r\n default: false,\r\n });\r\n\r\n return shouldReplace;\r\n}\r\n\r\n/**\r\n * Apply statusline config, then print completion message\r\n */\r\nexport function finishInstall(\r\n settingsPath: string | null,\r\n settings: Record | null,\r\n statuslineCommand: string | null,\r\n shouldInstallStatusline: boolean,\r\n runtime: RuntimeName = 'claude',\r\n isGlobal: boolean = true,\r\n): void {\r\n const isOpencode = runtime === 'opencode';\r\n const isCodex = runtime === 'codex';\r\n\r\n if (shouldInstallStatusline && !isOpencode && !isCodex) {\r\n settings!.statusLine = {\r\n type: 'command',\r\n command: statuslineCommand,\r\n };\r\n console.log(` ${chalk.green('\\u2713')} Configured statusline`);\r\n }\r\n\r\n if (!isCodex && settingsPath && settings) {\r\n writeSettings(settingsPath, settings);\r\n }\r\n\r\n if (isOpencode) {\r\n configureOpencodePermissions(isGlobal);\r\n }\r\n\r\n let program = 'Claude Code';\r\n if (runtime === 'opencode') program = 'OpenCode';\r\n if (runtime === 'gemini') program = 'Gemini';\r\n if (runtime === 'codex') program = 'Codex';\r\n\r\n let command = '/maxsim:help';\r\n if (runtime === 'opencode') command = '/maxsim-help';\r\n if (runtime === 'codex') command = '$maxsim-help';\r\n console.log(`\r\n ${chalk.green('Done!')} Launch ${program} and run ${chalk.cyan(command)}.\r\n\r\n ${chalk.cyan('Join the community:')} https://discord.gg/5JJgD5svVS\r\n`);\r\n}\r\n","import * as fs from 'node:fs';\r\nimport * as path from 'node:path';\r\n\r\nimport type { RuntimeName } from '../adapters/index.js';\r\nimport {\r\n processAttribution,\r\n convertClaudeToOpencodeFrontmatter,\r\n convertClaudeToGeminiToml,\r\n convertClaudeCommandToCodexSkill,\r\n convertClaudeToCodexMarkdown,\r\n stripSubTags,\r\n} from '../adapters/index.js';\r\nimport { getDirName } from './shared.js';\r\nimport { getCommitAttribution } from './adapters.js';\r\n\r\n/**\r\n * Copy commands to a flat structure for OpenCode\r\n * OpenCode expects: command/maxsim-help.md (invoked as /maxsim-help)\r\n * Source structure: commands/maxsim/help.md\r\n */\r\nexport function copyFlattenedCommands(\r\n srcDir: string,\r\n destDir: string,\r\n prefix: string,\r\n pathPrefix: string,\r\n runtime: RuntimeName,\r\n explicitConfigDir: string | null,\r\n): void {\r\n if (!fs.existsSync(srcDir)) {\r\n return;\r\n }\r\n\r\n if (fs.existsSync(destDir)) {\r\n for (const file of fs.readdirSync(destDir)) {\r\n if (file.startsWith(`${prefix}-`) && file.endsWith('.md')) {\r\n fs.unlinkSync(path.join(destDir, file));\r\n }\r\n }\r\n } else {\r\n fs.mkdirSync(destDir, { recursive: true });\r\n }\r\n\r\n const entries = fs.readdirSync(srcDir, { withFileTypes: true });\r\n\r\n for (const entry of entries) {\r\n const srcPath = path.join(srcDir, entry.name);\r\n\r\n if (entry.isDirectory()) {\r\n copyFlattenedCommands(\r\n srcPath,\r\n destDir,\r\n `${prefix}-${entry.name}`,\r\n pathPrefix,\r\n runtime,\r\n explicitConfigDir,\r\n );\r\n } else if (entry.name.endsWith('.md')) {\r\n const baseName = entry.name.replace('.md', '');\r\n const destName = `${prefix}-${baseName}.md`;\r\n const destPath = path.join(destDir, destName);\r\n\r\n let content = fs.readFileSync(srcPath, 'utf8');\r\n const globalClaudeRegex = /~\\/\\.claude\\//g;\r\n const localClaudeRegex = /\\.\\/\\.claude\\//g;\r\n const opencodeDirRegex = /~\\/\\.opencode\\//g;\r\n content = content.replace(globalClaudeRegex, pathPrefix);\r\n content = content.replace(localClaudeRegex, `./${getDirName(runtime)}/`);\r\n content = content.replace(opencodeDirRegex, pathPrefix);\r\n content = processAttribution(content, getCommitAttribution(runtime, explicitConfigDir));\r\n content = convertClaudeToOpencodeFrontmatter(content);\r\n\r\n fs.writeFileSync(destPath, content);\r\n }\r\n }\r\n}\r\n\r\nexport function listCodexSkillNames(\r\n skillsDir: string,\r\n prefix: string = 'maxsim-',\r\n): string[] {\r\n if (!fs.existsSync(skillsDir)) return [];\r\n const entries = fs.readdirSync(skillsDir, { withFileTypes: true });\r\n return entries\r\n .filter((entry) => entry.isDirectory() && entry.name.startsWith(prefix))\r\n .filter((entry) =>\r\n fs.existsSync(path.join(skillsDir, entry.name, 'SKILL.md')),\r\n )\r\n .map((entry) => entry.name)\r\n .sort();\r\n}\r\n\r\nexport function copyCommandsAsCodexSkills(\r\n srcDir: string,\r\n skillsDir: string,\r\n prefix: string,\r\n pathPrefix: string,\r\n runtime: RuntimeName,\r\n explicitConfigDir: string | null,\r\n): void {\r\n if (!fs.existsSync(srcDir)) {\r\n return;\r\n }\r\n\r\n fs.mkdirSync(skillsDir, { recursive: true });\r\n\r\n const existing = fs.readdirSync(skillsDir, { withFileTypes: true });\r\n for (const entry of existing) {\r\n if (entry.isDirectory() && entry.name.startsWith(`${prefix}-`)) {\r\n fs.rmSync(path.join(skillsDir, entry.name), { recursive: true });\r\n }\r\n }\r\n\r\n function recurse(currentSrcDir: string, currentPrefix: string): void {\r\n const entries = fs.readdirSync(currentSrcDir, { withFileTypes: true });\r\n\r\n for (const entry of entries) {\r\n const srcPath = path.join(currentSrcDir, entry.name);\r\n if (entry.isDirectory()) {\r\n recurse(srcPath, `${currentPrefix}-${entry.name}`);\r\n continue;\r\n }\r\n\r\n if (!entry.name.endsWith('.md')) {\r\n continue;\r\n }\r\n\r\n const baseName = entry.name.replace('.md', '');\r\n const skillName = `${currentPrefix}-${baseName}`;\r\n const skillDir = path.join(skillsDir, skillName);\r\n fs.mkdirSync(skillDir, { recursive: true });\r\n\r\n let content = fs.readFileSync(srcPath, 'utf8');\r\n const globalClaudeRegex = /~\\/\\.claude\\//g;\r\n const localClaudeRegex = /\\.\\/\\.claude\\//g;\r\n const codexDirRegex = /~\\/\\.codex\\//g;\r\n content = content.replace(globalClaudeRegex, pathPrefix);\r\n content = content.replace(localClaudeRegex, `./${getDirName(runtime)}/`);\r\n content = content.replace(codexDirRegex, pathPrefix);\r\n content = processAttribution(content, getCommitAttribution(runtime, explicitConfigDir));\r\n content = convertClaudeCommandToCodexSkill(content, skillName);\r\n\r\n fs.writeFileSync(path.join(skillDir, 'SKILL.md'), content);\r\n }\r\n }\r\n\r\n recurse(srcDir, prefix);\r\n}\r\n\r\n/**\r\n * Recursively copy directory, replacing paths in .md files\r\n * Deletes existing destDir first to remove orphaned files from previous versions\r\n */\r\nexport function copyWithPathReplacement(\r\n srcDir: string,\r\n destDir: string,\r\n pathPrefix: string,\r\n runtime: RuntimeName,\r\n explicitConfigDir: string | null,\r\n isCommand: boolean = false,\r\n): void {\r\n const isOpencode = runtime === 'opencode';\r\n const isCodex = runtime === 'codex';\r\n const dirName = getDirName(runtime);\r\n\r\n if (fs.existsSync(destDir)) {\r\n fs.rmSync(destDir, { recursive: true });\r\n }\r\n fs.mkdirSync(destDir, { recursive: true });\r\n\r\n const entries = fs.readdirSync(srcDir, { withFileTypes: true });\r\n\r\n for (const entry of entries) {\r\n const srcPath = path.join(srcDir, entry.name);\r\n const destPath = path.join(destDir, entry.name);\r\n\r\n if (entry.isDirectory()) {\r\n copyWithPathReplacement(srcPath, destPath, pathPrefix, runtime, explicitConfigDir, isCommand);\r\n } else if (entry.name.endsWith('.md')) {\r\n let content = fs.readFileSync(srcPath, 'utf8');\r\n const globalClaudeRegex = /~\\/\\.claude\\//g;\r\n const localClaudeRegex = /\\.\\/\\.claude\\//g;\r\n content = content.replace(globalClaudeRegex, pathPrefix);\r\n content = content.replace(localClaudeRegex, `./${dirName}/`);\r\n content = processAttribution(content, getCommitAttribution(runtime, explicitConfigDir));\r\n\r\n if (isOpencode) {\r\n content = convertClaudeToOpencodeFrontmatter(content);\r\n fs.writeFileSync(destPath, content);\r\n } else if (runtime === 'gemini') {\r\n if (isCommand) {\r\n content = stripSubTags(content);\r\n const tomlContent = convertClaudeToGeminiToml(content);\r\n const tomlPath = destPath.replace(/\\.md$/, '.toml');\r\n fs.writeFileSync(tomlPath, tomlContent);\r\n } else {\r\n fs.writeFileSync(destPath, content);\r\n }\r\n } else if (isCodex) {\r\n content = convertClaudeToCodexMarkdown(content);\r\n fs.writeFileSync(destPath, content);\r\n } else {\r\n fs.writeFileSync(destPath, content);\r\n }\r\n } else {\r\n fs.copyFileSync(srcPath, destPath);\r\n }\r\n }\r\n}\r\n","import * as fs from 'node:fs';\r\nimport * as path from 'node:path';\r\nimport * as crypto from 'node:crypto';\r\n\r\nimport type { RuntimeName } from '../adapters/index.js';\r\nimport { pkg } from './shared.js';\r\nimport { listCodexSkillNames } from './copy.js';\r\n\r\nexport const MANIFEST_NAME = 'maxsim-file-manifest.json';\r\n\r\n/**\r\n * Compute SHA256 hash of file contents\r\n */\r\nexport function fileHash(filePath: string): string {\r\n const content = fs.readFileSync(filePath);\r\n return crypto.createHash('sha256').update(content).digest('hex');\r\n}\r\n\r\n/**\r\n * Recursively collect all files in dir with their hashes\r\n */\r\nexport function generateManifest(\r\n dir: string,\r\n baseDir?: string,\r\n): Record {\r\n if (!baseDir) baseDir = dir;\r\n const manifest: Record = {};\r\n if (!fs.existsSync(dir)) return manifest;\r\n const entries = fs.readdirSync(dir, { withFileTypes: true });\r\n for (const entry of entries) {\r\n const fullPath = path.join(dir, entry.name);\r\n const relPath = path.relative(baseDir, fullPath).replace(/\\\\/g, '/');\r\n if (entry.isDirectory()) {\r\n Object.assign(manifest, generateManifest(fullPath, baseDir));\r\n } else {\r\n manifest[relPath] = fileHash(fullPath);\r\n }\r\n }\r\n return manifest;\r\n}\r\n\r\nexport interface Manifest {\r\n version: string;\r\n timestamp: string;\r\n files: Record;\r\n}\r\n\r\n/**\r\n * Write file manifest after installation for future modification detection\r\n */\r\nexport function writeManifest(\r\n configDir: string,\r\n runtime: RuntimeName = 'claude',\r\n): Manifest {\r\n const isOpencode = runtime === 'opencode';\r\n const isCodex = runtime === 'codex';\r\n const maxsimDir = path.join(configDir, 'maxsim');\r\n const commandsDir = path.join(configDir, 'commands', 'maxsim');\r\n const opencodeCommandDir = path.join(configDir, 'command');\r\n const codexSkillsDir = path.join(configDir, 'skills');\r\n const agentsDir = path.join(configDir, 'agents');\r\n const manifest: Manifest = {\r\n version: pkg.version,\r\n timestamp: new Date().toISOString(),\r\n files: {},\r\n };\r\n\r\n const maxsimHashes = generateManifest(maxsimDir);\r\n for (const [rel, hash] of Object.entries(maxsimHashes)) {\r\n manifest.files['maxsim/' + rel] = hash;\r\n }\r\n if (!isOpencode && !isCodex && fs.existsSync(commandsDir)) {\r\n const cmdHashes = generateManifest(commandsDir);\r\n for (const [rel, hash] of Object.entries(cmdHashes)) {\r\n manifest.files['commands/maxsim/' + rel] = hash;\r\n }\r\n }\r\n if (isOpencode && fs.existsSync(opencodeCommandDir)) {\r\n for (const file of fs.readdirSync(opencodeCommandDir)) {\r\n if (file.startsWith('maxsim-') && file.endsWith('.md')) {\r\n manifest.files['command/' + file] = fileHash(\r\n path.join(opencodeCommandDir, file),\r\n );\r\n }\r\n }\r\n }\r\n if (isCodex && fs.existsSync(codexSkillsDir)) {\r\n for (const skillName of listCodexSkillNames(codexSkillsDir)) {\r\n const skillRoot = path.join(codexSkillsDir, skillName);\r\n const skillHashes = generateManifest(skillRoot);\r\n for (const [rel, hash] of Object.entries(skillHashes)) {\r\n manifest.files[`skills/${skillName}/${rel}`] = hash;\r\n }\r\n }\r\n }\r\n if (fs.existsSync(agentsDir)) {\r\n for (const file of fs.readdirSync(agentsDir)) {\r\n if (file.startsWith('maxsim-') && file.endsWith('.md')) {\r\n manifest.files['agents/' + file] = fileHash(\r\n path.join(agentsDir, file),\r\n );\r\n }\r\n }\r\n }\r\n // Include skills in manifest (agents/skills//*)\r\n const skillsManifestDir = path.join(agentsDir, 'skills');\r\n if (fs.existsSync(skillsManifestDir)) {\r\n const skillHashes = generateManifest(skillsManifestDir);\r\n for (const [rel, hash] of Object.entries(skillHashes)) {\r\n manifest.files['agents/skills/' + rel] = hash;\r\n }\r\n }\r\n\r\n fs.writeFileSync(\r\n path.join(configDir, MANIFEST_NAME),\r\n JSON.stringify(manifest, null, 2),\r\n );\r\n return manifest;\r\n}\r\n","import * as fs from 'node:fs';\r\nimport * as path from 'node:path';\r\n\r\nimport chalk from 'chalk';\r\n\r\nimport type { RuntimeName } from '../adapters/index.js';\r\nimport { MANIFEST_NAME, fileHash } from './manifest.js';\r\nimport type { Manifest } from './manifest.js';\r\n\r\nexport const PATCHES_DIR_NAME = 'maxsim-local-patches';\r\n\r\ninterface BackupMeta {\r\n backed_up_at: string;\r\n from_version: string;\r\n files: string[];\r\n}\r\n\r\n/**\r\n * Detect user-modified MAXSIM files by comparing against install manifest.\r\n */\r\nexport function saveLocalPatches(configDir: string): string[] {\r\n const manifestPath = path.join(configDir, MANIFEST_NAME);\r\n if (!fs.existsSync(manifestPath)) return [];\r\n\r\n let manifest: Manifest;\r\n try {\r\n manifest = JSON.parse(\r\n fs.readFileSync(manifestPath, 'utf8'),\r\n ) as Manifest;\r\n } catch {\r\n return [];\r\n }\r\n\r\n const patchesDir = path.join(configDir, PATCHES_DIR_NAME);\r\n const modified: string[] = [];\r\n\r\n for (const [relPath, originalHash] of Object.entries(manifest.files || {})) {\r\n const fullPath = path.join(configDir, relPath);\r\n if (!fs.existsSync(fullPath)) continue;\r\n const currentHash = fileHash(fullPath);\r\n if (currentHash !== originalHash) {\r\n const backupPath = path.join(patchesDir, relPath);\r\n fs.mkdirSync(path.dirname(backupPath), { recursive: true });\r\n fs.copyFileSync(fullPath, backupPath);\r\n modified.push(relPath);\r\n }\r\n }\r\n\r\n if (modified.length > 0) {\r\n const meta: BackupMeta = {\r\n backed_up_at: new Date().toISOString(),\r\n from_version: manifest.version,\r\n files: modified,\r\n };\r\n fs.writeFileSync(\r\n path.join(patchesDir, 'backup-meta.json'),\r\n JSON.stringify(meta, null, 2),\r\n );\r\n console.log(\r\n ' ' +\r\n chalk.yellow('i') +\r\n ' Found ' +\r\n modified.length +\r\n ' locally modified MAXSIM file(s) \\u2014 backed up to ' +\r\n PATCHES_DIR_NAME +\r\n '/',\r\n );\r\n for (const f of modified) {\r\n console.log(' ' + chalk.dim(f));\r\n }\r\n }\r\n return modified;\r\n}\r\n\r\n/**\r\n * After install, report backed-up patches for user to reapply.\r\n */\r\nexport function reportLocalPatches(\r\n configDir: string,\r\n runtime: RuntimeName = 'claude',\r\n): string[] {\r\n const patchesDir = path.join(configDir, PATCHES_DIR_NAME);\r\n const metaPath = path.join(patchesDir, 'backup-meta.json');\r\n if (!fs.existsSync(metaPath)) return [];\r\n\r\n let meta: BackupMeta;\r\n try {\r\n meta = JSON.parse(\r\n fs.readFileSync(metaPath, 'utf8'),\r\n ) as BackupMeta;\r\n } catch {\r\n return [];\r\n }\r\n\r\n if (meta.files && meta.files.length > 0) {\r\n const reapplyCommand =\r\n runtime === 'opencode'\r\n ? '/maxsim-reapply-patches'\r\n : runtime === 'codex'\r\n ? '$maxsim-reapply-patches'\r\n : '/maxsim:reapply-patches';\r\n console.log('');\r\n console.log(\r\n ' ' +\r\n chalk.yellow('Local patches detected') +\r\n ' (from v' +\r\n meta.from_version +\r\n '):',\r\n );\r\n for (const f of meta.files) {\r\n console.log(' ' + chalk.cyan(f));\r\n }\r\n console.log('');\r\n console.log(\r\n ' Your modifications are saved in ' +\r\n chalk.cyan(PATCHES_DIR_NAME + '/'),\r\n );\r\n console.log(\r\n ' Run ' +\r\n chalk.cyan(reapplyCommand) +\r\n ' to merge them into the new version.',\r\n );\r\n console.log(' Or manually compare and merge the files.');\r\n console.log('');\r\n }\r\n return meta.files || [];\r\n}\r\n","import * as fs from 'node:fs';\r\nimport * as path from 'node:path';\r\nimport * as os from 'node:os';\r\n\r\nimport chalk from 'chalk';\r\n\r\nimport type { RuntimeName } from '../adapters/index.js';\r\nimport { readSettings, writeSettings } from '../adapters/index.js';\r\nimport { getDirName, getGlobalDir, getOpencodeGlobalDir } from './shared.js';\r\n\r\n/**\r\n * Uninstall MAXSIM from the specified directory for a specific runtime\r\n */\r\nexport function uninstall(isGlobal: boolean, runtime: RuntimeName = 'claude', explicitConfigDir: string | null = null): void {\r\n const isOpencode = runtime === 'opencode';\r\n const isCodex = runtime === 'codex';\r\n const dirName = getDirName(runtime);\r\n\r\n const targetDir = isGlobal\r\n ? getGlobalDir(runtime, explicitConfigDir)\r\n : path.join(process.cwd(), dirName);\r\n\r\n const locationLabel = isGlobal\r\n ? targetDir.replace(os.homedir(), '~')\r\n : targetDir.replace(process.cwd(), '.');\r\n\r\n let runtimeLabel = 'Claude Code';\r\n if (runtime === 'opencode') runtimeLabel = 'OpenCode';\r\n if (runtime === 'gemini') runtimeLabel = 'Gemini';\r\n if (runtime === 'codex') runtimeLabel = 'Codex';\r\n\r\n console.log(\r\n ` Uninstalling MAXSIM from ${chalk.cyan(runtimeLabel)} at ${chalk.cyan(locationLabel)}\\n`,\r\n );\r\n\r\n if (!fs.existsSync(targetDir)) {\r\n console.log(\r\n ` ${chalk.yellow('\\u26a0')} Directory does not exist: ${locationLabel}`,\r\n );\r\n console.log(` Nothing to uninstall.\\n`);\r\n return;\r\n }\r\n\r\n let removedCount = 0;\r\n\r\n // 1. Remove MAXSIM commands/skills\r\n if (isOpencode) {\r\n const commandDir = path.join(targetDir, 'command');\r\n if (fs.existsSync(commandDir)) {\r\n const files = fs.readdirSync(commandDir);\r\n for (const file of files) {\r\n if (file.startsWith('maxsim-') && file.endsWith('.md')) {\r\n fs.unlinkSync(path.join(commandDir, file));\r\n removedCount++;\r\n }\r\n }\r\n console.log(\r\n ` ${chalk.green('\\u2713')} Removed MAXSIM commands from command/`,\r\n );\r\n }\r\n } else if (isCodex) {\r\n const skillsDir = path.join(targetDir, 'skills');\r\n if (fs.existsSync(skillsDir)) {\r\n let skillCount = 0;\r\n const entries = fs.readdirSync(skillsDir, { withFileTypes: true });\r\n for (const entry of entries) {\r\n if (entry.isDirectory() && entry.name.startsWith('maxsim-')) {\r\n fs.rmSync(path.join(skillsDir, entry.name), { recursive: true });\r\n skillCount++;\r\n }\r\n }\r\n if (skillCount > 0) {\r\n removedCount++;\r\n console.log(\r\n ` ${chalk.green('\\u2713')} Removed ${skillCount} Codex skills`,\r\n );\r\n }\r\n }\r\n } else {\r\n const maxsimCommandsDir = path.join(targetDir, 'commands', 'maxsim');\r\n if (fs.existsSync(maxsimCommandsDir)) {\r\n fs.rmSync(maxsimCommandsDir, { recursive: true });\r\n removedCount++;\r\n console.log(` ${chalk.green('\\u2713')} Removed commands/maxsim/`);\r\n }\r\n }\r\n\r\n // 2. Remove maxsim directory\r\n const maxsimDir = path.join(targetDir, 'maxsim');\r\n if (fs.existsSync(maxsimDir)) {\r\n fs.rmSync(maxsimDir, { recursive: true });\r\n removedCount++;\r\n console.log(` ${chalk.green('\\u2713')} Removed maxsim/`);\r\n }\r\n\r\n // 3. Remove MAXSIM agents\r\n const agentsDir = path.join(targetDir, 'agents');\r\n if (fs.existsSync(agentsDir)) {\r\n const files = fs.readdirSync(agentsDir);\r\n let agentCount = 0;\r\n for (const file of files) {\r\n if (file.startsWith('maxsim-') && file.endsWith('.md')) {\r\n fs.unlinkSync(path.join(agentsDir, file));\r\n agentCount++;\r\n }\r\n }\r\n if (agentCount > 0) {\r\n removedCount++;\r\n console.log(\r\n ` ${chalk.green('\\u2713')} Removed ${agentCount} MAXSIM agents`,\r\n );\r\n }\r\n }\r\n\r\n // 4. Remove MAXSIM hooks\r\n const hooksDir = path.join(targetDir, 'hooks');\r\n if (fs.existsSync(hooksDir)) {\r\n const maxsimHooks = [\r\n 'maxsim-statusline.js',\r\n 'maxsim-check-update.js',\r\n 'maxsim-check-update.sh',\r\n 'maxsim-context-monitor.js',\r\n ];\r\n let hookCount = 0;\r\n for (const hook of maxsimHooks) {\r\n const hookPath = path.join(hooksDir, hook);\r\n if (fs.existsSync(hookPath)) {\r\n fs.unlinkSync(hookPath);\r\n hookCount++;\r\n }\r\n }\r\n if (hookCount > 0) {\r\n removedCount++;\r\n console.log(\r\n ` ${chalk.green('\\u2713')} Removed ${hookCount} MAXSIM hooks`,\r\n );\r\n }\r\n }\r\n\r\n // 5. Remove MAXSIM package.json (CommonJS mode marker)\r\n const pkgJsonPath = path.join(targetDir, 'package.json');\r\n if (fs.existsSync(pkgJsonPath)) {\r\n try {\r\n const content = fs.readFileSync(pkgJsonPath, 'utf8').trim();\r\n if (content === '{\"type\":\"commonjs\"}') {\r\n fs.unlinkSync(pkgJsonPath);\r\n removedCount++;\r\n console.log(\r\n ` ${chalk.green('\\u2713')} Removed MAXSIM package.json`,\r\n );\r\n }\r\n } catch {\r\n // Ignore read errors\r\n }\r\n }\r\n\r\n // 6. Clean up settings.json\r\n const settingsPath = path.join(targetDir, 'settings.json');\r\n if (fs.existsSync(settingsPath)) {\r\n const settings = readSettings(settingsPath);\r\n let settingsModified = false;\r\n\r\n interface StatusLine {\r\n command?: string;\r\n url?: string;\r\n }\r\n\r\n interface SettingsHookEntry {\r\n hooks?: Array<{ command?: string }>;\r\n }\r\n\r\n const statusLine = settings.statusLine as StatusLine | undefined;\r\n if (\r\n statusLine &&\r\n statusLine.command &&\r\n statusLine.command.includes('maxsim-statusline')\r\n ) {\r\n delete settings.statusLine;\r\n settingsModified = true;\r\n console.log(\r\n ` ${chalk.green('\\u2713')} Removed MAXSIM statusline from settings`,\r\n );\r\n }\r\n\r\n const settingsHooks = settings.hooks as\r\n | Record\r\n | undefined;\r\n if (settingsHooks && settingsHooks.SessionStart) {\r\n const before = settingsHooks.SessionStart.length;\r\n settingsHooks.SessionStart = settingsHooks.SessionStart.filter(\r\n (entry: SettingsHookEntry) => {\r\n if (entry.hooks && Array.isArray(entry.hooks)) {\r\n const hasMaxsimHook = entry.hooks.some(\r\n (h) =>\r\n h.command &&\r\n (h.command.includes('maxsim-check-update') ||\r\n h.command.includes('maxsim-statusline')),\r\n );\r\n return !hasMaxsimHook;\r\n }\r\n return true;\r\n },\r\n );\r\n if (settingsHooks.SessionStart.length < before) {\r\n settingsModified = true;\r\n console.log(\r\n ` ${chalk.green('\\u2713')} Removed MAXSIM hooks from settings`,\r\n );\r\n }\r\n if (settingsHooks.SessionStart.length === 0) {\r\n delete settingsHooks.SessionStart;\r\n }\r\n }\r\n\r\n if (settingsHooks && settingsHooks.PostToolUse) {\r\n const before = settingsHooks.PostToolUse.length;\r\n settingsHooks.PostToolUse = settingsHooks.PostToolUse.filter(\r\n (entry: SettingsHookEntry) => {\r\n if (entry.hooks && Array.isArray(entry.hooks)) {\r\n const hasMaxsimHook = entry.hooks.some(\r\n (h) =>\r\n h.command &&\r\n h.command.includes('maxsim-context-monitor'),\r\n );\r\n return !hasMaxsimHook;\r\n }\r\n return true;\r\n },\r\n );\r\n if (settingsHooks.PostToolUse.length < before) {\r\n settingsModified = true;\r\n console.log(\r\n ` ${chalk.green('\\u2713')} Removed context monitor hook from settings`,\r\n );\r\n }\r\n if (settingsHooks.PostToolUse.length === 0) {\r\n delete settingsHooks.PostToolUse;\r\n }\r\n }\r\n\r\n if (settingsHooks && Object.keys(settingsHooks).length === 0) {\r\n delete settings.hooks;\r\n }\r\n\r\n if (settingsModified) {\r\n writeSettings(settingsPath, settings);\r\n removedCount++;\r\n }\r\n }\r\n\r\n // 7. For OpenCode, clean up permissions from opencode.json\r\n if (isOpencode) {\r\n const opencodeConfigDir = isGlobal\r\n ? getOpencodeGlobalDir()\r\n : path.join(process.cwd(), '.opencode');\r\n const configPath = path.join(opencodeConfigDir, 'opencode.json');\r\n if (fs.existsSync(configPath)) {\r\n try {\r\n const config = JSON.parse(\r\n fs.readFileSync(configPath, 'utf8'),\r\n ) as Record;\r\n let modified = false;\r\n\r\n const permission = config.permission as\r\n | Record>\r\n | undefined;\r\n if (permission) {\r\n for (const permType of ['read', 'external_directory'] as const) {\r\n if (permission[permType]) {\r\n const keys = Object.keys(permission[permType]);\r\n for (const key of keys) {\r\n if (key.includes('maxsim')) {\r\n delete permission[permType][key];\r\n modified = true;\r\n }\r\n }\r\n if (Object.keys(permission[permType]).length === 0) {\r\n delete permission[permType];\r\n }\r\n }\r\n }\r\n if (Object.keys(permission).length === 0) {\r\n delete config.permission;\r\n }\r\n }\r\n\r\n if (modified) {\r\n fs.writeFileSync(\r\n configPath,\r\n JSON.stringify(config, null, 2) + '\\n',\r\n );\r\n removedCount++;\r\n console.log(\r\n ` ${chalk.green('\\u2713')} Removed MAXSIM permissions from opencode.json`,\r\n );\r\n }\r\n } catch {\r\n // Ignore JSON parse errors\r\n }\r\n }\r\n }\r\n\r\n if (removedCount === 0) {\r\n console.log(\r\n ` ${chalk.yellow('\\u26a0')} No MAXSIM files found to remove.`,\r\n );\r\n }\r\n\r\n console.log(`\r\n ${chalk.green('Done!')} MAXSIM has been uninstalled from ${runtimeLabel}.\r\n Your other files and settings have been preserved.\r\n`);\r\n}\r\n","import * as fs from 'node:fs';\r\nimport * as path from 'node:path';\r\nimport * as os from 'node:os';\r\nimport fsExtra from 'fs-extra';\r\n\r\nimport chalk from 'chalk';\r\nimport figlet from 'figlet';\r\nimport ora from 'ora';\r\nimport { select, checkbox, confirm } from '@inquirer/prompts';\r\nimport minimist from 'minimist';\r\n\r\nimport type { RuntimeName } from '../adapters/index.js';\r\nimport {\r\n processAttribution,\r\n convertClaudeToOpencodeFrontmatter,\r\n convertClaudeToGeminiAgent,\r\n convertClaudeToCodexMarkdown,\r\n} from '../adapters/index.js';\r\nimport {\r\n pkg,\r\n templatesRoot,\r\n getGlobalDir,\r\n getDirName,\r\n safeRmDir,\r\n copyDirRecursive,\r\n verifyInstalled,\r\n verifyFileInstalled,\r\n} from './shared.js';\r\nimport type { InstallResult } from './shared.js';\r\nimport { getCommitAttribution } from './adapters.js';\r\nimport { runDashboardSubcommand, applyFirewallRule } from './dashboard.js';\r\nimport {\r\n cleanupOrphanedFiles,\r\n installHookFiles,\r\n configureSettingsHooks,\r\n handleStatusline,\r\n finishInstall,\r\n} from './hooks.js';\r\nimport { writeManifest, MANIFEST_NAME } from './manifest.js';\r\nimport { saveLocalPatches, reportLocalPatches } from './patches.js';\r\nimport {\r\n copyFlattenedCommands,\r\n copyCommandsAsCodexSkills,\r\n copyWithPathReplacement,\r\n listCodexSkillNames,\r\n} from './copy.js';\r\nimport { uninstall } from './uninstall.js';\r\n\r\n// Parse args\r\nconst args = process.argv.slice(2);\r\nconst argv = minimist(args, {\r\n boolean: ['global', 'local', 'opencode', 'claude', 'gemini', 'codex', 'both', 'all', 'uninstall', 'help', 'version', 'force-statusline', 'network'],\r\n string: ['config-dir'],\r\n alias: { g: 'global', l: 'local', u: 'uninstall', h: 'help', c: 'config-dir' },\r\n});\r\nconst hasGlobal = !!argv['global'];\r\nconst hasLocal = !!argv['local'];\r\nconst hasOpencode = !!argv['opencode'];\r\nconst hasClaude = !!argv['claude'];\r\nconst hasGemini = !!argv['gemini'];\r\nconst hasCodex = !!argv['codex'];\r\nconst hasBoth = !!argv['both']; // Legacy flag, keeps working\r\nconst hasAll = !!argv['all'];\r\nconst hasUninstall = !!argv['uninstall'];\r\n\r\n// Runtime selection - can be set by flags or interactive prompt\r\nlet selectedRuntimes: RuntimeName[] = [];\r\nif (hasAll) {\r\n selectedRuntimes = ['claude', 'opencode', 'gemini', 'codex'];\r\n} else if (hasBoth) {\r\n selectedRuntimes = ['claude', 'opencode'];\r\n} else {\r\n if (hasOpencode) selectedRuntimes.push('opencode');\r\n if (hasClaude) selectedRuntimes.push('claude');\r\n if (hasGemini) selectedRuntimes.push('gemini');\r\n if (hasCodex) selectedRuntimes.push('codex');\r\n}\r\n\r\nconst banner =\r\n '\\n' +\r\n chalk.cyan(\r\n figlet.textSync('MAXSIM', { font: 'ANSI Shadow' })\r\n .split('\\n')\r\n .map((line) => ' ' + line)\r\n .join('\\n'),\r\n ) +\r\n '\\n' +\r\n '\\n' +\r\n ' MAXSIM ' +\r\n chalk.dim('v' + pkg.version) +\r\n '\\n' +\r\n ' A meta-prompting, context engineering and spec-driven\\n' +\r\n ' development system for Claude Code, OpenCode, Gemini, and Codex.\\n';\r\n\r\n// Parse --config-dir argument\r\nconst explicitConfigDir: string | null = argv['config-dir'] || null;\r\nconst hasHelp = !!argv['help'];\r\nconst hasVersion = !!argv['version'];\r\nconst forceStatusline = !!argv['force-statusline'];\r\n\r\n// Show version if requested (before banner for clean output)\r\nif (hasVersion) {\r\n console.log(pkg.version);\r\n process.exit(0);\r\n}\r\n\r\nconsole.log(banner);\r\n\r\n// Show help if requested\r\nif (hasHelp) {\r\n console.log(\r\n ` ${chalk.yellow('Usage:')} npx maxsimcli [options]\\n\\n ${chalk.yellow('Options:')}\\n ${chalk.cyan('-g, --global')} Install globally (to config directory)\\n ${chalk.cyan('-l, --local')} Install locally (to current directory)\\n ${chalk.cyan('--claude')} Install for Claude Code only\\n ${chalk.cyan('--opencode')} Install for OpenCode only\\n ${chalk.cyan('--gemini')} Install for Gemini only\\n ${chalk.cyan('--codex')} Install for Codex only\\n ${chalk.cyan('--all')} Install for all runtimes\\n ${chalk.cyan('-u, --uninstall')} Uninstall MAXSIM (remove all MAXSIM files)\\n ${chalk.cyan('-c, --config-dir ')} Specify custom config directory\\n ${chalk.cyan('-h, --help')} Show this help message\\n ${chalk.cyan('--force-statusline')} Replace existing statusline config\\n\\n ${chalk.yellow('Examples:')}\\n ${chalk.dim('# Interactive install (prompts for runtime and location)')}\\n npx maxsimcli\\n\\n ${chalk.dim('# Install for Claude Code globally')}\\n npx maxsimcli --claude --global\\n\\n ${chalk.dim('# Install for Gemini globally')}\\n npx maxsimcli --gemini --global\\n\\n ${chalk.dim('# Install for Codex globally')}\\n npx maxsimcli --codex --global\\n\\n ${chalk.dim('# Install for all runtimes globally')}\\n npx maxsimcli --all --global\\n\\n ${chalk.dim('# Install to custom config directory')}\\n npx maxsimcli --codex --global --config-dir ~/.codex-work\\n\\n ${chalk.dim('# Install to current project only')}\\n npx maxsimcli --claude --local\\n\\n ${chalk.dim('# Uninstall MAXSIM from Codex globally')}\\n npx maxsimcli --codex --global --uninstall\\n\\n ${chalk.yellow('Notes:')}\\n The --config-dir option is useful when you have multiple configurations.\\n It takes priority over CLAUDE_CONFIG_DIR / GEMINI_CONFIG_DIR / CODEX_HOME environment variables.\\n`,\r\n );\r\n process.exit(0);\r\n}\r\n\r\nasync function install(\r\n isGlobal: boolean,\r\n runtime: RuntimeName = 'claude',\r\n): Promise {\r\n const isOpencode = runtime === 'opencode';\r\n const isGemini = runtime === 'gemini';\r\n const isCodex = runtime === 'codex';\r\n const dirName = getDirName(runtime);\r\n const src = templatesRoot;\r\n\r\n const targetDir = isGlobal\r\n ? getGlobalDir(runtime, explicitConfigDir)\r\n : path.join(process.cwd(), dirName);\r\n\r\n const locationLabel = isGlobal\r\n ? targetDir.replace(os.homedir(), '~')\r\n : targetDir.replace(process.cwd(), '.');\r\n\r\n const pathPrefix = isGlobal\r\n ? `${targetDir.replace(/\\\\/g, '/')}/`\r\n : `./${dirName}/`;\r\n\r\n let runtimeLabel = 'Claude Code';\r\n if (isOpencode) runtimeLabel = 'OpenCode';\r\n if (isGemini) runtimeLabel = 'Gemini';\r\n if (isCodex) runtimeLabel = 'Codex';\r\n\r\n console.log(\r\n ` Installing for ${chalk.cyan(runtimeLabel)} to ${chalk.cyan(locationLabel)}\\n`,\r\n );\r\n\r\n const failures: string[] = [];\r\n\r\n // Save any locally modified MAXSIM files before they get wiped\r\n saveLocalPatches(targetDir);\r\n\r\n // Clean up orphaned files from previous versions\r\n cleanupOrphanedFiles(targetDir);\r\n\r\n // OpenCode uses command/ (flat), Codex uses skills/, Claude/Gemini use commands/maxsim/\r\n let spinner = ora({ text: 'Installing commands...', color: 'cyan' }).start();\r\n if (isOpencode) {\r\n const commandDir = path.join(targetDir, 'command');\r\n fs.mkdirSync(commandDir, { recursive: true });\r\n\r\n const maxsimSrc = path.join(src, 'commands', 'maxsim');\r\n copyFlattenedCommands(maxsimSrc, commandDir, 'maxsim', pathPrefix, runtime, explicitConfigDir);\r\n if (verifyInstalled(commandDir, 'command/maxsim-*')) {\r\n const count = fs\r\n .readdirSync(commandDir)\r\n .filter((f) => f.startsWith('maxsim-')).length;\r\n spinner.succeed(chalk.green('\\u2713') + ` Installed ${count} commands to command/`);\r\n } else {\r\n spinner.fail('Failed to install commands');\r\n failures.push('command/maxsim-*');\r\n }\r\n } else if (isCodex) {\r\n const skillsDir = path.join(targetDir, 'skills');\r\n const maxsimSrc = path.join(src, 'commands', 'maxsim');\r\n copyCommandsAsCodexSkills(maxsimSrc, skillsDir, 'maxsim', pathPrefix, runtime, explicitConfigDir);\r\n const installedSkillNames = listCodexSkillNames(skillsDir);\r\n if (installedSkillNames.length > 0) {\r\n spinner.succeed(chalk.green('\\u2713') + ` Installed ${installedSkillNames.length} skills to skills/`);\r\n } else {\r\n spinner.fail('Failed to install skills');\r\n failures.push('skills/maxsim-*');\r\n }\r\n } else {\r\n const commandsDir = path.join(targetDir, 'commands');\r\n fs.mkdirSync(commandsDir, { recursive: true });\r\n\r\n const maxsimSrc = path.join(src, 'commands', 'maxsim');\r\n const maxsimDest = path.join(commandsDir, 'maxsim');\r\n copyWithPathReplacement(maxsimSrc, maxsimDest, pathPrefix, runtime, explicitConfigDir, true);\r\n if (verifyInstalled(maxsimDest, 'commands/maxsim')) {\r\n spinner.succeed(chalk.green('\\u2713') + ' Installed commands/maxsim');\r\n } else {\r\n spinner.fail('Failed to install commands/maxsim');\r\n failures.push('commands/maxsim');\r\n }\r\n }\r\n\r\n // Copy maxsim directory content (workflows, templates, references) with path replacement\r\n spinner = ora({ text: 'Installing workflows and templates...', color: 'cyan' }).start();\r\n const skillDest = path.join(targetDir, 'maxsim');\r\n const maxsimSubdirs = ['workflows', 'templates', 'references'];\r\n if (fs.existsSync(skillDest)) {\r\n fs.rmSync(skillDest, { recursive: true });\r\n }\r\n fs.mkdirSync(skillDest, { recursive: true });\r\n for (const subdir of maxsimSubdirs) {\r\n const subdirSrc = path.join(src, subdir);\r\n if (fs.existsSync(subdirSrc)) {\r\n const subdirDest = path.join(skillDest, subdir);\r\n copyWithPathReplacement(subdirSrc, subdirDest, pathPrefix, runtime, explicitConfigDir);\r\n }\r\n }\r\n if (verifyInstalled(skillDest, 'maxsim')) {\r\n spinner.succeed(chalk.green('\\u2713') + ' Installed maxsim');\r\n } else {\r\n spinner.fail('Failed to install maxsim');\r\n failures.push('maxsim');\r\n }\r\n\r\n // Copy agents to agents directory\r\n const agentsSrc = path.join(src, 'agents');\r\n if (fs.existsSync(agentsSrc)) {\r\n spinner = ora({ text: 'Installing agents...', color: 'cyan' }).start();\r\n const agentsDest = path.join(targetDir, 'agents');\r\n fs.mkdirSync(agentsDest, { recursive: true });\r\n\r\n // Remove old MAXSIM agents before copying new ones\r\n if (fs.existsSync(agentsDest)) {\r\n for (const file of fs.readdirSync(agentsDest)) {\r\n if (file.startsWith('maxsim-') && file.endsWith('.md')) {\r\n fs.unlinkSync(path.join(agentsDest, file));\r\n }\r\n }\r\n }\r\n\r\n const agentEntries = fs.readdirSync(agentsSrc, { withFileTypes: true });\r\n for (const entry of agentEntries) {\r\n if (entry.isFile() && entry.name.endsWith('.md')) {\r\n let content = fs.readFileSync(\r\n path.join(agentsSrc, entry.name),\r\n 'utf8',\r\n );\r\n const dirRegex = /~\\/\\.claude\\//g;\r\n content = content.replace(dirRegex, pathPrefix);\r\n content = processAttribution(content, getCommitAttribution(runtime, explicitConfigDir));\r\n if (isOpencode) {\r\n content = convertClaudeToOpencodeFrontmatter(content);\r\n } else if (isGemini) {\r\n content = convertClaudeToGeminiAgent(content);\r\n } else if (isCodex) {\r\n content = convertClaudeToCodexMarkdown(content);\r\n }\r\n fs.writeFileSync(path.join(agentsDest, entry.name), content);\r\n }\r\n }\r\n if (verifyInstalled(agentsDest, 'agents')) {\r\n spinner.succeed(chalk.green('\\u2713') + ' Installed agents');\r\n } else {\r\n spinner.fail('Failed to install agents');\r\n failures.push('agents');\r\n }\r\n }\r\n\r\n // Copy skills to agents/skills/ directory\r\n const skillsSrc = path.join(src, 'skills');\r\n if (fs.existsSync(skillsSrc)) {\r\n spinner = ora({ text: 'Installing skills...', color: 'cyan' }).start();\r\n const skillsDest = path.join(targetDir, 'agents', 'skills');\r\n\r\n // Remove old MAXSIM built-in skills before copying new ones (preserve user custom skills)\r\n if (fs.existsSync(skillsDest)) {\r\n const builtInSkills = ['tdd', 'systematic-debugging', 'verification-before-completion'];\r\n for (const skill of builtInSkills) {\r\n const skillDir = path.join(skillsDest, skill);\r\n if (fs.existsSync(skillDir)) {\r\n fs.rmSync(skillDir, { recursive: true });\r\n }\r\n }\r\n }\r\n\r\n // Copy skills directory recursively\r\n fsExtra.copySync(skillsSrc, skillsDest, { overwrite: true });\r\n\r\n // Process path prefixes in skill files\r\n const skillEntries = fs.readdirSync(skillsDest, { withFileTypes: true });\r\n for (const entry of skillEntries) {\r\n if (entry.isDirectory()) {\r\n const skillMd = path.join(skillsDest, entry.name, 'SKILL.md');\r\n if (fs.existsSync(skillMd)) {\r\n let content = fs.readFileSync(skillMd, 'utf8');\r\n const dirRegex = /~\\/\\.claude\\//g;\r\n content = content.replace(dirRegex, pathPrefix);\r\n content = processAttribution(content, getCommitAttribution(runtime, explicitConfigDir));\r\n fs.writeFileSync(skillMd, content);\r\n }\r\n }\r\n }\r\n\r\n const installedSkillDirs = fs.readdirSync(skillsDest, { withFileTypes: true })\r\n .filter(e => e.isDirectory()).length;\r\n if (installedSkillDirs > 0) {\r\n spinner.succeed(chalk.green('\\u2713') + ` Installed ${installedSkillDirs} skills to agents/skills/`);\r\n } else {\r\n spinner.fail('Failed to install skills');\r\n failures.push('agents/skills');\r\n }\r\n }\r\n\r\n // Copy CHANGELOG.md\r\n const changelogSrc = path.join(src, '..', 'CHANGELOG.md');\r\n const changelogDest = path.join(targetDir, 'maxsim', 'CHANGELOG.md');\r\n if (fs.existsSync(changelogSrc)) {\r\n spinner = ora({ text: 'Installing CHANGELOG.md...', color: 'cyan' }).start();\r\n fs.copyFileSync(changelogSrc, changelogDest);\r\n if (verifyFileInstalled(changelogDest, 'CHANGELOG.md')) {\r\n spinner.succeed(chalk.green('\\u2713') + ' Installed CHANGELOG.md');\r\n } else {\r\n spinner.fail('Failed to install CHANGELOG.md');\r\n failures.push('CHANGELOG.md');\r\n }\r\n }\r\n\r\n // Copy CLAUDE.md\r\n const claudeMdSrc = path.join(src, 'CLAUDE.md');\r\n const claudeMdDest = path.join(targetDir, 'CLAUDE.md');\r\n if (fs.existsSync(claudeMdSrc)) {\r\n spinner = ora({ text: 'Installing CLAUDE.md...', color: 'cyan' }).start();\r\n fs.copyFileSync(claudeMdSrc, claudeMdDest);\r\n if (verifyFileInstalled(claudeMdDest, 'CLAUDE.md')) {\r\n spinner.succeed(chalk.green('\\u2713') + ' Installed CLAUDE.md');\r\n } else {\r\n spinner.fail('Failed to install CLAUDE.md');\r\n failures.push('CLAUDE.md');\r\n }\r\n }\r\n\r\n // Write VERSION file\r\n const versionDest = path.join(targetDir, 'maxsim', 'VERSION');\r\n fs.writeFileSync(versionDest, pkg.version);\r\n if (verifyFileInstalled(versionDest, 'VERSION')) {\r\n console.log(\r\n ` ${chalk.green('\\u2713')} Wrote VERSION (${pkg.version})`,\r\n );\r\n } else {\r\n failures.push('VERSION');\r\n }\r\n\r\n if (!isCodex) {\r\n // Write package.json to force CommonJS mode for MAXSIM scripts\r\n const pkgJsonDest = path.join(targetDir, 'package.json');\r\n fs.writeFileSync(pkgJsonDest, '{\"type\":\"commonjs\"}\\n');\r\n console.log(\r\n ` ${chalk.green('\\u2713')} Wrote package.json (CommonJS mode)`,\r\n );\r\n\r\n // Install maxsim-tools.cjs binary\r\n const toolSrc = path.resolve(__dirname, 'cli.cjs');\r\n const binDir = path.join(targetDir, 'maxsim', 'bin');\r\n const toolDest = path.join(binDir, 'maxsim-tools.cjs');\r\n if (fs.existsSync(toolSrc)) {\r\n fs.mkdirSync(binDir, { recursive: true });\r\n fs.copyFileSync(toolSrc, toolDest);\r\n console.log(` ${chalk.green('\\u2713')} Installed maxsim-tools.cjs`);\r\n } else {\r\n console.warn(` ${chalk.yellow('!')} cli.cjs not found at ${toolSrc} — maxsim-tools.cjs not installed`);\r\n failures.push('maxsim-tools.cjs');\r\n }\r\n\r\n // Install mcp-server.cjs\r\n const mcpSrc = path.resolve(__dirname, 'mcp-server.cjs');\r\n const mcpDest = path.join(binDir, 'mcp-server.cjs');\r\n if (fs.existsSync(mcpSrc)) {\r\n fs.mkdirSync(binDir, { recursive: true });\r\n fs.copyFileSync(mcpSrc, mcpDest);\r\n console.log(` ${chalk.green('\\u2713')} Installed mcp-server.cjs`);\r\n } else {\r\n console.warn(` ${chalk.yellow('!')} mcp-server.cjs not found — MCP server not installed`);\r\n }\r\n\r\n // Install hooks\r\n installHookFiles(targetDir, runtime, isGlobal, failures);\r\n }\r\n\r\n // Copy dashboard\r\n const dashboardSrc = path.resolve(__dirname, 'assets', 'dashboard');\r\n if (fs.existsSync(dashboardSrc)) {\r\n let networkMode = false;\r\n try {\r\n networkMode = await confirm({\r\n message: 'Allow dashboard to be accessible on your local network? (adds firewall rule, enables QR code)',\r\n default: false,\r\n });\r\n } catch {\r\n // Non-interactive terminal — default to false\r\n }\r\n\r\n spinner = ora({ text: 'Installing dashboard...', color: 'cyan' }).start();\r\n const dashboardDest = path.join(targetDir, 'dashboard');\r\n safeRmDir(dashboardDest);\r\n copyDirRecursive(dashboardSrc, dashboardDest);\r\n\r\n const dashboardConfigDest = path.join(targetDir, 'dashboard.json');\r\n const projectCwd = isGlobal ? targetDir : process.cwd();\r\n fs.writeFileSync(dashboardConfigDest, JSON.stringify({ projectCwd, networkMode }, null, 2) + '\\n');\r\n\r\n if (fs.existsSync(path.join(dashboardDest, 'server.js'))) {\r\n spinner.succeed(chalk.green('\\u2713') + ' Installed dashboard');\r\n } else {\r\n spinner.succeed(chalk.green('\\u2713') + ' Installed dashboard (server.js not found in bundle)');\r\n }\r\n\r\n if (networkMode) {\r\n applyFirewallRule(3333);\r\n }\r\n }\r\n\r\n // Write .mcp.json for Claude Code MCP server auto-discovery\r\n if (!isOpencode && !isCodex && !isGemini) {\r\n const mcpJsonPath = isGlobal\r\n ? path.join(targetDir, '..', '.mcp.json')\r\n : path.join(process.cwd(), '.mcp.json');\r\n let mcpConfig: Record = {};\r\n\r\n if (fs.existsSync(mcpJsonPath)) {\r\n try {\r\n mcpConfig = JSON.parse(fs.readFileSync(mcpJsonPath, 'utf-8'));\r\n } catch {\r\n // Corrupted file — start fresh\r\n }\r\n }\r\n\r\n const mcpServers = (mcpConfig.mcpServers as Record) ?? {};\r\n mcpServers['maxsim'] = {\r\n command: 'node',\r\n args: ['.claude/maxsim/bin/mcp-server.cjs'],\r\n env: {},\r\n };\r\n mcpConfig.mcpServers = mcpServers;\r\n\r\n fs.writeFileSync(mcpJsonPath, JSON.stringify(mcpConfig, null, 2) + '\\n', 'utf-8');\r\n console.log(` ${chalk.green('\\u2713')} Configured .mcp.json for MCP server auto-discovery`);\r\n }\r\n\r\n if (failures.length > 0) {\r\n console.error(\r\n `\\n ${chalk.yellow('Installation incomplete!')} Failed: ${failures.join(', ')}`,\r\n );\r\n process.exit(1);\r\n }\r\n\r\n // Write file manifest for future modification detection\r\n writeManifest(targetDir, runtime);\r\n console.log(\r\n ` ${chalk.green('\\u2713')} Wrote file manifest (${MANIFEST_NAME})`,\r\n );\r\n\r\n // Report any backed-up local patches\r\n reportLocalPatches(targetDir, runtime);\r\n\r\n if (isCodex) {\r\n return {\r\n settingsPath: null,\r\n settings: null,\r\n statuslineCommand: null,\r\n runtime,\r\n };\r\n }\r\n\r\n // Configure statusline and hooks in settings.json\r\n const { settingsPath, settings, statuslineCommand } = configureSettingsHooks(targetDir, runtime, isGlobal);\r\n\r\n // Enable experimental agents for Gemini CLI\r\n if (isGemini) {\r\n if (!settings.experimental) {\r\n settings.experimental = {};\r\n }\r\n const experimental = settings.experimental as Record;\r\n if (!experimental.enableAgents) {\r\n experimental.enableAgents = true;\r\n console.log(\r\n ` ${chalk.green('\\u2713')} Enabled experimental agents`,\r\n );\r\n }\r\n }\r\n\r\n return { settingsPath, settings, statuslineCommand, runtime };\r\n}\r\n\r\n/**\r\n * Prompt for runtime selection (multi-select)\r\n */\r\nasync function promptRuntime(): Promise {\r\n const selected = await checkbox({\r\n message: 'Which runtime(s) would you like to install for?',\r\n choices: [\r\n { name: 'Claude Code ' + chalk.dim('(~/.claude)'), value: 'claude', checked: true },\r\n { name: 'OpenCode ' + chalk.dim('(~/.config/opencode)') + ' — open source, free models', value: 'opencode' },\r\n { name: 'Gemini ' + chalk.dim('(~/.gemini)'), value: 'gemini' },\r\n { name: 'Codex ' + chalk.dim('(~/.codex)'), value: 'codex' },\r\n ],\r\n validate: (choices) => choices.length > 0 || 'Please select at least one runtime',\r\n });\r\n return selected;\r\n}\r\n\r\n/**\r\n * Prompt for install location\r\n */\r\nasync function promptLocation(runtimes: RuntimeName[]): Promise {\r\n if (!process.stdin.isTTY) {\r\n console.log(\r\n chalk.yellow('Non-interactive terminal detected, defaulting to global install') + '\\n',\r\n );\r\n return true; // isGlobal\r\n }\r\n\r\n const pathExamples = runtimes\r\n .map((r) => getGlobalDir(r, explicitConfigDir).replace(os.homedir(), '~'))\r\n .join(', ');\r\n\r\n const localExamples = runtimes.map((r) => `./${getDirName(r)}`).join(', ');\r\n\r\n const choice = await select<'global' | 'local'>({\r\n message: 'Where would you like to install?',\r\n choices: [\r\n {\r\n name: 'Global ' + chalk.dim(`(${pathExamples})`) + ' — available in all projects',\r\n value: 'global',\r\n },\r\n {\r\n name: 'Local ' + chalk.dim(`(${localExamples})`) + ' — this project only',\r\n value: 'local',\r\n },\r\n ],\r\n });\r\n\r\n return choice === 'global';\r\n}\r\n\r\n/**\r\n * Prompt whether to enable Agent Teams (Claude only, experimental feature)\r\n */\r\nasync function promptAgentTeams(): Promise {\r\n console.log();\r\n console.log(chalk.cyan(' Agent Teams') + chalk.dim(' (experimental)'));\r\n console.log(chalk.dim(' Coordinate multiple Claude Code instances working in parallel.'));\r\n console.log(chalk.dim(' Enables CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS in settings.json.'));\r\n console.log();\r\n\r\n return confirm({\r\n message: 'Enable Agent Teams?',\r\n default: false,\r\n });\r\n}\r\n\r\n/**\r\n * Install MAXSIM for all selected runtimes\r\n */\r\nasync function installAllRuntimes(\r\n runtimes: RuntimeName[],\r\n isGlobal: boolean,\r\n isInteractive: boolean,\r\n): Promise {\r\n const results: InstallResult[] = [];\r\n\r\n for (const runtime of runtimes) {\r\n const result = await install(isGlobal, runtime);\r\n results.push(result);\r\n }\r\n\r\n const statuslineRuntimes: RuntimeName[] = ['claude', 'gemini'];\r\n const primaryStatuslineResult = results.find((r) =>\r\n statuslineRuntimes.includes(r.runtime),\r\n );\r\n\r\n let shouldInstallStatusline = false;\r\n if (primaryStatuslineResult && primaryStatuslineResult.settings) {\r\n shouldInstallStatusline = await handleStatusline(\r\n primaryStatuslineResult.settings,\r\n isInteractive,\r\n forceStatusline,\r\n );\r\n }\r\n\r\n // Prompt for Agent Teams if Claude is in the selected runtimes\r\n let enableAgentTeams = false;\r\n if (isInteractive && runtimes.includes('claude')) {\r\n enableAgentTeams = await promptAgentTeams();\r\n }\r\n\r\n for (const result of results) {\r\n const useStatusline =\r\n statuslineRuntimes.includes(result.runtime) && shouldInstallStatusline;\r\n\r\n // Apply Agent Teams setting for Claude\r\n if (result.runtime === 'claude' && enableAgentTeams && result.settings) {\r\n const env = (result.settings.env as Record) ?? {};\r\n env['CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS'] = '1';\r\n result.settings.env = env;\r\n }\r\n\r\n finishInstall(\r\n result.settingsPath,\r\n result.settings,\r\n result.statuslineCommand,\r\n useStatusline,\r\n result.runtime,\r\n isGlobal,\r\n );\r\n }\r\n}\r\n\r\n// Main logic\r\n// Subcommand routing — intercept before install flow\r\nconst subcommand = argv._[0];\r\n\r\n(async () => {\r\n // Dashboard subcommand\r\n if (subcommand === 'dashboard') {\r\n await runDashboardSubcommand(argv);\r\n return;\r\n }\r\n\r\n if (hasGlobal && hasLocal) {\r\n console.error(chalk.yellow('Cannot specify both --global and --local'));\r\n process.exit(1);\r\n } else if (explicitConfigDir && hasLocal) {\r\n console.error(chalk.yellow('Cannot use --config-dir with --local'));\r\n process.exit(1);\r\n } else if (hasUninstall) {\r\n if (!hasGlobal && !hasLocal) {\r\n console.error(chalk.yellow('--uninstall requires --global or --local'));\r\n process.exit(1);\r\n }\r\n const runtimes: RuntimeName[] =\r\n selectedRuntimes.length > 0 ? selectedRuntimes : ['claude'];\r\n for (const runtime of runtimes) {\r\n uninstall(hasGlobal, runtime, explicitConfigDir);\r\n }\r\n } else if (selectedRuntimes.length > 0) {\r\n if (!hasGlobal && !hasLocal) {\r\n const isGlobal = await promptLocation(selectedRuntimes);\r\n await installAllRuntimes(selectedRuntimes, isGlobal, true);\r\n } else {\r\n await installAllRuntimes(selectedRuntimes, hasGlobal, false);\r\n }\r\n } else if (hasGlobal || hasLocal) {\r\n await installAllRuntimes(['claude'], hasGlobal, false);\r\n } else {\r\n if (!process.stdin.isTTY) {\r\n console.log(\r\n chalk.yellow('Non-interactive terminal detected, defaulting to Claude Code global install') + '\\n',\r\n );\r\n await installAllRuntimes(['claude'], true, false);\r\n } else {\r\n const runtimes = await promptRuntime();\r\n const isGlobal = await promptLocation(runtimes);\r\n await installAllRuntimes(runtimes, isGlobal, true);\r\n }\r\n }\r\n})().catch((err: unknown) => {\r\n if (err instanceof Error && err.message.includes('User force closed')) {\r\n // User pressed Ctrl+C during an @inquirer/prompts prompt — exit cleanly\r\n console.log('\\n' + chalk.yellow('Installation cancelled') + '\\n');\r\n process.exit(0);\r\n }\r\n console.error(chalk.red('Unexpected error:'), err);\r\n process.exit(1);\r\n});\r\n"],"x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,SAAQ,eAAe,SAAU,IAAI;AACnC,SAAO,OAAO,eAAe,SAAU,GAAG,MAAM;AAC9C,OAAI,OAAO,KAAK,KAAK,SAAS,OAAO,WAAY,IAAG,MAAM,MAAM,KAAK;OAEnE,QAAO,IAAI,SAAS,SAAS,WAAW;AACtC,SAAK,MAAM,KAAK,QAAS,OAAO,OAAQ,OAAO,IAAI,GAAG,QAAQ,IAAI,CAAC;AACnE,OAAG,MAAM,MAAM,KAAK;KACpB;KAEH,QAAQ,EAAE,OAAO,GAAG,MAAM,CAAC;;AAGhC,SAAQ,cAAc,SAAU,IAAI;AAClC,SAAO,OAAO,eAAe,SAAU,GAAG,MAAM;GAC9C,MAAM,KAAK,KAAK,KAAK,SAAS;AAC9B,OAAI,OAAO,OAAO,WAAY,QAAO,GAAG,MAAM,MAAM,KAAK;QACpD;AACH,SAAK,KAAK;AACV,OAAG,MAAM,MAAM,KAAK,CAAC,MAAK,MAAK,GAAG,MAAM,EAAE,EAAE,GAAG;;KAEhD,QAAQ,EAAE,OAAO,GAAG,MAAM,CAAC;;;;;;;CCtBhC,IAAI,YAAY,QAAQ,YAAY;CAEpC,IAAI,UAAU,QAAQ;CACtB,IAAI,MAAM;CAEV,IAAI,WAAW,QAAQ,IAAI,wBAAwB,QAAQ;AAE3D,SAAQ,MAAM,WAAW;AACvB,MAAI,CAAC,IACH,OAAM,QAAQ,KAAK,QAAQ;AAC7B,SAAO;;AAET,KAAI;AACF,UAAQ,KAAK;UACN,IAAI;AAGb,KAAI,OAAO,QAAQ,UAAU,YAAY;EACvC,IAAI,QAAQ,QAAQ;AACpB,UAAQ,QAAQ,SAAU,GAAG;AAC3B,SAAM;AACN,SAAM,KAAK,SAAS,EAAE;;AAExB,MAAI,OAAO,eAAgB,QAAO,eAAe,QAAQ,OAAO,MAAM;;AAGxE,QAAO,UAAU;CAEjB,SAAS,MAAO,IAAI;AAKlB,MAAI,UAAU,eAAe,YAAY,IACrC,QAAQ,QAAQ,MAAM,yBAAyB,CACjD,aAAY,GAAG;AAIjB,MAAI,CAAC,GAAG,QACN,cAAa,GAAG;AAQlB,KAAG,QAAQ,SAAS,GAAG,MAAM;AAC7B,KAAG,SAAS,SAAS,GAAG,OAAO;AAC/B,KAAG,SAAS,SAAS,GAAG,OAAO;AAE/B,KAAG,QAAQ,SAAS,GAAG,MAAM;AAC7B,KAAG,SAAS,SAAS,GAAG,OAAO;AAC/B,KAAG,SAAS,SAAS,GAAG,OAAO;AAE/B,KAAG,YAAY,aAAa,GAAG,UAAU;AACzC,KAAG,aAAa,aAAa,GAAG,WAAW;AAC3C,KAAG,aAAa,aAAa,GAAG,WAAW;AAE3C,KAAG,YAAY,aAAa,GAAG,UAAU;AACzC,KAAG,aAAa,aAAa,GAAG,WAAW;AAC3C,KAAG,aAAa,aAAa,GAAG,WAAW;AAE3C,KAAG,OAAO,QAAQ,GAAG,KAAK;AAC1B,KAAG,QAAQ,QAAQ,GAAG,MAAM;AAC5B,KAAG,QAAQ,QAAQ,GAAG,MAAM;AAE5B,KAAG,WAAW,YAAY,GAAG,SAAS;AACtC,KAAG,YAAY,YAAY,GAAG,UAAU;AACxC,KAAG,YAAY,YAAY,GAAG,UAAU;AAGxC,MAAI,GAAG,SAAS,CAAC,GAAG,QAAQ;AAC1B,MAAG,SAAS,SAAU,MAAM,MAAM,IAAI;AACpC,QAAI,GAAI,SAAQ,SAAS,GAAG;;AAE9B,MAAG,aAAa,WAAY;;AAE9B,MAAI,GAAG,SAAS,CAAC,GAAG,QAAQ;AAC1B,MAAG,SAAS,SAAU,MAAM,KAAK,KAAK,IAAI;AACxC,QAAI,GAAI,SAAQ,SAAS,GAAG;;AAE9B,MAAG,aAAa,WAAY;;AAY9B,MAAI,aAAa,QACf,IAAG,SAAS,OAAO,GAAG,WAAW,aAAa,GAAG,UAC9C,SAAU,WAAW;GACtB,SAAS,OAAQ,MAAM,IAAI,IAAI;IAC7B,IAAI,QAAQ,KAAK,KAAK;IACtB,IAAI,UAAU;AACd,cAAU,MAAM,IAAI,SAAS,GAAI,IAAI;AACnC,SAAI,OACI,GAAG,SAAS,YAAY,GAAG,SAAS,WAAW,GAAG,SAAS,YAC5D,KAAK,KAAK,GAAG,QAAQ,KAAO;AACjC,iBAAW,WAAW;AACpB,UAAG,KAAK,IAAI,SAAU,QAAQ,IAAI;AAChC,YAAI,UAAU,OAAO,SAAS,SAC5B,WAAU,MAAM,IAAI,GAAG;YAEvB,IAAG,GAAG;SACR;SACD,QAAQ;AACX,UAAI,UAAU,IACZ,YAAW;AACb;;AAEF,SAAI,GAAI,IAAG,GAAG;MACd;;AAEJ,OAAI,OAAO,eAAgB,QAAO,eAAe,QAAQ,UAAU;AACnE,UAAO;KACN,GAAG,OAAO;AAIf,KAAG,OAAO,OAAO,GAAG,SAAS,aAAa,GAAG,QAC1C,SAAU,SAAS;GACpB,SAAS,KAAM,IAAI,QAAQ,QAAQ,QAAQ,UAAU,WAAW;IAC9D,IAAI;AACJ,QAAI,aAAa,OAAO,cAAc,YAAY;KAChD,IAAI,aAAa;AACjB,gBAAW,SAAU,IAAI,GAAG,IAAI;AAC9B,UAAI,MAAM,GAAG,SAAS,YAAY,aAAa,IAAI;AACjD;AACA,cAAO,QAAQ,KAAK,IAAI,IAAI,QAAQ,QAAQ,QAAQ,UAAU,SAAS;;AAEzE,gBAAU,MAAM,MAAM,UAAU;;;AAGpC,WAAO,QAAQ,KAAK,IAAI,IAAI,QAAQ,QAAQ,QAAQ,UAAU,SAAS;;AAIzE,OAAI,OAAO,eAAgB,QAAO,eAAe,MAAM,QAAQ;AAC/D,UAAO;KACN,GAAG,KAAK;AAEX,KAAG,WAAW,OAAO,GAAG,aAAa,aAAa,GAAG,YAClD,SAAU,aAAa;AAAE,UAAO,SAAU,IAAI,QAAQ,QAAQ,QAAQ,UAAU;IACjF,IAAI,aAAa;AACjB,WAAO,KACL,KAAI;AACF,YAAO,YAAY,KAAK,IAAI,IAAI,QAAQ,QAAQ,QAAQ,SAAS;aAC1D,IAAI;AACX,SAAI,GAAG,SAAS,YAAY,aAAa,IAAI;AAC3C;AACA;;AAEF,WAAM;;;KAGR,GAAG,SAAS;EAEhB,SAAS,YAAa,IAAI;AACxB,MAAG,SAAS,SAAU,MAAM,MAAM,UAAU;AAC1C,OAAG,KAAM,MACA,UAAU,WAAW,UAAU,WAC/B,MACA,SAAU,KAAK,IAAI;AAC1B,SAAI,KAAK;AACP,UAAI,SAAU,UAAS,IAAI;AAC3B;;AAIF,QAAG,OAAO,IAAI,MAAM,SAAU,KAAK;AACjC,SAAG,MAAM,IAAI,SAAS,MAAM;AAC1B,WAAI,SAAU,UAAS,OAAO,KAAK;QACnC;OACF;MACF;;AAGJ,MAAG,aAAa,SAAU,MAAM,MAAM;IACpC,IAAI,KAAK,GAAG,SAAS,MAAM,UAAU,WAAW,UAAU,WAAW,KAAK;IAI1E,IAAI,QAAQ;IACZ,IAAI;AACJ,QAAI;AACF,WAAM,GAAG,WAAW,IAAI,KAAK;AAC7B,aAAQ;cACA;AACR,SAAI,MACF,KAAI;AACF,SAAG,UAAU,GAAG;cACT,IAAI;SAEb,IAAG,UAAU,GAAG;;AAGpB,WAAO;;;EAIX,SAAS,aAAc,IAAI;AACzB,OAAI,UAAU,eAAe,YAAY,IAAI,GAAG,SAAS;AACvD,OAAG,UAAU,SAAU,MAAM,IAAI,IAAI,IAAI;AACvC,QAAG,KAAK,MAAM,UAAU,WAAW,SAAU,IAAI,IAAI;AACnD,UAAI,IAAI;AACN,WAAI,GAAI,IAAG,GAAG;AACd;;AAEF,SAAG,QAAQ,IAAI,IAAI,IAAI,SAAU,IAAI;AACnC,UAAG,MAAM,IAAI,SAAU,KAAK;AAC1B,YAAI,GAAI,IAAG,MAAM,IAAI;SACrB;QACF;OACF;;AAGJ,OAAG,cAAc,SAAU,MAAM,IAAI,IAAI;KACvC,IAAI,KAAK,GAAG,SAAS,MAAM,UAAU,UAAU;KAC/C,IAAI;KACJ,IAAI,QAAQ;AACZ,SAAI;AACF,YAAM,GAAG,YAAY,IAAI,IAAI,GAAG;AAChC,cAAQ;eACA;AACR,UAAI,MACF,KAAI;AACF,UAAG,UAAU,GAAG;eACT,IAAI;UAEb,IAAG,UAAU,GAAG;;AAGpB,YAAO;;cAGA,GAAG,SAAS;AACrB,OAAG,UAAU,SAAU,IAAI,IAAI,IAAI,IAAI;AAAE,SAAI,GAAI,SAAQ,SAAS,GAAG;;AACrE,OAAG,cAAc,WAAY;;;EAIjC,SAAS,SAAU,MAAM;AACvB,OAAI,CAAC,KAAM,QAAO;AAClB,UAAO,SAAU,QAAQ,MAAM,IAAI;AACjC,WAAO,KAAK,KAAK,IAAI,QAAQ,MAAM,SAAU,IAAI;AAC/C,SAAI,UAAU,GAAG,CAAE,MAAK;AACxB,SAAI,GAAI,IAAG,MAAM,MAAM,UAAU;MACjC;;;EAIN,SAAS,aAAc,MAAM;AAC3B,OAAI,CAAC,KAAM,QAAO;AAClB,UAAO,SAAU,QAAQ,MAAM;AAC7B,QAAI;AACF,YAAO,KAAK,KAAK,IAAI,QAAQ,KAAK;aAC3B,IAAI;AACX,SAAI,CAAC,UAAU,GAAG,CAAE,OAAM;;;;EAMhC,SAAS,SAAU,MAAM;AACvB,OAAI,CAAC,KAAM,QAAO;AAClB,UAAO,SAAU,QAAQ,KAAK,KAAK,IAAI;AACrC,WAAO,KAAK,KAAK,IAAI,QAAQ,KAAK,KAAK,SAAU,IAAI;AACnD,SAAI,UAAU,GAAG,CAAE,MAAK;AACxB,SAAI,GAAI,IAAG,MAAM,MAAM,UAAU;MACjC;;;EAIN,SAAS,aAAc,MAAM;AAC3B,OAAI,CAAC,KAAM,QAAO;AAClB,UAAO,SAAU,QAAQ,KAAK,KAAK;AACjC,QAAI;AACF,YAAO,KAAK,KAAK,IAAI,QAAQ,KAAK,IAAI;aAC/B,IAAI;AACX,SAAI,CAAC,UAAU,GAAG,CAAE,OAAM;;;;EAKhC,SAAS,QAAS,MAAM;AACtB,OAAI,CAAC,KAAM,QAAO;AAGlB,UAAO,SAAU,QAAQ,SAAS,IAAI;AACpC,QAAI,OAAO,YAAY,YAAY;AACjC,UAAK;AACL,eAAU;;IAEZ,SAAS,SAAU,IAAI,OAAO;AAC5B,SAAI,OAAO;AACT,UAAI,MAAM,MAAM,EAAG,OAAM,OAAO;AAChC,UAAI,MAAM,MAAM,EAAG,OAAM,OAAO;;AAElC,SAAI,GAAI,IAAG,MAAM,MAAM,UAAU;;AAEnC,WAAO,UAAU,KAAK,KAAK,IAAI,QAAQ,SAAS,SAAS,GACrD,KAAK,KAAK,IAAI,QAAQ,SAAS;;;EAIvC,SAAS,YAAa,MAAM;AAC1B,OAAI,CAAC,KAAM,QAAO;AAGlB,UAAO,SAAU,QAAQ,SAAS;IAChC,IAAI,QAAQ,UAAU,KAAK,KAAK,IAAI,QAAQ,QAAQ,GAChD,KAAK,KAAK,IAAI,OAAO;AACzB,QAAI,OAAO;AACT,SAAI,MAAM,MAAM,EAAG,OAAM,OAAO;AAChC,SAAI,MAAM,MAAM,EAAG,OAAM,OAAO;;AAElC,WAAO;;;EAgBX,SAAS,UAAW,IAAI;AACtB,OAAI,CAAC,GACH,QAAO;AAET,OAAI,GAAG,SAAS,SACd,QAAO;AAGT,OADc,CAAC,QAAQ,UAAU,QAAQ,QAAQ,KAAK,GAEpD;QAAI,GAAG,SAAS,YAAY,GAAG,SAAS,QACtC,QAAO;;AAGX,UAAO;;;;;;;;CChWX,IAAIA,WAAS,QAAQ,SAAS,CAAC;AAE/B,QAAO,UAAU;CAEjB,SAAS,OAAQ,IAAI;AACnB,SAAO;GACO;GACC;GACd;EAED,SAAS,WAAY,MAAM,SAAS;AAClC,OAAI,EAAE,gBAAgB,YAAa,QAAO,IAAI,WAAW,MAAM,QAAQ;AAEvE,YAAO,KAAK,KAAK;GAEjB,IAAI,OAAO;AAEX,QAAK,OAAO;AACZ,QAAK,KAAK;AACV,QAAK,WAAW;AAChB,QAAK,SAAS;AAEd,QAAK,QAAQ;AACb,QAAK,OAAO;AACZ,QAAK,aAAa,KAAK;AAEvB,aAAU,WAAW,EAAE;GAGvB,IAAI,OAAO,OAAO,KAAK,QAAQ;AAC/B,QAAK,IAAI,QAAQ,GAAG,SAAS,KAAK,QAAQ,QAAQ,QAAQ,SAAS;IACjE,IAAI,MAAM,KAAK;AACf,SAAK,OAAO,QAAQ;;AAGtB,OAAI,KAAK,SAAU,MAAK,YAAY,KAAK,SAAS;AAElD,OAAI,KAAK,UAAU,QAAW;AAC5B,QAAI,aAAa,OAAO,KAAK,MAC3B,OAAM,UAAU,yBAAyB;AAE3C,QAAI,KAAK,QAAQ,OACf,MAAK,MAAM;aACF,aAAa,OAAO,KAAK,IAClC,OAAM,UAAU,uBAAuB;AAGzC,QAAI,KAAK,QAAQ,KAAK,IACpB,OAAM,IAAI,MAAM,uBAAuB;AAGzC,SAAK,MAAM,KAAK;;AAGlB,OAAI,KAAK,OAAO,MAAM;AACpB,YAAQ,SAAS,WAAW;AAC1B,UAAK,OAAO;MACZ;AACF;;AAGF,MAAG,KAAK,KAAK,MAAM,KAAK,OAAO,KAAK,MAAM,SAAU,KAAK,IAAI;AAC3D,QAAI,KAAK;AACP,UAAK,KAAK,SAAS,IAAI;AACvB,UAAK,WAAW;AAChB;;AAGF,SAAK,KAAK;AACV,SAAK,KAAK,QAAQ,GAAG;AACrB,SAAK,OAAO;KACZ;;EAGJ,SAAS,YAAa,MAAM,SAAS;AACnC,OAAI,EAAE,gBAAgB,aAAc,QAAO,IAAI,YAAY,MAAM,QAAQ;AAEzE,YAAO,KAAK,KAAK;AAEjB,QAAK,OAAO;AACZ,QAAK,KAAK;AACV,QAAK,WAAW;AAEhB,QAAK,QAAQ;AACb,QAAK,WAAW;AAChB,QAAK,OAAO;AACZ,QAAK,eAAe;AAEpB,aAAU,WAAW,EAAE;GAGvB,IAAI,OAAO,OAAO,KAAK,QAAQ;AAC/B,QAAK,IAAI,QAAQ,GAAG,SAAS,KAAK,QAAQ,QAAQ,QAAQ,SAAS;IACjE,IAAI,MAAM,KAAK;AACf,SAAK,OAAO,QAAQ;;AAGtB,OAAI,KAAK,UAAU,QAAW;AAC5B,QAAI,aAAa,OAAO,KAAK,MAC3B,OAAM,UAAU,yBAAyB;AAE3C,QAAI,KAAK,QAAQ,EACf,OAAM,IAAI,MAAM,wBAAwB;AAG1C,SAAK,MAAM,KAAK;;AAGlB,QAAK,OAAO;AACZ,QAAK,SAAS,EAAE;AAEhB,OAAI,KAAK,OAAO,MAAM;AACpB,SAAK,QAAQ,GAAG;AAChB,SAAK,OAAO,KAAK;KAAC,KAAK;KAAO,KAAK;KAAM,KAAK;KAAO,KAAK;KAAM;KAAU,CAAC;AAC3E,SAAK,OAAO;;;;;;;;;AChHlB,QAAO,UAAU;CAEjB,IAAI,iBAAiB,OAAO,kBAAkB,SAAU,KAAK;AAC3D,SAAO,IAAI;;CAGb,SAAS,MAAO,KAAK;AACnB,MAAI,QAAQ,QAAQ,OAAO,QAAQ,SACjC,QAAO;AAET,MAAI,eAAe,QACjB,IAAI,OAAO,EAAE,WAAW,eAAe,IAAI,EAAE;OAE7C,IAAI,OAAO,OAAO,OAAO,KAAK;AAEhC,SAAO,oBAAoB,IAAI,CAAC,QAAQ,SAAU,KAAK;AACrD,UAAO,eAAe,MAAM,KAAK,OAAO,yBAAyB,KAAK,IAAI,CAAC;IAC3E;AAEF,SAAO;;;;;;;CCrBT,IAAI,KAAK,QAAQ,KAAK;CACtB,IAAI;CACJ,IAAI;CACJ,IAAI;CAEJ,IAAI,OAAO,QAAQ,OAAO;;CAG1B,IAAI;CACJ,IAAI;;AAGJ,KAAI,OAAO,WAAW,cAAc,OAAO,OAAO,QAAQ,YAAY;AACpE,kBAAgB,OAAO,IAAI,oBAAoB;AAE/C,mBAAiB,OAAO,IAAI,uBAAuB;QAC9C;AACL,kBAAgB;AAChB,mBAAiB;;CAGnB,SAAS,OAAQ;CAEjB,SAAS,aAAa,SAAS,OAAO;AACpC,SAAO,eAAe,SAAS,eAAe,EAC5C,KAAK,WAAW;AACd,UAAO;KAEV,CAAC;;CAGJ,IAAI,QAAQ;AACZ,KAAI,KAAK,SACP,SAAQ,KAAK,SAAS,OAAO;UACtB,YAAY,KAAK,QAAQ,IAAI,cAAc,GAAG,CACrD,SAAQ,WAAW;EACjB,IAAI,IAAI,KAAK,OAAO,MAAM,MAAM,UAAU;AAC1C,MAAI,WAAW,EAAE,MAAM,KAAK,CAAC,KAAK,WAAW;AAC7C,UAAQ,MAAM,EAAE;;AAIpB,KAAI,CAAC,GAAG,gBAAgB;AAGtB,eAAa,IADD,OAAO,kBAAkB,EAAE,CAChB;AAMvB,KAAG,SAAS,SAAU,UAAU;GAC9B,SAAS,MAAO,IAAI,IAAI;AACtB,WAAO,SAAS,KAAK,IAAI,IAAI,SAAU,KAAK;AAE1C,SAAI,CAAC,IACH,aAAY;AAGd,SAAI,OAAO,OAAO,WAChB,IAAG,MAAM,MAAM,UAAU;MAC3B;;AAGJ,UAAO,eAAe,OAAO,gBAAgB,EAC3C,OAAO,UACR,CAAC;AACF,UAAO;KACN,GAAG,MAAM;AAEZ,KAAG,aAAa,SAAU,cAAc;GACtC,SAAS,UAAW,IAAI;AAEtB,iBAAa,MAAM,IAAI,UAAU;AACjC,gBAAY;;AAGd,UAAO,eAAe,WAAW,gBAAgB,EAC/C,OAAO,cACR,CAAC;AACF,UAAO;KACN,GAAG,UAAU;AAEhB,MAAI,YAAY,KAAK,QAAQ,IAAI,cAAc,GAAG,CAChD,SAAQ,GAAG,QAAQ,WAAW;AAC5B,SAAM,GAAG,eAAe;AACxB,WAAQ,SAAS,CAAC,MAAM,GAAG,eAAe,QAAQ,EAAE;IACpD;;AAIN,KAAI,CAAC,OAAO,eACV,cAAa,QAAQ,GAAG,eAAe;AAGzC,QAAO,UAAU,MAAM,MAAM,GAAG,CAAC;AACjC,KAAI,QAAQ,IAAI,iCAAiC,CAAC,GAAG,WAAW;AAC5D,SAAO,UAAU,MAAM,GAAG;AAC1B,KAAG,YAAY;;CAGnB,SAAS,MAAO,IAAI;AAElB,YAAU,GAAG;AACb,KAAG,cAAc;AAEjB,KAAG,mBAAmB;AACtB,KAAG,oBAAoB;EACvB,IAAI,cAAc,GAAG;AACrB,KAAG,WAAW;EACd,SAAS,SAAU,MAAM,SAAS,IAAI;AACpC,OAAI,OAAO,YAAY,WACrB,MAAK,SAAS,UAAU;AAE1B,UAAO,YAAY,MAAM,SAAS,GAAG;GAErC,SAAS,YAAa,MAAM,SAAS,IAAI,WAAW;AAClD,WAAO,YAAY,MAAM,SAAS,SAAU,KAAK;AAC/C,SAAI,QAAQ,IAAI,SAAS,YAAY,IAAI,SAAS,UAChD,SAAQ;MAAC;MAAa;OAAC;OAAM;OAAS;OAAG;MAAE;MAAK,aAAa,KAAK,KAAK;MAAE,KAAK,KAAK;MAAC,CAAC;cAEjF,OAAO,OAAO,WAChB,IAAG,MAAM,MAAM,UAAU;MAE7B;;;EAIN,IAAI,eAAe,GAAG;AACtB,KAAG,YAAY;EACf,SAAS,UAAW,MAAM,MAAM,SAAS,IAAI;AAC3C,OAAI,OAAO,YAAY,WACrB,MAAK,SAAS,UAAU;AAE1B,UAAO,aAAa,MAAM,MAAM,SAAS,GAAG;GAE5C,SAAS,aAAc,MAAM,MAAM,SAAS,IAAI,WAAW;AACzD,WAAO,aAAa,MAAM,MAAM,SAAS,SAAU,KAAK;AACtD,SAAI,QAAQ,IAAI,SAAS,YAAY,IAAI,SAAS,UAChD,SAAQ;MAAC;MAAc;OAAC;OAAM;OAAM;OAAS;OAAG;MAAE;MAAK,aAAa,KAAK,KAAK;MAAE,KAAK,KAAK;MAAC,CAAC;cAExF,OAAO,OAAO,WAChB,IAAG,MAAM,MAAM,UAAU;MAE7B;;;EAIN,IAAI,gBAAgB,GAAG;AACvB,MAAI,cACF,IAAG,aAAa;EAClB,SAAS,WAAY,MAAM,MAAM,SAAS,IAAI;AAC5C,OAAI,OAAO,YAAY,WACrB,MAAK,SAAS,UAAU;AAE1B,UAAO,cAAc,MAAM,MAAM,SAAS,GAAG;GAE7C,SAAS,cAAe,MAAM,MAAM,SAAS,IAAI,WAAW;AAC1D,WAAO,cAAc,MAAM,MAAM,SAAS,SAAU,KAAK;AACvD,SAAI,QAAQ,IAAI,SAAS,YAAY,IAAI,SAAS,UAChD,SAAQ;MAAC;MAAe;OAAC;OAAM;OAAM;OAAS;OAAG;MAAE;MAAK,aAAa,KAAK,KAAK;MAAE,KAAK,KAAK;MAAC,CAAC;cAEzF,OAAO,OAAO,WAChB,IAAG,MAAM,MAAM,UAAU;MAE7B;;;EAIN,IAAI,cAAc,GAAG;AACrB,MAAI,YACF,IAAG,WAAW;EAChB,SAAS,SAAU,KAAK,MAAM,OAAO,IAAI;AACvC,OAAI,OAAO,UAAU,YAAY;AAC/B,SAAK;AACL,YAAQ;;AAEV,UAAO,YAAY,KAAK,MAAM,OAAO,GAAG;GAExC,SAAS,YAAa,KAAK,MAAM,OAAO,IAAI,WAAW;AACrD,WAAO,YAAY,KAAK,MAAM,OAAO,SAAU,KAAK;AAClD,SAAI,QAAQ,IAAI,SAAS,YAAY,IAAI,SAAS,UAChD,SAAQ;MAAC;MAAa;OAAC;OAAK;OAAM;OAAO;OAAG;MAAE;MAAK,aAAa,KAAK,KAAK;MAAE,KAAK,KAAK;MAAC,CAAC;cAEpF,OAAO,OAAO,WAChB,IAAG,MAAM,MAAM,UAAU;MAE7B;;;EAIN,IAAI,aAAa,GAAG;AACpB,KAAG,UAAU;EACb,IAAI,0BAA0B;EAC9B,SAAS,QAAS,MAAM,SAAS,IAAI;AACnC,OAAI,OAAO,YAAY,WACrB,MAAK,SAAS,UAAU;GAE1B,IAAI,aAAa,wBAAwB,KAAK,QAAQ,QAAQ,GAC1D,SAAS,WAAY,MAAM,SAAS,IAAI,WAAW;AACnD,WAAO,WAAW,MAAM,mBACtB,MAAM,SAAS,IAAI,UACpB,CAAC;OAEF,SAAS,WAAY,MAAM,SAAS,IAAI,WAAW;AACnD,WAAO,WAAW,MAAM,SAAS,mBAC/B,MAAM,SAAS,IAAI,UACpB,CAAC;;AAGN,UAAO,WAAW,MAAM,SAAS,GAAG;GAEpC,SAAS,mBAAoB,MAAM,SAAS,IAAI,WAAW;AACzD,WAAO,SAAU,KAAK,OAAO;AAC3B,SAAI,QAAQ,IAAI,SAAS,YAAY,IAAI,SAAS,UAChD,SAAQ;MACN;MACA;OAAC;OAAM;OAAS;OAAG;MACnB;MACA,aAAa,KAAK,KAAK;MACvB,KAAK,KAAK;MACX,CAAC;UACC;AACH,UAAI,SAAS,MAAM,KACjB,OAAM,MAAM;AAEd,UAAI,OAAO,OAAO,WAChB,IAAG,KAAK,MAAM,KAAK,MAAM;;;;;AAMnC,MAAI,QAAQ,QAAQ,OAAO,GAAG,EAAE,KAAK,QAAQ;GAC3C,IAAI,aAAa,OAAO,GAAG;AAC3B,gBAAa,WAAW;AACxB,iBAAc,WAAW;;EAG3B,IAAI,gBAAgB,GAAG;AACvB,MAAI,eAAe;AACjB,cAAW,YAAY,OAAO,OAAO,cAAc,UAAU;AAC7D,cAAW,UAAU,OAAO;;EAG9B,IAAI,iBAAiB,GAAG;AACxB,MAAI,gBAAgB;AAClB,eAAY,YAAY,OAAO,OAAO,eAAe,UAAU;AAC/D,eAAY,UAAU,OAAO;;AAG/B,SAAO,eAAe,IAAI,cAAc;GACtC,KAAK,WAAY;AACf,WAAO;;GAET,KAAK,SAAU,KAAK;AAClB,iBAAa;;GAEf,YAAY;GACZ,cAAc;GACf,CAAC;AACF,SAAO,eAAe,IAAI,eAAe;GACvC,KAAK,WAAY;AACf,WAAO;;GAET,KAAK,SAAU,KAAK;AAClB,kBAAc;;GAEhB,YAAY;GACZ,cAAc;GACf,CAAC;EAGF,IAAI,iBAAiB;AACrB,SAAO,eAAe,IAAI,kBAAkB;GAC1C,KAAK,WAAY;AACf,WAAO;;GAET,KAAK,SAAU,KAAK;AAClB,qBAAiB;;GAEnB,YAAY;GACZ,cAAc;GACf,CAAC;EACF,IAAI,kBAAkB;AACtB,SAAO,eAAe,IAAI,mBAAmB;GAC3C,KAAK,WAAY;AACf,WAAO;;GAET,KAAK,SAAU,KAAK;AAClB,sBAAkB;;GAEpB,YAAY;GACZ,cAAc;GACf,CAAC;EAEF,SAAS,WAAY,MAAM,SAAS;AAClC,OAAI,gBAAgB,WAClB,QAAO,cAAc,MAAM,MAAM,UAAU,EAAE;OAE7C,QAAO,WAAW,MAAM,OAAO,OAAO,WAAW,UAAU,EAAE,UAAU;;EAG3E,SAAS,kBAAmB;GAC1B,IAAI,OAAO;AACX,QAAK,KAAK,MAAM,KAAK,OAAO,KAAK,MAAM,SAAU,KAAK,IAAI;AACxD,QAAI,KAAK;AACP,SAAI,KAAK,UACP,MAAK,SAAS;AAEhB,UAAK,KAAK,SAAS,IAAI;WAClB;AACL,UAAK,KAAK;AACV,UAAK,KAAK,QAAQ,GAAG;AACrB,UAAK,MAAM;;KAEb;;EAGJ,SAAS,YAAa,MAAM,SAAS;AACnC,OAAI,gBAAgB,YAClB,QAAO,eAAe,MAAM,MAAM,UAAU,EAAE;OAE9C,QAAO,YAAY,MAAM,OAAO,OAAO,YAAY,UAAU,EAAE,UAAU;;EAG7E,SAAS,mBAAoB;GAC3B,IAAI,OAAO;AACX,QAAK,KAAK,MAAM,KAAK,OAAO,KAAK,MAAM,SAAU,KAAK,IAAI;AACxD,QAAI,KAAK;AACP,UAAK,SAAS;AACd,UAAK,KAAK,SAAS,IAAI;WAClB;AACL,UAAK,KAAK;AACV,UAAK,KAAK,QAAQ,GAAG;;KAEvB;;EAGJ,SAAS,iBAAkB,MAAM,SAAS;AACxC,UAAO,IAAI,GAAG,WAAW,MAAM,QAAQ;;EAGzC,SAAS,kBAAmB,MAAM,SAAS;AACzC,UAAO,IAAI,GAAG,YAAY,MAAM,QAAQ;;EAG1C,IAAI,UAAU,GAAG;AACjB,KAAG,OAAO;EACV,SAAS,KAAM,MAAM,OAAO,MAAM,IAAI;AACpC,OAAI,OAAO,SAAS,WAClB,MAAK,MAAM,OAAO;AAEpB,UAAO,QAAQ,MAAM,OAAO,MAAM,GAAG;GAErC,SAAS,QAAS,MAAM,OAAO,MAAM,IAAI,WAAW;AAClD,WAAO,QAAQ,MAAM,OAAO,MAAM,SAAU,KAAK,IAAI;AACnD,SAAI,QAAQ,IAAI,SAAS,YAAY,IAAI,SAAS,UAChD,SAAQ;MAAC;MAAS;OAAC;OAAM;OAAO;OAAM;OAAG;MAAE;MAAK,aAAa,KAAK,KAAK;MAAE,KAAK,KAAK;MAAC,CAAC;cAEjF,OAAO,OAAO,WAChB,IAAG,MAAM,MAAM,UAAU;MAE7B;;;AAIN,SAAO;;CAGT,SAAS,QAAS,MAAM;AACtB,QAAM,WAAW,KAAK,GAAG,MAAM,KAAK,GAAG;AACvC,KAAG,eAAe,KAAK,KAAK;AAC5B,SAAO;;CAIT,IAAI;CAKJ,SAAS,aAAc;EACrB,IAAI,MAAM,KAAK,KAAK;AACpB,OAAK,IAAI,IAAI,GAAG,IAAI,GAAG,eAAe,QAAQ,EAAE,EAG9C,KAAI,GAAG,eAAe,GAAG,SAAS,GAAG;AACnC,MAAG,eAAe,GAAG,KAAK;AAC1B,MAAG,eAAe,GAAG,KAAK;;AAI9B,SAAO;;CAGT,SAAS,QAAS;AAEhB,eAAa,WAAW;AACxB,eAAa;AAEb,MAAI,GAAG,eAAe,WAAW,EAC/B;EAEF,IAAI,OAAO,GAAG,eAAe,OAAO;EACpC,IAAI,KAAK,KAAK;EACd,IAAI,OAAO,KAAK;EAEhB,IAAI,MAAM,KAAK;EACf,IAAI,YAAY,KAAK;EACrB,IAAI,WAAW,KAAK;AAIpB,MAAI,cAAc,QAAW;AAC3B,SAAM,SAAS,GAAG,MAAM,KAAK;AAC7B,MAAG,MAAM,MAAM,KAAK;aACX,KAAK,KAAK,GAAG,aAAa,KAAO;AAE1C,SAAM,WAAW,GAAG,MAAM,KAAK;GAC/B,IAAI,KAAK,KAAK,KAAK;AACnB,OAAI,OAAO,OAAO,WAChB,IAAG,KAAK,MAAM,IAAI;SACf;GAEL,IAAI,eAAe,KAAK,KAAK,GAAG;GAGhC,IAAI,aAAa,KAAK,IAAI,WAAW,WAAW,EAAE;AAKlD,OAAI,gBAFe,KAAK,IAAI,aAAa,KAAK,IAAI,EAEhB;AAChC,UAAM,SAAS,GAAG,MAAM,KAAK;AAC7B,OAAG,MAAM,MAAM,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;SAIxC,IAAG,eAAe,KAAK,KAAK;;AAKhC,MAAI,eAAe,OACjB,cAAa,WAAW,OAAO,EAAE;;;;;;;CC1brC,MAAM,2BAA4B;CAClC,MAAM;CAEN,MAAM,MAAM;EACV;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACD,CAAC,QAAO,QAAO;AAMd,SAAO,OAAO,GAAG,SAAS;GAC1B;AAGF,QAAO,OAAO,SAAS,GAAG;AAG1B,KAAI,SAAQ,WAAU;AACpB,UAAQ,UAAU,EAAE,GAAG,QAAQ;GAC/B;AAIF,SAAQ,SAAS,SAAU,UAAU,UAAU;AAC7C,MAAI,OAAO,aAAa,WACtB,QAAO,GAAG,OAAO,UAAU,SAAS;AAEtC,SAAO,IAAI,SAAQ,YAAW;AAC5B,UAAO,GAAG,OAAO,UAAU,QAAQ;IACnC;;AAKJ,SAAQ,OAAO,SAAU,IAAI,QAAQ,QAAQ,QAAQ,UAAU,UAAU;AACvE,MAAI,OAAO,aAAa,WACtB,QAAO,GAAG,KAAK,IAAI,QAAQ,QAAQ,QAAQ,UAAU,SAAS;AAEhE,SAAO,IAAI,SAAS,SAAS,WAAW;AACtC,MAAG,KAAK,IAAI,QAAQ,QAAQ,QAAQ,WAAW,KAAK,WAAW,WAAW;AACxE,QAAI,IAAK,QAAO,OAAO,IAAI;AAC3B,YAAQ;KAAE;KAAW;KAAQ,CAAC;KAC9B;IACF;;AAQJ,SAAQ,QAAQ,SAAU,IAAI,QAAQ,GAAG,MAAM;AAC7C,MAAI,OAAO,KAAK,KAAK,SAAS,OAAO,WACnC,QAAO,GAAG,MAAM,IAAI,QAAQ,GAAG,KAAK;AAGtC,SAAO,IAAI,SAAS,SAAS,WAAW;AACtC,MAAG,MAAM,IAAI,QAAQ,GAAG,OAAO,KAAK,cAAc,WAAW;AAC3D,QAAI,IAAK,QAAO,OAAO,IAAI;AAC3B,YAAQ;KAAE;KAAc;KAAQ,CAAC;KACjC;IACF;;AAMJ,SAAQ,QAAQ,SAAU,IAAI,SAAS,GAAG,MAAM;AAC9C,MAAI,OAAO,KAAK,KAAK,SAAS,OAAO,WACnC,QAAO,GAAG,MAAM,IAAI,SAAS,GAAG,KAAK;AAGvC,SAAO,IAAI,SAAS,SAAS,WAAW;AACtC,MAAG,MAAM,IAAI,SAAS,GAAG,OAAO,KAAK,WAAW,YAAY;AAC1D,QAAI,IAAK,QAAO,OAAO,IAAI;AAC3B,YAAQ;KAAE;KAAW;KAAS,CAAC;KAC/B;IACF;;AAMJ,SAAQ,SAAS,SAAU,IAAI,SAAS,GAAG,MAAM;AAC/C,MAAI,OAAO,KAAK,KAAK,SAAS,OAAO,WACnC,QAAO,GAAG,OAAO,IAAI,SAAS,GAAG,KAAK;AAGxC,SAAO,IAAI,SAAS,SAAS,WAAW;AACtC,MAAG,OAAO,IAAI,SAAS,GAAG,OAAO,KAAK,cAAc,YAAY;AAC9D,QAAI,IAAK,QAAO,OAAO,IAAI;AAC3B,YAAQ;KAAE;KAAc;KAAS,CAAC;KAClC;IACF;;AAIJ,KAAI,OAAO,GAAG,SAAS,WAAW,WAChC,SAAQ,SAAS,SAAS,EAAE,GAAG,SAAS,OAAO;KAE/C,SAAQ,YACN,qEACA,WAAW,oBACZ;;;;;;CC1IH,MAAMC,UAAO,QAAQ,OAAO;AAI5B,QAAO,QAAQ,YAAY,SAAS,UAAW,KAAK;AAClD,MAAI,QAAQ,aAAa,SAGvB;OAFoC,YAAY,KAAK,IAAI,QAAQA,QAAK,MAAM,IAAI,CAAC,MAAM,GAAG,CAAC,EAE1D;IAC/B,MAAM,wBAAQ,IAAI,MAAM,qCAAqC,MAAM;AACnE,UAAM,OAAO;AACb,UAAM;;;;;;;;;CChBZ,MAAM;CACN,MAAM,EAAE;CAER,MAAM,WAAU,YAAW;EACzB,MAAM,WAAW,EAAE,MAAM,KAAO;AAChC,MAAI,OAAO,YAAY,SAAU,QAAO;AACxC,SAAQ;GAAE,GAAG;GAAU,GAAG;GAAS,CAAE;;AAGvC,QAAO,QAAQ,UAAU,OAAO,KAAK,YAAY;AAC/C,YAAU,IAAI;AAEd,SAAO,GAAG,MAAM,KAAK;GACnB,MAAM,QAAQ,QAAQ;GACtB,WAAW;GACZ,CAAC;;AAGJ,QAAO,QAAQ,eAAe,KAAK,YAAY;AAC7C,YAAU,IAAI;AAEd,SAAO,GAAG,UAAU,KAAK;GACvB,MAAM,QAAQ,QAAQ;GACtB,WAAW;GACZ,CAAC;;;;;;;CCxBJ,MAAM,2BAA4B;CAClC,MAAM,EAAE,SAAS,UAAU;CAC3B,MAAM,UAAU,EAAE,SAAS;AAE3B,QAAO,UAAU;EACf,QAAQ;EACR,YAAY;EAEZ,QAAQ;EACR,YAAY;EACZ,WAAW;EACX,eAAe;EAChB;;;;;;CCZD,MAAM,2BAA4B;CAClC,MAAM;CAEN,SAAS,WAAY,MAAM;AACzB,SAAO,GAAG,OAAO,KAAK,CAAC,WAAW,KAAK,CAAC,YAAY,MAAM;;AAG5D,QAAO,UAAU;EACf,YAAY,EAAE,WAAW;EACzB,gBAAgB,GAAG;EACpB;;;;;;CCTD,MAAM;CACN,MAAM,2BAA4B;CAElC,eAAe,aAAc,MAAM,OAAO,OAAO;EAE/C,MAAM,KAAK,MAAM,GAAG,KAAK,MAAM,KAAK;EAEpC,IAAI,WAAW;AAEf,MAAI;AACF,SAAM,GAAG,QAAQ,IAAI,OAAO,MAAM;YAC1B;AACR,OAAI;AACF,UAAM,GAAG,MAAM,GAAG;YACX,GAAG;AACV,eAAW;;;AAIf,MAAI,SACF,OAAM;;CAIV,SAAS,iBAAkB,MAAM,OAAO,OAAO;EAC7C,MAAM,KAAK,GAAG,SAAS,MAAM,KAAK;AAClC,KAAG,YAAY,IAAI,OAAO,MAAM;AAChC,SAAO,GAAG,UAAU,GAAG;;AAGzB,QAAO,UAAU;EACf,cAAc,EAAE,aAAa;EAC7B;EACD;;;;;;CCjCD,MAAM;CACN,MAAMC,UAAO,QAAQ,OAAO;CAC5B,MAAM,2BAA4B;CAElC,SAAS,SAAU,KAAK,MAAM,MAAM;EAClC,MAAM,WAAW,KAAK,eACjB,SAAS,GAAG,KAAK,MAAM,EAAE,QAAQ,MAAM,CAAC,IACxC,SAAS,GAAG,MAAM,MAAM,EAAE,QAAQ,MAAM,CAAC;AAC9C,SAAO,QAAQ,IAAI,CACjB,SAAS,IAAI,EACb,SAAS,KAAK,CAAC,OAAM,QAAO;AAC1B,OAAI,IAAI,SAAS,SAAU,QAAO;AAClC,SAAM;IACN,CACH,CAAC,CAAC,MAAM,CAAC,SAAS,eAAe;GAAE;GAAS;GAAU,EAAE;;CAG3D,SAAS,aAAc,KAAK,MAAM,MAAM;EACtC,IAAI;EACJ,MAAM,WAAW,KAAK,eACjB,SAAS,GAAG,SAAS,MAAM,EAAE,QAAQ,MAAM,CAAC,IAC5C,SAAS,GAAG,UAAU,MAAM,EAAE,QAAQ,MAAM,CAAC;EAClD,MAAM,UAAU,SAAS,IAAI;AAC7B,MAAI;AACF,cAAW,SAAS,KAAK;WAClB,KAAK;AACZ,OAAI,IAAI,SAAS,SAAU,QAAO;IAAE;IAAS,UAAU;IAAM;AAC7D,SAAM;;AAER,SAAO;GAAE;GAAS;GAAU;;CAG9B,eAAe,WAAY,KAAK,MAAM,UAAU,MAAM;EACpD,MAAM,EAAE,SAAS,aAAa,MAAM,SAAS,KAAK,MAAM,KAAK;AAC7D,MAAI,UAAU;AACZ,OAAI,aAAa,SAAS,SAAS,EAAE;IACnC,MAAM,cAAcA,QAAK,SAAS,IAAI;IACtC,MAAM,eAAeA,QAAK,SAAS,KAAK;AACxC,QAAI,aAAa,UACf,gBAAgB,gBAChB,YAAY,aAAa,KAAK,aAAa,aAAa,CACxD,QAAO;KAAE;KAAS;KAAU,gBAAgB;KAAM;AAEpD,UAAM,IAAI,MAAM,+CAA+C;;AAEjE,OAAI,QAAQ,aAAa,IAAI,CAAC,SAAS,aAAa,CAClD,OAAM,IAAI,MAAM,mCAAmC,KAAK,oBAAoB,IAAI,IAAI;AAEtF,OAAI,CAAC,QAAQ,aAAa,IAAI,SAAS,aAAa,CAClD,OAAM,IAAI,MAAM,+BAA+B,KAAK,wBAAwB,IAAI,IAAI;;AAIxF,MAAI,QAAQ,aAAa,IAAI,YAAY,KAAK,KAAK,CACjD,OAAM,IAAI,MAAM,OAAO,KAAK,MAAM,SAAS,CAAC;AAG9C,SAAO;GAAE;GAAS;GAAU;;CAG9B,SAAS,eAAgB,KAAK,MAAM,UAAU,MAAM;EAClD,MAAM,EAAE,SAAS,aAAa,aAAa,KAAK,MAAM,KAAK;AAE3D,MAAI,UAAU;AACZ,OAAI,aAAa,SAAS,SAAS,EAAE;IACnC,MAAM,cAAcA,QAAK,SAAS,IAAI;IACtC,MAAM,eAAeA,QAAK,SAAS,KAAK;AACxC,QAAI,aAAa,UACf,gBAAgB,gBAChB,YAAY,aAAa,KAAK,aAAa,aAAa,CACxD,QAAO;KAAE;KAAS;KAAU,gBAAgB;KAAM;AAEpD,UAAM,IAAI,MAAM,+CAA+C;;AAEjE,OAAI,QAAQ,aAAa,IAAI,CAAC,SAAS,aAAa,CAClD,OAAM,IAAI,MAAM,mCAAmC,KAAK,oBAAoB,IAAI,IAAI;AAEtF,OAAI,CAAC,QAAQ,aAAa,IAAI,SAAS,aAAa,CAClD,OAAM,IAAI,MAAM,+BAA+B,KAAK,wBAAwB,IAAI,IAAI;;AAIxF,MAAI,QAAQ,aAAa,IAAI,YAAY,KAAK,KAAK,CACjD,OAAM,IAAI,MAAM,OAAO,KAAK,MAAM,SAAS,CAAC;AAE9C,SAAO;GAAE;GAAS;GAAU;;CAO9B,eAAe,iBAAkB,KAAK,SAAS,MAAM,UAAU;EAC7D,MAAM,YAAYA,QAAK,QAAQA,QAAK,QAAQ,IAAI,CAAC;EACjD,MAAM,aAAaA,QAAK,QAAQA,QAAK,QAAQ,KAAK,CAAC;AACnD,MAAI,eAAe,aAAa,eAAeA,QAAK,MAAM,WAAW,CAAC,KAAM;EAE5E,IAAI;AACJ,MAAI;AACF,cAAW,MAAM,GAAG,KAAK,YAAY,EAAE,QAAQ,MAAM,CAAC;WAC/C,KAAK;AACZ,OAAI,IAAI,SAAS,SAAU;AAC3B,SAAM;;AAGR,MAAI,aAAa,SAAS,SAAS,CACjC,OAAM,IAAI,MAAM,OAAO,KAAK,MAAM,SAAS,CAAC;AAG9C,SAAO,iBAAiB,KAAK,SAAS,YAAY,SAAS;;CAG7D,SAAS,qBAAsB,KAAK,SAAS,MAAM,UAAU;EAC3D,MAAM,YAAYA,QAAK,QAAQA,QAAK,QAAQ,IAAI,CAAC;EACjD,MAAM,aAAaA,QAAK,QAAQA,QAAK,QAAQ,KAAK,CAAC;AACnD,MAAI,eAAe,aAAa,eAAeA,QAAK,MAAM,WAAW,CAAC,KAAM;EAC5E,IAAI;AACJ,MAAI;AACF,cAAW,GAAG,SAAS,YAAY,EAAE,QAAQ,MAAM,CAAC;WAC7C,KAAK;AACZ,OAAI,IAAI,SAAS,SAAU;AAC3B,SAAM;;AAER,MAAI,aAAa,SAAS,SAAS,CACjC,OAAM,IAAI,MAAM,OAAO,KAAK,MAAM,SAAS,CAAC;AAE9C,SAAO,qBAAqB,KAAK,SAAS,YAAY,SAAS;;CAGjE,SAAS,aAAc,SAAS,UAAU;AAExC,SAAO,SAAS,QAAQ,UAAa,SAAS,QAAQ,UAAa,SAAS,QAAQ,QAAQ,OAAO,SAAS,QAAQ,QAAQ;;CAK9H,SAAS,YAAa,KAAK,MAAM;EAC/B,MAAM,SAASA,QAAK,QAAQ,IAAI,CAAC,MAAMA,QAAK,IAAI,CAAC,QAAO,MAAK,EAAE;EAC/D,MAAM,UAAUA,QAAK,QAAQ,KAAK,CAAC,MAAMA,QAAK,IAAI,CAAC,QAAO,MAAK,EAAE;AACjE,SAAO,OAAO,OAAO,KAAK,MAAM,QAAQ,OAAO,IAAI;;CAGrD,SAAS,OAAQ,KAAK,MAAM,UAAU;AACpC,SAAO,UAAU,SAAS,IAAI,IAAI,kCAAkC,KAAK;;AAG3E,QAAO,UAAU;EAEf,YAAY,EAAE,WAAW;EACzB;EAEA,kBAAkB,EAAE,iBAAiB;EACrC;EAEA;EACA;EACD;;;;;;CCvJD,eAAe,+BAAgC,UAAU,IAAI;EAC3D,MAAM,WAAW,EAAE;AACnB,aAAW,MAAM,QAAQ,SACvB,UAAS,KACP,GAAG,KAAK,CAAC,WACD,OACL,QAAQ,uBAAO,IAAI,MAAM,gBAAgB,CAC3C,CACF;AAEH,QAAM,QAAQ,IACZ,SAAS,KAAK,YACZ,QAAQ,MAAM,gBAAgB;AAC5B,OAAI,gBAAgB,KAAM,OAAM;IAChC,CACH,CACF;;AAGH,QAAO,UAAU,EACf,gCACD;;;;;;CC1BD,MAAM;CACN,MAAMC,SAAO,QAAQ,OAAO;CAC5B,MAAM,EAAE;CACR,MAAM,EAAE;CACR,MAAM,EAAE;CACR,MAAM;CACN,MAAM,EAAE;CAER,eAAe,KAAM,KAAK,MAAM,OAAO,EAAE,EAAE;AACzC,MAAI,OAAO,SAAS,WAClB,QAAO,EAAE,QAAQ,MAAM;AAGzB,OAAK,UAAU,aAAa,OAAO,CAAC,CAAC,KAAK,UAAU;AACpD,OAAK,YAAY,eAAe,OAAO,CAAC,CAAC,KAAK,YAAY,KAAK;AAG/D,MAAI,KAAK,sBAAsB,QAAQ,SAAS,OAC9C,SAAQ,YACN,2IAEA,WAAW,oBACZ;EAGH,MAAM,EAAE,SAAS,aAAa,MAAM,KAAK,WAAW,KAAK,MAAM,QAAQ,KAAK;AAE5E,QAAM,KAAK,iBAAiB,KAAK,SAAS,MAAM,OAAO;AAIvD,MAAI,CAFY,MAAM,UAAU,KAAK,MAAM,KAAK,CAElC;EAGd,MAAM,aAAaA,OAAK,QAAQ,KAAK;AAErC,MAAI,CADc,MAAM,WAAW,WAAW,CAE5C,OAAM,OAAO,WAAW;AAG1B,QAAM,uBAAuB,UAAU,KAAK,MAAM,KAAK;;CAGzD,eAAe,UAAW,KAAK,MAAM,MAAM;AACzC,MAAI,CAAC,KAAK,OAAQ,QAAO;AACzB,SAAO,KAAK,OAAO,KAAK,KAAK;;CAG/B,eAAe,uBAAwB,UAAU,KAAK,MAAM,MAAM;EAEhE,MAAM,UAAU,OADD,KAAK,cAAc,GAAG,OAAO,GAAG,OAClB,IAAI;AAEjC,MAAI,QAAQ,aAAa,CAAE,QAAO,MAAM,SAAS,UAAU,KAAK,MAAM,KAAK;AAE3E,MACE,QAAQ,QAAQ,IAChB,QAAQ,mBAAmB,IAC3B,QAAQ,eAAe,CACvB,QAAO,OAAO,SAAS,UAAU,KAAK,MAAM,KAAK;AAEnD,MAAI,QAAQ,gBAAgB,CAAE,QAAO,OAAO,UAAU,KAAK,MAAM,KAAK;AACtE,MAAI,QAAQ,UAAU,CAAE,OAAM,IAAI,MAAM,8BAA8B,MAAM;AAC5E,MAAI,QAAQ,QAAQ,CAAE,OAAM,IAAI,MAAM,4BAA4B,MAAM;AACxE,QAAM,IAAI,MAAM,iBAAiB,MAAM;;CAGzC,eAAe,OAAQ,SAAS,UAAU,KAAK,MAAM,MAAM;AACzD,MAAI,CAAC,SAAU,QAAO,SAAS,SAAS,KAAK,MAAM,KAAK;AAExD,MAAI,KAAK,WAAW;AAClB,SAAM,GAAG,OAAO,KAAK;AACrB,UAAO,SAAS,SAAS,KAAK,MAAM,KAAK;;AAE3C,MAAI,KAAK,aACP,OAAM,IAAI,MAAM,IAAI,KAAK,kBAAkB;;CAI/C,eAAe,SAAU,SAAS,KAAK,MAAM,MAAM;AACjD,QAAM,GAAG,SAAS,KAAK,KAAK;AAC5B,MAAI,KAAK,oBAAoB;AAI3B,OAAI,kBAAkB,QAAQ,KAAK,CACjC,OAAM,iBAAiB,MAAM,QAAQ,KAAK;GAQ5C,MAAM,iBAAiB,MAAM,GAAG,KAAK,IAAI;AACzC,SAAM,aAAa,MAAM,eAAe,OAAO,eAAe,MAAM;;AAGtE,SAAO,GAAG,MAAM,MAAM,QAAQ,KAAK;;CAGrC,SAAS,kBAAmB,SAAS;AACnC,UAAQ,UAAU,SAAW;;CAG/B,SAAS,iBAAkB,MAAM,SAAS;AACxC,SAAO,GAAG,MAAM,MAAM,UAAU,IAAM;;CAGxC,eAAe,MAAO,SAAS,UAAU,KAAK,MAAM,MAAM;AAExD,MAAI,CAAC,SACH,OAAM,GAAG,MAAM,KAAK;AAItB,QAAM,+BAA+B,MAAM,GAAG,QAAQ,IAAI,EAAE,OAAO,SAAS;GAC1E,MAAM,UAAUA,OAAK,KAAK,KAAK,KAAK,KAAK;GACzC,MAAM,WAAWA,OAAK,KAAK,MAAM,KAAK,KAAK;AAI3C,OAFgB,MAAM,UAAU,SAAS,UAAU,KAAK,EAE3C;IACX,MAAM,EAAE,aAAa,MAAM,KAAK,WAAW,SAAS,UAAU,QAAQ,KAAK;AAG3E,UAAM,uBAAuB,UAAU,SAAS,UAAU,KAAK;;IAEjE;AAEF,MAAI,CAAC,SACH,OAAM,GAAG,MAAM,MAAM,QAAQ,KAAK;;CAItC,eAAe,OAAQ,UAAU,KAAK,MAAM,MAAM;EAChD,IAAI,cAAc,MAAM,GAAG,SAAS,IAAI;AACxC,MAAI,KAAK,YACP,eAAcA,OAAK,QAAQ,QAAQ,KAAK,EAAE,YAAY;AAExD,MAAI,CAAC,SACH,QAAO,GAAG,QAAQ,aAAa,KAAK;EAGtC,IAAI,eAAe;AACnB,MAAI;AACF,kBAAe,MAAM,GAAG,SAAS,KAAK;WAC/B,GAAG;AAIV,OAAI,EAAE,SAAS,YAAY,EAAE,SAAS,UAAW,QAAO,GAAG,QAAQ,aAAa,KAAK;AACrF,SAAM;;AAER,MAAI,KAAK,YACP,gBAAeA,OAAK,QAAQ,QAAQ,KAAK,EAAE,aAAa;AAK1D,MAAI,gBAAgB,cAAc;AAChC,OAAI,KAAK,YAAY,aAAa,aAAa,CAC7C,OAAM,IAAI,MAAM,gBAAgB,YAAY,kCAAkC,aAAa,IAAI;AAMjG,OAAI,KAAK,YAAY,cAAc,YAAY,CAC7C,OAAM,IAAI,MAAM,qBAAqB,aAAa,UAAU,YAAY,IAAI;;AAKhF,QAAM,GAAG,OAAO,KAAK;AACrB,SAAO,GAAG,QAAQ,aAAa,KAAK;;AAGtC,QAAO,UAAU;;;;;;CCjLjB,MAAM;CACN,MAAMC,SAAO,QAAQ,OAAO;CAC5B,MAAM,8BAAkC;CACxC,MAAM,oCAA6C;CACnD,MAAM;CAEN,SAAS,SAAU,KAAK,MAAM,MAAM;AAClC,MAAI,OAAO,SAAS,WAClB,QAAO,EAAE,QAAQ,MAAM;AAGzB,SAAO,QAAQ,EAAE;AACjB,OAAK,UAAU,aAAa,OAAO,CAAC,CAAC,KAAK,UAAU;AACpD,OAAK,YAAY,eAAe,OAAO,CAAC,CAAC,KAAK,YAAY,KAAK;AAG/D,MAAI,KAAK,sBAAsB,QAAQ,SAAS,OAC9C,SAAQ,YACN,2IAEA,WAAW,oBACZ;EAGH,MAAM,EAAE,SAAS,aAAa,KAAK,eAAe,KAAK,MAAM,QAAQ,KAAK;AAC1E,OAAK,qBAAqB,KAAK,SAAS,MAAM,OAAO;AACrD,MAAI,KAAK,UAAU,CAAC,KAAK,OAAO,KAAK,KAAK,CAAE;EAC5C,MAAM,aAAaA,OAAK,QAAQ,KAAK;AACrC,MAAI,CAAC,GAAG,WAAW,WAAW,CAAE,YAAW,WAAW;AACtD,SAAO,SAAS,UAAU,KAAK,MAAM,KAAK;;CAG5C,SAAS,SAAU,UAAU,KAAK,MAAM,MAAM;EAE5C,MAAM,WADW,KAAK,cAAc,GAAG,WAAW,GAAG,WAC5B,IAAI;AAE7B,MAAI,QAAQ,aAAa,CAAE,QAAO,MAAM,SAAS,UAAU,KAAK,MAAM,KAAK;WAClE,QAAQ,QAAQ,IAChB,QAAQ,mBAAmB,IAC3B,QAAQ,eAAe,CAAE,QAAO,OAAO,SAAS,UAAU,KAAK,MAAM,KAAK;WAC1E,QAAQ,gBAAgB,CAAE,QAAO,OAAO,UAAU,KAAK,MAAM,KAAK;WAClE,QAAQ,UAAU,CAAE,OAAM,IAAI,MAAM,8BAA8B,MAAM;WACxE,QAAQ,QAAQ,CAAE,OAAM,IAAI,MAAM,4BAA4B,MAAM;AAC7E,QAAM,IAAI,MAAM,iBAAiB,MAAM;;CAGzC,SAAS,OAAQ,SAAS,UAAU,KAAK,MAAM,MAAM;AACnD,MAAI,CAAC,SAAU,QAAO,SAAS,SAAS,KAAK,MAAM,KAAK;AACxD,SAAO,YAAY,SAAS,KAAK,MAAM,KAAK;;CAG9C,SAAS,YAAa,SAAS,KAAK,MAAM,MAAM;AAC9C,MAAI,KAAK,WAAW;AAClB,MAAG,WAAW,KAAK;AACnB,UAAO,SAAS,SAAS,KAAK,MAAM,KAAK;aAChC,KAAK,aACd,OAAM,IAAI,MAAM,IAAI,KAAK,kBAAkB;;CAI/C,SAAS,SAAU,SAAS,KAAK,MAAM,MAAM;AAC3C,KAAG,aAAa,KAAK,KAAK;AAC1B,MAAI,KAAK,mBAAoB,kBAAiB,QAAQ,MAAM,KAAK,KAAK;AACtE,SAAO,YAAY,MAAM,QAAQ,KAAK;;CAGxC,SAAS,iBAAkB,SAAS,KAAK,MAAM;AAI7C,MAAI,kBAAkB,QAAQ,CAAE,kBAAiB,MAAM,QAAQ;AAC/D,SAAO,kBAAkB,KAAK,KAAK;;CAGrC,SAAS,kBAAmB,SAAS;AACnC,UAAQ,UAAU,SAAW;;CAG/B,SAAS,iBAAkB,MAAM,SAAS;AACxC,SAAO,YAAY,MAAM,UAAU,IAAM;;CAG3C,SAAS,YAAa,MAAM,SAAS;AACnC,SAAO,GAAG,UAAU,MAAM,QAAQ;;CAGpC,SAAS,kBAAmB,KAAK,MAAM;EAIrC,MAAM,iBAAiB,GAAG,SAAS,IAAI;AACvC,SAAO,iBAAiB,MAAM,eAAe,OAAO,eAAe,MAAM;;CAG3E,SAAS,MAAO,SAAS,UAAU,KAAK,MAAM,MAAM;AAClD,MAAI,CAAC,SAAU,QAAO,aAAa,QAAQ,MAAM,KAAK,MAAM,KAAK;AACjE,SAAO,QAAQ,KAAK,MAAM,KAAK;;CAGjC,SAAS,aAAc,SAAS,KAAK,MAAM,MAAM;AAC/C,KAAG,UAAU,KAAK;AAClB,UAAQ,KAAK,MAAM,KAAK;AACxB,SAAO,YAAY,MAAM,QAAQ;;CAGnC,SAAS,QAAS,KAAK,MAAM,MAAM;EACjC,MAAM,MAAM,GAAG,YAAY,IAAI;AAE/B,MAAI;GACF,IAAI;AAEJ,WAAQ,SAAS,IAAI,UAAU,MAAM,KACnC,aAAY,OAAO,MAAM,KAAK,MAAM,KAAK;YAEnC;AACR,OAAI,WAAW;;;CAInB,SAAS,YAAa,MAAM,KAAK,MAAM,MAAM;EAC3C,MAAM,UAAUA,OAAK,KAAK,KAAK,KAAK;EACpC,MAAM,WAAWA,OAAK,KAAK,MAAM,KAAK;AACtC,MAAI,KAAK,UAAU,CAAC,KAAK,OAAO,SAAS,SAAS,CAAE;EACpD,MAAM,EAAE,aAAa,KAAK,eAAe,SAAS,UAAU,QAAQ,KAAK;AACzE,SAAO,SAAS,UAAU,SAAS,UAAU,KAAK;;CAGpD,SAAS,OAAQ,UAAU,KAAK,MAAM,MAAM;EAC1C,IAAI,cAAc,GAAG,aAAa,IAAI;AACtC,MAAI,KAAK,YACP,eAAcA,OAAK,QAAQ,QAAQ,KAAK,EAAE,YAAY;AAGxD,MAAI,CAAC,SACH,QAAO,GAAG,YAAY,aAAa,KAAK;OACnC;GACL,IAAI;AACJ,OAAI;AACF,mBAAe,GAAG,aAAa,KAAK;YAC7B,KAAK;AAIZ,QAAI,IAAI,SAAS,YAAY,IAAI,SAAS,UAAW,QAAO,GAAG,YAAY,aAAa,KAAK;AAC7F,UAAM;;AAER,OAAI,KAAK,YACP,gBAAeA,OAAK,QAAQ,QAAQ,KAAK,EAAE,aAAa;AAK1D,OAAI,gBAAgB,cAAc;AAChC,QAAI,KAAK,YAAY,aAAa,aAAa,CAC7C,OAAM,IAAI,MAAM,gBAAgB,YAAY,kCAAkC,aAAa,IAAI;AAMjG,QAAI,KAAK,YAAY,cAAc,YAAY,CAC7C,OAAM,IAAI,MAAM,qBAAqB,aAAa,UAAU,YAAY,IAAI;;AAGhF,UAAO,SAAS,aAAa,KAAK;;;CAItC,SAAS,SAAU,aAAa,MAAM;AACpC,KAAG,WAAW,KAAK;AACnB,SAAO,GAAG,YAAY,aAAa,KAAK;;AAG1C,QAAO,UAAU;;;;;;CC7KjB,MAAM,2BAA4B;AAClC,QAAO,UAAU;EACf,MAAM,mBAAoB;EAC1B;EACD;;;;;;CCJD,MAAM;CACN,MAAM,2BAA4B;CAElC,SAAS,OAAQ,MAAM,UAAU;AAC/B,KAAG,GAAG,MAAM;GAAE,WAAW;GAAM,OAAO;GAAM,EAAE,SAAS;;CAGzD,SAAS,WAAY,MAAM;AACzB,KAAG,OAAO,MAAM;GAAE,WAAW;GAAM,OAAO;GAAM,CAAC;;AAGnD,QAAO,UAAU;EACf,QAAQ,EAAE,OAAO;EACjB;EACD;;;;;;CCdD,MAAM,2BAA4B;CAClC,MAAM;CACN,MAAMC,SAAO,QAAQ,OAAO;CAC5B,MAAM;CACN,MAAM;CAEN,MAAM,WAAW,EAAE,eAAe,SAAU,KAAK;EAC/C,IAAI;AACJ,MAAI;AACF,WAAQ,MAAM,GAAG,QAAQ,IAAI;UACvB;AACN,UAAO,MAAM,OAAO,IAAI;;AAG1B,SAAO,QAAQ,IAAI,MAAM,KAAI,SAAQ,OAAO,OAAOA,OAAK,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC;GAC1E;CAEF,SAAS,aAAc,KAAK;EAC1B,IAAI;AACJ,MAAI;AACF,WAAQ,GAAG,YAAY,IAAI;UACrB;AACN,UAAO,MAAM,WAAW,IAAI;;AAG9B,QAAM,SAAQ,SAAQ;AACpB,UAAOA,OAAK,KAAK,KAAK,KAAK;AAC3B,UAAO,WAAW,KAAK;IACvB;;AAGJ,QAAO,UAAU;EACf;EACA,cAAc;EACd;EACA,UAAU;EACX;;;;;;CCpCD,MAAM,2BAA4B;CAClC,MAAMC,SAAO,QAAQ,OAAO;CAC5B,MAAM;CACN,MAAM;CAEN,eAAe,WAAY,MAAM;EAC/B,IAAI;AACJ,MAAI;AACF,WAAQ,MAAM,GAAG,KAAK,KAAK;UACrB;AACR,MAAI,SAAS,MAAM,QAAQ,CAAE;EAE7B,MAAM,MAAMA,OAAK,QAAQ,KAAK;EAE9B,IAAI,WAAW;AACf,MAAI;AACF,cAAW,MAAM,GAAG,KAAK,IAAI;WACtB,KAAK;AAEZ,OAAI,IAAI,SAAS,UAAU;AACzB,UAAM,MAAM,OAAO,IAAI;AACvB,UAAM,GAAG,UAAU,MAAM,GAAG;AAC5B;SAEA,OAAM;;AAIV,MAAI,SAAS,aAAa,CACxB,OAAM,GAAG,UAAU,MAAM,GAAG;MAI5B,OAAM,GAAG,QAAQ,IAAI;;CAIzB,SAAS,eAAgB,MAAM;EAC7B,IAAI;AACJ,MAAI;AACF,WAAQ,GAAG,SAAS,KAAK;UACnB;AACR,MAAI,SAAS,MAAM,QAAQ,CAAE;EAE7B,MAAM,MAAMA,OAAK,QAAQ,KAAK;AAC9B,MAAI;AACF,OAAI,CAAC,GAAG,SAAS,IAAI,CAAC,aAAa,CAGjC,IAAG,YAAY,IAAI;WAEd,KAAK;AAEZ,OAAI,OAAO,IAAI,SAAS,SAAU,OAAM,WAAW,IAAI;OAClD,OAAM;;AAGb,KAAG,cAAc,MAAM,GAAG;;AAG5B,QAAO,UAAU;EACf,YAAY,EAAE,WAAW;EACzB;EACD;;;;;;CC/DD,MAAM,2BAA4B;CAClC,MAAMC,SAAO,QAAQ,OAAO;CAC5B,MAAM;CACN,MAAM;CACN,MAAM,EAAE;CACR,MAAM,EAAE;CAER,eAAe,WAAY,SAAS,SAAS;EAC3C,IAAI;AACJ,MAAI;AACF,aAAU,MAAM,GAAG,MAAM,QAAQ;UAC3B;EAIR,IAAI;AACJ,MAAI;AACF,aAAU,MAAM,GAAG,MAAM,QAAQ;WAC1B,KAAK;AACZ,OAAI,UAAU,IAAI,QAAQ,QAAQ,SAAS,aAAa;AACxD,SAAM;;AAGR,MAAI,WAAW,aAAa,SAAS,QAAQ,CAAE;EAE/C,MAAM,MAAMA,OAAK,QAAQ,QAAQ;AAIjC,MAAI,CAFc,MAAM,WAAW,IAAI,CAGrC,OAAM,MAAM,OAAO,IAAI;AAGzB,QAAM,GAAG,KAAK,SAAS,QAAQ;;CAGjC,SAAS,eAAgB,SAAS,SAAS;EACzC,IAAI;AACJ,MAAI;AACF,aAAU,GAAG,UAAU,QAAQ;UACzB;AAER,MAAI;GACF,MAAM,UAAU,GAAG,UAAU,QAAQ;AACrC,OAAI,WAAW,aAAa,SAAS,QAAQ,CAAE;WACxC,KAAK;AACZ,OAAI,UAAU,IAAI,QAAQ,QAAQ,SAAS,aAAa;AACxD,SAAM;;EAGR,MAAM,MAAMA,OAAK,QAAQ,QAAQ;AAEjC,MADkB,GAAG,WAAW,IAAI,CACrB,QAAO,GAAG,SAAS,SAAS,QAAQ;AACnD,QAAM,WAAW,IAAI;AAErB,SAAO,GAAG,SAAS,SAAS,QAAQ;;AAGtC,QAAO,UAAU;EACf,YAAY,EAAE,WAAW;EACzB;EACD;;;;;;CC7DD,MAAMC,SAAO,QAAQ,OAAO;CAC5B,MAAM;CACN,MAAM,EAAE;CAER,MAAM,2BAA4B;;;;;;;;;;;;;;;;;;;;;;CAwBlC,eAAe,aAAc,SAAS,SAAS;AAC7C,MAAIA,OAAK,WAAW,QAAQ,EAAE;AAC5B,OAAI;AACF,UAAM,GAAG,MAAM,QAAQ;YAChB,KAAK;AACZ,QAAI,UAAU,IAAI,QAAQ,QAAQ,SAAS,gBAAgB;AAC3D,UAAM;;AAGR,UAAO;IACL,OAAO;IACP,OAAO;IACR;;EAGH,MAAM,SAASA,OAAK,QAAQ,QAAQ;EACpC,MAAM,gBAAgBA,OAAK,KAAK,QAAQ,QAAQ;AAGhD,MADe,MAAM,WAAW,cAAc,CAE5C,QAAO;GACL,OAAO;GACP,OAAO;GACR;AAGH,MAAI;AACF,SAAM,GAAG,MAAM,QAAQ;WAChB,KAAK;AACZ,OAAI,UAAU,IAAI,QAAQ,QAAQ,SAAS,gBAAgB;AAC3D,SAAM;;AAGR,SAAO;GACL,OAAO;GACP,OAAOA,OAAK,SAAS,QAAQ,QAAQ;GACtC;;CAGH,SAAS,iBAAkB,SAAS,SAAS;AAC3C,MAAIA,OAAK,WAAW,QAAQ,EAAE;AAE5B,OAAI,CADW,GAAG,WAAW,QAAQ,CACxB,OAAM,IAAI,MAAM,kCAAkC;AAC/D,UAAO;IACL,OAAO;IACP,OAAO;IACR;;EAGH,MAAM,SAASA,OAAK,QAAQ,QAAQ;EACpC,MAAM,gBAAgBA,OAAK,KAAK,QAAQ,QAAQ;AAEhD,MADe,GAAG,WAAW,cAAc,CAEzC,QAAO;GACL,OAAO;GACP,OAAO;GACR;AAIH,MAAI,CADc,GAAG,WAAW,QAAQ,CACxB,OAAM,IAAI,MAAM,kCAAkC;AAClE,SAAO;GACL,OAAO;GACP,OAAOA,OAAK,SAAS,QAAQ,QAAQ;GACtC;;AAGH,QAAO,UAAU;EACf,cAAc,EAAE,aAAa;EAC7B;EACD;;;;;;CClGD,MAAM;CACN,MAAM,2BAA4B;CAElC,eAAe,YAAa,SAAS,MAAM;AACzC,MAAI,KAAM,QAAO;EAEjB,IAAI;AACJ,MAAI;AACF,WAAQ,MAAM,GAAG,MAAM,QAAQ;UACzB;AACN,UAAO;;AAGT,SAAQ,SAAS,MAAM,aAAa,GAAI,QAAQ;;CAGlD,SAAS,gBAAiB,SAAS,MAAM;AACvC,MAAI,KAAM,QAAO;EAEjB,IAAI;AACJ,MAAI;AACF,WAAQ,GAAG,UAAU,QAAQ;UACvB;AACN,UAAO;;AAET,SAAQ,SAAS,MAAM,aAAa,GAAI,QAAQ;;AAGlD,QAAO,UAAU;EACf,aAAa,EAAE,YAAY;EAC3B;EACD;;;;;;CC/BD,MAAM,2BAA4B;CAClC,MAAMC,SAAO,QAAQ,OAAO;CAC5B,MAAM;CAEN,MAAM,EAAE,QAAQ;CAEhB,MAAM,EAAE,cAAc;CACtB,MAAM,EAAE,aAAa;CAErB,MAAM,EAAE;CAER,MAAM,EAAE;CAER,eAAe,cAAe,SAAS,SAAS,MAAM;EACpD,IAAI;AACJ,MAAI;AACF,WAAQ,MAAM,GAAG,MAAM,QAAQ;UACzB;AAER,MAAI,SAAS,MAAM,gBAAgB,EAAE;GACnC,MAAM,CAAC,SAAS,WAAW,MAAM,QAAQ,IAAI,CAC3C,GAAG,KAAK,QAAQ,EAChB,GAAG,KAAK,QAAQ,CACjB,CAAC;AAEF,OAAI,aAAa,SAAS,QAAQ,CAAE;;EAGtC,MAAM,WAAW,MAAM,aAAa,SAAS,QAAQ;AACrD,YAAU,SAAS;EACnB,MAAM,SAAS,MAAM,YAAY,SAAS,OAAO,KAAK;EACtD,MAAM,MAAMA,OAAK,QAAQ,QAAQ;AAEjC,MAAI,CAAE,MAAM,WAAW,IAAI,CACzB,OAAM,OAAO,IAAI;AAGnB,SAAO,GAAG,QAAQ,SAAS,SAAS,OAAO;;CAG7C,SAAS,kBAAmB,SAAS,SAAS,MAAM;EAClD,IAAI;AACJ,MAAI;AACF,WAAQ,GAAG,UAAU,QAAQ;UACvB;AACR,MAAI,SAAS,MAAM,gBAAgB,EAGjC;OAAI,aAFY,GAAG,SAAS,QAAQ,EACpB,GAAG,SAAS,QAAQ,CACF,CAAE;;EAGtC,MAAM,WAAW,iBAAiB,SAAS,QAAQ;AACnD,YAAU,SAAS;AACnB,SAAO,gBAAgB,SAAS,OAAO,KAAK;EAC5C,MAAM,MAAMA,OAAK,QAAQ,QAAQ;AAEjC,MADe,GAAG,WAAW,IAAI,CACrB,QAAO,GAAG,YAAY,SAAS,SAAS,KAAK;AACzD,aAAW,IAAI;AACf,SAAO,GAAG,YAAY,SAAS,SAAS,KAAK;;AAG/C,QAAO,UAAU;EACf,eAAe,EAAE,cAAc;EAC/B;EACD;;;;;;CChED,MAAM,EAAE,YAAY;CACpB,MAAM,EAAE,YAAY;CACpB,MAAM,EAAE,eAAe;AAEvB,QAAO,UAAU;EAEf;EACA;EACA,YAAY;EACZ,gBAAgB;EAEhB;EACA;EACA,YAAY;EACZ,gBAAgB;EAEhB;EACA;EACA,eAAe;EACf,mBAAmB;EACpB;;;;;;CCtBD,SAAS,UAAW,KAAK,EAAE,MAAM,MAAM,WAAW,MAAM,WAAW,MAAM,WAAW,EAAE,EAAE;EACtF,MAAM,MAAM,WAAW,MAAM;AAG7B,SAFY,KAAK,UAAU,KAAK,UAAU,OAAO,CAEtC,QAAQ,OAAO,IAAI,GAAG;;CAGnC,SAAS,SAAU,SAAS;AAE1B,MAAI,OAAO,SAAS,QAAQ,CAAE,WAAU,QAAQ,SAAS,OAAO;AAChE,SAAO,QAAQ,QAAQ,WAAW,GAAG;;AAGvC,QAAO,UAAU;EAAE;EAAW;EAAU;;;;;;CCbxC,IAAI;AACJ,KAAI;AACF;UACO,GAAG;AACV,QAAM,QAAQ,KAAK;;CAErB,MAAM;CACN,MAAM,EAAE,WAAW;CAEnB,eAAe,UAAW,MAAM,UAAU,EAAE,EAAE;AAC5C,MAAI,OAAO,YAAY,SACrB,WAAU,EAAE,UAAU,SAAS;EAGjC,MAAM,KAAK,QAAQ,MAAM;EAEzB,MAAM,cAAc,YAAY,UAAU,QAAQ,SAAS;EAE3D,IAAI,OAAO,MAAM,aAAa,aAAa,GAAG,SAAS,CAAC,MAAM,QAAQ;AAEtE,SAAO,SAAS,KAAK;EAErB,IAAI;AACJ,MAAI;AACF,SAAM,KAAK,MAAM,MAAM,UAAU,QAAQ,UAAU,KAAK;WACjD,KAAK;AACZ,OAAI,aAAa;AACf,QAAI,UAAU,GAAG,KAAK,IAAI,IAAI;AAC9B,UAAM;SAEN,QAAO;;AAIX,SAAO;;CAGT,MAAM,WAAW,aAAa,YAAY,UAAU;CAEpD,SAAS,aAAc,MAAM,UAAU,EAAE,EAAE;AACzC,MAAI,OAAO,YAAY,SACrB,WAAU,EAAE,UAAU,SAAS;EAGjC,MAAM,KAAK,QAAQ,MAAM;EAEzB,MAAM,cAAc,YAAY,UAAU,QAAQ,SAAS;AAE3D,MAAI;GACF,IAAI,UAAU,GAAG,aAAa,MAAM,QAAQ;AAC5C,aAAU,SAAS,QAAQ;AAC3B,UAAO,KAAK,MAAM,SAAS,QAAQ,QAAQ;WACpC,KAAK;AACZ,OAAI,aAAa;AACf,QAAI,UAAU,GAAG,KAAK,IAAI,IAAI;AAC9B,UAAM;SAEN,QAAO;;;CAKb,eAAe,WAAY,MAAM,KAAK,UAAU,EAAE,EAAE;EAClD,MAAM,KAAK,QAAQ,MAAM;EAEzB,MAAM,MAAM,UAAU,KAAK,QAAQ;AAEnC,QAAM,aAAa,aAAa,GAAG,UAAU,CAAC,MAAM,KAAK,QAAQ;;CAGnE,MAAM,YAAY,aAAa,YAAY,WAAW;CAEtD,SAAS,cAAe,MAAM,KAAK,UAAU,EAAE,EAAE;EAC/C,MAAM,KAAK,QAAQ,MAAM;EAEzB,MAAM,MAAM,UAAU,KAAK,QAAQ;AAEnC,SAAO,GAAG,cAAc,MAAM,KAAK,QAAQ;;AAK7C,QAAO,UAAU;EACf;EACA;EACA;EACA;EACD;;;;;;CCrFD,MAAM;AAEN,QAAO,UAAU;EAEf,UAAU,SAAS;EACnB,cAAc,SAAS;EACvB,WAAW,SAAS;EACpB,eAAe,SAAS;EACzB;;;;;;CCRD,MAAM,2BAA4B;CAClC,MAAM;CACN,MAAMC,SAAO,QAAQ,OAAO;CAC5B,MAAM;CACN,MAAM,mCAAuC;CAE7C,eAAe,WAAY,MAAM,MAAM,WAAW,SAAS;EACzD,MAAM,MAAMA,OAAK,QAAQ,KAAK;AAE9B,MAAI,CAAE,MAAM,WAAW,IAAI,CACzB,OAAM,MAAM,OAAO,IAAI;AAGzB,SAAO,GAAG,UAAU,MAAM,MAAM,SAAS;;CAG3C,SAAS,eAAgB,MAAM,GAAG,MAAM;EACtC,MAAM,MAAMA,OAAK,QAAQ,KAAK;AAC9B,MAAI,CAAC,GAAG,WAAW,IAAI,CACrB,OAAM,WAAW,IAAI;AAGvB,KAAG,cAAc,MAAM,GAAG,KAAK;;AAGjC,QAAO,UAAU;EACf,YAAY,EAAE,WAAW;EACzB;EACD;;;;;;CC5BD,MAAM,EAAE;CACR,MAAM,EAAE;CAER,eAAe,WAAY,MAAM,MAAM,UAAU,EAAE,EAAE;AAGnD,QAAM,WAAW,MAFL,UAAU,MAAM,QAAQ,EAER,QAAQ;;AAGtC,QAAO,UAAU;;;;;;CCTjB,MAAM,EAAE;CACR,MAAM,EAAE;CAER,SAAS,eAAgB,MAAM,MAAM,SAAS;AAG5C,iBAAe,MAFH,UAAU,MAAM,QAAQ,EAEV,QAAQ;;AAGpC,QAAO,UAAU;;;;;;CCTjB,MAAM,2BAA4B;CAClC,MAAM;AAEN,UAAS,aAAa,wBAA2B;AACjD,UAAS;AAET,UAAS,aAAa,SAAS;AAC/B,UAAS,iBAAiB,SAAS;AACnC,UAAS,YAAY,SAAS;AAC9B,UAAS,gBAAgB,SAAS;AAClC,UAAS,WAAW,SAAS;AAC7B,UAAS,eAAe,SAAS;AAEjC,QAAO,UAAU;;;;;;CCbjB,MAAM;CACN,MAAMC,SAAO,QAAQ,OAAO;CAC5B,MAAM,EAAE;CACR,MAAM,EAAE;CACR,MAAM,EAAE;CACR,MAAM,EAAE;CACR,MAAM;CAEN,eAAe,KAAM,KAAK,MAAM,OAAO,EAAE,EAAE;EACzC,MAAM,YAAY,KAAK,aAAa,KAAK,WAAW;EAEpD,MAAM,EAAE,SAAS,iBAAiB,UAAU,MAAM,KAAK,WAAW,KAAK,MAAM,QAAQ,KAAK;AAE1F,QAAM,KAAK,iBAAiB,KAAK,SAAS,MAAM,OAAO;EAGvD,MAAM,aAAaA,OAAK,QAAQ,KAAK;AAErC,MADyBA,OAAK,MAAM,WAAW,CAC1B,SAAS,WAC5B,OAAM,OAAO,WAAW;AAG1B,SAAO,SAAS,KAAK,MAAM,WAAW,eAAe;;CAGvD,eAAe,SAAU,KAAK,MAAM,WAAW,gBAAgB;AAC7D,MAAI,CAAC,gBACH;OAAI,UACF,OAAM,OAAO,KAAK;YACT,MAAM,WAAW,KAAK,CAC/B,OAAM,IAAI,MAAM,uBAAuB;;AAI3C,MAAI;AAEF,SAAM,GAAG,OAAO,KAAK,KAAK;WACnB,KAAK;AACZ,OAAI,IAAI,SAAS,QACf,OAAM;AAER,SAAM,iBAAiB,KAAK,MAAM,UAAU;;;CAIhD,eAAe,iBAAkB,KAAK,MAAM,WAAW;AAOrD,QAAM,KAAK,KAAK,MANH;GACX;GACA,cAAc;GACd,oBAAoB;GACrB,CAE0B;AAC3B,SAAO,OAAO,IAAI;;AAGpB,QAAO,UAAU;;;;;;CCxDjB,MAAM;CACN,MAAM,OAAO,QAAQ,OAAO;CAC5B,MAAM,0BAA8B;CACpC,MAAM,8BAAkC;CACxC,MAAM,8BAAkC;CACxC,MAAM;CAEN,SAAS,SAAU,KAAK,MAAM,MAAM;AAClC,SAAO,QAAQ,EAAE;EACjB,MAAM,YAAY,KAAK,aAAa,KAAK,WAAW;EAEpD,MAAM,EAAE,SAAS,iBAAiB,UAAU,KAAK,eAAe,KAAK,MAAM,QAAQ,KAAK;AACxF,OAAK,qBAAqB,KAAK,SAAS,MAAM,OAAO;AACrD,MAAI,CAAC,aAAa,KAAK,CAAE,YAAW,KAAK,QAAQ,KAAK,CAAC;AACvD,SAAO,SAAS,KAAK,MAAM,WAAW,eAAe;;CAGvD,SAAS,aAAc,MAAM;EAC3B,MAAM,SAAS,KAAK,QAAQ,KAAK;AAEjC,SADmB,KAAK,MAAM,OAAO,CACnB,SAAS;;CAG7B,SAAS,SAAU,KAAK,MAAM,WAAW,gBAAgB;AACvD,MAAI,eAAgB,QAAO,OAAO,KAAK,MAAM,UAAU;AACvD,MAAI,WAAW;AACb,cAAW,KAAK;AAChB,UAAO,OAAO,KAAK,MAAM,UAAU;;AAErC,MAAI,GAAG,WAAW,KAAK,CAAE,OAAM,IAAI,MAAM,uBAAuB;AAChE,SAAO,OAAO,KAAK,MAAM,UAAU;;CAGrC,SAAS,OAAQ,KAAK,MAAM,WAAW;AACrC,MAAI;AACF,MAAG,WAAW,KAAK,KAAK;WACjB,KAAK;AACZ,OAAI,IAAI,SAAS,QAAS,OAAM;AAChC,UAAO,iBAAiB,KAAK,MAAM,UAAU;;;CAIjD,SAAS,iBAAkB,KAAK,MAAM,WAAW;AAM/C,WAAS,KAAK,MALD;GACX;GACA,cAAc;GACd,oBAAoB;GACrB,CACwB;AACzB,SAAO,WAAW,IAAI;;AAGxB,QAAO,UAAU;;;;;;CCpDjB,MAAM,2BAA4B;AAClC,QAAO,UAAU;EACf,MAAM,mBAAoB;EAC1B;EACD;;;;;;ACJD,QAAO,UAAU;EAEf;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACD;;;;;;ACfD;AAEA;AAEA;AAEA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2DA;AACA;AACA;AACA;AAEA;;AAGC;AACC;AACC;;;;AAKA;AAEA;;AAGD;;;;;AAMD;;;;AAKA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAGA;;;AAKG;AACC;AAIA;AAIA;;AAGD;;;;;;;AAUA;;;;;;AAMA;;AAMA;;;;;;;;;;;;;;AAgBA;AAIA;;;;AAQA;AACC;AACA;AACA;;AAEA;;AAIA;AACA;AACA;;;AAKD;;AAOA;AAIA;;;;;;;;;;;;;AAcH;;AAGD;;;;ACtNA,SAAS,QAAQ,MAAM,OAAO,WAAW,OAAO,WAAW,KAAK,OAAOE,qBAAQ,MAAM;CACpF,MAAM,SAAS,KAAK,WAAW,IAAI,GAAG,KAAM,KAAK,WAAW,IAAI,MAAM;CACtE,MAAM,WAAW,KAAK,QAAQ,SAAS,KAAK;CAC5C,MAAM,qBAAqB,KAAK,QAAQ,KAAK;AAC7C,QAAO,aAAa,OAAO,uBAAuB,MAAM,WAAW;;AAGpE,MAAM,EAAC,QAAOA;AAEd,IAAI;AACJ,IACC,QAAQ,WAAW,IAChB,QAAQ,YAAY,IACpB,QAAQ,cAAc,IACtB,QAAQ,cAAc,CAEzB,kBAAiB;SAEjB,QAAQ,QAAQ,IACb,QAAQ,SAAS,IACjB,QAAQ,aAAa,IACrB,QAAQ,eAAe,CAE1B,kBAAiB;AAGlB,SAAS,gBAAgB;AACxB,KAAI,iBAAiB,KAAK;AACzB,MAAI,IAAI,gBAAgB,OACvB,QAAO;AAGR,MAAI,IAAI,gBAAgB,QACvB,QAAO;AAGR,SAAO,IAAI,YAAY,WAAW,IAAI,IAAI,KAAK,IAAI,OAAO,SAAS,IAAI,aAAa,GAAG,EAAE,EAAE;;;AAI7F,SAAS,eAAe,OAAO;AAC9B,KAAI,UAAU,EACb,QAAO;AAGR,QAAO;EACN;EACA,UAAU;EACV,QAAQ,SAAS;EACjB,QAAQ,SAAS;EACjB;;AAGF,SAAS,eAAe,YAAY,EAAC,aAAa,aAAa,SAAQ,EAAE,EAAE;CAC1E,MAAM,mBAAmB,eAAe;AACxC,KAAI,qBAAqB,OACxB,kBAAiB;CAGlB,MAAM,aAAa,aAAa,iBAAiB;AAEjD,KAAI,eAAe,EAClB,QAAO;AAGR,KAAI,YAAY;AACf,MAAI,QAAQ,YAAY,IACpB,QAAQ,aAAa,IACrB,QAAQ,kBAAkB,CAC7B,QAAO;AAGR,MAAI,QAAQ,YAAY,CACvB,QAAO;;AAMT,KAAI,cAAc,OAAO,gBAAgB,IACxC,QAAO;AAGR,KAAI,cAAc,CAAC,eAAe,eAAe,OAChD,QAAO;CAGR,MAAM,MAAM,cAAc;AAE1B,KAAI,IAAI,SAAS,OAChB,QAAO;AAGR,KAAIA,qBAAQ,aAAa,SAAS;EAGjC,MAAM,YAAYC,gBAAG,SAAS,CAAC,MAAM,IAAI;AACzC,MACC,OAAO,UAAU,GAAG,IAAI,MACrB,OAAO,UAAU,GAAG,IAAI,MAE3B,QAAO,OAAO,UAAU,GAAG,IAAI,QAAS,IAAI;AAG7C,SAAO;;AAGR,KAAI,QAAQ,KAAK;AAChB,MAAI;GAAC;GAAkB;GAAiB;GAAW,CAAC,MAAK,QAAO,OAAO,IAAI,CAC1E,QAAO;AAGR,MAAI;GAAC;GAAU;GAAY;GAAa;GAAa;GAAQ,CAAC,MAAK,SAAQ,QAAQ,IAAI,IAAI,IAAI,YAAY,WAC1G,QAAO;AAGR,SAAO;;AAGR,KAAI,sBAAsB,IACzB,QAAO,gCAAgC,KAAK,IAAI,iBAAiB,GAAG,IAAI;AAGzE,KAAI,IAAI,cAAc,YACrB,QAAO;AAGR,KAAI,IAAI,SAAS,cAChB,QAAO;AAGR,KAAI,IAAI,SAAS,gBAChB,QAAO;AAGR,KAAI,IAAI,SAAS,UAChB,QAAO;AAGR,KAAI,kBAAkB,KAAK;EAC1B,MAAM,UAAU,OAAO,UAAU,IAAI,wBAAwB,IAAI,MAAM,IAAI,CAAC,IAAI,GAAG;AAEnF,UAAQ,IAAI,cAAZ;GACC,KAAK,YACJ,QAAO,WAAW,IAAI,IAAI;GAG3B,KAAK,iBACJ,QAAO;;;AAMV,KAAI,iBAAiB,KAAK,IAAI,KAAK,CAClC,QAAO;AAGR,KAAI,8DAA8D,KAAK,IAAI,KAAK,CAC/E,QAAO;AAGR,KAAI,eAAe,IAClB,QAAO;AAGR,QAAO;;AAGR,SAAgB,oBAAoB,QAAQ,UAAU,EAAE,EAAE;AAMzD,QAAO,eALO,eAAe,QAAQ;EACpC,aAAa,UAAU,OAAO;EAC9B,GAAG;EACH,CAAC,CAE0B;;AAG7B,MAAM,gBAAgB;CACrB,QAAQ,oBAAoB,EAAC,OAAOC,iBAAI,OAAO,EAAE,EAAC,CAAC;CACnD,QAAQ,oBAAoB,EAAC,OAAOA,iBAAI,OAAO,EAAE,EAAC,CAAC;CACnD;;;;AC1LD,SAAgB,iBAAiB,QAAQ,WAAW,UAAU;CAC7D,IAAI,QAAQ,OAAO,QAAQ,UAAU;AACrC,KAAI,UAAU,GACb,QAAO;CAGR,MAAM,kBAAkB,UAAU;CAClC,IAAI,WAAW;CACf,IAAI,cAAc;AAClB,IAAG;AACF,iBAAe,OAAO,MAAM,UAAU,MAAM,GAAG,YAAY;AAC3D,aAAW,QAAQ;AACnB,UAAQ,OAAO,QAAQ,WAAW,SAAS;UACnC,UAAU;AAEnB,gBAAe,OAAO,MAAM,SAAS;AACrC,QAAO;;AAGR,SAAgB,+BAA+B,QAAQ,QAAQ,SAAS,OAAO;CAC9E,IAAI,WAAW;CACf,IAAI,cAAc;AAClB,IAAG;EACF,MAAM,QAAQ,OAAO,QAAQ,OAAO;AACpC,iBAAe,OAAO,MAAM,UAAW,QAAQ,QAAQ,IAAI,MAAO,GAAG,UAAU,QAAQ,SAAS,QAAQ;AACxG,aAAW,QAAQ;AACnB,UAAQ,OAAO,QAAQ,MAAM,SAAS;UAC9B,UAAU;AAEnB,gBAAe,OAAO,MAAM,SAAS;AACrC,QAAO;;;;;ACxBR,MAAM,EAAC,QAAQ,aAAa,QAAQ,gBAAe;AAEnD,MAAM,YAAY,OAAO,YAAY;AACrC,MAAM,SAAS,OAAO,SAAS;AAC/B,MAAM,WAAW,OAAO,WAAW;AAGnC,MAAM,eAAe;CACpB;CACA;CACA;CACA;CACA;AAED,MAAM,SAAS,OAAO,OAAO,KAAK;AAElC,MAAM,gBAAgB,QAAQ,UAAU,EAAE,KAAK;AAC9C,KAAI,QAAQ,SAAS,EAAE,OAAO,UAAU,QAAQ,MAAM,IAAI,QAAQ,SAAS,KAAK,QAAQ,SAAS,GAChG,OAAM,IAAI,MAAM,sDAAsD;CAIvE,MAAM,aAAa,cAAc,YAAY,QAAQ;AACrD,QAAO,QAAQ,QAAQ,UAAU,SAAY,aAAa,QAAQ;;AAUnE,MAAM,gBAAe,YAAW;CAC/B,MAAM,SAAS,GAAG,YAAY,QAAQ,KAAK,IAAI;AAC/C,cAAa,OAAO,QAAQ;AAE5B,QAAO,eAAe,OAAO,YAAY,UAAU;AAEnD,QAAO;;AAGR,SAAS,YAAY,SAAS;AAC7B,QAAO,aAAa,QAAQ;;AAG7B,OAAO,eAAe,YAAY,WAAW,SAAS,UAAU;AAEhE,KAAK,MAAM,CAAC,WAAW,UAAU,OAAO,QAAQ,WAAW,CAC1D,QAAO,aAAa,EACnB,MAAM;CACL,MAAM,UAAU,cAAc,MAAM,aAAa,MAAM,MAAM,MAAM,OAAO,KAAK,QAAQ,EAAE,KAAK,UAAU;AACxG,QAAO,eAAe,MAAM,WAAW,EAAC,OAAO,SAAQ,CAAC;AACxD,QAAO;GAER;AAGF,OAAO,UAAU,EAChB,MAAM;CACL,MAAM,UAAU,cAAc,MAAM,KAAK,SAAS,KAAK;AACvD,QAAO,eAAe,MAAM,WAAW,EAAC,OAAO,SAAQ,CAAC;AACxD,QAAO;GAER;AAED,MAAM,gBAAgB,OAAO,OAAO,MAAM,GAAG,eAAe;AAC3D,KAAI,UAAU,OAAO;AACpB,MAAI,UAAU,UACb,QAAO,WAAW,MAAM,QAAQ,GAAG,WAAW;AAG/C,MAAI,UAAU,UACb,QAAO,WAAW,MAAM,QAAQ,WAAW,aAAa,GAAG,WAAW,CAAC;AAGxE,SAAO,WAAW,MAAM,KAAK,WAAW,UAAU,GAAG,WAAW,CAAC;;AAGlE,KAAI,UAAU,MACb,QAAO,aAAa,OAAO,OAAO,MAAM,GAAG,WAAW,SAAS,GAAG,WAAW,CAAC;AAG/E,QAAO,WAAW,MAAM,OAAO,GAAG,WAAW;;AAK9C,KAAK,MAAM,SAFQ;CAAC;CAAO;CAAO;CAAU,EAEZ;AAC/B,QAAO,SAAS,EACf,MAAM;EACL,MAAM,EAAC,UAAS;AAChB,SAAO,SAAU,GAAG,YAAY;GAC/B,MAAM,SAAS,aAAa,aAAa,OAAO,aAAa,QAAQ,SAAS,GAAG,WAAW,EAAE,WAAW,MAAM,OAAO,KAAK,QAAQ;AACnI,UAAO,cAAc,MAAM,QAAQ,KAAK,UAAU;;IAGpD;CAED,MAAM,UAAU,OAAO,MAAM,GAAG,aAAa,GAAG,MAAM,MAAM,EAAE;AAC9D,QAAO,WAAW,EACjB,MAAM;EACL,MAAM,EAAC,UAAS;AAChB,SAAO,SAAU,GAAG,YAAY;GAC/B,MAAM,SAAS,aAAa,aAAa,OAAO,aAAa,QAAQ,WAAW,GAAG,WAAW,EAAE,WAAW,QAAQ,OAAO,KAAK,QAAQ;AACvI,UAAO,cAAc,MAAM,QAAQ,KAAK,UAAU;;IAGpD;;AAGF,MAAM,QAAQ,OAAO,uBAAuB,IAAI;CAC/C,GAAG;CACH,OAAO;EACN,YAAY;EACZ,MAAM;AACL,UAAO,KAAK,WAAW;;EAExB,IAAI,OAAO;AACV,QAAK,WAAW,QAAQ;;EAEzB;CACD,CAAC;AAEF,MAAM,gBAAgB,MAAM,OAAO,WAAW;CAC7C,IAAI;CACJ,IAAI;AACJ,KAAI,WAAW,QAAW;AACzB,YAAU;AACV,aAAW;QACL;AACN,YAAU,OAAO,UAAU;AAC3B,aAAW,QAAQ,OAAO;;AAG3B,QAAO;EACN;EACA;EACA;EACA;EACA;EACA;;AAGF,MAAM,iBAAiB,MAAM,SAAS,aAAa;CAGlD,MAAM,WAAW,GAAG,eAAe,WAAW,SAAU,WAAW,WAAW,IAAM,KAAK,WAAW,KAAM,WAAW,KAAK,IAAI,CAAC;AAI/H,QAAO,eAAe,SAAS,MAAM;AAErC,SAAQ,aAAa;AACrB,SAAQ,UAAU;AAClB,SAAQ,YAAY;AAEpB,QAAO;;AAGR,MAAM,cAAc,MAAM,WAAW;AACpC,KAAI,KAAK,SAAS,KAAK,CAAC,OACvB,QAAO,KAAK,YAAY,KAAK;CAG9B,IAAI,SAAS,KAAK;AAElB,KAAI,WAAW,OACd,QAAO;CAGR,MAAM,EAAC,SAAS,aAAY;AAC5B,KAAI,OAAO,SAAS,OAAS,CAC5B,QAAO,WAAW,QAAW;AAI5B,WAAS,iBAAiB,QAAQ,OAAO,OAAO,OAAO,KAAK;AAE5D,WAAS,OAAO;;CAOlB,MAAM,UAAU,OAAO,QAAQ,KAAK;AACpC,KAAI,YAAY,GACf,UAAS,+BAA+B,QAAQ,UAAU,SAAS,QAAQ;AAG5E,QAAO,UAAU,SAAS;;AAG3B,OAAO,iBAAiB,YAAY,WAAW,OAAO;AAEtD,MAAM,QAAQ,aAAa;AAC3B,MAAa,cAAc,YAAY,EAAC,OAAO,cAAc,YAAY,QAAQ,GAAE,CAAC;;;;AC5MpF,MAAM,gBAAgB,IAAI,MAAM,UAAU,0BAA0B;AAGnE,KAAI,aAAa,YAAY,aAAa,YACzC;AAID,KAAI,aAAa,eAAe,aAAa,SAC5C;CAGD,MAAM,eAAe,OAAO,yBAAyB,IAAI,SAAS;CAClE,MAAM,iBAAiB,OAAO,yBAAyB,MAAM,SAAS;AAEtE,KAAI,CAAC,gBAAgB,cAAc,eAAe,IAAI,sBACrD;AAGD,QAAO,eAAe,IAAI,UAAU,eAAe;;AAMpD,MAAM,kBAAkB,SAAU,cAAc,gBAAgB;AAC/D,QAAO,iBAAiB,UAAa,aAAa,gBACjD,aAAa,aAAa,eAAe,YACtC,aAAa,eAAe,eAAe,cAC3C,aAAa,iBAAiB,eAAe,iBAC5C,aAAa,YAAY,aAAa,UAAU,eAAe;;AAIrE,MAAM,mBAAmB,IAAI,SAAS;CACrC,MAAM,gBAAgB,OAAO,eAAe,KAAK;AACjD,KAAI,kBAAkB,OAAO,eAAe,GAAG,CAC9C;AAGD,QAAO,eAAe,IAAI,cAAc;;AAGzC,MAAM,mBAAmB,UAAU,aAAa,cAAc,SAAS,MAAM;AAE7E,MAAM,qBAAqB,OAAO,yBAAyB,SAAS,WAAW,WAAW;AAC1F,MAAM,eAAe,OAAO,yBAAyB,SAAS,UAAU,UAAU,OAAO;AAKzF,MAAM,kBAAkB,IAAI,MAAM,SAAS;CAC1C,MAAM,WAAW,SAAS,KAAK,KAAK,QAAQ,KAAK,MAAM,CAAC;CACxD,MAAM,cAAc,gBAAgB,KAAK,MAAM,UAAU,KAAK,UAAU,CAAC;AAEzE,QAAO,eAAe,aAAa,QAAQ,aAAa;CACxD,MAAM,EAAC,UAAU,YAAY,iBAAgB;AAC7C,QAAO,eAAe,IAAI,YAAY;EAAC,OAAO;EAAa;EAAU;EAAY;EAAa,CAAC;;AAGhG,SAAwB,cAAc,IAAI,MAAM,EAAC,wBAAwB,UAAS,EAAE,EAAE;CACrF,MAAM,EAAC,SAAQ;AAEf,MAAK,MAAM,YAAY,QAAQ,QAAQ,KAAK,CAC3C,cAAa,IAAI,MAAM,UAAU,sBAAsB;AAGxD,iBAAgB,IAAI,KAAK;AACzB,gBAAe,IAAI,MAAM,KAAK;AAE9B,QAAO;;;;;ACpER,MAAM,kCAAkB,IAAI,SAAS;AAErC,MAAM,WAAW,WAAW,UAAU,EAAE,KAAK;AAC5C,KAAI,OAAO,cAAc,WACxB,OAAM,IAAI,UAAU,sBAAsB;CAG3C,IAAI;CACJ,IAAI,YAAY;CAChB,MAAM,eAAe,UAAU,eAAe,UAAU,QAAQ;CAEhE,MAAM,UAAU,SAAU,GAAG,YAAY;AACxC,kBAAgB,IAAI,SAAS,EAAE,UAAU;AAEzC,MAAI,cAAc,GAAG;AACpB,iBAAc,UAAU,MAAM,MAAM,WAAW;AAC/C,eAAY;aACF,QAAQ,UAAU,KAC5B,OAAM,IAAI,MAAM,cAAc,aAAa,4BAA4B;AAGxE,SAAO;;AAGR,eAAc,SAAS,UAAU;AACjC,iBAAgB,IAAI,SAAS,UAAU;AAEvC,QAAO;;AAGR,QAAQ,aAAY,cAAa;AAChC,KAAI,CAAC,gBAAgB,IAAI,UAAU,CAClC,OAAM,IAAI,MAAM,wBAAwB,UAAU,KAAK,8CAA8C;AAGtG,QAAO,gBAAgB,IAAI,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACXtC,MAAaC,YAAU,EAAE;AACzBA,UAAQ,KAAK,UAAU,UAAU,UAAU;AAC3C,IAAI,QAAQ,aAAa,QACrB,WAAQ,KAAK,WAAW,WAAW,aAAa,WAAW,WAAW,WAAW,WAAW,UAAU,WAAW,SAIhH;AAEL,IAAI,QAAQ,aAAa,QACrB,WAAQ,KAAK,SAAS,WAAW,UAAU,YAAY;;;;AC9B3D,MAAMC,eAAa,YAAY,CAAC,CAAC,WAC7B,OAAO,YAAY,YACnB,OAAO,QAAQ,mBAAmB,cAClC,OAAO,QAAQ,SAAS,cACxB,OAAO,QAAQ,eAAe,cAC9B,OAAO,QAAQ,cAAc,cAC7B,OAAO,QAAQ,SAAS,cACxB,OAAO,QAAQ,QAAQ,YACvB,OAAO,QAAQ,OAAO;AAC1B,MAAMC,iBAAe,OAAO,IAAI,sBAAsB;AACtD,MAAMC,WAAS;AACf,MAAMC,yBAAuB,OAAO,eAAe,KAAK,OAAO;AAE/D,IAAMC,YAAN,MAAc;CACV,UAAU;EACN,WAAW;EACX,MAAM;EACT;CACD,YAAY;EACR,WAAW,EAAE;EACb,MAAM,EAAE;EACX;CACD,QAAQ;CACR,KAAK,KAAK,QAAQ;CAClB,cAAc;AACV,MAAIF,SAAOD,gBACP,QAAOC,SAAOD;AAElB,yBAAqBC,UAAQD,gBAAc;GACvC,OAAO;GACP,UAAU;GACV,YAAY;GACZ,cAAc;GACjB,CAAC;;CAEN,GAAG,IAAI,IAAI;AACP,OAAK,UAAU,IAAI,KAAK,GAAG;;CAE/B,eAAe,IAAI,IAAI;EACnB,MAAM,OAAO,KAAK,UAAU;EAC5B,MAAM,IAAI,KAAK,QAAQ,GAAG;;AAE1B,MAAI,MAAM,GACN;;AAGJ,MAAI,MAAM,KAAK,KAAK,WAAW,EAC3B,MAAK,SAAS;MAGd,MAAK,OAAO,GAAG,EAAE;;CAGzB,KAAK,IAAI,MAAM,QAAQ;AACnB,MAAI,KAAK,QAAQ,IACb,QAAO;AAEX,OAAK,QAAQ,MAAM;EACnB,IAAI,MAAM;AACV,OAAK,MAAM,MAAM,KAAK,UAAU,IAC5B,OAAM,GAAG,MAAM,OAAO,KAAK,QAAQ;AAEvC,MAAI,OAAO,OACP,OAAM,KAAK,KAAK,aAAa,MAAM,OAAO,IAAI;AAElD,SAAO;;;AAGf,IAAMI,mBAAN,MAAqB;AAErB,MAAMC,oBAAkB,YAAY;AAChC,QAAO;EACH,OAAO,IAAI,MAAM;AACb,UAAO,QAAQ,OAAO,IAAI,KAAK;;EAEnC,OAAO;AACH,UAAO,QAAQ,MAAM;;EAEzB,SAAS;AACL,UAAO,QAAQ,QAAQ;;EAE9B;;AAEL,IAAMC,uBAAN,cAAiCF,iBAAe;CAC5C,SAAS;AACL,eAAa;;CAEjB,OAAO;CACP,SAAS;;AAEb,IAAMG,eAAN,cAAyBH,iBAAe;;CAIpC,UAAUI,UAAQ,aAAa,UAAU,WAAW;;CAEpD,WAAW,IAAIL,WAAS;CACxB;CACA;CACA;CACA,gBAAgB,EAAE;CAClB,UAAU;CACV,YAAY,SAAS;AACjB,SAAO;AACP,QAAKM,UAAW;AAEhB,QAAKC,eAAgB,EAAE;AACvB,OAAK,MAAM,OAAOC,UACd,OAAKD,aAAc,aAAa;GAK5B,MAAM,YAAY,MAAKD,QAAS,UAAU,IAAI;GAC9C,IAAI,EAAE,UAAU,MAAKG;;GAQrB,MAAM,IAAI;AACV,OAAI,OAAO,EAAE,4BAA4B,YACrC,OAAO,EAAE,wBAAwB,UAAU,SAC3C,UAAS,EAAE,wBAAwB;;AAGvC,OAAI,UAAU,WAAW,OAAO;AAC5B,SAAK,QAAQ;IACb,MAAM,MAAM,MAAKA,QAAS,KAAK,QAAQ,MAAM,IAAI;;IAEjD,MAAM,IAAI,QAAQ,WAAW,MAAKC,SAAU;AAC5C,QAAI,CAAC,IACD,SAAQ,KAAK,QAAQ,KAAK,EAAE;;;AAK5C,QAAKC,4BAA6B,QAAQ;AAC1C,QAAKC,sBAAuB,QAAQ;;CAExC,OAAO,IAAI,MAAM;;AAEb,MAAI,CAAChB,YAAU,MAAKU,QAAS,CACzB,cAAa;;AAGjB,MAAI,MAAKO,WAAY,MACjB,MAAK,MAAM;EAEf,MAAM,KAAK,MAAM,aAAa,cAAc;AAC5C,QAAKJ,QAAS,GAAG,IAAI,GAAG;AACxB,eAAa;AACT,SAAKA,QAAS,eAAe,IAAI,GAAG;AACpC,OAAI,MAAKA,QAAS,UAAU,QAAQ,WAAW,KAC3C,MAAKA,QAAS,UAAU,aAAa,WAAW,EAChD,MAAK,QAAQ;;;CAIzB,OAAO;AACH,MAAI,MAAKI,OACL;AAEJ,QAAKA,SAAU;AAKf,QAAKJ,QAAS,SAAS;AACvB,OAAK,MAAM,OAAOD,UACd,KAAI;GACA,MAAM,KAAK,MAAKD,aAAc;AAC9B,OAAI,GACA,OAAKD,QAAS,GAAG,KAAK,GAAG;WAE1B,GAAG;AAEd,QAAKA,QAAS,QAAQ,IAAI,GAAG,MAAM;AAC/B,UAAO,MAAKQ,YAAa,IAAI,GAAG,EAAE;;AAEtC,QAAKR,QAAS,cAAc,SAAS;AACjC,UAAO,MAAKS,kBAAmB,KAAK;;;CAG5C,SAAS;AACL,MAAI,CAAC,MAAKF,OACN;AAEJ,QAAKA,SAAU;AACf,YAAQ,SAAQ,QAAO;GACnB,MAAM,WAAW,MAAKN,aAAc;;AAEpC,OAAI,CAAC,SACD,OAAM,IAAI,MAAM,sCAAsC,IAAI;;AAG9D,OAAI;AACA,UAAKD,QAAS,eAAe,KAAK,SAAS;YAGxC,GAAG;;IAEZ;AACF,QAAKA,QAAS,OAAO,MAAKM;AAC1B,QAAKN,QAAS,aAAa,MAAKK;AAChC,QAAKF,QAAS,SAAS;;CAE3B,mBAAmB,MAAM;;AAErB,MAAI,CAACb,YAAU,MAAKU,QAAS,CACzB,QAAO;AAEX,QAAKA,QAAS,WAAW,QAAQ;;AAEjC,QAAKG,QAAS,KAAK,QAAQ,MAAKH,QAAS,UAAU,KAAK;AACxD,SAAO,MAAKK,0BAA2B,KAAK,MAAKL,SAAU,MAAKA,QAAS,SAAS;;CAEtF,aAAa,IAAI,GAAG,MAAM;EACtB,MAAM,KAAK,MAAKM;AAChB,MAAI,OAAO,UAAUhB,YAAU,MAAKU,QAAS,EAAE;AAC3C,OAAI,OAAO,KAAK,OAAO,SACnB,OAAKA,QAAS,WAAW,KAAK;;GAIlC,MAAM,MAAM,GAAG,KAAK,MAAKA,SAAU,IAAI,GAAG,KAAK;;AAE/C,SAAKG,QAAS,KAAK,QAAQ,MAAKH,QAAS,UAAU,KAAK;;AAExD,UAAO;QAGP,QAAO,GAAG,KAAK,MAAKA,SAAU,IAAI,GAAG,KAAK;;;AAItD,MAAMD,YAAU,WAAW;AAG3B,MAAa,EAUb,kBAQA,cAQA,qBAAYH,iBAAeN,YAAUS,UAAQ,GAAG,IAAID,aAAWC,UAAQ,GAAG,IAAIF,sBAAoB,CAAC;;;;AC7QnG,MAAM,WAAWa,qBAAQ,OAAO,QAC7BA,qBAAQ,SACPA,qBAAQ,OAAO,QAAQA,qBAAQ,SAAS;AAE5C,MAAM,gBAAgB,WAAW,cAAc;AAC9C,gBAAa;AACZ,WAAS,MAAM,YAAc;IAC3B,EAAC,YAAY,MAAK,CAAC;EACrB,SAAS;;;;ACTX,IAAI,WAAW;AAEf,MAAM,YAAY,EAAE;AAEpB,UAAU,QAAQ,iBAAiBC,qBAAQ,WAAW;AACrD,KAAI,CAAC,eAAe,MACnB;AAGD,YAAW;AACX,gBAAe,MAAM,YAAc;;AAGpC,UAAU,QAAQ,iBAAiBA,qBAAQ,WAAW;AACrD,KAAI,CAAC,eAAe,MACnB;AAGD,gBAAe;AACf,YAAW;AACX,gBAAe,MAAM,YAAc;;AAGpC,UAAU,UAAU,OAAO,mBAAmB;AAC7C,KAAI,UAAU,OACb,YAAW;AAGZ,KAAI,SACH,WAAU,KAAK,eAAe;KAE9B,WAAU,KAAK,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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"} \ No newline at end of file diff --git a/packages/cli/dist/mcp-server.cjs b/packages/cli/dist/mcp-server.cjs index 22060c3..7a2e243 100644 --- a/packages/cli/dist/mcp-server.cjs +++ b/packages/cli/dist/mcp-server.cjs @@ -39,7 +39,7 @@ let node_buffer = require("node:buffer"); let child_process = require("child_process"); require("node:events"); -//#region ../../node_modules/ms/index.js +//#region ../../../../../node_modules/ms/index.js var require_ms = /* @__PURE__ */ __commonJSMin(((exports, module) => { /** * Helpers. @@ -158,7 +158,7 @@ var require_ms = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/debug/src/common.js +//#region ../../../../../node_modules/debug/src/common.js var require_common = /* @__PURE__ */ __commonJSMin(((exports, module) => { /** * This is the common logic for both the Node.js and web browser @@ -361,7 +361,7 @@ var require_common = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/debug/src/browser.js +//#region ../../../../../node_modules/debug/src/browser.js var require_browser = /* @__PURE__ */ __commonJSMin(((exports, module) => { /** * This is the web browser implementation of `debug()`. @@ -558,7 +558,7 @@ var require_browser = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/has-flag/index.js +//#region ../../../../../node_modules/has-flag/index.js var require_has_flag = /* @__PURE__ */ __commonJSMin(((exports, module) => { module.exports = (flag, argv = process.argv) => { const prefix = flag.startsWith("-") ? "" : flag.length === 1 ? "-" : "--"; @@ -569,7 +569,7 @@ var require_has_flag = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/supports-color/index.js +//#region ../../../../../node_modules/supports-color/index.js var require_supports_color = /* @__PURE__ */ __commonJSMin(((exports, module) => { const os$1 = require("os"); const tty$1 = require("tty"); @@ -638,7 +638,7 @@ var require_supports_color = /* @__PURE__ */ __commonJSMin(((exports, module) => })); //#endregion -//#region ../../node_modules/debug/src/node.js +//#region ../../../../../node_modules/debug/src/node.js var require_node = /* @__PURE__ */ __commonJSMin(((exports, module) => { /** * Module dependencies. @@ -846,7 +846,7 @@ var require_node = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/debug/src/index.js +//#region ../../../../../node_modules/debug/src/index.js var require_src$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => { /** * Detect Electron renderer / nwjs process, which is node, but we should @@ -857,7 +857,7 @@ var require_src$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/@kwsites/file-exists/dist/src/index.js +//#region ../../../../../node_modules/@kwsites/file-exists/dist/src/index.js var require_src = /* @__PURE__ */ __commonJSMin(((exports) => { var __importDefault = exports && exports.__importDefault || function(mod) { return mod && mod.__esModule ? mod : { "default": mod }; @@ -913,7 +913,7 @@ var require_src = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/@kwsites/file-exists/dist/index.js +//#region ../../../../../node_modules/@kwsites/file-exists/dist/index.js var require_dist$2 = /* @__PURE__ */ __commonJSMin(((exports) => { function __export(m) { for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; @@ -923,7 +923,7 @@ var require_dist$2 = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/@kwsites/promise-deferred/dist/index.js +//#region ../../../../../node_modules/@kwsites/promise-deferred/dist/index.js var require_dist$1 = /* @__PURE__ */ __commonJSMin(((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); exports.createDeferred = exports.deferred = void 0; @@ -976,7 +976,7 @@ var require_dist$1 = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/simple-git/dist/esm/index.js +//#region ../../../../../node_modules/simple-git/dist/esm/index.js var import_dist$1 = require_dist$2(); var import_src = /* @__PURE__ */ __toESM(require_src$1(), 1); var import_dist$2 = require_dist$1(); @@ -4240,7 +4240,7 @@ var Git = require_git(); init_git_response_error(); //#endregion -//#region ../../node_modules/slugify/slugify.js +//#region ../../../../../node_modules/slugify/slugify.js var require_slugify = /* @__PURE__ */ __commonJSMin(((exports, module) => { (function(name, root, factory) { if (typeof exports === "object") { @@ -4457,7 +4457,7 @@ function generateSlugInternal(text) { } //#endregion -//#region ../../node_modules/yaml/dist/nodes/identity.js +//#region ../../../../../node_modules/yaml/dist/nodes/identity.js var require_identity = /* @__PURE__ */ __commonJSMin(((exports) => { const ALIAS = Symbol.for("yaml.alias"); const DOC = Symbol.for("yaml.document"); @@ -4508,7 +4508,7 @@ var require_identity = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/visit.js +//#region ../../../../../node_modules/yaml/dist/visit.js var require_visit = /* @__PURE__ */ __commonJSMin(((exports) => { var identity = require_identity(); const BREAK = Symbol("break visit"); @@ -4699,7 +4699,7 @@ var require_visit = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/doc/directives.js +//#region ../../../../../node_modules/yaml/dist/doc/directives.js var require_directives = /* @__PURE__ */ __commonJSMin(((exports) => { var identity = require_identity(); var visit = require_visit(); @@ -4865,7 +4865,7 @@ var require_directives = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/doc/anchors.js +//#region ../../../../../node_modules/yaml/dist/doc/anchors.js var require_anchors = /* @__PURE__ */ __commonJSMin(((exports) => { var identity = require_identity(); var visit = require_visit(); @@ -4928,7 +4928,7 @@ var require_anchors = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/doc/applyReviver.js +//#region ../../../../../node_modules/yaml/dist/doc/applyReviver.js var require_applyReviver = /* @__PURE__ */ __commonJSMin(((exports) => { /** * Applies the JSON.parse reviver algorithm as defined in the ECMA-262 spec, @@ -4969,7 +4969,7 @@ var require_applyReviver = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/nodes/toJS.js +//#region ../../../../../node_modules/yaml/dist/nodes/toJS.js var require_toJS = /* @__PURE__ */ __commonJSMin(((exports) => { var identity = require_identity(); /** @@ -5007,7 +5007,7 @@ var require_toJS = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/nodes/Node.js +//#region ../../../../../node_modules/yaml/dist/nodes/Node.js var require_Node = /* @__PURE__ */ __commonJSMin(((exports) => { var applyReviver = require_applyReviver(); var identity = require_identity(); @@ -5042,7 +5042,7 @@ var require_Node = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/nodes/Alias.js +//#region ../../../../../node_modules/yaml/dist/nodes/Alias.js var require_Alias = /* @__PURE__ */ __commonJSMin(((exports) => { var anchors = require_anchors(); var visit = require_visit(); @@ -5136,7 +5136,7 @@ var require_Alias = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/nodes/Scalar.js +//#region ../../../../../node_modules/yaml/dist/nodes/Scalar.js var require_Scalar = /* @__PURE__ */ __commonJSMin(((exports) => { var identity = require_identity(); var Node = require_Node(); @@ -5164,7 +5164,7 @@ var require_Scalar = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/doc/createNode.js +//#region ../../../../../node_modules/yaml/dist/doc/createNode.js var require_createNode = /* @__PURE__ */ __commonJSMin(((exports) => { var Alias = require_Alias(); var identity = require_identity(); @@ -5228,7 +5228,7 @@ var require_createNode = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/nodes/Collection.js +//#region ../../../../../node_modules/yaml/dist/nodes/Collection.js var require_Collection = /* @__PURE__ */ __commonJSMin(((exports) => { var createNode = require_createNode(); var identity = require_identity(); @@ -5350,7 +5350,7 @@ var require_Collection = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/stringify/stringifyComment.js +//#region ../../../../../node_modules/yaml/dist/stringify/stringifyComment.js var require_stringifyComment = /* @__PURE__ */ __commonJSMin(((exports) => { /** * Stringifies a comment. @@ -5371,7 +5371,7 @@ var require_stringifyComment = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/stringify/foldFlowLines.js +//#region ../../../../../node_modules/yaml/dist/stringify/foldFlowLines.js var require_foldFlowLines = /* @__PURE__ */ __commonJSMin(((exports) => { const FOLD_FLOW = "flow"; const FOLD_BLOCK = "block"; @@ -5488,7 +5488,7 @@ var require_foldFlowLines = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/stringify/stringifyString.js +//#region ../../../../../node_modules/yaml/dist/stringify/stringifyString.js var require_stringifyString = /* @__PURE__ */ __commonJSMin(((exports) => { var Scalar = require_Scalar(); var foldFlowLines = require_foldFlowLines(); @@ -5713,7 +5713,7 @@ var require_stringifyString = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/stringify/stringify.js +//#region ../../../../../node_modules/yaml/dist/stringify/stringify.js var require_stringify = /* @__PURE__ */ __commonJSMin(((exports) => { var anchors = require_anchors(); var identity = require_identity(); @@ -5821,7 +5821,7 @@ var require_stringify = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/stringify/stringifyPair.js +//#region ../../../../../node_modules/yaml/dist/stringify/stringifyPair.js var require_stringifyPair = /* @__PURE__ */ __commonJSMin(((exports) => { var identity = require_identity(); var Scalar = require_Scalar(); @@ -5919,7 +5919,7 @@ var require_stringifyPair = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/log.js +//#region ../../../../../node_modules/yaml/dist/log.js var require_log = /* @__PURE__ */ __commonJSMin(((exports) => { var node_process$2 = require("process"); function debug(logLevel, ...messages) { @@ -5934,7 +5934,7 @@ var require_log = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/schema/yaml-1.1/merge.js +//#region ../../../../../node_modules/yaml/dist/schema/yaml-1.1/merge.js var require_merge = /* @__PURE__ */ __commonJSMin(((exports) => { var identity = require_identity(); var Scalar = require_Scalar(); @@ -5975,7 +5975,7 @@ var require_merge = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/nodes/addPairToJSMap.js +//#region ../../../../../node_modules/yaml/dist/nodes/addPairToJSMap.js var require_addPairToJSMap = /* @__PURE__ */ __commonJSMin(((exports) => { var log = require_log(); var merge = require_merge(); @@ -6027,7 +6027,7 @@ var require_addPairToJSMap = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/nodes/Pair.js +//#region ../../../../../node_modules/yaml/dist/nodes/Pair.js var require_Pair = /* @__PURE__ */ __commonJSMin(((exports) => { var createNode = require_createNode(); var stringifyPair = require_stringifyPair(); @@ -6061,7 +6061,7 @@ var require_Pair = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/stringify/stringifyCollection.js +//#region ../../../../../node_modules/yaml/dist/stringify/stringifyCollection.js var require_stringifyCollection = /* @__PURE__ */ __commonJSMin(((exports) => { var identity = require_identity(); var stringify = require_stringify(); @@ -6176,7 +6176,7 @@ var require_stringifyCollection = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/nodes/YAMLMap.js +//#region ../../../../../node_modules/yaml/dist/nodes/YAMLMap.js var require_YAMLMap = /* @__PURE__ */ __commonJSMin(((exports) => { var stringifyCollection = require_stringifyCollection(); var addPairToJSMap = require_addPairToJSMap(); @@ -6286,7 +6286,7 @@ var require_YAMLMap = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/schema/common/map.js +//#region ../../../../../node_modules/yaml/dist/schema/common/map.js var require_map = /* @__PURE__ */ __commonJSMin(((exports) => { var identity = require_identity(); var YAMLMap = require_YAMLMap(); @@ -6305,7 +6305,7 @@ var require_map = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/nodes/YAMLSeq.js +//#region ../../../../../node_modules/yaml/dist/nodes/YAMLSeq.js var require_YAMLSeq = /* @__PURE__ */ __commonJSMin(((exports) => { var createNode = require_createNode(); var stringifyCollection = require_stringifyCollection(); @@ -6412,7 +6412,7 @@ var require_YAMLSeq = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/schema/common/seq.js +//#region ../../../../../node_modules/yaml/dist/schema/common/seq.js var require_seq = /* @__PURE__ */ __commonJSMin(((exports) => { var identity = require_identity(); var YAMLSeq = require_YAMLSeq(); @@ -6431,7 +6431,7 @@ var require_seq = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/schema/common/string.js +//#region ../../../../../node_modules/yaml/dist/schema/common/string.js var require_string = /* @__PURE__ */ __commonJSMin(((exports) => { var stringifyString = require_stringifyString(); const string = { @@ -6448,7 +6448,7 @@ var require_string = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/schema/common/null.js +//#region ../../../../../node_modules/yaml/dist/schema/common/null.js var require_null = /* @__PURE__ */ __commonJSMin(((exports) => { var Scalar = require_Scalar(); const nullTag = { @@ -6464,7 +6464,7 @@ var require_null = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/schema/core/bool.js +//#region ../../../../../node_modules/yaml/dist/schema/core/bool.js var require_bool$1 = /* @__PURE__ */ __commonJSMin(((exports) => { var Scalar = require_Scalar(); const boolTag = { @@ -6484,7 +6484,7 @@ var require_bool$1 = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/stringify/stringifyNumber.js +//#region ../../../../../node_modules/yaml/dist/stringify/stringifyNumber.js var require_stringifyNumber = /* @__PURE__ */ __commonJSMin(((exports) => { function stringifyNumber({ format, minFractionDigits, tag, value }) { if (typeof value === "bigint") return String(value); @@ -6506,7 +6506,7 @@ var require_stringifyNumber = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/schema/core/float.js +//#region ../../../../../node_modules/yaml/dist/schema/core/float.js var require_float$1 = /* @__PURE__ */ __commonJSMin(((exports) => { var Scalar = require_Scalar(); var stringifyNumber = require_stringifyNumber(); @@ -6549,7 +6549,7 @@ var require_float$1 = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/schema/core/int.js +//#region ../../../../../node_modules/yaml/dist/schema/core/int.js var require_int$1 = /* @__PURE__ */ __commonJSMin(((exports) => { var stringifyNumber = require_stringifyNumber(); const intIdentify = (value) => typeof value === "bigint" || Number.isInteger(value); @@ -6591,7 +6591,7 @@ var require_int$1 = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/schema/core/schema.js +//#region ../../../../../node_modules/yaml/dist/schema/core/schema.js var require_schema$2 = /* @__PURE__ */ __commonJSMin(((exports) => { var map = require_map(); var _null = require_null(); @@ -6617,7 +6617,7 @@ var require_schema$2 = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/schema/json/schema.js +//#region ../../../../../node_modules/yaml/dist/schema/json/schema.js var require_schema$1 = /* @__PURE__ */ __commonJSMin(((exports) => { var Scalar = require_Scalar(); var map = require_map(); @@ -6681,7 +6681,7 @@ var require_schema$1 = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/schema/yaml-1.1/binary.js +//#region ../../../../../node_modules/yaml/dist/schema/yaml-1.1/binary.js var require_binary = /* @__PURE__ */ __commonJSMin(((exports) => { var node_buffer$1 = require("buffer"); var Scalar = require_Scalar(); @@ -6731,7 +6731,7 @@ var require_binary = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/schema/yaml-1.1/pairs.js +//#region ../../../../../node_modules/yaml/dist/schema/yaml-1.1/pairs.js var require_pairs = /* @__PURE__ */ __commonJSMin(((exports) => { var identity = require_identity(); var Pair = require_Pair(); @@ -6792,7 +6792,7 @@ var require_pairs = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/schema/yaml-1.1/omap.js +//#region ../../../../../node_modules/yaml/dist/schema/yaml-1.1/omap.js var require_omap = /* @__PURE__ */ __commonJSMin(((exports) => { var identity = require_identity(); var toJS = require_toJS(); @@ -6856,7 +6856,7 @@ var require_omap = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/schema/yaml-1.1/bool.js +//#region ../../../../../node_modules/yaml/dist/schema/yaml-1.1/bool.js var require_bool = /* @__PURE__ */ __commonJSMin(((exports) => { var Scalar = require_Scalar(); function boolStringify({ value, source }, ctx) { @@ -6884,7 +6884,7 @@ var require_bool = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/schema/yaml-1.1/float.js +//#region ../../../../../node_modules/yaml/dist/schema/yaml-1.1/float.js var require_float = /* @__PURE__ */ __commonJSMin(((exports) => { var Scalar = require_Scalar(); var stringifyNumber = require_stringifyNumber(); @@ -6930,7 +6930,7 @@ var require_float = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/schema/yaml-1.1/int.js +//#region ../../../../../node_modules/yaml/dist/schema/yaml-1.1/int.js var require_int = /* @__PURE__ */ __commonJSMin(((exports) => { var stringifyNumber = require_stringifyNumber(); const intIdentify = (value) => typeof value === "bigint" || Number.isInteger(value); @@ -7006,7 +7006,7 @@ var require_int = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/schema/yaml-1.1/set.js +//#region ../../../../../node_modules/yaml/dist/schema/yaml-1.1/set.js var require_set = /* @__PURE__ */ __commonJSMin(((exports) => { var identity = require_identity(); var Pair = require_Pair(); @@ -7075,7 +7075,7 @@ var require_set = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/schema/yaml-1.1/timestamp.js +//#region ../../../../../node_modules/yaml/dist/schema/yaml-1.1/timestamp.js var require_timestamp = /* @__PURE__ */ __commonJSMin(((exports) => { var stringifyNumber = require_stringifyNumber(); /** Internal types handle bigint as number, because TS can't figure it out. */ @@ -7159,7 +7159,7 @@ var require_timestamp = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/schema/yaml-1.1/schema.js +//#region ../../../../../node_modules/yaml/dist/schema/yaml-1.1/schema.js var require_schema = /* @__PURE__ */ __commonJSMin(((exports) => { var map = require_map(); var _null = require_null(); @@ -7201,7 +7201,7 @@ var require_schema = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/schema/tags.js +//#region ../../../../../node_modules/yaml/dist/schema/tags.js var require_tags = /* @__PURE__ */ __commonJSMin(((exports) => { var map = require_map(); var _null = require_null(); @@ -7286,7 +7286,7 @@ var require_tags = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/schema/Schema.js +//#region ../../../../../node_modules/yaml/dist/schema/Schema.js var require_Schema = /* @__PURE__ */ __commonJSMin(((exports) => { var identity = require_identity(); var map = require_map(); @@ -7316,7 +7316,7 @@ var require_Schema = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/stringify/stringifyDocument.js +//#region ../../../../../node_modules/yaml/dist/stringify/stringifyDocument.js var require_stringifyDocument = /* @__PURE__ */ __commonJSMin(((exports) => { var identity = require_identity(); var stringify = require_stringify(); @@ -7378,7 +7378,7 @@ var require_stringifyDocument = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/doc/Document.js +//#region ../../../../../node_modules/yaml/dist/doc/Document.js var require_Document = /* @__PURE__ */ __commonJSMin(((exports) => { var Alias = require_Alias(); var Collection = require_Collection(); @@ -7660,7 +7660,7 @@ var require_Document = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/errors.js +//#region ../../../../../node_modules/yaml/dist/errors.js var require_errors = /* @__PURE__ */ __commonJSMin(((exports) => { var YAMLError = class extends Error { constructor(name, pos, code, message) { @@ -7714,7 +7714,7 @@ var require_errors = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/compose/resolve-props.js +//#region ../../../../../node_modules/yaml/dist/compose/resolve-props.js var require_resolve_props = /* @__PURE__ */ __commonJSMin(((exports) => { function resolveProps(tokens, { flow, indicator, next, offset, onError, parentIndent, startOnNewline }) { let spaceBefore = false; @@ -7822,7 +7822,7 @@ var require_resolve_props = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/compose/util-contains-newline.js +//#region ../../../../../node_modules/yaml/dist/compose/util-contains-newline.js var require_util_contains_newline = /* @__PURE__ */ __commonJSMin(((exports) => { function containsNewline(key) { if (!key) return null; @@ -7852,7 +7852,7 @@ var require_util_contains_newline = /* @__PURE__ */ __commonJSMin(((exports) => })); //#endregion -//#region ../../node_modules/yaml/dist/compose/util-flow-indent-check.js +//#region ../../../../../node_modules/yaml/dist/compose/util-flow-indent-check.js var require_util_flow_indent_check = /* @__PURE__ */ __commonJSMin(((exports) => { var utilContainsNewline = require_util_contains_newline(); function flowIndentCheck(indent, fc, onError) { @@ -7865,7 +7865,7 @@ var require_util_flow_indent_check = /* @__PURE__ */ __commonJSMin(((exports) => })); //#endregion -//#region ../../node_modules/yaml/dist/compose/util-map-includes.js +//#region ../../../../../node_modules/yaml/dist/compose/util-map-includes.js var require_util_map_includes = /* @__PURE__ */ __commonJSMin(((exports) => { var identity = require_identity(); function mapIncludes(ctx, items, search) { @@ -7878,7 +7878,7 @@ var require_util_map_includes = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/compose/resolve-block-map.js +//#region ../../../../../node_modules/yaml/dist/compose/resolve-block-map.js var require_resolve_block_map = /* @__PURE__ */ __commonJSMin(((exports) => { var Pair = require_Pair(); var YAMLMap = require_YAMLMap(); @@ -7963,7 +7963,7 @@ var require_resolve_block_map = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/compose/resolve-block-seq.js +//#region ../../../../../node_modules/yaml/dist/compose/resolve-block-seq.js var require_resolve_block_seq = /* @__PURE__ */ __commonJSMin(((exports) => { var YAMLSeq = require_YAMLSeq(); var resolveProps = require_resolve_props(); @@ -8006,7 +8006,7 @@ var require_resolve_block_seq = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/compose/resolve-end.js +//#region ../../../../../node_modules/yaml/dist/compose/resolve-end.js var require_resolve_end = /* @__PURE__ */ __commonJSMin(((exports) => { function resolveEnd(end, offset, reqSpace, onError) { let comment = ""; @@ -8045,7 +8045,7 @@ var require_resolve_end = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/compose/resolve-flow-collection.js +//#region ../../../../../node_modules/yaml/dist/compose/resolve-flow-collection.js var require_resolve_flow_collection = /* @__PURE__ */ __commonJSMin(((exports) => { var identity = require_identity(); var Pair = require_Pair(); @@ -8201,7 +8201,7 @@ var require_resolve_flow_collection = /* @__PURE__ */ __commonJSMin(((exports) = })); //#endregion -//#region ../../node_modules/yaml/dist/compose/compose-collection.js +//#region ../../../../../node_modules/yaml/dist/compose/compose-collection.js var require_compose_collection = /* @__PURE__ */ __commonJSMin(((exports) => { var identity = require_identity(); var Scalar = require_Scalar(); @@ -8254,7 +8254,7 @@ var require_compose_collection = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/compose/resolve-block-scalar.js +//#region ../../../../../node_modules/yaml/dist/compose/resolve-block-scalar.js var require_resolve_block_scalar = /* @__PURE__ */ __commonJSMin(((exports) => { var Scalar = require_Scalar(); function resolveBlockScalar(ctx, scalar, onError) { @@ -8430,7 +8430,7 @@ var require_resolve_block_scalar = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/compose/resolve-flow-scalar.js +//#region ../../../../../node_modules/yaml/dist/compose/resolve-flow-scalar.js var require_resolve_flow_scalar = /* @__PURE__ */ __commonJSMin(((exports) => { var Scalar = require_Scalar(); var resolveEnd = require_resolve_end(); @@ -8637,7 +8637,7 @@ var require_resolve_flow_scalar = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/compose/compose-scalar.js +//#region ../../../../../node_modules/yaml/dist/compose/compose-scalar.js var require_compose_scalar = /* @__PURE__ */ __commonJSMin(((exports) => { var identity = require_identity(); var Scalar = require_Scalar(); @@ -8697,7 +8697,7 @@ var require_compose_scalar = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/compose/util-empty-scalar-position.js +//#region ../../../../../node_modules/yaml/dist/compose/util-empty-scalar-position.js var require_util_empty_scalar_position = /* @__PURE__ */ __commonJSMin(((exports) => { function emptyScalarPosition(offset, before, pos) { if (before) { @@ -8725,7 +8725,7 @@ var require_util_empty_scalar_position = /* @__PURE__ */ __commonJSMin(((exports })); //#endregion -//#region ../../node_modules/yaml/dist/compose/compose-node.js +//#region ../../../../../node_modules/yaml/dist/compose/compose-node.js var require_compose_node = /* @__PURE__ */ __commonJSMin(((exports) => { var Alias = require_Alias(); var identity = require_identity(); @@ -8811,7 +8811,7 @@ var require_compose_node = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/compose/compose-doc.js +//#region ../../../../../node_modules/yaml/dist/compose/compose-doc.js var require_compose_doc = /* @__PURE__ */ __commonJSMin(((exports) => { var Document = require_Document(); var composeNode = require_compose_node(); @@ -8854,7 +8854,7 @@ var require_compose_doc = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/compose/composer.js +//#region ../../../../../node_modules/yaml/dist/compose/composer.js var require_composer = /* @__PURE__ */ __commonJSMin(((exports) => { var node_process$1 = require("process"); var directives = require_directives(); @@ -9053,7 +9053,7 @@ var require_composer = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/parse/cst-scalar.js +//#region ../../../../../node_modules/yaml/dist/parse/cst-scalar.js var require_cst_scalar = /* @__PURE__ */ __commonJSMin(((exports) => { var resolveBlockScalar = require_resolve_block_scalar(); var resolveFlowScalar = require_resolve_flow_scalar(); @@ -9321,7 +9321,7 @@ var require_cst_scalar = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/parse/cst-stringify.js +//#region ../../../../../node_modules/yaml/dist/parse/cst-stringify.js var require_cst_stringify = /* @__PURE__ */ __commonJSMin(((exports) => { /** * Stringify a CST document, token, or collection item @@ -9373,7 +9373,7 @@ var require_cst_stringify = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/parse/cst-visit.js +//#region ../../../../../node_modules/yaml/dist/parse/cst-visit.js var require_cst_visit = /* @__PURE__ */ __commonJSMin(((exports) => { const BREAK = Symbol("break visit"); const SKIP = Symbol("skip children"); @@ -9465,7 +9465,7 @@ var require_cst_visit = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/parse/cst.js +//#region ../../../../../node_modules/yaml/dist/parse/cst.js var require_cst = /* @__PURE__ */ __commonJSMin(((exports) => { var cstScalar = require_cst_scalar(); var cstStringify = require_cst_stringify(); @@ -9545,7 +9545,7 @@ var require_cst = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/parse/lexer.js +//#region ../../../../../node_modules/yaml/dist/parse/lexer.js var require_lexer = /* @__PURE__ */ __commonJSMin(((exports) => { var cst = require_cst(); function isEmpty(ch) { @@ -10065,7 +10065,7 @@ var require_lexer = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/parse/line-counter.js +//#region ../../../../../node_modules/yaml/dist/parse/line-counter.js var require_line_counter = /* @__PURE__ */ __commonJSMin(((exports) => { /** * Tracks newlines during parsing in order to provide an efficient API for @@ -10113,7 +10113,7 @@ var require_line_counter = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/parse/parser.js +//#region ../../../../../node_modules/yaml/dist/parse/parser.js var require_parser = /* @__PURE__ */ __commonJSMin(((exports) => { var node_process = require("process"); var cst = require_cst(); @@ -10970,7 +10970,7 @@ var require_parser = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/public-api.js +//#region ../../../../../node_modules/yaml/dist/public-api.js var require_public_api = /* @__PURE__ */ __commonJSMin(((exports) => { var composer = require_composer(); var Document = require_Document(); @@ -11058,7 +11058,7 @@ var require_public_api = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/index.js +//#region ../../../../../node_modules/yaml/dist/index.js var require_dist = /* @__PURE__ */ __commonJSMin(((exports) => { var composer = require_composer(); var Document = require_Document(); @@ -11597,7 +11597,7 @@ function registerTodoTools(server) { } //#endregion -//#region ../../node_modules/escape-string-regexp/index.js +//#region ../../../../../node_modules/escape-string-regexp/index.js function escapeStringRegexp(string) { if (typeof string !== "string") throw new TypeError("Expected a string"); return string.replace(/[|\\{}()[\]^$+*?.]/g, "\\$&").replace(/-/g, "\\x2d"); diff --git a/packages/cli/dist/mcp-server.cjs.map b/packages/cli/dist/mcp-server.cjs.map index 7a5d038..0786d76 100644 --- a/packages/cli/dist/mcp-server.cjs.map +++ b/packages/cli/dist/mcp-server.cjs.map @@ -1 +1 @@ -{"version":3,"file":"mcp-server.cjs","names":["os","tty","FOLDER","Buffer2","path","fs","node_process","node_buffer","node_process","path","fs","path","fs","z","fs","z","path","fs","z","fs","McpServer","StdioServerTransport"],"sources":["../../../node_modules/ms/index.js","../../../node_modules/debug/src/common.js","../../../node_modules/debug/src/browser.js","../../../node_modules/has-flag/index.js","../../../node_modules/supports-color/index.js","../../../node_modules/debug/src/node.js","../../../node_modules/debug/src/index.js","../../../node_modules/@kwsites/file-exists/dist/src/index.js","../../../node_modules/@kwsites/file-exists/dist/index.js","../../../node_modules/@kwsites/promise-deferred/dist/index.js","../../../node_modules/simple-git/dist/esm/index.js","../../../node_modules/slugify/slugify.js","../src/core/core.ts","../../../node_modules/yaml/dist/nodes/identity.js","../../../node_modules/yaml/dist/visit.js","../../../node_modules/yaml/dist/doc/directives.js","../../../node_modules/yaml/dist/doc/anchors.js","../../../node_modules/yaml/dist/doc/applyReviver.js","../../../node_modules/yaml/dist/nodes/toJS.js","../../../node_modules/yaml/dist/nodes/Node.js","../../../node_modules/yaml/dist/nodes/Alias.js","../../../node_modules/yaml/dist/nodes/Scalar.js","../../../node_modules/yaml/dist/doc/createNode.js","../../../node_modules/yaml/dist/nodes/Collection.js","../../../node_modules/yaml/dist/stringify/stringifyComment.js","../../../node_modules/yaml/dist/stringify/foldFlowLines.js","../../../node_modules/yaml/dist/stringify/stringifyString.js","../../../node_modules/yaml/dist/stringify/stringify.js","../../../node_modules/yaml/dist/stringify/stringifyPair.js","../../../node_modules/yaml/dist/log.js","../../../node_modules/yaml/dist/schema/yaml-1.1/merge.js","../../../node_modules/yaml/dist/nodes/addPairToJSMap.js","../../../node_modules/yaml/dist/nodes/Pair.js","../../../node_modules/yaml/dist/stringify/stringifyCollection.js","../../../node_modules/yaml/dist/nodes/YAMLMap.js","../../../node_modules/yaml/dist/schema/common/map.js","../../../node_modules/yaml/dist/nodes/YAMLSeq.js","../../../node_modules/yaml/dist/schema/common/seq.js","../../../node_modules/yaml/dist/schema/common/string.js","../../../node_modules/yaml/dist/schema/common/null.js","../../../node_modules/yaml/dist/schema/core/bool.js","../../../node_modules/yaml/dist/stringify/stringifyNumber.js","../../../node_modules/yaml/dist/schema/core/float.js","../../../node_modules/yaml/dist/schema/core/int.js","../../../node_modules/yaml/dist/schema/core/schema.js","../../../node_modules/yaml/dist/schema/json/schema.js","../../../node_modules/yaml/dist/schema/yaml-1.1/binary.js","../../../node_modules/yaml/dist/schema/yaml-1.1/pairs.js","../../../node_modules/yaml/dist/schema/yaml-1.1/omap.js","../../../node_modules/yaml/dist/schema/yaml-1.1/bool.js","../../../node_modules/yaml/dist/schema/yaml-1.1/float.js","../../../node_modules/yaml/dist/schema/yaml-1.1/int.js","../../../node_modules/yaml/dist/schema/yaml-1.1/set.js","../../../node_modules/yaml/dist/schema/yaml-1.1/timestamp.js","../../../node_modules/yaml/dist/schema/yaml-1.1/schema.js","../../../node_modules/yaml/dist/schema/tags.js","../../../node_modules/yaml/dist/schema/Schema.js","../../../node_modules/yaml/dist/stringify/stringifyDocument.js","../../../node_modules/yaml/dist/doc/Document.js","../../../node_modules/yaml/dist/errors.js","../../../node_modules/yaml/dist/compose/resolve-props.js","../../../node_modules/yaml/dist/compose/util-contains-newline.js","../../../node_modules/yaml/dist/compose/util-flow-indent-check.js","../../../node_modules/yaml/dist/compose/util-map-includes.js","../../../node_modules/yaml/dist/compose/resolve-block-map.js","../../../node_modules/yaml/dist/compose/resolve-block-seq.js","../../../node_modules/yaml/dist/compose/resolve-end.js","../../../node_modules/yaml/dist/compose/resolve-flow-collection.js","../../../node_modules/yaml/dist/compose/compose-collection.js","../../../node_modules/yaml/dist/compose/resolve-block-scalar.js","../../../node_modules/yaml/dist/compose/resolve-flow-scalar.js","../../../node_modules/yaml/dist/compose/compose-scalar.js","../../../node_modules/yaml/dist/compose/util-empty-scalar-position.js","../../../node_modules/yaml/dist/compose/compose-node.js","../../../node_modules/yaml/dist/compose/compose-doc.js","../../../node_modules/yaml/dist/compose/composer.js","../../../node_modules/yaml/dist/parse/cst-scalar.js","../../../node_modules/yaml/dist/parse/cst-stringify.js","../../../node_modules/yaml/dist/parse/cst-visit.js","../../../node_modules/yaml/dist/parse/cst.js","../../../node_modules/yaml/dist/parse/lexer.js","../../../node_modules/yaml/dist/parse/line-counter.js","../../../node_modules/yaml/dist/parse/parser.js","../../../node_modules/yaml/dist/public-api.js","../../../node_modules/yaml/dist/index.js","../src/core/frontmatter.ts","../src/core/phase.ts","../src/mcp/utils.ts","../src/mcp/phase-tools.ts","../src/core/commands.ts","../src/mcp/todo-tools.ts","../../../node_modules/escape-string-regexp/index.js","../src/core/state.ts","../src/mcp/state-tools.ts","../src/mcp/index.ts","../src/mcp-server.ts"],"sourcesContent":["/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar w = d * 7;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function (val, options) {\n options = options || {};\n var type = typeof val;\n if (type === 'string' && val.length > 0) {\n return parse(val);\n } else if (type === 'number' && isFinite(val)) {\n return options.long ? fmtLong(val) : fmtShort(val);\n }\n throw new Error(\n 'val is not a non-empty string or a valid number. val=' +\n JSON.stringify(val)\n );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n str = String(str);\n if (str.length > 100) {\n return;\n }\n var match = /^(-?(?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(\n str\n );\n if (!match) {\n return;\n }\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n case 'weeks':\n case 'week':\n case 'w':\n return n * w;\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n default:\n return undefined;\n }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (msAbs >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (msAbs >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (msAbs >= s) {\n return Math.round(ms / s) + 's';\n }\n return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return plural(ms, msAbs, d, 'day');\n }\n if (msAbs >= h) {\n return plural(ms, msAbs, h, 'hour');\n }\n if (msAbs >= m) {\n return plural(ms, msAbs, m, 'minute');\n }\n if (msAbs >= s) {\n return plural(ms, msAbs, s, 'second');\n }\n return ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, msAbs, n, name) {\n var isPlural = msAbs >= n * 1.5;\n return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');\n}\n","\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n */\n\nfunction setup(env) {\n\tcreateDebug.debug = createDebug;\n\tcreateDebug.default = createDebug;\n\tcreateDebug.coerce = coerce;\n\tcreateDebug.disable = disable;\n\tcreateDebug.enable = enable;\n\tcreateDebug.enabled = enabled;\n\tcreateDebug.humanize = require('ms');\n\tcreateDebug.destroy = destroy;\n\n\tObject.keys(env).forEach(key => {\n\t\tcreateDebug[key] = env[key];\n\t});\n\n\t/**\n\t* The currently active debug mode names, and names to skip.\n\t*/\n\n\tcreateDebug.names = [];\n\tcreateDebug.skips = [];\n\n\t/**\n\t* Map of special \"%n\" handling functions, for the debug \"format\" argument.\n\t*\n\t* Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n\t*/\n\tcreateDebug.formatters = {};\n\n\t/**\n\t* Selects a color for a debug namespace\n\t* @param {String} namespace The namespace string for the debug instance to be colored\n\t* @return {Number|String} An ANSI color code for the given namespace\n\t* @api private\n\t*/\n\tfunction selectColor(namespace) {\n\t\tlet hash = 0;\n\n\t\tfor (let i = 0; i < namespace.length; i++) {\n\t\t\thash = ((hash << 5) - hash) + namespace.charCodeAt(i);\n\t\t\thash |= 0; // Convert to 32bit integer\n\t\t}\n\n\t\treturn createDebug.colors[Math.abs(hash) % createDebug.colors.length];\n\t}\n\tcreateDebug.selectColor = selectColor;\n\n\t/**\n\t* Create a debugger with the given `namespace`.\n\t*\n\t* @param {String} namespace\n\t* @return {Function}\n\t* @api public\n\t*/\n\tfunction createDebug(namespace) {\n\t\tlet prevTime;\n\t\tlet enableOverride = null;\n\t\tlet namespacesCache;\n\t\tlet enabledCache;\n\n\t\tfunction debug(...args) {\n\t\t\t// Disabled?\n\t\t\tif (!debug.enabled) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst self = debug;\n\n\t\t\t// Set `diff` timestamp\n\t\t\tconst curr = Number(new Date());\n\t\t\tconst ms = curr - (prevTime || curr);\n\t\t\tself.diff = ms;\n\t\t\tself.prev = prevTime;\n\t\t\tself.curr = curr;\n\t\t\tprevTime = curr;\n\n\t\t\targs[0] = createDebug.coerce(args[0]);\n\n\t\t\tif (typeof args[0] !== 'string') {\n\t\t\t\t// Anything else let's inspect with %O\n\t\t\t\targs.unshift('%O');\n\t\t\t}\n\n\t\t\t// Apply any `formatters` transformations\n\t\t\tlet index = 0;\n\t\t\targs[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => {\n\t\t\t\t// If we encounter an escaped % then don't increase the array index\n\t\t\t\tif (match === '%%') {\n\t\t\t\t\treturn '%';\n\t\t\t\t}\n\t\t\t\tindex++;\n\t\t\t\tconst formatter = createDebug.formatters[format];\n\t\t\t\tif (typeof formatter === 'function') {\n\t\t\t\t\tconst val = args[index];\n\t\t\t\t\tmatch = formatter.call(self, val);\n\n\t\t\t\t\t// Now we need to remove `args[index]` since it's inlined in the `format`\n\t\t\t\t\targs.splice(index, 1);\n\t\t\t\t\tindex--;\n\t\t\t\t}\n\t\t\t\treturn match;\n\t\t\t});\n\n\t\t\t// Apply env-specific formatting (colors, etc.)\n\t\t\tcreateDebug.formatArgs.call(self, args);\n\n\t\t\tconst logFn = self.log || createDebug.log;\n\t\t\tlogFn.apply(self, args);\n\t\t}\n\n\t\tdebug.namespace = namespace;\n\t\tdebug.useColors = createDebug.useColors();\n\t\tdebug.color = createDebug.selectColor(namespace);\n\t\tdebug.extend = extend;\n\t\tdebug.destroy = createDebug.destroy; // XXX Temporary. Will be removed in the next major release.\n\n\t\tObject.defineProperty(debug, 'enabled', {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: false,\n\t\t\tget: () => {\n\t\t\t\tif (enableOverride !== null) {\n\t\t\t\t\treturn enableOverride;\n\t\t\t\t}\n\t\t\t\tif (namespacesCache !== createDebug.namespaces) {\n\t\t\t\t\tnamespacesCache = createDebug.namespaces;\n\t\t\t\t\tenabledCache = createDebug.enabled(namespace);\n\t\t\t\t}\n\n\t\t\t\treturn enabledCache;\n\t\t\t},\n\t\t\tset: v => {\n\t\t\t\tenableOverride = v;\n\t\t\t}\n\t\t});\n\n\t\t// Env-specific initialization logic for debug instances\n\t\tif (typeof createDebug.init === 'function') {\n\t\t\tcreateDebug.init(debug);\n\t\t}\n\n\t\treturn debug;\n\t}\n\n\tfunction extend(namespace, delimiter) {\n\t\tconst newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace);\n\t\tnewDebug.log = this.log;\n\t\treturn newDebug;\n\t}\n\n\t/**\n\t* Enables a debug mode by namespaces. This can include modes\n\t* separated by a colon and wildcards.\n\t*\n\t* @param {String} namespaces\n\t* @api public\n\t*/\n\tfunction enable(namespaces) {\n\t\tcreateDebug.save(namespaces);\n\t\tcreateDebug.namespaces = namespaces;\n\n\t\tcreateDebug.names = [];\n\t\tcreateDebug.skips = [];\n\n\t\tconst split = (typeof namespaces === 'string' ? namespaces : '')\n\t\t\t.trim()\n\t\t\t.replace(/\\s+/g, ',')\n\t\t\t.split(',')\n\t\t\t.filter(Boolean);\n\n\t\tfor (const ns of split) {\n\t\t\tif (ns[0] === '-') {\n\t\t\t\tcreateDebug.skips.push(ns.slice(1));\n\t\t\t} else {\n\t\t\t\tcreateDebug.names.push(ns);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Checks if the given string matches a namespace template, honoring\n\t * asterisks as wildcards.\n\t *\n\t * @param {String} search\n\t * @param {String} template\n\t * @return {Boolean}\n\t */\n\tfunction matchesTemplate(search, template) {\n\t\tlet searchIndex = 0;\n\t\tlet templateIndex = 0;\n\t\tlet starIndex = -1;\n\t\tlet matchIndex = 0;\n\n\t\twhile (searchIndex < search.length) {\n\t\t\tif (templateIndex < template.length && (template[templateIndex] === search[searchIndex] || template[templateIndex] === '*')) {\n\t\t\t\t// Match character or proceed with wildcard\n\t\t\t\tif (template[templateIndex] === '*') {\n\t\t\t\t\tstarIndex = templateIndex;\n\t\t\t\t\tmatchIndex = searchIndex;\n\t\t\t\t\ttemplateIndex++; // Skip the '*'\n\t\t\t\t} else {\n\t\t\t\t\tsearchIndex++;\n\t\t\t\t\ttemplateIndex++;\n\t\t\t\t}\n\t\t\t} else if (starIndex !== -1) { // eslint-disable-line no-negated-condition\n\t\t\t\t// Backtrack to the last '*' and try to match more characters\n\t\t\t\ttemplateIndex = starIndex + 1;\n\t\t\t\tmatchIndex++;\n\t\t\t\tsearchIndex = matchIndex;\n\t\t\t} else {\n\t\t\t\treturn false; // No match\n\t\t\t}\n\t\t}\n\n\t\t// Handle trailing '*' in template\n\t\twhile (templateIndex < template.length && template[templateIndex] === '*') {\n\t\t\ttemplateIndex++;\n\t\t}\n\n\t\treturn templateIndex === template.length;\n\t}\n\n\t/**\n\t* Disable debug output.\n\t*\n\t* @return {String} namespaces\n\t* @api public\n\t*/\n\tfunction disable() {\n\t\tconst namespaces = [\n\t\t\t...createDebug.names,\n\t\t\t...createDebug.skips.map(namespace => '-' + namespace)\n\t\t].join(',');\n\t\tcreateDebug.enable('');\n\t\treturn namespaces;\n\t}\n\n\t/**\n\t* Returns true if the given mode name is enabled, false otherwise.\n\t*\n\t* @param {String} name\n\t* @return {Boolean}\n\t* @api public\n\t*/\n\tfunction enabled(name) {\n\t\tfor (const skip of createDebug.skips) {\n\t\t\tif (matchesTemplate(name, skip)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tfor (const ns of createDebug.names) {\n\t\t\tif (matchesTemplate(name, ns)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t* Coerce `val`.\n\t*\n\t* @param {Mixed} val\n\t* @return {Mixed}\n\t* @api private\n\t*/\n\tfunction coerce(val) {\n\t\tif (val instanceof Error) {\n\t\t\treturn val.stack || val.message;\n\t\t}\n\t\treturn val;\n\t}\n\n\t/**\n\t* XXX DO NOT USE. This is a temporary stub function.\n\t* XXX It WILL be removed in the next major release.\n\t*/\n\tfunction destroy() {\n\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t}\n\n\tcreateDebug.enable(createDebug.load());\n\n\treturn createDebug;\n}\n\nmodule.exports = setup;\n","/* eslint-env browser */\n\n/**\n * This is the web browser implementation of `debug()`.\n */\n\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = localstorage();\nexports.destroy = (() => {\n\tlet warned = false;\n\n\treturn () => {\n\t\tif (!warned) {\n\t\t\twarned = true;\n\t\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t\t}\n\t};\n})();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n\t'#0000CC',\n\t'#0000FF',\n\t'#0033CC',\n\t'#0033FF',\n\t'#0066CC',\n\t'#0066FF',\n\t'#0099CC',\n\t'#0099FF',\n\t'#00CC00',\n\t'#00CC33',\n\t'#00CC66',\n\t'#00CC99',\n\t'#00CCCC',\n\t'#00CCFF',\n\t'#3300CC',\n\t'#3300FF',\n\t'#3333CC',\n\t'#3333FF',\n\t'#3366CC',\n\t'#3366FF',\n\t'#3399CC',\n\t'#3399FF',\n\t'#33CC00',\n\t'#33CC33',\n\t'#33CC66',\n\t'#33CC99',\n\t'#33CCCC',\n\t'#33CCFF',\n\t'#6600CC',\n\t'#6600FF',\n\t'#6633CC',\n\t'#6633FF',\n\t'#66CC00',\n\t'#66CC33',\n\t'#9900CC',\n\t'#9900FF',\n\t'#9933CC',\n\t'#9933FF',\n\t'#99CC00',\n\t'#99CC33',\n\t'#CC0000',\n\t'#CC0033',\n\t'#CC0066',\n\t'#CC0099',\n\t'#CC00CC',\n\t'#CC00FF',\n\t'#CC3300',\n\t'#CC3333',\n\t'#CC3366',\n\t'#CC3399',\n\t'#CC33CC',\n\t'#CC33FF',\n\t'#CC6600',\n\t'#CC6633',\n\t'#CC9900',\n\t'#CC9933',\n\t'#CCCC00',\n\t'#CCCC33',\n\t'#FF0000',\n\t'#FF0033',\n\t'#FF0066',\n\t'#FF0099',\n\t'#FF00CC',\n\t'#FF00FF',\n\t'#FF3300',\n\t'#FF3333',\n\t'#FF3366',\n\t'#FF3399',\n\t'#FF33CC',\n\t'#FF33FF',\n\t'#FF6600',\n\t'#FF6633',\n\t'#FF9900',\n\t'#FF9933',\n\t'#FFCC00',\n\t'#FFCC33'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\n// eslint-disable-next-line complexity\nfunction useColors() {\n\t// NB: In an Electron preload script, document will be defined but not fully\n\t// initialized. Since we know we're in Chrome, we'll just detect this case\n\t// explicitly\n\tif (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) {\n\t\treturn true;\n\t}\n\n\t// Internet Explorer and Edge do not support colors.\n\tif (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\n\t\treturn false;\n\t}\n\n\tlet m;\n\n\t// Is webkit? http://stackoverflow.com/a/16459606/376773\n\t// document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n\t// eslint-disable-next-line no-return-assign\n\treturn (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n\t\t// Is firebug? http://stackoverflow.com/a/398120/376773\n\t\t(typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n\t\t// Is firefox >= v31?\n\t\t// https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && (m = navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/)) && parseInt(m[1], 10) >= 31) ||\n\t\t// Double check webkit in userAgent just in case we are in a worker\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n\targs[0] = (this.useColors ? '%c' : '') +\n\t\tthis.namespace +\n\t\t(this.useColors ? ' %c' : ' ') +\n\t\targs[0] +\n\t\t(this.useColors ? '%c ' : ' ') +\n\t\t'+' + module.exports.humanize(this.diff);\n\n\tif (!this.useColors) {\n\t\treturn;\n\t}\n\n\tconst c = 'color: ' + this.color;\n\targs.splice(1, 0, c, 'color: inherit');\n\n\t// The final \"%c\" is somewhat tricky, because there could be other\n\t// arguments passed either before or after the %c, so we need to\n\t// figure out the correct index to insert the CSS into\n\tlet index = 0;\n\tlet lastC = 0;\n\targs[0].replace(/%[a-zA-Z%]/g, match => {\n\t\tif (match === '%%') {\n\t\t\treturn;\n\t\t}\n\t\tindex++;\n\t\tif (match === '%c') {\n\t\t\t// We only are interested in the *last* %c\n\t\t\t// (the user may have provided their own)\n\t\t\tlastC = index;\n\t\t}\n\t});\n\n\targs.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.debug()` when available.\n * No-op when `console.debug` is not a \"function\".\n * If `console.debug` is not available, falls back\n * to `console.log`.\n *\n * @api public\n */\nexports.log = console.debug || console.log || (() => {});\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\nfunction save(namespaces) {\n\ttry {\n\t\tif (namespaces) {\n\t\t\texports.storage.setItem('debug', namespaces);\n\t\t} else {\n\t\t\texports.storage.removeItem('debug');\n\t\t}\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\nfunction load() {\n\tlet r;\n\ttry {\n\t\tr = exports.storage.getItem('debug') || exports.storage.getItem('DEBUG') ;\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n\n\t// If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n\tif (!r && typeof process !== 'undefined' && 'env' in process) {\n\t\tr = process.env.DEBUG;\n\t}\n\n\treturn r;\n}\n\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\nfunction localstorage() {\n\ttry {\n\t\t// TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context\n\t\t// The Browser also has localStorage in the global context.\n\t\treturn localStorage;\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\nmodule.exports = require('./common')(exports);\n\nconst {formatters} = module.exports;\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nformatters.j = function (v) {\n\ttry {\n\t\treturn JSON.stringify(v);\n\t} catch (error) {\n\t\treturn '[UnexpectedJSONParseError]: ' + error.message;\n\t}\n};\n","'use strict';\n\nmodule.exports = (flag, argv = process.argv) => {\n\tconst prefix = flag.startsWith('-') ? '' : (flag.length === 1 ? '-' : '--');\n\tconst position = argv.indexOf(prefix + flag);\n\tconst terminatorPosition = argv.indexOf('--');\n\treturn position !== -1 && (terminatorPosition === -1 || position < terminatorPosition);\n};\n","'use strict';\nconst os = require('os');\nconst tty = require('tty');\nconst hasFlag = require('has-flag');\n\nconst {env} = process;\n\nlet forceColor;\nif (hasFlag('no-color') ||\n\thasFlag('no-colors') ||\n\thasFlag('color=false') ||\n\thasFlag('color=never')) {\n\tforceColor = 0;\n} else if (hasFlag('color') ||\n\thasFlag('colors') ||\n\thasFlag('color=true') ||\n\thasFlag('color=always')) {\n\tforceColor = 1;\n}\n\nif ('FORCE_COLOR' in env) {\n\tif (env.FORCE_COLOR === 'true') {\n\t\tforceColor = 1;\n\t} else if (env.FORCE_COLOR === 'false') {\n\t\tforceColor = 0;\n\t} else {\n\t\tforceColor = env.FORCE_COLOR.length === 0 ? 1 : Math.min(parseInt(env.FORCE_COLOR, 10), 3);\n\t}\n}\n\nfunction translateLevel(level) {\n\tif (level === 0) {\n\t\treturn false;\n\t}\n\n\treturn {\n\t\tlevel,\n\t\thasBasic: true,\n\t\thas256: level >= 2,\n\t\thas16m: level >= 3\n\t};\n}\n\nfunction supportsColor(haveStream, streamIsTTY) {\n\tif (forceColor === 0) {\n\t\treturn 0;\n\t}\n\n\tif (hasFlag('color=16m') ||\n\t\thasFlag('color=full') ||\n\t\thasFlag('color=truecolor')) {\n\t\treturn 3;\n\t}\n\n\tif (hasFlag('color=256')) {\n\t\treturn 2;\n\t}\n\n\tif (haveStream && !streamIsTTY && forceColor === undefined) {\n\t\treturn 0;\n\t}\n\n\tconst min = forceColor || 0;\n\n\tif (env.TERM === 'dumb') {\n\t\treturn min;\n\t}\n\n\tif (process.platform === 'win32') {\n\t\t// Windows 10 build 10586 is the first Windows release that supports 256 colors.\n\t\t// Windows 10 build 14931 is the first release that supports 16m/TrueColor.\n\t\tconst osRelease = os.release().split('.');\n\t\tif (\n\t\t\tNumber(osRelease[0]) >= 10 &&\n\t\t\tNumber(osRelease[2]) >= 10586\n\t\t) {\n\t\t\treturn Number(osRelease[2]) >= 14931 ? 3 : 2;\n\t\t}\n\n\t\treturn 1;\n\t}\n\n\tif ('CI' in env) {\n\t\tif (['TRAVIS', 'CIRCLECI', 'APPVEYOR', 'GITLAB_CI', 'GITHUB_ACTIONS', 'BUILDKITE'].some(sign => sign in env) || env.CI_NAME === 'codeship') {\n\t\t\treturn 1;\n\t\t}\n\n\t\treturn min;\n\t}\n\n\tif ('TEAMCITY_VERSION' in env) {\n\t\treturn /^(9\\.(0*[1-9]\\d*)\\.|\\d{2,}\\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0;\n\t}\n\n\tif (env.COLORTERM === 'truecolor') {\n\t\treturn 3;\n\t}\n\n\tif ('TERM_PROGRAM' in env) {\n\t\tconst version = parseInt((env.TERM_PROGRAM_VERSION || '').split('.')[0], 10);\n\n\t\tswitch (env.TERM_PROGRAM) {\n\t\t\tcase 'iTerm.app':\n\t\t\t\treturn version >= 3 ? 3 : 2;\n\t\t\tcase 'Apple_Terminal':\n\t\t\t\treturn 2;\n\t\t\t// No default\n\t\t}\n\t}\n\n\tif (/-256(color)?$/i.test(env.TERM)) {\n\t\treturn 2;\n\t}\n\n\tif (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) {\n\t\treturn 1;\n\t}\n\n\tif ('COLORTERM' in env) {\n\t\treturn 1;\n\t}\n\n\treturn min;\n}\n\nfunction getSupportLevel(stream) {\n\tconst level = supportsColor(stream, stream && stream.isTTY);\n\treturn translateLevel(level);\n}\n\nmodule.exports = {\n\tsupportsColor: getSupportLevel,\n\tstdout: translateLevel(supportsColor(true, tty.isatty(1))),\n\tstderr: translateLevel(supportsColor(true, tty.isatty(2)))\n};\n","/**\n * Module dependencies.\n */\n\nconst tty = require('tty');\nconst util = require('util');\n\n/**\n * This is the Node.js implementation of `debug()`.\n */\n\nexports.init = init;\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.destroy = util.deprecate(\n\t() => {},\n\t'Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.'\n);\n\n/**\n * Colors.\n */\n\nexports.colors = [6, 2, 3, 4, 5, 1];\n\ntry {\n\t// Optional dependency (as in, doesn't need to be installed, NOT like optionalDependencies in package.json)\n\t// eslint-disable-next-line import/no-extraneous-dependencies\n\tconst supportsColor = require('supports-color');\n\n\tif (supportsColor && (supportsColor.stderr || supportsColor).level >= 2) {\n\t\texports.colors = [\n\t\t\t20,\n\t\t\t21,\n\t\t\t26,\n\t\t\t27,\n\t\t\t32,\n\t\t\t33,\n\t\t\t38,\n\t\t\t39,\n\t\t\t40,\n\t\t\t41,\n\t\t\t42,\n\t\t\t43,\n\t\t\t44,\n\t\t\t45,\n\t\t\t56,\n\t\t\t57,\n\t\t\t62,\n\t\t\t63,\n\t\t\t68,\n\t\t\t69,\n\t\t\t74,\n\t\t\t75,\n\t\t\t76,\n\t\t\t77,\n\t\t\t78,\n\t\t\t79,\n\t\t\t80,\n\t\t\t81,\n\t\t\t92,\n\t\t\t93,\n\t\t\t98,\n\t\t\t99,\n\t\t\t112,\n\t\t\t113,\n\t\t\t128,\n\t\t\t129,\n\t\t\t134,\n\t\t\t135,\n\t\t\t148,\n\t\t\t149,\n\t\t\t160,\n\t\t\t161,\n\t\t\t162,\n\t\t\t163,\n\t\t\t164,\n\t\t\t165,\n\t\t\t166,\n\t\t\t167,\n\t\t\t168,\n\t\t\t169,\n\t\t\t170,\n\t\t\t171,\n\t\t\t172,\n\t\t\t173,\n\t\t\t178,\n\t\t\t179,\n\t\t\t184,\n\t\t\t185,\n\t\t\t196,\n\t\t\t197,\n\t\t\t198,\n\t\t\t199,\n\t\t\t200,\n\t\t\t201,\n\t\t\t202,\n\t\t\t203,\n\t\t\t204,\n\t\t\t205,\n\t\t\t206,\n\t\t\t207,\n\t\t\t208,\n\t\t\t209,\n\t\t\t214,\n\t\t\t215,\n\t\t\t220,\n\t\t\t221\n\t\t];\n\t}\n} catch (error) {\n\t// Swallow - we only care if `supports-color` is available; it doesn't have to be.\n}\n\n/**\n * Build up the default `inspectOpts` object from the environment variables.\n *\n * $ DEBUG_COLORS=no DEBUG_DEPTH=10 DEBUG_SHOW_HIDDEN=enabled node script.js\n */\n\nexports.inspectOpts = Object.keys(process.env).filter(key => {\n\treturn /^debug_/i.test(key);\n}).reduce((obj, key) => {\n\t// Camel-case\n\tconst prop = key\n\t\t.substring(6)\n\t\t.toLowerCase()\n\t\t.replace(/_([a-z])/g, (_, k) => {\n\t\t\treturn k.toUpperCase();\n\t\t});\n\n\t// Coerce string value into JS value\n\tlet val = process.env[key];\n\tif (/^(yes|on|true|enabled)$/i.test(val)) {\n\t\tval = true;\n\t} else if (/^(no|off|false|disabled)$/i.test(val)) {\n\t\tval = false;\n\t} else if (val === 'null') {\n\t\tval = null;\n\t} else {\n\t\tval = Number(val);\n\t}\n\n\tobj[prop] = val;\n\treturn obj;\n}, {});\n\n/**\n * Is stdout a TTY? Colored output is enabled when `true`.\n */\n\nfunction useColors() {\n\treturn 'colors' in exports.inspectOpts ?\n\t\tBoolean(exports.inspectOpts.colors) :\n\t\ttty.isatty(process.stderr.fd);\n}\n\n/**\n * Adds ANSI color escape codes if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n\tconst {namespace: name, useColors} = this;\n\n\tif (useColors) {\n\t\tconst c = this.color;\n\t\tconst colorCode = '\\u001B[3' + (c < 8 ? c : '8;5;' + c);\n\t\tconst prefix = ` ${colorCode};1m${name} \\u001B[0m`;\n\n\t\targs[0] = prefix + args[0].split('\\n').join('\\n' + prefix);\n\t\targs.push(colorCode + 'm+' + module.exports.humanize(this.diff) + '\\u001B[0m');\n\t} else {\n\t\targs[0] = getDate() + name + ' ' + args[0];\n\t}\n}\n\nfunction getDate() {\n\tif (exports.inspectOpts.hideDate) {\n\t\treturn '';\n\t}\n\treturn new Date().toISOString() + ' ';\n}\n\n/**\n * Invokes `util.formatWithOptions()` with the specified arguments and writes to stderr.\n */\n\nfunction log(...args) {\n\treturn process.stderr.write(util.formatWithOptions(exports.inspectOpts, ...args) + '\\n');\n}\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\nfunction save(namespaces) {\n\tif (namespaces) {\n\t\tprocess.env.DEBUG = namespaces;\n\t} else {\n\t\t// If you set a process.env field to null or undefined, it gets cast to the\n\t\t// string 'null' or 'undefined'. Just delete instead.\n\t\tdelete process.env.DEBUG;\n\t}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\nfunction load() {\n\treturn process.env.DEBUG;\n}\n\n/**\n * Init logic for `debug` instances.\n *\n * Create a new `inspectOpts` object in case `useColors` is set\n * differently for a particular `debug` instance.\n */\n\nfunction init(debug) {\n\tdebug.inspectOpts = {};\n\n\tconst keys = Object.keys(exports.inspectOpts);\n\tfor (let i = 0; i < keys.length; i++) {\n\t\tdebug.inspectOpts[keys[i]] = exports.inspectOpts[keys[i]];\n\t}\n}\n\nmodule.exports = require('./common')(exports);\n\nconst {formatters} = module.exports;\n\n/**\n * Map %o to `util.inspect()`, all on a single line.\n */\n\nformatters.o = function (v) {\n\tthis.inspectOpts.colors = this.useColors;\n\treturn util.inspect(v, this.inspectOpts)\n\t\t.split('\\n')\n\t\t.map(str => str.trim())\n\t\t.join(' ');\n};\n\n/**\n * Map %O to `util.inspect()`, allowing multiple lines if needed.\n */\n\nformatters.O = function (v) {\n\tthis.inspectOpts.colors = this.useColors;\n\treturn util.inspect(v, this.inspectOpts);\n};\n","/**\n * Detect Electron renderer / nwjs process, which is node, but we should\n * treat as a browser.\n */\n\nif (typeof process === 'undefined' || process.type === 'renderer' || process.browser === true || process.__nwjs) {\n\tmodule.exports = require('./browser.js');\n} else {\n\tmodule.exports = require('./node.js');\n}\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst fs_1 = require(\"fs\");\nconst debug_1 = __importDefault(require(\"debug\"));\nconst log = debug_1.default('@kwsites/file-exists');\nfunction check(path, isFile, isDirectory) {\n log(`checking %s`, path);\n try {\n const stat = fs_1.statSync(path);\n if (stat.isFile() && isFile) {\n log(`[OK] path represents a file`);\n return true;\n }\n if (stat.isDirectory() && isDirectory) {\n log(`[OK] path represents a directory`);\n return true;\n }\n log(`[FAIL] path represents something other than a file or directory`);\n return false;\n }\n catch (e) {\n if (e.code === 'ENOENT') {\n log(`[FAIL] path is not accessible: %o`, e);\n return false;\n }\n log(`[FATAL] %o`, e);\n throw e;\n }\n}\n/**\n * Synchronous validation of a path existing either as a file or as a directory.\n *\n * @param {string} path The path to check\n * @param {number} type One or both of the exported numeric constants\n */\nfunction exists(path, type = exports.READABLE) {\n return check(path, (type & exports.FILE) > 0, (type & exports.FOLDER) > 0);\n}\nexports.exists = exists;\n/**\n * Constant representing a file\n */\nexports.FILE = 1;\n/**\n * Constant representing a folder\n */\nexports.FOLDER = 2;\n/**\n * Constant representing either a file or a folder\n */\nexports.READABLE = exports.FILE + exports.FOLDER;\n//# sourceMappingURL=index.js.map","\"use strict\";\nfunction __export(m) {\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n}\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__export(require(\"./src\"));\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createDeferred = exports.deferred = void 0;\n/**\n * Creates a new `DeferredPromise`\n *\n * ```typescript\n import {deferred} from '@kwsites/promise-deferred`;\n ```\n */\nfunction deferred() {\n let done;\n let fail;\n let status = 'pending';\n const promise = new Promise((_done, _fail) => {\n done = _done;\n fail = _fail;\n });\n return {\n promise,\n done(result) {\n if (status === 'pending') {\n status = 'resolved';\n done(result);\n }\n },\n fail(error) {\n if (status === 'pending') {\n status = 'rejected';\n fail(error);\n }\n },\n get fulfilled() {\n return status !== 'pending';\n },\n get status() {\n return status;\n },\n };\n}\nexports.deferred = deferred;\n/**\n * Alias of the exported `deferred` function, to help consumers wanting to use `deferred` as the\n * local variable name rather than the factory import name, without needing to rename on import.\n *\n * ```typescript\n import {createDeferred} from '@kwsites/promise-deferred`;\n ```\n */\nexports.createDeferred = deferred;\n/**\n * Default export allows use as:\n *\n * ```typescript\n import deferred from '@kwsites/promise-deferred`;\n ```\n */\nexports.default = deferred;\n//# sourceMappingURL=index.js.map","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __esm = (fn, res) => function __init() {\n return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;\n};\nvar __commonJS = (cb, mod) => function __require() {\n return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;\n};\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/lib/args/pathspec.ts\nfunction pathspec(...paths) {\n const key = new String(paths);\n cache.set(key, paths);\n return key;\n}\nfunction isPathSpec(path) {\n return path instanceof String && cache.has(path);\n}\nfunction toPaths(pathSpec) {\n return cache.get(pathSpec) || [];\n}\nvar cache;\nvar init_pathspec = __esm({\n \"src/lib/args/pathspec.ts\"() {\n \"use strict\";\n cache = /* @__PURE__ */ new WeakMap();\n }\n});\n\n// src/lib/errors/git-error.ts\nvar GitError;\nvar init_git_error = __esm({\n \"src/lib/errors/git-error.ts\"() {\n \"use strict\";\n GitError = class extends Error {\n constructor(task, message) {\n super(message);\n this.task = task;\n Object.setPrototypeOf(this, new.target.prototype);\n }\n };\n }\n});\n\n// src/lib/errors/git-response-error.ts\nvar GitResponseError;\nvar init_git_response_error = __esm({\n \"src/lib/errors/git-response-error.ts\"() {\n \"use strict\";\n init_git_error();\n GitResponseError = class extends GitError {\n constructor(git, message) {\n super(void 0, message || String(git));\n this.git = git;\n }\n };\n }\n});\n\n// src/lib/errors/task-configuration-error.ts\nvar TaskConfigurationError;\nvar init_task_configuration_error = __esm({\n \"src/lib/errors/task-configuration-error.ts\"() {\n \"use strict\";\n init_git_error();\n TaskConfigurationError = class extends GitError {\n constructor(message) {\n super(void 0, message);\n }\n };\n }\n});\n\n// src/lib/utils/util.ts\nimport { Buffer as Buffer2 } from \"node:buffer\";\nimport { exists, FOLDER } from \"@kwsites/file-exists\";\nfunction asFunction(source) {\n if (typeof source !== \"function\") {\n return NOOP;\n }\n return source;\n}\nfunction isUserFunction(source) {\n return typeof source === \"function\" && source !== NOOP;\n}\nfunction splitOn(input, char) {\n const index = input.indexOf(char);\n if (index <= 0) {\n return [input, \"\"];\n }\n return [input.substr(0, index), input.substr(index + 1)];\n}\nfunction first(input, offset = 0) {\n return isArrayLike(input) && input.length > offset ? input[offset] : void 0;\n}\nfunction last(input, offset = 0) {\n if (isArrayLike(input) && input.length > offset) {\n return input[input.length - 1 - offset];\n }\n}\nfunction isArrayLike(input) {\n return filterHasLength(input);\n}\nfunction toLinesWithContent(input = \"\", trimmed2 = true, separator = \"\\n\") {\n return input.split(separator).reduce((output, line) => {\n const lineContent = trimmed2 ? line.trim() : line;\n if (lineContent) {\n output.push(lineContent);\n }\n return output;\n }, []);\n}\nfunction forEachLineWithContent(input, callback) {\n return toLinesWithContent(input, true).map((line) => callback(line));\n}\nfunction folderExists(path) {\n return exists(path, FOLDER);\n}\nfunction append(target, item) {\n if (Array.isArray(target)) {\n if (!target.includes(item)) {\n target.push(item);\n }\n } else {\n target.add(item);\n }\n return item;\n}\nfunction including(target, item) {\n if (Array.isArray(target) && !target.includes(item)) {\n target.push(item);\n }\n return target;\n}\nfunction remove(target, item) {\n if (Array.isArray(target)) {\n const index = target.indexOf(item);\n if (index >= 0) {\n target.splice(index, 1);\n }\n } else {\n target.delete(item);\n }\n return item;\n}\nfunction asArray(source) {\n return Array.isArray(source) ? source : [source];\n}\nfunction asCamelCase(str) {\n return str.replace(/[\\s-]+(.)/g, (_all, chr) => {\n return chr.toUpperCase();\n });\n}\nfunction asStringArray(source) {\n return asArray(source).map((item) => {\n return item instanceof String ? item : String(item);\n });\n}\nfunction asNumber(source, onNaN = 0) {\n if (source == null) {\n return onNaN;\n }\n const num = parseInt(source, 10);\n return Number.isNaN(num) ? onNaN : num;\n}\nfunction prefixedArray(input, prefix) {\n const output = [];\n for (let i = 0, max = input.length; i < max; i++) {\n output.push(prefix, input[i]);\n }\n return output;\n}\nfunction bufferToString(input) {\n return (Array.isArray(input) ? Buffer2.concat(input) : input).toString(\"utf-8\");\n}\nfunction pick(source, properties) {\n const out = {};\n properties.forEach((key) => {\n if (source[key] !== void 0) {\n out[key] = source[key];\n }\n });\n return out;\n}\nfunction delay(duration = 0) {\n return new Promise((done) => setTimeout(done, duration));\n}\nfunction orVoid(input) {\n if (input === false) {\n return void 0;\n }\n return input;\n}\nvar NULL, NOOP, objectToString;\nvar init_util = __esm({\n \"src/lib/utils/util.ts\"() {\n \"use strict\";\n init_argument_filters();\n NULL = \"\\0\";\n NOOP = () => {\n };\n objectToString = Object.prototype.toString.call.bind(Object.prototype.toString);\n }\n});\n\n// src/lib/utils/argument-filters.ts\nfunction filterType(input, filter, def) {\n if (filter(input)) {\n return input;\n }\n return arguments.length > 2 ? def : void 0;\n}\nfunction filterPrimitives(input, omit) {\n const type = isPathSpec(input) ? \"string\" : typeof input;\n return /number|string|boolean/.test(type) && (!omit || !omit.includes(type));\n}\nfunction filterPlainObject(input) {\n return !!input && objectToString(input) === \"[object Object]\";\n}\nfunction filterFunction(input) {\n return typeof input === \"function\";\n}\nvar filterArray, filterNumber, filterString, filterStringOrStringArray, filterHasLength;\nvar init_argument_filters = __esm({\n \"src/lib/utils/argument-filters.ts\"() {\n \"use strict\";\n init_pathspec();\n init_util();\n filterArray = (input) => {\n return Array.isArray(input);\n };\n filterNumber = (input) => {\n return typeof input === \"number\";\n };\n filterString = (input) => {\n return typeof input === \"string\";\n };\n filterStringOrStringArray = (input) => {\n return filterString(input) || Array.isArray(input) && input.every(filterString);\n };\n filterHasLength = (input) => {\n if (input == null || \"number|boolean|function\".includes(typeof input)) {\n return false;\n }\n return typeof input.length === \"number\";\n };\n }\n});\n\n// src/lib/utils/exit-codes.ts\nvar ExitCodes;\nvar init_exit_codes = __esm({\n \"src/lib/utils/exit-codes.ts\"() {\n \"use strict\";\n ExitCodes = /* @__PURE__ */ ((ExitCodes2) => {\n ExitCodes2[ExitCodes2[\"SUCCESS\"] = 0] = \"SUCCESS\";\n ExitCodes2[ExitCodes2[\"ERROR\"] = 1] = \"ERROR\";\n ExitCodes2[ExitCodes2[\"NOT_FOUND\"] = -2] = \"NOT_FOUND\";\n ExitCodes2[ExitCodes2[\"UNCLEAN\"] = 128] = \"UNCLEAN\";\n return ExitCodes2;\n })(ExitCodes || {});\n }\n});\n\n// src/lib/utils/git-output-streams.ts\nvar GitOutputStreams;\nvar init_git_output_streams = __esm({\n \"src/lib/utils/git-output-streams.ts\"() {\n \"use strict\";\n GitOutputStreams = class _GitOutputStreams {\n constructor(stdOut, stdErr) {\n this.stdOut = stdOut;\n this.stdErr = stdErr;\n }\n asStrings() {\n return new _GitOutputStreams(this.stdOut.toString(\"utf8\"), this.stdErr.toString(\"utf8\"));\n }\n };\n }\n});\n\n// src/lib/utils/line-parser.ts\nfunction useMatchesDefault() {\n throw new Error(`LineParser:useMatches not implemented`);\n}\nvar LineParser, RemoteLineParser;\nvar init_line_parser = __esm({\n \"src/lib/utils/line-parser.ts\"() {\n \"use strict\";\n LineParser = class {\n constructor(regExp, useMatches) {\n this.matches = [];\n this.useMatches = useMatchesDefault;\n this.parse = (line, target) => {\n this.resetMatches();\n if (!this._regExp.every((reg, index) => this.addMatch(reg, index, line(index)))) {\n return false;\n }\n return this.useMatches(target, this.prepareMatches()) !== false;\n };\n this._regExp = Array.isArray(regExp) ? regExp : [regExp];\n if (useMatches) {\n this.useMatches = useMatches;\n }\n }\n resetMatches() {\n this.matches.length = 0;\n }\n prepareMatches() {\n return this.matches;\n }\n addMatch(reg, index, line) {\n const matched = line && reg.exec(line);\n if (matched) {\n this.pushMatch(index, matched);\n }\n return !!matched;\n }\n pushMatch(_index, matched) {\n this.matches.push(...matched.slice(1));\n }\n };\n RemoteLineParser = class extends LineParser {\n addMatch(reg, index, line) {\n return /^remote:\\s/.test(String(line)) && super.addMatch(reg, index, line);\n }\n pushMatch(index, matched) {\n if (index > 0 || matched.length > 1) {\n super.pushMatch(index, matched);\n }\n }\n };\n }\n});\n\n// src/lib/utils/simple-git-options.ts\nfunction createInstanceConfig(...options) {\n const baseDir = process.cwd();\n const config = Object.assign(\n { baseDir, ...defaultOptions },\n ...options.filter((o) => typeof o === \"object\" && o)\n );\n config.baseDir = config.baseDir || baseDir;\n config.trimmed = config.trimmed === true;\n return config;\n}\nvar defaultOptions;\nvar init_simple_git_options = __esm({\n \"src/lib/utils/simple-git-options.ts\"() {\n \"use strict\";\n defaultOptions = {\n binary: \"git\",\n maxConcurrentProcesses: 5,\n config: [],\n trimmed: false\n };\n }\n});\n\n// src/lib/utils/task-options.ts\nfunction appendTaskOptions(options, commands = []) {\n if (!filterPlainObject(options)) {\n return commands;\n }\n return Object.keys(options).reduce((commands2, key) => {\n const value = options[key];\n if (isPathSpec(value)) {\n commands2.push(value);\n } else if (filterPrimitives(value, [\"boolean\"])) {\n commands2.push(key + \"=\" + value);\n } else if (Array.isArray(value)) {\n for (const v of value) {\n if (!filterPrimitives(v, [\"string\", \"number\"])) {\n commands2.push(key + \"=\" + v);\n }\n }\n } else {\n commands2.push(key);\n }\n return commands2;\n }, commands);\n}\nfunction getTrailingOptions(args, initialPrimitive = 0, objectOnly = false) {\n const command = [];\n for (let i = 0, max = initialPrimitive < 0 ? args.length : initialPrimitive; i < max; i++) {\n if (\"string|number\".includes(typeof args[i])) {\n command.push(String(args[i]));\n }\n }\n appendTaskOptions(trailingOptionsArgument(args), command);\n if (!objectOnly) {\n command.push(...trailingArrayArgument(args));\n }\n return command;\n}\nfunction trailingArrayArgument(args) {\n const hasTrailingCallback = typeof last(args) === \"function\";\n return asStringArray(filterType(last(args, hasTrailingCallback ? 1 : 0), filterArray, []));\n}\nfunction trailingOptionsArgument(args) {\n const hasTrailingCallback = filterFunction(last(args));\n return filterType(last(args, hasTrailingCallback ? 1 : 0), filterPlainObject);\n}\nfunction trailingFunctionArgument(args, includeNoop = true) {\n const callback = asFunction(last(args));\n return includeNoop || isUserFunction(callback) ? callback : void 0;\n}\nvar init_task_options = __esm({\n \"src/lib/utils/task-options.ts\"() {\n \"use strict\";\n init_argument_filters();\n init_util();\n init_pathspec();\n }\n});\n\n// src/lib/utils/task-parser.ts\nfunction callTaskParser(parser4, streams) {\n return parser4(streams.stdOut, streams.stdErr);\n}\nfunction parseStringResponse(result, parsers12, texts, trim = true) {\n asArray(texts).forEach((text) => {\n for (let lines = toLinesWithContent(text, trim), i = 0, max = lines.length; i < max; i++) {\n const line = (offset = 0) => {\n if (i + offset >= max) {\n return;\n }\n return lines[i + offset];\n };\n parsers12.some(({ parse }) => parse(line, result));\n }\n });\n return result;\n}\nvar init_task_parser = __esm({\n \"src/lib/utils/task-parser.ts\"() {\n \"use strict\";\n init_util();\n }\n});\n\n// src/lib/utils/index.ts\nvar utils_exports = {};\n__export(utils_exports, {\n ExitCodes: () => ExitCodes,\n GitOutputStreams: () => GitOutputStreams,\n LineParser: () => LineParser,\n NOOP: () => NOOP,\n NULL: () => NULL,\n RemoteLineParser: () => RemoteLineParser,\n append: () => append,\n appendTaskOptions: () => appendTaskOptions,\n asArray: () => asArray,\n asCamelCase: () => asCamelCase,\n asFunction: () => asFunction,\n asNumber: () => asNumber,\n asStringArray: () => asStringArray,\n bufferToString: () => bufferToString,\n callTaskParser: () => callTaskParser,\n createInstanceConfig: () => createInstanceConfig,\n delay: () => delay,\n filterArray: () => filterArray,\n filterFunction: () => filterFunction,\n filterHasLength: () => filterHasLength,\n filterNumber: () => filterNumber,\n filterPlainObject: () => filterPlainObject,\n filterPrimitives: () => filterPrimitives,\n filterString: () => filterString,\n filterStringOrStringArray: () => filterStringOrStringArray,\n filterType: () => filterType,\n first: () => first,\n folderExists: () => folderExists,\n forEachLineWithContent: () => forEachLineWithContent,\n getTrailingOptions: () => getTrailingOptions,\n including: () => including,\n isUserFunction: () => isUserFunction,\n last: () => last,\n objectToString: () => objectToString,\n orVoid: () => orVoid,\n parseStringResponse: () => parseStringResponse,\n pick: () => pick,\n prefixedArray: () => prefixedArray,\n remove: () => remove,\n splitOn: () => splitOn,\n toLinesWithContent: () => toLinesWithContent,\n trailingFunctionArgument: () => trailingFunctionArgument,\n trailingOptionsArgument: () => trailingOptionsArgument\n});\nvar init_utils = __esm({\n \"src/lib/utils/index.ts\"() {\n \"use strict\";\n init_argument_filters();\n init_exit_codes();\n init_git_output_streams();\n init_line_parser();\n init_simple_git_options();\n init_task_options();\n init_task_parser();\n init_util();\n }\n});\n\n// src/lib/tasks/check-is-repo.ts\nvar check_is_repo_exports = {};\n__export(check_is_repo_exports, {\n CheckRepoActions: () => CheckRepoActions,\n checkIsBareRepoTask: () => checkIsBareRepoTask,\n checkIsRepoRootTask: () => checkIsRepoRootTask,\n checkIsRepoTask: () => checkIsRepoTask\n});\nfunction checkIsRepoTask(action) {\n switch (action) {\n case \"bare\" /* BARE */:\n return checkIsBareRepoTask();\n case \"root\" /* IS_REPO_ROOT */:\n return checkIsRepoRootTask();\n }\n const commands = [\"rev-parse\", \"--is-inside-work-tree\"];\n return {\n commands,\n format: \"utf-8\",\n onError,\n parser\n };\n}\nfunction checkIsRepoRootTask() {\n const commands = [\"rev-parse\", \"--git-dir\"];\n return {\n commands,\n format: \"utf-8\",\n onError,\n parser(path) {\n return /^\\.(git)?$/.test(path.trim());\n }\n };\n}\nfunction checkIsBareRepoTask() {\n const commands = [\"rev-parse\", \"--is-bare-repository\"];\n return {\n commands,\n format: \"utf-8\",\n onError,\n parser\n };\n}\nfunction isNotRepoMessage(error) {\n return /(Not a git repository|Kein Git-Repository)/i.test(String(error));\n}\nvar CheckRepoActions, onError, parser;\nvar init_check_is_repo = __esm({\n \"src/lib/tasks/check-is-repo.ts\"() {\n \"use strict\";\n init_utils();\n CheckRepoActions = /* @__PURE__ */ ((CheckRepoActions2) => {\n CheckRepoActions2[\"BARE\"] = \"bare\";\n CheckRepoActions2[\"IN_TREE\"] = \"tree\";\n CheckRepoActions2[\"IS_REPO_ROOT\"] = \"root\";\n return CheckRepoActions2;\n })(CheckRepoActions || {});\n onError = ({ exitCode }, error, done, fail) => {\n if (exitCode === 128 /* UNCLEAN */ && isNotRepoMessage(error)) {\n return done(Buffer.from(\"false\"));\n }\n fail(error);\n };\n parser = (text) => {\n return text.trim() === \"true\";\n };\n }\n});\n\n// src/lib/responses/CleanSummary.ts\nfunction cleanSummaryParser(dryRun, text) {\n const summary = new CleanResponse(dryRun);\n const regexp = dryRun ? dryRunRemovalRegexp : removalRegexp;\n toLinesWithContent(text).forEach((line) => {\n const removed = line.replace(regexp, \"\");\n summary.paths.push(removed);\n (isFolderRegexp.test(removed) ? summary.folders : summary.files).push(removed);\n });\n return summary;\n}\nvar CleanResponse, removalRegexp, dryRunRemovalRegexp, isFolderRegexp;\nvar init_CleanSummary = __esm({\n \"src/lib/responses/CleanSummary.ts\"() {\n \"use strict\";\n init_utils();\n CleanResponse = class {\n constructor(dryRun) {\n this.dryRun = dryRun;\n this.paths = [];\n this.files = [];\n this.folders = [];\n }\n };\n removalRegexp = /^[a-z]+\\s*/i;\n dryRunRemovalRegexp = /^[a-z]+\\s+[a-z]+\\s*/i;\n isFolderRegexp = /\\/$/;\n }\n});\n\n// src/lib/tasks/task.ts\nvar task_exports = {};\n__export(task_exports, {\n EMPTY_COMMANDS: () => EMPTY_COMMANDS,\n adhocExecTask: () => adhocExecTask,\n configurationErrorTask: () => configurationErrorTask,\n isBufferTask: () => isBufferTask,\n isEmptyTask: () => isEmptyTask,\n straightThroughBufferTask: () => straightThroughBufferTask,\n straightThroughStringTask: () => straightThroughStringTask\n});\nfunction adhocExecTask(parser4) {\n return {\n commands: EMPTY_COMMANDS,\n format: \"empty\",\n parser: parser4\n };\n}\nfunction configurationErrorTask(error) {\n return {\n commands: EMPTY_COMMANDS,\n format: \"empty\",\n parser() {\n throw typeof error === \"string\" ? new TaskConfigurationError(error) : error;\n }\n };\n}\nfunction straightThroughStringTask(commands, trimmed2 = false) {\n return {\n commands,\n format: \"utf-8\",\n parser(text) {\n return trimmed2 ? String(text).trim() : text;\n }\n };\n}\nfunction straightThroughBufferTask(commands) {\n return {\n commands,\n format: \"buffer\",\n parser(buffer) {\n return buffer;\n }\n };\n}\nfunction isBufferTask(task) {\n return task.format === \"buffer\";\n}\nfunction isEmptyTask(task) {\n return task.format === \"empty\" || !task.commands.length;\n}\nvar EMPTY_COMMANDS;\nvar init_task = __esm({\n \"src/lib/tasks/task.ts\"() {\n \"use strict\";\n init_task_configuration_error();\n EMPTY_COMMANDS = [];\n }\n});\n\n// src/lib/tasks/clean.ts\nvar clean_exports = {};\n__export(clean_exports, {\n CONFIG_ERROR_INTERACTIVE_MODE: () => CONFIG_ERROR_INTERACTIVE_MODE,\n CONFIG_ERROR_MODE_REQUIRED: () => CONFIG_ERROR_MODE_REQUIRED,\n CONFIG_ERROR_UNKNOWN_OPTION: () => CONFIG_ERROR_UNKNOWN_OPTION,\n CleanOptions: () => CleanOptions,\n cleanTask: () => cleanTask,\n cleanWithOptionsTask: () => cleanWithOptionsTask,\n isCleanOptionsArray: () => isCleanOptionsArray\n});\nfunction cleanWithOptionsTask(mode, customArgs) {\n const { cleanMode, options, valid } = getCleanOptions(mode);\n if (!cleanMode) {\n return configurationErrorTask(CONFIG_ERROR_MODE_REQUIRED);\n }\n if (!valid.options) {\n return configurationErrorTask(CONFIG_ERROR_UNKNOWN_OPTION + JSON.stringify(mode));\n }\n options.push(...customArgs);\n if (options.some(isInteractiveMode)) {\n return configurationErrorTask(CONFIG_ERROR_INTERACTIVE_MODE);\n }\n return cleanTask(cleanMode, options);\n}\nfunction cleanTask(mode, customArgs) {\n const commands = [\"clean\", `-${mode}`, ...customArgs];\n return {\n commands,\n format: \"utf-8\",\n parser(text) {\n return cleanSummaryParser(mode === \"n\" /* DRY_RUN */, text);\n }\n };\n}\nfunction isCleanOptionsArray(input) {\n return Array.isArray(input) && input.every((test) => CleanOptionValues.has(test));\n}\nfunction getCleanOptions(input) {\n let cleanMode;\n let options = [];\n let valid = { cleanMode: false, options: true };\n input.replace(/[^a-z]i/g, \"\").split(\"\").forEach((char) => {\n if (isCleanMode(char)) {\n cleanMode = char;\n valid.cleanMode = true;\n } else {\n valid.options = valid.options && isKnownOption(options[options.length] = `-${char}`);\n }\n });\n return {\n cleanMode,\n options,\n valid\n };\n}\nfunction isCleanMode(cleanMode) {\n return cleanMode === \"f\" /* FORCE */ || cleanMode === \"n\" /* DRY_RUN */;\n}\nfunction isKnownOption(option) {\n return /^-[a-z]$/i.test(option) && CleanOptionValues.has(option.charAt(1));\n}\nfunction isInteractiveMode(option) {\n if (/^-[^\\-]/.test(option)) {\n return option.indexOf(\"i\") > 0;\n }\n return option === \"--interactive\";\n}\nvar CONFIG_ERROR_INTERACTIVE_MODE, CONFIG_ERROR_MODE_REQUIRED, CONFIG_ERROR_UNKNOWN_OPTION, CleanOptions, CleanOptionValues;\nvar init_clean = __esm({\n \"src/lib/tasks/clean.ts\"() {\n \"use strict\";\n init_CleanSummary();\n init_utils();\n init_task();\n CONFIG_ERROR_INTERACTIVE_MODE = \"Git clean interactive mode is not supported\";\n CONFIG_ERROR_MODE_REQUIRED = 'Git clean mode parameter (\"n\" or \"f\") is required';\n CONFIG_ERROR_UNKNOWN_OPTION = \"Git clean unknown option found in: \";\n CleanOptions = /* @__PURE__ */ ((CleanOptions2) => {\n CleanOptions2[\"DRY_RUN\"] = \"n\";\n CleanOptions2[\"FORCE\"] = \"f\";\n CleanOptions2[\"IGNORED_INCLUDED\"] = \"x\";\n CleanOptions2[\"IGNORED_ONLY\"] = \"X\";\n CleanOptions2[\"EXCLUDING\"] = \"e\";\n CleanOptions2[\"QUIET\"] = \"q\";\n CleanOptions2[\"RECURSIVE\"] = \"d\";\n return CleanOptions2;\n })(CleanOptions || {});\n CleanOptionValues = /* @__PURE__ */ new Set([\n \"i\",\n ...asStringArray(Object.values(CleanOptions))\n ]);\n }\n});\n\n// src/lib/responses/ConfigList.ts\nfunction configListParser(text) {\n const config = new ConfigList();\n for (const item of configParser(text)) {\n config.addValue(item.file, String(item.key), item.value);\n }\n return config;\n}\nfunction configGetParser(text, key) {\n let value = null;\n const values = [];\n const scopes = /* @__PURE__ */ new Map();\n for (const item of configParser(text, key)) {\n if (item.key !== key) {\n continue;\n }\n values.push(value = item.value);\n if (!scopes.has(item.file)) {\n scopes.set(item.file, []);\n }\n scopes.get(item.file).push(value);\n }\n return {\n key,\n paths: Array.from(scopes.keys()),\n scopes,\n value,\n values\n };\n}\nfunction configFilePath(filePath) {\n return filePath.replace(/^(file):/, \"\");\n}\nfunction* configParser(text, requestedKey = null) {\n const lines = text.split(\"\\0\");\n for (let i = 0, max = lines.length - 1; i < max; ) {\n const file = configFilePath(lines[i++]);\n let value = lines[i++];\n let key = requestedKey;\n if (value.includes(\"\\n\")) {\n const line = splitOn(value, \"\\n\");\n key = line[0];\n value = line[1];\n }\n yield { file, key, value };\n }\n}\nvar ConfigList;\nvar init_ConfigList = __esm({\n \"src/lib/responses/ConfigList.ts\"() {\n \"use strict\";\n init_utils();\n ConfigList = class {\n constructor() {\n this.files = [];\n this.values = /* @__PURE__ */ Object.create(null);\n }\n get all() {\n if (!this._all) {\n this._all = this.files.reduce((all, file) => {\n return Object.assign(all, this.values[file]);\n }, {});\n }\n return this._all;\n }\n addFile(file) {\n if (!(file in this.values)) {\n const latest = last(this.files);\n this.values[file] = latest ? Object.create(this.values[latest]) : {};\n this.files.push(file);\n }\n return this.values[file];\n }\n addValue(file, key, value) {\n const values = this.addFile(file);\n if (!Object.hasOwn(values, key)) {\n values[key] = value;\n } else if (Array.isArray(values[key])) {\n values[key].push(value);\n } else {\n values[key] = [values[key], value];\n }\n this._all = void 0;\n }\n };\n }\n});\n\n// src/lib/tasks/config.ts\nfunction asConfigScope(scope, fallback) {\n if (typeof scope === \"string\" && Object.hasOwn(GitConfigScope, scope)) {\n return scope;\n }\n return fallback;\n}\nfunction addConfigTask(key, value, append2, scope) {\n const commands = [\"config\", `--${scope}`];\n if (append2) {\n commands.push(\"--add\");\n }\n commands.push(key, value);\n return {\n commands,\n format: \"utf-8\",\n parser(text) {\n return text;\n }\n };\n}\nfunction getConfigTask(key, scope) {\n const commands = [\"config\", \"--null\", \"--show-origin\", \"--get-all\", key];\n if (scope) {\n commands.splice(1, 0, `--${scope}`);\n }\n return {\n commands,\n format: \"utf-8\",\n parser(text) {\n return configGetParser(text, key);\n }\n };\n}\nfunction listConfigTask(scope) {\n const commands = [\"config\", \"--list\", \"--show-origin\", \"--null\"];\n if (scope) {\n commands.push(`--${scope}`);\n }\n return {\n commands,\n format: \"utf-8\",\n parser(text) {\n return configListParser(text);\n }\n };\n}\nfunction config_default() {\n return {\n addConfig(key, value, ...rest) {\n return this._runTask(\n addConfigTask(\n key,\n value,\n rest[0] === true,\n asConfigScope(rest[1], \"local\" /* local */)\n ),\n trailingFunctionArgument(arguments)\n );\n },\n getConfig(key, scope) {\n return this._runTask(\n getConfigTask(key, asConfigScope(scope, void 0)),\n trailingFunctionArgument(arguments)\n );\n },\n listConfig(...rest) {\n return this._runTask(\n listConfigTask(asConfigScope(rest[0], void 0)),\n trailingFunctionArgument(arguments)\n );\n }\n };\n}\nvar GitConfigScope;\nvar init_config = __esm({\n \"src/lib/tasks/config.ts\"() {\n \"use strict\";\n init_ConfigList();\n init_utils();\n GitConfigScope = /* @__PURE__ */ ((GitConfigScope2) => {\n GitConfigScope2[\"system\"] = \"system\";\n GitConfigScope2[\"global\"] = \"global\";\n GitConfigScope2[\"local\"] = \"local\";\n GitConfigScope2[\"worktree\"] = \"worktree\";\n return GitConfigScope2;\n })(GitConfigScope || {});\n }\n});\n\n// src/lib/tasks/diff-name-status.ts\nfunction isDiffNameStatus(input) {\n return diffNameStatus.has(input);\n}\nvar DiffNameStatus, diffNameStatus;\nvar init_diff_name_status = __esm({\n \"src/lib/tasks/diff-name-status.ts\"() {\n \"use strict\";\n DiffNameStatus = /* @__PURE__ */ ((DiffNameStatus2) => {\n DiffNameStatus2[\"ADDED\"] = \"A\";\n DiffNameStatus2[\"COPIED\"] = \"C\";\n DiffNameStatus2[\"DELETED\"] = \"D\";\n DiffNameStatus2[\"MODIFIED\"] = \"M\";\n DiffNameStatus2[\"RENAMED\"] = \"R\";\n DiffNameStatus2[\"CHANGED\"] = \"T\";\n DiffNameStatus2[\"UNMERGED\"] = \"U\";\n DiffNameStatus2[\"UNKNOWN\"] = \"X\";\n DiffNameStatus2[\"BROKEN\"] = \"B\";\n return DiffNameStatus2;\n })(DiffNameStatus || {});\n diffNameStatus = new Set(Object.values(DiffNameStatus));\n }\n});\n\n// src/lib/tasks/grep.ts\nfunction grepQueryBuilder(...params) {\n return new GrepQuery().param(...params);\n}\nfunction parseGrep(grep) {\n const paths = /* @__PURE__ */ new Set();\n const results = {};\n forEachLineWithContent(grep, (input) => {\n const [path, line, preview] = input.split(NULL);\n paths.add(path);\n (results[path] = results[path] || []).push({\n line: asNumber(line),\n path,\n preview\n });\n });\n return {\n paths,\n results\n };\n}\nfunction grep_default() {\n return {\n grep(searchTerm) {\n const then = trailingFunctionArgument(arguments);\n const options = getTrailingOptions(arguments);\n for (const option of disallowedOptions) {\n if (options.includes(option)) {\n return this._runTask(\n configurationErrorTask(`git.grep: use of \"${option}\" is not supported.`),\n then\n );\n }\n }\n if (typeof searchTerm === \"string\") {\n searchTerm = grepQueryBuilder().param(searchTerm);\n }\n const commands = [\"grep\", \"--null\", \"-n\", \"--full-name\", ...options, ...searchTerm];\n return this._runTask(\n {\n commands,\n format: \"utf-8\",\n parser(stdOut) {\n return parseGrep(stdOut);\n }\n },\n then\n );\n }\n };\n}\nvar disallowedOptions, Query, _a, GrepQuery;\nvar init_grep = __esm({\n \"src/lib/tasks/grep.ts\"() {\n \"use strict\";\n init_utils();\n init_task();\n disallowedOptions = [\"-h\"];\n Query = Symbol(\"grepQuery\");\n GrepQuery = class {\n constructor() {\n this[_a] = [];\n }\n *[(_a = Query, Symbol.iterator)]() {\n for (const query of this[Query]) {\n yield query;\n }\n }\n and(...and) {\n and.length && this[Query].push(\"--and\", \"(\", ...prefixedArray(and, \"-e\"), \")\");\n return this;\n }\n param(...param) {\n this[Query].push(...prefixedArray(param, \"-e\"));\n return this;\n }\n };\n }\n});\n\n// src/lib/tasks/reset.ts\nvar reset_exports = {};\n__export(reset_exports, {\n ResetMode: () => ResetMode,\n getResetMode: () => getResetMode,\n resetTask: () => resetTask\n});\nfunction resetTask(mode, customArgs) {\n const commands = [\"reset\"];\n if (isValidResetMode(mode)) {\n commands.push(`--${mode}`);\n }\n commands.push(...customArgs);\n return straightThroughStringTask(commands);\n}\nfunction getResetMode(mode) {\n if (isValidResetMode(mode)) {\n return mode;\n }\n switch (typeof mode) {\n case \"string\":\n case \"undefined\":\n return \"soft\" /* SOFT */;\n }\n return;\n}\nfunction isValidResetMode(mode) {\n return typeof mode === \"string\" && validResetModes.includes(mode);\n}\nvar ResetMode, validResetModes;\nvar init_reset = __esm({\n \"src/lib/tasks/reset.ts\"() {\n \"use strict\";\n init_utils();\n init_task();\n ResetMode = /* @__PURE__ */ ((ResetMode2) => {\n ResetMode2[\"MIXED\"] = \"mixed\";\n ResetMode2[\"SOFT\"] = \"soft\";\n ResetMode2[\"HARD\"] = \"hard\";\n ResetMode2[\"MERGE\"] = \"merge\";\n ResetMode2[\"KEEP\"] = \"keep\";\n return ResetMode2;\n })(ResetMode || {});\n validResetModes = asStringArray(Object.values(ResetMode));\n }\n});\n\n// src/lib/git-logger.ts\nimport debug from \"debug\";\nfunction createLog() {\n return debug(\"simple-git\");\n}\nfunction prefixedLogger(to, prefix, forward) {\n if (!prefix || !String(prefix).replace(/\\s*/, \"\")) {\n return !forward ? to : (message, ...args) => {\n to(message, ...args);\n forward(message, ...args);\n };\n }\n return (message, ...args) => {\n to(`%s ${message}`, prefix, ...args);\n if (forward) {\n forward(message, ...args);\n }\n };\n}\nfunction childLoggerName(name, childDebugger, { namespace: parentNamespace }) {\n if (typeof name === \"string\") {\n return name;\n }\n const childNamespace = childDebugger && childDebugger.namespace || \"\";\n if (childNamespace.startsWith(parentNamespace)) {\n return childNamespace.substr(parentNamespace.length + 1);\n }\n return childNamespace || parentNamespace;\n}\nfunction createLogger(label, verbose, initialStep, infoDebugger = createLog()) {\n const labelPrefix = label && `[${label}]` || \"\";\n const spawned = [];\n const debugDebugger = typeof verbose === \"string\" ? infoDebugger.extend(verbose) : verbose;\n const key = childLoggerName(filterType(verbose, filterString), debugDebugger, infoDebugger);\n return step(initialStep);\n function sibling(name, initial) {\n return append(\n spawned,\n createLogger(label, key.replace(/^[^:]+/, name), initial, infoDebugger)\n );\n }\n function step(phase) {\n const stepPrefix = phase && `[${phase}]` || \"\";\n const debug2 = debugDebugger && prefixedLogger(debugDebugger, stepPrefix) || NOOP;\n const info = prefixedLogger(infoDebugger, `${labelPrefix} ${stepPrefix}`, debug2);\n return Object.assign(debugDebugger ? debug2 : info, {\n label,\n sibling,\n info,\n step\n });\n }\n}\nvar init_git_logger = __esm({\n \"src/lib/git-logger.ts\"() {\n \"use strict\";\n init_utils();\n debug.formatters.L = (value) => String(filterHasLength(value) ? value.length : \"-\");\n debug.formatters.B = (value) => {\n if (Buffer.isBuffer(value)) {\n return value.toString(\"utf8\");\n }\n return objectToString(value);\n };\n }\n});\n\n// src/lib/runners/tasks-pending-queue.ts\nvar TasksPendingQueue;\nvar init_tasks_pending_queue = __esm({\n \"src/lib/runners/tasks-pending-queue.ts\"() {\n \"use strict\";\n init_git_error();\n init_git_logger();\n TasksPendingQueue = class _TasksPendingQueue {\n constructor(logLabel = \"GitExecutor\") {\n this.logLabel = logLabel;\n this._queue = /* @__PURE__ */ new Map();\n }\n withProgress(task) {\n return this._queue.get(task);\n }\n createProgress(task) {\n const name = _TasksPendingQueue.getName(task.commands[0]);\n const logger = createLogger(this.logLabel, name);\n return {\n task,\n logger,\n name\n };\n }\n push(task) {\n const progress = this.createProgress(task);\n progress.logger(\"Adding task to the queue, commands = %o\", task.commands);\n this._queue.set(task, progress);\n return progress;\n }\n fatal(err) {\n for (const [task, { logger }] of Array.from(this._queue.entries())) {\n if (task === err.task) {\n logger.info(`Failed %o`, err);\n logger(\n `Fatal exception, any as-yet un-started tasks run through this executor will not be attempted`\n );\n } else {\n logger.info(\n `A fatal exception occurred in a previous task, the queue has been purged: %o`,\n err.message\n );\n }\n this.complete(task);\n }\n if (this._queue.size !== 0) {\n throw new Error(`Queue size should be zero after fatal: ${this._queue.size}`);\n }\n }\n complete(task) {\n const progress = this.withProgress(task);\n if (progress) {\n this._queue.delete(task);\n }\n }\n attempt(task) {\n const progress = this.withProgress(task);\n if (!progress) {\n throw new GitError(void 0, \"TasksPendingQueue: attempt called for an unknown task\");\n }\n progress.logger(\"Starting task\");\n return progress;\n }\n static getName(name = \"empty\") {\n return `task:${name}:${++_TasksPendingQueue.counter}`;\n }\n static {\n this.counter = 0;\n }\n };\n }\n});\n\n// src/lib/runners/git-executor-chain.ts\nimport { spawn } from \"child_process\";\nfunction pluginContext(task, commands) {\n return {\n method: first(task.commands) || \"\",\n commands\n };\n}\nfunction onErrorReceived(target, logger) {\n return (err) => {\n logger(`[ERROR] child process exception %o`, err);\n target.push(Buffer.from(String(err.stack), \"ascii\"));\n };\n}\nfunction onDataReceived(target, name, logger, output) {\n return (buffer) => {\n logger(`%s received %L bytes`, name, buffer);\n output(`%B`, buffer);\n target.push(buffer);\n };\n}\nvar GitExecutorChain;\nvar init_git_executor_chain = __esm({\n \"src/lib/runners/git-executor-chain.ts\"() {\n \"use strict\";\n init_git_error();\n init_task();\n init_utils();\n init_tasks_pending_queue();\n GitExecutorChain = class {\n constructor(_executor, _scheduler, _plugins) {\n this._executor = _executor;\n this._scheduler = _scheduler;\n this._plugins = _plugins;\n this._chain = Promise.resolve();\n this._queue = new TasksPendingQueue();\n }\n get cwd() {\n return this._cwd || this._executor.cwd;\n }\n set cwd(cwd) {\n this._cwd = cwd;\n }\n get env() {\n return this._executor.env;\n }\n get outputHandler() {\n return this._executor.outputHandler;\n }\n chain() {\n return this;\n }\n push(task) {\n this._queue.push(task);\n return this._chain = this._chain.then(() => this.attemptTask(task));\n }\n async attemptTask(task) {\n const onScheduleComplete = await this._scheduler.next();\n const onQueueComplete = () => this._queue.complete(task);\n try {\n const { logger } = this._queue.attempt(task);\n return await (isEmptyTask(task) ? this.attemptEmptyTask(task, logger) : this.attemptRemoteTask(task, logger));\n } catch (e) {\n throw this.onFatalException(task, e);\n } finally {\n onQueueComplete();\n onScheduleComplete();\n }\n }\n onFatalException(task, e) {\n const gitError = e instanceof GitError ? Object.assign(e, { task }) : new GitError(task, e && String(e));\n this._chain = Promise.resolve();\n this._queue.fatal(gitError);\n return gitError;\n }\n async attemptRemoteTask(task, logger) {\n const binary = this._plugins.exec(\"spawn.binary\", \"\", pluginContext(task, task.commands));\n const args = this._plugins.exec(\n \"spawn.args\",\n [...task.commands],\n pluginContext(task, task.commands)\n );\n const raw = await this.gitResponse(\n task,\n binary,\n args,\n this.outputHandler,\n logger.step(\"SPAWN\")\n );\n const outputStreams = await this.handleTaskData(task, args, raw, logger.step(\"HANDLE\"));\n logger(`passing response to task's parser as a %s`, task.format);\n if (isBufferTask(task)) {\n return callTaskParser(task.parser, outputStreams);\n }\n return callTaskParser(task.parser, outputStreams.asStrings());\n }\n async attemptEmptyTask(task, logger) {\n logger(`empty task bypassing child process to call to task's parser`);\n return task.parser(this);\n }\n handleTaskData(task, args, result, logger) {\n const { exitCode, rejection, stdOut, stdErr } = result;\n return new Promise((done, fail) => {\n logger(`Preparing to handle process response exitCode=%d stdOut=`, exitCode);\n const { error } = this._plugins.exec(\n \"task.error\",\n { error: rejection },\n {\n ...pluginContext(task, args),\n ...result\n }\n );\n if (error && task.onError) {\n logger.info(`exitCode=%s handling with custom error handler`);\n return task.onError(\n result,\n error,\n (newStdOut) => {\n logger.info(`custom error handler treated as success`);\n logger(`custom error returned a %s`, objectToString(newStdOut));\n done(\n new GitOutputStreams(\n Array.isArray(newStdOut) ? Buffer.concat(newStdOut) : newStdOut,\n Buffer.concat(stdErr)\n )\n );\n },\n fail\n );\n }\n if (error) {\n logger.info(\n `handling as error: exitCode=%s stdErr=%s rejection=%o`,\n exitCode,\n stdErr.length,\n rejection\n );\n return fail(error);\n }\n logger.info(`retrieving task output complete`);\n done(new GitOutputStreams(Buffer.concat(stdOut), Buffer.concat(stdErr)));\n });\n }\n async gitResponse(task, command, args, outputHandler, logger) {\n const outputLogger = logger.sibling(\"output\");\n const spawnOptions = this._plugins.exec(\n \"spawn.options\",\n {\n cwd: this.cwd,\n env: this.env,\n windowsHide: true\n },\n pluginContext(task, task.commands)\n );\n return new Promise((done) => {\n const stdOut = [];\n const stdErr = [];\n logger.info(`%s %o`, command, args);\n logger(\"%O\", spawnOptions);\n let rejection = this._beforeSpawn(task, args);\n if (rejection) {\n return done({\n stdOut,\n stdErr,\n exitCode: 9901,\n rejection\n });\n }\n this._plugins.exec(\"spawn.before\", void 0, {\n ...pluginContext(task, args),\n kill(reason) {\n rejection = reason || rejection;\n }\n });\n const spawned = spawn(command, args, spawnOptions);\n spawned.stdout.on(\n \"data\",\n onDataReceived(stdOut, \"stdOut\", logger, outputLogger.step(\"stdOut\"))\n );\n spawned.stderr.on(\n \"data\",\n onDataReceived(stdErr, \"stdErr\", logger, outputLogger.step(\"stdErr\"))\n );\n spawned.on(\"error\", onErrorReceived(stdErr, logger));\n if (outputHandler) {\n logger(`Passing child process stdOut/stdErr to custom outputHandler`);\n outputHandler(command, spawned.stdout, spawned.stderr, [...args]);\n }\n this._plugins.exec(\"spawn.after\", void 0, {\n ...pluginContext(task, args),\n spawned,\n close(exitCode, reason) {\n done({\n stdOut,\n stdErr,\n exitCode,\n rejection: rejection || reason\n });\n },\n kill(reason) {\n if (spawned.killed) {\n return;\n }\n rejection = reason;\n spawned.kill(\"SIGINT\");\n }\n });\n });\n }\n _beforeSpawn(task, args) {\n let rejection;\n this._plugins.exec(\"spawn.before\", void 0, {\n ...pluginContext(task, args),\n kill(reason) {\n rejection = reason || rejection;\n }\n });\n return rejection;\n }\n };\n }\n});\n\n// src/lib/runners/git-executor.ts\nvar git_executor_exports = {};\n__export(git_executor_exports, {\n GitExecutor: () => GitExecutor\n});\nvar GitExecutor;\nvar init_git_executor = __esm({\n \"src/lib/runners/git-executor.ts\"() {\n \"use strict\";\n init_git_executor_chain();\n GitExecutor = class {\n constructor(cwd, _scheduler, _plugins) {\n this.cwd = cwd;\n this._scheduler = _scheduler;\n this._plugins = _plugins;\n this._chain = new GitExecutorChain(this, this._scheduler, this._plugins);\n }\n chain() {\n return new GitExecutorChain(this, this._scheduler, this._plugins);\n }\n push(task) {\n return this._chain.push(task);\n }\n };\n }\n});\n\n// src/lib/task-callback.ts\nfunction taskCallback(task, response, callback = NOOP) {\n const onSuccess = (data) => {\n callback(null, data);\n };\n const onError2 = (err) => {\n if (err?.task === task) {\n callback(\n err instanceof GitResponseError ? addDeprecationNoticeToError(err) : err,\n void 0\n );\n }\n };\n response.then(onSuccess, onError2);\n}\nfunction addDeprecationNoticeToError(err) {\n let log = (name) => {\n console.warn(\n `simple-git deprecation notice: accessing GitResponseError.${name} should be GitResponseError.git.${name}, this will no longer be available in version 3`\n );\n log = NOOP;\n };\n return Object.create(err, Object.getOwnPropertyNames(err.git).reduce(descriptorReducer, {}));\n function descriptorReducer(all, name) {\n if (name in err) {\n return all;\n }\n all[name] = {\n enumerable: false,\n configurable: false,\n get() {\n log(name);\n return err.git[name];\n }\n };\n return all;\n }\n}\nvar init_task_callback = __esm({\n \"src/lib/task-callback.ts\"() {\n \"use strict\";\n init_git_response_error();\n init_utils();\n }\n});\n\n// src/lib/tasks/change-working-directory.ts\nfunction changeWorkingDirectoryTask(directory, root) {\n return adhocExecTask((instance) => {\n if (!folderExists(directory)) {\n throw new Error(`Git.cwd: cannot change to non-directory \"${directory}\"`);\n }\n return (root || instance).cwd = directory;\n });\n}\nvar init_change_working_directory = __esm({\n \"src/lib/tasks/change-working-directory.ts\"() {\n \"use strict\";\n init_utils();\n init_task();\n }\n});\n\n// src/lib/tasks/checkout.ts\nfunction checkoutTask(args) {\n const commands = [\"checkout\", ...args];\n if (commands[1] === \"-b\" && commands.includes(\"-B\")) {\n commands[1] = remove(commands, \"-B\");\n }\n return straightThroughStringTask(commands);\n}\nfunction checkout_default() {\n return {\n checkout() {\n return this._runTask(\n checkoutTask(getTrailingOptions(arguments, 1)),\n trailingFunctionArgument(arguments)\n );\n },\n checkoutBranch(branchName, startPoint) {\n return this._runTask(\n checkoutTask([\"-b\", branchName, startPoint, ...getTrailingOptions(arguments)]),\n trailingFunctionArgument(arguments)\n );\n },\n checkoutLocalBranch(branchName) {\n return this._runTask(\n checkoutTask([\"-b\", branchName, ...getTrailingOptions(arguments)]),\n trailingFunctionArgument(arguments)\n );\n }\n };\n}\nvar init_checkout = __esm({\n \"src/lib/tasks/checkout.ts\"() {\n \"use strict\";\n init_utils();\n init_task();\n }\n});\n\n// src/lib/tasks/count-objects.ts\nfunction countObjectsResponse() {\n return {\n count: 0,\n garbage: 0,\n inPack: 0,\n packs: 0,\n prunePackable: 0,\n size: 0,\n sizeGarbage: 0,\n sizePack: 0\n };\n}\nfunction count_objects_default() {\n return {\n countObjects() {\n return this._runTask({\n commands: [\"count-objects\", \"--verbose\"],\n format: \"utf-8\",\n parser(stdOut) {\n return parseStringResponse(countObjectsResponse(), [parser2], stdOut);\n }\n });\n }\n };\n}\nvar parser2;\nvar init_count_objects = __esm({\n \"src/lib/tasks/count-objects.ts\"() {\n \"use strict\";\n init_utils();\n parser2 = new LineParser(\n /([a-z-]+): (\\d+)$/,\n (result, [key, value]) => {\n const property = asCamelCase(key);\n if (Object.hasOwn(result, property)) {\n result[property] = asNumber(value);\n }\n }\n );\n }\n});\n\n// src/lib/parsers/parse-commit.ts\nfunction parseCommitResult(stdOut) {\n const result = {\n author: null,\n branch: \"\",\n commit: \"\",\n root: false,\n summary: {\n changes: 0,\n insertions: 0,\n deletions: 0\n }\n };\n return parseStringResponse(result, parsers, stdOut);\n}\nvar parsers;\nvar init_parse_commit = __esm({\n \"src/lib/parsers/parse-commit.ts\"() {\n \"use strict\";\n init_utils();\n parsers = [\n new LineParser(/^\\[([^\\s]+)( \\([^)]+\\))? ([^\\]]+)/, (result, [branch, root, commit]) => {\n result.branch = branch;\n result.commit = commit;\n result.root = !!root;\n }),\n new LineParser(/\\s*Author:\\s(.+)/i, (result, [author]) => {\n const parts = author.split(\"<\");\n const email = parts.pop();\n if (!email || !email.includes(\"@\")) {\n return;\n }\n result.author = {\n email: email.substr(0, email.length - 1),\n name: parts.join(\"<\").trim()\n };\n }),\n new LineParser(\n /(\\d+)[^,]*(?:,\\s*(\\d+)[^,]*)(?:,\\s*(\\d+))/g,\n (result, [changes, insertions, deletions]) => {\n result.summary.changes = parseInt(changes, 10) || 0;\n result.summary.insertions = parseInt(insertions, 10) || 0;\n result.summary.deletions = parseInt(deletions, 10) || 0;\n }\n ),\n new LineParser(\n /^(\\d+)[^,]*(?:,\\s*(\\d+)[^(]+\\(([+-]))?/,\n (result, [changes, lines, direction]) => {\n result.summary.changes = parseInt(changes, 10) || 0;\n const count = parseInt(lines, 10) || 0;\n if (direction === \"-\") {\n result.summary.deletions = count;\n } else if (direction === \"+\") {\n result.summary.insertions = count;\n }\n }\n )\n ];\n }\n});\n\n// src/lib/tasks/commit.ts\nfunction commitTask(message, files, customArgs) {\n const commands = [\n \"-c\",\n \"core.abbrev=40\",\n \"commit\",\n ...prefixedArray(message, \"-m\"),\n ...files,\n ...customArgs\n ];\n return {\n commands,\n format: \"utf-8\",\n parser: parseCommitResult\n };\n}\nfunction commit_default() {\n return {\n commit(message, ...rest) {\n const next = trailingFunctionArgument(arguments);\n const task = rejectDeprecatedSignatures(message) || commitTask(\n asArray(message),\n asArray(filterType(rest[0], filterStringOrStringArray, [])),\n [\n ...asStringArray(filterType(rest[1], filterArray, [])),\n ...getTrailingOptions(arguments, 0, true)\n ]\n );\n return this._runTask(task, next);\n }\n };\n function rejectDeprecatedSignatures(message) {\n return !filterStringOrStringArray(message) && configurationErrorTask(\n `git.commit: requires the commit message to be supplied as a string/string[]`\n );\n }\n}\nvar init_commit = __esm({\n \"src/lib/tasks/commit.ts\"() {\n \"use strict\";\n init_parse_commit();\n init_utils();\n init_task();\n }\n});\n\n// src/lib/tasks/first-commit.ts\nfunction first_commit_default() {\n return {\n firstCommit() {\n return this._runTask(\n straightThroughStringTask([\"rev-list\", \"--max-parents=0\", \"HEAD\"], true),\n trailingFunctionArgument(arguments)\n );\n }\n };\n}\nvar init_first_commit = __esm({\n \"src/lib/tasks/first-commit.ts\"() {\n \"use strict\";\n init_utils();\n init_task();\n }\n});\n\n// src/lib/tasks/hash-object.ts\nfunction hashObjectTask(filePath, write) {\n const commands = [\"hash-object\", filePath];\n if (write) {\n commands.push(\"-w\");\n }\n return straightThroughStringTask(commands, true);\n}\nvar init_hash_object = __esm({\n \"src/lib/tasks/hash-object.ts\"() {\n \"use strict\";\n init_task();\n }\n});\n\n// src/lib/responses/InitSummary.ts\nfunction parseInit(bare, path, text) {\n const response = String(text).trim();\n let result;\n if (result = initResponseRegex.exec(response)) {\n return new InitSummary(bare, path, false, result[1]);\n }\n if (result = reInitResponseRegex.exec(response)) {\n return new InitSummary(bare, path, true, result[1]);\n }\n let gitDir = \"\";\n const tokens = response.split(\" \");\n while (tokens.length) {\n const token = tokens.shift();\n if (token === \"in\") {\n gitDir = tokens.join(\" \");\n break;\n }\n }\n return new InitSummary(bare, path, /^re/i.test(response), gitDir);\n}\nvar InitSummary, initResponseRegex, reInitResponseRegex;\nvar init_InitSummary = __esm({\n \"src/lib/responses/InitSummary.ts\"() {\n \"use strict\";\n InitSummary = class {\n constructor(bare, path, existing, gitDir) {\n this.bare = bare;\n this.path = path;\n this.existing = existing;\n this.gitDir = gitDir;\n }\n };\n initResponseRegex = /^Init.+ repository in (.+)$/;\n reInitResponseRegex = /^Rein.+ in (.+)$/;\n }\n});\n\n// src/lib/tasks/init.ts\nfunction hasBareCommand(command) {\n return command.includes(bareCommand);\n}\nfunction initTask(bare = false, path, customArgs) {\n const commands = [\"init\", ...customArgs];\n if (bare && !hasBareCommand(commands)) {\n commands.splice(1, 0, bareCommand);\n }\n return {\n commands,\n format: \"utf-8\",\n parser(text) {\n return parseInit(commands.includes(\"--bare\"), path, text);\n }\n };\n}\nvar bareCommand;\nvar init_init = __esm({\n \"src/lib/tasks/init.ts\"() {\n \"use strict\";\n init_InitSummary();\n bareCommand = \"--bare\";\n }\n});\n\n// src/lib/args/log-format.ts\nfunction logFormatFromCommand(customArgs) {\n for (let i = 0; i < customArgs.length; i++) {\n const format = logFormatRegex.exec(customArgs[i]);\n if (format) {\n return `--${format[1]}`;\n }\n }\n return \"\" /* NONE */;\n}\nfunction isLogFormat(customArg) {\n return logFormatRegex.test(customArg);\n}\nvar logFormatRegex;\nvar init_log_format = __esm({\n \"src/lib/args/log-format.ts\"() {\n \"use strict\";\n logFormatRegex = /^--(stat|numstat|name-only|name-status)(=|$)/;\n }\n});\n\n// src/lib/responses/DiffSummary.ts\nvar DiffSummary;\nvar init_DiffSummary = __esm({\n \"src/lib/responses/DiffSummary.ts\"() {\n \"use strict\";\n DiffSummary = class {\n constructor() {\n this.changed = 0;\n this.deletions = 0;\n this.insertions = 0;\n this.files = [];\n }\n };\n }\n});\n\n// src/lib/parsers/parse-diff-summary.ts\nfunction getDiffParser(format = \"\" /* NONE */) {\n const parser4 = diffSummaryParsers[format];\n return (stdOut) => parseStringResponse(new DiffSummary(), parser4, stdOut, false);\n}\nvar statParser, numStatParser, nameOnlyParser, nameStatusParser, diffSummaryParsers;\nvar init_parse_diff_summary = __esm({\n \"src/lib/parsers/parse-diff-summary.ts\"() {\n \"use strict\";\n init_log_format();\n init_DiffSummary();\n init_diff_name_status();\n init_utils();\n statParser = [\n new LineParser(\n /^(.+)\\s+\\|\\s+(\\d+)(\\s+[+\\-]+)?$/,\n (result, [file, changes, alterations = \"\"]) => {\n result.files.push({\n file: file.trim(),\n changes: asNumber(changes),\n insertions: alterations.replace(/[^+]/g, \"\").length,\n deletions: alterations.replace(/[^-]/g, \"\").length,\n binary: false\n });\n }\n ),\n new LineParser(\n /^(.+) \\|\\s+Bin ([0-9.]+) -> ([0-9.]+) ([a-z]+)/,\n (result, [file, before, after]) => {\n result.files.push({\n file: file.trim(),\n before: asNumber(before),\n after: asNumber(after),\n binary: true\n });\n }\n ),\n new LineParser(\n /(\\d+) files? changed\\s*((?:, \\d+ [^,]+){0,2})/,\n (result, [changed, summary]) => {\n const inserted = /(\\d+) i/.exec(summary);\n const deleted = /(\\d+) d/.exec(summary);\n result.changed = asNumber(changed);\n result.insertions = asNumber(inserted?.[1]);\n result.deletions = asNumber(deleted?.[1]);\n }\n )\n ];\n numStatParser = [\n new LineParser(\n /(\\d+)\\t(\\d+)\\t(.+)$/,\n (result, [changesInsert, changesDelete, file]) => {\n const insertions = asNumber(changesInsert);\n const deletions = asNumber(changesDelete);\n result.changed++;\n result.insertions += insertions;\n result.deletions += deletions;\n result.files.push({\n file,\n changes: insertions + deletions,\n insertions,\n deletions,\n binary: false\n });\n }\n ),\n new LineParser(/-\\t-\\t(.+)$/, (result, [file]) => {\n result.changed++;\n result.files.push({\n file,\n after: 0,\n before: 0,\n binary: true\n });\n })\n ];\n nameOnlyParser = [\n new LineParser(/(.+)$/, (result, [file]) => {\n result.changed++;\n result.files.push({\n file,\n changes: 0,\n insertions: 0,\n deletions: 0,\n binary: false\n });\n })\n ];\n nameStatusParser = [\n new LineParser(\n /([ACDMRTUXB])([0-9]{0,3})\\t(.[^\\t]*)(\\t(.[^\\t]*))?$/,\n (result, [status, similarity, from, _to, to]) => {\n result.changed++;\n result.files.push({\n file: to ?? from,\n changes: 0,\n insertions: 0,\n deletions: 0,\n binary: false,\n status: orVoid(isDiffNameStatus(status) && status),\n from: orVoid(!!to && from !== to && from),\n similarity: asNumber(similarity)\n });\n }\n )\n ];\n diffSummaryParsers = {\n [\"\" /* NONE */]: statParser,\n [\"--stat\" /* STAT */]: statParser,\n [\"--numstat\" /* NUM_STAT */]: numStatParser,\n [\"--name-status\" /* NAME_STATUS */]: nameStatusParser,\n [\"--name-only\" /* NAME_ONLY */]: nameOnlyParser\n };\n }\n});\n\n// src/lib/parsers/parse-list-log-summary.ts\nfunction lineBuilder(tokens, fields) {\n return fields.reduce(\n (line, field, index) => {\n line[field] = tokens[index] || \"\";\n return line;\n },\n /* @__PURE__ */ Object.create({ diff: null })\n );\n}\nfunction createListLogSummaryParser(splitter = SPLITTER, fields = defaultFieldNames, logFormat = \"\" /* NONE */) {\n const parseDiffResult = getDiffParser(logFormat);\n return function(stdOut) {\n const all = toLinesWithContent(\n stdOut.trim(),\n false,\n START_BOUNDARY\n ).map(function(item) {\n const lineDetail = item.split(COMMIT_BOUNDARY);\n const listLogLine = lineBuilder(lineDetail[0].split(splitter), fields);\n if (lineDetail.length > 1 && !!lineDetail[1].trim()) {\n listLogLine.diff = parseDiffResult(lineDetail[1]);\n }\n return listLogLine;\n });\n return {\n all,\n latest: all.length && all[0] || null,\n total: all.length\n };\n };\n}\nvar START_BOUNDARY, COMMIT_BOUNDARY, SPLITTER, defaultFieldNames;\nvar init_parse_list_log_summary = __esm({\n \"src/lib/parsers/parse-list-log-summary.ts\"() {\n \"use strict\";\n init_utils();\n init_parse_diff_summary();\n init_log_format();\n START_BOUNDARY = \"\\xF2\\xF2\\xF2\\xF2\\xF2\\xF2 \";\n COMMIT_BOUNDARY = \" \\xF2\\xF2\";\n SPLITTER = \" \\xF2 \";\n defaultFieldNames = [\"hash\", \"date\", \"message\", \"refs\", \"author_name\", \"author_email\"];\n }\n});\n\n// src/lib/tasks/diff.ts\nvar diff_exports = {};\n__export(diff_exports, {\n diffSummaryTask: () => diffSummaryTask,\n validateLogFormatConfig: () => validateLogFormatConfig\n});\nfunction diffSummaryTask(customArgs) {\n let logFormat = logFormatFromCommand(customArgs);\n const commands = [\"diff\"];\n if (logFormat === \"\" /* NONE */) {\n logFormat = \"--stat\" /* STAT */;\n commands.push(\"--stat=4096\");\n }\n commands.push(...customArgs);\n return validateLogFormatConfig(commands) || {\n commands,\n format: \"utf-8\",\n parser: getDiffParser(logFormat)\n };\n}\nfunction validateLogFormatConfig(customArgs) {\n const flags = customArgs.filter(isLogFormat);\n if (flags.length > 1) {\n return configurationErrorTask(\n `Summary flags are mutually exclusive - pick one of ${flags.join(\",\")}`\n );\n }\n if (flags.length && customArgs.includes(\"-z\")) {\n return configurationErrorTask(\n `Summary flag ${flags} parsing is not compatible with null termination option '-z'`\n );\n }\n}\nvar init_diff = __esm({\n \"src/lib/tasks/diff.ts\"() {\n \"use strict\";\n init_log_format();\n init_parse_diff_summary();\n init_task();\n }\n});\n\n// src/lib/tasks/log.ts\nfunction prettyFormat(format, splitter) {\n const fields = [];\n const formatStr = [];\n Object.keys(format).forEach((field) => {\n fields.push(field);\n formatStr.push(String(format[field]));\n });\n return [fields, formatStr.join(splitter)];\n}\nfunction userOptions(input) {\n return Object.keys(input).reduce((out, key) => {\n if (!(key in excludeOptions)) {\n out[key] = input[key];\n }\n return out;\n }, {});\n}\nfunction parseLogOptions(opt = {}, customArgs = []) {\n const splitter = filterType(opt.splitter, filterString, SPLITTER);\n const format = filterPlainObject(opt.format) ? opt.format : {\n hash: \"%H\",\n date: opt.strictDate === false ? \"%ai\" : \"%aI\",\n message: \"%s\",\n refs: \"%D\",\n body: opt.multiLine ? \"%B\" : \"%b\",\n author_name: opt.mailMap !== false ? \"%aN\" : \"%an\",\n author_email: opt.mailMap !== false ? \"%aE\" : \"%ae\"\n };\n const [fields, formatStr] = prettyFormat(format, splitter);\n const suffix = [];\n const command = [\n `--pretty=format:${START_BOUNDARY}${formatStr}${COMMIT_BOUNDARY}`,\n ...customArgs\n ];\n const maxCount = opt.n || opt[\"max-count\"] || opt.maxCount;\n if (maxCount) {\n command.push(`--max-count=${maxCount}`);\n }\n if (opt.from || opt.to) {\n const rangeOperator = opt.symmetric !== false ? \"...\" : \"..\";\n suffix.push(`${opt.from || \"\"}${rangeOperator}${opt.to || \"\"}`);\n }\n if (filterString(opt.file)) {\n command.push(\"--follow\", pathspec(opt.file));\n }\n appendTaskOptions(userOptions(opt), command);\n return {\n fields,\n splitter,\n commands: [...command, ...suffix]\n };\n}\nfunction logTask(splitter, fields, customArgs) {\n const parser4 = createListLogSummaryParser(splitter, fields, logFormatFromCommand(customArgs));\n return {\n commands: [\"log\", ...customArgs],\n format: \"utf-8\",\n parser: parser4\n };\n}\nfunction log_default() {\n return {\n log(...rest) {\n const next = trailingFunctionArgument(arguments);\n const options = parseLogOptions(\n trailingOptionsArgument(arguments),\n asStringArray(filterType(arguments[0], filterArray, []))\n );\n const task = rejectDeprecatedSignatures(...rest) || validateLogFormatConfig(options.commands) || createLogTask(options);\n return this._runTask(task, next);\n }\n };\n function createLogTask(options) {\n return logTask(options.splitter, options.fields, options.commands);\n }\n function rejectDeprecatedSignatures(from, to) {\n return filterString(from) && filterString(to) && configurationErrorTask(\n `git.log(string, string) should be replaced with git.log({ from: string, to: string })`\n );\n }\n}\nvar excludeOptions;\nvar init_log = __esm({\n \"src/lib/tasks/log.ts\"() {\n \"use strict\";\n init_log_format();\n init_pathspec();\n init_parse_list_log_summary();\n init_utils();\n init_task();\n init_diff();\n excludeOptions = /* @__PURE__ */ ((excludeOptions2) => {\n excludeOptions2[excludeOptions2[\"--pretty\"] = 0] = \"--pretty\";\n excludeOptions2[excludeOptions2[\"max-count\"] = 1] = \"max-count\";\n excludeOptions2[excludeOptions2[\"maxCount\"] = 2] = \"maxCount\";\n excludeOptions2[excludeOptions2[\"n\"] = 3] = \"n\";\n excludeOptions2[excludeOptions2[\"file\"] = 4] = \"file\";\n excludeOptions2[excludeOptions2[\"format\"] = 5] = \"format\";\n excludeOptions2[excludeOptions2[\"from\"] = 6] = \"from\";\n excludeOptions2[excludeOptions2[\"to\"] = 7] = \"to\";\n excludeOptions2[excludeOptions2[\"splitter\"] = 8] = \"splitter\";\n excludeOptions2[excludeOptions2[\"symmetric\"] = 9] = \"symmetric\";\n excludeOptions2[excludeOptions2[\"mailMap\"] = 10] = \"mailMap\";\n excludeOptions2[excludeOptions2[\"multiLine\"] = 11] = \"multiLine\";\n excludeOptions2[excludeOptions2[\"strictDate\"] = 12] = \"strictDate\";\n return excludeOptions2;\n })(excludeOptions || {});\n }\n});\n\n// src/lib/responses/MergeSummary.ts\nvar MergeSummaryConflict, MergeSummaryDetail;\nvar init_MergeSummary = __esm({\n \"src/lib/responses/MergeSummary.ts\"() {\n \"use strict\";\n MergeSummaryConflict = class {\n constructor(reason, file = null, meta) {\n this.reason = reason;\n this.file = file;\n this.meta = meta;\n }\n toString() {\n return `${this.file}:${this.reason}`;\n }\n };\n MergeSummaryDetail = class {\n constructor() {\n this.conflicts = [];\n this.merges = [];\n this.result = \"success\";\n }\n get failed() {\n return this.conflicts.length > 0;\n }\n get reason() {\n return this.result;\n }\n toString() {\n if (this.conflicts.length) {\n return `CONFLICTS: ${this.conflicts.join(\", \")}`;\n }\n return \"OK\";\n }\n };\n }\n});\n\n// src/lib/responses/PullSummary.ts\nvar PullSummary, PullFailedSummary;\nvar init_PullSummary = __esm({\n \"src/lib/responses/PullSummary.ts\"() {\n \"use strict\";\n PullSummary = class {\n constructor() {\n this.remoteMessages = {\n all: []\n };\n this.created = [];\n this.deleted = [];\n this.files = [];\n this.deletions = {};\n this.insertions = {};\n this.summary = {\n changes: 0,\n deletions: 0,\n insertions: 0\n };\n }\n };\n PullFailedSummary = class {\n constructor() {\n this.remote = \"\";\n this.hash = {\n local: \"\",\n remote: \"\"\n };\n this.branch = {\n local: \"\",\n remote: \"\"\n };\n this.message = \"\";\n }\n toString() {\n return this.message;\n }\n };\n }\n});\n\n// src/lib/parsers/parse-remote-objects.ts\nfunction objectEnumerationResult(remoteMessages) {\n return remoteMessages.objects = remoteMessages.objects || {\n compressing: 0,\n counting: 0,\n enumerating: 0,\n packReused: 0,\n reused: { count: 0, delta: 0 },\n total: { count: 0, delta: 0 }\n };\n}\nfunction asObjectCount(source) {\n const count = /^\\s*(\\d+)/.exec(source);\n const delta = /delta (\\d+)/i.exec(source);\n return {\n count: asNumber(count && count[1] || \"0\"),\n delta: asNumber(delta && delta[1] || \"0\")\n };\n}\nvar remoteMessagesObjectParsers;\nvar init_parse_remote_objects = __esm({\n \"src/lib/parsers/parse-remote-objects.ts\"() {\n \"use strict\";\n init_utils();\n remoteMessagesObjectParsers = [\n new RemoteLineParser(\n /^remote:\\s*(enumerating|counting|compressing) objects: (\\d+),/i,\n (result, [action, count]) => {\n const key = action.toLowerCase();\n const enumeration = objectEnumerationResult(result.remoteMessages);\n Object.assign(enumeration, { [key]: asNumber(count) });\n }\n ),\n new RemoteLineParser(\n /^remote:\\s*(enumerating|counting|compressing) objects: \\d+% \\(\\d+\\/(\\d+)\\),/i,\n (result, [action, count]) => {\n const key = action.toLowerCase();\n const enumeration = objectEnumerationResult(result.remoteMessages);\n Object.assign(enumeration, { [key]: asNumber(count) });\n }\n ),\n new RemoteLineParser(\n /total ([^,]+), reused ([^,]+), pack-reused (\\d+)/i,\n (result, [total, reused, packReused]) => {\n const objects = objectEnumerationResult(result.remoteMessages);\n objects.total = asObjectCount(total);\n objects.reused = asObjectCount(reused);\n objects.packReused = asNumber(packReused);\n }\n )\n ];\n }\n});\n\n// src/lib/parsers/parse-remote-messages.ts\nfunction parseRemoteMessages(_stdOut, stdErr) {\n return parseStringResponse({ remoteMessages: new RemoteMessageSummary() }, parsers2, stdErr);\n}\nvar parsers2, RemoteMessageSummary;\nvar init_parse_remote_messages = __esm({\n \"src/lib/parsers/parse-remote-messages.ts\"() {\n \"use strict\";\n init_utils();\n init_parse_remote_objects();\n parsers2 = [\n new RemoteLineParser(/^remote:\\s*(.+)$/, (result, [text]) => {\n result.remoteMessages.all.push(text.trim());\n return false;\n }),\n ...remoteMessagesObjectParsers,\n new RemoteLineParser(\n [/create a (?:pull|merge) request/i, /\\s(https?:\\/\\/\\S+)$/],\n (result, [pullRequestUrl]) => {\n result.remoteMessages.pullRequestUrl = pullRequestUrl;\n }\n ),\n new RemoteLineParser(\n [/found (\\d+) vulnerabilities.+\\(([^)]+)\\)/i, /\\s(https?:\\/\\/\\S+)$/],\n (result, [count, summary, url]) => {\n result.remoteMessages.vulnerabilities = {\n count: asNumber(count),\n summary,\n url\n };\n }\n )\n ];\n RemoteMessageSummary = class {\n constructor() {\n this.all = [];\n }\n };\n }\n});\n\n// src/lib/parsers/parse-pull.ts\nfunction parsePullErrorResult(stdOut, stdErr) {\n const pullError = parseStringResponse(new PullFailedSummary(), errorParsers, [stdOut, stdErr]);\n return pullError.message && pullError;\n}\nvar FILE_UPDATE_REGEX, SUMMARY_REGEX, ACTION_REGEX, parsers3, errorParsers, parsePullDetail, parsePullResult;\nvar init_parse_pull = __esm({\n \"src/lib/parsers/parse-pull.ts\"() {\n \"use strict\";\n init_PullSummary();\n init_utils();\n init_parse_remote_messages();\n FILE_UPDATE_REGEX = /^\\s*(.+?)\\s+\\|\\s+\\d+\\s*(\\+*)(-*)/;\n SUMMARY_REGEX = /(\\d+)\\D+((\\d+)\\D+\\(\\+\\))?(\\D+(\\d+)\\D+\\(-\\))?/;\n ACTION_REGEX = /^(create|delete) mode \\d+ (.+)/;\n parsers3 = [\n new LineParser(FILE_UPDATE_REGEX, (result, [file, insertions, deletions]) => {\n result.files.push(file);\n if (insertions) {\n result.insertions[file] = insertions.length;\n }\n if (deletions) {\n result.deletions[file] = deletions.length;\n }\n }),\n new LineParser(SUMMARY_REGEX, (result, [changes, , insertions, , deletions]) => {\n if (insertions !== void 0 || deletions !== void 0) {\n result.summary.changes = +changes || 0;\n result.summary.insertions = +insertions || 0;\n result.summary.deletions = +deletions || 0;\n return true;\n }\n return false;\n }),\n new LineParser(ACTION_REGEX, (result, [action, file]) => {\n append(result.files, file);\n append(action === \"create\" ? result.created : result.deleted, file);\n })\n ];\n errorParsers = [\n new LineParser(/^from\\s(.+)$/i, (result, [remote]) => void (result.remote = remote)),\n new LineParser(/^fatal:\\s(.+)$/, (result, [message]) => void (result.message = message)),\n new LineParser(\n /([a-z0-9]+)\\.\\.([a-z0-9]+)\\s+(\\S+)\\s+->\\s+(\\S+)$/,\n (result, [hashLocal, hashRemote, branchLocal, branchRemote]) => {\n result.branch.local = branchLocal;\n result.hash.local = hashLocal;\n result.branch.remote = branchRemote;\n result.hash.remote = hashRemote;\n }\n )\n ];\n parsePullDetail = (stdOut, stdErr) => {\n return parseStringResponse(new PullSummary(), parsers3, [stdOut, stdErr]);\n };\n parsePullResult = (stdOut, stdErr) => {\n return Object.assign(\n new PullSummary(),\n parsePullDetail(stdOut, stdErr),\n parseRemoteMessages(stdOut, stdErr)\n );\n };\n }\n});\n\n// src/lib/parsers/parse-merge.ts\nvar parsers4, parseMergeResult, parseMergeDetail;\nvar init_parse_merge = __esm({\n \"src/lib/parsers/parse-merge.ts\"() {\n \"use strict\";\n init_MergeSummary();\n init_utils();\n init_parse_pull();\n parsers4 = [\n new LineParser(/^Auto-merging\\s+(.+)$/, (summary, [autoMerge]) => {\n summary.merges.push(autoMerge);\n }),\n new LineParser(/^CONFLICT\\s+\\((.+)\\): Merge conflict in (.+)$/, (summary, [reason, file]) => {\n summary.conflicts.push(new MergeSummaryConflict(reason, file));\n }),\n new LineParser(\n /^CONFLICT\\s+\\((.+\\/delete)\\): (.+) deleted in (.+) and/,\n (summary, [reason, file, deleteRef]) => {\n summary.conflicts.push(new MergeSummaryConflict(reason, file, { deleteRef }));\n }\n ),\n new LineParser(/^CONFLICT\\s+\\((.+)\\):/, (summary, [reason]) => {\n summary.conflicts.push(new MergeSummaryConflict(reason, null));\n }),\n new LineParser(/^Automatic merge failed;\\s+(.+)$/, (summary, [result]) => {\n summary.result = result;\n })\n ];\n parseMergeResult = (stdOut, stdErr) => {\n return Object.assign(parseMergeDetail(stdOut, stdErr), parsePullResult(stdOut, stdErr));\n };\n parseMergeDetail = (stdOut) => {\n return parseStringResponse(new MergeSummaryDetail(), parsers4, stdOut);\n };\n }\n});\n\n// src/lib/tasks/merge.ts\nfunction mergeTask(customArgs) {\n if (!customArgs.length) {\n return configurationErrorTask(\"Git.merge requires at least one option\");\n }\n return {\n commands: [\"merge\", ...customArgs],\n format: \"utf-8\",\n parser(stdOut, stdErr) {\n const merge = parseMergeResult(stdOut, stdErr);\n if (merge.failed) {\n throw new GitResponseError(merge);\n }\n return merge;\n }\n };\n}\nvar init_merge = __esm({\n \"src/lib/tasks/merge.ts\"() {\n \"use strict\";\n init_git_response_error();\n init_parse_merge();\n init_task();\n }\n});\n\n// src/lib/parsers/parse-push.ts\nfunction pushResultPushedItem(local, remote, status) {\n const deleted = status.includes(\"deleted\");\n const tag = status.includes(\"tag\") || /^refs\\/tags/.test(local);\n const alreadyUpdated = !status.includes(\"new\");\n return {\n deleted,\n tag,\n branch: !tag,\n new: !alreadyUpdated,\n alreadyUpdated,\n local,\n remote\n };\n}\nvar parsers5, parsePushResult, parsePushDetail;\nvar init_parse_push = __esm({\n \"src/lib/parsers/parse-push.ts\"() {\n \"use strict\";\n init_utils();\n init_parse_remote_messages();\n parsers5 = [\n new LineParser(/^Pushing to (.+)$/, (result, [repo]) => {\n result.repo = repo;\n }),\n new LineParser(/^updating local tracking ref '(.+)'/, (result, [local]) => {\n result.ref = {\n ...result.ref || {},\n local\n };\n }),\n new LineParser(/^[=*-]\\s+([^:]+):(\\S+)\\s+\\[(.+)]$/, (result, [local, remote, type]) => {\n result.pushed.push(pushResultPushedItem(local, remote, type));\n }),\n new LineParser(\n /^Branch '([^']+)' set up to track remote branch '([^']+)' from '([^']+)'/,\n (result, [local, remote, remoteName]) => {\n result.branch = {\n ...result.branch || {},\n local,\n remote,\n remoteName\n };\n }\n ),\n new LineParser(\n /^([^:]+):(\\S+)\\s+([a-z0-9]+)\\.\\.([a-z0-9]+)$/,\n (result, [local, remote, from, to]) => {\n result.update = {\n head: {\n local,\n remote\n },\n hash: {\n from,\n to\n }\n };\n }\n )\n ];\n parsePushResult = (stdOut, stdErr) => {\n const pushDetail = parsePushDetail(stdOut, stdErr);\n const responseDetail = parseRemoteMessages(stdOut, stdErr);\n return {\n ...pushDetail,\n ...responseDetail\n };\n };\n parsePushDetail = (stdOut, stdErr) => {\n return parseStringResponse({ pushed: [] }, parsers5, [stdOut, stdErr]);\n };\n }\n});\n\n// src/lib/tasks/push.ts\nvar push_exports = {};\n__export(push_exports, {\n pushTagsTask: () => pushTagsTask,\n pushTask: () => pushTask\n});\nfunction pushTagsTask(ref = {}, customArgs) {\n append(customArgs, \"--tags\");\n return pushTask(ref, customArgs);\n}\nfunction pushTask(ref = {}, customArgs) {\n const commands = [\"push\", ...customArgs];\n if (ref.branch) {\n commands.splice(1, 0, ref.branch);\n }\n if (ref.remote) {\n commands.splice(1, 0, ref.remote);\n }\n remove(commands, \"-v\");\n append(commands, \"--verbose\");\n append(commands, \"--porcelain\");\n return {\n commands,\n format: \"utf-8\",\n parser: parsePushResult\n };\n}\nvar init_push = __esm({\n \"src/lib/tasks/push.ts\"() {\n \"use strict\";\n init_parse_push();\n init_utils();\n }\n});\n\n// src/lib/tasks/show.ts\nfunction show_default() {\n return {\n showBuffer() {\n const commands = [\"show\", ...getTrailingOptions(arguments, 1)];\n if (!commands.includes(\"--binary\")) {\n commands.splice(1, 0, \"--binary\");\n }\n return this._runTask(\n straightThroughBufferTask(commands),\n trailingFunctionArgument(arguments)\n );\n },\n show() {\n const commands = [\"show\", ...getTrailingOptions(arguments, 1)];\n return this._runTask(\n straightThroughStringTask(commands),\n trailingFunctionArgument(arguments)\n );\n }\n };\n}\nvar init_show = __esm({\n \"src/lib/tasks/show.ts\"() {\n \"use strict\";\n init_utils();\n init_task();\n }\n});\n\n// src/lib/responses/FileStatusSummary.ts\nvar fromPathRegex, FileStatusSummary;\nvar init_FileStatusSummary = __esm({\n \"src/lib/responses/FileStatusSummary.ts\"() {\n \"use strict\";\n fromPathRegex = /^(.+)\\0(.+)$/;\n FileStatusSummary = class {\n constructor(path, index, working_dir) {\n this.path = path;\n this.index = index;\n this.working_dir = working_dir;\n if (index === \"R\" || working_dir === \"R\") {\n const detail = fromPathRegex.exec(path) || [null, path, path];\n this.from = detail[2] || \"\";\n this.path = detail[1] || \"\";\n }\n }\n };\n }\n});\n\n// src/lib/responses/StatusSummary.ts\nfunction renamedFile(line) {\n const [to, from] = line.split(NULL);\n return {\n from: from || to,\n to\n };\n}\nfunction parser3(indexX, indexY, handler) {\n return [`${indexX}${indexY}`, handler];\n}\nfunction conflicts(indexX, ...indexY) {\n return indexY.map((y) => parser3(indexX, y, (result, file) => result.conflicted.push(file)));\n}\nfunction splitLine(result, lineStr) {\n const trimmed2 = lineStr.trim();\n switch (\" \") {\n case trimmed2.charAt(2):\n return data(trimmed2.charAt(0), trimmed2.charAt(1), trimmed2.slice(3));\n case trimmed2.charAt(1):\n return data(\" \" /* NONE */, trimmed2.charAt(0), trimmed2.slice(2));\n default:\n return;\n }\n function data(index, workingDir, path) {\n const raw = `${index}${workingDir}`;\n const handler = parsers6.get(raw);\n if (handler) {\n handler(result, path);\n }\n if (raw !== \"##\" && raw !== \"!!\") {\n result.files.push(new FileStatusSummary(path, index, workingDir));\n }\n }\n}\nvar StatusSummary, parsers6, parseStatusSummary;\nvar init_StatusSummary = __esm({\n \"src/lib/responses/StatusSummary.ts\"() {\n \"use strict\";\n init_utils();\n init_FileStatusSummary();\n StatusSummary = class {\n constructor() {\n this.not_added = [];\n this.conflicted = [];\n this.created = [];\n this.deleted = [];\n this.ignored = void 0;\n this.modified = [];\n this.renamed = [];\n this.files = [];\n this.staged = [];\n this.ahead = 0;\n this.behind = 0;\n this.current = null;\n this.tracking = null;\n this.detached = false;\n this.isClean = () => {\n return !this.files.length;\n };\n }\n };\n parsers6 = new Map([\n parser3(\n \" \" /* NONE */,\n \"A\" /* ADDED */,\n (result, file) => result.created.push(file)\n ),\n parser3(\n \" \" /* NONE */,\n \"D\" /* DELETED */,\n (result, file) => result.deleted.push(file)\n ),\n parser3(\n \" \" /* NONE */,\n \"M\" /* MODIFIED */,\n (result, file) => result.modified.push(file)\n ),\n parser3(\"A\" /* ADDED */, \" \" /* NONE */, (result, file) => {\n result.created.push(file);\n result.staged.push(file);\n }),\n parser3(\"A\" /* ADDED */, \"M\" /* MODIFIED */, (result, file) => {\n result.created.push(file);\n result.staged.push(file);\n result.modified.push(file);\n }),\n parser3(\"D\" /* DELETED */, \" \" /* NONE */, (result, file) => {\n result.deleted.push(file);\n result.staged.push(file);\n }),\n parser3(\"M\" /* MODIFIED */, \" \" /* NONE */, (result, file) => {\n result.modified.push(file);\n result.staged.push(file);\n }),\n parser3(\"M\" /* MODIFIED */, \"M\" /* MODIFIED */, (result, file) => {\n result.modified.push(file);\n result.staged.push(file);\n }),\n parser3(\"R\" /* RENAMED */, \" \" /* NONE */, (result, file) => {\n result.renamed.push(renamedFile(file));\n }),\n parser3(\"R\" /* RENAMED */, \"M\" /* MODIFIED */, (result, file) => {\n const renamed = renamedFile(file);\n result.renamed.push(renamed);\n result.modified.push(renamed.to);\n }),\n parser3(\"!\" /* IGNORED */, \"!\" /* IGNORED */, (_result, _file) => {\n (_result.ignored = _result.ignored || []).push(_file);\n }),\n parser3(\n \"?\" /* UNTRACKED */,\n \"?\" /* UNTRACKED */,\n (result, file) => result.not_added.push(file)\n ),\n ...conflicts(\"A\" /* ADDED */, \"A\" /* ADDED */, \"U\" /* UNMERGED */),\n ...conflicts(\n \"D\" /* DELETED */,\n \"D\" /* DELETED */,\n \"U\" /* UNMERGED */\n ),\n ...conflicts(\n \"U\" /* UNMERGED */,\n \"A\" /* ADDED */,\n \"D\" /* DELETED */,\n \"U\" /* UNMERGED */\n ),\n [\n \"##\",\n (result, line) => {\n const aheadReg = /ahead (\\d+)/;\n const behindReg = /behind (\\d+)/;\n const currentReg = /^(.+?(?=(?:\\.{3}|\\s|$)))/;\n const trackingReg = /\\.{3}(\\S*)/;\n const onEmptyBranchReg = /\\son\\s(\\S+?)(?=\\.{3}|$)/;\n let regexResult = aheadReg.exec(line);\n result.ahead = regexResult && +regexResult[1] || 0;\n regexResult = behindReg.exec(line);\n result.behind = regexResult && +regexResult[1] || 0;\n regexResult = currentReg.exec(line);\n result.current = filterType(regexResult?.[1], filterString, null);\n regexResult = trackingReg.exec(line);\n result.tracking = filterType(regexResult?.[1], filterString, null);\n regexResult = onEmptyBranchReg.exec(line);\n if (regexResult) {\n result.current = filterType(regexResult?.[1], filterString, result.current);\n }\n result.detached = /\\(no branch\\)/.test(line);\n }\n ]\n ]);\n parseStatusSummary = function(text) {\n const lines = text.split(NULL);\n const status = new StatusSummary();\n for (let i = 0, l = lines.length; i < l; ) {\n let line = lines[i++].trim();\n if (!line) {\n continue;\n }\n if (line.charAt(0) === \"R\" /* RENAMED */) {\n line += NULL + (lines[i++] || \"\");\n }\n splitLine(status, line);\n }\n return status;\n };\n }\n});\n\n// src/lib/tasks/status.ts\nfunction statusTask(customArgs) {\n const commands = [\n \"status\",\n \"--porcelain\",\n \"-b\",\n \"-u\",\n \"--null\",\n ...customArgs.filter((arg) => !ignoredOptions.includes(arg))\n ];\n return {\n format: \"utf-8\",\n commands,\n parser(text) {\n return parseStatusSummary(text);\n }\n };\n}\nvar ignoredOptions;\nvar init_status = __esm({\n \"src/lib/tasks/status.ts\"() {\n \"use strict\";\n init_StatusSummary();\n ignoredOptions = [\"--null\", \"-z\"];\n }\n});\n\n// src/lib/tasks/version.ts\nfunction versionResponse(major = 0, minor = 0, patch = 0, agent = \"\", installed = true) {\n return Object.defineProperty(\n {\n major,\n minor,\n patch,\n agent,\n installed\n },\n \"toString\",\n {\n value() {\n return `${this.major}.${this.minor}.${this.patch}`;\n },\n configurable: false,\n enumerable: false\n }\n );\n}\nfunction notInstalledResponse() {\n return versionResponse(0, 0, 0, \"\", false);\n}\nfunction version_default() {\n return {\n version() {\n return this._runTask({\n commands: [\"--version\"],\n format: \"utf-8\",\n parser: versionParser,\n onError(result, error, done, fail) {\n if (result.exitCode === -2 /* NOT_FOUND */) {\n return done(Buffer.from(NOT_INSTALLED));\n }\n fail(error);\n }\n });\n }\n };\n}\nfunction versionParser(stdOut) {\n if (stdOut === NOT_INSTALLED) {\n return notInstalledResponse();\n }\n return parseStringResponse(versionResponse(0, 0, 0, stdOut), parsers7, stdOut);\n}\nvar NOT_INSTALLED, parsers7;\nvar init_version = __esm({\n \"src/lib/tasks/version.ts\"() {\n \"use strict\";\n init_utils();\n NOT_INSTALLED = \"installed=false\";\n parsers7 = [\n new LineParser(\n /version (\\d+)\\.(\\d+)\\.(\\d+)(?:\\s*\\((.+)\\))?/,\n (result, [major, minor, patch, agent = \"\"]) => {\n Object.assign(\n result,\n versionResponse(asNumber(major), asNumber(minor), asNumber(patch), agent)\n );\n }\n ),\n new LineParser(\n /version (\\d+)\\.(\\d+)\\.(\\D+)(.+)?$/,\n (result, [major, minor, patch, agent = \"\"]) => {\n Object.assign(result, versionResponse(asNumber(major), asNumber(minor), patch, agent));\n }\n )\n ];\n }\n});\n\n// src/lib/simple-git-api.ts\nvar simple_git_api_exports = {};\n__export(simple_git_api_exports, {\n SimpleGitApi: () => SimpleGitApi\n});\nvar SimpleGitApi;\nvar init_simple_git_api = __esm({\n \"src/lib/simple-git-api.ts\"() {\n \"use strict\";\n init_task_callback();\n init_change_working_directory();\n init_checkout();\n init_count_objects();\n init_commit();\n init_config();\n init_first_commit();\n init_grep();\n init_hash_object();\n init_init();\n init_log();\n init_merge();\n init_push();\n init_show();\n init_status();\n init_task();\n init_version();\n init_utils();\n SimpleGitApi = class {\n constructor(_executor) {\n this._executor = _executor;\n }\n _runTask(task, then) {\n const chain = this._executor.chain();\n const promise = chain.push(task);\n if (then) {\n taskCallback(task, promise, then);\n }\n return Object.create(this, {\n then: { value: promise.then.bind(promise) },\n catch: { value: promise.catch.bind(promise) },\n _executor: { value: chain }\n });\n }\n add(files) {\n return this._runTask(\n straightThroughStringTask([\"add\", ...asArray(files)]),\n trailingFunctionArgument(arguments)\n );\n }\n cwd(directory) {\n const next = trailingFunctionArgument(arguments);\n if (typeof directory === \"string\") {\n return this._runTask(changeWorkingDirectoryTask(directory, this._executor), next);\n }\n if (typeof directory?.path === \"string\") {\n return this._runTask(\n changeWorkingDirectoryTask(\n directory.path,\n directory.root && this._executor || void 0\n ),\n next\n );\n }\n return this._runTask(\n configurationErrorTask(\"Git.cwd: workingDirectory must be supplied as a string\"),\n next\n );\n }\n hashObject(path, write) {\n return this._runTask(\n hashObjectTask(path, write === true),\n trailingFunctionArgument(arguments)\n );\n }\n init(bare) {\n return this._runTask(\n initTask(bare === true, this._executor.cwd, getTrailingOptions(arguments)),\n trailingFunctionArgument(arguments)\n );\n }\n merge() {\n return this._runTask(\n mergeTask(getTrailingOptions(arguments)),\n trailingFunctionArgument(arguments)\n );\n }\n mergeFromTo(remote, branch) {\n if (!(filterString(remote) && filterString(branch))) {\n return this._runTask(\n configurationErrorTask(\n `Git.mergeFromTo requires that the 'remote' and 'branch' arguments are supplied as strings`\n )\n );\n }\n return this._runTask(\n mergeTask([remote, branch, ...getTrailingOptions(arguments)]),\n trailingFunctionArgument(arguments, false)\n );\n }\n outputHandler(handler) {\n this._executor.outputHandler = handler;\n return this;\n }\n push() {\n const task = pushTask(\n {\n remote: filterType(arguments[0], filterString),\n branch: filterType(arguments[1], filterString)\n },\n getTrailingOptions(arguments)\n );\n return this._runTask(task, trailingFunctionArgument(arguments));\n }\n stash() {\n return this._runTask(\n straightThroughStringTask([\"stash\", ...getTrailingOptions(arguments)]),\n trailingFunctionArgument(arguments)\n );\n }\n status() {\n return this._runTask(\n statusTask(getTrailingOptions(arguments)),\n trailingFunctionArgument(arguments)\n );\n }\n };\n Object.assign(\n SimpleGitApi.prototype,\n checkout_default(),\n commit_default(),\n config_default(),\n count_objects_default(),\n first_commit_default(),\n grep_default(),\n log_default(),\n show_default(),\n version_default()\n );\n }\n});\n\n// src/lib/runners/scheduler.ts\nvar scheduler_exports = {};\n__export(scheduler_exports, {\n Scheduler: () => Scheduler\n});\nimport { createDeferred } from \"@kwsites/promise-deferred\";\nvar createScheduledTask, Scheduler;\nvar init_scheduler = __esm({\n \"src/lib/runners/scheduler.ts\"() {\n \"use strict\";\n init_utils();\n init_git_logger();\n createScheduledTask = /* @__PURE__ */ (() => {\n let id = 0;\n return () => {\n id++;\n const { promise, done } = createDeferred();\n return {\n promise,\n done,\n id\n };\n };\n })();\n Scheduler = class {\n constructor(concurrency = 2) {\n this.concurrency = concurrency;\n this.logger = createLogger(\"\", \"scheduler\");\n this.pending = [];\n this.running = [];\n this.logger(`Constructed, concurrency=%s`, concurrency);\n }\n schedule() {\n if (!this.pending.length || this.running.length >= this.concurrency) {\n this.logger(\n `Schedule attempt ignored, pending=%s running=%s concurrency=%s`,\n this.pending.length,\n this.running.length,\n this.concurrency\n );\n return;\n }\n const task = append(this.running, this.pending.shift());\n this.logger(`Attempting id=%s`, task.id);\n task.done(() => {\n this.logger(`Completing id=`, task.id);\n remove(this.running, task);\n this.schedule();\n });\n }\n next() {\n const { promise, id } = append(this.pending, createScheduledTask());\n this.logger(`Scheduling id=%s`, id);\n this.schedule();\n return promise;\n }\n };\n }\n});\n\n// src/lib/tasks/apply-patch.ts\nvar apply_patch_exports = {};\n__export(apply_patch_exports, {\n applyPatchTask: () => applyPatchTask\n});\nfunction applyPatchTask(patches, customArgs) {\n return straightThroughStringTask([\"apply\", ...customArgs, ...patches]);\n}\nvar init_apply_patch = __esm({\n \"src/lib/tasks/apply-patch.ts\"() {\n \"use strict\";\n init_task();\n }\n});\n\n// src/lib/responses/BranchDeleteSummary.ts\nfunction branchDeletionSuccess(branch, hash) {\n return {\n branch,\n hash,\n success: true\n };\n}\nfunction branchDeletionFailure(branch) {\n return {\n branch,\n hash: null,\n success: false\n };\n}\nvar BranchDeletionBatch;\nvar init_BranchDeleteSummary = __esm({\n \"src/lib/responses/BranchDeleteSummary.ts\"() {\n \"use strict\";\n BranchDeletionBatch = class {\n constructor() {\n this.all = [];\n this.branches = {};\n this.errors = [];\n }\n get success() {\n return !this.errors.length;\n }\n };\n }\n});\n\n// src/lib/parsers/parse-branch-delete.ts\nfunction hasBranchDeletionError(data, processExitCode) {\n return processExitCode === 1 /* ERROR */ && deleteErrorRegex.test(data);\n}\nvar deleteSuccessRegex, deleteErrorRegex, parsers8, parseBranchDeletions;\nvar init_parse_branch_delete = __esm({\n \"src/lib/parsers/parse-branch-delete.ts\"() {\n \"use strict\";\n init_BranchDeleteSummary();\n init_utils();\n deleteSuccessRegex = /(\\S+)\\s+\\(\\S+\\s([^)]+)\\)/;\n deleteErrorRegex = /^error[^']+'([^']+)'/m;\n parsers8 = [\n new LineParser(deleteSuccessRegex, (result, [branch, hash]) => {\n const deletion = branchDeletionSuccess(branch, hash);\n result.all.push(deletion);\n result.branches[branch] = deletion;\n }),\n new LineParser(deleteErrorRegex, (result, [branch]) => {\n const deletion = branchDeletionFailure(branch);\n result.errors.push(deletion);\n result.all.push(deletion);\n result.branches[branch] = deletion;\n })\n ];\n parseBranchDeletions = (stdOut, stdErr) => {\n return parseStringResponse(new BranchDeletionBatch(), parsers8, [stdOut, stdErr]);\n };\n }\n});\n\n// src/lib/responses/BranchSummary.ts\nvar BranchSummaryResult;\nvar init_BranchSummary = __esm({\n \"src/lib/responses/BranchSummary.ts\"() {\n \"use strict\";\n BranchSummaryResult = class {\n constructor() {\n this.all = [];\n this.branches = {};\n this.current = \"\";\n this.detached = false;\n }\n push(status, detached, name, commit, label) {\n if (status === \"*\" /* CURRENT */) {\n this.detached = detached;\n this.current = name;\n }\n this.all.push(name);\n this.branches[name] = {\n current: status === \"*\" /* CURRENT */,\n linkedWorkTree: status === \"+\" /* LINKED */,\n name,\n commit,\n label\n };\n }\n };\n }\n});\n\n// src/lib/parsers/parse-branch.ts\nfunction branchStatus(input) {\n return input ? input.charAt(0) : \"\";\n}\nfunction parseBranchSummary(stdOut, currentOnly = false) {\n return parseStringResponse(\n new BranchSummaryResult(),\n currentOnly ? [currentBranchParser] : parsers9,\n stdOut\n );\n}\nvar parsers9, currentBranchParser;\nvar init_parse_branch = __esm({\n \"src/lib/parsers/parse-branch.ts\"() {\n \"use strict\";\n init_BranchSummary();\n init_utils();\n parsers9 = [\n new LineParser(\n /^([*+]\\s)?\\((?:HEAD )?detached (?:from|at) (\\S+)\\)\\s+([a-z0-9]+)\\s(.*)$/,\n (result, [current, name, commit, label]) => {\n result.push(branchStatus(current), true, name, commit, label);\n }\n ),\n new LineParser(\n /^([*+]\\s)?(\\S+)\\s+([a-z0-9]+)\\s?(.*)$/s,\n (result, [current, name, commit, label]) => {\n result.push(branchStatus(current), false, name, commit, label);\n }\n )\n ];\n currentBranchParser = new LineParser(/^(\\S+)$/s, (result, [name]) => {\n result.push(\"*\" /* CURRENT */, false, name, \"\", \"\");\n });\n }\n});\n\n// src/lib/tasks/branch.ts\nvar branch_exports = {};\n__export(branch_exports, {\n branchLocalTask: () => branchLocalTask,\n branchTask: () => branchTask,\n containsDeleteBranchCommand: () => containsDeleteBranchCommand,\n deleteBranchTask: () => deleteBranchTask,\n deleteBranchesTask: () => deleteBranchesTask\n});\nfunction containsDeleteBranchCommand(commands) {\n const deleteCommands = [\"-d\", \"-D\", \"--delete\"];\n return commands.some((command) => deleteCommands.includes(command));\n}\nfunction branchTask(customArgs) {\n const isDelete = containsDeleteBranchCommand(customArgs);\n const isCurrentOnly = customArgs.includes(\"--show-current\");\n const commands = [\"branch\", ...customArgs];\n if (commands.length === 1) {\n commands.push(\"-a\");\n }\n if (!commands.includes(\"-v\")) {\n commands.splice(1, 0, \"-v\");\n }\n return {\n format: \"utf-8\",\n commands,\n parser(stdOut, stdErr) {\n if (isDelete) {\n return parseBranchDeletions(stdOut, stdErr).all[0];\n }\n return parseBranchSummary(stdOut, isCurrentOnly);\n }\n };\n}\nfunction branchLocalTask() {\n return {\n format: \"utf-8\",\n commands: [\"branch\", \"-v\"],\n parser(stdOut) {\n return parseBranchSummary(stdOut);\n }\n };\n}\nfunction deleteBranchesTask(branches, forceDelete = false) {\n return {\n format: \"utf-8\",\n commands: [\"branch\", \"-v\", forceDelete ? \"-D\" : \"-d\", ...branches],\n parser(stdOut, stdErr) {\n return parseBranchDeletions(stdOut, stdErr);\n },\n onError({ exitCode, stdOut }, error, done, fail) {\n if (!hasBranchDeletionError(String(error), exitCode)) {\n return fail(error);\n }\n done(stdOut);\n }\n };\n}\nfunction deleteBranchTask(branch, forceDelete = false) {\n const task = {\n format: \"utf-8\",\n commands: [\"branch\", \"-v\", forceDelete ? \"-D\" : \"-d\", branch],\n parser(stdOut, stdErr) {\n return parseBranchDeletions(stdOut, stdErr).branches[branch];\n },\n onError({ exitCode, stdErr, stdOut }, error, _, fail) {\n if (!hasBranchDeletionError(String(error), exitCode)) {\n return fail(error);\n }\n throw new GitResponseError(\n task.parser(bufferToString(stdOut), bufferToString(stdErr)),\n String(error)\n );\n }\n };\n return task;\n}\nvar init_branch = __esm({\n \"src/lib/tasks/branch.ts\"() {\n \"use strict\";\n init_git_response_error();\n init_parse_branch_delete();\n init_parse_branch();\n init_utils();\n }\n});\n\n// src/lib/responses/CheckIgnore.ts\nimport { normalize } from \"node:path\";\nfunction toPath(input) {\n const path = input.trim().replace(/^[\"']|[\"']$/g, \"\");\n return path && normalize(path);\n}\nvar parseCheckIgnore;\nvar init_CheckIgnore = __esm({\n \"src/lib/responses/CheckIgnore.ts\"() {\n \"use strict\";\n parseCheckIgnore = (text) => {\n return text.split(/\\n/g).map(toPath).filter(Boolean);\n };\n }\n});\n\n// src/lib/tasks/check-ignore.ts\nvar check_ignore_exports = {};\n__export(check_ignore_exports, {\n checkIgnoreTask: () => checkIgnoreTask\n});\nfunction checkIgnoreTask(paths) {\n return {\n commands: [\"check-ignore\", ...paths],\n format: \"utf-8\",\n parser: parseCheckIgnore\n };\n}\nvar init_check_ignore = __esm({\n \"src/lib/tasks/check-ignore.ts\"() {\n \"use strict\";\n init_CheckIgnore();\n }\n});\n\n// src/lib/tasks/clone.ts\nvar clone_exports = {};\n__export(clone_exports, {\n cloneMirrorTask: () => cloneMirrorTask,\n cloneTask: () => cloneTask\n});\nfunction disallowedCommand(command) {\n return /^--upload-pack(=|$)/.test(command);\n}\nfunction cloneTask(repo, directory, customArgs) {\n const commands = [\"clone\", ...customArgs];\n filterString(repo) && commands.push(repo);\n filterString(directory) && commands.push(directory);\n const banned = commands.find(disallowedCommand);\n if (banned) {\n return configurationErrorTask(`git.fetch: potential exploit argument blocked.`);\n }\n return straightThroughStringTask(commands);\n}\nfunction cloneMirrorTask(repo, directory, customArgs) {\n append(customArgs, \"--mirror\");\n return cloneTask(repo, directory, customArgs);\n}\nvar init_clone = __esm({\n \"src/lib/tasks/clone.ts\"() {\n \"use strict\";\n init_task();\n init_utils();\n }\n});\n\n// src/lib/parsers/parse-fetch.ts\nfunction parseFetchResult(stdOut, stdErr) {\n const result = {\n raw: stdOut,\n remote: null,\n branches: [],\n tags: [],\n updated: [],\n deleted: []\n };\n return parseStringResponse(result, parsers10, [stdOut, stdErr]);\n}\nvar parsers10;\nvar init_parse_fetch = __esm({\n \"src/lib/parsers/parse-fetch.ts\"() {\n \"use strict\";\n init_utils();\n parsers10 = [\n new LineParser(/From (.+)$/, (result, [remote]) => {\n result.remote = remote;\n }),\n new LineParser(/\\* \\[new branch]\\s+(\\S+)\\s*-> (.+)$/, (result, [name, tracking]) => {\n result.branches.push({\n name,\n tracking\n });\n }),\n new LineParser(/\\* \\[new tag]\\s+(\\S+)\\s*-> (.+)$/, (result, [name, tracking]) => {\n result.tags.push({\n name,\n tracking\n });\n }),\n new LineParser(/- \\[deleted]\\s+\\S+\\s*-> (.+)$/, (result, [tracking]) => {\n result.deleted.push({\n tracking\n });\n }),\n new LineParser(\n /\\s*([^.]+)\\.\\.(\\S+)\\s+(\\S+)\\s*-> (.+)$/,\n (result, [from, to, name, tracking]) => {\n result.updated.push({\n name,\n tracking,\n to,\n from\n });\n }\n )\n ];\n }\n});\n\n// src/lib/tasks/fetch.ts\nvar fetch_exports = {};\n__export(fetch_exports, {\n fetchTask: () => fetchTask\n});\nfunction disallowedCommand2(command) {\n return /^--upload-pack(=|$)/.test(command);\n}\nfunction fetchTask(remote, branch, customArgs) {\n const commands = [\"fetch\", ...customArgs];\n if (remote && branch) {\n commands.push(remote, branch);\n }\n const banned = commands.find(disallowedCommand2);\n if (banned) {\n return configurationErrorTask(`git.fetch: potential exploit argument blocked.`);\n }\n return {\n commands,\n format: \"utf-8\",\n parser: parseFetchResult\n };\n}\nvar init_fetch = __esm({\n \"src/lib/tasks/fetch.ts\"() {\n \"use strict\";\n init_parse_fetch();\n init_task();\n }\n});\n\n// src/lib/parsers/parse-move.ts\nfunction parseMoveResult(stdOut) {\n return parseStringResponse({ moves: [] }, parsers11, stdOut);\n}\nvar parsers11;\nvar init_parse_move = __esm({\n \"src/lib/parsers/parse-move.ts\"() {\n \"use strict\";\n init_utils();\n parsers11 = [\n new LineParser(/^Renaming (.+) to (.+)$/, (result, [from, to]) => {\n result.moves.push({ from, to });\n })\n ];\n }\n});\n\n// src/lib/tasks/move.ts\nvar move_exports = {};\n__export(move_exports, {\n moveTask: () => moveTask\n});\nfunction moveTask(from, to) {\n return {\n commands: [\"mv\", \"-v\", ...asArray(from), to],\n format: \"utf-8\",\n parser: parseMoveResult\n };\n}\nvar init_move = __esm({\n \"src/lib/tasks/move.ts\"() {\n \"use strict\";\n init_parse_move();\n init_utils();\n }\n});\n\n// src/lib/tasks/pull.ts\nvar pull_exports = {};\n__export(pull_exports, {\n pullTask: () => pullTask\n});\nfunction pullTask(remote, branch, customArgs) {\n const commands = [\"pull\", ...customArgs];\n if (remote && branch) {\n commands.splice(1, 0, remote, branch);\n }\n return {\n commands,\n format: \"utf-8\",\n parser(stdOut, stdErr) {\n return parsePullResult(stdOut, stdErr);\n },\n onError(result, _error, _done, fail) {\n const pullError = parsePullErrorResult(\n bufferToString(result.stdOut),\n bufferToString(result.stdErr)\n );\n if (pullError) {\n return fail(new GitResponseError(pullError));\n }\n fail(_error);\n }\n };\n}\nvar init_pull = __esm({\n \"src/lib/tasks/pull.ts\"() {\n \"use strict\";\n init_git_response_error();\n init_parse_pull();\n init_utils();\n }\n});\n\n// src/lib/responses/GetRemoteSummary.ts\nfunction parseGetRemotes(text) {\n const remotes = {};\n forEach(text, ([name]) => remotes[name] = { name });\n return Object.values(remotes);\n}\nfunction parseGetRemotesVerbose(text) {\n const remotes = {};\n forEach(text, ([name, url, purpose]) => {\n if (!Object.hasOwn(remotes, name)) {\n remotes[name] = {\n name,\n refs: { fetch: \"\", push: \"\" }\n };\n }\n if (purpose && url) {\n remotes[name].refs[purpose.replace(/[^a-z]/g, \"\")] = url;\n }\n });\n return Object.values(remotes);\n}\nfunction forEach(text, handler) {\n forEachLineWithContent(text, (line) => handler(line.split(/\\s+/)));\n}\nvar init_GetRemoteSummary = __esm({\n \"src/lib/responses/GetRemoteSummary.ts\"() {\n \"use strict\";\n init_utils();\n }\n});\n\n// src/lib/tasks/remote.ts\nvar remote_exports = {};\n__export(remote_exports, {\n addRemoteTask: () => addRemoteTask,\n getRemotesTask: () => getRemotesTask,\n listRemotesTask: () => listRemotesTask,\n remoteTask: () => remoteTask,\n removeRemoteTask: () => removeRemoteTask\n});\nfunction addRemoteTask(remoteName, remoteRepo, customArgs) {\n return straightThroughStringTask([\"remote\", \"add\", ...customArgs, remoteName, remoteRepo]);\n}\nfunction getRemotesTask(verbose) {\n const commands = [\"remote\"];\n if (verbose) {\n commands.push(\"-v\");\n }\n return {\n commands,\n format: \"utf-8\",\n parser: verbose ? parseGetRemotesVerbose : parseGetRemotes\n };\n}\nfunction listRemotesTask(customArgs) {\n const commands = [...customArgs];\n if (commands[0] !== \"ls-remote\") {\n commands.unshift(\"ls-remote\");\n }\n return straightThroughStringTask(commands);\n}\nfunction remoteTask(customArgs) {\n const commands = [...customArgs];\n if (commands[0] !== \"remote\") {\n commands.unshift(\"remote\");\n }\n return straightThroughStringTask(commands);\n}\nfunction removeRemoteTask(remoteName) {\n return straightThroughStringTask([\"remote\", \"remove\", remoteName]);\n}\nvar init_remote = __esm({\n \"src/lib/tasks/remote.ts\"() {\n \"use strict\";\n init_GetRemoteSummary();\n init_task();\n }\n});\n\n// src/lib/tasks/stash-list.ts\nvar stash_list_exports = {};\n__export(stash_list_exports, {\n stashListTask: () => stashListTask\n});\nfunction stashListTask(opt = {}, customArgs) {\n const options = parseLogOptions(opt);\n const commands = [\"stash\", \"list\", ...options.commands, ...customArgs];\n const parser4 = createListLogSummaryParser(\n options.splitter,\n options.fields,\n logFormatFromCommand(commands)\n );\n return validateLogFormatConfig(commands) || {\n commands,\n format: \"utf-8\",\n parser: parser4\n };\n}\nvar init_stash_list = __esm({\n \"src/lib/tasks/stash-list.ts\"() {\n \"use strict\";\n init_log_format();\n init_parse_list_log_summary();\n init_diff();\n init_log();\n }\n});\n\n// src/lib/tasks/sub-module.ts\nvar sub_module_exports = {};\n__export(sub_module_exports, {\n addSubModuleTask: () => addSubModuleTask,\n initSubModuleTask: () => initSubModuleTask,\n subModuleTask: () => subModuleTask,\n updateSubModuleTask: () => updateSubModuleTask\n});\nfunction addSubModuleTask(repo, path) {\n return subModuleTask([\"add\", repo, path]);\n}\nfunction initSubModuleTask(customArgs) {\n return subModuleTask([\"init\", ...customArgs]);\n}\nfunction subModuleTask(customArgs) {\n const commands = [...customArgs];\n if (commands[0] !== \"submodule\") {\n commands.unshift(\"submodule\");\n }\n return straightThroughStringTask(commands);\n}\nfunction updateSubModuleTask(customArgs) {\n return subModuleTask([\"update\", ...customArgs]);\n}\nvar init_sub_module = __esm({\n \"src/lib/tasks/sub-module.ts\"() {\n \"use strict\";\n init_task();\n }\n});\n\n// src/lib/responses/TagList.ts\nfunction singleSorted(a, b) {\n const aIsNum = Number.isNaN(a);\n const bIsNum = Number.isNaN(b);\n if (aIsNum !== bIsNum) {\n return aIsNum ? 1 : -1;\n }\n return aIsNum ? sorted(a, b) : 0;\n}\nfunction sorted(a, b) {\n return a === b ? 0 : a > b ? 1 : -1;\n}\nfunction trimmed(input) {\n return input.trim();\n}\nfunction toNumber(input) {\n if (typeof input === \"string\") {\n return parseInt(input.replace(/^\\D+/g, \"\"), 10) || 0;\n }\n return 0;\n}\nvar TagList, parseTagList;\nvar init_TagList = __esm({\n \"src/lib/responses/TagList.ts\"() {\n \"use strict\";\n TagList = class {\n constructor(all, latest) {\n this.all = all;\n this.latest = latest;\n }\n };\n parseTagList = function(data, customSort = false) {\n const tags = data.split(\"\\n\").map(trimmed).filter(Boolean);\n if (!customSort) {\n tags.sort(function(tagA, tagB) {\n const partsA = tagA.split(\".\");\n const partsB = tagB.split(\".\");\n if (partsA.length === 1 || partsB.length === 1) {\n return singleSorted(toNumber(partsA[0]), toNumber(partsB[0]));\n }\n for (let i = 0, l = Math.max(partsA.length, partsB.length); i < l; i++) {\n const diff = sorted(toNumber(partsA[i]), toNumber(partsB[i]));\n if (diff) {\n return diff;\n }\n }\n return 0;\n });\n }\n const latest = customSort ? tags[0] : [...tags].reverse().find((tag) => tag.indexOf(\".\") >= 0);\n return new TagList(tags, latest);\n };\n }\n});\n\n// src/lib/tasks/tag.ts\nvar tag_exports = {};\n__export(tag_exports, {\n addAnnotatedTagTask: () => addAnnotatedTagTask,\n addTagTask: () => addTagTask,\n tagListTask: () => tagListTask\n});\nfunction tagListTask(customArgs = []) {\n const hasCustomSort = customArgs.some((option) => /^--sort=/.test(option));\n return {\n format: \"utf-8\",\n commands: [\"tag\", \"-l\", ...customArgs],\n parser(text) {\n return parseTagList(text, hasCustomSort);\n }\n };\n}\nfunction addTagTask(name) {\n return {\n format: \"utf-8\",\n commands: [\"tag\", name],\n parser() {\n return { name };\n }\n };\n}\nfunction addAnnotatedTagTask(name, tagMessage) {\n return {\n format: \"utf-8\",\n commands: [\"tag\", \"-a\", \"-m\", tagMessage, name],\n parser() {\n return { name };\n }\n };\n}\nvar init_tag = __esm({\n \"src/lib/tasks/tag.ts\"() {\n \"use strict\";\n init_TagList();\n }\n});\n\n// src/git.js\nvar require_git = __commonJS({\n \"src/git.js\"(exports, module) {\n \"use strict\";\n var { GitExecutor: GitExecutor2 } = (init_git_executor(), __toCommonJS(git_executor_exports));\n var { SimpleGitApi: SimpleGitApi2 } = (init_simple_git_api(), __toCommonJS(simple_git_api_exports));\n var { Scheduler: Scheduler2 } = (init_scheduler(), __toCommonJS(scheduler_exports));\n var { adhocExecTask: adhocExecTask2, configurationErrorTask: configurationErrorTask2 } = (init_task(), __toCommonJS(task_exports));\n var {\n asArray: asArray2,\n filterArray: filterArray2,\n filterPrimitives: filterPrimitives2,\n filterString: filterString2,\n filterStringOrStringArray: filterStringOrStringArray2,\n filterType: filterType2,\n getTrailingOptions: getTrailingOptions2,\n trailingFunctionArgument: trailingFunctionArgument2,\n trailingOptionsArgument: trailingOptionsArgument2\n } = (init_utils(), __toCommonJS(utils_exports));\n var { applyPatchTask: applyPatchTask2 } = (init_apply_patch(), __toCommonJS(apply_patch_exports));\n var {\n branchTask: branchTask2,\n branchLocalTask: branchLocalTask2,\n deleteBranchesTask: deleteBranchesTask2,\n deleteBranchTask: deleteBranchTask2\n } = (init_branch(), __toCommonJS(branch_exports));\n var { checkIgnoreTask: checkIgnoreTask2 } = (init_check_ignore(), __toCommonJS(check_ignore_exports));\n var { checkIsRepoTask: checkIsRepoTask2 } = (init_check_is_repo(), __toCommonJS(check_is_repo_exports));\n var { cloneTask: cloneTask2, cloneMirrorTask: cloneMirrorTask2 } = (init_clone(), __toCommonJS(clone_exports));\n var { cleanWithOptionsTask: cleanWithOptionsTask2, isCleanOptionsArray: isCleanOptionsArray2 } = (init_clean(), __toCommonJS(clean_exports));\n var { diffSummaryTask: diffSummaryTask2 } = (init_diff(), __toCommonJS(diff_exports));\n var { fetchTask: fetchTask2 } = (init_fetch(), __toCommonJS(fetch_exports));\n var { moveTask: moveTask2 } = (init_move(), __toCommonJS(move_exports));\n var { pullTask: pullTask2 } = (init_pull(), __toCommonJS(pull_exports));\n var { pushTagsTask: pushTagsTask2 } = (init_push(), __toCommonJS(push_exports));\n var {\n addRemoteTask: addRemoteTask2,\n getRemotesTask: getRemotesTask2,\n listRemotesTask: listRemotesTask2,\n remoteTask: remoteTask2,\n removeRemoteTask: removeRemoteTask2\n } = (init_remote(), __toCommonJS(remote_exports));\n var { getResetMode: getResetMode2, resetTask: resetTask2 } = (init_reset(), __toCommonJS(reset_exports));\n var { stashListTask: stashListTask2 } = (init_stash_list(), __toCommonJS(stash_list_exports));\n var {\n addSubModuleTask: addSubModuleTask2,\n initSubModuleTask: initSubModuleTask2,\n subModuleTask: subModuleTask2,\n updateSubModuleTask: updateSubModuleTask2\n } = (init_sub_module(), __toCommonJS(sub_module_exports));\n var { addAnnotatedTagTask: addAnnotatedTagTask2, addTagTask: addTagTask2, tagListTask: tagListTask2 } = (init_tag(), __toCommonJS(tag_exports));\n var { straightThroughBufferTask: straightThroughBufferTask2, straightThroughStringTask: straightThroughStringTask2 } = (init_task(), __toCommonJS(task_exports));\n function Git2(options, plugins) {\n this._plugins = plugins;\n this._executor = new GitExecutor2(\n options.baseDir,\n new Scheduler2(options.maxConcurrentProcesses),\n plugins\n );\n this._trimmed = options.trimmed;\n }\n (Git2.prototype = Object.create(SimpleGitApi2.prototype)).constructor = Git2;\n Git2.prototype.customBinary = function(command) {\n this._plugins.reconfigure(\"binary\", command);\n return this;\n };\n Git2.prototype.env = function(name, value) {\n if (arguments.length === 1 && typeof name === \"object\") {\n this._executor.env = name;\n } else {\n (this._executor.env = this._executor.env || {})[name] = value;\n }\n return this;\n };\n Git2.prototype.stashList = function(options) {\n return this._runTask(\n stashListTask2(\n trailingOptionsArgument2(arguments) || {},\n filterArray2(options) && options || []\n ),\n trailingFunctionArgument2(arguments)\n );\n };\n function createCloneTask(api, task, repoPath, localPath) {\n if (typeof repoPath !== \"string\") {\n return configurationErrorTask2(`git.${api}() requires a string 'repoPath'`);\n }\n return task(repoPath, filterType2(localPath, filterString2), getTrailingOptions2(arguments));\n }\n Git2.prototype.clone = function() {\n return this._runTask(\n createCloneTask(\"clone\", cloneTask2, ...arguments),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.mirror = function() {\n return this._runTask(\n createCloneTask(\"mirror\", cloneMirrorTask2, ...arguments),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.mv = function(from, to) {\n return this._runTask(moveTask2(from, to), trailingFunctionArgument2(arguments));\n };\n Git2.prototype.checkoutLatestTag = function(then) {\n var git = this;\n return this.pull(function() {\n git.tags(function(err, tags) {\n git.checkout(tags.latest, then);\n });\n });\n };\n Git2.prototype.pull = function(remote, branch, options, then) {\n return this._runTask(\n pullTask2(\n filterType2(remote, filterString2),\n filterType2(branch, filterString2),\n getTrailingOptions2(arguments)\n ),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.fetch = function(remote, branch) {\n return this._runTask(\n fetchTask2(\n filterType2(remote, filterString2),\n filterType2(branch, filterString2),\n getTrailingOptions2(arguments)\n ),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.silent = function(silence) {\n return this._runTask(\n adhocExecTask2(\n () => console.warn(\n \"simple-git deprecation notice: git.silent: logging should be configured using the `debug` library / `DEBUG` environment variable, this method will be removed.\"\n )\n )\n );\n };\n Git2.prototype.tags = function(options, then) {\n return this._runTask(\n tagListTask2(getTrailingOptions2(arguments)),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.rebase = function() {\n return this._runTask(\n straightThroughStringTask2([\"rebase\", ...getTrailingOptions2(arguments)]),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.reset = function(mode) {\n return this._runTask(\n resetTask2(getResetMode2(mode), getTrailingOptions2(arguments)),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.revert = function(commit) {\n const next = trailingFunctionArgument2(arguments);\n if (typeof commit !== \"string\") {\n return this._runTask(configurationErrorTask2(\"Commit must be a string\"), next);\n }\n return this._runTask(\n straightThroughStringTask2([\"revert\", ...getTrailingOptions2(arguments, 0, true), commit]),\n next\n );\n };\n Git2.prototype.addTag = function(name) {\n const task = typeof name === \"string\" ? addTagTask2(name) : configurationErrorTask2(\"Git.addTag requires a tag name\");\n return this._runTask(task, trailingFunctionArgument2(arguments));\n };\n Git2.prototype.addAnnotatedTag = function(tagName, tagMessage) {\n return this._runTask(\n addAnnotatedTagTask2(tagName, tagMessage),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.deleteLocalBranch = function(branchName, forceDelete, then) {\n return this._runTask(\n deleteBranchTask2(branchName, typeof forceDelete === \"boolean\" ? forceDelete : false),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.deleteLocalBranches = function(branchNames, forceDelete, then) {\n return this._runTask(\n deleteBranchesTask2(branchNames, typeof forceDelete === \"boolean\" ? forceDelete : false),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.branch = function(options, then) {\n return this._runTask(\n branchTask2(getTrailingOptions2(arguments)),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.branchLocal = function(then) {\n return this._runTask(branchLocalTask2(), trailingFunctionArgument2(arguments));\n };\n Git2.prototype.raw = function(commands) {\n const createRestCommands = !Array.isArray(commands);\n const command = [].slice.call(createRestCommands ? arguments : commands, 0);\n for (let i = 0; i < command.length && createRestCommands; i++) {\n if (!filterPrimitives2(command[i])) {\n command.splice(i, command.length - i);\n break;\n }\n }\n command.push(...getTrailingOptions2(arguments, 0, true));\n var next = trailingFunctionArgument2(arguments);\n if (!command.length) {\n return this._runTask(\n configurationErrorTask2(\"Raw: must supply one or more command to execute\"),\n next\n );\n }\n return this._runTask(straightThroughStringTask2(command, this._trimmed), next);\n };\n Git2.prototype.submoduleAdd = function(repo, path, then) {\n return this._runTask(addSubModuleTask2(repo, path), trailingFunctionArgument2(arguments));\n };\n Git2.prototype.submoduleUpdate = function(args, then) {\n return this._runTask(\n updateSubModuleTask2(getTrailingOptions2(arguments, true)),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.submoduleInit = function(args, then) {\n return this._runTask(\n initSubModuleTask2(getTrailingOptions2(arguments, true)),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.subModule = function(options, then) {\n return this._runTask(\n subModuleTask2(getTrailingOptions2(arguments)),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.listRemote = function() {\n return this._runTask(\n listRemotesTask2(getTrailingOptions2(arguments)),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.addRemote = function(remoteName, remoteRepo, then) {\n return this._runTask(\n addRemoteTask2(remoteName, remoteRepo, getTrailingOptions2(arguments)),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.removeRemote = function(remoteName, then) {\n return this._runTask(removeRemoteTask2(remoteName), trailingFunctionArgument2(arguments));\n };\n Git2.prototype.getRemotes = function(verbose, then) {\n return this._runTask(getRemotesTask2(verbose === true), trailingFunctionArgument2(arguments));\n };\n Git2.prototype.remote = function(options, then) {\n return this._runTask(\n remoteTask2(getTrailingOptions2(arguments)),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.tag = function(options, then) {\n const command = getTrailingOptions2(arguments);\n if (command[0] !== \"tag\") {\n command.unshift(\"tag\");\n }\n return this._runTask(straightThroughStringTask2(command), trailingFunctionArgument2(arguments));\n };\n Git2.prototype.updateServerInfo = function(then) {\n return this._runTask(\n straightThroughStringTask2([\"update-server-info\"]),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.pushTags = function(remote, then) {\n const task = pushTagsTask2(\n { remote: filterType2(remote, filterString2) },\n getTrailingOptions2(arguments)\n );\n return this._runTask(task, trailingFunctionArgument2(arguments));\n };\n Git2.prototype.rm = function(files) {\n return this._runTask(\n straightThroughStringTask2([\"rm\", \"-f\", ...asArray2(files)]),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.rmKeepLocal = function(files) {\n return this._runTask(\n straightThroughStringTask2([\"rm\", \"--cached\", ...asArray2(files)]),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.catFile = function(options, then) {\n return this._catFile(\"utf-8\", arguments);\n };\n Git2.prototype.binaryCatFile = function() {\n return this._catFile(\"buffer\", arguments);\n };\n Git2.prototype._catFile = function(format, args) {\n var handler = trailingFunctionArgument2(args);\n var command = [\"cat-file\"];\n var options = args[0];\n if (typeof options === \"string\") {\n return this._runTask(\n configurationErrorTask2(\"Git.catFile: options must be supplied as an array of strings\"),\n handler\n );\n }\n if (Array.isArray(options)) {\n command.push.apply(command, options);\n }\n const task = format === \"buffer\" ? straightThroughBufferTask2(command) : straightThroughStringTask2(command);\n return this._runTask(task, handler);\n };\n Git2.prototype.diff = function(options, then) {\n const task = filterString2(options) ? configurationErrorTask2(\n \"git.diff: supplying options as a single string is no longer supported, switch to an array of strings\"\n ) : straightThroughStringTask2([\"diff\", ...getTrailingOptions2(arguments)]);\n return this._runTask(task, trailingFunctionArgument2(arguments));\n };\n Git2.prototype.diffSummary = function() {\n return this._runTask(\n diffSummaryTask2(getTrailingOptions2(arguments, 1)),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.applyPatch = function(patches) {\n const task = !filterStringOrStringArray2(patches) ? configurationErrorTask2(\n `git.applyPatch requires one or more string patches as the first argument`\n ) : applyPatchTask2(asArray2(patches), getTrailingOptions2([].slice.call(arguments, 1)));\n return this._runTask(task, trailingFunctionArgument2(arguments));\n };\n Git2.prototype.revparse = function() {\n const commands = [\"rev-parse\", ...getTrailingOptions2(arguments, true)];\n return this._runTask(\n straightThroughStringTask2(commands, true),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.clean = function(mode, options, then) {\n const usingCleanOptionsArray = isCleanOptionsArray2(mode);\n const cleanMode = usingCleanOptionsArray && mode.join(\"\") || filterType2(mode, filterString2) || \"\";\n const customArgs = getTrailingOptions2([].slice.call(arguments, usingCleanOptionsArray ? 1 : 0));\n return this._runTask(\n cleanWithOptionsTask2(cleanMode, customArgs),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.exec = function(then) {\n const task = {\n commands: [],\n format: \"utf-8\",\n parser() {\n if (typeof then === \"function\") {\n then();\n }\n }\n };\n return this._runTask(task);\n };\n Git2.prototype.clearQueue = function() {\n return this._runTask(\n adhocExecTask2(\n () => console.warn(\n \"simple-git deprecation notice: clearQueue() is deprecated and will be removed, switch to using the abortPlugin instead.\"\n )\n )\n );\n };\n Git2.prototype.checkIgnore = function(pathnames, then) {\n return this._runTask(\n checkIgnoreTask2(asArray2(filterType2(pathnames, filterStringOrStringArray2, []))),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.checkIsRepo = function(checkType, then) {\n return this._runTask(\n checkIsRepoTask2(filterType2(checkType, filterString2)),\n trailingFunctionArgument2(arguments)\n );\n };\n module.exports = Git2;\n }\n});\n\n// src/lib/api.ts\ninit_pathspec();\n\n// src/lib/errors/git-construct-error.ts\ninit_git_error();\nvar GitConstructError = class extends GitError {\n constructor(config, message) {\n super(void 0, message);\n this.config = config;\n }\n};\n\n// src/lib/api.ts\ninit_git_error();\n\n// src/lib/errors/git-plugin-error.ts\ninit_git_error();\nvar GitPluginError = class extends GitError {\n constructor(task, plugin, message) {\n super(task, message);\n this.task = task;\n this.plugin = plugin;\n Object.setPrototypeOf(this, new.target.prototype);\n }\n};\n\n// src/lib/api.ts\ninit_git_response_error();\ninit_task_configuration_error();\ninit_check_is_repo();\ninit_clean();\ninit_config();\ninit_diff_name_status();\ninit_grep();\ninit_reset();\n\n// src/lib/plugins/abort-plugin.ts\nfunction abortPlugin(signal) {\n if (!signal) {\n return;\n }\n const onSpawnAfter = {\n type: \"spawn.after\",\n action(_data, context) {\n function kill() {\n context.kill(new GitPluginError(void 0, \"abort\", \"Abort signal received\"));\n }\n signal.addEventListener(\"abort\", kill);\n context.spawned.on(\"close\", () => signal.removeEventListener(\"abort\", kill));\n }\n };\n const onSpawnBefore = {\n type: \"spawn.before\",\n action(_data, context) {\n if (signal.aborted) {\n context.kill(new GitPluginError(void 0, \"abort\", \"Abort already signaled\"));\n }\n }\n };\n return [onSpawnBefore, onSpawnAfter];\n}\n\n// src/lib/plugins/block-unsafe-operations-plugin.ts\nfunction isConfigSwitch(arg) {\n return typeof arg === \"string\" && arg.trim().toLowerCase() === \"-c\";\n}\nfunction isCloneSwitch(char, arg) {\n if (typeof arg !== \"string\" || !arg.includes(char)) {\n return false;\n }\n const token = arg.replace(/\\0g/, \"\").replace(/^(--no)?-{1,2}/, \"\");\n return /^[\\dlsqvnobucj]+\\b/.test(token);\n}\nfunction preventProtocolOverride(arg, next) {\n if (!isConfigSwitch(arg)) {\n return;\n }\n if (!/^\\s*protocol(.[a-z]+)?.allow/.test(next)) {\n return;\n }\n throw new GitPluginError(\n void 0,\n \"unsafe\",\n \"Configuring protocol.allow is not permitted without enabling allowUnsafeExtProtocol\"\n );\n}\nfunction preventUploadPack(arg, method) {\n if (/^\\s*--(upload|receive)-pack/.test(arg)) {\n throw new GitPluginError(\n void 0,\n \"unsafe\",\n `Use of --upload-pack or --receive-pack is not permitted without enabling allowUnsafePack`\n );\n }\n if (method === \"clone\" && isCloneSwitch(\"u\", arg)) {\n throw new GitPluginError(\n void 0,\n \"unsafe\",\n `Use of clone with option -u is not permitted without enabling allowUnsafePack`\n );\n }\n if (method === \"push\" && /^\\s*--exec\\b/.test(arg)) {\n throw new GitPluginError(\n void 0,\n \"unsafe\",\n `Use of push with option --exec is not permitted without enabling allowUnsafePack`\n );\n }\n}\nfunction blockUnsafeOperationsPlugin({\n allowUnsafeProtocolOverride = false,\n allowUnsafePack = false\n} = {}) {\n return {\n type: \"spawn.args\",\n action(args, context) {\n args.forEach((current, index) => {\n const next = index < args.length ? args[index + 1] : \"\";\n allowUnsafeProtocolOverride || preventProtocolOverride(current, next);\n allowUnsafePack || preventUploadPack(current, context.method);\n });\n return args;\n }\n };\n}\n\n// src/lib/plugins/command-config-prefixing-plugin.ts\ninit_utils();\nfunction commandConfigPrefixingPlugin(configuration) {\n const prefix = prefixedArray(configuration, \"-c\");\n return {\n type: \"spawn.args\",\n action(data) {\n return [...prefix, ...data];\n }\n };\n}\n\n// src/lib/plugins/completion-detection.plugin.ts\ninit_utils();\nimport { deferred } from \"@kwsites/promise-deferred\";\nvar never = deferred().promise;\nfunction completionDetectionPlugin({\n onClose = true,\n onExit = 50\n} = {}) {\n function createEvents() {\n let exitCode = -1;\n const events = {\n close: deferred(),\n closeTimeout: deferred(),\n exit: deferred(),\n exitTimeout: deferred()\n };\n const result = Promise.race([\n onClose === false ? never : events.closeTimeout.promise,\n onExit === false ? never : events.exitTimeout.promise\n ]);\n configureTimeout(onClose, events.close, events.closeTimeout);\n configureTimeout(onExit, events.exit, events.exitTimeout);\n return {\n close(code) {\n exitCode = code;\n events.close.done();\n },\n exit(code) {\n exitCode = code;\n events.exit.done();\n },\n get exitCode() {\n return exitCode;\n },\n result\n };\n }\n function configureTimeout(flag, event, timeout) {\n if (flag === false) {\n return;\n }\n (flag === true ? event.promise : event.promise.then(() => delay(flag))).then(timeout.done);\n }\n return {\n type: \"spawn.after\",\n async action(_data, { spawned, close }) {\n const events = createEvents();\n let deferClose = true;\n let quickClose = () => void (deferClose = false);\n spawned.stdout?.on(\"data\", quickClose);\n spawned.stderr?.on(\"data\", quickClose);\n spawned.on(\"error\", quickClose);\n spawned.on(\"close\", (code) => events.close(code));\n spawned.on(\"exit\", (code) => events.exit(code));\n try {\n await events.result;\n if (deferClose) {\n await delay(50);\n }\n close(events.exitCode);\n } catch (err) {\n close(events.exitCode, err);\n }\n }\n };\n}\n\n// src/lib/plugins/custom-binary.plugin.ts\ninit_utils();\nvar WRONG_NUMBER_ERR = `Invalid value supplied for custom binary, requires a single string or an array containing either one or two strings`;\nvar WRONG_CHARS_ERR = `Invalid value supplied for custom binary, restricted characters must be removed or supply the unsafe.allowUnsafeCustomBinary option`;\nfunction isBadArgument(arg) {\n return !arg || !/^([a-z]:)?([a-z0-9/.\\\\_~-]+)$/i.test(arg);\n}\nfunction toBinaryConfig(input, allowUnsafe) {\n if (input.length < 1 || input.length > 2) {\n throw new GitPluginError(void 0, \"binary\", WRONG_NUMBER_ERR);\n }\n const isBad = input.some(isBadArgument);\n if (isBad) {\n if (allowUnsafe) {\n console.warn(WRONG_CHARS_ERR);\n } else {\n throw new GitPluginError(void 0, \"binary\", WRONG_CHARS_ERR);\n }\n }\n const [binary, prefix] = input;\n return {\n binary,\n prefix\n };\n}\nfunction customBinaryPlugin(plugins, input = [\"git\"], allowUnsafe = false) {\n let config = toBinaryConfig(asArray(input), allowUnsafe);\n plugins.on(\"binary\", (input2) => {\n config = toBinaryConfig(asArray(input2), allowUnsafe);\n });\n plugins.append(\"spawn.binary\", () => {\n return config.binary;\n });\n plugins.append(\"spawn.args\", (data) => {\n return config.prefix ? [config.prefix, ...data] : data;\n });\n}\n\n// src/lib/plugins/error-detection.plugin.ts\ninit_git_error();\nfunction isTaskError(result) {\n return !!(result.exitCode && result.stdErr.length);\n}\nfunction getErrorMessage(result) {\n return Buffer.concat([...result.stdOut, ...result.stdErr]);\n}\nfunction errorDetectionHandler(overwrite = false, isError = isTaskError, errorMessage = getErrorMessage) {\n return (error, result) => {\n if (!overwrite && error || !isError(result)) {\n return error;\n }\n return errorMessage(result);\n };\n}\nfunction errorDetectionPlugin(config) {\n return {\n type: \"task.error\",\n action(data, context) {\n const error = config(data.error, {\n stdErr: context.stdErr,\n stdOut: context.stdOut,\n exitCode: context.exitCode\n });\n if (Buffer.isBuffer(error)) {\n return { error: new GitError(void 0, error.toString(\"utf-8\")) };\n }\n return {\n error\n };\n }\n };\n}\n\n// src/lib/plugins/plugin-store.ts\ninit_utils();\nimport { EventEmitter } from \"node:events\";\nvar PluginStore = class {\n constructor() {\n this.plugins = /* @__PURE__ */ new Set();\n this.events = new EventEmitter();\n }\n on(type, listener) {\n this.events.on(type, listener);\n }\n reconfigure(type, data) {\n this.events.emit(type, data);\n }\n append(type, action) {\n const plugin = append(this.plugins, { type, action });\n return () => this.plugins.delete(plugin);\n }\n add(plugin) {\n const plugins = [];\n asArray(plugin).forEach((plugin2) => plugin2 && this.plugins.add(append(plugins, plugin2)));\n return () => {\n plugins.forEach((plugin2) => this.plugins.delete(plugin2));\n };\n }\n exec(type, data, context) {\n let output = data;\n const contextual = Object.freeze(Object.create(context));\n for (const plugin of this.plugins) {\n if (plugin.type === type) {\n output = plugin.action(output, contextual);\n }\n }\n return output;\n }\n};\n\n// src/lib/plugins/progress-monitor-plugin.ts\ninit_utils();\nfunction progressMonitorPlugin(progress) {\n const progressCommand = \"--progress\";\n const progressMethods = [\"checkout\", \"clone\", \"fetch\", \"pull\", \"push\"];\n const onProgress = {\n type: \"spawn.after\",\n action(_data, context) {\n if (!context.commands.includes(progressCommand)) {\n return;\n }\n context.spawned.stderr?.on(\"data\", (chunk) => {\n const message = /^([\\s\\S]+?):\\s*(\\d+)% \\((\\d+)\\/(\\d+)\\)/.exec(chunk.toString(\"utf8\"));\n if (!message) {\n return;\n }\n progress({\n method: context.method,\n stage: progressEventStage(message[1]),\n progress: asNumber(message[2]),\n processed: asNumber(message[3]),\n total: asNumber(message[4])\n });\n });\n }\n };\n const onArgs = {\n type: \"spawn.args\",\n action(args, context) {\n if (!progressMethods.includes(context.method)) {\n return args;\n }\n return including(args, progressCommand);\n }\n };\n return [onArgs, onProgress];\n}\nfunction progressEventStage(input) {\n return String(input.toLowerCase().split(\" \", 1)) || \"unknown\";\n}\n\n// src/lib/plugins/spawn-options-plugin.ts\ninit_utils();\nfunction spawnOptionsPlugin(spawnOptions) {\n const options = pick(spawnOptions, [\"uid\", \"gid\"]);\n return {\n type: \"spawn.options\",\n action(data) {\n return { ...options, ...data };\n }\n };\n}\n\n// src/lib/plugins/timout-plugin.ts\nfunction timeoutPlugin({\n block,\n stdErr = true,\n stdOut = true\n}) {\n if (block > 0) {\n return {\n type: \"spawn.after\",\n action(_data, context) {\n let timeout;\n function wait() {\n timeout && clearTimeout(timeout);\n timeout = setTimeout(kill, block);\n }\n function stop() {\n context.spawned.stdout?.off(\"data\", wait);\n context.spawned.stderr?.off(\"data\", wait);\n context.spawned.off(\"exit\", stop);\n context.spawned.off(\"close\", stop);\n timeout && clearTimeout(timeout);\n }\n function kill() {\n stop();\n context.kill(new GitPluginError(void 0, \"timeout\", `block timeout reached`));\n }\n stdOut && context.spawned.stdout?.on(\"data\", wait);\n stdErr && context.spawned.stderr?.on(\"data\", wait);\n context.spawned.on(\"exit\", stop);\n context.spawned.on(\"close\", stop);\n wait();\n }\n };\n }\n}\n\n// src/lib/plugins/suffix-paths.plugin.ts\ninit_pathspec();\nfunction suffixPathsPlugin() {\n return {\n type: \"spawn.args\",\n action(data) {\n const prefix = [];\n let suffix;\n function append2(args) {\n (suffix = suffix || []).push(...args);\n }\n for (let i = 0; i < data.length; i++) {\n const param = data[i];\n if (isPathSpec(param)) {\n append2(toPaths(param));\n continue;\n }\n if (param === \"--\") {\n append2(\n data.slice(i + 1).flatMap((item) => isPathSpec(item) && toPaths(item) || item)\n );\n break;\n }\n prefix.push(param);\n }\n return !suffix ? prefix : [...prefix, \"--\", ...suffix.map(String)];\n }\n };\n}\n\n// src/lib/git-factory.ts\ninit_utils();\nvar Git = require_git();\nfunction gitInstanceFactory(baseDir, options) {\n const plugins = new PluginStore();\n const config = createInstanceConfig(\n baseDir && (typeof baseDir === \"string\" ? { baseDir } : baseDir) || {},\n options\n );\n if (!folderExists(config.baseDir)) {\n throw new GitConstructError(\n config,\n `Cannot use simple-git on a directory that does not exist`\n );\n }\n if (Array.isArray(config.config)) {\n plugins.add(commandConfigPrefixingPlugin(config.config));\n }\n plugins.add(blockUnsafeOperationsPlugin(config.unsafe));\n plugins.add(suffixPathsPlugin());\n plugins.add(completionDetectionPlugin(config.completion));\n config.abort && plugins.add(abortPlugin(config.abort));\n config.progress && plugins.add(progressMonitorPlugin(config.progress));\n config.timeout && plugins.add(timeoutPlugin(config.timeout));\n config.spawnOptions && plugins.add(spawnOptionsPlugin(config.spawnOptions));\n plugins.add(errorDetectionPlugin(errorDetectionHandler(true)));\n config.errors && plugins.add(errorDetectionPlugin(config.errors));\n customBinaryPlugin(plugins, config.binary, config.unsafe?.allowUnsafeCustomBinary);\n return new Git(config, plugins);\n}\n\n// src/lib/runners/promise-wrapped.ts\ninit_git_response_error();\nvar functionNamesBuilderApi = [\"customBinary\", \"env\", \"outputHandler\", \"silent\"];\nvar functionNamesPromiseApi = [\n \"add\",\n \"addAnnotatedTag\",\n \"addConfig\",\n \"addRemote\",\n \"addTag\",\n \"applyPatch\",\n \"binaryCatFile\",\n \"branch\",\n \"branchLocal\",\n \"catFile\",\n \"checkIgnore\",\n \"checkIsRepo\",\n \"checkout\",\n \"checkoutBranch\",\n \"checkoutLatestTag\",\n \"checkoutLocalBranch\",\n \"clean\",\n \"clone\",\n \"commit\",\n \"cwd\",\n \"deleteLocalBranch\",\n \"deleteLocalBranches\",\n \"diff\",\n \"diffSummary\",\n \"exec\",\n \"fetch\",\n \"getRemotes\",\n \"init\",\n \"listConfig\",\n \"listRemote\",\n \"log\",\n \"merge\",\n \"mergeFromTo\",\n \"mirror\",\n \"mv\",\n \"pull\",\n \"push\",\n \"pushTags\",\n \"raw\",\n \"rebase\",\n \"remote\",\n \"removeRemote\",\n \"reset\",\n \"revert\",\n \"revparse\",\n \"rm\",\n \"rmKeepLocal\",\n \"show\",\n \"stash\",\n \"stashList\",\n \"status\",\n \"subModule\",\n \"submoduleAdd\",\n \"submoduleInit\",\n \"submoduleUpdate\",\n \"tag\",\n \"tags\",\n \"updateServerInfo\"\n];\nfunction gitP(...args) {\n let git;\n let chain = Promise.resolve();\n try {\n git = gitInstanceFactory(...args);\n } catch (e) {\n chain = Promise.reject(e);\n }\n function builderReturn() {\n return promiseApi;\n }\n function chainReturn() {\n return chain;\n }\n const promiseApi = [...functionNamesBuilderApi, ...functionNamesPromiseApi].reduce(\n (api, name) => {\n const isAsync = functionNamesPromiseApi.includes(name);\n const valid = isAsync ? asyncWrapper(name, git) : syncWrapper(name, git, api);\n const alternative = isAsync ? chainReturn : builderReturn;\n Object.defineProperty(api, name, {\n enumerable: false,\n configurable: false,\n value: git ? valid : alternative\n });\n return api;\n },\n {}\n );\n return promiseApi;\n function asyncWrapper(fn, git2) {\n return function(...args2) {\n if (typeof args2[args2.length] === \"function\") {\n throw new TypeError(\n \"Promise interface requires that handlers are not supplied inline, trailing function not allowed in call to \" + fn\n );\n }\n return chain.then(function() {\n return new Promise(function(resolve, reject) {\n const callback = (err, result) => {\n if (err) {\n return reject(toError(err));\n }\n resolve(result);\n };\n args2.push(callback);\n git2[fn].apply(git2, args2);\n });\n });\n };\n }\n function syncWrapper(fn, git2, api) {\n return (...args2) => {\n git2[fn](...args2);\n return api;\n };\n }\n}\nfunction toError(error) {\n if (error instanceof Error) {\n return error;\n }\n if (typeof error === \"string\") {\n return new Error(error);\n }\n return new GitResponseError(error);\n}\n\n// src/esm.mjs\nvar simpleGit = gitInstanceFactory;\nvar esm_default = gitInstanceFactory;\nexport {\n CheckRepoActions,\n CleanOptions,\n DiffNameStatus,\n GitConfigScope,\n GitConstructError,\n GitError,\n GitPluginError,\n GitResponseError,\n ResetMode,\n TaskConfigurationError,\n esm_default as default,\n gitP,\n grepQueryBuilder,\n pathspec,\n simpleGit\n};\n//# sourceMappingURL=index.js.map\n","\n;(function (name, root, factory) {\n if (typeof exports === 'object') {\n module.exports = factory()\n module.exports['default'] = factory()\n }\n /* istanbul ignore next */\n else if (typeof define === 'function' && define.amd) {\n define(factory)\n }\n else {\n root[name] = factory()\n }\n}('slugify', this, function () {\n var charMap = JSON.parse('{\"$\":\"dollar\",\"%\":\"percent\",\"&\":\"and\",\"<\":\"less\",\">\":\"greater\",\"|\":\"or\",\"¢\":\"cent\",\"£\":\"pound\",\"¤\":\"currency\",\"¥\":\"yen\",\"©\":\"(c)\",\"ª\":\"a\",\"®\":\"(r)\",\"º\":\"o\",\"À\":\"A\",\"Á\":\"A\",\"Â\":\"A\",\"Ã\":\"A\",\"Ä\":\"A\",\"Å\":\"A\",\"Æ\":\"AE\",\"Ç\":\"C\",\"È\":\"E\",\"É\":\"E\",\"Ê\":\"E\",\"Ë\":\"E\",\"Ì\":\"I\",\"Í\":\"I\",\"Î\":\"I\",\"Ï\":\"I\",\"Ð\":\"D\",\"Ñ\":\"N\",\"Ò\":\"O\",\"Ó\":\"O\",\"Ô\":\"O\",\"Õ\":\"O\",\"Ö\":\"O\",\"Ø\":\"O\",\"Ù\":\"U\",\"Ú\":\"U\",\"Û\":\"U\",\"Ü\":\"U\",\"Ý\":\"Y\",\"Þ\":\"TH\",\"ß\":\"ss\",\"à\":\"a\",\"á\":\"a\",\"â\":\"a\",\"ã\":\"a\",\"ä\":\"a\",\"å\":\"a\",\"æ\":\"ae\",\"ç\":\"c\",\"è\":\"e\",\"é\":\"e\",\"ê\":\"e\",\"ë\":\"e\",\"ì\":\"i\",\"í\":\"i\",\"î\":\"i\",\"ï\":\"i\",\"ð\":\"d\",\"ñ\":\"n\",\"ò\":\"o\",\"ó\":\"o\",\"ô\":\"o\",\"õ\":\"o\",\"ö\":\"o\",\"ø\":\"o\",\"ù\":\"u\",\"ú\":\"u\",\"û\":\"u\",\"ü\":\"u\",\"ý\":\"y\",\"þ\":\"th\",\"ÿ\":\"y\",\"Ā\":\"A\",\"ā\":\"a\",\"Ă\":\"A\",\"ă\":\"a\",\"Ą\":\"A\",\"ą\":\"a\",\"Ć\":\"C\",\"ć\":\"c\",\"Č\":\"C\",\"č\":\"c\",\"Ď\":\"D\",\"ď\":\"d\",\"Đ\":\"DJ\",\"đ\":\"dj\",\"Ē\":\"E\",\"ē\":\"e\",\"Ė\":\"E\",\"ė\":\"e\",\"Ę\":\"e\",\"ę\":\"e\",\"Ě\":\"E\",\"ě\":\"e\",\"Ğ\":\"G\",\"ğ\":\"g\",\"Ģ\":\"G\",\"ģ\":\"g\",\"Ĩ\":\"I\",\"ĩ\":\"i\",\"Ī\":\"i\",\"ī\":\"i\",\"Į\":\"I\",\"į\":\"i\",\"İ\":\"I\",\"ı\":\"i\",\"Ķ\":\"k\",\"ķ\":\"k\",\"Ļ\":\"L\",\"ļ\":\"l\",\"Ľ\":\"L\",\"ľ\":\"l\",\"Ł\":\"L\",\"ł\":\"l\",\"Ń\":\"N\",\"ń\":\"n\",\"Ņ\":\"N\",\"ņ\":\"n\",\"Ň\":\"N\",\"ň\":\"n\",\"Ō\":\"O\",\"ō\":\"o\",\"Ő\":\"O\",\"ő\":\"o\",\"Œ\":\"OE\",\"œ\":\"oe\",\"Ŕ\":\"R\",\"ŕ\":\"r\",\"Ř\":\"R\",\"ř\":\"r\",\"Ś\":\"S\",\"ś\":\"s\",\"Ş\":\"S\",\"ş\":\"s\",\"Š\":\"S\",\"š\":\"s\",\"Ţ\":\"T\",\"ţ\":\"t\",\"Ť\":\"T\",\"ť\":\"t\",\"Ũ\":\"U\",\"ũ\":\"u\",\"Ū\":\"u\",\"ū\":\"u\",\"Ů\":\"U\",\"ů\":\"u\",\"Ű\":\"U\",\"ű\":\"u\",\"Ų\":\"U\",\"ų\":\"u\",\"Ŵ\":\"W\",\"ŵ\":\"w\",\"Ŷ\":\"Y\",\"ŷ\":\"y\",\"Ÿ\":\"Y\",\"Ź\":\"Z\",\"ź\":\"z\",\"Ż\":\"Z\",\"ż\":\"z\",\"Ž\":\"Z\",\"ž\":\"z\",\"Ə\":\"E\",\"ƒ\":\"f\",\"Ơ\":\"O\",\"ơ\":\"o\",\"Ư\":\"U\",\"ư\":\"u\",\"Lj\":\"LJ\",\"lj\":\"lj\",\"Nj\":\"NJ\",\"nj\":\"nj\",\"Ș\":\"S\",\"ș\":\"s\",\"Ț\":\"T\",\"ț\":\"t\",\"ə\":\"e\",\"˚\":\"o\",\"Ά\":\"A\",\"Έ\":\"E\",\"Ή\":\"H\",\"Ί\":\"I\",\"Ό\":\"O\",\"Ύ\":\"Y\",\"Ώ\":\"W\",\"ΐ\":\"i\",\"Α\":\"A\",\"Β\":\"B\",\"Γ\":\"G\",\"Δ\":\"D\",\"Ε\":\"E\",\"Ζ\":\"Z\",\"Η\":\"H\",\"Θ\":\"8\",\"Ι\":\"I\",\"Κ\":\"K\",\"Λ\":\"L\",\"Μ\":\"M\",\"Ν\":\"N\",\"Ξ\":\"3\",\"Ο\":\"O\",\"Π\":\"P\",\"Ρ\":\"R\",\"Σ\":\"S\",\"Τ\":\"T\",\"Υ\":\"Y\",\"Φ\":\"F\",\"Χ\":\"X\",\"Ψ\":\"PS\",\"Ω\":\"W\",\"Ϊ\":\"I\",\"Ϋ\":\"Y\",\"ά\":\"a\",\"έ\":\"e\",\"ή\":\"h\",\"ί\":\"i\",\"ΰ\":\"y\",\"α\":\"a\",\"β\":\"b\",\"γ\":\"g\",\"δ\":\"d\",\"ε\":\"e\",\"ζ\":\"z\",\"η\":\"h\",\"θ\":\"8\",\"ι\":\"i\",\"κ\":\"k\",\"λ\":\"l\",\"μ\":\"m\",\"ν\":\"n\",\"ξ\":\"3\",\"ο\":\"o\",\"π\":\"p\",\"ρ\":\"r\",\"ς\":\"s\",\"σ\":\"s\",\"τ\":\"t\",\"υ\":\"y\",\"φ\":\"f\",\"χ\":\"x\",\"ψ\":\"ps\",\"ω\":\"w\",\"ϊ\":\"i\",\"ϋ\":\"y\",\"ό\":\"o\",\"ύ\":\"y\",\"ώ\":\"w\",\"Ё\":\"Yo\",\"Ђ\":\"DJ\",\"Є\":\"Ye\",\"І\":\"I\",\"Ї\":\"Yi\",\"Ј\":\"J\",\"Љ\":\"LJ\",\"Њ\":\"NJ\",\"Ћ\":\"C\",\"Џ\":\"DZ\",\"А\":\"A\",\"Б\":\"B\",\"В\":\"V\",\"Г\":\"G\",\"Д\":\"D\",\"Е\":\"E\",\"Ж\":\"Zh\",\"З\":\"Z\",\"И\":\"I\",\"Й\":\"J\",\"К\":\"K\",\"Л\":\"L\",\"М\":\"M\",\"Н\":\"N\",\"О\":\"O\",\"П\":\"P\",\"Р\":\"R\",\"С\":\"S\",\"Т\":\"T\",\"У\":\"U\",\"Ф\":\"F\",\"Х\":\"H\",\"Ц\":\"C\",\"Ч\":\"Ch\",\"Ш\":\"Sh\",\"Щ\":\"Sh\",\"Ъ\":\"U\",\"Ы\":\"Y\",\"Ь\":\"\",\"Э\":\"E\",\"Ю\":\"Yu\",\"Я\":\"Ya\",\"а\":\"a\",\"б\":\"b\",\"в\":\"v\",\"г\":\"g\",\"д\":\"d\",\"е\":\"e\",\"ж\":\"zh\",\"з\":\"z\",\"и\":\"i\",\"й\":\"j\",\"к\":\"k\",\"л\":\"l\",\"м\":\"m\",\"н\":\"n\",\"о\":\"o\",\"п\":\"p\",\"р\":\"r\",\"с\":\"s\",\"т\":\"t\",\"у\":\"u\",\"ф\":\"f\",\"х\":\"h\",\"ц\":\"c\",\"ч\":\"ch\",\"ш\":\"sh\",\"щ\":\"sh\",\"ъ\":\"u\",\"ы\":\"y\",\"ь\":\"\",\"э\":\"e\",\"ю\":\"yu\",\"я\":\"ya\",\"ё\":\"yo\",\"ђ\":\"dj\",\"є\":\"ye\",\"і\":\"i\",\"ї\":\"yi\",\"ј\":\"j\",\"љ\":\"lj\",\"њ\":\"nj\",\"ћ\":\"c\",\"ѝ\":\"u\",\"џ\":\"dz\",\"Ґ\":\"G\",\"ґ\":\"g\",\"Ғ\":\"GH\",\"ғ\":\"gh\",\"Қ\":\"KH\",\"қ\":\"kh\",\"Ң\":\"NG\",\"ң\":\"ng\",\"Ү\":\"UE\",\"ү\":\"ue\",\"Ұ\":\"U\",\"ұ\":\"u\",\"Һ\":\"H\",\"һ\":\"h\",\"Ә\":\"AE\",\"ә\":\"ae\",\"Ө\":\"OE\",\"ө\":\"oe\",\"Ա\":\"A\",\"Բ\":\"B\",\"Գ\":\"G\",\"Դ\":\"D\",\"Ե\":\"E\",\"Զ\":\"Z\",\"Է\":\"E\\'\",\"Ը\":\"Y\\'\",\"Թ\":\"T\\'\",\"Ժ\":\"JH\",\"Ի\":\"I\",\"Լ\":\"L\",\"Խ\":\"X\",\"Ծ\":\"C\\'\",\"Կ\":\"K\",\"Հ\":\"H\",\"Ձ\":\"D\\'\",\"Ղ\":\"GH\",\"Ճ\":\"TW\",\"Մ\":\"M\",\"Յ\":\"Y\",\"Ն\":\"N\",\"Շ\":\"SH\",\"Չ\":\"CH\",\"Պ\":\"P\",\"Ջ\":\"J\",\"Ռ\":\"R\\'\",\"Ս\":\"S\",\"Վ\":\"V\",\"Տ\":\"T\",\"Ր\":\"R\",\"Ց\":\"C\",\"Փ\":\"P\\'\",\"Ք\":\"Q\\'\",\"Օ\":\"O\\'\\'\",\"Ֆ\":\"F\",\"և\":\"EV\",\"ء\":\"a\",\"آ\":\"aa\",\"أ\":\"a\",\"ؤ\":\"u\",\"إ\":\"i\",\"ئ\":\"e\",\"ا\":\"a\",\"ب\":\"b\",\"ة\":\"h\",\"ت\":\"t\",\"ث\":\"th\",\"ج\":\"j\",\"ح\":\"h\",\"خ\":\"kh\",\"د\":\"d\",\"ذ\":\"th\",\"ر\":\"r\",\"ز\":\"z\",\"س\":\"s\",\"ش\":\"sh\",\"ص\":\"s\",\"ض\":\"dh\",\"ط\":\"t\",\"ظ\":\"z\",\"ع\":\"a\",\"غ\":\"gh\",\"ف\":\"f\",\"ق\":\"q\",\"ك\":\"k\",\"ل\":\"l\",\"م\":\"m\",\"ن\":\"n\",\"ه\":\"h\",\"و\":\"w\",\"ى\":\"a\",\"ي\":\"y\",\"ً\":\"an\",\"ٌ\":\"on\",\"ٍ\":\"en\",\"َ\":\"a\",\"ُ\":\"u\",\"ِ\":\"e\",\"ْ\":\"\",\"٠\":\"0\",\"١\":\"1\",\"٢\":\"2\",\"٣\":\"3\",\"٤\":\"4\",\"٥\":\"5\",\"٦\":\"6\",\"٧\":\"7\",\"٨\":\"8\",\"٩\":\"9\",\"پ\":\"p\",\"چ\":\"ch\",\"ژ\":\"zh\",\"ک\":\"k\",\"گ\":\"g\",\"ی\":\"y\",\"۰\":\"0\",\"۱\":\"1\",\"۲\":\"2\",\"۳\":\"3\",\"۴\":\"4\",\"۵\":\"5\",\"۶\":\"6\",\"۷\":\"7\",\"۸\":\"8\",\"۹\":\"9\",\"฿\":\"baht\",\"ა\":\"a\",\"ბ\":\"b\",\"გ\":\"g\",\"დ\":\"d\",\"ე\":\"e\",\"ვ\":\"v\",\"ზ\":\"z\",\"თ\":\"t\",\"ი\":\"i\",\"კ\":\"k\",\"ლ\":\"l\",\"მ\":\"m\",\"ნ\":\"n\",\"ო\":\"o\",\"პ\":\"p\",\"ჟ\":\"zh\",\"რ\":\"r\",\"ს\":\"s\",\"ტ\":\"t\",\"უ\":\"u\",\"ფ\":\"f\",\"ქ\":\"k\",\"ღ\":\"gh\",\"ყ\":\"q\",\"შ\":\"sh\",\"ჩ\":\"ch\",\"ც\":\"ts\",\"ძ\":\"dz\",\"წ\":\"ts\",\"ჭ\":\"ch\",\"ხ\":\"kh\",\"ჯ\":\"j\",\"ჰ\":\"h\",\"Ṣ\":\"S\",\"ṣ\":\"s\",\"Ẁ\":\"W\",\"ẁ\":\"w\",\"Ẃ\":\"W\",\"ẃ\":\"w\",\"Ẅ\":\"W\",\"ẅ\":\"w\",\"ẞ\":\"SS\",\"Ạ\":\"A\",\"ạ\":\"a\",\"Ả\":\"A\",\"ả\":\"a\",\"Ấ\":\"A\",\"ấ\":\"a\",\"Ầ\":\"A\",\"ầ\":\"a\",\"Ẩ\":\"A\",\"ẩ\":\"a\",\"Ẫ\":\"A\",\"ẫ\":\"a\",\"Ậ\":\"A\",\"ậ\":\"a\",\"Ắ\":\"A\",\"ắ\":\"a\",\"Ằ\":\"A\",\"ằ\":\"a\",\"Ẳ\":\"A\",\"ẳ\":\"a\",\"Ẵ\":\"A\",\"ẵ\":\"a\",\"Ặ\":\"A\",\"ặ\":\"a\",\"Ẹ\":\"E\",\"ẹ\":\"e\",\"Ẻ\":\"E\",\"ẻ\":\"e\",\"Ẽ\":\"E\",\"ẽ\":\"e\",\"Ế\":\"E\",\"ế\":\"e\",\"Ề\":\"E\",\"ề\":\"e\",\"Ể\":\"E\",\"ể\":\"e\",\"Ễ\":\"E\",\"ễ\":\"e\",\"Ệ\":\"E\",\"ệ\":\"e\",\"Ỉ\":\"I\",\"ỉ\":\"i\",\"Ị\":\"I\",\"ị\":\"i\",\"Ọ\":\"O\",\"ọ\":\"o\",\"Ỏ\":\"O\",\"ỏ\":\"o\",\"Ố\":\"O\",\"ố\":\"o\",\"Ồ\":\"O\",\"ồ\":\"o\",\"Ổ\":\"O\",\"ổ\":\"o\",\"Ỗ\":\"O\",\"ỗ\":\"o\",\"Ộ\":\"O\",\"ộ\":\"o\",\"Ớ\":\"O\",\"ớ\":\"o\",\"Ờ\":\"O\",\"ờ\":\"o\",\"Ở\":\"O\",\"ở\":\"o\",\"Ỡ\":\"O\",\"ỡ\":\"o\",\"Ợ\":\"O\",\"ợ\":\"o\",\"Ụ\":\"U\",\"ụ\":\"u\",\"Ủ\":\"U\",\"ủ\":\"u\",\"Ứ\":\"U\",\"ứ\":\"u\",\"Ừ\":\"U\",\"ừ\":\"u\",\"Ử\":\"U\",\"ử\":\"u\",\"Ữ\":\"U\",\"ữ\":\"u\",\"Ự\":\"U\",\"ự\":\"u\",\"Ỳ\":\"Y\",\"ỳ\":\"y\",\"Ỵ\":\"Y\",\"ỵ\":\"y\",\"Ỷ\":\"Y\",\"ỷ\":\"y\",\"Ỹ\":\"Y\",\"ỹ\":\"y\",\"–\":\"-\",\"‘\":\"\\'\",\"’\":\"\\'\",\"“\":\"\\\\\\\"\",\"”\":\"\\\\\\\"\",\"„\":\"\\\\\\\"\",\"†\":\"+\",\"•\":\"*\",\"…\":\"...\",\"₠\":\"ecu\",\"₢\":\"cruzeiro\",\"₣\":\"french franc\",\"₤\":\"lira\",\"₥\":\"mill\",\"₦\":\"naira\",\"₧\":\"peseta\",\"₨\":\"rupee\",\"₩\":\"won\",\"₪\":\"new shequel\",\"₫\":\"dong\",\"€\":\"euro\",\"₭\":\"kip\",\"₮\":\"tugrik\",\"₯\":\"drachma\",\"₰\":\"penny\",\"₱\":\"peso\",\"₲\":\"guarani\",\"₳\":\"austral\",\"₴\":\"hryvnia\",\"₵\":\"cedi\",\"₸\":\"kazakhstani tenge\",\"₹\":\"indian rupee\",\"₺\":\"turkish lira\",\"₽\":\"russian ruble\",\"₿\":\"bitcoin\",\"℠\":\"sm\",\"™\":\"tm\",\"∂\":\"d\",\"∆\":\"delta\",\"∑\":\"sum\",\"∞\":\"infinity\",\"♥\":\"love\",\"元\":\"yuan\",\"円\":\"yen\",\"﷼\":\"rial\",\"ﻵ\":\"laa\",\"ﻷ\":\"laa\",\"ﻹ\":\"lai\",\"ﻻ\":\"la\"}')\n var locales = JSON.parse('{\"bg\":{\"Й\":\"Y\",\"Ц\":\"Ts\",\"Щ\":\"Sht\",\"Ъ\":\"A\",\"Ь\":\"Y\",\"й\":\"y\",\"ц\":\"ts\",\"щ\":\"sht\",\"ъ\":\"a\",\"ь\":\"y\"},\"de\":{\"Ä\":\"AE\",\"ä\":\"ae\",\"Ö\":\"OE\",\"ö\":\"oe\",\"Ü\":\"UE\",\"ü\":\"ue\",\"ß\":\"ss\",\"%\":\"prozent\",\"&\":\"und\",\"|\":\"oder\",\"∑\":\"summe\",\"∞\":\"unendlich\",\"♥\":\"liebe\"},\"es\":{\"%\":\"por ciento\",\"&\":\"y\",\"<\":\"menor que\",\">\":\"mayor que\",\"|\":\"o\",\"¢\":\"centavos\",\"£\":\"libras\",\"¤\":\"moneda\",\"₣\":\"francos\",\"∑\":\"suma\",\"∞\":\"infinito\",\"♥\":\"amor\"},\"fr\":{\"%\":\"pourcent\",\"&\":\"et\",\"<\":\"plus petit\",\">\":\"plus grand\",\"|\":\"ou\",\"¢\":\"centime\",\"£\":\"livre\",\"¤\":\"devise\",\"₣\":\"franc\",\"∑\":\"somme\",\"∞\":\"infini\",\"♥\":\"amour\"},\"pt\":{\"%\":\"porcento\",\"&\":\"e\",\"<\":\"menor\",\">\":\"maior\",\"|\":\"ou\",\"¢\":\"centavo\",\"∑\":\"soma\",\"£\":\"libra\",\"∞\":\"infinito\",\"♥\":\"amor\"},\"uk\":{\"И\":\"Y\",\"и\":\"y\",\"Й\":\"Y\",\"й\":\"y\",\"Ц\":\"Ts\",\"ц\":\"ts\",\"Х\":\"Kh\",\"х\":\"kh\",\"Щ\":\"Shch\",\"щ\":\"shch\",\"Г\":\"H\",\"г\":\"h\"},\"vi\":{\"Đ\":\"D\",\"đ\":\"d\"},\"da\":{\"Ø\":\"OE\",\"ø\":\"oe\",\"Å\":\"AA\",\"å\":\"aa\",\"%\":\"procent\",\"&\":\"og\",\"|\":\"eller\",\"$\":\"dollar\",\"<\":\"mindre end\",\">\":\"større end\"},\"nb\":{\"&\":\"og\",\"Å\":\"AA\",\"Æ\":\"AE\",\"Ø\":\"OE\",\"å\":\"aa\",\"æ\":\"ae\",\"ø\":\"oe\"},\"it\":{\"&\":\"e\"},\"nl\":{\"&\":\"en\"},\"sv\":{\"&\":\"och\",\"Å\":\"AA\",\"Ä\":\"AE\",\"Ö\":\"OE\",\"å\":\"aa\",\"ä\":\"ae\",\"ö\":\"oe\"}}')\n\n function replace (string, options) {\n if (typeof string !== 'string') {\n throw new Error('slugify: string argument expected')\n }\n\n options = (typeof options === 'string')\n ? {replacement: options}\n : options || {}\n\n var locale = locales[options.locale] || {}\n\n var replacement = options.replacement === undefined ? '-' : options.replacement\n\n var trim = options.trim === undefined ? true : options.trim\n\n var slug = string.normalize().split('')\n // replace characters based on charMap\n .reduce(function (result, ch) {\n var appendChar = locale[ch];\n if (appendChar === undefined) appendChar = charMap[ch];\n if (appendChar === undefined) appendChar = ch;\n if (appendChar === replacement) appendChar = ' ';\n return result + appendChar\n // remove not allowed characters\n .replace(options.remove || /[^\\w\\s$*_+~.()'\"!\\-:@]+/g, '')\n }, '');\n\n if (options.strict) {\n slug = slug.replace(/[^A-Za-z0-9\\s]/g, '');\n }\n\n if (trim) {\n slug = slug.trim()\n }\n\n // Replace spaces with replacement character, treating multiple consecutive\n // spaces as a single space.\n slug = slug.replace(/\\s+/g, replacement);\n\n if (options.lower) {\n slug = slug.toLowerCase()\n }\n\n return slug\n }\n\n replace.extend = function (customMap) {\n Object.assign(charMap, customMap)\n }\n\n return replace\n}))\n","/**\r\n * Core — Shared utilities, constants, and internal helpers\r\n *\r\n * Ported from maxsim/bin/lib/core.cjs\r\n */\r\n\r\nimport fs from 'node:fs';\r\nimport path from 'node:path';\r\nimport os from 'node:os';\r\nimport { simpleGit } from 'simple-git';\r\nimport slugify from 'slugify';\r\n\r\nimport type {\r\n BranchingStrategy,\r\n ModelProfiles,\r\n ModelProfileName,\r\n ModelResolution,\r\n AgentType,\r\n PhaseSearchResult,\r\n RoadmapPhaseInfo,\r\n ArchivedPhaseDir,\r\n GitResult,\r\n MilestoneInfo,\r\n AppConfig,\r\n} from './types.js';\r\n\r\n// ─── Model Profile Table ─────────────────────────────────────────────────────\r\n\r\nexport const MODEL_PROFILES: ModelProfiles = {\r\n 'maxsim-planner': { quality: 'opus', balanced: 'opus', budget: 'sonnet', tokenburner: 'opus' },\r\n 'maxsim-roadmapper': { quality: 'opus', balanced: 'sonnet', budget: 'sonnet', tokenburner: 'opus' },\r\n 'maxsim-executor': { quality: 'opus', balanced: 'sonnet', budget: 'sonnet', tokenburner: 'opus' },\r\n 'maxsim-phase-researcher': { quality: 'opus', balanced: 'sonnet', budget: 'haiku', tokenburner: 'opus' },\r\n 'maxsim-project-researcher': { quality: 'opus', balanced: 'sonnet', budget: 'haiku', tokenburner: 'opus' },\r\n 'maxsim-research-synthesizer': { quality: 'sonnet', balanced: 'sonnet', budget: 'haiku', tokenburner: 'opus' },\r\n 'maxsim-debugger': { quality: 'opus', balanced: 'sonnet', budget: 'sonnet', tokenburner: 'opus' },\r\n 'maxsim-codebase-mapper': { quality: 'sonnet', balanced: 'haiku', budget: 'haiku', tokenburner: 'opus' },\r\n 'maxsim-verifier': { quality: 'sonnet', balanced: 'sonnet', budget: 'haiku', tokenburner: 'opus' },\r\n 'maxsim-plan-checker': { quality: 'sonnet', balanced: 'sonnet', budget: 'haiku', tokenburner: 'opus' },\r\n 'maxsim-integration-checker': { quality: 'sonnet', balanced: 'sonnet', budget: 'haiku', tokenburner: 'opus' },\r\n};\r\n\r\n// ─── Output helpers ──────────────────────────────────────────────────────────\r\n// These throw CliOutput / CliError instead of calling process.exit() directly.\r\n// The CLI entry point (cli.ts) catches these and calls process.exit() there.\r\n\r\n/** Thrown by output() to signal successful command completion. */\r\nexport class CliOutput {\r\n readonly result: unknown;\r\n readonly raw: boolean;\r\n readonly rawValue: unknown;\r\n constructor(result: unknown, raw?: boolean, rawValue?: unknown) {\r\n this.result = result;\r\n this.raw = raw ?? false;\r\n this.rawValue = rawValue;\r\n }\r\n}\r\n\r\n/** Thrown by error() to signal a command error. */\r\nexport class CliError {\r\n readonly message: string;\r\n constructor(message: string) {\r\n this.message = message;\r\n }\r\n}\r\n\r\nexport function output(result: unknown, raw?: boolean, rawValue?: unknown): never {\r\n throw new CliOutput(result, raw, rawValue);\r\n}\r\n\r\nexport function error(message: string): never {\r\n throw new CliError(message);\r\n}\r\n\r\n/** Re-throw CliOutput/CliError signals so catch blocks don't intercept them */\r\nexport function rethrowCliSignals(e: unknown): void {\r\n if (e instanceof CliOutput || e instanceof CliError) throw e;\r\n}\r\n\r\n/**\r\n * Handle a CliOutput by writing to stdout. Extracted so cli.ts can use it.\r\n */\r\nexport function writeOutput(out: CliOutput): void {\r\n if (out.raw && out.rawValue !== undefined) {\r\n process.stdout.write(String(out.rawValue));\r\n } else {\r\n const json = JSON.stringify(out.result, null, 2);\r\n if (json.length > 50000) {\r\n const tmpPath = path.join(os.tmpdir(), `maxsim-${Date.now()}.json`);\r\n fs.writeFileSync(tmpPath, json, 'utf-8');\r\n process.stdout.write('@file:' + tmpPath);\r\n } else {\r\n process.stdout.write(json);\r\n }\r\n }\r\n}\r\n\r\n// ─── Shared micro-utilities ─────────────────────────────────────────────────\r\n\r\n/** Today's date as YYYY-MM-DD. */\r\nexport function todayISO(): string {\r\n return new Date().toISOString().split('T')[0];\r\n}\r\n\r\n/** Canonical .planning/ sub-paths. */\r\nexport function planningPath(cwd: string, ...segments: string[]): string {\r\n return path.join(cwd, '.planning', ...segments);\r\n}\r\nexport function statePath(cwd: string): string { return planningPath(cwd, 'STATE.md'); }\r\nexport function roadmapPath(cwd: string): string { return planningPath(cwd, 'ROADMAP.md'); }\r\nexport function configPath(cwd: string): string { return planningPath(cwd, 'config.json'); }\r\nexport function phasesPath(cwd: string): string { return planningPath(cwd, 'phases'); }\r\n\r\n/** Phase-file predicates. */\r\nexport const isPlanFile = (f: string): boolean => f.endsWith('-PLAN.md') || f === 'PLAN.md';\r\nexport const isSummaryFile = (f: string): boolean => f.endsWith('-SUMMARY.md') || f === 'SUMMARY.md';\r\n\r\n/** Strip suffix to get plan/summary ID. */\r\nexport const planId = (f: string): string => f.replace('-PLAN.md', '').replace('PLAN.md', '');\r\nexport const summaryId = (f: string): string => f.replace('-SUMMARY.md', '').replace('SUMMARY.md', '');\r\n\r\n/** List subdirectory names, optionally sorted by phase number. */\r\nexport function listSubDirs(dir: string, sortByPhase = false): string[] {\r\n const dirs = fs.readdirSync(dir, { withFileTypes: true })\r\n .filter(e => e.isDirectory())\r\n .map(e => e.name);\r\n return sortByPhase ? dirs.sort((a, b) => comparePhaseNum(a, b)) : dirs;\r\n}\r\n\r\n/** Log only when MAXSIM_DEBUG is set. */\r\nexport function debugLog(e: unknown): void {\r\n if (process.env.MAXSIM_DEBUG) console.error(e);\r\n}\r\n\r\n/** Escape a phase number for use in regex. */\r\nexport function escapePhaseNum(phase: string | number): string {\r\n return String(phase).replace(/\\./g, '\\\\.');\r\n}\r\n\r\n// ─── File & Config utilities ─────────────────────────────────────────────────\r\n\r\nexport function safeReadFile(filePath: string): string | null {\r\n try {\r\n return fs.readFileSync(filePath, 'utf-8');\r\n } catch {\r\n return null;\r\n }\r\n}\r\n\r\nlet _configCache: { cwd: string; config: AppConfig } | null = null;\r\n\r\nexport function loadConfig(cwd: string): AppConfig {\r\n if (_configCache && _configCache.cwd === cwd) return _configCache.config;\r\n const cfgPath = configPath(cwd);\r\n const defaults: AppConfig = {\r\n model_profile: 'balanced',\r\n commit_docs: true,\r\n search_gitignored: false,\r\n branching_strategy: 'none',\r\n phase_branch_template: 'maxsim/phase-{phase}-{slug}',\r\n milestone_branch_template: 'maxsim/{milestone}-{slug}',\r\n research: true,\r\n plan_checker: true,\r\n verifier: true,\r\n parallelization: true,\r\n brave_search: false,\r\n };\r\n\r\n try {\r\n const raw = fs.readFileSync(cfgPath, 'utf-8');\r\n const parsed: Record = JSON.parse(raw) as Record;\r\n\r\n const get = (key: string, nested?: { section: string; field: string }): unknown => {\r\n if (parsed[key] !== undefined) return parsed[key];\r\n if (nested) {\r\n const section = parsed[nested.section];\r\n if (section && typeof section === 'object' && section !== null && nested.field in section) {\r\n return (section as Record)[nested.field];\r\n }\r\n }\r\n return undefined;\r\n };\r\n\r\n const parallelization = ((): boolean => {\r\n const val = get('parallelization');\r\n if (typeof val === 'boolean') return val;\r\n if (typeof val === 'object' && val !== null && 'enabled' in val) {\r\n return (val as { enabled: boolean }).enabled;\r\n }\r\n return defaults.parallelization;\r\n })();\r\n\r\n const result: AppConfig = {\r\n model_profile: (get('model_profile') as ModelProfileName | undefined) ?? defaults.model_profile,\r\n commit_docs: (get('commit_docs', { section: 'planning', field: 'commit_docs' }) as boolean | undefined) ?? defaults.commit_docs,\r\n search_gitignored: (get('search_gitignored', { section: 'planning', field: 'search_gitignored' }) as boolean | undefined) ?? defaults.search_gitignored,\r\n branching_strategy: (get('branching_strategy', { section: 'git', field: 'branching_strategy' }) as BranchingStrategy | undefined) ?? defaults.branching_strategy,\r\n phase_branch_template: (get('phase_branch_template', { section: 'git', field: 'phase_branch_template' }) as string | undefined) ?? defaults.phase_branch_template,\r\n milestone_branch_template: (get('milestone_branch_template', { section: 'git', field: 'milestone_branch_template' }) as string | undefined) ?? defaults.milestone_branch_template,\r\n research: (get('research', { section: 'workflow', field: 'research' }) as boolean | undefined) ?? defaults.research,\r\n plan_checker: ((get('plan_checker', { section: 'workflow', field: 'plan_checker' }) ?? get('plan_checker', { section: 'workflow', field: 'plan_check' })) as boolean | undefined) ?? defaults.plan_checker,\r\n verifier: (get('verifier', { section: 'workflow', field: 'verifier' }) as boolean | undefined) ?? defaults.verifier,\r\n parallelization,\r\n brave_search: (get('brave_search') as boolean | undefined) ?? defaults.brave_search,\r\n model_overrides: parsed['model_overrides'] as AppConfig['model_overrides'],\r\n };\r\n _configCache = { cwd, config: result };\r\n return result;\r\n } catch {\r\n _configCache = { cwd, config: defaults };\r\n return defaults;\r\n }\r\n}\r\n\r\n// ─── Git utilities ───────────────────────────────────────────────────────────\r\n\r\nexport async function isGitIgnored(cwd: string, targetPath: string): Promise {\r\n try {\r\n const git = simpleGit(cwd);\r\n const result = await git.checkIgnore(targetPath);\r\n return result.length > 0;\r\n } catch {\r\n return false;\r\n }\r\n}\r\n\r\nexport async function execGit(cwd: string, args: string[]): Promise {\r\n try {\r\n const git = simpleGit(cwd);\r\n const stdout = await git.raw(args);\r\n return { exitCode: 0, stdout: (stdout ?? '').trim(), stderr: '' };\r\n } catch (thrown: unknown) {\r\n const err = thrown as { message?: string };\r\n // simple-git throws on non-zero exit — extract what we can\r\n const message = err.message ?? '';\r\n return {\r\n exitCode: 1,\r\n stdout: '',\r\n stderr: message,\r\n };\r\n }\r\n}\r\n\r\n// ─── Phase utilities ─────────────────────────────────────────────────────────\r\n\r\nexport function normalizePhaseName(phase: string): string {\r\n const match = phase.match(/^(\\d+)([A-Z])?(\\.\\d+)?/i);\r\n if (!match) return phase;\r\n const padded = match[1].padStart(2, '0');\r\n const letter = match[2] ? match[2].toUpperCase() : '';\r\n const decimal = match[3] || '';\r\n return padded + letter + decimal;\r\n}\r\n\r\nexport function comparePhaseNum(a: string | number, b: string | number): number {\r\n const pa = String(a).match(/^(\\d+)([A-Z])?(\\.\\d+)?/i);\r\n const pb = String(b).match(/^(\\d+)([A-Z])?(\\.\\d+)?/i);\r\n if (!pa || !pb) return String(a).localeCompare(String(b));\r\n const intDiff = parseInt(pa[1], 10) - parseInt(pb[1], 10);\r\n if (intDiff !== 0) return intDiff;\r\n const la = (pa[2] || '').toUpperCase();\r\n const lb = (pb[2] || '').toUpperCase();\r\n if (la !== lb) {\r\n if (!la) return -1;\r\n if (!lb) return 1;\r\n return la < lb ? -1 : 1;\r\n }\r\n const da = pa[3] ? parseFloat(pa[3]) : -1;\r\n const db = pb[3] ? parseFloat(pb[3]) : -1;\r\n return da - db;\r\n}\r\n\r\n// ─── Phase regex helper ──────────────────────────────────────────────────────\r\n\r\n/**\r\n * Returns the canonical regex for matching Phase heading lines in ROADMAP.md.\r\n *\r\n * General form (no escapedPhaseNum):\r\n * Matches: ## Phase 03: Name Here\r\n * Group 1: phase number string (e.g. \"03\", \"3A\", \"2.1\")\r\n * Group 2: phase name string (e.g. \"Name Here\")\r\n *\r\n * Specific form (with escapedPhaseNum):\r\n * Matches: ## Phase 03: Name Here\r\n * Group 1: phase name string only\r\n *\r\n * @param escapedPhaseNum - regex-escaped phase number string to match a specific phase\r\n * @param flags - regex flags (default: 'gi')\r\n */\r\nexport function getPhasePattern(escapedPhaseNum?: string, flags = 'gim'): RegExp {\r\n if (escapedPhaseNum) {\r\n return new RegExp(\r\n `^#{2,4}\\\\s*Phase\\\\s+${escapedPhaseNum}:\\\\s*([^\\\\n]+)`,\r\n flags,\r\n );\r\n }\r\n return new RegExp(\r\n `^#{2,4}\\\\s*Phase\\\\s+(\\\\d+[A-Z]?(?:\\\\.\\\\d+)?)\\\\s*:\\\\s*([^\\\\n]+)`,\r\n flags,\r\n );\r\n}\r\n\r\nfunction searchPhaseInDir(baseDir: string, relBase: string, normalized: string): PhaseSearchResult | null {\r\n try {\r\n const dirs = listSubDirs(baseDir, true);\r\n const match = dirs.find(d => d.startsWith(normalized));\r\n if (!match) return null;\r\n\r\n const dirMatch = match.match(/^(\\d+[A-Z]?(?:\\.\\d+)?)-?(.*)/i);\r\n const phaseNumber = dirMatch ? dirMatch[1] : normalized;\r\n const phaseName = dirMatch && dirMatch[2] ? dirMatch[2] : null;\r\n const phaseDir = path.join(baseDir, match);\r\n const phaseFiles = fs.readdirSync(phaseDir);\r\n\r\n const plans = phaseFiles.filter(isPlanFile).sort();\r\n const summaries = phaseFiles.filter(isSummaryFile).sort();\r\n const hasResearch = phaseFiles.some(f => f.endsWith('-RESEARCH.md') || f === 'RESEARCH.md');\r\n const hasContext = phaseFiles.some(f => f.endsWith('-CONTEXT.md') || f === 'CONTEXT.md');\r\n const hasVerification = phaseFiles.some(f => f.endsWith('-VERIFICATION.md') || f === 'VERIFICATION.md');\r\n\r\n const completedPlanIds = new Set(summaries.map(summaryId));\r\n const incompletePlans = plans.filter(p => !completedPlanIds.has(planId(p)));\r\n\r\n return {\r\n found: true,\r\n directory: path.join(relBase, match),\r\n phase_number: phaseNumber,\r\n phase_name: phaseName,\r\n phase_slug: phaseName ? phaseName.toLowerCase().replace(/[^a-z0-9]+/g, '-').replace(/^-+|-+$/g, '') : null,\r\n plans,\r\n summaries,\r\n incomplete_plans: incompletePlans,\r\n has_research: hasResearch,\r\n has_context: hasContext,\r\n has_verification: hasVerification,\r\n };\r\n } catch {\r\n return null;\r\n }\r\n}\r\n\r\nexport function findPhaseInternal(cwd: string, phase: string): PhaseSearchResult | null {\r\n if (!phase) return null;\r\n\r\n const pd = phasesPath(cwd);\r\n const normalized = normalizePhaseName(phase);\r\n\r\n const current = searchPhaseInDir(pd, path.join('.planning', 'phases'), normalized);\r\n if (current) return current;\r\n\r\n const milestonesDir = planningPath(cwd, 'milestones');\r\n\r\n try {\r\n fs.statSync(milestonesDir);\r\n } catch {\r\n return null;\r\n }\r\n\r\n try {\r\n const milestoneEntries = fs.readdirSync(milestonesDir, { withFileTypes: true });\r\n const archiveDirs = milestoneEntries\r\n .filter(e => e.isDirectory() && /^v[\\d.]+-phases$/.test(e.name))\r\n .map(e => e.name)\r\n .sort()\r\n .reverse();\r\n\r\n for (const archiveName of archiveDirs) {\r\n const versionMatch = archiveName.match(/^(v[\\d.]+)-phases$/);\r\n if (!versionMatch) continue;\r\n const version = versionMatch[1];\r\n const archivePath = path.join(milestonesDir, archiveName);\r\n const relBase = path.join('.planning', 'milestones', archiveName);\r\n const result = searchPhaseInDir(archivePath, relBase, normalized);\r\n if (result) {\r\n result.archived = version;\r\n return result;\r\n }\r\n }\r\n } catch (e) {\r\n debugLog(e);\r\n }\r\n\r\n return null;\r\n}\r\n\r\nexport function getArchivedPhaseDirs(cwd: string): ArchivedPhaseDir[] {\r\n const milestonesDir = planningPath(cwd, 'milestones');\r\n const results: ArchivedPhaseDir[] = [];\r\n\r\n try {\r\n const milestoneEntries = fs.readdirSync(milestonesDir, { withFileTypes: true });\r\n const phaseDirs = milestoneEntries\r\n .filter(e => e.isDirectory() && /^v[\\d.]+-phases$/.test(e.name))\r\n .map(e => e.name)\r\n .sort()\r\n .reverse();\r\n\r\n for (const archiveName of phaseDirs) {\r\n const versionMatch = archiveName.match(/^(v[\\d.]+)-phases$/);\r\n if (!versionMatch) continue;\r\n const version = versionMatch[1];\r\n const archivePath = path.join(milestonesDir, archiveName);\r\n const dirs = listSubDirs(archivePath, true);\r\n\r\n for (const dir of dirs) {\r\n results.push({\r\n name: dir,\r\n milestone: version,\r\n basePath: path.join('.planning', 'milestones', archiveName),\r\n fullPath: path.join(archivePath, dir),\r\n });\r\n }\r\n }\r\n } catch (e) {\r\n debugLog(e);\r\n }\r\n\r\n return results;\r\n}\r\n\r\n// ─── Roadmap & model utilities ───────────────────────────────────────────────\r\n\r\nexport function getRoadmapPhaseInternal(cwd: string, phaseNum: string | number): RoadmapPhaseInfo | null {\r\n if (!phaseNum) return null;\r\n const rp = roadmapPath(cwd);\r\n\r\n try {\r\n const content = fs.readFileSync(rp, 'utf-8');\r\n const escapedPhase = escapePhaseNum(phaseNum);\r\n const phasePattern = getPhasePattern(escapedPhase, 'i');\r\n const headerMatch = content.match(phasePattern);\r\n if (!headerMatch) return null;\r\n\r\n const phaseName = headerMatch[1].trim();\r\n const headerIndex = headerMatch.index!;\r\n const restOfContent = content.slice(headerIndex);\r\n const nextHeaderMatch = restOfContent.match(/\\n#{2,4}\\s+Phase\\s+\\d/i);\r\n const sectionEnd = nextHeaderMatch ? headerIndex + nextHeaderMatch.index! : content.length;\r\n const section = content.slice(headerIndex, sectionEnd).trim();\r\n\r\n const goalMatch = section.match(/\\*\\*Goal(?::\\*\\*|\\*\\*:)\\s*([^\\n]+)/i);\r\n const goal = goalMatch ? goalMatch[1].trim() : null;\r\n\r\n return {\r\n found: true,\r\n phase_number: phaseNum.toString(),\r\n phase_name: phaseName,\r\n goal,\r\n section,\r\n };\r\n } catch {\r\n return null;\r\n }\r\n}\r\n\r\nexport function resolveModelInternal(cwd: string, agentType: AgentType, config?: AppConfig): ModelResolution {\r\n config = config ?? loadConfig(cwd);\r\n\r\n const override = config.model_overrides?.[agentType];\r\n if (override) {\r\n return override === 'opus' ? 'inherit' : override;\r\n }\r\n\r\n const profile: ModelProfileName = config.model_profile || 'balanced';\r\n const agentModels = MODEL_PROFILES[agentType];\r\n if (!agentModels) return 'sonnet';\r\n const resolved = agentModels[profile] || agentModels['balanced'] || 'sonnet';\r\n return resolved === 'opus' ? 'inherit' : resolved;\r\n}\r\n\r\n// ─── Misc utilities ──────────────────────────────────────────────────────────\r\n\r\nexport function pathExistsInternal(cwd: string, targetPath: string): boolean {\r\n const fullPath = path.isAbsolute(targetPath) ? targetPath : path.join(cwd, targetPath);\r\n try {\r\n fs.statSync(fullPath);\r\n return true;\r\n } catch {\r\n return false;\r\n }\r\n}\r\n\r\nexport function generateSlugInternal(text: string | null | undefined): string | null {\r\n if (!text) return null;\r\n return slugify(text, { lower: true, strict: true });\r\n}\r\n\r\nexport function getMilestoneInfo(cwd: string): MilestoneInfo {\r\n try {\r\n const roadmap = fs.readFileSync(roadmapPath(cwd), 'utf-8');\r\n const versionMatch = roadmap.match(/v(\\d+\\.\\d+)/);\r\n const nameMatch = roadmap.match(/## .*v\\d+\\.\\d+[:\\s]+([^\\n(]+)/);\r\n return {\r\n version: versionMatch ? versionMatch[0] : 'v1.0',\r\n name: nameMatch ? nameMatch[1].trim() : 'milestone',\r\n };\r\n } catch {\r\n return { version: 'v1.0', name: 'milestone' };\r\n }\r\n}\r\n","'use strict';\n\nconst ALIAS = Symbol.for('yaml.alias');\nconst DOC = Symbol.for('yaml.document');\nconst MAP = Symbol.for('yaml.map');\nconst PAIR = Symbol.for('yaml.pair');\nconst SCALAR = Symbol.for('yaml.scalar');\nconst SEQ = Symbol.for('yaml.seq');\nconst NODE_TYPE = Symbol.for('yaml.node.type');\nconst isAlias = (node) => !!node && typeof node === 'object' && node[NODE_TYPE] === ALIAS;\nconst isDocument = (node) => !!node && typeof node === 'object' && node[NODE_TYPE] === DOC;\nconst isMap = (node) => !!node && typeof node === 'object' && node[NODE_TYPE] === MAP;\nconst isPair = (node) => !!node && typeof node === 'object' && node[NODE_TYPE] === PAIR;\nconst isScalar = (node) => !!node && typeof node === 'object' && node[NODE_TYPE] === SCALAR;\nconst isSeq = (node) => !!node && typeof node === 'object' && node[NODE_TYPE] === SEQ;\nfunction isCollection(node) {\n if (node && typeof node === 'object')\n switch (node[NODE_TYPE]) {\n case MAP:\n case SEQ:\n return true;\n }\n return false;\n}\nfunction isNode(node) {\n if (node && typeof node === 'object')\n switch (node[NODE_TYPE]) {\n case ALIAS:\n case MAP:\n case SCALAR:\n case SEQ:\n return true;\n }\n return false;\n}\nconst hasAnchor = (node) => (isScalar(node) || isCollection(node)) && !!node.anchor;\n\nexports.ALIAS = ALIAS;\nexports.DOC = DOC;\nexports.MAP = MAP;\nexports.NODE_TYPE = NODE_TYPE;\nexports.PAIR = PAIR;\nexports.SCALAR = SCALAR;\nexports.SEQ = SEQ;\nexports.hasAnchor = hasAnchor;\nexports.isAlias = isAlias;\nexports.isCollection = isCollection;\nexports.isDocument = isDocument;\nexports.isMap = isMap;\nexports.isNode = isNode;\nexports.isPair = isPair;\nexports.isScalar = isScalar;\nexports.isSeq = isSeq;\n","'use strict';\n\nvar identity = require('./nodes/identity.js');\n\nconst BREAK = Symbol('break visit');\nconst SKIP = Symbol('skip children');\nconst REMOVE = Symbol('remove node');\n/**\n * Apply a visitor to an AST node or document.\n *\n * Walks through the tree (depth-first) starting from `node`, calling a\n * `visitor` function with three arguments:\n * - `key`: For sequence values and map `Pair`, the node's index in the\n * collection. Within a `Pair`, `'key'` or `'value'`, correspondingly.\n * `null` for the root node.\n * - `node`: The current node.\n * - `path`: The ancestry of the current node.\n *\n * The return value of the visitor may be used to control the traversal:\n * - `undefined` (default): Do nothing and continue\n * - `visit.SKIP`: Do not visit the children of this node, continue with next\n * sibling\n * - `visit.BREAK`: Terminate traversal completely\n * - `visit.REMOVE`: Remove the current node, then continue with the next one\n * - `Node`: Replace the current node, then continue by visiting it\n * - `number`: While iterating the items of a sequence or map, set the index\n * of the next step. This is useful especially if the index of the current\n * node has changed.\n *\n * If `visitor` is a single function, it will be called with all values\n * encountered in the tree, including e.g. `null` values. Alternatively,\n * separate visitor functions may be defined for each `Map`, `Pair`, `Seq`,\n * `Alias` and `Scalar` node. To define the same visitor function for more than\n * one node type, use the `Collection` (map and seq), `Value` (map, seq & scalar)\n * and `Node` (alias, map, seq & scalar) targets. Of all these, only the most\n * specific defined one will be used for each node.\n */\nfunction visit(node, visitor) {\n const visitor_ = initVisitor(visitor);\n if (identity.isDocument(node)) {\n const cd = visit_(null, node.contents, visitor_, Object.freeze([node]));\n if (cd === REMOVE)\n node.contents = null;\n }\n else\n visit_(null, node, visitor_, Object.freeze([]));\n}\n// Without the `as symbol` casts, TS declares these in the `visit`\n// namespace using `var`, but then complains about that because\n// `unique symbol` must be `const`.\n/** Terminate visit traversal completely */\nvisit.BREAK = BREAK;\n/** Do not visit the children of the current node */\nvisit.SKIP = SKIP;\n/** Remove the current node */\nvisit.REMOVE = REMOVE;\nfunction visit_(key, node, visitor, path) {\n const ctrl = callVisitor(key, node, visitor, path);\n if (identity.isNode(ctrl) || identity.isPair(ctrl)) {\n replaceNode(key, path, ctrl);\n return visit_(key, ctrl, visitor, path);\n }\n if (typeof ctrl !== 'symbol') {\n if (identity.isCollection(node)) {\n path = Object.freeze(path.concat(node));\n for (let i = 0; i < node.items.length; ++i) {\n const ci = visit_(i, node.items[i], visitor, path);\n if (typeof ci === 'number')\n i = ci - 1;\n else if (ci === BREAK)\n return BREAK;\n else if (ci === REMOVE) {\n node.items.splice(i, 1);\n i -= 1;\n }\n }\n }\n else if (identity.isPair(node)) {\n path = Object.freeze(path.concat(node));\n const ck = visit_('key', node.key, visitor, path);\n if (ck === BREAK)\n return BREAK;\n else if (ck === REMOVE)\n node.key = null;\n const cv = visit_('value', node.value, visitor, path);\n if (cv === BREAK)\n return BREAK;\n else if (cv === REMOVE)\n node.value = null;\n }\n }\n return ctrl;\n}\n/**\n * Apply an async visitor to an AST node or document.\n *\n * Walks through the tree (depth-first) starting from `node`, calling a\n * `visitor` function with three arguments:\n * - `key`: For sequence values and map `Pair`, the node's index in the\n * collection. Within a `Pair`, `'key'` or `'value'`, correspondingly.\n * `null` for the root node.\n * - `node`: The current node.\n * - `path`: The ancestry of the current node.\n *\n * The return value of the visitor may be used to control the traversal:\n * - `Promise`: Must resolve to one of the following values\n * - `undefined` (default): Do nothing and continue\n * - `visit.SKIP`: Do not visit the children of this node, continue with next\n * sibling\n * - `visit.BREAK`: Terminate traversal completely\n * - `visit.REMOVE`: Remove the current node, then continue with the next one\n * - `Node`: Replace the current node, then continue by visiting it\n * - `number`: While iterating the items of a sequence or map, set the index\n * of the next step. This is useful especially if the index of the current\n * node has changed.\n *\n * If `visitor` is a single function, it will be called with all values\n * encountered in the tree, including e.g. `null` values. Alternatively,\n * separate visitor functions may be defined for each `Map`, `Pair`, `Seq`,\n * `Alias` and `Scalar` node. To define the same visitor function for more than\n * one node type, use the `Collection` (map and seq), `Value` (map, seq & scalar)\n * and `Node` (alias, map, seq & scalar) targets. Of all these, only the most\n * specific defined one will be used for each node.\n */\nasync function visitAsync(node, visitor) {\n const visitor_ = initVisitor(visitor);\n if (identity.isDocument(node)) {\n const cd = await visitAsync_(null, node.contents, visitor_, Object.freeze([node]));\n if (cd === REMOVE)\n node.contents = null;\n }\n else\n await visitAsync_(null, node, visitor_, Object.freeze([]));\n}\n// Without the `as symbol` casts, TS declares these in the `visit`\n// namespace using `var`, but then complains about that because\n// `unique symbol` must be `const`.\n/** Terminate visit traversal completely */\nvisitAsync.BREAK = BREAK;\n/** Do not visit the children of the current node */\nvisitAsync.SKIP = SKIP;\n/** Remove the current node */\nvisitAsync.REMOVE = REMOVE;\nasync function visitAsync_(key, node, visitor, path) {\n const ctrl = await callVisitor(key, node, visitor, path);\n if (identity.isNode(ctrl) || identity.isPair(ctrl)) {\n replaceNode(key, path, ctrl);\n return visitAsync_(key, ctrl, visitor, path);\n }\n if (typeof ctrl !== 'symbol') {\n if (identity.isCollection(node)) {\n path = Object.freeze(path.concat(node));\n for (let i = 0; i < node.items.length; ++i) {\n const ci = await visitAsync_(i, node.items[i], visitor, path);\n if (typeof ci === 'number')\n i = ci - 1;\n else if (ci === BREAK)\n return BREAK;\n else if (ci === REMOVE) {\n node.items.splice(i, 1);\n i -= 1;\n }\n }\n }\n else if (identity.isPair(node)) {\n path = Object.freeze(path.concat(node));\n const ck = await visitAsync_('key', node.key, visitor, path);\n if (ck === BREAK)\n return BREAK;\n else if (ck === REMOVE)\n node.key = null;\n const cv = await visitAsync_('value', node.value, visitor, path);\n if (cv === BREAK)\n return BREAK;\n else if (cv === REMOVE)\n node.value = null;\n }\n }\n return ctrl;\n}\nfunction initVisitor(visitor) {\n if (typeof visitor === 'object' &&\n (visitor.Collection || visitor.Node || visitor.Value)) {\n return Object.assign({\n Alias: visitor.Node,\n Map: visitor.Node,\n Scalar: visitor.Node,\n Seq: visitor.Node\n }, visitor.Value && {\n Map: visitor.Value,\n Scalar: visitor.Value,\n Seq: visitor.Value\n }, visitor.Collection && {\n Map: visitor.Collection,\n Seq: visitor.Collection\n }, visitor);\n }\n return visitor;\n}\nfunction callVisitor(key, node, visitor, path) {\n if (typeof visitor === 'function')\n return visitor(key, node, path);\n if (identity.isMap(node))\n return visitor.Map?.(key, node, path);\n if (identity.isSeq(node))\n return visitor.Seq?.(key, node, path);\n if (identity.isPair(node))\n return visitor.Pair?.(key, node, path);\n if (identity.isScalar(node))\n return visitor.Scalar?.(key, node, path);\n if (identity.isAlias(node))\n return visitor.Alias?.(key, node, path);\n return undefined;\n}\nfunction replaceNode(key, path, node) {\n const parent = path[path.length - 1];\n if (identity.isCollection(parent)) {\n parent.items[key] = node;\n }\n else if (identity.isPair(parent)) {\n if (key === 'key')\n parent.key = node;\n else\n parent.value = node;\n }\n else if (identity.isDocument(parent)) {\n parent.contents = node;\n }\n else {\n const pt = identity.isAlias(parent) ? 'alias' : 'scalar';\n throw new Error(`Cannot replace node with ${pt} parent`);\n }\n}\n\nexports.visit = visit;\nexports.visitAsync = visitAsync;\n","'use strict';\n\nvar identity = require('../nodes/identity.js');\nvar visit = require('../visit.js');\n\nconst escapeChars = {\n '!': '%21',\n ',': '%2C',\n '[': '%5B',\n ']': '%5D',\n '{': '%7B',\n '}': '%7D'\n};\nconst escapeTagName = (tn) => tn.replace(/[!,[\\]{}]/g, ch => escapeChars[ch]);\nclass Directives {\n constructor(yaml, tags) {\n /**\n * The directives-end/doc-start marker `---`. If `null`, a marker may still be\n * included in the document's stringified representation.\n */\n this.docStart = null;\n /** The doc-end marker `...`. */\n this.docEnd = false;\n this.yaml = Object.assign({}, Directives.defaultYaml, yaml);\n this.tags = Object.assign({}, Directives.defaultTags, tags);\n }\n clone() {\n const copy = new Directives(this.yaml, this.tags);\n copy.docStart = this.docStart;\n return copy;\n }\n /**\n * During parsing, get a Directives instance for the current document and\n * update the stream state according to the current version's spec.\n */\n atDocument() {\n const res = new Directives(this.yaml, this.tags);\n switch (this.yaml.version) {\n case '1.1':\n this.atNextDocument = true;\n break;\n case '1.2':\n this.atNextDocument = false;\n this.yaml = {\n explicit: Directives.defaultYaml.explicit,\n version: '1.2'\n };\n this.tags = Object.assign({}, Directives.defaultTags);\n break;\n }\n return res;\n }\n /**\n * @param onError - May be called even if the action was successful\n * @returns `true` on success\n */\n add(line, onError) {\n if (this.atNextDocument) {\n this.yaml = { explicit: Directives.defaultYaml.explicit, version: '1.1' };\n this.tags = Object.assign({}, Directives.defaultTags);\n this.atNextDocument = false;\n }\n const parts = line.trim().split(/[ \\t]+/);\n const name = parts.shift();\n switch (name) {\n case '%TAG': {\n if (parts.length !== 2) {\n onError(0, '%TAG directive should contain exactly two parts');\n if (parts.length < 2)\n return false;\n }\n const [handle, prefix] = parts;\n this.tags[handle] = prefix;\n return true;\n }\n case '%YAML': {\n this.yaml.explicit = true;\n if (parts.length !== 1) {\n onError(0, '%YAML directive should contain exactly one part');\n return false;\n }\n const [version] = parts;\n if (version === '1.1' || version === '1.2') {\n this.yaml.version = version;\n return true;\n }\n else {\n const isValid = /^\\d+\\.\\d+$/.test(version);\n onError(6, `Unsupported YAML version ${version}`, isValid);\n return false;\n }\n }\n default:\n onError(0, `Unknown directive ${name}`, true);\n return false;\n }\n }\n /**\n * Resolves a tag, matching handles to those defined in %TAG directives.\n *\n * @returns Resolved tag, which may also be the non-specific tag `'!'` or a\n * `'!local'` tag, or `null` if unresolvable.\n */\n tagName(source, onError) {\n if (source === '!')\n return '!'; // non-specific tag\n if (source[0] !== '!') {\n onError(`Not a valid tag: ${source}`);\n return null;\n }\n if (source[1] === '<') {\n const verbatim = source.slice(2, -1);\n if (verbatim === '!' || verbatim === '!!') {\n onError(`Verbatim tags aren't resolved, so ${source} is invalid.`);\n return null;\n }\n if (source[source.length - 1] !== '>')\n onError('Verbatim tags must end with a >');\n return verbatim;\n }\n const [, handle, suffix] = source.match(/^(.*!)([^!]*)$/s);\n if (!suffix)\n onError(`The ${source} tag has no suffix`);\n const prefix = this.tags[handle];\n if (prefix) {\n try {\n return prefix + decodeURIComponent(suffix);\n }\n catch (error) {\n onError(String(error));\n return null;\n }\n }\n if (handle === '!')\n return source; // local tag\n onError(`Could not resolve tag: ${source}`);\n return null;\n }\n /**\n * Given a fully resolved tag, returns its printable string form,\n * taking into account current tag prefixes and defaults.\n */\n tagString(tag) {\n for (const [handle, prefix] of Object.entries(this.tags)) {\n if (tag.startsWith(prefix))\n return handle + escapeTagName(tag.substring(prefix.length));\n }\n return tag[0] === '!' ? tag : `!<${tag}>`;\n }\n toString(doc) {\n const lines = this.yaml.explicit\n ? [`%YAML ${this.yaml.version || '1.2'}`]\n : [];\n const tagEntries = Object.entries(this.tags);\n let tagNames;\n if (doc && tagEntries.length > 0 && identity.isNode(doc.contents)) {\n const tags = {};\n visit.visit(doc.contents, (_key, node) => {\n if (identity.isNode(node) && node.tag)\n tags[node.tag] = true;\n });\n tagNames = Object.keys(tags);\n }\n else\n tagNames = [];\n for (const [handle, prefix] of tagEntries) {\n if (handle === '!!' && prefix === 'tag:yaml.org,2002:')\n continue;\n if (!doc || tagNames.some(tn => tn.startsWith(prefix)))\n lines.push(`%TAG ${handle} ${prefix}`);\n }\n return lines.join('\\n');\n }\n}\nDirectives.defaultYaml = { explicit: false, version: '1.2' };\nDirectives.defaultTags = { '!!': 'tag:yaml.org,2002:' };\n\nexports.Directives = Directives;\n","'use strict';\n\nvar identity = require('../nodes/identity.js');\nvar visit = require('../visit.js');\n\n/**\n * Verify that the input string is a valid anchor.\n *\n * Will throw on errors.\n */\nfunction anchorIsValid(anchor) {\n if (/[\\x00-\\x19\\s,[\\]{}]/.test(anchor)) {\n const sa = JSON.stringify(anchor);\n const msg = `Anchor must not contain whitespace or control characters: ${sa}`;\n throw new Error(msg);\n }\n return true;\n}\nfunction anchorNames(root) {\n const anchors = new Set();\n visit.visit(root, {\n Value(_key, node) {\n if (node.anchor)\n anchors.add(node.anchor);\n }\n });\n return anchors;\n}\n/** Find a new anchor name with the given `prefix` and a one-indexed suffix. */\nfunction findNewAnchor(prefix, exclude) {\n for (let i = 1; true; ++i) {\n const name = `${prefix}${i}`;\n if (!exclude.has(name))\n return name;\n }\n}\nfunction createNodeAnchors(doc, prefix) {\n const aliasObjects = [];\n const sourceObjects = new Map();\n let prevAnchors = null;\n return {\n onAnchor: (source) => {\n aliasObjects.push(source);\n prevAnchors ?? (prevAnchors = anchorNames(doc));\n const anchor = findNewAnchor(prefix, prevAnchors);\n prevAnchors.add(anchor);\n return anchor;\n },\n /**\n * With circular references, the source node is only resolved after all\n * of its child nodes are. This is why anchors are set only after all of\n * the nodes have been created.\n */\n setAnchors: () => {\n for (const source of aliasObjects) {\n const ref = sourceObjects.get(source);\n if (typeof ref === 'object' &&\n ref.anchor &&\n (identity.isScalar(ref.node) || identity.isCollection(ref.node))) {\n ref.node.anchor = ref.anchor;\n }\n else {\n const error = new Error('Failed to resolve repeated object (this should not happen)');\n error.source = source;\n throw error;\n }\n }\n },\n sourceObjects\n };\n}\n\nexports.anchorIsValid = anchorIsValid;\nexports.anchorNames = anchorNames;\nexports.createNodeAnchors = createNodeAnchors;\nexports.findNewAnchor = findNewAnchor;\n","'use strict';\n\n/**\n * Applies the JSON.parse reviver algorithm as defined in the ECMA-262 spec,\n * in section 24.5.1.1 \"Runtime Semantics: InternalizeJSONProperty\" of the\n * 2021 edition: https://tc39.es/ecma262/#sec-json.parse\n *\n * Includes extensions for handling Map and Set objects.\n */\nfunction applyReviver(reviver, obj, key, val) {\n if (val && typeof val === 'object') {\n if (Array.isArray(val)) {\n for (let i = 0, len = val.length; i < len; ++i) {\n const v0 = val[i];\n const v1 = applyReviver(reviver, val, String(i), v0);\n // eslint-disable-next-line @typescript-eslint/no-array-delete\n if (v1 === undefined)\n delete val[i];\n else if (v1 !== v0)\n val[i] = v1;\n }\n }\n else if (val instanceof Map) {\n for (const k of Array.from(val.keys())) {\n const v0 = val.get(k);\n const v1 = applyReviver(reviver, val, k, v0);\n if (v1 === undefined)\n val.delete(k);\n else if (v1 !== v0)\n val.set(k, v1);\n }\n }\n else if (val instanceof Set) {\n for (const v0 of Array.from(val)) {\n const v1 = applyReviver(reviver, val, v0, v0);\n if (v1 === undefined)\n val.delete(v0);\n else if (v1 !== v0) {\n val.delete(v0);\n val.add(v1);\n }\n }\n }\n else {\n for (const [k, v0] of Object.entries(val)) {\n const v1 = applyReviver(reviver, val, k, v0);\n if (v1 === undefined)\n delete val[k];\n else if (v1 !== v0)\n val[k] = v1;\n }\n }\n }\n return reviver.call(obj, key, val);\n}\n\nexports.applyReviver = applyReviver;\n","'use strict';\n\nvar identity = require('./identity.js');\n\n/**\n * Recursively convert any node or its contents to native JavaScript\n *\n * @param value - The input value\n * @param arg - If `value` defines a `toJSON()` method, use this\n * as its first argument\n * @param ctx - Conversion context, originally set in Document#toJS(). If\n * `{ keep: true }` is not set, output should be suitable for JSON\n * stringification.\n */\nfunction toJS(value, arg, ctx) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n if (Array.isArray(value))\n return value.map((v, i) => toJS(v, String(i), ctx));\n if (value && typeof value.toJSON === 'function') {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n if (!ctx || !identity.hasAnchor(value))\n return value.toJSON(arg, ctx);\n const data = { aliasCount: 0, count: 1, res: undefined };\n ctx.anchors.set(value, data);\n ctx.onCreate = res => {\n data.res = res;\n delete ctx.onCreate;\n };\n const res = value.toJSON(arg, ctx);\n if (ctx.onCreate)\n ctx.onCreate(res);\n return res;\n }\n if (typeof value === 'bigint' && !ctx?.keep)\n return Number(value);\n return value;\n}\n\nexports.toJS = toJS;\n","'use strict';\n\nvar applyReviver = require('../doc/applyReviver.js');\nvar identity = require('./identity.js');\nvar toJS = require('./toJS.js');\n\nclass NodeBase {\n constructor(type) {\n Object.defineProperty(this, identity.NODE_TYPE, { value: type });\n }\n /** Create a copy of this node. */\n clone() {\n const copy = Object.create(Object.getPrototypeOf(this), Object.getOwnPropertyDescriptors(this));\n if (this.range)\n copy.range = this.range.slice();\n return copy;\n }\n /** A plain JavaScript representation of this node. */\n toJS(doc, { mapAsMap, maxAliasCount, onAnchor, reviver } = {}) {\n if (!identity.isDocument(doc))\n throw new TypeError('A document argument is required');\n const ctx = {\n anchors: new Map(),\n doc,\n keep: true,\n mapAsMap: mapAsMap === true,\n mapKeyWarned: false,\n maxAliasCount: typeof maxAliasCount === 'number' ? maxAliasCount : 100\n };\n const res = toJS.toJS(this, '', ctx);\n if (typeof onAnchor === 'function')\n for (const { count, res } of ctx.anchors.values())\n onAnchor(res, count);\n return typeof reviver === 'function'\n ? applyReviver.applyReviver(reviver, { '': res }, '', res)\n : res;\n }\n}\n\nexports.NodeBase = NodeBase;\n","'use strict';\n\nvar anchors = require('../doc/anchors.js');\nvar visit = require('../visit.js');\nvar identity = require('./identity.js');\nvar Node = require('./Node.js');\nvar toJS = require('./toJS.js');\n\nclass Alias extends Node.NodeBase {\n constructor(source) {\n super(identity.ALIAS);\n this.source = source;\n Object.defineProperty(this, 'tag', {\n set() {\n throw new Error('Alias nodes cannot have tags');\n }\n });\n }\n /**\n * Resolve the value of this alias within `doc`, finding the last\n * instance of the `source` anchor before this node.\n */\n resolve(doc, ctx) {\n let nodes;\n if (ctx?.aliasResolveCache) {\n nodes = ctx.aliasResolveCache;\n }\n else {\n nodes = [];\n visit.visit(doc, {\n Node: (_key, node) => {\n if (identity.isAlias(node) || identity.hasAnchor(node))\n nodes.push(node);\n }\n });\n if (ctx)\n ctx.aliasResolveCache = nodes;\n }\n let found = undefined;\n for (const node of nodes) {\n if (node === this)\n break;\n if (node.anchor === this.source)\n found = node;\n }\n return found;\n }\n toJSON(_arg, ctx) {\n if (!ctx)\n return { source: this.source };\n const { anchors, doc, maxAliasCount } = ctx;\n const source = this.resolve(doc, ctx);\n if (!source) {\n const msg = `Unresolved alias (the anchor must be set before the alias): ${this.source}`;\n throw new ReferenceError(msg);\n }\n let data = anchors.get(source);\n if (!data) {\n // Resolve anchors for Node.prototype.toJS()\n toJS.toJS(source, null, ctx);\n data = anchors.get(source);\n }\n /* istanbul ignore if */\n if (data?.res === undefined) {\n const msg = 'This should not happen: Alias anchor was not resolved?';\n throw new ReferenceError(msg);\n }\n if (maxAliasCount >= 0) {\n data.count += 1;\n if (data.aliasCount === 0)\n data.aliasCount = getAliasCount(doc, source, anchors);\n if (data.count * data.aliasCount > maxAliasCount) {\n const msg = 'Excessive alias count indicates a resource exhaustion attack';\n throw new ReferenceError(msg);\n }\n }\n return data.res;\n }\n toString(ctx, _onComment, _onChompKeep) {\n const src = `*${this.source}`;\n if (ctx) {\n anchors.anchorIsValid(this.source);\n if (ctx.options.verifyAliasOrder && !ctx.anchors.has(this.source)) {\n const msg = `Unresolved alias (the anchor must be set before the alias): ${this.source}`;\n throw new Error(msg);\n }\n if (ctx.implicitKey)\n return `${src} `;\n }\n return src;\n }\n}\nfunction getAliasCount(doc, node, anchors) {\n if (identity.isAlias(node)) {\n const source = node.resolve(doc);\n const anchor = anchors && source && anchors.get(source);\n return anchor ? anchor.count * anchor.aliasCount : 0;\n }\n else if (identity.isCollection(node)) {\n let count = 0;\n for (const item of node.items) {\n const c = getAliasCount(doc, item, anchors);\n if (c > count)\n count = c;\n }\n return count;\n }\n else if (identity.isPair(node)) {\n const kc = getAliasCount(doc, node.key, anchors);\n const vc = getAliasCount(doc, node.value, anchors);\n return Math.max(kc, vc);\n }\n return 1;\n}\n\nexports.Alias = Alias;\n","'use strict';\n\nvar identity = require('./identity.js');\nvar Node = require('./Node.js');\nvar toJS = require('./toJS.js');\n\nconst isScalarValue = (value) => !value || (typeof value !== 'function' && typeof value !== 'object');\nclass Scalar extends Node.NodeBase {\n constructor(value) {\n super(identity.SCALAR);\n this.value = value;\n }\n toJSON(arg, ctx) {\n return ctx?.keep ? this.value : toJS.toJS(this.value, arg, ctx);\n }\n toString() {\n return String(this.value);\n }\n}\nScalar.BLOCK_FOLDED = 'BLOCK_FOLDED';\nScalar.BLOCK_LITERAL = 'BLOCK_LITERAL';\nScalar.PLAIN = 'PLAIN';\nScalar.QUOTE_DOUBLE = 'QUOTE_DOUBLE';\nScalar.QUOTE_SINGLE = 'QUOTE_SINGLE';\n\nexports.Scalar = Scalar;\nexports.isScalarValue = isScalarValue;\n","'use strict';\n\nvar Alias = require('../nodes/Alias.js');\nvar identity = require('../nodes/identity.js');\nvar Scalar = require('../nodes/Scalar.js');\n\nconst defaultTagPrefix = 'tag:yaml.org,2002:';\nfunction findTagObject(value, tagName, tags) {\n if (tagName) {\n const match = tags.filter(t => t.tag === tagName);\n const tagObj = match.find(t => !t.format) ?? match[0];\n if (!tagObj)\n throw new Error(`Tag ${tagName} not found`);\n return tagObj;\n }\n return tags.find(t => t.identify?.(value) && !t.format);\n}\nfunction createNode(value, tagName, ctx) {\n if (identity.isDocument(value))\n value = value.contents;\n if (identity.isNode(value))\n return value;\n if (identity.isPair(value)) {\n const map = ctx.schema[identity.MAP].createNode?.(ctx.schema, null, ctx);\n map.items.push(value);\n return map;\n }\n if (value instanceof String ||\n value instanceof Number ||\n value instanceof Boolean ||\n (typeof BigInt !== 'undefined' && value instanceof BigInt) // not supported everywhere\n ) {\n // https://tc39.es/ecma262/#sec-serializejsonproperty\n value = value.valueOf();\n }\n const { aliasDuplicateObjects, onAnchor, onTagObj, schema, sourceObjects } = ctx;\n // Detect duplicate references to the same object & use Alias nodes for all\n // after first. The `ref` wrapper allows for circular references to resolve.\n let ref = undefined;\n if (aliasDuplicateObjects && value && typeof value === 'object') {\n ref = sourceObjects.get(value);\n if (ref) {\n ref.anchor ?? (ref.anchor = onAnchor(value));\n return new Alias.Alias(ref.anchor);\n }\n else {\n ref = { anchor: null, node: null };\n sourceObjects.set(value, ref);\n }\n }\n if (tagName?.startsWith('!!'))\n tagName = defaultTagPrefix + tagName.slice(2);\n let tagObj = findTagObject(value, tagName, schema.tags);\n if (!tagObj) {\n if (value && typeof value.toJSON === 'function') {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n value = value.toJSON();\n }\n if (!value || typeof value !== 'object') {\n const node = new Scalar.Scalar(value);\n if (ref)\n ref.node = node;\n return node;\n }\n tagObj =\n value instanceof Map\n ? schema[identity.MAP]\n : Symbol.iterator in Object(value)\n ? schema[identity.SEQ]\n : schema[identity.MAP];\n }\n if (onTagObj) {\n onTagObj(tagObj);\n delete ctx.onTagObj;\n }\n const node = tagObj?.createNode\n ? tagObj.createNode(ctx.schema, value, ctx)\n : typeof tagObj?.nodeClass?.from === 'function'\n ? tagObj.nodeClass.from(ctx.schema, value, ctx)\n : new Scalar.Scalar(value);\n if (tagName)\n node.tag = tagName;\n else if (!tagObj.default)\n node.tag = tagObj.tag;\n if (ref)\n ref.node = node;\n return node;\n}\n\nexports.createNode = createNode;\n","'use strict';\n\nvar createNode = require('../doc/createNode.js');\nvar identity = require('./identity.js');\nvar Node = require('./Node.js');\n\nfunction collectionFromPath(schema, path, value) {\n let v = value;\n for (let i = path.length - 1; i >= 0; --i) {\n const k = path[i];\n if (typeof k === 'number' && Number.isInteger(k) && k >= 0) {\n const a = [];\n a[k] = v;\n v = a;\n }\n else {\n v = new Map([[k, v]]);\n }\n }\n return createNode.createNode(v, undefined, {\n aliasDuplicateObjects: false,\n keepUndefined: false,\n onAnchor: () => {\n throw new Error('This should not happen, please report a bug.');\n },\n schema,\n sourceObjects: new Map()\n });\n}\n// Type guard is intentionally a little wrong so as to be more useful,\n// as it does not cover untypable empty non-string iterables (e.g. []).\nconst isEmptyPath = (path) => path == null ||\n (typeof path === 'object' && !!path[Symbol.iterator]().next().done);\nclass Collection extends Node.NodeBase {\n constructor(type, schema) {\n super(type);\n Object.defineProperty(this, 'schema', {\n value: schema,\n configurable: true,\n enumerable: false,\n writable: true\n });\n }\n /**\n * Create a copy of this collection.\n *\n * @param schema - If defined, overwrites the original's schema\n */\n clone(schema) {\n const copy = Object.create(Object.getPrototypeOf(this), Object.getOwnPropertyDescriptors(this));\n if (schema)\n copy.schema = schema;\n copy.items = copy.items.map(it => identity.isNode(it) || identity.isPair(it) ? it.clone(schema) : it);\n if (this.range)\n copy.range = this.range.slice();\n return copy;\n }\n /**\n * Adds a value to the collection. For `!!map` and `!!omap` the value must\n * be a Pair instance or a `{ key, value }` object, which may not have a key\n * that already exists in the map.\n */\n addIn(path, value) {\n if (isEmptyPath(path))\n this.add(value);\n else {\n const [key, ...rest] = path;\n const node = this.get(key, true);\n if (identity.isCollection(node))\n node.addIn(rest, value);\n else if (node === undefined && this.schema)\n this.set(key, collectionFromPath(this.schema, rest, value));\n else\n throw new Error(`Expected YAML collection at ${key}. Remaining path: ${rest}`);\n }\n }\n /**\n * Removes a value from the collection.\n * @returns `true` if the item was found and removed.\n */\n deleteIn(path) {\n const [key, ...rest] = path;\n if (rest.length === 0)\n return this.delete(key);\n const node = this.get(key, true);\n if (identity.isCollection(node))\n return node.deleteIn(rest);\n else\n throw new Error(`Expected YAML collection at ${key}. Remaining path: ${rest}`);\n }\n /**\n * Returns item at `key`, or `undefined` if not found. By default unwraps\n * scalar values from their surrounding node; to disable set `keepScalar` to\n * `true` (collections are always returned intact).\n */\n getIn(path, keepScalar) {\n const [key, ...rest] = path;\n const node = this.get(key, true);\n if (rest.length === 0)\n return !keepScalar && identity.isScalar(node) ? node.value : node;\n else\n return identity.isCollection(node) ? node.getIn(rest, keepScalar) : undefined;\n }\n hasAllNullValues(allowScalar) {\n return this.items.every(node => {\n if (!identity.isPair(node))\n return false;\n const n = node.value;\n return (n == null ||\n (allowScalar &&\n identity.isScalar(n) &&\n n.value == null &&\n !n.commentBefore &&\n !n.comment &&\n !n.tag));\n });\n }\n /**\n * Checks if the collection includes a value with the key `key`.\n */\n hasIn(path) {\n const [key, ...rest] = path;\n if (rest.length === 0)\n return this.has(key);\n const node = this.get(key, true);\n return identity.isCollection(node) ? node.hasIn(rest) : false;\n }\n /**\n * Sets a value in this collection. For `!!set`, `value` needs to be a\n * boolean to add/remove the item from the set.\n */\n setIn(path, value) {\n const [key, ...rest] = path;\n if (rest.length === 0) {\n this.set(key, value);\n }\n else {\n const node = this.get(key, true);\n if (identity.isCollection(node))\n node.setIn(rest, value);\n else if (node === undefined && this.schema)\n this.set(key, collectionFromPath(this.schema, rest, value));\n else\n throw new Error(`Expected YAML collection at ${key}. Remaining path: ${rest}`);\n }\n }\n}\n\nexports.Collection = Collection;\nexports.collectionFromPath = collectionFromPath;\nexports.isEmptyPath = isEmptyPath;\n","'use strict';\n\n/**\n * Stringifies a comment.\n *\n * Empty comment lines are left empty,\n * lines consisting of a single space are replaced by `#`,\n * and all other lines are prefixed with a `#`.\n */\nconst stringifyComment = (str) => str.replace(/^(?!$)(?: $)?/gm, '#');\nfunction indentComment(comment, indent) {\n if (/^\\n+$/.test(comment))\n return comment.substring(1);\n return indent ? comment.replace(/^(?! *$)/gm, indent) : comment;\n}\nconst lineComment = (str, indent, comment) => str.endsWith('\\n')\n ? indentComment(comment, indent)\n : comment.includes('\\n')\n ? '\\n' + indentComment(comment, indent)\n : (str.endsWith(' ') ? '' : ' ') + comment;\n\nexports.indentComment = indentComment;\nexports.lineComment = lineComment;\nexports.stringifyComment = stringifyComment;\n","'use strict';\n\nconst FOLD_FLOW = 'flow';\nconst FOLD_BLOCK = 'block';\nconst FOLD_QUOTED = 'quoted';\n/**\n * Tries to keep input at up to `lineWidth` characters, splitting only on spaces\n * not followed by newlines or spaces unless `mode` is `'quoted'`. Lines are\n * terminated with `\\n` and started with `indent`.\n */\nfunction foldFlowLines(text, indent, mode = 'flow', { indentAtStart, lineWidth = 80, minContentWidth = 20, onFold, onOverflow } = {}) {\n if (!lineWidth || lineWidth < 0)\n return text;\n if (lineWidth < minContentWidth)\n minContentWidth = 0;\n const endStep = Math.max(1 + minContentWidth, 1 + lineWidth - indent.length);\n if (text.length <= endStep)\n return text;\n const folds = [];\n const escapedFolds = {};\n let end = lineWidth - indent.length;\n if (typeof indentAtStart === 'number') {\n if (indentAtStart > lineWidth - Math.max(2, minContentWidth))\n folds.push(0);\n else\n end = lineWidth - indentAtStart;\n }\n let split = undefined;\n let prev = undefined;\n let overflow = false;\n let i = -1;\n let escStart = -1;\n let escEnd = -1;\n if (mode === FOLD_BLOCK) {\n i = consumeMoreIndentedLines(text, i, indent.length);\n if (i !== -1)\n end = i + endStep;\n }\n for (let ch; (ch = text[(i += 1)]);) {\n if (mode === FOLD_QUOTED && ch === '\\\\') {\n escStart = i;\n switch (text[i + 1]) {\n case 'x':\n i += 3;\n break;\n case 'u':\n i += 5;\n break;\n case 'U':\n i += 9;\n break;\n default:\n i += 1;\n }\n escEnd = i;\n }\n if (ch === '\\n') {\n if (mode === FOLD_BLOCK)\n i = consumeMoreIndentedLines(text, i, indent.length);\n end = i + indent.length + endStep;\n split = undefined;\n }\n else {\n if (ch === ' ' &&\n prev &&\n prev !== ' ' &&\n prev !== '\\n' &&\n prev !== '\\t') {\n // space surrounded by non-space can be replaced with newline + indent\n const next = text[i + 1];\n if (next && next !== ' ' && next !== '\\n' && next !== '\\t')\n split = i;\n }\n if (i >= end) {\n if (split) {\n folds.push(split);\n end = split + endStep;\n split = undefined;\n }\n else if (mode === FOLD_QUOTED) {\n // white-space collected at end may stretch past lineWidth\n while (prev === ' ' || prev === '\\t') {\n prev = ch;\n ch = text[(i += 1)];\n overflow = true;\n }\n // Account for newline escape, but don't break preceding escape\n const j = i > escEnd + 1 ? i - 2 : escStart - 1;\n // Bail out if lineWidth & minContentWidth are shorter than an escape string\n if (escapedFolds[j])\n return text;\n folds.push(j);\n escapedFolds[j] = true;\n end = j + endStep;\n split = undefined;\n }\n else {\n overflow = true;\n }\n }\n }\n prev = ch;\n }\n if (overflow && onOverflow)\n onOverflow();\n if (folds.length === 0)\n return text;\n if (onFold)\n onFold();\n let res = text.slice(0, folds[0]);\n for (let i = 0; i < folds.length; ++i) {\n const fold = folds[i];\n const end = folds[i + 1] || text.length;\n if (fold === 0)\n res = `\\n${indent}${text.slice(0, end)}`;\n else {\n if (mode === FOLD_QUOTED && escapedFolds[fold])\n res += `${text[fold]}\\\\`;\n res += `\\n${indent}${text.slice(fold + 1, end)}`;\n }\n }\n return res;\n}\n/**\n * Presumes `i + 1` is at the start of a line\n * @returns index of last newline in more-indented block\n */\nfunction consumeMoreIndentedLines(text, i, indent) {\n let end = i;\n let start = i + 1;\n let ch = text[start];\n while (ch === ' ' || ch === '\\t') {\n if (i < start + indent) {\n ch = text[++i];\n }\n else {\n do {\n ch = text[++i];\n } while (ch && ch !== '\\n');\n end = i;\n start = i + 1;\n ch = text[start];\n }\n }\n return end;\n}\n\nexports.FOLD_BLOCK = FOLD_BLOCK;\nexports.FOLD_FLOW = FOLD_FLOW;\nexports.FOLD_QUOTED = FOLD_QUOTED;\nexports.foldFlowLines = foldFlowLines;\n","'use strict';\n\nvar Scalar = require('../nodes/Scalar.js');\nvar foldFlowLines = require('./foldFlowLines.js');\n\nconst getFoldOptions = (ctx, isBlock) => ({\n indentAtStart: isBlock ? ctx.indent.length : ctx.indentAtStart,\n lineWidth: ctx.options.lineWidth,\n minContentWidth: ctx.options.minContentWidth\n});\n// Also checks for lines starting with %, as parsing the output as YAML 1.1 will\n// presume that's starting a new document.\nconst containsDocumentMarker = (str) => /^(%|---|\\.\\.\\.)/m.test(str);\nfunction lineLengthOverLimit(str, lineWidth, indentLength) {\n if (!lineWidth || lineWidth < 0)\n return false;\n const limit = lineWidth - indentLength;\n const strLen = str.length;\n if (strLen <= limit)\n return false;\n for (let i = 0, start = 0; i < strLen; ++i) {\n if (str[i] === '\\n') {\n if (i - start > limit)\n return true;\n start = i + 1;\n if (strLen - start <= limit)\n return false;\n }\n }\n return true;\n}\nfunction doubleQuotedString(value, ctx) {\n const json = JSON.stringify(value);\n if (ctx.options.doubleQuotedAsJSON)\n return json;\n const { implicitKey } = ctx;\n const minMultiLineLength = ctx.options.doubleQuotedMinMultiLineLength;\n const indent = ctx.indent || (containsDocumentMarker(value) ? ' ' : '');\n let str = '';\n let start = 0;\n for (let i = 0, ch = json[i]; ch; ch = json[++i]) {\n if (ch === ' ' && json[i + 1] === '\\\\' && json[i + 2] === 'n') {\n // space before newline needs to be escaped to not be folded\n str += json.slice(start, i) + '\\\\ ';\n i += 1;\n start = i;\n ch = '\\\\';\n }\n if (ch === '\\\\')\n switch (json[i + 1]) {\n case 'u':\n {\n str += json.slice(start, i);\n const code = json.substr(i + 2, 4);\n switch (code) {\n case '0000':\n str += '\\\\0';\n break;\n case '0007':\n str += '\\\\a';\n break;\n case '000b':\n str += '\\\\v';\n break;\n case '001b':\n str += '\\\\e';\n break;\n case '0085':\n str += '\\\\N';\n break;\n case '00a0':\n str += '\\\\_';\n break;\n case '2028':\n str += '\\\\L';\n break;\n case '2029':\n str += '\\\\P';\n break;\n default:\n if (code.substr(0, 2) === '00')\n str += '\\\\x' + code.substr(2);\n else\n str += json.substr(i, 6);\n }\n i += 5;\n start = i + 1;\n }\n break;\n case 'n':\n if (implicitKey ||\n json[i + 2] === '\"' ||\n json.length < minMultiLineLength) {\n i += 1;\n }\n else {\n // folding will eat first newline\n str += json.slice(start, i) + '\\n\\n';\n while (json[i + 2] === '\\\\' &&\n json[i + 3] === 'n' &&\n json[i + 4] !== '\"') {\n str += '\\n';\n i += 2;\n }\n str += indent;\n // space after newline needs to be escaped to not be folded\n if (json[i + 2] === ' ')\n str += '\\\\';\n i += 1;\n start = i + 1;\n }\n break;\n default:\n i += 1;\n }\n }\n str = start ? str + json.slice(start) : json;\n return implicitKey\n ? str\n : foldFlowLines.foldFlowLines(str, indent, foldFlowLines.FOLD_QUOTED, getFoldOptions(ctx, false));\n}\nfunction singleQuotedString(value, ctx) {\n if (ctx.options.singleQuote === false ||\n (ctx.implicitKey && value.includes('\\n')) ||\n /[ \\t]\\n|\\n[ \\t]/.test(value) // single quoted string can't have leading or trailing whitespace around newline\n )\n return doubleQuotedString(value, ctx);\n const indent = ctx.indent || (containsDocumentMarker(value) ? ' ' : '');\n const res = \"'\" + value.replace(/'/g, \"''\").replace(/\\n+/g, `$&\\n${indent}`) + \"'\";\n return ctx.implicitKey\n ? res\n : foldFlowLines.foldFlowLines(res, indent, foldFlowLines.FOLD_FLOW, getFoldOptions(ctx, false));\n}\nfunction quotedString(value, ctx) {\n const { singleQuote } = ctx.options;\n let qs;\n if (singleQuote === false)\n qs = doubleQuotedString;\n else {\n const hasDouble = value.includes('\"');\n const hasSingle = value.includes(\"'\");\n if (hasDouble && !hasSingle)\n qs = singleQuotedString;\n else if (hasSingle && !hasDouble)\n qs = doubleQuotedString;\n else\n qs = singleQuote ? singleQuotedString : doubleQuotedString;\n }\n return qs(value, ctx);\n}\n// The negative lookbehind avoids a polynomial search,\n// but isn't supported yet on Safari: https://caniuse.com/js-regexp-lookbehind\nlet blockEndNewlines;\ntry {\n blockEndNewlines = new RegExp('(^|(?\\n';\n // determine chomping from whitespace at value end\n let chomp;\n let endStart;\n for (endStart = value.length; endStart > 0; --endStart) {\n const ch = value[endStart - 1];\n if (ch !== '\\n' && ch !== '\\t' && ch !== ' ')\n break;\n }\n let end = value.substring(endStart);\n const endNlPos = end.indexOf('\\n');\n if (endNlPos === -1) {\n chomp = '-'; // strip\n }\n else if (value === end || endNlPos !== end.length - 1) {\n chomp = '+'; // keep\n if (onChompKeep)\n onChompKeep();\n }\n else {\n chomp = ''; // clip\n }\n if (end) {\n value = value.slice(0, -end.length);\n if (end[end.length - 1] === '\\n')\n end = end.slice(0, -1);\n end = end.replace(blockEndNewlines, `$&${indent}`);\n }\n // determine indent indicator from whitespace at value start\n let startWithSpace = false;\n let startEnd;\n let startNlPos = -1;\n for (startEnd = 0; startEnd < value.length; ++startEnd) {\n const ch = value[startEnd];\n if (ch === ' ')\n startWithSpace = true;\n else if (ch === '\\n')\n startNlPos = startEnd;\n else\n break;\n }\n let start = value.substring(0, startNlPos < startEnd ? startNlPos + 1 : startEnd);\n if (start) {\n value = value.substring(start.length);\n start = start.replace(/\\n+/g, `$&${indent}`);\n }\n const indentSize = indent ? '2' : '1'; // root is at -1\n // Leading | or > is added later\n let header = (startWithSpace ? indentSize : '') + chomp;\n if (comment) {\n header += ' ' + commentString(comment.replace(/ ?[\\r\\n]+/g, ' '));\n if (onComment)\n onComment();\n }\n if (!literal) {\n const foldedValue = value\n .replace(/\\n+/g, '\\n$&')\n .replace(/(?:^|\\n)([\\t ].*)(?:([\\n\\t ]*)\\n(?![\\n\\t ]))?/g, '$1$2') // more-indented lines aren't folded\n // ^ more-ind. ^ empty ^ capture next empty lines only at end of indent\n .replace(/\\n+/g, `$&${indent}`);\n let literalFallback = false;\n const foldOptions = getFoldOptions(ctx, true);\n if (blockQuote !== 'folded' && type !== Scalar.Scalar.BLOCK_FOLDED) {\n foldOptions.onOverflow = () => {\n literalFallback = true;\n };\n }\n const body = foldFlowLines.foldFlowLines(`${start}${foldedValue}${end}`, indent, foldFlowLines.FOLD_BLOCK, foldOptions);\n if (!literalFallback)\n return `>${header}\\n${indent}${body}`;\n }\n value = value.replace(/\\n+/g, `$&${indent}`);\n return `|${header}\\n${indent}${start}${value}${end}`;\n}\nfunction plainString(item, ctx, onComment, onChompKeep) {\n const { type, value } = item;\n const { actualString, implicitKey, indent, indentStep, inFlow } = ctx;\n if ((implicitKey && value.includes('\\n')) ||\n (inFlow && /[[\\]{},]/.test(value))) {\n return quotedString(value, ctx);\n }\n if (/^[\\n\\t ,[\\]{}#&*!|>'\"%@`]|^[?-]$|^[?-][ \\t]|[\\n:][ \\t]|[ \\t]\\n|[\\n\\t ]#|[\\n\\t :]$/.test(value)) {\n // not allowed:\n // - '-' or '?'\n // - start with an indicator character (except [?:-]) or /[?-] /\n // - '\\n ', ': ' or ' \\n' anywhere\n // - '#' not preceded by a non-space char\n // - end with ' ' or ':'\n return implicitKey || inFlow || !value.includes('\\n')\n ? quotedString(value, ctx)\n : blockString(item, ctx, onComment, onChompKeep);\n }\n if (!implicitKey &&\n !inFlow &&\n type !== Scalar.Scalar.PLAIN &&\n value.includes('\\n')) {\n // Where allowed & type not set explicitly, prefer block style for multiline strings\n return blockString(item, ctx, onComment, onChompKeep);\n }\n if (containsDocumentMarker(value)) {\n if (indent === '') {\n ctx.forceBlockIndent = true;\n return blockString(item, ctx, onComment, onChompKeep);\n }\n else if (implicitKey && indent === indentStep) {\n return quotedString(value, ctx);\n }\n }\n const str = value.replace(/\\n+/g, `$&\\n${indent}`);\n // Verify that output will be parsed as a string, as e.g. plain numbers and\n // booleans get parsed with those types in v1.2 (e.g. '42', 'true' & '0.9e-3'),\n // and others in v1.1.\n if (actualString) {\n const test = (tag) => tag.default && tag.tag !== 'tag:yaml.org,2002:str' && tag.test?.test(str);\n const { compat, tags } = ctx.doc.schema;\n if (tags.some(test) || compat?.some(test))\n return quotedString(value, ctx);\n }\n return implicitKey\n ? str\n : foldFlowLines.foldFlowLines(str, indent, foldFlowLines.FOLD_FLOW, getFoldOptions(ctx, false));\n}\nfunction stringifyString(item, ctx, onComment, onChompKeep) {\n const { implicitKey, inFlow } = ctx;\n const ss = typeof item.value === 'string'\n ? item\n : Object.assign({}, item, { value: String(item.value) });\n let { type } = item;\n if (type !== Scalar.Scalar.QUOTE_DOUBLE) {\n // force double quotes on control characters & unpaired surrogates\n if (/[\\x00-\\x08\\x0b-\\x1f\\x7f-\\x9f\\u{D800}-\\u{DFFF}]/u.test(ss.value))\n type = Scalar.Scalar.QUOTE_DOUBLE;\n }\n const _stringify = (_type) => {\n switch (_type) {\n case Scalar.Scalar.BLOCK_FOLDED:\n case Scalar.Scalar.BLOCK_LITERAL:\n return implicitKey || inFlow\n ? quotedString(ss.value, ctx) // blocks are not valid inside flow containers\n : blockString(ss, ctx, onComment, onChompKeep);\n case Scalar.Scalar.QUOTE_DOUBLE:\n return doubleQuotedString(ss.value, ctx);\n case Scalar.Scalar.QUOTE_SINGLE:\n return singleQuotedString(ss.value, ctx);\n case Scalar.Scalar.PLAIN:\n return plainString(ss, ctx, onComment, onChompKeep);\n default:\n return null;\n }\n };\n let res = _stringify(type);\n if (res === null) {\n const { defaultKeyType, defaultStringType } = ctx.options;\n const t = (implicitKey && defaultKeyType) || defaultStringType;\n res = _stringify(t);\n if (res === null)\n throw new Error(`Unsupported default string type ${t}`);\n }\n return res;\n}\n\nexports.stringifyString = stringifyString;\n","'use strict';\n\nvar anchors = require('../doc/anchors.js');\nvar identity = require('../nodes/identity.js');\nvar stringifyComment = require('./stringifyComment.js');\nvar stringifyString = require('./stringifyString.js');\n\nfunction createStringifyContext(doc, options) {\n const opt = Object.assign({\n blockQuote: true,\n commentString: stringifyComment.stringifyComment,\n defaultKeyType: null,\n defaultStringType: 'PLAIN',\n directives: null,\n doubleQuotedAsJSON: false,\n doubleQuotedMinMultiLineLength: 40,\n falseStr: 'false',\n flowCollectionPadding: true,\n indentSeq: true,\n lineWidth: 80,\n minContentWidth: 20,\n nullStr: 'null',\n simpleKeys: false,\n singleQuote: null,\n trueStr: 'true',\n verifyAliasOrder: true\n }, doc.schema.toStringOptions, options);\n let inFlow;\n switch (opt.collectionStyle) {\n case 'block':\n inFlow = false;\n break;\n case 'flow':\n inFlow = true;\n break;\n default:\n inFlow = null;\n }\n return {\n anchors: new Set(),\n doc,\n flowCollectionPadding: opt.flowCollectionPadding ? ' ' : '',\n indent: '',\n indentStep: typeof opt.indent === 'number' ? ' '.repeat(opt.indent) : ' ',\n inFlow,\n options: opt\n };\n}\nfunction getTagObject(tags, item) {\n if (item.tag) {\n const match = tags.filter(t => t.tag === item.tag);\n if (match.length > 0)\n return match.find(t => t.format === item.format) ?? match[0];\n }\n let tagObj = undefined;\n let obj;\n if (identity.isScalar(item)) {\n obj = item.value;\n let match = tags.filter(t => t.identify?.(obj));\n if (match.length > 1) {\n const testMatch = match.filter(t => t.test);\n if (testMatch.length > 0)\n match = testMatch;\n }\n tagObj =\n match.find(t => t.format === item.format) ?? match.find(t => !t.format);\n }\n else {\n obj = item;\n tagObj = tags.find(t => t.nodeClass && obj instanceof t.nodeClass);\n }\n if (!tagObj) {\n const name = obj?.constructor?.name ?? (obj === null ? 'null' : typeof obj);\n throw new Error(`Tag not resolved for ${name} value`);\n }\n return tagObj;\n}\n// needs to be called before value stringifier to allow for circular anchor refs\nfunction stringifyProps(node, tagObj, { anchors: anchors$1, doc }) {\n if (!doc.directives)\n return '';\n const props = [];\n const anchor = (identity.isScalar(node) || identity.isCollection(node)) && node.anchor;\n if (anchor && anchors.anchorIsValid(anchor)) {\n anchors$1.add(anchor);\n props.push(`&${anchor}`);\n }\n const tag = node.tag ?? (tagObj.default ? null : tagObj.tag);\n if (tag)\n props.push(doc.directives.tagString(tag));\n return props.join(' ');\n}\nfunction stringify(item, ctx, onComment, onChompKeep) {\n if (identity.isPair(item))\n return item.toString(ctx, onComment, onChompKeep);\n if (identity.isAlias(item)) {\n if (ctx.doc.directives)\n return item.toString(ctx);\n if (ctx.resolvedAliases?.has(item)) {\n throw new TypeError(`Cannot stringify circular structure without alias nodes`);\n }\n else {\n if (ctx.resolvedAliases)\n ctx.resolvedAliases.add(item);\n else\n ctx.resolvedAliases = new Set([item]);\n item = item.resolve(ctx.doc);\n }\n }\n let tagObj = undefined;\n const node = identity.isNode(item)\n ? item\n : ctx.doc.createNode(item, { onTagObj: o => (tagObj = o) });\n tagObj ?? (tagObj = getTagObject(ctx.doc.schema.tags, node));\n const props = stringifyProps(node, tagObj, ctx);\n if (props.length > 0)\n ctx.indentAtStart = (ctx.indentAtStart ?? 0) + props.length + 1;\n const str = typeof tagObj.stringify === 'function'\n ? tagObj.stringify(node, ctx, onComment, onChompKeep)\n : identity.isScalar(node)\n ? stringifyString.stringifyString(node, ctx, onComment, onChompKeep)\n : node.toString(ctx, onComment, onChompKeep);\n if (!props)\n return str;\n return identity.isScalar(node) || str[0] === '{' || str[0] === '['\n ? `${props} ${str}`\n : `${props}\\n${ctx.indent}${str}`;\n}\n\nexports.createStringifyContext = createStringifyContext;\nexports.stringify = stringify;\n","'use strict';\n\nvar identity = require('../nodes/identity.js');\nvar Scalar = require('../nodes/Scalar.js');\nvar stringify = require('./stringify.js');\nvar stringifyComment = require('./stringifyComment.js');\n\nfunction stringifyPair({ key, value }, ctx, onComment, onChompKeep) {\n const { allNullValues, doc, indent, indentStep, options: { commentString, indentSeq, simpleKeys } } = ctx;\n let keyComment = (identity.isNode(key) && key.comment) || null;\n if (simpleKeys) {\n if (keyComment) {\n throw new Error('With simple keys, key nodes cannot have comments');\n }\n if (identity.isCollection(key) || (!identity.isNode(key) && typeof key === 'object')) {\n const msg = 'With simple keys, collection cannot be used as a key value';\n throw new Error(msg);\n }\n }\n let explicitKey = !simpleKeys &&\n (!key ||\n (keyComment && value == null && !ctx.inFlow) ||\n identity.isCollection(key) ||\n (identity.isScalar(key)\n ? key.type === Scalar.Scalar.BLOCK_FOLDED || key.type === Scalar.Scalar.BLOCK_LITERAL\n : typeof key === 'object'));\n ctx = Object.assign({}, ctx, {\n allNullValues: false,\n implicitKey: !explicitKey && (simpleKeys || !allNullValues),\n indent: indent + indentStep\n });\n let keyCommentDone = false;\n let chompKeep = false;\n let str = stringify.stringify(key, ctx, () => (keyCommentDone = true), () => (chompKeep = true));\n if (!explicitKey && !ctx.inFlow && str.length > 1024) {\n if (simpleKeys)\n throw new Error('With simple keys, single line scalar must not span more than 1024 characters');\n explicitKey = true;\n }\n if (ctx.inFlow) {\n if (allNullValues || value == null) {\n if (keyCommentDone && onComment)\n onComment();\n return str === '' ? '?' : explicitKey ? `? ${str}` : str;\n }\n }\n else if ((allNullValues && !simpleKeys) || (value == null && explicitKey)) {\n str = `? ${str}`;\n if (keyComment && !keyCommentDone) {\n str += stringifyComment.lineComment(str, ctx.indent, commentString(keyComment));\n }\n else if (chompKeep && onChompKeep)\n onChompKeep();\n return str;\n }\n if (keyCommentDone)\n keyComment = null;\n if (explicitKey) {\n if (keyComment)\n str += stringifyComment.lineComment(str, ctx.indent, commentString(keyComment));\n str = `? ${str}\\n${indent}:`;\n }\n else {\n str = `${str}:`;\n if (keyComment)\n str += stringifyComment.lineComment(str, ctx.indent, commentString(keyComment));\n }\n let vsb, vcb, valueComment;\n if (identity.isNode(value)) {\n vsb = !!value.spaceBefore;\n vcb = value.commentBefore;\n valueComment = value.comment;\n }\n else {\n vsb = false;\n vcb = null;\n valueComment = null;\n if (value && typeof value === 'object')\n value = doc.createNode(value);\n }\n ctx.implicitKey = false;\n if (!explicitKey && !keyComment && identity.isScalar(value))\n ctx.indentAtStart = str.length + 1;\n chompKeep = false;\n if (!indentSeq &&\n indentStep.length >= 2 &&\n !ctx.inFlow &&\n !explicitKey &&\n identity.isSeq(value) &&\n !value.flow &&\n !value.tag &&\n !value.anchor) {\n // If indentSeq === false, consider '- ' as part of indentation where possible\n ctx.indent = ctx.indent.substring(2);\n }\n let valueCommentDone = false;\n const valueStr = stringify.stringify(value, ctx, () => (valueCommentDone = true), () => (chompKeep = true));\n let ws = ' ';\n if (keyComment || vsb || vcb) {\n ws = vsb ? '\\n' : '';\n if (vcb) {\n const cs = commentString(vcb);\n ws += `\\n${stringifyComment.indentComment(cs, ctx.indent)}`;\n }\n if (valueStr === '' && !ctx.inFlow) {\n if (ws === '\\n' && valueComment)\n ws = '\\n\\n';\n }\n else {\n ws += `\\n${ctx.indent}`;\n }\n }\n else if (!explicitKey && identity.isCollection(value)) {\n const vs0 = valueStr[0];\n const nl0 = valueStr.indexOf('\\n');\n const hasNewline = nl0 !== -1;\n const flow = ctx.inFlow ?? value.flow ?? value.items.length === 0;\n if (hasNewline || !flow) {\n let hasPropsLine = false;\n if (hasNewline && (vs0 === '&' || vs0 === '!')) {\n let sp0 = valueStr.indexOf(' ');\n if (vs0 === '&' &&\n sp0 !== -1 &&\n sp0 < nl0 &&\n valueStr[sp0 + 1] === '!') {\n sp0 = valueStr.indexOf(' ', sp0 + 1);\n }\n if (sp0 === -1 || nl0 < sp0)\n hasPropsLine = true;\n }\n if (!hasPropsLine)\n ws = `\\n${ctx.indent}`;\n }\n }\n else if (valueStr === '' || valueStr[0] === '\\n') {\n ws = '';\n }\n str += ws + valueStr;\n if (ctx.inFlow) {\n if (valueCommentDone && onComment)\n onComment();\n }\n else if (valueComment && !valueCommentDone) {\n str += stringifyComment.lineComment(str, ctx.indent, commentString(valueComment));\n }\n else if (chompKeep && onChompKeep) {\n onChompKeep();\n }\n return str;\n}\n\nexports.stringifyPair = stringifyPair;\n","'use strict';\n\nvar node_process = require('process');\n\nfunction debug(logLevel, ...messages) {\n if (logLevel === 'debug')\n console.log(...messages);\n}\nfunction warn(logLevel, warning) {\n if (logLevel === 'debug' || logLevel === 'warn') {\n if (typeof node_process.emitWarning === 'function')\n node_process.emitWarning(warning);\n else\n console.warn(warning);\n }\n}\n\nexports.debug = debug;\nexports.warn = warn;\n","'use strict';\n\nvar identity = require('../../nodes/identity.js');\nvar Scalar = require('../../nodes/Scalar.js');\n\n// If the value associated with a merge key is a single mapping node, each of\n// its key/value pairs is inserted into the current mapping, unless the key\n// already exists in it. If the value associated with the merge key is a\n// sequence, then this sequence is expected to contain mapping nodes and each\n// of these nodes is merged in turn according to its order in the sequence.\n// Keys in mapping nodes earlier in the sequence override keys specified in\n// later mapping nodes. -- http://yaml.org/type/merge.html\nconst MERGE_KEY = '<<';\nconst merge = {\n identify: value => value === MERGE_KEY ||\n (typeof value === 'symbol' && value.description === MERGE_KEY),\n default: 'key',\n tag: 'tag:yaml.org,2002:merge',\n test: /^<<$/,\n resolve: () => Object.assign(new Scalar.Scalar(Symbol(MERGE_KEY)), {\n addToJSMap: addMergeToJSMap\n }),\n stringify: () => MERGE_KEY\n};\nconst isMergeKey = (ctx, key) => (merge.identify(key) ||\n (identity.isScalar(key) &&\n (!key.type || key.type === Scalar.Scalar.PLAIN) &&\n merge.identify(key.value))) &&\n ctx?.doc.schema.tags.some(tag => tag.tag === merge.tag && tag.default);\nfunction addMergeToJSMap(ctx, map, value) {\n value = ctx && identity.isAlias(value) ? value.resolve(ctx.doc) : value;\n if (identity.isSeq(value))\n for (const it of value.items)\n mergeValue(ctx, map, it);\n else if (Array.isArray(value))\n for (const it of value)\n mergeValue(ctx, map, it);\n else\n mergeValue(ctx, map, value);\n}\nfunction mergeValue(ctx, map, value) {\n const source = ctx && identity.isAlias(value) ? value.resolve(ctx.doc) : value;\n if (!identity.isMap(source))\n throw new Error('Merge sources must be maps or map aliases');\n const srcMap = source.toJSON(null, ctx, Map);\n for (const [key, value] of srcMap) {\n if (map instanceof Map) {\n if (!map.has(key))\n map.set(key, value);\n }\n else if (map instanceof Set) {\n map.add(key);\n }\n else if (!Object.prototype.hasOwnProperty.call(map, key)) {\n Object.defineProperty(map, key, {\n value,\n writable: true,\n enumerable: true,\n configurable: true\n });\n }\n }\n return map;\n}\n\nexports.addMergeToJSMap = addMergeToJSMap;\nexports.isMergeKey = isMergeKey;\nexports.merge = merge;\n","'use strict';\n\nvar log = require('../log.js');\nvar merge = require('../schema/yaml-1.1/merge.js');\nvar stringify = require('../stringify/stringify.js');\nvar identity = require('./identity.js');\nvar toJS = require('./toJS.js');\n\nfunction addPairToJSMap(ctx, map, { key, value }) {\n if (identity.isNode(key) && key.addToJSMap)\n key.addToJSMap(ctx, map, value);\n // TODO: Should drop this special case for bare << handling\n else if (merge.isMergeKey(ctx, key))\n merge.addMergeToJSMap(ctx, map, value);\n else {\n const jsKey = toJS.toJS(key, '', ctx);\n if (map instanceof Map) {\n map.set(jsKey, toJS.toJS(value, jsKey, ctx));\n }\n else if (map instanceof Set) {\n map.add(jsKey);\n }\n else {\n const stringKey = stringifyKey(key, jsKey, ctx);\n const jsValue = toJS.toJS(value, stringKey, ctx);\n if (stringKey in map)\n Object.defineProperty(map, stringKey, {\n value: jsValue,\n writable: true,\n enumerable: true,\n configurable: true\n });\n else\n map[stringKey] = jsValue;\n }\n }\n return map;\n}\nfunction stringifyKey(key, jsKey, ctx) {\n if (jsKey === null)\n return '';\n // eslint-disable-next-line @typescript-eslint/no-base-to-string\n if (typeof jsKey !== 'object')\n return String(jsKey);\n if (identity.isNode(key) && ctx?.doc) {\n const strCtx = stringify.createStringifyContext(ctx.doc, {});\n strCtx.anchors = new Set();\n for (const node of ctx.anchors.keys())\n strCtx.anchors.add(node.anchor);\n strCtx.inFlow = true;\n strCtx.inStringifyKey = true;\n const strKey = key.toString(strCtx);\n if (!ctx.mapKeyWarned) {\n let jsonStr = JSON.stringify(strKey);\n if (jsonStr.length > 40)\n jsonStr = jsonStr.substring(0, 36) + '...\"';\n log.warn(ctx.doc.options.logLevel, `Keys with collection values will be stringified due to JS Object restrictions: ${jsonStr}. Set mapAsMap: true to use object keys.`);\n ctx.mapKeyWarned = true;\n }\n return strKey;\n }\n return JSON.stringify(jsKey);\n}\n\nexports.addPairToJSMap = addPairToJSMap;\n","'use strict';\n\nvar createNode = require('../doc/createNode.js');\nvar stringifyPair = require('../stringify/stringifyPair.js');\nvar addPairToJSMap = require('./addPairToJSMap.js');\nvar identity = require('./identity.js');\n\nfunction createPair(key, value, ctx) {\n const k = createNode.createNode(key, undefined, ctx);\n const v = createNode.createNode(value, undefined, ctx);\n return new Pair(k, v);\n}\nclass Pair {\n constructor(key, value = null) {\n Object.defineProperty(this, identity.NODE_TYPE, { value: identity.PAIR });\n this.key = key;\n this.value = value;\n }\n clone(schema) {\n let { key, value } = this;\n if (identity.isNode(key))\n key = key.clone(schema);\n if (identity.isNode(value))\n value = value.clone(schema);\n return new Pair(key, value);\n }\n toJSON(_, ctx) {\n const pair = ctx?.mapAsMap ? new Map() : {};\n return addPairToJSMap.addPairToJSMap(ctx, pair, this);\n }\n toString(ctx, onComment, onChompKeep) {\n return ctx?.doc\n ? stringifyPair.stringifyPair(this, ctx, onComment, onChompKeep)\n : JSON.stringify(this);\n }\n}\n\nexports.Pair = Pair;\nexports.createPair = createPair;\n","'use strict';\n\nvar identity = require('../nodes/identity.js');\nvar stringify = require('./stringify.js');\nvar stringifyComment = require('./stringifyComment.js');\n\nfunction stringifyCollection(collection, ctx, options) {\n const flow = ctx.inFlow ?? collection.flow;\n const stringify = flow ? stringifyFlowCollection : stringifyBlockCollection;\n return stringify(collection, ctx, options);\n}\nfunction stringifyBlockCollection({ comment, items }, ctx, { blockItemPrefix, flowChars, itemIndent, onChompKeep, onComment }) {\n const { indent, options: { commentString } } = ctx;\n const itemCtx = Object.assign({}, ctx, { indent: itemIndent, type: null });\n let chompKeep = false; // flag for the preceding node's status\n const lines = [];\n for (let i = 0; i < items.length; ++i) {\n const item = items[i];\n let comment = null;\n if (identity.isNode(item)) {\n if (!chompKeep && item.spaceBefore)\n lines.push('');\n addCommentBefore(ctx, lines, item.commentBefore, chompKeep);\n if (item.comment)\n comment = item.comment;\n }\n else if (identity.isPair(item)) {\n const ik = identity.isNode(item.key) ? item.key : null;\n if (ik) {\n if (!chompKeep && ik.spaceBefore)\n lines.push('');\n addCommentBefore(ctx, lines, ik.commentBefore, chompKeep);\n }\n }\n chompKeep = false;\n let str = stringify.stringify(item, itemCtx, () => (comment = null), () => (chompKeep = true));\n if (comment)\n str += stringifyComment.lineComment(str, itemIndent, commentString(comment));\n if (chompKeep && comment)\n chompKeep = false;\n lines.push(blockItemPrefix + str);\n }\n let str;\n if (lines.length === 0) {\n str = flowChars.start + flowChars.end;\n }\n else {\n str = lines[0];\n for (let i = 1; i < lines.length; ++i) {\n const line = lines[i];\n str += line ? `\\n${indent}${line}` : '\\n';\n }\n }\n if (comment) {\n str += '\\n' + stringifyComment.indentComment(commentString(comment), indent);\n if (onComment)\n onComment();\n }\n else if (chompKeep && onChompKeep)\n onChompKeep();\n return str;\n}\nfunction stringifyFlowCollection({ items }, ctx, { flowChars, itemIndent }) {\n const { indent, indentStep, flowCollectionPadding: fcPadding, options: { commentString } } = ctx;\n itemIndent += indentStep;\n const itemCtx = Object.assign({}, ctx, {\n indent: itemIndent,\n inFlow: true,\n type: null\n });\n let reqNewline = false;\n let linesAtValue = 0;\n const lines = [];\n for (let i = 0; i < items.length; ++i) {\n const item = items[i];\n let comment = null;\n if (identity.isNode(item)) {\n if (item.spaceBefore)\n lines.push('');\n addCommentBefore(ctx, lines, item.commentBefore, false);\n if (item.comment)\n comment = item.comment;\n }\n else if (identity.isPair(item)) {\n const ik = identity.isNode(item.key) ? item.key : null;\n if (ik) {\n if (ik.spaceBefore)\n lines.push('');\n addCommentBefore(ctx, lines, ik.commentBefore, false);\n if (ik.comment)\n reqNewline = true;\n }\n const iv = identity.isNode(item.value) ? item.value : null;\n if (iv) {\n if (iv.comment)\n comment = iv.comment;\n if (iv.commentBefore)\n reqNewline = true;\n }\n else if (item.value == null && ik?.comment) {\n comment = ik.comment;\n }\n }\n if (comment)\n reqNewline = true;\n let str = stringify.stringify(item, itemCtx, () => (comment = null));\n if (i < items.length - 1)\n str += ',';\n if (comment)\n str += stringifyComment.lineComment(str, itemIndent, commentString(comment));\n if (!reqNewline && (lines.length > linesAtValue || str.includes('\\n')))\n reqNewline = true;\n lines.push(str);\n linesAtValue = lines.length;\n }\n const { start, end } = flowChars;\n if (lines.length === 0) {\n return start + end;\n }\n else {\n if (!reqNewline) {\n const len = lines.reduce((sum, line) => sum + line.length + 2, 2);\n reqNewline = ctx.options.lineWidth > 0 && len > ctx.options.lineWidth;\n }\n if (reqNewline) {\n let str = start;\n for (const line of lines)\n str += line ? `\\n${indentStep}${indent}${line}` : '\\n';\n return `${str}\\n${indent}${end}`;\n }\n else {\n return `${start}${fcPadding}${lines.join(' ')}${fcPadding}${end}`;\n }\n }\n}\nfunction addCommentBefore({ indent, options: { commentString } }, lines, comment, chompKeep) {\n if (comment && chompKeep)\n comment = comment.replace(/^\\n+/, '');\n if (comment) {\n const ic = stringifyComment.indentComment(commentString(comment), indent);\n lines.push(ic.trimStart()); // Avoid double indent on first line\n }\n}\n\nexports.stringifyCollection = stringifyCollection;\n","'use strict';\n\nvar stringifyCollection = require('../stringify/stringifyCollection.js');\nvar addPairToJSMap = require('./addPairToJSMap.js');\nvar Collection = require('./Collection.js');\nvar identity = require('./identity.js');\nvar Pair = require('./Pair.js');\nvar Scalar = require('./Scalar.js');\n\nfunction findPair(items, key) {\n const k = identity.isScalar(key) ? key.value : key;\n for (const it of items) {\n if (identity.isPair(it)) {\n if (it.key === key || it.key === k)\n return it;\n if (identity.isScalar(it.key) && it.key.value === k)\n return it;\n }\n }\n return undefined;\n}\nclass YAMLMap extends Collection.Collection {\n static get tagName() {\n return 'tag:yaml.org,2002:map';\n }\n constructor(schema) {\n super(identity.MAP, schema);\n this.items = [];\n }\n /**\n * A generic collection parsing method that can be extended\n * to other node classes that inherit from YAMLMap\n */\n static from(schema, obj, ctx) {\n const { keepUndefined, replacer } = ctx;\n const map = new this(schema);\n const add = (key, value) => {\n if (typeof replacer === 'function')\n value = replacer.call(obj, key, value);\n else if (Array.isArray(replacer) && !replacer.includes(key))\n return;\n if (value !== undefined || keepUndefined)\n map.items.push(Pair.createPair(key, value, ctx));\n };\n if (obj instanceof Map) {\n for (const [key, value] of obj)\n add(key, value);\n }\n else if (obj && typeof obj === 'object') {\n for (const key of Object.keys(obj))\n add(key, obj[key]);\n }\n if (typeof schema.sortMapEntries === 'function') {\n map.items.sort(schema.sortMapEntries);\n }\n return map;\n }\n /**\n * Adds a value to the collection.\n *\n * @param overwrite - If not set `true`, using a key that is already in the\n * collection will throw. Otherwise, overwrites the previous value.\n */\n add(pair, overwrite) {\n let _pair;\n if (identity.isPair(pair))\n _pair = pair;\n else if (!pair || typeof pair !== 'object' || !('key' in pair)) {\n // In TypeScript, this never happens.\n _pair = new Pair.Pair(pair, pair?.value);\n }\n else\n _pair = new Pair.Pair(pair.key, pair.value);\n const prev = findPair(this.items, _pair.key);\n const sortEntries = this.schema?.sortMapEntries;\n if (prev) {\n if (!overwrite)\n throw new Error(`Key ${_pair.key} already set`);\n // For scalars, keep the old node & its comments and anchors\n if (identity.isScalar(prev.value) && Scalar.isScalarValue(_pair.value))\n prev.value.value = _pair.value;\n else\n prev.value = _pair.value;\n }\n else if (sortEntries) {\n const i = this.items.findIndex(item => sortEntries(_pair, item) < 0);\n if (i === -1)\n this.items.push(_pair);\n else\n this.items.splice(i, 0, _pair);\n }\n else {\n this.items.push(_pair);\n }\n }\n delete(key) {\n const it = findPair(this.items, key);\n if (!it)\n return false;\n const del = this.items.splice(this.items.indexOf(it), 1);\n return del.length > 0;\n }\n get(key, keepScalar) {\n const it = findPair(this.items, key);\n const node = it?.value;\n return (!keepScalar && identity.isScalar(node) ? node.value : node) ?? undefined;\n }\n has(key) {\n return !!findPair(this.items, key);\n }\n set(key, value) {\n this.add(new Pair.Pair(key, value), true);\n }\n /**\n * @param ctx - Conversion context, originally set in Document#toJS()\n * @param {Class} Type - If set, forces the returned collection type\n * @returns Instance of Type, Map, or Object\n */\n toJSON(_, ctx, Type) {\n const map = Type ? new Type() : ctx?.mapAsMap ? new Map() : {};\n if (ctx?.onCreate)\n ctx.onCreate(map);\n for (const item of this.items)\n addPairToJSMap.addPairToJSMap(ctx, map, item);\n return map;\n }\n toString(ctx, onComment, onChompKeep) {\n if (!ctx)\n return JSON.stringify(this);\n for (const item of this.items) {\n if (!identity.isPair(item))\n throw new Error(`Map items must all be pairs; found ${JSON.stringify(item)} instead`);\n }\n if (!ctx.allNullValues && this.hasAllNullValues(false))\n ctx = Object.assign({}, ctx, { allNullValues: true });\n return stringifyCollection.stringifyCollection(this, ctx, {\n blockItemPrefix: '',\n flowChars: { start: '{', end: '}' },\n itemIndent: ctx.indent || '',\n onChompKeep,\n onComment\n });\n }\n}\n\nexports.YAMLMap = YAMLMap;\nexports.findPair = findPair;\n","'use strict';\n\nvar identity = require('../../nodes/identity.js');\nvar YAMLMap = require('../../nodes/YAMLMap.js');\n\nconst map = {\n collection: 'map',\n default: true,\n nodeClass: YAMLMap.YAMLMap,\n tag: 'tag:yaml.org,2002:map',\n resolve(map, onError) {\n if (!identity.isMap(map))\n onError('Expected a mapping for this tag');\n return map;\n },\n createNode: (schema, obj, ctx) => YAMLMap.YAMLMap.from(schema, obj, ctx)\n};\n\nexports.map = map;\n","'use strict';\n\nvar createNode = require('../doc/createNode.js');\nvar stringifyCollection = require('../stringify/stringifyCollection.js');\nvar Collection = require('./Collection.js');\nvar identity = require('./identity.js');\nvar Scalar = require('./Scalar.js');\nvar toJS = require('./toJS.js');\n\nclass YAMLSeq extends Collection.Collection {\n static get tagName() {\n return 'tag:yaml.org,2002:seq';\n }\n constructor(schema) {\n super(identity.SEQ, schema);\n this.items = [];\n }\n add(value) {\n this.items.push(value);\n }\n /**\n * Removes a value from the collection.\n *\n * `key` must contain a representation of an integer for this to succeed.\n * It may be wrapped in a `Scalar`.\n *\n * @returns `true` if the item was found and removed.\n */\n delete(key) {\n const idx = asItemIndex(key);\n if (typeof idx !== 'number')\n return false;\n const del = this.items.splice(idx, 1);\n return del.length > 0;\n }\n get(key, keepScalar) {\n const idx = asItemIndex(key);\n if (typeof idx !== 'number')\n return undefined;\n const it = this.items[idx];\n return !keepScalar && identity.isScalar(it) ? it.value : it;\n }\n /**\n * Checks if the collection includes a value with the key `key`.\n *\n * `key` must contain a representation of an integer for this to succeed.\n * It may be wrapped in a `Scalar`.\n */\n has(key) {\n const idx = asItemIndex(key);\n return typeof idx === 'number' && idx < this.items.length;\n }\n /**\n * Sets a value in this collection. For `!!set`, `value` needs to be a\n * boolean to add/remove the item from the set.\n *\n * If `key` does not contain a representation of an integer, this will throw.\n * It may be wrapped in a `Scalar`.\n */\n set(key, value) {\n const idx = asItemIndex(key);\n if (typeof idx !== 'number')\n throw new Error(`Expected a valid index, not ${key}.`);\n const prev = this.items[idx];\n if (identity.isScalar(prev) && Scalar.isScalarValue(value))\n prev.value = value;\n else\n this.items[idx] = value;\n }\n toJSON(_, ctx) {\n const seq = [];\n if (ctx?.onCreate)\n ctx.onCreate(seq);\n let i = 0;\n for (const item of this.items)\n seq.push(toJS.toJS(item, String(i++), ctx));\n return seq;\n }\n toString(ctx, onComment, onChompKeep) {\n if (!ctx)\n return JSON.stringify(this);\n return stringifyCollection.stringifyCollection(this, ctx, {\n blockItemPrefix: '- ',\n flowChars: { start: '[', end: ']' },\n itemIndent: (ctx.indent || '') + ' ',\n onChompKeep,\n onComment\n });\n }\n static from(schema, obj, ctx) {\n const { replacer } = ctx;\n const seq = new this(schema);\n if (obj && Symbol.iterator in Object(obj)) {\n let i = 0;\n for (let it of obj) {\n if (typeof replacer === 'function') {\n const key = obj instanceof Set ? it : String(i++);\n it = replacer.call(obj, key, it);\n }\n seq.items.push(createNode.createNode(it, undefined, ctx));\n }\n }\n return seq;\n }\n}\nfunction asItemIndex(key) {\n let idx = identity.isScalar(key) ? key.value : key;\n if (idx && typeof idx === 'string')\n idx = Number(idx);\n return typeof idx === 'number' && Number.isInteger(idx) && idx >= 0\n ? idx\n : null;\n}\n\nexports.YAMLSeq = YAMLSeq;\n","'use strict';\n\nvar identity = require('../../nodes/identity.js');\nvar YAMLSeq = require('../../nodes/YAMLSeq.js');\n\nconst seq = {\n collection: 'seq',\n default: true,\n nodeClass: YAMLSeq.YAMLSeq,\n tag: 'tag:yaml.org,2002:seq',\n resolve(seq, onError) {\n if (!identity.isSeq(seq))\n onError('Expected a sequence for this tag');\n return seq;\n },\n createNode: (schema, obj, ctx) => YAMLSeq.YAMLSeq.from(schema, obj, ctx)\n};\n\nexports.seq = seq;\n","'use strict';\n\nvar stringifyString = require('../../stringify/stringifyString.js');\n\nconst string = {\n identify: value => typeof value === 'string',\n default: true,\n tag: 'tag:yaml.org,2002:str',\n resolve: str => str,\n stringify(item, ctx, onComment, onChompKeep) {\n ctx = Object.assign({ actualString: true }, ctx);\n return stringifyString.stringifyString(item, ctx, onComment, onChompKeep);\n }\n};\n\nexports.string = string;\n","'use strict';\n\nvar Scalar = require('../../nodes/Scalar.js');\n\nconst nullTag = {\n identify: value => value == null,\n createNode: () => new Scalar.Scalar(null),\n default: true,\n tag: 'tag:yaml.org,2002:null',\n test: /^(?:~|[Nn]ull|NULL)?$/,\n resolve: () => new Scalar.Scalar(null),\n stringify: ({ source }, ctx) => typeof source === 'string' && nullTag.test.test(source)\n ? source\n : ctx.options.nullStr\n};\n\nexports.nullTag = nullTag;\n","'use strict';\n\nvar Scalar = require('../../nodes/Scalar.js');\n\nconst boolTag = {\n identify: value => typeof value === 'boolean',\n default: true,\n tag: 'tag:yaml.org,2002:bool',\n test: /^(?:[Tt]rue|TRUE|[Ff]alse|FALSE)$/,\n resolve: str => new Scalar.Scalar(str[0] === 't' || str[0] === 'T'),\n stringify({ source, value }, ctx) {\n if (source && boolTag.test.test(source)) {\n const sv = source[0] === 't' || source[0] === 'T';\n if (value === sv)\n return source;\n }\n return value ? ctx.options.trueStr : ctx.options.falseStr;\n }\n};\n\nexports.boolTag = boolTag;\n","'use strict';\n\nfunction stringifyNumber({ format, minFractionDigits, tag, value }) {\n if (typeof value === 'bigint')\n return String(value);\n const num = typeof value === 'number' ? value : Number(value);\n if (!isFinite(num))\n return isNaN(num) ? '.nan' : num < 0 ? '-.inf' : '.inf';\n let n = Object.is(value, -0) ? '-0' : JSON.stringify(value);\n if (!format &&\n minFractionDigits &&\n (!tag || tag === 'tag:yaml.org,2002:float') &&\n /^\\d/.test(n)) {\n let i = n.indexOf('.');\n if (i < 0) {\n i = n.length;\n n += '.';\n }\n let d = minFractionDigits - (n.length - i - 1);\n while (d-- > 0)\n n += '0';\n }\n return n;\n}\n\nexports.stringifyNumber = stringifyNumber;\n","'use strict';\n\nvar Scalar = require('../../nodes/Scalar.js');\nvar stringifyNumber = require('../../stringify/stringifyNumber.js');\n\nconst floatNaN = {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n test: /^(?:[-+]?\\.(?:inf|Inf|INF)|\\.nan|\\.NaN|\\.NAN)$/,\n resolve: str => str.slice(-3).toLowerCase() === 'nan'\n ? NaN\n : str[0] === '-'\n ? Number.NEGATIVE_INFINITY\n : Number.POSITIVE_INFINITY,\n stringify: stringifyNumber.stringifyNumber\n};\nconst floatExp = {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n format: 'EXP',\n test: /^[-+]?(?:\\.[0-9]+|[0-9]+(?:\\.[0-9]*)?)[eE][-+]?[0-9]+$/,\n resolve: str => parseFloat(str),\n stringify(node) {\n const num = Number(node.value);\n return isFinite(num) ? num.toExponential() : stringifyNumber.stringifyNumber(node);\n }\n};\nconst float = {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n test: /^[-+]?(?:\\.[0-9]+|[0-9]+\\.[0-9]*)$/,\n resolve(str) {\n const node = new Scalar.Scalar(parseFloat(str));\n const dot = str.indexOf('.');\n if (dot !== -1 && str[str.length - 1] === '0')\n node.minFractionDigits = str.length - dot - 1;\n return node;\n },\n stringify: stringifyNumber.stringifyNumber\n};\n\nexports.float = float;\nexports.floatExp = floatExp;\nexports.floatNaN = floatNaN;\n","'use strict';\n\nvar stringifyNumber = require('../../stringify/stringifyNumber.js');\n\nconst intIdentify = (value) => typeof value === 'bigint' || Number.isInteger(value);\nconst intResolve = (str, offset, radix, { intAsBigInt }) => (intAsBigInt ? BigInt(str) : parseInt(str.substring(offset), radix));\nfunction intStringify(node, radix, prefix) {\n const { value } = node;\n if (intIdentify(value) && value >= 0)\n return prefix + value.toString(radix);\n return stringifyNumber.stringifyNumber(node);\n}\nconst intOct = {\n identify: value => intIdentify(value) && value >= 0,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n format: 'OCT',\n test: /^0o[0-7]+$/,\n resolve: (str, _onError, opt) => intResolve(str, 2, 8, opt),\n stringify: node => intStringify(node, 8, '0o')\n};\nconst int = {\n identify: intIdentify,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n test: /^[-+]?[0-9]+$/,\n resolve: (str, _onError, opt) => intResolve(str, 0, 10, opt),\n stringify: stringifyNumber.stringifyNumber\n};\nconst intHex = {\n identify: value => intIdentify(value) && value >= 0,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n format: 'HEX',\n test: /^0x[0-9a-fA-F]+$/,\n resolve: (str, _onError, opt) => intResolve(str, 2, 16, opt),\n stringify: node => intStringify(node, 16, '0x')\n};\n\nexports.int = int;\nexports.intHex = intHex;\nexports.intOct = intOct;\n","'use strict';\n\nvar map = require('../common/map.js');\nvar _null = require('../common/null.js');\nvar seq = require('../common/seq.js');\nvar string = require('../common/string.js');\nvar bool = require('./bool.js');\nvar float = require('./float.js');\nvar int = require('./int.js');\n\nconst schema = [\n map.map,\n seq.seq,\n string.string,\n _null.nullTag,\n bool.boolTag,\n int.intOct,\n int.int,\n int.intHex,\n float.floatNaN,\n float.floatExp,\n float.float\n];\n\nexports.schema = schema;\n","'use strict';\n\nvar Scalar = require('../../nodes/Scalar.js');\nvar map = require('../common/map.js');\nvar seq = require('../common/seq.js');\n\nfunction intIdentify(value) {\n return typeof value === 'bigint' || Number.isInteger(value);\n}\nconst stringifyJSON = ({ value }) => JSON.stringify(value);\nconst jsonScalars = [\n {\n identify: value => typeof value === 'string',\n default: true,\n tag: 'tag:yaml.org,2002:str',\n resolve: str => str,\n stringify: stringifyJSON\n },\n {\n identify: value => value == null,\n createNode: () => new Scalar.Scalar(null),\n default: true,\n tag: 'tag:yaml.org,2002:null',\n test: /^null$/,\n resolve: () => null,\n stringify: stringifyJSON\n },\n {\n identify: value => typeof value === 'boolean',\n default: true,\n tag: 'tag:yaml.org,2002:bool',\n test: /^true$|^false$/,\n resolve: str => str === 'true',\n stringify: stringifyJSON\n },\n {\n identify: intIdentify,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n test: /^-?(?:0|[1-9][0-9]*)$/,\n resolve: (str, _onError, { intAsBigInt }) => intAsBigInt ? BigInt(str) : parseInt(str, 10),\n stringify: ({ value }) => intIdentify(value) ? value.toString() : JSON.stringify(value)\n },\n {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n test: /^-?(?:0|[1-9][0-9]*)(?:\\.[0-9]*)?(?:[eE][-+]?[0-9]+)?$/,\n resolve: str => parseFloat(str),\n stringify: stringifyJSON\n }\n];\nconst jsonError = {\n default: true,\n tag: '',\n test: /^/,\n resolve(str, onError) {\n onError(`Unresolved plain scalar ${JSON.stringify(str)}`);\n return str;\n }\n};\nconst schema = [map.map, seq.seq].concat(jsonScalars, jsonError);\n\nexports.schema = schema;\n","'use strict';\n\nvar node_buffer = require('buffer');\nvar Scalar = require('../../nodes/Scalar.js');\nvar stringifyString = require('../../stringify/stringifyString.js');\n\nconst binary = {\n identify: value => value instanceof Uint8Array, // Buffer inherits from Uint8Array\n default: false,\n tag: 'tag:yaml.org,2002:binary',\n /**\n * Returns a Buffer in node and an Uint8Array in browsers\n *\n * To use the resulting buffer as an image, you'll want to do something like:\n *\n * const blob = new Blob([buffer], { type: 'image/jpeg' })\n * document.querySelector('#photo').src = URL.createObjectURL(blob)\n */\n resolve(src, onError) {\n if (typeof node_buffer.Buffer === 'function') {\n return node_buffer.Buffer.from(src, 'base64');\n }\n else if (typeof atob === 'function') {\n // On IE 11, atob() can't handle newlines\n const str = atob(src.replace(/[\\n\\r]/g, ''));\n const buffer = new Uint8Array(str.length);\n for (let i = 0; i < str.length; ++i)\n buffer[i] = str.charCodeAt(i);\n return buffer;\n }\n else {\n onError('This environment does not support reading binary tags; either Buffer or atob is required');\n return src;\n }\n },\n stringify({ comment, type, value }, ctx, onComment, onChompKeep) {\n if (!value)\n return '';\n const buf = value; // checked earlier by binary.identify()\n let str;\n if (typeof node_buffer.Buffer === 'function') {\n str =\n buf instanceof node_buffer.Buffer\n ? buf.toString('base64')\n : node_buffer.Buffer.from(buf.buffer).toString('base64');\n }\n else if (typeof btoa === 'function') {\n let s = '';\n for (let i = 0; i < buf.length; ++i)\n s += String.fromCharCode(buf[i]);\n str = btoa(s);\n }\n else {\n throw new Error('This environment does not support writing binary tags; either Buffer or btoa is required');\n }\n type ?? (type = Scalar.Scalar.BLOCK_LITERAL);\n if (type !== Scalar.Scalar.QUOTE_DOUBLE) {\n const lineWidth = Math.max(ctx.options.lineWidth - ctx.indent.length, ctx.options.minContentWidth);\n const n = Math.ceil(str.length / lineWidth);\n const lines = new Array(n);\n for (let i = 0, o = 0; i < n; ++i, o += lineWidth) {\n lines[i] = str.substr(o, lineWidth);\n }\n str = lines.join(type === Scalar.Scalar.BLOCK_LITERAL ? '\\n' : ' ');\n }\n return stringifyString.stringifyString({ comment, type, value: str }, ctx, onComment, onChompKeep);\n }\n};\n\nexports.binary = binary;\n","'use strict';\n\nvar identity = require('../../nodes/identity.js');\nvar Pair = require('../../nodes/Pair.js');\nvar Scalar = require('../../nodes/Scalar.js');\nvar YAMLSeq = require('../../nodes/YAMLSeq.js');\n\nfunction resolvePairs(seq, onError) {\n if (identity.isSeq(seq)) {\n for (let i = 0; i < seq.items.length; ++i) {\n let item = seq.items[i];\n if (identity.isPair(item))\n continue;\n else if (identity.isMap(item)) {\n if (item.items.length > 1)\n onError('Each pair must have its own sequence indicator');\n const pair = item.items[0] || new Pair.Pair(new Scalar.Scalar(null));\n if (item.commentBefore)\n pair.key.commentBefore = pair.key.commentBefore\n ? `${item.commentBefore}\\n${pair.key.commentBefore}`\n : item.commentBefore;\n if (item.comment) {\n const cn = pair.value ?? pair.key;\n cn.comment = cn.comment\n ? `${item.comment}\\n${cn.comment}`\n : item.comment;\n }\n item = pair;\n }\n seq.items[i] = identity.isPair(item) ? item : new Pair.Pair(item);\n }\n }\n else\n onError('Expected a sequence for this tag');\n return seq;\n}\nfunction createPairs(schema, iterable, ctx) {\n const { replacer } = ctx;\n const pairs = new YAMLSeq.YAMLSeq(schema);\n pairs.tag = 'tag:yaml.org,2002:pairs';\n let i = 0;\n if (iterable && Symbol.iterator in Object(iterable))\n for (let it of iterable) {\n if (typeof replacer === 'function')\n it = replacer.call(iterable, String(i++), it);\n let key, value;\n if (Array.isArray(it)) {\n if (it.length === 2) {\n key = it[0];\n value = it[1];\n }\n else\n throw new TypeError(`Expected [key, value] tuple: ${it}`);\n }\n else if (it && it instanceof Object) {\n const keys = Object.keys(it);\n if (keys.length === 1) {\n key = keys[0];\n value = it[key];\n }\n else {\n throw new TypeError(`Expected tuple with one key, not ${keys.length} keys`);\n }\n }\n else {\n key = it;\n }\n pairs.items.push(Pair.createPair(key, value, ctx));\n }\n return pairs;\n}\nconst pairs = {\n collection: 'seq',\n default: false,\n tag: 'tag:yaml.org,2002:pairs',\n resolve: resolvePairs,\n createNode: createPairs\n};\n\nexports.createPairs = createPairs;\nexports.pairs = pairs;\nexports.resolvePairs = resolvePairs;\n","'use strict';\n\nvar identity = require('../../nodes/identity.js');\nvar toJS = require('../../nodes/toJS.js');\nvar YAMLMap = require('../../nodes/YAMLMap.js');\nvar YAMLSeq = require('../../nodes/YAMLSeq.js');\nvar pairs = require('./pairs.js');\n\nclass YAMLOMap extends YAMLSeq.YAMLSeq {\n constructor() {\n super();\n this.add = YAMLMap.YAMLMap.prototype.add.bind(this);\n this.delete = YAMLMap.YAMLMap.prototype.delete.bind(this);\n this.get = YAMLMap.YAMLMap.prototype.get.bind(this);\n this.has = YAMLMap.YAMLMap.prototype.has.bind(this);\n this.set = YAMLMap.YAMLMap.prototype.set.bind(this);\n this.tag = YAMLOMap.tag;\n }\n /**\n * If `ctx` is given, the return type is actually `Map`,\n * but TypeScript won't allow widening the signature of a child method.\n */\n toJSON(_, ctx) {\n if (!ctx)\n return super.toJSON(_);\n const map = new Map();\n if (ctx?.onCreate)\n ctx.onCreate(map);\n for (const pair of this.items) {\n let key, value;\n if (identity.isPair(pair)) {\n key = toJS.toJS(pair.key, '', ctx);\n value = toJS.toJS(pair.value, key, ctx);\n }\n else {\n key = toJS.toJS(pair, '', ctx);\n }\n if (map.has(key))\n throw new Error('Ordered maps must not include duplicate keys');\n map.set(key, value);\n }\n return map;\n }\n static from(schema, iterable, ctx) {\n const pairs$1 = pairs.createPairs(schema, iterable, ctx);\n const omap = new this();\n omap.items = pairs$1.items;\n return omap;\n }\n}\nYAMLOMap.tag = 'tag:yaml.org,2002:omap';\nconst omap = {\n collection: 'seq',\n identify: value => value instanceof Map,\n nodeClass: YAMLOMap,\n default: false,\n tag: 'tag:yaml.org,2002:omap',\n resolve(seq, onError) {\n const pairs$1 = pairs.resolvePairs(seq, onError);\n const seenKeys = [];\n for (const { key } of pairs$1.items) {\n if (identity.isScalar(key)) {\n if (seenKeys.includes(key.value)) {\n onError(`Ordered maps must not include duplicate keys: ${key.value}`);\n }\n else {\n seenKeys.push(key.value);\n }\n }\n }\n return Object.assign(new YAMLOMap(), pairs$1);\n },\n createNode: (schema, iterable, ctx) => YAMLOMap.from(schema, iterable, ctx)\n};\n\nexports.YAMLOMap = YAMLOMap;\nexports.omap = omap;\n","'use strict';\n\nvar Scalar = require('../../nodes/Scalar.js');\n\nfunction boolStringify({ value, source }, ctx) {\n const boolObj = value ? trueTag : falseTag;\n if (source && boolObj.test.test(source))\n return source;\n return value ? ctx.options.trueStr : ctx.options.falseStr;\n}\nconst trueTag = {\n identify: value => value === true,\n default: true,\n tag: 'tag:yaml.org,2002:bool',\n test: /^(?:Y|y|[Yy]es|YES|[Tt]rue|TRUE|[Oo]n|ON)$/,\n resolve: () => new Scalar.Scalar(true),\n stringify: boolStringify\n};\nconst falseTag = {\n identify: value => value === false,\n default: true,\n tag: 'tag:yaml.org,2002:bool',\n test: /^(?:N|n|[Nn]o|NO|[Ff]alse|FALSE|[Oo]ff|OFF)$/,\n resolve: () => new Scalar.Scalar(false),\n stringify: boolStringify\n};\n\nexports.falseTag = falseTag;\nexports.trueTag = trueTag;\n","'use strict';\n\nvar Scalar = require('../../nodes/Scalar.js');\nvar stringifyNumber = require('../../stringify/stringifyNumber.js');\n\nconst floatNaN = {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n test: /^(?:[-+]?\\.(?:inf|Inf|INF)|\\.nan|\\.NaN|\\.NAN)$/,\n resolve: (str) => str.slice(-3).toLowerCase() === 'nan'\n ? NaN\n : str[0] === '-'\n ? Number.NEGATIVE_INFINITY\n : Number.POSITIVE_INFINITY,\n stringify: stringifyNumber.stringifyNumber\n};\nconst floatExp = {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n format: 'EXP',\n test: /^[-+]?(?:[0-9][0-9_]*)?(?:\\.[0-9_]*)?[eE][-+]?[0-9]+$/,\n resolve: (str) => parseFloat(str.replace(/_/g, '')),\n stringify(node) {\n const num = Number(node.value);\n return isFinite(num) ? num.toExponential() : stringifyNumber.stringifyNumber(node);\n }\n};\nconst float = {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n test: /^[-+]?(?:[0-9][0-9_]*)?\\.[0-9_]*$/,\n resolve(str) {\n const node = new Scalar.Scalar(parseFloat(str.replace(/_/g, '')));\n const dot = str.indexOf('.');\n if (dot !== -1) {\n const f = str.substring(dot + 1).replace(/_/g, '');\n if (f[f.length - 1] === '0')\n node.minFractionDigits = f.length;\n }\n return node;\n },\n stringify: stringifyNumber.stringifyNumber\n};\n\nexports.float = float;\nexports.floatExp = floatExp;\nexports.floatNaN = floatNaN;\n","'use strict';\n\nvar stringifyNumber = require('../../stringify/stringifyNumber.js');\n\nconst intIdentify = (value) => typeof value === 'bigint' || Number.isInteger(value);\nfunction intResolve(str, offset, radix, { intAsBigInt }) {\n const sign = str[0];\n if (sign === '-' || sign === '+')\n offset += 1;\n str = str.substring(offset).replace(/_/g, '');\n if (intAsBigInt) {\n switch (radix) {\n case 2:\n str = `0b${str}`;\n break;\n case 8:\n str = `0o${str}`;\n break;\n case 16:\n str = `0x${str}`;\n break;\n }\n const n = BigInt(str);\n return sign === '-' ? BigInt(-1) * n : n;\n }\n const n = parseInt(str, radix);\n return sign === '-' ? -1 * n : n;\n}\nfunction intStringify(node, radix, prefix) {\n const { value } = node;\n if (intIdentify(value)) {\n const str = value.toString(radix);\n return value < 0 ? '-' + prefix + str.substr(1) : prefix + str;\n }\n return stringifyNumber.stringifyNumber(node);\n}\nconst intBin = {\n identify: intIdentify,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n format: 'BIN',\n test: /^[-+]?0b[0-1_]+$/,\n resolve: (str, _onError, opt) => intResolve(str, 2, 2, opt),\n stringify: node => intStringify(node, 2, '0b')\n};\nconst intOct = {\n identify: intIdentify,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n format: 'OCT',\n test: /^[-+]?0[0-7_]+$/,\n resolve: (str, _onError, opt) => intResolve(str, 1, 8, opt),\n stringify: node => intStringify(node, 8, '0')\n};\nconst int = {\n identify: intIdentify,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n test: /^[-+]?[0-9][0-9_]*$/,\n resolve: (str, _onError, opt) => intResolve(str, 0, 10, opt),\n stringify: stringifyNumber.stringifyNumber\n};\nconst intHex = {\n identify: intIdentify,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n format: 'HEX',\n test: /^[-+]?0x[0-9a-fA-F_]+$/,\n resolve: (str, _onError, opt) => intResolve(str, 2, 16, opt),\n stringify: node => intStringify(node, 16, '0x')\n};\n\nexports.int = int;\nexports.intBin = intBin;\nexports.intHex = intHex;\nexports.intOct = intOct;\n","'use strict';\n\nvar identity = require('../../nodes/identity.js');\nvar Pair = require('../../nodes/Pair.js');\nvar YAMLMap = require('../../nodes/YAMLMap.js');\n\nclass YAMLSet extends YAMLMap.YAMLMap {\n constructor(schema) {\n super(schema);\n this.tag = YAMLSet.tag;\n }\n add(key) {\n let pair;\n if (identity.isPair(key))\n pair = key;\n else if (key &&\n typeof key === 'object' &&\n 'key' in key &&\n 'value' in key &&\n key.value === null)\n pair = new Pair.Pair(key.key, null);\n else\n pair = new Pair.Pair(key, null);\n const prev = YAMLMap.findPair(this.items, pair.key);\n if (!prev)\n this.items.push(pair);\n }\n /**\n * If `keepPair` is `true`, returns the Pair matching `key`.\n * Otherwise, returns the value of that Pair's key.\n */\n get(key, keepPair) {\n const pair = YAMLMap.findPair(this.items, key);\n return !keepPair && identity.isPair(pair)\n ? identity.isScalar(pair.key)\n ? pair.key.value\n : pair.key\n : pair;\n }\n set(key, value) {\n if (typeof value !== 'boolean')\n throw new Error(`Expected boolean value for set(key, value) in a YAML set, not ${typeof value}`);\n const prev = YAMLMap.findPair(this.items, key);\n if (prev && !value) {\n this.items.splice(this.items.indexOf(prev), 1);\n }\n else if (!prev && value) {\n this.items.push(new Pair.Pair(key));\n }\n }\n toJSON(_, ctx) {\n return super.toJSON(_, ctx, Set);\n }\n toString(ctx, onComment, onChompKeep) {\n if (!ctx)\n return JSON.stringify(this);\n if (this.hasAllNullValues(true))\n return super.toString(Object.assign({}, ctx, { allNullValues: true }), onComment, onChompKeep);\n else\n throw new Error('Set items must all have null values');\n }\n static from(schema, iterable, ctx) {\n const { replacer } = ctx;\n const set = new this(schema);\n if (iterable && Symbol.iterator in Object(iterable))\n for (let value of iterable) {\n if (typeof replacer === 'function')\n value = replacer.call(iterable, value, value);\n set.items.push(Pair.createPair(value, null, ctx));\n }\n return set;\n }\n}\nYAMLSet.tag = 'tag:yaml.org,2002:set';\nconst set = {\n collection: 'map',\n identify: value => value instanceof Set,\n nodeClass: YAMLSet,\n default: false,\n tag: 'tag:yaml.org,2002:set',\n createNode: (schema, iterable, ctx) => YAMLSet.from(schema, iterable, ctx),\n resolve(map, onError) {\n if (identity.isMap(map)) {\n if (map.hasAllNullValues(true))\n return Object.assign(new YAMLSet(), map);\n else\n onError('Set items must all have null values');\n }\n else\n onError('Expected a mapping for this tag');\n return map;\n }\n};\n\nexports.YAMLSet = YAMLSet;\nexports.set = set;\n","'use strict';\n\nvar stringifyNumber = require('../../stringify/stringifyNumber.js');\n\n/** Internal types handle bigint as number, because TS can't figure it out. */\nfunction parseSexagesimal(str, asBigInt) {\n const sign = str[0];\n const parts = sign === '-' || sign === '+' ? str.substring(1) : str;\n const num = (n) => asBigInt ? BigInt(n) : Number(n);\n const res = parts\n .replace(/_/g, '')\n .split(':')\n .reduce((res, p) => res * num(60) + num(p), num(0));\n return (sign === '-' ? num(-1) * res : res);\n}\n/**\n * hhhh:mm:ss.sss\n *\n * Internal types handle bigint as number, because TS can't figure it out.\n */\nfunction stringifySexagesimal(node) {\n let { value } = node;\n let num = (n) => n;\n if (typeof value === 'bigint')\n num = n => BigInt(n);\n else if (isNaN(value) || !isFinite(value))\n return stringifyNumber.stringifyNumber(node);\n let sign = '';\n if (value < 0) {\n sign = '-';\n value *= num(-1);\n }\n const _60 = num(60);\n const parts = [value % _60]; // seconds, including ms\n if (value < 60) {\n parts.unshift(0); // at least one : is required\n }\n else {\n value = (value - parts[0]) / _60;\n parts.unshift(value % _60); // minutes\n if (value >= 60) {\n value = (value - parts[0]) / _60;\n parts.unshift(value); // hours\n }\n }\n return (sign +\n parts\n .map(n => String(n).padStart(2, '0'))\n .join(':')\n .replace(/000000\\d*$/, '') // % 60 may introduce error\n );\n}\nconst intTime = {\n identify: value => typeof value === 'bigint' || Number.isInteger(value),\n default: true,\n tag: 'tag:yaml.org,2002:int',\n format: 'TIME',\n test: /^[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+$/,\n resolve: (str, _onError, { intAsBigInt }) => parseSexagesimal(str, intAsBigInt),\n stringify: stringifySexagesimal\n};\nconst floatTime = {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n format: 'TIME',\n test: /^[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\.[0-9_]*$/,\n resolve: str => parseSexagesimal(str, false),\n stringify: stringifySexagesimal\n};\nconst timestamp = {\n identify: value => value instanceof Date,\n default: true,\n tag: 'tag:yaml.org,2002:timestamp',\n // If the time zone is omitted, the timestamp is assumed to be specified in UTC. The time part\n // may be omitted altogether, resulting in a date format. In such a case, the time part is\n // assumed to be 00:00:00Z (start of day, UTC).\n test: RegExp('^([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})' + // YYYY-Mm-Dd\n '(?:' + // time is optional\n '(?:t|T|[ \\\\t]+)' + // t | T | whitespace\n '([0-9]{1,2}):([0-9]{1,2}):([0-9]{1,2}(\\\\.[0-9]+)?)' + // Hh:Mm:Ss(.ss)?\n '(?:[ \\\\t]*(Z|[-+][012]?[0-9](?::[0-9]{2})?))?' + // Z | +5 | -03:30\n ')?$'),\n resolve(str) {\n const match = str.match(timestamp.test);\n if (!match)\n throw new Error('!!timestamp expects a date, starting with yyyy-mm-dd');\n const [, year, month, day, hour, minute, second] = match.map(Number);\n const millisec = match[7] ? Number((match[7] + '00').substr(1, 3)) : 0;\n let date = Date.UTC(year, month - 1, day, hour || 0, minute || 0, second || 0, millisec);\n const tz = match[8];\n if (tz && tz !== 'Z') {\n let d = parseSexagesimal(tz, false);\n if (Math.abs(d) < 30)\n d *= 60;\n date -= 60000 * d;\n }\n return new Date(date);\n },\n stringify: ({ value }) => value?.toISOString().replace(/(T00:00:00)?\\.000Z$/, '') ?? ''\n};\n\nexports.floatTime = floatTime;\nexports.intTime = intTime;\nexports.timestamp = timestamp;\n","'use strict';\n\nvar map = require('../common/map.js');\nvar _null = require('../common/null.js');\nvar seq = require('../common/seq.js');\nvar string = require('../common/string.js');\nvar binary = require('./binary.js');\nvar bool = require('./bool.js');\nvar float = require('./float.js');\nvar int = require('./int.js');\nvar merge = require('./merge.js');\nvar omap = require('./omap.js');\nvar pairs = require('./pairs.js');\nvar set = require('./set.js');\nvar timestamp = require('./timestamp.js');\n\nconst schema = [\n map.map,\n seq.seq,\n string.string,\n _null.nullTag,\n bool.trueTag,\n bool.falseTag,\n int.intBin,\n int.intOct,\n int.int,\n int.intHex,\n float.floatNaN,\n float.floatExp,\n float.float,\n binary.binary,\n merge.merge,\n omap.omap,\n pairs.pairs,\n set.set,\n timestamp.intTime,\n timestamp.floatTime,\n timestamp.timestamp\n];\n\nexports.schema = schema;\n","'use strict';\n\nvar map = require('./common/map.js');\nvar _null = require('./common/null.js');\nvar seq = require('./common/seq.js');\nvar string = require('./common/string.js');\nvar bool = require('./core/bool.js');\nvar float = require('./core/float.js');\nvar int = require('./core/int.js');\nvar schema = require('./core/schema.js');\nvar schema$1 = require('./json/schema.js');\nvar binary = require('./yaml-1.1/binary.js');\nvar merge = require('./yaml-1.1/merge.js');\nvar omap = require('./yaml-1.1/omap.js');\nvar pairs = require('./yaml-1.1/pairs.js');\nvar schema$2 = require('./yaml-1.1/schema.js');\nvar set = require('./yaml-1.1/set.js');\nvar timestamp = require('./yaml-1.1/timestamp.js');\n\nconst schemas = new Map([\n ['core', schema.schema],\n ['failsafe', [map.map, seq.seq, string.string]],\n ['json', schema$1.schema],\n ['yaml11', schema$2.schema],\n ['yaml-1.1', schema$2.schema]\n]);\nconst tagsByName = {\n binary: binary.binary,\n bool: bool.boolTag,\n float: float.float,\n floatExp: float.floatExp,\n floatNaN: float.floatNaN,\n floatTime: timestamp.floatTime,\n int: int.int,\n intHex: int.intHex,\n intOct: int.intOct,\n intTime: timestamp.intTime,\n map: map.map,\n merge: merge.merge,\n null: _null.nullTag,\n omap: omap.omap,\n pairs: pairs.pairs,\n seq: seq.seq,\n set: set.set,\n timestamp: timestamp.timestamp\n};\nconst coreKnownTags = {\n 'tag:yaml.org,2002:binary': binary.binary,\n 'tag:yaml.org,2002:merge': merge.merge,\n 'tag:yaml.org,2002:omap': omap.omap,\n 'tag:yaml.org,2002:pairs': pairs.pairs,\n 'tag:yaml.org,2002:set': set.set,\n 'tag:yaml.org,2002:timestamp': timestamp.timestamp\n};\nfunction getTags(customTags, schemaName, addMergeTag) {\n const schemaTags = schemas.get(schemaName);\n if (schemaTags && !customTags) {\n return addMergeTag && !schemaTags.includes(merge.merge)\n ? schemaTags.concat(merge.merge)\n : schemaTags.slice();\n }\n let tags = schemaTags;\n if (!tags) {\n if (Array.isArray(customTags))\n tags = [];\n else {\n const keys = Array.from(schemas.keys())\n .filter(key => key !== 'yaml11')\n .map(key => JSON.stringify(key))\n .join(', ');\n throw new Error(`Unknown schema \"${schemaName}\"; use one of ${keys} or define customTags array`);\n }\n }\n if (Array.isArray(customTags)) {\n for (const tag of customTags)\n tags = tags.concat(tag);\n }\n else if (typeof customTags === 'function') {\n tags = customTags(tags.slice());\n }\n if (addMergeTag)\n tags = tags.concat(merge.merge);\n return tags.reduce((tags, tag) => {\n const tagObj = typeof tag === 'string' ? tagsByName[tag] : tag;\n if (!tagObj) {\n const tagName = JSON.stringify(tag);\n const keys = Object.keys(tagsByName)\n .map(key => JSON.stringify(key))\n .join(', ');\n throw new Error(`Unknown custom tag ${tagName}; use one of ${keys}`);\n }\n if (!tags.includes(tagObj))\n tags.push(tagObj);\n return tags;\n }, []);\n}\n\nexports.coreKnownTags = coreKnownTags;\nexports.getTags = getTags;\n","'use strict';\n\nvar identity = require('../nodes/identity.js');\nvar map = require('./common/map.js');\nvar seq = require('./common/seq.js');\nvar string = require('./common/string.js');\nvar tags = require('./tags.js');\n\nconst sortMapEntriesByKey = (a, b) => a.key < b.key ? -1 : a.key > b.key ? 1 : 0;\nclass Schema {\n constructor({ compat, customTags, merge, resolveKnownTags, schema, sortMapEntries, toStringDefaults }) {\n this.compat = Array.isArray(compat)\n ? tags.getTags(compat, 'compat')\n : compat\n ? tags.getTags(null, compat)\n : null;\n this.name = (typeof schema === 'string' && schema) || 'core';\n this.knownTags = resolveKnownTags ? tags.coreKnownTags : {};\n this.tags = tags.getTags(customTags, this.name, merge);\n this.toStringOptions = toStringDefaults ?? null;\n Object.defineProperty(this, identity.MAP, { value: map.map });\n Object.defineProperty(this, identity.SCALAR, { value: string.string });\n Object.defineProperty(this, identity.SEQ, { value: seq.seq });\n // Used by createMap()\n this.sortMapEntries =\n typeof sortMapEntries === 'function'\n ? sortMapEntries\n : sortMapEntries === true\n ? sortMapEntriesByKey\n : null;\n }\n clone() {\n const copy = Object.create(Schema.prototype, Object.getOwnPropertyDescriptors(this));\n copy.tags = this.tags.slice();\n return copy;\n }\n}\n\nexports.Schema = Schema;\n","'use strict';\n\nvar identity = require('../nodes/identity.js');\nvar stringify = require('./stringify.js');\nvar stringifyComment = require('./stringifyComment.js');\n\nfunction stringifyDocument(doc, options) {\n const lines = [];\n let hasDirectives = options.directives === true;\n if (options.directives !== false && doc.directives) {\n const dir = doc.directives.toString(doc);\n if (dir) {\n lines.push(dir);\n hasDirectives = true;\n }\n else if (doc.directives.docStart)\n hasDirectives = true;\n }\n if (hasDirectives)\n lines.push('---');\n const ctx = stringify.createStringifyContext(doc, options);\n const { commentString } = ctx.options;\n if (doc.commentBefore) {\n if (lines.length !== 1)\n lines.unshift('');\n const cs = commentString(doc.commentBefore);\n lines.unshift(stringifyComment.indentComment(cs, ''));\n }\n let chompKeep = false;\n let contentComment = null;\n if (doc.contents) {\n if (identity.isNode(doc.contents)) {\n if (doc.contents.spaceBefore && hasDirectives)\n lines.push('');\n if (doc.contents.commentBefore) {\n const cs = commentString(doc.contents.commentBefore);\n lines.push(stringifyComment.indentComment(cs, ''));\n }\n // top-level block scalars need to be indented if followed by a comment\n ctx.forceBlockIndent = !!doc.comment;\n contentComment = doc.contents.comment;\n }\n const onChompKeep = contentComment ? undefined : () => (chompKeep = true);\n let body = stringify.stringify(doc.contents, ctx, () => (contentComment = null), onChompKeep);\n if (contentComment)\n body += stringifyComment.lineComment(body, '', commentString(contentComment));\n if ((body[0] === '|' || body[0] === '>') &&\n lines[lines.length - 1] === '---') {\n // Top-level block scalars with a preceding doc marker ought to use the\n // same line for their header.\n lines[lines.length - 1] = `--- ${body}`;\n }\n else\n lines.push(body);\n }\n else {\n lines.push(stringify.stringify(doc.contents, ctx));\n }\n if (doc.directives?.docEnd) {\n if (doc.comment) {\n const cs = commentString(doc.comment);\n if (cs.includes('\\n')) {\n lines.push('...');\n lines.push(stringifyComment.indentComment(cs, ''));\n }\n else {\n lines.push(`... ${cs}`);\n }\n }\n else {\n lines.push('...');\n }\n }\n else {\n let dc = doc.comment;\n if (dc && chompKeep)\n dc = dc.replace(/^\\n+/, '');\n if (dc) {\n if ((!chompKeep || contentComment) && lines[lines.length - 1] !== '')\n lines.push('');\n lines.push(stringifyComment.indentComment(commentString(dc), ''));\n }\n }\n return lines.join('\\n') + '\\n';\n}\n\nexports.stringifyDocument = stringifyDocument;\n","'use strict';\n\nvar Alias = require('../nodes/Alias.js');\nvar Collection = require('../nodes/Collection.js');\nvar identity = require('../nodes/identity.js');\nvar Pair = require('../nodes/Pair.js');\nvar toJS = require('../nodes/toJS.js');\nvar Schema = require('../schema/Schema.js');\nvar stringifyDocument = require('../stringify/stringifyDocument.js');\nvar anchors = require('./anchors.js');\nvar applyReviver = require('./applyReviver.js');\nvar createNode = require('./createNode.js');\nvar directives = require('./directives.js');\n\nclass Document {\n constructor(value, replacer, options) {\n /** A comment before this Document */\n this.commentBefore = null;\n /** A comment immediately after this Document */\n this.comment = null;\n /** Errors encountered during parsing. */\n this.errors = [];\n /** Warnings encountered during parsing. */\n this.warnings = [];\n Object.defineProperty(this, identity.NODE_TYPE, { value: identity.DOC });\n let _replacer = null;\n if (typeof replacer === 'function' || Array.isArray(replacer)) {\n _replacer = replacer;\n }\n else if (options === undefined && replacer) {\n options = replacer;\n replacer = undefined;\n }\n const opt = Object.assign({\n intAsBigInt: false,\n keepSourceTokens: false,\n logLevel: 'warn',\n prettyErrors: true,\n strict: true,\n stringKeys: false,\n uniqueKeys: true,\n version: '1.2'\n }, options);\n this.options = opt;\n let { version } = opt;\n if (options?._directives) {\n this.directives = options._directives.atDocument();\n if (this.directives.yaml.explicit)\n version = this.directives.yaml.version;\n }\n else\n this.directives = new directives.Directives({ version });\n this.setSchema(version, options);\n // @ts-expect-error We can't really know that this matches Contents.\n this.contents =\n value === undefined ? null : this.createNode(value, _replacer, options);\n }\n /**\n * Create a deep copy of this Document and its contents.\n *\n * Custom Node values that inherit from `Object` still refer to their original instances.\n */\n clone() {\n const copy = Object.create(Document.prototype, {\n [identity.NODE_TYPE]: { value: identity.DOC }\n });\n copy.commentBefore = this.commentBefore;\n copy.comment = this.comment;\n copy.errors = this.errors.slice();\n copy.warnings = this.warnings.slice();\n copy.options = Object.assign({}, this.options);\n if (this.directives)\n copy.directives = this.directives.clone();\n copy.schema = this.schema.clone();\n // @ts-expect-error We can't really know that this matches Contents.\n copy.contents = identity.isNode(this.contents)\n ? this.contents.clone(copy.schema)\n : this.contents;\n if (this.range)\n copy.range = this.range.slice();\n return copy;\n }\n /** Adds a value to the document. */\n add(value) {\n if (assertCollection(this.contents))\n this.contents.add(value);\n }\n /** Adds a value to the document. */\n addIn(path, value) {\n if (assertCollection(this.contents))\n this.contents.addIn(path, value);\n }\n /**\n * Create a new `Alias` node, ensuring that the target `node` has the required anchor.\n *\n * If `node` already has an anchor, `name` is ignored.\n * Otherwise, the `node.anchor` value will be set to `name`,\n * or if an anchor with that name is already present in the document,\n * `name` will be used as a prefix for a new unique anchor.\n * If `name` is undefined, the generated anchor will use 'a' as a prefix.\n */\n createAlias(node, name) {\n if (!node.anchor) {\n const prev = anchors.anchorNames(this);\n node.anchor =\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n !name || prev.has(name) ? anchors.findNewAnchor(name || 'a', prev) : name;\n }\n return new Alias.Alias(node.anchor);\n }\n createNode(value, replacer, options) {\n let _replacer = undefined;\n if (typeof replacer === 'function') {\n value = replacer.call({ '': value }, '', value);\n _replacer = replacer;\n }\n else if (Array.isArray(replacer)) {\n const keyToStr = (v) => typeof v === 'number' || v instanceof String || v instanceof Number;\n const asStr = replacer.filter(keyToStr).map(String);\n if (asStr.length > 0)\n replacer = replacer.concat(asStr);\n _replacer = replacer;\n }\n else if (options === undefined && replacer) {\n options = replacer;\n replacer = undefined;\n }\n const { aliasDuplicateObjects, anchorPrefix, flow, keepUndefined, onTagObj, tag } = options ?? {};\n const { onAnchor, setAnchors, sourceObjects } = anchors.createNodeAnchors(this, \n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n anchorPrefix || 'a');\n const ctx = {\n aliasDuplicateObjects: aliasDuplicateObjects ?? true,\n keepUndefined: keepUndefined ?? false,\n onAnchor,\n onTagObj,\n replacer: _replacer,\n schema: this.schema,\n sourceObjects\n };\n const node = createNode.createNode(value, tag, ctx);\n if (flow && identity.isCollection(node))\n node.flow = true;\n setAnchors();\n return node;\n }\n /**\n * Convert a key and a value into a `Pair` using the current schema,\n * recursively wrapping all values as `Scalar` or `Collection` nodes.\n */\n createPair(key, value, options = {}) {\n const k = this.createNode(key, null, options);\n const v = this.createNode(value, null, options);\n return new Pair.Pair(k, v);\n }\n /**\n * Removes a value from the document.\n * @returns `true` if the item was found and removed.\n */\n delete(key) {\n return assertCollection(this.contents) ? this.contents.delete(key) : false;\n }\n /**\n * Removes a value from the document.\n * @returns `true` if the item was found and removed.\n */\n deleteIn(path) {\n if (Collection.isEmptyPath(path)) {\n if (this.contents == null)\n return false;\n // @ts-expect-error Presumed impossible if Strict extends false\n this.contents = null;\n return true;\n }\n return assertCollection(this.contents)\n ? this.contents.deleteIn(path)\n : false;\n }\n /**\n * Returns item at `key`, or `undefined` if not found. By default unwraps\n * scalar values from their surrounding node; to disable set `keepScalar` to\n * `true` (collections are always returned intact).\n */\n get(key, keepScalar) {\n return identity.isCollection(this.contents)\n ? this.contents.get(key, keepScalar)\n : undefined;\n }\n /**\n * Returns item at `path`, or `undefined` if not found. By default unwraps\n * scalar values from their surrounding node; to disable set `keepScalar` to\n * `true` (collections are always returned intact).\n */\n getIn(path, keepScalar) {\n if (Collection.isEmptyPath(path))\n return !keepScalar && identity.isScalar(this.contents)\n ? this.contents.value\n : this.contents;\n return identity.isCollection(this.contents)\n ? this.contents.getIn(path, keepScalar)\n : undefined;\n }\n /**\n * Checks if the document includes a value with the key `key`.\n */\n has(key) {\n return identity.isCollection(this.contents) ? this.contents.has(key) : false;\n }\n /**\n * Checks if the document includes a value at `path`.\n */\n hasIn(path) {\n if (Collection.isEmptyPath(path))\n return this.contents !== undefined;\n return identity.isCollection(this.contents) ? this.contents.hasIn(path) : false;\n }\n /**\n * Sets a value in this document. For `!!set`, `value` needs to be a\n * boolean to add/remove the item from the set.\n */\n set(key, value) {\n if (this.contents == null) {\n // @ts-expect-error We can't really know that this matches Contents.\n this.contents = Collection.collectionFromPath(this.schema, [key], value);\n }\n else if (assertCollection(this.contents)) {\n this.contents.set(key, value);\n }\n }\n /**\n * Sets a value in this document. For `!!set`, `value` needs to be a\n * boolean to add/remove the item from the set.\n */\n setIn(path, value) {\n if (Collection.isEmptyPath(path)) {\n // @ts-expect-error We can't really know that this matches Contents.\n this.contents = value;\n }\n else if (this.contents == null) {\n // @ts-expect-error We can't really know that this matches Contents.\n this.contents = Collection.collectionFromPath(this.schema, Array.from(path), value);\n }\n else if (assertCollection(this.contents)) {\n this.contents.setIn(path, value);\n }\n }\n /**\n * Change the YAML version and schema used by the document.\n * A `null` version disables support for directives, explicit tags, anchors, and aliases.\n * It also requires the `schema` option to be given as a `Schema` instance value.\n *\n * Overrides all previously set schema options.\n */\n setSchema(version, options = {}) {\n if (typeof version === 'number')\n version = String(version);\n let opt;\n switch (version) {\n case '1.1':\n if (this.directives)\n this.directives.yaml.version = '1.1';\n else\n this.directives = new directives.Directives({ version: '1.1' });\n opt = { resolveKnownTags: false, schema: 'yaml-1.1' };\n break;\n case '1.2':\n case 'next':\n if (this.directives)\n this.directives.yaml.version = version;\n else\n this.directives = new directives.Directives({ version });\n opt = { resolveKnownTags: true, schema: 'core' };\n break;\n case null:\n if (this.directives)\n delete this.directives;\n opt = null;\n break;\n default: {\n const sv = JSON.stringify(version);\n throw new Error(`Expected '1.1', '1.2' or null as first argument, but found: ${sv}`);\n }\n }\n // Not using `instanceof Schema` to allow for duck typing\n if (options.schema instanceof Object)\n this.schema = options.schema;\n else if (opt)\n this.schema = new Schema.Schema(Object.assign(opt, options));\n else\n throw new Error(`With a null YAML version, the { schema: Schema } option is required`);\n }\n // json & jsonArg are only used from toJSON()\n toJS({ json, jsonArg, mapAsMap, maxAliasCount, onAnchor, reviver } = {}) {\n const ctx = {\n anchors: new Map(),\n doc: this,\n keep: !json,\n mapAsMap: mapAsMap === true,\n mapKeyWarned: false,\n maxAliasCount: typeof maxAliasCount === 'number' ? maxAliasCount : 100\n };\n const res = toJS.toJS(this.contents, jsonArg ?? '', ctx);\n if (typeof onAnchor === 'function')\n for (const { count, res } of ctx.anchors.values())\n onAnchor(res, count);\n return typeof reviver === 'function'\n ? applyReviver.applyReviver(reviver, { '': res }, '', res)\n : res;\n }\n /**\n * A JSON representation of the document `contents`.\n *\n * @param jsonArg Used by `JSON.stringify` to indicate the array index or\n * property name.\n */\n toJSON(jsonArg, onAnchor) {\n return this.toJS({ json: true, jsonArg, mapAsMap: false, onAnchor });\n }\n /** A YAML representation of the document. */\n toString(options = {}) {\n if (this.errors.length > 0)\n throw new Error('Document with errors cannot be stringified');\n if ('indent' in options &&\n (!Number.isInteger(options.indent) || Number(options.indent) <= 0)) {\n const s = JSON.stringify(options.indent);\n throw new Error(`\"indent\" option must be a positive integer, not ${s}`);\n }\n return stringifyDocument.stringifyDocument(this, options);\n }\n}\nfunction assertCollection(contents) {\n if (identity.isCollection(contents))\n return true;\n throw new Error('Expected a YAML collection as document contents');\n}\n\nexports.Document = Document;\n","'use strict';\n\nclass YAMLError extends Error {\n constructor(name, pos, code, message) {\n super();\n this.name = name;\n this.code = code;\n this.message = message;\n this.pos = pos;\n }\n}\nclass YAMLParseError extends YAMLError {\n constructor(pos, code, message) {\n super('YAMLParseError', pos, code, message);\n }\n}\nclass YAMLWarning extends YAMLError {\n constructor(pos, code, message) {\n super('YAMLWarning', pos, code, message);\n }\n}\nconst prettifyError = (src, lc) => (error) => {\n if (error.pos[0] === -1)\n return;\n error.linePos = error.pos.map(pos => lc.linePos(pos));\n const { line, col } = error.linePos[0];\n error.message += ` at line ${line}, column ${col}`;\n let ci = col - 1;\n let lineStr = src\n .substring(lc.lineStarts[line - 1], lc.lineStarts[line])\n .replace(/[\\n\\r]+$/, '');\n // Trim to max 80 chars, keeping col position near the middle\n if (ci >= 60 && lineStr.length > 80) {\n const trimStart = Math.min(ci - 39, lineStr.length - 79);\n lineStr = '…' + lineStr.substring(trimStart);\n ci -= trimStart - 1;\n }\n if (lineStr.length > 80)\n lineStr = lineStr.substring(0, 79) + '…';\n // Include previous line in context if pointing at line start\n if (line > 1 && /^ *$/.test(lineStr.substring(0, ci))) {\n // Regexp won't match if start is trimmed\n let prev = src.substring(lc.lineStarts[line - 2], lc.lineStarts[line - 1]);\n if (prev.length > 80)\n prev = prev.substring(0, 79) + '…\\n';\n lineStr = prev + lineStr;\n }\n if (/[^ ]/.test(lineStr)) {\n let count = 1;\n const end = error.linePos[1];\n if (end?.line === line && end.col > col) {\n count = Math.max(1, Math.min(end.col - col, 80 - ci));\n }\n const pointer = ' '.repeat(ci) + '^'.repeat(count);\n error.message += `:\\n\\n${lineStr}\\n${pointer}\\n`;\n }\n};\n\nexports.YAMLError = YAMLError;\nexports.YAMLParseError = YAMLParseError;\nexports.YAMLWarning = YAMLWarning;\nexports.prettifyError = prettifyError;\n","'use strict';\n\nfunction resolveProps(tokens, { flow, indicator, next, offset, onError, parentIndent, startOnNewline }) {\n let spaceBefore = false;\n let atNewline = startOnNewline;\n let hasSpace = startOnNewline;\n let comment = '';\n let commentSep = '';\n let hasNewline = false;\n let reqSpace = false;\n let tab = null;\n let anchor = null;\n let tag = null;\n let newlineAfterProp = null;\n let comma = null;\n let found = null;\n let start = null;\n for (const token of tokens) {\n if (reqSpace) {\n if (token.type !== 'space' &&\n token.type !== 'newline' &&\n token.type !== 'comma')\n onError(token.offset, 'MISSING_CHAR', 'Tags and anchors must be separated from the next token by white space');\n reqSpace = false;\n }\n if (tab) {\n if (atNewline && token.type !== 'comment' && token.type !== 'newline') {\n onError(tab, 'TAB_AS_INDENT', 'Tabs are not allowed as indentation');\n }\n tab = null;\n }\n switch (token.type) {\n case 'space':\n // At the doc level, tabs at line start may be parsed\n // as leading white space rather than indentation.\n // In a flow collection, only the parser handles indent.\n if (!flow &&\n (indicator !== 'doc-start' || next?.type !== 'flow-collection') &&\n token.source.includes('\\t')) {\n tab = token;\n }\n hasSpace = true;\n break;\n case 'comment': {\n if (!hasSpace)\n onError(token, 'MISSING_CHAR', 'Comments must be separated from other tokens by white space characters');\n const cb = token.source.substring(1) || ' ';\n if (!comment)\n comment = cb;\n else\n comment += commentSep + cb;\n commentSep = '';\n atNewline = false;\n break;\n }\n case 'newline':\n if (atNewline) {\n if (comment)\n comment += token.source;\n else if (!found || indicator !== 'seq-item-ind')\n spaceBefore = true;\n }\n else\n commentSep += token.source;\n atNewline = true;\n hasNewline = true;\n if (anchor || tag)\n newlineAfterProp = token;\n hasSpace = true;\n break;\n case 'anchor':\n if (anchor)\n onError(token, 'MULTIPLE_ANCHORS', 'A node can have at most one anchor');\n if (token.source.endsWith(':'))\n onError(token.offset + token.source.length - 1, 'BAD_ALIAS', 'Anchor ending in : is ambiguous', true);\n anchor = token;\n start ?? (start = token.offset);\n atNewline = false;\n hasSpace = false;\n reqSpace = true;\n break;\n case 'tag': {\n if (tag)\n onError(token, 'MULTIPLE_TAGS', 'A node can have at most one tag');\n tag = token;\n start ?? (start = token.offset);\n atNewline = false;\n hasSpace = false;\n reqSpace = true;\n break;\n }\n case indicator:\n // Could here handle preceding comments differently\n if (anchor || tag)\n onError(token, 'BAD_PROP_ORDER', `Anchors and tags must be after the ${token.source} indicator`);\n if (found)\n onError(token, 'UNEXPECTED_TOKEN', `Unexpected ${token.source} in ${flow ?? 'collection'}`);\n found = token;\n atNewline =\n indicator === 'seq-item-ind' || indicator === 'explicit-key-ind';\n hasSpace = false;\n break;\n case 'comma':\n if (flow) {\n if (comma)\n onError(token, 'UNEXPECTED_TOKEN', `Unexpected , in ${flow}`);\n comma = token;\n atNewline = false;\n hasSpace = false;\n break;\n }\n // else fallthrough\n default:\n onError(token, 'UNEXPECTED_TOKEN', `Unexpected ${token.type} token`);\n atNewline = false;\n hasSpace = false;\n }\n }\n const last = tokens[tokens.length - 1];\n const end = last ? last.offset + last.source.length : offset;\n if (reqSpace &&\n next &&\n next.type !== 'space' &&\n next.type !== 'newline' &&\n next.type !== 'comma' &&\n (next.type !== 'scalar' || next.source !== '')) {\n onError(next.offset, 'MISSING_CHAR', 'Tags and anchors must be separated from the next token by white space');\n }\n if (tab &&\n ((atNewline && tab.indent <= parentIndent) ||\n next?.type === 'block-map' ||\n next?.type === 'block-seq'))\n onError(tab, 'TAB_AS_INDENT', 'Tabs are not allowed as indentation');\n return {\n comma,\n found,\n spaceBefore,\n comment,\n hasNewline,\n anchor,\n tag,\n newlineAfterProp,\n end,\n start: start ?? end\n };\n}\n\nexports.resolveProps = resolveProps;\n","'use strict';\n\nfunction containsNewline(key) {\n if (!key)\n return null;\n switch (key.type) {\n case 'alias':\n case 'scalar':\n case 'double-quoted-scalar':\n case 'single-quoted-scalar':\n if (key.source.includes('\\n'))\n return true;\n if (key.end)\n for (const st of key.end)\n if (st.type === 'newline')\n return true;\n return false;\n case 'flow-collection':\n for (const it of key.items) {\n for (const st of it.start)\n if (st.type === 'newline')\n return true;\n if (it.sep)\n for (const st of it.sep)\n if (st.type === 'newline')\n return true;\n if (containsNewline(it.key) || containsNewline(it.value))\n return true;\n }\n return false;\n default:\n return true;\n }\n}\n\nexports.containsNewline = containsNewline;\n","'use strict';\n\nvar utilContainsNewline = require('./util-contains-newline.js');\n\nfunction flowIndentCheck(indent, fc, onError) {\n if (fc?.type === 'flow-collection') {\n const end = fc.end[0];\n if (end.indent === indent &&\n (end.source === ']' || end.source === '}') &&\n utilContainsNewline.containsNewline(fc)) {\n const msg = 'Flow end indicator should be more indented than parent';\n onError(end, 'BAD_INDENT', msg, true);\n }\n }\n}\n\nexports.flowIndentCheck = flowIndentCheck;\n","'use strict';\n\nvar identity = require('../nodes/identity.js');\n\nfunction mapIncludes(ctx, items, search) {\n const { uniqueKeys } = ctx.options;\n if (uniqueKeys === false)\n return false;\n const isEqual = typeof uniqueKeys === 'function'\n ? uniqueKeys\n : (a, b) => a === b || (identity.isScalar(a) && identity.isScalar(b) && a.value === b.value);\n return items.some(pair => isEqual(pair.key, search));\n}\n\nexports.mapIncludes = mapIncludes;\n","'use strict';\n\nvar Pair = require('../nodes/Pair.js');\nvar YAMLMap = require('../nodes/YAMLMap.js');\nvar resolveProps = require('./resolve-props.js');\nvar utilContainsNewline = require('./util-contains-newline.js');\nvar utilFlowIndentCheck = require('./util-flow-indent-check.js');\nvar utilMapIncludes = require('./util-map-includes.js');\n\nconst startColMsg = 'All mapping items must start at the same column';\nfunction resolveBlockMap({ composeNode, composeEmptyNode }, ctx, bm, onError, tag) {\n const NodeClass = tag?.nodeClass ?? YAMLMap.YAMLMap;\n const map = new NodeClass(ctx.schema);\n if (ctx.atRoot)\n ctx.atRoot = false;\n let offset = bm.offset;\n let commentEnd = null;\n for (const collItem of bm.items) {\n const { start, key, sep, value } = collItem;\n // key properties\n const keyProps = resolveProps.resolveProps(start, {\n indicator: 'explicit-key-ind',\n next: key ?? sep?.[0],\n offset,\n onError,\n parentIndent: bm.indent,\n startOnNewline: true\n });\n const implicitKey = !keyProps.found;\n if (implicitKey) {\n if (key) {\n if (key.type === 'block-seq')\n onError(offset, 'BLOCK_AS_IMPLICIT_KEY', 'A block sequence may not be used as an implicit map key');\n else if ('indent' in key && key.indent !== bm.indent)\n onError(offset, 'BAD_INDENT', startColMsg);\n }\n if (!keyProps.anchor && !keyProps.tag && !sep) {\n commentEnd = keyProps.end;\n if (keyProps.comment) {\n if (map.comment)\n map.comment += '\\n' + keyProps.comment;\n else\n map.comment = keyProps.comment;\n }\n continue;\n }\n if (keyProps.newlineAfterProp || utilContainsNewline.containsNewline(key)) {\n onError(key ?? start[start.length - 1], 'MULTILINE_IMPLICIT_KEY', 'Implicit keys need to be on a single line');\n }\n }\n else if (keyProps.found?.indent !== bm.indent) {\n onError(offset, 'BAD_INDENT', startColMsg);\n }\n // key value\n ctx.atKey = true;\n const keyStart = keyProps.end;\n const keyNode = key\n ? composeNode(ctx, key, keyProps, onError)\n : composeEmptyNode(ctx, keyStart, start, null, keyProps, onError);\n if (ctx.schema.compat)\n utilFlowIndentCheck.flowIndentCheck(bm.indent, key, onError);\n ctx.atKey = false;\n if (utilMapIncludes.mapIncludes(ctx, map.items, keyNode))\n onError(keyStart, 'DUPLICATE_KEY', 'Map keys must be unique');\n // value properties\n const valueProps = resolveProps.resolveProps(sep ?? [], {\n indicator: 'map-value-ind',\n next: value,\n offset: keyNode.range[2],\n onError,\n parentIndent: bm.indent,\n startOnNewline: !key || key.type === 'block-scalar'\n });\n offset = valueProps.end;\n if (valueProps.found) {\n if (implicitKey) {\n if (value?.type === 'block-map' && !valueProps.hasNewline)\n onError(offset, 'BLOCK_AS_IMPLICIT_KEY', 'Nested mappings are not allowed in compact mappings');\n if (ctx.options.strict &&\n keyProps.start < valueProps.found.offset - 1024)\n onError(keyNode.range, 'KEY_OVER_1024_CHARS', 'The : indicator must be at most 1024 chars after the start of an implicit block mapping key');\n }\n // value value\n const valueNode = value\n ? composeNode(ctx, value, valueProps, onError)\n : composeEmptyNode(ctx, offset, sep, null, valueProps, onError);\n if (ctx.schema.compat)\n utilFlowIndentCheck.flowIndentCheck(bm.indent, value, onError);\n offset = valueNode.range[2];\n const pair = new Pair.Pair(keyNode, valueNode);\n if (ctx.options.keepSourceTokens)\n pair.srcToken = collItem;\n map.items.push(pair);\n }\n else {\n // key with no value\n if (implicitKey)\n onError(keyNode.range, 'MISSING_CHAR', 'Implicit map keys need to be followed by map values');\n if (valueProps.comment) {\n if (keyNode.comment)\n keyNode.comment += '\\n' + valueProps.comment;\n else\n keyNode.comment = valueProps.comment;\n }\n const pair = new Pair.Pair(keyNode);\n if (ctx.options.keepSourceTokens)\n pair.srcToken = collItem;\n map.items.push(pair);\n }\n }\n if (commentEnd && commentEnd < offset)\n onError(commentEnd, 'IMPOSSIBLE', 'Map comment with trailing content');\n map.range = [bm.offset, offset, commentEnd ?? offset];\n return map;\n}\n\nexports.resolveBlockMap = resolveBlockMap;\n","'use strict';\n\nvar YAMLSeq = require('../nodes/YAMLSeq.js');\nvar resolveProps = require('./resolve-props.js');\nvar utilFlowIndentCheck = require('./util-flow-indent-check.js');\n\nfunction resolveBlockSeq({ composeNode, composeEmptyNode }, ctx, bs, onError, tag) {\n const NodeClass = tag?.nodeClass ?? YAMLSeq.YAMLSeq;\n const seq = new NodeClass(ctx.schema);\n if (ctx.atRoot)\n ctx.atRoot = false;\n if (ctx.atKey)\n ctx.atKey = false;\n let offset = bs.offset;\n let commentEnd = null;\n for (const { start, value } of bs.items) {\n const props = resolveProps.resolveProps(start, {\n indicator: 'seq-item-ind',\n next: value,\n offset,\n onError,\n parentIndent: bs.indent,\n startOnNewline: true\n });\n if (!props.found) {\n if (props.anchor || props.tag || value) {\n if (value?.type === 'block-seq')\n onError(props.end, 'BAD_INDENT', 'All sequence items must start at the same column');\n else\n onError(offset, 'MISSING_CHAR', 'Sequence item without - indicator');\n }\n else {\n commentEnd = props.end;\n if (props.comment)\n seq.comment = props.comment;\n continue;\n }\n }\n const node = value\n ? composeNode(ctx, value, props, onError)\n : composeEmptyNode(ctx, props.end, start, null, props, onError);\n if (ctx.schema.compat)\n utilFlowIndentCheck.flowIndentCheck(bs.indent, value, onError);\n offset = node.range[2];\n seq.items.push(node);\n }\n seq.range = [bs.offset, offset, commentEnd ?? offset];\n return seq;\n}\n\nexports.resolveBlockSeq = resolveBlockSeq;\n","'use strict';\n\nfunction resolveEnd(end, offset, reqSpace, onError) {\n let comment = '';\n if (end) {\n let hasSpace = false;\n let sep = '';\n for (const token of end) {\n const { source, type } = token;\n switch (type) {\n case 'space':\n hasSpace = true;\n break;\n case 'comment': {\n if (reqSpace && !hasSpace)\n onError(token, 'MISSING_CHAR', 'Comments must be separated from other tokens by white space characters');\n const cb = source.substring(1) || ' ';\n if (!comment)\n comment = cb;\n else\n comment += sep + cb;\n sep = '';\n break;\n }\n case 'newline':\n if (comment)\n sep += source;\n hasSpace = true;\n break;\n default:\n onError(token, 'UNEXPECTED_TOKEN', `Unexpected ${type} at node end`);\n }\n offset += source.length;\n }\n }\n return { comment, offset };\n}\n\nexports.resolveEnd = resolveEnd;\n","'use strict';\n\nvar identity = require('../nodes/identity.js');\nvar Pair = require('../nodes/Pair.js');\nvar YAMLMap = require('../nodes/YAMLMap.js');\nvar YAMLSeq = require('../nodes/YAMLSeq.js');\nvar resolveEnd = require('./resolve-end.js');\nvar resolveProps = require('./resolve-props.js');\nvar utilContainsNewline = require('./util-contains-newline.js');\nvar utilMapIncludes = require('./util-map-includes.js');\n\nconst blockMsg = 'Block collections are not allowed within flow collections';\nconst isBlock = (token) => token && (token.type === 'block-map' || token.type === 'block-seq');\nfunction resolveFlowCollection({ composeNode, composeEmptyNode }, ctx, fc, onError, tag) {\n const isMap = fc.start.source === '{';\n const fcName = isMap ? 'flow map' : 'flow sequence';\n const NodeClass = (tag?.nodeClass ?? (isMap ? YAMLMap.YAMLMap : YAMLSeq.YAMLSeq));\n const coll = new NodeClass(ctx.schema);\n coll.flow = true;\n const atRoot = ctx.atRoot;\n if (atRoot)\n ctx.atRoot = false;\n if (ctx.atKey)\n ctx.atKey = false;\n let offset = fc.offset + fc.start.source.length;\n for (let i = 0; i < fc.items.length; ++i) {\n const collItem = fc.items[i];\n const { start, key, sep, value } = collItem;\n const props = resolveProps.resolveProps(start, {\n flow: fcName,\n indicator: 'explicit-key-ind',\n next: key ?? sep?.[0],\n offset,\n onError,\n parentIndent: fc.indent,\n startOnNewline: false\n });\n if (!props.found) {\n if (!props.anchor && !props.tag && !sep && !value) {\n if (i === 0 && props.comma)\n onError(props.comma, 'UNEXPECTED_TOKEN', `Unexpected , in ${fcName}`);\n else if (i < fc.items.length - 1)\n onError(props.start, 'UNEXPECTED_TOKEN', `Unexpected empty item in ${fcName}`);\n if (props.comment) {\n if (coll.comment)\n coll.comment += '\\n' + props.comment;\n else\n coll.comment = props.comment;\n }\n offset = props.end;\n continue;\n }\n if (!isMap && ctx.options.strict && utilContainsNewline.containsNewline(key))\n onError(key, // checked by containsNewline()\n 'MULTILINE_IMPLICIT_KEY', 'Implicit keys of flow sequence pairs need to be on a single line');\n }\n if (i === 0) {\n if (props.comma)\n onError(props.comma, 'UNEXPECTED_TOKEN', `Unexpected , in ${fcName}`);\n }\n else {\n if (!props.comma)\n onError(props.start, 'MISSING_CHAR', `Missing , between ${fcName} items`);\n if (props.comment) {\n let prevItemComment = '';\n loop: for (const st of start) {\n switch (st.type) {\n case 'comma':\n case 'space':\n break;\n case 'comment':\n prevItemComment = st.source.substring(1);\n break loop;\n default:\n break loop;\n }\n }\n if (prevItemComment) {\n let prev = coll.items[coll.items.length - 1];\n if (identity.isPair(prev))\n prev = prev.value ?? prev.key;\n if (prev.comment)\n prev.comment += '\\n' + prevItemComment;\n else\n prev.comment = prevItemComment;\n props.comment = props.comment.substring(prevItemComment.length + 1);\n }\n }\n }\n if (!isMap && !sep && !props.found) {\n // item is a value in a seq\n // → key & sep are empty, start does not include ? or :\n const valueNode = value\n ? composeNode(ctx, value, props, onError)\n : composeEmptyNode(ctx, props.end, sep, null, props, onError);\n coll.items.push(valueNode);\n offset = valueNode.range[2];\n if (isBlock(value))\n onError(valueNode.range, 'BLOCK_IN_FLOW', blockMsg);\n }\n else {\n // item is a key+value pair\n // key value\n ctx.atKey = true;\n const keyStart = props.end;\n const keyNode = key\n ? composeNode(ctx, key, props, onError)\n : composeEmptyNode(ctx, keyStart, start, null, props, onError);\n if (isBlock(key))\n onError(keyNode.range, 'BLOCK_IN_FLOW', blockMsg);\n ctx.atKey = false;\n // value properties\n const valueProps = resolveProps.resolveProps(sep ?? [], {\n flow: fcName,\n indicator: 'map-value-ind',\n next: value,\n offset: keyNode.range[2],\n onError,\n parentIndent: fc.indent,\n startOnNewline: false\n });\n if (valueProps.found) {\n if (!isMap && !props.found && ctx.options.strict) {\n if (sep)\n for (const st of sep) {\n if (st === valueProps.found)\n break;\n if (st.type === 'newline') {\n onError(st, 'MULTILINE_IMPLICIT_KEY', 'Implicit keys of flow sequence pairs need to be on a single line');\n break;\n }\n }\n if (props.start < valueProps.found.offset - 1024)\n onError(valueProps.found, 'KEY_OVER_1024_CHARS', 'The : indicator must be at most 1024 chars after the start of an implicit flow sequence key');\n }\n }\n else if (value) {\n if ('source' in value && value.source?.[0] === ':')\n onError(value, 'MISSING_CHAR', `Missing space after : in ${fcName}`);\n else\n onError(valueProps.start, 'MISSING_CHAR', `Missing , or : between ${fcName} items`);\n }\n // value value\n const valueNode = value\n ? composeNode(ctx, value, valueProps, onError)\n : valueProps.found\n ? composeEmptyNode(ctx, valueProps.end, sep, null, valueProps, onError)\n : null;\n if (valueNode) {\n if (isBlock(value))\n onError(valueNode.range, 'BLOCK_IN_FLOW', blockMsg);\n }\n else if (valueProps.comment) {\n if (keyNode.comment)\n keyNode.comment += '\\n' + valueProps.comment;\n else\n keyNode.comment = valueProps.comment;\n }\n const pair = new Pair.Pair(keyNode, valueNode);\n if (ctx.options.keepSourceTokens)\n pair.srcToken = collItem;\n if (isMap) {\n const map = coll;\n if (utilMapIncludes.mapIncludes(ctx, map.items, keyNode))\n onError(keyStart, 'DUPLICATE_KEY', 'Map keys must be unique');\n map.items.push(pair);\n }\n else {\n const map = new YAMLMap.YAMLMap(ctx.schema);\n map.flow = true;\n map.items.push(pair);\n const endRange = (valueNode ?? keyNode).range;\n map.range = [keyNode.range[0], endRange[1], endRange[2]];\n coll.items.push(map);\n }\n offset = valueNode ? valueNode.range[2] : valueProps.end;\n }\n }\n const expectedEnd = isMap ? '}' : ']';\n const [ce, ...ee] = fc.end;\n let cePos = offset;\n if (ce?.source === expectedEnd)\n cePos = ce.offset + ce.source.length;\n else {\n const name = fcName[0].toUpperCase() + fcName.substring(1);\n const msg = atRoot\n ? `${name} must end with a ${expectedEnd}`\n : `${name} in block collection must be sufficiently indented and end with a ${expectedEnd}`;\n onError(offset, atRoot ? 'MISSING_CHAR' : 'BAD_INDENT', msg);\n if (ce && ce.source.length !== 1)\n ee.unshift(ce);\n }\n if (ee.length > 0) {\n const end = resolveEnd.resolveEnd(ee, cePos, ctx.options.strict, onError);\n if (end.comment) {\n if (coll.comment)\n coll.comment += '\\n' + end.comment;\n else\n coll.comment = end.comment;\n }\n coll.range = [fc.offset, cePos, end.offset];\n }\n else {\n coll.range = [fc.offset, cePos, cePos];\n }\n return coll;\n}\n\nexports.resolveFlowCollection = resolveFlowCollection;\n","'use strict';\n\nvar identity = require('../nodes/identity.js');\nvar Scalar = require('../nodes/Scalar.js');\nvar YAMLMap = require('../nodes/YAMLMap.js');\nvar YAMLSeq = require('../nodes/YAMLSeq.js');\nvar resolveBlockMap = require('./resolve-block-map.js');\nvar resolveBlockSeq = require('./resolve-block-seq.js');\nvar resolveFlowCollection = require('./resolve-flow-collection.js');\n\nfunction resolveCollection(CN, ctx, token, onError, tagName, tag) {\n const coll = token.type === 'block-map'\n ? resolveBlockMap.resolveBlockMap(CN, ctx, token, onError, tag)\n : token.type === 'block-seq'\n ? resolveBlockSeq.resolveBlockSeq(CN, ctx, token, onError, tag)\n : resolveFlowCollection.resolveFlowCollection(CN, ctx, token, onError, tag);\n const Coll = coll.constructor;\n // If we got a tagName matching the class, or the tag name is '!',\n // then use the tagName from the node class used to create it.\n if (tagName === '!' || tagName === Coll.tagName) {\n coll.tag = Coll.tagName;\n return coll;\n }\n if (tagName)\n coll.tag = tagName;\n return coll;\n}\nfunction composeCollection(CN, ctx, token, props, onError) {\n const tagToken = props.tag;\n const tagName = !tagToken\n ? null\n : ctx.directives.tagName(tagToken.source, msg => onError(tagToken, 'TAG_RESOLVE_FAILED', msg));\n if (token.type === 'block-seq') {\n const { anchor, newlineAfterProp: nl } = props;\n const lastProp = anchor && tagToken\n ? anchor.offset > tagToken.offset\n ? anchor\n : tagToken\n : (anchor ?? tagToken);\n if (lastProp && (!nl || nl.offset < lastProp.offset)) {\n const message = 'Missing newline after block sequence props';\n onError(lastProp, 'MISSING_CHAR', message);\n }\n }\n const expType = token.type === 'block-map'\n ? 'map'\n : token.type === 'block-seq'\n ? 'seq'\n : token.start.source === '{'\n ? 'map'\n : 'seq';\n // shortcut: check if it's a generic YAMLMap or YAMLSeq\n // before jumping into the custom tag logic.\n if (!tagToken ||\n !tagName ||\n tagName === '!' ||\n (tagName === YAMLMap.YAMLMap.tagName && expType === 'map') ||\n (tagName === YAMLSeq.YAMLSeq.tagName && expType === 'seq')) {\n return resolveCollection(CN, ctx, token, onError, tagName);\n }\n let tag = ctx.schema.tags.find(t => t.tag === tagName && t.collection === expType);\n if (!tag) {\n const kt = ctx.schema.knownTags[tagName];\n if (kt?.collection === expType) {\n ctx.schema.tags.push(Object.assign({}, kt, { default: false }));\n tag = kt;\n }\n else {\n if (kt) {\n onError(tagToken, 'BAD_COLLECTION_TYPE', `${kt.tag} used for ${expType} collection, but expects ${kt.collection ?? 'scalar'}`, true);\n }\n else {\n onError(tagToken, 'TAG_RESOLVE_FAILED', `Unresolved tag: ${tagName}`, true);\n }\n return resolveCollection(CN, ctx, token, onError, tagName);\n }\n }\n const coll = resolveCollection(CN, ctx, token, onError, tagName, tag);\n const res = tag.resolve?.(coll, msg => onError(tagToken, 'TAG_RESOLVE_FAILED', msg), ctx.options) ?? coll;\n const node = identity.isNode(res)\n ? res\n : new Scalar.Scalar(res);\n node.range = coll.range;\n node.tag = tagName;\n if (tag?.format)\n node.format = tag.format;\n return node;\n}\n\nexports.composeCollection = composeCollection;\n","'use strict';\n\nvar Scalar = require('../nodes/Scalar.js');\n\nfunction resolveBlockScalar(ctx, scalar, onError) {\n const start = scalar.offset;\n const header = parseBlockScalarHeader(scalar, ctx.options.strict, onError);\n if (!header)\n return { value: '', type: null, comment: '', range: [start, start, start] };\n const type = header.mode === '>' ? Scalar.Scalar.BLOCK_FOLDED : Scalar.Scalar.BLOCK_LITERAL;\n const lines = scalar.source ? splitLines(scalar.source) : [];\n // determine the end of content & start of chomping\n let chompStart = lines.length;\n for (let i = lines.length - 1; i >= 0; --i) {\n const content = lines[i][1];\n if (content === '' || content === '\\r')\n chompStart = i;\n else\n break;\n }\n // shortcut for empty contents\n if (chompStart === 0) {\n const value = header.chomp === '+' && lines.length > 0\n ? '\\n'.repeat(Math.max(1, lines.length - 1))\n : '';\n let end = start + header.length;\n if (scalar.source)\n end += scalar.source.length;\n return { value, type, comment: header.comment, range: [start, end, end] };\n }\n // find the indentation level to trim from start\n let trimIndent = scalar.indent + header.indent;\n let offset = scalar.offset + header.length;\n let contentStart = 0;\n for (let i = 0; i < chompStart; ++i) {\n const [indent, content] = lines[i];\n if (content === '' || content === '\\r') {\n if (header.indent === 0 && indent.length > trimIndent)\n trimIndent = indent.length;\n }\n else {\n if (indent.length < trimIndent) {\n const message = 'Block scalars with more-indented leading empty lines must use an explicit indentation indicator';\n onError(offset + indent.length, 'MISSING_CHAR', message);\n }\n if (header.indent === 0)\n trimIndent = indent.length;\n contentStart = i;\n if (trimIndent === 0 && !ctx.atRoot) {\n const message = 'Block scalar values in collections must be indented';\n onError(offset, 'BAD_INDENT', message);\n }\n break;\n }\n offset += indent.length + content.length + 1;\n }\n // include trailing more-indented empty lines in content\n for (let i = lines.length - 1; i >= chompStart; --i) {\n if (lines[i][0].length > trimIndent)\n chompStart = i + 1;\n }\n let value = '';\n let sep = '';\n let prevMoreIndented = false;\n // leading whitespace is kept intact\n for (let i = 0; i < contentStart; ++i)\n value += lines[i][0].slice(trimIndent) + '\\n';\n for (let i = contentStart; i < chompStart; ++i) {\n let [indent, content] = lines[i];\n offset += indent.length + content.length + 1;\n const crlf = content[content.length - 1] === '\\r';\n if (crlf)\n content = content.slice(0, -1);\n /* istanbul ignore if already caught in lexer */\n if (content && indent.length < trimIndent) {\n const src = header.indent\n ? 'explicit indentation indicator'\n : 'first line';\n const message = `Block scalar lines must not be less indented than their ${src}`;\n onError(offset - content.length - (crlf ? 2 : 1), 'BAD_INDENT', message);\n indent = '';\n }\n if (type === Scalar.Scalar.BLOCK_LITERAL) {\n value += sep + indent.slice(trimIndent) + content;\n sep = '\\n';\n }\n else if (indent.length > trimIndent || content[0] === '\\t') {\n // more-indented content within a folded block\n if (sep === ' ')\n sep = '\\n';\n else if (!prevMoreIndented && sep === '\\n')\n sep = '\\n\\n';\n value += sep + indent.slice(trimIndent) + content;\n sep = '\\n';\n prevMoreIndented = true;\n }\n else if (content === '') {\n // empty line\n if (sep === '\\n')\n value += '\\n';\n else\n sep = '\\n';\n }\n else {\n value += sep + content;\n sep = ' ';\n prevMoreIndented = false;\n }\n }\n switch (header.chomp) {\n case '-':\n break;\n case '+':\n for (let i = chompStart; i < lines.length; ++i)\n value += '\\n' + lines[i][0].slice(trimIndent);\n if (value[value.length - 1] !== '\\n')\n value += '\\n';\n break;\n default:\n value += '\\n';\n }\n const end = start + header.length + scalar.source.length;\n return { value, type, comment: header.comment, range: [start, end, end] };\n}\nfunction parseBlockScalarHeader({ offset, props }, strict, onError) {\n /* istanbul ignore if should not happen */\n if (props[0].type !== 'block-scalar-header') {\n onError(props[0], 'IMPOSSIBLE', 'Block scalar header not found');\n return null;\n }\n const { source } = props[0];\n const mode = source[0];\n let indent = 0;\n let chomp = '';\n let error = -1;\n for (let i = 1; i < source.length; ++i) {\n const ch = source[i];\n if (!chomp && (ch === '-' || ch === '+'))\n chomp = ch;\n else {\n const n = Number(ch);\n if (!indent && n)\n indent = n;\n else if (error === -1)\n error = offset + i;\n }\n }\n if (error !== -1)\n onError(error, 'UNEXPECTED_TOKEN', `Block scalar header includes extra characters: ${source}`);\n let hasSpace = false;\n let comment = '';\n let length = source.length;\n for (let i = 1; i < props.length; ++i) {\n const token = props[i];\n switch (token.type) {\n case 'space':\n hasSpace = true;\n // fallthrough\n case 'newline':\n length += token.source.length;\n break;\n case 'comment':\n if (strict && !hasSpace) {\n const message = 'Comments must be separated from other tokens by white space characters';\n onError(token, 'MISSING_CHAR', message);\n }\n length += token.source.length;\n comment = token.source.substring(1);\n break;\n case 'error':\n onError(token, 'UNEXPECTED_TOKEN', token.message);\n length += token.source.length;\n break;\n /* istanbul ignore next should not happen */\n default: {\n const message = `Unexpected token in block scalar header: ${token.type}`;\n onError(token, 'UNEXPECTED_TOKEN', message);\n const ts = token.source;\n if (ts && typeof ts === 'string')\n length += ts.length;\n }\n }\n }\n return { mode, indent, chomp, comment, length };\n}\n/** @returns Array of lines split up as `[indent, content]` */\nfunction splitLines(source) {\n const split = source.split(/\\n( *)/);\n const first = split[0];\n const m = first.match(/^( *)/);\n const line0 = m?.[1]\n ? [m[1], first.slice(m[1].length)]\n : ['', first];\n const lines = [line0];\n for (let i = 1; i < split.length; i += 2)\n lines.push([split[i], split[i + 1]]);\n return lines;\n}\n\nexports.resolveBlockScalar = resolveBlockScalar;\n","'use strict';\n\nvar Scalar = require('../nodes/Scalar.js');\nvar resolveEnd = require('./resolve-end.js');\n\nfunction resolveFlowScalar(scalar, strict, onError) {\n const { offset, type, source, end } = scalar;\n let _type;\n let value;\n const _onError = (rel, code, msg) => onError(offset + rel, code, msg);\n switch (type) {\n case 'scalar':\n _type = Scalar.Scalar.PLAIN;\n value = plainValue(source, _onError);\n break;\n case 'single-quoted-scalar':\n _type = Scalar.Scalar.QUOTE_SINGLE;\n value = singleQuotedValue(source, _onError);\n break;\n case 'double-quoted-scalar':\n _type = Scalar.Scalar.QUOTE_DOUBLE;\n value = doubleQuotedValue(source, _onError);\n break;\n /* istanbul ignore next should not happen */\n default:\n onError(scalar, 'UNEXPECTED_TOKEN', `Expected a flow scalar value, but found: ${type}`);\n return {\n value: '',\n type: null,\n comment: '',\n range: [offset, offset + source.length, offset + source.length]\n };\n }\n const valueEnd = offset + source.length;\n const re = resolveEnd.resolveEnd(end, valueEnd, strict, onError);\n return {\n value,\n type: _type,\n comment: re.comment,\n range: [offset, valueEnd, re.offset]\n };\n}\nfunction plainValue(source, onError) {\n let badChar = '';\n switch (source[0]) {\n /* istanbul ignore next should not happen */\n case '\\t':\n badChar = 'a tab character';\n break;\n case ',':\n badChar = 'flow indicator character ,';\n break;\n case '%':\n badChar = 'directive indicator character %';\n break;\n case '|':\n case '>': {\n badChar = `block scalar indicator ${source[0]}`;\n break;\n }\n case '@':\n case '`': {\n badChar = `reserved character ${source[0]}`;\n break;\n }\n }\n if (badChar)\n onError(0, 'BAD_SCALAR_START', `Plain value cannot start with ${badChar}`);\n return foldLines(source);\n}\nfunction singleQuotedValue(source, onError) {\n if (source[source.length - 1] !== \"'\" || source.length === 1)\n onError(source.length, 'MISSING_CHAR', \"Missing closing 'quote\");\n return foldLines(source.slice(1, -1)).replace(/''/g, \"'\");\n}\nfunction foldLines(source) {\n /**\n * The negative lookbehind here and in the `re` RegExp is to\n * prevent causing a polynomial search time in certain cases.\n *\n * The try-catch is for Safari, which doesn't support this yet:\n * https://caniuse.com/js-regexp-lookbehind\n */\n let first, line;\n try {\n first = new RegExp('(.*?)(? wsStart ? source.slice(wsStart, i + 1) : ch;\n }\n else {\n res += ch;\n }\n }\n if (source[source.length - 1] !== '\"' || source.length === 1)\n onError(source.length, 'MISSING_CHAR', 'Missing closing \"quote');\n return res;\n}\n/**\n * Fold a single newline into a space, multiple newlines to N - 1 newlines.\n * Presumes `source[offset] === '\\n'`\n */\nfunction foldNewline(source, offset) {\n let fold = '';\n let ch = source[offset + 1];\n while (ch === ' ' || ch === '\\t' || ch === '\\n' || ch === '\\r') {\n if (ch === '\\r' && source[offset + 2] !== '\\n')\n break;\n if (ch === '\\n')\n fold += '\\n';\n offset += 1;\n ch = source[offset + 1];\n }\n if (!fold)\n fold = ' ';\n return { fold, offset };\n}\nconst escapeCodes = {\n '0': '\\0', // null character\n a: '\\x07', // bell character\n b: '\\b', // backspace\n e: '\\x1b', // escape character\n f: '\\f', // form feed\n n: '\\n', // line feed\n r: '\\r', // carriage return\n t: '\\t', // horizontal tab\n v: '\\v', // vertical tab\n N: '\\u0085', // Unicode next line\n _: '\\u00a0', // Unicode non-breaking space\n L: '\\u2028', // Unicode line separator\n P: '\\u2029', // Unicode paragraph separator\n ' ': ' ',\n '\"': '\"',\n '/': '/',\n '\\\\': '\\\\',\n '\\t': '\\t'\n};\nfunction parseCharCode(source, offset, length, onError) {\n const cc = source.substr(offset, length);\n const ok = cc.length === length && /^[0-9a-fA-F]+$/.test(cc);\n const code = ok ? parseInt(cc, 16) : NaN;\n if (isNaN(code)) {\n const raw = source.substr(offset - 2, length + 2);\n onError(offset - 2, 'BAD_DQ_ESCAPE', `Invalid escape sequence ${raw}`);\n return raw;\n }\n return String.fromCodePoint(code);\n}\n\nexports.resolveFlowScalar = resolveFlowScalar;\n","'use strict';\n\nvar identity = require('../nodes/identity.js');\nvar Scalar = require('../nodes/Scalar.js');\nvar resolveBlockScalar = require('./resolve-block-scalar.js');\nvar resolveFlowScalar = require('./resolve-flow-scalar.js');\n\nfunction composeScalar(ctx, token, tagToken, onError) {\n const { value, type, comment, range } = token.type === 'block-scalar'\n ? resolveBlockScalar.resolveBlockScalar(ctx, token, onError)\n : resolveFlowScalar.resolveFlowScalar(token, ctx.options.strict, onError);\n const tagName = tagToken\n ? ctx.directives.tagName(tagToken.source, msg => onError(tagToken, 'TAG_RESOLVE_FAILED', msg))\n : null;\n let tag;\n if (ctx.options.stringKeys && ctx.atKey) {\n tag = ctx.schema[identity.SCALAR];\n }\n else if (tagName)\n tag = findScalarTagByName(ctx.schema, value, tagName, tagToken, onError);\n else if (token.type === 'scalar')\n tag = findScalarTagByTest(ctx, value, token, onError);\n else\n tag = ctx.schema[identity.SCALAR];\n let scalar;\n try {\n const res = tag.resolve(value, msg => onError(tagToken ?? token, 'TAG_RESOLVE_FAILED', msg), ctx.options);\n scalar = identity.isScalar(res) ? res : new Scalar.Scalar(res);\n }\n catch (error) {\n const msg = error instanceof Error ? error.message : String(error);\n onError(tagToken ?? token, 'TAG_RESOLVE_FAILED', msg);\n scalar = new Scalar.Scalar(value);\n }\n scalar.range = range;\n scalar.source = value;\n if (type)\n scalar.type = type;\n if (tagName)\n scalar.tag = tagName;\n if (tag.format)\n scalar.format = tag.format;\n if (comment)\n scalar.comment = comment;\n return scalar;\n}\nfunction findScalarTagByName(schema, value, tagName, tagToken, onError) {\n if (tagName === '!')\n return schema[identity.SCALAR]; // non-specific tag\n const matchWithTest = [];\n for (const tag of schema.tags) {\n if (!tag.collection && tag.tag === tagName) {\n if (tag.default && tag.test)\n matchWithTest.push(tag);\n else\n return tag;\n }\n }\n for (const tag of matchWithTest)\n if (tag.test?.test(value))\n return tag;\n const kt = schema.knownTags[tagName];\n if (kt && !kt.collection) {\n // Ensure that the known tag is available for stringifying,\n // but does not get used by default.\n schema.tags.push(Object.assign({}, kt, { default: false, test: undefined }));\n return kt;\n }\n onError(tagToken, 'TAG_RESOLVE_FAILED', `Unresolved tag: ${tagName}`, tagName !== 'tag:yaml.org,2002:str');\n return schema[identity.SCALAR];\n}\nfunction findScalarTagByTest({ atKey, directives, schema }, value, token, onError) {\n const tag = schema.tags.find(tag => (tag.default === true || (atKey && tag.default === 'key')) &&\n tag.test?.test(value)) || schema[identity.SCALAR];\n if (schema.compat) {\n const compat = schema.compat.find(tag => tag.default && tag.test?.test(value)) ??\n schema[identity.SCALAR];\n if (tag.tag !== compat.tag) {\n const ts = directives.tagString(tag.tag);\n const cs = directives.tagString(compat.tag);\n const msg = `Value may be parsed as either ${ts} or ${cs}`;\n onError(token, 'TAG_RESOLVE_FAILED', msg, true);\n }\n }\n return tag;\n}\n\nexports.composeScalar = composeScalar;\n","'use strict';\n\nfunction emptyScalarPosition(offset, before, pos) {\n if (before) {\n pos ?? (pos = before.length);\n for (let i = pos - 1; i >= 0; --i) {\n let st = before[i];\n switch (st.type) {\n case 'space':\n case 'comment':\n case 'newline':\n offset -= st.source.length;\n continue;\n }\n // Technically, an empty scalar is immediately after the last non-empty\n // node, but it's more useful to place it after any whitespace.\n st = before[++i];\n while (st?.type === 'space') {\n offset += st.source.length;\n st = before[++i];\n }\n break;\n }\n }\n return offset;\n}\n\nexports.emptyScalarPosition = emptyScalarPosition;\n","'use strict';\n\nvar Alias = require('../nodes/Alias.js');\nvar identity = require('../nodes/identity.js');\nvar composeCollection = require('./compose-collection.js');\nvar composeScalar = require('./compose-scalar.js');\nvar resolveEnd = require('./resolve-end.js');\nvar utilEmptyScalarPosition = require('./util-empty-scalar-position.js');\n\nconst CN = { composeNode, composeEmptyNode };\nfunction composeNode(ctx, token, props, onError) {\n const atKey = ctx.atKey;\n const { spaceBefore, comment, anchor, tag } = props;\n let node;\n let isSrcToken = true;\n switch (token.type) {\n case 'alias':\n node = composeAlias(ctx, token, onError);\n if (anchor || tag)\n onError(token, 'ALIAS_PROPS', 'An alias node must not specify any properties');\n break;\n case 'scalar':\n case 'single-quoted-scalar':\n case 'double-quoted-scalar':\n case 'block-scalar':\n node = composeScalar.composeScalar(ctx, token, tag, onError);\n if (anchor)\n node.anchor = anchor.source.substring(1);\n break;\n case 'block-map':\n case 'block-seq':\n case 'flow-collection':\n node = composeCollection.composeCollection(CN, ctx, token, props, onError);\n if (anchor)\n node.anchor = anchor.source.substring(1);\n break;\n default: {\n const message = token.type === 'error'\n ? token.message\n : `Unsupported token (type: ${token.type})`;\n onError(token, 'UNEXPECTED_TOKEN', message);\n node = composeEmptyNode(ctx, token.offset, undefined, null, props, onError);\n isSrcToken = false;\n }\n }\n if (anchor && node.anchor === '')\n onError(anchor, 'BAD_ALIAS', 'Anchor cannot be an empty string');\n if (atKey &&\n ctx.options.stringKeys &&\n (!identity.isScalar(node) ||\n typeof node.value !== 'string' ||\n (node.tag && node.tag !== 'tag:yaml.org,2002:str'))) {\n const msg = 'With stringKeys, all keys must be strings';\n onError(tag ?? token, 'NON_STRING_KEY', msg);\n }\n if (spaceBefore)\n node.spaceBefore = true;\n if (comment) {\n if (token.type === 'scalar' && token.source === '')\n node.comment = comment;\n else\n node.commentBefore = comment;\n }\n // @ts-expect-error Type checking misses meaning of isSrcToken\n if (ctx.options.keepSourceTokens && isSrcToken)\n node.srcToken = token;\n return node;\n}\nfunction composeEmptyNode(ctx, offset, before, pos, { spaceBefore, comment, anchor, tag, end }, onError) {\n const token = {\n type: 'scalar',\n offset: utilEmptyScalarPosition.emptyScalarPosition(offset, before, pos),\n indent: -1,\n source: ''\n };\n const node = composeScalar.composeScalar(ctx, token, tag, onError);\n if (anchor) {\n node.anchor = anchor.source.substring(1);\n if (node.anchor === '')\n onError(anchor, 'BAD_ALIAS', 'Anchor cannot be an empty string');\n }\n if (spaceBefore)\n node.spaceBefore = true;\n if (comment) {\n node.comment = comment;\n node.range[2] = end;\n }\n return node;\n}\nfunction composeAlias({ options }, { offset, source, end }, onError) {\n const alias = new Alias.Alias(source.substring(1));\n if (alias.source === '')\n onError(offset, 'BAD_ALIAS', 'Alias cannot be an empty string');\n if (alias.source.endsWith(':'))\n onError(offset + source.length - 1, 'BAD_ALIAS', 'Alias ending in : is ambiguous', true);\n const valueEnd = offset + source.length;\n const re = resolveEnd.resolveEnd(end, valueEnd, options.strict, onError);\n alias.range = [offset, valueEnd, re.offset];\n if (re.comment)\n alias.comment = re.comment;\n return alias;\n}\n\nexports.composeEmptyNode = composeEmptyNode;\nexports.composeNode = composeNode;\n","'use strict';\n\nvar Document = require('../doc/Document.js');\nvar composeNode = require('./compose-node.js');\nvar resolveEnd = require('./resolve-end.js');\nvar resolveProps = require('./resolve-props.js');\n\nfunction composeDoc(options, directives, { offset, start, value, end }, onError) {\n const opts = Object.assign({ _directives: directives }, options);\n const doc = new Document.Document(undefined, opts);\n const ctx = {\n atKey: false,\n atRoot: true,\n directives: doc.directives,\n options: doc.options,\n schema: doc.schema\n };\n const props = resolveProps.resolveProps(start, {\n indicator: 'doc-start',\n next: value ?? end?.[0],\n offset,\n onError,\n parentIndent: 0,\n startOnNewline: true\n });\n if (props.found) {\n doc.directives.docStart = true;\n if (value &&\n (value.type === 'block-map' || value.type === 'block-seq') &&\n !props.hasNewline)\n onError(props.end, 'MISSING_CHAR', 'Block collection cannot start on same line with directives-end marker');\n }\n // @ts-expect-error If Contents is set, let's trust the user\n doc.contents = value\n ? composeNode.composeNode(ctx, value, props, onError)\n : composeNode.composeEmptyNode(ctx, props.end, start, null, props, onError);\n const contentEnd = doc.contents.range[2];\n const re = resolveEnd.resolveEnd(end, contentEnd, false, onError);\n if (re.comment)\n doc.comment = re.comment;\n doc.range = [offset, contentEnd, re.offset];\n return doc;\n}\n\nexports.composeDoc = composeDoc;\n","'use strict';\n\nvar node_process = require('process');\nvar directives = require('../doc/directives.js');\nvar Document = require('../doc/Document.js');\nvar errors = require('../errors.js');\nvar identity = require('../nodes/identity.js');\nvar composeDoc = require('./compose-doc.js');\nvar resolveEnd = require('./resolve-end.js');\n\nfunction getErrorPos(src) {\n if (typeof src === 'number')\n return [src, src + 1];\n if (Array.isArray(src))\n return src.length === 2 ? src : [src[0], src[1]];\n const { offset, source } = src;\n return [offset, offset + (typeof source === 'string' ? source.length : 1)];\n}\nfunction parsePrelude(prelude) {\n let comment = '';\n let atComment = false;\n let afterEmptyLine = false;\n for (let i = 0; i < prelude.length; ++i) {\n const source = prelude[i];\n switch (source[0]) {\n case '#':\n comment +=\n (comment === '' ? '' : afterEmptyLine ? '\\n\\n' : '\\n') +\n (source.substring(1) || ' ');\n atComment = true;\n afterEmptyLine = false;\n break;\n case '%':\n if (prelude[i + 1]?.[0] !== '#')\n i += 1;\n atComment = false;\n break;\n default:\n // This may be wrong after doc-end, but in that case it doesn't matter\n if (!atComment)\n afterEmptyLine = true;\n atComment = false;\n }\n }\n return { comment, afterEmptyLine };\n}\n/**\n * Compose a stream of CST nodes into a stream of YAML Documents.\n *\n * ```ts\n * import { Composer, Parser } from 'yaml'\n *\n * const src: string = ...\n * const tokens = new Parser().parse(src)\n * const docs = new Composer().compose(tokens)\n * ```\n */\nclass Composer {\n constructor(options = {}) {\n this.doc = null;\n this.atDirectives = false;\n this.prelude = [];\n this.errors = [];\n this.warnings = [];\n this.onError = (source, code, message, warning) => {\n const pos = getErrorPos(source);\n if (warning)\n this.warnings.push(new errors.YAMLWarning(pos, code, message));\n else\n this.errors.push(new errors.YAMLParseError(pos, code, message));\n };\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n this.directives = new directives.Directives({ version: options.version || '1.2' });\n this.options = options;\n }\n decorate(doc, afterDoc) {\n const { comment, afterEmptyLine } = parsePrelude(this.prelude);\n //console.log({ dc: doc.comment, prelude, comment })\n if (comment) {\n const dc = doc.contents;\n if (afterDoc) {\n doc.comment = doc.comment ? `${doc.comment}\\n${comment}` : comment;\n }\n else if (afterEmptyLine || doc.directives.docStart || !dc) {\n doc.commentBefore = comment;\n }\n else if (identity.isCollection(dc) && !dc.flow && dc.items.length > 0) {\n let it = dc.items[0];\n if (identity.isPair(it))\n it = it.key;\n const cb = it.commentBefore;\n it.commentBefore = cb ? `${comment}\\n${cb}` : comment;\n }\n else {\n const cb = dc.commentBefore;\n dc.commentBefore = cb ? `${comment}\\n${cb}` : comment;\n }\n }\n if (afterDoc) {\n Array.prototype.push.apply(doc.errors, this.errors);\n Array.prototype.push.apply(doc.warnings, this.warnings);\n }\n else {\n doc.errors = this.errors;\n doc.warnings = this.warnings;\n }\n this.prelude = [];\n this.errors = [];\n this.warnings = [];\n }\n /**\n * Current stream status information.\n *\n * Mostly useful at the end of input for an empty stream.\n */\n streamInfo() {\n return {\n comment: parsePrelude(this.prelude).comment,\n directives: this.directives,\n errors: this.errors,\n warnings: this.warnings\n };\n }\n /**\n * Compose tokens into documents.\n *\n * @param forceDoc - If the stream contains no document, still emit a final document including any comments and directives that would be applied to a subsequent document.\n * @param endOffset - Should be set if `forceDoc` is also set, to set the document range end and to indicate errors correctly.\n */\n *compose(tokens, forceDoc = false, endOffset = -1) {\n for (const token of tokens)\n yield* this.next(token);\n yield* this.end(forceDoc, endOffset);\n }\n /** Advance the composer by one CST token. */\n *next(token) {\n if (node_process.env.LOG_STREAM)\n console.dir(token, { depth: null });\n switch (token.type) {\n case 'directive':\n this.directives.add(token.source, (offset, message, warning) => {\n const pos = getErrorPos(token);\n pos[0] += offset;\n this.onError(pos, 'BAD_DIRECTIVE', message, warning);\n });\n this.prelude.push(token.source);\n this.atDirectives = true;\n break;\n case 'document': {\n const doc = composeDoc.composeDoc(this.options, this.directives, token, this.onError);\n if (this.atDirectives && !doc.directives.docStart)\n this.onError(token, 'MISSING_CHAR', 'Missing directives-end/doc-start indicator line');\n this.decorate(doc, false);\n if (this.doc)\n yield this.doc;\n this.doc = doc;\n this.atDirectives = false;\n break;\n }\n case 'byte-order-mark':\n case 'space':\n break;\n case 'comment':\n case 'newline':\n this.prelude.push(token.source);\n break;\n case 'error': {\n const msg = token.source\n ? `${token.message}: ${JSON.stringify(token.source)}`\n : token.message;\n const error = new errors.YAMLParseError(getErrorPos(token), 'UNEXPECTED_TOKEN', msg);\n if (this.atDirectives || !this.doc)\n this.errors.push(error);\n else\n this.doc.errors.push(error);\n break;\n }\n case 'doc-end': {\n if (!this.doc) {\n const msg = 'Unexpected doc-end without preceding document';\n this.errors.push(new errors.YAMLParseError(getErrorPos(token), 'UNEXPECTED_TOKEN', msg));\n break;\n }\n this.doc.directives.docEnd = true;\n const end = resolveEnd.resolveEnd(token.end, token.offset + token.source.length, this.doc.options.strict, this.onError);\n this.decorate(this.doc, true);\n if (end.comment) {\n const dc = this.doc.comment;\n this.doc.comment = dc ? `${dc}\\n${end.comment}` : end.comment;\n }\n this.doc.range[2] = end.offset;\n break;\n }\n default:\n this.errors.push(new errors.YAMLParseError(getErrorPos(token), 'UNEXPECTED_TOKEN', `Unsupported token ${token.type}`));\n }\n }\n /**\n * Call at end of input to yield any remaining document.\n *\n * @param forceDoc - If the stream contains no document, still emit a final document including any comments and directives that would be applied to a subsequent document.\n * @param endOffset - Should be set if `forceDoc` is also set, to set the document range end and to indicate errors correctly.\n */\n *end(forceDoc = false, endOffset = -1) {\n if (this.doc) {\n this.decorate(this.doc, true);\n yield this.doc;\n this.doc = null;\n }\n else if (forceDoc) {\n const opts = Object.assign({ _directives: this.directives }, this.options);\n const doc = new Document.Document(undefined, opts);\n if (this.atDirectives)\n this.onError(endOffset, 'MISSING_CHAR', 'Missing directives-end indicator line');\n doc.range = [0, endOffset, endOffset];\n this.decorate(doc, false);\n yield doc;\n }\n }\n}\n\nexports.Composer = Composer;\n","'use strict';\n\nvar resolveBlockScalar = require('../compose/resolve-block-scalar.js');\nvar resolveFlowScalar = require('../compose/resolve-flow-scalar.js');\nvar errors = require('../errors.js');\nvar stringifyString = require('../stringify/stringifyString.js');\n\nfunction resolveAsScalar(token, strict = true, onError) {\n if (token) {\n const _onError = (pos, code, message) => {\n const offset = typeof pos === 'number' ? pos : Array.isArray(pos) ? pos[0] : pos.offset;\n if (onError)\n onError(offset, code, message);\n else\n throw new errors.YAMLParseError([offset, offset + 1], code, message);\n };\n switch (token.type) {\n case 'scalar':\n case 'single-quoted-scalar':\n case 'double-quoted-scalar':\n return resolveFlowScalar.resolveFlowScalar(token, strict, _onError);\n case 'block-scalar':\n return resolveBlockScalar.resolveBlockScalar({ options: { strict } }, token, _onError);\n }\n }\n return null;\n}\n/**\n * Create a new scalar token with `value`\n *\n * Values that represent an actual string but may be parsed as a different type should use a `type` other than `'PLAIN'`,\n * as this function does not support any schema operations and won't check for such conflicts.\n *\n * @param value The string representation of the value, which will have its content properly indented.\n * @param context.end Comments and whitespace after the end of the value, or after the block scalar header. If undefined, a newline will be added.\n * @param context.implicitKey Being within an implicit key may affect the resolved type of the token's value.\n * @param context.indent The indent level of the token.\n * @param context.inFlow Is this scalar within a flow collection? This may affect the resolved type of the token's value.\n * @param context.offset The offset position of the token.\n * @param context.type The preferred type of the scalar token. If undefined, the previous type of the `token` will be used, defaulting to `'PLAIN'`.\n */\nfunction createScalarToken(value, context) {\n const { implicitKey = false, indent, inFlow = false, offset = -1, type = 'PLAIN' } = context;\n const source = stringifyString.stringifyString({ type, value }, {\n implicitKey,\n indent: indent > 0 ? ' '.repeat(indent) : '',\n inFlow,\n options: { blockQuote: true, lineWidth: -1 }\n });\n const end = context.end ?? [\n { type: 'newline', offset: -1, indent, source: '\\n' }\n ];\n switch (source[0]) {\n case '|':\n case '>': {\n const he = source.indexOf('\\n');\n const head = source.substring(0, he);\n const body = source.substring(he + 1) + '\\n';\n const props = [\n { type: 'block-scalar-header', offset, indent, source: head }\n ];\n if (!addEndtoBlockProps(props, end))\n props.push({ type: 'newline', offset: -1, indent, source: '\\n' });\n return { type: 'block-scalar', offset, indent, props, source: body };\n }\n case '\"':\n return { type: 'double-quoted-scalar', offset, indent, source, end };\n case \"'\":\n return { type: 'single-quoted-scalar', offset, indent, source, end };\n default:\n return { type: 'scalar', offset, indent, source, end };\n }\n}\n/**\n * Set the value of `token` to the given string `value`, overwriting any previous contents and type that it may have.\n *\n * Best efforts are made to retain any comments previously associated with the `token`,\n * though all contents within a collection's `items` will be overwritten.\n *\n * Values that represent an actual string but may be parsed as a different type should use a `type` other than `'PLAIN'`,\n * as this function does not support any schema operations and won't check for such conflicts.\n *\n * @param token Any token. If it does not include an `indent` value, the value will be stringified as if it were an implicit key.\n * @param value The string representation of the value, which will have its content properly indented.\n * @param context.afterKey In most cases, values after a key should have an additional level of indentation.\n * @param context.implicitKey Being within an implicit key may affect the resolved type of the token's value.\n * @param context.inFlow Being within a flow collection may affect the resolved type of the token's value.\n * @param context.type The preferred type of the scalar token. If undefined, the previous type of the `token` will be used, defaulting to `'PLAIN'`.\n */\nfunction setScalarValue(token, value, context = {}) {\n let { afterKey = false, implicitKey = false, inFlow = false, type } = context;\n let indent = 'indent' in token ? token.indent : null;\n if (afterKey && typeof indent === 'number')\n indent += 2;\n if (!type)\n switch (token.type) {\n case 'single-quoted-scalar':\n type = 'QUOTE_SINGLE';\n break;\n case 'double-quoted-scalar':\n type = 'QUOTE_DOUBLE';\n break;\n case 'block-scalar': {\n const header = token.props[0];\n if (header.type !== 'block-scalar-header')\n throw new Error('Invalid block scalar header');\n type = header.source[0] === '>' ? 'BLOCK_FOLDED' : 'BLOCK_LITERAL';\n break;\n }\n default:\n type = 'PLAIN';\n }\n const source = stringifyString.stringifyString({ type, value }, {\n implicitKey: implicitKey || indent === null,\n indent: indent !== null && indent > 0 ? ' '.repeat(indent) : '',\n inFlow,\n options: { blockQuote: true, lineWidth: -1 }\n });\n switch (source[0]) {\n case '|':\n case '>':\n setBlockScalarValue(token, source);\n break;\n case '\"':\n setFlowScalarValue(token, source, 'double-quoted-scalar');\n break;\n case \"'\":\n setFlowScalarValue(token, source, 'single-quoted-scalar');\n break;\n default:\n setFlowScalarValue(token, source, 'scalar');\n }\n}\nfunction setBlockScalarValue(token, source) {\n const he = source.indexOf('\\n');\n const head = source.substring(0, he);\n const body = source.substring(he + 1) + '\\n';\n if (token.type === 'block-scalar') {\n const header = token.props[0];\n if (header.type !== 'block-scalar-header')\n throw new Error('Invalid block scalar header');\n header.source = head;\n token.source = body;\n }\n else {\n const { offset } = token;\n const indent = 'indent' in token ? token.indent : -1;\n const props = [\n { type: 'block-scalar-header', offset, indent, source: head }\n ];\n if (!addEndtoBlockProps(props, 'end' in token ? token.end : undefined))\n props.push({ type: 'newline', offset: -1, indent, source: '\\n' });\n for (const key of Object.keys(token))\n if (key !== 'type' && key !== 'offset')\n delete token[key];\n Object.assign(token, { type: 'block-scalar', indent, props, source: body });\n }\n}\n/** @returns `true` if last token is a newline */\nfunction addEndtoBlockProps(props, end) {\n if (end)\n for (const st of end)\n switch (st.type) {\n case 'space':\n case 'comment':\n props.push(st);\n break;\n case 'newline':\n props.push(st);\n return true;\n }\n return false;\n}\nfunction setFlowScalarValue(token, source, type) {\n switch (token.type) {\n case 'scalar':\n case 'double-quoted-scalar':\n case 'single-quoted-scalar':\n token.type = type;\n token.source = source;\n break;\n case 'block-scalar': {\n const end = token.props.slice(1);\n let oa = source.length;\n if (token.props[0].type === 'block-scalar-header')\n oa -= token.props[0].source.length;\n for (const tok of end)\n tok.offset += oa;\n delete token.props;\n Object.assign(token, { type, source, end });\n break;\n }\n case 'block-map':\n case 'block-seq': {\n const offset = token.offset + source.length;\n const nl = { type: 'newline', offset, indent: token.indent, source: '\\n' };\n delete token.items;\n Object.assign(token, { type, source, end: [nl] });\n break;\n }\n default: {\n const indent = 'indent' in token ? token.indent : -1;\n const end = 'end' in token && Array.isArray(token.end)\n ? token.end.filter(st => st.type === 'space' ||\n st.type === 'comment' ||\n st.type === 'newline')\n : [];\n for (const key of Object.keys(token))\n if (key !== 'type' && key !== 'offset')\n delete token[key];\n Object.assign(token, { type, indent, source, end });\n }\n }\n}\n\nexports.createScalarToken = createScalarToken;\nexports.resolveAsScalar = resolveAsScalar;\nexports.setScalarValue = setScalarValue;\n","'use strict';\n\n/**\n * Stringify a CST document, token, or collection item\n *\n * Fair warning: This applies no validation whatsoever, and\n * simply concatenates the sources in their logical order.\n */\nconst stringify = (cst) => 'type' in cst ? stringifyToken(cst) : stringifyItem(cst);\nfunction stringifyToken(token) {\n switch (token.type) {\n case 'block-scalar': {\n let res = '';\n for (const tok of token.props)\n res += stringifyToken(tok);\n return res + token.source;\n }\n case 'block-map':\n case 'block-seq': {\n let res = '';\n for (const item of token.items)\n res += stringifyItem(item);\n return res;\n }\n case 'flow-collection': {\n let res = token.start.source;\n for (const item of token.items)\n res += stringifyItem(item);\n for (const st of token.end)\n res += st.source;\n return res;\n }\n case 'document': {\n let res = stringifyItem(token);\n if (token.end)\n for (const st of token.end)\n res += st.source;\n return res;\n }\n default: {\n let res = token.source;\n if ('end' in token && token.end)\n for (const st of token.end)\n res += st.source;\n return res;\n }\n }\n}\nfunction stringifyItem({ start, key, sep, value }) {\n let res = '';\n for (const st of start)\n res += st.source;\n if (key)\n res += stringifyToken(key);\n if (sep)\n for (const st of sep)\n res += st.source;\n if (value)\n res += stringifyToken(value);\n return res;\n}\n\nexports.stringify = stringify;\n","'use strict';\n\nconst BREAK = Symbol('break visit');\nconst SKIP = Symbol('skip children');\nconst REMOVE = Symbol('remove item');\n/**\n * Apply a visitor to a CST document or item.\n *\n * Walks through the tree (depth-first) starting from the root, calling a\n * `visitor` function with two arguments when entering each item:\n * - `item`: The current item, which included the following members:\n * - `start: SourceToken[]` – Source tokens before the key or value,\n * possibly including its anchor or tag.\n * - `key?: Token | null` – Set for pair values. May then be `null`, if\n * the key before the `:` separator is empty.\n * - `sep?: SourceToken[]` – Source tokens between the key and the value,\n * which should include the `:` map value indicator if `value` is set.\n * - `value?: Token` – The value of a sequence item, or of a map pair.\n * - `path`: The steps from the root to the current node, as an array of\n * `['key' | 'value', number]` tuples.\n *\n * The return value of the visitor may be used to control the traversal:\n * - `undefined` (default): Do nothing and continue\n * - `visit.SKIP`: Do not visit the children of this token, continue with\n * next sibling\n * - `visit.BREAK`: Terminate traversal completely\n * - `visit.REMOVE`: Remove the current item, then continue with the next one\n * - `number`: Set the index of the next step. This is useful especially if\n * the index of the current token has changed.\n * - `function`: Define the next visitor for this item. After the original\n * visitor is called on item entry, next visitors are called after handling\n * a non-empty `key` and when exiting the item.\n */\nfunction visit(cst, visitor) {\n if ('type' in cst && cst.type === 'document')\n cst = { start: cst.start, value: cst.value };\n _visit(Object.freeze([]), cst, visitor);\n}\n// Without the `as symbol` casts, TS declares these in the `visit`\n// namespace using `var`, but then complains about that because\n// `unique symbol` must be `const`.\n/** Terminate visit traversal completely */\nvisit.BREAK = BREAK;\n/** Do not visit the children of the current item */\nvisit.SKIP = SKIP;\n/** Remove the current item */\nvisit.REMOVE = REMOVE;\n/** Find the item at `path` from `cst` as the root */\nvisit.itemAtPath = (cst, path) => {\n let item = cst;\n for (const [field, index] of path) {\n const tok = item?.[field];\n if (tok && 'items' in tok) {\n item = tok.items[index];\n }\n else\n return undefined;\n }\n return item;\n};\n/**\n * Get the immediate parent collection of the item at `path` from `cst` as the root.\n *\n * Throws an error if the collection is not found, which should never happen if the item itself exists.\n */\nvisit.parentCollection = (cst, path) => {\n const parent = visit.itemAtPath(cst, path.slice(0, -1));\n const field = path[path.length - 1][0];\n const coll = parent?.[field];\n if (coll && 'items' in coll)\n return coll;\n throw new Error('Parent collection not found');\n};\nfunction _visit(path, item, visitor) {\n let ctrl = visitor(item, path);\n if (typeof ctrl === 'symbol')\n return ctrl;\n for (const field of ['key', 'value']) {\n const token = item[field];\n if (token && 'items' in token) {\n for (let i = 0; i < token.items.length; ++i) {\n const ci = _visit(Object.freeze(path.concat([[field, i]])), token.items[i], visitor);\n if (typeof ci === 'number')\n i = ci - 1;\n else if (ci === BREAK)\n return BREAK;\n else if (ci === REMOVE) {\n token.items.splice(i, 1);\n i -= 1;\n }\n }\n if (typeof ctrl === 'function' && field === 'key')\n ctrl = ctrl(item, path);\n }\n }\n return typeof ctrl === 'function' ? ctrl(item, path) : ctrl;\n}\n\nexports.visit = visit;\n","'use strict';\n\nvar cstScalar = require('./cst-scalar.js');\nvar cstStringify = require('./cst-stringify.js');\nvar cstVisit = require('./cst-visit.js');\n\n/** The byte order mark */\nconst BOM = '\\u{FEFF}';\n/** Start of doc-mode */\nconst DOCUMENT = '\\x02'; // C0: Start of Text\n/** Unexpected end of flow-mode */\nconst FLOW_END = '\\x18'; // C0: Cancel\n/** Next token is a scalar value */\nconst SCALAR = '\\x1f'; // C0: Unit Separator\n/** @returns `true` if `token` is a flow or block collection */\nconst isCollection = (token) => !!token && 'items' in token;\n/** @returns `true` if `token` is a flow or block scalar; not an alias */\nconst isScalar = (token) => !!token &&\n (token.type === 'scalar' ||\n token.type === 'single-quoted-scalar' ||\n token.type === 'double-quoted-scalar' ||\n token.type === 'block-scalar');\n/* istanbul ignore next */\n/** Get a printable representation of a lexer token */\nfunction prettyToken(token) {\n switch (token) {\n case BOM:\n return '';\n case DOCUMENT:\n return '';\n case FLOW_END:\n return '';\n case SCALAR:\n return '';\n default:\n return JSON.stringify(token);\n }\n}\n/** Identify the type of a lexer token. May return `null` for unknown tokens. */\nfunction tokenType(source) {\n switch (source) {\n case BOM:\n return 'byte-order-mark';\n case DOCUMENT:\n return 'doc-mode';\n case FLOW_END:\n return 'flow-error-end';\n case SCALAR:\n return 'scalar';\n case '---':\n return 'doc-start';\n case '...':\n return 'doc-end';\n case '':\n case '\\n':\n case '\\r\\n':\n return 'newline';\n case '-':\n return 'seq-item-ind';\n case '?':\n return 'explicit-key-ind';\n case ':':\n return 'map-value-ind';\n case '{':\n return 'flow-map-start';\n case '}':\n return 'flow-map-end';\n case '[':\n return 'flow-seq-start';\n case ']':\n return 'flow-seq-end';\n case ',':\n return 'comma';\n }\n switch (source[0]) {\n case ' ':\n case '\\t':\n return 'space';\n case '#':\n return 'comment';\n case '%':\n return 'directive-line';\n case '*':\n return 'alias';\n case '&':\n return 'anchor';\n case '!':\n return 'tag';\n case \"'\":\n return 'single-quoted-scalar';\n case '\"':\n return 'double-quoted-scalar';\n case '|':\n case '>':\n return 'block-scalar-header';\n }\n return null;\n}\n\nexports.createScalarToken = cstScalar.createScalarToken;\nexports.resolveAsScalar = cstScalar.resolveAsScalar;\nexports.setScalarValue = cstScalar.setScalarValue;\nexports.stringify = cstStringify.stringify;\nexports.visit = cstVisit.visit;\nexports.BOM = BOM;\nexports.DOCUMENT = DOCUMENT;\nexports.FLOW_END = FLOW_END;\nexports.SCALAR = SCALAR;\nexports.isCollection = isCollection;\nexports.isScalar = isScalar;\nexports.prettyToken = prettyToken;\nexports.tokenType = tokenType;\n","'use strict';\n\nvar cst = require('./cst.js');\n\n/*\nSTART -> stream\n\nstream\n directive -> line-end -> stream\n indent + line-end -> stream\n [else] -> line-start\n\nline-end\n comment -> line-end\n newline -> .\n input-end -> END\n\nline-start\n doc-start -> doc\n doc-end -> stream\n [else] -> indent -> block-start\n\nblock-start\n seq-item-start -> block-start\n explicit-key-start -> block-start\n map-value-start -> block-start\n [else] -> doc\n\ndoc\n line-end -> line-start\n spaces -> doc\n anchor -> doc\n tag -> doc\n flow-start -> flow -> doc\n flow-end -> error -> doc\n seq-item-start -> error -> doc\n explicit-key-start -> error -> doc\n map-value-start -> doc\n alias -> doc\n quote-start -> quoted-scalar -> doc\n block-scalar-header -> line-end -> block-scalar(min) -> line-start\n [else] -> plain-scalar(false, min) -> doc\n\nflow\n line-end -> flow\n spaces -> flow\n anchor -> flow\n tag -> flow\n flow-start -> flow -> flow\n flow-end -> .\n seq-item-start -> error -> flow\n explicit-key-start -> flow\n map-value-start -> flow\n alias -> flow\n quote-start -> quoted-scalar -> flow\n comma -> flow\n [else] -> plain-scalar(true, 0) -> flow\n\nquoted-scalar\n quote-end -> .\n [else] -> quoted-scalar\n\nblock-scalar(min)\n newline + peek(indent < min) -> .\n [else] -> block-scalar(min)\n\nplain-scalar(is-flow, min)\n scalar-end(is-flow) -> .\n peek(newline + (indent < min)) -> .\n [else] -> plain-scalar(min)\n*/\nfunction isEmpty(ch) {\n switch (ch) {\n case undefined:\n case ' ':\n case '\\n':\n case '\\r':\n case '\\t':\n return true;\n default:\n return false;\n }\n}\nconst hexDigits = new Set('0123456789ABCDEFabcdef');\nconst tagChars = new Set(\"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-#;/?:@&=+$_.!~*'()\");\nconst flowIndicatorChars = new Set(',[]{}');\nconst invalidAnchorChars = new Set(' ,[]{}\\n\\r\\t');\nconst isNotAnchorChar = (ch) => !ch || invalidAnchorChars.has(ch);\n/**\n * Splits an input string into lexical tokens, i.e. smaller strings that are\n * easily identifiable by `tokens.tokenType()`.\n *\n * Lexing starts always in a \"stream\" context. Incomplete input may be buffered\n * until a complete token can be emitted.\n *\n * In addition to slices of the original input, the following control characters\n * may also be emitted:\n *\n * - `\\x02` (Start of Text): A document starts with the next token\n * - `\\x18` (Cancel): Unexpected end of flow-mode (indicates an error)\n * - `\\x1f` (Unit Separator): Next token is a scalar value\n * - `\\u{FEFF}` (Byte order mark): Emitted separately outside documents\n */\nclass Lexer {\n constructor() {\n /**\n * Flag indicating whether the end of the current buffer marks the end of\n * all input\n */\n this.atEnd = false;\n /**\n * Explicit indent set in block scalar header, as an offset from the current\n * minimum indent, so e.g. set to 1 from a header `|2+`. Set to -1 if not\n * explicitly set.\n */\n this.blockScalarIndent = -1;\n /**\n * Block scalars that include a + (keep) chomping indicator in their header\n * include trailing empty lines, which are otherwise excluded from the\n * scalar's contents.\n */\n this.blockScalarKeep = false;\n /** Current input */\n this.buffer = '';\n /**\n * Flag noting whether the map value indicator : can immediately follow this\n * node within a flow context.\n */\n this.flowKey = false;\n /** Count of surrounding flow collection levels. */\n this.flowLevel = 0;\n /**\n * Minimum level of indentation required for next lines to be parsed as a\n * part of the current scalar value.\n */\n this.indentNext = 0;\n /** Indentation level of the current line. */\n this.indentValue = 0;\n /** Position of the next \\n character. */\n this.lineEndPos = null;\n /** Stores the state of the lexer if reaching the end of incpomplete input */\n this.next = null;\n /** A pointer to `buffer`; the current position of the lexer. */\n this.pos = 0;\n }\n /**\n * Generate YAML tokens from the `source` string. If `incomplete`,\n * a part of the last line may be left as a buffer for the next call.\n *\n * @returns A generator of lexical tokens\n */\n *lex(source, incomplete = false) {\n if (source) {\n if (typeof source !== 'string')\n throw TypeError('source is not a string');\n this.buffer = this.buffer ? this.buffer + source : source;\n this.lineEndPos = null;\n }\n this.atEnd = !incomplete;\n let next = this.next ?? 'stream';\n while (next && (incomplete || this.hasChars(1)))\n next = yield* this.parseNext(next);\n }\n atLineEnd() {\n let i = this.pos;\n let ch = this.buffer[i];\n while (ch === ' ' || ch === '\\t')\n ch = this.buffer[++i];\n if (!ch || ch === '#' || ch === '\\n')\n return true;\n if (ch === '\\r')\n return this.buffer[i + 1] === '\\n';\n return false;\n }\n charAt(n) {\n return this.buffer[this.pos + n];\n }\n continueScalar(offset) {\n let ch = this.buffer[offset];\n if (this.indentNext > 0) {\n let indent = 0;\n while (ch === ' ')\n ch = this.buffer[++indent + offset];\n if (ch === '\\r') {\n const next = this.buffer[indent + offset + 1];\n if (next === '\\n' || (!next && !this.atEnd))\n return offset + indent + 1;\n }\n return ch === '\\n' || indent >= this.indentNext || (!ch && !this.atEnd)\n ? offset + indent\n : -1;\n }\n if (ch === '-' || ch === '.') {\n const dt = this.buffer.substr(offset, 3);\n if ((dt === '---' || dt === '...') && isEmpty(this.buffer[offset + 3]))\n return -1;\n }\n return offset;\n }\n getLine() {\n let end = this.lineEndPos;\n if (typeof end !== 'number' || (end !== -1 && end < this.pos)) {\n end = this.buffer.indexOf('\\n', this.pos);\n this.lineEndPos = end;\n }\n if (end === -1)\n return this.atEnd ? this.buffer.substring(this.pos) : null;\n if (this.buffer[end - 1] === '\\r')\n end -= 1;\n return this.buffer.substring(this.pos, end);\n }\n hasChars(n) {\n return this.pos + n <= this.buffer.length;\n }\n setNext(state) {\n this.buffer = this.buffer.substring(this.pos);\n this.pos = 0;\n this.lineEndPos = null;\n this.next = state;\n return null;\n }\n peek(n) {\n return this.buffer.substr(this.pos, n);\n }\n *parseNext(next) {\n switch (next) {\n case 'stream':\n return yield* this.parseStream();\n case 'line-start':\n return yield* this.parseLineStart();\n case 'block-start':\n return yield* this.parseBlockStart();\n case 'doc':\n return yield* this.parseDocument();\n case 'flow':\n return yield* this.parseFlowCollection();\n case 'quoted-scalar':\n return yield* this.parseQuotedScalar();\n case 'block-scalar':\n return yield* this.parseBlockScalar();\n case 'plain-scalar':\n return yield* this.parsePlainScalar();\n }\n }\n *parseStream() {\n let line = this.getLine();\n if (line === null)\n return this.setNext('stream');\n if (line[0] === cst.BOM) {\n yield* this.pushCount(1);\n line = line.substring(1);\n }\n if (line[0] === '%') {\n let dirEnd = line.length;\n let cs = line.indexOf('#');\n while (cs !== -1) {\n const ch = line[cs - 1];\n if (ch === ' ' || ch === '\\t') {\n dirEnd = cs - 1;\n break;\n }\n else {\n cs = line.indexOf('#', cs + 1);\n }\n }\n while (true) {\n const ch = line[dirEnd - 1];\n if (ch === ' ' || ch === '\\t')\n dirEnd -= 1;\n else\n break;\n }\n const n = (yield* this.pushCount(dirEnd)) + (yield* this.pushSpaces(true));\n yield* this.pushCount(line.length - n); // possible comment\n this.pushNewline();\n return 'stream';\n }\n if (this.atLineEnd()) {\n const sp = yield* this.pushSpaces(true);\n yield* this.pushCount(line.length - sp);\n yield* this.pushNewline();\n return 'stream';\n }\n yield cst.DOCUMENT;\n return yield* this.parseLineStart();\n }\n *parseLineStart() {\n const ch = this.charAt(0);\n if (!ch && !this.atEnd)\n return this.setNext('line-start');\n if (ch === '-' || ch === '.') {\n if (!this.atEnd && !this.hasChars(4))\n return this.setNext('line-start');\n const s = this.peek(3);\n if ((s === '---' || s === '...') && isEmpty(this.charAt(3))) {\n yield* this.pushCount(3);\n this.indentValue = 0;\n this.indentNext = 0;\n return s === '---' ? 'doc' : 'stream';\n }\n }\n this.indentValue = yield* this.pushSpaces(false);\n if (this.indentNext > this.indentValue && !isEmpty(this.charAt(1)))\n this.indentNext = this.indentValue;\n return yield* this.parseBlockStart();\n }\n *parseBlockStart() {\n const [ch0, ch1] = this.peek(2);\n if (!ch1 && !this.atEnd)\n return this.setNext('block-start');\n if ((ch0 === '-' || ch0 === '?' || ch0 === ':') && isEmpty(ch1)) {\n const n = (yield* this.pushCount(1)) + (yield* this.pushSpaces(true));\n this.indentNext = this.indentValue + 1;\n this.indentValue += n;\n return yield* this.parseBlockStart();\n }\n return 'doc';\n }\n *parseDocument() {\n yield* this.pushSpaces(true);\n const line = this.getLine();\n if (line === null)\n return this.setNext('doc');\n let n = yield* this.pushIndicators();\n switch (line[n]) {\n case '#':\n yield* this.pushCount(line.length - n);\n // fallthrough\n case undefined:\n yield* this.pushNewline();\n return yield* this.parseLineStart();\n case '{':\n case '[':\n yield* this.pushCount(1);\n this.flowKey = false;\n this.flowLevel = 1;\n return 'flow';\n case '}':\n case ']':\n // this is an error\n yield* this.pushCount(1);\n return 'doc';\n case '*':\n yield* this.pushUntil(isNotAnchorChar);\n return 'doc';\n case '\"':\n case \"'\":\n return yield* this.parseQuotedScalar();\n case '|':\n case '>':\n n += yield* this.parseBlockScalarHeader();\n n += yield* this.pushSpaces(true);\n yield* this.pushCount(line.length - n);\n yield* this.pushNewline();\n return yield* this.parseBlockScalar();\n default:\n return yield* this.parsePlainScalar();\n }\n }\n *parseFlowCollection() {\n let nl, sp;\n let indent = -1;\n do {\n nl = yield* this.pushNewline();\n if (nl > 0) {\n sp = yield* this.pushSpaces(false);\n this.indentValue = indent = sp;\n }\n else {\n sp = 0;\n }\n sp += yield* this.pushSpaces(true);\n } while (nl + sp > 0);\n const line = this.getLine();\n if (line === null)\n return this.setNext('flow');\n if ((indent !== -1 && indent < this.indentNext && line[0] !== '#') ||\n (indent === 0 &&\n (line.startsWith('---') || line.startsWith('...')) &&\n isEmpty(line[3]))) {\n // Allowing for the terminal ] or } at the same (rather than greater)\n // indent level as the initial [ or { is technically invalid, but\n // failing here would be surprising to users.\n const atFlowEndMarker = indent === this.indentNext - 1 &&\n this.flowLevel === 1 &&\n (line[0] === ']' || line[0] === '}');\n if (!atFlowEndMarker) {\n // this is an error\n this.flowLevel = 0;\n yield cst.FLOW_END;\n return yield* this.parseLineStart();\n }\n }\n let n = 0;\n while (line[n] === ',') {\n n += yield* this.pushCount(1);\n n += yield* this.pushSpaces(true);\n this.flowKey = false;\n }\n n += yield* this.pushIndicators();\n switch (line[n]) {\n case undefined:\n return 'flow';\n case '#':\n yield* this.pushCount(line.length - n);\n return 'flow';\n case '{':\n case '[':\n yield* this.pushCount(1);\n this.flowKey = false;\n this.flowLevel += 1;\n return 'flow';\n case '}':\n case ']':\n yield* this.pushCount(1);\n this.flowKey = true;\n this.flowLevel -= 1;\n return this.flowLevel ? 'flow' : 'doc';\n case '*':\n yield* this.pushUntil(isNotAnchorChar);\n return 'flow';\n case '\"':\n case \"'\":\n this.flowKey = true;\n return yield* this.parseQuotedScalar();\n case ':': {\n const next = this.charAt(1);\n if (this.flowKey || isEmpty(next) || next === ',') {\n this.flowKey = false;\n yield* this.pushCount(1);\n yield* this.pushSpaces(true);\n return 'flow';\n }\n }\n // fallthrough\n default:\n this.flowKey = false;\n return yield* this.parsePlainScalar();\n }\n }\n *parseQuotedScalar() {\n const quote = this.charAt(0);\n let end = this.buffer.indexOf(quote, this.pos + 1);\n if (quote === \"'\") {\n while (end !== -1 && this.buffer[end + 1] === \"'\")\n end = this.buffer.indexOf(\"'\", end + 2);\n }\n else {\n // double-quote\n while (end !== -1) {\n let n = 0;\n while (this.buffer[end - 1 - n] === '\\\\')\n n += 1;\n if (n % 2 === 0)\n break;\n end = this.buffer.indexOf('\"', end + 1);\n }\n }\n // Only looking for newlines within the quotes\n const qb = this.buffer.substring(0, end);\n let nl = qb.indexOf('\\n', this.pos);\n if (nl !== -1) {\n while (nl !== -1) {\n const cs = this.continueScalar(nl + 1);\n if (cs === -1)\n break;\n nl = qb.indexOf('\\n', cs);\n }\n if (nl !== -1) {\n // this is an error caused by an unexpected unindent\n end = nl - (qb[nl - 1] === '\\r' ? 2 : 1);\n }\n }\n if (end === -1) {\n if (!this.atEnd)\n return this.setNext('quoted-scalar');\n end = this.buffer.length;\n }\n yield* this.pushToIndex(end + 1, false);\n return this.flowLevel ? 'flow' : 'doc';\n }\n *parseBlockScalarHeader() {\n this.blockScalarIndent = -1;\n this.blockScalarKeep = false;\n let i = this.pos;\n while (true) {\n const ch = this.buffer[++i];\n if (ch === '+')\n this.blockScalarKeep = true;\n else if (ch > '0' && ch <= '9')\n this.blockScalarIndent = Number(ch) - 1;\n else if (ch !== '-')\n break;\n }\n return yield* this.pushUntil(ch => isEmpty(ch) || ch === '#');\n }\n *parseBlockScalar() {\n let nl = this.pos - 1; // may be -1 if this.pos === 0\n let indent = 0;\n let ch;\n loop: for (let i = this.pos; (ch = this.buffer[i]); ++i) {\n switch (ch) {\n case ' ':\n indent += 1;\n break;\n case '\\n':\n nl = i;\n indent = 0;\n break;\n case '\\r': {\n const next = this.buffer[i + 1];\n if (!next && !this.atEnd)\n return this.setNext('block-scalar');\n if (next === '\\n')\n break;\n } // fallthrough\n default:\n break loop;\n }\n }\n if (!ch && !this.atEnd)\n return this.setNext('block-scalar');\n if (indent >= this.indentNext) {\n if (this.blockScalarIndent === -1)\n this.indentNext = indent;\n else {\n this.indentNext =\n this.blockScalarIndent + (this.indentNext === 0 ? 1 : this.indentNext);\n }\n do {\n const cs = this.continueScalar(nl + 1);\n if (cs === -1)\n break;\n nl = this.buffer.indexOf('\\n', cs);\n } while (nl !== -1);\n if (nl === -1) {\n if (!this.atEnd)\n return this.setNext('block-scalar');\n nl = this.buffer.length;\n }\n }\n // Trailing insufficiently indented tabs are invalid.\n // To catch that during parsing, we include them in the block scalar value.\n let i = nl + 1;\n ch = this.buffer[i];\n while (ch === ' ')\n ch = this.buffer[++i];\n if (ch === '\\t') {\n while (ch === '\\t' || ch === ' ' || ch === '\\r' || ch === '\\n')\n ch = this.buffer[++i];\n nl = i - 1;\n }\n else if (!this.blockScalarKeep) {\n do {\n let i = nl - 1;\n let ch = this.buffer[i];\n if (ch === '\\r')\n ch = this.buffer[--i];\n const lastChar = i; // Drop the line if last char not more indented\n while (ch === ' ')\n ch = this.buffer[--i];\n if (ch === '\\n' && i >= this.pos && i + 1 + indent > lastChar)\n nl = i;\n else\n break;\n } while (true);\n }\n yield cst.SCALAR;\n yield* this.pushToIndex(nl + 1, true);\n return yield* this.parseLineStart();\n }\n *parsePlainScalar() {\n const inFlow = this.flowLevel > 0;\n let end = this.pos - 1;\n let i = this.pos - 1;\n let ch;\n while ((ch = this.buffer[++i])) {\n if (ch === ':') {\n const next = this.buffer[i + 1];\n if (isEmpty(next) || (inFlow && flowIndicatorChars.has(next)))\n break;\n end = i;\n }\n else if (isEmpty(ch)) {\n let next = this.buffer[i + 1];\n if (ch === '\\r') {\n if (next === '\\n') {\n i += 1;\n ch = '\\n';\n next = this.buffer[i + 1];\n }\n else\n end = i;\n }\n if (next === '#' || (inFlow && flowIndicatorChars.has(next)))\n break;\n if (ch === '\\n') {\n const cs = this.continueScalar(i + 1);\n if (cs === -1)\n break;\n i = Math.max(i, cs - 2); // to advance, but still account for ' #'\n }\n }\n else {\n if (inFlow && flowIndicatorChars.has(ch))\n break;\n end = i;\n }\n }\n if (!ch && !this.atEnd)\n return this.setNext('plain-scalar');\n yield cst.SCALAR;\n yield* this.pushToIndex(end + 1, true);\n return inFlow ? 'flow' : 'doc';\n }\n *pushCount(n) {\n if (n > 0) {\n yield this.buffer.substr(this.pos, n);\n this.pos += n;\n return n;\n }\n return 0;\n }\n *pushToIndex(i, allowEmpty) {\n const s = this.buffer.slice(this.pos, i);\n if (s) {\n yield s;\n this.pos += s.length;\n return s.length;\n }\n else if (allowEmpty)\n yield '';\n return 0;\n }\n *pushIndicators() {\n switch (this.charAt(0)) {\n case '!':\n return ((yield* this.pushTag()) +\n (yield* this.pushSpaces(true)) +\n (yield* this.pushIndicators()));\n case '&':\n return ((yield* this.pushUntil(isNotAnchorChar)) +\n (yield* this.pushSpaces(true)) +\n (yield* this.pushIndicators()));\n case '-': // this is an error\n case '?': // this is an error outside flow collections\n case ':': {\n const inFlow = this.flowLevel > 0;\n const ch1 = this.charAt(1);\n if (isEmpty(ch1) || (inFlow && flowIndicatorChars.has(ch1))) {\n if (!inFlow)\n this.indentNext = this.indentValue + 1;\n else if (this.flowKey)\n this.flowKey = false;\n return ((yield* this.pushCount(1)) +\n (yield* this.pushSpaces(true)) +\n (yield* this.pushIndicators()));\n }\n }\n }\n return 0;\n }\n *pushTag() {\n if (this.charAt(1) === '<') {\n let i = this.pos + 2;\n let ch = this.buffer[i];\n while (!isEmpty(ch) && ch !== '>')\n ch = this.buffer[++i];\n return yield* this.pushToIndex(ch === '>' ? i + 1 : i, false);\n }\n else {\n let i = this.pos + 1;\n let ch = this.buffer[i];\n while (ch) {\n if (tagChars.has(ch))\n ch = this.buffer[++i];\n else if (ch === '%' &&\n hexDigits.has(this.buffer[i + 1]) &&\n hexDigits.has(this.buffer[i + 2])) {\n ch = this.buffer[(i += 3)];\n }\n else\n break;\n }\n return yield* this.pushToIndex(i, false);\n }\n }\n *pushNewline() {\n const ch = this.buffer[this.pos];\n if (ch === '\\n')\n return yield* this.pushCount(1);\n else if (ch === '\\r' && this.charAt(1) === '\\n')\n return yield* this.pushCount(2);\n else\n return 0;\n }\n *pushSpaces(allowTabs) {\n let i = this.pos - 1;\n let ch;\n do {\n ch = this.buffer[++i];\n } while (ch === ' ' || (allowTabs && ch === '\\t'));\n const n = i - this.pos;\n if (n > 0) {\n yield this.buffer.substr(this.pos, n);\n this.pos = i;\n }\n return n;\n }\n *pushUntil(test) {\n let i = this.pos;\n let ch = this.buffer[i];\n while (!test(ch))\n ch = this.buffer[++i];\n return yield* this.pushToIndex(i, false);\n }\n}\n\nexports.Lexer = Lexer;\n","'use strict';\n\n/**\n * Tracks newlines during parsing in order to provide an efficient API for\n * determining the one-indexed `{ line, col }` position for any offset\n * within the input.\n */\nclass LineCounter {\n constructor() {\n this.lineStarts = [];\n /**\n * Should be called in ascending order. Otherwise, call\n * `lineCounter.lineStarts.sort()` before calling `linePos()`.\n */\n this.addNewLine = (offset) => this.lineStarts.push(offset);\n /**\n * Performs a binary search and returns the 1-indexed { line, col }\n * position of `offset`. If `line === 0`, `addNewLine` has never been\n * called or `offset` is before the first known newline.\n */\n this.linePos = (offset) => {\n let low = 0;\n let high = this.lineStarts.length;\n while (low < high) {\n const mid = (low + high) >> 1; // Math.floor((low + high) / 2)\n if (this.lineStarts[mid] < offset)\n low = mid + 1;\n else\n high = mid;\n }\n if (this.lineStarts[low] === offset)\n return { line: low + 1, col: 1 };\n if (low === 0)\n return { line: 0, col: offset };\n const start = this.lineStarts[low - 1];\n return { line: low, col: offset - start + 1 };\n };\n }\n}\n\nexports.LineCounter = LineCounter;\n","'use strict';\n\nvar node_process = require('process');\nvar cst = require('./cst.js');\nvar lexer = require('./lexer.js');\n\nfunction includesToken(list, type) {\n for (let i = 0; i < list.length; ++i)\n if (list[i].type === type)\n return true;\n return false;\n}\nfunction findNonEmptyIndex(list) {\n for (let i = 0; i < list.length; ++i) {\n switch (list[i].type) {\n case 'space':\n case 'comment':\n case 'newline':\n break;\n default:\n return i;\n }\n }\n return -1;\n}\nfunction isFlowToken(token) {\n switch (token?.type) {\n case 'alias':\n case 'scalar':\n case 'single-quoted-scalar':\n case 'double-quoted-scalar':\n case 'flow-collection':\n return true;\n default:\n return false;\n }\n}\nfunction getPrevProps(parent) {\n switch (parent.type) {\n case 'document':\n return parent.start;\n case 'block-map': {\n const it = parent.items[parent.items.length - 1];\n return it.sep ?? it.start;\n }\n case 'block-seq':\n return parent.items[parent.items.length - 1].start;\n /* istanbul ignore next should not happen */\n default:\n return [];\n }\n}\n/** Note: May modify input array */\nfunction getFirstKeyStartProps(prev) {\n if (prev.length === 0)\n return [];\n let i = prev.length;\n loop: while (--i >= 0) {\n switch (prev[i].type) {\n case 'doc-start':\n case 'explicit-key-ind':\n case 'map-value-ind':\n case 'seq-item-ind':\n case 'newline':\n break loop;\n }\n }\n while (prev[++i]?.type === 'space') {\n /* loop */\n }\n return prev.splice(i, prev.length);\n}\nfunction fixFlowSeqItems(fc) {\n if (fc.start.type === 'flow-seq-start') {\n for (const it of fc.items) {\n if (it.sep &&\n !it.value &&\n !includesToken(it.start, 'explicit-key-ind') &&\n !includesToken(it.sep, 'map-value-ind')) {\n if (it.key)\n it.value = it.key;\n delete it.key;\n if (isFlowToken(it.value)) {\n if (it.value.end)\n Array.prototype.push.apply(it.value.end, it.sep);\n else\n it.value.end = it.sep;\n }\n else\n Array.prototype.push.apply(it.start, it.sep);\n delete it.sep;\n }\n }\n }\n}\n/**\n * A YAML concrete syntax tree (CST) parser\n *\n * ```ts\n * const src: string = ...\n * for (const token of new Parser().parse(src)) {\n * // token: Token\n * }\n * ```\n *\n * To use the parser with a user-provided lexer:\n *\n * ```ts\n * function* parse(source: string, lexer: Lexer) {\n * const parser = new Parser()\n * for (const lexeme of lexer.lex(source))\n * yield* parser.next(lexeme)\n * yield* parser.end()\n * }\n *\n * const src: string = ...\n * const lexer = new Lexer()\n * for (const token of parse(src, lexer)) {\n * // token: Token\n * }\n * ```\n */\nclass Parser {\n /**\n * @param onNewLine - If defined, called separately with the start position of\n * each new line (in `parse()`, including the start of input).\n */\n constructor(onNewLine) {\n /** If true, space and sequence indicators count as indentation */\n this.atNewLine = true;\n /** If true, next token is a scalar value */\n this.atScalar = false;\n /** Current indentation level */\n this.indent = 0;\n /** Current offset since the start of parsing */\n this.offset = 0;\n /** On the same line with a block map key */\n this.onKeyLine = false;\n /** Top indicates the node that's currently being built */\n this.stack = [];\n /** The source of the current token, set in parse() */\n this.source = '';\n /** The type of the current token, set in parse() */\n this.type = '';\n // Must be defined after `next()`\n this.lexer = new lexer.Lexer();\n this.onNewLine = onNewLine;\n }\n /**\n * Parse `source` as a YAML stream.\n * If `incomplete`, a part of the last line may be left as a buffer for the next call.\n *\n * Errors are not thrown, but yielded as `{ type: 'error', message }` tokens.\n *\n * @returns A generator of tokens representing each directive, document, and other structure.\n */\n *parse(source, incomplete = false) {\n if (this.onNewLine && this.offset === 0)\n this.onNewLine(0);\n for (const lexeme of this.lexer.lex(source, incomplete))\n yield* this.next(lexeme);\n if (!incomplete)\n yield* this.end();\n }\n /**\n * Advance the parser by the `source` of one lexical token.\n */\n *next(source) {\n this.source = source;\n if (node_process.env.LOG_TOKENS)\n console.log('|', cst.prettyToken(source));\n if (this.atScalar) {\n this.atScalar = false;\n yield* this.step();\n this.offset += source.length;\n return;\n }\n const type = cst.tokenType(source);\n if (!type) {\n const message = `Not a YAML token: ${source}`;\n yield* this.pop({ type: 'error', offset: this.offset, message, source });\n this.offset += source.length;\n }\n else if (type === 'scalar') {\n this.atNewLine = false;\n this.atScalar = true;\n this.type = 'scalar';\n }\n else {\n this.type = type;\n yield* this.step();\n switch (type) {\n case 'newline':\n this.atNewLine = true;\n this.indent = 0;\n if (this.onNewLine)\n this.onNewLine(this.offset + source.length);\n break;\n case 'space':\n if (this.atNewLine && source[0] === ' ')\n this.indent += source.length;\n break;\n case 'explicit-key-ind':\n case 'map-value-ind':\n case 'seq-item-ind':\n if (this.atNewLine)\n this.indent += source.length;\n break;\n case 'doc-mode':\n case 'flow-error-end':\n return;\n default:\n this.atNewLine = false;\n }\n this.offset += source.length;\n }\n }\n /** Call at end of input to push out any remaining constructions */\n *end() {\n while (this.stack.length > 0)\n yield* this.pop();\n }\n get sourceToken() {\n const st = {\n type: this.type,\n offset: this.offset,\n indent: this.indent,\n source: this.source\n };\n return st;\n }\n *step() {\n const top = this.peek(1);\n if (this.type === 'doc-end' && top?.type !== 'doc-end') {\n while (this.stack.length > 0)\n yield* this.pop();\n this.stack.push({\n type: 'doc-end',\n offset: this.offset,\n source: this.source\n });\n return;\n }\n if (!top)\n return yield* this.stream();\n switch (top.type) {\n case 'document':\n return yield* this.document(top);\n case 'alias':\n case 'scalar':\n case 'single-quoted-scalar':\n case 'double-quoted-scalar':\n return yield* this.scalar(top);\n case 'block-scalar':\n return yield* this.blockScalar(top);\n case 'block-map':\n return yield* this.blockMap(top);\n case 'block-seq':\n return yield* this.blockSequence(top);\n case 'flow-collection':\n return yield* this.flowCollection(top);\n case 'doc-end':\n return yield* this.documentEnd(top);\n }\n /* istanbul ignore next should not happen */\n yield* this.pop();\n }\n peek(n) {\n return this.stack[this.stack.length - n];\n }\n *pop(error) {\n const token = error ?? this.stack.pop();\n /* istanbul ignore if should not happen */\n if (!token) {\n const message = 'Tried to pop an empty stack';\n yield { type: 'error', offset: this.offset, source: '', message };\n }\n else if (this.stack.length === 0) {\n yield token;\n }\n else {\n const top = this.peek(1);\n if (token.type === 'block-scalar') {\n // Block scalars use their parent rather than header indent\n token.indent = 'indent' in top ? top.indent : 0;\n }\n else if (token.type === 'flow-collection' && top.type === 'document') {\n // Ignore all indent for top-level flow collections\n token.indent = 0;\n }\n if (token.type === 'flow-collection')\n fixFlowSeqItems(token);\n switch (top.type) {\n case 'document':\n top.value = token;\n break;\n case 'block-scalar':\n top.props.push(token); // error\n break;\n case 'block-map': {\n const it = top.items[top.items.length - 1];\n if (it.value) {\n top.items.push({ start: [], key: token, sep: [] });\n this.onKeyLine = true;\n return;\n }\n else if (it.sep) {\n it.value = token;\n }\n else {\n Object.assign(it, { key: token, sep: [] });\n this.onKeyLine = !it.explicitKey;\n return;\n }\n break;\n }\n case 'block-seq': {\n const it = top.items[top.items.length - 1];\n if (it.value)\n top.items.push({ start: [], value: token });\n else\n it.value = token;\n break;\n }\n case 'flow-collection': {\n const it = top.items[top.items.length - 1];\n if (!it || it.value)\n top.items.push({ start: [], key: token, sep: [] });\n else if (it.sep)\n it.value = token;\n else\n Object.assign(it, { key: token, sep: [] });\n return;\n }\n /* istanbul ignore next should not happen */\n default:\n yield* this.pop();\n yield* this.pop(token);\n }\n if ((top.type === 'document' ||\n top.type === 'block-map' ||\n top.type === 'block-seq') &&\n (token.type === 'block-map' || token.type === 'block-seq')) {\n const last = token.items[token.items.length - 1];\n if (last &&\n !last.sep &&\n !last.value &&\n last.start.length > 0 &&\n findNonEmptyIndex(last.start) === -1 &&\n (token.indent === 0 ||\n last.start.every(st => st.type !== 'comment' || st.indent < token.indent))) {\n if (top.type === 'document')\n top.end = last.start;\n else\n top.items.push({ start: last.start });\n token.items.splice(-1, 1);\n }\n }\n }\n }\n *stream() {\n switch (this.type) {\n case 'directive-line':\n yield { type: 'directive', offset: this.offset, source: this.source };\n return;\n case 'byte-order-mark':\n case 'space':\n case 'comment':\n case 'newline':\n yield this.sourceToken;\n return;\n case 'doc-mode':\n case 'doc-start': {\n const doc = {\n type: 'document',\n offset: this.offset,\n start: []\n };\n if (this.type === 'doc-start')\n doc.start.push(this.sourceToken);\n this.stack.push(doc);\n return;\n }\n }\n yield {\n type: 'error',\n offset: this.offset,\n message: `Unexpected ${this.type} token in YAML stream`,\n source: this.source\n };\n }\n *document(doc) {\n if (doc.value)\n return yield* this.lineEnd(doc);\n switch (this.type) {\n case 'doc-start': {\n if (findNonEmptyIndex(doc.start) !== -1) {\n yield* this.pop();\n yield* this.step();\n }\n else\n doc.start.push(this.sourceToken);\n return;\n }\n case 'anchor':\n case 'tag':\n case 'space':\n case 'comment':\n case 'newline':\n doc.start.push(this.sourceToken);\n return;\n }\n const bv = this.startBlockValue(doc);\n if (bv)\n this.stack.push(bv);\n else {\n yield {\n type: 'error',\n offset: this.offset,\n message: `Unexpected ${this.type} token in YAML document`,\n source: this.source\n };\n }\n }\n *scalar(scalar) {\n if (this.type === 'map-value-ind') {\n const prev = getPrevProps(this.peek(2));\n const start = getFirstKeyStartProps(prev);\n let sep;\n if (scalar.end) {\n sep = scalar.end;\n sep.push(this.sourceToken);\n delete scalar.end;\n }\n else\n sep = [this.sourceToken];\n const map = {\n type: 'block-map',\n offset: scalar.offset,\n indent: scalar.indent,\n items: [{ start, key: scalar, sep }]\n };\n this.onKeyLine = true;\n this.stack[this.stack.length - 1] = map;\n }\n else\n yield* this.lineEnd(scalar);\n }\n *blockScalar(scalar) {\n switch (this.type) {\n case 'space':\n case 'comment':\n case 'newline':\n scalar.props.push(this.sourceToken);\n return;\n case 'scalar':\n scalar.source = this.source;\n // block-scalar source includes trailing newline\n this.atNewLine = true;\n this.indent = 0;\n if (this.onNewLine) {\n let nl = this.source.indexOf('\\n') + 1;\n while (nl !== 0) {\n this.onNewLine(this.offset + nl);\n nl = this.source.indexOf('\\n', nl) + 1;\n }\n }\n yield* this.pop();\n break;\n /* istanbul ignore next should not happen */\n default:\n yield* this.pop();\n yield* this.step();\n }\n }\n *blockMap(map) {\n const it = map.items[map.items.length - 1];\n // it.sep is true-ish if pair already has key or : separator\n switch (this.type) {\n case 'newline':\n this.onKeyLine = false;\n if (it.value) {\n const end = 'end' in it.value ? it.value.end : undefined;\n const last = Array.isArray(end) ? end[end.length - 1] : undefined;\n if (last?.type === 'comment')\n end?.push(this.sourceToken);\n else\n map.items.push({ start: [this.sourceToken] });\n }\n else if (it.sep) {\n it.sep.push(this.sourceToken);\n }\n else {\n it.start.push(this.sourceToken);\n }\n return;\n case 'space':\n case 'comment':\n if (it.value) {\n map.items.push({ start: [this.sourceToken] });\n }\n else if (it.sep) {\n it.sep.push(this.sourceToken);\n }\n else {\n if (this.atIndentedComment(it.start, map.indent)) {\n const prev = map.items[map.items.length - 2];\n const end = prev?.value?.end;\n if (Array.isArray(end)) {\n Array.prototype.push.apply(end, it.start);\n end.push(this.sourceToken);\n map.items.pop();\n return;\n }\n }\n it.start.push(this.sourceToken);\n }\n return;\n }\n if (this.indent >= map.indent) {\n const atMapIndent = !this.onKeyLine && this.indent === map.indent;\n const atNextItem = atMapIndent &&\n (it.sep || it.explicitKey) &&\n this.type !== 'seq-item-ind';\n // For empty nodes, assign newline-separated not indented empty tokens to following node\n let start = [];\n if (atNextItem && it.sep && !it.value) {\n const nl = [];\n for (let i = 0; i < it.sep.length; ++i) {\n const st = it.sep[i];\n switch (st.type) {\n case 'newline':\n nl.push(i);\n break;\n case 'space':\n break;\n case 'comment':\n if (st.indent > map.indent)\n nl.length = 0;\n break;\n default:\n nl.length = 0;\n }\n }\n if (nl.length >= 2)\n start = it.sep.splice(nl[1]);\n }\n switch (this.type) {\n case 'anchor':\n case 'tag':\n if (atNextItem || it.value) {\n start.push(this.sourceToken);\n map.items.push({ start });\n this.onKeyLine = true;\n }\n else if (it.sep) {\n it.sep.push(this.sourceToken);\n }\n else {\n it.start.push(this.sourceToken);\n }\n return;\n case 'explicit-key-ind':\n if (!it.sep && !it.explicitKey) {\n it.start.push(this.sourceToken);\n it.explicitKey = true;\n }\n else if (atNextItem || it.value) {\n start.push(this.sourceToken);\n map.items.push({ start, explicitKey: true });\n }\n else {\n this.stack.push({\n type: 'block-map',\n offset: this.offset,\n indent: this.indent,\n items: [{ start: [this.sourceToken], explicitKey: true }]\n });\n }\n this.onKeyLine = true;\n return;\n case 'map-value-ind':\n if (it.explicitKey) {\n if (!it.sep) {\n if (includesToken(it.start, 'newline')) {\n Object.assign(it, { key: null, sep: [this.sourceToken] });\n }\n else {\n const start = getFirstKeyStartProps(it.start);\n this.stack.push({\n type: 'block-map',\n offset: this.offset,\n indent: this.indent,\n items: [{ start, key: null, sep: [this.sourceToken] }]\n });\n }\n }\n else if (it.value) {\n map.items.push({ start: [], key: null, sep: [this.sourceToken] });\n }\n else if (includesToken(it.sep, 'map-value-ind')) {\n this.stack.push({\n type: 'block-map',\n offset: this.offset,\n indent: this.indent,\n items: [{ start, key: null, sep: [this.sourceToken] }]\n });\n }\n else if (isFlowToken(it.key) &&\n !includesToken(it.sep, 'newline')) {\n const start = getFirstKeyStartProps(it.start);\n const key = it.key;\n const sep = it.sep;\n sep.push(this.sourceToken);\n // @ts-expect-error type guard is wrong here\n delete it.key;\n // @ts-expect-error type guard is wrong here\n delete it.sep;\n this.stack.push({\n type: 'block-map',\n offset: this.offset,\n indent: this.indent,\n items: [{ start, key, sep }]\n });\n }\n else if (start.length > 0) {\n // Not actually at next item\n it.sep = it.sep.concat(start, this.sourceToken);\n }\n else {\n it.sep.push(this.sourceToken);\n }\n }\n else {\n if (!it.sep) {\n Object.assign(it, { key: null, sep: [this.sourceToken] });\n }\n else if (it.value || atNextItem) {\n map.items.push({ start, key: null, sep: [this.sourceToken] });\n }\n else if (includesToken(it.sep, 'map-value-ind')) {\n this.stack.push({\n type: 'block-map',\n offset: this.offset,\n indent: this.indent,\n items: [{ start: [], key: null, sep: [this.sourceToken] }]\n });\n }\n else {\n it.sep.push(this.sourceToken);\n }\n }\n this.onKeyLine = true;\n return;\n case 'alias':\n case 'scalar':\n case 'single-quoted-scalar':\n case 'double-quoted-scalar': {\n const fs = this.flowScalar(this.type);\n if (atNextItem || it.value) {\n map.items.push({ start, key: fs, sep: [] });\n this.onKeyLine = true;\n }\n else if (it.sep) {\n this.stack.push(fs);\n }\n else {\n Object.assign(it, { key: fs, sep: [] });\n this.onKeyLine = true;\n }\n return;\n }\n default: {\n const bv = this.startBlockValue(map);\n if (bv) {\n if (bv.type === 'block-seq') {\n if (!it.explicitKey &&\n it.sep &&\n !includesToken(it.sep, 'newline')) {\n yield* this.pop({\n type: 'error',\n offset: this.offset,\n message: 'Unexpected block-seq-ind on same line with key',\n source: this.source\n });\n return;\n }\n }\n else if (atMapIndent) {\n map.items.push({ start });\n }\n this.stack.push(bv);\n return;\n }\n }\n }\n }\n yield* this.pop();\n yield* this.step();\n }\n *blockSequence(seq) {\n const it = seq.items[seq.items.length - 1];\n switch (this.type) {\n case 'newline':\n if (it.value) {\n const end = 'end' in it.value ? it.value.end : undefined;\n const last = Array.isArray(end) ? end[end.length - 1] : undefined;\n if (last?.type === 'comment')\n end?.push(this.sourceToken);\n else\n seq.items.push({ start: [this.sourceToken] });\n }\n else\n it.start.push(this.sourceToken);\n return;\n case 'space':\n case 'comment':\n if (it.value)\n seq.items.push({ start: [this.sourceToken] });\n else {\n if (this.atIndentedComment(it.start, seq.indent)) {\n const prev = seq.items[seq.items.length - 2];\n const end = prev?.value?.end;\n if (Array.isArray(end)) {\n Array.prototype.push.apply(end, it.start);\n end.push(this.sourceToken);\n seq.items.pop();\n return;\n }\n }\n it.start.push(this.sourceToken);\n }\n return;\n case 'anchor':\n case 'tag':\n if (it.value || this.indent <= seq.indent)\n break;\n it.start.push(this.sourceToken);\n return;\n case 'seq-item-ind':\n if (this.indent !== seq.indent)\n break;\n if (it.value || includesToken(it.start, 'seq-item-ind'))\n seq.items.push({ start: [this.sourceToken] });\n else\n it.start.push(this.sourceToken);\n return;\n }\n if (this.indent > seq.indent) {\n const bv = this.startBlockValue(seq);\n if (bv) {\n this.stack.push(bv);\n return;\n }\n }\n yield* this.pop();\n yield* this.step();\n }\n *flowCollection(fc) {\n const it = fc.items[fc.items.length - 1];\n if (this.type === 'flow-error-end') {\n let top;\n do {\n yield* this.pop();\n top = this.peek(1);\n } while (top?.type === 'flow-collection');\n }\n else if (fc.end.length === 0) {\n switch (this.type) {\n case 'comma':\n case 'explicit-key-ind':\n if (!it || it.sep)\n fc.items.push({ start: [this.sourceToken] });\n else\n it.start.push(this.sourceToken);\n return;\n case 'map-value-ind':\n if (!it || it.value)\n fc.items.push({ start: [], key: null, sep: [this.sourceToken] });\n else if (it.sep)\n it.sep.push(this.sourceToken);\n else\n Object.assign(it, { key: null, sep: [this.sourceToken] });\n return;\n case 'space':\n case 'comment':\n case 'newline':\n case 'anchor':\n case 'tag':\n if (!it || it.value)\n fc.items.push({ start: [this.sourceToken] });\n else if (it.sep)\n it.sep.push(this.sourceToken);\n else\n it.start.push(this.sourceToken);\n return;\n case 'alias':\n case 'scalar':\n case 'single-quoted-scalar':\n case 'double-quoted-scalar': {\n const fs = this.flowScalar(this.type);\n if (!it || it.value)\n fc.items.push({ start: [], key: fs, sep: [] });\n else if (it.sep)\n this.stack.push(fs);\n else\n Object.assign(it, { key: fs, sep: [] });\n return;\n }\n case 'flow-map-end':\n case 'flow-seq-end':\n fc.end.push(this.sourceToken);\n return;\n }\n const bv = this.startBlockValue(fc);\n /* istanbul ignore else should not happen */\n if (bv)\n this.stack.push(bv);\n else {\n yield* this.pop();\n yield* this.step();\n }\n }\n else {\n const parent = this.peek(2);\n if (parent.type === 'block-map' &&\n ((this.type === 'map-value-ind' && parent.indent === fc.indent) ||\n (this.type === 'newline' &&\n !parent.items[parent.items.length - 1].sep))) {\n yield* this.pop();\n yield* this.step();\n }\n else if (this.type === 'map-value-ind' &&\n parent.type !== 'flow-collection') {\n const prev = getPrevProps(parent);\n const start = getFirstKeyStartProps(prev);\n fixFlowSeqItems(fc);\n const sep = fc.end.splice(1, fc.end.length);\n sep.push(this.sourceToken);\n const map = {\n type: 'block-map',\n offset: fc.offset,\n indent: fc.indent,\n items: [{ start, key: fc, sep }]\n };\n this.onKeyLine = true;\n this.stack[this.stack.length - 1] = map;\n }\n else {\n yield* this.lineEnd(fc);\n }\n }\n }\n flowScalar(type) {\n if (this.onNewLine) {\n let nl = this.source.indexOf('\\n') + 1;\n while (nl !== 0) {\n this.onNewLine(this.offset + nl);\n nl = this.source.indexOf('\\n', nl) + 1;\n }\n }\n return {\n type,\n offset: this.offset,\n indent: this.indent,\n source: this.source\n };\n }\n startBlockValue(parent) {\n switch (this.type) {\n case 'alias':\n case 'scalar':\n case 'single-quoted-scalar':\n case 'double-quoted-scalar':\n return this.flowScalar(this.type);\n case 'block-scalar-header':\n return {\n type: 'block-scalar',\n offset: this.offset,\n indent: this.indent,\n props: [this.sourceToken],\n source: ''\n };\n case 'flow-map-start':\n case 'flow-seq-start':\n return {\n type: 'flow-collection',\n offset: this.offset,\n indent: this.indent,\n start: this.sourceToken,\n items: [],\n end: []\n };\n case 'seq-item-ind':\n return {\n type: 'block-seq',\n offset: this.offset,\n indent: this.indent,\n items: [{ start: [this.sourceToken] }]\n };\n case 'explicit-key-ind': {\n this.onKeyLine = true;\n const prev = getPrevProps(parent);\n const start = getFirstKeyStartProps(prev);\n start.push(this.sourceToken);\n return {\n type: 'block-map',\n offset: this.offset,\n indent: this.indent,\n items: [{ start, explicitKey: true }]\n };\n }\n case 'map-value-ind': {\n this.onKeyLine = true;\n const prev = getPrevProps(parent);\n const start = getFirstKeyStartProps(prev);\n return {\n type: 'block-map',\n offset: this.offset,\n indent: this.indent,\n items: [{ start, key: null, sep: [this.sourceToken] }]\n };\n }\n }\n return null;\n }\n atIndentedComment(start, indent) {\n if (this.type !== 'comment')\n return false;\n if (this.indent <= indent)\n return false;\n return start.every(st => st.type === 'newline' || st.type === 'space');\n }\n *documentEnd(docEnd) {\n if (this.type !== 'doc-mode') {\n if (docEnd.end)\n docEnd.end.push(this.sourceToken);\n else\n docEnd.end = [this.sourceToken];\n if (this.type === 'newline')\n yield* this.pop();\n }\n }\n *lineEnd(token) {\n switch (this.type) {\n case 'comma':\n case 'doc-start':\n case 'doc-end':\n case 'flow-seq-end':\n case 'flow-map-end':\n case 'map-value-ind':\n yield* this.pop();\n yield* this.step();\n break;\n case 'newline':\n this.onKeyLine = false;\n // fallthrough\n case 'space':\n case 'comment':\n default:\n // all other values are errors\n if (token.end)\n token.end.push(this.sourceToken);\n else\n token.end = [this.sourceToken];\n if (this.type === 'newline')\n yield* this.pop();\n }\n }\n}\n\nexports.Parser = Parser;\n","'use strict';\n\nvar composer = require('./compose/composer.js');\nvar Document = require('./doc/Document.js');\nvar errors = require('./errors.js');\nvar log = require('./log.js');\nvar identity = require('./nodes/identity.js');\nvar lineCounter = require('./parse/line-counter.js');\nvar parser = require('./parse/parser.js');\n\nfunction parseOptions(options) {\n const prettyErrors = options.prettyErrors !== false;\n const lineCounter$1 = options.lineCounter || (prettyErrors && new lineCounter.LineCounter()) || null;\n return { lineCounter: lineCounter$1, prettyErrors };\n}\n/**\n * Parse the input as a stream of YAML documents.\n *\n * Documents should be separated from each other by `...` or `---` marker lines.\n *\n * @returns If an empty `docs` array is returned, it will be of type\n * EmptyStream and contain additional stream information. In\n * TypeScript, you should use `'empty' in docs` as a type guard for it.\n */\nfunction parseAllDocuments(source, options = {}) {\n const { lineCounter, prettyErrors } = parseOptions(options);\n const parser$1 = new parser.Parser(lineCounter?.addNewLine);\n const composer$1 = new composer.Composer(options);\n const docs = Array.from(composer$1.compose(parser$1.parse(source)));\n if (prettyErrors && lineCounter)\n for (const doc of docs) {\n doc.errors.forEach(errors.prettifyError(source, lineCounter));\n doc.warnings.forEach(errors.prettifyError(source, lineCounter));\n }\n if (docs.length > 0)\n return docs;\n return Object.assign([], { empty: true }, composer$1.streamInfo());\n}\n/** Parse an input string into a single YAML.Document */\nfunction parseDocument(source, options = {}) {\n const { lineCounter, prettyErrors } = parseOptions(options);\n const parser$1 = new parser.Parser(lineCounter?.addNewLine);\n const composer$1 = new composer.Composer(options);\n // `doc` is always set by compose.end(true) at the very latest\n let doc = null;\n for (const _doc of composer$1.compose(parser$1.parse(source), true, source.length)) {\n if (!doc)\n doc = _doc;\n else if (doc.options.logLevel !== 'silent') {\n doc.errors.push(new errors.YAMLParseError(_doc.range.slice(0, 2), 'MULTIPLE_DOCS', 'Source contains multiple documents; please use YAML.parseAllDocuments()'));\n break;\n }\n }\n if (prettyErrors && lineCounter) {\n doc.errors.forEach(errors.prettifyError(source, lineCounter));\n doc.warnings.forEach(errors.prettifyError(source, lineCounter));\n }\n return doc;\n}\nfunction parse(src, reviver, options) {\n let _reviver = undefined;\n if (typeof reviver === 'function') {\n _reviver = reviver;\n }\n else if (options === undefined && reviver && typeof reviver === 'object') {\n options = reviver;\n }\n const doc = parseDocument(src, options);\n if (!doc)\n return null;\n doc.warnings.forEach(warning => log.warn(doc.options.logLevel, warning));\n if (doc.errors.length > 0) {\n if (doc.options.logLevel !== 'silent')\n throw doc.errors[0];\n else\n doc.errors = [];\n }\n return doc.toJS(Object.assign({ reviver: _reviver }, options));\n}\nfunction stringify(value, replacer, options) {\n let _replacer = null;\n if (typeof replacer === 'function' || Array.isArray(replacer)) {\n _replacer = replacer;\n }\n else if (options === undefined && replacer) {\n options = replacer;\n }\n if (typeof options === 'string')\n options = options.length;\n if (typeof options === 'number') {\n const indent = Math.round(options);\n options = indent < 1 ? undefined : indent > 8 ? { indent: 8 } : { indent };\n }\n if (value === undefined) {\n const { keepUndefined } = options ?? replacer ?? {};\n if (!keepUndefined)\n return undefined;\n }\n if (identity.isDocument(value) && !_replacer)\n return value.toString(options);\n return new Document.Document(value, _replacer, options).toString(options);\n}\n\nexports.parse = parse;\nexports.parseAllDocuments = parseAllDocuments;\nexports.parseDocument = parseDocument;\nexports.stringify = stringify;\n","'use strict';\n\nvar composer = require('./compose/composer.js');\nvar Document = require('./doc/Document.js');\nvar Schema = require('./schema/Schema.js');\nvar errors = require('./errors.js');\nvar Alias = require('./nodes/Alias.js');\nvar identity = require('./nodes/identity.js');\nvar Pair = require('./nodes/Pair.js');\nvar Scalar = require('./nodes/Scalar.js');\nvar YAMLMap = require('./nodes/YAMLMap.js');\nvar YAMLSeq = require('./nodes/YAMLSeq.js');\nvar cst = require('./parse/cst.js');\nvar lexer = require('./parse/lexer.js');\nvar lineCounter = require('./parse/line-counter.js');\nvar parser = require('./parse/parser.js');\nvar publicApi = require('./public-api.js');\nvar visit = require('./visit.js');\n\n\n\nexports.Composer = composer.Composer;\nexports.Document = Document.Document;\nexports.Schema = Schema.Schema;\nexports.YAMLError = errors.YAMLError;\nexports.YAMLParseError = errors.YAMLParseError;\nexports.YAMLWarning = errors.YAMLWarning;\nexports.Alias = Alias.Alias;\nexports.isAlias = identity.isAlias;\nexports.isCollection = identity.isCollection;\nexports.isDocument = identity.isDocument;\nexports.isMap = identity.isMap;\nexports.isNode = identity.isNode;\nexports.isPair = identity.isPair;\nexports.isScalar = identity.isScalar;\nexports.isSeq = identity.isSeq;\nexports.Pair = Pair.Pair;\nexports.Scalar = Scalar.Scalar;\nexports.YAMLMap = YAMLMap.YAMLMap;\nexports.YAMLSeq = YAMLSeq.YAMLSeq;\nexports.CST = cst;\nexports.Lexer = lexer.Lexer;\nexports.LineCounter = lineCounter.LineCounter;\nexports.Parser = parser.Parser;\nexports.parse = publicApi.parse;\nexports.parseAllDocuments = publicApi.parseAllDocuments;\nexports.parseDocument = publicApi.parseDocument;\nexports.stringify = publicApi.stringify;\nexports.visit = visit.visit;\nexports.visitAsync = visit.visitAsync;\n","/**\r\n * Frontmatter — YAML frontmatter parsing, serialization, and CRUD commands\r\n *\r\n * Uses the `yaml` npm package instead of a hand-rolled parser.\r\n */\r\n\r\nimport fs from 'node:fs';\r\nimport path from 'node:path';\r\nimport YAML from 'yaml';\r\n\r\nimport { safeReadFile, output, error } from './core.js';\r\nimport type {\r\n FrontmatterData,\r\n FrontmatterValue,\r\n FrontmatterValidationResult,\r\n FrontmatterSchema,\r\n} from './types.js';\r\n\r\n// ─── Parsing engine ───────────────────────────────────────────────────────────\r\n\r\n/**\r\n * Extract YAML frontmatter from markdown content into a typed object.\r\n */\r\nexport function extractFrontmatter(content: string): FrontmatterData {\r\n const match = content.match(/^---\\n([\\s\\S]+?)\\n---/);\r\n if (!match) return {};\r\n try {\r\n const parsed = YAML.parse(match[1]);\r\n return (parsed && typeof parsed === 'object' && !Array.isArray(parsed))\r\n ? parsed as FrontmatterData\r\n : {};\r\n } catch {\r\n return {};\r\n }\r\n}\r\n\r\n/**\r\n * Reconstruct YAML frontmatter string from an object.\r\n */\r\nexport function reconstructFrontmatter(obj: FrontmatterData): string {\r\n // Filter out null/undefined values\r\n const cleaned: FrontmatterData = {};\r\n for (const [key, value] of Object.entries(obj)) {\r\n if (value !== null && value !== undefined) {\r\n cleaned[key] = value;\r\n }\r\n }\r\n\r\n return YAML.stringify(cleaned, {\r\n lineWidth: 0, // Don't wrap long lines\r\n defaultKeyType: 'PLAIN',\r\n defaultStringType: 'PLAIN',\r\n }).trimEnd();\r\n}\r\n\r\n/**\r\n * Replace or insert frontmatter in markdown content.\r\n */\r\nexport function spliceFrontmatter(content: string, newObj: FrontmatterData): string {\r\n const yamlStr = reconstructFrontmatter(newObj);\r\n const match = content.match(/^---\\n[\\s\\S]+?\\n---/);\r\n if (match) {\r\n return `---\\n${yamlStr}\\n---` + content.slice(match[0].length);\r\n }\r\n return `---\\n${yamlStr}\\n---\\n\\n` + content;\r\n}\r\n\r\ninterface MustHaveItem {\r\n [key: string]: string | number | string[];\r\n}\r\n\r\n/**\r\n * Parse a specific block from must_haves in frontmatter.\r\n * With the yaml package, this is just object traversal.\r\n */\r\nexport function parseMustHavesBlock(content: string, blockName: string): (string | MustHaveItem)[] {\r\n const fm = extractFrontmatter(content);\r\n const mustHaves = fm.must_haves as FrontmatterData | undefined;\r\n if (!mustHaves || typeof mustHaves !== 'object') return [];\r\n const block = mustHaves[blockName];\r\n if (!Array.isArray(block)) return [];\r\n return block as (string | MustHaveItem)[];\r\n}\r\n\r\n// ─── Frontmatter schema validation ──────────────────────────────────────────\r\n\r\nexport const FRONTMATTER_SCHEMAS: Record = {\r\n plan: {\r\n required: ['phase', 'plan', 'type', 'wave', 'depends_on', 'files_modified', 'autonomous', 'must_haves'],\r\n },\r\n summary: {\r\n required: ['phase', 'plan', 'subsystem', 'tags', 'duration', 'completed'],\r\n },\r\n verification: {\r\n required: ['phase', 'verified', 'status', 'score'],\r\n },\r\n};\r\n\r\n// ─── Frontmatter CRUD commands ──────────────────────────────────────────────\r\n\r\nexport function cmdFrontmatterGet(\r\n cwd: string,\r\n filePath: string | null,\r\n field: string | null,\r\n raw: boolean,\r\n): void {\r\n if (!filePath) {\r\n error('file path required');\r\n }\r\n const fullPath = path.isAbsolute(filePath) ? filePath : path.join(cwd, filePath);\r\n const content = safeReadFile(fullPath);\r\n if (!content) {\r\n output({ error: 'File not found', path: filePath }, raw);\r\n return;\r\n }\r\n const fm = extractFrontmatter(content);\r\n if (field) {\r\n const value = fm[field];\r\n if (value === undefined) {\r\n output({ error: 'Field not found', field }, raw);\r\n return;\r\n }\r\n output({ [field]: value }, raw, JSON.stringify(value));\r\n } else {\r\n output(fm, raw);\r\n }\r\n}\r\n\r\nexport function cmdFrontmatterSet(\r\n cwd: string,\r\n filePath: string | null,\r\n field: string | null,\r\n value: string | undefined,\r\n raw: boolean,\r\n): void {\r\n if (!filePath || !field || value === undefined) {\r\n error('file, field, and value required');\r\n }\r\n const fullPath = path.isAbsolute(filePath!) ? filePath! : path.join(cwd, filePath!);\r\n if (!fs.existsSync(fullPath)) {\r\n output({ error: 'File not found', path: filePath }, raw);\r\n return;\r\n }\r\n const content = fs.readFileSync(fullPath, 'utf-8');\r\n const fm = extractFrontmatter(content);\r\n let parsedValue: FrontmatterValue;\r\n try {\r\n parsedValue = JSON.parse(value!) as FrontmatterValue;\r\n } catch {\r\n parsedValue = value!;\r\n }\r\n fm[field!] = parsedValue;\r\n const newContent = spliceFrontmatter(content, fm);\r\n fs.writeFileSync(fullPath, newContent, 'utf-8');\r\n output({ updated: true, field, value: parsedValue }, raw, 'true');\r\n}\r\n\r\nexport function cmdFrontmatterMerge(\r\n cwd: string,\r\n filePath: string | null,\r\n data: string | null,\r\n raw: boolean,\r\n): void {\r\n if (!filePath || !data) {\r\n error('file and data required');\r\n }\r\n const fullPath = path.isAbsolute(filePath!) ? filePath! : path.join(cwd, filePath!);\r\n if (!fs.existsSync(fullPath)) {\r\n output({ error: 'File not found', path: filePath }, raw);\r\n return;\r\n }\r\n const content = fs.readFileSync(fullPath, 'utf-8');\r\n const fm = extractFrontmatter(content);\r\n let mergeData: FrontmatterData;\r\n try {\r\n mergeData = JSON.parse(data!) as FrontmatterData;\r\n } catch {\r\n error('Invalid JSON for --data');\r\n return;\r\n }\r\n Object.assign(fm, mergeData);\r\n const newContent = spliceFrontmatter(content, fm);\r\n fs.writeFileSync(fullPath, newContent, 'utf-8');\r\n output({ merged: true, fields: Object.keys(mergeData) }, raw, 'true');\r\n}\r\n\r\nexport function cmdFrontmatterValidate(\r\n cwd: string,\r\n filePath: string | null,\r\n schemaName: string | null,\r\n raw: boolean,\r\n): void {\r\n if (!filePath || !schemaName) {\r\n error('file and schema required');\r\n }\r\n const schema = FRONTMATTER_SCHEMAS[schemaName!];\r\n if (!schema) {\r\n error(\r\n `Unknown schema: ${schemaName}. Available: ${Object.keys(FRONTMATTER_SCHEMAS).join(', ')}`,\r\n );\r\n }\r\n const fullPath = path.isAbsolute(filePath!) ? filePath! : path.join(cwd, filePath!);\r\n const content = safeReadFile(fullPath);\r\n if (!content) {\r\n output({ error: 'File not found', path: filePath }, raw);\r\n return;\r\n }\r\n const fm = extractFrontmatter(content);\r\n const missing = schema.required.filter(f => fm[f] === undefined);\r\n const present = schema.required.filter(f => fm[f] !== undefined);\r\n const result: FrontmatterValidationResult = {\r\n valid: missing.length === 0,\r\n missing,\r\n present,\r\n schema: schemaName!,\r\n };\r\n output(result, raw, missing.length === 0 ? 'valid' : 'invalid');\r\n}\r\n","/**\r\n * Phase — Phase CRUD, query, and lifecycle operations\r\n *\r\n * Ported from maxsim/bin/lib/phase.cjs\r\n */\r\n\r\nimport fs from 'node:fs';\r\nimport path from 'node:path';\r\n\r\nimport {\r\n normalizePhaseName,\r\n comparePhaseNum,\r\n getPhasePattern,\r\n findPhaseInternal,\r\n getArchivedPhaseDirs,\r\n generateSlugInternal,\r\n output,\r\n error,\r\n rethrowCliSignals,\r\n phasesPath,\r\n roadmapPath,\r\n statePath,\r\n planningPath,\r\n isPlanFile,\r\n isSummaryFile,\r\n planId,\r\n summaryId,\r\n listSubDirs,\r\n debugLog,\r\n todayISO,\r\n escapePhaseNum,\r\n} from './core.js';\r\nimport { extractFrontmatter } from './frontmatter.js';\r\nimport type {\r\n PhaseNumber,\r\n PhasesListOptions,\r\n FrontmatterData,\r\n} from './types.js';\r\n\r\n// ─── Core result types ──────────────────────────────────────────────────────\r\n\r\nexport interface PhaseCreateOptions {\r\n includeStubs?: boolean;\r\n}\r\n\r\nexport interface PhaseAddResult {\r\n phase_number: number;\r\n padded: string;\r\n slug: string;\r\n directory: string;\r\n description: string;\r\n}\r\n\r\nexport interface PhaseInsertResult {\r\n phase_number: string;\r\n after_phase: string;\r\n slug: string;\r\n directory: string;\r\n description: string;\r\n}\r\n\r\nexport interface PhaseCompleteResult {\r\n completed_phase: string;\r\n phase_name: string | null;\r\n plans_executed: string;\r\n next_phase: string | null;\r\n next_phase_name: string | null;\r\n is_last_phase: boolean;\r\n date: string;\r\n roadmap_updated: boolean;\r\n state_updated: boolean;\r\n requirements_updated: boolean;\r\n}\r\n\r\n// ─── Stub scaffolding ───────────────────────────────────────────────────────\r\n\r\nexport function scaffoldPhaseStubs(dirPath: string, phaseId: string, name: string): void {\r\n const today = todayISO();\r\n fs.writeFileSync(\r\n path.join(dirPath, `${phaseId}-CONTEXT.md`),\r\n `# Phase ${phaseId} Context: ${name}\\n\\n**Created:** ${today}\\n**Phase goal:** [To be defined during /maxsim:discuss-phase]\\n\\n---\\n\\n_Context will be populated by /maxsim:discuss-phase_\\n`,\r\n );\r\n fs.writeFileSync(\r\n path.join(dirPath, `${phaseId}-RESEARCH.md`),\r\n `# Phase ${phaseId}: ${name} - Research\\n\\n**Researched:** Not yet\\n**Domain:** TBD\\n**Confidence:** TBD\\n\\n---\\n\\n_Research will be populated by /maxsim:research-phase_\\n`,\r\n );\r\n}\r\n\r\n// ─── Core functions ─────────────────────────────────────────────────────────\r\n\r\nexport function phaseAddCore(cwd: string, description: string, options?: PhaseCreateOptions): PhaseAddResult {\r\n const rmPath = roadmapPath(cwd);\r\n if (!fs.existsSync(rmPath)) {\r\n throw new Error('ROADMAP.md not found');\r\n }\r\n\r\n const content = fs.readFileSync(rmPath, 'utf-8');\r\n const slug = generateSlugInternal(description);\r\n\r\n const phasePattern = getPhasePattern();\r\n let maxPhase = 0;\r\n let m: RegExpExecArray | null;\r\n while ((m = phasePattern.exec(content)) !== null) {\r\n const num = parseInt(m[1], 10);\r\n if (num > maxPhase) maxPhase = num;\r\n }\r\n\r\n const newPhaseNum = maxPhase + 1;\r\n const paddedNum = String(newPhaseNum).padStart(2, '0');\r\n const dirName = `${paddedNum}-${slug}`;\r\n const dirPath = planningPath(cwd, 'phases', dirName);\r\n\r\n fs.mkdirSync(dirPath, { recursive: true });\r\n fs.writeFileSync(path.join(dirPath, '.gitkeep'), '');\r\n\r\n if (options?.includeStubs) {\r\n scaffoldPhaseStubs(dirPath, paddedNum, description);\r\n }\r\n\r\n const phaseEntry = `\\n### Phase ${newPhaseNum}: ${description}\\n\\n**Goal:** [To be planned]\\n**Requirements**: TBD\\n**Depends on:** Phase ${maxPhase}\\n**Plans:** 0 plans\\n\\nPlans:\\n- [ ] TBD (run /maxsim:plan-phase ${newPhaseNum} to break down)\\n`;\r\n\r\n let updatedContent: string;\r\n const lastSeparator = content.lastIndexOf('\\n---');\r\n if (lastSeparator > 0) {\r\n updatedContent = content.slice(0, lastSeparator) + phaseEntry + content.slice(lastSeparator);\r\n } else {\r\n updatedContent = content + phaseEntry;\r\n }\r\n\r\n fs.writeFileSync(rmPath, updatedContent, 'utf-8');\r\n\r\n return {\r\n phase_number: newPhaseNum,\r\n padded: paddedNum,\r\n slug,\r\n directory: `.planning/phases/${dirName}`,\r\n description,\r\n };\r\n}\r\n\r\nexport function phaseInsertCore(cwd: string, afterPhase: string, description: string, options?: PhaseCreateOptions): PhaseInsertResult {\r\n const rmPath = roadmapPath(cwd);\r\n if (!fs.existsSync(rmPath)) {\r\n throw new Error('ROADMAP.md not found');\r\n }\r\n\r\n const content = fs.readFileSync(rmPath, 'utf-8');\r\n const slug = generateSlugInternal(description);\r\n\r\n const normalizedAfter = normalizePhaseName(afterPhase);\r\n const unpadded = normalizedAfter.replace(/^0+/, '');\r\n const afterPhaseEscaped = '0*' + unpadded.replace(/\\./g, '\\\\.');\r\n const targetPattern = getPhasePattern(afterPhaseEscaped, 'i');\r\n if (!targetPattern.test(content)) {\r\n throw new Error(`Phase ${afterPhase} not found in ROADMAP.md`);\r\n }\r\n\r\n const phasesDirPath = phasesPath(cwd);\r\n const normalizedBase = normalizePhaseName(afterPhase);\r\n const existingDecimals: number[] = [];\r\n\r\n try {\r\n const dirs = listSubDirs(phasesDirPath);\r\n const decimalPattern = new RegExp(`^${normalizedBase}\\\\.(\\\\d+)`);\r\n for (const dir of dirs) {\r\n const dm = dir.match(decimalPattern);\r\n if (dm) existingDecimals.push(parseInt(dm[1], 10));\r\n }\r\n } catch (e) {\r\n debugLog(e);\r\n }\r\n\r\n const nextDecimal = existingDecimals.length === 0 ? 1 : Math.max(...existingDecimals) + 1;\r\n const decimalPhase = `${normalizedBase}.${nextDecimal}`;\r\n const dirName = `${decimalPhase}-${slug}`;\r\n const dirPath = planningPath(cwd, 'phases', dirName);\r\n\r\n fs.mkdirSync(dirPath, { recursive: true });\r\n fs.writeFileSync(path.join(dirPath, '.gitkeep'), '');\r\n\r\n if (options?.includeStubs) {\r\n scaffoldPhaseStubs(dirPath, decimalPhase, description);\r\n }\r\n\r\n const phaseEntry = `\\n### Phase ${decimalPhase}: ${description} (INSERTED)\\n\\n**Goal:** [Urgent work - to be planned]\\n**Requirements**: TBD\\n**Depends on:** Phase ${afterPhase}\\n**Plans:** 0 plans\\n\\nPlans:\\n- [ ] TBD (run /maxsim:plan-phase ${decimalPhase} to break down)\\n`;\r\n\r\n const headerPattern = new RegExp(`(#{2,4}\\\\s*Phase\\\\s+0*${afterPhaseEscaped}:[^\\\\n]*\\\\n)`, 'i');\r\n const headerMatch = content.match(headerPattern);\r\n if (!headerMatch) {\r\n throw new Error(`Could not find Phase ${afterPhase} header`);\r\n }\r\n\r\n const headerIdx = content.indexOf(headerMatch[0]);\r\n const afterHeader = content.slice(headerIdx + headerMatch[0].length);\r\n const nextPhaseMatch = afterHeader.match(/\\n#{2,4}\\s+Phase\\s+\\d/i);\r\n\r\n let insertIdx: number;\r\n if (nextPhaseMatch) {\r\n insertIdx = headerIdx + headerMatch[0].length + nextPhaseMatch.index!;\r\n } else {\r\n insertIdx = content.length;\r\n }\r\n\r\n const updatedContent = content.slice(0, insertIdx) + phaseEntry + content.slice(insertIdx);\r\n fs.writeFileSync(rmPath, updatedContent, 'utf-8');\r\n\r\n return {\r\n phase_number: decimalPhase,\r\n after_phase: afterPhase,\r\n slug,\r\n directory: `.planning/phases/${dirName}`,\r\n description,\r\n };\r\n}\r\n\r\nexport function phaseCompleteCore(cwd: string, phaseNum: string): PhaseCompleteResult {\r\n const rmPath = roadmapPath(cwd);\r\n const stPath = statePath(cwd);\r\n const phasesDirPath = phasesPath(cwd);\r\n const today = todayISO();\r\n\r\n const phaseInfo = findPhaseInternal(cwd, phaseNum);\r\n if (!phaseInfo) {\r\n throw new Error(`Phase ${phaseNum} not found`);\r\n }\r\n\r\n const planCount = phaseInfo.plans.length;\r\n const summaryCount = phaseInfo.summaries.length;\r\n let requirementsUpdated = false;\r\n\r\n if (fs.existsSync(rmPath)) {\r\n let roadmapContent = fs.readFileSync(rmPath, 'utf-8');\r\n\r\n const checkboxPattern = new RegExp(\r\n `(-\\\\s*\\\\[)[ ](\\\\]\\\\s*.*Phase\\\\s+${escapePhaseNum(phaseNum)}[:\\\\s][^\\\\n]*)`,\r\n 'i',\r\n );\r\n roadmapContent = roadmapContent.replace(checkboxPattern, `$1x$2 (completed ${today})`);\r\n\r\n const phaseEscaped = escapePhaseNum(phaseNum);\r\n const tablePattern = new RegExp(\r\n `(\\\\|\\\\s*${phaseEscaped}\\\\.?\\\\s[^|]*\\\\|[^|]*\\\\|)\\\\s*[^|]*(\\\\|)\\\\s*[^|]*(\\\\|)`,\r\n 'i',\r\n );\r\n roadmapContent = roadmapContent.replace(\r\n tablePattern,\r\n `$1 Complete $2 ${today} $3`,\r\n );\r\n\r\n const planCountPattern = new RegExp(\r\n `(#{2,4}\\\\s*Phase\\\\s+${phaseEscaped}[\\\\s\\\\S]*?\\\\*\\\\*Plans:\\\\*\\\\*\\\\s*)[^\\\\n]+`,\r\n 'i',\r\n );\r\n roadmapContent = roadmapContent.replace(\r\n planCountPattern,\r\n `$1${summaryCount}/${planCount} plans complete`,\r\n );\r\n\r\n fs.writeFileSync(rmPath, roadmapContent, 'utf-8');\r\n\r\n // Update REQUIREMENTS.md\r\n const reqPath = planningPath(cwd, 'REQUIREMENTS.md');\r\n if (fs.existsSync(reqPath)) {\r\n const reqMatch = roadmapContent.match(\r\n new RegExp(`Phase\\\\s+${escapePhaseNum(phaseNum)}[\\\\s\\\\S]*?\\\\*\\\\*Requirements:\\\\*\\\\*\\\\s*([^\\\\n]+)`, 'i'),\r\n );\r\n\r\n if (reqMatch) {\r\n const reqIds = reqMatch[1].replace(/[\\[\\]]/g, '').split(/[,\\s]+/).map(r => r.trim()).filter(Boolean);\r\n let reqContent = fs.readFileSync(reqPath, 'utf-8');\r\n\r\n for (const reqId of reqIds) {\r\n reqContent = reqContent.replace(\r\n new RegExp(`(-\\\\s*\\\\[)[ ](\\\\]\\\\s*\\\\*\\\\*${reqId}\\\\*\\\\*)`, 'gi'),\r\n '$1x$2',\r\n );\r\n reqContent = reqContent.replace(\r\n new RegExp(`(\\\\|\\\\s*${reqId}\\\\s*\\\\|[^|]+\\\\|)\\\\s*Pending\\\\s*(\\\\|)`, 'gi'),\r\n '$1 Complete $2',\r\n );\r\n }\r\n\r\n fs.writeFileSync(reqPath, reqContent, 'utf-8');\r\n requirementsUpdated = true;\r\n }\r\n }\r\n }\r\n\r\n // Find next phase\r\n let nextPhaseNum: string | null = null;\r\n let nextPhaseName: string | null = null;\r\n let isLastPhase = true;\r\n\r\n try {\r\n const dirs = listSubDirs(phasesDirPath, true);\r\n\r\n for (const dir of dirs) {\r\n const dm = dir.match(/^(\\d+[A-Z]?(?:\\.\\d+)?)-?(.*)/i);\r\n if (dm) {\r\n if (comparePhaseNum(dm[1], phaseNum) > 0) {\r\n nextPhaseNum = dm[1];\r\n nextPhaseName = dm[2] || null;\r\n isLastPhase = false;\r\n break;\r\n }\r\n }\r\n }\r\n } catch (e) {\r\n debugLog(e);\r\n }\r\n\r\n // Update STATE.md\r\n if (fs.existsSync(stPath)) {\r\n let stateContent = fs.readFileSync(stPath, 'utf-8');\r\n\r\n stateContent = stateContent.replace(\r\n /(\\*\\*Current Phase:\\*\\*\\s*).*/,\r\n `$1${nextPhaseNum || phaseNum}`,\r\n );\r\n\r\n if (nextPhaseName) {\r\n stateContent = stateContent.replace(\r\n /(\\*\\*Current Phase Name:\\*\\*\\s*).*/,\r\n `$1${nextPhaseName.replace(/-/g, ' ')}`,\r\n );\r\n }\r\n\r\n stateContent = stateContent.replace(\r\n /(\\*\\*Status:\\*\\*\\s*).*/,\r\n `$1${isLastPhase ? 'Milestone complete' : 'Ready to plan'}`,\r\n );\r\n\r\n stateContent = stateContent.replace(\r\n /(\\*\\*Current Plan:\\*\\*\\s*).*/,\r\n `$1Not started`,\r\n );\r\n\r\n stateContent = stateContent.replace(\r\n /(\\*\\*Last Activity:\\*\\*\\s*).*/,\r\n `$1${today}`,\r\n );\r\n\r\n stateContent = stateContent.replace(\r\n /(\\*\\*Last Activity Description:\\*\\*\\s*).*/,\r\n `$1Phase ${phaseNum} complete${nextPhaseNum ? `, transitioned to Phase ${nextPhaseNum}` : ''}`,\r\n );\r\n\r\n fs.writeFileSync(stPath, stateContent, 'utf-8');\r\n }\r\n\r\n return {\r\n completed_phase: phaseNum,\r\n phase_name: phaseInfo.phase_name,\r\n plans_executed: `${summaryCount}/${planCount}`,\r\n next_phase: nextPhaseNum,\r\n next_phase_name: nextPhaseName,\r\n is_last_phase: isLastPhase,\r\n date: today,\r\n roadmap_updated: fs.existsSync(rmPath),\r\n state_updated: fs.existsSync(stPath),\r\n requirements_updated: requirementsUpdated,\r\n };\r\n}\r\n\r\n// ─── Phase list ─────────────────────────────────────────────────────────────\r\n\r\nexport function cmdPhasesList(cwd: string, options: PhasesListOptions, raw: boolean): void {\r\n const phasesDirPath = phasesPath(cwd);\r\n const { type, phase, includeArchived } = options;\r\n\r\n if (!fs.existsSync(phasesDirPath)) {\r\n if (type) {\r\n output({ files: [], count: 0 }, raw, '');\r\n } else {\r\n output({ directories: [], count: 0 }, raw, '');\r\n }\r\n return;\r\n }\r\n\r\n try {\r\n let dirs = listSubDirs(phasesDirPath);\r\n\r\n if (includeArchived) {\r\n const archived = getArchivedPhaseDirs(cwd);\r\n for (const a of archived) {\r\n dirs.push(`${a.name} [${a.milestone}]`);\r\n }\r\n }\r\n\r\n dirs.sort((a, b) => comparePhaseNum(a, b));\r\n\r\n if (phase) {\r\n const normalized = normalizePhaseName(phase);\r\n const match = dirs.find(d => d.startsWith(normalized));\r\n if (!match) {\r\n output({ files: [], count: 0, phase_dir: null, error: 'Phase not found' }, raw, '');\r\n return;\r\n }\r\n dirs = [match];\r\n }\r\n\r\n if (type) {\r\n const files: string[] = [];\r\n for (const dir of dirs) {\r\n const dirPath = path.join(phasesDirPath, dir);\r\n const dirFiles = fs.readdirSync(dirPath);\r\n\r\n let filtered: string[];\r\n if (type === 'plans') {\r\n filtered = dirFiles.filter(isPlanFile);\r\n } else if (type === 'summaries') {\r\n filtered = dirFiles.filter(isSummaryFile);\r\n } else {\r\n filtered = dirFiles;\r\n }\r\n\r\n files.push(...filtered.sort());\r\n }\r\n\r\n const result = {\r\n files,\r\n count: files.length,\r\n phase_dir: phase ? dirs[0].replace(/^\\d+(?:\\.\\d+)?-?/, '') : null,\r\n };\r\n output(result, raw, files.join('\\n'));\r\n return;\r\n }\r\n\r\n output({ directories: dirs, count: dirs.length }, raw, dirs.join('\\n'));\r\n } catch (e: unknown) {\r\n rethrowCliSignals(e);\r\n error('Failed to list phases: ' + (e as Error).message);\r\n }\r\n}\r\n\r\n// ─── Next decimal ───────────────────────────────────────────────────────────\r\n\r\nexport function cmdPhaseNextDecimal(cwd: string, basePhase: string, raw: boolean): void {\r\n const phasesDirPath = phasesPath(cwd);\r\n const normalized = normalizePhaseName(basePhase);\r\n\r\n if (!fs.existsSync(phasesDirPath)) {\r\n output(\r\n { found: false, base_phase: normalized, next: `${normalized}.1`, existing: [] },\r\n raw,\r\n `${normalized}.1`,\r\n );\r\n return;\r\n }\r\n\r\n try {\r\n const dirs = listSubDirs(phasesDirPath);\r\n\r\n const baseExists = dirs.some(d => d.startsWith(normalized + '-') || d === normalized);\r\n\r\n const decimalPattern = new RegExp(`^${normalized}\\\\.(\\\\d+)`);\r\n const existingDecimals: string[] = [];\r\n\r\n for (const dir of dirs) {\r\n const match = dir.match(decimalPattern);\r\n if (match) {\r\n existingDecimals.push(`${normalized}.${match[1]}`);\r\n }\r\n }\r\n\r\n existingDecimals.sort((a, b) => {\r\n const aNum = parseFloat(a);\r\n const bNum = parseFloat(b);\r\n return aNum - bNum;\r\n });\r\n\r\n let nextDecimal: string;\r\n if (existingDecimals.length === 0) {\r\n nextDecimal = `${normalized}.1`;\r\n } else {\r\n const lastDecimal = existingDecimals[existingDecimals.length - 1];\r\n const lastNum = parseInt(lastDecimal.split('.')[1], 10);\r\n nextDecimal = `${normalized}.${lastNum + 1}`;\r\n }\r\n\r\n output(\r\n { found: baseExists, base_phase: normalized, next: nextDecimal, existing: existingDecimals },\r\n raw,\r\n nextDecimal,\r\n );\r\n } catch (e: unknown) {\r\n rethrowCliSignals(e);\r\n error('Failed to calculate next decimal phase: ' + (e as Error).message);\r\n }\r\n}\r\n\r\n// ─── Find phase ─────────────────────────────────────────────────────────────\r\n\r\nexport function cmdFindPhase(cwd: string, phase: string | undefined, raw: boolean): void {\r\n if (!phase) {\r\n error('phase identifier required');\r\n }\r\n\r\n const phasesDirPath = phasesPath(cwd);\r\n const normalized = normalizePhaseName(phase);\r\n\r\n const notFound = { found: false, directory: null, phase_number: null, phase_name: null, plans: [] as string[], summaries: [] as string[] };\r\n\r\n try {\r\n const dirs = listSubDirs(phasesDirPath, true);\r\n\r\n const match = dirs.find(d => d.startsWith(normalized));\r\n if (!match) {\r\n output(notFound, raw, '');\r\n return;\r\n }\r\n\r\n const dirMatch = match.match(/^(\\d+[A-Z]?(?:\\.\\d+)?)-?(.*)/i);\r\n const phaseNumber = dirMatch ? dirMatch[1] : normalized;\r\n const phaseName = dirMatch && dirMatch[2] ? dirMatch[2] : null;\r\n\r\n const phaseDir = path.join(phasesDirPath, match);\r\n const phaseFiles = fs.readdirSync(phaseDir);\r\n const plans = phaseFiles.filter(isPlanFile).sort();\r\n const summaries = phaseFiles.filter(isSummaryFile).sort();\r\n\r\n const result = {\r\n found: true,\r\n directory: path.join('.planning', 'phases', match),\r\n phase_number: phaseNumber,\r\n phase_name: phaseName,\r\n plans,\r\n summaries,\r\n };\r\n\r\n output(result, raw, result.directory);\r\n } catch (e: unknown) {\r\n rethrowCliSignals(e);\r\n output(notFound, raw, '');\r\n }\r\n}\r\n\r\n// ─── Phase plan index ───────────────────────────────────────────────────────\r\n\r\nexport function cmdPhasePlanIndex(cwd: string, phase: string | undefined, raw: boolean): void {\r\n if (!phase) {\r\n error('phase required for phase-plan-index');\r\n }\r\n\r\n const phasesDirPath = phasesPath(cwd);\r\n const normalized = normalizePhaseName(phase);\r\n\r\n let phaseDir: string | null = null;\r\n let phaseDirName: string | null = null;\r\n try {\r\n const dirs = listSubDirs(phasesDirPath, true);\r\n const match = dirs.find(d => d.startsWith(normalized));\r\n if (match) {\r\n phaseDir = path.join(phasesDirPath, match);\r\n phaseDirName = match;\r\n }\r\n } catch (e) {\r\n /* optional op, ignore */\r\n debugLog(e);\r\n }\r\n\r\n if (!phaseDir) {\r\n output({ phase: normalized, error: 'Phase not found', plans: [], waves: {}, incomplete: [], has_checkpoints: false }, raw);\r\n return;\r\n }\r\n\r\n const phaseFiles = fs.readdirSync(phaseDir);\r\n const planFiles = phaseFiles.filter(isPlanFile).sort();\r\n const summaryFiles = phaseFiles.filter(isSummaryFile);\r\n\r\n const completedPlanIds = new Set(\r\n summaryFiles.map(summaryId),\r\n );\r\n\r\n const plans: Array<{\r\n id: string;\r\n wave: number;\r\n autonomous: boolean;\r\n objective: string | null;\r\n files_modified: string[];\r\n task_count: number;\r\n has_summary: boolean;\r\n }> = [];\r\n const waves: Record = {};\r\n const incomplete: string[] = [];\r\n let hasCheckpoints = false;\r\n\r\n for (const planFile of planFiles) {\r\n const id = planId(planFile);\r\n const planPath = path.join(phaseDir, planFile);\r\n const content = fs.readFileSync(planPath, 'utf-8');\r\n const fm = extractFrontmatter(content);\r\n\r\n const taskMatches = content.match(/##\\s*Task\\s*\\d+/gi) || [];\r\n const taskCount = taskMatches.length;\r\n\r\n const wave = parseInt(fm.wave as string, 10) || 1;\r\n\r\n let autonomous = true;\r\n if (fm.autonomous !== undefined) {\r\n autonomous = fm.autonomous === 'true' || fm.autonomous === true;\r\n }\r\n\r\n if (!autonomous) {\r\n hasCheckpoints = true;\r\n }\r\n\r\n let filesModified: string[] = [];\r\n if (fm['files-modified']) {\r\n filesModified = Array.isArray(fm['files-modified']) ? fm['files-modified'] as string[] : [fm['files-modified'] as string];\r\n }\r\n\r\n const hasSummary = completedPlanIds.has(id);\r\n if (!hasSummary) {\r\n incomplete.push(id);\r\n }\r\n\r\n const plan = {\r\n id,\r\n wave,\r\n autonomous,\r\n objective: (fm.objective as string) || null,\r\n files_modified: filesModified,\r\n task_count: taskCount,\r\n has_summary: hasSummary,\r\n };\r\n\r\n plans.push(plan);\r\n\r\n const waveKey = String(wave);\r\n if (!waves[waveKey]) {\r\n waves[waveKey] = [];\r\n }\r\n waves[waveKey].push(id);\r\n }\r\n\r\n output({ phase: normalized, plans, waves, incomplete, has_checkpoints: hasCheckpoints }, raw);\r\n}\r\n\r\n// ─── Phase add ──────────────────────────────────────────────────────────────\r\n\r\nexport function cmdPhaseAdd(cwd: string, description: string | undefined, raw: boolean): void {\r\n if (!description) {\r\n error('description required for phase add');\r\n }\r\n\r\n try {\r\n const result = phaseAddCore(cwd, description, { includeStubs: false });\r\n output(\r\n { phase_number: result.phase_number, padded: result.padded, name: result.description, slug: result.slug, directory: result.directory },\r\n raw,\r\n result.padded,\r\n );\r\n } catch (e) {\r\n rethrowCliSignals(e);\r\n error((e as Error).message);\r\n }\r\n}\r\n\r\n// ─── Phase insert ───────────────────────────────────────────────────────────\r\n\r\nexport function cmdPhaseInsert(cwd: string, afterPhase: string | undefined, description: string | undefined, raw: boolean): void {\r\n if (!afterPhase || !description) {\r\n error('after-phase and description required for phase insert');\r\n }\r\n\r\n try {\r\n const result = phaseInsertCore(cwd, afterPhase, description, { includeStubs: false });\r\n output(\r\n { phase_number: result.phase_number, after_phase: result.after_phase, name: result.description, slug: result.slug, directory: result.directory },\r\n raw,\r\n result.phase_number,\r\n );\r\n } catch (e) {\r\n rethrowCliSignals(e);\r\n error((e as Error).message);\r\n }\r\n}\r\n\r\n// ─── Phase remove ───────────────────────────────────────────────────────────\r\n\r\nexport function cmdPhaseRemove(\r\n cwd: string,\r\n targetPhase: string | undefined,\r\n options: { force: boolean },\r\n raw: boolean,\r\n): void {\r\n if (!targetPhase) {\r\n error('phase number required for phase remove');\r\n }\r\n\r\n const rmPath = roadmapPath(cwd);\r\n const phasesDirPath = phasesPath(cwd);\r\n const force = options.force || false;\r\n\r\n if (!fs.existsSync(rmPath)) {\r\n error('ROADMAP.md not found');\r\n }\r\n\r\n const normalized = normalizePhaseName(targetPhase);\r\n const isDecimal = targetPhase.includes('.');\r\n\r\n let targetDir: string | null = null;\r\n try {\r\n const dirs = listSubDirs(phasesDirPath, true);\r\n targetDir = dirs.find(d => d.startsWith(normalized + '-') || d === normalized) || null;\r\n } catch (e) {\r\n /* optional op, ignore */\r\n debugLog(e);\r\n }\r\n\r\n if (targetDir && !force) {\r\n const targetPath = path.join(phasesDirPath, targetDir);\r\n const files = fs.readdirSync(targetPath);\r\n const summaries = files.filter(isSummaryFile);\r\n if (summaries.length > 0) {\r\n error(`Phase ${targetPhase} has ${summaries.length} executed plan(s). Use --force to remove anyway.`);\r\n }\r\n }\r\n\r\n if (targetDir) {\r\n fs.rmSync(path.join(phasesDirPath, targetDir), { recursive: true, force: true });\r\n }\r\n\r\n const renamedDirs: Array<{ from: string; to: string }> = [];\r\n const renamedFiles: Array<{ from: string; to: string }> = [];\r\n\r\n if (isDecimal) {\r\n const baseParts = normalized.split('.');\r\n const baseInt = baseParts[0];\r\n const removedDecimal = parseInt(baseParts[1], 10);\r\n\r\n try {\r\n const dirs = listSubDirs(phasesDirPath, true);\r\n\r\n const decPattern = new RegExp(`^${baseInt}\\\\.(\\\\d+)-(.+)$`);\r\n const toRename: Array<{ dir: string; oldDecimal: number; slug: string }> = [];\r\n for (const dir of dirs) {\r\n const dm = dir.match(decPattern);\r\n if (dm && parseInt(dm[1], 10) > removedDecimal) {\r\n toRename.push({ dir, oldDecimal: parseInt(dm[1], 10), slug: dm[2] });\r\n }\r\n }\r\n\r\n toRename.sort((a, b) => b.oldDecimal - a.oldDecimal);\r\n\r\n for (const item of toRename) {\r\n const newDecimal = item.oldDecimal - 1;\r\n const oldPhaseId = `${baseInt}.${item.oldDecimal}`;\r\n const newPhaseId = `${baseInt}.${newDecimal}`;\r\n const newDirName = `${baseInt}.${newDecimal}-${item.slug}`;\r\n\r\n fs.renameSync(path.join(phasesDirPath, item.dir), path.join(phasesDirPath, newDirName));\r\n renamedDirs.push({ from: item.dir, to: newDirName });\r\n\r\n const dirFiles = fs.readdirSync(path.join(phasesDirPath, newDirName));\r\n for (const f of dirFiles) {\r\n if (f.includes(oldPhaseId)) {\r\n const newFileName = f.replace(oldPhaseId, newPhaseId);\r\n fs.renameSync(\r\n path.join(phasesDirPath, newDirName, f),\r\n path.join(phasesDirPath, newDirName, newFileName),\r\n );\r\n renamedFiles.push({ from: f, to: newFileName });\r\n }\r\n }\r\n }\r\n } catch (e) {\r\n /* optional op, ignore */\r\n debugLog(e);\r\n }\r\n } else {\r\n const removedInt = parseInt(normalized, 10);\r\n\r\n try {\r\n const dirs = listSubDirs(phasesDirPath, true);\r\n\r\n const toRename: Array<{ dir: string; oldInt: number; letter: string; decimal: number | null; slug: string }> = [];\r\n for (const dir of dirs) {\r\n const dm = dir.match(/^(\\d+)([A-Z])?(?:\\.(\\d+))?-(.+)$/i);\r\n if (!dm) continue;\r\n const dirInt = parseInt(dm[1], 10);\r\n if (dirInt > removedInt) {\r\n toRename.push({\r\n dir,\r\n oldInt: dirInt,\r\n letter: dm[2] ? dm[2].toUpperCase() : '',\r\n decimal: dm[3] ? parseInt(dm[3], 10) : null,\r\n slug: dm[4],\r\n });\r\n }\r\n }\r\n\r\n toRename.sort((a, b) => {\r\n if (a.oldInt !== b.oldInt) return b.oldInt - a.oldInt;\r\n return (b.decimal || 0) - (a.decimal || 0);\r\n });\r\n\r\n for (const item of toRename) {\r\n const newInt = item.oldInt - 1;\r\n const newPadded = String(newInt).padStart(2, '0');\r\n const oldPadded = String(item.oldInt).padStart(2, '0');\r\n const letterSuffix = item.letter || '';\r\n const decimalSuffix = item.decimal !== null ? `.${item.decimal}` : '';\r\n const oldPrefix = `${oldPadded}${letterSuffix}${decimalSuffix}`;\r\n const newPrefix = `${newPadded}${letterSuffix}${decimalSuffix}`;\r\n const newDirName = `${newPrefix}-${item.slug}`;\r\n\r\n fs.renameSync(path.join(phasesDirPath, item.dir), path.join(phasesDirPath, newDirName));\r\n renamedDirs.push({ from: item.dir, to: newDirName });\r\n\r\n const dirFiles = fs.readdirSync(path.join(phasesDirPath, newDirName));\r\n for (const f of dirFiles) {\r\n if (f.startsWith(oldPrefix)) {\r\n const newFileName = newPrefix + f.slice(oldPrefix.length);\r\n fs.renameSync(\r\n path.join(phasesDirPath, newDirName, f),\r\n path.join(phasesDirPath, newDirName, newFileName),\r\n );\r\n renamedFiles.push({ from: f, to: newFileName });\r\n }\r\n }\r\n }\r\n } catch (e) {\r\n /* optional op, ignore */\r\n debugLog(e);\r\n }\r\n }\r\n\r\n // Update ROADMAP.md\r\n let roadmapContent = fs.readFileSync(rmPath, 'utf-8');\r\n\r\n const targetEscaped = escapePhaseNum(targetPhase);\r\n const sectionPattern = new RegExp(\r\n `\\\\n?#{2,4}\\\\s*Phase\\\\s+${targetEscaped}\\\\s*:[\\\\s\\\\S]*?(?=\\\\n#{2,4}\\\\s+Phase\\\\s+\\\\d|$)`,\r\n 'i',\r\n );\r\n roadmapContent = roadmapContent.replace(sectionPattern, '');\r\n\r\n const checkboxPattern = new RegExp(`\\\\n?-\\\\s*\\\\[[ x]\\\\]\\\\s*.*Phase\\\\s+${targetEscaped}[:\\\\s][^\\\\n]*`, 'gi');\r\n roadmapContent = roadmapContent.replace(checkboxPattern, '');\r\n\r\n const tableRowPattern = new RegExp(`\\\\n?\\\\|\\\\s*${targetEscaped}\\\\.?\\\\s[^|]*\\\\|[^\\\\n]*`, 'gi');\r\n roadmapContent = roadmapContent.replace(tableRowPattern, '');\r\n\r\n if (!isDecimal) {\r\n const removedInt = parseInt(normalized, 10);\r\n const maxPhase = 99;\r\n for (let oldNum = maxPhase; oldNum > removedInt; oldNum--) {\r\n const newNum = oldNum - 1;\r\n const oldStr = String(oldNum);\r\n const newStr = String(newNum);\r\n const oldPad = oldStr.padStart(2, '0');\r\n const newPad = newStr.padStart(2, '0');\r\n\r\n roadmapContent = roadmapContent.replace(\r\n new RegExp(`(#{2,4}\\\\s*Phase\\\\s+)${oldStr}(\\\\s*:)`, 'gi'),\r\n `$1${newStr}$2`,\r\n );\r\n roadmapContent = roadmapContent.replace(\r\n new RegExp(`(Phase\\\\s+)${oldStr}([:\\\\s])`, 'g'),\r\n `$1${newStr}$2`,\r\n );\r\n roadmapContent = roadmapContent.replace(\r\n new RegExp(`${oldPad}-(\\\\d{2})`, 'g'),\r\n `${newPad}-$1`,\r\n );\r\n roadmapContent = roadmapContent.replace(\r\n new RegExp(`(\\\\|\\\\s*)${oldStr}\\\\.\\\\s`, 'g'),\r\n `$1${newStr}. `,\r\n );\r\n roadmapContent = roadmapContent.replace(\r\n new RegExp(`(Depends on:\\\\*\\\\*\\\\s*Phase\\\\s+)${oldStr}\\\\b`, 'gi'),\r\n `$1${newStr}`,\r\n );\r\n }\r\n }\r\n\r\n fs.writeFileSync(rmPath, roadmapContent, 'utf-8');\r\n\r\n // Update STATE.md phase count\r\n const stPath = statePath(cwd);\r\n if (fs.existsSync(stPath)) {\r\n let stateContent = fs.readFileSync(stPath, 'utf-8');\r\n const totalPattern = /(\\*\\*Total Phases:\\*\\*\\s*)(\\d+)/;\r\n const totalMatch = stateContent.match(totalPattern);\r\n if (totalMatch) {\r\n const oldTotal = parseInt(totalMatch[2], 10);\r\n stateContent = stateContent.replace(totalPattern, `$1${oldTotal - 1}`);\r\n }\r\n const ofPattern = /(\\bof\\s+)(\\d+)(\\s*(?:\\(|phases?))/i;\r\n const ofMatch = stateContent.match(ofPattern);\r\n if (ofMatch) {\r\n const oldTotal = parseInt(ofMatch[2], 10);\r\n stateContent = stateContent.replace(ofPattern, `$1${oldTotal - 1}$3`);\r\n }\r\n fs.writeFileSync(stPath, stateContent, 'utf-8');\r\n }\r\n\r\n output({\r\n removed: targetPhase,\r\n directory_deleted: targetDir || null,\r\n renamed_directories: renamedDirs,\r\n renamed_files: renamedFiles,\r\n roadmap_updated: true,\r\n state_updated: fs.existsSync(stPath),\r\n }, raw);\r\n}\r\n\r\n// ─── Phase complete ─────────────────────────────────────────────────────────\r\n\r\nexport function cmdPhaseComplete(cwd: string, phaseNum: string | undefined, raw: boolean): void {\r\n if (!phaseNum) {\r\n error('phase number required for phase complete');\r\n }\r\n\r\n try {\r\n const result = phaseCompleteCore(cwd, phaseNum);\r\n output({\r\n completed_phase: result.completed_phase,\r\n phase_name: result.phase_name,\r\n plans_executed: result.plans_executed,\r\n next_phase: result.next_phase,\r\n next_phase_name: result.next_phase_name,\r\n is_last_phase: result.is_last_phase,\r\n date: result.date,\r\n roadmap_updated: result.roadmap_updated,\r\n state_updated: result.state_updated,\r\n }, raw);\r\n } catch (e) {\r\n rethrowCliSignals(e);\r\n error((e as Error).message);\r\n }\r\n}\r\n","/**\r\n * MCP Utilities — Shared helpers for MCP tools\r\n *\r\n * CRITICAL: Never import output() or error() from core — they call process.exit().\r\n * CRITICAL: Never write to stdout — it is reserved for MCP JSON-RPC protocol.\r\n */\r\n\r\nimport fs from 'node:fs';\r\nimport path from 'node:path';\r\n\r\n/**\r\n * Walk up from startDir to find a directory containing `.planning/`.\r\n * Returns the directory containing `.planning/` or null if not found.\r\n */\r\nlet _cachedRoot: string | null | undefined;\r\n\r\nexport function detectProjectRoot(startDir?: string): string | null {\r\n // Only cache when using default startDir (cwd)\r\n if (startDir === undefined && _cachedRoot !== undefined) {\r\n return _cachedRoot;\r\n }\r\n\r\n let dir = startDir || process.cwd();\r\n\r\n // Safety limit to prevent infinite loops\r\n for (let i = 0; i < 100; i++) {\r\n const planningDir = path.join(dir, '.planning');\r\n try {\r\n const stat = fs.statSync(planningDir);\r\n if (stat.isDirectory()) {\r\n if (startDir === undefined) _cachedRoot = dir;\r\n return dir;\r\n }\r\n } catch {\r\n // Not found here, walk up\r\n }\r\n\r\n const parent = path.dirname(dir);\r\n if (parent === dir) {\r\n // Reached filesystem root\r\n if (startDir === undefined) _cachedRoot = null;\r\n return null;\r\n }\r\n dir = parent;\r\n }\r\n\r\n if (startDir === undefined) _cachedRoot = null;\r\n return null;\r\n}\r\n\r\n/**\r\n * Return a structured MCP success response.\r\n */\r\nexport function mcpSuccess(data: Record, summary: string) {\r\n return {\r\n content: [\r\n {\r\n type: 'text' as const,\r\n text: JSON.stringify({ success: true, data, summary }, null, 2),\r\n },\r\n ],\r\n };\r\n}\r\n\r\n/**\r\n * Return a structured MCP error response.\r\n */\r\nexport function mcpError(error: string, summary: string) {\r\n return {\r\n content: [\r\n {\r\n type: 'text' as const,\r\n text: JSON.stringify({ success: false, error, summary }, null, 2),\r\n },\r\n ],\r\n isError: true as const,\r\n };\r\n}\r\n","/**\r\n * Phase CRUD MCP Tools — Phase operations exposed as MCP tools\r\n *\r\n * CRITICAL: Never import output() or error() from core — they call process.exit().\r\n * CRITICAL: Never write to stdout — it is reserved for MCP JSON-RPC protocol.\r\n * CRITICAL: Never call process.exit() — the server must stay alive after every tool call.\r\n */\r\n\r\nimport fs from 'node:fs';\r\nimport { z } from 'zod';\r\nimport type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\r\n\r\nimport {\r\n findPhaseInternal,\r\n comparePhaseNum,\r\n getArchivedPhaseDirs,\r\n phasesPath,\r\n listSubDirs,\r\n} from '../core/core.js';\r\n\r\nimport {\r\n phaseAddCore,\r\n phaseInsertCore,\r\n phaseCompleteCore,\r\n} from '../core/phase.js';\r\n\r\nimport { detectProjectRoot, mcpSuccess, mcpError } from './utils.js';\r\n\r\n/**\r\n * Register all phase CRUD tools on the MCP server.\r\n */\r\nexport function registerPhaseTools(server: McpServer): void {\r\n // ── mcp_find_phase ──────────────────────────────────────────────────────────\r\n\r\n server.tool(\r\n 'mcp_find_phase',\r\n 'Find a phase directory by number or name. Returns phase details including plans, summaries, and status.',\r\n {\r\n phase: z.string().describe('Phase number or name (e.g. \"01\", \"1\", \"01A\", \"1.1\")'),\r\n },\r\n async ({ phase }) => {\r\n try {\r\n const cwd = detectProjectRoot();\r\n if (!cwd) {\r\n return mcpError('No .planning/ directory found', 'Project not detected');\r\n }\r\n\r\n const result = findPhaseInternal(cwd, phase);\r\n if (!result) {\r\n return mcpError(`Phase ${phase} not found`, 'Phase not found');\r\n }\r\n\r\n return mcpSuccess(\r\n {\r\n found: result.found,\r\n directory: result.directory,\r\n phase_number: result.phase_number,\r\n phase_name: result.phase_name,\r\n phase_slug: result.phase_slug,\r\n plans: result.plans,\r\n summaries: result.summaries,\r\n incomplete_plans: result.incomplete_plans,\r\n has_research: result.has_research,\r\n has_context: result.has_context,\r\n has_verification: result.has_verification,\r\n archived: result.archived ?? null,\r\n },\r\n `Found phase ${result.phase_number}: ${result.phase_name ?? 'unnamed'}`,\r\n );\r\n } catch (e) {\r\n return mcpError((e as Error).message, 'Operation failed');\r\n }\r\n },\r\n );\r\n\r\n // ── mcp_list_phases ─────────────────────────────────────────────────────────\r\n\r\n server.tool(\r\n 'mcp_list_phases',\r\n 'List all phase directories, sorted correctly. Optionally include archived phases from milestones.',\r\n {\r\n include_archived: z\r\n .boolean()\r\n .optional()\r\n .default(false)\r\n .describe('Include archived phases from completed milestones'),\r\n },\r\n async ({ include_archived }) => {\r\n try {\r\n const cwd = detectProjectRoot();\r\n if (!cwd) {\r\n return mcpError('No .planning/ directory found', 'Project not detected');\r\n }\r\n\r\n const phasesDir = phasesPath(cwd);\r\n if (!fs.existsSync(phasesDir)) {\r\n return mcpSuccess(\r\n { directories: [], count: 0 },\r\n 'No phases directory found',\r\n );\r\n }\r\n\r\n let dirs = listSubDirs(phasesDir);\r\n\r\n if (include_archived) {\r\n const archived = getArchivedPhaseDirs(cwd);\r\n for (const a of archived) {\r\n dirs.push(`${a.name} [${a.milestone}]`);\r\n }\r\n }\r\n\r\n dirs.sort((a, b) => comparePhaseNum(a, b));\r\n\r\n return mcpSuccess(\r\n { directories: dirs, count: dirs.length },\r\n `Found ${dirs.length} phase(s)`,\r\n );\r\n } catch (e) {\r\n return mcpError((e as Error).message, 'Operation failed');\r\n }\r\n },\r\n );\r\n\r\n // ── mcp_create_phase ────────────────────────────────────────────────────────\r\n\r\n server.tool(\r\n 'mcp_create_phase',\r\n 'Create a new phase. Adds the next sequential phase directory and appends to ROADMAP.md.',\r\n {\r\n name: z.string().describe('Phase description/name (e.g. \"Authentication System\")'),\r\n },\r\n async ({ name }) => {\r\n try {\r\n const cwd = detectProjectRoot();\r\n if (!cwd) {\r\n return mcpError('No .planning/ directory found', 'Project not detected');\r\n }\r\n\r\n if (!name || !name.trim()) {\r\n return mcpError('Phase name must not be empty', 'Validation failed');\r\n }\r\n\r\n const result = phaseAddCore(cwd, name, { includeStubs: true });\r\n\r\n return mcpSuccess(\r\n {\r\n phase_number: result.phase_number,\r\n padded: result.padded,\r\n name: result.description,\r\n slug: result.slug,\r\n directory: result.directory,\r\n },\r\n `Created Phase ${result.phase_number}: ${result.description}`,\r\n );\r\n } catch (e) {\r\n return mcpError((e as Error).message, 'Operation failed');\r\n }\r\n },\r\n );\r\n\r\n // ── mcp_insert_phase ────────────────────────────────────────────────────────\r\n\r\n server.tool(\r\n 'mcp_insert_phase',\r\n 'Insert a decimal phase after a specified phase (e.g. 01.1 after 01). Creates directory and updates ROADMAP.md.',\r\n {\r\n name: z.string().describe('Phase description/name'),\r\n after: z.string().describe('Phase number to insert after (e.g. \"01\", \"1\")'),\r\n },\r\n async ({ name, after }) => {\r\n try {\r\n const cwd = detectProjectRoot();\r\n if (!cwd) {\r\n return mcpError('No .planning/ directory found', 'Project not detected');\r\n }\r\n\r\n if (!name || !name.trim()) {\r\n return mcpError('Phase name must not be empty', 'Validation failed');\r\n }\r\n\r\n const result = phaseInsertCore(cwd, after, name, { includeStubs: true });\r\n\r\n return mcpSuccess(\r\n {\r\n phase_number: result.phase_number,\r\n after_phase: result.after_phase,\r\n name: result.description,\r\n slug: result.slug,\r\n directory: result.directory,\r\n },\r\n `Inserted Phase ${result.phase_number}: ${result.description} after Phase ${result.after_phase}`,\r\n );\r\n } catch (e) {\r\n return mcpError((e as Error).message, 'Operation failed');\r\n }\r\n },\r\n );\r\n\r\n // ── mcp_complete_phase ──────────────────────────────────────────────────────\r\n\r\n server.tool(\r\n 'mcp_complete_phase',\r\n 'Mark a phase as complete. Updates ROADMAP.md checkbox, progress table, plan count, STATE.md, and REQUIREMENTS.md.',\r\n {\r\n phase: z.string().describe('Phase number to complete (e.g. \"01\", \"1\", \"1.1\")'),\r\n },\r\n async ({ phase }) => {\r\n try {\r\n const cwd = detectProjectRoot();\r\n if (!cwd) {\r\n return mcpError('No .planning/ directory found', 'Project not detected');\r\n }\r\n\r\n const result = phaseCompleteCore(cwd, phase);\r\n\r\n return mcpSuccess(\r\n {\r\n completed_phase: result.completed_phase,\r\n phase_name: result.phase_name,\r\n plans_executed: result.plans_executed,\r\n next_phase: result.next_phase,\r\n next_phase_name: result.next_phase_name,\r\n is_last_phase: result.is_last_phase,\r\n date: result.date,\r\n roadmap_updated: result.roadmap_updated,\r\n state_updated: result.state_updated,\r\n },\r\n `Phase ${phase} marked as complete${result.next_phase ? `, next: Phase ${result.next_phase}` : ''}`,\r\n );\r\n } catch (e) {\r\n return mcpError((e as Error).message, 'Operation failed');\r\n }\r\n },\r\n );\r\n}\r\n","/**\r\n * Commands — Standalone utility commands\r\n *\r\n * Ported from maxsim/bin/lib/commands.cjs\r\n */\r\n\r\nimport fs from 'node:fs';\r\nimport path from 'node:path';\r\n\r\nimport chalk from 'chalk';\r\nimport slugify from 'slugify';\r\nimport {\r\n safeReadFile,\r\n loadConfig,\r\n isGitIgnored,\r\n execGit,\r\n normalizePhaseName,\r\n getArchivedPhaseDirs,\r\n generateSlugInternal,\r\n getMilestoneInfo,\r\n resolveModelInternal,\r\n MODEL_PROFILES,\r\n output,\r\n error,\r\n rethrowCliSignals,\r\n findPhaseInternal,\r\n todayISO,\r\n planningPath,\r\n phasesPath,\r\n listSubDirs,\r\n isPlanFile,\r\n isSummaryFile,\r\n debugLog,\r\n} from './core.js';\r\nimport { extractFrontmatter } from './frontmatter.js';\r\nimport type {\r\n TodoItem,\r\n HistoryDigest,\r\n HistoryPhaseDigest,\r\n WebSearchOptions,\r\n WebSearchResult,\r\n ScaffoldOptions,\r\n TimestampFormat,\r\n ModelProfileName,\r\n AgentType,\r\n FrontmatterData,\r\n} from './types.js';\r\n\r\n// ─── Todo frontmatter parsing ────────────────────────────────────────────────\r\n\r\nexport interface TodoFrontmatter {\r\n created: string;\r\n title: string;\r\n area: string;\r\n completed?: string;\r\n}\r\n\r\nexport function parseTodoFrontmatter(content: string): TodoFrontmatter {\r\n const createdMatch = content.match(/^created:\\s*(.+)$/m);\r\n const titleMatch = content.match(/^title:\\s*(.+)$/m);\r\n const areaMatch = content.match(/^area:\\s*(.+)$/m);\r\n const completedMatch = content.match(/^completed:\\s*(.+)$/m);\r\n\r\n return {\r\n created: createdMatch ? createdMatch[1].trim() : 'unknown',\r\n title: titleMatch ? titleMatch[1].trim() : 'Untitled',\r\n area: areaMatch ? areaMatch[1].trim() : 'general',\r\n ...(completedMatch && { completed: completedMatch[1].trim() }),\r\n };\r\n}\r\n\r\n// ─── Slug generation ────────────────────────────────────────────────────────\r\n\r\nexport function cmdGenerateSlug(text: string | undefined, raw: boolean): void {\r\n if (!text) {\r\n error('text required for slug generation');\r\n }\r\n\r\n const slug = slugify(text, { lower: true, strict: true });\r\n\r\n const result = { slug };\r\n output(result, raw, slug);\r\n}\r\n\r\n// ─── Timestamp ──────────────────────────────────────────────────────────────\r\n\r\nexport function cmdCurrentTimestamp(format: TimestampFormat, raw: boolean): void {\r\n const now = new Date();\r\n let result: string;\r\n\r\n switch (format) {\r\n case 'date':\r\n result = todayISO();\r\n break;\r\n case 'filename':\r\n result = now.toISOString().replace(/:/g, '-').replace(/\\..+/, '');\r\n break;\r\n case 'full':\r\n default:\r\n result = now.toISOString();\r\n break;\r\n }\r\n\r\n output({ timestamp: result }, raw, result);\r\n}\r\n\r\n// ─── Todos ──────────────────────────────────────────────────────────────────\r\n\r\nexport function cmdListTodos(cwd: string, area: string | undefined, raw: boolean): void {\r\n const pendingDir = planningPath(cwd, 'todos', 'pending');\r\n\r\n let count = 0;\r\n const todos: TodoItem[] = [];\r\n\r\n try {\r\n const files = fs.readdirSync(pendingDir).filter(f => f.endsWith('.md'));\r\n\r\n for (const file of files) {\r\n try {\r\n const content = fs.readFileSync(path.join(pendingDir, file), 'utf-8');\r\n const fm = parseTodoFrontmatter(content);\r\n\r\n // Apply area filter if specified\r\n if (area && fm.area !== area) continue;\r\n\r\n count++;\r\n todos.push({\r\n file,\r\n created: fm.created,\r\n title: fm.title,\r\n area: fm.area,\r\n path: path.join('.planning', 'todos', 'pending', file),\r\n });\r\n } catch (e) {\r\n /* optional op, ignore */\r\n debugLog(e);\r\n }\r\n }\r\n } catch (e) {\r\n /* optional op, ignore */\r\n debugLog(e);\r\n }\r\n\r\n const result = { count, todos };\r\n output(result, raw, count.toString());\r\n}\r\n\r\n// ─── Path verification ──────────────────────────────────────────────────────\r\n\r\nexport function cmdVerifyPathExists(cwd: string, targetPath: string | undefined, raw: boolean): void {\r\n if (!targetPath) {\r\n error('path required for verification');\r\n }\r\n\r\n const fullPath = path.isAbsolute(targetPath) ? targetPath : path.join(cwd, targetPath);\r\n\r\n try {\r\n const stats = fs.statSync(fullPath);\r\n const type = stats.isDirectory() ? 'directory' : stats.isFile() ? 'file' : 'other';\r\n const result = { exists: true, type };\r\n output(result, raw, 'true');\r\n } catch (e: unknown) {\r\n rethrowCliSignals(e);\r\n const result = { exists: false, type: null };\r\n output(result, raw, 'false');\r\n }\r\n}\r\n\r\n// ─── History digest ─────────────────────────────────────────────────────────\r\n\r\nexport function cmdHistoryDigest(cwd: string, raw: boolean): void {\r\n const phasesDir = phasesPath(cwd);\r\n const digest: {\r\n phases: Record; affects: Set; patterns: Set }>;\r\n decisions: Array<{ phase: string; decision: string }>;\r\n tech_stack: Set | string[];\r\n } = { phases: {}, decisions: [], tech_stack: new Set() };\r\n\r\n // Collect all phase directories: archived + current\r\n const allPhaseDirs: Array<{ name: string; fullPath: string; milestone: string | null }> = [];\r\n\r\n // Add archived phases first (oldest milestones first)\r\n const archived = getArchivedPhaseDirs(cwd);\r\n for (const a of archived) {\r\n allPhaseDirs.push({ name: a.name, fullPath: a.fullPath, milestone: a.milestone });\r\n }\r\n\r\n // Add current phases\r\n if (fs.existsSync(phasesDir)) {\r\n try {\r\n const currentDirs = listSubDirs(phasesDir, true);\r\n for (const dir of currentDirs) {\r\n allPhaseDirs.push({ name: dir, fullPath: path.join(phasesDir, dir), milestone: null });\r\n }\r\n } catch (e) {\r\n /* optional op, ignore */\r\n debugLog(e);\r\n }\r\n }\r\n\r\n if (allPhaseDirs.length === 0) {\r\n const emptyDigest: HistoryDigest = { phases: {}, decisions: [], tech_stack: [] };\r\n output(emptyDigest, raw);\r\n return;\r\n }\r\n\r\n try {\r\n for (const { name: dir, fullPath: dirPath } of allPhaseDirs) {\r\n const summaries = fs.readdirSync(dirPath).filter(f => isSummaryFile(f));\r\n\r\n for (const summary of summaries) {\r\n try {\r\n const content = fs.readFileSync(path.join(dirPath, summary), 'utf-8');\r\n const fm = extractFrontmatter(content);\r\n\r\n const phaseNum = (fm.phase as string) || dir.split('-')[0];\r\n\r\n if (!digest.phases[phaseNum]) {\r\n digest.phases[phaseNum] = {\r\n name: (fm.name as string) || dir.split('-').slice(1).join(' ') || 'Unknown',\r\n provides: new Set(),\r\n affects: new Set(),\r\n patterns: new Set(),\r\n };\r\n }\r\n\r\n // Merge provides\r\n const depGraph = fm['dependency-graph'] as FrontmatterData | undefined;\r\n if (depGraph && depGraph.provides) {\r\n (depGraph.provides as string[]).forEach(p => digest.phases[phaseNum].provides.add(p));\r\n } else if (fm.provides) {\r\n (fm.provides as string[]).forEach(p => digest.phases[phaseNum].provides.add(p));\r\n }\r\n\r\n // Merge affects\r\n if (depGraph && depGraph.affects) {\r\n (depGraph.affects as string[]).forEach(a => digest.phases[phaseNum].affects.add(a));\r\n }\r\n\r\n // Merge patterns\r\n if (fm['patterns-established']) {\r\n (fm['patterns-established'] as string[]).forEach(p => digest.phases[phaseNum].patterns.add(p));\r\n }\r\n\r\n // Merge decisions\r\n if (fm['key-decisions']) {\r\n (fm['key-decisions'] as string[]).forEach(d => {\r\n digest.decisions.push({ phase: phaseNum, decision: d });\r\n });\r\n }\r\n\r\n // Merge tech stack\r\n const techStack = fm['tech-stack'] as FrontmatterData | undefined;\r\n if (techStack && techStack.added) {\r\n (techStack.added as Array).forEach(t =>\r\n (digest.tech_stack as Set).add(typeof t === 'string' ? t : (t as FrontmatterData).name as string)\r\n );\r\n }\r\n } catch (e) {\r\n /* optional op, ignore */\r\n debugLog(e);\r\n }\r\n }\r\n }\r\n\r\n // Convert Sets to Arrays for JSON output\r\n const outputDigest: HistoryDigest = {\r\n phases: {},\r\n decisions: digest.decisions,\r\n tech_stack: [...(digest.tech_stack as Set)],\r\n };\r\n for (const [p, data] of Object.entries(digest.phases)) {\r\n outputDigest.phases[p] = {\r\n name: data.name,\r\n provides: [...data.provides],\r\n affects: [...data.affects],\r\n patterns: [...data.patterns],\r\n };\r\n }\r\n\r\n output(outputDigest, raw);\r\n } catch (e: unknown) {\r\n rethrowCliSignals(e);\r\n error('Failed to generate history digest: ' + (e as Error).message);\r\n }\r\n}\r\n\r\n// ─── Model resolution ───────────────────────────────────────────────────────\r\n\r\nexport function cmdResolveModel(cwd: string, agentType: string | undefined, raw: boolean): void {\r\n if (!agentType) {\r\n error('agent-type required');\r\n }\r\n\r\n const config = loadConfig(cwd);\r\n const profile: ModelProfileName = config.model_profile || 'balanced';\r\n\r\n const agentModels = MODEL_PROFILES[agentType as AgentType];\r\n if (!agentModels) {\r\n const result = { model: 'sonnet', profile, unknown_agent: true };\r\n output(result, raw, 'sonnet');\r\n return;\r\n }\r\n\r\n const resolved = agentModels[profile] || agentModels['balanced'] || 'sonnet';\r\n const model = resolved === 'opus' ? 'inherit' : resolved;\r\n const result = { model, profile };\r\n output(result, raw, model);\r\n}\r\n\r\n// ─── Commit ─────────────────────────────────────────────────────────────────\r\n\r\nexport async function cmdCommit(\r\n cwd: string,\r\n message: string | undefined,\r\n files: string[],\r\n raw: boolean,\r\n amend: boolean,\r\n): Promise {\r\n if (!message && !amend) {\r\n error('commit message required');\r\n }\r\n\r\n const config = loadConfig(cwd);\r\n\r\n // Check commit_docs config\r\n if (!config.commit_docs) {\r\n const result = { committed: false, hash: null, reason: 'skipped_commit_docs_false' };\r\n output(result, raw, 'skipped');\r\n return;\r\n }\r\n\r\n // Check if .planning is gitignored\r\n if (await isGitIgnored(cwd, '.planning')) {\r\n const result = { committed: false, hash: null, reason: 'skipped_gitignored' };\r\n output(result, raw, 'skipped');\r\n return;\r\n }\r\n\r\n // Stage files\r\n const filesToStage = files && files.length > 0 ? files : ['.planning/'];\r\n for (const file of filesToStage) {\r\n await execGit(cwd, ['add', file]);\r\n }\r\n\r\n // Commit\r\n const commitArgs = amend ? ['commit', '--amend', '--no-edit'] : ['commit', '-m', message!];\r\n const commitResult = await execGit(cwd, commitArgs);\r\n if (commitResult.exitCode !== 0) {\r\n if (commitResult.stdout.includes('nothing to commit') || commitResult.stderr.includes('nothing to commit')) {\r\n const result = { committed: false, hash: null, reason: 'nothing_to_commit' };\r\n output(result, raw, 'nothing');\r\n return;\r\n }\r\n const result = { committed: false, hash: null, reason: 'nothing_to_commit', error: commitResult.stderr };\r\n output(result, raw, 'nothing');\r\n return;\r\n }\r\n\r\n // Get short hash\r\n const hashResult = await execGit(cwd, ['rev-parse', '--short', 'HEAD']);\r\n const hash = hashResult.exitCode === 0 ? hashResult.stdout : null;\r\n const result = { committed: true, hash, reason: 'committed' };\r\n output(result, raw, hash || 'committed');\r\n}\r\n\r\n// ─── Summary extract ────────────────────────────────────────────────────────\r\n\r\nexport function cmdSummaryExtract(\r\n cwd: string,\r\n summaryPath: string | undefined,\r\n fields: string[] | null,\r\n raw: boolean,\r\n): void {\r\n if (!summaryPath) {\r\n error('summary-path required for summary-extract');\r\n }\r\n\r\n const fullPath = path.join(cwd, summaryPath);\r\n\r\n if (!fs.existsSync(fullPath)) {\r\n output({ error: 'File not found', path: summaryPath }, raw);\r\n return;\r\n }\r\n\r\n const content = fs.readFileSync(fullPath, 'utf-8');\r\n const fm = extractFrontmatter(content);\r\n\r\n // Parse key-decisions into structured format\r\n const parseDecisions = (decisionsList: unknown): Array<{ summary: string; rationale: string | null }> => {\r\n if (!decisionsList || !Array.isArray(decisionsList)) return [];\r\n return decisionsList.map((d: string) => {\r\n const colonIdx = d.indexOf(':');\r\n if (colonIdx > 0) {\r\n return {\r\n summary: d.substring(0, colonIdx).trim(),\r\n rationale: d.substring(colonIdx + 1).trim(),\r\n };\r\n }\r\n return { summary: d, rationale: null };\r\n });\r\n };\r\n\r\n const techStack = fm['tech-stack'] as FrontmatterData | undefined;\r\n\r\n // Build full result\r\n const fullResult: Record = {\r\n path: summaryPath,\r\n one_liner: fm['one-liner'] || null,\r\n key_files: fm['key-files'] || [],\r\n tech_added: (techStack && techStack.added) || [],\r\n patterns: fm['patterns-established'] || [],\r\n decisions: parseDecisions(fm['key-decisions']),\r\n requirements_completed: fm['requirements-completed'] || [],\r\n };\r\n\r\n // If fields specified, filter to only those fields\r\n if (fields && fields.length > 0) {\r\n const filtered: Record = { path: summaryPath };\r\n for (const field of fields) {\r\n if (fullResult[field] !== undefined) {\r\n filtered[field] = fullResult[field];\r\n }\r\n }\r\n output(filtered, raw);\r\n return;\r\n }\r\n\r\n output(fullResult, raw);\r\n}\r\n\r\n// ─── Web search ─────────────────────────────────────────────────────────────\r\n\r\nexport async function cmdWebsearch(\r\n query: string | undefined,\r\n options: WebSearchOptions,\r\n raw: boolean,\r\n): Promise {\r\n const apiKey = process.env.BRAVE_API_KEY;\r\n\r\n if (!apiKey) {\r\n output({ available: false, reason: 'BRAVE_API_KEY not set' }, raw, '');\r\n return;\r\n }\r\n\r\n if (!query) {\r\n output({ available: false, error: 'Query required' }, raw, '');\r\n return;\r\n }\r\n\r\n const params = new URLSearchParams({\r\n q: query,\r\n count: String(options.limit || 10),\r\n country: 'us',\r\n search_lang: 'en',\r\n text_decorations: 'false',\r\n });\r\n\r\n if (options.freshness) {\r\n params.set('freshness', options.freshness);\r\n }\r\n\r\n try {\r\n const response = await fetch(\r\n `https://api.search.brave.com/res/v1/web/search?${params}`,\r\n {\r\n headers: {\r\n Accept: 'application/json',\r\n 'X-Subscription-Token': apiKey,\r\n },\r\n },\r\n );\r\n\r\n if (!response.ok) {\r\n output({ available: false, error: `API error: ${response.status}` }, raw, '');\r\n return;\r\n }\r\n\r\n const data = (await response.json()) as { web?: { results?: Array<{ title: string; url: string; description: string; age?: string }> } };\r\n\r\n const results: WebSearchResult[] = (data.web?.results || []).map(r => ({\r\n title: r.title,\r\n url: r.url,\r\n description: r.description,\r\n age: r.age || null,\r\n }));\r\n\r\n output(\r\n {\r\n available: true,\r\n query,\r\n count: results.length,\r\n results,\r\n },\r\n raw,\r\n results.map(r => `${r.title}\\n${r.url}\\n${r.description}`).join('\\n\\n'),\r\n );\r\n } catch (err: unknown) {\r\n rethrowCliSignals(err);\r\n output({ available: false, error: (err as Error).message }, raw, '');\r\n }\r\n}\r\n\r\n// ─── Progress render ────────────────────────────────────────────────────────\r\n\r\nexport function cmdProgressRender(cwd: string, format: string, raw: boolean): void {\r\n const phasesDir = phasesPath(cwd);\r\n const milestone = getMilestoneInfo(cwd);\r\n\r\n const phases: Array<{ number: string; name: string; plans: number; summaries: number; status: string }> = [];\r\n let totalPlans = 0;\r\n let totalSummaries = 0;\r\n\r\n try {\r\n const entries = fs.readdirSync(phasesDir, { withFileTypes: true });\r\n const dirs = entries\r\n .filter(e => e.isDirectory())\r\n .map(e => e.name)\r\n .sort((a, b) => {\r\n const aNum = parseFloat(a.match(/^(\\d+(?:\\.\\d+)?)/)?.[1] || '0');\r\n const bNum = parseFloat(b.match(/^(\\d+(?:\\.\\d+)?)/)?.[1] || '0');\r\n return aNum - bNum;\r\n });\r\n\r\n for (const dir of dirs) {\r\n const dm = dir.match(/^(\\d+(?:\\.\\d+)?)-?(.*)/);\r\n const phaseNum = dm ? dm[1] : dir;\r\n const phaseName = dm && dm[2] ? dm[2].replace(/-/g, ' ') : '';\r\n const phaseFiles = fs.readdirSync(path.join(phasesDir, dir));\r\n const planCount = phaseFiles.filter(f => isPlanFile(f)).length;\r\n const summaryCount = phaseFiles.filter(f => isSummaryFile(f)).length;\r\n\r\n totalPlans += planCount;\r\n totalSummaries += summaryCount;\r\n\r\n let status: string;\r\n if (planCount === 0) status = 'Pending';\r\n else if (summaryCount >= planCount) status = 'Complete';\r\n else if (summaryCount > 0) status = 'In Progress';\r\n else status = 'Planned';\r\n\r\n phases.push({ number: phaseNum, name: phaseName, plans: planCount, summaries: summaryCount, status });\r\n }\r\n } catch (e) {\r\n /* optional op, ignore */\r\n debugLog(e);\r\n }\r\n\r\n const percent = totalPlans > 0 ? Math.min(100, Math.round((totalSummaries / totalPlans) * 100)) : 0;\r\n\r\n if (format === 'table') {\r\n const barWidth = 10;\r\n const filled = Math.round((percent / 100) * barWidth);\r\n const bar = '\\u2588'.repeat(filled) + '\\u2591'.repeat(barWidth - filled);\r\n let out = `# ${milestone.version} ${milestone.name}\\n\\n`;\r\n out += `**Progress:** [${bar}] ${totalSummaries}/${totalPlans} plans (${percent}%)\\n\\n`;\r\n out += `| Phase | Name | Plans | Status |\\n`;\r\n out += `|-------|------|-------|--------|\\n`;\r\n for (const p of phases) {\r\n out += `| ${p.number} | ${p.name} | ${p.summaries}/${p.plans} | ${p.status} |\\n`;\r\n }\r\n output({ rendered: out }, raw, out);\r\n } else if (format === 'bar') {\r\n const barWidth = 20;\r\n const filled = Math.round((percent / 100) * barWidth);\r\n const bar = '\\u2588'.repeat(filled) + '\\u2591'.repeat(barWidth - filled);\r\n const text = `[${bar}] ${totalSummaries}/${totalPlans} plans (${percent}%)`;\r\n output({ bar: text, percent, completed: totalSummaries, total: totalPlans }, raw, text);\r\n } else if (format === 'phase-bars') {\r\n const doneCount = phases.filter(p => p.status === 'Complete').length;\r\n const inProgressCount = phases.filter(p => p.status === 'In Progress').length;\r\n const totalCount = phases.length;\r\n const header = chalk.bold(\r\n `Milestone: ${milestone.name} — ${doneCount}/${totalCount} phases complete (${percent}%)`\r\n );\r\n const lines: string[] = [header, ''];\r\n\r\n for (const p of phases) {\r\n const pPercent =\r\n p.plans > 0 ? Math.min(100, Math.round((p.summaries / p.plans) * 100)) : 0;\r\n const barWidth = 10;\r\n const filled = Math.round((pPercent / 100) * barWidth);\r\n const bar = '\\u2588'.repeat(filled) + '\\u2591'.repeat(barWidth - filled);\r\n const phaseLabel = `Phase ${p.number.padStart(2, '0')}`;\r\n const statusLabel =\r\n p.status === 'Complete'\r\n ? 'DONE'\r\n : p.status === 'In Progress'\r\n ? 'IN PROGRESS'\r\n : 'PLANNED';\r\n\r\n let line = `${phaseLabel} [${bar}] ${String(pPercent).padStart(3, ' ')}% — ${statusLabel}`;\r\n if (p.status === 'Complete') line = chalk.green(line);\r\n else if (p.status === 'In Progress') line = chalk.yellow(line);\r\n else line = chalk.dim(line);\r\n\r\n lines.push(line);\r\n }\r\n\r\n const rendered = lines.join('\\n');\r\n output({ rendered, done: doneCount, in_progress: inProgressCount, total: totalCount, percent }, raw, rendered);\r\n } else {\r\n output({\r\n milestone_version: milestone.version,\r\n milestone_name: milestone.name,\r\n phases,\r\n total_plans: totalPlans,\r\n total_summaries: totalSummaries,\r\n percent,\r\n }, raw);\r\n }\r\n}\r\n\r\n// ─── Todo complete ──────────────────────────────────────────────────────────\r\n\r\nexport function cmdTodoComplete(cwd: string, filename: string | undefined, raw: boolean): void {\r\n if (!filename) {\r\n error('filename required for todo complete');\r\n }\r\n\r\n const pendingDir = planningPath(cwd, 'todos', 'pending');\r\n const completedDir = planningPath(cwd, 'todos', 'completed');\r\n const sourcePath = path.join(pendingDir, filename);\r\n\r\n if (!fs.existsSync(sourcePath)) {\r\n error(`Todo not found: ${filename}`);\r\n }\r\n\r\n // Ensure completed directory exists\r\n fs.mkdirSync(completedDir, { recursive: true });\r\n\r\n // Read, add completion timestamp, move\r\n let content = fs.readFileSync(sourcePath, 'utf-8');\r\n const today = todayISO();\r\n content = `completed: ${today}\\n` + content;\r\n\r\n fs.writeFileSync(path.join(completedDir, filename), content, 'utf-8');\r\n fs.unlinkSync(sourcePath);\r\n\r\n output({ completed: true, file: filename, date: today }, raw, 'completed');\r\n}\r\n\r\n// ─── Scaffold ───────────────────────────────────────────────────────────────\r\n\r\nexport function cmdScaffold(\r\n cwd: string,\r\n type: string | undefined,\r\n options: ScaffoldOptions,\r\n raw: boolean,\r\n): void {\r\n const { phase, name } = options;\r\n const padded = phase ? normalizePhaseName(phase) : '00';\r\n const today = todayISO();\r\n\r\n // Find phase directory\r\n const phaseInfo = phase ? findPhaseInternal(cwd, phase) : null;\r\n const phaseDir = phaseInfo ? path.join(cwd, phaseInfo.directory) : null;\r\n\r\n if (phase && !phaseDir && type !== 'phase-dir') {\r\n error(`Phase ${phase} directory not found`);\r\n }\r\n\r\n let filePath: string;\r\n let content: string;\r\n\r\n switch (type) {\r\n case 'context': {\r\n filePath = path.join(phaseDir!, `${padded}-CONTEXT.md`);\r\n content = `---\\nphase: \"${padded}\"\\nname: \"${name || phaseInfo?.phase_name || 'Unnamed'}\"\\ncreated: ${today}\\n---\\n\\n# Phase ${phase}: ${name || phaseInfo?.phase_name || 'Unnamed'} — Context\\n\\n## Decisions\\n\\n_Decisions will be captured during /maxsim:discuss-phase ${phase}_\\n\\n## Discretion Areas\\n\\n_Areas where the executor can use judgment_\\n\\n## Deferred Ideas\\n\\n_Ideas to consider later_\\n`;\r\n break;\r\n }\r\n case 'uat': {\r\n filePath = path.join(phaseDir!, `${padded}-UAT.md`);\r\n content = `---\\nphase: \"${padded}\"\\nname: \"${name || phaseInfo?.phase_name || 'Unnamed'}\"\\ncreated: ${today}\\nstatus: pending\\n---\\n\\n# Phase ${phase}: ${name || phaseInfo?.phase_name || 'Unnamed'} — User Acceptance Testing\\n\\n## Test Results\\n\\n| # | Test | Status | Notes |\\n|---|------|--------|-------|\\n\\n## Summary\\n\\n_Pending UAT_\\n`;\r\n break;\r\n }\r\n case 'verification': {\r\n filePath = path.join(phaseDir!, `${padded}-VERIFICATION.md`);\r\n content = `---\\nphase: \"${padded}\"\\nname: \"${name || phaseInfo?.phase_name || 'Unnamed'}\"\\ncreated: ${today}\\nstatus: pending\\n---\\n\\n# Phase ${phase}: ${name || phaseInfo?.phase_name || 'Unnamed'} — Verification\\n\\n## Goal-Backward Verification\\n\\n**Phase Goal:** [From ROADMAP.md]\\n\\n## Checks\\n\\n| # | Requirement | Status | Evidence |\\n|---|------------|--------|----------|\\n\\n## Result\\n\\n_Pending verification_\\n`;\r\n break;\r\n }\r\n case 'phase-dir': {\r\n if (!phase || !name) {\r\n error('phase and name required for phase-dir scaffold');\r\n }\r\n const slug = generateSlugInternal(name);\r\n const dirName = `${padded}-${slug}`;\r\n const phasesParent = phasesPath(cwd);\r\n fs.mkdirSync(phasesParent, { recursive: true });\r\n const dirPath = path.join(phasesParent, dirName);\r\n fs.mkdirSync(dirPath, { recursive: true });\r\n output({ created: true, directory: `.planning/phases/${dirName}`, path: dirPath }, raw, dirPath);\r\n return;\r\n }\r\n default:\r\n error(`Unknown scaffold type: ${type}. Available: context, uat, verification, phase-dir`);\r\n return; // unreachable but satisfies TS\r\n }\r\n\r\n if (fs.existsSync(filePath)) {\r\n output({ created: false, reason: 'already_exists', path: filePath }, raw, 'exists');\r\n return;\r\n }\r\n\r\n fs.writeFileSync(filePath, content, 'utf-8');\r\n const relPath = path.relative(cwd, filePath);\r\n output({ created: true, path: relPath }, raw, relPath);\r\n}\r\n","/**\r\n * Todo CRUD MCP Tools — Todo operations exposed as MCP tools\r\n *\r\n * CRITICAL: Never import output() or error() from core — they call process.exit().\r\n * CRITICAL: Never write to stdout — it is reserved for MCP JSON-RPC protocol.\r\n * CRITICAL: Never call process.exit() — the server must stay alive after every tool call.\r\n */\r\n\r\nimport fs from 'node:fs';\r\nimport path from 'node:path';\r\nimport { z } from 'zod';\r\nimport type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\r\n\r\nimport { generateSlugInternal, todayISO, planningPath } from '../core/core.js';\r\nimport { parseTodoFrontmatter } from '../core/commands.js';\r\nimport { detectProjectRoot, mcpSuccess, mcpError } from './utils.js';\r\n\r\n/**\r\n * Register all todo CRUD tools on the MCP server.\r\n */\r\nexport function registerTodoTools(server: McpServer): void {\r\n // ── mcp_add_todo ────────────────────────────────────────────────────────────\r\n\r\n server.tool(\r\n 'mcp_add_todo',\r\n 'Create a new todo item in .planning/todos/pending/ with frontmatter metadata.',\r\n {\r\n title: z.string().describe('Title of the todo item'),\r\n description: z.string().optional().describe('Optional description body'),\r\n area: z.string().optional().default('general').describe('Area/category (default: general)'),\r\n phase: z.string().optional().describe('Associated phase number'),\r\n },\r\n async ({ title, description, area, phase }) => {\r\n try {\r\n const cwd = detectProjectRoot();\r\n if (!cwd) {\r\n return mcpError('No .planning/ directory found', 'Project not detected');\r\n }\r\n\r\n const pendingDir = planningPath(cwd, 'todos', 'pending');\r\n fs.mkdirSync(pendingDir, { recursive: true });\r\n\r\n const today = todayISO();\r\n const slug = generateSlugInternal(title) || 'untitled';\r\n const timestamp = Date.now();\r\n const filename = `${timestamp}-${slug}.md`;\r\n const filePath = path.join(pendingDir, filename);\r\n\r\n const content = `---\\ncreated: ${today}\\ntitle: ${title}\\narea: ${area || 'general'}\\nphase: ${phase || 'unassigned'}\\n---\\n${description || ''}\\n`;\r\n\r\n fs.writeFileSync(filePath, content, 'utf-8');\r\n\r\n return mcpSuccess(\r\n {\r\n file: filename,\r\n path: `.planning/todos/pending/${filename}`,\r\n title,\r\n area: area || 'general',\r\n },\r\n `Todo created: ${title}`,\r\n );\r\n } catch (e) {\r\n return mcpError((e as Error).message, 'Operation failed');\r\n }\r\n },\r\n );\r\n\r\n // ── mcp_complete_todo ───────────────────────────────────────────────────────\r\n\r\n server.tool(\r\n 'mcp_complete_todo',\r\n 'Mark a pending todo as completed by moving it from pending/ to completed/ with a completion timestamp.',\r\n {\r\n todo_id: z.string().describe('Filename of the todo (e.g., 1234567890-my-task.md)'),\r\n },\r\n async ({ todo_id }) => {\r\n try {\r\n const cwd = detectProjectRoot();\r\n if (!cwd) {\r\n return mcpError('No .planning/ directory found', 'Project not detected');\r\n }\r\n\r\n const pendingDir = planningPath(cwd, 'todos', 'pending');\r\n const completedDir = planningPath(cwd, 'todos', 'completed');\r\n const sourcePath = path.join(pendingDir, todo_id);\r\n\r\n if (!fs.existsSync(sourcePath)) {\r\n return mcpError(`Todo not found in pending: ${todo_id}`, 'Todo not found');\r\n }\r\n\r\n fs.mkdirSync(completedDir, { recursive: true });\r\n\r\n let content = fs.readFileSync(sourcePath, 'utf-8');\r\n const today = todayISO();\r\n content = `completed: ${today}\\n` + content;\r\n\r\n fs.writeFileSync(path.join(completedDir, todo_id), content, 'utf-8');\r\n fs.unlinkSync(sourcePath);\r\n\r\n return mcpSuccess(\r\n { completed: true, file: todo_id, date: today },\r\n `Todo completed: ${todo_id}`,\r\n );\r\n } catch (e) {\r\n return mcpError((e as Error).message, 'Operation failed');\r\n }\r\n },\r\n );\r\n\r\n // ── mcp_list_todos ──────────────────────────────────────────────────────────\r\n\r\n server.tool(\r\n 'mcp_list_todos',\r\n 'List todo items, optionally filtered by area and status (pending, completed, or all).',\r\n {\r\n area: z.string().optional().describe('Filter by area/category'),\r\n status: z\r\n .enum(['pending', 'completed', 'all'])\r\n .optional()\r\n .default('pending')\r\n .describe('Which todos to list (default: pending)'),\r\n },\r\n async ({ area, status }) => {\r\n try {\r\n const cwd = detectProjectRoot();\r\n if (!cwd) {\r\n return mcpError('No .planning/ directory found', 'Project not detected');\r\n }\r\n\r\n const todosBase = planningPath(cwd, 'todos');\r\n const dirs: string[] = [];\r\n\r\n if (status === 'pending' || status === 'all') {\r\n dirs.push(path.join(todosBase, 'pending'));\r\n }\r\n if (status === 'completed' || status === 'all') {\r\n dirs.push(path.join(todosBase, 'completed'));\r\n }\r\n\r\n const todos: Array<{\r\n file: string;\r\n created: string;\r\n title: string;\r\n area: string;\r\n status: string;\r\n path: string;\r\n }> = [];\r\n\r\n for (const dir of dirs) {\r\n const dirStatus = dir.endsWith('pending') ? 'pending' : 'completed';\r\n\r\n let files: string[] = [];\r\n try {\r\n files = fs.readdirSync(dir).filter((f) => f.endsWith('.md'));\r\n } catch {\r\n // Directory may not exist\r\n continue;\r\n }\r\n\r\n for (const file of files) {\r\n try {\r\n const content = fs.readFileSync(path.join(dir, file), 'utf-8');\r\n const fm = parseTodoFrontmatter(content);\r\n\r\n if (area && fm.area !== area) continue;\r\n\r\n todos.push({\r\n file,\r\n created: fm.created,\r\n title: fm.title,\r\n area: fm.area,\r\n status: dirStatus,\r\n path: `.planning/todos/${dirStatus}/${file}`,\r\n });\r\n } catch {\r\n // Skip unreadable files\r\n }\r\n }\r\n }\r\n\r\n return mcpSuccess(\r\n { count: todos.length, todos },\r\n `${todos.length} todos found`,\r\n );\r\n } catch (e) {\r\n return mcpError((e as Error).message, 'Operation failed');\r\n }\r\n },\r\n );\r\n}\r\n","export default function escapeStringRegexp(string) {\n\tif (typeof string !== 'string') {\n\t\tthrow new TypeError('Expected a string');\n\t}\n\n\t// Escape characters with special meaning either inside or outside character sets.\n\t// Use a simple backslash escape when it’s always valid, and a `\\xnn` escape when the simpler form would be disallowed by Unicode patterns’ stricter grammar.\n\treturn string\n\t\t.replace(/[|\\\\{}()[\\]^$+*?.]/g, '\\\\$&')\n\t\t.replace(/-/g, '\\\\x2d');\n}\n","/**\r\n * State — STATE.md operations and progression engine\r\n *\r\n * Ported from maxsim/bin/lib/state.cjs\r\n */\r\n\r\nimport fs from 'node:fs';\r\nimport path from 'node:path';\r\n\r\nimport escapeStringRegexp from 'escape-string-regexp';\r\n\r\nimport { loadConfig, output, error, rethrowCliSignals, safeReadFile, planningPath, statePath as statePathUtil, configPath, roadmapPath, phasesPath, debugLog, todayISO, isPlanFile, isSummaryFile } from './core.js';\r\nimport type {\r\n AppConfig,\r\n StatePatchResult,\r\n StateMetricOptions,\r\n StateDecisionOptions,\r\n StateBlockerOptions,\r\n StateSessionOptions,\r\n StateSnapshot,\r\n Decision,\r\n} from './types.js';\r\n\r\n// ─── Internal helpers ────────────────────────────────────────────────────────\r\n\r\nexport function stateExtractField(content: string, fieldName: string): string | null {\r\n const pattern = new RegExp(`\\\\*\\\\*${fieldName}:\\\\*\\\\*\\\\s*(.+)`, 'i');\r\n const match = content.match(pattern);\r\n return match ? match[1].trim() : null;\r\n}\r\n\r\nexport function stateReplaceField(content: string, fieldName: string, newValue: string): string | null {\r\n const escaped = escapeStringRegexp(fieldName);\r\n const pattern = new RegExp(`(\\\\*\\\\*${escaped}:\\\\*\\\\*\\\\s*)(.*)`, 'i');\r\n if (pattern.test(content)) {\r\n return content.replace(pattern, (_match, prefix: string) => `${prefix}${newValue}`);\r\n }\r\n return null;\r\n}\r\n\r\nfunction readTextArgOrFile(cwd: string, value: string | undefined, filePath: string | undefined, label: string): string | undefined {\r\n if (!filePath) return value;\r\n const resolvedPath = path.isAbsolute(filePath) ? filePath : path.join(cwd, filePath);\r\n try {\r\n return fs.readFileSync(resolvedPath, 'utf-8').trimEnd();\r\n } catch {\r\n throw new Error(`${label} file not found: ${filePath}`);\r\n }\r\n}\r\n\r\n/**\r\n * Append an entry to a section in STATE.md content, removing placeholder text.\r\n * Returns updated content or null if section not found.\r\n */\r\nexport function appendToStateSection(\r\n content: string,\r\n sectionPattern: RegExp,\r\n entry: string,\r\n placeholderPatterns?: RegExp[],\r\n): string | null {\r\n const match = content.match(sectionPattern);\r\n if (!match) return null;\r\n\r\n let sectionBody = match[2];\r\n const defaults = [/None yet\\.?\\s*\\n?/gi, /No decisions yet\\.?\\s*\\n?/gi, /None\\.?\\s*\\n?/gi];\r\n for (const pat of placeholderPatterns || defaults) {\r\n sectionBody = sectionBody.replace(pat, '');\r\n }\r\n sectionBody = sectionBody.trimEnd() + '\\n' + entry + '\\n';\r\n\r\n return content.replace(sectionPattern, (_m, header: string) => `${header}${sectionBody}`);\r\n}\r\n\r\n// ─── State commands ──────────────────────────────────────────────────────────\r\n\r\nexport function cmdStateLoad(cwd: string, raw: boolean): void {\r\n const config: AppConfig = loadConfig(cwd);\r\n let stateRaw = '';\r\n try {\r\n stateRaw = fs.readFileSync(statePathUtil(cwd), 'utf-8');\r\n } catch (e) {\r\n /* optional op, ignore */\r\n debugLog(e);\r\n }\r\n\r\n const configExists = fs.existsSync(configPath(cwd));\r\n const roadmapExists = fs.existsSync(roadmapPath(cwd));\r\n const stateExists = stateRaw.length > 0;\r\n\r\n const result = {\r\n config,\r\n state_raw: stateRaw,\r\n state_exists: stateExists,\r\n roadmap_exists: roadmapExists,\r\n config_exists: configExists,\r\n };\r\n\r\n if (raw) {\r\n const c = config;\r\n const lines = [\r\n `model_profile=${c.model_profile}`,\r\n `commit_docs=${c.commit_docs}`,\r\n `branching_strategy=${c.branching_strategy}`,\r\n `phase_branch_template=${c.phase_branch_template}`,\r\n `milestone_branch_template=${c.milestone_branch_template}`,\r\n `parallelization=${c.parallelization}`,\r\n `research=${c.research}`,\r\n `plan_checker=${c.plan_checker}`,\r\n `verifier=${c.verifier}`,\r\n `config_exists=${configExists}`,\r\n `roadmap_exists=${roadmapExists}`,\r\n `state_exists=${stateExists}`,\r\n ];\r\n output(result, true, lines.join('\\n'));\r\n }\r\n\r\n output(result);\r\n}\r\n\r\nexport function cmdStateGet(cwd: string, section: string | null, raw: boolean): void {\r\n const statePath = statePathUtil(cwd);\r\n try {\r\n const content = fs.readFileSync(statePath, 'utf-8');\r\n\r\n if (!section) {\r\n output({ content }, raw, content);\r\n return;\r\n }\r\n\r\n const fieldEscaped = escapeStringRegexp(section);\r\n\r\n // Check for **field:** value\r\n const fieldPattern = new RegExp(`\\\\*\\\\*${fieldEscaped}:\\\\*\\\\*\\\\s*(.*)`, 'i');\r\n const fieldMatch = content.match(fieldPattern);\r\n if (fieldMatch) {\r\n output({ [section]: fieldMatch[1].trim() }, raw, fieldMatch[1].trim());\r\n return;\r\n }\r\n\r\n // Check for ## Section\r\n const sectionPattern = new RegExp(`##\\\\s*${fieldEscaped}\\\\s*\\n([\\\\s\\\\S]*?)(?=\\\\n##|$)`, 'i');\r\n const sectionMatch = content.match(sectionPattern);\r\n if (sectionMatch) {\r\n output({ [section]: sectionMatch[1].trim() }, raw, sectionMatch[1].trim());\r\n return;\r\n }\r\n\r\n output({ error: `Section or field \"${section}\" not found` }, raw, '');\r\n } catch (e: unknown) {\r\n rethrowCliSignals(e);\r\n error('STATE.md not found');\r\n }\r\n}\r\n\r\nexport function cmdStatePatch(cwd: string, patches: Record, raw: boolean): void {\r\n const statePath = statePathUtil(cwd);\r\n try {\r\n let content = fs.readFileSync(statePath, 'utf-8');\r\n const results: StatePatchResult = { updated: [], failed: [] };\r\n\r\n for (const [field, value] of Object.entries(patches)) {\r\n const fieldEscaped = escapeStringRegexp(field);\r\n const pattern = new RegExp(`(\\\\*\\\\*${fieldEscaped}:\\\\*\\\\*\\\\s*)(.*)`, 'i');\r\n\r\n if (pattern.test(content)) {\r\n content = content.replace(pattern, (_match, prefix: string) => `${prefix}${value}`);\r\n results.updated.push(field);\r\n } else {\r\n results.failed.push(field);\r\n }\r\n }\r\n\r\n if (results.updated.length > 0) {\r\n fs.writeFileSync(statePath, content, 'utf-8');\r\n }\r\n\r\n output(results, raw, results.updated.length > 0 ? 'true' : 'false');\r\n } catch (e: unknown) {\r\n rethrowCliSignals(e);\r\n error('STATE.md not found');\r\n }\r\n}\r\n\r\nexport function cmdStateUpdate(cwd: string, field: string | undefined, value: string | undefined): void {\r\n if (!field || value === undefined) {\r\n error('field and value required for state update');\r\n }\r\n\r\n const statePath = statePathUtil(cwd);\r\n try {\r\n let content = fs.readFileSync(statePath, 'utf-8');\r\n const fieldEscaped = escapeStringRegexp(field);\r\n const pattern = new RegExp(`(\\\\*\\\\*${fieldEscaped}:\\\\*\\\\*\\\\s*)(.*)`, 'i');\r\n if (pattern.test(content)) {\r\n content = content.replace(pattern, (_match, prefix: string) => `${prefix}${value}`);\r\n fs.writeFileSync(statePath, content, 'utf-8');\r\n output({ updated: true });\r\n } else {\r\n output({ updated: false, reason: `Field \"${field}\" not found in STATE.md` });\r\n }\r\n } catch (e: unknown) {\r\n rethrowCliSignals(e);\r\n output({ updated: false, reason: 'STATE.md not found' });\r\n }\r\n}\r\n\r\n// ─── State Progression Engine ────────────────────────────────────────────────\r\n\r\nexport function cmdStateAdvancePlan(cwd: string, raw: boolean): void {\r\n const statePath = statePathUtil(cwd);\r\n if (!fs.existsSync(statePath)) { output({ error: 'STATE.md not found' }, raw); return; }\r\n\r\n let content = fs.readFileSync(statePath, 'utf-8');\r\n const currentPlan = parseInt(stateExtractField(content, 'Current Plan') ?? '', 10);\r\n const totalPlans = parseInt(stateExtractField(content, 'Total Plans in Phase') ?? '', 10);\r\n const today = todayISO();\r\n\r\n if (isNaN(currentPlan) || isNaN(totalPlans)) {\r\n output({ error: 'Cannot parse Current Plan or Total Plans in Phase from STATE.md' }, raw);\r\n return;\r\n }\r\n\r\n if (currentPlan >= totalPlans) {\r\n content = stateReplaceField(content, 'Status', 'Phase complete — ready for verification') || content;\r\n content = stateReplaceField(content, 'Last Activity', today) || content;\r\n fs.writeFileSync(statePath, content, 'utf-8');\r\n output({ advanced: false, reason: 'last_plan', current_plan: currentPlan, total_plans: totalPlans, status: 'ready_for_verification' }, raw, 'false');\r\n } else {\r\n const newPlan = currentPlan + 1;\r\n content = stateReplaceField(content, 'Current Plan', String(newPlan)) || content;\r\n content = stateReplaceField(content, 'Status', 'Ready to execute') || content;\r\n content = stateReplaceField(content, 'Last Activity', today) || content;\r\n fs.writeFileSync(statePath, content, 'utf-8');\r\n output({ advanced: true, previous_plan: currentPlan, current_plan: newPlan, total_plans: totalPlans }, raw, 'true');\r\n }\r\n}\r\n\r\nexport function cmdStateRecordMetric(cwd: string, options: StateMetricOptions, raw: boolean): void {\r\n const statePath = statePathUtil(cwd);\r\n if (!fs.existsSync(statePath)) { output({ error: 'STATE.md not found' }, raw); return; }\r\n\r\n let content = fs.readFileSync(statePath, 'utf-8');\r\n const { phase, plan, duration, tasks, files } = options;\r\n\r\n if (!phase || !plan || !duration) {\r\n output({ error: 'phase, plan, and duration required' }, raw);\r\n return;\r\n }\r\n\r\n const metricsPattern = /(##\\s*Performance Metrics[\\s\\S]*?\\n\\|[^\\n]+\\n\\|[-|\\s]+\\n)([\\s\\S]*?)(?=\\n##|\\n$|$)/i;\r\n const metricsMatch = content.match(metricsPattern);\r\n\r\n if (metricsMatch) {\r\n let tableBody = metricsMatch[2].trimEnd();\r\n const newRow = `| Phase ${phase} P${plan} | ${duration} | ${tasks || '-'} tasks | ${files || '-'} files |`;\r\n\r\n if (tableBody.trim() === '' || tableBody.includes('None yet')) {\r\n tableBody = newRow;\r\n } else {\r\n tableBody = tableBody + '\\n' + newRow;\r\n }\r\n\r\n content = content.replace(metricsPattern, (_match, header: string) => `${header}${tableBody}\\n`);\r\n fs.writeFileSync(statePath, content, 'utf-8');\r\n output({ recorded: true, phase, plan, duration }, raw, 'true');\r\n } else {\r\n output({ recorded: false, reason: 'Performance Metrics section not found in STATE.md' }, raw, 'false');\r\n }\r\n}\r\n\r\nexport function cmdStateUpdateProgress(cwd: string, raw: boolean): void {\r\n const statePath = statePathUtil(cwd);\r\n if (!fs.existsSync(statePath)) { output({ error: 'STATE.md not found' }, raw); return; }\r\n\r\n let content = fs.readFileSync(statePath, 'utf-8');\r\n\r\n const phasesDir = phasesPath(cwd);\r\n let totalPlans = 0;\r\n let totalSummaries = 0;\r\n\r\n if (fs.existsSync(phasesDir)) {\r\n const phaseDirs = fs.readdirSync(phasesDir, { withFileTypes: true })\r\n .filter(e => e.isDirectory()).map(e => e.name);\r\n for (const dir of phaseDirs) {\r\n const files = fs.readdirSync(path.join(phasesDir, dir));\r\n totalPlans += files.filter(f => isPlanFile(f)).length;\r\n totalSummaries += files.filter(f => isSummaryFile(f)).length;\r\n }\r\n }\r\n\r\n const percent = totalPlans > 0 ? Math.min(100, Math.round(totalSummaries / totalPlans * 100)) : 0;\r\n const barWidth = 10;\r\n const filled = Math.round(percent / 100 * barWidth);\r\n const bar = '\\u2588'.repeat(filled) + '\\u2591'.repeat(barWidth - filled);\r\n const progressStr = `[${bar}] ${percent}%`;\r\n\r\n const progressPattern = /(\\*\\*Progress:\\*\\*\\s*).*/i;\r\n if (progressPattern.test(content)) {\r\n content = content.replace(progressPattern, (_match, prefix: string) => `${prefix}${progressStr}`);\r\n fs.writeFileSync(statePath, content, 'utf-8');\r\n output({ updated: true, percent, completed: totalSummaries, total: totalPlans, bar: progressStr }, raw, progressStr);\r\n } else {\r\n output({ updated: false, reason: 'Progress field not found in STATE.md' }, raw, 'false');\r\n }\r\n}\r\n\r\nexport function cmdStateAddDecision(cwd: string, options: StateDecisionOptions, raw: boolean): void {\r\n const statePath = statePathUtil(cwd);\r\n if (!fs.existsSync(statePath)) { output({ error: 'STATE.md not found' }, raw); return; }\r\n\r\n const { phase, summary, summary_file, rationale, rationale_file } = options;\r\n let summaryText: string | undefined;\r\n let rationaleText = '';\r\n\r\n try {\r\n summaryText = readTextArgOrFile(cwd, summary, summary_file, 'summary');\r\n rationaleText = readTextArgOrFile(cwd, rationale || '', rationale_file, 'rationale') || '';\r\n } catch (thrown: unknown) {\r\n const e = thrown as Error;\r\n output({ added: false, reason: e.message }, raw, 'false');\r\n return;\r\n }\r\n\r\n if (!summaryText) { output({ error: 'summary required' }, raw); return; }\r\n\r\n const content = fs.readFileSync(statePath, 'utf-8');\r\n const entry = `- [Phase ${phase || '?'}]: ${summaryText}${rationaleText ? ` — ${rationaleText}` : ''}`;\r\n\r\n const sectionPattern = /(###?\\s*(?:Decisions|Decisions Made|Accumulated.*Decisions)\\s*\\n)([\\s\\S]*?)(?=\\n###?|\\n##[^#]|$)/i;\r\n const updated = appendToStateSection(content, sectionPattern, entry, [/None yet\\.?\\s*\\n?/gi, /No decisions yet\\.?\\s*\\n?/gi]);\r\n\r\n if (updated) {\r\n fs.writeFileSync(statePath, updated, 'utf-8');\r\n output({ added: true, decision: entry }, raw, 'true');\r\n } else {\r\n output({ added: false, reason: 'Decisions section not found in STATE.md' }, raw, 'false');\r\n }\r\n}\r\n\r\nexport function cmdStateAddBlocker(cwd: string, text: string | StateBlockerOptions, raw: boolean): void {\r\n const statePath = statePathUtil(cwd);\r\n if (!fs.existsSync(statePath)) { output({ error: 'STATE.md not found' }, raw); return; }\r\n const blockerOptions: StateBlockerOptions = typeof text === 'object' && text !== null ? text : { text: text as string };\r\n let blockerText: string | undefined;\r\n\r\n try {\r\n blockerText = readTextArgOrFile(cwd, blockerOptions.text, blockerOptions.text_file, 'blocker');\r\n } catch (thrown: unknown) {\r\n const e = thrown as Error;\r\n output({ added: false, reason: e.message }, raw, 'false');\r\n return;\r\n }\r\n\r\n if (!blockerText) { output({ error: 'text required' }, raw); return; }\r\n\r\n const content = fs.readFileSync(statePath, 'utf-8');\r\n const entry = `- ${blockerText}`;\r\n\r\n const sectionPattern = /(###?\\s*(?:Blockers|Blockers\\/Concerns|Concerns)\\s*\\n)([\\s\\S]*?)(?=\\n###?|\\n##[^#]|$)/i;\r\n const updated = appendToStateSection(content, sectionPattern, entry, [/None\\.?\\s*\\n?/gi, /None yet\\.?\\s*\\n?/gi]);\r\n\r\n if (updated) {\r\n fs.writeFileSync(statePath, updated, 'utf-8');\r\n output({ added: true, blocker: blockerText }, raw, 'true');\r\n } else {\r\n output({ added: false, reason: 'Blockers section not found in STATE.md' }, raw, 'false');\r\n }\r\n}\r\n\r\nexport function cmdStateResolveBlocker(cwd: string, text: string | null, raw: boolean): void {\r\n const statePath = statePathUtil(cwd);\r\n if (!fs.existsSync(statePath)) { output({ error: 'STATE.md not found' }, raw); return; }\r\n if (!text) { output({ error: 'text required' }, raw); return; }\r\n\r\n let content = fs.readFileSync(statePath, 'utf-8');\r\n\r\n const sectionPattern = /(###?\\s*(?:Blockers|Blockers\\/Concerns|Concerns)\\s*\\n)([\\s\\S]*?)(?=\\n###?|\\n##[^#]|$)/i;\r\n const match = content.match(sectionPattern);\r\n\r\n if (match) {\r\n const sectionBody = match[2];\r\n const lines = sectionBody.split('\\n');\r\n const filtered = lines.filter(line => {\r\n if (!line.startsWith('- ')) return true;\r\n return !line.toLowerCase().includes(text.toLowerCase());\r\n });\r\n\r\n let newBody = filtered.join('\\n');\r\n if (!newBody.trim() || !newBody.includes('- ')) {\r\n newBody = 'None\\n';\r\n }\r\n\r\n content = content.replace(sectionPattern, (_match, header: string) => `${header}${newBody}`);\r\n fs.writeFileSync(statePath, content, 'utf-8');\r\n output({ resolved: true, blocker: text }, raw, 'true');\r\n } else {\r\n output({ resolved: false, reason: 'Blockers section not found in STATE.md' }, raw, 'false');\r\n }\r\n}\r\n\r\nexport function cmdStateRecordSession(cwd: string, options: StateSessionOptions, raw: boolean): void {\r\n const statePath = statePathUtil(cwd);\r\n if (!fs.existsSync(statePath)) { output({ error: 'STATE.md not found' }, raw); return; }\r\n\r\n let content = fs.readFileSync(statePath, 'utf-8');\r\n const now = new Date().toISOString();\r\n const updated: string[] = [];\r\n\r\n let result = stateReplaceField(content, 'Last session', now);\r\n if (result) { content = result; updated.push('Last session'); }\r\n result = stateReplaceField(content, 'Last Date', now);\r\n if (result) { content = result; updated.push('Last Date'); }\r\n\r\n if (options.stopped_at) {\r\n result = stateReplaceField(content, 'Stopped At', options.stopped_at);\r\n if (!result) result = stateReplaceField(content, 'Stopped at', options.stopped_at);\r\n if (result) { content = result; updated.push('Stopped At'); }\r\n }\r\n\r\n const resumeFile = options.resume_file || 'None';\r\n result = stateReplaceField(content, 'Resume File', resumeFile);\r\n if (!result) result = stateReplaceField(content, 'Resume file', resumeFile);\r\n if (result) { content = result; updated.push('Resume File'); }\r\n\r\n if (updated.length > 0) {\r\n fs.writeFileSync(statePath, content, 'utf-8');\r\n output({ recorded: true, updated }, raw, 'true');\r\n } else {\r\n output({ recorded: false, reason: 'No session fields found in STATE.md' }, raw, 'false');\r\n }\r\n}\r\n\r\nexport function cmdStateSnapshot(cwd: string, raw: boolean): void {\r\n const statePath = statePathUtil(cwd);\r\n\r\n if (!fs.existsSync(statePath)) {\r\n output({ error: 'STATE.md not found' }, raw);\r\n return;\r\n }\r\n\r\n const content = fs.readFileSync(statePath, 'utf-8');\r\n\r\n const extractField = (fieldName: string): string | null => {\r\n const pattern = new RegExp(`\\\\*\\\\*${fieldName}:\\\\*\\\\*\\\\s*(.+)`, 'i');\r\n const match = content.match(pattern);\r\n return match ? match[1].trim() : null;\r\n };\r\n\r\n const currentPhase = extractField('Current Phase');\r\n const currentPhaseName = extractField('Current Phase Name');\r\n const totalPhasesRaw = extractField('Total Phases');\r\n const currentPlan = extractField('Current Plan');\r\n const totalPlansRaw = extractField('Total Plans in Phase');\r\n const status = extractField('Status');\r\n const progressRaw = extractField('Progress');\r\n const lastActivity = extractField('Last Activity');\r\n const lastActivityDesc = extractField('Last Activity Description');\r\n const pausedAt = extractField('Paused At');\r\n\r\n const totalPhases = totalPhasesRaw ? parseInt(totalPhasesRaw, 10) : null;\r\n const totalPlansInPhase = totalPlansRaw ? parseInt(totalPlansRaw, 10) : null;\r\n const progressPercent = progressRaw ? parseInt(progressRaw.replace('%', ''), 10) : null;\r\n\r\n const decisions: Decision[] = [];\r\n const decisionsMatch = content.match(/##\\s*Decisions Made[\\s\\S]*?\\n\\|[^\\n]+\\n\\|[-|\\s]+\\n([\\s\\S]*?)(?=\\n##|\\n$|$)/i);\r\n if (decisionsMatch) {\r\n const tableBody = decisionsMatch[1];\r\n const rows = tableBody.trim().split('\\n').filter(r => r.includes('|'));\r\n for (const row of rows) {\r\n const cells = row.split('|').map(c => c.trim()).filter(Boolean);\r\n if (cells.length >= 3) {\r\n decisions.push({\r\n phase: cells[0],\r\n summary: cells[1],\r\n rationale: cells[2],\r\n });\r\n }\r\n }\r\n }\r\n\r\n const blockers: string[] = [];\r\n const blockersMatch = content.match(/##\\s*Blockers\\s*\\n([\\s\\S]*?)(?=\\n##|$)/i);\r\n if (blockersMatch) {\r\n const blockersSection = blockersMatch[1];\r\n const items = blockersSection.match(/^-\\s+(.+)$/gm) || [];\r\n for (const item of items) {\r\n blockers.push(item.replace(/^-\\s+/, '').trim());\r\n }\r\n }\r\n\r\n const session: StateSnapshot['session'] = {\r\n last_date: null,\r\n stopped_at: null,\r\n resume_file: null,\r\n };\r\n\r\n const sessionMatch = content.match(/##\\s*Session\\s*\\n([\\s\\S]*?)(?=\\n##|$)/i);\r\n if (sessionMatch) {\r\n const sessionSection = sessionMatch[1];\r\n const lastDateMatch = sessionSection.match(/\\*\\*Last Date:\\*\\*\\s*(.+)/i);\r\n const stoppedAtMatch = sessionSection.match(/\\*\\*Stopped At:\\*\\*\\s*(.+)/i);\r\n const resumeFileMatch = sessionSection.match(/\\*\\*Resume File:\\*\\*\\s*(.+)/i);\r\n\r\n if (lastDateMatch) session.last_date = lastDateMatch[1].trim();\r\n if (stoppedAtMatch) session.stopped_at = stoppedAtMatch[1].trim();\r\n if (resumeFileMatch) session.resume_file = resumeFileMatch[1].trim();\r\n }\r\n\r\n const snapshot: StateSnapshot = {\r\n current_phase: currentPhase,\r\n current_phase_name: currentPhaseName,\r\n total_phases: totalPhases,\r\n current_plan: currentPlan,\r\n total_plans_in_phase: totalPlansInPhase,\r\n status,\r\n progress_percent: progressPercent,\r\n last_activity: lastActivity,\r\n last_activity_desc: lastActivityDesc,\r\n decisions,\r\n blockers,\r\n paused_at: pausedAt,\r\n session,\r\n };\r\n\r\n output(snapshot, raw);\r\n}\r\n","/**\r\n * State Management MCP Tools — STATE.md operations exposed as MCP tools\r\n *\r\n * CRITICAL: Never import output() or error() from core — they call process.exit().\r\n * CRITICAL: Never write to stdout — it is reserved for MCP JSON-RPC protocol.\r\n * CRITICAL: Never call process.exit() — the server must stay alive after every tool call.\r\n */\r\n\r\nimport fs from 'node:fs';\r\nimport { z } from 'zod';\r\nimport escapeStringRegexp from 'escape-string-regexp';\r\nimport type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\r\n\r\nimport { statePath } from '../core/core.js';\r\nimport { stateExtractField, stateReplaceField, appendToStateSection } from '../core/state.js';\r\nimport { detectProjectRoot, mcpSuccess, mcpError } from './utils.js';\r\n\r\n/**\r\n * Register all state management tools on the MCP server.\r\n */\r\nexport function registerStateTools(server: McpServer): void {\r\n // ── mcp_get_state ───────────────────────────────────────────────────────────\r\n\r\n server.tool(\r\n 'mcp_get_state',\r\n 'Read STATE.md content — full file, a specific **field:** value, or a ## section.',\r\n {\r\n field: z\r\n .string()\r\n .optional()\r\n .describe('Specific field or section name, or omit for full STATE.md'),\r\n },\r\n async ({ field }) => {\r\n try {\r\n const cwd = detectProjectRoot();\r\n if (!cwd) {\r\n return mcpError('No .planning/ directory found', 'Project not detected');\r\n }\r\n\r\n const stPath = statePath(cwd);\r\n if (!fs.existsSync(stPath)) {\r\n return mcpError('STATE.md not found', 'STATE.md missing');\r\n }\r\n\r\n const content = fs.readFileSync(stPath, 'utf-8');\r\n\r\n if (!field) {\r\n return mcpSuccess({ content }, 'Full STATE.md retrieved');\r\n }\r\n\r\n // Try **field:** value pattern first\r\n const fieldValue = stateExtractField(content, field);\r\n if (fieldValue) {\r\n return mcpSuccess(\r\n { content: fieldValue, field },\r\n `State field retrieved: ${field}`,\r\n );\r\n }\r\n\r\n // Try ## Section pattern\r\n const fieldEscaped = escapeStringRegexp(field);\r\n const sectionPattern = new RegExp(\r\n `##\\\\s*${fieldEscaped}\\\\s*\\n([\\\\s\\\\S]*?)(?=\\\\n##|$)`,\r\n 'i',\r\n );\r\n const sectionMatch = content.match(sectionPattern);\r\n if (sectionMatch) {\r\n return mcpSuccess(\r\n { content: sectionMatch[1].trim(), field },\r\n `State section retrieved: ${field}`,\r\n );\r\n }\r\n\r\n return mcpError(\r\n `Section or field \"${field}\" not found in STATE.md`,\r\n 'Field not found',\r\n );\r\n } catch (e) {\r\n return mcpError((e as Error).message, 'Operation failed');\r\n }\r\n },\r\n );\r\n\r\n // ── mcp_update_state ────────────────────────────────────────────────────────\r\n\r\n server.tool(\r\n 'mcp_update_state',\r\n 'Update a **field:** value in STATE.md (e.g., \"Status\", \"Current focus\").',\r\n {\r\n field: z.string().describe('Field name (e.g., \"Status\", \"Current focus\")'),\r\n value: z.string().describe('New value for the field'),\r\n },\r\n async ({ field, value }) => {\r\n try {\r\n const cwd = detectProjectRoot();\r\n if (!cwd) {\r\n return mcpError('No .planning/ directory found', 'Project not detected');\r\n }\r\n\r\n const stPath = statePath(cwd);\r\n if (!fs.existsSync(stPath)) {\r\n return mcpError('STATE.md not found', 'STATE.md missing');\r\n }\r\n\r\n const content = fs.readFileSync(stPath, 'utf-8');\r\n const updated = stateReplaceField(content, field, value);\r\n\r\n if (!updated) {\r\n return mcpError(\r\n `Field \"${field}\" not found in STATE.md`,\r\n 'Field not found',\r\n );\r\n }\r\n\r\n fs.writeFileSync(stPath, updated, 'utf-8');\r\n\r\n return mcpSuccess(\r\n { updated: true, field, value },\r\n `State updated: ${field}`,\r\n );\r\n } catch (e) {\r\n return mcpError((e as Error).message, 'Operation failed');\r\n }\r\n },\r\n );\r\n\r\n // ── mcp_add_decision ────────────────────────────────────────────────────────\r\n\r\n server.tool(\r\n 'mcp_add_decision',\r\n 'Record a decision in the Decisions section of STATE.md.',\r\n {\r\n summary: z.string().describe('Decision summary'),\r\n rationale: z.string().optional().describe('Optional rationale'),\r\n phase: z.string().optional().describe('Associated phase number'),\r\n },\r\n async ({ summary, rationale, phase }) => {\r\n try {\r\n const cwd = detectProjectRoot();\r\n if (!cwd) {\r\n return mcpError('No .planning/ directory found', 'Project not detected');\r\n }\r\n\r\n const stPath = statePath(cwd);\r\n if (!fs.existsSync(stPath)) {\r\n return mcpError('STATE.md not found', 'STATE.md missing');\r\n }\r\n\r\n const content = fs.readFileSync(stPath, 'utf-8');\r\n const entry = `- [Phase ${phase || '?'}]: ${summary}${rationale ? ` -- ${rationale}` : ''}`;\r\n\r\n const sectionPattern =\r\n /(###?\\s*(?:Decisions|Decisions Made|Accumulated.*Decisions)\\s*\\n)([\\s\\S]*?)(?=\\n###?|\\n##[^#]|$)/i;\r\n const updated = appendToStateSection(content, sectionPattern, entry, [/None yet\\.?\\s*\\n?/gi, /No decisions yet\\.?\\s*\\n?/gi]);\r\n\r\n if (!updated) {\r\n return mcpError(\r\n 'Decisions section not found in STATE.md',\r\n 'Section not found',\r\n );\r\n }\r\n\r\n fs.writeFileSync(stPath, updated, 'utf-8');\r\n\r\n return mcpSuccess(\r\n { added: true, decision: entry },\r\n 'Decision recorded',\r\n );\r\n } catch (e) {\r\n return mcpError((e as Error).message, 'Operation failed');\r\n }\r\n },\r\n );\r\n\r\n // ── mcp_add_blocker ─────────────────────────────────────────────────────────\r\n\r\n server.tool(\r\n 'mcp_add_blocker',\r\n 'Add a blocker entry to the Blockers section of STATE.md.',\r\n {\r\n text: z.string().describe('Blocker description'),\r\n },\r\n async ({ text }) => {\r\n try {\r\n const cwd = detectProjectRoot();\r\n if (!cwd) {\r\n return mcpError('No .planning/ directory found', 'Project not detected');\r\n }\r\n\r\n const stPath = statePath(cwd);\r\n if (!fs.existsSync(stPath)) {\r\n return mcpError('STATE.md not found', 'STATE.md missing');\r\n }\r\n\r\n const content = fs.readFileSync(stPath, 'utf-8');\r\n const entry = `- ${text}`;\r\n\r\n const sectionPattern =\r\n /(###?\\s*(?:Blockers|Blockers\\/Concerns|Concerns)\\s*\\n)([\\s\\S]*?)(?=\\n###?|\\n##[^#]|$)/i;\r\n const updated = appendToStateSection(content, sectionPattern, entry, [/None\\.?\\s*\\n?/gi, /None yet\\.?\\s*\\n?/gi]);\r\n\r\n if (!updated) {\r\n return mcpError(\r\n 'Blockers section not found in STATE.md',\r\n 'Section not found',\r\n );\r\n }\r\n\r\n fs.writeFileSync(stPath, updated, 'utf-8');\r\n\r\n return mcpSuccess(\r\n { added: true, blocker: text },\r\n 'Blocker added',\r\n );\r\n } catch (e) {\r\n return mcpError((e as Error).message, 'Operation failed');\r\n }\r\n },\r\n );\r\n\r\n // ── mcp_resolve_blocker ─────────────────────────────────────────────────────\r\n\r\n server.tool(\r\n 'mcp_resolve_blocker',\r\n 'Remove a blocker from STATE.md by matching text (case-insensitive partial match).',\r\n {\r\n text: z\r\n .string()\r\n .describe('Text to match against blocker entries (case-insensitive partial match)'),\r\n },\r\n async ({ text }) => {\r\n try {\r\n const cwd = detectProjectRoot();\r\n if (!cwd) {\r\n return mcpError('No .planning/ directory found', 'Project not detected');\r\n }\r\n\r\n const stPath = statePath(cwd);\r\n if (!fs.existsSync(stPath)) {\r\n return mcpError('STATE.md not found', 'STATE.md missing');\r\n }\r\n\r\n let content = fs.readFileSync(stPath, 'utf-8');\r\n\r\n const sectionPattern =\r\n /(###?\\s*(?:Blockers|Blockers\\/Concerns|Concerns)\\s*\\n)([\\s\\S]*?)(?=\\n###?|\\n##[^#]|$)/i;\r\n const match = content.match(sectionPattern);\r\n\r\n if (!match) {\r\n return mcpError(\r\n 'Blockers section not found in STATE.md',\r\n 'Section not found',\r\n );\r\n }\r\n\r\n const sectionBody = match[2];\r\n const lines = sectionBody.split('\\n');\r\n const filtered = lines.filter((line) => {\r\n if (!line.startsWith('- ')) return true;\r\n return !line.toLowerCase().includes(text.toLowerCase());\r\n });\r\n\r\n let newBody = filtered.join('\\n');\r\n if (!newBody.trim() || !newBody.includes('- ')) {\r\n newBody = 'None\\n';\r\n }\r\n\r\n content = content.replace(\r\n sectionPattern,\r\n (_match, header: string) => `${header}${newBody}`,\r\n );\r\n\r\n fs.writeFileSync(stPath, content, 'utf-8');\r\n\r\n return mcpSuccess(\r\n { resolved: true, blocker: text },\r\n 'Blocker resolved',\r\n );\r\n } catch (e) {\r\n return mcpError((e as Error).message, 'Operation failed');\r\n }\r\n },\r\n );\r\n}\r\n","/**\r\n * MCP Tool Registration — Orchestrates all tool registrations\r\n *\r\n * This is the single entry point for registering MCP tools on the server.\r\n * Later plans will add registerTodoTools, registerStateTools, etc.\r\n */\r\n\r\nimport type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\r\nimport { registerPhaseTools } from './phase-tools.js';\r\nimport { registerTodoTools } from './todo-tools.js';\r\nimport { registerStateTools } from './state-tools.js';\r\n\r\n/**\r\n * Register all MCP tools on the given server instance.\r\n */\r\nexport function registerAllTools(server: McpServer): void {\r\n registerPhaseTools(server);\r\n registerTodoTools(server);\r\n registerStateTools(server);\r\n}\r\n","/**\r\n * MAXSIM MCP Server — Entry point\r\n *\r\n * Provides MCP tools for phase operations, state management, and more.\r\n * Communicates over stdio using the MCP JSON-RPC protocol.\r\n *\r\n * CRITICAL: Never write to stdout directly — stdout is reserved for MCP protocol.\r\n * All logging must go to stderr.\r\n * CRITICAL: Never import output() or error() from core — they call process.exit().\r\n */\r\n\r\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\r\nimport { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';\r\nimport { registerAllTools } from './mcp/index.js';\r\n\r\nasync function main() {\r\n const server = new McpServer({\r\n name: 'maxsim',\r\n version: '1.0.0',\r\n });\r\n\r\n registerAllTools(server);\r\n\r\n const transport = new StdioServerTransport();\r\n await server.connect(transport);\r\n\r\n // Log to stderr ONLY — stdout is reserved for MCP JSON-RPC protocol\r\n process.stderr.write('MAXSIM MCP server started\\n');\r\n}\r\n\r\nmain().catch((err) => {\r\n process.stderr.write(`MAXSIM MCP server error: ${err}\\n`);\r\n process.exitCode = 1;\r\n});\r\n"],"x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,91],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"mcp-server.cjs","names":["os","tty","FOLDER","Buffer2","path","fs","node_process","node_buffer","node_process","path","fs","path","fs","z","fs","z","path","fs","z","fs","McpServer","StdioServerTransport"],"sources":["../../../../../../node_modules/ms/index.js","../../../../../../node_modules/debug/src/common.js","../../../../../../node_modules/debug/src/browser.js","../../../../../../node_modules/has-flag/index.js","../../../../../../node_modules/supports-color/index.js","../../../../../../node_modules/debug/src/node.js","../../../../../../node_modules/debug/src/index.js","../../../../../../node_modules/@kwsites/file-exists/dist/src/index.js","../../../../../../node_modules/@kwsites/file-exists/dist/index.js","../../../../../../node_modules/@kwsites/promise-deferred/dist/index.js","../../../../../../node_modules/simple-git/dist/esm/index.js","../../../../../../node_modules/slugify/slugify.js","../src/core/core.ts","../../../../../../node_modules/yaml/dist/nodes/identity.js","../../../../../../node_modules/yaml/dist/visit.js","../../../../../../node_modules/yaml/dist/doc/directives.js","../../../../../../node_modules/yaml/dist/doc/anchors.js","../../../../../../node_modules/yaml/dist/doc/applyReviver.js","../../../../../../node_modules/yaml/dist/nodes/toJS.js","../../../../../../node_modules/yaml/dist/nodes/Node.js","../../../../../../node_modules/yaml/dist/nodes/Alias.js","../../../../../../node_modules/yaml/dist/nodes/Scalar.js","../../../../../../node_modules/yaml/dist/doc/createNode.js","../../../../../../node_modules/yaml/dist/nodes/Collection.js","../../../../../../node_modules/yaml/dist/stringify/stringifyComment.js","../../../../../../node_modules/yaml/dist/stringify/foldFlowLines.js","../../../../../../node_modules/yaml/dist/stringify/stringifyString.js","../../../../../../node_modules/yaml/dist/stringify/stringify.js","../../../../../../node_modules/yaml/dist/stringify/stringifyPair.js","../../../../../../node_modules/yaml/dist/log.js","../../../../../../node_modules/yaml/dist/schema/yaml-1.1/merge.js","../../../../../../node_modules/yaml/dist/nodes/addPairToJSMap.js","../../../../../../node_modules/yaml/dist/nodes/Pair.js","../../../../../../node_modules/yaml/dist/stringify/stringifyCollection.js","../../../../../../node_modules/yaml/dist/nodes/YAMLMap.js","../../../../../../node_modules/yaml/dist/schema/common/map.js","../../../../../../node_modules/yaml/dist/nodes/YAMLSeq.js","../../../../../../node_modules/yaml/dist/schema/common/seq.js","../../../../../../node_modules/yaml/dist/schema/common/string.js","../../../../../../node_modules/yaml/dist/schema/common/null.js","../../../../../../node_modules/yaml/dist/schema/core/bool.js","../../../../../../node_modules/yaml/dist/stringify/stringifyNumber.js","../../../../../../node_modules/yaml/dist/schema/core/float.js","../../../../../../node_modules/yaml/dist/schema/core/int.js","../../../../../../node_modules/yaml/dist/schema/core/schema.js","../../../../../../node_modules/yaml/dist/schema/json/schema.js","../../../../../../node_modules/yaml/dist/schema/yaml-1.1/binary.js","../../../../../../node_modules/yaml/dist/schema/yaml-1.1/pairs.js","../../../../../../node_modules/yaml/dist/schema/yaml-1.1/omap.js","../../../../../../node_modules/yaml/dist/schema/yaml-1.1/bool.js","../../../../../../node_modules/yaml/dist/schema/yaml-1.1/float.js","../../../../../../node_modules/yaml/dist/schema/yaml-1.1/int.js","../../../../../../node_modules/yaml/dist/schema/yaml-1.1/set.js","../../../../../../node_modules/yaml/dist/schema/yaml-1.1/timestamp.js","../../../../../../node_modules/yaml/dist/schema/yaml-1.1/schema.js","../../../../../../node_modules/yaml/dist/schema/tags.js","../../../../../../node_modules/yaml/dist/schema/Schema.js","../../../../../../node_modules/yaml/dist/stringify/stringifyDocument.js","../../../../../../node_modules/yaml/dist/doc/Document.js","../../../../../../node_modules/yaml/dist/errors.js","../../../../../../node_modules/yaml/dist/compose/resolve-props.js","../../../../../../node_modules/yaml/dist/compose/util-contains-newline.js","../../../../../../node_modules/yaml/dist/compose/util-flow-indent-check.js","../../../../../../node_modules/yaml/dist/compose/util-map-includes.js","../../../../../../node_modules/yaml/dist/compose/resolve-block-map.js","../../../../../../node_modules/yaml/dist/compose/resolve-block-seq.js","../../../../../../node_modules/yaml/dist/compose/resolve-end.js","../../../../../../node_modules/yaml/dist/compose/resolve-flow-collection.js","../../../../../../node_modules/yaml/dist/compose/compose-collection.js","../../../../../../node_modules/yaml/dist/compose/resolve-block-scalar.js","../../../../../../node_modules/yaml/dist/compose/resolve-flow-scalar.js","../../../../../../node_modules/yaml/dist/compose/compose-scalar.js","../../../../../../node_modules/yaml/dist/compose/util-empty-scalar-position.js","../../../../../../node_modules/yaml/dist/compose/compose-node.js","../../../../../../node_modules/yaml/dist/compose/compose-doc.js","../../../../../../node_modules/yaml/dist/compose/composer.js","../../../../../../node_modules/yaml/dist/parse/cst-scalar.js","../../../../../../node_modules/yaml/dist/parse/cst-stringify.js","../../../../../../node_modules/yaml/dist/parse/cst-visit.js","../../../../../../node_modules/yaml/dist/parse/cst.js","../../../../../../node_modules/yaml/dist/parse/lexer.js","../../../../../../node_modules/yaml/dist/parse/line-counter.js","../../../../../../node_modules/yaml/dist/parse/parser.js","../../../../../../node_modules/yaml/dist/public-api.js","../../../../../../node_modules/yaml/dist/index.js","../src/core/frontmatter.ts","../src/core/phase.ts","../src/mcp/utils.ts","../src/mcp/phase-tools.ts","../src/core/commands.ts","../src/mcp/todo-tools.ts","../../../../../../node_modules/escape-string-regexp/index.js","../src/core/state.ts","../src/mcp/state-tools.ts","../src/mcp/index.ts","../src/mcp-server.ts"],"sourcesContent":["/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar w = d * 7;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function (val, options) {\n options = options || {};\n var type = typeof val;\n if (type === 'string' && val.length > 0) {\n return parse(val);\n } else if (type === 'number' && isFinite(val)) {\n return options.long ? fmtLong(val) : fmtShort(val);\n }\n throw new Error(\n 'val is not a non-empty string or a valid number. val=' +\n JSON.stringify(val)\n );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n str = String(str);\n if (str.length > 100) {\n return;\n }\n var match = /^(-?(?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(\n str\n );\n if (!match) {\n return;\n }\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n case 'weeks':\n case 'week':\n case 'w':\n return n * w;\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n default:\n return undefined;\n }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (msAbs >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (msAbs >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (msAbs >= s) {\n return Math.round(ms / s) + 's';\n }\n return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return plural(ms, msAbs, d, 'day');\n }\n if (msAbs >= h) {\n return plural(ms, msAbs, h, 'hour');\n }\n if (msAbs >= m) {\n return plural(ms, msAbs, m, 'minute');\n }\n if (msAbs >= s) {\n return plural(ms, msAbs, s, 'second');\n }\n return ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, msAbs, n, name) {\n var isPlural = msAbs >= n * 1.5;\n return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');\n}\n","\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n */\n\nfunction setup(env) {\n\tcreateDebug.debug = createDebug;\n\tcreateDebug.default = createDebug;\n\tcreateDebug.coerce = coerce;\n\tcreateDebug.disable = disable;\n\tcreateDebug.enable = enable;\n\tcreateDebug.enabled = enabled;\n\tcreateDebug.humanize = require('ms');\n\tcreateDebug.destroy = destroy;\n\n\tObject.keys(env).forEach(key => {\n\t\tcreateDebug[key] = env[key];\n\t});\n\n\t/**\n\t* The currently active debug mode names, and names to skip.\n\t*/\n\n\tcreateDebug.names = [];\n\tcreateDebug.skips = [];\n\n\t/**\n\t* Map of special \"%n\" handling functions, for the debug \"format\" argument.\n\t*\n\t* Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n\t*/\n\tcreateDebug.formatters = {};\n\n\t/**\n\t* Selects a color for a debug namespace\n\t* @param {String} namespace The namespace string for the debug instance to be colored\n\t* @return {Number|String} An ANSI color code for the given namespace\n\t* @api private\n\t*/\n\tfunction selectColor(namespace) {\n\t\tlet hash = 0;\n\n\t\tfor (let i = 0; i < namespace.length; i++) {\n\t\t\thash = ((hash << 5) - hash) + namespace.charCodeAt(i);\n\t\t\thash |= 0; // Convert to 32bit integer\n\t\t}\n\n\t\treturn createDebug.colors[Math.abs(hash) % createDebug.colors.length];\n\t}\n\tcreateDebug.selectColor = selectColor;\n\n\t/**\n\t* Create a debugger with the given `namespace`.\n\t*\n\t* @param {String} namespace\n\t* @return {Function}\n\t* @api public\n\t*/\n\tfunction createDebug(namespace) {\n\t\tlet prevTime;\n\t\tlet enableOverride = null;\n\t\tlet namespacesCache;\n\t\tlet enabledCache;\n\n\t\tfunction debug(...args) {\n\t\t\t// Disabled?\n\t\t\tif (!debug.enabled) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst self = debug;\n\n\t\t\t// Set `diff` timestamp\n\t\t\tconst curr = Number(new Date());\n\t\t\tconst ms = curr - (prevTime || curr);\n\t\t\tself.diff = ms;\n\t\t\tself.prev = prevTime;\n\t\t\tself.curr = curr;\n\t\t\tprevTime = curr;\n\n\t\t\targs[0] = createDebug.coerce(args[0]);\n\n\t\t\tif (typeof args[0] !== 'string') {\n\t\t\t\t// Anything else let's inspect with %O\n\t\t\t\targs.unshift('%O');\n\t\t\t}\n\n\t\t\t// Apply any `formatters` transformations\n\t\t\tlet index = 0;\n\t\t\targs[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => {\n\t\t\t\t// If we encounter an escaped % then don't increase the array index\n\t\t\t\tif (match === '%%') {\n\t\t\t\t\treturn '%';\n\t\t\t\t}\n\t\t\t\tindex++;\n\t\t\t\tconst formatter = createDebug.formatters[format];\n\t\t\t\tif (typeof formatter === 'function') {\n\t\t\t\t\tconst val = args[index];\n\t\t\t\t\tmatch = formatter.call(self, val);\n\n\t\t\t\t\t// Now we need to remove `args[index]` since it's inlined in the `format`\n\t\t\t\t\targs.splice(index, 1);\n\t\t\t\t\tindex--;\n\t\t\t\t}\n\t\t\t\treturn match;\n\t\t\t});\n\n\t\t\t// Apply env-specific formatting (colors, etc.)\n\t\t\tcreateDebug.formatArgs.call(self, args);\n\n\t\t\tconst logFn = self.log || createDebug.log;\n\t\t\tlogFn.apply(self, args);\n\t\t}\n\n\t\tdebug.namespace = namespace;\n\t\tdebug.useColors = createDebug.useColors();\n\t\tdebug.color = createDebug.selectColor(namespace);\n\t\tdebug.extend = extend;\n\t\tdebug.destroy = createDebug.destroy; // XXX Temporary. Will be removed in the next major release.\n\n\t\tObject.defineProperty(debug, 'enabled', {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: false,\n\t\t\tget: () => {\n\t\t\t\tif (enableOverride !== null) {\n\t\t\t\t\treturn enableOverride;\n\t\t\t\t}\n\t\t\t\tif (namespacesCache !== createDebug.namespaces) {\n\t\t\t\t\tnamespacesCache = createDebug.namespaces;\n\t\t\t\t\tenabledCache = createDebug.enabled(namespace);\n\t\t\t\t}\n\n\t\t\t\treturn enabledCache;\n\t\t\t},\n\t\t\tset: v => {\n\t\t\t\tenableOverride = v;\n\t\t\t}\n\t\t});\n\n\t\t// Env-specific initialization logic for debug instances\n\t\tif (typeof createDebug.init === 'function') {\n\t\t\tcreateDebug.init(debug);\n\t\t}\n\n\t\treturn debug;\n\t}\n\n\tfunction extend(namespace, delimiter) {\n\t\tconst newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace);\n\t\tnewDebug.log = this.log;\n\t\treturn newDebug;\n\t}\n\n\t/**\n\t* Enables a debug mode by namespaces. This can include modes\n\t* separated by a colon and wildcards.\n\t*\n\t* @param {String} namespaces\n\t* @api public\n\t*/\n\tfunction enable(namespaces) {\n\t\tcreateDebug.save(namespaces);\n\t\tcreateDebug.namespaces = namespaces;\n\n\t\tcreateDebug.names = [];\n\t\tcreateDebug.skips = [];\n\n\t\tconst split = (typeof namespaces === 'string' ? namespaces : '')\n\t\t\t.trim()\n\t\t\t.replace(/\\s+/g, ',')\n\t\t\t.split(',')\n\t\t\t.filter(Boolean);\n\n\t\tfor (const ns of split) {\n\t\t\tif (ns[0] === '-') {\n\t\t\t\tcreateDebug.skips.push(ns.slice(1));\n\t\t\t} else {\n\t\t\t\tcreateDebug.names.push(ns);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Checks if the given string matches a namespace template, honoring\n\t * asterisks as wildcards.\n\t *\n\t * @param {String} search\n\t * @param {String} template\n\t * @return {Boolean}\n\t */\n\tfunction matchesTemplate(search, template) {\n\t\tlet searchIndex = 0;\n\t\tlet templateIndex = 0;\n\t\tlet starIndex = -1;\n\t\tlet matchIndex = 0;\n\n\t\twhile (searchIndex < search.length) {\n\t\t\tif (templateIndex < template.length && (template[templateIndex] === search[searchIndex] || template[templateIndex] === '*')) {\n\t\t\t\t// Match character or proceed with wildcard\n\t\t\t\tif (template[templateIndex] === '*') {\n\t\t\t\t\tstarIndex = templateIndex;\n\t\t\t\t\tmatchIndex = searchIndex;\n\t\t\t\t\ttemplateIndex++; // Skip the '*'\n\t\t\t\t} else {\n\t\t\t\t\tsearchIndex++;\n\t\t\t\t\ttemplateIndex++;\n\t\t\t\t}\n\t\t\t} else if (starIndex !== -1) { // eslint-disable-line no-negated-condition\n\t\t\t\t// Backtrack to the last '*' and try to match more characters\n\t\t\t\ttemplateIndex = starIndex + 1;\n\t\t\t\tmatchIndex++;\n\t\t\t\tsearchIndex = matchIndex;\n\t\t\t} else {\n\t\t\t\treturn false; // No match\n\t\t\t}\n\t\t}\n\n\t\t// Handle trailing '*' in template\n\t\twhile (templateIndex < template.length && template[templateIndex] === '*') {\n\t\t\ttemplateIndex++;\n\t\t}\n\n\t\treturn templateIndex === template.length;\n\t}\n\n\t/**\n\t* Disable debug output.\n\t*\n\t* @return {String} namespaces\n\t* @api public\n\t*/\n\tfunction disable() {\n\t\tconst namespaces = [\n\t\t\t...createDebug.names,\n\t\t\t...createDebug.skips.map(namespace => '-' + namespace)\n\t\t].join(',');\n\t\tcreateDebug.enable('');\n\t\treturn namespaces;\n\t}\n\n\t/**\n\t* Returns true if the given mode name is enabled, false otherwise.\n\t*\n\t* @param {String} name\n\t* @return {Boolean}\n\t* @api public\n\t*/\n\tfunction enabled(name) {\n\t\tfor (const skip of createDebug.skips) {\n\t\t\tif (matchesTemplate(name, skip)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tfor (const ns of createDebug.names) {\n\t\t\tif (matchesTemplate(name, ns)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t* Coerce `val`.\n\t*\n\t* @param {Mixed} val\n\t* @return {Mixed}\n\t* @api private\n\t*/\n\tfunction coerce(val) {\n\t\tif (val instanceof Error) {\n\t\t\treturn val.stack || val.message;\n\t\t}\n\t\treturn val;\n\t}\n\n\t/**\n\t* XXX DO NOT USE. This is a temporary stub function.\n\t* XXX It WILL be removed in the next major release.\n\t*/\n\tfunction destroy() {\n\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t}\n\n\tcreateDebug.enable(createDebug.load());\n\n\treturn createDebug;\n}\n\nmodule.exports = setup;\n","/* eslint-env browser */\n\n/**\n * This is the web browser implementation of `debug()`.\n */\n\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = localstorage();\nexports.destroy = (() => {\n\tlet warned = false;\n\n\treturn () => {\n\t\tif (!warned) {\n\t\t\twarned = true;\n\t\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t\t}\n\t};\n})();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n\t'#0000CC',\n\t'#0000FF',\n\t'#0033CC',\n\t'#0033FF',\n\t'#0066CC',\n\t'#0066FF',\n\t'#0099CC',\n\t'#0099FF',\n\t'#00CC00',\n\t'#00CC33',\n\t'#00CC66',\n\t'#00CC99',\n\t'#00CCCC',\n\t'#00CCFF',\n\t'#3300CC',\n\t'#3300FF',\n\t'#3333CC',\n\t'#3333FF',\n\t'#3366CC',\n\t'#3366FF',\n\t'#3399CC',\n\t'#3399FF',\n\t'#33CC00',\n\t'#33CC33',\n\t'#33CC66',\n\t'#33CC99',\n\t'#33CCCC',\n\t'#33CCFF',\n\t'#6600CC',\n\t'#6600FF',\n\t'#6633CC',\n\t'#6633FF',\n\t'#66CC00',\n\t'#66CC33',\n\t'#9900CC',\n\t'#9900FF',\n\t'#9933CC',\n\t'#9933FF',\n\t'#99CC00',\n\t'#99CC33',\n\t'#CC0000',\n\t'#CC0033',\n\t'#CC0066',\n\t'#CC0099',\n\t'#CC00CC',\n\t'#CC00FF',\n\t'#CC3300',\n\t'#CC3333',\n\t'#CC3366',\n\t'#CC3399',\n\t'#CC33CC',\n\t'#CC33FF',\n\t'#CC6600',\n\t'#CC6633',\n\t'#CC9900',\n\t'#CC9933',\n\t'#CCCC00',\n\t'#CCCC33',\n\t'#FF0000',\n\t'#FF0033',\n\t'#FF0066',\n\t'#FF0099',\n\t'#FF00CC',\n\t'#FF00FF',\n\t'#FF3300',\n\t'#FF3333',\n\t'#FF3366',\n\t'#FF3399',\n\t'#FF33CC',\n\t'#FF33FF',\n\t'#FF6600',\n\t'#FF6633',\n\t'#FF9900',\n\t'#FF9933',\n\t'#FFCC00',\n\t'#FFCC33'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\n// eslint-disable-next-line complexity\nfunction useColors() {\n\t// NB: In an Electron preload script, document will be defined but not fully\n\t// initialized. Since we know we're in Chrome, we'll just detect this case\n\t// explicitly\n\tif (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) {\n\t\treturn true;\n\t}\n\n\t// Internet Explorer and Edge do not support colors.\n\tif (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\n\t\treturn false;\n\t}\n\n\tlet m;\n\n\t// Is webkit? http://stackoverflow.com/a/16459606/376773\n\t// document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n\t// eslint-disable-next-line no-return-assign\n\treturn (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n\t\t// Is firebug? http://stackoverflow.com/a/398120/376773\n\t\t(typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n\t\t// Is firefox >= v31?\n\t\t// https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && (m = navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/)) && parseInt(m[1], 10) >= 31) ||\n\t\t// Double check webkit in userAgent just in case we are in a worker\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n\targs[0] = (this.useColors ? '%c' : '') +\n\t\tthis.namespace +\n\t\t(this.useColors ? ' %c' : ' ') +\n\t\targs[0] +\n\t\t(this.useColors ? '%c ' : ' ') +\n\t\t'+' + module.exports.humanize(this.diff);\n\n\tif (!this.useColors) {\n\t\treturn;\n\t}\n\n\tconst c = 'color: ' + this.color;\n\targs.splice(1, 0, c, 'color: inherit');\n\n\t// The final \"%c\" is somewhat tricky, because there could be other\n\t// arguments passed either before or after the %c, so we need to\n\t// figure out the correct index to insert the CSS into\n\tlet index = 0;\n\tlet lastC = 0;\n\targs[0].replace(/%[a-zA-Z%]/g, match => {\n\t\tif (match === '%%') {\n\t\t\treturn;\n\t\t}\n\t\tindex++;\n\t\tif (match === '%c') {\n\t\t\t// We only are interested in the *last* %c\n\t\t\t// (the user may have provided their own)\n\t\t\tlastC = index;\n\t\t}\n\t});\n\n\targs.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.debug()` when available.\n * No-op when `console.debug` is not a \"function\".\n * If `console.debug` is not available, falls back\n * to `console.log`.\n *\n * @api public\n */\nexports.log = console.debug || console.log || (() => {});\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\nfunction save(namespaces) {\n\ttry {\n\t\tif (namespaces) {\n\t\t\texports.storage.setItem('debug', namespaces);\n\t\t} else {\n\t\t\texports.storage.removeItem('debug');\n\t\t}\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\nfunction load() {\n\tlet r;\n\ttry {\n\t\tr = exports.storage.getItem('debug') || exports.storage.getItem('DEBUG') ;\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n\n\t// If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n\tif (!r && typeof process !== 'undefined' && 'env' in process) {\n\t\tr = process.env.DEBUG;\n\t}\n\n\treturn r;\n}\n\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\nfunction localstorage() {\n\ttry {\n\t\t// TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context\n\t\t// The Browser also has localStorage in the global context.\n\t\treturn localStorage;\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\nmodule.exports = require('./common')(exports);\n\nconst {formatters} = module.exports;\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nformatters.j = function (v) {\n\ttry {\n\t\treturn JSON.stringify(v);\n\t} catch (error) {\n\t\treturn '[UnexpectedJSONParseError]: ' + error.message;\n\t}\n};\n","'use strict';\n\nmodule.exports = (flag, argv = process.argv) => {\n\tconst prefix = flag.startsWith('-') ? '' : (flag.length === 1 ? '-' : '--');\n\tconst position = argv.indexOf(prefix + flag);\n\tconst terminatorPosition = argv.indexOf('--');\n\treturn position !== -1 && (terminatorPosition === -1 || position < terminatorPosition);\n};\n","'use strict';\nconst os = require('os');\nconst tty = require('tty');\nconst hasFlag = require('has-flag');\n\nconst {env} = process;\n\nlet forceColor;\nif (hasFlag('no-color') ||\n\thasFlag('no-colors') ||\n\thasFlag('color=false') ||\n\thasFlag('color=never')) {\n\tforceColor = 0;\n} else if (hasFlag('color') ||\n\thasFlag('colors') ||\n\thasFlag('color=true') ||\n\thasFlag('color=always')) {\n\tforceColor = 1;\n}\n\nif ('FORCE_COLOR' in env) {\n\tif (env.FORCE_COLOR === 'true') {\n\t\tforceColor = 1;\n\t} else if (env.FORCE_COLOR === 'false') {\n\t\tforceColor = 0;\n\t} else {\n\t\tforceColor = env.FORCE_COLOR.length === 0 ? 1 : Math.min(parseInt(env.FORCE_COLOR, 10), 3);\n\t}\n}\n\nfunction translateLevel(level) {\n\tif (level === 0) {\n\t\treturn false;\n\t}\n\n\treturn {\n\t\tlevel,\n\t\thasBasic: true,\n\t\thas256: level >= 2,\n\t\thas16m: level >= 3\n\t};\n}\n\nfunction supportsColor(haveStream, streamIsTTY) {\n\tif (forceColor === 0) {\n\t\treturn 0;\n\t}\n\n\tif (hasFlag('color=16m') ||\n\t\thasFlag('color=full') ||\n\t\thasFlag('color=truecolor')) {\n\t\treturn 3;\n\t}\n\n\tif (hasFlag('color=256')) {\n\t\treturn 2;\n\t}\n\n\tif (haveStream && !streamIsTTY && forceColor === undefined) {\n\t\treturn 0;\n\t}\n\n\tconst min = forceColor || 0;\n\n\tif (env.TERM === 'dumb') {\n\t\treturn min;\n\t}\n\n\tif (process.platform === 'win32') {\n\t\t// Windows 10 build 10586 is the first Windows release that supports 256 colors.\n\t\t// Windows 10 build 14931 is the first release that supports 16m/TrueColor.\n\t\tconst osRelease = os.release().split('.');\n\t\tif (\n\t\t\tNumber(osRelease[0]) >= 10 &&\n\t\t\tNumber(osRelease[2]) >= 10586\n\t\t) {\n\t\t\treturn Number(osRelease[2]) >= 14931 ? 3 : 2;\n\t\t}\n\n\t\treturn 1;\n\t}\n\n\tif ('CI' in env) {\n\t\tif (['TRAVIS', 'CIRCLECI', 'APPVEYOR', 'GITLAB_CI', 'GITHUB_ACTIONS', 'BUILDKITE'].some(sign => sign in env) || env.CI_NAME === 'codeship') {\n\t\t\treturn 1;\n\t\t}\n\n\t\treturn min;\n\t}\n\n\tif ('TEAMCITY_VERSION' in env) {\n\t\treturn /^(9\\.(0*[1-9]\\d*)\\.|\\d{2,}\\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0;\n\t}\n\n\tif (env.COLORTERM === 'truecolor') {\n\t\treturn 3;\n\t}\n\n\tif ('TERM_PROGRAM' in env) {\n\t\tconst version = parseInt((env.TERM_PROGRAM_VERSION || '').split('.')[0], 10);\n\n\t\tswitch (env.TERM_PROGRAM) {\n\t\t\tcase 'iTerm.app':\n\t\t\t\treturn version >= 3 ? 3 : 2;\n\t\t\tcase 'Apple_Terminal':\n\t\t\t\treturn 2;\n\t\t\t// No default\n\t\t}\n\t}\n\n\tif (/-256(color)?$/i.test(env.TERM)) {\n\t\treturn 2;\n\t}\n\n\tif (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) {\n\t\treturn 1;\n\t}\n\n\tif ('COLORTERM' in env) {\n\t\treturn 1;\n\t}\n\n\treturn min;\n}\n\nfunction getSupportLevel(stream) {\n\tconst level = supportsColor(stream, stream && stream.isTTY);\n\treturn translateLevel(level);\n}\n\nmodule.exports = {\n\tsupportsColor: getSupportLevel,\n\tstdout: translateLevel(supportsColor(true, tty.isatty(1))),\n\tstderr: translateLevel(supportsColor(true, tty.isatty(2)))\n};\n","/**\n * Module dependencies.\n */\n\nconst tty = require('tty');\nconst util = require('util');\n\n/**\n * This is the Node.js implementation of `debug()`.\n */\n\nexports.init = init;\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.destroy = util.deprecate(\n\t() => {},\n\t'Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.'\n);\n\n/**\n * Colors.\n */\n\nexports.colors = [6, 2, 3, 4, 5, 1];\n\ntry {\n\t// Optional dependency (as in, doesn't need to be installed, NOT like optionalDependencies in package.json)\n\t// eslint-disable-next-line import/no-extraneous-dependencies\n\tconst supportsColor = require('supports-color');\n\n\tif (supportsColor && (supportsColor.stderr || supportsColor).level >= 2) {\n\t\texports.colors = [\n\t\t\t20,\n\t\t\t21,\n\t\t\t26,\n\t\t\t27,\n\t\t\t32,\n\t\t\t33,\n\t\t\t38,\n\t\t\t39,\n\t\t\t40,\n\t\t\t41,\n\t\t\t42,\n\t\t\t43,\n\t\t\t44,\n\t\t\t45,\n\t\t\t56,\n\t\t\t57,\n\t\t\t62,\n\t\t\t63,\n\t\t\t68,\n\t\t\t69,\n\t\t\t74,\n\t\t\t75,\n\t\t\t76,\n\t\t\t77,\n\t\t\t78,\n\t\t\t79,\n\t\t\t80,\n\t\t\t81,\n\t\t\t92,\n\t\t\t93,\n\t\t\t98,\n\t\t\t99,\n\t\t\t112,\n\t\t\t113,\n\t\t\t128,\n\t\t\t129,\n\t\t\t134,\n\t\t\t135,\n\t\t\t148,\n\t\t\t149,\n\t\t\t160,\n\t\t\t161,\n\t\t\t162,\n\t\t\t163,\n\t\t\t164,\n\t\t\t165,\n\t\t\t166,\n\t\t\t167,\n\t\t\t168,\n\t\t\t169,\n\t\t\t170,\n\t\t\t171,\n\t\t\t172,\n\t\t\t173,\n\t\t\t178,\n\t\t\t179,\n\t\t\t184,\n\t\t\t185,\n\t\t\t196,\n\t\t\t197,\n\t\t\t198,\n\t\t\t199,\n\t\t\t200,\n\t\t\t201,\n\t\t\t202,\n\t\t\t203,\n\t\t\t204,\n\t\t\t205,\n\t\t\t206,\n\t\t\t207,\n\t\t\t208,\n\t\t\t209,\n\t\t\t214,\n\t\t\t215,\n\t\t\t220,\n\t\t\t221\n\t\t];\n\t}\n} catch (error) {\n\t// Swallow - we only care if `supports-color` is available; it doesn't have to be.\n}\n\n/**\n * Build up the default `inspectOpts` object from the environment variables.\n *\n * $ DEBUG_COLORS=no DEBUG_DEPTH=10 DEBUG_SHOW_HIDDEN=enabled node script.js\n */\n\nexports.inspectOpts = Object.keys(process.env).filter(key => {\n\treturn /^debug_/i.test(key);\n}).reduce((obj, key) => {\n\t// Camel-case\n\tconst prop = key\n\t\t.substring(6)\n\t\t.toLowerCase()\n\t\t.replace(/_([a-z])/g, (_, k) => {\n\t\t\treturn k.toUpperCase();\n\t\t});\n\n\t// Coerce string value into JS value\n\tlet val = process.env[key];\n\tif (/^(yes|on|true|enabled)$/i.test(val)) {\n\t\tval = true;\n\t} else if (/^(no|off|false|disabled)$/i.test(val)) {\n\t\tval = false;\n\t} else if (val === 'null') {\n\t\tval = null;\n\t} else {\n\t\tval = Number(val);\n\t}\n\n\tobj[prop] = val;\n\treturn obj;\n}, {});\n\n/**\n * Is stdout a TTY? Colored output is enabled when `true`.\n */\n\nfunction useColors() {\n\treturn 'colors' in exports.inspectOpts ?\n\t\tBoolean(exports.inspectOpts.colors) :\n\t\ttty.isatty(process.stderr.fd);\n}\n\n/**\n * Adds ANSI color escape codes if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n\tconst {namespace: name, useColors} = this;\n\n\tif (useColors) {\n\t\tconst c = this.color;\n\t\tconst colorCode = '\\u001B[3' + (c < 8 ? c : '8;5;' + c);\n\t\tconst prefix = ` ${colorCode};1m${name} \\u001B[0m`;\n\n\t\targs[0] = prefix + args[0].split('\\n').join('\\n' + prefix);\n\t\targs.push(colorCode + 'm+' + module.exports.humanize(this.diff) + '\\u001B[0m');\n\t} else {\n\t\targs[0] = getDate() + name + ' ' + args[0];\n\t}\n}\n\nfunction getDate() {\n\tif (exports.inspectOpts.hideDate) {\n\t\treturn '';\n\t}\n\treturn new Date().toISOString() + ' ';\n}\n\n/**\n * Invokes `util.formatWithOptions()` with the specified arguments and writes to stderr.\n */\n\nfunction log(...args) {\n\treturn process.stderr.write(util.formatWithOptions(exports.inspectOpts, ...args) + '\\n');\n}\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\nfunction save(namespaces) {\n\tif (namespaces) {\n\t\tprocess.env.DEBUG = namespaces;\n\t} else {\n\t\t// If you set a process.env field to null or undefined, it gets cast to the\n\t\t// string 'null' or 'undefined'. Just delete instead.\n\t\tdelete process.env.DEBUG;\n\t}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\nfunction load() {\n\treturn process.env.DEBUG;\n}\n\n/**\n * Init logic for `debug` instances.\n *\n * Create a new `inspectOpts` object in case `useColors` is set\n * differently for a particular `debug` instance.\n */\n\nfunction init(debug) {\n\tdebug.inspectOpts = {};\n\n\tconst keys = Object.keys(exports.inspectOpts);\n\tfor (let i = 0; i < keys.length; i++) {\n\t\tdebug.inspectOpts[keys[i]] = exports.inspectOpts[keys[i]];\n\t}\n}\n\nmodule.exports = require('./common')(exports);\n\nconst {formatters} = module.exports;\n\n/**\n * Map %o to `util.inspect()`, all on a single line.\n */\n\nformatters.o = function (v) {\n\tthis.inspectOpts.colors = this.useColors;\n\treturn util.inspect(v, this.inspectOpts)\n\t\t.split('\\n')\n\t\t.map(str => str.trim())\n\t\t.join(' ');\n};\n\n/**\n * Map %O to `util.inspect()`, allowing multiple lines if needed.\n */\n\nformatters.O = function (v) {\n\tthis.inspectOpts.colors = this.useColors;\n\treturn util.inspect(v, this.inspectOpts);\n};\n","/**\n * Detect Electron renderer / nwjs process, which is node, but we should\n * treat as a browser.\n */\n\nif (typeof process === 'undefined' || process.type === 'renderer' || process.browser === true || process.__nwjs) {\n\tmodule.exports = require('./browser.js');\n} else {\n\tmodule.exports = require('./node.js');\n}\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst fs_1 = require(\"fs\");\nconst debug_1 = __importDefault(require(\"debug\"));\nconst log = debug_1.default('@kwsites/file-exists');\nfunction check(path, isFile, isDirectory) {\n log(`checking %s`, path);\n try {\n const stat = fs_1.statSync(path);\n if (stat.isFile() && isFile) {\n log(`[OK] path represents a file`);\n return true;\n }\n if (stat.isDirectory() && isDirectory) {\n log(`[OK] path represents a directory`);\n return true;\n }\n log(`[FAIL] path represents something other than a file or directory`);\n return false;\n }\n catch (e) {\n if (e.code === 'ENOENT') {\n log(`[FAIL] path is not accessible: %o`, e);\n return false;\n }\n log(`[FATAL] %o`, e);\n throw e;\n }\n}\n/**\n * Synchronous validation of a path existing either as a file or as a directory.\n *\n * @param {string} path The path to check\n * @param {number} type One or both of the exported numeric constants\n */\nfunction exists(path, type = exports.READABLE) {\n return check(path, (type & exports.FILE) > 0, (type & exports.FOLDER) > 0);\n}\nexports.exists = exists;\n/**\n * Constant representing a file\n */\nexports.FILE = 1;\n/**\n * Constant representing a folder\n */\nexports.FOLDER = 2;\n/**\n * Constant representing either a file or a folder\n */\nexports.READABLE = exports.FILE + exports.FOLDER;\n//# sourceMappingURL=index.js.map","\"use strict\";\nfunction __export(m) {\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n}\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__export(require(\"./src\"));\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createDeferred = exports.deferred = void 0;\n/**\n * Creates a new `DeferredPromise`\n *\n * ```typescript\n import {deferred} from '@kwsites/promise-deferred`;\n ```\n */\nfunction deferred() {\n let done;\n let fail;\n let status = 'pending';\n const promise = new Promise((_done, _fail) => {\n done = _done;\n fail = _fail;\n });\n return {\n promise,\n done(result) {\n if (status === 'pending') {\n status = 'resolved';\n done(result);\n }\n },\n fail(error) {\n if (status === 'pending') {\n status = 'rejected';\n fail(error);\n }\n },\n get fulfilled() {\n return status !== 'pending';\n },\n get status() {\n return status;\n },\n };\n}\nexports.deferred = deferred;\n/**\n * Alias of the exported `deferred` function, to help consumers wanting to use `deferred` as the\n * local variable name rather than the factory import name, without needing to rename on import.\n *\n * ```typescript\n import {createDeferred} from '@kwsites/promise-deferred`;\n ```\n */\nexports.createDeferred = deferred;\n/**\n * Default export allows use as:\n *\n * ```typescript\n import deferred from '@kwsites/promise-deferred`;\n ```\n */\nexports.default = deferred;\n//# sourceMappingURL=index.js.map","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __esm = (fn, res) => function __init() {\n return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;\n};\nvar __commonJS = (cb, mod) => function __require() {\n return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;\n};\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/lib/args/pathspec.ts\nfunction pathspec(...paths) {\n const key = new String(paths);\n cache.set(key, paths);\n return key;\n}\nfunction isPathSpec(path) {\n return path instanceof String && cache.has(path);\n}\nfunction toPaths(pathSpec) {\n return cache.get(pathSpec) || [];\n}\nvar cache;\nvar init_pathspec = __esm({\n \"src/lib/args/pathspec.ts\"() {\n \"use strict\";\n cache = /* @__PURE__ */ new WeakMap();\n }\n});\n\n// src/lib/errors/git-error.ts\nvar GitError;\nvar init_git_error = __esm({\n \"src/lib/errors/git-error.ts\"() {\n \"use strict\";\n GitError = class extends Error {\n constructor(task, message) {\n super(message);\n this.task = task;\n Object.setPrototypeOf(this, new.target.prototype);\n }\n };\n }\n});\n\n// src/lib/errors/git-response-error.ts\nvar GitResponseError;\nvar init_git_response_error = __esm({\n \"src/lib/errors/git-response-error.ts\"() {\n \"use strict\";\n init_git_error();\n GitResponseError = class extends GitError {\n constructor(git, message) {\n super(void 0, message || String(git));\n this.git = git;\n }\n };\n }\n});\n\n// src/lib/errors/task-configuration-error.ts\nvar TaskConfigurationError;\nvar init_task_configuration_error = __esm({\n \"src/lib/errors/task-configuration-error.ts\"() {\n \"use strict\";\n init_git_error();\n TaskConfigurationError = class extends GitError {\n constructor(message) {\n super(void 0, message);\n }\n };\n }\n});\n\n// src/lib/utils/util.ts\nimport { Buffer as Buffer2 } from \"node:buffer\";\nimport { exists, FOLDER } from \"@kwsites/file-exists\";\nfunction asFunction(source) {\n if (typeof source !== \"function\") {\n return NOOP;\n }\n return source;\n}\nfunction isUserFunction(source) {\n return typeof source === \"function\" && source !== NOOP;\n}\nfunction splitOn(input, char) {\n const index = input.indexOf(char);\n if (index <= 0) {\n return [input, \"\"];\n }\n return [input.substr(0, index), input.substr(index + 1)];\n}\nfunction first(input, offset = 0) {\n return isArrayLike(input) && input.length > offset ? input[offset] : void 0;\n}\nfunction last(input, offset = 0) {\n if (isArrayLike(input) && input.length > offset) {\n return input[input.length - 1 - offset];\n }\n}\nfunction isArrayLike(input) {\n return filterHasLength(input);\n}\nfunction toLinesWithContent(input = \"\", trimmed2 = true, separator = \"\\n\") {\n return input.split(separator).reduce((output, line) => {\n const lineContent = trimmed2 ? line.trim() : line;\n if (lineContent) {\n output.push(lineContent);\n }\n return output;\n }, []);\n}\nfunction forEachLineWithContent(input, callback) {\n return toLinesWithContent(input, true).map((line) => callback(line));\n}\nfunction folderExists(path) {\n return exists(path, FOLDER);\n}\nfunction append(target, item) {\n if (Array.isArray(target)) {\n if (!target.includes(item)) {\n target.push(item);\n }\n } else {\n target.add(item);\n }\n return item;\n}\nfunction including(target, item) {\n if (Array.isArray(target) && !target.includes(item)) {\n target.push(item);\n }\n return target;\n}\nfunction remove(target, item) {\n if (Array.isArray(target)) {\n const index = target.indexOf(item);\n if (index >= 0) {\n target.splice(index, 1);\n }\n } else {\n target.delete(item);\n }\n return item;\n}\nfunction asArray(source) {\n return Array.isArray(source) ? source : [source];\n}\nfunction asCamelCase(str) {\n return str.replace(/[\\s-]+(.)/g, (_all, chr) => {\n return chr.toUpperCase();\n });\n}\nfunction asStringArray(source) {\n return asArray(source).map((item) => {\n return item instanceof String ? item : String(item);\n });\n}\nfunction asNumber(source, onNaN = 0) {\n if (source == null) {\n return onNaN;\n }\n const num = parseInt(source, 10);\n return Number.isNaN(num) ? onNaN : num;\n}\nfunction prefixedArray(input, prefix) {\n const output = [];\n for (let i = 0, max = input.length; i < max; i++) {\n output.push(prefix, input[i]);\n }\n return output;\n}\nfunction bufferToString(input) {\n return (Array.isArray(input) ? Buffer2.concat(input) : input).toString(\"utf-8\");\n}\nfunction pick(source, properties) {\n const out = {};\n properties.forEach((key) => {\n if (source[key] !== void 0) {\n out[key] = source[key];\n }\n });\n return out;\n}\nfunction delay(duration = 0) {\n return new Promise((done) => setTimeout(done, duration));\n}\nfunction orVoid(input) {\n if (input === false) {\n return void 0;\n }\n return input;\n}\nvar NULL, NOOP, objectToString;\nvar init_util = __esm({\n \"src/lib/utils/util.ts\"() {\n \"use strict\";\n init_argument_filters();\n NULL = \"\\0\";\n NOOP = () => {\n };\n objectToString = Object.prototype.toString.call.bind(Object.prototype.toString);\n }\n});\n\n// src/lib/utils/argument-filters.ts\nfunction filterType(input, filter, def) {\n if (filter(input)) {\n return input;\n }\n return arguments.length > 2 ? def : void 0;\n}\nfunction filterPrimitives(input, omit) {\n const type = isPathSpec(input) ? \"string\" : typeof input;\n return /number|string|boolean/.test(type) && (!omit || !omit.includes(type));\n}\nfunction filterPlainObject(input) {\n return !!input && objectToString(input) === \"[object Object]\";\n}\nfunction filterFunction(input) {\n return typeof input === \"function\";\n}\nvar filterArray, filterNumber, filterString, filterStringOrStringArray, filterHasLength;\nvar init_argument_filters = __esm({\n \"src/lib/utils/argument-filters.ts\"() {\n \"use strict\";\n init_pathspec();\n init_util();\n filterArray = (input) => {\n return Array.isArray(input);\n };\n filterNumber = (input) => {\n return typeof input === \"number\";\n };\n filterString = (input) => {\n return typeof input === \"string\";\n };\n filterStringOrStringArray = (input) => {\n return filterString(input) || Array.isArray(input) && input.every(filterString);\n };\n filterHasLength = (input) => {\n if (input == null || \"number|boolean|function\".includes(typeof input)) {\n return false;\n }\n return typeof input.length === \"number\";\n };\n }\n});\n\n// src/lib/utils/exit-codes.ts\nvar ExitCodes;\nvar init_exit_codes = __esm({\n \"src/lib/utils/exit-codes.ts\"() {\n \"use strict\";\n ExitCodes = /* @__PURE__ */ ((ExitCodes2) => {\n ExitCodes2[ExitCodes2[\"SUCCESS\"] = 0] = \"SUCCESS\";\n ExitCodes2[ExitCodes2[\"ERROR\"] = 1] = \"ERROR\";\n ExitCodes2[ExitCodes2[\"NOT_FOUND\"] = -2] = \"NOT_FOUND\";\n ExitCodes2[ExitCodes2[\"UNCLEAN\"] = 128] = \"UNCLEAN\";\n return ExitCodes2;\n })(ExitCodes || {});\n }\n});\n\n// src/lib/utils/git-output-streams.ts\nvar GitOutputStreams;\nvar init_git_output_streams = __esm({\n \"src/lib/utils/git-output-streams.ts\"() {\n \"use strict\";\n GitOutputStreams = class _GitOutputStreams {\n constructor(stdOut, stdErr) {\n this.stdOut = stdOut;\n this.stdErr = stdErr;\n }\n asStrings() {\n return new _GitOutputStreams(this.stdOut.toString(\"utf8\"), this.stdErr.toString(\"utf8\"));\n }\n };\n }\n});\n\n// src/lib/utils/line-parser.ts\nfunction useMatchesDefault() {\n throw new Error(`LineParser:useMatches not implemented`);\n}\nvar LineParser, RemoteLineParser;\nvar init_line_parser = __esm({\n \"src/lib/utils/line-parser.ts\"() {\n \"use strict\";\n LineParser = class {\n constructor(regExp, useMatches) {\n this.matches = [];\n this.useMatches = useMatchesDefault;\n this.parse = (line, target) => {\n this.resetMatches();\n if (!this._regExp.every((reg, index) => this.addMatch(reg, index, line(index)))) {\n return false;\n }\n return this.useMatches(target, this.prepareMatches()) !== false;\n };\n this._regExp = Array.isArray(regExp) ? regExp : [regExp];\n if (useMatches) {\n this.useMatches = useMatches;\n }\n }\n resetMatches() {\n this.matches.length = 0;\n }\n prepareMatches() {\n return this.matches;\n }\n addMatch(reg, index, line) {\n const matched = line && reg.exec(line);\n if (matched) {\n this.pushMatch(index, matched);\n }\n return !!matched;\n }\n pushMatch(_index, matched) {\n this.matches.push(...matched.slice(1));\n }\n };\n RemoteLineParser = class extends LineParser {\n addMatch(reg, index, line) {\n return /^remote:\\s/.test(String(line)) && super.addMatch(reg, index, line);\n }\n pushMatch(index, matched) {\n if (index > 0 || matched.length > 1) {\n super.pushMatch(index, matched);\n }\n }\n };\n }\n});\n\n// src/lib/utils/simple-git-options.ts\nfunction createInstanceConfig(...options) {\n const baseDir = process.cwd();\n const config = Object.assign(\n { baseDir, ...defaultOptions },\n ...options.filter((o) => typeof o === \"object\" && o)\n );\n config.baseDir = config.baseDir || baseDir;\n config.trimmed = config.trimmed === true;\n return config;\n}\nvar defaultOptions;\nvar init_simple_git_options = __esm({\n \"src/lib/utils/simple-git-options.ts\"() {\n \"use strict\";\n defaultOptions = {\n binary: \"git\",\n maxConcurrentProcesses: 5,\n config: [],\n trimmed: false\n };\n }\n});\n\n// src/lib/utils/task-options.ts\nfunction appendTaskOptions(options, commands = []) {\n if (!filterPlainObject(options)) {\n return commands;\n }\n return Object.keys(options).reduce((commands2, key) => {\n const value = options[key];\n if (isPathSpec(value)) {\n commands2.push(value);\n } else if (filterPrimitives(value, [\"boolean\"])) {\n commands2.push(key + \"=\" + value);\n } else if (Array.isArray(value)) {\n for (const v of value) {\n if (!filterPrimitives(v, [\"string\", \"number\"])) {\n commands2.push(key + \"=\" + v);\n }\n }\n } else {\n commands2.push(key);\n }\n return commands2;\n }, commands);\n}\nfunction getTrailingOptions(args, initialPrimitive = 0, objectOnly = false) {\n const command = [];\n for (let i = 0, max = initialPrimitive < 0 ? args.length : initialPrimitive; i < max; i++) {\n if (\"string|number\".includes(typeof args[i])) {\n command.push(String(args[i]));\n }\n }\n appendTaskOptions(trailingOptionsArgument(args), command);\n if (!objectOnly) {\n command.push(...trailingArrayArgument(args));\n }\n return command;\n}\nfunction trailingArrayArgument(args) {\n const hasTrailingCallback = typeof last(args) === \"function\";\n return asStringArray(filterType(last(args, hasTrailingCallback ? 1 : 0), filterArray, []));\n}\nfunction trailingOptionsArgument(args) {\n const hasTrailingCallback = filterFunction(last(args));\n return filterType(last(args, hasTrailingCallback ? 1 : 0), filterPlainObject);\n}\nfunction trailingFunctionArgument(args, includeNoop = true) {\n const callback = asFunction(last(args));\n return includeNoop || isUserFunction(callback) ? callback : void 0;\n}\nvar init_task_options = __esm({\n \"src/lib/utils/task-options.ts\"() {\n \"use strict\";\n init_argument_filters();\n init_util();\n init_pathspec();\n }\n});\n\n// src/lib/utils/task-parser.ts\nfunction callTaskParser(parser4, streams) {\n return parser4(streams.stdOut, streams.stdErr);\n}\nfunction parseStringResponse(result, parsers12, texts, trim = true) {\n asArray(texts).forEach((text) => {\n for (let lines = toLinesWithContent(text, trim), i = 0, max = lines.length; i < max; i++) {\n const line = (offset = 0) => {\n if (i + offset >= max) {\n return;\n }\n return lines[i + offset];\n };\n parsers12.some(({ parse }) => parse(line, result));\n }\n });\n return result;\n}\nvar init_task_parser = __esm({\n \"src/lib/utils/task-parser.ts\"() {\n \"use strict\";\n init_util();\n }\n});\n\n// src/lib/utils/index.ts\nvar utils_exports = {};\n__export(utils_exports, {\n ExitCodes: () => ExitCodes,\n GitOutputStreams: () => GitOutputStreams,\n LineParser: () => LineParser,\n NOOP: () => NOOP,\n NULL: () => NULL,\n RemoteLineParser: () => RemoteLineParser,\n append: () => append,\n appendTaskOptions: () => appendTaskOptions,\n asArray: () => asArray,\n asCamelCase: () => asCamelCase,\n asFunction: () => asFunction,\n asNumber: () => asNumber,\n asStringArray: () => asStringArray,\n bufferToString: () => bufferToString,\n callTaskParser: () => callTaskParser,\n createInstanceConfig: () => createInstanceConfig,\n delay: () => delay,\n filterArray: () => filterArray,\n filterFunction: () => filterFunction,\n filterHasLength: () => filterHasLength,\n filterNumber: () => filterNumber,\n filterPlainObject: () => filterPlainObject,\n filterPrimitives: () => filterPrimitives,\n filterString: () => filterString,\n filterStringOrStringArray: () => filterStringOrStringArray,\n filterType: () => filterType,\n first: () => first,\n folderExists: () => folderExists,\n forEachLineWithContent: () => forEachLineWithContent,\n getTrailingOptions: () => getTrailingOptions,\n including: () => including,\n isUserFunction: () => isUserFunction,\n last: () => last,\n objectToString: () => objectToString,\n orVoid: () => orVoid,\n parseStringResponse: () => parseStringResponse,\n pick: () => pick,\n prefixedArray: () => prefixedArray,\n remove: () => remove,\n splitOn: () => splitOn,\n toLinesWithContent: () => toLinesWithContent,\n trailingFunctionArgument: () => trailingFunctionArgument,\n trailingOptionsArgument: () => trailingOptionsArgument\n});\nvar init_utils = __esm({\n \"src/lib/utils/index.ts\"() {\n \"use strict\";\n init_argument_filters();\n init_exit_codes();\n init_git_output_streams();\n init_line_parser();\n init_simple_git_options();\n init_task_options();\n init_task_parser();\n init_util();\n }\n});\n\n// src/lib/tasks/check-is-repo.ts\nvar check_is_repo_exports = {};\n__export(check_is_repo_exports, {\n CheckRepoActions: () => CheckRepoActions,\n checkIsBareRepoTask: () => checkIsBareRepoTask,\n checkIsRepoRootTask: () => checkIsRepoRootTask,\n checkIsRepoTask: () => checkIsRepoTask\n});\nfunction checkIsRepoTask(action) {\n switch (action) {\n case \"bare\" /* BARE */:\n return checkIsBareRepoTask();\n case \"root\" /* IS_REPO_ROOT */:\n return checkIsRepoRootTask();\n }\n const commands = [\"rev-parse\", \"--is-inside-work-tree\"];\n return {\n commands,\n format: \"utf-8\",\n onError,\n parser\n };\n}\nfunction checkIsRepoRootTask() {\n const commands = [\"rev-parse\", \"--git-dir\"];\n return {\n commands,\n format: \"utf-8\",\n onError,\n parser(path) {\n return /^\\.(git)?$/.test(path.trim());\n }\n };\n}\nfunction checkIsBareRepoTask() {\n const commands = [\"rev-parse\", \"--is-bare-repository\"];\n return {\n commands,\n format: \"utf-8\",\n onError,\n parser\n };\n}\nfunction isNotRepoMessage(error) {\n return /(Not a git repository|Kein Git-Repository)/i.test(String(error));\n}\nvar CheckRepoActions, onError, parser;\nvar init_check_is_repo = __esm({\n \"src/lib/tasks/check-is-repo.ts\"() {\n \"use strict\";\n init_utils();\n CheckRepoActions = /* @__PURE__ */ ((CheckRepoActions2) => {\n CheckRepoActions2[\"BARE\"] = \"bare\";\n CheckRepoActions2[\"IN_TREE\"] = \"tree\";\n CheckRepoActions2[\"IS_REPO_ROOT\"] = \"root\";\n return CheckRepoActions2;\n })(CheckRepoActions || {});\n onError = ({ exitCode }, error, done, fail) => {\n if (exitCode === 128 /* UNCLEAN */ && isNotRepoMessage(error)) {\n return done(Buffer.from(\"false\"));\n }\n fail(error);\n };\n parser = (text) => {\n return text.trim() === \"true\";\n };\n }\n});\n\n// src/lib/responses/CleanSummary.ts\nfunction cleanSummaryParser(dryRun, text) {\n const summary = new CleanResponse(dryRun);\n const regexp = dryRun ? dryRunRemovalRegexp : removalRegexp;\n toLinesWithContent(text).forEach((line) => {\n const removed = line.replace(regexp, \"\");\n summary.paths.push(removed);\n (isFolderRegexp.test(removed) ? summary.folders : summary.files).push(removed);\n });\n return summary;\n}\nvar CleanResponse, removalRegexp, dryRunRemovalRegexp, isFolderRegexp;\nvar init_CleanSummary = __esm({\n \"src/lib/responses/CleanSummary.ts\"() {\n \"use strict\";\n init_utils();\n CleanResponse = class {\n constructor(dryRun) {\n this.dryRun = dryRun;\n this.paths = [];\n this.files = [];\n this.folders = [];\n }\n };\n removalRegexp = /^[a-z]+\\s*/i;\n dryRunRemovalRegexp = /^[a-z]+\\s+[a-z]+\\s*/i;\n isFolderRegexp = /\\/$/;\n }\n});\n\n// src/lib/tasks/task.ts\nvar task_exports = {};\n__export(task_exports, {\n EMPTY_COMMANDS: () => EMPTY_COMMANDS,\n adhocExecTask: () => adhocExecTask,\n configurationErrorTask: () => configurationErrorTask,\n isBufferTask: () => isBufferTask,\n isEmptyTask: () => isEmptyTask,\n straightThroughBufferTask: () => straightThroughBufferTask,\n straightThroughStringTask: () => straightThroughStringTask\n});\nfunction adhocExecTask(parser4) {\n return {\n commands: EMPTY_COMMANDS,\n format: \"empty\",\n parser: parser4\n };\n}\nfunction configurationErrorTask(error) {\n return {\n commands: EMPTY_COMMANDS,\n format: \"empty\",\n parser() {\n throw typeof error === \"string\" ? new TaskConfigurationError(error) : error;\n }\n };\n}\nfunction straightThroughStringTask(commands, trimmed2 = false) {\n return {\n commands,\n format: \"utf-8\",\n parser(text) {\n return trimmed2 ? String(text).trim() : text;\n }\n };\n}\nfunction straightThroughBufferTask(commands) {\n return {\n commands,\n format: \"buffer\",\n parser(buffer) {\n return buffer;\n }\n };\n}\nfunction isBufferTask(task) {\n return task.format === \"buffer\";\n}\nfunction isEmptyTask(task) {\n return task.format === \"empty\" || !task.commands.length;\n}\nvar EMPTY_COMMANDS;\nvar init_task = __esm({\n \"src/lib/tasks/task.ts\"() {\n \"use strict\";\n init_task_configuration_error();\n EMPTY_COMMANDS = [];\n }\n});\n\n// src/lib/tasks/clean.ts\nvar clean_exports = {};\n__export(clean_exports, {\n CONFIG_ERROR_INTERACTIVE_MODE: () => CONFIG_ERROR_INTERACTIVE_MODE,\n CONFIG_ERROR_MODE_REQUIRED: () => CONFIG_ERROR_MODE_REQUIRED,\n CONFIG_ERROR_UNKNOWN_OPTION: () => CONFIG_ERROR_UNKNOWN_OPTION,\n CleanOptions: () => CleanOptions,\n cleanTask: () => cleanTask,\n cleanWithOptionsTask: () => cleanWithOptionsTask,\n isCleanOptionsArray: () => isCleanOptionsArray\n});\nfunction cleanWithOptionsTask(mode, customArgs) {\n const { cleanMode, options, valid } = getCleanOptions(mode);\n if (!cleanMode) {\n return configurationErrorTask(CONFIG_ERROR_MODE_REQUIRED);\n }\n if (!valid.options) {\n return configurationErrorTask(CONFIG_ERROR_UNKNOWN_OPTION + JSON.stringify(mode));\n }\n options.push(...customArgs);\n if (options.some(isInteractiveMode)) {\n return configurationErrorTask(CONFIG_ERROR_INTERACTIVE_MODE);\n }\n return cleanTask(cleanMode, options);\n}\nfunction cleanTask(mode, customArgs) {\n const commands = [\"clean\", `-${mode}`, ...customArgs];\n return {\n commands,\n format: \"utf-8\",\n parser(text) {\n return cleanSummaryParser(mode === \"n\" /* DRY_RUN */, text);\n }\n };\n}\nfunction isCleanOptionsArray(input) {\n return Array.isArray(input) && input.every((test) => CleanOptionValues.has(test));\n}\nfunction getCleanOptions(input) {\n let cleanMode;\n let options = [];\n let valid = { cleanMode: false, options: true };\n input.replace(/[^a-z]i/g, \"\").split(\"\").forEach((char) => {\n if (isCleanMode(char)) {\n cleanMode = char;\n valid.cleanMode = true;\n } else {\n valid.options = valid.options && isKnownOption(options[options.length] = `-${char}`);\n }\n });\n return {\n cleanMode,\n options,\n valid\n };\n}\nfunction isCleanMode(cleanMode) {\n return cleanMode === \"f\" /* FORCE */ || cleanMode === \"n\" /* DRY_RUN */;\n}\nfunction isKnownOption(option) {\n return /^-[a-z]$/i.test(option) && CleanOptionValues.has(option.charAt(1));\n}\nfunction isInteractiveMode(option) {\n if (/^-[^\\-]/.test(option)) {\n return option.indexOf(\"i\") > 0;\n }\n return option === \"--interactive\";\n}\nvar CONFIG_ERROR_INTERACTIVE_MODE, CONFIG_ERROR_MODE_REQUIRED, CONFIG_ERROR_UNKNOWN_OPTION, CleanOptions, CleanOptionValues;\nvar init_clean = __esm({\n \"src/lib/tasks/clean.ts\"() {\n \"use strict\";\n init_CleanSummary();\n init_utils();\n init_task();\n CONFIG_ERROR_INTERACTIVE_MODE = \"Git clean interactive mode is not supported\";\n CONFIG_ERROR_MODE_REQUIRED = 'Git clean mode parameter (\"n\" or \"f\") is required';\n CONFIG_ERROR_UNKNOWN_OPTION = \"Git clean unknown option found in: \";\n CleanOptions = /* @__PURE__ */ ((CleanOptions2) => {\n CleanOptions2[\"DRY_RUN\"] = \"n\";\n CleanOptions2[\"FORCE\"] = \"f\";\n CleanOptions2[\"IGNORED_INCLUDED\"] = \"x\";\n CleanOptions2[\"IGNORED_ONLY\"] = \"X\";\n CleanOptions2[\"EXCLUDING\"] = \"e\";\n CleanOptions2[\"QUIET\"] = \"q\";\n CleanOptions2[\"RECURSIVE\"] = \"d\";\n return CleanOptions2;\n })(CleanOptions || {});\n CleanOptionValues = /* @__PURE__ */ new Set([\n \"i\",\n ...asStringArray(Object.values(CleanOptions))\n ]);\n }\n});\n\n// src/lib/responses/ConfigList.ts\nfunction configListParser(text) {\n const config = new ConfigList();\n for (const item of configParser(text)) {\n config.addValue(item.file, String(item.key), item.value);\n }\n return config;\n}\nfunction configGetParser(text, key) {\n let value = null;\n const values = [];\n const scopes = /* @__PURE__ */ new Map();\n for (const item of configParser(text, key)) {\n if (item.key !== key) {\n continue;\n }\n values.push(value = item.value);\n if (!scopes.has(item.file)) {\n scopes.set(item.file, []);\n }\n scopes.get(item.file).push(value);\n }\n return {\n key,\n paths: Array.from(scopes.keys()),\n scopes,\n value,\n values\n };\n}\nfunction configFilePath(filePath) {\n return filePath.replace(/^(file):/, \"\");\n}\nfunction* configParser(text, requestedKey = null) {\n const lines = text.split(\"\\0\");\n for (let i = 0, max = lines.length - 1; i < max; ) {\n const file = configFilePath(lines[i++]);\n let value = lines[i++];\n let key = requestedKey;\n if (value.includes(\"\\n\")) {\n const line = splitOn(value, \"\\n\");\n key = line[0];\n value = line[1];\n }\n yield { file, key, value };\n }\n}\nvar ConfigList;\nvar init_ConfigList = __esm({\n \"src/lib/responses/ConfigList.ts\"() {\n \"use strict\";\n init_utils();\n ConfigList = class {\n constructor() {\n this.files = [];\n this.values = /* @__PURE__ */ Object.create(null);\n }\n get all() {\n if (!this._all) {\n this._all = this.files.reduce((all, file) => {\n return Object.assign(all, this.values[file]);\n }, {});\n }\n return this._all;\n }\n addFile(file) {\n if (!(file in this.values)) {\n const latest = last(this.files);\n this.values[file] = latest ? Object.create(this.values[latest]) : {};\n this.files.push(file);\n }\n return this.values[file];\n }\n addValue(file, key, value) {\n const values = this.addFile(file);\n if (!Object.hasOwn(values, key)) {\n values[key] = value;\n } else if (Array.isArray(values[key])) {\n values[key].push(value);\n } else {\n values[key] = [values[key], value];\n }\n this._all = void 0;\n }\n };\n }\n});\n\n// src/lib/tasks/config.ts\nfunction asConfigScope(scope, fallback) {\n if (typeof scope === \"string\" && Object.hasOwn(GitConfigScope, scope)) {\n return scope;\n }\n return fallback;\n}\nfunction addConfigTask(key, value, append2, scope) {\n const commands = [\"config\", `--${scope}`];\n if (append2) {\n commands.push(\"--add\");\n }\n commands.push(key, value);\n return {\n commands,\n format: \"utf-8\",\n parser(text) {\n return text;\n }\n };\n}\nfunction getConfigTask(key, scope) {\n const commands = [\"config\", \"--null\", \"--show-origin\", \"--get-all\", key];\n if (scope) {\n commands.splice(1, 0, `--${scope}`);\n }\n return {\n commands,\n format: \"utf-8\",\n parser(text) {\n return configGetParser(text, key);\n }\n };\n}\nfunction listConfigTask(scope) {\n const commands = [\"config\", \"--list\", \"--show-origin\", \"--null\"];\n if (scope) {\n commands.push(`--${scope}`);\n }\n return {\n commands,\n format: \"utf-8\",\n parser(text) {\n return configListParser(text);\n }\n };\n}\nfunction config_default() {\n return {\n addConfig(key, value, ...rest) {\n return this._runTask(\n addConfigTask(\n key,\n value,\n rest[0] === true,\n asConfigScope(rest[1], \"local\" /* local */)\n ),\n trailingFunctionArgument(arguments)\n );\n },\n getConfig(key, scope) {\n return this._runTask(\n getConfigTask(key, asConfigScope(scope, void 0)),\n trailingFunctionArgument(arguments)\n );\n },\n listConfig(...rest) {\n return this._runTask(\n listConfigTask(asConfigScope(rest[0], void 0)),\n trailingFunctionArgument(arguments)\n );\n }\n };\n}\nvar GitConfigScope;\nvar init_config = __esm({\n \"src/lib/tasks/config.ts\"() {\n \"use strict\";\n init_ConfigList();\n init_utils();\n GitConfigScope = /* @__PURE__ */ ((GitConfigScope2) => {\n GitConfigScope2[\"system\"] = \"system\";\n GitConfigScope2[\"global\"] = \"global\";\n GitConfigScope2[\"local\"] = \"local\";\n GitConfigScope2[\"worktree\"] = \"worktree\";\n return GitConfigScope2;\n })(GitConfigScope || {});\n }\n});\n\n// src/lib/tasks/diff-name-status.ts\nfunction isDiffNameStatus(input) {\n return diffNameStatus.has(input);\n}\nvar DiffNameStatus, diffNameStatus;\nvar init_diff_name_status = __esm({\n \"src/lib/tasks/diff-name-status.ts\"() {\n \"use strict\";\n DiffNameStatus = /* @__PURE__ */ ((DiffNameStatus2) => {\n DiffNameStatus2[\"ADDED\"] = \"A\";\n DiffNameStatus2[\"COPIED\"] = \"C\";\n DiffNameStatus2[\"DELETED\"] = \"D\";\n DiffNameStatus2[\"MODIFIED\"] = \"M\";\n DiffNameStatus2[\"RENAMED\"] = \"R\";\n DiffNameStatus2[\"CHANGED\"] = \"T\";\n DiffNameStatus2[\"UNMERGED\"] = \"U\";\n DiffNameStatus2[\"UNKNOWN\"] = \"X\";\n DiffNameStatus2[\"BROKEN\"] = \"B\";\n return DiffNameStatus2;\n })(DiffNameStatus || {});\n diffNameStatus = new Set(Object.values(DiffNameStatus));\n }\n});\n\n// src/lib/tasks/grep.ts\nfunction grepQueryBuilder(...params) {\n return new GrepQuery().param(...params);\n}\nfunction parseGrep(grep) {\n const paths = /* @__PURE__ */ new Set();\n const results = {};\n forEachLineWithContent(grep, (input) => {\n const [path, line, preview] = input.split(NULL);\n paths.add(path);\n (results[path] = results[path] || []).push({\n line: asNumber(line),\n path,\n preview\n });\n });\n return {\n paths,\n results\n };\n}\nfunction grep_default() {\n return {\n grep(searchTerm) {\n const then = trailingFunctionArgument(arguments);\n const options = getTrailingOptions(arguments);\n for (const option of disallowedOptions) {\n if (options.includes(option)) {\n return this._runTask(\n configurationErrorTask(`git.grep: use of \"${option}\" is not supported.`),\n then\n );\n }\n }\n if (typeof searchTerm === \"string\") {\n searchTerm = grepQueryBuilder().param(searchTerm);\n }\n const commands = [\"grep\", \"--null\", \"-n\", \"--full-name\", ...options, ...searchTerm];\n return this._runTask(\n {\n commands,\n format: \"utf-8\",\n parser(stdOut) {\n return parseGrep(stdOut);\n }\n },\n then\n );\n }\n };\n}\nvar disallowedOptions, Query, _a, GrepQuery;\nvar init_grep = __esm({\n \"src/lib/tasks/grep.ts\"() {\n \"use strict\";\n init_utils();\n init_task();\n disallowedOptions = [\"-h\"];\n Query = Symbol(\"grepQuery\");\n GrepQuery = class {\n constructor() {\n this[_a] = [];\n }\n *[(_a = Query, Symbol.iterator)]() {\n for (const query of this[Query]) {\n yield query;\n }\n }\n and(...and) {\n and.length && this[Query].push(\"--and\", \"(\", ...prefixedArray(and, \"-e\"), \")\");\n return this;\n }\n param(...param) {\n this[Query].push(...prefixedArray(param, \"-e\"));\n return this;\n }\n };\n }\n});\n\n// src/lib/tasks/reset.ts\nvar reset_exports = {};\n__export(reset_exports, {\n ResetMode: () => ResetMode,\n getResetMode: () => getResetMode,\n resetTask: () => resetTask\n});\nfunction resetTask(mode, customArgs) {\n const commands = [\"reset\"];\n if (isValidResetMode(mode)) {\n commands.push(`--${mode}`);\n }\n commands.push(...customArgs);\n return straightThroughStringTask(commands);\n}\nfunction getResetMode(mode) {\n if (isValidResetMode(mode)) {\n return mode;\n }\n switch (typeof mode) {\n case \"string\":\n case \"undefined\":\n return \"soft\" /* SOFT */;\n }\n return;\n}\nfunction isValidResetMode(mode) {\n return typeof mode === \"string\" && validResetModes.includes(mode);\n}\nvar ResetMode, validResetModes;\nvar init_reset = __esm({\n \"src/lib/tasks/reset.ts\"() {\n \"use strict\";\n init_utils();\n init_task();\n ResetMode = /* @__PURE__ */ ((ResetMode2) => {\n ResetMode2[\"MIXED\"] = \"mixed\";\n ResetMode2[\"SOFT\"] = \"soft\";\n ResetMode2[\"HARD\"] = \"hard\";\n ResetMode2[\"MERGE\"] = \"merge\";\n ResetMode2[\"KEEP\"] = \"keep\";\n return ResetMode2;\n })(ResetMode || {});\n validResetModes = asStringArray(Object.values(ResetMode));\n }\n});\n\n// src/lib/git-logger.ts\nimport debug from \"debug\";\nfunction createLog() {\n return debug(\"simple-git\");\n}\nfunction prefixedLogger(to, prefix, forward) {\n if (!prefix || !String(prefix).replace(/\\s*/, \"\")) {\n return !forward ? to : (message, ...args) => {\n to(message, ...args);\n forward(message, ...args);\n };\n }\n return (message, ...args) => {\n to(`%s ${message}`, prefix, ...args);\n if (forward) {\n forward(message, ...args);\n }\n };\n}\nfunction childLoggerName(name, childDebugger, { namespace: parentNamespace }) {\n if (typeof name === \"string\") {\n return name;\n }\n const childNamespace = childDebugger && childDebugger.namespace || \"\";\n if (childNamespace.startsWith(parentNamespace)) {\n return childNamespace.substr(parentNamespace.length + 1);\n }\n return childNamespace || parentNamespace;\n}\nfunction createLogger(label, verbose, initialStep, infoDebugger = createLog()) {\n const labelPrefix = label && `[${label}]` || \"\";\n const spawned = [];\n const debugDebugger = typeof verbose === \"string\" ? infoDebugger.extend(verbose) : verbose;\n const key = childLoggerName(filterType(verbose, filterString), debugDebugger, infoDebugger);\n return step(initialStep);\n function sibling(name, initial) {\n return append(\n spawned,\n createLogger(label, key.replace(/^[^:]+/, name), initial, infoDebugger)\n );\n }\n function step(phase) {\n const stepPrefix = phase && `[${phase}]` || \"\";\n const debug2 = debugDebugger && prefixedLogger(debugDebugger, stepPrefix) || NOOP;\n const info = prefixedLogger(infoDebugger, `${labelPrefix} ${stepPrefix}`, debug2);\n return Object.assign(debugDebugger ? debug2 : info, {\n label,\n sibling,\n info,\n step\n });\n }\n}\nvar init_git_logger = __esm({\n \"src/lib/git-logger.ts\"() {\n \"use strict\";\n init_utils();\n debug.formatters.L = (value) => String(filterHasLength(value) ? value.length : \"-\");\n debug.formatters.B = (value) => {\n if (Buffer.isBuffer(value)) {\n return value.toString(\"utf8\");\n }\n return objectToString(value);\n };\n }\n});\n\n// src/lib/runners/tasks-pending-queue.ts\nvar TasksPendingQueue;\nvar init_tasks_pending_queue = __esm({\n \"src/lib/runners/tasks-pending-queue.ts\"() {\n \"use strict\";\n init_git_error();\n init_git_logger();\n TasksPendingQueue = class _TasksPendingQueue {\n constructor(logLabel = \"GitExecutor\") {\n this.logLabel = logLabel;\n this._queue = /* @__PURE__ */ new Map();\n }\n withProgress(task) {\n return this._queue.get(task);\n }\n createProgress(task) {\n const name = _TasksPendingQueue.getName(task.commands[0]);\n const logger = createLogger(this.logLabel, name);\n return {\n task,\n logger,\n name\n };\n }\n push(task) {\n const progress = this.createProgress(task);\n progress.logger(\"Adding task to the queue, commands = %o\", task.commands);\n this._queue.set(task, progress);\n return progress;\n }\n fatal(err) {\n for (const [task, { logger }] of Array.from(this._queue.entries())) {\n if (task === err.task) {\n logger.info(`Failed %o`, err);\n logger(\n `Fatal exception, any as-yet un-started tasks run through this executor will not be attempted`\n );\n } else {\n logger.info(\n `A fatal exception occurred in a previous task, the queue has been purged: %o`,\n err.message\n );\n }\n this.complete(task);\n }\n if (this._queue.size !== 0) {\n throw new Error(`Queue size should be zero after fatal: ${this._queue.size}`);\n }\n }\n complete(task) {\n const progress = this.withProgress(task);\n if (progress) {\n this._queue.delete(task);\n }\n }\n attempt(task) {\n const progress = this.withProgress(task);\n if (!progress) {\n throw new GitError(void 0, \"TasksPendingQueue: attempt called for an unknown task\");\n }\n progress.logger(\"Starting task\");\n return progress;\n }\n static getName(name = \"empty\") {\n return `task:${name}:${++_TasksPendingQueue.counter}`;\n }\n static {\n this.counter = 0;\n }\n };\n }\n});\n\n// src/lib/runners/git-executor-chain.ts\nimport { spawn } from \"child_process\";\nfunction pluginContext(task, commands) {\n return {\n method: first(task.commands) || \"\",\n commands\n };\n}\nfunction onErrorReceived(target, logger) {\n return (err) => {\n logger(`[ERROR] child process exception %o`, err);\n target.push(Buffer.from(String(err.stack), \"ascii\"));\n };\n}\nfunction onDataReceived(target, name, logger, output) {\n return (buffer) => {\n logger(`%s received %L bytes`, name, buffer);\n output(`%B`, buffer);\n target.push(buffer);\n };\n}\nvar GitExecutorChain;\nvar init_git_executor_chain = __esm({\n \"src/lib/runners/git-executor-chain.ts\"() {\n \"use strict\";\n init_git_error();\n init_task();\n init_utils();\n init_tasks_pending_queue();\n GitExecutorChain = class {\n constructor(_executor, _scheduler, _plugins) {\n this._executor = _executor;\n this._scheduler = _scheduler;\n this._plugins = _plugins;\n this._chain = Promise.resolve();\n this._queue = new TasksPendingQueue();\n }\n get cwd() {\n return this._cwd || this._executor.cwd;\n }\n set cwd(cwd) {\n this._cwd = cwd;\n }\n get env() {\n return this._executor.env;\n }\n get outputHandler() {\n return this._executor.outputHandler;\n }\n chain() {\n return this;\n }\n push(task) {\n this._queue.push(task);\n return this._chain = this._chain.then(() => this.attemptTask(task));\n }\n async attemptTask(task) {\n const onScheduleComplete = await this._scheduler.next();\n const onQueueComplete = () => this._queue.complete(task);\n try {\n const { logger } = this._queue.attempt(task);\n return await (isEmptyTask(task) ? this.attemptEmptyTask(task, logger) : this.attemptRemoteTask(task, logger));\n } catch (e) {\n throw this.onFatalException(task, e);\n } finally {\n onQueueComplete();\n onScheduleComplete();\n }\n }\n onFatalException(task, e) {\n const gitError = e instanceof GitError ? Object.assign(e, { task }) : new GitError(task, e && String(e));\n this._chain = Promise.resolve();\n this._queue.fatal(gitError);\n return gitError;\n }\n async attemptRemoteTask(task, logger) {\n const binary = this._plugins.exec(\"spawn.binary\", \"\", pluginContext(task, task.commands));\n const args = this._plugins.exec(\n \"spawn.args\",\n [...task.commands],\n pluginContext(task, task.commands)\n );\n const raw = await this.gitResponse(\n task,\n binary,\n args,\n this.outputHandler,\n logger.step(\"SPAWN\")\n );\n const outputStreams = await this.handleTaskData(task, args, raw, logger.step(\"HANDLE\"));\n logger(`passing response to task's parser as a %s`, task.format);\n if (isBufferTask(task)) {\n return callTaskParser(task.parser, outputStreams);\n }\n return callTaskParser(task.parser, outputStreams.asStrings());\n }\n async attemptEmptyTask(task, logger) {\n logger(`empty task bypassing child process to call to task's parser`);\n return task.parser(this);\n }\n handleTaskData(task, args, result, logger) {\n const { exitCode, rejection, stdOut, stdErr } = result;\n return new Promise((done, fail) => {\n logger(`Preparing to handle process response exitCode=%d stdOut=`, exitCode);\n const { error } = this._plugins.exec(\n \"task.error\",\n { error: rejection },\n {\n ...pluginContext(task, args),\n ...result\n }\n );\n if (error && task.onError) {\n logger.info(`exitCode=%s handling with custom error handler`);\n return task.onError(\n result,\n error,\n (newStdOut) => {\n logger.info(`custom error handler treated as success`);\n logger(`custom error returned a %s`, objectToString(newStdOut));\n done(\n new GitOutputStreams(\n Array.isArray(newStdOut) ? Buffer.concat(newStdOut) : newStdOut,\n Buffer.concat(stdErr)\n )\n );\n },\n fail\n );\n }\n if (error) {\n logger.info(\n `handling as error: exitCode=%s stdErr=%s rejection=%o`,\n exitCode,\n stdErr.length,\n rejection\n );\n return fail(error);\n }\n logger.info(`retrieving task output complete`);\n done(new GitOutputStreams(Buffer.concat(stdOut), Buffer.concat(stdErr)));\n });\n }\n async gitResponse(task, command, args, outputHandler, logger) {\n const outputLogger = logger.sibling(\"output\");\n const spawnOptions = this._plugins.exec(\n \"spawn.options\",\n {\n cwd: this.cwd,\n env: this.env,\n windowsHide: true\n },\n pluginContext(task, task.commands)\n );\n return new Promise((done) => {\n const stdOut = [];\n const stdErr = [];\n logger.info(`%s %o`, command, args);\n logger(\"%O\", spawnOptions);\n let rejection = this._beforeSpawn(task, args);\n if (rejection) {\n return done({\n stdOut,\n stdErr,\n exitCode: 9901,\n rejection\n });\n }\n this._plugins.exec(\"spawn.before\", void 0, {\n ...pluginContext(task, args),\n kill(reason) {\n rejection = reason || rejection;\n }\n });\n const spawned = spawn(command, args, spawnOptions);\n spawned.stdout.on(\n \"data\",\n onDataReceived(stdOut, \"stdOut\", logger, outputLogger.step(\"stdOut\"))\n );\n spawned.stderr.on(\n \"data\",\n onDataReceived(stdErr, \"stdErr\", logger, outputLogger.step(\"stdErr\"))\n );\n spawned.on(\"error\", onErrorReceived(stdErr, logger));\n if (outputHandler) {\n logger(`Passing child process stdOut/stdErr to custom outputHandler`);\n outputHandler(command, spawned.stdout, spawned.stderr, [...args]);\n }\n this._plugins.exec(\"spawn.after\", void 0, {\n ...pluginContext(task, args),\n spawned,\n close(exitCode, reason) {\n done({\n stdOut,\n stdErr,\n exitCode,\n rejection: rejection || reason\n });\n },\n kill(reason) {\n if (spawned.killed) {\n return;\n }\n rejection = reason;\n spawned.kill(\"SIGINT\");\n }\n });\n });\n }\n _beforeSpawn(task, args) {\n let rejection;\n this._plugins.exec(\"spawn.before\", void 0, {\n ...pluginContext(task, args),\n kill(reason) {\n rejection = reason || rejection;\n }\n });\n return rejection;\n }\n };\n }\n});\n\n// src/lib/runners/git-executor.ts\nvar git_executor_exports = {};\n__export(git_executor_exports, {\n GitExecutor: () => GitExecutor\n});\nvar GitExecutor;\nvar init_git_executor = __esm({\n \"src/lib/runners/git-executor.ts\"() {\n \"use strict\";\n init_git_executor_chain();\n GitExecutor = class {\n constructor(cwd, _scheduler, _plugins) {\n this.cwd = cwd;\n this._scheduler = _scheduler;\n this._plugins = _plugins;\n this._chain = new GitExecutorChain(this, this._scheduler, this._plugins);\n }\n chain() {\n return new GitExecutorChain(this, this._scheduler, this._plugins);\n }\n push(task) {\n return this._chain.push(task);\n }\n };\n }\n});\n\n// src/lib/task-callback.ts\nfunction taskCallback(task, response, callback = NOOP) {\n const onSuccess = (data) => {\n callback(null, data);\n };\n const onError2 = (err) => {\n if (err?.task === task) {\n callback(\n err instanceof GitResponseError ? addDeprecationNoticeToError(err) : err,\n void 0\n );\n }\n };\n response.then(onSuccess, onError2);\n}\nfunction addDeprecationNoticeToError(err) {\n let log = (name) => {\n console.warn(\n `simple-git deprecation notice: accessing GitResponseError.${name} should be GitResponseError.git.${name}, this will no longer be available in version 3`\n );\n log = NOOP;\n };\n return Object.create(err, Object.getOwnPropertyNames(err.git).reduce(descriptorReducer, {}));\n function descriptorReducer(all, name) {\n if (name in err) {\n return all;\n }\n all[name] = {\n enumerable: false,\n configurable: false,\n get() {\n log(name);\n return err.git[name];\n }\n };\n return all;\n }\n}\nvar init_task_callback = __esm({\n \"src/lib/task-callback.ts\"() {\n \"use strict\";\n init_git_response_error();\n init_utils();\n }\n});\n\n// src/lib/tasks/change-working-directory.ts\nfunction changeWorkingDirectoryTask(directory, root) {\n return adhocExecTask((instance) => {\n if (!folderExists(directory)) {\n throw new Error(`Git.cwd: cannot change to non-directory \"${directory}\"`);\n }\n return (root || instance).cwd = directory;\n });\n}\nvar init_change_working_directory = __esm({\n \"src/lib/tasks/change-working-directory.ts\"() {\n \"use strict\";\n init_utils();\n init_task();\n }\n});\n\n// src/lib/tasks/checkout.ts\nfunction checkoutTask(args) {\n const commands = [\"checkout\", ...args];\n if (commands[1] === \"-b\" && commands.includes(\"-B\")) {\n commands[1] = remove(commands, \"-B\");\n }\n return straightThroughStringTask(commands);\n}\nfunction checkout_default() {\n return {\n checkout() {\n return this._runTask(\n checkoutTask(getTrailingOptions(arguments, 1)),\n trailingFunctionArgument(arguments)\n );\n },\n checkoutBranch(branchName, startPoint) {\n return this._runTask(\n checkoutTask([\"-b\", branchName, startPoint, ...getTrailingOptions(arguments)]),\n trailingFunctionArgument(arguments)\n );\n },\n checkoutLocalBranch(branchName) {\n return this._runTask(\n checkoutTask([\"-b\", branchName, ...getTrailingOptions(arguments)]),\n trailingFunctionArgument(arguments)\n );\n }\n };\n}\nvar init_checkout = __esm({\n \"src/lib/tasks/checkout.ts\"() {\n \"use strict\";\n init_utils();\n init_task();\n }\n});\n\n// src/lib/tasks/count-objects.ts\nfunction countObjectsResponse() {\n return {\n count: 0,\n garbage: 0,\n inPack: 0,\n packs: 0,\n prunePackable: 0,\n size: 0,\n sizeGarbage: 0,\n sizePack: 0\n };\n}\nfunction count_objects_default() {\n return {\n countObjects() {\n return this._runTask({\n commands: [\"count-objects\", \"--verbose\"],\n format: \"utf-8\",\n parser(stdOut) {\n return parseStringResponse(countObjectsResponse(), [parser2], stdOut);\n }\n });\n }\n };\n}\nvar parser2;\nvar init_count_objects = __esm({\n \"src/lib/tasks/count-objects.ts\"() {\n \"use strict\";\n init_utils();\n parser2 = new LineParser(\n /([a-z-]+): (\\d+)$/,\n (result, [key, value]) => {\n const property = asCamelCase(key);\n if (Object.hasOwn(result, property)) {\n result[property] = asNumber(value);\n }\n }\n );\n }\n});\n\n// src/lib/parsers/parse-commit.ts\nfunction parseCommitResult(stdOut) {\n const result = {\n author: null,\n branch: \"\",\n commit: \"\",\n root: false,\n summary: {\n changes: 0,\n insertions: 0,\n deletions: 0\n }\n };\n return parseStringResponse(result, parsers, stdOut);\n}\nvar parsers;\nvar init_parse_commit = __esm({\n \"src/lib/parsers/parse-commit.ts\"() {\n \"use strict\";\n init_utils();\n parsers = [\n new LineParser(/^\\[([^\\s]+)( \\([^)]+\\))? ([^\\]]+)/, (result, [branch, root, commit]) => {\n result.branch = branch;\n result.commit = commit;\n result.root = !!root;\n }),\n new LineParser(/\\s*Author:\\s(.+)/i, (result, [author]) => {\n const parts = author.split(\"<\");\n const email = parts.pop();\n if (!email || !email.includes(\"@\")) {\n return;\n }\n result.author = {\n email: email.substr(0, email.length - 1),\n name: parts.join(\"<\").trim()\n };\n }),\n new LineParser(\n /(\\d+)[^,]*(?:,\\s*(\\d+)[^,]*)(?:,\\s*(\\d+))/g,\n (result, [changes, insertions, deletions]) => {\n result.summary.changes = parseInt(changes, 10) || 0;\n result.summary.insertions = parseInt(insertions, 10) || 0;\n result.summary.deletions = parseInt(deletions, 10) || 0;\n }\n ),\n new LineParser(\n /^(\\d+)[^,]*(?:,\\s*(\\d+)[^(]+\\(([+-]))?/,\n (result, [changes, lines, direction]) => {\n result.summary.changes = parseInt(changes, 10) || 0;\n const count = parseInt(lines, 10) || 0;\n if (direction === \"-\") {\n result.summary.deletions = count;\n } else if (direction === \"+\") {\n result.summary.insertions = count;\n }\n }\n )\n ];\n }\n});\n\n// src/lib/tasks/commit.ts\nfunction commitTask(message, files, customArgs) {\n const commands = [\n \"-c\",\n \"core.abbrev=40\",\n \"commit\",\n ...prefixedArray(message, \"-m\"),\n ...files,\n ...customArgs\n ];\n return {\n commands,\n format: \"utf-8\",\n parser: parseCommitResult\n };\n}\nfunction commit_default() {\n return {\n commit(message, ...rest) {\n const next = trailingFunctionArgument(arguments);\n const task = rejectDeprecatedSignatures(message) || commitTask(\n asArray(message),\n asArray(filterType(rest[0], filterStringOrStringArray, [])),\n [\n ...asStringArray(filterType(rest[1], filterArray, [])),\n ...getTrailingOptions(arguments, 0, true)\n ]\n );\n return this._runTask(task, next);\n }\n };\n function rejectDeprecatedSignatures(message) {\n return !filterStringOrStringArray(message) && configurationErrorTask(\n `git.commit: requires the commit message to be supplied as a string/string[]`\n );\n }\n}\nvar init_commit = __esm({\n \"src/lib/tasks/commit.ts\"() {\n \"use strict\";\n init_parse_commit();\n init_utils();\n init_task();\n }\n});\n\n// src/lib/tasks/first-commit.ts\nfunction first_commit_default() {\n return {\n firstCommit() {\n return this._runTask(\n straightThroughStringTask([\"rev-list\", \"--max-parents=0\", \"HEAD\"], true),\n trailingFunctionArgument(arguments)\n );\n }\n };\n}\nvar init_first_commit = __esm({\n \"src/lib/tasks/first-commit.ts\"() {\n \"use strict\";\n init_utils();\n init_task();\n }\n});\n\n// src/lib/tasks/hash-object.ts\nfunction hashObjectTask(filePath, write) {\n const commands = [\"hash-object\", filePath];\n if (write) {\n commands.push(\"-w\");\n }\n return straightThroughStringTask(commands, true);\n}\nvar init_hash_object = __esm({\n \"src/lib/tasks/hash-object.ts\"() {\n \"use strict\";\n init_task();\n }\n});\n\n// src/lib/responses/InitSummary.ts\nfunction parseInit(bare, path, text) {\n const response = String(text).trim();\n let result;\n if (result = initResponseRegex.exec(response)) {\n return new InitSummary(bare, path, false, result[1]);\n }\n if (result = reInitResponseRegex.exec(response)) {\n return new InitSummary(bare, path, true, result[1]);\n }\n let gitDir = \"\";\n const tokens = response.split(\" \");\n while (tokens.length) {\n const token = tokens.shift();\n if (token === \"in\") {\n gitDir = tokens.join(\" \");\n break;\n }\n }\n return new InitSummary(bare, path, /^re/i.test(response), gitDir);\n}\nvar InitSummary, initResponseRegex, reInitResponseRegex;\nvar init_InitSummary = __esm({\n \"src/lib/responses/InitSummary.ts\"() {\n \"use strict\";\n InitSummary = class {\n constructor(bare, path, existing, gitDir) {\n this.bare = bare;\n this.path = path;\n this.existing = existing;\n this.gitDir = gitDir;\n }\n };\n initResponseRegex = /^Init.+ repository in (.+)$/;\n reInitResponseRegex = /^Rein.+ in (.+)$/;\n }\n});\n\n// src/lib/tasks/init.ts\nfunction hasBareCommand(command) {\n return command.includes(bareCommand);\n}\nfunction initTask(bare = false, path, customArgs) {\n const commands = [\"init\", ...customArgs];\n if (bare && !hasBareCommand(commands)) {\n commands.splice(1, 0, bareCommand);\n }\n return {\n commands,\n format: \"utf-8\",\n parser(text) {\n return parseInit(commands.includes(\"--bare\"), path, text);\n }\n };\n}\nvar bareCommand;\nvar init_init = __esm({\n \"src/lib/tasks/init.ts\"() {\n \"use strict\";\n init_InitSummary();\n bareCommand = \"--bare\";\n }\n});\n\n// src/lib/args/log-format.ts\nfunction logFormatFromCommand(customArgs) {\n for (let i = 0; i < customArgs.length; i++) {\n const format = logFormatRegex.exec(customArgs[i]);\n if (format) {\n return `--${format[1]}`;\n }\n }\n return \"\" /* NONE */;\n}\nfunction isLogFormat(customArg) {\n return logFormatRegex.test(customArg);\n}\nvar logFormatRegex;\nvar init_log_format = __esm({\n \"src/lib/args/log-format.ts\"() {\n \"use strict\";\n logFormatRegex = /^--(stat|numstat|name-only|name-status)(=|$)/;\n }\n});\n\n// src/lib/responses/DiffSummary.ts\nvar DiffSummary;\nvar init_DiffSummary = __esm({\n \"src/lib/responses/DiffSummary.ts\"() {\n \"use strict\";\n DiffSummary = class {\n constructor() {\n this.changed = 0;\n this.deletions = 0;\n this.insertions = 0;\n this.files = [];\n }\n };\n }\n});\n\n// src/lib/parsers/parse-diff-summary.ts\nfunction getDiffParser(format = \"\" /* NONE */) {\n const parser4 = diffSummaryParsers[format];\n return (stdOut) => parseStringResponse(new DiffSummary(), parser4, stdOut, false);\n}\nvar statParser, numStatParser, nameOnlyParser, nameStatusParser, diffSummaryParsers;\nvar init_parse_diff_summary = __esm({\n \"src/lib/parsers/parse-diff-summary.ts\"() {\n \"use strict\";\n init_log_format();\n init_DiffSummary();\n init_diff_name_status();\n init_utils();\n statParser = [\n new LineParser(\n /^(.+)\\s+\\|\\s+(\\d+)(\\s+[+\\-]+)?$/,\n (result, [file, changes, alterations = \"\"]) => {\n result.files.push({\n file: file.trim(),\n changes: asNumber(changes),\n insertions: alterations.replace(/[^+]/g, \"\").length,\n deletions: alterations.replace(/[^-]/g, \"\").length,\n binary: false\n });\n }\n ),\n new LineParser(\n /^(.+) \\|\\s+Bin ([0-9.]+) -> ([0-9.]+) ([a-z]+)/,\n (result, [file, before, after]) => {\n result.files.push({\n file: file.trim(),\n before: asNumber(before),\n after: asNumber(after),\n binary: true\n });\n }\n ),\n new LineParser(\n /(\\d+) files? changed\\s*((?:, \\d+ [^,]+){0,2})/,\n (result, [changed, summary]) => {\n const inserted = /(\\d+) i/.exec(summary);\n const deleted = /(\\d+) d/.exec(summary);\n result.changed = asNumber(changed);\n result.insertions = asNumber(inserted?.[1]);\n result.deletions = asNumber(deleted?.[1]);\n }\n )\n ];\n numStatParser = [\n new LineParser(\n /(\\d+)\\t(\\d+)\\t(.+)$/,\n (result, [changesInsert, changesDelete, file]) => {\n const insertions = asNumber(changesInsert);\n const deletions = asNumber(changesDelete);\n result.changed++;\n result.insertions += insertions;\n result.deletions += deletions;\n result.files.push({\n file,\n changes: insertions + deletions,\n insertions,\n deletions,\n binary: false\n });\n }\n ),\n new LineParser(/-\\t-\\t(.+)$/, (result, [file]) => {\n result.changed++;\n result.files.push({\n file,\n after: 0,\n before: 0,\n binary: true\n });\n })\n ];\n nameOnlyParser = [\n new LineParser(/(.+)$/, (result, [file]) => {\n result.changed++;\n result.files.push({\n file,\n changes: 0,\n insertions: 0,\n deletions: 0,\n binary: false\n });\n })\n ];\n nameStatusParser = [\n new LineParser(\n /([ACDMRTUXB])([0-9]{0,3})\\t(.[^\\t]*)(\\t(.[^\\t]*))?$/,\n (result, [status, similarity, from, _to, to]) => {\n result.changed++;\n result.files.push({\n file: to ?? from,\n changes: 0,\n insertions: 0,\n deletions: 0,\n binary: false,\n status: orVoid(isDiffNameStatus(status) && status),\n from: orVoid(!!to && from !== to && from),\n similarity: asNumber(similarity)\n });\n }\n )\n ];\n diffSummaryParsers = {\n [\"\" /* NONE */]: statParser,\n [\"--stat\" /* STAT */]: statParser,\n [\"--numstat\" /* NUM_STAT */]: numStatParser,\n [\"--name-status\" /* NAME_STATUS */]: nameStatusParser,\n [\"--name-only\" /* NAME_ONLY */]: nameOnlyParser\n };\n }\n});\n\n// src/lib/parsers/parse-list-log-summary.ts\nfunction lineBuilder(tokens, fields) {\n return fields.reduce(\n (line, field, index) => {\n line[field] = tokens[index] || \"\";\n return line;\n },\n /* @__PURE__ */ Object.create({ diff: null })\n );\n}\nfunction createListLogSummaryParser(splitter = SPLITTER, fields = defaultFieldNames, logFormat = \"\" /* NONE */) {\n const parseDiffResult = getDiffParser(logFormat);\n return function(stdOut) {\n const all = toLinesWithContent(\n stdOut.trim(),\n false,\n START_BOUNDARY\n ).map(function(item) {\n const lineDetail = item.split(COMMIT_BOUNDARY);\n const listLogLine = lineBuilder(lineDetail[0].split(splitter), fields);\n if (lineDetail.length > 1 && !!lineDetail[1].trim()) {\n listLogLine.diff = parseDiffResult(lineDetail[1]);\n }\n return listLogLine;\n });\n return {\n all,\n latest: all.length && all[0] || null,\n total: all.length\n };\n };\n}\nvar START_BOUNDARY, COMMIT_BOUNDARY, SPLITTER, defaultFieldNames;\nvar init_parse_list_log_summary = __esm({\n \"src/lib/parsers/parse-list-log-summary.ts\"() {\n \"use strict\";\n init_utils();\n init_parse_diff_summary();\n init_log_format();\n START_BOUNDARY = \"\\xF2\\xF2\\xF2\\xF2\\xF2\\xF2 \";\n COMMIT_BOUNDARY = \" \\xF2\\xF2\";\n SPLITTER = \" \\xF2 \";\n defaultFieldNames = [\"hash\", \"date\", \"message\", \"refs\", \"author_name\", \"author_email\"];\n }\n});\n\n// src/lib/tasks/diff.ts\nvar diff_exports = {};\n__export(diff_exports, {\n diffSummaryTask: () => diffSummaryTask,\n validateLogFormatConfig: () => validateLogFormatConfig\n});\nfunction diffSummaryTask(customArgs) {\n let logFormat = logFormatFromCommand(customArgs);\n const commands = [\"diff\"];\n if (logFormat === \"\" /* NONE */) {\n logFormat = \"--stat\" /* STAT */;\n commands.push(\"--stat=4096\");\n }\n commands.push(...customArgs);\n return validateLogFormatConfig(commands) || {\n commands,\n format: \"utf-8\",\n parser: getDiffParser(logFormat)\n };\n}\nfunction validateLogFormatConfig(customArgs) {\n const flags = customArgs.filter(isLogFormat);\n if (flags.length > 1) {\n return configurationErrorTask(\n `Summary flags are mutually exclusive - pick one of ${flags.join(\",\")}`\n );\n }\n if (flags.length && customArgs.includes(\"-z\")) {\n return configurationErrorTask(\n `Summary flag ${flags} parsing is not compatible with null termination option '-z'`\n );\n }\n}\nvar init_diff = __esm({\n \"src/lib/tasks/diff.ts\"() {\n \"use strict\";\n init_log_format();\n init_parse_diff_summary();\n init_task();\n }\n});\n\n// src/lib/tasks/log.ts\nfunction prettyFormat(format, splitter) {\n const fields = [];\n const formatStr = [];\n Object.keys(format).forEach((field) => {\n fields.push(field);\n formatStr.push(String(format[field]));\n });\n return [fields, formatStr.join(splitter)];\n}\nfunction userOptions(input) {\n return Object.keys(input).reduce((out, key) => {\n if (!(key in excludeOptions)) {\n out[key] = input[key];\n }\n return out;\n }, {});\n}\nfunction parseLogOptions(opt = {}, customArgs = []) {\n const splitter = filterType(opt.splitter, filterString, SPLITTER);\n const format = filterPlainObject(opt.format) ? opt.format : {\n hash: \"%H\",\n date: opt.strictDate === false ? \"%ai\" : \"%aI\",\n message: \"%s\",\n refs: \"%D\",\n body: opt.multiLine ? \"%B\" : \"%b\",\n author_name: opt.mailMap !== false ? \"%aN\" : \"%an\",\n author_email: opt.mailMap !== false ? \"%aE\" : \"%ae\"\n };\n const [fields, formatStr] = prettyFormat(format, splitter);\n const suffix = [];\n const command = [\n `--pretty=format:${START_BOUNDARY}${formatStr}${COMMIT_BOUNDARY}`,\n ...customArgs\n ];\n const maxCount = opt.n || opt[\"max-count\"] || opt.maxCount;\n if (maxCount) {\n command.push(`--max-count=${maxCount}`);\n }\n if (opt.from || opt.to) {\n const rangeOperator = opt.symmetric !== false ? \"...\" : \"..\";\n suffix.push(`${opt.from || \"\"}${rangeOperator}${opt.to || \"\"}`);\n }\n if (filterString(opt.file)) {\n command.push(\"--follow\", pathspec(opt.file));\n }\n appendTaskOptions(userOptions(opt), command);\n return {\n fields,\n splitter,\n commands: [...command, ...suffix]\n };\n}\nfunction logTask(splitter, fields, customArgs) {\n const parser4 = createListLogSummaryParser(splitter, fields, logFormatFromCommand(customArgs));\n return {\n commands: [\"log\", ...customArgs],\n format: \"utf-8\",\n parser: parser4\n };\n}\nfunction log_default() {\n return {\n log(...rest) {\n const next = trailingFunctionArgument(arguments);\n const options = parseLogOptions(\n trailingOptionsArgument(arguments),\n asStringArray(filterType(arguments[0], filterArray, []))\n );\n const task = rejectDeprecatedSignatures(...rest) || validateLogFormatConfig(options.commands) || createLogTask(options);\n return this._runTask(task, next);\n }\n };\n function createLogTask(options) {\n return logTask(options.splitter, options.fields, options.commands);\n }\n function rejectDeprecatedSignatures(from, to) {\n return filterString(from) && filterString(to) && configurationErrorTask(\n `git.log(string, string) should be replaced with git.log({ from: string, to: string })`\n );\n }\n}\nvar excludeOptions;\nvar init_log = __esm({\n \"src/lib/tasks/log.ts\"() {\n \"use strict\";\n init_log_format();\n init_pathspec();\n init_parse_list_log_summary();\n init_utils();\n init_task();\n init_diff();\n excludeOptions = /* @__PURE__ */ ((excludeOptions2) => {\n excludeOptions2[excludeOptions2[\"--pretty\"] = 0] = \"--pretty\";\n excludeOptions2[excludeOptions2[\"max-count\"] = 1] = \"max-count\";\n excludeOptions2[excludeOptions2[\"maxCount\"] = 2] = \"maxCount\";\n excludeOptions2[excludeOptions2[\"n\"] = 3] = \"n\";\n excludeOptions2[excludeOptions2[\"file\"] = 4] = \"file\";\n excludeOptions2[excludeOptions2[\"format\"] = 5] = \"format\";\n excludeOptions2[excludeOptions2[\"from\"] = 6] = \"from\";\n excludeOptions2[excludeOptions2[\"to\"] = 7] = \"to\";\n excludeOptions2[excludeOptions2[\"splitter\"] = 8] = \"splitter\";\n excludeOptions2[excludeOptions2[\"symmetric\"] = 9] = \"symmetric\";\n excludeOptions2[excludeOptions2[\"mailMap\"] = 10] = \"mailMap\";\n excludeOptions2[excludeOptions2[\"multiLine\"] = 11] = \"multiLine\";\n excludeOptions2[excludeOptions2[\"strictDate\"] = 12] = \"strictDate\";\n return excludeOptions2;\n })(excludeOptions || {});\n }\n});\n\n// src/lib/responses/MergeSummary.ts\nvar MergeSummaryConflict, MergeSummaryDetail;\nvar init_MergeSummary = __esm({\n \"src/lib/responses/MergeSummary.ts\"() {\n \"use strict\";\n MergeSummaryConflict = class {\n constructor(reason, file = null, meta) {\n this.reason = reason;\n this.file = file;\n this.meta = meta;\n }\n toString() {\n return `${this.file}:${this.reason}`;\n }\n };\n MergeSummaryDetail = class {\n constructor() {\n this.conflicts = [];\n this.merges = [];\n this.result = \"success\";\n }\n get failed() {\n return this.conflicts.length > 0;\n }\n get reason() {\n return this.result;\n }\n toString() {\n if (this.conflicts.length) {\n return `CONFLICTS: ${this.conflicts.join(\", \")}`;\n }\n return \"OK\";\n }\n };\n }\n});\n\n// src/lib/responses/PullSummary.ts\nvar PullSummary, PullFailedSummary;\nvar init_PullSummary = __esm({\n \"src/lib/responses/PullSummary.ts\"() {\n \"use strict\";\n PullSummary = class {\n constructor() {\n this.remoteMessages = {\n all: []\n };\n this.created = [];\n this.deleted = [];\n this.files = [];\n this.deletions = {};\n this.insertions = {};\n this.summary = {\n changes: 0,\n deletions: 0,\n insertions: 0\n };\n }\n };\n PullFailedSummary = class {\n constructor() {\n this.remote = \"\";\n this.hash = {\n local: \"\",\n remote: \"\"\n };\n this.branch = {\n local: \"\",\n remote: \"\"\n };\n this.message = \"\";\n }\n toString() {\n return this.message;\n }\n };\n }\n});\n\n// src/lib/parsers/parse-remote-objects.ts\nfunction objectEnumerationResult(remoteMessages) {\n return remoteMessages.objects = remoteMessages.objects || {\n compressing: 0,\n counting: 0,\n enumerating: 0,\n packReused: 0,\n reused: { count: 0, delta: 0 },\n total: { count: 0, delta: 0 }\n };\n}\nfunction asObjectCount(source) {\n const count = /^\\s*(\\d+)/.exec(source);\n const delta = /delta (\\d+)/i.exec(source);\n return {\n count: asNumber(count && count[1] || \"0\"),\n delta: asNumber(delta && delta[1] || \"0\")\n };\n}\nvar remoteMessagesObjectParsers;\nvar init_parse_remote_objects = __esm({\n \"src/lib/parsers/parse-remote-objects.ts\"() {\n \"use strict\";\n init_utils();\n remoteMessagesObjectParsers = [\n new RemoteLineParser(\n /^remote:\\s*(enumerating|counting|compressing) objects: (\\d+),/i,\n (result, [action, count]) => {\n const key = action.toLowerCase();\n const enumeration = objectEnumerationResult(result.remoteMessages);\n Object.assign(enumeration, { [key]: asNumber(count) });\n }\n ),\n new RemoteLineParser(\n /^remote:\\s*(enumerating|counting|compressing) objects: \\d+% \\(\\d+\\/(\\d+)\\),/i,\n (result, [action, count]) => {\n const key = action.toLowerCase();\n const enumeration = objectEnumerationResult(result.remoteMessages);\n Object.assign(enumeration, { [key]: asNumber(count) });\n }\n ),\n new RemoteLineParser(\n /total ([^,]+), reused ([^,]+), pack-reused (\\d+)/i,\n (result, [total, reused, packReused]) => {\n const objects = objectEnumerationResult(result.remoteMessages);\n objects.total = asObjectCount(total);\n objects.reused = asObjectCount(reused);\n objects.packReused = asNumber(packReused);\n }\n )\n ];\n }\n});\n\n// src/lib/parsers/parse-remote-messages.ts\nfunction parseRemoteMessages(_stdOut, stdErr) {\n return parseStringResponse({ remoteMessages: new RemoteMessageSummary() }, parsers2, stdErr);\n}\nvar parsers2, RemoteMessageSummary;\nvar init_parse_remote_messages = __esm({\n \"src/lib/parsers/parse-remote-messages.ts\"() {\n \"use strict\";\n init_utils();\n init_parse_remote_objects();\n parsers2 = [\n new RemoteLineParser(/^remote:\\s*(.+)$/, (result, [text]) => {\n result.remoteMessages.all.push(text.trim());\n return false;\n }),\n ...remoteMessagesObjectParsers,\n new RemoteLineParser(\n [/create a (?:pull|merge) request/i, /\\s(https?:\\/\\/\\S+)$/],\n (result, [pullRequestUrl]) => {\n result.remoteMessages.pullRequestUrl = pullRequestUrl;\n }\n ),\n new RemoteLineParser(\n [/found (\\d+) vulnerabilities.+\\(([^)]+)\\)/i, /\\s(https?:\\/\\/\\S+)$/],\n (result, [count, summary, url]) => {\n result.remoteMessages.vulnerabilities = {\n count: asNumber(count),\n summary,\n url\n };\n }\n )\n ];\n RemoteMessageSummary = class {\n constructor() {\n this.all = [];\n }\n };\n }\n});\n\n// src/lib/parsers/parse-pull.ts\nfunction parsePullErrorResult(stdOut, stdErr) {\n const pullError = parseStringResponse(new PullFailedSummary(), errorParsers, [stdOut, stdErr]);\n return pullError.message && pullError;\n}\nvar FILE_UPDATE_REGEX, SUMMARY_REGEX, ACTION_REGEX, parsers3, errorParsers, parsePullDetail, parsePullResult;\nvar init_parse_pull = __esm({\n \"src/lib/parsers/parse-pull.ts\"() {\n \"use strict\";\n init_PullSummary();\n init_utils();\n init_parse_remote_messages();\n FILE_UPDATE_REGEX = /^\\s*(.+?)\\s+\\|\\s+\\d+\\s*(\\+*)(-*)/;\n SUMMARY_REGEX = /(\\d+)\\D+((\\d+)\\D+\\(\\+\\))?(\\D+(\\d+)\\D+\\(-\\))?/;\n ACTION_REGEX = /^(create|delete) mode \\d+ (.+)/;\n parsers3 = [\n new LineParser(FILE_UPDATE_REGEX, (result, [file, insertions, deletions]) => {\n result.files.push(file);\n if (insertions) {\n result.insertions[file] = insertions.length;\n }\n if (deletions) {\n result.deletions[file] = deletions.length;\n }\n }),\n new LineParser(SUMMARY_REGEX, (result, [changes, , insertions, , deletions]) => {\n if (insertions !== void 0 || deletions !== void 0) {\n result.summary.changes = +changes || 0;\n result.summary.insertions = +insertions || 0;\n result.summary.deletions = +deletions || 0;\n return true;\n }\n return false;\n }),\n new LineParser(ACTION_REGEX, (result, [action, file]) => {\n append(result.files, file);\n append(action === \"create\" ? result.created : result.deleted, file);\n })\n ];\n errorParsers = [\n new LineParser(/^from\\s(.+)$/i, (result, [remote]) => void (result.remote = remote)),\n new LineParser(/^fatal:\\s(.+)$/, (result, [message]) => void (result.message = message)),\n new LineParser(\n /([a-z0-9]+)\\.\\.([a-z0-9]+)\\s+(\\S+)\\s+->\\s+(\\S+)$/,\n (result, [hashLocal, hashRemote, branchLocal, branchRemote]) => {\n result.branch.local = branchLocal;\n result.hash.local = hashLocal;\n result.branch.remote = branchRemote;\n result.hash.remote = hashRemote;\n }\n )\n ];\n parsePullDetail = (stdOut, stdErr) => {\n return parseStringResponse(new PullSummary(), parsers3, [stdOut, stdErr]);\n };\n parsePullResult = (stdOut, stdErr) => {\n return Object.assign(\n new PullSummary(),\n parsePullDetail(stdOut, stdErr),\n parseRemoteMessages(stdOut, stdErr)\n );\n };\n }\n});\n\n// src/lib/parsers/parse-merge.ts\nvar parsers4, parseMergeResult, parseMergeDetail;\nvar init_parse_merge = __esm({\n \"src/lib/parsers/parse-merge.ts\"() {\n \"use strict\";\n init_MergeSummary();\n init_utils();\n init_parse_pull();\n parsers4 = [\n new LineParser(/^Auto-merging\\s+(.+)$/, (summary, [autoMerge]) => {\n summary.merges.push(autoMerge);\n }),\n new LineParser(/^CONFLICT\\s+\\((.+)\\): Merge conflict in (.+)$/, (summary, [reason, file]) => {\n summary.conflicts.push(new MergeSummaryConflict(reason, file));\n }),\n new LineParser(\n /^CONFLICT\\s+\\((.+\\/delete)\\): (.+) deleted in (.+) and/,\n (summary, [reason, file, deleteRef]) => {\n summary.conflicts.push(new MergeSummaryConflict(reason, file, { deleteRef }));\n }\n ),\n new LineParser(/^CONFLICT\\s+\\((.+)\\):/, (summary, [reason]) => {\n summary.conflicts.push(new MergeSummaryConflict(reason, null));\n }),\n new LineParser(/^Automatic merge failed;\\s+(.+)$/, (summary, [result]) => {\n summary.result = result;\n })\n ];\n parseMergeResult = (stdOut, stdErr) => {\n return Object.assign(parseMergeDetail(stdOut, stdErr), parsePullResult(stdOut, stdErr));\n };\n parseMergeDetail = (stdOut) => {\n return parseStringResponse(new MergeSummaryDetail(), parsers4, stdOut);\n };\n }\n});\n\n// src/lib/tasks/merge.ts\nfunction mergeTask(customArgs) {\n if (!customArgs.length) {\n return configurationErrorTask(\"Git.merge requires at least one option\");\n }\n return {\n commands: [\"merge\", ...customArgs],\n format: \"utf-8\",\n parser(stdOut, stdErr) {\n const merge = parseMergeResult(stdOut, stdErr);\n if (merge.failed) {\n throw new GitResponseError(merge);\n }\n return merge;\n }\n };\n}\nvar init_merge = __esm({\n \"src/lib/tasks/merge.ts\"() {\n \"use strict\";\n init_git_response_error();\n init_parse_merge();\n init_task();\n }\n});\n\n// src/lib/parsers/parse-push.ts\nfunction pushResultPushedItem(local, remote, status) {\n const deleted = status.includes(\"deleted\");\n const tag = status.includes(\"tag\") || /^refs\\/tags/.test(local);\n const alreadyUpdated = !status.includes(\"new\");\n return {\n deleted,\n tag,\n branch: !tag,\n new: !alreadyUpdated,\n alreadyUpdated,\n local,\n remote\n };\n}\nvar parsers5, parsePushResult, parsePushDetail;\nvar init_parse_push = __esm({\n \"src/lib/parsers/parse-push.ts\"() {\n \"use strict\";\n init_utils();\n init_parse_remote_messages();\n parsers5 = [\n new LineParser(/^Pushing to (.+)$/, (result, [repo]) => {\n result.repo = repo;\n }),\n new LineParser(/^updating local tracking ref '(.+)'/, (result, [local]) => {\n result.ref = {\n ...result.ref || {},\n local\n };\n }),\n new LineParser(/^[=*-]\\s+([^:]+):(\\S+)\\s+\\[(.+)]$/, (result, [local, remote, type]) => {\n result.pushed.push(pushResultPushedItem(local, remote, type));\n }),\n new LineParser(\n /^Branch '([^']+)' set up to track remote branch '([^']+)' from '([^']+)'/,\n (result, [local, remote, remoteName]) => {\n result.branch = {\n ...result.branch || {},\n local,\n remote,\n remoteName\n };\n }\n ),\n new LineParser(\n /^([^:]+):(\\S+)\\s+([a-z0-9]+)\\.\\.([a-z0-9]+)$/,\n (result, [local, remote, from, to]) => {\n result.update = {\n head: {\n local,\n remote\n },\n hash: {\n from,\n to\n }\n };\n }\n )\n ];\n parsePushResult = (stdOut, stdErr) => {\n const pushDetail = parsePushDetail(stdOut, stdErr);\n const responseDetail = parseRemoteMessages(stdOut, stdErr);\n return {\n ...pushDetail,\n ...responseDetail\n };\n };\n parsePushDetail = (stdOut, stdErr) => {\n return parseStringResponse({ pushed: [] }, parsers5, [stdOut, stdErr]);\n };\n }\n});\n\n// src/lib/tasks/push.ts\nvar push_exports = {};\n__export(push_exports, {\n pushTagsTask: () => pushTagsTask,\n pushTask: () => pushTask\n});\nfunction pushTagsTask(ref = {}, customArgs) {\n append(customArgs, \"--tags\");\n return pushTask(ref, customArgs);\n}\nfunction pushTask(ref = {}, customArgs) {\n const commands = [\"push\", ...customArgs];\n if (ref.branch) {\n commands.splice(1, 0, ref.branch);\n }\n if (ref.remote) {\n commands.splice(1, 0, ref.remote);\n }\n remove(commands, \"-v\");\n append(commands, \"--verbose\");\n append(commands, \"--porcelain\");\n return {\n commands,\n format: \"utf-8\",\n parser: parsePushResult\n };\n}\nvar init_push = __esm({\n \"src/lib/tasks/push.ts\"() {\n \"use strict\";\n init_parse_push();\n init_utils();\n }\n});\n\n// src/lib/tasks/show.ts\nfunction show_default() {\n return {\n showBuffer() {\n const commands = [\"show\", ...getTrailingOptions(arguments, 1)];\n if (!commands.includes(\"--binary\")) {\n commands.splice(1, 0, \"--binary\");\n }\n return this._runTask(\n straightThroughBufferTask(commands),\n trailingFunctionArgument(arguments)\n );\n },\n show() {\n const commands = [\"show\", ...getTrailingOptions(arguments, 1)];\n return this._runTask(\n straightThroughStringTask(commands),\n trailingFunctionArgument(arguments)\n );\n }\n };\n}\nvar init_show = __esm({\n \"src/lib/tasks/show.ts\"() {\n \"use strict\";\n init_utils();\n init_task();\n }\n});\n\n// src/lib/responses/FileStatusSummary.ts\nvar fromPathRegex, FileStatusSummary;\nvar init_FileStatusSummary = __esm({\n \"src/lib/responses/FileStatusSummary.ts\"() {\n \"use strict\";\n fromPathRegex = /^(.+)\\0(.+)$/;\n FileStatusSummary = class {\n constructor(path, index, working_dir) {\n this.path = path;\n this.index = index;\n this.working_dir = working_dir;\n if (index === \"R\" || working_dir === \"R\") {\n const detail = fromPathRegex.exec(path) || [null, path, path];\n this.from = detail[2] || \"\";\n this.path = detail[1] || \"\";\n }\n }\n };\n }\n});\n\n// src/lib/responses/StatusSummary.ts\nfunction renamedFile(line) {\n const [to, from] = line.split(NULL);\n return {\n from: from || to,\n to\n };\n}\nfunction parser3(indexX, indexY, handler) {\n return [`${indexX}${indexY}`, handler];\n}\nfunction conflicts(indexX, ...indexY) {\n return indexY.map((y) => parser3(indexX, y, (result, file) => result.conflicted.push(file)));\n}\nfunction splitLine(result, lineStr) {\n const trimmed2 = lineStr.trim();\n switch (\" \") {\n case trimmed2.charAt(2):\n return data(trimmed2.charAt(0), trimmed2.charAt(1), trimmed2.slice(3));\n case trimmed2.charAt(1):\n return data(\" \" /* NONE */, trimmed2.charAt(0), trimmed2.slice(2));\n default:\n return;\n }\n function data(index, workingDir, path) {\n const raw = `${index}${workingDir}`;\n const handler = parsers6.get(raw);\n if (handler) {\n handler(result, path);\n }\n if (raw !== \"##\" && raw !== \"!!\") {\n result.files.push(new FileStatusSummary(path, index, workingDir));\n }\n }\n}\nvar StatusSummary, parsers6, parseStatusSummary;\nvar init_StatusSummary = __esm({\n \"src/lib/responses/StatusSummary.ts\"() {\n \"use strict\";\n init_utils();\n init_FileStatusSummary();\n StatusSummary = class {\n constructor() {\n this.not_added = [];\n this.conflicted = [];\n this.created = [];\n this.deleted = [];\n this.ignored = void 0;\n this.modified = [];\n this.renamed = [];\n this.files = [];\n this.staged = [];\n this.ahead = 0;\n this.behind = 0;\n this.current = null;\n this.tracking = null;\n this.detached = false;\n this.isClean = () => {\n return !this.files.length;\n };\n }\n };\n parsers6 = new Map([\n parser3(\n \" \" /* NONE */,\n \"A\" /* ADDED */,\n (result, file) => result.created.push(file)\n ),\n parser3(\n \" \" /* NONE */,\n \"D\" /* DELETED */,\n (result, file) => result.deleted.push(file)\n ),\n parser3(\n \" \" /* NONE */,\n \"M\" /* MODIFIED */,\n (result, file) => result.modified.push(file)\n ),\n parser3(\"A\" /* ADDED */, \" \" /* NONE */, (result, file) => {\n result.created.push(file);\n result.staged.push(file);\n }),\n parser3(\"A\" /* ADDED */, \"M\" /* MODIFIED */, (result, file) => {\n result.created.push(file);\n result.staged.push(file);\n result.modified.push(file);\n }),\n parser3(\"D\" /* DELETED */, \" \" /* NONE */, (result, file) => {\n result.deleted.push(file);\n result.staged.push(file);\n }),\n parser3(\"M\" /* MODIFIED */, \" \" /* NONE */, (result, file) => {\n result.modified.push(file);\n result.staged.push(file);\n }),\n parser3(\"M\" /* MODIFIED */, \"M\" /* MODIFIED */, (result, file) => {\n result.modified.push(file);\n result.staged.push(file);\n }),\n parser3(\"R\" /* RENAMED */, \" \" /* NONE */, (result, file) => {\n result.renamed.push(renamedFile(file));\n }),\n parser3(\"R\" /* RENAMED */, \"M\" /* MODIFIED */, (result, file) => {\n const renamed = renamedFile(file);\n result.renamed.push(renamed);\n result.modified.push(renamed.to);\n }),\n parser3(\"!\" /* IGNORED */, \"!\" /* IGNORED */, (_result, _file) => {\n (_result.ignored = _result.ignored || []).push(_file);\n }),\n parser3(\n \"?\" /* UNTRACKED */,\n \"?\" /* UNTRACKED */,\n (result, file) => result.not_added.push(file)\n ),\n ...conflicts(\"A\" /* ADDED */, \"A\" /* ADDED */, \"U\" /* UNMERGED */),\n ...conflicts(\n \"D\" /* DELETED */,\n \"D\" /* DELETED */,\n \"U\" /* UNMERGED */\n ),\n ...conflicts(\n \"U\" /* UNMERGED */,\n \"A\" /* ADDED */,\n \"D\" /* DELETED */,\n \"U\" /* UNMERGED */\n ),\n [\n \"##\",\n (result, line) => {\n const aheadReg = /ahead (\\d+)/;\n const behindReg = /behind (\\d+)/;\n const currentReg = /^(.+?(?=(?:\\.{3}|\\s|$)))/;\n const trackingReg = /\\.{3}(\\S*)/;\n const onEmptyBranchReg = /\\son\\s(\\S+?)(?=\\.{3}|$)/;\n let regexResult = aheadReg.exec(line);\n result.ahead = regexResult && +regexResult[1] || 0;\n regexResult = behindReg.exec(line);\n result.behind = regexResult && +regexResult[1] || 0;\n regexResult = currentReg.exec(line);\n result.current = filterType(regexResult?.[1], filterString, null);\n regexResult = trackingReg.exec(line);\n result.tracking = filterType(regexResult?.[1], filterString, null);\n regexResult = onEmptyBranchReg.exec(line);\n if (regexResult) {\n result.current = filterType(regexResult?.[1], filterString, result.current);\n }\n result.detached = /\\(no branch\\)/.test(line);\n }\n ]\n ]);\n parseStatusSummary = function(text) {\n const lines = text.split(NULL);\n const status = new StatusSummary();\n for (let i = 0, l = lines.length; i < l; ) {\n let line = lines[i++].trim();\n if (!line) {\n continue;\n }\n if (line.charAt(0) === \"R\" /* RENAMED */) {\n line += NULL + (lines[i++] || \"\");\n }\n splitLine(status, line);\n }\n return status;\n };\n }\n});\n\n// src/lib/tasks/status.ts\nfunction statusTask(customArgs) {\n const commands = [\n \"status\",\n \"--porcelain\",\n \"-b\",\n \"-u\",\n \"--null\",\n ...customArgs.filter((arg) => !ignoredOptions.includes(arg))\n ];\n return {\n format: \"utf-8\",\n commands,\n parser(text) {\n return parseStatusSummary(text);\n }\n };\n}\nvar ignoredOptions;\nvar init_status = __esm({\n \"src/lib/tasks/status.ts\"() {\n \"use strict\";\n init_StatusSummary();\n ignoredOptions = [\"--null\", \"-z\"];\n }\n});\n\n// src/lib/tasks/version.ts\nfunction versionResponse(major = 0, minor = 0, patch = 0, agent = \"\", installed = true) {\n return Object.defineProperty(\n {\n major,\n minor,\n patch,\n agent,\n installed\n },\n \"toString\",\n {\n value() {\n return `${this.major}.${this.minor}.${this.patch}`;\n },\n configurable: false,\n enumerable: false\n }\n );\n}\nfunction notInstalledResponse() {\n return versionResponse(0, 0, 0, \"\", false);\n}\nfunction version_default() {\n return {\n version() {\n return this._runTask({\n commands: [\"--version\"],\n format: \"utf-8\",\n parser: versionParser,\n onError(result, error, done, fail) {\n if (result.exitCode === -2 /* NOT_FOUND */) {\n return done(Buffer.from(NOT_INSTALLED));\n }\n fail(error);\n }\n });\n }\n };\n}\nfunction versionParser(stdOut) {\n if (stdOut === NOT_INSTALLED) {\n return notInstalledResponse();\n }\n return parseStringResponse(versionResponse(0, 0, 0, stdOut), parsers7, stdOut);\n}\nvar NOT_INSTALLED, parsers7;\nvar init_version = __esm({\n \"src/lib/tasks/version.ts\"() {\n \"use strict\";\n init_utils();\n NOT_INSTALLED = \"installed=false\";\n parsers7 = [\n new LineParser(\n /version (\\d+)\\.(\\d+)\\.(\\d+)(?:\\s*\\((.+)\\))?/,\n (result, [major, minor, patch, agent = \"\"]) => {\n Object.assign(\n result,\n versionResponse(asNumber(major), asNumber(minor), asNumber(patch), agent)\n );\n }\n ),\n new LineParser(\n /version (\\d+)\\.(\\d+)\\.(\\D+)(.+)?$/,\n (result, [major, minor, patch, agent = \"\"]) => {\n Object.assign(result, versionResponse(asNumber(major), asNumber(minor), patch, agent));\n }\n )\n ];\n }\n});\n\n// src/lib/simple-git-api.ts\nvar simple_git_api_exports = {};\n__export(simple_git_api_exports, {\n SimpleGitApi: () => SimpleGitApi\n});\nvar SimpleGitApi;\nvar init_simple_git_api = __esm({\n \"src/lib/simple-git-api.ts\"() {\n \"use strict\";\n init_task_callback();\n init_change_working_directory();\n init_checkout();\n init_count_objects();\n init_commit();\n init_config();\n init_first_commit();\n init_grep();\n init_hash_object();\n init_init();\n init_log();\n init_merge();\n init_push();\n init_show();\n init_status();\n init_task();\n init_version();\n init_utils();\n SimpleGitApi = class {\n constructor(_executor) {\n this._executor = _executor;\n }\n _runTask(task, then) {\n const chain = this._executor.chain();\n const promise = chain.push(task);\n if (then) {\n taskCallback(task, promise, then);\n }\n return Object.create(this, {\n then: { value: promise.then.bind(promise) },\n catch: { value: promise.catch.bind(promise) },\n _executor: { value: chain }\n });\n }\n add(files) {\n return this._runTask(\n straightThroughStringTask([\"add\", ...asArray(files)]),\n trailingFunctionArgument(arguments)\n );\n }\n cwd(directory) {\n const next = trailingFunctionArgument(arguments);\n if (typeof directory === \"string\") {\n return this._runTask(changeWorkingDirectoryTask(directory, this._executor), next);\n }\n if (typeof directory?.path === \"string\") {\n return this._runTask(\n changeWorkingDirectoryTask(\n directory.path,\n directory.root && this._executor || void 0\n ),\n next\n );\n }\n return this._runTask(\n configurationErrorTask(\"Git.cwd: workingDirectory must be supplied as a string\"),\n next\n );\n }\n hashObject(path, write) {\n return this._runTask(\n hashObjectTask(path, write === true),\n trailingFunctionArgument(arguments)\n );\n }\n init(bare) {\n return this._runTask(\n initTask(bare === true, this._executor.cwd, getTrailingOptions(arguments)),\n trailingFunctionArgument(arguments)\n );\n }\n merge() {\n return this._runTask(\n mergeTask(getTrailingOptions(arguments)),\n trailingFunctionArgument(arguments)\n );\n }\n mergeFromTo(remote, branch) {\n if (!(filterString(remote) && filterString(branch))) {\n return this._runTask(\n configurationErrorTask(\n `Git.mergeFromTo requires that the 'remote' and 'branch' arguments are supplied as strings`\n )\n );\n }\n return this._runTask(\n mergeTask([remote, branch, ...getTrailingOptions(arguments)]),\n trailingFunctionArgument(arguments, false)\n );\n }\n outputHandler(handler) {\n this._executor.outputHandler = handler;\n return this;\n }\n push() {\n const task = pushTask(\n {\n remote: filterType(arguments[0], filterString),\n branch: filterType(arguments[1], filterString)\n },\n getTrailingOptions(arguments)\n );\n return this._runTask(task, trailingFunctionArgument(arguments));\n }\n stash() {\n return this._runTask(\n straightThroughStringTask([\"stash\", ...getTrailingOptions(arguments)]),\n trailingFunctionArgument(arguments)\n );\n }\n status() {\n return this._runTask(\n statusTask(getTrailingOptions(arguments)),\n trailingFunctionArgument(arguments)\n );\n }\n };\n Object.assign(\n SimpleGitApi.prototype,\n checkout_default(),\n commit_default(),\n config_default(),\n count_objects_default(),\n first_commit_default(),\n grep_default(),\n log_default(),\n show_default(),\n version_default()\n );\n }\n});\n\n// src/lib/runners/scheduler.ts\nvar scheduler_exports = {};\n__export(scheduler_exports, {\n Scheduler: () => Scheduler\n});\nimport { createDeferred } from \"@kwsites/promise-deferred\";\nvar createScheduledTask, Scheduler;\nvar init_scheduler = __esm({\n \"src/lib/runners/scheduler.ts\"() {\n \"use strict\";\n init_utils();\n init_git_logger();\n createScheduledTask = /* @__PURE__ */ (() => {\n let id = 0;\n return () => {\n id++;\n const { promise, done } = createDeferred();\n return {\n promise,\n done,\n id\n };\n };\n })();\n Scheduler = class {\n constructor(concurrency = 2) {\n this.concurrency = concurrency;\n this.logger = createLogger(\"\", \"scheduler\");\n this.pending = [];\n this.running = [];\n this.logger(`Constructed, concurrency=%s`, concurrency);\n }\n schedule() {\n if (!this.pending.length || this.running.length >= this.concurrency) {\n this.logger(\n `Schedule attempt ignored, pending=%s running=%s concurrency=%s`,\n this.pending.length,\n this.running.length,\n this.concurrency\n );\n return;\n }\n const task = append(this.running, this.pending.shift());\n this.logger(`Attempting id=%s`, task.id);\n task.done(() => {\n this.logger(`Completing id=`, task.id);\n remove(this.running, task);\n this.schedule();\n });\n }\n next() {\n const { promise, id } = append(this.pending, createScheduledTask());\n this.logger(`Scheduling id=%s`, id);\n this.schedule();\n return promise;\n }\n };\n }\n});\n\n// src/lib/tasks/apply-patch.ts\nvar apply_patch_exports = {};\n__export(apply_patch_exports, {\n applyPatchTask: () => applyPatchTask\n});\nfunction applyPatchTask(patches, customArgs) {\n return straightThroughStringTask([\"apply\", ...customArgs, ...patches]);\n}\nvar init_apply_patch = __esm({\n \"src/lib/tasks/apply-patch.ts\"() {\n \"use strict\";\n init_task();\n }\n});\n\n// src/lib/responses/BranchDeleteSummary.ts\nfunction branchDeletionSuccess(branch, hash) {\n return {\n branch,\n hash,\n success: true\n };\n}\nfunction branchDeletionFailure(branch) {\n return {\n branch,\n hash: null,\n success: false\n };\n}\nvar BranchDeletionBatch;\nvar init_BranchDeleteSummary = __esm({\n \"src/lib/responses/BranchDeleteSummary.ts\"() {\n \"use strict\";\n BranchDeletionBatch = class {\n constructor() {\n this.all = [];\n this.branches = {};\n this.errors = [];\n }\n get success() {\n return !this.errors.length;\n }\n };\n }\n});\n\n// src/lib/parsers/parse-branch-delete.ts\nfunction hasBranchDeletionError(data, processExitCode) {\n return processExitCode === 1 /* ERROR */ && deleteErrorRegex.test(data);\n}\nvar deleteSuccessRegex, deleteErrorRegex, parsers8, parseBranchDeletions;\nvar init_parse_branch_delete = __esm({\n \"src/lib/parsers/parse-branch-delete.ts\"() {\n \"use strict\";\n init_BranchDeleteSummary();\n init_utils();\n deleteSuccessRegex = /(\\S+)\\s+\\(\\S+\\s([^)]+)\\)/;\n deleteErrorRegex = /^error[^']+'([^']+)'/m;\n parsers8 = [\n new LineParser(deleteSuccessRegex, (result, [branch, hash]) => {\n const deletion = branchDeletionSuccess(branch, hash);\n result.all.push(deletion);\n result.branches[branch] = deletion;\n }),\n new LineParser(deleteErrorRegex, (result, [branch]) => {\n const deletion = branchDeletionFailure(branch);\n result.errors.push(deletion);\n result.all.push(deletion);\n result.branches[branch] = deletion;\n })\n ];\n parseBranchDeletions = (stdOut, stdErr) => {\n return parseStringResponse(new BranchDeletionBatch(), parsers8, [stdOut, stdErr]);\n };\n }\n});\n\n// src/lib/responses/BranchSummary.ts\nvar BranchSummaryResult;\nvar init_BranchSummary = __esm({\n \"src/lib/responses/BranchSummary.ts\"() {\n \"use strict\";\n BranchSummaryResult = class {\n constructor() {\n this.all = [];\n this.branches = {};\n this.current = \"\";\n this.detached = false;\n }\n push(status, detached, name, commit, label) {\n if (status === \"*\" /* CURRENT */) {\n this.detached = detached;\n this.current = name;\n }\n this.all.push(name);\n this.branches[name] = {\n current: status === \"*\" /* CURRENT */,\n linkedWorkTree: status === \"+\" /* LINKED */,\n name,\n commit,\n label\n };\n }\n };\n }\n});\n\n// src/lib/parsers/parse-branch.ts\nfunction branchStatus(input) {\n return input ? input.charAt(0) : \"\";\n}\nfunction parseBranchSummary(stdOut, currentOnly = false) {\n return parseStringResponse(\n new BranchSummaryResult(),\n currentOnly ? [currentBranchParser] : parsers9,\n stdOut\n );\n}\nvar parsers9, currentBranchParser;\nvar init_parse_branch = __esm({\n \"src/lib/parsers/parse-branch.ts\"() {\n \"use strict\";\n init_BranchSummary();\n init_utils();\n parsers9 = [\n new LineParser(\n /^([*+]\\s)?\\((?:HEAD )?detached (?:from|at) (\\S+)\\)\\s+([a-z0-9]+)\\s(.*)$/,\n (result, [current, name, commit, label]) => {\n result.push(branchStatus(current), true, name, commit, label);\n }\n ),\n new LineParser(\n /^([*+]\\s)?(\\S+)\\s+([a-z0-9]+)\\s?(.*)$/s,\n (result, [current, name, commit, label]) => {\n result.push(branchStatus(current), false, name, commit, label);\n }\n )\n ];\n currentBranchParser = new LineParser(/^(\\S+)$/s, (result, [name]) => {\n result.push(\"*\" /* CURRENT */, false, name, \"\", \"\");\n });\n }\n});\n\n// src/lib/tasks/branch.ts\nvar branch_exports = {};\n__export(branch_exports, {\n branchLocalTask: () => branchLocalTask,\n branchTask: () => branchTask,\n containsDeleteBranchCommand: () => containsDeleteBranchCommand,\n deleteBranchTask: () => deleteBranchTask,\n deleteBranchesTask: () => deleteBranchesTask\n});\nfunction containsDeleteBranchCommand(commands) {\n const deleteCommands = [\"-d\", \"-D\", \"--delete\"];\n return commands.some((command) => deleteCommands.includes(command));\n}\nfunction branchTask(customArgs) {\n const isDelete = containsDeleteBranchCommand(customArgs);\n const isCurrentOnly = customArgs.includes(\"--show-current\");\n const commands = [\"branch\", ...customArgs];\n if (commands.length === 1) {\n commands.push(\"-a\");\n }\n if (!commands.includes(\"-v\")) {\n commands.splice(1, 0, \"-v\");\n }\n return {\n format: \"utf-8\",\n commands,\n parser(stdOut, stdErr) {\n if (isDelete) {\n return parseBranchDeletions(stdOut, stdErr).all[0];\n }\n return parseBranchSummary(stdOut, isCurrentOnly);\n }\n };\n}\nfunction branchLocalTask() {\n return {\n format: \"utf-8\",\n commands: [\"branch\", \"-v\"],\n parser(stdOut) {\n return parseBranchSummary(stdOut);\n }\n };\n}\nfunction deleteBranchesTask(branches, forceDelete = false) {\n return {\n format: \"utf-8\",\n commands: [\"branch\", \"-v\", forceDelete ? \"-D\" : \"-d\", ...branches],\n parser(stdOut, stdErr) {\n return parseBranchDeletions(stdOut, stdErr);\n },\n onError({ exitCode, stdOut }, error, done, fail) {\n if (!hasBranchDeletionError(String(error), exitCode)) {\n return fail(error);\n }\n done(stdOut);\n }\n };\n}\nfunction deleteBranchTask(branch, forceDelete = false) {\n const task = {\n format: \"utf-8\",\n commands: [\"branch\", \"-v\", forceDelete ? \"-D\" : \"-d\", branch],\n parser(stdOut, stdErr) {\n return parseBranchDeletions(stdOut, stdErr).branches[branch];\n },\n onError({ exitCode, stdErr, stdOut }, error, _, fail) {\n if (!hasBranchDeletionError(String(error), exitCode)) {\n return fail(error);\n }\n throw new GitResponseError(\n task.parser(bufferToString(stdOut), bufferToString(stdErr)),\n String(error)\n );\n }\n };\n return task;\n}\nvar init_branch = __esm({\n \"src/lib/tasks/branch.ts\"() {\n \"use strict\";\n init_git_response_error();\n init_parse_branch_delete();\n init_parse_branch();\n init_utils();\n }\n});\n\n// src/lib/responses/CheckIgnore.ts\nimport { normalize } from \"node:path\";\nfunction toPath(input) {\n const path = input.trim().replace(/^[\"']|[\"']$/g, \"\");\n return path && normalize(path);\n}\nvar parseCheckIgnore;\nvar init_CheckIgnore = __esm({\n \"src/lib/responses/CheckIgnore.ts\"() {\n \"use strict\";\n parseCheckIgnore = (text) => {\n return text.split(/\\n/g).map(toPath).filter(Boolean);\n };\n }\n});\n\n// src/lib/tasks/check-ignore.ts\nvar check_ignore_exports = {};\n__export(check_ignore_exports, {\n checkIgnoreTask: () => checkIgnoreTask\n});\nfunction checkIgnoreTask(paths) {\n return {\n commands: [\"check-ignore\", ...paths],\n format: \"utf-8\",\n parser: parseCheckIgnore\n };\n}\nvar init_check_ignore = __esm({\n \"src/lib/tasks/check-ignore.ts\"() {\n \"use strict\";\n init_CheckIgnore();\n }\n});\n\n// src/lib/tasks/clone.ts\nvar clone_exports = {};\n__export(clone_exports, {\n cloneMirrorTask: () => cloneMirrorTask,\n cloneTask: () => cloneTask\n});\nfunction disallowedCommand(command) {\n return /^--upload-pack(=|$)/.test(command);\n}\nfunction cloneTask(repo, directory, customArgs) {\n const commands = [\"clone\", ...customArgs];\n filterString(repo) && commands.push(repo);\n filterString(directory) && commands.push(directory);\n const banned = commands.find(disallowedCommand);\n if (banned) {\n return configurationErrorTask(`git.fetch: potential exploit argument blocked.`);\n }\n return straightThroughStringTask(commands);\n}\nfunction cloneMirrorTask(repo, directory, customArgs) {\n append(customArgs, \"--mirror\");\n return cloneTask(repo, directory, customArgs);\n}\nvar init_clone = __esm({\n \"src/lib/tasks/clone.ts\"() {\n \"use strict\";\n init_task();\n init_utils();\n }\n});\n\n// src/lib/parsers/parse-fetch.ts\nfunction parseFetchResult(stdOut, stdErr) {\n const result = {\n raw: stdOut,\n remote: null,\n branches: [],\n tags: [],\n updated: [],\n deleted: []\n };\n return parseStringResponse(result, parsers10, [stdOut, stdErr]);\n}\nvar parsers10;\nvar init_parse_fetch = __esm({\n \"src/lib/parsers/parse-fetch.ts\"() {\n \"use strict\";\n init_utils();\n parsers10 = [\n new LineParser(/From (.+)$/, (result, [remote]) => {\n result.remote = remote;\n }),\n new LineParser(/\\* \\[new branch]\\s+(\\S+)\\s*-> (.+)$/, (result, [name, tracking]) => {\n result.branches.push({\n name,\n tracking\n });\n }),\n new LineParser(/\\* \\[new tag]\\s+(\\S+)\\s*-> (.+)$/, (result, [name, tracking]) => {\n result.tags.push({\n name,\n tracking\n });\n }),\n new LineParser(/- \\[deleted]\\s+\\S+\\s*-> (.+)$/, (result, [tracking]) => {\n result.deleted.push({\n tracking\n });\n }),\n new LineParser(\n /\\s*([^.]+)\\.\\.(\\S+)\\s+(\\S+)\\s*-> (.+)$/,\n (result, [from, to, name, tracking]) => {\n result.updated.push({\n name,\n tracking,\n to,\n from\n });\n }\n )\n ];\n }\n});\n\n// src/lib/tasks/fetch.ts\nvar fetch_exports = {};\n__export(fetch_exports, {\n fetchTask: () => fetchTask\n});\nfunction disallowedCommand2(command) {\n return /^--upload-pack(=|$)/.test(command);\n}\nfunction fetchTask(remote, branch, customArgs) {\n const commands = [\"fetch\", ...customArgs];\n if (remote && branch) {\n commands.push(remote, branch);\n }\n const banned = commands.find(disallowedCommand2);\n if (banned) {\n return configurationErrorTask(`git.fetch: potential exploit argument blocked.`);\n }\n return {\n commands,\n format: \"utf-8\",\n parser: parseFetchResult\n };\n}\nvar init_fetch = __esm({\n \"src/lib/tasks/fetch.ts\"() {\n \"use strict\";\n init_parse_fetch();\n init_task();\n }\n});\n\n// src/lib/parsers/parse-move.ts\nfunction parseMoveResult(stdOut) {\n return parseStringResponse({ moves: [] }, parsers11, stdOut);\n}\nvar parsers11;\nvar init_parse_move = __esm({\n \"src/lib/parsers/parse-move.ts\"() {\n \"use strict\";\n init_utils();\n parsers11 = [\n new LineParser(/^Renaming (.+) to (.+)$/, (result, [from, to]) => {\n result.moves.push({ from, to });\n })\n ];\n }\n});\n\n// src/lib/tasks/move.ts\nvar move_exports = {};\n__export(move_exports, {\n moveTask: () => moveTask\n});\nfunction moveTask(from, to) {\n return {\n commands: [\"mv\", \"-v\", ...asArray(from), to],\n format: \"utf-8\",\n parser: parseMoveResult\n };\n}\nvar init_move = __esm({\n \"src/lib/tasks/move.ts\"() {\n \"use strict\";\n init_parse_move();\n init_utils();\n }\n});\n\n// src/lib/tasks/pull.ts\nvar pull_exports = {};\n__export(pull_exports, {\n pullTask: () => pullTask\n});\nfunction pullTask(remote, branch, customArgs) {\n const commands = [\"pull\", ...customArgs];\n if (remote && branch) {\n commands.splice(1, 0, remote, branch);\n }\n return {\n commands,\n format: \"utf-8\",\n parser(stdOut, stdErr) {\n return parsePullResult(stdOut, stdErr);\n },\n onError(result, _error, _done, fail) {\n const pullError = parsePullErrorResult(\n bufferToString(result.stdOut),\n bufferToString(result.stdErr)\n );\n if (pullError) {\n return fail(new GitResponseError(pullError));\n }\n fail(_error);\n }\n };\n}\nvar init_pull = __esm({\n \"src/lib/tasks/pull.ts\"() {\n \"use strict\";\n init_git_response_error();\n init_parse_pull();\n init_utils();\n }\n});\n\n// src/lib/responses/GetRemoteSummary.ts\nfunction parseGetRemotes(text) {\n const remotes = {};\n forEach(text, ([name]) => remotes[name] = { name });\n return Object.values(remotes);\n}\nfunction parseGetRemotesVerbose(text) {\n const remotes = {};\n forEach(text, ([name, url, purpose]) => {\n if (!Object.hasOwn(remotes, name)) {\n remotes[name] = {\n name,\n refs: { fetch: \"\", push: \"\" }\n };\n }\n if (purpose && url) {\n remotes[name].refs[purpose.replace(/[^a-z]/g, \"\")] = url;\n }\n });\n return Object.values(remotes);\n}\nfunction forEach(text, handler) {\n forEachLineWithContent(text, (line) => handler(line.split(/\\s+/)));\n}\nvar init_GetRemoteSummary = __esm({\n \"src/lib/responses/GetRemoteSummary.ts\"() {\n \"use strict\";\n init_utils();\n }\n});\n\n// src/lib/tasks/remote.ts\nvar remote_exports = {};\n__export(remote_exports, {\n addRemoteTask: () => addRemoteTask,\n getRemotesTask: () => getRemotesTask,\n listRemotesTask: () => listRemotesTask,\n remoteTask: () => remoteTask,\n removeRemoteTask: () => removeRemoteTask\n});\nfunction addRemoteTask(remoteName, remoteRepo, customArgs) {\n return straightThroughStringTask([\"remote\", \"add\", ...customArgs, remoteName, remoteRepo]);\n}\nfunction getRemotesTask(verbose) {\n const commands = [\"remote\"];\n if (verbose) {\n commands.push(\"-v\");\n }\n return {\n commands,\n format: \"utf-8\",\n parser: verbose ? parseGetRemotesVerbose : parseGetRemotes\n };\n}\nfunction listRemotesTask(customArgs) {\n const commands = [...customArgs];\n if (commands[0] !== \"ls-remote\") {\n commands.unshift(\"ls-remote\");\n }\n return straightThroughStringTask(commands);\n}\nfunction remoteTask(customArgs) {\n const commands = [...customArgs];\n if (commands[0] !== \"remote\") {\n commands.unshift(\"remote\");\n }\n return straightThroughStringTask(commands);\n}\nfunction removeRemoteTask(remoteName) {\n return straightThroughStringTask([\"remote\", \"remove\", remoteName]);\n}\nvar init_remote = __esm({\n \"src/lib/tasks/remote.ts\"() {\n \"use strict\";\n init_GetRemoteSummary();\n init_task();\n }\n});\n\n// src/lib/tasks/stash-list.ts\nvar stash_list_exports = {};\n__export(stash_list_exports, {\n stashListTask: () => stashListTask\n});\nfunction stashListTask(opt = {}, customArgs) {\n const options = parseLogOptions(opt);\n const commands = [\"stash\", \"list\", ...options.commands, ...customArgs];\n const parser4 = createListLogSummaryParser(\n options.splitter,\n options.fields,\n logFormatFromCommand(commands)\n );\n return validateLogFormatConfig(commands) || {\n commands,\n format: \"utf-8\",\n parser: parser4\n };\n}\nvar init_stash_list = __esm({\n \"src/lib/tasks/stash-list.ts\"() {\n \"use strict\";\n init_log_format();\n init_parse_list_log_summary();\n init_diff();\n init_log();\n }\n});\n\n// src/lib/tasks/sub-module.ts\nvar sub_module_exports = {};\n__export(sub_module_exports, {\n addSubModuleTask: () => addSubModuleTask,\n initSubModuleTask: () => initSubModuleTask,\n subModuleTask: () => subModuleTask,\n updateSubModuleTask: () => updateSubModuleTask\n});\nfunction addSubModuleTask(repo, path) {\n return subModuleTask([\"add\", repo, path]);\n}\nfunction initSubModuleTask(customArgs) {\n return subModuleTask([\"init\", ...customArgs]);\n}\nfunction subModuleTask(customArgs) {\n const commands = [...customArgs];\n if (commands[0] !== \"submodule\") {\n commands.unshift(\"submodule\");\n }\n return straightThroughStringTask(commands);\n}\nfunction updateSubModuleTask(customArgs) {\n return subModuleTask([\"update\", ...customArgs]);\n}\nvar init_sub_module = __esm({\n \"src/lib/tasks/sub-module.ts\"() {\n \"use strict\";\n init_task();\n }\n});\n\n// src/lib/responses/TagList.ts\nfunction singleSorted(a, b) {\n const aIsNum = Number.isNaN(a);\n const bIsNum = Number.isNaN(b);\n if (aIsNum !== bIsNum) {\n return aIsNum ? 1 : -1;\n }\n return aIsNum ? sorted(a, b) : 0;\n}\nfunction sorted(a, b) {\n return a === b ? 0 : a > b ? 1 : -1;\n}\nfunction trimmed(input) {\n return input.trim();\n}\nfunction toNumber(input) {\n if (typeof input === \"string\") {\n return parseInt(input.replace(/^\\D+/g, \"\"), 10) || 0;\n }\n return 0;\n}\nvar TagList, parseTagList;\nvar init_TagList = __esm({\n \"src/lib/responses/TagList.ts\"() {\n \"use strict\";\n TagList = class {\n constructor(all, latest) {\n this.all = all;\n this.latest = latest;\n }\n };\n parseTagList = function(data, customSort = false) {\n const tags = data.split(\"\\n\").map(trimmed).filter(Boolean);\n if (!customSort) {\n tags.sort(function(tagA, tagB) {\n const partsA = tagA.split(\".\");\n const partsB = tagB.split(\".\");\n if (partsA.length === 1 || partsB.length === 1) {\n return singleSorted(toNumber(partsA[0]), toNumber(partsB[0]));\n }\n for (let i = 0, l = Math.max(partsA.length, partsB.length); i < l; i++) {\n const diff = sorted(toNumber(partsA[i]), toNumber(partsB[i]));\n if (diff) {\n return diff;\n }\n }\n return 0;\n });\n }\n const latest = customSort ? tags[0] : [...tags].reverse().find((tag) => tag.indexOf(\".\") >= 0);\n return new TagList(tags, latest);\n };\n }\n});\n\n// src/lib/tasks/tag.ts\nvar tag_exports = {};\n__export(tag_exports, {\n addAnnotatedTagTask: () => addAnnotatedTagTask,\n addTagTask: () => addTagTask,\n tagListTask: () => tagListTask\n});\nfunction tagListTask(customArgs = []) {\n const hasCustomSort = customArgs.some((option) => /^--sort=/.test(option));\n return {\n format: \"utf-8\",\n commands: [\"tag\", \"-l\", ...customArgs],\n parser(text) {\n return parseTagList(text, hasCustomSort);\n }\n };\n}\nfunction addTagTask(name) {\n return {\n format: \"utf-8\",\n commands: [\"tag\", name],\n parser() {\n return { name };\n }\n };\n}\nfunction addAnnotatedTagTask(name, tagMessage) {\n return {\n format: \"utf-8\",\n commands: [\"tag\", \"-a\", \"-m\", tagMessage, name],\n parser() {\n return { name };\n }\n };\n}\nvar init_tag = __esm({\n \"src/lib/tasks/tag.ts\"() {\n \"use strict\";\n init_TagList();\n }\n});\n\n// src/git.js\nvar require_git = __commonJS({\n \"src/git.js\"(exports, module) {\n \"use strict\";\n var { GitExecutor: GitExecutor2 } = (init_git_executor(), __toCommonJS(git_executor_exports));\n var { SimpleGitApi: SimpleGitApi2 } = (init_simple_git_api(), __toCommonJS(simple_git_api_exports));\n var { Scheduler: Scheduler2 } = (init_scheduler(), __toCommonJS(scheduler_exports));\n var { adhocExecTask: adhocExecTask2, configurationErrorTask: configurationErrorTask2 } = (init_task(), __toCommonJS(task_exports));\n var {\n asArray: asArray2,\n filterArray: filterArray2,\n filterPrimitives: filterPrimitives2,\n filterString: filterString2,\n filterStringOrStringArray: filterStringOrStringArray2,\n filterType: filterType2,\n getTrailingOptions: getTrailingOptions2,\n trailingFunctionArgument: trailingFunctionArgument2,\n trailingOptionsArgument: trailingOptionsArgument2\n } = (init_utils(), __toCommonJS(utils_exports));\n var { applyPatchTask: applyPatchTask2 } = (init_apply_patch(), __toCommonJS(apply_patch_exports));\n var {\n branchTask: branchTask2,\n branchLocalTask: branchLocalTask2,\n deleteBranchesTask: deleteBranchesTask2,\n deleteBranchTask: deleteBranchTask2\n } = (init_branch(), __toCommonJS(branch_exports));\n var { checkIgnoreTask: checkIgnoreTask2 } = (init_check_ignore(), __toCommonJS(check_ignore_exports));\n var { checkIsRepoTask: checkIsRepoTask2 } = (init_check_is_repo(), __toCommonJS(check_is_repo_exports));\n var { cloneTask: cloneTask2, cloneMirrorTask: cloneMirrorTask2 } = (init_clone(), __toCommonJS(clone_exports));\n var { cleanWithOptionsTask: cleanWithOptionsTask2, isCleanOptionsArray: isCleanOptionsArray2 } = (init_clean(), __toCommonJS(clean_exports));\n var { diffSummaryTask: diffSummaryTask2 } = (init_diff(), __toCommonJS(diff_exports));\n var { fetchTask: fetchTask2 } = (init_fetch(), __toCommonJS(fetch_exports));\n var { moveTask: moveTask2 } = (init_move(), __toCommonJS(move_exports));\n var { pullTask: pullTask2 } = (init_pull(), __toCommonJS(pull_exports));\n var { pushTagsTask: pushTagsTask2 } = (init_push(), __toCommonJS(push_exports));\n var {\n addRemoteTask: addRemoteTask2,\n getRemotesTask: getRemotesTask2,\n listRemotesTask: listRemotesTask2,\n remoteTask: remoteTask2,\n removeRemoteTask: removeRemoteTask2\n } = (init_remote(), __toCommonJS(remote_exports));\n var { getResetMode: getResetMode2, resetTask: resetTask2 } = (init_reset(), __toCommonJS(reset_exports));\n var { stashListTask: stashListTask2 } = (init_stash_list(), __toCommonJS(stash_list_exports));\n var {\n addSubModuleTask: addSubModuleTask2,\n initSubModuleTask: initSubModuleTask2,\n subModuleTask: subModuleTask2,\n updateSubModuleTask: updateSubModuleTask2\n } = (init_sub_module(), __toCommonJS(sub_module_exports));\n var { addAnnotatedTagTask: addAnnotatedTagTask2, addTagTask: addTagTask2, tagListTask: tagListTask2 } = (init_tag(), __toCommonJS(tag_exports));\n var { straightThroughBufferTask: straightThroughBufferTask2, straightThroughStringTask: straightThroughStringTask2 } = (init_task(), __toCommonJS(task_exports));\n function Git2(options, plugins) {\n this._plugins = plugins;\n this._executor = new GitExecutor2(\n options.baseDir,\n new Scheduler2(options.maxConcurrentProcesses),\n plugins\n );\n this._trimmed = options.trimmed;\n }\n (Git2.prototype = Object.create(SimpleGitApi2.prototype)).constructor = Git2;\n Git2.prototype.customBinary = function(command) {\n this._plugins.reconfigure(\"binary\", command);\n return this;\n };\n Git2.prototype.env = function(name, value) {\n if (arguments.length === 1 && typeof name === \"object\") {\n this._executor.env = name;\n } else {\n (this._executor.env = this._executor.env || {})[name] = value;\n }\n return this;\n };\n Git2.prototype.stashList = function(options) {\n return this._runTask(\n stashListTask2(\n trailingOptionsArgument2(arguments) || {},\n filterArray2(options) && options || []\n ),\n trailingFunctionArgument2(arguments)\n );\n };\n function createCloneTask(api, task, repoPath, localPath) {\n if (typeof repoPath !== \"string\") {\n return configurationErrorTask2(`git.${api}() requires a string 'repoPath'`);\n }\n return task(repoPath, filterType2(localPath, filterString2), getTrailingOptions2(arguments));\n }\n Git2.prototype.clone = function() {\n return this._runTask(\n createCloneTask(\"clone\", cloneTask2, ...arguments),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.mirror = function() {\n return this._runTask(\n createCloneTask(\"mirror\", cloneMirrorTask2, ...arguments),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.mv = function(from, to) {\n return this._runTask(moveTask2(from, to), trailingFunctionArgument2(arguments));\n };\n Git2.prototype.checkoutLatestTag = function(then) {\n var git = this;\n return this.pull(function() {\n git.tags(function(err, tags) {\n git.checkout(tags.latest, then);\n });\n });\n };\n Git2.prototype.pull = function(remote, branch, options, then) {\n return this._runTask(\n pullTask2(\n filterType2(remote, filterString2),\n filterType2(branch, filterString2),\n getTrailingOptions2(arguments)\n ),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.fetch = function(remote, branch) {\n return this._runTask(\n fetchTask2(\n filterType2(remote, filterString2),\n filterType2(branch, filterString2),\n getTrailingOptions2(arguments)\n ),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.silent = function(silence) {\n return this._runTask(\n adhocExecTask2(\n () => console.warn(\n \"simple-git deprecation notice: git.silent: logging should be configured using the `debug` library / `DEBUG` environment variable, this method will be removed.\"\n )\n )\n );\n };\n Git2.prototype.tags = function(options, then) {\n return this._runTask(\n tagListTask2(getTrailingOptions2(arguments)),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.rebase = function() {\n return this._runTask(\n straightThroughStringTask2([\"rebase\", ...getTrailingOptions2(arguments)]),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.reset = function(mode) {\n return this._runTask(\n resetTask2(getResetMode2(mode), getTrailingOptions2(arguments)),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.revert = function(commit) {\n const next = trailingFunctionArgument2(arguments);\n if (typeof commit !== \"string\") {\n return this._runTask(configurationErrorTask2(\"Commit must be a string\"), next);\n }\n return this._runTask(\n straightThroughStringTask2([\"revert\", ...getTrailingOptions2(arguments, 0, true), commit]),\n next\n );\n };\n Git2.prototype.addTag = function(name) {\n const task = typeof name === \"string\" ? addTagTask2(name) : configurationErrorTask2(\"Git.addTag requires a tag name\");\n return this._runTask(task, trailingFunctionArgument2(arguments));\n };\n Git2.prototype.addAnnotatedTag = function(tagName, tagMessage) {\n return this._runTask(\n addAnnotatedTagTask2(tagName, tagMessage),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.deleteLocalBranch = function(branchName, forceDelete, then) {\n return this._runTask(\n deleteBranchTask2(branchName, typeof forceDelete === \"boolean\" ? forceDelete : false),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.deleteLocalBranches = function(branchNames, forceDelete, then) {\n return this._runTask(\n deleteBranchesTask2(branchNames, typeof forceDelete === \"boolean\" ? forceDelete : false),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.branch = function(options, then) {\n return this._runTask(\n branchTask2(getTrailingOptions2(arguments)),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.branchLocal = function(then) {\n return this._runTask(branchLocalTask2(), trailingFunctionArgument2(arguments));\n };\n Git2.prototype.raw = function(commands) {\n const createRestCommands = !Array.isArray(commands);\n const command = [].slice.call(createRestCommands ? arguments : commands, 0);\n for (let i = 0; i < command.length && createRestCommands; i++) {\n if (!filterPrimitives2(command[i])) {\n command.splice(i, command.length - i);\n break;\n }\n }\n command.push(...getTrailingOptions2(arguments, 0, true));\n var next = trailingFunctionArgument2(arguments);\n if (!command.length) {\n return this._runTask(\n configurationErrorTask2(\"Raw: must supply one or more command to execute\"),\n next\n );\n }\n return this._runTask(straightThroughStringTask2(command, this._trimmed), next);\n };\n Git2.prototype.submoduleAdd = function(repo, path, then) {\n return this._runTask(addSubModuleTask2(repo, path), trailingFunctionArgument2(arguments));\n };\n Git2.prototype.submoduleUpdate = function(args, then) {\n return this._runTask(\n updateSubModuleTask2(getTrailingOptions2(arguments, true)),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.submoduleInit = function(args, then) {\n return this._runTask(\n initSubModuleTask2(getTrailingOptions2(arguments, true)),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.subModule = function(options, then) {\n return this._runTask(\n subModuleTask2(getTrailingOptions2(arguments)),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.listRemote = function() {\n return this._runTask(\n listRemotesTask2(getTrailingOptions2(arguments)),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.addRemote = function(remoteName, remoteRepo, then) {\n return this._runTask(\n addRemoteTask2(remoteName, remoteRepo, getTrailingOptions2(arguments)),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.removeRemote = function(remoteName, then) {\n return this._runTask(removeRemoteTask2(remoteName), trailingFunctionArgument2(arguments));\n };\n Git2.prototype.getRemotes = function(verbose, then) {\n return this._runTask(getRemotesTask2(verbose === true), trailingFunctionArgument2(arguments));\n };\n Git2.prototype.remote = function(options, then) {\n return this._runTask(\n remoteTask2(getTrailingOptions2(arguments)),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.tag = function(options, then) {\n const command = getTrailingOptions2(arguments);\n if (command[0] !== \"tag\") {\n command.unshift(\"tag\");\n }\n return this._runTask(straightThroughStringTask2(command), trailingFunctionArgument2(arguments));\n };\n Git2.prototype.updateServerInfo = function(then) {\n return this._runTask(\n straightThroughStringTask2([\"update-server-info\"]),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.pushTags = function(remote, then) {\n const task = pushTagsTask2(\n { remote: filterType2(remote, filterString2) },\n getTrailingOptions2(arguments)\n );\n return this._runTask(task, trailingFunctionArgument2(arguments));\n };\n Git2.prototype.rm = function(files) {\n return this._runTask(\n straightThroughStringTask2([\"rm\", \"-f\", ...asArray2(files)]),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.rmKeepLocal = function(files) {\n return this._runTask(\n straightThroughStringTask2([\"rm\", \"--cached\", ...asArray2(files)]),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.catFile = function(options, then) {\n return this._catFile(\"utf-8\", arguments);\n };\n Git2.prototype.binaryCatFile = function() {\n return this._catFile(\"buffer\", arguments);\n };\n Git2.prototype._catFile = function(format, args) {\n var handler = trailingFunctionArgument2(args);\n var command = [\"cat-file\"];\n var options = args[0];\n if (typeof options === \"string\") {\n return this._runTask(\n configurationErrorTask2(\"Git.catFile: options must be supplied as an array of strings\"),\n handler\n );\n }\n if (Array.isArray(options)) {\n command.push.apply(command, options);\n }\n const task = format === \"buffer\" ? straightThroughBufferTask2(command) : straightThroughStringTask2(command);\n return this._runTask(task, handler);\n };\n Git2.prototype.diff = function(options, then) {\n const task = filterString2(options) ? configurationErrorTask2(\n \"git.diff: supplying options as a single string is no longer supported, switch to an array of strings\"\n ) : straightThroughStringTask2([\"diff\", ...getTrailingOptions2(arguments)]);\n return this._runTask(task, trailingFunctionArgument2(arguments));\n };\n Git2.prototype.diffSummary = function() {\n return this._runTask(\n diffSummaryTask2(getTrailingOptions2(arguments, 1)),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.applyPatch = function(patches) {\n const task = !filterStringOrStringArray2(patches) ? configurationErrorTask2(\n `git.applyPatch requires one or more string patches as the first argument`\n ) : applyPatchTask2(asArray2(patches), getTrailingOptions2([].slice.call(arguments, 1)));\n return this._runTask(task, trailingFunctionArgument2(arguments));\n };\n Git2.prototype.revparse = function() {\n const commands = [\"rev-parse\", ...getTrailingOptions2(arguments, true)];\n return this._runTask(\n straightThroughStringTask2(commands, true),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.clean = function(mode, options, then) {\n const usingCleanOptionsArray = isCleanOptionsArray2(mode);\n const cleanMode = usingCleanOptionsArray && mode.join(\"\") || filterType2(mode, filterString2) || \"\";\n const customArgs = getTrailingOptions2([].slice.call(arguments, usingCleanOptionsArray ? 1 : 0));\n return this._runTask(\n cleanWithOptionsTask2(cleanMode, customArgs),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.exec = function(then) {\n const task = {\n commands: [],\n format: \"utf-8\",\n parser() {\n if (typeof then === \"function\") {\n then();\n }\n }\n };\n return this._runTask(task);\n };\n Git2.prototype.clearQueue = function() {\n return this._runTask(\n adhocExecTask2(\n () => console.warn(\n \"simple-git deprecation notice: clearQueue() is deprecated and will be removed, switch to using the abortPlugin instead.\"\n )\n )\n );\n };\n Git2.prototype.checkIgnore = function(pathnames, then) {\n return this._runTask(\n checkIgnoreTask2(asArray2(filterType2(pathnames, filterStringOrStringArray2, []))),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.checkIsRepo = function(checkType, then) {\n return this._runTask(\n checkIsRepoTask2(filterType2(checkType, filterString2)),\n trailingFunctionArgument2(arguments)\n );\n };\n module.exports = Git2;\n }\n});\n\n// src/lib/api.ts\ninit_pathspec();\n\n// src/lib/errors/git-construct-error.ts\ninit_git_error();\nvar GitConstructError = class extends GitError {\n constructor(config, message) {\n super(void 0, message);\n this.config = config;\n }\n};\n\n// src/lib/api.ts\ninit_git_error();\n\n// src/lib/errors/git-plugin-error.ts\ninit_git_error();\nvar GitPluginError = class extends GitError {\n constructor(task, plugin, message) {\n super(task, message);\n this.task = task;\n this.plugin = plugin;\n Object.setPrototypeOf(this, new.target.prototype);\n }\n};\n\n// src/lib/api.ts\ninit_git_response_error();\ninit_task_configuration_error();\ninit_check_is_repo();\ninit_clean();\ninit_config();\ninit_diff_name_status();\ninit_grep();\ninit_reset();\n\n// src/lib/plugins/abort-plugin.ts\nfunction abortPlugin(signal) {\n if (!signal) {\n return;\n }\n const onSpawnAfter = {\n type: \"spawn.after\",\n action(_data, context) {\n function kill() {\n context.kill(new GitPluginError(void 0, \"abort\", \"Abort signal received\"));\n }\n signal.addEventListener(\"abort\", kill);\n context.spawned.on(\"close\", () => signal.removeEventListener(\"abort\", kill));\n }\n };\n const onSpawnBefore = {\n type: \"spawn.before\",\n action(_data, context) {\n if (signal.aborted) {\n context.kill(new GitPluginError(void 0, \"abort\", \"Abort already signaled\"));\n }\n }\n };\n return [onSpawnBefore, onSpawnAfter];\n}\n\n// src/lib/plugins/block-unsafe-operations-plugin.ts\nfunction isConfigSwitch(arg) {\n return typeof arg === \"string\" && arg.trim().toLowerCase() === \"-c\";\n}\nfunction isCloneSwitch(char, arg) {\n if (typeof arg !== \"string\" || !arg.includes(char)) {\n return false;\n }\n const token = arg.replace(/\\0g/, \"\").replace(/^(--no)?-{1,2}/, \"\");\n return /^[\\dlsqvnobucj]+\\b/.test(token);\n}\nfunction preventProtocolOverride(arg, next) {\n if (!isConfigSwitch(arg)) {\n return;\n }\n if (!/^\\s*protocol(.[a-z]+)?.allow/.test(next)) {\n return;\n }\n throw new GitPluginError(\n void 0,\n \"unsafe\",\n \"Configuring protocol.allow is not permitted without enabling allowUnsafeExtProtocol\"\n );\n}\nfunction preventUploadPack(arg, method) {\n if (/^\\s*--(upload|receive)-pack/.test(arg)) {\n throw new GitPluginError(\n void 0,\n \"unsafe\",\n `Use of --upload-pack or --receive-pack is not permitted without enabling allowUnsafePack`\n );\n }\n if (method === \"clone\" && isCloneSwitch(\"u\", arg)) {\n throw new GitPluginError(\n void 0,\n \"unsafe\",\n `Use of clone with option -u is not permitted without enabling allowUnsafePack`\n );\n }\n if (method === \"push\" && /^\\s*--exec\\b/.test(arg)) {\n throw new GitPluginError(\n void 0,\n \"unsafe\",\n `Use of push with option --exec is not permitted without enabling allowUnsafePack`\n );\n }\n}\nfunction blockUnsafeOperationsPlugin({\n allowUnsafeProtocolOverride = false,\n allowUnsafePack = false\n} = {}) {\n return {\n type: \"spawn.args\",\n action(args, context) {\n args.forEach((current, index) => {\n const next = index < args.length ? args[index + 1] : \"\";\n allowUnsafeProtocolOverride || preventProtocolOverride(current, next);\n allowUnsafePack || preventUploadPack(current, context.method);\n });\n return args;\n }\n };\n}\n\n// src/lib/plugins/command-config-prefixing-plugin.ts\ninit_utils();\nfunction commandConfigPrefixingPlugin(configuration) {\n const prefix = prefixedArray(configuration, \"-c\");\n return {\n type: \"spawn.args\",\n action(data) {\n return [...prefix, ...data];\n }\n };\n}\n\n// src/lib/plugins/completion-detection.plugin.ts\ninit_utils();\nimport { deferred } from \"@kwsites/promise-deferred\";\nvar never = deferred().promise;\nfunction completionDetectionPlugin({\n onClose = true,\n onExit = 50\n} = {}) {\n function createEvents() {\n let exitCode = -1;\n const events = {\n close: deferred(),\n closeTimeout: deferred(),\n exit: deferred(),\n exitTimeout: deferred()\n };\n const result = Promise.race([\n onClose === false ? never : events.closeTimeout.promise,\n onExit === false ? never : events.exitTimeout.promise\n ]);\n configureTimeout(onClose, events.close, events.closeTimeout);\n configureTimeout(onExit, events.exit, events.exitTimeout);\n return {\n close(code) {\n exitCode = code;\n events.close.done();\n },\n exit(code) {\n exitCode = code;\n events.exit.done();\n },\n get exitCode() {\n return exitCode;\n },\n result\n };\n }\n function configureTimeout(flag, event, timeout) {\n if (flag === false) {\n return;\n }\n (flag === true ? event.promise : event.promise.then(() => delay(flag))).then(timeout.done);\n }\n return {\n type: \"spawn.after\",\n async action(_data, { spawned, close }) {\n const events = createEvents();\n let deferClose = true;\n let quickClose = () => void (deferClose = false);\n spawned.stdout?.on(\"data\", quickClose);\n spawned.stderr?.on(\"data\", quickClose);\n spawned.on(\"error\", quickClose);\n spawned.on(\"close\", (code) => events.close(code));\n spawned.on(\"exit\", (code) => events.exit(code));\n try {\n await events.result;\n if (deferClose) {\n await delay(50);\n }\n close(events.exitCode);\n } catch (err) {\n close(events.exitCode, err);\n }\n }\n };\n}\n\n// src/lib/plugins/custom-binary.plugin.ts\ninit_utils();\nvar WRONG_NUMBER_ERR = `Invalid value supplied for custom binary, requires a single string or an array containing either one or two strings`;\nvar WRONG_CHARS_ERR = `Invalid value supplied for custom binary, restricted characters must be removed or supply the unsafe.allowUnsafeCustomBinary option`;\nfunction isBadArgument(arg) {\n return !arg || !/^([a-z]:)?([a-z0-9/.\\\\_~-]+)$/i.test(arg);\n}\nfunction toBinaryConfig(input, allowUnsafe) {\n if (input.length < 1 || input.length > 2) {\n throw new GitPluginError(void 0, \"binary\", WRONG_NUMBER_ERR);\n }\n const isBad = input.some(isBadArgument);\n if (isBad) {\n if (allowUnsafe) {\n console.warn(WRONG_CHARS_ERR);\n } else {\n throw new GitPluginError(void 0, \"binary\", WRONG_CHARS_ERR);\n }\n }\n const [binary, prefix] = input;\n return {\n binary,\n prefix\n };\n}\nfunction customBinaryPlugin(plugins, input = [\"git\"], allowUnsafe = false) {\n let config = toBinaryConfig(asArray(input), allowUnsafe);\n plugins.on(\"binary\", (input2) => {\n config = toBinaryConfig(asArray(input2), allowUnsafe);\n });\n plugins.append(\"spawn.binary\", () => {\n return config.binary;\n });\n plugins.append(\"spawn.args\", (data) => {\n return config.prefix ? [config.prefix, ...data] : data;\n });\n}\n\n// src/lib/plugins/error-detection.plugin.ts\ninit_git_error();\nfunction isTaskError(result) {\n return !!(result.exitCode && result.stdErr.length);\n}\nfunction getErrorMessage(result) {\n return Buffer.concat([...result.stdOut, ...result.stdErr]);\n}\nfunction errorDetectionHandler(overwrite = false, isError = isTaskError, errorMessage = getErrorMessage) {\n return (error, result) => {\n if (!overwrite && error || !isError(result)) {\n return error;\n }\n return errorMessage(result);\n };\n}\nfunction errorDetectionPlugin(config) {\n return {\n type: \"task.error\",\n action(data, context) {\n const error = config(data.error, {\n stdErr: context.stdErr,\n stdOut: context.stdOut,\n exitCode: context.exitCode\n });\n if (Buffer.isBuffer(error)) {\n return { error: new GitError(void 0, error.toString(\"utf-8\")) };\n }\n return {\n error\n };\n }\n };\n}\n\n// src/lib/plugins/plugin-store.ts\ninit_utils();\nimport { EventEmitter } from \"node:events\";\nvar PluginStore = class {\n constructor() {\n this.plugins = /* @__PURE__ */ new Set();\n this.events = new EventEmitter();\n }\n on(type, listener) {\n this.events.on(type, listener);\n }\n reconfigure(type, data) {\n this.events.emit(type, data);\n }\n append(type, action) {\n const plugin = append(this.plugins, { type, action });\n return () => this.plugins.delete(plugin);\n }\n add(plugin) {\n const plugins = [];\n asArray(plugin).forEach((plugin2) => plugin2 && this.plugins.add(append(plugins, plugin2)));\n return () => {\n plugins.forEach((plugin2) => this.plugins.delete(plugin2));\n };\n }\n exec(type, data, context) {\n let output = data;\n const contextual = Object.freeze(Object.create(context));\n for (const plugin of this.plugins) {\n if (plugin.type === type) {\n output = plugin.action(output, contextual);\n }\n }\n return output;\n }\n};\n\n// src/lib/plugins/progress-monitor-plugin.ts\ninit_utils();\nfunction progressMonitorPlugin(progress) {\n const progressCommand = \"--progress\";\n const progressMethods = [\"checkout\", \"clone\", \"fetch\", \"pull\", \"push\"];\n const onProgress = {\n type: \"spawn.after\",\n action(_data, context) {\n if (!context.commands.includes(progressCommand)) {\n return;\n }\n context.spawned.stderr?.on(\"data\", (chunk) => {\n const message = /^([\\s\\S]+?):\\s*(\\d+)% \\((\\d+)\\/(\\d+)\\)/.exec(chunk.toString(\"utf8\"));\n if (!message) {\n return;\n }\n progress({\n method: context.method,\n stage: progressEventStage(message[1]),\n progress: asNumber(message[2]),\n processed: asNumber(message[3]),\n total: asNumber(message[4])\n });\n });\n }\n };\n const onArgs = {\n type: \"spawn.args\",\n action(args, context) {\n if (!progressMethods.includes(context.method)) {\n return args;\n }\n return including(args, progressCommand);\n }\n };\n return [onArgs, onProgress];\n}\nfunction progressEventStage(input) {\n return String(input.toLowerCase().split(\" \", 1)) || \"unknown\";\n}\n\n// src/lib/plugins/spawn-options-plugin.ts\ninit_utils();\nfunction spawnOptionsPlugin(spawnOptions) {\n const options = pick(spawnOptions, [\"uid\", \"gid\"]);\n return {\n type: \"spawn.options\",\n action(data) {\n return { ...options, ...data };\n }\n };\n}\n\n// src/lib/plugins/timout-plugin.ts\nfunction timeoutPlugin({\n block,\n stdErr = true,\n stdOut = true\n}) {\n if (block > 0) {\n return {\n type: \"spawn.after\",\n action(_data, context) {\n let timeout;\n function wait() {\n timeout && clearTimeout(timeout);\n timeout = setTimeout(kill, block);\n }\n function stop() {\n context.spawned.stdout?.off(\"data\", wait);\n context.spawned.stderr?.off(\"data\", wait);\n context.spawned.off(\"exit\", stop);\n context.spawned.off(\"close\", stop);\n timeout && clearTimeout(timeout);\n }\n function kill() {\n stop();\n context.kill(new GitPluginError(void 0, \"timeout\", `block timeout reached`));\n }\n stdOut && context.spawned.stdout?.on(\"data\", wait);\n stdErr && context.spawned.stderr?.on(\"data\", wait);\n context.spawned.on(\"exit\", stop);\n context.spawned.on(\"close\", stop);\n wait();\n }\n };\n }\n}\n\n// src/lib/plugins/suffix-paths.plugin.ts\ninit_pathspec();\nfunction suffixPathsPlugin() {\n return {\n type: \"spawn.args\",\n action(data) {\n const prefix = [];\n let suffix;\n function append2(args) {\n (suffix = suffix || []).push(...args);\n }\n for (let i = 0; i < data.length; i++) {\n const param = data[i];\n if (isPathSpec(param)) {\n append2(toPaths(param));\n continue;\n }\n if (param === \"--\") {\n append2(\n data.slice(i + 1).flatMap((item) => isPathSpec(item) && toPaths(item) || item)\n );\n break;\n }\n prefix.push(param);\n }\n return !suffix ? prefix : [...prefix, \"--\", ...suffix.map(String)];\n }\n };\n}\n\n// src/lib/git-factory.ts\ninit_utils();\nvar Git = require_git();\nfunction gitInstanceFactory(baseDir, options) {\n const plugins = new PluginStore();\n const config = createInstanceConfig(\n baseDir && (typeof baseDir === \"string\" ? { baseDir } : baseDir) || {},\n options\n );\n if (!folderExists(config.baseDir)) {\n throw new GitConstructError(\n config,\n `Cannot use simple-git on a directory that does not exist`\n );\n }\n if (Array.isArray(config.config)) {\n plugins.add(commandConfigPrefixingPlugin(config.config));\n }\n plugins.add(blockUnsafeOperationsPlugin(config.unsafe));\n plugins.add(suffixPathsPlugin());\n plugins.add(completionDetectionPlugin(config.completion));\n config.abort && plugins.add(abortPlugin(config.abort));\n config.progress && plugins.add(progressMonitorPlugin(config.progress));\n config.timeout && plugins.add(timeoutPlugin(config.timeout));\n config.spawnOptions && plugins.add(spawnOptionsPlugin(config.spawnOptions));\n plugins.add(errorDetectionPlugin(errorDetectionHandler(true)));\n config.errors && plugins.add(errorDetectionPlugin(config.errors));\n customBinaryPlugin(plugins, config.binary, config.unsafe?.allowUnsafeCustomBinary);\n return new Git(config, plugins);\n}\n\n// src/lib/runners/promise-wrapped.ts\ninit_git_response_error();\nvar functionNamesBuilderApi = [\"customBinary\", \"env\", \"outputHandler\", \"silent\"];\nvar functionNamesPromiseApi = [\n \"add\",\n \"addAnnotatedTag\",\n \"addConfig\",\n \"addRemote\",\n \"addTag\",\n \"applyPatch\",\n \"binaryCatFile\",\n \"branch\",\n \"branchLocal\",\n \"catFile\",\n \"checkIgnore\",\n \"checkIsRepo\",\n \"checkout\",\n \"checkoutBranch\",\n \"checkoutLatestTag\",\n \"checkoutLocalBranch\",\n \"clean\",\n \"clone\",\n \"commit\",\n \"cwd\",\n \"deleteLocalBranch\",\n \"deleteLocalBranches\",\n \"diff\",\n \"diffSummary\",\n \"exec\",\n \"fetch\",\n \"getRemotes\",\n \"init\",\n \"listConfig\",\n \"listRemote\",\n \"log\",\n \"merge\",\n \"mergeFromTo\",\n \"mirror\",\n \"mv\",\n \"pull\",\n \"push\",\n \"pushTags\",\n \"raw\",\n \"rebase\",\n \"remote\",\n \"removeRemote\",\n \"reset\",\n \"revert\",\n \"revparse\",\n \"rm\",\n \"rmKeepLocal\",\n \"show\",\n \"stash\",\n \"stashList\",\n \"status\",\n \"subModule\",\n \"submoduleAdd\",\n \"submoduleInit\",\n \"submoduleUpdate\",\n \"tag\",\n \"tags\",\n \"updateServerInfo\"\n];\nfunction gitP(...args) {\n let git;\n let chain = Promise.resolve();\n try {\n git = gitInstanceFactory(...args);\n } catch (e) {\n chain = Promise.reject(e);\n }\n function builderReturn() {\n return promiseApi;\n }\n function chainReturn() {\n return chain;\n }\n const promiseApi = [...functionNamesBuilderApi, ...functionNamesPromiseApi].reduce(\n (api, name) => {\n const isAsync = functionNamesPromiseApi.includes(name);\n const valid = isAsync ? asyncWrapper(name, git) : syncWrapper(name, git, api);\n const alternative = isAsync ? chainReturn : builderReturn;\n Object.defineProperty(api, name, {\n enumerable: false,\n configurable: false,\n value: git ? valid : alternative\n });\n return api;\n },\n {}\n );\n return promiseApi;\n function asyncWrapper(fn, git2) {\n return function(...args2) {\n if (typeof args2[args2.length] === \"function\") {\n throw new TypeError(\n \"Promise interface requires that handlers are not supplied inline, trailing function not allowed in call to \" + fn\n );\n }\n return chain.then(function() {\n return new Promise(function(resolve, reject) {\n const callback = (err, result) => {\n if (err) {\n return reject(toError(err));\n }\n resolve(result);\n };\n args2.push(callback);\n git2[fn].apply(git2, args2);\n });\n });\n };\n }\n function syncWrapper(fn, git2, api) {\n return (...args2) => {\n git2[fn](...args2);\n return api;\n };\n }\n}\nfunction toError(error) {\n if (error instanceof Error) {\n return error;\n }\n if (typeof error === \"string\") {\n return new Error(error);\n }\n return new GitResponseError(error);\n}\n\n// src/esm.mjs\nvar simpleGit = gitInstanceFactory;\nvar esm_default = gitInstanceFactory;\nexport {\n CheckRepoActions,\n CleanOptions,\n DiffNameStatus,\n GitConfigScope,\n GitConstructError,\n GitError,\n GitPluginError,\n GitResponseError,\n ResetMode,\n TaskConfigurationError,\n esm_default as default,\n gitP,\n grepQueryBuilder,\n pathspec,\n simpleGit\n};\n//# sourceMappingURL=index.js.map\n","\n;(function (name, root, factory) {\n if (typeof exports === 'object') {\n module.exports = factory()\n module.exports['default'] = factory()\n }\n /* istanbul ignore next */\n else if (typeof define === 'function' && define.amd) {\n define(factory)\n }\n else {\n root[name] = factory()\n }\n}('slugify', this, function () {\n var charMap = JSON.parse('{\"$\":\"dollar\",\"%\":\"percent\",\"&\":\"and\",\"<\":\"less\",\">\":\"greater\",\"|\":\"or\",\"¢\":\"cent\",\"£\":\"pound\",\"¤\":\"currency\",\"¥\":\"yen\",\"©\":\"(c)\",\"ª\":\"a\",\"®\":\"(r)\",\"º\":\"o\",\"À\":\"A\",\"Á\":\"A\",\"Â\":\"A\",\"Ã\":\"A\",\"Ä\":\"A\",\"Å\":\"A\",\"Æ\":\"AE\",\"Ç\":\"C\",\"È\":\"E\",\"É\":\"E\",\"Ê\":\"E\",\"Ë\":\"E\",\"Ì\":\"I\",\"Í\":\"I\",\"Î\":\"I\",\"Ï\":\"I\",\"Ð\":\"D\",\"Ñ\":\"N\",\"Ò\":\"O\",\"Ó\":\"O\",\"Ô\":\"O\",\"Õ\":\"O\",\"Ö\":\"O\",\"Ø\":\"O\",\"Ù\":\"U\",\"Ú\":\"U\",\"Û\":\"U\",\"Ü\":\"U\",\"Ý\":\"Y\",\"Þ\":\"TH\",\"ß\":\"ss\",\"à\":\"a\",\"á\":\"a\",\"â\":\"a\",\"ã\":\"a\",\"ä\":\"a\",\"å\":\"a\",\"æ\":\"ae\",\"ç\":\"c\",\"è\":\"e\",\"é\":\"e\",\"ê\":\"e\",\"ë\":\"e\",\"ì\":\"i\",\"í\":\"i\",\"î\":\"i\",\"ï\":\"i\",\"ð\":\"d\",\"ñ\":\"n\",\"ò\":\"o\",\"ó\":\"o\",\"ô\":\"o\",\"õ\":\"o\",\"ö\":\"o\",\"ø\":\"o\",\"ù\":\"u\",\"ú\":\"u\",\"û\":\"u\",\"ü\":\"u\",\"ý\":\"y\",\"þ\":\"th\",\"ÿ\":\"y\",\"Ā\":\"A\",\"ā\":\"a\",\"Ă\":\"A\",\"ă\":\"a\",\"Ą\":\"A\",\"ą\":\"a\",\"Ć\":\"C\",\"ć\":\"c\",\"Č\":\"C\",\"č\":\"c\",\"Ď\":\"D\",\"ď\":\"d\",\"Đ\":\"DJ\",\"đ\":\"dj\",\"Ē\":\"E\",\"ē\":\"e\",\"Ė\":\"E\",\"ė\":\"e\",\"Ę\":\"e\",\"ę\":\"e\",\"Ě\":\"E\",\"ě\":\"e\",\"Ğ\":\"G\",\"ğ\":\"g\",\"Ģ\":\"G\",\"ģ\":\"g\",\"Ĩ\":\"I\",\"ĩ\":\"i\",\"Ī\":\"i\",\"ī\":\"i\",\"Į\":\"I\",\"į\":\"i\",\"İ\":\"I\",\"ı\":\"i\",\"Ķ\":\"k\",\"ķ\":\"k\",\"Ļ\":\"L\",\"ļ\":\"l\",\"Ľ\":\"L\",\"ľ\":\"l\",\"Ł\":\"L\",\"ł\":\"l\",\"Ń\":\"N\",\"ń\":\"n\",\"Ņ\":\"N\",\"ņ\":\"n\",\"Ň\":\"N\",\"ň\":\"n\",\"Ō\":\"O\",\"ō\":\"o\",\"Ő\":\"O\",\"ő\":\"o\",\"Œ\":\"OE\",\"œ\":\"oe\",\"Ŕ\":\"R\",\"ŕ\":\"r\",\"Ř\":\"R\",\"ř\":\"r\",\"Ś\":\"S\",\"ś\":\"s\",\"Ş\":\"S\",\"ş\":\"s\",\"Š\":\"S\",\"š\":\"s\",\"Ţ\":\"T\",\"ţ\":\"t\",\"Ť\":\"T\",\"ť\":\"t\",\"Ũ\":\"U\",\"ũ\":\"u\",\"Ū\":\"u\",\"ū\":\"u\",\"Ů\":\"U\",\"ů\":\"u\",\"Ű\":\"U\",\"ű\":\"u\",\"Ų\":\"U\",\"ų\":\"u\",\"Ŵ\":\"W\",\"ŵ\":\"w\",\"Ŷ\":\"Y\",\"ŷ\":\"y\",\"Ÿ\":\"Y\",\"Ź\":\"Z\",\"ź\":\"z\",\"Ż\":\"Z\",\"ż\":\"z\",\"Ž\":\"Z\",\"ž\":\"z\",\"Ə\":\"E\",\"ƒ\":\"f\",\"Ơ\":\"O\",\"ơ\":\"o\",\"Ư\":\"U\",\"ư\":\"u\",\"Lj\":\"LJ\",\"lj\":\"lj\",\"Nj\":\"NJ\",\"nj\":\"nj\",\"Ș\":\"S\",\"ș\":\"s\",\"Ț\":\"T\",\"ț\":\"t\",\"ə\":\"e\",\"˚\":\"o\",\"Ά\":\"A\",\"Έ\":\"E\",\"Ή\":\"H\",\"Ί\":\"I\",\"Ό\":\"O\",\"Ύ\":\"Y\",\"Ώ\":\"W\",\"ΐ\":\"i\",\"Α\":\"A\",\"Β\":\"B\",\"Γ\":\"G\",\"Δ\":\"D\",\"Ε\":\"E\",\"Ζ\":\"Z\",\"Η\":\"H\",\"Θ\":\"8\",\"Ι\":\"I\",\"Κ\":\"K\",\"Λ\":\"L\",\"Μ\":\"M\",\"Ν\":\"N\",\"Ξ\":\"3\",\"Ο\":\"O\",\"Π\":\"P\",\"Ρ\":\"R\",\"Σ\":\"S\",\"Τ\":\"T\",\"Υ\":\"Y\",\"Φ\":\"F\",\"Χ\":\"X\",\"Ψ\":\"PS\",\"Ω\":\"W\",\"Ϊ\":\"I\",\"Ϋ\":\"Y\",\"ά\":\"a\",\"έ\":\"e\",\"ή\":\"h\",\"ί\":\"i\",\"ΰ\":\"y\",\"α\":\"a\",\"β\":\"b\",\"γ\":\"g\",\"δ\":\"d\",\"ε\":\"e\",\"ζ\":\"z\",\"η\":\"h\",\"θ\":\"8\",\"ι\":\"i\",\"κ\":\"k\",\"λ\":\"l\",\"μ\":\"m\",\"ν\":\"n\",\"ξ\":\"3\",\"ο\":\"o\",\"π\":\"p\",\"ρ\":\"r\",\"ς\":\"s\",\"σ\":\"s\",\"τ\":\"t\",\"υ\":\"y\",\"φ\":\"f\",\"χ\":\"x\",\"ψ\":\"ps\",\"ω\":\"w\",\"ϊ\":\"i\",\"ϋ\":\"y\",\"ό\":\"o\",\"ύ\":\"y\",\"ώ\":\"w\",\"Ё\":\"Yo\",\"Ђ\":\"DJ\",\"Є\":\"Ye\",\"І\":\"I\",\"Ї\":\"Yi\",\"Ј\":\"J\",\"Љ\":\"LJ\",\"Њ\":\"NJ\",\"Ћ\":\"C\",\"Џ\":\"DZ\",\"А\":\"A\",\"Б\":\"B\",\"В\":\"V\",\"Г\":\"G\",\"Д\":\"D\",\"Е\":\"E\",\"Ж\":\"Zh\",\"З\":\"Z\",\"И\":\"I\",\"Й\":\"J\",\"К\":\"K\",\"Л\":\"L\",\"М\":\"M\",\"Н\":\"N\",\"О\":\"O\",\"П\":\"P\",\"Р\":\"R\",\"С\":\"S\",\"Т\":\"T\",\"У\":\"U\",\"Ф\":\"F\",\"Х\":\"H\",\"Ц\":\"C\",\"Ч\":\"Ch\",\"Ш\":\"Sh\",\"Щ\":\"Sh\",\"Ъ\":\"U\",\"Ы\":\"Y\",\"Ь\":\"\",\"Э\":\"E\",\"Ю\":\"Yu\",\"Я\":\"Ya\",\"а\":\"a\",\"б\":\"b\",\"в\":\"v\",\"г\":\"g\",\"д\":\"d\",\"е\":\"e\",\"ж\":\"zh\",\"з\":\"z\",\"и\":\"i\",\"й\":\"j\",\"к\":\"k\",\"л\":\"l\",\"м\":\"m\",\"н\":\"n\",\"о\":\"o\",\"п\":\"p\",\"р\":\"r\",\"с\":\"s\",\"т\":\"t\",\"у\":\"u\",\"ф\":\"f\",\"х\":\"h\",\"ц\":\"c\",\"ч\":\"ch\",\"ш\":\"sh\",\"щ\":\"sh\",\"ъ\":\"u\",\"ы\":\"y\",\"ь\":\"\",\"э\":\"e\",\"ю\":\"yu\",\"я\":\"ya\",\"ё\":\"yo\",\"ђ\":\"dj\",\"є\":\"ye\",\"і\":\"i\",\"ї\":\"yi\",\"ј\":\"j\",\"љ\":\"lj\",\"њ\":\"nj\",\"ћ\":\"c\",\"ѝ\":\"u\",\"џ\":\"dz\",\"Ґ\":\"G\",\"ґ\":\"g\",\"Ғ\":\"GH\",\"ғ\":\"gh\",\"Қ\":\"KH\",\"қ\":\"kh\",\"Ң\":\"NG\",\"ң\":\"ng\",\"Ү\":\"UE\",\"ү\":\"ue\",\"Ұ\":\"U\",\"ұ\":\"u\",\"Һ\":\"H\",\"һ\":\"h\",\"Ә\":\"AE\",\"ә\":\"ae\",\"Ө\":\"OE\",\"ө\":\"oe\",\"Ա\":\"A\",\"Բ\":\"B\",\"Գ\":\"G\",\"Դ\":\"D\",\"Ե\":\"E\",\"Զ\":\"Z\",\"Է\":\"E\\'\",\"Ը\":\"Y\\'\",\"Թ\":\"T\\'\",\"Ժ\":\"JH\",\"Ի\":\"I\",\"Լ\":\"L\",\"Խ\":\"X\",\"Ծ\":\"C\\'\",\"Կ\":\"K\",\"Հ\":\"H\",\"Ձ\":\"D\\'\",\"Ղ\":\"GH\",\"Ճ\":\"TW\",\"Մ\":\"M\",\"Յ\":\"Y\",\"Ն\":\"N\",\"Շ\":\"SH\",\"Չ\":\"CH\",\"Պ\":\"P\",\"Ջ\":\"J\",\"Ռ\":\"R\\'\",\"Ս\":\"S\",\"Վ\":\"V\",\"Տ\":\"T\",\"Ր\":\"R\",\"Ց\":\"C\",\"Փ\":\"P\\'\",\"Ք\":\"Q\\'\",\"Օ\":\"O\\'\\'\",\"Ֆ\":\"F\",\"և\":\"EV\",\"ء\":\"a\",\"آ\":\"aa\",\"أ\":\"a\",\"ؤ\":\"u\",\"إ\":\"i\",\"ئ\":\"e\",\"ا\":\"a\",\"ب\":\"b\",\"ة\":\"h\",\"ت\":\"t\",\"ث\":\"th\",\"ج\":\"j\",\"ح\":\"h\",\"خ\":\"kh\",\"د\":\"d\",\"ذ\":\"th\",\"ر\":\"r\",\"ز\":\"z\",\"س\":\"s\",\"ش\":\"sh\",\"ص\":\"s\",\"ض\":\"dh\",\"ط\":\"t\",\"ظ\":\"z\",\"ع\":\"a\",\"غ\":\"gh\",\"ف\":\"f\",\"ق\":\"q\",\"ك\":\"k\",\"ل\":\"l\",\"م\":\"m\",\"ن\":\"n\",\"ه\":\"h\",\"و\":\"w\",\"ى\":\"a\",\"ي\":\"y\",\"ً\":\"an\",\"ٌ\":\"on\",\"ٍ\":\"en\",\"َ\":\"a\",\"ُ\":\"u\",\"ِ\":\"e\",\"ْ\":\"\",\"٠\":\"0\",\"١\":\"1\",\"٢\":\"2\",\"٣\":\"3\",\"٤\":\"4\",\"٥\":\"5\",\"٦\":\"6\",\"٧\":\"7\",\"٨\":\"8\",\"٩\":\"9\",\"پ\":\"p\",\"چ\":\"ch\",\"ژ\":\"zh\",\"ک\":\"k\",\"گ\":\"g\",\"ی\":\"y\",\"۰\":\"0\",\"۱\":\"1\",\"۲\":\"2\",\"۳\":\"3\",\"۴\":\"4\",\"۵\":\"5\",\"۶\":\"6\",\"۷\":\"7\",\"۸\":\"8\",\"۹\":\"9\",\"฿\":\"baht\",\"ა\":\"a\",\"ბ\":\"b\",\"გ\":\"g\",\"დ\":\"d\",\"ე\":\"e\",\"ვ\":\"v\",\"ზ\":\"z\",\"თ\":\"t\",\"ი\":\"i\",\"კ\":\"k\",\"ლ\":\"l\",\"მ\":\"m\",\"ნ\":\"n\",\"ო\":\"o\",\"პ\":\"p\",\"ჟ\":\"zh\",\"რ\":\"r\",\"ს\":\"s\",\"ტ\":\"t\",\"უ\":\"u\",\"ფ\":\"f\",\"ქ\":\"k\",\"ღ\":\"gh\",\"ყ\":\"q\",\"შ\":\"sh\",\"ჩ\":\"ch\",\"ც\":\"ts\",\"ძ\":\"dz\",\"წ\":\"ts\",\"ჭ\":\"ch\",\"ხ\":\"kh\",\"ჯ\":\"j\",\"ჰ\":\"h\",\"Ṣ\":\"S\",\"ṣ\":\"s\",\"Ẁ\":\"W\",\"ẁ\":\"w\",\"Ẃ\":\"W\",\"ẃ\":\"w\",\"Ẅ\":\"W\",\"ẅ\":\"w\",\"ẞ\":\"SS\",\"Ạ\":\"A\",\"ạ\":\"a\",\"Ả\":\"A\",\"ả\":\"a\",\"Ấ\":\"A\",\"ấ\":\"a\",\"Ầ\":\"A\",\"ầ\":\"a\",\"Ẩ\":\"A\",\"ẩ\":\"a\",\"Ẫ\":\"A\",\"ẫ\":\"a\",\"Ậ\":\"A\",\"ậ\":\"a\",\"Ắ\":\"A\",\"ắ\":\"a\",\"Ằ\":\"A\",\"ằ\":\"a\",\"Ẳ\":\"A\",\"ẳ\":\"a\",\"Ẵ\":\"A\",\"ẵ\":\"a\",\"Ặ\":\"A\",\"ặ\":\"a\",\"Ẹ\":\"E\",\"ẹ\":\"e\",\"Ẻ\":\"E\",\"ẻ\":\"e\",\"Ẽ\":\"E\",\"ẽ\":\"e\",\"Ế\":\"E\",\"ế\":\"e\",\"Ề\":\"E\",\"ề\":\"e\",\"Ể\":\"E\",\"ể\":\"e\",\"Ễ\":\"E\",\"ễ\":\"e\",\"Ệ\":\"E\",\"ệ\":\"e\",\"Ỉ\":\"I\",\"ỉ\":\"i\",\"Ị\":\"I\",\"ị\":\"i\",\"Ọ\":\"O\",\"ọ\":\"o\",\"Ỏ\":\"O\",\"ỏ\":\"o\",\"Ố\":\"O\",\"ố\":\"o\",\"Ồ\":\"O\",\"ồ\":\"o\",\"Ổ\":\"O\",\"ổ\":\"o\",\"Ỗ\":\"O\",\"ỗ\":\"o\",\"Ộ\":\"O\",\"ộ\":\"o\",\"Ớ\":\"O\",\"ớ\":\"o\",\"Ờ\":\"O\",\"ờ\":\"o\",\"Ở\":\"O\",\"ở\":\"o\",\"Ỡ\":\"O\",\"ỡ\":\"o\",\"Ợ\":\"O\",\"ợ\":\"o\",\"Ụ\":\"U\",\"ụ\":\"u\",\"Ủ\":\"U\",\"ủ\":\"u\",\"Ứ\":\"U\",\"ứ\":\"u\",\"Ừ\":\"U\",\"ừ\":\"u\",\"Ử\":\"U\",\"ử\":\"u\",\"Ữ\":\"U\",\"ữ\":\"u\",\"Ự\":\"U\",\"ự\":\"u\",\"Ỳ\":\"Y\",\"ỳ\":\"y\",\"Ỵ\":\"Y\",\"ỵ\":\"y\",\"Ỷ\":\"Y\",\"ỷ\":\"y\",\"Ỹ\":\"Y\",\"ỹ\":\"y\",\"–\":\"-\",\"‘\":\"\\'\",\"’\":\"\\'\",\"“\":\"\\\\\\\"\",\"”\":\"\\\\\\\"\",\"„\":\"\\\\\\\"\",\"†\":\"+\",\"•\":\"*\",\"…\":\"...\",\"₠\":\"ecu\",\"₢\":\"cruzeiro\",\"₣\":\"french franc\",\"₤\":\"lira\",\"₥\":\"mill\",\"₦\":\"naira\",\"₧\":\"peseta\",\"₨\":\"rupee\",\"₩\":\"won\",\"₪\":\"new shequel\",\"₫\":\"dong\",\"€\":\"euro\",\"₭\":\"kip\",\"₮\":\"tugrik\",\"₯\":\"drachma\",\"₰\":\"penny\",\"₱\":\"peso\",\"₲\":\"guarani\",\"₳\":\"austral\",\"₴\":\"hryvnia\",\"₵\":\"cedi\",\"₸\":\"kazakhstani tenge\",\"₹\":\"indian rupee\",\"₺\":\"turkish lira\",\"₽\":\"russian ruble\",\"₿\":\"bitcoin\",\"℠\":\"sm\",\"™\":\"tm\",\"∂\":\"d\",\"∆\":\"delta\",\"∑\":\"sum\",\"∞\":\"infinity\",\"♥\":\"love\",\"元\":\"yuan\",\"円\":\"yen\",\"﷼\":\"rial\",\"ﻵ\":\"laa\",\"ﻷ\":\"laa\",\"ﻹ\":\"lai\",\"ﻻ\":\"la\"}')\n var locales = JSON.parse('{\"bg\":{\"Й\":\"Y\",\"Ц\":\"Ts\",\"Щ\":\"Sht\",\"Ъ\":\"A\",\"Ь\":\"Y\",\"й\":\"y\",\"ц\":\"ts\",\"щ\":\"sht\",\"ъ\":\"a\",\"ь\":\"y\"},\"de\":{\"Ä\":\"AE\",\"ä\":\"ae\",\"Ö\":\"OE\",\"ö\":\"oe\",\"Ü\":\"UE\",\"ü\":\"ue\",\"ß\":\"ss\",\"%\":\"prozent\",\"&\":\"und\",\"|\":\"oder\",\"∑\":\"summe\",\"∞\":\"unendlich\",\"♥\":\"liebe\"},\"es\":{\"%\":\"por ciento\",\"&\":\"y\",\"<\":\"menor que\",\">\":\"mayor que\",\"|\":\"o\",\"¢\":\"centavos\",\"£\":\"libras\",\"¤\":\"moneda\",\"₣\":\"francos\",\"∑\":\"suma\",\"∞\":\"infinito\",\"♥\":\"amor\"},\"fr\":{\"%\":\"pourcent\",\"&\":\"et\",\"<\":\"plus petit\",\">\":\"plus grand\",\"|\":\"ou\",\"¢\":\"centime\",\"£\":\"livre\",\"¤\":\"devise\",\"₣\":\"franc\",\"∑\":\"somme\",\"∞\":\"infini\",\"♥\":\"amour\"},\"pt\":{\"%\":\"porcento\",\"&\":\"e\",\"<\":\"menor\",\">\":\"maior\",\"|\":\"ou\",\"¢\":\"centavo\",\"∑\":\"soma\",\"£\":\"libra\",\"∞\":\"infinito\",\"♥\":\"amor\"},\"uk\":{\"И\":\"Y\",\"и\":\"y\",\"Й\":\"Y\",\"й\":\"y\",\"Ц\":\"Ts\",\"ц\":\"ts\",\"Х\":\"Kh\",\"х\":\"kh\",\"Щ\":\"Shch\",\"щ\":\"shch\",\"Г\":\"H\",\"г\":\"h\"},\"vi\":{\"Đ\":\"D\",\"đ\":\"d\"},\"da\":{\"Ø\":\"OE\",\"ø\":\"oe\",\"Å\":\"AA\",\"å\":\"aa\",\"%\":\"procent\",\"&\":\"og\",\"|\":\"eller\",\"$\":\"dollar\",\"<\":\"mindre end\",\">\":\"større end\"},\"nb\":{\"&\":\"og\",\"Å\":\"AA\",\"Æ\":\"AE\",\"Ø\":\"OE\",\"å\":\"aa\",\"æ\":\"ae\",\"ø\":\"oe\"},\"it\":{\"&\":\"e\"},\"nl\":{\"&\":\"en\"},\"sv\":{\"&\":\"och\",\"Å\":\"AA\",\"Ä\":\"AE\",\"Ö\":\"OE\",\"å\":\"aa\",\"ä\":\"ae\",\"ö\":\"oe\"}}')\n\n function replace (string, options) {\n if (typeof string !== 'string') {\n throw new Error('slugify: string argument expected')\n }\n\n options = (typeof options === 'string')\n ? {replacement: options}\n : options || {}\n\n var locale = locales[options.locale] || {}\n\n var replacement = options.replacement === undefined ? '-' : options.replacement\n\n var trim = options.trim === undefined ? true : options.trim\n\n var slug = string.normalize().split('')\n // replace characters based on charMap\n .reduce(function (result, ch) {\n var appendChar = locale[ch];\n if (appendChar === undefined) appendChar = charMap[ch];\n if (appendChar === undefined) appendChar = ch;\n if (appendChar === replacement) appendChar = ' ';\n return result + appendChar\n // remove not allowed characters\n .replace(options.remove || /[^\\w\\s$*_+~.()'\"!\\-:@]+/g, '')\n }, '');\n\n if (options.strict) {\n slug = slug.replace(/[^A-Za-z0-9\\s]/g, '');\n }\n\n if (trim) {\n slug = slug.trim()\n }\n\n // Replace spaces with replacement character, treating multiple consecutive\n // spaces as a single space.\n slug = slug.replace(/\\s+/g, replacement);\n\n if (options.lower) {\n slug = slug.toLowerCase()\n }\n\n return slug\n }\n\n replace.extend = function (customMap) {\n Object.assign(charMap, customMap)\n }\n\n return replace\n}))\n","/**\r\n * Core — Shared utilities, constants, and internal helpers\r\n *\r\n * Ported from maxsim/bin/lib/core.cjs\r\n */\r\n\r\nimport fs from 'node:fs';\r\nimport path from 'node:path';\r\nimport os from 'node:os';\r\nimport { simpleGit } from 'simple-git';\r\nimport slugify from 'slugify';\r\n\r\nimport type {\r\n BranchingStrategy,\r\n ModelProfiles,\r\n ModelProfileName,\r\n ModelResolution,\r\n AgentType,\r\n PhaseSearchResult,\r\n RoadmapPhaseInfo,\r\n ArchivedPhaseDir,\r\n GitResult,\r\n MilestoneInfo,\r\n AppConfig,\r\n} from './types.js';\r\n\r\n// ─── Model Profile Table ─────────────────────────────────────────────────────\r\n\r\nexport const MODEL_PROFILES: ModelProfiles = {\r\n 'maxsim-planner': { quality: 'opus', balanced: 'opus', budget: 'sonnet', tokenburner: 'opus' },\r\n 'maxsim-roadmapper': { quality: 'opus', balanced: 'sonnet', budget: 'sonnet', tokenburner: 'opus' },\r\n 'maxsim-executor': { quality: 'opus', balanced: 'sonnet', budget: 'sonnet', tokenburner: 'opus' },\r\n 'maxsim-phase-researcher': { quality: 'opus', balanced: 'sonnet', budget: 'haiku', tokenburner: 'opus' },\r\n 'maxsim-project-researcher': { quality: 'opus', balanced: 'sonnet', budget: 'haiku', tokenburner: 'opus' },\r\n 'maxsim-research-synthesizer': { quality: 'sonnet', balanced: 'sonnet', budget: 'haiku', tokenburner: 'opus' },\r\n 'maxsim-debugger': { quality: 'opus', balanced: 'sonnet', budget: 'sonnet', tokenburner: 'opus' },\r\n 'maxsim-codebase-mapper': { quality: 'sonnet', balanced: 'haiku', budget: 'haiku', tokenburner: 'opus' },\r\n 'maxsim-verifier': { quality: 'sonnet', balanced: 'sonnet', budget: 'haiku', tokenburner: 'opus' },\r\n 'maxsim-plan-checker': { quality: 'sonnet', balanced: 'sonnet', budget: 'haiku', tokenburner: 'opus' },\r\n 'maxsim-integration-checker': { quality: 'sonnet', balanced: 'sonnet', budget: 'haiku', tokenburner: 'opus' },\r\n};\r\n\r\n// ─── Output helpers ──────────────────────────────────────────────────────────\r\n// These throw CliOutput / CliError instead of calling process.exit() directly.\r\n// The CLI entry point (cli.ts) catches these and calls process.exit() there.\r\n\r\n/** Thrown by output() to signal successful command completion. */\r\nexport class CliOutput {\r\n readonly result: unknown;\r\n readonly raw: boolean;\r\n readonly rawValue: unknown;\r\n constructor(result: unknown, raw?: boolean, rawValue?: unknown) {\r\n this.result = result;\r\n this.raw = raw ?? false;\r\n this.rawValue = rawValue;\r\n }\r\n}\r\n\r\n/** Thrown by error() to signal a command error. */\r\nexport class CliError {\r\n readonly message: string;\r\n constructor(message: string) {\r\n this.message = message;\r\n }\r\n}\r\n\r\nexport function output(result: unknown, raw?: boolean, rawValue?: unknown): never {\r\n throw new CliOutput(result, raw, rawValue);\r\n}\r\n\r\nexport function error(message: string): never {\r\n throw new CliError(message);\r\n}\r\n\r\n/** Re-throw CliOutput/CliError signals so catch blocks don't intercept them */\r\nexport function rethrowCliSignals(e: unknown): void {\r\n if (e instanceof CliOutput || e instanceof CliError) throw e;\r\n}\r\n\r\n/**\r\n * Handle a CliOutput by writing to stdout. Extracted so cli.ts can use it.\r\n */\r\nexport function writeOutput(out: CliOutput): void {\r\n if (out.raw && out.rawValue !== undefined) {\r\n process.stdout.write(String(out.rawValue));\r\n } else {\r\n const json = JSON.stringify(out.result, null, 2);\r\n if (json.length > 50000) {\r\n const tmpPath = path.join(os.tmpdir(), `maxsim-${Date.now()}.json`);\r\n fs.writeFileSync(tmpPath, json, 'utf-8');\r\n process.stdout.write('@file:' + tmpPath);\r\n } else {\r\n process.stdout.write(json);\r\n }\r\n }\r\n}\r\n\r\n// ─── Shared micro-utilities ─────────────────────────────────────────────────\r\n\r\n/** Today's date as YYYY-MM-DD. */\r\nexport function todayISO(): string {\r\n return new Date().toISOString().split('T')[0];\r\n}\r\n\r\n/** Canonical .planning/ sub-paths. */\r\nexport function planningPath(cwd: string, ...segments: string[]): string {\r\n return path.join(cwd, '.planning', ...segments);\r\n}\r\nexport function statePath(cwd: string): string { return planningPath(cwd, 'STATE.md'); }\r\nexport function roadmapPath(cwd: string): string { return planningPath(cwd, 'ROADMAP.md'); }\r\nexport function configPath(cwd: string): string { return planningPath(cwd, 'config.json'); }\r\nexport function phasesPath(cwd: string): string { return planningPath(cwd, 'phases'); }\r\n\r\n/** Phase-file predicates. */\r\nexport const isPlanFile = (f: string): boolean => f.endsWith('-PLAN.md') || f === 'PLAN.md';\r\nexport const isSummaryFile = (f: string): boolean => f.endsWith('-SUMMARY.md') || f === 'SUMMARY.md';\r\n\r\n/** Strip suffix to get plan/summary ID. */\r\nexport const planId = (f: string): string => f.replace('-PLAN.md', '').replace('PLAN.md', '');\r\nexport const summaryId = (f: string): string => f.replace('-SUMMARY.md', '').replace('SUMMARY.md', '');\r\n\r\n/** List subdirectory names, optionally sorted by phase number. */\r\nexport function listSubDirs(dir: string, sortByPhase = false): string[] {\r\n const dirs = fs.readdirSync(dir, { withFileTypes: true })\r\n .filter(e => e.isDirectory())\r\n .map(e => e.name);\r\n return sortByPhase ? dirs.sort((a, b) => comparePhaseNum(a, b)) : dirs;\r\n}\r\n\r\n/** Log only when MAXSIM_DEBUG is set. */\r\nexport function debugLog(e: unknown): void {\r\n if (process.env.MAXSIM_DEBUG) console.error(e);\r\n}\r\n\r\n/** Escape a phase number for use in regex. */\r\nexport function escapePhaseNum(phase: string | number): string {\r\n return String(phase).replace(/\\./g, '\\\\.');\r\n}\r\n\r\n// ─── File & Config utilities ─────────────────────────────────────────────────\r\n\r\nexport function safeReadFile(filePath: string): string | null {\r\n try {\r\n return fs.readFileSync(filePath, 'utf-8');\r\n } catch {\r\n return null;\r\n }\r\n}\r\n\r\nlet _configCache: { cwd: string; config: AppConfig } | null = null;\r\n\r\nexport function loadConfig(cwd: string): AppConfig {\r\n if (_configCache && _configCache.cwd === cwd) return _configCache.config;\r\n const cfgPath = configPath(cwd);\r\n const defaults: AppConfig = {\r\n model_profile: 'balanced',\r\n commit_docs: true,\r\n search_gitignored: false,\r\n branching_strategy: 'none',\r\n phase_branch_template: 'maxsim/phase-{phase}-{slug}',\r\n milestone_branch_template: 'maxsim/{milestone}-{slug}',\r\n research: true,\r\n plan_checker: true,\r\n verifier: true,\r\n parallelization: true,\r\n brave_search: false,\r\n };\r\n\r\n try {\r\n const raw = fs.readFileSync(cfgPath, 'utf-8');\r\n const parsed: Record = JSON.parse(raw) as Record;\r\n\r\n const get = (key: string, nested?: { section: string; field: string }): unknown => {\r\n if (parsed[key] !== undefined) return parsed[key];\r\n if (nested) {\r\n const section = parsed[nested.section];\r\n if (section && typeof section === 'object' && section !== null && nested.field in section) {\r\n return (section as Record)[nested.field];\r\n }\r\n }\r\n return undefined;\r\n };\r\n\r\n const parallelization = ((): boolean => {\r\n const val = get('parallelization');\r\n if (typeof val === 'boolean') return val;\r\n if (typeof val === 'object' && val !== null && 'enabled' in val) {\r\n return (val as { enabled: boolean }).enabled;\r\n }\r\n return defaults.parallelization;\r\n })();\r\n\r\n const result: AppConfig = {\r\n model_profile: (get('model_profile') as ModelProfileName | undefined) ?? defaults.model_profile,\r\n commit_docs: (get('commit_docs', { section: 'planning', field: 'commit_docs' }) as boolean | undefined) ?? defaults.commit_docs,\r\n search_gitignored: (get('search_gitignored', { section: 'planning', field: 'search_gitignored' }) as boolean | undefined) ?? defaults.search_gitignored,\r\n branching_strategy: (get('branching_strategy', { section: 'git', field: 'branching_strategy' }) as BranchingStrategy | undefined) ?? defaults.branching_strategy,\r\n phase_branch_template: (get('phase_branch_template', { section: 'git', field: 'phase_branch_template' }) as string | undefined) ?? defaults.phase_branch_template,\r\n milestone_branch_template: (get('milestone_branch_template', { section: 'git', field: 'milestone_branch_template' }) as string | undefined) ?? defaults.milestone_branch_template,\r\n research: (get('research', { section: 'workflow', field: 'research' }) as boolean | undefined) ?? defaults.research,\r\n plan_checker: ((get('plan_checker', { section: 'workflow', field: 'plan_checker' }) ?? get('plan_checker', { section: 'workflow', field: 'plan_check' })) as boolean | undefined) ?? defaults.plan_checker,\r\n verifier: (get('verifier', { section: 'workflow', field: 'verifier' }) as boolean | undefined) ?? defaults.verifier,\r\n parallelization,\r\n brave_search: (get('brave_search') as boolean | undefined) ?? defaults.brave_search,\r\n model_overrides: parsed['model_overrides'] as AppConfig['model_overrides'],\r\n };\r\n _configCache = { cwd, config: result };\r\n return result;\r\n } catch {\r\n _configCache = { cwd, config: defaults };\r\n return defaults;\r\n }\r\n}\r\n\r\n// ─── Git utilities ───────────────────────────────────────────────────────────\r\n\r\nexport async function isGitIgnored(cwd: string, targetPath: string): Promise {\r\n try {\r\n const git = simpleGit(cwd);\r\n const result = await git.checkIgnore(targetPath);\r\n return result.length > 0;\r\n } catch {\r\n return false;\r\n }\r\n}\r\n\r\nexport async function execGit(cwd: string, args: string[]): Promise {\r\n try {\r\n const git = simpleGit(cwd);\r\n const stdout = await git.raw(args);\r\n return { exitCode: 0, stdout: (stdout ?? '').trim(), stderr: '' };\r\n } catch (thrown: unknown) {\r\n const err = thrown as { message?: string };\r\n // simple-git throws on non-zero exit — extract what we can\r\n const message = err.message ?? '';\r\n return {\r\n exitCode: 1,\r\n stdout: '',\r\n stderr: message,\r\n };\r\n }\r\n}\r\n\r\n// ─── Phase utilities ─────────────────────────────────────────────────────────\r\n\r\nexport function normalizePhaseName(phase: string): string {\r\n const match = phase.match(/^(\\d+)([A-Z])?(\\.\\d+)?/i);\r\n if (!match) return phase;\r\n const padded = match[1].padStart(2, '0');\r\n const letter = match[2] ? match[2].toUpperCase() : '';\r\n const decimal = match[3] || '';\r\n return padded + letter + decimal;\r\n}\r\n\r\nexport function comparePhaseNum(a: string | number, b: string | number): number {\r\n const pa = String(a).match(/^(\\d+)([A-Z])?(\\.\\d+)?/i);\r\n const pb = String(b).match(/^(\\d+)([A-Z])?(\\.\\d+)?/i);\r\n if (!pa || !pb) return String(a).localeCompare(String(b));\r\n const intDiff = parseInt(pa[1], 10) - parseInt(pb[1], 10);\r\n if (intDiff !== 0) return intDiff;\r\n const la = (pa[2] || '').toUpperCase();\r\n const lb = (pb[2] || '').toUpperCase();\r\n if (la !== lb) {\r\n if (!la) return -1;\r\n if (!lb) return 1;\r\n return la < lb ? -1 : 1;\r\n }\r\n const da = pa[3] ? parseFloat(pa[3]) : -1;\r\n const db = pb[3] ? parseFloat(pb[3]) : -1;\r\n return da - db;\r\n}\r\n\r\n// ─── Phase regex helper ──────────────────────────────────────────────────────\r\n\r\n/**\r\n * Returns the canonical regex for matching Phase heading lines in ROADMAP.md.\r\n *\r\n * General form (no escapedPhaseNum):\r\n * Matches: ## Phase 03: Name Here\r\n * Group 1: phase number string (e.g. \"03\", \"3A\", \"2.1\")\r\n * Group 2: phase name string (e.g. \"Name Here\")\r\n *\r\n * Specific form (with escapedPhaseNum):\r\n * Matches: ## Phase 03: Name Here\r\n * Group 1: phase name string only\r\n *\r\n * @param escapedPhaseNum - regex-escaped phase number string to match a specific phase\r\n * @param flags - regex flags (default: 'gi')\r\n */\r\nexport function getPhasePattern(escapedPhaseNum?: string, flags = 'gim'): RegExp {\r\n if (escapedPhaseNum) {\r\n return new RegExp(\r\n `^#{2,4}\\\\s*Phase\\\\s+${escapedPhaseNum}:\\\\s*([^\\\\n]+)`,\r\n flags,\r\n );\r\n }\r\n return new RegExp(\r\n `^#{2,4}\\\\s*Phase\\\\s+(\\\\d+[A-Z]?(?:\\\\.\\\\d+)?)\\\\s*:\\\\s*([^\\\\n]+)`,\r\n flags,\r\n );\r\n}\r\n\r\nfunction searchPhaseInDir(baseDir: string, relBase: string, normalized: string): PhaseSearchResult | null {\r\n try {\r\n const dirs = listSubDirs(baseDir, true);\r\n const match = dirs.find(d => d.startsWith(normalized));\r\n if (!match) return null;\r\n\r\n const dirMatch = match.match(/^(\\d+[A-Z]?(?:\\.\\d+)?)-?(.*)/i);\r\n const phaseNumber = dirMatch ? dirMatch[1] : normalized;\r\n const phaseName = dirMatch && dirMatch[2] ? dirMatch[2] : null;\r\n const phaseDir = path.join(baseDir, match);\r\n const phaseFiles = fs.readdirSync(phaseDir);\r\n\r\n const plans = phaseFiles.filter(isPlanFile).sort();\r\n const summaries = phaseFiles.filter(isSummaryFile).sort();\r\n const hasResearch = phaseFiles.some(f => f.endsWith('-RESEARCH.md') || f === 'RESEARCH.md');\r\n const hasContext = phaseFiles.some(f => f.endsWith('-CONTEXT.md') || f === 'CONTEXT.md');\r\n const hasVerification = phaseFiles.some(f => f.endsWith('-VERIFICATION.md') || f === 'VERIFICATION.md');\r\n\r\n const completedPlanIds = new Set(summaries.map(summaryId));\r\n const incompletePlans = plans.filter(p => !completedPlanIds.has(planId(p)));\r\n\r\n return {\r\n found: true,\r\n directory: path.join(relBase, match),\r\n phase_number: phaseNumber,\r\n phase_name: phaseName,\r\n phase_slug: phaseName ? phaseName.toLowerCase().replace(/[^a-z0-9]+/g, '-').replace(/^-+|-+$/g, '') : null,\r\n plans,\r\n summaries,\r\n incomplete_plans: incompletePlans,\r\n has_research: hasResearch,\r\n has_context: hasContext,\r\n has_verification: hasVerification,\r\n };\r\n } catch {\r\n return null;\r\n }\r\n}\r\n\r\nexport function findPhaseInternal(cwd: string, phase: string): PhaseSearchResult | null {\r\n if (!phase) return null;\r\n\r\n const pd = phasesPath(cwd);\r\n const normalized = normalizePhaseName(phase);\r\n\r\n const current = searchPhaseInDir(pd, path.join('.planning', 'phases'), normalized);\r\n if (current) return current;\r\n\r\n const milestonesDir = planningPath(cwd, 'milestones');\r\n\r\n try {\r\n fs.statSync(milestonesDir);\r\n } catch {\r\n return null;\r\n }\r\n\r\n try {\r\n const milestoneEntries = fs.readdirSync(milestonesDir, { withFileTypes: true });\r\n const archiveDirs = milestoneEntries\r\n .filter(e => e.isDirectory() && /^v[\\d.]+-phases$/.test(e.name))\r\n .map(e => e.name)\r\n .sort()\r\n .reverse();\r\n\r\n for (const archiveName of archiveDirs) {\r\n const versionMatch = archiveName.match(/^(v[\\d.]+)-phases$/);\r\n if (!versionMatch) continue;\r\n const version = versionMatch[1];\r\n const archivePath = path.join(milestonesDir, archiveName);\r\n const relBase = path.join('.planning', 'milestones', archiveName);\r\n const result = searchPhaseInDir(archivePath, relBase, normalized);\r\n if (result) {\r\n result.archived = version;\r\n return result;\r\n }\r\n }\r\n } catch (e) {\r\n debugLog(e);\r\n }\r\n\r\n return null;\r\n}\r\n\r\nexport function getArchivedPhaseDirs(cwd: string): ArchivedPhaseDir[] {\r\n const milestonesDir = planningPath(cwd, 'milestones');\r\n const results: ArchivedPhaseDir[] = [];\r\n\r\n try {\r\n const milestoneEntries = fs.readdirSync(milestonesDir, { withFileTypes: true });\r\n const phaseDirs = milestoneEntries\r\n .filter(e => e.isDirectory() && /^v[\\d.]+-phases$/.test(e.name))\r\n .map(e => e.name)\r\n .sort()\r\n .reverse();\r\n\r\n for (const archiveName of phaseDirs) {\r\n const versionMatch = archiveName.match(/^(v[\\d.]+)-phases$/);\r\n if (!versionMatch) continue;\r\n const version = versionMatch[1];\r\n const archivePath = path.join(milestonesDir, archiveName);\r\n const dirs = listSubDirs(archivePath, true);\r\n\r\n for (const dir of dirs) {\r\n results.push({\r\n name: dir,\r\n milestone: version,\r\n basePath: path.join('.planning', 'milestones', archiveName),\r\n fullPath: path.join(archivePath, dir),\r\n });\r\n }\r\n }\r\n } catch (e) {\r\n debugLog(e);\r\n }\r\n\r\n return results;\r\n}\r\n\r\n// ─── Roadmap & model utilities ───────────────────────────────────────────────\r\n\r\nexport function getRoadmapPhaseInternal(cwd: string, phaseNum: string | number): RoadmapPhaseInfo | null {\r\n if (!phaseNum) return null;\r\n const rp = roadmapPath(cwd);\r\n\r\n try {\r\n const content = fs.readFileSync(rp, 'utf-8');\r\n const escapedPhase = escapePhaseNum(phaseNum);\r\n const phasePattern = getPhasePattern(escapedPhase, 'i');\r\n const headerMatch = content.match(phasePattern);\r\n if (!headerMatch) return null;\r\n\r\n const phaseName = headerMatch[1].trim();\r\n const headerIndex = headerMatch.index!;\r\n const restOfContent = content.slice(headerIndex);\r\n const nextHeaderMatch = restOfContent.match(/\\n#{2,4}\\s+Phase\\s+\\d/i);\r\n const sectionEnd = nextHeaderMatch ? headerIndex + nextHeaderMatch.index! : content.length;\r\n const section = content.slice(headerIndex, sectionEnd).trim();\r\n\r\n const goalMatch = section.match(/\\*\\*Goal(?::\\*\\*|\\*\\*:)\\s*([^\\n]+)/i);\r\n const goal = goalMatch ? goalMatch[1].trim() : null;\r\n\r\n return {\r\n found: true,\r\n phase_number: phaseNum.toString(),\r\n phase_name: phaseName,\r\n goal,\r\n section,\r\n };\r\n } catch {\r\n return null;\r\n }\r\n}\r\n\r\nexport function resolveModelInternal(cwd: string, agentType: AgentType, config?: AppConfig): ModelResolution {\r\n config = config ?? loadConfig(cwd);\r\n\r\n const override = config.model_overrides?.[agentType];\r\n if (override) {\r\n return override === 'opus' ? 'inherit' : override;\r\n }\r\n\r\n const profile: ModelProfileName = config.model_profile || 'balanced';\r\n const agentModels = MODEL_PROFILES[agentType];\r\n if (!agentModels) return 'sonnet';\r\n const resolved = agentModels[profile] || agentModels['balanced'] || 'sonnet';\r\n return resolved === 'opus' ? 'inherit' : resolved;\r\n}\r\n\r\n// ─── Misc utilities ──────────────────────────────────────────────────────────\r\n\r\nexport function pathExistsInternal(cwd: string, targetPath: string): boolean {\r\n const fullPath = path.isAbsolute(targetPath) ? targetPath : path.join(cwd, targetPath);\r\n try {\r\n fs.statSync(fullPath);\r\n return true;\r\n } catch {\r\n return false;\r\n }\r\n}\r\n\r\nexport function generateSlugInternal(text: string | null | undefined): string | null {\r\n if (!text) return null;\r\n return slugify(text, { lower: true, strict: true });\r\n}\r\n\r\nexport function getMilestoneInfo(cwd: string): MilestoneInfo {\r\n try {\r\n const roadmap = fs.readFileSync(roadmapPath(cwd), 'utf-8');\r\n const versionMatch = roadmap.match(/v(\\d+\\.\\d+)/);\r\n const nameMatch = roadmap.match(/## .*v\\d+\\.\\d+[:\\s]+([^\\n(]+)/);\r\n return {\r\n version: versionMatch ? versionMatch[0] : 'v1.0',\r\n name: nameMatch ? nameMatch[1].trim() : 'milestone',\r\n };\r\n } catch {\r\n return { version: 'v1.0', name: 'milestone' };\r\n }\r\n}\r\n","'use strict';\n\nconst ALIAS = Symbol.for('yaml.alias');\nconst DOC = Symbol.for('yaml.document');\nconst MAP = Symbol.for('yaml.map');\nconst PAIR = Symbol.for('yaml.pair');\nconst SCALAR = Symbol.for('yaml.scalar');\nconst SEQ = Symbol.for('yaml.seq');\nconst NODE_TYPE = Symbol.for('yaml.node.type');\nconst isAlias = (node) => !!node && typeof node === 'object' && node[NODE_TYPE] === ALIAS;\nconst isDocument = (node) => !!node && typeof node === 'object' && node[NODE_TYPE] === DOC;\nconst isMap = (node) => !!node && typeof node === 'object' && node[NODE_TYPE] === MAP;\nconst isPair = (node) => !!node && typeof node === 'object' && node[NODE_TYPE] === PAIR;\nconst isScalar = (node) => !!node && typeof node === 'object' && node[NODE_TYPE] === SCALAR;\nconst isSeq = (node) => !!node && typeof node === 'object' && node[NODE_TYPE] === SEQ;\nfunction isCollection(node) {\n if (node && typeof node === 'object')\n switch (node[NODE_TYPE]) {\n case MAP:\n case SEQ:\n return true;\n }\n return false;\n}\nfunction isNode(node) {\n if (node && typeof node === 'object')\n switch (node[NODE_TYPE]) {\n case ALIAS:\n case MAP:\n case SCALAR:\n case SEQ:\n return true;\n }\n return false;\n}\nconst hasAnchor = (node) => (isScalar(node) || isCollection(node)) && !!node.anchor;\n\nexports.ALIAS = ALIAS;\nexports.DOC = DOC;\nexports.MAP = MAP;\nexports.NODE_TYPE = NODE_TYPE;\nexports.PAIR = PAIR;\nexports.SCALAR = SCALAR;\nexports.SEQ = SEQ;\nexports.hasAnchor = hasAnchor;\nexports.isAlias = isAlias;\nexports.isCollection = isCollection;\nexports.isDocument = isDocument;\nexports.isMap = isMap;\nexports.isNode = isNode;\nexports.isPair = isPair;\nexports.isScalar = isScalar;\nexports.isSeq = isSeq;\n","'use strict';\n\nvar identity = require('./nodes/identity.js');\n\nconst BREAK = Symbol('break visit');\nconst SKIP = Symbol('skip children');\nconst REMOVE = Symbol('remove node');\n/**\n * Apply a visitor to an AST node or document.\n *\n * Walks through the tree (depth-first) starting from `node`, calling a\n * `visitor` function with three arguments:\n * - `key`: For sequence values and map `Pair`, the node's index in the\n * collection. Within a `Pair`, `'key'` or `'value'`, correspondingly.\n * `null` for the root node.\n * - `node`: The current node.\n * - `path`: The ancestry of the current node.\n *\n * The return value of the visitor may be used to control the traversal:\n * - `undefined` (default): Do nothing and continue\n * - `visit.SKIP`: Do not visit the children of this node, continue with next\n * sibling\n * - `visit.BREAK`: Terminate traversal completely\n * - `visit.REMOVE`: Remove the current node, then continue with the next one\n * - `Node`: Replace the current node, then continue by visiting it\n * - `number`: While iterating the items of a sequence or map, set the index\n * of the next step. This is useful especially if the index of the current\n * node has changed.\n *\n * If `visitor` is a single function, it will be called with all values\n * encountered in the tree, including e.g. `null` values. Alternatively,\n * separate visitor functions may be defined for each `Map`, `Pair`, `Seq`,\n * `Alias` and `Scalar` node. To define the same visitor function for more than\n * one node type, use the `Collection` (map and seq), `Value` (map, seq & scalar)\n * and `Node` (alias, map, seq & scalar) targets. Of all these, only the most\n * specific defined one will be used for each node.\n */\nfunction visit(node, visitor) {\n const visitor_ = initVisitor(visitor);\n if (identity.isDocument(node)) {\n const cd = visit_(null, node.contents, visitor_, Object.freeze([node]));\n if (cd === REMOVE)\n node.contents = null;\n }\n else\n visit_(null, node, visitor_, Object.freeze([]));\n}\n// Without the `as symbol` casts, TS declares these in the `visit`\n// namespace using `var`, but then complains about that because\n// `unique symbol` must be `const`.\n/** Terminate visit traversal completely */\nvisit.BREAK = BREAK;\n/** Do not visit the children of the current node */\nvisit.SKIP = SKIP;\n/** Remove the current node */\nvisit.REMOVE = REMOVE;\nfunction visit_(key, node, visitor, path) {\n const ctrl = callVisitor(key, node, visitor, path);\n if (identity.isNode(ctrl) || identity.isPair(ctrl)) {\n replaceNode(key, path, ctrl);\n return visit_(key, ctrl, visitor, path);\n }\n if (typeof ctrl !== 'symbol') {\n if (identity.isCollection(node)) {\n path = Object.freeze(path.concat(node));\n for (let i = 0; i < node.items.length; ++i) {\n const ci = visit_(i, node.items[i], visitor, path);\n if (typeof ci === 'number')\n i = ci - 1;\n else if (ci === BREAK)\n return BREAK;\n else if (ci === REMOVE) {\n node.items.splice(i, 1);\n i -= 1;\n }\n }\n }\n else if (identity.isPair(node)) {\n path = Object.freeze(path.concat(node));\n const ck = visit_('key', node.key, visitor, path);\n if (ck === BREAK)\n return BREAK;\n else if (ck === REMOVE)\n node.key = null;\n const cv = visit_('value', node.value, visitor, path);\n if (cv === BREAK)\n return BREAK;\n else if (cv === REMOVE)\n node.value = null;\n }\n }\n return ctrl;\n}\n/**\n * Apply an async visitor to an AST node or document.\n *\n * Walks through the tree (depth-first) starting from `node`, calling a\n * `visitor` function with three arguments:\n * - `key`: For sequence values and map `Pair`, the node's index in the\n * collection. Within a `Pair`, `'key'` or `'value'`, correspondingly.\n * `null` for the root node.\n * - `node`: The current node.\n * - `path`: The ancestry of the current node.\n *\n * The return value of the visitor may be used to control the traversal:\n * - `Promise`: Must resolve to one of the following values\n * - `undefined` (default): Do nothing and continue\n * - `visit.SKIP`: Do not visit the children of this node, continue with next\n * sibling\n * - `visit.BREAK`: Terminate traversal completely\n * - `visit.REMOVE`: Remove the current node, then continue with the next one\n * - `Node`: Replace the current node, then continue by visiting it\n * - `number`: While iterating the items of a sequence or map, set the index\n * of the next step. This is useful especially if the index of the current\n * node has changed.\n *\n * If `visitor` is a single function, it will be called with all values\n * encountered in the tree, including e.g. `null` values. Alternatively,\n * separate visitor functions may be defined for each `Map`, `Pair`, `Seq`,\n * `Alias` and `Scalar` node. To define the same visitor function for more than\n * one node type, use the `Collection` (map and seq), `Value` (map, seq & scalar)\n * and `Node` (alias, map, seq & scalar) targets. Of all these, only the most\n * specific defined one will be used for each node.\n */\nasync function visitAsync(node, visitor) {\n const visitor_ = initVisitor(visitor);\n if (identity.isDocument(node)) {\n const cd = await visitAsync_(null, node.contents, visitor_, Object.freeze([node]));\n if (cd === REMOVE)\n node.contents = null;\n }\n else\n await visitAsync_(null, node, visitor_, Object.freeze([]));\n}\n// Without the `as symbol` casts, TS declares these in the `visit`\n// namespace using `var`, but then complains about that because\n// `unique symbol` must be `const`.\n/** Terminate visit traversal completely */\nvisitAsync.BREAK = BREAK;\n/** Do not visit the children of the current node */\nvisitAsync.SKIP = SKIP;\n/** Remove the current node */\nvisitAsync.REMOVE = REMOVE;\nasync function visitAsync_(key, node, visitor, path) {\n const ctrl = await callVisitor(key, node, visitor, path);\n if (identity.isNode(ctrl) || identity.isPair(ctrl)) {\n replaceNode(key, path, ctrl);\n return visitAsync_(key, ctrl, visitor, path);\n }\n if (typeof ctrl !== 'symbol') {\n if (identity.isCollection(node)) {\n path = Object.freeze(path.concat(node));\n for (let i = 0; i < node.items.length; ++i) {\n const ci = await visitAsync_(i, node.items[i], visitor, path);\n if (typeof ci === 'number')\n i = ci - 1;\n else if (ci === BREAK)\n return BREAK;\n else if (ci === REMOVE) {\n node.items.splice(i, 1);\n i -= 1;\n }\n }\n }\n else if (identity.isPair(node)) {\n path = Object.freeze(path.concat(node));\n const ck = await visitAsync_('key', node.key, visitor, path);\n if (ck === BREAK)\n return BREAK;\n else if (ck === REMOVE)\n node.key = null;\n const cv = await visitAsync_('value', node.value, visitor, path);\n if (cv === BREAK)\n return BREAK;\n else if (cv === REMOVE)\n node.value = null;\n }\n }\n return ctrl;\n}\nfunction initVisitor(visitor) {\n if (typeof visitor === 'object' &&\n (visitor.Collection || visitor.Node || visitor.Value)) {\n return Object.assign({\n Alias: visitor.Node,\n Map: visitor.Node,\n Scalar: visitor.Node,\n Seq: visitor.Node\n }, visitor.Value && {\n Map: visitor.Value,\n Scalar: visitor.Value,\n Seq: visitor.Value\n }, visitor.Collection && {\n Map: visitor.Collection,\n Seq: visitor.Collection\n }, visitor);\n }\n return visitor;\n}\nfunction callVisitor(key, node, visitor, path) {\n if (typeof visitor === 'function')\n return visitor(key, node, path);\n if (identity.isMap(node))\n return visitor.Map?.(key, node, path);\n if (identity.isSeq(node))\n return visitor.Seq?.(key, node, path);\n if (identity.isPair(node))\n return visitor.Pair?.(key, node, path);\n if (identity.isScalar(node))\n return visitor.Scalar?.(key, node, path);\n if (identity.isAlias(node))\n return visitor.Alias?.(key, node, path);\n return undefined;\n}\nfunction replaceNode(key, path, node) {\n const parent = path[path.length - 1];\n if (identity.isCollection(parent)) {\n parent.items[key] = node;\n }\n else if (identity.isPair(parent)) {\n if (key === 'key')\n parent.key = node;\n else\n parent.value = node;\n }\n else if (identity.isDocument(parent)) {\n parent.contents = node;\n }\n else {\n const pt = identity.isAlias(parent) ? 'alias' : 'scalar';\n throw new Error(`Cannot replace node with ${pt} parent`);\n }\n}\n\nexports.visit = visit;\nexports.visitAsync = visitAsync;\n","'use strict';\n\nvar identity = require('../nodes/identity.js');\nvar visit = require('../visit.js');\n\nconst escapeChars = {\n '!': '%21',\n ',': '%2C',\n '[': '%5B',\n ']': '%5D',\n '{': '%7B',\n '}': '%7D'\n};\nconst escapeTagName = (tn) => tn.replace(/[!,[\\]{}]/g, ch => escapeChars[ch]);\nclass Directives {\n constructor(yaml, tags) {\n /**\n * The directives-end/doc-start marker `---`. If `null`, a marker may still be\n * included in the document's stringified representation.\n */\n this.docStart = null;\n /** The doc-end marker `...`. */\n this.docEnd = false;\n this.yaml = Object.assign({}, Directives.defaultYaml, yaml);\n this.tags = Object.assign({}, Directives.defaultTags, tags);\n }\n clone() {\n const copy = new Directives(this.yaml, this.tags);\n copy.docStart = this.docStart;\n return copy;\n }\n /**\n * During parsing, get a Directives instance for the current document and\n * update the stream state according to the current version's spec.\n */\n atDocument() {\n const res = new Directives(this.yaml, this.tags);\n switch (this.yaml.version) {\n case '1.1':\n this.atNextDocument = true;\n break;\n case '1.2':\n this.atNextDocument = false;\n this.yaml = {\n explicit: Directives.defaultYaml.explicit,\n version: '1.2'\n };\n this.tags = Object.assign({}, Directives.defaultTags);\n break;\n }\n return res;\n }\n /**\n * @param onError - May be called even if the action was successful\n * @returns `true` on success\n */\n add(line, onError) {\n if (this.atNextDocument) {\n this.yaml = { explicit: Directives.defaultYaml.explicit, version: '1.1' };\n this.tags = Object.assign({}, Directives.defaultTags);\n this.atNextDocument = false;\n }\n const parts = line.trim().split(/[ \\t]+/);\n const name = parts.shift();\n switch (name) {\n case '%TAG': {\n if (parts.length !== 2) {\n onError(0, '%TAG directive should contain exactly two parts');\n if (parts.length < 2)\n return false;\n }\n const [handle, prefix] = parts;\n this.tags[handle] = prefix;\n return true;\n }\n case '%YAML': {\n this.yaml.explicit = true;\n if (parts.length !== 1) {\n onError(0, '%YAML directive should contain exactly one part');\n return false;\n }\n const [version] = parts;\n if (version === '1.1' || version === '1.2') {\n this.yaml.version = version;\n return true;\n }\n else {\n const isValid = /^\\d+\\.\\d+$/.test(version);\n onError(6, `Unsupported YAML version ${version}`, isValid);\n return false;\n }\n }\n default:\n onError(0, `Unknown directive ${name}`, true);\n return false;\n }\n }\n /**\n * Resolves a tag, matching handles to those defined in %TAG directives.\n *\n * @returns Resolved tag, which may also be the non-specific tag `'!'` or a\n * `'!local'` tag, or `null` if unresolvable.\n */\n tagName(source, onError) {\n if (source === '!')\n return '!'; // non-specific tag\n if (source[0] !== '!') {\n onError(`Not a valid tag: ${source}`);\n return null;\n }\n if (source[1] === '<') {\n const verbatim = source.slice(2, -1);\n if (verbatim === '!' || verbatim === '!!') {\n onError(`Verbatim tags aren't resolved, so ${source} is invalid.`);\n return null;\n }\n if (source[source.length - 1] !== '>')\n onError('Verbatim tags must end with a >');\n return verbatim;\n }\n const [, handle, suffix] = source.match(/^(.*!)([^!]*)$/s);\n if (!suffix)\n onError(`The ${source} tag has no suffix`);\n const prefix = this.tags[handle];\n if (prefix) {\n try {\n return prefix + decodeURIComponent(suffix);\n }\n catch (error) {\n onError(String(error));\n return null;\n }\n }\n if (handle === '!')\n return source; // local tag\n onError(`Could not resolve tag: ${source}`);\n return null;\n }\n /**\n * Given a fully resolved tag, returns its printable string form,\n * taking into account current tag prefixes and defaults.\n */\n tagString(tag) {\n for (const [handle, prefix] of Object.entries(this.tags)) {\n if (tag.startsWith(prefix))\n return handle + escapeTagName(tag.substring(prefix.length));\n }\n return tag[0] === '!' ? tag : `!<${tag}>`;\n }\n toString(doc) {\n const lines = this.yaml.explicit\n ? [`%YAML ${this.yaml.version || '1.2'}`]\n : [];\n const tagEntries = Object.entries(this.tags);\n let tagNames;\n if (doc && tagEntries.length > 0 && identity.isNode(doc.contents)) {\n const tags = {};\n visit.visit(doc.contents, (_key, node) => {\n if (identity.isNode(node) && node.tag)\n tags[node.tag] = true;\n });\n tagNames = Object.keys(tags);\n }\n else\n tagNames = [];\n for (const [handle, prefix] of tagEntries) {\n if (handle === '!!' && prefix === 'tag:yaml.org,2002:')\n continue;\n if (!doc || tagNames.some(tn => tn.startsWith(prefix)))\n lines.push(`%TAG ${handle} ${prefix}`);\n }\n return lines.join('\\n');\n }\n}\nDirectives.defaultYaml = { explicit: false, version: '1.2' };\nDirectives.defaultTags = { '!!': 'tag:yaml.org,2002:' };\n\nexports.Directives = Directives;\n","'use strict';\n\nvar identity = require('../nodes/identity.js');\nvar visit = require('../visit.js');\n\n/**\n * Verify that the input string is a valid anchor.\n *\n * Will throw on errors.\n */\nfunction anchorIsValid(anchor) {\n if (/[\\x00-\\x19\\s,[\\]{}]/.test(anchor)) {\n const sa = JSON.stringify(anchor);\n const msg = `Anchor must not contain whitespace or control characters: ${sa}`;\n throw new Error(msg);\n }\n return true;\n}\nfunction anchorNames(root) {\n const anchors = new Set();\n visit.visit(root, {\n Value(_key, node) {\n if (node.anchor)\n anchors.add(node.anchor);\n }\n });\n return anchors;\n}\n/** Find a new anchor name with the given `prefix` and a one-indexed suffix. */\nfunction findNewAnchor(prefix, exclude) {\n for (let i = 1; true; ++i) {\n const name = `${prefix}${i}`;\n if (!exclude.has(name))\n return name;\n }\n}\nfunction createNodeAnchors(doc, prefix) {\n const aliasObjects = [];\n const sourceObjects = new Map();\n let prevAnchors = null;\n return {\n onAnchor: (source) => {\n aliasObjects.push(source);\n prevAnchors ?? (prevAnchors = anchorNames(doc));\n const anchor = findNewAnchor(prefix, prevAnchors);\n prevAnchors.add(anchor);\n return anchor;\n },\n /**\n * With circular references, the source node is only resolved after all\n * of its child nodes are. This is why anchors are set only after all of\n * the nodes have been created.\n */\n setAnchors: () => {\n for (const source of aliasObjects) {\n const ref = sourceObjects.get(source);\n if (typeof ref === 'object' &&\n ref.anchor &&\n (identity.isScalar(ref.node) || identity.isCollection(ref.node))) {\n ref.node.anchor = ref.anchor;\n }\n else {\n const error = new Error('Failed to resolve repeated object (this should not happen)');\n error.source = source;\n throw error;\n }\n }\n },\n sourceObjects\n };\n}\n\nexports.anchorIsValid = anchorIsValid;\nexports.anchorNames = anchorNames;\nexports.createNodeAnchors = createNodeAnchors;\nexports.findNewAnchor = findNewAnchor;\n","'use strict';\n\n/**\n * Applies the JSON.parse reviver algorithm as defined in the ECMA-262 spec,\n * in section 24.5.1.1 \"Runtime Semantics: InternalizeJSONProperty\" of the\n * 2021 edition: https://tc39.es/ecma262/#sec-json.parse\n *\n * Includes extensions for handling Map and Set objects.\n */\nfunction applyReviver(reviver, obj, key, val) {\n if (val && typeof val === 'object') {\n if (Array.isArray(val)) {\n for (let i = 0, len = val.length; i < len; ++i) {\n const v0 = val[i];\n const v1 = applyReviver(reviver, val, String(i), v0);\n // eslint-disable-next-line @typescript-eslint/no-array-delete\n if (v1 === undefined)\n delete val[i];\n else if (v1 !== v0)\n val[i] = v1;\n }\n }\n else if (val instanceof Map) {\n for (const k of Array.from(val.keys())) {\n const v0 = val.get(k);\n const v1 = applyReviver(reviver, val, k, v0);\n if (v1 === undefined)\n val.delete(k);\n else if (v1 !== v0)\n val.set(k, v1);\n }\n }\n else if (val instanceof Set) {\n for (const v0 of Array.from(val)) {\n const v1 = applyReviver(reviver, val, v0, v0);\n if (v1 === undefined)\n val.delete(v0);\n else if (v1 !== v0) {\n val.delete(v0);\n val.add(v1);\n }\n }\n }\n else {\n for (const [k, v0] of Object.entries(val)) {\n const v1 = applyReviver(reviver, val, k, v0);\n if (v1 === undefined)\n delete val[k];\n else if (v1 !== v0)\n val[k] = v1;\n }\n }\n }\n return reviver.call(obj, key, val);\n}\n\nexports.applyReviver = applyReviver;\n","'use strict';\n\nvar identity = require('./identity.js');\n\n/**\n * Recursively convert any node or its contents to native JavaScript\n *\n * @param value - The input value\n * @param arg - If `value` defines a `toJSON()` method, use this\n * as its first argument\n * @param ctx - Conversion context, originally set in Document#toJS(). If\n * `{ keep: true }` is not set, output should be suitable for JSON\n * stringification.\n */\nfunction toJS(value, arg, ctx) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n if (Array.isArray(value))\n return value.map((v, i) => toJS(v, String(i), ctx));\n if (value && typeof value.toJSON === 'function') {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n if (!ctx || !identity.hasAnchor(value))\n return value.toJSON(arg, ctx);\n const data = { aliasCount: 0, count: 1, res: undefined };\n ctx.anchors.set(value, data);\n ctx.onCreate = res => {\n data.res = res;\n delete ctx.onCreate;\n };\n const res = value.toJSON(arg, ctx);\n if (ctx.onCreate)\n ctx.onCreate(res);\n return res;\n }\n if (typeof value === 'bigint' && !ctx?.keep)\n return Number(value);\n return value;\n}\n\nexports.toJS = toJS;\n","'use strict';\n\nvar applyReviver = require('../doc/applyReviver.js');\nvar identity = require('./identity.js');\nvar toJS = require('./toJS.js');\n\nclass NodeBase {\n constructor(type) {\n Object.defineProperty(this, identity.NODE_TYPE, { value: type });\n }\n /** Create a copy of this node. */\n clone() {\n const copy = Object.create(Object.getPrototypeOf(this), Object.getOwnPropertyDescriptors(this));\n if (this.range)\n copy.range = this.range.slice();\n return copy;\n }\n /** A plain JavaScript representation of this node. */\n toJS(doc, { mapAsMap, maxAliasCount, onAnchor, reviver } = {}) {\n if (!identity.isDocument(doc))\n throw new TypeError('A document argument is required');\n const ctx = {\n anchors: new Map(),\n doc,\n keep: true,\n mapAsMap: mapAsMap === true,\n mapKeyWarned: false,\n maxAliasCount: typeof maxAliasCount === 'number' ? maxAliasCount : 100\n };\n const res = toJS.toJS(this, '', ctx);\n if (typeof onAnchor === 'function')\n for (const { count, res } of ctx.anchors.values())\n onAnchor(res, count);\n return typeof reviver === 'function'\n ? applyReviver.applyReviver(reviver, { '': res }, '', res)\n : res;\n }\n}\n\nexports.NodeBase = NodeBase;\n","'use strict';\n\nvar anchors = require('../doc/anchors.js');\nvar visit = require('../visit.js');\nvar identity = require('./identity.js');\nvar Node = require('./Node.js');\nvar toJS = require('./toJS.js');\n\nclass Alias extends Node.NodeBase {\n constructor(source) {\n super(identity.ALIAS);\n this.source = source;\n Object.defineProperty(this, 'tag', {\n set() {\n throw new Error('Alias nodes cannot have tags');\n }\n });\n }\n /**\n * Resolve the value of this alias within `doc`, finding the last\n * instance of the `source` anchor before this node.\n */\n resolve(doc, ctx) {\n let nodes;\n if (ctx?.aliasResolveCache) {\n nodes = ctx.aliasResolveCache;\n }\n else {\n nodes = [];\n visit.visit(doc, {\n Node: (_key, node) => {\n if (identity.isAlias(node) || identity.hasAnchor(node))\n nodes.push(node);\n }\n });\n if (ctx)\n ctx.aliasResolveCache = nodes;\n }\n let found = undefined;\n for (const node of nodes) {\n if (node === this)\n break;\n if (node.anchor === this.source)\n found = node;\n }\n return found;\n }\n toJSON(_arg, ctx) {\n if (!ctx)\n return { source: this.source };\n const { anchors, doc, maxAliasCount } = ctx;\n const source = this.resolve(doc, ctx);\n if (!source) {\n const msg = `Unresolved alias (the anchor must be set before the alias): ${this.source}`;\n throw new ReferenceError(msg);\n }\n let data = anchors.get(source);\n if (!data) {\n // Resolve anchors for Node.prototype.toJS()\n toJS.toJS(source, null, ctx);\n data = anchors.get(source);\n }\n /* istanbul ignore if */\n if (data?.res === undefined) {\n const msg = 'This should not happen: Alias anchor was not resolved?';\n throw new ReferenceError(msg);\n }\n if (maxAliasCount >= 0) {\n data.count += 1;\n if (data.aliasCount === 0)\n data.aliasCount = getAliasCount(doc, source, anchors);\n if (data.count * data.aliasCount > maxAliasCount) {\n const msg = 'Excessive alias count indicates a resource exhaustion attack';\n throw new ReferenceError(msg);\n }\n }\n return data.res;\n }\n toString(ctx, _onComment, _onChompKeep) {\n const src = `*${this.source}`;\n if (ctx) {\n anchors.anchorIsValid(this.source);\n if (ctx.options.verifyAliasOrder && !ctx.anchors.has(this.source)) {\n const msg = `Unresolved alias (the anchor must be set before the alias): ${this.source}`;\n throw new Error(msg);\n }\n if (ctx.implicitKey)\n return `${src} `;\n }\n return src;\n }\n}\nfunction getAliasCount(doc, node, anchors) {\n if (identity.isAlias(node)) {\n const source = node.resolve(doc);\n const anchor = anchors && source && anchors.get(source);\n return anchor ? anchor.count * anchor.aliasCount : 0;\n }\n else if (identity.isCollection(node)) {\n let count = 0;\n for (const item of node.items) {\n const c = getAliasCount(doc, item, anchors);\n if (c > count)\n count = c;\n }\n return count;\n }\n else if (identity.isPair(node)) {\n const kc = getAliasCount(doc, node.key, anchors);\n const vc = getAliasCount(doc, node.value, anchors);\n return Math.max(kc, vc);\n }\n return 1;\n}\n\nexports.Alias = Alias;\n","'use strict';\n\nvar identity = require('./identity.js');\nvar Node = require('./Node.js');\nvar toJS = require('./toJS.js');\n\nconst isScalarValue = (value) => !value || (typeof value !== 'function' && typeof value !== 'object');\nclass Scalar extends Node.NodeBase {\n constructor(value) {\n super(identity.SCALAR);\n this.value = value;\n }\n toJSON(arg, ctx) {\n return ctx?.keep ? this.value : toJS.toJS(this.value, arg, ctx);\n }\n toString() {\n return String(this.value);\n }\n}\nScalar.BLOCK_FOLDED = 'BLOCK_FOLDED';\nScalar.BLOCK_LITERAL = 'BLOCK_LITERAL';\nScalar.PLAIN = 'PLAIN';\nScalar.QUOTE_DOUBLE = 'QUOTE_DOUBLE';\nScalar.QUOTE_SINGLE = 'QUOTE_SINGLE';\n\nexports.Scalar = Scalar;\nexports.isScalarValue = isScalarValue;\n","'use strict';\n\nvar Alias = require('../nodes/Alias.js');\nvar identity = require('../nodes/identity.js');\nvar Scalar = require('../nodes/Scalar.js');\n\nconst defaultTagPrefix = 'tag:yaml.org,2002:';\nfunction findTagObject(value, tagName, tags) {\n if (tagName) {\n const match = tags.filter(t => t.tag === tagName);\n const tagObj = match.find(t => !t.format) ?? match[0];\n if (!tagObj)\n throw new Error(`Tag ${tagName} not found`);\n return tagObj;\n }\n return tags.find(t => t.identify?.(value) && !t.format);\n}\nfunction createNode(value, tagName, ctx) {\n if (identity.isDocument(value))\n value = value.contents;\n if (identity.isNode(value))\n return value;\n if (identity.isPair(value)) {\n const map = ctx.schema[identity.MAP].createNode?.(ctx.schema, null, ctx);\n map.items.push(value);\n return map;\n }\n if (value instanceof String ||\n value instanceof Number ||\n value instanceof Boolean ||\n (typeof BigInt !== 'undefined' && value instanceof BigInt) // not supported everywhere\n ) {\n // https://tc39.es/ecma262/#sec-serializejsonproperty\n value = value.valueOf();\n }\n const { aliasDuplicateObjects, onAnchor, onTagObj, schema, sourceObjects } = ctx;\n // Detect duplicate references to the same object & use Alias nodes for all\n // after first. The `ref` wrapper allows for circular references to resolve.\n let ref = undefined;\n if (aliasDuplicateObjects && value && typeof value === 'object') {\n ref = sourceObjects.get(value);\n if (ref) {\n ref.anchor ?? (ref.anchor = onAnchor(value));\n return new Alias.Alias(ref.anchor);\n }\n else {\n ref = { anchor: null, node: null };\n sourceObjects.set(value, ref);\n }\n }\n if (tagName?.startsWith('!!'))\n tagName = defaultTagPrefix + tagName.slice(2);\n let tagObj = findTagObject(value, tagName, schema.tags);\n if (!tagObj) {\n if (value && typeof value.toJSON === 'function') {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n value = value.toJSON();\n }\n if (!value || typeof value !== 'object') {\n const node = new Scalar.Scalar(value);\n if (ref)\n ref.node = node;\n return node;\n }\n tagObj =\n value instanceof Map\n ? schema[identity.MAP]\n : Symbol.iterator in Object(value)\n ? schema[identity.SEQ]\n : schema[identity.MAP];\n }\n if (onTagObj) {\n onTagObj(tagObj);\n delete ctx.onTagObj;\n }\n const node = tagObj?.createNode\n ? tagObj.createNode(ctx.schema, value, ctx)\n : typeof tagObj?.nodeClass?.from === 'function'\n ? tagObj.nodeClass.from(ctx.schema, value, ctx)\n : new Scalar.Scalar(value);\n if (tagName)\n node.tag = tagName;\n else if (!tagObj.default)\n node.tag = tagObj.tag;\n if (ref)\n ref.node = node;\n return node;\n}\n\nexports.createNode = createNode;\n","'use strict';\n\nvar createNode = require('../doc/createNode.js');\nvar identity = require('./identity.js');\nvar Node = require('./Node.js');\n\nfunction collectionFromPath(schema, path, value) {\n let v = value;\n for (let i = path.length - 1; i >= 0; --i) {\n const k = path[i];\n if (typeof k === 'number' && Number.isInteger(k) && k >= 0) {\n const a = [];\n a[k] = v;\n v = a;\n }\n else {\n v = new Map([[k, v]]);\n }\n }\n return createNode.createNode(v, undefined, {\n aliasDuplicateObjects: false,\n keepUndefined: false,\n onAnchor: () => {\n throw new Error('This should not happen, please report a bug.');\n },\n schema,\n sourceObjects: new Map()\n });\n}\n// Type guard is intentionally a little wrong so as to be more useful,\n// as it does not cover untypable empty non-string iterables (e.g. []).\nconst isEmptyPath = (path) => path == null ||\n (typeof path === 'object' && !!path[Symbol.iterator]().next().done);\nclass Collection extends Node.NodeBase {\n constructor(type, schema) {\n super(type);\n Object.defineProperty(this, 'schema', {\n value: schema,\n configurable: true,\n enumerable: false,\n writable: true\n });\n }\n /**\n * Create a copy of this collection.\n *\n * @param schema - If defined, overwrites the original's schema\n */\n clone(schema) {\n const copy = Object.create(Object.getPrototypeOf(this), Object.getOwnPropertyDescriptors(this));\n if (schema)\n copy.schema = schema;\n copy.items = copy.items.map(it => identity.isNode(it) || identity.isPair(it) ? it.clone(schema) : it);\n if (this.range)\n copy.range = this.range.slice();\n return copy;\n }\n /**\n * Adds a value to the collection. For `!!map` and `!!omap` the value must\n * be a Pair instance or a `{ key, value }` object, which may not have a key\n * that already exists in the map.\n */\n addIn(path, value) {\n if (isEmptyPath(path))\n this.add(value);\n else {\n const [key, ...rest] = path;\n const node = this.get(key, true);\n if (identity.isCollection(node))\n node.addIn(rest, value);\n else if (node === undefined && this.schema)\n this.set(key, collectionFromPath(this.schema, rest, value));\n else\n throw new Error(`Expected YAML collection at ${key}. Remaining path: ${rest}`);\n }\n }\n /**\n * Removes a value from the collection.\n * @returns `true` if the item was found and removed.\n */\n deleteIn(path) {\n const [key, ...rest] = path;\n if (rest.length === 0)\n return this.delete(key);\n const node = this.get(key, true);\n if (identity.isCollection(node))\n return node.deleteIn(rest);\n else\n throw new Error(`Expected YAML collection at ${key}. Remaining path: ${rest}`);\n }\n /**\n * Returns item at `key`, or `undefined` if not found. By default unwraps\n * scalar values from their surrounding node; to disable set `keepScalar` to\n * `true` (collections are always returned intact).\n */\n getIn(path, keepScalar) {\n const [key, ...rest] = path;\n const node = this.get(key, true);\n if (rest.length === 0)\n return !keepScalar && identity.isScalar(node) ? node.value : node;\n else\n return identity.isCollection(node) ? node.getIn(rest, keepScalar) : undefined;\n }\n hasAllNullValues(allowScalar) {\n return this.items.every(node => {\n if (!identity.isPair(node))\n return false;\n const n = node.value;\n return (n == null ||\n (allowScalar &&\n identity.isScalar(n) &&\n n.value == null &&\n !n.commentBefore &&\n !n.comment &&\n !n.tag));\n });\n }\n /**\n * Checks if the collection includes a value with the key `key`.\n */\n hasIn(path) {\n const [key, ...rest] = path;\n if (rest.length === 0)\n return this.has(key);\n const node = this.get(key, true);\n return identity.isCollection(node) ? node.hasIn(rest) : false;\n }\n /**\n * Sets a value in this collection. For `!!set`, `value` needs to be a\n * boolean to add/remove the item from the set.\n */\n setIn(path, value) {\n const [key, ...rest] = path;\n if (rest.length === 0) {\n this.set(key, value);\n }\n else {\n const node = this.get(key, true);\n if (identity.isCollection(node))\n node.setIn(rest, value);\n else if (node === undefined && this.schema)\n this.set(key, collectionFromPath(this.schema, rest, value));\n else\n throw new Error(`Expected YAML collection at ${key}. Remaining path: ${rest}`);\n }\n }\n}\n\nexports.Collection = Collection;\nexports.collectionFromPath = collectionFromPath;\nexports.isEmptyPath = isEmptyPath;\n","'use strict';\n\n/**\n * Stringifies a comment.\n *\n * Empty comment lines are left empty,\n * lines consisting of a single space are replaced by `#`,\n * and all other lines are prefixed with a `#`.\n */\nconst stringifyComment = (str) => str.replace(/^(?!$)(?: $)?/gm, '#');\nfunction indentComment(comment, indent) {\n if (/^\\n+$/.test(comment))\n return comment.substring(1);\n return indent ? comment.replace(/^(?! *$)/gm, indent) : comment;\n}\nconst lineComment = (str, indent, comment) => str.endsWith('\\n')\n ? indentComment(comment, indent)\n : comment.includes('\\n')\n ? '\\n' + indentComment(comment, indent)\n : (str.endsWith(' ') ? '' : ' ') + comment;\n\nexports.indentComment = indentComment;\nexports.lineComment = lineComment;\nexports.stringifyComment = stringifyComment;\n","'use strict';\n\nconst FOLD_FLOW = 'flow';\nconst FOLD_BLOCK = 'block';\nconst FOLD_QUOTED = 'quoted';\n/**\n * Tries to keep input at up to `lineWidth` characters, splitting only on spaces\n * not followed by newlines or spaces unless `mode` is `'quoted'`. Lines are\n * terminated with `\\n` and started with `indent`.\n */\nfunction foldFlowLines(text, indent, mode = 'flow', { indentAtStart, lineWidth = 80, minContentWidth = 20, onFold, onOverflow } = {}) {\n if (!lineWidth || lineWidth < 0)\n return text;\n if (lineWidth < minContentWidth)\n minContentWidth = 0;\n const endStep = Math.max(1 + minContentWidth, 1 + lineWidth - indent.length);\n if (text.length <= endStep)\n return text;\n const folds = [];\n const escapedFolds = {};\n let end = lineWidth - indent.length;\n if (typeof indentAtStart === 'number') {\n if (indentAtStart > lineWidth - Math.max(2, minContentWidth))\n folds.push(0);\n else\n end = lineWidth - indentAtStart;\n }\n let split = undefined;\n let prev = undefined;\n let overflow = false;\n let i = -1;\n let escStart = -1;\n let escEnd = -1;\n if (mode === FOLD_BLOCK) {\n i = consumeMoreIndentedLines(text, i, indent.length);\n if (i !== -1)\n end = i + endStep;\n }\n for (let ch; (ch = text[(i += 1)]);) {\n if (mode === FOLD_QUOTED && ch === '\\\\') {\n escStart = i;\n switch (text[i + 1]) {\n case 'x':\n i += 3;\n break;\n case 'u':\n i += 5;\n break;\n case 'U':\n i += 9;\n break;\n default:\n i += 1;\n }\n escEnd = i;\n }\n if (ch === '\\n') {\n if (mode === FOLD_BLOCK)\n i = consumeMoreIndentedLines(text, i, indent.length);\n end = i + indent.length + endStep;\n split = undefined;\n }\n else {\n if (ch === ' ' &&\n prev &&\n prev !== ' ' &&\n prev !== '\\n' &&\n prev !== '\\t') {\n // space surrounded by non-space can be replaced with newline + indent\n const next = text[i + 1];\n if (next && next !== ' ' && next !== '\\n' && next !== '\\t')\n split = i;\n }\n if (i >= end) {\n if (split) {\n folds.push(split);\n end = split + endStep;\n split = undefined;\n }\n else if (mode === FOLD_QUOTED) {\n // white-space collected at end may stretch past lineWidth\n while (prev === ' ' || prev === '\\t') {\n prev = ch;\n ch = text[(i += 1)];\n overflow = true;\n }\n // Account for newline escape, but don't break preceding escape\n const j = i > escEnd + 1 ? i - 2 : escStart - 1;\n // Bail out if lineWidth & minContentWidth are shorter than an escape string\n if (escapedFolds[j])\n return text;\n folds.push(j);\n escapedFolds[j] = true;\n end = j + endStep;\n split = undefined;\n }\n else {\n overflow = true;\n }\n }\n }\n prev = ch;\n }\n if (overflow && onOverflow)\n onOverflow();\n if (folds.length === 0)\n return text;\n if (onFold)\n onFold();\n let res = text.slice(0, folds[0]);\n for (let i = 0; i < folds.length; ++i) {\n const fold = folds[i];\n const end = folds[i + 1] || text.length;\n if (fold === 0)\n res = `\\n${indent}${text.slice(0, end)}`;\n else {\n if (mode === FOLD_QUOTED && escapedFolds[fold])\n res += `${text[fold]}\\\\`;\n res += `\\n${indent}${text.slice(fold + 1, end)}`;\n }\n }\n return res;\n}\n/**\n * Presumes `i + 1` is at the start of a line\n * @returns index of last newline in more-indented block\n */\nfunction consumeMoreIndentedLines(text, i, indent) {\n let end = i;\n let start = i + 1;\n let ch = text[start];\n while (ch === ' ' || ch === '\\t') {\n if (i < start + indent) {\n ch = text[++i];\n }\n else {\n do {\n ch = text[++i];\n } while (ch && ch !== '\\n');\n end = i;\n start = i + 1;\n ch = text[start];\n }\n }\n return end;\n}\n\nexports.FOLD_BLOCK = FOLD_BLOCK;\nexports.FOLD_FLOW = FOLD_FLOW;\nexports.FOLD_QUOTED = FOLD_QUOTED;\nexports.foldFlowLines = foldFlowLines;\n","'use strict';\n\nvar Scalar = require('../nodes/Scalar.js');\nvar foldFlowLines = require('./foldFlowLines.js');\n\nconst getFoldOptions = (ctx, isBlock) => ({\n indentAtStart: isBlock ? ctx.indent.length : ctx.indentAtStart,\n lineWidth: ctx.options.lineWidth,\n minContentWidth: ctx.options.minContentWidth\n});\n// Also checks for lines starting with %, as parsing the output as YAML 1.1 will\n// presume that's starting a new document.\nconst containsDocumentMarker = (str) => /^(%|---|\\.\\.\\.)/m.test(str);\nfunction lineLengthOverLimit(str, lineWidth, indentLength) {\n if (!lineWidth || lineWidth < 0)\n return false;\n const limit = lineWidth - indentLength;\n const strLen = str.length;\n if (strLen <= limit)\n return false;\n for (let i = 0, start = 0; i < strLen; ++i) {\n if (str[i] === '\\n') {\n if (i - start > limit)\n return true;\n start = i + 1;\n if (strLen - start <= limit)\n return false;\n }\n }\n return true;\n}\nfunction doubleQuotedString(value, ctx) {\n const json = JSON.stringify(value);\n if (ctx.options.doubleQuotedAsJSON)\n return json;\n const { implicitKey } = ctx;\n const minMultiLineLength = ctx.options.doubleQuotedMinMultiLineLength;\n const indent = ctx.indent || (containsDocumentMarker(value) ? ' ' : '');\n let str = '';\n let start = 0;\n for (let i = 0, ch = json[i]; ch; ch = json[++i]) {\n if (ch === ' ' && json[i + 1] === '\\\\' && json[i + 2] === 'n') {\n // space before newline needs to be escaped to not be folded\n str += json.slice(start, i) + '\\\\ ';\n i += 1;\n start = i;\n ch = '\\\\';\n }\n if (ch === '\\\\')\n switch (json[i + 1]) {\n case 'u':\n {\n str += json.slice(start, i);\n const code = json.substr(i + 2, 4);\n switch (code) {\n case '0000':\n str += '\\\\0';\n break;\n case '0007':\n str += '\\\\a';\n break;\n case '000b':\n str += '\\\\v';\n break;\n case '001b':\n str += '\\\\e';\n break;\n case '0085':\n str += '\\\\N';\n break;\n case '00a0':\n str += '\\\\_';\n break;\n case '2028':\n str += '\\\\L';\n break;\n case '2029':\n str += '\\\\P';\n break;\n default:\n if (code.substr(0, 2) === '00')\n str += '\\\\x' + code.substr(2);\n else\n str += json.substr(i, 6);\n }\n i += 5;\n start = i + 1;\n }\n break;\n case 'n':\n if (implicitKey ||\n json[i + 2] === '\"' ||\n json.length < minMultiLineLength) {\n i += 1;\n }\n else {\n // folding will eat first newline\n str += json.slice(start, i) + '\\n\\n';\n while (json[i + 2] === '\\\\' &&\n json[i + 3] === 'n' &&\n json[i + 4] !== '\"') {\n str += '\\n';\n i += 2;\n }\n str += indent;\n // space after newline needs to be escaped to not be folded\n if (json[i + 2] === ' ')\n str += '\\\\';\n i += 1;\n start = i + 1;\n }\n break;\n default:\n i += 1;\n }\n }\n str = start ? str + json.slice(start) : json;\n return implicitKey\n ? str\n : foldFlowLines.foldFlowLines(str, indent, foldFlowLines.FOLD_QUOTED, getFoldOptions(ctx, false));\n}\nfunction singleQuotedString(value, ctx) {\n if (ctx.options.singleQuote === false ||\n (ctx.implicitKey && value.includes('\\n')) ||\n /[ \\t]\\n|\\n[ \\t]/.test(value) // single quoted string can't have leading or trailing whitespace around newline\n )\n return doubleQuotedString(value, ctx);\n const indent = ctx.indent || (containsDocumentMarker(value) ? ' ' : '');\n const res = \"'\" + value.replace(/'/g, \"''\").replace(/\\n+/g, `$&\\n${indent}`) + \"'\";\n return ctx.implicitKey\n ? res\n : foldFlowLines.foldFlowLines(res, indent, foldFlowLines.FOLD_FLOW, getFoldOptions(ctx, false));\n}\nfunction quotedString(value, ctx) {\n const { singleQuote } = ctx.options;\n let qs;\n if (singleQuote === false)\n qs = doubleQuotedString;\n else {\n const hasDouble = value.includes('\"');\n const hasSingle = value.includes(\"'\");\n if (hasDouble && !hasSingle)\n qs = singleQuotedString;\n else if (hasSingle && !hasDouble)\n qs = doubleQuotedString;\n else\n qs = singleQuote ? singleQuotedString : doubleQuotedString;\n }\n return qs(value, ctx);\n}\n// The negative lookbehind avoids a polynomial search,\n// but isn't supported yet on Safari: https://caniuse.com/js-regexp-lookbehind\nlet blockEndNewlines;\ntry {\n blockEndNewlines = new RegExp('(^|(?\\n';\n // determine chomping from whitespace at value end\n let chomp;\n let endStart;\n for (endStart = value.length; endStart > 0; --endStart) {\n const ch = value[endStart - 1];\n if (ch !== '\\n' && ch !== '\\t' && ch !== ' ')\n break;\n }\n let end = value.substring(endStart);\n const endNlPos = end.indexOf('\\n');\n if (endNlPos === -1) {\n chomp = '-'; // strip\n }\n else if (value === end || endNlPos !== end.length - 1) {\n chomp = '+'; // keep\n if (onChompKeep)\n onChompKeep();\n }\n else {\n chomp = ''; // clip\n }\n if (end) {\n value = value.slice(0, -end.length);\n if (end[end.length - 1] === '\\n')\n end = end.slice(0, -1);\n end = end.replace(blockEndNewlines, `$&${indent}`);\n }\n // determine indent indicator from whitespace at value start\n let startWithSpace = false;\n let startEnd;\n let startNlPos = -1;\n for (startEnd = 0; startEnd < value.length; ++startEnd) {\n const ch = value[startEnd];\n if (ch === ' ')\n startWithSpace = true;\n else if (ch === '\\n')\n startNlPos = startEnd;\n else\n break;\n }\n let start = value.substring(0, startNlPos < startEnd ? startNlPos + 1 : startEnd);\n if (start) {\n value = value.substring(start.length);\n start = start.replace(/\\n+/g, `$&${indent}`);\n }\n const indentSize = indent ? '2' : '1'; // root is at -1\n // Leading | or > is added later\n let header = (startWithSpace ? indentSize : '') + chomp;\n if (comment) {\n header += ' ' + commentString(comment.replace(/ ?[\\r\\n]+/g, ' '));\n if (onComment)\n onComment();\n }\n if (!literal) {\n const foldedValue = value\n .replace(/\\n+/g, '\\n$&')\n .replace(/(?:^|\\n)([\\t ].*)(?:([\\n\\t ]*)\\n(?![\\n\\t ]))?/g, '$1$2') // more-indented lines aren't folded\n // ^ more-ind. ^ empty ^ capture next empty lines only at end of indent\n .replace(/\\n+/g, `$&${indent}`);\n let literalFallback = false;\n const foldOptions = getFoldOptions(ctx, true);\n if (blockQuote !== 'folded' && type !== Scalar.Scalar.BLOCK_FOLDED) {\n foldOptions.onOverflow = () => {\n literalFallback = true;\n };\n }\n const body = foldFlowLines.foldFlowLines(`${start}${foldedValue}${end}`, indent, foldFlowLines.FOLD_BLOCK, foldOptions);\n if (!literalFallback)\n return `>${header}\\n${indent}${body}`;\n }\n value = value.replace(/\\n+/g, `$&${indent}`);\n return `|${header}\\n${indent}${start}${value}${end}`;\n}\nfunction plainString(item, ctx, onComment, onChompKeep) {\n const { type, value } = item;\n const { actualString, implicitKey, indent, indentStep, inFlow } = ctx;\n if ((implicitKey && value.includes('\\n')) ||\n (inFlow && /[[\\]{},]/.test(value))) {\n return quotedString(value, ctx);\n }\n if (/^[\\n\\t ,[\\]{}#&*!|>'\"%@`]|^[?-]$|^[?-][ \\t]|[\\n:][ \\t]|[ \\t]\\n|[\\n\\t ]#|[\\n\\t :]$/.test(value)) {\n // not allowed:\n // - '-' or '?'\n // - start with an indicator character (except [?:-]) or /[?-] /\n // - '\\n ', ': ' or ' \\n' anywhere\n // - '#' not preceded by a non-space char\n // - end with ' ' or ':'\n return implicitKey || inFlow || !value.includes('\\n')\n ? quotedString(value, ctx)\n : blockString(item, ctx, onComment, onChompKeep);\n }\n if (!implicitKey &&\n !inFlow &&\n type !== Scalar.Scalar.PLAIN &&\n value.includes('\\n')) {\n // Where allowed & type not set explicitly, prefer block style for multiline strings\n return blockString(item, ctx, onComment, onChompKeep);\n }\n if (containsDocumentMarker(value)) {\n if (indent === '') {\n ctx.forceBlockIndent = true;\n return blockString(item, ctx, onComment, onChompKeep);\n }\n else if (implicitKey && indent === indentStep) {\n return quotedString(value, ctx);\n }\n }\n const str = value.replace(/\\n+/g, `$&\\n${indent}`);\n // Verify that output will be parsed as a string, as e.g. plain numbers and\n // booleans get parsed with those types in v1.2 (e.g. '42', 'true' & '0.9e-3'),\n // and others in v1.1.\n if (actualString) {\n const test = (tag) => tag.default && tag.tag !== 'tag:yaml.org,2002:str' && tag.test?.test(str);\n const { compat, tags } = ctx.doc.schema;\n if (tags.some(test) || compat?.some(test))\n return quotedString(value, ctx);\n }\n return implicitKey\n ? str\n : foldFlowLines.foldFlowLines(str, indent, foldFlowLines.FOLD_FLOW, getFoldOptions(ctx, false));\n}\nfunction stringifyString(item, ctx, onComment, onChompKeep) {\n const { implicitKey, inFlow } = ctx;\n const ss = typeof item.value === 'string'\n ? item\n : Object.assign({}, item, { value: String(item.value) });\n let { type } = item;\n if (type !== Scalar.Scalar.QUOTE_DOUBLE) {\n // force double quotes on control characters & unpaired surrogates\n if (/[\\x00-\\x08\\x0b-\\x1f\\x7f-\\x9f\\u{D800}-\\u{DFFF}]/u.test(ss.value))\n type = Scalar.Scalar.QUOTE_DOUBLE;\n }\n const _stringify = (_type) => {\n switch (_type) {\n case Scalar.Scalar.BLOCK_FOLDED:\n case Scalar.Scalar.BLOCK_LITERAL:\n return implicitKey || inFlow\n ? quotedString(ss.value, ctx) // blocks are not valid inside flow containers\n : blockString(ss, ctx, onComment, onChompKeep);\n case Scalar.Scalar.QUOTE_DOUBLE:\n return doubleQuotedString(ss.value, ctx);\n case Scalar.Scalar.QUOTE_SINGLE:\n return singleQuotedString(ss.value, ctx);\n case Scalar.Scalar.PLAIN:\n return plainString(ss, ctx, onComment, onChompKeep);\n default:\n return null;\n }\n };\n let res = _stringify(type);\n if (res === null) {\n const { defaultKeyType, defaultStringType } = ctx.options;\n const t = (implicitKey && defaultKeyType) || defaultStringType;\n res = _stringify(t);\n if (res === null)\n throw new Error(`Unsupported default string type ${t}`);\n }\n return res;\n}\n\nexports.stringifyString = stringifyString;\n","'use strict';\n\nvar anchors = require('../doc/anchors.js');\nvar identity = require('../nodes/identity.js');\nvar stringifyComment = require('./stringifyComment.js');\nvar stringifyString = require('./stringifyString.js');\n\nfunction createStringifyContext(doc, options) {\n const opt = Object.assign({\n blockQuote: true,\n commentString: stringifyComment.stringifyComment,\n defaultKeyType: null,\n defaultStringType: 'PLAIN',\n directives: null,\n doubleQuotedAsJSON: false,\n doubleQuotedMinMultiLineLength: 40,\n falseStr: 'false',\n flowCollectionPadding: true,\n indentSeq: true,\n lineWidth: 80,\n minContentWidth: 20,\n nullStr: 'null',\n simpleKeys: false,\n singleQuote: null,\n trueStr: 'true',\n verifyAliasOrder: true\n }, doc.schema.toStringOptions, options);\n let inFlow;\n switch (opt.collectionStyle) {\n case 'block':\n inFlow = false;\n break;\n case 'flow':\n inFlow = true;\n break;\n default:\n inFlow = null;\n }\n return {\n anchors: new Set(),\n doc,\n flowCollectionPadding: opt.flowCollectionPadding ? ' ' : '',\n indent: '',\n indentStep: typeof opt.indent === 'number' ? ' '.repeat(opt.indent) : ' ',\n inFlow,\n options: opt\n };\n}\nfunction getTagObject(tags, item) {\n if (item.tag) {\n const match = tags.filter(t => t.tag === item.tag);\n if (match.length > 0)\n return match.find(t => t.format === item.format) ?? match[0];\n }\n let tagObj = undefined;\n let obj;\n if (identity.isScalar(item)) {\n obj = item.value;\n let match = tags.filter(t => t.identify?.(obj));\n if (match.length > 1) {\n const testMatch = match.filter(t => t.test);\n if (testMatch.length > 0)\n match = testMatch;\n }\n tagObj =\n match.find(t => t.format === item.format) ?? match.find(t => !t.format);\n }\n else {\n obj = item;\n tagObj = tags.find(t => t.nodeClass && obj instanceof t.nodeClass);\n }\n if (!tagObj) {\n const name = obj?.constructor?.name ?? (obj === null ? 'null' : typeof obj);\n throw new Error(`Tag not resolved for ${name} value`);\n }\n return tagObj;\n}\n// needs to be called before value stringifier to allow for circular anchor refs\nfunction stringifyProps(node, tagObj, { anchors: anchors$1, doc }) {\n if (!doc.directives)\n return '';\n const props = [];\n const anchor = (identity.isScalar(node) || identity.isCollection(node)) && node.anchor;\n if (anchor && anchors.anchorIsValid(anchor)) {\n anchors$1.add(anchor);\n props.push(`&${anchor}`);\n }\n const tag = node.tag ?? (tagObj.default ? null : tagObj.tag);\n if (tag)\n props.push(doc.directives.tagString(tag));\n return props.join(' ');\n}\nfunction stringify(item, ctx, onComment, onChompKeep) {\n if (identity.isPair(item))\n return item.toString(ctx, onComment, onChompKeep);\n if (identity.isAlias(item)) {\n if (ctx.doc.directives)\n return item.toString(ctx);\n if (ctx.resolvedAliases?.has(item)) {\n throw new TypeError(`Cannot stringify circular structure without alias nodes`);\n }\n else {\n if (ctx.resolvedAliases)\n ctx.resolvedAliases.add(item);\n else\n ctx.resolvedAliases = new Set([item]);\n item = item.resolve(ctx.doc);\n }\n }\n let tagObj = undefined;\n const node = identity.isNode(item)\n ? item\n : ctx.doc.createNode(item, { onTagObj: o => (tagObj = o) });\n tagObj ?? (tagObj = getTagObject(ctx.doc.schema.tags, node));\n const props = stringifyProps(node, tagObj, ctx);\n if (props.length > 0)\n ctx.indentAtStart = (ctx.indentAtStart ?? 0) + props.length + 1;\n const str = typeof tagObj.stringify === 'function'\n ? tagObj.stringify(node, ctx, onComment, onChompKeep)\n : identity.isScalar(node)\n ? stringifyString.stringifyString(node, ctx, onComment, onChompKeep)\n : node.toString(ctx, onComment, onChompKeep);\n if (!props)\n return str;\n return identity.isScalar(node) || str[0] === '{' || str[0] === '['\n ? `${props} ${str}`\n : `${props}\\n${ctx.indent}${str}`;\n}\n\nexports.createStringifyContext = createStringifyContext;\nexports.stringify = stringify;\n","'use strict';\n\nvar identity = require('../nodes/identity.js');\nvar Scalar = require('../nodes/Scalar.js');\nvar stringify = require('./stringify.js');\nvar stringifyComment = require('./stringifyComment.js');\n\nfunction stringifyPair({ key, value }, ctx, onComment, onChompKeep) {\n const { allNullValues, doc, indent, indentStep, options: { commentString, indentSeq, simpleKeys } } = ctx;\n let keyComment = (identity.isNode(key) && key.comment) || null;\n if (simpleKeys) {\n if (keyComment) {\n throw new Error('With simple keys, key nodes cannot have comments');\n }\n if (identity.isCollection(key) || (!identity.isNode(key) && typeof key === 'object')) {\n const msg = 'With simple keys, collection cannot be used as a key value';\n throw new Error(msg);\n }\n }\n let explicitKey = !simpleKeys &&\n (!key ||\n (keyComment && value == null && !ctx.inFlow) ||\n identity.isCollection(key) ||\n (identity.isScalar(key)\n ? key.type === Scalar.Scalar.BLOCK_FOLDED || key.type === Scalar.Scalar.BLOCK_LITERAL\n : typeof key === 'object'));\n ctx = Object.assign({}, ctx, {\n allNullValues: false,\n implicitKey: !explicitKey && (simpleKeys || !allNullValues),\n indent: indent + indentStep\n });\n let keyCommentDone = false;\n let chompKeep = false;\n let str = stringify.stringify(key, ctx, () => (keyCommentDone = true), () => (chompKeep = true));\n if (!explicitKey && !ctx.inFlow && str.length > 1024) {\n if (simpleKeys)\n throw new Error('With simple keys, single line scalar must not span more than 1024 characters');\n explicitKey = true;\n }\n if (ctx.inFlow) {\n if (allNullValues || value == null) {\n if (keyCommentDone && onComment)\n onComment();\n return str === '' ? '?' : explicitKey ? `? ${str}` : str;\n }\n }\n else if ((allNullValues && !simpleKeys) || (value == null && explicitKey)) {\n str = `? ${str}`;\n if (keyComment && !keyCommentDone) {\n str += stringifyComment.lineComment(str, ctx.indent, commentString(keyComment));\n }\n else if (chompKeep && onChompKeep)\n onChompKeep();\n return str;\n }\n if (keyCommentDone)\n keyComment = null;\n if (explicitKey) {\n if (keyComment)\n str += stringifyComment.lineComment(str, ctx.indent, commentString(keyComment));\n str = `? ${str}\\n${indent}:`;\n }\n else {\n str = `${str}:`;\n if (keyComment)\n str += stringifyComment.lineComment(str, ctx.indent, commentString(keyComment));\n }\n let vsb, vcb, valueComment;\n if (identity.isNode(value)) {\n vsb = !!value.spaceBefore;\n vcb = value.commentBefore;\n valueComment = value.comment;\n }\n else {\n vsb = false;\n vcb = null;\n valueComment = null;\n if (value && typeof value === 'object')\n value = doc.createNode(value);\n }\n ctx.implicitKey = false;\n if (!explicitKey && !keyComment && identity.isScalar(value))\n ctx.indentAtStart = str.length + 1;\n chompKeep = false;\n if (!indentSeq &&\n indentStep.length >= 2 &&\n !ctx.inFlow &&\n !explicitKey &&\n identity.isSeq(value) &&\n !value.flow &&\n !value.tag &&\n !value.anchor) {\n // If indentSeq === false, consider '- ' as part of indentation where possible\n ctx.indent = ctx.indent.substring(2);\n }\n let valueCommentDone = false;\n const valueStr = stringify.stringify(value, ctx, () => (valueCommentDone = true), () => (chompKeep = true));\n let ws = ' ';\n if (keyComment || vsb || vcb) {\n ws = vsb ? '\\n' : '';\n if (vcb) {\n const cs = commentString(vcb);\n ws += `\\n${stringifyComment.indentComment(cs, ctx.indent)}`;\n }\n if (valueStr === '' && !ctx.inFlow) {\n if (ws === '\\n' && valueComment)\n ws = '\\n\\n';\n }\n else {\n ws += `\\n${ctx.indent}`;\n }\n }\n else if (!explicitKey && identity.isCollection(value)) {\n const vs0 = valueStr[0];\n const nl0 = valueStr.indexOf('\\n');\n const hasNewline = nl0 !== -1;\n const flow = ctx.inFlow ?? value.flow ?? value.items.length === 0;\n if (hasNewline || !flow) {\n let hasPropsLine = false;\n if (hasNewline && (vs0 === '&' || vs0 === '!')) {\n let sp0 = valueStr.indexOf(' ');\n if (vs0 === '&' &&\n sp0 !== -1 &&\n sp0 < nl0 &&\n valueStr[sp0 + 1] === '!') {\n sp0 = valueStr.indexOf(' ', sp0 + 1);\n }\n if (sp0 === -1 || nl0 < sp0)\n hasPropsLine = true;\n }\n if (!hasPropsLine)\n ws = `\\n${ctx.indent}`;\n }\n }\n else if (valueStr === '' || valueStr[0] === '\\n') {\n ws = '';\n }\n str += ws + valueStr;\n if (ctx.inFlow) {\n if (valueCommentDone && onComment)\n onComment();\n }\n else if (valueComment && !valueCommentDone) {\n str += stringifyComment.lineComment(str, ctx.indent, commentString(valueComment));\n }\n else if (chompKeep && onChompKeep) {\n onChompKeep();\n }\n return str;\n}\n\nexports.stringifyPair = stringifyPair;\n","'use strict';\n\nvar node_process = require('process');\n\nfunction debug(logLevel, ...messages) {\n if (logLevel === 'debug')\n console.log(...messages);\n}\nfunction warn(logLevel, warning) {\n if (logLevel === 'debug' || logLevel === 'warn') {\n if (typeof node_process.emitWarning === 'function')\n node_process.emitWarning(warning);\n else\n console.warn(warning);\n }\n}\n\nexports.debug = debug;\nexports.warn = warn;\n","'use strict';\n\nvar identity = require('../../nodes/identity.js');\nvar Scalar = require('../../nodes/Scalar.js');\n\n// If the value associated with a merge key is a single mapping node, each of\n// its key/value pairs is inserted into the current mapping, unless the key\n// already exists in it. If the value associated with the merge key is a\n// sequence, then this sequence is expected to contain mapping nodes and each\n// of these nodes is merged in turn according to its order in the sequence.\n// Keys in mapping nodes earlier in the sequence override keys specified in\n// later mapping nodes. -- http://yaml.org/type/merge.html\nconst MERGE_KEY = '<<';\nconst merge = {\n identify: value => value === MERGE_KEY ||\n (typeof value === 'symbol' && value.description === MERGE_KEY),\n default: 'key',\n tag: 'tag:yaml.org,2002:merge',\n test: /^<<$/,\n resolve: () => Object.assign(new Scalar.Scalar(Symbol(MERGE_KEY)), {\n addToJSMap: addMergeToJSMap\n }),\n stringify: () => MERGE_KEY\n};\nconst isMergeKey = (ctx, key) => (merge.identify(key) ||\n (identity.isScalar(key) &&\n (!key.type || key.type === Scalar.Scalar.PLAIN) &&\n merge.identify(key.value))) &&\n ctx?.doc.schema.tags.some(tag => tag.tag === merge.tag && tag.default);\nfunction addMergeToJSMap(ctx, map, value) {\n value = ctx && identity.isAlias(value) ? value.resolve(ctx.doc) : value;\n if (identity.isSeq(value))\n for (const it of value.items)\n mergeValue(ctx, map, it);\n else if (Array.isArray(value))\n for (const it of value)\n mergeValue(ctx, map, it);\n else\n mergeValue(ctx, map, value);\n}\nfunction mergeValue(ctx, map, value) {\n const source = ctx && identity.isAlias(value) ? value.resolve(ctx.doc) : value;\n if (!identity.isMap(source))\n throw new Error('Merge sources must be maps or map aliases');\n const srcMap = source.toJSON(null, ctx, Map);\n for (const [key, value] of srcMap) {\n if (map instanceof Map) {\n if (!map.has(key))\n map.set(key, value);\n }\n else if (map instanceof Set) {\n map.add(key);\n }\n else if (!Object.prototype.hasOwnProperty.call(map, key)) {\n Object.defineProperty(map, key, {\n value,\n writable: true,\n enumerable: true,\n configurable: true\n });\n }\n }\n return map;\n}\n\nexports.addMergeToJSMap = addMergeToJSMap;\nexports.isMergeKey = isMergeKey;\nexports.merge = merge;\n","'use strict';\n\nvar log = require('../log.js');\nvar merge = require('../schema/yaml-1.1/merge.js');\nvar stringify = require('../stringify/stringify.js');\nvar identity = require('./identity.js');\nvar toJS = require('./toJS.js');\n\nfunction addPairToJSMap(ctx, map, { key, value }) {\n if (identity.isNode(key) && key.addToJSMap)\n key.addToJSMap(ctx, map, value);\n // TODO: Should drop this special case for bare << handling\n else if (merge.isMergeKey(ctx, key))\n merge.addMergeToJSMap(ctx, map, value);\n else {\n const jsKey = toJS.toJS(key, '', ctx);\n if (map instanceof Map) {\n map.set(jsKey, toJS.toJS(value, jsKey, ctx));\n }\n else if (map instanceof Set) {\n map.add(jsKey);\n }\n else {\n const stringKey = stringifyKey(key, jsKey, ctx);\n const jsValue = toJS.toJS(value, stringKey, ctx);\n if (stringKey in map)\n Object.defineProperty(map, stringKey, {\n value: jsValue,\n writable: true,\n enumerable: true,\n configurable: true\n });\n else\n map[stringKey] = jsValue;\n }\n }\n return map;\n}\nfunction stringifyKey(key, jsKey, ctx) {\n if (jsKey === null)\n return '';\n // eslint-disable-next-line @typescript-eslint/no-base-to-string\n if (typeof jsKey !== 'object')\n return String(jsKey);\n if (identity.isNode(key) && ctx?.doc) {\n const strCtx = stringify.createStringifyContext(ctx.doc, {});\n strCtx.anchors = new Set();\n for (const node of ctx.anchors.keys())\n strCtx.anchors.add(node.anchor);\n strCtx.inFlow = true;\n strCtx.inStringifyKey = true;\n const strKey = key.toString(strCtx);\n if (!ctx.mapKeyWarned) {\n let jsonStr = JSON.stringify(strKey);\n if (jsonStr.length > 40)\n jsonStr = jsonStr.substring(0, 36) + '...\"';\n log.warn(ctx.doc.options.logLevel, `Keys with collection values will be stringified due to JS Object restrictions: ${jsonStr}. Set mapAsMap: true to use object keys.`);\n ctx.mapKeyWarned = true;\n }\n return strKey;\n }\n return JSON.stringify(jsKey);\n}\n\nexports.addPairToJSMap = addPairToJSMap;\n","'use strict';\n\nvar createNode = require('../doc/createNode.js');\nvar stringifyPair = require('../stringify/stringifyPair.js');\nvar addPairToJSMap = require('./addPairToJSMap.js');\nvar identity = require('./identity.js');\n\nfunction createPair(key, value, ctx) {\n const k = createNode.createNode(key, undefined, ctx);\n const v = createNode.createNode(value, undefined, ctx);\n return new Pair(k, v);\n}\nclass Pair {\n constructor(key, value = null) {\n Object.defineProperty(this, identity.NODE_TYPE, { value: identity.PAIR });\n this.key = key;\n this.value = value;\n }\n clone(schema) {\n let { key, value } = this;\n if (identity.isNode(key))\n key = key.clone(schema);\n if (identity.isNode(value))\n value = value.clone(schema);\n return new Pair(key, value);\n }\n toJSON(_, ctx) {\n const pair = ctx?.mapAsMap ? new Map() : {};\n return addPairToJSMap.addPairToJSMap(ctx, pair, this);\n }\n toString(ctx, onComment, onChompKeep) {\n return ctx?.doc\n ? stringifyPair.stringifyPair(this, ctx, onComment, onChompKeep)\n : JSON.stringify(this);\n }\n}\n\nexports.Pair = Pair;\nexports.createPair = createPair;\n","'use strict';\n\nvar identity = require('../nodes/identity.js');\nvar stringify = require('./stringify.js');\nvar stringifyComment = require('./stringifyComment.js');\n\nfunction stringifyCollection(collection, ctx, options) {\n const flow = ctx.inFlow ?? collection.flow;\n const stringify = flow ? stringifyFlowCollection : stringifyBlockCollection;\n return stringify(collection, ctx, options);\n}\nfunction stringifyBlockCollection({ comment, items }, ctx, { blockItemPrefix, flowChars, itemIndent, onChompKeep, onComment }) {\n const { indent, options: { commentString } } = ctx;\n const itemCtx = Object.assign({}, ctx, { indent: itemIndent, type: null });\n let chompKeep = false; // flag for the preceding node's status\n const lines = [];\n for (let i = 0; i < items.length; ++i) {\n const item = items[i];\n let comment = null;\n if (identity.isNode(item)) {\n if (!chompKeep && item.spaceBefore)\n lines.push('');\n addCommentBefore(ctx, lines, item.commentBefore, chompKeep);\n if (item.comment)\n comment = item.comment;\n }\n else if (identity.isPair(item)) {\n const ik = identity.isNode(item.key) ? item.key : null;\n if (ik) {\n if (!chompKeep && ik.spaceBefore)\n lines.push('');\n addCommentBefore(ctx, lines, ik.commentBefore, chompKeep);\n }\n }\n chompKeep = false;\n let str = stringify.stringify(item, itemCtx, () => (comment = null), () => (chompKeep = true));\n if (comment)\n str += stringifyComment.lineComment(str, itemIndent, commentString(comment));\n if (chompKeep && comment)\n chompKeep = false;\n lines.push(blockItemPrefix + str);\n }\n let str;\n if (lines.length === 0) {\n str = flowChars.start + flowChars.end;\n }\n else {\n str = lines[0];\n for (let i = 1; i < lines.length; ++i) {\n const line = lines[i];\n str += line ? `\\n${indent}${line}` : '\\n';\n }\n }\n if (comment) {\n str += '\\n' + stringifyComment.indentComment(commentString(comment), indent);\n if (onComment)\n onComment();\n }\n else if (chompKeep && onChompKeep)\n onChompKeep();\n return str;\n}\nfunction stringifyFlowCollection({ items }, ctx, { flowChars, itemIndent }) {\n const { indent, indentStep, flowCollectionPadding: fcPadding, options: { commentString } } = ctx;\n itemIndent += indentStep;\n const itemCtx = Object.assign({}, ctx, {\n indent: itemIndent,\n inFlow: true,\n type: null\n });\n let reqNewline = false;\n let linesAtValue = 0;\n const lines = [];\n for (let i = 0; i < items.length; ++i) {\n const item = items[i];\n let comment = null;\n if (identity.isNode(item)) {\n if (item.spaceBefore)\n lines.push('');\n addCommentBefore(ctx, lines, item.commentBefore, false);\n if (item.comment)\n comment = item.comment;\n }\n else if (identity.isPair(item)) {\n const ik = identity.isNode(item.key) ? item.key : null;\n if (ik) {\n if (ik.spaceBefore)\n lines.push('');\n addCommentBefore(ctx, lines, ik.commentBefore, false);\n if (ik.comment)\n reqNewline = true;\n }\n const iv = identity.isNode(item.value) ? item.value : null;\n if (iv) {\n if (iv.comment)\n comment = iv.comment;\n if (iv.commentBefore)\n reqNewline = true;\n }\n else if (item.value == null && ik?.comment) {\n comment = ik.comment;\n }\n }\n if (comment)\n reqNewline = true;\n let str = stringify.stringify(item, itemCtx, () => (comment = null));\n if (i < items.length - 1)\n str += ',';\n if (comment)\n str += stringifyComment.lineComment(str, itemIndent, commentString(comment));\n if (!reqNewline && (lines.length > linesAtValue || str.includes('\\n')))\n reqNewline = true;\n lines.push(str);\n linesAtValue = lines.length;\n }\n const { start, end } = flowChars;\n if (lines.length === 0) {\n return start + end;\n }\n else {\n if (!reqNewline) {\n const len = lines.reduce((sum, line) => sum + line.length + 2, 2);\n reqNewline = ctx.options.lineWidth > 0 && len > ctx.options.lineWidth;\n }\n if (reqNewline) {\n let str = start;\n for (const line of lines)\n str += line ? `\\n${indentStep}${indent}${line}` : '\\n';\n return `${str}\\n${indent}${end}`;\n }\n else {\n return `${start}${fcPadding}${lines.join(' ')}${fcPadding}${end}`;\n }\n }\n}\nfunction addCommentBefore({ indent, options: { commentString } }, lines, comment, chompKeep) {\n if (comment && chompKeep)\n comment = comment.replace(/^\\n+/, '');\n if (comment) {\n const ic = stringifyComment.indentComment(commentString(comment), indent);\n lines.push(ic.trimStart()); // Avoid double indent on first line\n }\n}\n\nexports.stringifyCollection = stringifyCollection;\n","'use strict';\n\nvar stringifyCollection = require('../stringify/stringifyCollection.js');\nvar addPairToJSMap = require('./addPairToJSMap.js');\nvar Collection = require('./Collection.js');\nvar identity = require('./identity.js');\nvar Pair = require('./Pair.js');\nvar Scalar = require('./Scalar.js');\n\nfunction findPair(items, key) {\n const k = identity.isScalar(key) ? key.value : key;\n for (const it of items) {\n if (identity.isPair(it)) {\n if (it.key === key || it.key === k)\n return it;\n if (identity.isScalar(it.key) && it.key.value === k)\n return it;\n }\n }\n return undefined;\n}\nclass YAMLMap extends Collection.Collection {\n static get tagName() {\n return 'tag:yaml.org,2002:map';\n }\n constructor(schema) {\n super(identity.MAP, schema);\n this.items = [];\n }\n /**\n * A generic collection parsing method that can be extended\n * to other node classes that inherit from YAMLMap\n */\n static from(schema, obj, ctx) {\n const { keepUndefined, replacer } = ctx;\n const map = new this(schema);\n const add = (key, value) => {\n if (typeof replacer === 'function')\n value = replacer.call(obj, key, value);\n else if (Array.isArray(replacer) && !replacer.includes(key))\n return;\n if (value !== undefined || keepUndefined)\n map.items.push(Pair.createPair(key, value, ctx));\n };\n if (obj instanceof Map) {\n for (const [key, value] of obj)\n add(key, value);\n }\n else if (obj && typeof obj === 'object') {\n for (const key of Object.keys(obj))\n add(key, obj[key]);\n }\n if (typeof schema.sortMapEntries === 'function') {\n map.items.sort(schema.sortMapEntries);\n }\n return map;\n }\n /**\n * Adds a value to the collection.\n *\n * @param overwrite - If not set `true`, using a key that is already in the\n * collection will throw. Otherwise, overwrites the previous value.\n */\n add(pair, overwrite) {\n let _pair;\n if (identity.isPair(pair))\n _pair = pair;\n else if (!pair || typeof pair !== 'object' || !('key' in pair)) {\n // In TypeScript, this never happens.\n _pair = new Pair.Pair(pair, pair?.value);\n }\n else\n _pair = new Pair.Pair(pair.key, pair.value);\n const prev = findPair(this.items, _pair.key);\n const sortEntries = this.schema?.sortMapEntries;\n if (prev) {\n if (!overwrite)\n throw new Error(`Key ${_pair.key} already set`);\n // For scalars, keep the old node & its comments and anchors\n if (identity.isScalar(prev.value) && Scalar.isScalarValue(_pair.value))\n prev.value.value = _pair.value;\n else\n prev.value = _pair.value;\n }\n else if (sortEntries) {\n const i = this.items.findIndex(item => sortEntries(_pair, item) < 0);\n if (i === -1)\n this.items.push(_pair);\n else\n this.items.splice(i, 0, _pair);\n }\n else {\n this.items.push(_pair);\n }\n }\n delete(key) {\n const it = findPair(this.items, key);\n if (!it)\n return false;\n const del = this.items.splice(this.items.indexOf(it), 1);\n return del.length > 0;\n }\n get(key, keepScalar) {\n const it = findPair(this.items, key);\n const node = it?.value;\n return (!keepScalar && identity.isScalar(node) ? node.value : node) ?? undefined;\n }\n has(key) {\n return !!findPair(this.items, key);\n }\n set(key, value) {\n this.add(new Pair.Pair(key, value), true);\n }\n /**\n * @param ctx - Conversion context, originally set in Document#toJS()\n * @param {Class} Type - If set, forces the returned collection type\n * @returns Instance of Type, Map, or Object\n */\n toJSON(_, ctx, Type) {\n const map = Type ? new Type() : ctx?.mapAsMap ? new Map() : {};\n if (ctx?.onCreate)\n ctx.onCreate(map);\n for (const item of this.items)\n addPairToJSMap.addPairToJSMap(ctx, map, item);\n return map;\n }\n toString(ctx, onComment, onChompKeep) {\n if (!ctx)\n return JSON.stringify(this);\n for (const item of this.items) {\n if (!identity.isPair(item))\n throw new Error(`Map items must all be pairs; found ${JSON.stringify(item)} instead`);\n }\n if (!ctx.allNullValues && this.hasAllNullValues(false))\n ctx = Object.assign({}, ctx, { allNullValues: true });\n return stringifyCollection.stringifyCollection(this, ctx, {\n blockItemPrefix: '',\n flowChars: { start: '{', end: '}' },\n itemIndent: ctx.indent || '',\n onChompKeep,\n onComment\n });\n }\n}\n\nexports.YAMLMap = YAMLMap;\nexports.findPair = findPair;\n","'use strict';\n\nvar identity = require('../../nodes/identity.js');\nvar YAMLMap = require('../../nodes/YAMLMap.js');\n\nconst map = {\n collection: 'map',\n default: true,\n nodeClass: YAMLMap.YAMLMap,\n tag: 'tag:yaml.org,2002:map',\n resolve(map, onError) {\n if (!identity.isMap(map))\n onError('Expected a mapping for this tag');\n return map;\n },\n createNode: (schema, obj, ctx) => YAMLMap.YAMLMap.from(schema, obj, ctx)\n};\n\nexports.map = map;\n","'use strict';\n\nvar createNode = require('../doc/createNode.js');\nvar stringifyCollection = require('../stringify/stringifyCollection.js');\nvar Collection = require('./Collection.js');\nvar identity = require('./identity.js');\nvar Scalar = require('./Scalar.js');\nvar toJS = require('./toJS.js');\n\nclass YAMLSeq extends Collection.Collection {\n static get tagName() {\n return 'tag:yaml.org,2002:seq';\n }\n constructor(schema) {\n super(identity.SEQ, schema);\n this.items = [];\n }\n add(value) {\n this.items.push(value);\n }\n /**\n * Removes a value from the collection.\n *\n * `key` must contain a representation of an integer for this to succeed.\n * It may be wrapped in a `Scalar`.\n *\n * @returns `true` if the item was found and removed.\n */\n delete(key) {\n const idx = asItemIndex(key);\n if (typeof idx !== 'number')\n return false;\n const del = this.items.splice(idx, 1);\n return del.length > 0;\n }\n get(key, keepScalar) {\n const idx = asItemIndex(key);\n if (typeof idx !== 'number')\n return undefined;\n const it = this.items[idx];\n return !keepScalar && identity.isScalar(it) ? it.value : it;\n }\n /**\n * Checks if the collection includes a value with the key `key`.\n *\n * `key` must contain a representation of an integer for this to succeed.\n * It may be wrapped in a `Scalar`.\n */\n has(key) {\n const idx = asItemIndex(key);\n return typeof idx === 'number' && idx < this.items.length;\n }\n /**\n * Sets a value in this collection. For `!!set`, `value` needs to be a\n * boolean to add/remove the item from the set.\n *\n * If `key` does not contain a representation of an integer, this will throw.\n * It may be wrapped in a `Scalar`.\n */\n set(key, value) {\n const idx = asItemIndex(key);\n if (typeof idx !== 'number')\n throw new Error(`Expected a valid index, not ${key}.`);\n const prev = this.items[idx];\n if (identity.isScalar(prev) && Scalar.isScalarValue(value))\n prev.value = value;\n else\n this.items[idx] = value;\n }\n toJSON(_, ctx) {\n const seq = [];\n if (ctx?.onCreate)\n ctx.onCreate(seq);\n let i = 0;\n for (const item of this.items)\n seq.push(toJS.toJS(item, String(i++), ctx));\n return seq;\n }\n toString(ctx, onComment, onChompKeep) {\n if (!ctx)\n return JSON.stringify(this);\n return stringifyCollection.stringifyCollection(this, ctx, {\n blockItemPrefix: '- ',\n flowChars: { start: '[', end: ']' },\n itemIndent: (ctx.indent || '') + ' ',\n onChompKeep,\n onComment\n });\n }\n static from(schema, obj, ctx) {\n const { replacer } = ctx;\n const seq = new this(schema);\n if (obj && Symbol.iterator in Object(obj)) {\n let i = 0;\n for (let it of obj) {\n if (typeof replacer === 'function') {\n const key = obj instanceof Set ? it : String(i++);\n it = replacer.call(obj, key, it);\n }\n seq.items.push(createNode.createNode(it, undefined, ctx));\n }\n }\n return seq;\n }\n}\nfunction asItemIndex(key) {\n let idx = identity.isScalar(key) ? key.value : key;\n if (idx && typeof idx === 'string')\n idx = Number(idx);\n return typeof idx === 'number' && Number.isInteger(idx) && idx >= 0\n ? idx\n : null;\n}\n\nexports.YAMLSeq = YAMLSeq;\n","'use strict';\n\nvar identity = require('../../nodes/identity.js');\nvar YAMLSeq = require('../../nodes/YAMLSeq.js');\n\nconst seq = {\n collection: 'seq',\n default: true,\n nodeClass: YAMLSeq.YAMLSeq,\n tag: 'tag:yaml.org,2002:seq',\n resolve(seq, onError) {\n if (!identity.isSeq(seq))\n onError('Expected a sequence for this tag');\n return seq;\n },\n createNode: (schema, obj, ctx) => YAMLSeq.YAMLSeq.from(schema, obj, ctx)\n};\n\nexports.seq = seq;\n","'use strict';\n\nvar stringifyString = require('../../stringify/stringifyString.js');\n\nconst string = {\n identify: value => typeof value === 'string',\n default: true,\n tag: 'tag:yaml.org,2002:str',\n resolve: str => str,\n stringify(item, ctx, onComment, onChompKeep) {\n ctx = Object.assign({ actualString: true }, ctx);\n return stringifyString.stringifyString(item, ctx, onComment, onChompKeep);\n }\n};\n\nexports.string = string;\n","'use strict';\n\nvar Scalar = require('../../nodes/Scalar.js');\n\nconst nullTag = {\n identify: value => value == null,\n createNode: () => new Scalar.Scalar(null),\n default: true,\n tag: 'tag:yaml.org,2002:null',\n test: /^(?:~|[Nn]ull|NULL)?$/,\n resolve: () => new Scalar.Scalar(null),\n stringify: ({ source }, ctx) => typeof source === 'string' && nullTag.test.test(source)\n ? source\n : ctx.options.nullStr\n};\n\nexports.nullTag = nullTag;\n","'use strict';\n\nvar Scalar = require('../../nodes/Scalar.js');\n\nconst boolTag = {\n identify: value => typeof value === 'boolean',\n default: true,\n tag: 'tag:yaml.org,2002:bool',\n test: /^(?:[Tt]rue|TRUE|[Ff]alse|FALSE)$/,\n resolve: str => new Scalar.Scalar(str[0] === 't' || str[0] === 'T'),\n stringify({ source, value }, ctx) {\n if (source && boolTag.test.test(source)) {\n const sv = source[0] === 't' || source[0] === 'T';\n if (value === sv)\n return source;\n }\n return value ? ctx.options.trueStr : ctx.options.falseStr;\n }\n};\n\nexports.boolTag = boolTag;\n","'use strict';\n\nfunction stringifyNumber({ format, minFractionDigits, tag, value }) {\n if (typeof value === 'bigint')\n return String(value);\n const num = typeof value === 'number' ? value : Number(value);\n if (!isFinite(num))\n return isNaN(num) ? '.nan' : num < 0 ? '-.inf' : '.inf';\n let n = Object.is(value, -0) ? '-0' : JSON.stringify(value);\n if (!format &&\n minFractionDigits &&\n (!tag || tag === 'tag:yaml.org,2002:float') &&\n /^\\d/.test(n)) {\n let i = n.indexOf('.');\n if (i < 0) {\n i = n.length;\n n += '.';\n }\n let d = minFractionDigits - (n.length - i - 1);\n while (d-- > 0)\n n += '0';\n }\n return n;\n}\n\nexports.stringifyNumber = stringifyNumber;\n","'use strict';\n\nvar Scalar = require('../../nodes/Scalar.js');\nvar stringifyNumber = require('../../stringify/stringifyNumber.js');\n\nconst floatNaN = {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n test: /^(?:[-+]?\\.(?:inf|Inf|INF)|\\.nan|\\.NaN|\\.NAN)$/,\n resolve: str => str.slice(-3).toLowerCase() === 'nan'\n ? NaN\n : str[0] === '-'\n ? Number.NEGATIVE_INFINITY\n : Number.POSITIVE_INFINITY,\n stringify: stringifyNumber.stringifyNumber\n};\nconst floatExp = {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n format: 'EXP',\n test: /^[-+]?(?:\\.[0-9]+|[0-9]+(?:\\.[0-9]*)?)[eE][-+]?[0-9]+$/,\n resolve: str => parseFloat(str),\n stringify(node) {\n const num = Number(node.value);\n return isFinite(num) ? num.toExponential() : stringifyNumber.stringifyNumber(node);\n }\n};\nconst float = {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n test: /^[-+]?(?:\\.[0-9]+|[0-9]+\\.[0-9]*)$/,\n resolve(str) {\n const node = new Scalar.Scalar(parseFloat(str));\n const dot = str.indexOf('.');\n if (dot !== -1 && str[str.length - 1] === '0')\n node.minFractionDigits = str.length - dot - 1;\n return node;\n },\n stringify: stringifyNumber.stringifyNumber\n};\n\nexports.float = float;\nexports.floatExp = floatExp;\nexports.floatNaN = floatNaN;\n","'use strict';\n\nvar stringifyNumber = require('../../stringify/stringifyNumber.js');\n\nconst intIdentify = (value) => typeof value === 'bigint' || Number.isInteger(value);\nconst intResolve = (str, offset, radix, { intAsBigInt }) => (intAsBigInt ? BigInt(str) : parseInt(str.substring(offset), radix));\nfunction intStringify(node, radix, prefix) {\n const { value } = node;\n if (intIdentify(value) && value >= 0)\n return prefix + value.toString(radix);\n return stringifyNumber.stringifyNumber(node);\n}\nconst intOct = {\n identify: value => intIdentify(value) && value >= 0,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n format: 'OCT',\n test: /^0o[0-7]+$/,\n resolve: (str, _onError, opt) => intResolve(str, 2, 8, opt),\n stringify: node => intStringify(node, 8, '0o')\n};\nconst int = {\n identify: intIdentify,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n test: /^[-+]?[0-9]+$/,\n resolve: (str, _onError, opt) => intResolve(str, 0, 10, opt),\n stringify: stringifyNumber.stringifyNumber\n};\nconst intHex = {\n identify: value => intIdentify(value) && value >= 0,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n format: 'HEX',\n test: /^0x[0-9a-fA-F]+$/,\n resolve: (str, _onError, opt) => intResolve(str, 2, 16, opt),\n stringify: node => intStringify(node, 16, '0x')\n};\n\nexports.int = int;\nexports.intHex = intHex;\nexports.intOct = intOct;\n","'use strict';\n\nvar map = require('../common/map.js');\nvar _null = require('../common/null.js');\nvar seq = require('../common/seq.js');\nvar string = require('../common/string.js');\nvar bool = require('./bool.js');\nvar float = require('./float.js');\nvar int = require('./int.js');\n\nconst schema = [\n map.map,\n seq.seq,\n string.string,\n _null.nullTag,\n bool.boolTag,\n int.intOct,\n int.int,\n int.intHex,\n float.floatNaN,\n float.floatExp,\n float.float\n];\n\nexports.schema = schema;\n","'use strict';\n\nvar Scalar = require('../../nodes/Scalar.js');\nvar map = require('../common/map.js');\nvar seq = require('../common/seq.js');\n\nfunction intIdentify(value) {\n return typeof value === 'bigint' || Number.isInteger(value);\n}\nconst stringifyJSON = ({ value }) => JSON.stringify(value);\nconst jsonScalars = [\n {\n identify: value => typeof value === 'string',\n default: true,\n tag: 'tag:yaml.org,2002:str',\n resolve: str => str,\n stringify: stringifyJSON\n },\n {\n identify: value => value == null,\n createNode: () => new Scalar.Scalar(null),\n default: true,\n tag: 'tag:yaml.org,2002:null',\n test: /^null$/,\n resolve: () => null,\n stringify: stringifyJSON\n },\n {\n identify: value => typeof value === 'boolean',\n default: true,\n tag: 'tag:yaml.org,2002:bool',\n test: /^true$|^false$/,\n resolve: str => str === 'true',\n stringify: stringifyJSON\n },\n {\n identify: intIdentify,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n test: /^-?(?:0|[1-9][0-9]*)$/,\n resolve: (str, _onError, { intAsBigInt }) => intAsBigInt ? BigInt(str) : parseInt(str, 10),\n stringify: ({ value }) => intIdentify(value) ? value.toString() : JSON.stringify(value)\n },\n {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n test: /^-?(?:0|[1-9][0-9]*)(?:\\.[0-9]*)?(?:[eE][-+]?[0-9]+)?$/,\n resolve: str => parseFloat(str),\n stringify: stringifyJSON\n }\n];\nconst jsonError = {\n default: true,\n tag: '',\n test: /^/,\n resolve(str, onError) {\n onError(`Unresolved plain scalar ${JSON.stringify(str)}`);\n return str;\n }\n};\nconst schema = [map.map, seq.seq].concat(jsonScalars, jsonError);\n\nexports.schema = schema;\n","'use strict';\n\nvar node_buffer = require('buffer');\nvar Scalar = require('../../nodes/Scalar.js');\nvar stringifyString = require('../../stringify/stringifyString.js');\n\nconst binary = {\n identify: value => value instanceof Uint8Array, // Buffer inherits from Uint8Array\n default: false,\n tag: 'tag:yaml.org,2002:binary',\n /**\n * Returns a Buffer in node and an Uint8Array in browsers\n *\n * To use the resulting buffer as an image, you'll want to do something like:\n *\n * const blob = new Blob([buffer], { type: 'image/jpeg' })\n * document.querySelector('#photo').src = URL.createObjectURL(blob)\n */\n resolve(src, onError) {\n if (typeof node_buffer.Buffer === 'function') {\n return node_buffer.Buffer.from(src, 'base64');\n }\n else if (typeof atob === 'function') {\n // On IE 11, atob() can't handle newlines\n const str = atob(src.replace(/[\\n\\r]/g, ''));\n const buffer = new Uint8Array(str.length);\n for (let i = 0; i < str.length; ++i)\n buffer[i] = str.charCodeAt(i);\n return buffer;\n }\n else {\n onError('This environment does not support reading binary tags; either Buffer or atob is required');\n return src;\n }\n },\n stringify({ comment, type, value }, ctx, onComment, onChompKeep) {\n if (!value)\n return '';\n const buf = value; // checked earlier by binary.identify()\n let str;\n if (typeof node_buffer.Buffer === 'function') {\n str =\n buf instanceof node_buffer.Buffer\n ? buf.toString('base64')\n : node_buffer.Buffer.from(buf.buffer).toString('base64');\n }\n else if (typeof btoa === 'function') {\n let s = '';\n for (let i = 0; i < buf.length; ++i)\n s += String.fromCharCode(buf[i]);\n str = btoa(s);\n }\n else {\n throw new Error('This environment does not support writing binary tags; either Buffer or btoa is required');\n }\n type ?? (type = Scalar.Scalar.BLOCK_LITERAL);\n if (type !== Scalar.Scalar.QUOTE_DOUBLE) {\n const lineWidth = Math.max(ctx.options.lineWidth - ctx.indent.length, ctx.options.minContentWidth);\n const n = Math.ceil(str.length / lineWidth);\n const lines = new Array(n);\n for (let i = 0, o = 0; i < n; ++i, o += lineWidth) {\n lines[i] = str.substr(o, lineWidth);\n }\n str = lines.join(type === Scalar.Scalar.BLOCK_LITERAL ? '\\n' : ' ');\n }\n return stringifyString.stringifyString({ comment, type, value: str }, ctx, onComment, onChompKeep);\n }\n};\n\nexports.binary = binary;\n","'use strict';\n\nvar identity = require('../../nodes/identity.js');\nvar Pair = require('../../nodes/Pair.js');\nvar Scalar = require('../../nodes/Scalar.js');\nvar YAMLSeq = require('../../nodes/YAMLSeq.js');\n\nfunction resolvePairs(seq, onError) {\n if (identity.isSeq(seq)) {\n for (let i = 0; i < seq.items.length; ++i) {\n let item = seq.items[i];\n if (identity.isPair(item))\n continue;\n else if (identity.isMap(item)) {\n if (item.items.length > 1)\n onError('Each pair must have its own sequence indicator');\n const pair = item.items[0] || new Pair.Pair(new Scalar.Scalar(null));\n if (item.commentBefore)\n pair.key.commentBefore = pair.key.commentBefore\n ? `${item.commentBefore}\\n${pair.key.commentBefore}`\n : item.commentBefore;\n if (item.comment) {\n const cn = pair.value ?? pair.key;\n cn.comment = cn.comment\n ? `${item.comment}\\n${cn.comment}`\n : item.comment;\n }\n item = pair;\n }\n seq.items[i] = identity.isPair(item) ? item : new Pair.Pair(item);\n }\n }\n else\n onError('Expected a sequence for this tag');\n return seq;\n}\nfunction createPairs(schema, iterable, ctx) {\n const { replacer } = ctx;\n const pairs = new YAMLSeq.YAMLSeq(schema);\n pairs.tag = 'tag:yaml.org,2002:pairs';\n let i = 0;\n if (iterable && Symbol.iterator in Object(iterable))\n for (let it of iterable) {\n if (typeof replacer === 'function')\n it = replacer.call(iterable, String(i++), it);\n let key, value;\n if (Array.isArray(it)) {\n if (it.length === 2) {\n key = it[0];\n value = it[1];\n }\n else\n throw new TypeError(`Expected [key, value] tuple: ${it}`);\n }\n else if (it && it instanceof Object) {\n const keys = Object.keys(it);\n if (keys.length === 1) {\n key = keys[0];\n value = it[key];\n }\n else {\n throw new TypeError(`Expected tuple with one key, not ${keys.length} keys`);\n }\n }\n else {\n key = it;\n }\n pairs.items.push(Pair.createPair(key, value, ctx));\n }\n return pairs;\n}\nconst pairs = {\n collection: 'seq',\n default: false,\n tag: 'tag:yaml.org,2002:pairs',\n resolve: resolvePairs,\n createNode: createPairs\n};\n\nexports.createPairs = createPairs;\nexports.pairs = pairs;\nexports.resolvePairs = resolvePairs;\n","'use strict';\n\nvar identity = require('../../nodes/identity.js');\nvar toJS = require('../../nodes/toJS.js');\nvar YAMLMap = require('../../nodes/YAMLMap.js');\nvar YAMLSeq = require('../../nodes/YAMLSeq.js');\nvar pairs = require('./pairs.js');\n\nclass YAMLOMap extends YAMLSeq.YAMLSeq {\n constructor() {\n super();\n this.add = YAMLMap.YAMLMap.prototype.add.bind(this);\n this.delete = YAMLMap.YAMLMap.prototype.delete.bind(this);\n this.get = YAMLMap.YAMLMap.prototype.get.bind(this);\n this.has = YAMLMap.YAMLMap.prototype.has.bind(this);\n this.set = YAMLMap.YAMLMap.prototype.set.bind(this);\n this.tag = YAMLOMap.tag;\n }\n /**\n * If `ctx` is given, the return type is actually `Map`,\n * but TypeScript won't allow widening the signature of a child method.\n */\n toJSON(_, ctx) {\n if (!ctx)\n return super.toJSON(_);\n const map = new Map();\n if (ctx?.onCreate)\n ctx.onCreate(map);\n for (const pair of this.items) {\n let key, value;\n if (identity.isPair(pair)) {\n key = toJS.toJS(pair.key, '', ctx);\n value = toJS.toJS(pair.value, key, ctx);\n }\n else {\n key = toJS.toJS(pair, '', ctx);\n }\n if (map.has(key))\n throw new Error('Ordered maps must not include duplicate keys');\n map.set(key, value);\n }\n return map;\n }\n static from(schema, iterable, ctx) {\n const pairs$1 = pairs.createPairs(schema, iterable, ctx);\n const omap = new this();\n omap.items = pairs$1.items;\n return omap;\n }\n}\nYAMLOMap.tag = 'tag:yaml.org,2002:omap';\nconst omap = {\n collection: 'seq',\n identify: value => value instanceof Map,\n nodeClass: YAMLOMap,\n default: false,\n tag: 'tag:yaml.org,2002:omap',\n resolve(seq, onError) {\n const pairs$1 = pairs.resolvePairs(seq, onError);\n const seenKeys = [];\n for (const { key } of pairs$1.items) {\n if (identity.isScalar(key)) {\n if (seenKeys.includes(key.value)) {\n onError(`Ordered maps must not include duplicate keys: ${key.value}`);\n }\n else {\n seenKeys.push(key.value);\n }\n }\n }\n return Object.assign(new YAMLOMap(), pairs$1);\n },\n createNode: (schema, iterable, ctx) => YAMLOMap.from(schema, iterable, ctx)\n};\n\nexports.YAMLOMap = YAMLOMap;\nexports.omap = omap;\n","'use strict';\n\nvar Scalar = require('../../nodes/Scalar.js');\n\nfunction boolStringify({ value, source }, ctx) {\n const boolObj = value ? trueTag : falseTag;\n if (source && boolObj.test.test(source))\n return source;\n return value ? ctx.options.trueStr : ctx.options.falseStr;\n}\nconst trueTag = {\n identify: value => value === true,\n default: true,\n tag: 'tag:yaml.org,2002:bool',\n test: /^(?:Y|y|[Yy]es|YES|[Tt]rue|TRUE|[Oo]n|ON)$/,\n resolve: () => new Scalar.Scalar(true),\n stringify: boolStringify\n};\nconst falseTag = {\n identify: value => value === false,\n default: true,\n tag: 'tag:yaml.org,2002:bool',\n test: /^(?:N|n|[Nn]o|NO|[Ff]alse|FALSE|[Oo]ff|OFF)$/,\n resolve: () => new Scalar.Scalar(false),\n stringify: boolStringify\n};\n\nexports.falseTag = falseTag;\nexports.trueTag = trueTag;\n","'use strict';\n\nvar Scalar = require('../../nodes/Scalar.js');\nvar stringifyNumber = require('../../stringify/stringifyNumber.js');\n\nconst floatNaN = {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n test: /^(?:[-+]?\\.(?:inf|Inf|INF)|\\.nan|\\.NaN|\\.NAN)$/,\n resolve: (str) => str.slice(-3).toLowerCase() === 'nan'\n ? NaN\n : str[0] === '-'\n ? Number.NEGATIVE_INFINITY\n : Number.POSITIVE_INFINITY,\n stringify: stringifyNumber.stringifyNumber\n};\nconst floatExp = {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n format: 'EXP',\n test: /^[-+]?(?:[0-9][0-9_]*)?(?:\\.[0-9_]*)?[eE][-+]?[0-9]+$/,\n resolve: (str) => parseFloat(str.replace(/_/g, '')),\n stringify(node) {\n const num = Number(node.value);\n return isFinite(num) ? num.toExponential() : stringifyNumber.stringifyNumber(node);\n }\n};\nconst float = {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n test: /^[-+]?(?:[0-9][0-9_]*)?\\.[0-9_]*$/,\n resolve(str) {\n const node = new Scalar.Scalar(parseFloat(str.replace(/_/g, '')));\n const dot = str.indexOf('.');\n if (dot !== -1) {\n const f = str.substring(dot + 1).replace(/_/g, '');\n if (f[f.length - 1] === '0')\n node.minFractionDigits = f.length;\n }\n return node;\n },\n stringify: stringifyNumber.stringifyNumber\n};\n\nexports.float = float;\nexports.floatExp = floatExp;\nexports.floatNaN = floatNaN;\n","'use strict';\n\nvar stringifyNumber = require('../../stringify/stringifyNumber.js');\n\nconst intIdentify = (value) => typeof value === 'bigint' || Number.isInteger(value);\nfunction intResolve(str, offset, radix, { intAsBigInt }) {\n const sign = str[0];\n if (sign === '-' || sign === '+')\n offset += 1;\n str = str.substring(offset).replace(/_/g, '');\n if (intAsBigInt) {\n switch (radix) {\n case 2:\n str = `0b${str}`;\n break;\n case 8:\n str = `0o${str}`;\n break;\n case 16:\n str = `0x${str}`;\n break;\n }\n const n = BigInt(str);\n return sign === '-' ? BigInt(-1) * n : n;\n }\n const n = parseInt(str, radix);\n return sign === '-' ? -1 * n : n;\n}\nfunction intStringify(node, radix, prefix) {\n const { value } = node;\n if (intIdentify(value)) {\n const str = value.toString(radix);\n return value < 0 ? '-' + prefix + str.substr(1) : prefix + str;\n }\n return stringifyNumber.stringifyNumber(node);\n}\nconst intBin = {\n identify: intIdentify,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n format: 'BIN',\n test: /^[-+]?0b[0-1_]+$/,\n resolve: (str, _onError, opt) => intResolve(str, 2, 2, opt),\n stringify: node => intStringify(node, 2, '0b')\n};\nconst intOct = {\n identify: intIdentify,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n format: 'OCT',\n test: /^[-+]?0[0-7_]+$/,\n resolve: (str, _onError, opt) => intResolve(str, 1, 8, opt),\n stringify: node => intStringify(node, 8, '0')\n};\nconst int = {\n identify: intIdentify,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n test: /^[-+]?[0-9][0-9_]*$/,\n resolve: (str, _onError, opt) => intResolve(str, 0, 10, opt),\n stringify: stringifyNumber.stringifyNumber\n};\nconst intHex = {\n identify: intIdentify,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n format: 'HEX',\n test: /^[-+]?0x[0-9a-fA-F_]+$/,\n resolve: (str, _onError, opt) => intResolve(str, 2, 16, opt),\n stringify: node => intStringify(node, 16, '0x')\n};\n\nexports.int = int;\nexports.intBin = intBin;\nexports.intHex = intHex;\nexports.intOct = intOct;\n","'use strict';\n\nvar identity = require('../../nodes/identity.js');\nvar Pair = require('../../nodes/Pair.js');\nvar YAMLMap = require('../../nodes/YAMLMap.js');\n\nclass YAMLSet extends YAMLMap.YAMLMap {\n constructor(schema) {\n super(schema);\n this.tag = YAMLSet.tag;\n }\n add(key) {\n let pair;\n if (identity.isPair(key))\n pair = key;\n else if (key &&\n typeof key === 'object' &&\n 'key' in key &&\n 'value' in key &&\n key.value === null)\n pair = new Pair.Pair(key.key, null);\n else\n pair = new Pair.Pair(key, null);\n const prev = YAMLMap.findPair(this.items, pair.key);\n if (!prev)\n this.items.push(pair);\n }\n /**\n * If `keepPair` is `true`, returns the Pair matching `key`.\n * Otherwise, returns the value of that Pair's key.\n */\n get(key, keepPair) {\n const pair = YAMLMap.findPair(this.items, key);\n return !keepPair && identity.isPair(pair)\n ? identity.isScalar(pair.key)\n ? pair.key.value\n : pair.key\n : pair;\n }\n set(key, value) {\n if (typeof value !== 'boolean')\n throw new Error(`Expected boolean value for set(key, value) in a YAML set, not ${typeof value}`);\n const prev = YAMLMap.findPair(this.items, key);\n if (prev && !value) {\n this.items.splice(this.items.indexOf(prev), 1);\n }\n else if (!prev && value) {\n this.items.push(new Pair.Pair(key));\n }\n }\n toJSON(_, ctx) {\n return super.toJSON(_, ctx, Set);\n }\n toString(ctx, onComment, onChompKeep) {\n if (!ctx)\n return JSON.stringify(this);\n if (this.hasAllNullValues(true))\n return super.toString(Object.assign({}, ctx, { allNullValues: true }), onComment, onChompKeep);\n else\n throw new Error('Set items must all have null values');\n }\n static from(schema, iterable, ctx) {\n const { replacer } = ctx;\n const set = new this(schema);\n if (iterable && Symbol.iterator in Object(iterable))\n for (let value of iterable) {\n if (typeof replacer === 'function')\n value = replacer.call(iterable, value, value);\n set.items.push(Pair.createPair(value, null, ctx));\n }\n return set;\n }\n}\nYAMLSet.tag = 'tag:yaml.org,2002:set';\nconst set = {\n collection: 'map',\n identify: value => value instanceof Set,\n nodeClass: YAMLSet,\n default: false,\n tag: 'tag:yaml.org,2002:set',\n createNode: (schema, iterable, ctx) => YAMLSet.from(schema, iterable, ctx),\n resolve(map, onError) {\n if (identity.isMap(map)) {\n if (map.hasAllNullValues(true))\n return Object.assign(new YAMLSet(), map);\n else\n onError('Set items must all have null values');\n }\n else\n onError('Expected a mapping for this tag');\n return map;\n }\n};\n\nexports.YAMLSet = YAMLSet;\nexports.set = set;\n","'use strict';\n\nvar stringifyNumber = require('../../stringify/stringifyNumber.js');\n\n/** Internal types handle bigint as number, because TS can't figure it out. */\nfunction parseSexagesimal(str, asBigInt) {\n const sign = str[0];\n const parts = sign === '-' || sign === '+' ? str.substring(1) : str;\n const num = (n) => asBigInt ? BigInt(n) : Number(n);\n const res = parts\n .replace(/_/g, '')\n .split(':')\n .reduce((res, p) => res * num(60) + num(p), num(0));\n return (sign === '-' ? num(-1) * res : res);\n}\n/**\n * hhhh:mm:ss.sss\n *\n * Internal types handle bigint as number, because TS can't figure it out.\n */\nfunction stringifySexagesimal(node) {\n let { value } = node;\n let num = (n) => n;\n if (typeof value === 'bigint')\n num = n => BigInt(n);\n else if (isNaN(value) || !isFinite(value))\n return stringifyNumber.stringifyNumber(node);\n let sign = '';\n if (value < 0) {\n sign = '-';\n value *= num(-1);\n }\n const _60 = num(60);\n const parts = [value % _60]; // seconds, including ms\n if (value < 60) {\n parts.unshift(0); // at least one : is required\n }\n else {\n value = (value - parts[0]) / _60;\n parts.unshift(value % _60); // minutes\n if (value >= 60) {\n value = (value - parts[0]) / _60;\n parts.unshift(value); // hours\n }\n }\n return (sign +\n parts\n .map(n => String(n).padStart(2, '0'))\n .join(':')\n .replace(/000000\\d*$/, '') // % 60 may introduce error\n );\n}\nconst intTime = {\n identify: value => typeof value === 'bigint' || Number.isInteger(value),\n default: true,\n tag: 'tag:yaml.org,2002:int',\n format: 'TIME',\n test: /^[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+$/,\n resolve: (str, _onError, { intAsBigInt }) => parseSexagesimal(str, intAsBigInt),\n stringify: stringifySexagesimal\n};\nconst floatTime = {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n format: 'TIME',\n test: /^[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\.[0-9_]*$/,\n resolve: str => parseSexagesimal(str, false),\n stringify: stringifySexagesimal\n};\nconst timestamp = {\n identify: value => value instanceof Date,\n default: true,\n tag: 'tag:yaml.org,2002:timestamp',\n // If the time zone is omitted, the timestamp is assumed to be specified in UTC. The time part\n // may be omitted altogether, resulting in a date format. In such a case, the time part is\n // assumed to be 00:00:00Z (start of day, UTC).\n test: RegExp('^([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})' + // YYYY-Mm-Dd\n '(?:' + // time is optional\n '(?:t|T|[ \\\\t]+)' + // t | T | whitespace\n '([0-9]{1,2}):([0-9]{1,2}):([0-9]{1,2}(\\\\.[0-9]+)?)' + // Hh:Mm:Ss(.ss)?\n '(?:[ \\\\t]*(Z|[-+][012]?[0-9](?::[0-9]{2})?))?' + // Z | +5 | -03:30\n ')?$'),\n resolve(str) {\n const match = str.match(timestamp.test);\n if (!match)\n throw new Error('!!timestamp expects a date, starting with yyyy-mm-dd');\n const [, year, month, day, hour, minute, second] = match.map(Number);\n const millisec = match[7] ? Number((match[7] + '00').substr(1, 3)) : 0;\n let date = Date.UTC(year, month - 1, day, hour || 0, minute || 0, second || 0, millisec);\n const tz = match[8];\n if (tz && tz !== 'Z') {\n let d = parseSexagesimal(tz, false);\n if (Math.abs(d) < 30)\n d *= 60;\n date -= 60000 * d;\n }\n return new Date(date);\n },\n stringify: ({ value }) => value?.toISOString().replace(/(T00:00:00)?\\.000Z$/, '') ?? ''\n};\n\nexports.floatTime = floatTime;\nexports.intTime = intTime;\nexports.timestamp = timestamp;\n","'use strict';\n\nvar map = require('../common/map.js');\nvar _null = require('../common/null.js');\nvar seq = require('../common/seq.js');\nvar string = require('../common/string.js');\nvar binary = require('./binary.js');\nvar bool = require('./bool.js');\nvar float = require('./float.js');\nvar int = require('./int.js');\nvar merge = require('./merge.js');\nvar omap = require('./omap.js');\nvar pairs = require('./pairs.js');\nvar set = require('./set.js');\nvar timestamp = require('./timestamp.js');\n\nconst schema = [\n map.map,\n seq.seq,\n string.string,\n _null.nullTag,\n bool.trueTag,\n bool.falseTag,\n int.intBin,\n int.intOct,\n int.int,\n int.intHex,\n float.floatNaN,\n float.floatExp,\n float.float,\n binary.binary,\n merge.merge,\n omap.omap,\n pairs.pairs,\n set.set,\n timestamp.intTime,\n timestamp.floatTime,\n timestamp.timestamp\n];\n\nexports.schema = schema;\n","'use strict';\n\nvar map = require('./common/map.js');\nvar _null = require('./common/null.js');\nvar seq = require('./common/seq.js');\nvar string = require('./common/string.js');\nvar bool = require('./core/bool.js');\nvar float = require('./core/float.js');\nvar int = require('./core/int.js');\nvar schema = require('./core/schema.js');\nvar schema$1 = require('./json/schema.js');\nvar binary = require('./yaml-1.1/binary.js');\nvar merge = require('./yaml-1.1/merge.js');\nvar omap = require('./yaml-1.1/omap.js');\nvar pairs = require('./yaml-1.1/pairs.js');\nvar schema$2 = require('./yaml-1.1/schema.js');\nvar set = require('./yaml-1.1/set.js');\nvar timestamp = require('./yaml-1.1/timestamp.js');\n\nconst schemas = new Map([\n ['core', schema.schema],\n ['failsafe', [map.map, seq.seq, string.string]],\n ['json', schema$1.schema],\n ['yaml11', schema$2.schema],\n ['yaml-1.1', schema$2.schema]\n]);\nconst tagsByName = {\n binary: binary.binary,\n bool: bool.boolTag,\n float: float.float,\n floatExp: float.floatExp,\n floatNaN: float.floatNaN,\n floatTime: timestamp.floatTime,\n int: int.int,\n intHex: int.intHex,\n intOct: int.intOct,\n intTime: timestamp.intTime,\n map: map.map,\n merge: merge.merge,\n null: _null.nullTag,\n omap: omap.omap,\n pairs: pairs.pairs,\n seq: seq.seq,\n set: set.set,\n timestamp: timestamp.timestamp\n};\nconst coreKnownTags = {\n 'tag:yaml.org,2002:binary': binary.binary,\n 'tag:yaml.org,2002:merge': merge.merge,\n 'tag:yaml.org,2002:omap': omap.omap,\n 'tag:yaml.org,2002:pairs': pairs.pairs,\n 'tag:yaml.org,2002:set': set.set,\n 'tag:yaml.org,2002:timestamp': timestamp.timestamp\n};\nfunction getTags(customTags, schemaName, addMergeTag) {\n const schemaTags = schemas.get(schemaName);\n if (schemaTags && !customTags) {\n return addMergeTag && !schemaTags.includes(merge.merge)\n ? schemaTags.concat(merge.merge)\n : schemaTags.slice();\n }\n let tags = schemaTags;\n if (!tags) {\n if (Array.isArray(customTags))\n tags = [];\n else {\n const keys = Array.from(schemas.keys())\n .filter(key => key !== 'yaml11')\n .map(key => JSON.stringify(key))\n .join(', ');\n throw new Error(`Unknown schema \"${schemaName}\"; use one of ${keys} or define customTags array`);\n }\n }\n if (Array.isArray(customTags)) {\n for (const tag of customTags)\n tags = tags.concat(tag);\n }\n else if (typeof customTags === 'function') {\n tags = customTags(tags.slice());\n }\n if (addMergeTag)\n tags = tags.concat(merge.merge);\n return tags.reduce((tags, tag) => {\n const tagObj = typeof tag === 'string' ? tagsByName[tag] : tag;\n if (!tagObj) {\n const tagName = JSON.stringify(tag);\n const keys = Object.keys(tagsByName)\n .map(key => JSON.stringify(key))\n .join(', ');\n throw new Error(`Unknown custom tag ${tagName}; use one of ${keys}`);\n }\n if (!tags.includes(tagObj))\n tags.push(tagObj);\n return tags;\n }, []);\n}\n\nexports.coreKnownTags = coreKnownTags;\nexports.getTags = getTags;\n","'use strict';\n\nvar identity = require('../nodes/identity.js');\nvar map = require('./common/map.js');\nvar seq = require('./common/seq.js');\nvar string = require('./common/string.js');\nvar tags = require('./tags.js');\n\nconst sortMapEntriesByKey = (a, b) => a.key < b.key ? -1 : a.key > b.key ? 1 : 0;\nclass Schema {\n constructor({ compat, customTags, merge, resolveKnownTags, schema, sortMapEntries, toStringDefaults }) {\n this.compat = Array.isArray(compat)\n ? tags.getTags(compat, 'compat')\n : compat\n ? tags.getTags(null, compat)\n : null;\n this.name = (typeof schema === 'string' && schema) || 'core';\n this.knownTags = resolveKnownTags ? tags.coreKnownTags : {};\n this.tags = tags.getTags(customTags, this.name, merge);\n this.toStringOptions = toStringDefaults ?? null;\n Object.defineProperty(this, identity.MAP, { value: map.map });\n Object.defineProperty(this, identity.SCALAR, { value: string.string });\n Object.defineProperty(this, identity.SEQ, { value: seq.seq });\n // Used by createMap()\n this.sortMapEntries =\n typeof sortMapEntries === 'function'\n ? sortMapEntries\n : sortMapEntries === true\n ? sortMapEntriesByKey\n : null;\n }\n clone() {\n const copy = Object.create(Schema.prototype, Object.getOwnPropertyDescriptors(this));\n copy.tags = this.tags.slice();\n return copy;\n }\n}\n\nexports.Schema = Schema;\n","'use strict';\n\nvar identity = require('../nodes/identity.js');\nvar stringify = require('./stringify.js');\nvar stringifyComment = require('./stringifyComment.js');\n\nfunction stringifyDocument(doc, options) {\n const lines = [];\n let hasDirectives = options.directives === true;\n if (options.directives !== false && doc.directives) {\n const dir = doc.directives.toString(doc);\n if (dir) {\n lines.push(dir);\n hasDirectives = true;\n }\n else if (doc.directives.docStart)\n hasDirectives = true;\n }\n if (hasDirectives)\n lines.push('---');\n const ctx = stringify.createStringifyContext(doc, options);\n const { commentString } = ctx.options;\n if (doc.commentBefore) {\n if (lines.length !== 1)\n lines.unshift('');\n const cs = commentString(doc.commentBefore);\n lines.unshift(stringifyComment.indentComment(cs, ''));\n }\n let chompKeep = false;\n let contentComment = null;\n if (doc.contents) {\n if (identity.isNode(doc.contents)) {\n if (doc.contents.spaceBefore && hasDirectives)\n lines.push('');\n if (doc.contents.commentBefore) {\n const cs = commentString(doc.contents.commentBefore);\n lines.push(stringifyComment.indentComment(cs, ''));\n }\n // top-level block scalars need to be indented if followed by a comment\n ctx.forceBlockIndent = !!doc.comment;\n contentComment = doc.contents.comment;\n }\n const onChompKeep = contentComment ? undefined : () => (chompKeep = true);\n let body = stringify.stringify(doc.contents, ctx, () => (contentComment = null), onChompKeep);\n if (contentComment)\n body += stringifyComment.lineComment(body, '', commentString(contentComment));\n if ((body[0] === '|' || body[0] === '>') &&\n lines[lines.length - 1] === '---') {\n // Top-level block scalars with a preceding doc marker ought to use the\n // same line for their header.\n lines[lines.length - 1] = `--- ${body}`;\n }\n else\n lines.push(body);\n }\n else {\n lines.push(stringify.stringify(doc.contents, ctx));\n }\n if (doc.directives?.docEnd) {\n if (doc.comment) {\n const cs = commentString(doc.comment);\n if (cs.includes('\\n')) {\n lines.push('...');\n lines.push(stringifyComment.indentComment(cs, ''));\n }\n else {\n lines.push(`... ${cs}`);\n }\n }\n else {\n lines.push('...');\n }\n }\n else {\n let dc = doc.comment;\n if (dc && chompKeep)\n dc = dc.replace(/^\\n+/, '');\n if (dc) {\n if ((!chompKeep || contentComment) && lines[lines.length - 1] !== '')\n lines.push('');\n lines.push(stringifyComment.indentComment(commentString(dc), ''));\n }\n }\n return lines.join('\\n') + '\\n';\n}\n\nexports.stringifyDocument = stringifyDocument;\n","'use strict';\n\nvar Alias = require('../nodes/Alias.js');\nvar Collection = require('../nodes/Collection.js');\nvar identity = require('../nodes/identity.js');\nvar Pair = require('../nodes/Pair.js');\nvar toJS = require('../nodes/toJS.js');\nvar Schema = require('../schema/Schema.js');\nvar stringifyDocument = require('../stringify/stringifyDocument.js');\nvar anchors = require('./anchors.js');\nvar applyReviver = require('./applyReviver.js');\nvar createNode = require('./createNode.js');\nvar directives = require('./directives.js');\n\nclass Document {\n constructor(value, replacer, options) {\n /** A comment before this Document */\n this.commentBefore = null;\n /** A comment immediately after this Document */\n this.comment = null;\n /** Errors encountered during parsing. */\n this.errors = [];\n /** Warnings encountered during parsing. */\n this.warnings = [];\n Object.defineProperty(this, identity.NODE_TYPE, { value: identity.DOC });\n let _replacer = null;\n if (typeof replacer === 'function' || Array.isArray(replacer)) {\n _replacer = replacer;\n }\n else if (options === undefined && replacer) {\n options = replacer;\n replacer = undefined;\n }\n const opt = Object.assign({\n intAsBigInt: false,\n keepSourceTokens: false,\n logLevel: 'warn',\n prettyErrors: true,\n strict: true,\n stringKeys: false,\n uniqueKeys: true,\n version: '1.2'\n }, options);\n this.options = opt;\n let { version } = opt;\n if (options?._directives) {\n this.directives = options._directives.atDocument();\n if (this.directives.yaml.explicit)\n version = this.directives.yaml.version;\n }\n else\n this.directives = new directives.Directives({ version });\n this.setSchema(version, options);\n // @ts-expect-error We can't really know that this matches Contents.\n this.contents =\n value === undefined ? null : this.createNode(value, _replacer, options);\n }\n /**\n * Create a deep copy of this Document and its contents.\n *\n * Custom Node values that inherit from `Object` still refer to their original instances.\n */\n clone() {\n const copy = Object.create(Document.prototype, {\n [identity.NODE_TYPE]: { value: identity.DOC }\n });\n copy.commentBefore = this.commentBefore;\n copy.comment = this.comment;\n copy.errors = this.errors.slice();\n copy.warnings = this.warnings.slice();\n copy.options = Object.assign({}, this.options);\n if (this.directives)\n copy.directives = this.directives.clone();\n copy.schema = this.schema.clone();\n // @ts-expect-error We can't really know that this matches Contents.\n copy.contents = identity.isNode(this.contents)\n ? this.contents.clone(copy.schema)\n : this.contents;\n if (this.range)\n copy.range = this.range.slice();\n return copy;\n }\n /** Adds a value to the document. */\n add(value) {\n if (assertCollection(this.contents))\n this.contents.add(value);\n }\n /** Adds a value to the document. */\n addIn(path, value) {\n if (assertCollection(this.contents))\n this.contents.addIn(path, value);\n }\n /**\n * Create a new `Alias` node, ensuring that the target `node` has the required anchor.\n *\n * If `node` already has an anchor, `name` is ignored.\n * Otherwise, the `node.anchor` value will be set to `name`,\n * or if an anchor with that name is already present in the document,\n * `name` will be used as a prefix for a new unique anchor.\n * If `name` is undefined, the generated anchor will use 'a' as a prefix.\n */\n createAlias(node, name) {\n if (!node.anchor) {\n const prev = anchors.anchorNames(this);\n node.anchor =\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n !name || prev.has(name) ? anchors.findNewAnchor(name || 'a', prev) : name;\n }\n return new Alias.Alias(node.anchor);\n }\n createNode(value, replacer, options) {\n let _replacer = undefined;\n if (typeof replacer === 'function') {\n value = replacer.call({ '': value }, '', value);\n _replacer = replacer;\n }\n else if (Array.isArray(replacer)) {\n const keyToStr = (v) => typeof v === 'number' || v instanceof String || v instanceof Number;\n const asStr = replacer.filter(keyToStr).map(String);\n if (asStr.length > 0)\n replacer = replacer.concat(asStr);\n _replacer = replacer;\n }\n else if (options === undefined && replacer) {\n options = replacer;\n replacer = undefined;\n }\n const { aliasDuplicateObjects, anchorPrefix, flow, keepUndefined, onTagObj, tag } = options ?? {};\n const { onAnchor, setAnchors, sourceObjects } = anchors.createNodeAnchors(this, \n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n anchorPrefix || 'a');\n const ctx = {\n aliasDuplicateObjects: aliasDuplicateObjects ?? true,\n keepUndefined: keepUndefined ?? false,\n onAnchor,\n onTagObj,\n replacer: _replacer,\n schema: this.schema,\n sourceObjects\n };\n const node = createNode.createNode(value, tag, ctx);\n if (flow && identity.isCollection(node))\n node.flow = true;\n setAnchors();\n return node;\n }\n /**\n * Convert a key and a value into a `Pair` using the current schema,\n * recursively wrapping all values as `Scalar` or `Collection` nodes.\n */\n createPair(key, value, options = {}) {\n const k = this.createNode(key, null, options);\n const v = this.createNode(value, null, options);\n return new Pair.Pair(k, v);\n }\n /**\n * Removes a value from the document.\n * @returns `true` if the item was found and removed.\n */\n delete(key) {\n return assertCollection(this.contents) ? this.contents.delete(key) : false;\n }\n /**\n * Removes a value from the document.\n * @returns `true` if the item was found and removed.\n */\n deleteIn(path) {\n if (Collection.isEmptyPath(path)) {\n if (this.contents == null)\n return false;\n // @ts-expect-error Presumed impossible if Strict extends false\n this.contents = null;\n return true;\n }\n return assertCollection(this.contents)\n ? this.contents.deleteIn(path)\n : false;\n }\n /**\n * Returns item at `key`, or `undefined` if not found. By default unwraps\n * scalar values from their surrounding node; to disable set `keepScalar` to\n * `true` (collections are always returned intact).\n */\n get(key, keepScalar) {\n return identity.isCollection(this.contents)\n ? this.contents.get(key, keepScalar)\n : undefined;\n }\n /**\n * Returns item at `path`, or `undefined` if not found. By default unwraps\n * scalar values from their surrounding node; to disable set `keepScalar` to\n * `true` (collections are always returned intact).\n */\n getIn(path, keepScalar) {\n if (Collection.isEmptyPath(path))\n return !keepScalar && identity.isScalar(this.contents)\n ? this.contents.value\n : this.contents;\n return identity.isCollection(this.contents)\n ? this.contents.getIn(path, keepScalar)\n : undefined;\n }\n /**\n * Checks if the document includes a value with the key `key`.\n */\n has(key) {\n return identity.isCollection(this.contents) ? this.contents.has(key) : false;\n }\n /**\n * Checks if the document includes a value at `path`.\n */\n hasIn(path) {\n if (Collection.isEmptyPath(path))\n return this.contents !== undefined;\n return identity.isCollection(this.contents) ? this.contents.hasIn(path) : false;\n }\n /**\n * Sets a value in this document. For `!!set`, `value` needs to be a\n * boolean to add/remove the item from the set.\n */\n set(key, value) {\n if (this.contents == null) {\n // @ts-expect-error We can't really know that this matches Contents.\n this.contents = Collection.collectionFromPath(this.schema, [key], value);\n }\n else if (assertCollection(this.contents)) {\n this.contents.set(key, value);\n }\n }\n /**\n * Sets a value in this document. For `!!set`, `value` needs to be a\n * boolean to add/remove the item from the set.\n */\n setIn(path, value) {\n if (Collection.isEmptyPath(path)) {\n // @ts-expect-error We can't really know that this matches Contents.\n this.contents = value;\n }\n else if (this.contents == null) {\n // @ts-expect-error We can't really know that this matches Contents.\n this.contents = Collection.collectionFromPath(this.schema, Array.from(path), value);\n }\n else if (assertCollection(this.contents)) {\n this.contents.setIn(path, value);\n }\n }\n /**\n * Change the YAML version and schema used by the document.\n * A `null` version disables support for directives, explicit tags, anchors, and aliases.\n * It also requires the `schema` option to be given as a `Schema` instance value.\n *\n * Overrides all previously set schema options.\n */\n setSchema(version, options = {}) {\n if (typeof version === 'number')\n version = String(version);\n let opt;\n switch (version) {\n case '1.1':\n if (this.directives)\n this.directives.yaml.version = '1.1';\n else\n this.directives = new directives.Directives({ version: '1.1' });\n opt = { resolveKnownTags: false, schema: 'yaml-1.1' };\n break;\n case '1.2':\n case 'next':\n if (this.directives)\n this.directives.yaml.version = version;\n else\n this.directives = new directives.Directives({ version });\n opt = { resolveKnownTags: true, schema: 'core' };\n break;\n case null:\n if (this.directives)\n delete this.directives;\n opt = null;\n break;\n default: {\n const sv = JSON.stringify(version);\n throw new Error(`Expected '1.1', '1.2' or null as first argument, but found: ${sv}`);\n }\n }\n // Not using `instanceof Schema` to allow for duck typing\n if (options.schema instanceof Object)\n this.schema = options.schema;\n else if (opt)\n this.schema = new Schema.Schema(Object.assign(opt, options));\n else\n throw new Error(`With a null YAML version, the { schema: Schema } option is required`);\n }\n // json & jsonArg are only used from toJSON()\n toJS({ json, jsonArg, mapAsMap, maxAliasCount, onAnchor, reviver } = {}) {\n const ctx = {\n anchors: new Map(),\n doc: this,\n keep: !json,\n mapAsMap: mapAsMap === true,\n mapKeyWarned: false,\n maxAliasCount: typeof maxAliasCount === 'number' ? maxAliasCount : 100\n };\n const res = toJS.toJS(this.contents, jsonArg ?? '', ctx);\n if (typeof onAnchor === 'function')\n for (const { count, res } of ctx.anchors.values())\n onAnchor(res, count);\n return typeof reviver === 'function'\n ? applyReviver.applyReviver(reviver, { '': res }, '', res)\n : res;\n }\n /**\n * A JSON representation of the document `contents`.\n *\n * @param jsonArg Used by `JSON.stringify` to indicate the array index or\n * property name.\n */\n toJSON(jsonArg, onAnchor) {\n return this.toJS({ json: true, jsonArg, mapAsMap: false, onAnchor });\n }\n /** A YAML representation of the document. */\n toString(options = {}) {\n if (this.errors.length > 0)\n throw new Error('Document with errors cannot be stringified');\n if ('indent' in options &&\n (!Number.isInteger(options.indent) || Number(options.indent) <= 0)) {\n const s = JSON.stringify(options.indent);\n throw new Error(`\"indent\" option must be a positive integer, not ${s}`);\n }\n return stringifyDocument.stringifyDocument(this, options);\n }\n}\nfunction assertCollection(contents) {\n if (identity.isCollection(contents))\n return true;\n throw new Error('Expected a YAML collection as document contents');\n}\n\nexports.Document = Document;\n","'use strict';\n\nclass YAMLError extends Error {\n constructor(name, pos, code, message) {\n super();\n this.name = name;\n this.code = code;\n this.message = message;\n this.pos = pos;\n }\n}\nclass YAMLParseError extends YAMLError {\n constructor(pos, code, message) {\n super('YAMLParseError', pos, code, message);\n }\n}\nclass YAMLWarning extends YAMLError {\n constructor(pos, code, message) {\n super('YAMLWarning', pos, code, message);\n }\n}\nconst prettifyError = (src, lc) => (error) => {\n if (error.pos[0] === -1)\n return;\n error.linePos = error.pos.map(pos => lc.linePos(pos));\n const { line, col } = error.linePos[0];\n error.message += ` at line ${line}, column ${col}`;\n let ci = col - 1;\n let lineStr = src\n .substring(lc.lineStarts[line - 1], lc.lineStarts[line])\n .replace(/[\\n\\r]+$/, '');\n // Trim to max 80 chars, keeping col position near the middle\n if (ci >= 60 && lineStr.length > 80) {\n const trimStart = Math.min(ci - 39, lineStr.length - 79);\n lineStr = '…' + lineStr.substring(trimStart);\n ci -= trimStart - 1;\n }\n if (lineStr.length > 80)\n lineStr = lineStr.substring(0, 79) + '…';\n // Include previous line in context if pointing at line start\n if (line > 1 && /^ *$/.test(lineStr.substring(0, ci))) {\n // Regexp won't match if start is trimmed\n let prev = src.substring(lc.lineStarts[line - 2], lc.lineStarts[line - 1]);\n if (prev.length > 80)\n prev = prev.substring(0, 79) + '…\\n';\n lineStr = prev + lineStr;\n }\n if (/[^ ]/.test(lineStr)) {\n let count = 1;\n const end = error.linePos[1];\n if (end?.line === line && end.col > col) {\n count = Math.max(1, Math.min(end.col - col, 80 - ci));\n }\n const pointer = ' '.repeat(ci) + '^'.repeat(count);\n error.message += `:\\n\\n${lineStr}\\n${pointer}\\n`;\n }\n};\n\nexports.YAMLError = YAMLError;\nexports.YAMLParseError = YAMLParseError;\nexports.YAMLWarning = YAMLWarning;\nexports.prettifyError = prettifyError;\n","'use strict';\n\nfunction resolveProps(tokens, { flow, indicator, next, offset, onError, parentIndent, startOnNewline }) {\n let spaceBefore = false;\n let atNewline = startOnNewline;\n let hasSpace = startOnNewline;\n let comment = '';\n let commentSep = '';\n let hasNewline = false;\n let reqSpace = false;\n let tab = null;\n let anchor = null;\n let tag = null;\n let newlineAfterProp = null;\n let comma = null;\n let found = null;\n let start = null;\n for (const token of tokens) {\n if (reqSpace) {\n if (token.type !== 'space' &&\n token.type !== 'newline' &&\n token.type !== 'comma')\n onError(token.offset, 'MISSING_CHAR', 'Tags and anchors must be separated from the next token by white space');\n reqSpace = false;\n }\n if (tab) {\n if (atNewline && token.type !== 'comment' && token.type !== 'newline') {\n onError(tab, 'TAB_AS_INDENT', 'Tabs are not allowed as indentation');\n }\n tab = null;\n }\n switch (token.type) {\n case 'space':\n // At the doc level, tabs at line start may be parsed\n // as leading white space rather than indentation.\n // In a flow collection, only the parser handles indent.\n if (!flow &&\n (indicator !== 'doc-start' || next?.type !== 'flow-collection') &&\n token.source.includes('\\t')) {\n tab = token;\n }\n hasSpace = true;\n break;\n case 'comment': {\n if (!hasSpace)\n onError(token, 'MISSING_CHAR', 'Comments must be separated from other tokens by white space characters');\n const cb = token.source.substring(1) || ' ';\n if (!comment)\n comment = cb;\n else\n comment += commentSep + cb;\n commentSep = '';\n atNewline = false;\n break;\n }\n case 'newline':\n if (atNewline) {\n if (comment)\n comment += token.source;\n else if (!found || indicator !== 'seq-item-ind')\n spaceBefore = true;\n }\n else\n commentSep += token.source;\n atNewline = true;\n hasNewline = true;\n if (anchor || tag)\n newlineAfterProp = token;\n hasSpace = true;\n break;\n case 'anchor':\n if (anchor)\n onError(token, 'MULTIPLE_ANCHORS', 'A node can have at most one anchor');\n if (token.source.endsWith(':'))\n onError(token.offset + token.source.length - 1, 'BAD_ALIAS', 'Anchor ending in : is ambiguous', true);\n anchor = token;\n start ?? (start = token.offset);\n atNewline = false;\n hasSpace = false;\n reqSpace = true;\n break;\n case 'tag': {\n if (tag)\n onError(token, 'MULTIPLE_TAGS', 'A node can have at most one tag');\n tag = token;\n start ?? (start = token.offset);\n atNewline = false;\n hasSpace = false;\n reqSpace = true;\n break;\n }\n case indicator:\n // Could here handle preceding comments differently\n if (anchor || tag)\n onError(token, 'BAD_PROP_ORDER', `Anchors and tags must be after the ${token.source} indicator`);\n if (found)\n onError(token, 'UNEXPECTED_TOKEN', `Unexpected ${token.source} in ${flow ?? 'collection'}`);\n found = token;\n atNewline =\n indicator === 'seq-item-ind' || indicator === 'explicit-key-ind';\n hasSpace = false;\n break;\n case 'comma':\n if (flow) {\n if (comma)\n onError(token, 'UNEXPECTED_TOKEN', `Unexpected , in ${flow}`);\n comma = token;\n atNewline = false;\n hasSpace = false;\n break;\n }\n // else fallthrough\n default:\n onError(token, 'UNEXPECTED_TOKEN', `Unexpected ${token.type} token`);\n atNewline = false;\n hasSpace = false;\n }\n }\n const last = tokens[tokens.length - 1];\n const end = last ? last.offset + last.source.length : offset;\n if (reqSpace &&\n next &&\n next.type !== 'space' &&\n next.type !== 'newline' &&\n next.type !== 'comma' &&\n (next.type !== 'scalar' || next.source !== '')) {\n onError(next.offset, 'MISSING_CHAR', 'Tags and anchors must be separated from the next token by white space');\n }\n if (tab &&\n ((atNewline && tab.indent <= parentIndent) ||\n next?.type === 'block-map' ||\n next?.type === 'block-seq'))\n onError(tab, 'TAB_AS_INDENT', 'Tabs are not allowed as indentation');\n return {\n comma,\n found,\n spaceBefore,\n comment,\n hasNewline,\n anchor,\n tag,\n newlineAfterProp,\n end,\n start: start ?? end\n };\n}\n\nexports.resolveProps = resolveProps;\n","'use strict';\n\nfunction containsNewline(key) {\n if (!key)\n return null;\n switch (key.type) {\n case 'alias':\n case 'scalar':\n case 'double-quoted-scalar':\n case 'single-quoted-scalar':\n if (key.source.includes('\\n'))\n return true;\n if (key.end)\n for (const st of key.end)\n if (st.type === 'newline')\n return true;\n return false;\n case 'flow-collection':\n for (const it of key.items) {\n for (const st of it.start)\n if (st.type === 'newline')\n return true;\n if (it.sep)\n for (const st of it.sep)\n if (st.type === 'newline')\n return true;\n if (containsNewline(it.key) || containsNewline(it.value))\n return true;\n }\n return false;\n default:\n return true;\n }\n}\n\nexports.containsNewline = containsNewline;\n","'use strict';\n\nvar utilContainsNewline = require('./util-contains-newline.js');\n\nfunction flowIndentCheck(indent, fc, onError) {\n if (fc?.type === 'flow-collection') {\n const end = fc.end[0];\n if (end.indent === indent &&\n (end.source === ']' || end.source === '}') &&\n utilContainsNewline.containsNewline(fc)) {\n const msg = 'Flow end indicator should be more indented than parent';\n onError(end, 'BAD_INDENT', msg, true);\n }\n }\n}\n\nexports.flowIndentCheck = flowIndentCheck;\n","'use strict';\n\nvar identity = require('../nodes/identity.js');\n\nfunction mapIncludes(ctx, items, search) {\n const { uniqueKeys } = ctx.options;\n if (uniqueKeys === false)\n return false;\n const isEqual = typeof uniqueKeys === 'function'\n ? uniqueKeys\n : (a, b) => a === b || (identity.isScalar(a) && identity.isScalar(b) && a.value === b.value);\n return items.some(pair => isEqual(pair.key, search));\n}\n\nexports.mapIncludes = mapIncludes;\n","'use strict';\n\nvar Pair = require('../nodes/Pair.js');\nvar YAMLMap = require('../nodes/YAMLMap.js');\nvar resolveProps = require('./resolve-props.js');\nvar utilContainsNewline = require('./util-contains-newline.js');\nvar utilFlowIndentCheck = require('./util-flow-indent-check.js');\nvar utilMapIncludes = require('./util-map-includes.js');\n\nconst startColMsg = 'All mapping items must start at the same column';\nfunction resolveBlockMap({ composeNode, composeEmptyNode }, ctx, bm, onError, tag) {\n const NodeClass = tag?.nodeClass ?? YAMLMap.YAMLMap;\n const map = new NodeClass(ctx.schema);\n if (ctx.atRoot)\n ctx.atRoot = false;\n let offset = bm.offset;\n let commentEnd = null;\n for (const collItem of bm.items) {\n const { start, key, sep, value } = collItem;\n // key properties\n const keyProps = resolveProps.resolveProps(start, {\n indicator: 'explicit-key-ind',\n next: key ?? sep?.[0],\n offset,\n onError,\n parentIndent: bm.indent,\n startOnNewline: true\n });\n const implicitKey = !keyProps.found;\n if (implicitKey) {\n if (key) {\n if (key.type === 'block-seq')\n onError(offset, 'BLOCK_AS_IMPLICIT_KEY', 'A block sequence may not be used as an implicit map key');\n else if ('indent' in key && key.indent !== bm.indent)\n onError(offset, 'BAD_INDENT', startColMsg);\n }\n if (!keyProps.anchor && !keyProps.tag && !sep) {\n commentEnd = keyProps.end;\n if (keyProps.comment) {\n if (map.comment)\n map.comment += '\\n' + keyProps.comment;\n else\n map.comment = keyProps.comment;\n }\n continue;\n }\n if (keyProps.newlineAfterProp || utilContainsNewline.containsNewline(key)) {\n onError(key ?? start[start.length - 1], 'MULTILINE_IMPLICIT_KEY', 'Implicit keys need to be on a single line');\n }\n }\n else if (keyProps.found?.indent !== bm.indent) {\n onError(offset, 'BAD_INDENT', startColMsg);\n }\n // key value\n ctx.atKey = true;\n const keyStart = keyProps.end;\n const keyNode = key\n ? composeNode(ctx, key, keyProps, onError)\n : composeEmptyNode(ctx, keyStart, start, null, keyProps, onError);\n if (ctx.schema.compat)\n utilFlowIndentCheck.flowIndentCheck(bm.indent, key, onError);\n ctx.atKey = false;\n if (utilMapIncludes.mapIncludes(ctx, map.items, keyNode))\n onError(keyStart, 'DUPLICATE_KEY', 'Map keys must be unique');\n // value properties\n const valueProps = resolveProps.resolveProps(sep ?? [], {\n indicator: 'map-value-ind',\n next: value,\n offset: keyNode.range[2],\n onError,\n parentIndent: bm.indent,\n startOnNewline: !key || key.type === 'block-scalar'\n });\n offset = valueProps.end;\n if (valueProps.found) {\n if (implicitKey) {\n if (value?.type === 'block-map' && !valueProps.hasNewline)\n onError(offset, 'BLOCK_AS_IMPLICIT_KEY', 'Nested mappings are not allowed in compact mappings');\n if (ctx.options.strict &&\n keyProps.start < valueProps.found.offset - 1024)\n onError(keyNode.range, 'KEY_OVER_1024_CHARS', 'The : indicator must be at most 1024 chars after the start of an implicit block mapping key');\n }\n // value value\n const valueNode = value\n ? composeNode(ctx, value, valueProps, onError)\n : composeEmptyNode(ctx, offset, sep, null, valueProps, onError);\n if (ctx.schema.compat)\n utilFlowIndentCheck.flowIndentCheck(bm.indent, value, onError);\n offset = valueNode.range[2];\n const pair = new Pair.Pair(keyNode, valueNode);\n if (ctx.options.keepSourceTokens)\n pair.srcToken = collItem;\n map.items.push(pair);\n }\n else {\n // key with no value\n if (implicitKey)\n onError(keyNode.range, 'MISSING_CHAR', 'Implicit map keys need to be followed by map values');\n if (valueProps.comment) {\n if (keyNode.comment)\n keyNode.comment += '\\n' + valueProps.comment;\n else\n keyNode.comment = valueProps.comment;\n }\n const pair = new Pair.Pair(keyNode);\n if (ctx.options.keepSourceTokens)\n pair.srcToken = collItem;\n map.items.push(pair);\n }\n }\n if (commentEnd && commentEnd < offset)\n onError(commentEnd, 'IMPOSSIBLE', 'Map comment with trailing content');\n map.range = [bm.offset, offset, commentEnd ?? offset];\n return map;\n}\n\nexports.resolveBlockMap = resolveBlockMap;\n","'use strict';\n\nvar YAMLSeq = require('../nodes/YAMLSeq.js');\nvar resolveProps = require('./resolve-props.js');\nvar utilFlowIndentCheck = require('./util-flow-indent-check.js');\n\nfunction resolveBlockSeq({ composeNode, composeEmptyNode }, ctx, bs, onError, tag) {\n const NodeClass = tag?.nodeClass ?? YAMLSeq.YAMLSeq;\n const seq = new NodeClass(ctx.schema);\n if (ctx.atRoot)\n ctx.atRoot = false;\n if (ctx.atKey)\n ctx.atKey = false;\n let offset = bs.offset;\n let commentEnd = null;\n for (const { start, value } of bs.items) {\n const props = resolveProps.resolveProps(start, {\n indicator: 'seq-item-ind',\n next: value,\n offset,\n onError,\n parentIndent: bs.indent,\n startOnNewline: true\n });\n if (!props.found) {\n if (props.anchor || props.tag || value) {\n if (value?.type === 'block-seq')\n onError(props.end, 'BAD_INDENT', 'All sequence items must start at the same column');\n else\n onError(offset, 'MISSING_CHAR', 'Sequence item without - indicator');\n }\n else {\n commentEnd = props.end;\n if (props.comment)\n seq.comment = props.comment;\n continue;\n }\n }\n const node = value\n ? composeNode(ctx, value, props, onError)\n : composeEmptyNode(ctx, props.end, start, null, props, onError);\n if (ctx.schema.compat)\n utilFlowIndentCheck.flowIndentCheck(bs.indent, value, onError);\n offset = node.range[2];\n seq.items.push(node);\n }\n seq.range = [bs.offset, offset, commentEnd ?? offset];\n return seq;\n}\n\nexports.resolveBlockSeq = resolveBlockSeq;\n","'use strict';\n\nfunction resolveEnd(end, offset, reqSpace, onError) {\n let comment = '';\n if (end) {\n let hasSpace = false;\n let sep = '';\n for (const token of end) {\n const { source, type } = token;\n switch (type) {\n case 'space':\n hasSpace = true;\n break;\n case 'comment': {\n if (reqSpace && !hasSpace)\n onError(token, 'MISSING_CHAR', 'Comments must be separated from other tokens by white space characters');\n const cb = source.substring(1) || ' ';\n if (!comment)\n comment = cb;\n else\n comment += sep + cb;\n sep = '';\n break;\n }\n case 'newline':\n if (comment)\n sep += source;\n hasSpace = true;\n break;\n default:\n onError(token, 'UNEXPECTED_TOKEN', `Unexpected ${type} at node end`);\n }\n offset += source.length;\n }\n }\n return { comment, offset };\n}\n\nexports.resolveEnd = resolveEnd;\n","'use strict';\n\nvar identity = require('../nodes/identity.js');\nvar Pair = require('../nodes/Pair.js');\nvar YAMLMap = require('../nodes/YAMLMap.js');\nvar YAMLSeq = require('../nodes/YAMLSeq.js');\nvar resolveEnd = require('./resolve-end.js');\nvar resolveProps = require('./resolve-props.js');\nvar utilContainsNewline = require('./util-contains-newline.js');\nvar utilMapIncludes = require('./util-map-includes.js');\n\nconst blockMsg = 'Block collections are not allowed within flow collections';\nconst isBlock = (token) => token && (token.type === 'block-map' || token.type === 'block-seq');\nfunction resolveFlowCollection({ composeNode, composeEmptyNode }, ctx, fc, onError, tag) {\n const isMap = fc.start.source === '{';\n const fcName = isMap ? 'flow map' : 'flow sequence';\n const NodeClass = (tag?.nodeClass ?? (isMap ? YAMLMap.YAMLMap : YAMLSeq.YAMLSeq));\n const coll = new NodeClass(ctx.schema);\n coll.flow = true;\n const atRoot = ctx.atRoot;\n if (atRoot)\n ctx.atRoot = false;\n if (ctx.atKey)\n ctx.atKey = false;\n let offset = fc.offset + fc.start.source.length;\n for (let i = 0; i < fc.items.length; ++i) {\n const collItem = fc.items[i];\n const { start, key, sep, value } = collItem;\n const props = resolveProps.resolveProps(start, {\n flow: fcName,\n indicator: 'explicit-key-ind',\n next: key ?? sep?.[0],\n offset,\n onError,\n parentIndent: fc.indent,\n startOnNewline: false\n });\n if (!props.found) {\n if (!props.anchor && !props.tag && !sep && !value) {\n if (i === 0 && props.comma)\n onError(props.comma, 'UNEXPECTED_TOKEN', `Unexpected , in ${fcName}`);\n else if (i < fc.items.length - 1)\n onError(props.start, 'UNEXPECTED_TOKEN', `Unexpected empty item in ${fcName}`);\n if (props.comment) {\n if (coll.comment)\n coll.comment += '\\n' + props.comment;\n else\n coll.comment = props.comment;\n }\n offset = props.end;\n continue;\n }\n if (!isMap && ctx.options.strict && utilContainsNewline.containsNewline(key))\n onError(key, // checked by containsNewline()\n 'MULTILINE_IMPLICIT_KEY', 'Implicit keys of flow sequence pairs need to be on a single line');\n }\n if (i === 0) {\n if (props.comma)\n onError(props.comma, 'UNEXPECTED_TOKEN', `Unexpected , in ${fcName}`);\n }\n else {\n if (!props.comma)\n onError(props.start, 'MISSING_CHAR', `Missing , between ${fcName} items`);\n if (props.comment) {\n let prevItemComment = '';\n loop: for (const st of start) {\n switch (st.type) {\n case 'comma':\n case 'space':\n break;\n case 'comment':\n prevItemComment = st.source.substring(1);\n break loop;\n default:\n break loop;\n }\n }\n if (prevItemComment) {\n let prev = coll.items[coll.items.length - 1];\n if (identity.isPair(prev))\n prev = prev.value ?? prev.key;\n if (prev.comment)\n prev.comment += '\\n' + prevItemComment;\n else\n prev.comment = prevItemComment;\n props.comment = props.comment.substring(prevItemComment.length + 1);\n }\n }\n }\n if (!isMap && !sep && !props.found) {\n // item is a value in a seq\n // → key & sep are empty, start does not include ? or :\n const valueNode = value\n ? composeNode(ctx, value, props, onError)\n : composeEmptyNode(ctx, props.end, sep, null, props, onError);\n coll.items.push(valueNode);\n offset = valueNode.range[2];\n if (isBlock(value))\n onError(valueNode.range, 'BLOCK_IN_FLOW', blockMsg);\n }\n else {\n // item is a key+value pair\n // key value\n ctx.atKey = true;\n const keyStart = props.end;\n const keyNode = key\n ? composeNode(ctx, key, props, onError)\n : composeEmptyNode(ctx, keyStart, start, null, props, onError);\n if (isBlock(key))\n onError(keyNode.range, 'BLOCK_IN_FLOW', blockMsg);\n ctx.atKey = false;\n // value properties\n const valueProps = resolveProps.resolveProps(sep ?? [], {\n flow: fcName,\n indicator: 'map-value-ind',\n next: value,\n offset: keyNode.range[2],\n onError,\n parentIndent: fc.indent,\n startOnNewline: false\n });\n if (valueProps.found) {\n if (!isMap && !props.found && ctx.options.strict) {\n if (sep)\n for (const st of sep) {\n if (st === valueProps.found)\n break;\n if (st.type === 'newline') {\n onError(st, 'MULTILINE_IMPLICIT_KEY', 'Implicit keys of flow sequence pairs need to be on a single line');\n break;\n }\n }\n if (props.start < valueProps.found.offset - 1024)\n onError(valueProps.found, 'KEY_OVER_1024_CHARS', 'The : indicator must be at most 1024 chars after the start of an implicit flow sequence key');\n }\n }\n else if (value) {\n if ('source' in value && value.source?.[0] === ':')\n onError(value, 'MISSING_CHAR', `Missing space after : in ${fcName}`);\n else\n onError(valueProps.start, 'MISSING_CHAR', `Missing , or : between ${fcName} items`);\n }\n // value value\n const valueNode = value\n ? composeNode(ctx, value, valueProps, onError)\n : valueProps.found\n ? composeEmptyNode(ctx, valueProps.end, sep, null, valueProps, onError)\n : null;\n if (valueNode) {\n if (isBlock(value))\n onError(valueNode.range, 'BLOCK_IN_FLOW', blockMsg);\n }\n else if (valueProps.comment) {\n if (keyNode.comment)\n keyNode.comment += '\\n' + valueProps.comment;\n else\n keyNode.comment = valueProps.comment;\n }\n const pair = new Pair.Pair(keyNode, valueNode);\n if (ctx.options.keepSourceTokens)\n pair.srcToken = collItem;\n if (isMap) {\n const map = coll;\n if (utilMapIncludes.mapIncludes(ctx, map.items, keyNode))\n onError(keyStart, 'DUPLICATE_KEY', 'Map keys must be unique');\n map.items.push(pair);\n }\n else {\n const map = new YAMLMap.YAMLMap(ctx.schema);\n map.flow = true;\n map.items.push(pair);\n const endRange = (valueNode ?? keyNode).range;\n map.range = [keyNode.range[0], endRange[1], endRange[2]];\n coll.items.push(map);\n }\n offset = valueNode ? valueNode.range[2] : valueProps.end;\n }\n }\n const expectedEnd = isMap ? '}' : ']';\n const [ce, ...ee] = fc.end;\n let cePos = offset;\n if (ce?.source === expectedEnd)\n cePos = ce.offset + ce.source.length;\n else {\n const name = fcName[0].toUpperCase() + fcName.substring(1);\n const msg = atRoot\n ? `${name} must end with a ${expectedEnd}`\n : `${name} in block collection must be sufficiently indented and end with a ${expectedEnd}`;\n onError(offset, atRoot ? 'MISSING_CHAR' : 'BAD_INDENT', msg);\n if (ce && ce.source.length !== 1)\n ee.unshift(ce);\n }\n if (ee.length > 0) {\n const end = resolveEnd.resolveEnd(ee, cePos, ctx.options.strict, onError);\n if (end.comment) {\n if (coll.comment)\n coll.comment += '\\n' + end.comment;\n else\n coll.comment = end.comment;\n }\n coll.range = [fc.offset, cePos, end.offset];\n }\n else {\n coll.range = [fc.offset, cePos, cePos];\n }\n return coll;\n}\n\nexports.resolveFlowCollection = resolveFlowCollection;\n","'use strict';\n\nvar identity = require('../nodes/identity.js');\nvar Scalar = require('../nodes/Scalar.js');\nvar YAMLMap = require('../nodes/YAMLMap.js');\nvar YAMLSeq = require('../nodes/YAMLSeq.js');\nvar resolveBlockMap = require('./resolve-block-map.js');\nvar resolveBlockSeq = require('./resolve-block-seq.js');\nvar resolveFlowCollection = require('./resolve-flow-collection.js');\n\nfunction resolveCollection(CN, ctx, token, onError, tagName, tag) {\n const coll = token.type === 'block-map'\n ? resolveBlockMap.resolveBlockMap(CN, ctx, token, onError, tag)\n : token.type === 'block-seq'\n ? resolveBlockSeq.resolveBlockSeq(CN, ctx, token, onError, tag)\n : resolveFlowCollection.resolveFlowCollection(CN, ctx, token, onError, tag);\n const Coll = coll.constructor;\n // If we got a tagName matching the class, or the tag name is '!',\n // then use the tagName from the node class used to create it.\n if (tagName === '!' || tagName === Coll.tagName) {\n coll.tag = Coll.tagName;\n return coll;\n }\n if (tagName)\n coll.tag = tagName;\n return coll;\n}\nfunction composeCollection(CN, ctx, token, props, onError) {\n const tagToken = props.tag;\n const tagName = !tagToken\n ? null\n : ctx.directives.tagName(tagToken.source, msg => onError(tagToken, 'TAG_RESOLVE_FAILED', msg));\n if (token.type === 'block-seq') {\n const { anchor, newlineAfterProp: nl } = props;\n const lastProp = anchor && tagToken\n ? anchor.offset > tagToken.offset\n ? anchor\n : tagToken\n : (anchor ?? tagToken);\n if (lastProp && (!nl || nl.offset < lastProp.offset)) {\n const message = 'Missing newline after block sequence props';\n onError(lastProp, 'MISSING_CHAR', message);\n }\n }\n const expType = token.type === 'block-map'\n ? 'map'\n : token.type === 'block-seq'\n ? 'seq'\n : token.start.source === '{'\n ? 'map'\n : 'seq';\n // shortcut: check if it's a generic YAMLMap or YAMLSeq\n // before jumping into the custom tag logic.\n if (!tagToken ||\n !tagName ||\n tagName === '!' ||\n (tagName === YAMLMap.YAMLMap.tagName && expType === 'map') ||\n (tagName === YAMLSeq.YAMLSeq.tagName && expType === 'seq')) {\n return resolveCollection(CN, ctx, token, onError, tagName);\n }\n let tag = ctx.schema.tags.find(t => t.tag === tagName && t.collection === expType);\n if (!tag) {\n const kt = ctx.schema.knownTags[tagName];\n if (kt?.collection === expType) {\n ctx.schema.tags.push(Object.assign({}, kt, { default: false }));\n tag = kt;\n }\n else {\n if (kt) {\n onError(tagToken, 'BAD_COLLECTION_TYPE', `${kt.tag} used for ${expType} collection, but expects ${kt.collection ?? 'scalar'}`, true);\n }\n else {\n onError(tagToken, 'TAG_RESOLVE_FAILED', `Unresolved tag: ${tagName}`, true);\n }\n return resolveCollection(CN, ctx, token, onError, tagName);\n }\n }\n const coll = resolveCollection(CN, ctx, token, onError, tagName, tag);\n const res = tag.resolve?.(coll, msg => onError(tagToken, 'TAG_RESOLVE_FAILED', msg), ctx.options) ?? coll;\n const node = identity.isNode(res)\n ? res\n : new Scalar.Scalar(res);\n node.range = coll.range;\n node.tag = tagName;\n if (tag?.format)\n node.format = tag.format;\n return node;\n}\n\nexports.composeCollection = composeCollection;\n","'use strict';\n\nvar Scalar = require('../nodes/Scalar.js');\n\nfunction resolveBlockScalar(ctx, scalar, onError) {\n const start = scalar.offset;\n const header = parseBlockScalarHeader(scalar, ctx.options.strict, onError);\n if (!header)\n return { value: '', type: null, comment: '', range: [start, start, start] };\n const type = header.mode === '>' ? Scalar.Scalar.BLOCK_FOLDED : Scalar.Scalar.BLOCK_LITERAL;\n const lines = scalar.source ? splitLines(scalar.source) : [];\n // determine the end of content & start of chomping\n let chompStart = lines.length;\n for (let i = lines.length - 1; i >= 0; --i) {\n const content = lines[i][1];\n if (content === '' || content === '\\r')\n chompStart = i;\n else\n break;\n }\n // shortcut for empty contents\n if (chompStart === 0) {\n const value = header.chomp === '+' && lines.length > 0\n ? '\\n'.repeat(Math.max(1, lines.length - 1))\n : '';\n let end = start + header.length;\n if (scalar.source)\n end += scalar.source.length;\n return { value, type, comment: header.comment, range: [start, end, end] };\n }\n // find the indentation level to trim from start\n let trimIndent = scalar.indent + header.indent;\n let offset = scalar.offset + header.length;\n let contentStart = 0;\n for (let i = 0; i < chompStart; ++i) {\n const [indent, content] = lines[i];\n if (content === '' || content === '\\r') {\n if (header.indent === 0 && indent.length > trimIndent)\n trimIndent = indent.length;\n }\n else {\n if (indent.length < trimIndent) {\n const message = 'Block scalars with more-indented leading empty lines must use an explicit indentation indicator';\n onError(offset + indent.length, 'MISSING_CHAR', message);\n }\n if (header.indent === 0)\n trimIndent = indent.length;\n contentStart = i;\n if (trimIndent === 0 && !ctx.atRoot) {\n const message = 'Block scalar values in collections must be indented';\n onError(offset, 'BAD_INDENT', message);\n }\n break;\n }\n offset += indent.length + content.length + 1;\n }\n // include trailing more-indented empty lines in content\n for (let i = lines.length - 1; i >= chompStart; --i) {\n if (lines[i][0].length > trimIndent)\n chompStart = i + 1;\n }\n let value = '';\n let sep = '';\n let prevMoreIndented = false;\n // leading whitespace is kept intact\n for (let i = 0; i < contentStart; ++i)\n value += lines[i][0].slice(trimIndent) + '\\n';\n for (let i = contentStart; i < chompStart; ++i) {\n let [indent, content] = lines[i];\n offset += indent.length + content.length + 1;\n const crlf = content[content.length - 1] === '\\r';\n if (crlf)\n content = content.slice(0, -1);\n /* istanbul ignore if already caught in lexer */\n if (content && indent.length < trimIndent) {\n const src = header.indent\n ? 'explicit indentation indicator'\n : 'first line';\n const message = `Block scalar lines must not be less indented than their ${src}`;\n onError(offset - content.length - (crlf ? 2 : 1), 'BAD_INDENT', message);\n indent = '';\n }\n if (type === Scalar.Scalar.BLOCK_LITERAL) {\n value += sep + indent.slice(trimIndent) + content;\n sep = '\\n';\n }\n else if (indent.length > trimIndent || content[0] === '\\t') {\n // more-indented content within a folded block\n if (sep === ' ')\n sep = '\\n';\n else if (!prevMoreIndented && sep === '\\n')\n sep = '\\n\\n';\n value += sep + indent.slice(trimIndent) + content;\n sep = '\\n';\n prevMoreIndented = true;\n }\n else if (content === '') {\n // empty line\n if (sep === '\\n')\n value += '\\n';\n else\n sep = '\\n';\n }\n else {\n value += sep + content;\n sep = ' ';\n prevMoreIndented = false;\n }\n }\n switch (header.chomp) {\n case '-':\n break;\n case '+':\n for (let i = chompStart; i < lines.length; ++i)\n value += '\\n' + lines[i][0].slice(trimIndent);\n if (value[value.length - 1] !== '\\n')\n value += '\\n';\n break;\n default:\n value += '\\n';\n }\n const end = start + header.length + scalar.source.length;\n return { value, type, comment: header.comment, range: [start, end, end] };\n}\nfunction parseBlockScalarHeader({ offset, props }, strict, onError) {\n /* istanbul ignore if should not happen */\n if (props[0].type !== 'block-scalar-header') {\n onError(props[0], 'IMPOSSIBLE', 'Block scalar header not found');\n return null;\n }\n const { source } = props[0];\n const mode = source[0];\n let indent = 0;\n let chomp = '';\n let error = -1;\n for (let i = 1; i < source.length; ++i) {\n const ch = source[i];\n if (!chomp && (ch === '-' || ch === '+'))\n chomp = ch;\n else {\n const n = Number(ch);\n if (!indent && n)\n indent = n;\n else if (error === -1)\n error = offset + i;\n }\n }\n if (error !== -1)\n onError(error, 'UNEXPECTED_TOKEN', `Block scalar header includes extra characters: ${source}`);\n let hasSpace = false;\n let comment = '';\n let length = source.length;\n for (let i = 1; i < props.length; ++i) {\n const token = props[i];\n switch (token.type) {\n case 'space':\n hasSpace = true;\n // fallthrough\n case 'newline':\n length += token.source.length;\n break;\n case 'comment':\n if (strict && !hasSpace) {\n const message = 'Comments must be separated from other tokens by white space characters';\n onError(token, 'MISSING_CHAR', message);\n }\n length += token.source.length;\n comment = token.source.substring(1);\n break;\n case 'error':\n onError(token, 'UNEXPECTED_TOKEN', token.message);\n length += token.source.length;\n break;\n /* istanbul ignore next should not happen */\n default: {\n const message = `Unexpected token in block scalar header: ${token.type}`;\n onError(token, 'UNEXPECTED_TOKEN', message);\n const ts = token.source;\n if (ts && typeof ts === 'string')\n length += ts.length;\n }\n }\n }\n return { mode, indent, chomp, comment, length };\n}\n/** @returns Array of lines split up as `[indent, content]` */\nfunction splitLines(source) {\n const split = source.split(/\\n( *)/);\n const first = split[0];\n const m = first.match(/^( *)/);\n const line0 = m?.[1]\n ? [m[1], first.slice(m[1].length)]\n : ['', first];\n const lines = [line0];\n for (let i = 1; i < split.length; i += 2)\n lines.push([split[i], split[i + 1]]);\n return lines;\n}\n\nexports.resolveBlockScalar = resolveBlockScalar;\n","'use strict';\n\nvar Scalar = require('../nodes/Scalar.js');\nvar resolveEnd = require('./resolve-end.js');\n\nfunction resolveFlowScalar(scalar, strict, onError) {\n const { offset, type, source, end } = scalar;\n let _type;\n let value;\n const _onError = (rel, code, msg) => onError(offset + rel, code, msg);\n switch (type) {\n case 'scalar':\n _type = Scalar.Scalar.PLAIN;\n value = plainValue(source, _onError);\n break;\n case 'single-quoted-scalar':\n _type = Scalar.Scalar.QUOTE_SINGLE;\n value = singleQuotedValue(source, _onError);\n break;\n case 'double-quoted-scalar':\n _type = Scalar.Scalar.QUOTE_DOUBLE;\n value = doubleQuotedValue(source, _onError);\n break;\n /* istanbul ignore next should not happen */\n default:\n onError(scalar, 'UNEXPECTED_TOKEN', `Expected a flow scalar value, but found: ${type}`);\n return {\n value: '',\n type: null,\n comment: '',\n range: [offset, offset + source.length, offset + source.length]\n };\n }\n const valueEnd = offset + source.length;\n const re = resolveEnd.resolveEnd(end, valueEnd, strict, onError);\n return {\n value,\n type: _type,\n comment: re.comment,\n range: [offset, valueEnd, re.offset]\n };\n}\nfunction plainValue(source, onError) {\n let badChar = '';\n switch (source[0]) {\n /* istanbul ignore next should not happen */\n case '\\t':\n badChar = 'a tab character';\n break;\n case ',':\n badChar = 'flow indicator character ,';\n break;\n case '%':\n badChar = 'directive indicator character %';\n break;\n case '|':\n case '>': {\n badChar = `block scalar indicator ${source[0]}`;\n break;\n }\n case '@':\n case '`': {\n badChar = `reserved character ${source[0]}`;\n break;\n }\n }\n if (badChar)\n onError(0, 'BAD_SCALAR_START', `Plain value cannot start with ${badChar}`);\n return foldLines(source);\n}\nfunction singleQuotedValue(source, onError) {\n if (source[source.length - 1] !== \"'\" || source.length === 1)\n onError(source.length, 'MISSING_CHAR', \"Missing closing 'quote\");\n return foldLines(source.slice(1, -1)).replace(/''/g, \"'\");\n}\nfunction foldLines(source) {\n /**\n * The negative lookbehind here and in the `re` RegExp is to\n * prevent causing a polynomial search time in certain cases.\n *\n * The try-catch is for Safari, which doesn't support this yet:\n * https://caniuse.com/js-regexp-lookbehind\n */\n let first, line;\n try {\n first = new RegExp('(.*?)(? wsStart ? source.slice(wsStart, i + 1) : ch;\n }\n else {\n res += ch;\n }\n }\n if (source[source.length - 1] !== '\"' || source.length === 1)\n onError(source.length, 'MISSING_CHAR', 'Missing closing \"quote');\n return res;\n}\n/**\n * Fold a single newline into a space, multiple newlines to N - 1 newlines.\n * Presumes `source[offset] === '\\n'`\n */\nfunction foldNewline(source, offset) {\n let fold = '';\n let ch = source[offset + 1];\n while (ch === ' ' || ch === '\\t' || ch === '\\n' || ch === '\\r') {\n if (ch === '\\r' && source[offset + 2] !== '\\n')\n break;\n if (ch === '\\n')\n fold += '\\n';\n offset += 1;\n ch = source[offset + 1];\n }\n if (!fold)\n fold = ' ';\n return { fold, offset };\n}\nconst escapeCodes = {\n '0': '\\0', // null character\n a: '\\x07', // bell character\n b: '\\b', // backspace\n e: '\\x1b', // escape character\n f: '\\f', // form feed\n n: '\\n', // line feed\n r: '\\r', // carriage return\n t: '\\t', // horizontal tab\n v: '\\v', // vertical tab\n N: '\\u0085', // Unicode next line\n _: '\\u00a0', // Unicode non-breaking space\n L: '\\u2028', // Unicode line separator\n P: '\\u2029', // Unicode paragraph separator\n ' ': ' ',\n '\"': '\"',\n '/': '/',\n '\\\\': '\\\\',\n '\\t': '\\t'\n};\nfunction parseCharCode(source, offset, length, onError) {\n const cc = source.substr(offset, length);\n const ok = cc.length === length && /^[0-9a-fA-F]+$/.test(cc);\n const code = ok ? parseInt(cc, 16) : NaN;\n if (isNaN(code)) {\n const raw = source.substr(offset - 2, length + 2);\n onError(offset - 2, 'BAD_DQ_ESCAPE', `Invalid escape sequence ${raw}`);\n return raw;\n }\n return String.fromCodePoint(code);\n}\n\nexports.resolveFlowScalar = resolveFlowScalar;\n","'use strict';\n\nvar identity = require('../nodes/identity.js');\nvar Scalar = require('../nodes/Scalar.js');\nvar resolveBlockScalar = require('./resolve-block-scalar.js');\nvar resolveFlowScalar = require('./resolve-flow-scalar.js');\n\nfunction composeScalar(ctx, token, tagToken, onError) {\n const { value, type, comment, range } = token.type === 'block-scalar'\n ? resolveBlockScalar.resolveBlockScalar(ctx, token, onError)\n : resolveFlowScalar.resolveFlowScalar(token, ctx.options.strict, onError);\n const tagName = tagToken\n ? ctx.directives.tagName(tagToken.source, msg => onError(tagToken, 'TAG_RESOLVE_FAILED', msg))\n : null;\n let tag;\n if (ctx.options.stringKeys && ctx.atKey) {\n tag = ctx.schema[identity.SCALAR];\n }\n else if (tagName)\n tag = findScalarTagByName(ctx.schema, value, tagName, tagToken, onError);\n else if (token.type === 'scalar')\n tag = findScalarTagByTest(ctx, value, token, onError);\n else\n tag = ctx.schema[identity.SCALAR];\n let scalar;\n try {\n const res = tag.resolve(value, msg => onError(tagToken ?? token, 'TAG_RESOLVE_FAILED', msg), ctx.options);\n scalar = identity.isScalar(res) ? res : new Scalar.Scalar(res);\n }\n catch (error) {\n const msg = error instanceof Error ? error.message : String(error);\n onError(tagToken ?? token, 'TAG_RESOLVE_FAILED', msg);\n scalar = new Scalar.Scalar(value);\n }\n scalar.range = range;\n scalar.source = value;\n if (type)\n scalar.type = type;\n if (tagName)\n scalar.tag = tagName;\n if (tag.format)\n scalar.format = tag.format;\n if (comment)\n scalar.comment = comment;\n return scalar;\n}\nfunction findScalarTagByName(schema, value, tagName, tagToken, onError) {\n if (tagName === '!')\n return schema[identity.SCALAR]; // non-specific tag\n const matchWithTest = [];\n for (const tag of schema.tags) {\n if (!tag.collection && tag.tag === tagName) {\n if (tag.default && tag.test)\n matchWithTest.push(tag);\n else\n return tag;\n }\n }\n for (const tag of matchWithTest)\n if (tag.test?.test(value))\n return tag;\n const kt = schema.knownTags[tagName];\n if (kt && !kt.collection) {\n // Ensure that the known tag is available for stringifying,\n // but does not get used by default.\n schema.tags.push(Object.assign({}, kt, { default: false, test: undefined }));\n return kt;\n }\n onError(tagToken, 'TAG_RESOLVE_FAILED', `Unresolved tag: ${tagName}`, tagName !== 'tag:yaml.org,2002:str');\n return schema[identity.SCALAR];\n}\nfunction findScalarTagByTest({ atKey, directives, schema }, value, token, onError) {\n const tag = schema.tags.find(tag => (tag.default === true || (atKey && tag.default === 'key')) &&\n tag.test?.test(value)) || schema[identity.SCALAR];\n if (schema.compat) {\n const compat = schema.compat.find(tag => tag.default && tag.test?.test(value)) ??\n schema[identity.SCALAR];\n if (tag.tag !== compat.tag) {\n const ts = directives.tagString(tag.tag);\n const cs = directives.tagString(compat.tag);\n const msg = `Value may be parsed as either ${ts} or ${cs}`;\n onError(token, 'TAG_RESOLVE_FAILED', msg, true);\n }\n }\n return tag;\n}\n\nexports.composeScalar = composeScalar;\n","'use strict';\n\nfunction emptyScalarPosition(offset, before, pos) {\n if (before) {\n pos ?? (pos = before.length);\n for (let i = pos - 1; i >= 0; --i) {\n let st = before[i];\n switch (st.type) {\n case 'space':\n case 'comment':\n case 'newline':\n offset -= st.source.length;\n continue;\n }\n // Technically, an empty scalar is immediately after the last non-empty\n // node, but it's more useful to place it after any whitespace.\n st = before[++i];\n while (st?.type === 'space') {\n offset += st.source.length;\n st = before[++i];\n }\n break;\n }\n }\n return offset;\n}\n\nexports.emptyScalarPosition = emptyScalarPosition;\n","'use strict';\n\nvar Alias = require('../nodes/Alias.js');\nvar identity = require('../nodes/identity.js');\nvar composeCollection = require('./compose-collection.js');\nvar composeScalar = require('./compose-scalar.js');\nvar resolveEnd = require('./resolve-end.js');\nvar utilEmptyScalarPosition = require('./util-empty-scalar-position.js');\n\nconst CN = { composeNode, composeEmptyNode };\nfunction composeNode(ctx, token, props, onError) {\n const atKey = ctx.atKey;\n const { spaceBefore, comment, anchor, tag } = props;\n let node;\n let isSrcToken = true;\n switch (token.type) {\n case 'alias':\n node = composeAlias(ctx, token, onError);\n if (anchor || tag)\n onError(token, 'ALIAS_PROPS', 'An alias node must not specify any properties');\n break;\n case 'scalar':\n case 'single-quoted-scalar':\n case 'double-quoted-scalar':\n case 'block-scalar':\n node = composeScalar.composeScalar(ctx, token, tag, onError);\n if (anchor)\n node.anchor = anchor.source.substring(1);\n break;\n case 'block-map':\n case 'block-seq':\n case 'flow-collection':\n node = composeCollection.composeCollection(CN, ctx, token, props, onError);\n if (anchor)\n node.anchor = anchor.source.substring(1);\n break;\n default: {\n const message = token.type === 'error'\n ? token.message\n : `Unsupported token (type: ${token.type})`;\n onError(token, 'UNEXPECTED_TOKEN', message);\n node = composeEmptyNode(ctx, token.offset, undefined, null, props, onError);\n isSrcToken = false;\n }\n }\n if (anchor && node.anchor === '')\n onError(anchor, 'BAD_ALIAS', 'Anchor cannot be an empty string');\n if (atKey &&\n ctx.options.stringKeys &&\n (!identity.isScalar(node) ||\n typeof node.value !== 'string' ||\n (node.tag && node.tag !== 'tag:yaml.org,2002:str'))) {\n const msg = 'With stringKeys, all keys must be strings';\n onError(tag ?? token, 'NON_STRING_KEY', msg);\n }\n if (spaceBefore)\n node.spaceBefore = true;\n if (comment) {\n if (token.type === 'scalar' && token.source === '')\n node.comment = comment;\n else\n node.commentBefore = comment;\n }\n // @ts-expect-error Type checking misses meaning of isSrcToken\n if (ctx.options.keepSourceTokens && isSrcToken)\n node.srcToken = token;\n return node;\n}\nfunction composeEmptyNode(ctx, offset, before, pos, { spaceBefore, comment, anchor, tag, end }, onError) {\n const token = {\n type: 'scalar',\n offset: utilEmptyScalarPosition.emptyScalarPosition(offset, before, pos),\n indent: -1,\n source: ''\n };\n const node = composeScalar.composeScalar(ctx, token, tag, onError);\n if (anchor) {\n node.anchor = anchor.source.substring(1);\n if (node.anchor === '')\n onError(anchor, 'BAD_ALIAS', 'Anchor cannot be an empty string');\n }\n if (spaceBefore)\n node.spaceBefore = true;\n if (comment) {\n node.comment = comment;\n node.range[2] = end;\n }\n return node;\n}\nfunction composeAlias({ options }, { offset, source, end }, onError) {\n const alias = new Alias.Alias(source.substring(1));\n if (alias.source === '')\n onError(offset, 'BAD_ALIAS', 'Alias cannot be an empty string');\n if (alias.source.endsWith(':'))\n onError(offset + source.length - 1, 'BAD_ALIAS', 'Alias ending in : is ambiguous', true);\n const valueEnd = offset + source.length;\n const re = resolveEnd.resolveEnd(end, valueEnd, options.strict, onError);\n alias.range = [offset, valueEnd, re.offset];\n if (re.comment)\n alias.comment = re.comment;\n return alias;\n}\n\nexports.composeEmptyNode = composeEmptyNode;\nexports.composeNode = composeNode;\n","'use strict';\n\nvar Document = require('../doc/Document.js');\nvar composeNode = require('./compose-node.js');\nvar resolveEnd = require('./resolve-end.js');\nvar resolveProps = require('./resolve-props.js');\n\nfunction composeDoc(options, directives, { offset, start, value, end }, onError) {\n const opts = Object.assign({ _directives: directives }, options);\n const doc = new Document.Document(undefined, opts);\n const ctx = {\n atKey: false,\n atRoot: true,\n directives: doc.directives,\n options: doc.options,\n schema: doc.schema\n };\n const props = resolveProps.resolveProps(start, {\n indicator: 'doc-start',\n next: value ?? end?.[0],\n offset,\n onError,\n parentIndent: 0,\n startOnNewline: true\n });\n if (props.found) {\n doc.directives.docStart = true;\n if (value &&\n (value.type === 'block-map' || value.type === 'block-seq') &&\n !props.hasNewline)\n onError(props.end, 'MISSING_CHAR', 'Block collection cannot start on same line with directives-end marker');\n }\n // @ts-expect-error If Contents is set, let's trust the user\n doc.contents = value\n ? composeNode.composeNode(ctx, value, props, onError)\n : composeNode.composeEmptyNode(ctx, props.end, start, null, props, onError);\n const contentEnd = doc.contents.range[2];\n const re = resolveEnd.resolveEnd(end, contentEnd, false, onError);\n if (re.comment)\n doc.comment = re.comment;\n doc.range = [offset, contentEnd, re.offset];\n return doc;\n}\n\nexports.composeDoc = composeDoc;\n","'use strict';\n\nvar node_process = require('process');\nvar directives = require('../doc/directives.js');\nvar Document = require('../doc/Document.js');\nvar errors = require('../errors.js');\nvar identity = require('../nodes/identity.js');\nvar composeDoc = require('./compose-doc.js');\nvar resolveEnd = require('./resolve-end.js');\n\nfunction getErrorPos(src) {\n if (typeof src === 'number')\n return [src, src + 1];\n if (Array.isArray(src))\n return src.length === 2 ? src : [src[0], src[1]];\n const { offset, source } = src;\n return [offset, offset + (typeof source === 'string' ? source.length : 1)];\n}\nfunction parsePrelude(prelude) {\n let comment = '';\n let atComment = false;\n let afterEmptyLine = false;\n for (let i = 0; i < prelude.length; ++i) {\n const source = prelude[i];\n switch (source[0]) {\n case '#':\n comment +=\n (comment === '' ? '' : afterEmptyLine ? '\\n\\n' : '\\n') +\n (source.substring(1) || ' ');\n atComment = true;\n afterEmptyLine = false;\n break;\n case '%':\n if (prelude[i + 1]?.[0] !== '#')\n i += 1;\n atComment = false;\n break;\n default:\n // This may be wrong after doc-end, but in that case it doesn't matter\n if (!atComment)\n afterEmptyLine = true;\n atComment = false;\n }\n }\n return { comment, afterEmptyLine };\n}\n/**\n * Compose a stream of CST nodes into a stream of YAML Documents.\n *\n * ```ts\n * import { Composer, Parser } from 'yaml'\n *\n * const src: string = ...\n * const tokens = new Parser().parse(src)\n * const docs = new Composer().compose(tokens)\n * ```\n */\nclass Composer {\n constructor(options = {}) {\n this.doc = null;\n this.atDirectives = false;\n this.prelude = [];\n this.errors = [];\n this.warnings = [];\n this.onError = (source, code, message, warning) => {\n const pos = getErrorPos(source);\n if (warning)\n this.warnings.push(new errors.YAMLWarning(pos, code, message));\n else\n this.errors.push(new errors.YAMLParseError(pos, code, message));\n };\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n this.directives = new directives.Directives({ version: options.version || '1.2' });\n this.options = options;\n }\n decorate(doc, afterDoc) {\n const { comment, afterEmptyLine } = parsePrelude(this.prelude);\n //console.log({ dc: doc.comment, prelude, comment })\n if (comment) {\n const dc = doc.contents;\n if (afterDoc) {\n doc.comment = doc.comment ? `${doc.comment}\\n${comment}` : comment;\n }\n else if (afterEmptyLine || doc.directives.docStart || !dc) {\n doc.commentBefore = comment;\n }\n else if (identity.isCollection(dc) && !dc.flow && dc.items.length > 0) {\n let it = dc.items[0];\n if (identity.isPair(it))\n it = it.key;\n const cb = it.commentBefore;\n it.commentBefore = cb ? `${comment}\\n${cb}` : comment;\n }\n else {\n const cb = dc.commentBefore;\n dc.commentBefore = cb ? `${comment}\\n${cb}` : comment;\n }\n }\n if (afterDoc) {\n Array.prototype.push.apply(doc.errors, this.errors);\n Array.prototype.push.apply(doc.warnings, this.warnings);\n }\n else {\n doc.errors = this.errors;\n doc.warnings = this.warnings;\n }\n this.prelude = [];\n this.errors = [];\n this.warnings = [];\n }\n /**\n * Current stream status information.\n *\n * Mostly useful at the end of input for an empty stream.\n */\n streamInfo() {\n return {\n comment: parsePrelude(this.prelude).comment,\n directives: this.directives,\n errors: this.errors,\n warnings: this.warnings\n };\n }\n /**\n * Compose tokens into documents.\n *\n * @param forceDoc - If the stream contains no document, still emit a final document including any comments and directives that would be applied to a subsequent document.\n * @param endOffset - Should be set if `forceDoc` is also set, to set the document range end and to indicate errors correctly.\n */\n *compose(tokens, forceDoc = false, endOffset = -1) {\n for (const token of tokens)\n yield* this.next(token);\n yield* this.end(forceDoc, endOffset);\n }\n /** Advance the composer by one CST token. */\n *next(token) {\n if (node_process.env.LOG_STREAM)\n console.dir(token, { depth: null });\n switch (token.type) {\n case 'directive':\n this.directives.add(token.source, (offset, message, warning) => {\n const pos = getErrorPos(token);\n pos[0] += offset;\n this.onError(pos, 'BAD_DIRECTIVE', message, warning);\n });\n this.prelude.push(token.source);\n this.atDirectives = true;\n break;\n case 'document': {\n const doc = composeDoc.composeDoc(this.options, this.directives, token, this.onError);\n if (this.atDirectives && !doc.directives.docStart)\n this.onError(token, 'MISSING_CHAR', 'Missing directives-end/doc-start indicator line');\n this.decorate(doc, false);\n if (this.doc)\n yield this.doc;\n this.doc = doc;\n this.atDirectives = false;\n break;\n }\n case 'byte-order-mark':\n case 'space':\n break;\n case 'comment':\n case 'newline':\n this.prelude.push(token.source);\n break;\n case 'error': {\n const msg = token.source\n ? `${token.message}: ${JSON.stringify(token.source)}`\n : token.message;\n const error = new errors.YAMLParseError(getErrorPos(token), 'UNEXPECTED_TOKEN', msg);\n if (this.atDirectives || !this.doc)\n this.errors.push(error);\n else\n this.doc.errors.push(error);\n break;\n }\n case 'doc-end': {\n if (!this.doc) {\n const msg = 'Unexpected doc-end without preceding document';\n this.errors.push(new errors.YAMLParseError(getErrorPos(token), 'UNEXPECTED_TOKEN', msg));\n break;\n }\n this.doc.directives.docEnd = true;\n const end = resolveEnd.resolveEnd(token.end, token.offset + token.source.length, this.doc.options.strict, this.onError);\n this.decorate(this.doc, true);\n if (end.comment) {\n const dc = this.doc.comment;\n this.doc.comment = dc ? `${dc}\\n${end.comment}` : end.comment;\n }\n this.doc.range[2] = end.offset;\n break;\n }\n default:\n this.errors.push(new errors.YAMLParseError(getErrorPos(token), 'UNEXPECTED_TOKEN', `Unsupported token ${token.type}`));\n }\n }\n /**\n * Call at end of input to yield any remaining document.\n *\n * @param forceDoc - If the stream contains no document, still emit a final document including any comments and directives that would be applied to a subsequent document.\n * @param endOffset - Should be set if `forceDoc` is also set, to set the document range end and to indicate errors correctly.\n */\n *end(forceDoc = false, endOffset = -1) {\n if (this.doc) {\n this.decorate(this.doc, true);\n yield this.doc;\n this.doc = null;\n }\n else if (forceDoc) {\n const opts = Object.assign({ _directives: this.directives }, this.options);\n const doc = new Document.Document(undefined, opts);\n if (this.atDirectives)\n this.onError(endOffset, 'MISSING_CHAR', 'Missing directives-end indicator line');\n doc.range = [0, endOffset, endOffset];\n this.decorate(doc, false);\n yield doc;\n }\n }\n}\n\nexports.Composer = Composer;\n","'use strict';\n\nvar resolveBlockScalar = require('../compose/resolve-block-scalar.js');\nvar resolveFlowScalar = require('../compose/resolve-flow-scalar.js');\nvar errors = require('../errors.js');\nvar stringifyString = require('../stringify/stringifyString.js');\n\nfunction resolveAsScalar(token, strict = true, onError) {\n if (token) {\n const _onError = (pos, code, message) => {\n const offset = typeof pos === 'number' ? pos : Array.isArray(pos) ? pos[0] : pos.offset;\n if (onError)\n onError(offset, code, message);\n else\n throw new errors.YAMLParseError([offset, offset + 1], code, message);\n };\n switch (token.type) {\n case 'scalar':\n case 'single-quoted-scalar':\n case 'double-quoted-scalar':\n return resolveFlowScalar.resolveFlowScalar(token, strict, _onError);\n case 'block-scalar':\n return resolveBlockScalar.resolveBlockScalar({ options: { strict } }, token, _onError);\n }\n }\n return null;\n}\n/**\n * Create a new scalar token with `value`\n *\n * Values that represent an actual string but may be parsed as a different type should use a `type` other than `'PLAIN'`,\n * as this function does not support any schema operations and won't check for such conflicts.\n *\n * @param value The string representation of the value, which will have its content properly indented.\n * @param context.end Comments and whitespace after the end of the value, or after the block scalar header. If undefined, a newline will be added.\n * @param context.implicitKey Being within an implicit key may affect the resolved type of the token's value.\n * @param context.indent The indent level of the token.\n * @param context.inFlow Is this scalar within a flow collection? This may affect the resolved type of the token's value.\n * @param context.offset The offset position of the token.\n * @param context.type The preferred type of the scalar token. If undefined, the previous type of the `token` will be used, defaulting to `'PLAIN'`.\n */\nfunction createScalarToken(value, context) {\n const { implicitKey = false, indent, inFlow = false, offset = -1, type = 'PLAIN' } = context;\n const source = stringifyString.stringifyString({ type, value }, {\n implicitKey,\n indent: indent > 0 ? ' '.repeat(indent) : '',\n inFlow,\n options: { blockQuote: true, lineWidth: -1 }\n });\n const end = context.end ?? [\n { type: 'newline', offset: -1, indent, source: '\\n' }\n ];\n switch (source[0]) {\n case '|':\n case '>': {\n const he = source.indexOf('\\n');\n const head = source.substring(0, he);\n const body = source.substring(he + 1) + '\\n';\n const props = [\n { type: 'block-scalar-header', offset, indent, source: head }\n ];\n if (!addEndtoBlockProps(props, end))\n props.push({ type: 'newline', offset: -1, indent, source: '\\n' });\n return { type: 'block-scalar', offset, indent, props, source: body };\n }\n case '\"':\n return { type: 'double-quoted-scalar', offset, indent, source, end };\n case \"'\":\n return { type: 'single-quoted-scalar', offset, indent, source, end };\n default:\n return { type: 'scalar', offset, indent, source, end };\n }\n}\n/**\n * Set the value of `token` to the given string `value`, overwriting any previous contents and type that it may have.\n *\n * Best efforts are made to retain any comments previously associated with the `token`,\n * though all contents within a collection's `items` will be overwritten.\n *\n * Values that represent an actual string but may be parsed as a different type should use a `type` other than `'PLAIN'`,\n * as this function does not support any schema operations and won't check for such conflicts.\n *\n * @param token Any token. If it does not include an `indent` value, the value will be stringified as if it were an implicit key.\n * @param value The string representation of the value, which will have its content properly indented.\n * @param context.afterKey In most cases, values after a key should have an additional level of indentation.\n * @param context.implicitKey Being within an implicit key may affect the resolved type of the token's value.\n * @param context.inFlow Being within a flow collection may affect the resolved type of the token's value.\n * @param context.type The preferred type of the scalar token. If undefined, the previous type of the `token` will be used, defaulting to `'PLAIN'`.\n */\nfunction setScalarValue(token, value, context = {}) {\n let { afterKey = false, implicitKey = false, inFlow = false, type } = context;\n let indent = 'indent' in token ? token.indent : null;\n if (afterKey && typeof indent === 'number')\n indent += 2;\n if (!type)\n switch (token.type) {\n case 'single-quoted-scalar':\n type = 'QUOTE_SINGLE';\n break;\n case 'double-quoted-scalar':\n type = 'QUOTE_DOUBLE';\n break;\n case 'block-scalar': {\n const header = token.props[0];\n if (header.type !== 'block-scalar-header')\n throw new Error('Invalid block scalar header');\n type = header.source[0] === '>' ? 'BLOCK_FOLDED' : 'BLOCK_LITERAL';\n break;\n }\n default:\n type = 'PLAIN';\n }\n const source = stringifyString.stringifyString({ type, value }, {\n implicitKey: implicitKey || indent === null,\n indent: indent !== null && indent > 0 ? ' '.repeat(indent) : '',\n inFlow,\n options: { blockQuote: true, lineWidth: -1 }\n });\n switch (source[0]) {\n case '|':\n case '>':\n setBlockScalarValue(token, source);\n break;\n case '\"':\n setFlowScalarValue(token, source, 'double-quoted-scalar');\n break;\n case \"'\":\n setFlowScalarValue(token, source, 'single-quoted-scalar');\n break;\n default:\n setFlowScalarValue(token, source, 'scalar');\n }\n}\nfunction setBlockScalarValue(token, source) {\n const he = source.indexOf('\\n');\n const head = source.substring(0, he);\n const body = source.substring(he + 1) + '\\n';\n if (token.type === 'block-scalar') {\n const header = token.props[0];\n if (header.type !== 'block-scalar-header')\n throw new Error('Invalid block scalar header');\n header.source = head;\n token.source = body;\n }\n else {\n const { offset } = token;\n const indent = 'indent' in token ? token.indent : -1;\n const props = [\n { type: 'block-scalar-header', offset, indent, source: head }\n ];\n if (!addEndtoBlockProps(props, 'end' in token ? token.end : undefined))\n props.push({ type: 'newline', offset: -1, indent, source: '\\n' });\n for (const key of Object.keys(token))\n if (key !== 'type' && key !== 'offset')\n delete token[key];\n Object.assign(token, { type: 'block-scalar', indent, props, source: body });\n }\n}\n/** @returns `true` if last token is a newline */\nfunction addEndtoBlockProps(props, end) {\n if (end)\n for (const st of end)\n switch (st.type) {\n case 'space':\n case 'comment':\n props.push(st);\n break;\n case 'newline':\n props.push(st);\n return true;\n }\n return false;\n}\nfunction setFlowScalarValue(token, source, type) {\n switch (token.type) {\n case 'scalar':\n case 'double-quoted-scalar':\n case 'single-quoted-scalar':\n token.type = type;\n token.source = source;\n break;\n case 'block-scalar': {\n const end = token.props.slice(1);\n let oa = source.length;\n if (token.props[0].type === 'block-scalar-header')\n oa -= token.props[0].source.length;\n for (const tok of end)\n tok.offset += oa;\n delete token.props;\n Object.assign(token, { type, source, end });\n break;\n }\n case 'block-map':\n case 'block-seq': {\n const offset = token.offset + source.length;\n const nl = { type: 'newline', offset, indent: token.indent, source: '\\n' };\n delete token.items;\n Object.assign(token, { type, source, end: [nl] });\n break;\n }\n default: {\n const indent = 'indent' in token ? token.indent : -1;\n const end = 'end' in token && Array.isArray(token.end)\n ? token.end.filter(st => st.type === 'space' ||\n st.type === 'comment' ||\n st.type === 'newline')\n : [];\n for (const key of Object.keys(token))\n if (key !== 'type' && key !== 'offset')\n delete token[key];\n Object.assign(token, { type, indent, source, end });\n }\n }\n}\n\nexports.createScalarToken = createScalarToken;\nexports.resolveAsScalar = resolveAsScalar;\nexports.setScalarValue = setScalarValue;\n","'use strict';\n\n/**\n * Stringify a CST document, token, or collection item\n *\n * Fair warning: This applies no validation whatsoever, and\n * simply concatenates the sources in their logical order.\n */\nconst stringify = (cst) => 'type' in cst ? stringifyToken(cst) : stringifyItem(cst);\nfunction stringifyToken(token) {\n switch (token.type) {\n case 'block-scalar': {\n let res = '';\n for (const tok of token.props)\n res += stringifyToken(tok);\n return res + token.source;\n }\n case 'block-map':\n case 'block-seq': {\n let res = '';\n for (const item of token.items)\n res += stringifyItem(item);\n return res;\n }\n case 'flow-collection': {\n let res = token.start.source;\n for (const item of token.items)\n res += stringifyItem(item);\n for (const st of token.end)\n res += st.source;\n return res;\n }\n case 'document': {\n let res = stringifyItem(token);\n if (token.end)\n for (const st of token.end)\n res += st.source;\n return res;\n }\n default: {\n let res = token.source;\n if ('end' in token && token.end)\n for (const st of token.end)\n res += st.source;\n return res;\n }\n }\n}\nfunction stringifyItem({ start, key, sep, value }) {\n let res = '';\n for (const st of start)\n res += st.source;\n if (key)\n res += stringifyToken(key);\n if (sep)\n for (const st of sep)\n res += st.source;\n if (value)\n res += stringifyToken(value);\n return res;\n}\n\nexports.stringify = stringify;\n","'use strict';\n\nconst BREAK = Symbol('break visit');\nconst SKIP = Symbol('skip children');\nconst REMOVE = Symbol('remove item');\n/**\n * Apply a visitor to a CST document or item.\n *\n * Walks through the tree (depth-first) starting from the root, calling a\n * `visitor` function with two arguments when entering each item:\n * - `item`: The current item, which included the following members:\n * - `start: SourceToken[]` – Source tokens before the key or value,\n * possibly including its anchor or tag.\n * - `key?: Token | null` – Set for pair values. May then be `null`, if\n * the key before the `:` separator is empty.\n * - `sep?: SourceToken[]` – Source tokens between the key and the value,\n * which should include the `:` map value indicator if `value` is set.\n * - `value?: Token` – The value of a sequence item, or of a map pair.\n * - `path`: The steps from the root to the current node, as an array of\n * `['key' | 'value', number]` tuples.\n *\n * The return value of the visitor may be used to control the traversal:\n * - `undefined` (default): Do nothing and continue\n * - `visit.SKIP`: Do not visit the children of this token, continue with\n * next sibling\n * - `visit.BREAK`: Terminate traversal completely\n * - `visit.REMOVE`: Remove the current item, then continue with the next one\n * - `number`: Set the index of the next step. This is useful especially if\n * the index of the current token has changed.\n * - `function`: Define the next visitor for this item. After the original\n * visitor is called on item entry, next visitors are called after handling\n * a non-empty `key` and when exiting the item.\n */\nfunction visit(cst, visitor) {\n if ('type' in cst && cst.type === 'document')\n cst = { start: cst.start, value: cst.value };\n _visit(Object.freeze([]), cst, visitor);\n}\n// Without the `as symbol` casts, TS declares these in the `visit`\n// namespace using `var`, but then complains about that because\n// `unique symbol` must be `const`.\n/** Terminate visit traversal completely */\nvisit.BREAK = BREAK;\n/** Do not visit the children of the current item */\nvisit.SKIP = SKIP;\n/** Remove the current item */\nvisit.REMOVE = REMOVE;\n/** Find the item at `path` from `cst` as the root */\nvisit.itemAtPath = (cst, path) => {\n let item = cst;\n for (const [field, index] of path) {\n const tok = item?.[field];\n if (tok && 'items' in tok) {\n item = tok.items[index];\n }\n else\n return undefined;\n }\n return item;\n};\n/**\n * Get the immediate parent collection of the item at `path` from `cst` as the root.\n *\n * Throws an error if the collection is not found, which should never happen if the item itself exists.\n */\nvisit.parentCollection = (cst, path) => {\n const parent = visit.itemAtPath(cst, path.slice(0, -1));\n const field = path[path.length - 1][0];\n const coll = parent?.[field];\n if (coll && 'items' in coll)\n return coll;\n throw new Error('Parent collection not found');\n};\nfunction _visit(path, item, visitor) {\n let ctrl = visitor(item, path);\n if (typeof ctrl === 'symbol')\n return ctrl;\n for (const field of ['key', 'value']) {\n const token = item[field];\n if (token && 'items' in token) {\n for (let i = 0; i < token.items.length; ++i) {\n const ci = _visit(Object.freeze(path.concat([[field, i]])), token.items[i], visitor);\n if (typeof ci === 'number')\n i = ci - 1;\n else if (ci === BREAK)\n return BREAK;\n else if (ci === REMOVE) {\n token.items.splice(i, 1);\n i -= 1;\n }\n }\n if (typeof ctrl === 'function' && field === 'key')\n ctrl = ctrl(item, path);\n }\n }\n return typeof ctrl === 'function' ? ctrl(item, path) : ctrl;\n}\n\nexports.visit = visit;\n","'use strict';\n\nvar cstScalar = require('./cst-scalar.js');\nvar cstStringify = require('./cst-stringify.js');\nvar cstVisit = require('./cst-visit.js');\n\n/** The byte order mark */\nconst BOM = '\\u{FEFF}';\n/** Start of doc-mode */\nconst DOCUMENT = '\\x02'; // C0: Start of Text\n/** Unexpected end of flow-mode */\nconst FLOW_END = '\\x18'; // C0: Cancel\n/** Next token is a scalar value */\nconst SCALAR = '\\x1f'; // C0: Unit Separator\n/** @returns `true` if `token` is a flow or block collection */\nconst isCollection = (token) => !!token && 'items' in token;\n/** @returns `true` if `token` is a flow or block scalar; not an alias */\nconst isScalar = (token) => !!token &&\n (token.type === 'scalar' ||\n token.type === 'single-quoted-scalar' ||\n token.type === 'double-quoted-scalar' ||\n token.type === 'block-scalar');\n/* istanbul ignore next */\n/** Get a printable representation of a lexer token */\nfunction prettyToken(token) {\n switch (token) {\n case BOM:\n return '';\n case DOCUMENT:\n return '';\n case FLOW_END:\n return '';\n case SCALAR:\n return '';\n default:\n return JSON.stringify(token);\n }\n}\n/** Identify the type of a lexer token. May return `null` for unknown tokens. */\nfunction tokenType(source) {\n switch (source) {\n case BOM:\n return 'byte-order-mark';\n case DOCUMENT:\n return 'doc-mode';\n case FLOW_END:\n return 'flow-error-end';\n case SCALAR:\n return 'scalar';\n case '---':\n return 'doc-start';\n case '...':\n return 'doc-end';\n case '':\n case '\\n':\n case '\\r\\n':\n return 'newline';\n case '-':\n return 'seq-item-ind';\n case '?':\n return 'explicit-key-ind';\n case ':':\n return 'map-value-ind';\n case '{':\n return 'flow-map-start';\n case '}':\n return 'flow-map-end';\n case '[':\n return 'flow-seq-start';\n case ']':\n return 'flow-seq-end';\n case ',':\n return 'comma';\n }\n switch (source[0]) {\n case ' ':\n case '\\t':\n return 'space';\n case '#':\n return 'comment';\n case '%':\n return 'directive-line';\n case '*':\n return 'alias';\n case '&':\n return 'anchor';\n case '!':\n return 'tag';\n case \"'\":\n return 'single-quoted-scalar';\n case '\"':\n return 'double-quoted-scalar';\n case '|':\n case '>':\n return 'block-scalar-header';\n }\n return null;\n}\n\nexports.createScalarToken = cstScalar.createScalarToken;\nexports.resolveAsScalar = cstScalar.resolveAsScalar;\nexports.setScalarValue = cstScalar.setScalarValue;\nexports.stringify = cstStringify.stringify;\nexports.visit = cstVisit.visit;\nexports.BOM = BOM;\nexports.DOCUMENT = DOCUMENT;\nexports.FLOW_END = FLOW_END;\nexports.SCALAR = SCALAR;\nexports.isCollection = isCollection;\nexports.isScalar = isScalar;\nexports.prettyToken = prettyToken;\nexports.tokenType = tokenType;\n","'use strict';\n\nvar cst = require('./cst.js');\n\n/*\nSTART -> stream\n\nstream\n directive -> line-end -> stream\n indent + line-end -> stream\n [else] -> line-start\n\nline-end\n comment -> line-end\n newline -> .\n input-end -> END\n\nline-start\n doc-start -> doc\n doc-end -> stream\n [else] -> indent -> block-start\n\nblock-start\n seq-item-start -> block-start\n explicit-key-start -> block-start\n map-value-start -> block-start\n [else] -> doc\n\ndoc\n line-end -> line-start\n spaces -> doc\n anchor -> doc\n tag -> doc\n flow-start -> flow -> doc\n flow-end -> error -> doc\n seq-item-start -> error -> doc\n explicit-key-start -> error -> doc\n map-value-start -> doc\n alias -> doc\n quote-start -> quoted-scalar -> doc\n block-scalar-header -> line-end -> block-scalar(min) -> line-start\n [else] -> plain-scalar(false, min) -> doc\n\nflow\n line-end -> flow\n spaces -> flow\n anchor -> flow\n tag -> flow\n flow-start -> flow -> flow\n flow-end -> .\n seq-item-start -> error -> flow\n explicit-key-start -> flow\n map-value-start -> flow\n alias -> flow\n quote-start -> quoted-scalar -> flow\n comma -> flow\n [else] -> plain-scalar(true, 0) -> flow\n\nquoted-scalar\n quote-end -> .\n [else] -> quoted-scalar\n\nblock-scalar(min)\n newline + peek(indent < min) -> .\n [else] -> block-scalar(min)\n\nplain-scalar(is-flow, min)\n scalar-end(is-flow) -> .\n peek(newline + (indent < min)) -> .\n [else] -> plain-scalar(min)\n*/\nfunction isEmpty(ch) {\n switch (ch) {\n case undefined:\n case ' ':\n case '\\n':\n case '\\r':\n case '\\t':\n return true;\n default:\n return false;\n }\n}\nconst hexDigits = new Set('0123456789ABCDEFabcdef');\nconst tagChars = new Set(\"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-#;/?:@&=+$_.!~*'()\");\nconst flowIndicatorChars = new Set(',[]{}');\nconst invalidAnchorChars = new Set(' ,[]{}\\n\\r\\t');\nconst isNotAnchorChar = (ch) => !ch || invalidAnchorChars.has(ch);\n/**\n * Splits an input string into lexical tokens, i.e. smaller strings that are\n * easily identifiable by `tokens.tokenType()`.\n *\n * Lexing starts always in a \"stream\" context. Incomplete input may be buffered\n * until a complete token can be emitted.\n *\n * In addition to slices of the original input, the following control characters\n * may also be emitted:\n *\n * - `\\x02` (Start of Text): A document starts with the next token\n * - `\\x18` (Cancel): Unexpected end of flow-mode (indicates an error)\n * - `\\x1f` (Unit Separator): Next token is a scalar value\n * - `\\u{FEFF}` (Byte order mark): Emitted separately outside documents\n */\nclass Lexer {\n constructor() {\n /**\n * Flag indicating whether the end of the current buffer marks the end of\n * all input\n */\n this.atEnd = false;\n /**\n * Explicit indent set in block scalar header, as an offset from the current\n * minimum indent, so e.g. set to 1 from a header `|2+`. Set to -1 if not\n * explicitly set.\n */\n this.blockScalarIndent = -1;\n /**\n * Block scalars that include a + (keep) chomping indicator in their header\n * include trailing empty lines, which are otherwise excluded from the\n * scalar's contents.\n */\n this.blockScalarKeep = false;\n /** Current input */\n this.buffer = '';\n /**\n * Flag noting whether the map value indicator : can immediately follow this\n * node within a flow context.\n */\n this.flowKey = false;\n /** Count of surrounding flow collection levels. */\n this.flowLevel = 0;\n /**\n * Minimum level of indentation required for next lines to be parsed as a\n * part of the current scalar value.\n */\n this.indentNext = 0;\n /** Indentation level of the current line. */\n this.indentValue = 0;\n /** Position of the next \\n character. */\n this.lineEndPos = null;\n /** Stores the state of the lexer if reaching the end of incpomplete input */\n this.next = null;\n /** A pointer to `buffer`; the current position of the lexer. */\n this.pos = 0;\n }\n /**\n * Generate YAML tokens from the `source` string. If `incomplete`,\n * a part of the last line may be left as a buffer for the next call.\n *\n * @returns A generator of lexical tokens\n */\n *lex(source, incomplete = false) {\n if (source) {\n if (typeof source !== 'string')\n throw TypeError('source is not a string');\n this.buffer = this.buffer ? this.buffer + source : source;\n this.lineEndPos = null;\n }\n this.atEnd = !incomplete;\n let next = this.next ?? 'stream';\n while (next && (incomplete || this.hasChars(1)))\n next = yield* this.parseNext(next);\n }\n atLineEnd() {\n let i = this.pos;\n let ch = this.buffer[i];\n while (ch === ' ' || ch === '\\t')\n ch = this.buffer[++i];\n if (!ch || ch === '#' || ch === '\\n')\n return true;\n if (ch === '\\r')\n return this.buffer[i + 1] === '\\n';\n return false;\n }\n charAt(n) {\n return this.buffer[this.pos + n];\n }\n continueScalar(offset) {\n let ch = this.buffer[offset];\n if (this.indentNext > 0) {\n let indent = 0;\n while (ch === ' ')\n ch = this.buffer[++indent + offset];\n if (ch === '\\r') {\n const next = this.buffer[indent + offset + 1];\n if (next === '\\n' || (!next && !this.atEnd))\n return offset + indent + 1;\n }\n return ch === '\\n' || indent >= this.indentNext || (!ch && !this.atEnd)\n ? offset + indent\n : -1;\n }\n if (ch === '-' || ch === '.') {\n const dt = this.buffer.substr(offset, 3);\n if ((dt === '---' || dt === '...') && isEmpty(this.buffer[offset + 3]))\n return -1;\n }\n return offset;\n }\n getLine() {\n let end = this.lineEndPos;\n if (typeof end !== 'number' || (end !== -1 && end < this.pos)) {\n end = this.buffer.indexOf('\\n', this.pos);\n this.lineEndPos = end;\n }\n if (end === -1)\n return this.atEnd ? this.buffer.substring(this.pos) : null;\n if (this.buffer[end - 1] === '\\r')\n end -= 1;\n return this.buffer.substring(this.pos, end);\n }\n hasChars(n) {\n return this.pos + n <= this.buffer.length;\n }\n setNext(state) {\n this.buffer = this.buffer.substring(this.pos);\n this.pos = 0;\n this.lineEndPos = null;\n this.next = state;\n return null;\n }\n peek(n) {\n return this.buffer.substr(this.pos, n);\n }\n *parseNext(next) {\n switch (next) {\n case 'stream':\n return yield* this.parseStream();\n case 'line-start':\n return yield* this.parseLineStart();\n case 'block-start':\n return yield* this.parseBlockStart();\n case 'doc':\n return yield* this.parseDocument();\n case 'flow':\n return yield* this.parseFlowCollection();\n case 'quoted-scalar':\n return yield* this.parseQuotedScalar();\n case 'block-scalar':\n return yield* this.parseBlockScalar();\n case 'plain-scalar':\n return yield* this.parsePlainScalar();\n }\n }\n *parseStream() {\n let line = this.getLine();\n if (line === null)\n return this.setNext('stream');\n if (line[0] === cst.BOM) {\n yield* this.pushCount(1);\n line = line.substring(1);\n }\n if (line[0] === '%') {\n let dirEnd = line.length;\n let cs = line.indexOf('#');\n while (cs !== -1) {\n const ch = line[cs - 1];\n if (ch === ' ' || ch === '\\t') {\n dirEnd = cs - 1;\n break;\n }\n else {\n cs = line.indexOf('#', cs + 1);\n }\n }\n while (true) {\n const ch = line[dirEnd - 1];\n if (ch === ' ' || ch === '\\t')\n dirEnd -= 1;\n else\n break;\n }\n const n = (yield* this.pushCount(dirEnd)) + (yield* this.pushSpaces(true));\n yield* this.pushCount(line.length - n); // possible comment\n this.pushNewline();\n return 'stream';\n }\n if (this.atLineEnd()) {\n const sp = yield* this.pushSpaces(true);\n yield* this.pushCount(line.length - sp);\n yield* this.pushNewline();\n return 'stream';\n }\n yield cst.DOCUMENT;\n return yield* this.parseLineStart();\n }\n *parseLineStart() {\n const ch = this.charAt(0);\n if (!ch && !this.atEnd)\n return this.setNext('line-start');\n if (ch === '-' || ch === '.') {\n if (!this.atEnd && !this.hasChars(4))\n return this.setNext('line-start');\n const s = this.peek(3);\n if ((s === '---' || s === '...') && isEmpty(this.charAt(3))) {\n yield* this.pushCount(3);\n this.indentValue = 0;\n this.indentNext = 0;\n return s === '---' ? 'doc' : 'stream';\n }\n }\n this.indentValue = yield* this.pushSpaces(false);\n if (this.indentNext > this.indentValue && !isEmpty(this.charAt(1)))\n this.indentNext = this.indentValue;\n return yield* this.parseBlockStart();\n }\n *parseBlockStart() {\n const [ch0, ch1] = this.peek(2);\n if (!ch1 && !this.atEnd)\n return this.setNext('block-start');\n if ((ch0 === '-' || ch0 === '?' || ch0 === ':') && isEmpty(ch1)) {\n const n = (yield* this.pushCount(1)) + (yield* this.pushSpaces(true));\n this.indentNext = this.indentValue + 1;\n this.indentValue += n;\n return yield* this.parseBlockStart();\n }\n return 'doc';\n }\n *parseDocument() {\n yield* this.pushSpaces(true);\n const line = this.getLine();\n if (line === null)\n return this.setNext('doc');\n let n = yield* this.pushIndicators();\n switch (line[n]) {\n case '#':\n yield* this.pushCount(line.length - n);\n // fallthrough\n case undefined:\n yield* this.pushNewline();\n return yield* this.parseLineStart();\n case '{':\n case '[':\n yield* this.pushCount(1);\n this.flowKey = false;\n this.flowLevel = 1;\n return 'flow';\n case '}':\n case ']':\n // this is an error\n yield* this.pushCount(1);\n return 'doc';\n case '*':\n yield* this.pushUntil(isNotAnchorChar);\n return 'doc';\n case '\"':\n case \"'\":\n return yield* this.parseQuotedScalar();\n case '|':\n case '>':\n n += yield* this.parseBlockScalarHeader();\n n += yield* this.pushSpaces(true);\n yield* this.pushCount(line.length - n);\n yield* this.pushNewline();\n return yield* this.parseBlockScalar();\n default:\n return yield* this.parsePlainScalar();\n }\n }\n *parseFlowCollection() {\n let nl, sp;\n let indent = -1;\n do {\n nl = yield* this.pushNewline();\n if (nl > 0) {\n sp = yield* this.pushSpaces(false);\n this.indentValue = indent = sp;\n }\n else {\n sp = 0;\n }\n sp += yield* this.pushSpaces(true);\n } while (nl + sp > 0);\n const line = this.getLine();\n if (line === null)\n return this.setNext('flow');\n if ((indent !== -1 && indent < this.indentNext && line[0] !== '#') ||\n (indent === 0 &&\n (line.startsWith('---') || line.startsWith('...')) &&\n isEmpty(line[3]))) {\n // Allowing for the terminal ] or } at the same (rather than greater)\n // indent level as the initial [ or { is technically invalid, but\n // failing here would be surprising to users.\n const atFlowEndMarker = indent === this.indentNext - 1 &&\n this.flowLevel === 1 &&\n (line[0] === ']' || line[0] === '}');\n if (!atFlowEndMarker) {\n // this is an error\n this.flowLevel = 0;\n yield cst.FLOW_END;\n return yield* this.parseLineStart();\n }\n }\n let n = 0;\n while (line[n] === ',') {\n n += yield* this.pushCount(1);\n n += yield* this.pushSpaces(true);\n this.flowKey = false;\n }\n n += yield* this.pushIndicators();\n switch (line[n]) {\n case undefined:\n return 'flow';\n case '#':\n yield* this.pushCount(line.length - n);\n return 'flow';\n case '{':\n case '[':\n yield* this.pushCount(1);\n this.flowKey = false;\n this.flowLevel += 1;\n return 'flow';\n case '}':\n case ']':\n yield* this.pushCount(1);\n this.flowKey = true;\n this.flowLevel -= 1;\n return this.flowLevel ? 'flow' : 'doc';\n case '*':\n yield* this.pushUntil(isNotAnchorChar);\n return 'flow';\n case '\"':\n case \"'\":\n this.flowKey = true;\n return yield* this.parseQuotedScalar();\n case ':': {\n const next = this.charAt(1);\n if (this.flowKey || isEmpty(next) || next === ',') {\n this.flowKey = false;\n yield* this.pushCount(1);\n yield* this.pushSpaces(true);\n return 'flow';\n }\n }\n // fallthrough\n default:\n this.flowKey = false;\n return yield* this.parsePlainScalar();\n }\n }\n *parseQuotedScalar() {\n const quote = this.charAt(0);\n let end = this.buffer.indexOf(quote, this.pos + 1);\n if (quote === \"'\") {\n while (end !== -1 && this.buffer[end + 1] === \"'\")\n end = this.buffer.indexOf(\"'\", end + 2);\n }\n else {\n // double-quote\n while (end !== -1) {\n let n = 0;\n while (this.buffer[end - 1 - n] === '\\\\')\n n += 1;\n if (n % 2 === 0)\n break;\n end = this.buffer.indexOf('\"', end + 1);\n }\n }\n // Only looking for newlines within the quotes\n const qb = this.buffer.substring(0, end);\n let nl = qb.indexOf('\\n', this.pos);\n if (nl !== -1) {\n while (nl !== -1) {\n const cs = this.continueScalar(nl + 1);\n if (cs === -1)\n break;\n nl = qb.indexOf('\\n', cs);\n }\n if (nl !== -1) {\n // this is an error caused by an unexpected unindent\n end = nl - (qb[nl - 1] === '\\r' ? 2 : 1);\n }\n }\n if (end === -1) {\n if (!this.atEnd)\n return this.setNext('quoted-scalar');\n end = this.buffer.length;\n }\n yield* this.pushToIndex(end + 1, false);\n return this.flowLevel ? 'flow' : 'doc';\n }\n *parseBlockScalarHeader() {\n this.blockScalarIndent = -1;\n this.blockScalarKeep = false;\n let i = this.pos;\n while (true) {\n const ch = this.buffer[++i];\n if (ch === '+')\n this.blockScalarKeep = true;\n else if (ch > '0' && ch <= '9')\n this.blockScalarIndent = Number(ch) - 1;\n else if (ch !== '-')\n break;\n }\n return yield* this.pushUntil(ch => isEmpty(ch) || ch === '#');\n }\n *parseBlockScalar() {\n let nl = this.pos - 1; // may be -1 if this.pos === 0\n let indent = 0;\n let ch;\n loop: for (let i = this.pos; (ch = this.buffer[i]); ++i) {\n switch (ch) {\n case ' ':\n indent += 1;\n break;\n case '\\n':\n nl = i;\n indent = 0;\n break;\n case '\\r': {\n const next = this.buffer[i + 1];\n if (!next && !this.atEnd)\n return this.setNext('block-scalar');\n if (next === '\\n')\n break;\n } // fallthrough\n default:\n break loop;\n }\n }\n if (!ch && !this.atEnd)\n return this.setNext('block-scalar');\n if (indent >= this.indentNext) {\n if (this.blockScalarIndent === -1)\n this.indentNext = indent;\n else {\n this.indentNext =\n this.blockScalarIndent + (this.indentNext === 0 ? 1 : this.indentNext);\n }\n do {\n const cs = this.continueScalar(nl + 1);\n if (cs === -1)\n break;\n nl = this.buffer.indexOf('\\n', cs);\n } while (nl !== -1);\n if (nl === -1) {\n if (!this.atEnd)\n return this.setNext('block-scalar');\n nl = this.buffer.length;\n }\n }\n // Trailing insufficiently indented tabs are invalid.\n // To catch that during parsing, we include them in the block scalar value.\n let i = nl + 1;\n ch = this.buffer[i];\n while (ch === ' ')\n ch = this.buffer[++i];\n if (ch === '\\t') {\n while (ch === '\\t' || ch === ' ' || ch === '\\r' || ch === '\\n')\n ch = this.buffer[++i];\n nl = i - 1;\n }\n else if (!this.blockScalarKeep) {\n do {\n let i = nl - 1;\n let ch = this.buffer[i];\n if (ch === '\\r')\n ch = this.buffer[--i];\n const lastChar = i; // Drop the line if last char not more indented\n while (ch === ' ')\n ch = this.buffer[--i];\n if (ch === '\\n' && i >= this.pos && i + 1 + indent > lastChar)\n nl = i;\n else\n break;\n } while (true);\n }\n yield cst.SCALAR;\n yield* this.pushToIndex(nl + 1, true);\n return yield* this.parseLineStart();\n }\n *parsePlainScalar() {\n const inFlow = this.flowLevel > 0;\n let end = this.pos - 1;\n let i = this.pos - 1;\n let ch;\n while ((ch = this.buffer[++i])) {\n if (ch === ':') {\n const next = this.buffer[i + 1];\n if (isEmpty(next) || (inFlow && flowIndicatorChars.has(next)))\n break;\n end = i;\n }\n else if (isEmpty(ch)) {\n let next = this.buffer[i + 1];\n if (ch === '\\r') {\n if (next === '\\n') {\n i += 1;\n ch = '\\n';\n next = this.buffer[i + 1];\n }\n else\n end = i;\n }\n if (next === '#' || (inFlow && flowIndicatorChars.has(next)))\n break;\n if (ch === '\\n') {\n const cs = this.continueScalar(i + 1);\n if (cs === -1)\n break;\n i = Math.max(i, cs - 2); // to advance, but still account for ' #'\n }\n }\n else {\n if (inFlow && flowIndicatorChars.has(ch))\n break;\n end = i;\n }\n }\n if (!ch && !this.atEnd)\n return this.setNext('plain-scalar');\n yield cst.SCALAR;\n yield* this.pushToIndex(end + 1, true);\n return inFlow ? 'flow' : 'doc';\n }\n *pushCount(n) {\n if (n > 0) {\n yield this.buffer.substr(this.pos, n);\n this.pos += n;\n return n;\n }\n return 0;\n }\n *pushToIndex(i, allowEmpty) {\n const s = this.buffer.slice(this.pos, i);\n if (s) {\n yield s;\n this.pos += s.length;\n return s.length;\n }\n else if (allowEmpty)\n yield '';\n return 0;\n }\n *pushIndicators() {\n switch (this.charAt(0)) {\n case '!':\n return ((yield* this.pushTag()) +\n (yield* this.pushSpaces(true)) +\n (yield* this.pushIndicators()));\n case '&':\n return ((yield* this.pushUntil(isNotAnchorChar)) +\n (yield* this.pushSpaces(true)) +\n (yield* this.pushIndicators()));\n case '-': // this is an error\n case '?': // this is an error outside flow collections\n case ':': {\n const inFlow = this.flowLevel > 0;\n const ch1 = this.charAt(1);\n if (isEmpty(ch1) || (inFlow && flowIndicatorChars.has(ch1))) {\n if (!inFlow)\n this.indentNext = this.indentValue + 1;\n else if (this.flowKey)\n this.flowKey = false;\n return ((yield* this.pushCount(1)) +\n (yield* this.pushSpaces(true)) +\n (yield* this.pushIndicators()));\n }\n }\n }\n return 0;\n }\n *pushTag() {\n if (this.charAt(1) === '<') {\n let i = this.pos + 2;\n let ch = this.buffer[i];\n while (!isEmpty(ch) && ch !== '>')\n ch = this.buffer[++i];\n return yield* this.pushToIndex(ch === '>' ? i + 1 : i, false);\n }\n else {\n let i = this.pos + 1;\n let ch = this.buffer[i];\n while (ch) {\n if (tagChars.has(ch))\n ch = this.buffer[++i];\n else if (ch === '%' &&\n hexDigits.has(this.buffer[i + 1]) &&\n hexDigits.has(this.buffer[i + 2])) {\n ch = this.buffer[(i += 3)];\n }\n else\n break;\n }\n return yield* this.pushToIndex(i, false);\n }\n }\n *pushNewline() {\n const ch = this.buffer[this.pos];\n if (ch === '\\n')\n return yield* this.pushCount(1);\n else if (ch === '\\r' && this.charAt(1) === '\\n')\n return yield* this.pushCount(2);\n else\n return 0;\n }\n *pushSpaces(allowTabs) {\n let i = this.pos - 1;\n let ch;\n do {\n ch = this.buffer[++i];\n } while (ch === ' ' || (allowTabs && ch === '\\t'));\n const n = i - this.pos;\n if (n > 0) {\n yield this.buffer.substr(this.pos, n);\n this.pos = i;\n }\n return n;\n }\n *pushUntil(test) {\n let i = this.pos;\n let ch = this.buffer[i];\n while (!test(ch))\n ch = this.buffer[++i];\n return yield* this.pushToIndex(i, false);\n }\n}\n\nexports.Lexer = Lexer;\n","'use strict';\n\n/**\n * Tracks newlines during parsing in order to provide an efficient API for\n * determining the one-indexed `{ line, col }` position for any offset\n * within the input.\n */\nclass LineCounter {\n constructor() {\n this.lineStarts = [];\n /**\n * Should be called in ascending order. Otherwise, call\n * `lineCounter.lineStarts.sort()` before calling `linePos()`.\n */\n this.addNewLine = (offset) => this.lineStarts.push(offset);\n /**\n * Performs a binary search and returns the 1-indexed { line, col }\n * position of `offset`. If `line === 0`, `addNewLine` has never been\n * called or `offset` is before the first known newline.\n */\n this.linePos = (offset) => {\n let low = 0;\n let high = this.lineStarts.length;\n while (low < high) {\n const mid = (low + high) >> 1; // Math.floor((low + high) / 2)\n if (this.lineStarts[mid] < offset)\n low = mid + 1;\n else\n high = mid;\n }\n if (this.lineStarts[low] === offset)\n return { line: low + 1, col: 1 };\n if (low === 0)\n return { line: 0, col: offset };\n const start = this.lineStarts[low - 1];\n return { line: low, col: offset - start + 1 };\n };\n }\n}\n\nexports.LineCounter = LineCounter;\n","'use strict';\n\nvar node_process = require('process');\nvar cst = require('./cst.js');\nvar lexer = require('./lexer.js');\n\nfunction includesToken(list, type) {\n for (let i = 0; i < list.length; ++i)\n if (list[i].type === type)\n return true;\n return false;\n}\nfunction findNonEmptyIndex(list) {\n for (let i = 0; i < list.length; ++i) {\n switch (list[i].type) {\n case 'space':\n case 'comment':\n case 'newline':\n break;\n default:\n return i;\n }\n }\n return -1;\n}\nfunction isFlowToken(token) {\n switch (token?.type) {\n case 'alias':\n case 'scalar':\n case 'single-quoted-scalar':\n case 'double-quoted-scalar':\n case 'flow-collection':\n return true;\n default:\n return false;\n }\n}\nfunction getPrevProps(parent) {\n switch (parent.type) {\n case 'document':\n return parent.start;\n case 'block-map': {\n const it = parent.items[parent.items.length - 1];\n return it.sep ?? it.start;\n }\n case 'block-seq':\n return parent.items[parent.items.length - 1].start;\n /* istanbul ignore next should not happen */\n default:\n return [];\n }\n}\n/** Note: May modify input array */\nfunction getFirstKeyStartProps(prev) {\n if (prev.length === 0)\n return [];\n let i = prev.length;\n loop: while (--i >= 0) {\n switch (prev[i].type) {\n case 'doc-start':\n case 'explicit-key-ind':\n case 'map-value-ind':\n case 'seq-item-ind':\n case 'newline':\n break loop;\n }\n }\n while (prev[++i]?.type === 'space') {\n /* loop */\n }\n return prev.splice(i, prev.length);\n}\nfunction fixFlowSeqItems(fc) {\n if (fc.start.type === 'flow-seq-start') {\n for (const it of fc.items) {\n if (it.sep &&\n !it.value &&\n !includesToken(it.start, 'explicit-key-ind') &&\n !includesToken(it.sep, 'map-value-ind')) {\n if (it.key)\n it.value = it.key;\n delete it.key;\n if (isFlowToken(it.value)) {\n if (it.value.end)\n Array.prototype.push.apply(it.value.end, it.sep);\n else\n it.value.end = it.sep;\n }\n else\n Array.prototype.push.apply(it.start, it.sep);\n delete it.sep;\n }\n }\n }\n}\n/**\n * A YAML concrete syntax tree (CST) parser\n *\n * ```ts\n * const src: string = ...\n * for (const token of new Parser().parse(src)) {\n * // token: Token\n * }\n * ```\n *\n * To use the parser with a user-provided lexer:\n *\n * ```ts\n * function* parse(source: string, lexer: Lexer) {\n * const parser = new Parser()\n * for (const lexeme of lexer.lex(source))\n * yield* parser.next(lexeme)\n * yield* parser.end()\n * }\n *\n * const src: string = ...\n * const lexer = new Lexer()\n * for (const token of parse(src, lexer)) {\n * // token: Token\n * }\n * ```\n */\nclass Parser {\n /**\n * @param onNewLine - If defined, called separately with the start position of\n * each new line (in `parse()`, including the start of input).\n */\n constructor(onNewLine) {\n /** If true, space and sequence indicators count as indentation */\n this.atNewLine = true;\n /** If true, next token is a scalar value */\n this.atScalar = false;\n /** Current indentation level */\n this.indent = 0;\n /** Current offset since the start of parsing */\n this.offset = 0;\n /** On the same line with a block map key */\n this.onKeyLine = false;\n /** Top indicates the node that's currently being built */\n this.stack = [];\n /** The source of the current token, set in parse() */\n this.source = '';\n /** The type of the current token, set in parse() */\n this.type = '';\n // Must be defined after `next()`\n this.lexer = new lexer.Lexer();\n this.onNewLine = onNewLine;\n }\n /**\n * Parse `source` as a YAML stream.\n * If `incomplete`, a part of the last line may be left as a buffer for the next call.\n *\n * Errors are not thrown, but yielded as `{ type: 'error', message }` tokens.\n *\n * @returns A generator of tokens representing each directive, document, and other structure.\n */\n *parse(source, incomplete = false) {\n if (this.onNewLine && this.offset === 0)\n this.onNewLine(0);\n for (const lexeme of this.lexer.lex(source, incomplete))\n yield* this.next(lexeme);\n if (!incomplete)\n yield* this.end();\n }\n /**\n * Advance the parser by the `source` of one lexical token.\n */\n *next(source) {\n this.source = source;\n if (node_process.env.LOG_TOKENS)\n console.log('|', cst.prettyToken(source));\n if (this.atScalar) {\n this.atScalar = false;\n yield* this.step();\n this.offset += source.length;\n return;\n }\n const type = cst.tokenType(source);\n if (!type) {\n const message = `Not a YAML token: ${source}`;\n yield* this.pop({ type: 'error', offset: this.offset, message, source });\n this.offset += source.length;\n }\n else if (type === 'scalar') {\n this.atNewLine = false;\n this.atScalar = true;\n this.type = 'scalar';\n }\n else {\n this.type = type;\n yield* this.step();\n switch (type) {\n case 'newline':\n this.atNewLine = true;\n this.indent = 0;\n if (this.onNewLine)\n this.onNewLine(this.offset + source.length);\n break;\n case 'space':\n if (this.atNewLine && source[0] === ' ')\n this.indent += source.length;\n break;\n case 'explicit-key-ind':\n case 'map-value-ind':\n case 'seq-item-ind':\n if (this.atNewLine)\n this.indent += source.length;\n break;\n case 'doc-mode':\n case 'flow-error-end':\n return;\n default:\n this.atNewLine = false;\n }\n this.offset += source.length;\n }\n }\n /** Call at end of input to push out any remaining constructions */\n *end() {\n while (this.stack.length > 0)\n yield* this.pop();\n }\n get sourceToken() {\n const st = {\n type: this.type,\n offset: this.offset,\n indent: this.indent,\n source: this.source\n };\n return st;\n }\n *step() {\n const top = this.peek(1);\n if (this.type === 'doc-end' && top?.type !== 'doc-end') {\n while (this.stack.length > 0)\n yield* this.pop();\n this.stack.push({\n type: 'doc-end',\n offset: this.offset,\n source: this.source\n });\n return;\n }\n if (!top)\n return yield* this.stream();\n switch (top.type) {\n case 'document':\n return yield* this.document(top);\n case 'alias':\n case 'scalar':\n case 'single-quoted-scalar':\n case 'double-quoted-scalar':\n return yield* this.scalar(top);\n case 'block-scalar':\n return yield* this.blockScalar(top);\n case 'block-map':\n return yield* this.blockMap(top);\n case 'block-seq':\n return yield* this.blockSequence(top);\n case 'flow-collection':\n return yield* this.flowCollection(top);\n case 'doc-end':\n return yield* this.documentEnd(top);\n }\n /* istanbul ignore next should not happen */\n yield* this.pop();\n }\n peek(n) {\n return this.stack[this.stack.length - n];\n }\n *pop(error) {\n const token = error ?? this.stack.pop();\n /* istanbul ignore if should not happen */\n if (!token) {\n const message = 'Tried to pop an empty stack';\n yield { type: 'error', offset: this.offset, source: '', message };\n }\n else if (this.stack.length === 0) {\n yield token;\n }\n else {\n const top = this.peek(1);\n if (token.type === 'block-scalar') {\n // Block scalars use their parent rather than header indent\n token.indent = 'indent' in top ? top.indent : 0;\n }\n else if (token.type === 'flow-collection' && top.type === 'document') {\n // Ignore all indent for top-level flow collections\n token.indent = 0;\n }\n if (token.type === 'flow-collection')\n fixFlowSeqItems(token);\n switch (top.type) {\n case 'document':\n top.value = token;\n break;\n case 'block-scalar':\n top.props.push(token); // error\n break;\n case 'block-map': {\n const it = top.items[top.items.length - 1];\n if (it.value) {\n top.items.push({ start: [], key: token, sep: [] });\n this.onKeyLine = true;\n return;\n }\n else if (it.sep) {\n it.value = token;\n }\n else {\n Object.assign(it, { key: token, sep: [] });\n this.onKeyLine = !it.explicitKey;\n return;\n }\n break;\n }\n case 'block-seq': {\n const it = top.items[top.items.length - 1];\n if (it.value)\n top.items.push({ start: [], value: token });\n else\n it.value = token;\n break;\n }\n case 'flow-collection': {\n const it = top.items[top.items.length - 1];\n if (!it || it.value)\n top.items.push({ start: [], key: token, sep: [] });\n else if (it.sep)\n it.value = token;\n else\n Object.assign(it, { key: token, sep: [] });\n return;\n }\n /* istanbul ignore next should not happen */\n default:\n yield* this.pop();\n yield* this.pop(token);\n }\n if ((top.type === 'document' ||\n top.type === 'block-map' ||\n top.type === 'block-seq') &&\n (token.type === 'block-map' || token.type === 'block-seq')) {\n const last = token.items[token.items.length - 1];\n if (last &&\n !last.sep &&\n !last.value &&\n last.start.length > 0 &&\n findNonEmptyIndex(last.start) === -1 &&\n (token.indent === 0 ||\n last.start.every(st => st.type !== 'comment' || st.indent < token.indent))) {\n if (top.type === 'document')\n top.end = last.start;\n else\n top.items.push({ start: last.start });\n token.items.splice(-1, 1);\n }\n }\n }\n }\n *stream() {\n switch (this.type) {\n case 'directive-line':\n yield { type: 'directive', offset: this.offset, source: this.source };\n return;\n case 'byte-order-mark':\n case 'space':\n case 'comment':\n case 'newline':\n yield this.sourceToken;\n return;\n case 'doc-mode':\n case 'doc-start': {\n const doc = {\n type: 'document',\n offset: this.offset,\n start: []\n };\n if (this.type === 'doc-start')\n doc.start.push(this.sourceToken);\n this.stack.push(doc);\n return;\n }\n }\n yield {\n type: 'error',\n offset: this.offset,\n message: `Unexpected ${this.type} token in YAML stream`,\n source: this.source\n };\n }\n *document(doc) {\n if (doc.value)\n return yield* this.lineEnd(doc);\n switch (this.type) {\n case 'doc-start': {\n if (findNonEmptyIndex(doc.start) !== -1) {\n yield* this.pop();\n yield* this.step();\n }\n else\n doc.start.push(this.sourceToken);\n return;\n }\n case 'anchor':\n case 'tag':\n case 'space':\n case 'comment':\n case 'newline':\n doc.start.push(this.sourceToken);\n return;\n }\n const bv = this.startBlockValue(doc);\n if (bv)\n this.stack.push(bv);\n else {\n yield {\n type: 'error',\n offset: this.offset,\n message: `Unexpected ${this.type} token in YAML document`,\n source: this.source\n };\n }\n }\n *scalar(scalar) {\n if (this.type === 'map-value-ind') {\n const prev = getPrevProps(this.peek(2));\n const start = getFirstKeyStartProps(prev);\n let sep;\n if (scalar.end) {\n sep = scalar.end;\n sep.push(this.sourceToken);\n delete scalar.end;\n }\n else\n sep = [this.sourceToken];\n const map = {\n type: 'block-map',\n offset: scalar.offset,\n indent: scalar.indent,\n items: [{ start, key: scalar, sep }]\n };\n this.onKeyLine = true;\n this.stack[this.stack.length - 1] = map;\n }\n else\n yield* this.lineEnd(scalar);\n }\n *blockScalar(scalar) {\n switch (this.type) {\n case 'space':\n case 'comment':\n case 'newline':\n scalar.props.push(this.sourceToken);\n return;\n case 'scalar':\n scalar.source = this.source;\n // block-scalar source includes trailing newline\n this.atNewLine = true;\n this.indent = 0;\n if (this.onNewLine) {\n let nl = this.source.indexOf('\\n') + 1;\n while (nl !== 0) {\n this.onNewLine(this.offset + nl);\n nl = this.source.indexOf('\\n', nl) + 1;\n }\n }\n yield* this.pop();\n break;\n /* istanbul ignore next should not happen */\n default:\n yield* this.pop();\n yield* this.step();\n }\n }\n *blockMap(map) {\n const it = map.items[map.items.length - 1];\n // it.sep is true-ish if pair already has key or : separator\n switch (this.type) {\n case 'newline':\n this.onKeyLine = false;\n if (it.value) {\n const end = 'end' in it.value ? it.value.end : undefined;\n const last = Array.isArray(end) ? end[end.length - 1] : undefined;\n if (last?.type === 'comment')\n end?.push(this.sourceToken);\n else\n map.items.push({ start: [this.sourceToken] });\n }\n else if (it.sep) {\n it.sep.push(this.sourceToken);\n }\n else {\n it.start.push(this.sourceToken);\n }\n return;\n case 'space':\n case 'comment':\n if (it.value) {\n map.items.push({ start: [this.sourceToken] });\n }\n else if (it.sep) {\n it.sep.push(this.sourceToken);\n }\n else {\n if (this.atIndentedComment(it.start, map.indent)) {\n const prev = map.items[map.items.length - 2];\n const end = prev?.value?.end;\n if (Array.isArray(end)) {\n Array.prototype.push.apply(end, it.start);\n end.push(this.sourceToken);\n map.items.pop();\n return;\n }\n }\n it.start.push(this.sourceToken);\n }\n return;\n }\n if (this.indent >= map.indent) {\n const atMapIndent = !this.onKeyLine && this.indent === map.indent;\n const atNextItem = atMapIndent &&\n (it.sep || it.explicitKey) &&\n this.type !== 'seq-item-ind';\n // For empty nodes, assign newline-separated not indented empty tokens to following node\n let start = [];\n if (atNextItem && it.sep && !it.value) {\n const nl = [];\n for (let i = 0; i < it.sep.length; ++i) {\n const st = it.sep[i];\n switch (st.type) {\n case 'newline':\n nl.push(i);\n break;\n case 'space':\n break;\n case 'comment':\n if (st.indent > map.indent)\n nl.length = 0;\n break;\n default:\n nl.length = 0;\n }\n }\n if (nl.length >= 2)\n start = it.sep.splice(nl[1]);\n }\n switch (this.type) {\n case 'anchor':\n case 'tag':\n if (atNextItem || it.value) {\n start.push(this.sourceToken);\n map.items.push({ start });\n this.onKeyLine = true;\n }\n else if (it.sep) {\n it.sep.push(this.sourceToken);\n }\n else {\n it.start.push(this.sourceToken);\n }\n return;\n case 'explicit-key-ind':\n if (!it.sep && !it.explicitKey) {\n it.start.push(this.sourceToken);\n it.explicitKey = true;\n }\n else if (atNextItem || it.value) {\n start.push(this.sourceToken);\n map.items.push({ start, explicitKey: true });\n }\n else {\n this.stack.push({\n type: 'block-map',\n offset: this.offset,\n indent: this.indent,\n items: [{ start: [this.sourceToken], explicitKey: true }]\n });\n }\n this.onKeyLine = true;\n return;\n case 'map-value-ind':\n if (it.explicitKey) {\n if (!it.sep) {\n if (includesToken(it.start, 'newline')) {\n Object.assign(it, { key: null, sep: [this.sourceToken] });\n }\n else {\n const start = getFirstKeyStartProps(it.start);\n this.stack.push({\n type: 'block-map',\n offset: this.offset,\n indent: this.indent,\n items: [{ start, key: null, sep: [this.sourceToken] }]\n });\n }\n }\n else if (it.value) {\n map.items.push({ start: [], key: null, sep: [this.sourceToken] });\n }\n else if (includesToken(it.sep, 'map-value-ind')) {\n this.stack.push({\n type: 'block-map',\n offset: this.offset,\n indent: this.indent,\n items: [{ start, key: null, sep: [this.sourceToken] }]\n });\n }\n else if (isFlowToken(it.key) &&\n !includesToken(it.sep, 'newline')) {\n const start = getFirstKeyStartProps(it.start);\n const key = it.key;\n const sep = it.sep;\n sep.push(this.sourceToken);\n // @ts-expect-error type guard is wrong here\n delete it.key;\n // @ts-expect-error type guard is wrong here\n delete it.sep;\n this.stack.push({\n type: 'block-map',\n offset: this.offset,\n indent: this.indent,\n items: [{ start, key, sep }]\n });\n }\n else if (start.length > 0) {\n // Not actually at next item\n it.sep = it.sep.concat(start, this.sourceToken);\n }\n else {\n it.sep.push(this.sourceToken);\n }\n }\n else {\n if (!it.sep) {\n Object.assign(it, { key: null, sep: [this.sourceToken] });\n }\n else if (it.value || atNextItem) {\n map.items.push({ start, key: null, sep: [this.sourceToken] });\n }\n else if (includesToken(it.sep, 'map-value-ind')) {\n this.stack.push({\n type: 'block-map',\n offset: this.offset,\n indent: this.indent,\n items: [{ start: [], key: null, sep: [this.sourceToken] }]\n });\n }\n else {\n it.sep.push(this.sourceToken);\n }\n }\n this.onKeyLine = true;\n return;\n case 'alias':\n case 'scalar':\n case 'single-quoted-scalar':\n case 'double-quoted-scalar': {\n const fs = this.flowScalar(this.type);\n if (atNextItem || it.value) {\n map.items.push({ start, key: fs, sep: [] });\n this.onKeyLine = true;\n }\n else if (it.sep) {\n this.stack.push(fs);\n }\n else {\n Object.assign(it, { key: fs, sep: [] });\n this.onKeyLine = true;\n }\n return;\n }\n default: {\n const bv = this.startBlockValue(map);\n if (bv) {\n if (bv.type === 'block-seq') {\n if (!it.explicitKey &&\n it.sep &&\n !includesToken(it.sep, 'newline')) {\n yield* this.pop({\n type: 'error',\n offset: this.offset,\n message: 'Unexpected block-seq-ind on same line with key',\n source: this.source\n });\n return;\n }\n }\n else if (atMapIndent) {\n map.items.push({ start });\n }\n this.stack.push(bv);\n return;\n }\n }\n }\n }\n yield* this.pop();\n yield* this.step();\n }\n *blockSequence(seq) {\n const it = seq.items[seq.items.length - 1];\n switch (this.type) {\n case 'newline':\n if (it.value) {\n const end = 'end' in it.value ? it.value.end : undefined;\n const last = Array.isArray(end) ? end[end.length - 1] : undefined;\n if (last?.type === 'comment')\n end?.push(this.sourceToken);\n else\n seq.items.push({ start: [this.sourceToken] });\n }\n else\n it.start.push(this.sourceToken);\n return;\n case 'space':\n case 'comment':\n if (it.value)\n seq.items.push({ start: [this.sourceToken] });\n else {\n if (this.atIndentedComment(it.start, seq.indent)) {\n const prev = seq.items[seq.items.length - 2];\n const end = prev?.value?.end;\n if (Array.isArray(end)) {\n Array.prototype.push.apply(end, it.start);\n end.push(this.sourceToken);\n seq.items.pop();\n return;\n }\n }\n it.start.push(this.sourceToken);\n }\n return;\n case 'anchor':\n case 'tag':\n if (it.value || this.indent <= seq.indent)\n break;\n it.start.push(this.sourceToken);\n return;\n case 'seq-item-ind':\n if (this.indent !== seq.indent)\n break;\n if (it.value || includesToken(it.start, 'seq-item-ind'))\n seq.items.push({ start: [this.sourceToken] });\n else\n it.start.push(this.sourceToken);\n return;\n }\n if (this.indent > seq.indent) {\n const bv = this.startBlockValue(seq);\n if (bv) {\n this.stack.push(bv);\n return;\n }\n }\n yield* this.pop();\n yield* this.step();\n }\n *flowCollection(fc) {\n const it = fc.items[fc.items.length - 1];\n if (this.type === 'flow-error-end') {\n let top;\n do {\n yield* this.pop();\n top = this.peek(1);\n } while (top?.type === 'flow-collection');\n }\n else if (fc.end.length === 0) {\n switch (this.type) {\n case 'comma':\n case 'explicit-key-ind':\n if (!it || it.sep)\n fc.items.push({ start: [this.sourceToken] });\n else\n it.start.push(this.sourceToken);\n return;\n case 'map-value-ind':\n if (!it || it.value)\n fc.items.push({ start: [], key: null, sep: [this.sourceToken] });\n else if (it.sep)\n it.sep.push(this.sourceToken);\n else\n Object.assign(it, { key: null, sep: [this.sourceToken] });\n return;\n case 'space':\n case 'comment':\n case 'newline':\n case 'anchor':\n case 'tag':\n if (!it || it.value)\n fc.items.push({ start: [this.sourceToken] });\n else if (it.sep)\n it.sep.push(this.sourceToken);\n else\n it.start.push(this.sourceToken);\n return;\n case 'alias':\n case 'scalar':\n case 'single-quoted-scalar':\n case 'double-quoted-scalar': {\n const fs = this.flowScalar(this.type);\n if (!it || it.value)\n fc.items.push({ start: [], key: fs, sep: [] });\n else if (it.sep)\n this.stack.push(fs);\n else\n Object.assign(it, { key: fs, sep: [] });\n return;\n }\n case 'flow-map-end':\n case 'flow-seq-end':\n fc.end.push(this.sourceToken);\n return;\n }\n const bv = this.startBlockValue(fc);\n /* istanbul ignore else should not happen */\n if (bv)\n this.stack.push(bv);\n else {\n yield* this.pop();\n yield* this.step();\n }\n }\n else {\n const parent = this.peek(2);\n if (parent.type === 'block-map' &&\n ((this.type === 'map-value-ind' && parent.indent === fc.indent) ||\n (this.type === 'newline' &&\n !parent.items[parent.items.length - 1].sep))) {\n yield* this.pop();\n yield* this.step();\n }\n else if (this.type === 'map-value-ind' &&\n parent.type !== 'flow-collection') {\n const prev = getPrevProps(parent);\n const start = getFirstKeyStartProps(prev);\n fixFlowSeqItems(fc);\n const sep = fc.end.splice(1, fc.end.length);\n sep.push(this.sourceToken);\n const map = {\n type: 'block-map',\n offset: fc.offset,\n indent: fc.indent,\n items: [{ start, key: fc, sep }]\n };\n this.onKeyLine = true;\n this.stack[this.stack.length - 1] = map;\n }\n else {\n yield* this.lineEnd(fc);\n }\n }\n }\n flowScalar(type) {\n if (this.onNewLine) {\n let nl = this.source.indexOf('\\n') + 1;\n while (nl !== 0) {\n this.onNewLine(this.offset + nl);\n nl = this.source.indexOf('\\n', nl) + 1;\n }\n }\n return {\n type,\n offset: this.offset,\n indent: this.indent,\n source: this.source\n };\n }\n startBlockValue(parent) {\n switch (this.type) {\n case 'alias':\n case 'scalar':\n case 'single-quoted-scalar':\n case 'double-quoted-scalar':\n return this.flowScalar(this.type);\n case 'block-scalar-header':\n return {\n type: 'block-scalar',\n offset: this.offset,\n indent: this.indent,\n props: [this.sourceToken],\n source: ''\n };\n case 'flow-map-start':\n case 'flow-seq-start':\n return {\n type: 'flow-collection',\n offset: this.offset,\n indent: this.indent,\n start: this.sourceToken,\n items: [],\n end: []\n };\n case 'seq-item-ind':\n return {\n type: 'block-seq',\n offset: this.offset,\n indent: this.indent,\n items: [{ start: [this.sourceToken] }]\n };\n case 'explicit-key-ind': {\n this.onKeyLine = true;\n const prev = getPrevProps(parent);\n const start = getFirstKeyStartProps(prev);\n start.push(this.sourceToken);\n return {\n type: 'block-map',\n offset: this.offset,\n indent: this.indent,\n items: [{ start, explicitKey: true }]\n };\n }\n case 'map-value-ind': {\n this.onKeyLine = true;\n const prev = getPrevProps(parent);\n const start = getFirstKeyStartProps(prev);\n return {\n type: 'block-map',\n offset: this.offset,\n indent: this.indent,\n items: [{ start, key: null, sep: [this.sourceToken] }]\n };\n }\n }\n return null;\n }\n atIndentedComment(start, indent) {\n if (this.type !== 'comment')\n return false;\n if (this.indent <= indent)\n return false;\n return start.every(st => st.type === 'newline' || st.type === 'space');\n }\n *documentEnd(docEnd) {\n if (this.type !== 'doc-mode') {\n if (docEnd.end)\n docEnd.end.push(this.sourceToken);\n else\n docEnd.end = [this.sourceToken];\n if (this.type === 'newline')\n yield* this.pop();\n }\n }\n *lineEnd(token) {\n switch (this.type) {\n case 'comma':\n case 'doc-start':\n case 'doc-end':\n case 'flow-seq-end':\n case 'flow-map-end':\n case 'map-value-ind':\n yield* this.pop();\n yield* this.step();\n break;\n case 'newline':\n this.onKeyLine = false;\n // fallthrough\n case 'space':\n case 'comment':\n default:\n // all other values are errors\n if (token.end)\n token.end.push(this.sourceToken);\n else\n token.end = [this.sourceToken];\n if (this.type === 'newline')\n yield* this.pop();\n }\n }\n}\n\nexports.Parser = Parser;\n","'use strict';\n\nvar composer = require('./compose/composer.js');\nvar Document = require('./doc/Document.js');\nvar errors = require('./errors.js');\nvar log = require('./log.js');\nvar identity = require('./nodes/identity.js');\nvar lineCounter = require('./parse/line-counter.js');\nvar parser = require('./parse/parser.js');\n\nfunction parseOptions(options) {\n const prettyErrors = options.prettyErrors !== false;\n const lineCounter$1 = options.lineCounter || (prettyErrors && new lineCounter.LineCounter()) || null;\n return { lineCounter: lineCounter$1, prettyErrors };\n}\n/**\n * Parse the input as a stream of YAML documents.\n *\n * Documents should be separated from each other by `...` or `---` marker lines.\n *\n * @returns If an empty `docs` array is returned, it will be of type\n * EmptyStream and contain additional stream information. In\n * TypeScript, you should use `'empty' in docs` as a type guard for it.\n */\nfunction parseAllDocuments(source, options = {}) {\n const { lineCounter, prettyErrors } = parseOptions(options);\n const parser$1 = new parser.Parser(lineCounter?.addNewLine);\n const composer$1 = new composer.Composer(options);\n const docs = Array.from(composer$1.compose(parser$1.parse(source)));\n if (prettyErrors && lineCounter)\n for (const doc of docs) {\n doc.errors.forEach(errors.prettifyError(source, lineCounter));\n doc.warnings.forEach(errors.prettifyError(source, lineCounter));\n }\n if (docs.length > 0)\n return docs;\n return Object.assign([], { empty: true }, composer$1.streamInfo());\n}\n/** Parse an input string into a single YAML.Document */\nfunction parseDocument(source, options = {}) {\n const { lineCounter, prettyErrors } = parseOptions(options);\n const parser$1 = new parser.Parser(lineCounter?.addNewLine);\n const composer$1 = new composer.Composer(options);\n // `doc` is always set by compose.end(true) at the very latest\n let doc = null;\n for (const _doc of composer$1.compose(parser$1.parse(source), true, source.length)) {\n if (!doc)\n doc = _doc;\n else if (doc.options.logLevel !== 'silent') {\n doc.errors.push(new errors.YAMLParseError(_doc.range.slice(0, 2), 'MULTIPLE_DOCS', 'Source contains multiple documents; please use YAML.parseAllDocuments()'));\n break;\n }\n }\n if (prettyErrors && lineCounter) {\n doc.errors.forEach(errors.prettifyError(source, lineCounter));\n doc.warnings.forEach(errors.prettifyError(source, lineCounter));\n }\n return doc;\n}\nfunction parse(src, reviver, options) {\n let _reviver = undefined;\n if (typeof reviver === 'function') {\n _reviver = reviver;\n }\n else if (options === undefined && reviver && typeof reviver === 'object') {\n options = reviver;\n }\n const doc = parseDocument(src, options);\n if (!doc)\n return null;\n doc.warnings.forEach(warning => log.warn(doc.options.logLevel, warning));\n if (doc.errors.length > 0) {\n if (doc.options.logLevel !== 'silent')\n throw doc.errors[0];\n else\n doc.errors = [];\n }\n return doc.toJS(Object.assign({ reviver: _reviver }, options));\n}\nfunction stringify(value, replacer, options) {\n let _replacer = null;\n if (typeof replacer === 'function' || Array.isArray(replacer)) {\n _replacer = replacer;\n }\n else if (options === undefined && replacer) {\n options = replacer;\n }\n if (typeof options === 'string')\n options = options.length;\n if (typeof options === 'number') {\n const indent = Math.round(options);\n options = indent < 1 ? undefined : indent > 8 ? { indent: 8 } : { indent };\n }\n if (value === undefined) {\n const { keepUndefined } = options ?? replacer ?? {};\n if (!keepUndefined)\n return undefined;\n }\n if (identity.isDocument(value) && !_replacer)\n return value.toString(options);\n return new Document.Document(value, _replacer, options).toString(options);\n}\n\nexports.parse = parse;\nexports.parseAllDocuments = parseAllDocuments;\nexports.parseDocument = parseDocument;\nexports.stringify = stringify;\n","'use strict';\n\nvar composer = require('./compose/composer.js');\nvar Document = require('./doc/Document.js');\nvar Schema = require('./schema/Schema.js');\nvar errors = require('./errors.js');\nvar Alias = require('./nodes/Alias.js');\nvar identity = require('./nodes/identity.js');\nvar Pair = require('./nodes/Pair.js');\nvar Scalar = require('./nodes/Scalar.js');\nvar YAMLMap = require('./nodes/YAMLMap.js');\nvar YAMLSeq = require('./nodes/YAMLSeq.js');\nvar cst = require('./parse/cst.js');\nvar lexer = require('./parse/lexer.js');\nvar lineCounter = require('./parse/line-counter.js');\nvar parser = require('./parse/parser.js');\nvar publicApi = require('./public-api.js');\nvar visit = require('./visit.js');\n\n\n\nexports.Composer = composer.Composer;\nexports.Document = Document.Document;\nexports.Schema = Schema.Schema;\nexports.YAMLError = errors.YAMLError;\nexports.YAMLParseError = errors.YAMLParseError;\nexports.YAMLWarning = errors.YAMLWarning;\nexports.Alias = Alias.Alias;\nexports.isAlias = identity.isAlias;\nexports.isCollection = identity.isCollection;\nexports.isDocument = identity.isDocument;\nexports.isMap = identity.isMap;\nexports.isNode = identity.isNode;\nexports.isPair = identity.isPair;\nexports.isScalar = identity.isScalar;\nexports.isSeq = identity.isSeq;\nexports.Pair = Pair.Pair;\nexports.Scalar = Scalar.Scalar;\nexports.YAMLMap = YAMLMap.YAMLMap;\nexports.YAMLSeq = YAMLSeq.YAMLSeq;\nexports.CST = cst;\nexports.Lexer = lexer.Lexer;\nexports.LineCounter = lineCounter.LineCounter;\nexports.Parser = parser.Parser;\nexports.parse = publicApi.parse;\nexports.parseAllDocuments = publicApi.parseAllDocuments;\nexports.parseDocument = publicApi.parseDocument;\nexports.stringify = publicApi.stringify;\nexports.visit = visit.visit;\nexports.visitAsync = visit.visitAsync;\n","/**\r\n * Frontmatter — YAML frontmatter parsing, serialization, and CRUD commands\r\n *\r\n * Uses the `yaml` npm package instead of a hand-rolled parser.\r\n */\r\n\r\nimport fs from 'node:fs';\r\nimport path from 'node:path';\r\nimport YAML from 'yaml';\r\n\r\nimport { safeReadFile, output, error } from './core.js';\r\nimport type {\r\n FrontmatterData,\r\n FrontmatterValue,\r\n FrontmatterValidationResult,\r\n FrontmatterSchema,\r\n} from './types.js';\r\n\r\n// ─── Parsing engine ───────────────────────────────────────────────────────────\r\n\r\n/**\r\n * Extract YAML frontmatter from markdown content into a typed object.\r\n */\r\nexport function extractFrontmatter(content: string): FrontmatterData {\r\n const match = content.match(/^---\\n([\\s\\S]+?)\\n---/);\r\n if (!match) return {};\r\n try {\r\n const parsed = YAML.parse(match[1]);\r\n return (parsed && typeof parsed === 'object' && !Array.isArray(parsed))\r\n ? parsed as FrontmatterData\r\n : {};\r\n } catch {\r\n return {};\r\n }\r\n}\r\n\r\n/**\r\n * Reconstruct YAML frontmatter string from an object.\r\n */\r\nexport function reconstructFrontmatter(obj: FrontmatterData): string {\r\n // Filter out null/undefined values\r\n const cleaned: FrontmatterData = {};\r\n for (const [key, value] of Object.entries(obj)) {\r\n if (value !== null && value !== undefined) {\r\n cleaned[key] = value;\r\n }\r\n }\r\n\r\n return YAML.stringify(cleaned, {\r\n lineWidth: 0, // Don't wrap long lines\r\n defaultKeyType: 'PLAIN',\r\n defaultStringType: 'PLAIN',\r\n }).trimEnd();\r\n}\r\n\r\n/**\r\n * Replace or insert frontmatter in markdown content.\r\n */\r\nexport function spliceFrontmatter(content: string, newObj: FrontmatterData): string {\r\n const yamlStr = reconstructFrontmatter(newObj);\r\n const match = content.match(/^---\\n[\\s\\S]+?\\n---/);\r\n if (match) {\r\n return `---\\n${yamlStr}\\n---` + content.slice(match[0].length);\r\n }\r\n return `---\\n${yamlStr}\\n---\\n\\n` + content;\r\n}\r\n\r\ninterface MustHaveItem {\r\n [key: string]: string | number | string[];\r\n}\r\n\r\n/**\r\n * Parse a specific block from must_haves in frontmatter.\r\n * With the yaml package, this is just object traversal.\r\n */\r\nexport function parseMustHavesBlock(content: string, blockName: string): (string | MustHaveItem)[] {\r\n const fm = extractFrontmatter(content);\r\n const mustHaves = fm.must_haves as FrontmatterData | undefined;\r\n if (!mustHaves || typeof mustHaves !== 'object') return [];\r\n const block = mustHaves[blockName];\r\n if (!Array.isArray(block)) return [];\r\n return block as (string | MustHaveItem)[];\r\n}\r\n\r\n// ─── Frontmatter schema validation ──────────────────────────────────────────\r\n\r\nexport const FRONTMATTER_SCHEMAS: Record = {\r\n plan: {\r\n required: ['phase', 'plan', 'type', 'wave', 'depends_on', 'files_modified', 'autonomous', 'must_haves'],\r\n },\r\n summary: {\r\n required: ['phase', 'plan', 'subsystem', 'tags', 'duration', 'completed'],\r\n },\r\n verification: {\r\n required: ['phase', 'verified', 'status', 'score'],\r\n },\r\n};\r\n\r\n// ─── Frontmatter CRUD commands ──────────────────────────────────────────────\r\n\r\nexport function cmdFrontmatterGet(\r\n cwd: string,\r\n filePath: string | null,\r\n field: string | null,\r\n raw: boolean,\r\n): void {\r\n if (!filePath) {\r\n error('file path required');\r\n }\r\n const fullPath = path.isAbsolute(filePath) ? filePath : path.join(cwd, filePath);\r\n const content = safeReadFile(fullPath);\r\n if (!content) {\r\n output({ error: 'File not found', path: filePath }, raw);\r\n return;\r\n }\r\n const fm = extractFrontmatter(content);\r\n if (field) {\r\n const value = fm[field];\r\n if (value === undefined) {\r\n output({ error: 'Field not found', field }, raw);\r\n return;\r\n }\r\n output({ [field]: value }, raw, JSON.stringify(value));\r\n } else {\r\n output(fm, raw);\r\n }\r\n}\r\n\r\nexport function cmdFrontmatterSet(\r\n cwd: string,\r\n filePath: string | null,\r\n field: string | null,\r\n value: string | undefined,\r\n raw: boolean,\r\n): void {\r\n if (!filePath || !field || value === undefined) {\r\n error('file, field, and value required');\r\n }\r\n const fullPath = path.isAbsolute(filePath!) ? filePath! : path.join(cwd, filePath!);\r\n if (!fs.existsSync(fullPath)) {\r\n output({ error: 'File not found', path: filePath }, raw);\r\n return;\r\n }\r\n const content = fs.readFileSync(fullPath, 'utf-8');\r\n const fm = extractFrontmatter(content);\r\n let parsedValue: FrontmatterValue;\r\n try {\r\n parsedValue = JSON.parse(value!) as FrontmatterValue;\r\n } catch {\r\n parsedValue = value!;\r\n }\r\n fm[field!] = parsedValue;\r\n const newContent = spliceFrontmatter(content, fm);\r\n fs.writeFileSync(fullPath, newContent, 'utf-8');\r\n output({ updated: true, field, value: parsedValue }, raw, 'true');\r\n}\r\n\r\nexport function cmdFrontmatterMerge(\r\n cwd: string,\r\n filePath: string | null,\r\n data: string | null,\r\n raw: boolean,\r\n): void {\r\n if (!filePath || !data) {\r\n error('file and data required');\r\n }\r\n const fullPath = path.isAbsolute(filePath!) ? filePath! : path.join(cwd, filePath!);\r\n if (!fs.existsSync(fullPath)) {\r\n output({ error: 'File not found', path: filePath }, raw);\r\n return;\r\n }\r\n const content = fs.readFileSync(fullPath, 'utf-8');\r\n const fm = extractFrontmatter(content);\r\n let mergeData: FrontmatterData;\r\n try {\r\n mergeData = JSON.parse(data!) as FrontmatterData;\r\n } catch {\r\n error('Invalid JSON for --data');\r\n return;\r\n }\r\n Object.assign(fm, mergeData);\r\n const newContent = spliceFrontmatter(content, fm);\r\n fs.writeFileSync(fullPath, newContent, 'utf-8');\r\n output({ merged: true, fields: Object.keys(mergeData) }, raw, 'true');\r\n}\r\n\r\nexport function cmdFrontmatterValidate(\r\n cwd: string,\r\n filePath: string | null,\r\n schemaName: string | null,\r\n raw: boolean,\r\n): void {\r\n if (!filePath || !schemaName) {\r\n error('file and schema required');\r\n }\r\n const schema = FRONTMATTER_SCHEMAS[schemaName!];\r\n if (!schema) {\r\n error(\r\n `Unknown schema: ${schemaName}. Available: ${Object.keys(FRONTMATTER_SCHEMAS).join(', ')}`,\r\n );\r\n }\r\n const fullPath = path.isAbsolute(filePath!) ? filePath! : path.join(cwd, filePath!);\r\n const content = safeReadFile(fullPath);\r\n if (!content) {\r\n output({ error: 'File not found', path: filePath }, raw);\r\n return;\r\n }\r\n const fm = extractFrontmatter(content);\r\n const missing = schema.required.filter(f => fm[f] === undefined);\r\n const present = schema.required.filter(f => fm[f] !== undefined);\r\n const result: FrontmatterValidationResult = {\r\n valid: missing.length === 0,\r\n missing,\r\n present,\r\n schema: schemaName!,\r\n };\r\n output(result, raw, missing.length === 0 ? 'valid' : 'invalid');\r\n}\r\n","/**\r\n * Phase — Phase CRUD, query, and lifecycle operations\r\n *\r\n * Ported from maxsim/bin/lib/phase.cjs\r\n */\r\n\r\nimport fs from 'node:fs';\r\nimport path from 'node:path';\r\n\r\nimport {\r\n normalizePhaseName,\r\n comparePhaseNum,\r\n getPhasePattern,\r\n findPhaseInternal,\r\n getArchivedPhaseDirs,\r\n generateSlugInternal,\r\n output,\r\n error,\r\n rethrowCliSignals,\r\n phasesPath,\r\n roadmapPath,\r\n statePath,\r\n planningPath,\r\n isPlanFile,\r\n isSummaryFile,\r\n planId,\r\n summaryId,\r\n listSubDirs,\r\n debugLog,\r\n todayISO,\r\n escapePhaseNum,\r\n} from './core.js';\r\nimport { extractFrontmatter } from './frontmatter.js';\r\nimport type {\r\n PhaseNumber,\r\n PhasesListOptions,\r\n FrontmatterData,\r\n} from './types.js';\r\n\r\n// ─── Core result types ──────────────────────────────────────────────────────\r\n\r\nexport interface PhaseCreateOptions {\r\n includeStubs?: boolean;\r\n}\r\n\r\nexport interface PhaseAddResult {\r\n phase_number: number;\r\n padded: string;\r\n slug: string;\r\n directory: string;\r\n description: string;\r\n}\r\n\r\nexport interface PhaseInsertResult {\r\n phase_number: string;\r\n after_phase: string;\r\n slug: string;\r\n directory: string;\r\n description: string;\r\n}\r\n\r\nexport interface PhaseCompleteResult {\r\n completed_phase: string;\r\n phase_name: string | null;\r\n plans_executed: string;\r\n next_phase: string | null;\r\n next_phase_name: string | null;\r\n is_last_phase: boolean;\r\n date: string;\r\n roadmap_updated: boolean;\r\n state_updated: boolean;\r\n requirements_updated: boolean;\r\n}\r\n\r\n// ─── Stub scaffolding ───────────────────────────────────────────────────────\r\n\r\nexport function scaffoldPhaseStubs(dirPath: string, phaseId: string, name: string): void {\r\n const today = todayISO();\r\n fs.writeFileSync(\r\n path.join(dirPath, `${phaseId}-CONTEXT.md`),\r\n `# Phase ${phaseId} Context: ${name}\\n\\n**Created:** ${today}\\n**Phase goal:** [To be defined during /maxsim:discuss-phase]\\n\\n---\\n\\n_Context will be populated by /maxsim:discuss-phase_\\n`,\r\n );\r\n fs.writeFileSync(\r\n path.join(dirPath, `${phaseId}-RESEARCH.md`),\r\n `# Phase ${phaseId}: ${name} - Research\\n\\n**Researched:** Not yet\\n**Domain:** TBD\\n**Confidence:** TBD\\n\\n---\\n\\n_Research will be populated by /maxsim:research-phase_\\n`,\r\n );\r\n}\r\n\r\n// ─── Core functions ─────────────────────────────────────────────────────────\r\n\r\nexport function phaseAddCore(cwd: string, description: string, options?: PhaseCreateOptions): PhaseAddResult {\r\n const rmPath = roadmapPath(cwd);\r\n if (!fs.existsSync(rmPath)) {\r\n throw new Error('ROADMAP.md not found');\r\n }\r\n\r\n const content = fs.readFileSync(rmPath, 'utf-8');\r\n const slug = generateSlugInternal(description);\r\n\r\n const phasePattern = getPhasePattern();\r\n let maxPhase = 0;\r\n let m: RegExpExecArray | null;\r\n while ((m = phasePattern.exec(content)) !== null) {\r\n const num = parseInt(m[1], 10);\r\n if (num > maxPhase) maxPhase = num;\r\n }\r\n\r\n const newPhaseNum = maxPhase + 1;\r\n const paddedNum = String(newPhaseNum).padStart(2, '0');\r\n const dirName = `${paddedNum}-${slug}`;\r\n const dirPath = planningPath(cwd, 'phases', dirName);\r\n\r\n fs.mkdirSync(dirPath, { recursive: true });\r\n fs.writeFileSync(path.join(dirPath, '.gitkeep'), '');\r\n\r\n if (options?.includeStubs) {\r\n scaffoldPhaseStubs(dirPath, paddedNum, description);\r\n }\r\n\r\n const phaseEntry = `\\n### Phase ${newPhaseNum}: ${description}\\n\\n**Goal:** [To be planned]\\n**Requirements**: TBD\\n**Depends on:** Phase ${maxPhase}\\n**Plans:** 0 plans\\n\\nPlans:\\n- [ ] TBD (run /maxsim:plan-phase ${newPhaseNum} to break down)\\n`;\r\n\r\n let updatedContent: string;\r\n const lastSeparator = content.lastIndexOf('\\n---');\r\n if (lastSeparator > 0) {\r\n updatedContent = content.slice(0, lastSeparator) + phaseEntry + content.slice(lastSeparator);\r\n } else {\r\n updatedContent = content + phaseEntry;\r\n }\r\n\r\n fs.writeFileSync(rmPath, updatedContent, 'utf-8');\r\n\r\n return {\r\n phase_number: newPhaseNum,\r\n padded: paddedNum,\r\n slug,\r\n directory: `.planning/phases/${dirName}`,\r\n description,\r\n };\r\n}\r\n\r\nexport function phaseInsertCore(cwd: string, afterPhase: string, description: string, options?: PhaseCreateOptions): PhaseInsertResult {\r\n const rmPath = roadmapPath(cwd);\r\n if (!fs.existsSync(rmPath)) {\r\n throw new Error('ROADMAP.md not found');\r\n }\r\n\r\n const content = fs.readFileSync(rmPath, 'utf-8');\r\n const slug = generateSlugInternal(description);\r\n\r\n const normalizedAfter = normalizePhaseName(afterPhase);\r\n const unpadded = normalizedAfter.replace(/^0+/, '');\r\n const afterPhaseEscaped = '0*' + unpadded.replace(/\\./g, '\\\\.');\r\n const targetPattern = getPhasePattern(afterPhaseEscaped, 'i');\r\n if (!targetPattern.test(content)) {\r\n throw new Error(`Phase ${afterPhase} not found in ROADMAP.md`);\r\n }\r\n\r\n const phasesDirPath = phasesPath(cwd);\r\n const normalizedBase = normalizePhaseName(afterPhase);\r\n const existingDecimals: number[] = [];\r\n\r\n try {\r\n const dirs = listSubDirs(phasesDirPath);\r\n const decimalPattern = new RegExp(`^${normalizedBase}\\\\.(\\\\d+)`);\r\n for (const dir of dirs) {\r\n const dm = dir.match(decimalPattern);\r\n if (dm) existingDecimals.push(parseInt(dm[1], 10));\r\n }\r\n } catch (e) {\r\n debugLog(e);\r\n }\r\n\r\n const nextDecimal = existingDecimals.length === 0 ? 1 : Math.max(...existingDecimals) + 1;\r\n const decimalPhase = `${normalizedBase}.${nextDecimal}`;\r\n const dirName = `${decimalPhase}-${slug}`;\r\n const dirPath = planningPath(cwd, 'phases', dirName);\r\n\r\n fs.mkdirSync(dirPath, { recursive: true });\r\n fs.writeFileSync(path.join(dirPath, '.gitkeep'), '');\r\n\r\n if (options?.includeStubs) {\r\n scaffoldPhaseStubs(dirPath, decimalPhase, description);\r\n }\r\n\r\n const phaseEntry = `\\n### Phase ${decimalPhase}: ${description} (INSERTED)\\n\\n**Goal:** [Urgent work - to be planned]\\n**Requirements**: TBD\\n**Depends on:** Phase ${afterPhase}\\n**Plans:** 0 plans\\n\\nPlans:\\n- [ ] TBD (run /maxsim:plan-phase ${decimalPhase} to break down)\\n`;\r\n\r\n const headerPattern = new RegExp(`(#{2,4}\\\\s*Phase\\\\s+0*${afterPhaseEscaped}:[^\\\\n]*\\\\n)`, 'i');\r\n const headerMatch = content.match(headerPattern);\r\n if (!headerMatch) {\r\n throw new Error(`Could not find Phase ${afterPhase} header`);\r\n }\r\n\r\n const headerIdx = content.indexOf(headerMatch[0]);\r\n const afterHeader = content.slice(headerIdx + headerMatch[0].length);\r\n const nextPhaseMatch = afterHeader.match(/\\n#{2,4}\\s+Phase\\s+\\d/i);\r\n\r\n let insertIdx: number;\r\n if (nextPhaseMatch) {\r\n insertIdx = headerIdx + headerMatch[0].length + nextPhaseMatch.index!;\r\n } else {\r\n insertIdx = content.length;\r\n }\r\n\r\n const updatedContent = content.slice(0, insertIdx) + phaseEntry + content.slice(insertIdx);\r\n fs.writeFileSync(rmPath, updatedContent, 'utf-8');\r\n\r\n return {\r\n phase_number: decimalPhase,\r\n after_phase: afterPhase,\r\n slug,\r\n directory: `.planning/phases/${dirName}`,\r\n description,\r\n };\r\n}\r\n\r\nexport function phaseCompleteCore(cwd: string, phaseNum: string): PhaseCompleteResult {\r\n const rmPath = roadmapPath(cwd);\r\n const stPath = statePath(cwd);\r\n const phasesDirPath = phasesPath(cwd);\r\n const today = todayISO();\r\n\r\n const phaseInfo = findPhaseInternal(cwd, phaseNum);\r\n if (!phaseInfo) {\r\n throw new Error(`Phase ${phaseNum} not found`);\r\n }\r\n\r\n const planCount = phaseInfo.plans.length;\r\n const summaryCount = phaseInfo.summaries.length;\r\n let requirementsUpdated = false;\r\n\r\n if (fs.existsSync(rmPath)) {\r\n let roadmapContent = fs.readFileSync(rmPath, 'utf-8');\r\n\r\n const checkboxPattern = new RegExp(\r\n `(-\\\\s*\\\\[)[ ](\\\\]\\\\s*.*Phase\\\\s+${escapePhaseNum(phaseNum)}[:\\\\s][^\\\\n]*)`,\r\n 'i',\r\n );\r\n roadmapContent = roadmapContent.replace(checkboxPattern, `$1x$2 (completed ${today})`);\r\n\r\n const phaseEscaped = escapePhaseNum(phaseNum);\r\n const tablePattern = new RegExp(\r\n `(\\\\|\\\\s*${phaseEscaped}\\\\.?\\\\s[^|]*\\\\|[^|]*\\\\|)\\\\s*[^|]*(\\\\|)\\\\s*[^|]*(\\\\|)`,\r\n 'i',\r\n );\r\n roadmapContent = roadmapContent.replace(\r\n tablePattern,\r\n `$1 Complete $2 ${today} $3`,\r\n );\r\n\r\n const planCountPattern = new RegExp(\r\n `(#{2,4}\\\\s*Phase\\\\s+${phaseEscaped}[\\\\s\\\\S]*?\\\\*\\\\*Plans:\\\\*\\\\*\\\\s*)[^\\\\n]+`,\r\n 'i',\r\n );\r\n roadmapContent = roadmapContent.replace(\r\n planCountPattern,\r\n `$1${summaryCount}/${planCount} plans complete`,\r\n );\r\n\r\n fs.writeFileSync(rmPath, roadmapContent, 'utf-8');\r\n\r\n // Update REQUIREMENTS.md\r\n const reqPath = planningPath(cwd, 'REQUIREMENTS.md');\r\n if (fs.existsSync(reqPath)) {\r\n const reqMatch = roadmapContent.match(\r\n new RegExp(`Phase\\\\s+${escapePhaseNum(phaseNum)}[\\\\s\\\\S]*?\\\\*\\\\*Requirements:\\\\*\\\\*\\\\s*([^\\\\n]+)`, 'i'),\r\n );\r\n\r\n if (reqMatch) {\r\n const reqIds = reqMatch[1].replace(/[\\[\\]]/g, '').split(/[,\\s]+/).map(r => r.trim()).filter(Boolean);\r\n let reqContent = fs.readFileSync(reqPath, 'utf-8');\r\n\r\n for (const reqId of reqIds) {\r\n reqContent = reqContent.replace(\r\n new RegExp(`(-\\\\s*\\\\[)[ ](\\\\]\\\\s*\\\\*\\\\*${reqId}\\\\*\\\\*)`, 'gi'),\r\n '$1x$2',\r\n );\r\n reqContent = reqContent.replace(\r\n new RegExp(`(\\\\|\\\\s*${reqId}\\\\s*\\\\|[^|]+\\\\|)\\\\s*Pending\\\\s*(\\\\|)`, 'gi'),\r\n '$1 Complete $2',\r\n );\r\n }\r\n\r\n fs.writeFileSync(reqPath, reqContent, 'utf-8');\r\n requirementsUpdated = true;\r\n }\r\n }\r\n }\r\n\r\n // Find next phase\r\n let nextPhaseNum: string | null = null;\r\n let nextPhaseName: string | null = null;\r\n let isLastPhase = true;\r\n\r\n try {\r\n const dirs = listSubDirs(phasesDirPath, true);\r\n\r\n for (const dir of dirs) {\r\n const dm = dir.match(/^(\\d+[A-Z]?(?:\\.\\d+)?)-?(.*)/i);\r\n if (dm) {\r\n if (comparePhaseNum(dm[1], phaseNum) > 0) {\r\n nextPhaseNum = dm[1];\r\n nextPhaseName = dm[2] || null;\r\n isLastPhase = false;\r\n break;\r\n }\r\n }\r\n }\r\n } catch (e) {\r\n debugLog(e);\r\n }\r\n\r\n // Update STATE.md\r\n if (fs.existsSync(stPath)) {\r\n let stateContent = fs.readFileSync(stPath, 'utf-8');\r\n\r\n stateContent = stateContent.replace(\r\n /(\\*\\*Current Phase:\\*\\*\\s*).*/,\r\n `$1${nextPhaseNum || phaseNum}`,\r\n );\r\n\r\n if (nextPhaseName) {\r\n stateContent = stateContent.replace(\r\n /(\\*\\*Current Phase Name:\\*\\*\\s*).*/,\r\n `$1${nextPhaseName.replace(/-/g, ' ')}`,\r\n );\r\n }\r\n\r\n stateContent = stateContent.replace(\r\n /(\\*\\*Status:\\*\\*\\s*).*/,\r\n `$1${isLastPhase ? 'Milestone complete' : 'Ready to plan'}`,\r\n );\r\n\r\n stateContent = stateContent.replace(\r\n /(\\*\\*Current Plan:\\*\\*\\s*).*/,\r\n `$1Not started`,\r\n );\r\n\r\n stateContent = stateContent.replace(\r\n /(\\*\\*Last Activity:\\*\\*\\s*).*/,\r\n `$1${today}`,\r\n );\r\n\r\n stateContent = stateContent.replace(\r\n /(\\*\\*Last Activity Description:\\*\\*\\s*).*/,\r\n `$1Phase ${phaseNum} complete${nextPhaseNum ? `, transitioned to Phase ${nextPhaseNum}` : ''}`,\r\n );\r\n\r\n fs.writeFileSync(stPath, stateContent, 'utf-8');\r\n }\r\n\r\n return {\r\n completed_phase: phaseNum,\r\n phase_name: phaseInfo.phase_name,\r\n plans_executed: `${summaryCount}/${planCount}`,\r\n next_phase: nextPhaseNum,\r\n next_phase_name: nextPhaseName,\r\n is_last_phase: isLastPhase,\r\n date: today,\r\n roadmap_updated: fs.existsSync(rmPath),\r\n state_updated: fs.existsSync(stPath),\r\n requirements_updated: requirementsUpdated,\r\n };\r\n}\r\n\r\n// ─── Phase list ─────────────────────────────────────────────────────────────\r\n\r\nexport function cmdPhasesList(cwd: string, options: PhasesListOptions, raw: boolean): void {\r\n const phasesDirPath = phasesPath(cwd);\r\n const { type, phase, includeArchived } = options;\r\n\r\n if (!fs.existsSync(phasesDirPath)) {\r\n if (type) {\r\n output({ files: [], count: 0 }, raw, '');\r\n } else {\r\n output({ directories: [], count: 0 }, raw, '');\r\n }\r\n return;\r\n }\r\n\r\n try {\r\n let dirs = listSubDirs(phasesDirPath);\r\n\r\n if (includeArchived) {\r\n const archived = getArchivedPhaseDirs(cwd);\r\n for (const a of archived) {\r\n dirs.push(`${a.name} [${a.milestone}]`);\r\n }\r\n }\r\n\r\n dirs.sort((a, b) => comparePhaseNum(a, b));\r\n\r\n if (phase) {\r\n const normalized = normalizePhaseName(phase);\r\n const match = dirs.find(d => d.startsWith(normalized));\r\n if (!match) {\r\n output({ files: [], count: 0, phase_dir: null, error: 'Phase not found' }, raw, '');\r\n return;\r\n }\r\n dirs = [match];\r\n }\r\n\r\n if (type) {\r\n const files: string[] = [];\r\n for (const dir of dirs) {\r\n const dirPath = path.join(phasesDirPath, dir);\r\n const dirFiles = fs.readdirSync(dirPath);\r\n\r\n let filtered: string[];\r\n if (type === 'plans') {\r\n filtered = dirFiles.filter(isPlanFile);\r\n } else if (type === 'summaries') {\r\n filtered = dirFiles.filter(isSummaryFile);\r\n } else {\r\n filtered = dirFiles;\r\n }\r\n\r\n files.push(...filtered.sort());\r\n }\r\n\r\n const result = {\r\n files,\r\n count: files.length,\r\n phase_dir: phase ? dirs[0].replace(/^\\d+(?:\\.\\d+)?-?/, '') : null,\r\n };\r\n output(result, raw, files.join('\\n'));\r\n return;\r\n }\r\n\r\n output({ directories: dirs, count: dirs.length }, raw, dirs.join('\\n'));\r\n } catch (e: unknown) {\r\n rethrowCliSignals(e);\r\n error('Failed to list phases: ' + (e as Error).message);\r\n }\r\n}\r\n\r\n// ─── Next decimal ───────────────────────────────────────────────────────────\r\n\r\nexport function cmdPhaseNextDecimal(cwd: string, basePhase: string, raw: boolean): void {\r\n const phasesDirPath = phasesPath(cwd);\r\n const normalized = normalizePhaseName(basePhase);\r\n\r\n if (!fs.existsSync(phasesDirPath)) {\r\n output(\r\n { found: false, base_phase: normalized, next: `${normalized}.1`, existing: [] },\r\n raw,\r\n `${normalized}.1`,\r\n );\r\n return;\r\n }\r\n\r\n try {\r\n const dirs = listSubDirs(phasesDirPath);\r\n\r\n const baseExists = dirs.some(d => d.startsWith(normalized + '-') || d === normalized);\r\n\r\n const decimalPattern = new RegExp(`^${normalized}\\\\.(\\\\d+)`);\r\n const existingDecimals: string[] = [];\r\n\r\n for (const dir of dirs) {\r\n const match = dir.match(decimalPattern);\r\n if (match) {\r\n existingDecimals.push(`${normalized}.${match[1]}`);\r\n }\r\n }\r\n\r\n existingDecimals.sort((a, b) => {\r\n const aNum = parseFloat(a);\r\n const bNum = parseFloat(b);\r\n return aNum - bNum;\r\n });\r\n\r\n let nextDecimal: string;\r\n if (existingDecimals.length === 0) {\r\n nextDecimal = `${normalized}.1`;\r\n } else {\r\n const lastDecimal = existingDecimals[existingDecimals.length - 1];\r\n const lastNum = parseInt(lastDecimal.split('.')[1], 10);\r\n nextDecimal = `${normalized}.${lastNum + 1}`;\r\n }\r\n\r\n output(\r\n { found: baseExists, base_phase: normalized, next: nextDecimal, existing: existingDecimals },\r\n raw,\r\n nextDecimal,\r\n );\r\n } catch (e: unknown) {\r\n rethrowCliSignals(e);\r\n error('Failed to calculate next decimal phase: ' + (e as Error).message);\r\n }\r\n}\r\n\r\n// ─── Find phase ─────────────────────────────────────────────────────────────\r\n\r\nexport function cmdFindPhase(cwd: string, phase: string | undefined, raw: boolean): void {\r\n if (!phase) {\r\n error('phase identifier required');\r\n }\r\n\r\n const phasesDirPath = phasesPath(cwd);\r\n const normalized = normalizePhaseName(phase);\r\n\r\n const notFound = { found: false, directory: null, phase_number: null, phase_name: null, plans: [] as string[], summaries: [] as string[] };\r\n\r\n try {\r\n const dirs = listSubDirs(phasesDirPath, true);\r\n\r\n const match = dirs.find(d => d.startsWith(normalized));\r\n if (!match) {\r\n output(notFound, raw, '');\r\n return;\r\n }\r\n\r\n const dirMatch = match.match(/^(\\d+[A-Z]?(?:\\.\\d+)?)-?(.*)/i);\r\n const phaseNumber = dirMatch ? dirMatch[1] : normalized;\r\n const phaseName = dirMatch && dirMatch[2] ? dirMatch[2] : null;\r\n\r\n const phaseDir = path.join(phasesDirPath, match);\r\n const phaseFiles = fs.readdirSync(phaseDir);\r\n const plans = phaseFiles.filter(isPlanFile).sort();\r\n const summaries = phaseFiles.filter(isSummaryFile).sort();\r\n\r\n const result = {\r\n found: true,\r\n directory: path.join('.planning', 'phases', match),\r\n phase_number: phaseNumber,\r\n phase_name: phaseName,\r\n plans,\r\n summaries,\r\n };\r\n\r\n output(result, raw, result.directory);\r\n } catch (e: unknown) {\r\n rethrowCliSignals(e);\r\n output(notFound, raw, '');\r\n }\r\n}\r\n\r\n// ─── Phase plan index ───────────────────────────────────────────────────────\r\n\r\nexport function cmdPhasePlanIndex(cwd: string, phase: string | undefined, raw: boolean): void {\r\n if (!phase) {\r\n error('phase required for phase-plan-index');\r\n }\r\n\r\n const phasesDirPath = phasesPath(cwd);\r\n const normalized = normalizePhaseName(phase);\r\n\r\n let phaseDir: string | null = null;\r\n let phaseDirName: string | null = null;\r\n try {\r\n const dirs = listSubDirs(phasesDirPath, true);\r\n const match = dirs.find(d => d.startsWith(normalized));\r\n if (match) {\r\n phaseDir = path.join(phasesDirPath, match);\r\n phaseDirName = match;\r\n }\r\n } catch (e) {\r\n /* optional op, ignore */\r\n debugLog(e);\r\n }\r\n\r\n if (!phaseDir) {\r\n output({ phase: normalized, error: 'Phase not found', plans: [], waves: {}, incomplete: [], has_checkpoints: false }, raw);\r\n return;\r\n }\r\n\r\n const phaseFiles = fs.readdirSync(phaseDir);\r\n const planFiles = phaseFiles.filter(isPlanFile).sort();\r\n const summaryFiles = phaseFiles.filter(isSummaryFile);\r\n\r\n const completedPlanIds = new Set(\r\n summaryFiles.map(summaryId),\r\n );\r\n\r\n const plans: Array<{\r\n id: string;\r\n wave: number;\r\n autonomous: boolean;\r\n objective: string | null;\r\n files_modified: string[];\r\n task_count: number;\r\n has_summary: boolean;\r\n }> = [];\r\n const waves: Record = {};\r\n const incomplete: string[] = [];\r\n let hasCheckpoints = false;\r\n\r\n for (const planFile of planFiles) {\r\n const id = planId(planFile);\r\n const planPath = path.join(phaseDir, planFile);\r\n const content = fs.readFileSync(planPath, 'utf-8');\r\n const fm = extractFrontmatter(content);\r\n\r\n const taskMatches = content.match(/##\\s*Task\\s*\\d+/gi) || [];\r\n const taskCount = taskMatches.length;\r\n\r\n const wave = parseInt(fm.wave as string, 10) || 1;\r\n\r\n let autonomous = true;\r\n if (fm.autonomous !== undefined) {\r\n autonomous = fm.autonomous === 'true' || fm.autonomous === true;\r\n }\r\n\r\n if (!autonomous) {\r\n hasCheckpoints = true;\r\n }\r\n\r\n let filesModified: string[] = [];\r\n if (fm['files-modified']) {\r\n filesModified = Array.isArray(fm['files-modified']) ? fm['files-modified'] as string[] : [fm['files-modified'] as string];\r\n }\r\n\r\n const hasSummary = completedPlanIds.has(id);\r\n if (!hasSummary) {\r\n incomplete.push(id);\r\n }\r\n\r\n const plan = {\r\n id,\r\n wave,\r\n autonomous,\r\n objective: (fm.objective as string) || null,\r\n files_modified: filesModified,\r\n task_count: taskCount,\r\n has_summary: hasSummary,\r\n };\r\n\r\n plans.push(plan);\r\n\r\n const waveKey = String(wave);\r\n if (!waves[waveKey]) {\r\n waves[waveKey] = [];\r\n }\r\n waves[waveKey].push(id);\r\n }\r\n\r\n output({ phase: normalized, plans, waves, incomplete, has_checkpoints: hasCheckpoints }, raw);\r\n}\r\n\r\n// ─── Phase add ──────────────────────────────────────────────────────────────\r\n\r\nexport function cmdPhaseAdd(cwd: string, description: string | undefined, raw: boolean): void {\r\n if (!description) {\r\n error('description required for phase add');\r\n }\r\n\r\n try {\r\n const result = phaseAddCore(cwd, description, { includeStubs: false });\r\n output(\r\n { phase_number: result.phase_number, padded: result.padded, name: result.description, slug: result.slug, directory: result.directory },\r\n raw,\r\n result.padded,\r\n );\r\n } catch (e) {\r\n rethrowCliSignals(e);\r\n error((e as Error).message);\r\n }\r\n}\r\n\r\n// ─── Phase insert ───────────────────────────────────────────────────────────\r\n\r\nexport function cmdPhaseInsert(cwd: string, afterPhase: string | undefined, description: string | undefined, raw: boolean): void {\r\n if (!afterPhase || !description) {\r\n error('after-phase and description required for phase insert');\r\n }\r\n\r\n try {\r\n const result = phaseInsertCore(cwd, afterPhase, description, { includeStubs: false });\r\n output(\r\n { phase_number: result.phase_number, after_phase: result.after_phase, name: result.description, slug: result.slug, directory: result.directory },\r\n raw,\r\n result.phase_number,\r\n );\r\n } catch (e) {\r\n rethrowCliSignals(e);\r\n error((e as Error).message);\r\n }\r\n}\r\n\r\n// ─── Phase remove ───────────────────────────────────────────────────────────\r\n\r\nexport function cmdPhaseRemove(\r\n cwd: string,\r\n targetPhase: string | undefined,\r\n options: { force: boolean },\r\n raw: boolean,\r\n): void {\r\n if (!targetPhase) {\r\n error('phase number required for phase remove');\r\n }\r\n\r\n const rmPath = roadmapPath(cwd);\r\n const phasesDirPath = phasesPath(cwd);\r\n const force = options.force || false;\r\n\r\n if (!fs.existsSync(rmPath)) {\r\n error('ROADMAP.md not found');\r\n }\r\n\r\n const normalized = normalizePhaseName(targetPhase);\r\n const isDecimal = targetPhase.includes('.');\r\n\r\n let targetDir: string | null = null;\r\n try {\r\n const dirs = listSubDirs(phasesDirPath, true);\r\n targetDir = dirs.find(d => d.startsWith(normalized + '-') || d === normalized) || null;\r\n } catch (e) {\r\n /* optional op, ignore */\r\n debugLog(e);\r\n }\r\n\r\n if (targetDir && !force) {\r\n const targetPath = path.join(phasesDirPath, targetDir);\r\n const files = fs.readdirSync(targetPath);\r\n const summaries = files.filter(isSummaryFile);\r\n if (summaries.length > 0) {\r\n error(`Phase ${targetPhase} has ${summaries.length} executed plan(s). Use --force to remove anyway.`);\r\n }\r\n }\r\n\r\n if (targetDir) {\r\n fs.rmSync(path.join(phasesDirPath, targetDir), { recursive: true, force: true });\r\n }\r\n\r\n const renamedDirs: Array<{ from: string; to: string }> = [];\r\n const renamedFiles: Array<{ from: string; to: string }> = [];\r\n\r\n if (isDecimal) {\r\n const baseParts = normalized.split('.');\r\n const baseInt = baseParts[0];\r\n const removedDecimal = parseInt(baseParts[1], 10);\r\n\r\n try {\r\n const dirs = listSubDirs(phasesDirPath, true);\r\n\r\n const decPattern = new RegExp(`^${baseInt}\\\\.(\\\\d+)-(.+)$`);\r\n const toRename: Array<{ dir: string; oldDecimal: number; slug: string }> = [];\r\n for (const dir of dirs) {\r\n const dm = dir.match(decPattern);\r\n if (dm && parseInt(dm[1], 10) > removedDecimal) {\r\n toRename.push({ dir, oldDecimal: parseInt(dm[1], 10), slug: dm[2] });\r\n }\r\n }\r\n\r\n toRename.sort((a, b) => b.oldDecimal - a.oldDecimal);\r\n\r\n for (const item of toRename) {\r\n const newDecimal = item.oldDecimal - 1;\r\n const oldPhaseId = `${baseInt}.${item.oldDecimal}`;\r\n const newPhaseId = `${baseInt}.${newDecimal}`;\r\n const newDirName = `${baseInt}.${newDecimal}-${item.slug}`;\r\n\r\n fs.renameSync(path.join(phasesDirPath, item.dir), path.join(phasesDirPath, newDirName));\r\n renamedDirs.push({ from: item.dir, to: newDirName });\r\n\r\n const dirFiles = fs.readdirSync(path.join(phasesDirPath, newDirName));\r\n for (const f of dirFiles) {\r\n if (f.includes(oldPhaseId)) {\r\n const newFileName = f.replace(oldPhaseId, newPhaseId);\r\n fs.renameSync(\r\n path.join(phasesDirPath, newDirName, f),\r\n path.join(phasesDirPath, newDirName, newFileName),\r\n );\r\n renamedFiles.push({ from: f, to: newFileName });\r\n }\r\n }\r\n }\r\n } catch (e) {\r\n /* optional op, ignore */\r\n debugLog(e);\r\n }\r\n } else {\r\n const removedInt = parseInt(normalized, 10);\r\n\r\n try {\r\n const dirs = listSubDirs(phasesDirPath, true);\r\n\r\n const toRename: Array<{ dir: string; oldInt: number; letter: string; decimal: number | null; slug: string }> = [];\r\n for (const dir of dirs) {\r\n const dm = dir.match(/^(\\d+)([A-Z])?(?:\\.(\\d+))?-(.+)$/i);\r\n if (!dm) continue;\r\n const dirInt = parseInt(dm[1], 10);\r\n if (dirInt > removedInt) {\r\n toRename.push({\r\n dir,\r\n oldInt: dirInt,\r\n letter: dm[2] ? dm[2].toUpperCase() : '',\r\n decimal: dm[3] ? parseInt(dm[3], 10) : null,\r\n slug: dm[4],\r\n });\r\n }\r\n }\r\n\r\n toRename.sort((a, b) => {\r\n if (a.oldInt !== b.oldInt) return b.oldInt - a.oldInt;\r\n return (b.decimal || 0) - (a.decimal || 0);\r\n });\r\n\r\n for (const item of toRename) {\r\n const newInt = item.oldInt - 1;\r\n const newPadded = String(newInt).padStart(2, '0');\r\n const oldPadded = String(item.oldInt).padStart(2, '0');\r\n const letterSuffix = item.letter || '';\r\n const decimalSuffix = item.decimal !== null ? `.${item.decimal}` : '';\r\n const oldPrefix = `${oldPadded}${letterSuffix}${decimalSuffix}`;\r\n const newPrefix = `${newPadded}${letterSuffix}${decimalSuffix}`;\r\n const newDirName = `${newPrefix}-${item.slug}`;\r\n\r\n fs.renameSync(path.join(phasesDirPath, item.dir), path.join(phasesDirPath, newDirName));\r\n renamedDirs.push({ from: item.dir, to: newDirName });\r\n\r\n const dirFiles = fs.readdirSync(path.join(phasesDirPath, newDirName));\r\n for (const f of dirFiles) {\r\n if (f.startsWith(oldPrefix)) {\r\n const newFileName = newPrefix + f.slice(oldPrefix.length);\r\n fs.renameSync(\r\n path.join(phasesDirPath, newDirName, f),\r\n path.join(phasesDirPath, newDirName, newFileName),\r\n );\r\n renamedFiles.push({ from: f, to: newFileName });\r\n }\r\n }\r\n }\r\n } catch (e) {\r\n /* optional op, ignore */\r\n debugLog(e);\r\n }\r\n }\r\n\r\n // Update ROADMAP.md\r\n let roadmapContent = fs.readFileSync(rmPath, 'utf-8');\r\n\r\n const targetEscaped = escapePhaseNum(targetPhase);\r\n const sectionPattern = new RegExp(\r\n `\\\\n?#{2,4}\\\\s*Phase\\\\s+${targetEscaped}\\\\s*:[\\\\s\\\\S]*?(?=\\\\n#{2,4}\\\\s+Phase\\\\s+\\\\d|$)`,\r\n 'i',\r\n );\r\n roadmapContent = roadmapContent.replace(sectionPattern, '');\r\n\r\n const checkboxPattern = new RegExp(`\\\\n?-\\\\s*\\\\[[ x]\\\\]\\\\s*.*Phase\\\\s+${targetEscaped}[:\\\\s][^\\\\n]*`, 'gi');\r\n roadmapContent = roadmapContent.replace(checkboxPattern, '');\r\n\r\n const tableRowPattern = new RegExp(`\\\\n?\\\\|\\\\s*${targetEscaped}\\\\.?\\\\s[^|]*\\\\|[^\\\\n]*`, 'gi');\r\n roadmapContent = roadmapContent.replace(tableRowPattern, '');\r\n\r\n if (!isDecimal) {\r\n const removedInt = parseInt(normalized, 10);\r\n const maxPhase = 99;\r\n for (let oldNum = maxPhase; oldNum > removedInt; oldNum--) {\r\n const newNum = oldNum - 1;\r\n const oldStr = String(oldNum);\r\n const newStr = String(newNum);\r\n const oldPad = oldStr.padStart(2, '0');\r\n const newPad = newStr.padStart(2, '0');\r\n\r\n roadmapContent = roadmapContent.replace(\r\n new RegExp(`(#{2,4}\\\\s*Phase\\\\s+)${oldStr}(\\\\s*:)`, 'gi'),\r\n `$1${newStr}$2`,\r\n );\r\n roadmapContent = roadmapContent.replace(\r\n new RegExp(`(Phase\\\\s+)${oldStr}([:\\\\s])`, 'g'),\r\n `$1${newStr}$2`,\r\n );\r\n roadmapContent = roadmapContent.replace(\r\n new RegExp(`${oldPad}-(\\\\d{2})`, 'g'),\r\n `${newPad}-$1`,\r\n );\r\n roadmapContent = roadmapContent.replace(\r\n new RegExp(`(\\\\|\\\\s*)${oldStr}\\\\.\\\\s`, 'g'),\r\n `$1${newStr}. `,\r\n );\r\n roadmapContent = roadmapContent.replace(\r\n new RegExp(`(Depends on:\\\\*\\\\*\\\\s*Phase\\\\s+)${oldStr}\\\\b`, 'gi'),\r\n `$1${newStr}`,\r\n );\r\n }\r\n }\r\n\r\n fs.writeFileSync(rmPath, roadmapContent, 'utf-8');\r\n\r\n // Update STATE.md phase count\r\n const stPath = statePath(cwd);\r\n if (fs.existsSync(stPath)) {\r\n let stateContent = fs.readFileSync(stPath, 'utf-8');\r\n const totalPattern = /(\\*\\*Total Phases:\\*\\*\\s*)(\\d+)/;\r\n const totalMatch = stateContent.match(totalPattern);\r\n if (totalMatch) {\r\n const oldTotal = parseInt(totalMatch[2], 10);\r\n stateContent = stateContent.replace(totalPattern, `$1${oldTotal - 1}`);\r\n }\r\n const ofPattern = /(\\bof\\s+)(\\d+)(\\s*(?:\\(|phases?))/i;\r\n const ofMatch = stateContent.match(ofPattern);\r\n if (ofMatch) {\r\n const oldTotal = parseInt(ofMatch[2], 10);\r\n stateContent = stateContent.replace(ofPattern, `$1${oldTotal - 1}$3`);\r\n }\r\n fs.writeFileSync(stPath, stateContent, 'utf-8');\r\n }\r\n\r\n output({\r\n removed: targetPhase,\r\n directory_deleted: targetDir || null,\r\n renamed_directories: renamedDirs,\r\n renamed_files: renamedFiles,\r\n roadmap_updated: true,\r\n state_updated: fs.existsSync(stPath),\r\n }, raw);\r\n}\r\n\r\n// ─── Phase complete ─────────────────────────────────────────────────────────\r\n\r\nexport function cmdPhaseComplete(cwd: string, phaseNum: string | undefined, raw: boolean): void {\r\n if (!phaseNum) {\r\n error('phase number required for phase complete');\r\n }\r\n\r\n try {\r\n const result = phaseCompleteCore(cwd, phaseNum);\r\n output({\r\n completed_phase: result.completed_phase,\r\n phase_name: result.phase_name,\r\n plans_executed: result.plans_executed,\r\n next_phase: result.next_phase,\r\n next_phase_name: result.next_phase_name,\r\n is_last_phase: result.is_last_phase,\r\n date: result.date,\r\n roadmap_updated: result.roadmap_updated,\r\n state_updated: result.state_updated,\r\n }, raw);\r\n } catch (e) {\r\n rethrowCliSignals(e);\r\n error((e as Error).message);\r\n }\r\n}\r\n","/**\r\n * MCP Utilities — Shared helpers for MCP tools\r\n *\r\n * CRITICAL: Never import output() or error() from core — they call process.exit().\r\n * CRITICAL: Never write to stdout — it is reserved for MCP JSON-RPC protocol.\r\n */\r\n\r\nimport fs from 'node:fs';\r\nimport path from 'node:path';\r\n\r\n/**\r\n * Walk up from startDir to find a directory containing `.planning/`.\r\n * Returns the directory containing `.planning/` or null if not found.\r\n */\r\nlet _cachedRoot: string | null | undefined;\r\n\r\nexport function detectProjectRoot(startDir?: string): string | null {\r\n // Only cache when using default startDir (cwd)\r\n if (startDir === undefined && _cachedRoot !== undefined) {\r\n return _cachedRoot;\r\n }\r\n\r\n let dir = startDir || process.cwd();\r\n\r\n // Safety limit to prevent infinite loops\r\n for (let i = 0; i < 100; i++) {\r\n const planningDir = path.join(dir, '.planning');\r\n try {\r\n const stat = fs.statSync(planningDir);\r\n if (stat.isDirectory()) {\r\n if (startDir === undefined) _cachedRoot = dir;\r\n return dir;\r\n }\r\n } catch {\r\n // Not found here, walk up\r\n }\r\n\r\n const parent = path.dirname(dir);\r\n if (parent === dir) {\r\n // Reached filesystem root\r\n if (startDir === undefined) _cachedRoot = null;\r\n return null;\r\n }\r\n dir = parent;\r\n }\r\n\r\n if (startDir === undefined) _cachedRoot = null;\r\n return null;\r\n}\r\n\r\n/**\r\n * Return a structured MCP success response.\r\n */\r\nexport function mcpSuccess(data: Record, summary: string) {\r\n return {\r\n content: [\r\n {\r\n type: 'text' as const,\r\n text: JSON.stringify({ success: true, data, summary }, null, 2),\r\n },\r\n ],\r\n };\r\n}\r\n\r\n/**\r\n * Return a structured MCP error response.\r\n */\r\nexport function mcpError(error: string, summary: string) {\r\n return {\r\n content: [\r\n {\r\n type: 'text' as const,\r\n text: JSON.stringify({ success: false, error, summary }, null, 2),\r\n },\r\n ],\r\n isError: true as const,\r\n };\r\n}\r\n","/**\r\n * Phase CRUD MCP Tools — Phase operations exposed as MCP tools\r\n *\r\n * CRITICAL: Never import output() or error() from core — they call process.exit().\r\n * CRITICAL: Never write to stdout — it is reserved for MCP JSON-RPC protocol.\r\n * CRITICAL: Never call process.exit() — the server must stay alive after every tool call.\r\n */\r\n\r\nimport fs from 'node:fs';\r\nimport { z } from 'zod';\r\nimport type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\r\n\r\nimport {\r\n findPhaseInternal,\r\n comparePhaseNum,\r\n getArchivedPhaseDirs,\r\n phasesPath,\r\n listSubDirs,\r\n} from '../core/core.js';\r\n\r\nimport {\r\n phaseAddCore,\r\n phaseInsertCore,\r\n phaseCompleteCore,\r\n} from '../core/phase.js';\r\n\r\nimport { detectProjectRoot, mcpSuccess, mcpError } from './utils.js';\r\n\r\n/**\r\n * Register all phase CRUD tools on the MCP server.\r\n */\r\nexport function registerPhaseTools(server: McpServer): void {\r\n // ── mcp_find_phase ──────────────────────────────────────────────────────────\r\n\r\n server.tool(\r\n 'mcp_find_phase',\r\n 'Find a phase directory by number or name. Returns phase details including plans, summaries, and status.',\r\n {\r\n phase: z.string().describe('Phase number or name (e.g. \"01\", \"1\", \"01A\", \"1.1\")'),\r\n },\r\n async ({ phase }) => {\r\n try {\r\n const cwd = detectProjectRoot();\r\n if (!cwd) {\r\n return mcpError('No .planning/ directory found', 'Project not detected');\r\n }\r\n\r\n const result = findPhaseInternal(cwd, phase);\r\n if (!result) {\r\n return mcpError(`Phase ${phase} not found`, 'Phase not found');\r\n }\r\n\r\n return mcpSuccess(\r\n {\r\n found: result.found,\r\n directory: result.directory,\r\n phase_number: result.phase_number,\r\n phase_name: result.phase_name,\r\n phase_slug: result.phase_slug,\r\n plans: result.plans,\r\n summaries: result.summaries,\r\n incomplete_plans: result.incomplete_plans,\r\n has_research: result.has_research,\r\n has_context: result.has_context,\r\n has_verification: result.has_verification,\r\n archived: result.archived ?? null,\r\n },\r\n `Found phase ${result.phase_number}: ${result.phase_name ?? 'unnamed'}`,\r\n );\r\n } catch (e) {\r\n return mcpError((e as Error).message, 'Operation failed');\r\n }\r\n },\r\n );\r\n\r\n // ── mcp_list_phases ─────────────────────────────────────────────────────────\r\n\r\n server.tool(\r\n 'mcp_list_phases',\r\n 'List all phase directories, sorted correctly. Optionally include archived phases from milestones.',\r\n {\r\n include_archived: z\r\n .boolean()\r\n .optional()\r\n .default(false)\r\n .describe('Include archived phases from completed milestones'),\r\n },\r\n async ({ include_archived }) => {\r\n try {\r\n const cwd = detectProjectRoot();\r\n if (!cwd) {\r\n return mcpError('No .planning/ directory found', 'Project not detected');\r\n }\r\n\r\n const phasesDir = phasesPath(cwd);\r\n if (!fs.existsSync(phasesDir)) {\r\n return mcpSuccess(\r\n { directories: [], count: 0 },\r\n 'No phases directory found',\r\n );\r\n }\r\n\r\n let dirs = listSubDirs(phasesDir);\r\n\r\n if (include_archived) {\r\n const archived = getArchivedPhaseDirs(cwd);\r\n for (const a of archived) {\r\n dirs.push(`${a.name} [${a.milestone}]`);\r\n }\r\n }\r\n\r\n dirs.sort((a, b) => comparePhaseNum(a, b));\r\n\r\n return mcpSuccess(\r\n { directories: dirs, count: dirs.length },\r\n `Found ${dirs.length} phase(s)`,\r\n );\r\n } catch (e) {\r\n return mcpError((e as Error).message, 'Operation failed');\r\n }\r\n },\r\n );\r\n\r\n // ── mcp_create_phase ────────────────────────────────────────────────────────\r\n\r\n server.tool(\r\n 'mcp_create_phase',\r\n 'Create a new phase. Adds the next sequential phase directory and appends to ROADMAP.md.',\r\n {\r\n name: z.string().describe('Phase description/name (e.g. \"Authentication System\")'),\r\n },\r\n async ({ name }) => {\r\n try {\r\n const cwd = detectProjectRoot();\r\n if (!cwd) {\r\n return mcpError('No .planning/ directory found', 'Project not detected');\r\n }\r\n\r\n if (!name || !name.trim()) {\r\n return mcpError('Phase name must not be empty', 'Validation failed');\r\n }\r\n\r\n const result = phaseAddCore(cwd, name, { includeStubs: true });\r\n\r\n return mcpSuccess(\r\n {\r\n phase_number: result.phase_number,\r\n padded: result.padded,\r\n name: result.description,\r\n slug: result.slug,\r\n directory: result.directory,\r\n },\r\n `Created Phase ${result.phase_number}: ${result.description}`,\r\n );\r\n } catch (e) {\r\n return mcpError((e as Error).message, 'Operation failed');\r\n }\r\n },\r\n );\r\n\r\n // ── mcp_insert_phase ────────────────────────────────────────────────────────\r\n\r\n server.tool(\r\n 'mcp_insert_phase',\r\n 'Insert a decimal phase after a specified phase (e.g. 01.1 after 01). Creates directory and updates ROADMAP.md.',\r\n {\r\n name: z.string().describe('Phase description/name'),\r\n after: z.string().describe('Phase number to insert after (e.g. \"01\", \"1\")'),\r\n },\r\n async ({ name, after }) => {\r\n try {\r\n const cwd = detectProjectRoot();\r\n if (!cwd) {\r\n return mcpError('No .planning/ directory found', 'Project not detected');\r\n }\r\n\r\n if (!name || !name.trim()) {\r\n return mcpError('Phase name must not be empty', 'Validation failed');\r\n }\r\n\r\n const result = phaseInsertCore(cwd, after, name, { includeStubs: true });\r\n\r\n return mcpSuccess(\r\n {\r\n phase_number: result.phase_number,\r\n after_phase: result.after_phase,\r\n name: result.description,\r\n slug: result.slug,\r\n directory: result.directory,\r\n },\r\n `Inserted Phase ${result.phase_number}: ${result.description} after Phase ${result.after_phase}`,\r\n );\r\n } catch (e) {\r\n return mcpError((e as Error).message, 'Operation failed');\r\n }\r\n },\r\n );\r\n\r\n // ── mcp_complete_phase ──────────────────────────────────────────────────────\r\n\r\n server.tool(\r\n 'mcp_complete_phase',\r\n 'Mark a phase as complete. Updates ROADMAP.md checkbox, progress table, plan count, STATE.md, and REQUIREMENTS.md.',\r\n {\r\n phase: z.string().describe('Phase number to complete (e.g. \"01\", \"1\", \"1.1\")'),\r\n },\r\n async ({ phase }) => {\r\n try {\r\n const cwd = detectProjectRoot();\r\n if (!cwd) {\r\n return mcpError('No .planning/ directory found', 'Project not detected');\r\n }\r\n\r\n const result = phaseCompleteCore(cwd, phase);\r\n\r\n return mcpSuccess(\r\n {\r\n completed_phase: result.completed_phase,\r\n phase_name: result.phase_name,\r\n plans_executed: result.plans_executed,\r\n next_phase: result.next_phase,\r\n next_phase_name: result.next_phase_name,\r\n is_last_phase: result.is_last_phase,\r\n date: result.date,\r\n roadmap_updated: result.roadmap_updated,\r\n state_updated: result.state_updated,\r\n },\r\n `Phase ${phase} marked as complete${result.next_phase ? `, next: Phase ${result.next_phase}` : ''}`,\r\n );\r\n } catch (e) {\r\n return mcpError((e as Error).message, 'Operation failed');\r\n }\r\n },\r\n );\r\n}\r\n","/**\r\n * Commands — Standalone utility commands\r\n *\r\n * Ported from maxsim/bin/lib/commands.cjs\r\n */\r\n\r\nimport fs from 'node:fs';\r\nimport path from 'node:path';\r\n\r\nimport chalk from 'chalk';\r\nimport slugify from 'slugify';\r\nimport {\r\n safeReadFile,\r\n loadConfig,\r\n isGitIgnored,\r\n execGit,\r\n normalizePhaseName,\r\n getArchivedPhaseDirs,\r\n generateSlugInternal,\r\n getMilestoneInfo,\r\n resolveModelInternal,\r\n MODEL_PROFILES,\r\n output,\r\n error,\r\n rethrowCliSignals,\r\n findPhaseInternal,\r\n todayISO,\r\n planningPath,\r\n phasesPath,\r\n listSubDirs,\r\n isPlanFile,\r\n isSummaryFile,\r\n debugLog,\r\n} from './core.js';\r\nimport { extractFrontmatter } from './frontmatter.js';\r\nimport type {\r\n TodoItem,\r\n HistoryDigest,\r\n HistoryPhaseDigest,\r\n WebSearchOptions,\r\n WebSearchResult,\r\n ScaffoldOptions,\r\n TimestampFormat,\r\n ModelProfileName,\r\n AgentType,\r\n FrontmatterData,\r\n} from './types.js';\r\n\r\n// ─── Todo frontmatter parsing ────────────────────────────────────────────────\r\n\r\nexport interface TodoFrontmatter {\r\n created: string;\r\n title: string;\r\n area: string;\r\n completed?: string;\r\n}\r\n\r\nexport function parseTodoFrontmatter(content: string): TodoFrontmatter {\r\n const createdMatch = content.match(/^created:\\s*(.+)$/m);\r\n const titleMatch = content.match(/^title:\\s*(.+)$/m);\r\n const areaMatch = content.match(/^area:\\s*(.+)$/m);\r\n const completedMatch = content.match(/^completed:\\s*(.+)$/m);\r\n\r\n return {\r\n created: createdMatch ? createdMatch[1].trim() : 'unknown',\r\n title: titleMatch ? titleMatch[1].trim() : 'Untitled',\r\n area: areaMatch ? areaMatch[1].trim() : 'general',\r\n ...(completedMatch && { completed: completedMatch[1].trim() }),\r\n };\r\n}\r\n\r\n// ─── Slug generation ────────────────────────────────────────────────────────\r\n\r\nexport function cmdGenerateSlug(text: string | undefined, raw: boolean): void {\r\n if (!text) {\r\n error('text required for slug generation');\r\n }\r\n\r\n const slug = slugify(text, { lower: true, strict: true });\r\n\r\n const result = { slug };\r\n output(result, raw, slug);\r\n}\r\n\r\n// ─── Timestamp ──────────────────────────────────────────────────────────────\r\n\r\nexport function cmdCurrentTimestamp(format: TimestampFormat, raw: boolean): void {\r\n const now = new Date();\r\n let result: string;\r\n\r\n switch (format) {\r\n case 'date':\r\n result = todayISO();\r\n break;\r\n case 'filename':\r\n result = now.toISOString().replace(/:/g, '-').replace(/\\..+/, '');\r\n break;\r\n case 'full':\r\n default:\r\n result = now.toISOString();\r\n break;\r\n }\r\n\r\n output({ timestamp: result }, raw, result);\r\n}\r\n\r\n// ─── Todos ──────────────────────────────────────────────────────────────────\r\n\r\nexport function cmdListTodos(cwd: string, area: string | undefined, raw: boolean): void {\r\n const pendingDir = planningPath(cwd, 'todos', 'pending');\r\n\r\n let count = 0;\r\n const todos: TodoItem[] = [];\r\n\r\n try {\r\n const files = fs.readdirSync(pendingDir).filter(f => f.endsWith('.md'));\r\n\r\n for (const file of files) {\r\n try {\r\n const content = fs.readFileSync(path.join(pendingDir, file), 'utf-8');\r\n const fm = parseTodoFrontmatter(content);\r\n\r\n // Apply area filter if specified\r\n if (area && fm.area !== area) continue;\r\n\r\n count++;\r\n todos.push({\r\n file,\r\n created: fm.created,\r\n title: fm.title,\r\n area: fm.area,\r\n path: path.join('.planning', 'todos', 'pending', file),\r\n });\r\n } catch (e) {\r\n /* optional op, ignore */\r\n debugLog(e);\r\n }\r\n }\r\n } catch (e) {\r\n /* optional op, ignore */\r\n debugLog(e);\r\n }\r\n\r\n const result = { count, todos };\r\n output(result, raw, count.toString());\r\n}\r\n\r\n// ─── Path verification ──────────────────────────────────────────────────────\r\n\r\nexport function cmdVerifyPathExists(cwd: string, targetPath: string | undefined, raw: boolean): void {\r\n if (!targetPath) {\r\n error('path required for verification');\r\n }\r\n\r\n const fullPath = path.isAbsolute(targetPath) ? targetPath : path.join(cwd, targetPath);\r\n\r\n try {\r\n const stats = fs.statSync(fullPath);\r\n const type = stats.isDirectory() ? 'directory' : stats.isFile() ? 'file' : 'other';\r\n const result = { exists: true, type };\r\n output(result, raw, 'true');\r\n } catch (e: unknown) {\r\n rethrowCliSignals(e);\r\n const result = { exists: false, type: null };\r\n output(result, raw, 'false');\r\n }\r\n}\r\n\r\n// ─── History digest ─────────────────────────────────────────────────────────\r\n\r\nexport function cmdHistoryDigest(cwd: string, raw: boolean): void {\r\n const phasesDir = phasesPath(cwd);\r\n const digest: {\r\n phases: Record; affects: Set; patterns: Set }>;\r\n decisions: Array<{ phase: string; decision: string }>;\r\n tech_stack: Set | string[];\r\n } = { phases: {}, decisions: [], tech_stack: new Set() };\r\n\r\n // Collect all phase directories: archived + current\r\n const allPhaseDirs: Array<{ name: string; fullPath: string; milestone: string | null }> = [];\r\n\r\n // Add archived phases first (oldest milestones first)\r\n const archived = getArchivedPhaseDirs(cwd);\r\n for (const a of archived) {\r\n allPhaseDirs.push({ name: a.name, fullPath: a.fullPath, milestone: a.milestone });\r\n }\r\n\r\n // Add current phases\r\n if (fs.existsSync(phasesDir)) {\r\n try {\r\n const currentDirs = listSubDirs(phasesDir, true);\r\n for (const dir of currentDirs) {\r\n allPhaseDirs.push({ name: dir, fullPath: path.join(phasesDir, dir), milestone: null });\r\n }\r\n } catch (e) {\r\n /* optional op, ignore */\r\n debugLog(e);\r\n }\r\n }\r\n\r\n if (allPhaseDirs.length === 0) {\r\n const emptyDigest: HistoryDigest = { phases: {}, decisions: [], tech_stack: [] };\r\n output(emptyDigest, raw);\r\n return;\r\n }\r\n\r\n try {\r\n for (const { name: dir, fullPath: dirPath } of allPhaseDirs) {\r\n const summaries = fs.readdirSync(dirPath).filter(f => isSummaryFile(f));\r\n\r\n for (const summary of summaries) {\r\n try {\r\n const content = fs.readFileSync(path.join(dirPath, summary), 'utf-8');\r\n const fm = extractFrontmatter(content);\r\n\r\n const phaseNum = (fm.phase as string) || dir.split('-')[0];\r\n\r\n if (!digest.phases[phaseNum]) {\r\n digest.phases[phaseNum] = {\r\n name: (fm.name as string) || dir.split('-').slice(1).join(' ') || 'Unknown',\r\n provides: new Set(),\r\n affects: new Set(),\r\n patterns: new Set(),\r\n };\r\n }\r\n\r\n // Merge provides\r\n const depGraph = fm['dependency-graph'] as FrontmatterData | undefined;\r\n if (depGraph && depGraph.provides) {\r\n (depGraph.provides as string[]).forEach(p => digest.phases[phaseNum].provides.add(p));\r\n } else if (fm.provides) {\r\n (fm.provides as string[]).forEach(p => digest.phases[phaseNum].provides.add(p));\r\n }\r\n\r\n // Merge affects\r\n if (depGraph && depGraph.affects) {\r\n (depGraph.affects as string[]).forEach(a => digest.phases[phaseNum].affects.add(a));\r\n }\r\n\r\n // Merge patterns\r\n if (fm['patterns-established']) {\r\n (fm['patterns-established'] as string[]).forEach(p => digest.phases[phaseNum].patterns.add(p));\r\n }\r\n\r\n // Merge decisions\r\n if (fm['key-decisions']) {\r\n (fm['key-decisions'] as string[]).forEach(d => {\r\n digest.decisions.push({ phase: phaseNum, decision: d });\r\n });\r\n }\r\n\r\n // Merge tech stack\r\n const techStack = fm['tech-stack'] as FrontmatterData | undefined;\r\n if (techStack && techStack.added) {\r\n (techStack.added as Array).forEach(t =>\r\n (digest.tech_stack as Set).add(typeof t === 'string' ? t : (t as FrontmatterData).name as string)\r\n );\r\n }\r\n } catch (e) {\r\n /* optional op, ignore */\r\n debugLog(e);\r\n }\r\n }\r\n }\r\n\r\n // Convert Sets to Arrays for JSON output\r\n const outputDigest: HistoryDigest = {\r\n phases: {},\r\n decisions: digest.decisions,\r\n tech_stack: [...(digest.tech_stack as Set)],\r\n };\r\n for (const [p, data] of Object.entries(digest.phases)) {\r\n outputDigest.phases[p] = {\r\n name: data.name,\r\n provides: [...data.provides],\r\n affects: [...data.affects],\r\n patterns: [...data.patterns],\r\n };\r\n }\r\n\r\n output(outputDigest, raw);\r\n } catch (e: unknown) {\r\n rethrowCliSignals(e);\r\n error('Failed to generate history digest: ' + (e as Error).message);\r\n }\r\n}\r\n\r\n// ─── Model resolution ───────────────────────────────────────────────────────\r\n\r\nexport function cmdResolveModel(cwd: string, agentType: string | undefined, raw: boolean): void {\r\n if (!agentType) {\r\n error('agent-type required');\r\n }\r\n\r\n const config = loadConfig(cwd);\r\n const profile: ModelProfileName = config.model_profile || 'balanced';\r\n\r\n const agentModels = MODEL_PROFILES[agentType as AgentType];\r\n if (!agentModels) {\r\n const result = { model: 'sonnet', profile, unknown_agent: true };\r\n output(result, raw, 'sonnet');\r\n return;\r\n }\r\n\r\n const resolved = agentModels[profile] || agentModels['balanced'] || 'sonnet';\r\n const model = resolved === 'opus' ? 'inherit' : resolved;\r\n const result = { model, profile };\r\n output(result, raw, model);\r\n}\r\n\r\n// ─── Commit ─────────────────────────────────────────────────────────────────\r\n\r\nexport async function cmdCommit(\r\n cwd: string,\r\n message: string | undefined,\r\n files: string[],\r\n raw: boolean,\r\n amend: boolean,\r\n): Promise {\r\n if (!message && !amend) {\r\n error('commit message required');\r\n }\r\n\r\n const config = loadConfig(cwd);\r\n\r\n // Check commit_docs config\r\n if (!config.commit_docs) {\r\n const result = { committed: false, hash: null, reason: 'skipped_commit_docs_false' };\r\n output(result, raw, 'skipped');\r\n return;\r\n }\r\n\r\n // Check if .planning is gitignored\r\n if (await isGitIgnored(cwd, '.planning')) {\r\n const result = { committed: false, hash: null, reason: 'skipped_gitignored' };\r\n output(result, raw, 'skipped');\r\n return;\r\n }\r\n\r\n // Stage files\r\n const filesToStage = files && files.length > 0 ? files : ['.planning/'];\r\n for (const file of filesToStage) {\r\n await execGit(cwd, ['add', file]);\r\n }\r\n\r\n // Commit\r\n const commitArgs = amend ? ['commit', '--amend', '--no-edit'] : ['commit', '-m', message!];\r\n const commitResult = await execGit(cwd, commitArgs);\r\n if (commitResult.exitCode !== 0) {\r\n if (commitResult.stdout.includes('nothing to commit') || commitResult.stderr.includes('nothing to commit')) {\r\n const result = { committed: false, hash: null, reason: 'nothing_to_commit' };\r\n output(result, raw, 'nothing');\r\n return;\r\n }\r\n const result = { committed: false, hash: null, reason: 'nothing_to_commit', error: commitResult.stderr };\r\n output(result, raw, 'nothing');\r\n return;\r\n }\r\n\r\n // Get short hash\r\n const hashResult = await execGit(cwd, ['rev-parse', '--short', 'HEAD']);\r\n const hash = hashResult.exitCode === 0 ? hashResult.stdout : null;\r\n const result = { committed: true, hash, reason: 'committed' };\r\n output(result, raw, hash || 'committed');\r\n}\r\n\r\n// ─── Summary extract ────────────────────────────────────────────────────────\r\n\r\nexport function cmdSummaryExtract(\r\n cwd: string,\r\n summaryPath: string | undefined,\r\n fields: string[] | null,\r\n raw: boolean,\r\n): void {\r\n if (!summaryPath) {\r\n error('summary-path required for summary-extract');\r\n }\r\n\r\n const fullPath = path.join(cwd, summaryPath);\r\n\r\n if (!fs.existsSync(fullPath)) {\r\n output({ error: 'File not found', path: summaryPath }, raw);\r\n return;\r\n }\r\n\r\n const content = fs.readFileSync(fullPath, 'utf-8');\r\n const fm = extractFrontmatter(content);\r\n\r\n // Parse key-decisions into structured format\r\n const parseDecisions = (decisionsList: unknown): Array<{ summary: string; rationale: string | null }> => {\r\n if (!decisionsList || !Array.isArray(decisionsList)) return [];\r\n return decisionsList.map((d: string) => {\r\n const colonIdx = d.indexOf(':');\r\n if (colonIdx > 0) {\r\n return {\r\n summary: d.substring(0, colonIdx).trim(),\r\n rationale: d.substring(colonIdx + 1).trim(),\r\n };\r\n }\r\n return { summary: d, rationale: null };\r\n });\r\n };\r\n\r\n const techStack = fm['tech-stack'] as FrontmatterData | undefined;\r\n\r\n // Build full result\r\n const fullResult: Record = {\r\n path: summaryPath,\r\n one_liner: fm['one-liner'] || null,\r\n key_files: fm['key-files'] || [],\r\n tech_added: (techStack && techStack.added) || [],\r\n patterns: fm['patterns-established'] || [],\r\n decisions: parseDecisions(fm['key-decisions']),\r\n requirements_completed: fm['requirements-completed'] || [],\r\n };\r\n\r\n // If fields specified, filter to only those fields\r\n if (fields && fields.length > 0) {\r\n const filtered: Record = { path: summaryPath };\r\n for (const field of fields) {\r\n if (fullResult[field] !== undefined) {\r\n filtered[field] = fullResult[field];\r\n }\r\n }\r\n output(filtered, raw);\r\n return;\r\n }\r\n\r\n output(fullResult, raw);\r\n}\r\n\r\n// ─── Web search ─────────────────────────────────────────────────────────────\r\n\r\nexport async function cmdWebsearch(\r\n query: string | undefined,\r\n options: WebSearchOptions,\r\n raw: boolean,\r\n): Promise {\r\n const apiKey = process.env.BRAVE_API_KEY;\r\n\r\n if (!apiKey) {\r\n output({ available: false, reason: 'BRAVE_API_KEY not set' }, raw, '');\r\n return;\r\n }\r\n\r\n if (!query) {\r\n output({ available: false, error: 'Query required' }, raw, '');\r\n return;\r\n }\r\n\r\n const params = new URLSearchParams({\r\n q: query,\r\n count: String(options.limit || 10),\r\n country: 'us',\r\n search_lang: 'en',\r\n text_decorations: 'false',\r\n });\r\n\r\n if (options.freshness) {\r\n params.set('freshness', options.freshness);\r\n }\r\n\r\n try {\r\n const response = await fetch(\r\n `https://api.search.brave.com/res/v1/web/search?${params}`,\r\n {\r\n headers: {\r\n Accept: 'application/json',\r\n 'X-Subscription-Token': apiKey,\r\n },\r\n },\r\n );\r\n\r\n if (!response.ok) {\r\n output({ available: false, error: `API error: ${response.status}` }, raw, '');\r\n return;\r\n }\r\n\r\n const data = (await response.json()) as { web?: { results?: Array<{ title: string; url: string; description: string; age?: string }> } };\r\n\r\n const results: WebSearchResult[] = (data.web?.results || []).map(r => ({\r\n title: r.title,\r\n url: r.url,\r\n description: r.description,\r\n age: r.age || null,\r\n }));\r\n\r\n output(\r\n {\r\n available: true,\r\n query,\r\n count: results.length,\r\n results,\r\n },\r\n raw,\r\n results.map(r => `${r.title}\\n${r.url}\\n${r.description}`).join('\\n\\n'),\r\n );\r\n } catch (err: unknown) {\r\n rethrowCliSignals(err);\r\n output({ available: false, error: (err as Error).message }, raw, '');\r\n }\r\n}\r\n\r\n// ─── Progress render ────────────────────────────────────────────────────────\r\n\r\nexport function cmdProgressRender(cwd: string, format: string, raw: boolean): void {\r\n const phasesDir = phasesPath(cwd);\r\n const milestone = getMilestoneInfo(cwd);\r\n\r\n const phases: Array<{ number: string; name: string; plans: number; summaries: number; status: string }> = [];\r\n let totalPlans = 0;\r\n let totalSummaries = 0;\r\n\r\n try {\r\n const entries = fs.readdirSync(phasesDir, { withFileTypes: true });\r\n const dirs = entries\r\n .filter(e => e.isDirectory())\r\n .map(e => e.name)\r\n .sort((a, b) => {\r\n const aNum = parseFloat(a.match(/^(\\d+(?:\\.\\d+)?)/)?.[1] || '0');\r\n const bNum = parseFloat(b.match(/^(\\d+(?:\\.\\d+)?)/)?.[1] || '0');\r\n return aNum - bNum;\r\n });\r\n\r\n for (const dir of dirs) {\r\n const dm = dir.match(/^(\\d+(?:\\.\\d+)?)-?(.*)/);\r\n const phaseNum = dm ? dm[1] : dir;\r\n const phaseName = dm && dm[2] ? dm[2].replace(/-/g, ' ') : '';\r\n const phaseFiles = fs.readdirSync(path.join(phasesDir, dir));\r\n const planCount = phaseFiles.filter(f => isPlanFile(f)).length;\r\n const summaryCount = phaseFiles.filter(f => isSummaryFile(f)).length;\r\n\r\n totalPlans += planCount;\r\n totalSummaries += summaryCount;\r\n\r\n let status: string;\r\n if (planCount === 0) status = 'Pending';\r\n else if (summaryCount >= planCount) status = 'Complete';\r\n else if (summaryCount > 0) status = 'In Progress';\r\n else status = 'Planned';\r\n\r\n phases.push({ number: phaseNum, name: phaseName, plans: planCount, summaries: summaryCount, status });\r\n }\r\n } catch (e) {\r\n /* optional op, ignore */\r\n debugLog(e);\r\n }\r\n\r\n const percent = totalPlans > 0 ? Math.min(100, Math.round((totalSummaries / totalPlans) * 100)) : 0;\r\n\r\n if (format === 'table') {\r\n const barWidth = 10;\r\n const filled = Math.round((percent / 100) * barWidth);\r\n const bar = '\\u2588'.repeat(filled) + '\\u2591'.repeat(barWidth - filled);\r\n let out = `# ${milestone.version} ${milestone.name}\\n\\n`;\r\n out += `**Progress:** [${bar}] ${totalSummaries}/${totalPlans} plans (${percent}%)\\n\\n`;\r\n out += `| Phase | Name | Plans | Status |\\n`;\r\n out += `|-------|------|-------|--------|\\n`;\r\n for (const p of phases) {\r\n out += `| ${p.number} | ${p.name} | ${p.summaries}/${p.plans} | ${p.status} |\\n`;\r\n }\r\n output({ rendered: out }, raw, out);\r\n } else if (format === 'bar') {\r\n const barWidth = 20;\r\n const filled = Math.round((percent / 100) * barWidth);\r\n const bar = '\\u2588'.repeat(filled) + '\\u2591'.repeat(barWidth - filled);\r\n const text = `[${bar}] ${totalSummaries}/${totalPlans} plans (${percent}%)`;\r\n output({ bar: text, percent, completed: totalSummaries, total: totalPlans }, raw, text);\r\n } else if (format === 'phase-bars') {\r\n const doneCount = phases.filter(p => p.status === 'Complete').length;\r\n const inProgressCount = phases.filter(p => p.status === 'In Progress').length;\r\n const totalCount = phases.length;\r\n const header = chalk.bold(\r\n `Milestone: ${milestone.name} — ${doneCount}/${totalCount} phases complete (${percent}%)`\r\n );\r\n const lines: string[] = [header, ''];\r\n\r\n for (const p of phases) {\r\n const pPercent =\r\n p.plans > 0 ? Math.min(100, Math.round((p.summaries / p.plans) * 100)) : 0;\r\n const barWidth = 10;\r\n const filled = Math.round((pPercent / 100) * barWidth);\r\n const bar = '\\u2588'.repeat(filled) + '\\u2591'.repeat(barWidth - filled);\r\n const phaseLabel = `Phase ${p.number.padStart(2, '0')}`;\r\n const statusLabel =\r\n p.status === 'Complete'\r\n ? 'DONE'\r\n : p.status === 'In Progress'\r\n ? 'IN PROGRESS'\r\n : 'PLANNED';\r\n\r\n let line = `${phaseLabel} [${bar}] ${String(pPercent).padStart(3, ' ')}% — ${statusLabel}`;\r\n if (p.status === 'Complete') line = chalk.green(line);\r\n else if (p.status === 'In Progress') line = chalk.yellow(line);\r\n else line = chalk.dim(line);\r\n\r\n lines.push(line);\r\n }\r\n\r\n const rendered = lines.join('\\n');\r\n output({ rendered, done: doneCount, in_progress: inProgressCount, total: totalCount, percent }, raw, rendered);\r\n } else {\r\n output({\r\n milestone_version: milestone.version,\r\n milestone_name: milestone.name,\r\n phases,\r\n total_plans: totalPlans,\r\n total_summaries: totalSummaries,\r\n percent,\r\n }, raw);\r\n }\r\n}\r\n\r\n// ─── Todo complete ──────────────────────────────────────────────────────────\r\n\r\nexport function cmdTodoComplete(cwd: string, filename: string | undefined, raw: boolean): void {\r\n if (!filename) {\r\n error('filename required for todo complete');\r\n }\r\n\r\n const pendingDir = planningPath(cwd, 'todos', 'pending');\r\n const completedDir = planningPath(cwd, 'todos', 'completed');\r\n const sourcePath = path.join(pendingDir, filename);\r\n\r\n if (!fs.existsSync(sourcePath)) {\r\n error(`Todo not found: ${filename}`);\r\n }\r\n\r\n // Ensure completed directory exists\r\n fs.mkdirSync(completedDir, { recursive: true });\r\n\r\n // Read, add completion timestamp, move\r\n let content = fs.readFileSync(sourcePath, 'utf-8');\r\n const today = todayISO();\r\n content = `completed: ${today}\\n` + content;\r\n\r\n fs.writeFileSync(path.join(completedDir, filename), content, 'utf-8');\r\n fs.unlinkSync(sourcePath);\r\n\r\n output({ completed: true, file: filename, date: today }, raw, 'completed');\r\n}\r\n\r\n// ─── Scaffold ───────────────────────────────────────────────────────────────\r\n\r\nexport function cmdScaffold(\r\n cwd: string,\r\n type: string | undefined,\r\n options: ScaffoldOptions,\r\n raw: boolean,\r\n): void {\r\n const { phase, name } = options;\r\n const padded = phase ? normalizePhaseName(phase) : '00';\r\n const today = todayISO();\r\n\r\n // Find phase directory\r\n const phaseInfo = phase ? findPhaseInternal(cwd, phase) : null;\r\n const phaseDir = phaseInfo ? path.join(cwd, phaseInfo.directory) : null;\r\n\r\n if (phase && !phaseDir && type !== 'phase-dir') {\r\n error(`Phase ${phase} directory not found`);\r\n }\r\n\r\n let filePath: string;\r\n let content: string;\r\n\r\n switch (type) {\r\n case 'context': {\r\n filePath = path.join(phaseDir!, `${padded}-CONTEXT.md`);\r\n content = `---\\nphase: \"${padded}\"\\nname: \"${name || phaseInfo?.phase_name || 'Unnamed'}\"\\ncreated: ${today}\\n---\\n\\n# Phase ${phase}: ${name || phaseInfo?.phase_name || 'Unnamed'} — Context\\n\\n## Decisions\\n\\n_Decisions will be captured during /maxsim:discuss-phase ${phase}_\\n\\n## Discretion Areas\\n\\n_Areas where the executor can use judgment_\\n\\n## Deferred Ideas\\n\\n_Ideas to consider later_\\n`;\r\n break;\r\n }\r\n case 'uat': {\r\n filePath = path.join(phaseDir!, `${padded}-UAT.md`);\r\n content = `---\\nphase: \"${padded}\"\\nname: \"${name || phaseInfo?.phase_name || 'Unnamed'}\"\\ncreated: ${today}\\nstatus: pending\\n---\\n\\n# Phase ${phase}: ${name || phaseInfo?.phase_name || 'Unnamed'} — User Acceptance Testing\\n\\n## Test Results\\n\\n| # | Test | Status | Notes |\\n|---|------|--------|-------|\\n\\n## Summary\\n\\n_Pending UAT_\\n`;\r\n break;\r\n }\r\n case 'verification': {\r\n filePath = path.join(phaseDir!, `${padded}-VERIFICATION.md`);\r\n content = `---\\nphase: \"${padded}\"\\nname: \"${name || phaseInfo?.phase_name || 'Unnamed'}\"\\ncreated: ${today}\\nstatus: pending\\n---\\n\\n# Phase ${phase}: ${name || phaseInfo?.phase_name || 'Unnamed'} — Verification\\n\\n## Goal-Backward Verification\\n\\n**Phase Goal:** [From ROADMAP.md]\\n\\n## Checks\\n\\n| # | Requirement | Status | Evidence |\\n|---|------------|--------|----------|\\n\\n## Result\\n\\n_Pending verification_\\n`;\r\n break;\r\n }\r\n case 'phase-dir': {\r\n if (!phase || !name) {\r\n error('phase and name required for phase-dir scaffold');\r\n }\r\n const slug = generateSlugInternal(name);\r\n const dirName = `${padded}-${slug}`;\r\n const phasesParent = phasesPath(cwd);\r\n fs.mkdirSync(phasesParent, { recursive: true });\r\n const dirPath = path.join(phasesParent, dirName);\r\n fs.mkdirSync(dirPath, { recursive: true });\r\n output({ created: true, directory: `.planning/phases/${dirName}`, path: dirPath }, raw, dirPath);\r\n return;\r\n }\r\n default:\r\n error(`Unknown scaffold type: ${type}. Available: context, uat, verification, phase-dir`);\r\n return; // unreachable but satisfies TS\r\n }\r\n\r\n if (fs.existsSync(filePath)) {\r\n output({ created: false, reason: 'already_exists', path: filePath }, raw, 'exists');\r\n return;\r\n }\r\n\r\n fs.writeFileSync(filePath, content, 'utf-8');\r\n const relPath = path.relative(cwd, filePath);\r\n output({ created: true, path: relPath }, raw, relPath);\r\n}\r\n","/**\r\n * Todo CRUD MCP Tools — Todo operations exposed as MCP tools\r\n *\r\n * CRITICAL: Never import output() or error() from core — they call process.exit().\r\n * CRITICAL: Never write to stdout — it is reserved for MCP JSON-RPC protocol.\r\n * CRITICAL: Never call process.exit() — the server must stay alive after every tool call.\r\n */\r\n\r\nimport fs from 'node:fs';\r\nimport path from 'node:path';\r\nimport { z } from 'zod';\r\nimport type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\r\n\r\nimport { generateSlugInternal, todayISO, planningPath } from '../core/core.js';\r\nimport { parseTodoFrontmatter } from '../core/commands.js';\r\nimport { detectProjectRoot, mcpSuccess, mcpError } from './utils.js';\r\n\r\n/**\r\n * Register all todo CRUD tools on the MCP server.\r\n */\r\nexport function registerTodoTools(server: McpServer): void {\r\n // ── mcp_add_todo ────────────────────────────────────────────────────────────\r\n\r\n server.tool(\r\n 'mcp_add_todo',\r\n 'Create a new todo item in .planning/todos/pending/ with frontmatter metadata.',\r\n {\r\n title: z.string().describe('Title of the todo item'),\r\n description: z.string().optional().describe('Optional description body'),\r\n area: z.string().optional().default('general').describe('Area/category (default: general)'),\r\n phase: z.string().optional().describe('Associated phase number'),\r\n },\r\n async ({ title, description, area, phase }) => {\r\n try {\r\n const cwd = detectProjectRoot();\r\n if (!cwd) {\r\n return mcpError('No .planning/ directory found', 'Project not detected');\r\n }\r\n\r\n const pendingDir = planningPath(cwd, 'todos', 'pending');\r\n fs.mkdirSync(pendingDir, { recursive: true });\r\n\r\n const today = todayISO();\r\n const slug = generateSlugInternal(title) || 'untitled';\r\n const timestamp = Date.now();\r\n const filename = `${timestamp}-${slug}.md`;\r\n const filePath = path.join(pendingDir, filename);\r\n\r\n const content = `---\\ncreated: ${today}\\ntitle: ${title}\\narea: ${area || 'general'}\\nphase: ${phase || 'unassigned'}\\n---\\n${description || ''}\\n`;\r\n\r\n fs.writeFileSync(filePath, content, 'utf-8');\r\n\r\n return mcpSuccess(\r\n {\r\n file: filename,\r\n path: `.planning/todos/pending/${filename}`,\r\n title,\r\n area: area || 'general',\r\n },\r\n `Todo created: ${title}`,\r\n );\r\n } catch (e) {\r\n return mcpError((e as Error).message, 'Operation failed');\r\n }\r\n },\r\n );\r\n\r\n // ── mcp_complete_todo ───────────────────────────────────────────────────────\r\n\r\n server.tool(\r\n 'mcp_complete_todo',\r\n 'Mark a pending todo as completed by moving it from pending/ to completed/ with a completion timestamp.',\r\n {\r\n todo_id: z.string().describe('Filename of the todo (e.g., 1234567890-my-task.md)'),\r\n },\r\n async ({ todo_id }) => {\r\n try {\r\n const cwd = detectProjectRoot();\r\n if (!cwd) {\r\n return mcpError('No .planning/ directory found', 'Project not detected');\r\n }\r\n\r\n const pendingDir = planningPath(cwd, 'todos', 'pending');\r\n const completedDir = planningPath(cwd, 'todos', 'completed');\r\n const sourcePath = path.join(pendingDir, todo_id);\r\n\r\n if (!fs.existsSync(sourcePath)) {\r\n return mcpError(`Todo not found in pending: ${todo_id}`, 'Todo not found');\r\n }\r\n\r\n fs.mkdirSync(completedDir, { recursive: true });\r\n\r\n let content = fs.readFileSync(sourcePath, 'utf-8');\r\n const today = todayISO();\r\n content = `completed: ${today}\\n` + content;\r\n\r\n fs.writeFileSync(path.join(completedDir, todo_id), content, 'utf-8');\r\n fs.unlinkSync(sourcePath);\r\n\r\n return mcpSuccess(\r\n { completed: true, file: todo_id, date: today },\r\n `Todo completed: ${todo_id}`,\r\n );\r\n } catch (e) {\r\n return mcpError((e as Error).message, 'Operation failed');\r\n }\r\n },\r\n );\r\n\r\n // ── mcp_list_todos ──────────────────────────────────────────────────────────\r\n\r\n server.tool(\r\n 'mcp_list_todos',\r\n 'List todo items, optionally filtered by area and status (pending, completed, or all).',\r\n {\r\n area: z.string().optional().describe('Filter by area/category'),\r\n status: z\r\n .enum(['pending', 'completed', 'all'])\r\n .optional()\r\n .default('pending')\r\n .describe('Which todos to list (default: pending)'),\r\n },\r\n async ({ area, status }) => {\r\n try {\r\n const cwd = detectProjectRoot();\r\n if (!cwd) {\r\n return mcpError('No .planning/ directory found', 'Project not detected');\r\n }\r\n\r\n const todosBase = planningPath(cwd, 'todos');\r\n const dirs: string[] = [];\r\n\r\n if (status === 'pending' || status === 'all') {\r\n dirs.push(path.join(todosBase, 'pending'));\r\n }\r\n if (status === 'completed' || status === 'all') {\r\n dirs.push(path.join(todosBase, 'completed'));\r\n }\r\n\r\n const todos: Array<{\r\n file: string;\r\n created: string;\r\n title: string;\r\n area: string;\r\n status: string;\r\n path: string;\r\n }> = [];\r\n\r\n for (const dir of dirs) {\r\n const dirStatus = dir.endsWith('pending') ? 'pending' : 'completed';\r\n\r\n let files: string[] = [];\r\n try {\r\n files = fs.readdirSync(dir).filter((f) => f.endsWith('.md'));\r\n } catch {\r\n // Directory may not exist\r\n continue;\r\n }\r\n\r\n for (const file of files) {\r\n try {\r\n const content = fs.readFileSync(path.join(dir, file), 'utf-8');\r\n const fm = parseTodoFrontmatter(content);\r\n\r\n if (area && fm.area !== area) continue;\r\n\r\n todos.push({\r\n file,\r\n created: fm.created,\r\n title: fm.title,\r\n area: fm.area,\r\n status: dirStatus,\r\n path: `.planning/todos/${dirStatus}/${file}`,\r\n });\r\n } catch {\r\n // Skip unreadable files\r\n }\r\n }\r\n }\r\n\r\n return mcpSuccess(\r\n { count: todos.length, todos },\r\n `${todos.length} todos found`,\r\n );\r\n } catch (e) {\r\n return mcpError((e as Error).message, 'Operation failed');\r\n }\r\n },\r\n );\r\n}\r\n","export default function escapeStringRegexp(string) {\n\tif (typeof string !== 'string') {\n\t\tthrow new TypeError('Expected a string');\n\t}\n\n\t// Escape characters with special meaning either inside or outside character sets.\n\t// Use a simple backslash escape when it’s always valid, and a `\\xnn` escape when the simpler form would be disallowed by Unicode patterns’ stricter grammar.\n\treturn string\n\t\t.replace(/[|\\\\{}()[\\]^$+*?.]/g, '\\\\$&')\n\t\t.replace(/-/g, '\\\\x2d');\n}\n","/**\r\n * State — STATE.md operations and progression engine\r\n *\r\n * Ported from maxsim/bin/lib/state.cjs\r\n */\r\n\r\nimport fs from 'node:fs';\r\nimport path from 'node:path';\r\n\r\nimport escapeStringRegexp from 'escape-string-regexp';\r\n\r\nimport { loadConfig, output, error, rethrowCliSignals, safeReadFile, planningPath, statePath as statePathUtil, configPath, roadmapPath, phasesPath, debugLog, todayISO, isPlanFile, isSummaryFile } from './core.js';\r\nimport type {\r\n AppConfig,\r\n StatePatchResult,\r\n StateMetricOptions,\r\n StateDecisionOptions,\r\n StateBlockerOptions,\r\n StateSessionOptions,\r\n StateSnapshot,\r\n Decision,\r\n} from './types.js';\r\n\r\n// ─── Internal helpers ────────────────────────────────────────────────────────\r\n\r\nexport function stateExtractField(content: string, fieldName: string): string | null {\r\n const pattern = new RegExp(`\\\\*\\\\*${fieldName}:\\\\*\\\\*\\\\s*(.+)`, 'i');\r\n const match = content.match(pattern);\r\n return match ? match[1].trim() : null;\r\n}\r\n\r\nexport function stateReplaceField(content: string, fieldName: string, newValue: string): string | null {\r\n const escaped = escapeStringRegexp(fieldName);\r\n const pattern = new RegExp(`(\\\\*\\\\*${escaped}:\\\\*\\\\*\\\\s*)(.*)`, 'i');\r\n if (pattern.test(content)) {\r\n return content.replace(pattern, (_match, prefix: string) => `${prefix}${newValue}`);\r\n }\r\n return null;\r\n}\r\n\r\nfunction readTextArgOrFile(cwd: string, value: string | undefined, filePath: string | undefined, label: string): string | undefined {\r\n if (!filePath) return value;\r\n const resolvedPath = path.isAbsolute(filePath) ? filePath : path.join(cwd, filePath);\r\n try {\r\n return fs.readFileSync(resolvedPath, 'utf-8').trimEnd();\r\n } catch {\r\n throw new Error(`${label} file not found: ${filePath}`);\r\n }\r\n}\r\n\r\n/**\r\n * Append an entry to a section in STATE.md content, removing placeholder text.\r\n * Returns updated content or null if section not found.\r\n */\r\nexport function appendToStateSection(\r\n content: string,\r\n sectionPattern: RegExp,\r\n entry: string,\r\n placeholderPatterns?: RegExp[],\r\n): string | null {\r\n const match = content.match(sectionPattern);\r\n if (!match) return null;\r\n\r\n let sectionBody = match[2];\r\n const defaults = [/None yet\\.?\\s*\\n?/gi, /No decisions yet\\.?\\s*\\n?/gi, /None\\.?\\s*\\n?/gi];\r\n for (const pat of placeholderPatterns || defaults) {\r\n sectionBody = sectionBody.replace(pat, '');\r\n }\r\n sectionBody = sectionBody.trimEnd() + '\\n' + entry + '\\n';\r\n\r\n return content.replace(sectionPattern, (_m, header: string) => `${header}${sectionBody}`);\r\n}\r\n\r\n// ─── State commands ──────────────────────────────────────────────────────────\r\n\r\nexport function cmdStateLoad(cwd: string, raw: boolean): void {\r\n const config: AppConfig = loadConfig(cwd);\r\n let stateRaw = '';\r\n try {\r\n stateRaw = fs.readFileSync(statePathUtil(cwd), 'utf-8');\r\n } catch (e) {\r\n /* optional op, ignore */\r\n debugLog(e);\r\n }\r\n\r\n const configExists = fs.existsSync(configPath(cwd));\r\n const roadmapExists = fs.existsSync(roadmapPath(cwd));\r\n const stateExists = stateRaw.length > 0;\r\n\r\n const result = {\r\n config,\r\n state_raw: stateRaw,\r\n state_exists: stateExists,\r\n roadmap_exists: roadmapExists,\r\n config_exists: configExists,\r\n };\r\n\r\n if (raw) {\r\n const c = config;\r\n const lines = [\r\n `model_profile=${c.model_profile}`,\r\n `commit_docs=${c.commit_docs}`,\r\n `branching_strategy=${c.branching_strategy}`,\r\n `phase_branch_template=${c.phase_branch_template}`,\r\n `milestone_branch_template=${c.milestone_branch_template}`,\r\n `parallelization=${c.parallelization}`,\r\n `research=${c.research}`,\r\n `plan_checker=${c.plan_checker}`,\r\n `verifier=${c.verifier}`,\r\n `config_exists=${configExists}`,\r\n `roadmap_exists=${roadmapExists}`,\r\n `state_exists=${stateExists}`,\r\n ];\r\n output(result, true, lines.join('\\n'));\r\n }\r\n\r\n output(result);\r\n}\r\n\r\nexport function cmdStateGet(cwd: string, section: string | null, raw: boolean): void {\r\n const statePath = statePathUtil(cwd);\r\n try {\r\n const content = fs.readFileSync(statePath, 'utf-8');\r\n\r\n if (!section) {\r\n output({ content }, raw, content);\r\n return;\r\n }\r\n\r\n const fieldEscaped = escapeStringRegexp(section);\r\n\r\n // Check for **field:** value\r\n const fieldPattern = new RegExp(`\\\\*\\\\*${fieldEscaped}:\\\\*\\\\*\\\\s*(.*)`, 'i');\r\n const fieldMatch = content.match(fieldPattern);\r\n if (fieldMatch) {\r\n output({ [section]: fieldMatch[1].trim() }, raw, fieldMatch[1].trim());\r\n return;\r\n }\r\n\r\n // Check for ## Section\r\n const sectionPattern = new RegExp(`##\\\\s*${fieldEscaped}\\\\s*\\n([\\\\s\\\\S]*?)(?=\\\\n##|$)`, 'i');\r\n const sectionMatch = content.match(sectionPattern);\r\n if (sectionMatch) {\r\n output({ [section]: sectionMatch[1].trim() }, raw, sectionMatch[1].trim());\r\n return;\r\n }\r\n\r\n output({ error: `Section or field \"${section}\" not found` }, raw, '');\r\n } catch (e: unknown) {\r\n rethrowCliSignals(e);\r\n error('STATE.md not found');\r\n }\r\n}\r\n\r\nexport function cmdStatePatch(cwd: string, patches: Record, raw: boolean): void {\r\n const statePath = statePathUtil(cwd);\r\n try {\r\n let content = fs.readFileSync(statePath, 'utf-8');\r\n const results: StatePatchResult = { updated: [], failed: [] };\r\n\r\n for (const [field, value] of Object.entries(patches)) {\r\n const fieldEscaped = escapeStringRegexp(field);\r\n const pattern = new RegExp(`(\\\\*\\\\*${fieldEscaped}:\\\\*\\\\*\\\\s*)(.*)`, 'i');\r\n\r\n if (pattern.test(content)) {\r\n content = content.replace(pattern, (_match, prefix: string) => `${prefix}${value}`);\r\n results.updated.push(field);\r\n } else {\r\n results.failed.push(field);\r\n }\r\n }\r\n\r\n if (results.updated.length > 0) {\r\n fs.writeFileSync(statePath, content, 'utf-8');\r\n }\r\n\r\n output(results, raw, results.updated.length > 0 ? 'true' : 'false');\r\n } catch (e: unknown) {\r\n rethrowCliSignals(e);\r\n error('STATE.md not found');\r\n }\r\n}\r\n\r\nexport function cmdStateUpdate(cwd: string, field: string | undefined, value: string | undefined): void {\r\n if (!field || value === undefined) {\r\n error('field and value required for state update');\r\n }\r\n\r\n const statePath = statePathUtil(cwd);\r\n try {\r\n let content = fs.readFileSync(statePath, 'utf-8');\r\n const fieldEscaped = escapeStringRegexp(field);\r\n const pattern = new RegExp(`(\\\\*\\\\*${fieldEscaped}:\\\\*\\\\*\\\\s*)(.*)`, 'i');\r\n if (pattern.test(content)) {\r\n content = content.replace(pattern, (_match, prefix: string) => `${prefix}${value}`);\r\n fs.writeFileSync(statePath, content, 'utf-8');\r\n output({ updated: true });\r\n } else {\r\n output({ updated: false, reason: `Field \"${field}\" not found in STATE.md` });\r\n }\r\n } catch (e: unknown) {\r\n rethrowCliSignals(e);\r\n output({ updated: false, reason: 'STATE.md not found' });\r\n }\r\n}\r\n\r\n// ─── State Progression Engine ────────────────────────────────────────────────\r\n\r\nexport function cmdStateAdvancePlan(cwd: string, raw: boolean): void {\r\n const statePath = statePathUtil(cwd);\r\n if (!fs.existsSync(statePath)) { output({ error: 'STATE.md not found' }, raw); return; }\r\n\r\n let content = fs.readFileSync(statePath, 'utf-8');\r\n const currentPlan = parseInt(stateExtractField(content, 'Current Plan') ?? '', 10);\r\n const totalPlans = parseInt(stateExtractField(content, 'Total Plans in Phase') ?? '', 10);\r\n const today = todayISO();\r\n\r\n if (isNaN(currentPlan) || isNaN(totalPlans)) {\r\n output({ error: 'Cannot parse Current Plan or Total Plans in Phase from STATE.md' }, raw);\r\n return;\r\n }\r\n\r\n if (currentPlan >= totalPlans) {\r\n content = stateReplaceField(content, 'Status', 'Phase complete — ready for verification') || content;\r\n content = stateReplaceField(content, 'Last Activity', today) || content;\r\n fs.writeFileSync(statePath, content, 'utf-8');\r\n output({ advanced: false, reason: 'last_plan', current_plan: currentPlan, total_plans: totalPlans, status: 'ready_for_verification' }, raw, 'false');\r\n } else {\r\n const newPlan = currentPlan + 1;\r\n content = stateReplaceField(content, 'Current Plan', String(newPlan)) || content;\r\n content = stateReplaceField(content, 'Status', 'Ready to execute') || content;\r\n content = stateReplaceField(content, 'Last Activity', today) || content;\r\n fs.writeFileSync(statePath, content, 'utf-8');\r\n output({ advanced: true, previous_plan: currentPlan, current_plan: newPlan, total_plans: totalPlans }, raw, 'true');\r\n }\r\n}\r\n\r\nexport function cmdStateRecordMetric(cwd: string, options: StateMetricOptions, raw: boolean): void {\r\n const statePath = statePathUtil(cwd);\r\n if (!fs.existsSync(statePath)) { output({ error: 'STATE.md not found' }, raw); return; }\r\n\r\n let content = fs.readFileSync(statePath, 'utf-8');\r\n const { phase, plan, duration, tasks, files } = options;\r\n\r\n if (!phase || !plan || !duration) {\r\n output({ error: 'phase, plan, and duration required' }, raw);\r\n return;\r\n }\r\n\r\n const metricsPattern = /(##\\s*Performance Metrics[\\s\\S]*?\\n\\|[^\\n]+\\n\\|[-|\\s]+\\n)([\\s\\S]*?)(?=\\n##|\\n$|$)/i;\r\n const metricsMatch = content.match(metricsPattern);\r\n\r\n if (metricsMatch) {\r\n let tableBody = metricsMatch[2].trimEnd();\r\n const newRow = `| Phase ${phase} P${plan} | ${duration} | ${tasks || '-'} tasks | ${files || '-'} files |`;\r\n\r\n if (tableBody.trim() === '' || tableBody.includes('None yet')) {\r\n tableBody = newRow;\r\n } else {\r\n tableBody = tableBody + '\\n' + newRow;\r\n }\r\n\r\n content = content.replace(metricsPattern, (_match, header: string) => `${header}${tableBody}\\n`);\r\n fs.writeFileSync(statePath, content, 'utf-8');\r\n output({ recorded: true, phase, plan, duration }, raw, 'true');\r\n } else {\r\n output({ recorded: false, reason: 'Performance Metrics section not found in STATE.md' }, raw, 'false');\r\n }\r\n}\r\n\r\nexport function cmdStateUpdateProgress(cwd: string, raw: boolean): void {\r\n const statePath = statePathUtil(cwd);\r\n if (!fs.existsSync(statePath)) { output({ error: 'STATE.md not found' }, raw); return; }\r\n\r\n let content = fs.readFileSync(statePath, 'utf-8');\r\n\r\n const phasesDir = phasesPath(cwd);\r\n let totalPlans = 0;\r\n let totalSummaries = 0;\r\n\r\n if (fs.existsSync(phasesDir)) {\r\n const phaseDirs = fs.readdirSync(phasesDir, { withFileTypes: true })\r\n .filter(e => e.isDirectory()).map(e => e.name);\r\n for (const dir of phaseDirs) {\r\n const files = fs.readdirSync(path.join(phasesDir, dir));\r\n totalPlans += files.filter(f => isPlanFile(f)).length;\r\n totalSummaries += files.filter(f => isSummaryFile(f)).length;\r\n }\r\n }\r\n\r\n const percent = totalPlans > 0 ? Math.min(100, Math.round(totalSummaries / totalPlans * 100)) : 0;\r\n const barWidth = 10;\r\n const filled = Math.round(percent / 100 * barWidth);\r\n const bar = '\\u2588'.repeat(filled) + '\\u2591'.repeat(barWidth - filled);\r\n const progressStr = `[${bar}] ${percent}%`;\r\n\r\n const progressPattern = /(\\*\\*Progress:\\*\\*\\s*).*/i;\r\n if (progressPattern.test(content)) {\r\n content = content.replace(progressPattern, (_match, prefix: string) => `${prefix}${progressStr}`);\r\n fs.writeFileSync(statePath, content, 'utf-8');\r\n output({ updated: true, percent, completed: totalSummaries, total: totalPlans, bar: progressStr }, raw, progressStr);\r\n } else {\r\n output({ updated: false, reason: 'Progress field not found in STATE.md' }, raw, 'false');\r\n }\r\n}\r\n\r\nexport function cmdStateAddDecision(cwd: string, options: StateDecisionOptions, raw: boolean): void {\r\n const statePath = statePathUtil(cwd);\r\n if (!fs.existsSync(statePath)) { output({ error: 'STATE.md not found' }, raw); return; }\r\n\r\n const { phase, summary, summary_file, rationale, rationale_file } = options;\r\n let summaryText: string | undefined;\r\n let rationaleText = '';\r\n\r\n try {\r\n summaryText = readTextArgOrFile(cwd, summary, summary_file, 'summary');\r\n rationaleText = readTextArgOrFile(cwd, rationale || '', rationale_file, 'rationale') || '';\r\n } catch (thrown: unknown) {\r\n const e = thrown as Error;\r\n output({ added: false, reason: e.message }, raw, 'false');\r\n return;\r\n }\r\n\r\n if (!summaryText) { output({ error: 'summary required' }, raw); return; }\r\n\r\n const content = fs.readFileSync(statePath, 'utf-8');\r\n const entry = `- [Phase ${phase || '?'}]: ${summaryText}${rationaleText ? ` — ${rationaleText}` : ''}`;\r\n\r\n const sectionPattern = /(###?\\s*(?:Decisions|Decisions Made|Accumulated.*Decisions)\\s*\\n)([\\s\\S]*?)(?=\\n###?|\\n##[^#]|$)/i;\r\n const updated = appendToStateSection(content, sectionPattern, entry, [/None yet\\.?\\s*\\n?/gi, /No decisions yet\\.?\\s*\\n?/gi]);\r\n\r\n if (updated) {\r\n fs.writeFileSync(statePath, updated, 'utf-8');\r\n output({ added: true, decision: entry }, raw, 'true');\r\n } else {\r\n output({ added: false, reason: 'Decisions section not found in STATE.md' }, raw, 'false');\r\n }\r\n}\r\n\r\nexport function cmdStateAddBlocker(cwd: string, text: string | StateBlockerOptions, raw: boolean): void {\r\n const statePath = statePathUtil(cwd);\r\n if (!fs.existsSync(statePath)) { output({ error: 'STATE.md not found' }, raw); return; }\r\n const blockerOptions: StateBlockerOptions = typeof text === 'object' && text !== null ? text : { text: text as string };\r\n let blockerText: string | undefined;\r\n\r\n try {\r\n blockerText = readTextArgOrFile(cwd, blockerOptions.text, blockerOptions.text_file, 'blocker');\r\n } catch (thrown: unknown) {\r\n const e = thrown as Error;\r\n output({ added: false, reason: e.message }, raw, 'false');\r\n return;\r\n }\r\n\r\n if (!blockerText) { output({ error: 'text required' }, raw); return; }\r\n\r\n const content = fs.readFileSync(statePath, 'utf-8');\r\n const entry = `- ${blockerText}`;\r\n\r\n const sectionPattern = /(###?\\s*(?:Blockers|Blockers\\/Concerns|Concerns)\\s*\\n)([\\s\\S]*?)(?=\\n###?|\\n##[^#]|$)/i;\r\n const updated = appendToStateSection(content, sectionPattern, entry, [/None\\.?\\s*\\n?/gi, /None yet\\.?\\s*\\n?/gi]);\r\n\r\n if (updated) {\r\n fs.writeFileSync(statePath, updated, 'utf-8');\r\n output({ added: true, blocker: blockerText }, raw, 'true');\r\n } else {\r\n output({ added: false, reason: 'Blockers section not found in STATE.md' }, raw, 'false');\r\n }\r\n}\r\n\r\nexport function cmdStateResolveBlocker(cwd: string, text: string | null, raw: boolean): void {\r\n const statePath = statePathUtil(cwd);\r\n if (!fs.existsSync(statePath)) { output({ error: 'STATE.md not found' }, raw); return; }\r\n if (!text) { output({ error: 'text required' }, raw); return; }\r\n\r\n let content = fs.readFileSync(statePath, 'utf-8');\r\n\r\n const sectionPattern = /(###?\\s*(?:Blockers|Blockers\\/Concerns|Concerns)\\s*\\n)([\\s\\S]*?)(?=\\n###?|\\n##[^#]|$)/i;\r\n const match = content.match(sectionPattern);\r\n\r\n if (match) {\r\n const sectionBody = match[2];\r\n const lines = sectionBody.split('\\n');\r\n const filtered = lines.filter(line => {\r\n if (!line.startsWith('- ')) return true;\r\n return !line.toLowerCase().includes(text.toLowerCase());\r\n });\r\n\r\n let newBody = filtered.join('\\n');\r\n if (!newBody.trim() || !newBody.includes('- ')) {\r\n newBody = 'None\\n';\r\n }\r\n\r\n content = content.replace(sectionPattern, (_match, header: string) => `${header}${newBody}`);\r\n fs.writeFileSync(statePath, content, 'utf-8');\r\n output({ resolved: true, blocker: text }, raw, 'true');\r\n } else {\r\n output({ resolved: false, reason: 'Blockers section not found in STATE.md' }, raw, 'false');\r\n }\r\n}\r\n\r\nexport function cmdStateRecordSession(cwd: string, options: StateSessionOptions, raw: boolean): void {\r\n const statePath = statePathUtil(cwd);\r\n if (!fs.existsSync(statePath)) { output({ error: 'STATE.md not found' }, raw); return; }\r\n\r\n let content = fs.readFileSync(statePath, 'utf-8');\r\n const now = new Date().toISOString();\r\n const updated: string[] = [];\r\n\r\n let result = stateReplaceField(content, 'Last session', now);\r\n if (result) { content = result; updated.push('Last session'); }\r\n result = stateReplaceField(content, 'Last Date', now);\r\n if (result) { content = result; updated.push('Last Date'); }\r\n\r\n if (options.stopped_at) {\r\n result = stateReplaceField(content, 'Stopped At', options.stopped_at);\r\n if (!result) result = stateReplaceField(content, 'Stopped at', options.stopped_at);\r\n if (result) { content = result; updated.push('Stopped At'); }\r\n }\r\n\r\n const resumeFile = options.resume_file || 'None';\r\n result = stateReplaceField(content, 'Resume File', resumeFile);\r\n if (!result) result = stateReplaceField(content, 'Resume file', resumeFile);\r\n if (result) { content = result; updated.push('Resume File'); }\r\n\r\n if (updated.length > 0) {\r\n fs.writeFileSync(statePath, content, 'utf-8');\r\n output({ recorded: true, updated }, raw, 'true');\r\n } else {\r\n output({ recorded: false, reason: 'No session fields found in STATE.md' }, raw, 'false');\r\n }\r\n}\r\n\r\nexport function cmdStateSnapshot(cwd: string, raw: boolean): void {\r\n const statePath = statePathUtil(cwd);\r\n\r\n if (!fs.existsSync(statePath)) {\r\n output({ error: 'STATE.md not found' }, raw);\r\n return;\r\n }\r\n\r\n const content = fs.readFileSync(statePath, 'utf-8');\r\n\r\n const extractField = (fieldName: string): string | null => {\r\n const pattern = new RegExp(`\\\\*\\\\*${fieldName}:\\\\*\\\\*\\\\s*(.+)`, 'i');\r\n const match = content.match(pattern);\r\n return match ? match[1].trim() : null;\r\n };\r\n\r\n const currentPhase = extractField('Current Phase');\r\n const currentPhaseName = extractField('Current Phase Name');\r\n const totalPhasesRaw = extractField('Total Phases');\r\n const currentPlan = extractField('Current Plan');\r\n const totalPlansRaw = extractField('Total Plans in Phase');\r\n const status = extractField('Status');\r\n const progressRaw = extractField('Progress');\r\n const lastActivity = extractField('Last Activity');\r\n const lastActivityDesc = extractField('Last Activity Description');\r\n const pausedAt = extractField('Paused At');\r\n\r\n const totalPhases = totalPhasesRaw ? parseInt(totalPhasesRaw, 10) : null;\r\n const totalPlansInPhase = totalPlansRaw ? parseInt(totalPlansRaw, 10) : null;\r\n const progressPercent = progressRaw ? parseInt(progressRaw.replace('%', ''), 10) : null;\r\n\r\n const decisions: Decision[] = [];\r\n const decisionsMatch = content.match(/##\\s*Decisions Made[\\s\\S]*?\\n\\|[^\\n]+\\n\\|[-|\\s]+\\n([\\s\\S]*?)(?=\\n##|\\n$|$)/i);\r\n if (decisionsMatch) {\r\n const tableBody = decisionsMatch[1];\r\n const rows = tableBody.trim().split('\\n').filter(r => r.includes('|'));\r\n for (const row of rows) {\r\n const cells = row.split('|').map(c => c.trim()).filter(Boolean);\r\n if (cells.length >= 3) {\r\n decisions.push({\r\n phase: cells[0],\r\n summary: cells[1],\r\n rationale: cells[2],\r\n });\r\n }\r\n }\r\n }\r\n\r\n const blockers: string[] = [];\r\n const blockersMatch = content.match(/##\\s*Blockers\\s*\\n([\\s\\S]*?)(?=\\n##|$)/i);\r\n if (blockersMatch) {\r\n const blockersSection = blockersMatch[1];\r\n const items = blockersSection.match(/^-\\s+(.+)$/gm) || [];\r\n for (const item of items) {\r\n blockers.push(item.replace(/^-\\s+/, '').trim());\r\n }\r\n }\r\n\r\n const session: StateSnapshot['session'] = {\r\n last_date: null,\r\n stopped_at: null,\r\n resume_file: null,\r\n };\r\n\r\n const sessionMatch = content.match(/##\\s*Session\\s*\\n([\\s\\S]*?)(?=\\n##|$)/i);\r\n if (sessionMatch) {\r\n const sessionSection = sessionMatch[1];\r\n const lastDateMatch = sessionSection.match(/\\*\\*Last Date:\\*\\*\\s*(.+)/i);\r\n const stoppedAtMatch = sessionSection.match(/\\*\\*Stopped At:\\*\\*\\s*(.+)/i);\r\n const resumeFileMatch = sessionSection.match(/\\*\\*Resume File:\\*\\*\\s*(.+)/i);\r\n\r\n if (lastDateMatch) session.last_date = lastDateMatch[1].trim();\r\n if (stoppedAtMatch) session.stopped_at = stoppedAtMatch[1].trim();\r\n if (resumeFileMatch) session.resume_file = resumeFileMatch[1].trim();\r\n }\r\n\r\n const snapshot: StateSnapshot = {\r\n current_phase: currentPhase,\r\n current_phase_name: currentPhaseName,\r\n total_phases: totalPhases,\r\n current_plan: currentPlan,\r\n total_plans_in_phase: totalPlansInPhase,\r\n status,\r\n progress_percent: progressPercent,\r\n last_activity: lastActivity,\r\n last_activity_desc: lastActivityDesc,\r\n decisions,\r\n blockers,\r\n paused_at: pausedAt,\r\n session,\r\n };\r\n\r\n output(snapshot, raw);\r\n}\r\n","/**\r\n * State Management MCP Tools — STATE.md operations exposed as MCP tools\r\n *\r\n * CRITICAL: Never import output() or error() from core — they call process.exit().\r\n * CRITICAL: Never write to stdout — it is reserved for MCP JSON-RPC protocol.\r\n * CRITICAL: Never call process.exit() — the server must stay alive after every tool call.\r\n */\r\n\r\nimport fs from 'node:fs';\r\nimport { z } from 'zod';\r\nimport escapeStringRegexp from 'escape-string-regexp';\r\nimport type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\r\n\r\nimport { statePath } from '../core/core.js';\r\nimport { stateExtractField, stateReplaceField, appendToStateSection } from '../core/state.js';\r\nimport { detectProjectRoot, mcpSuccess, mcpError } from './utils.js';\r\n\r\n/**\r\n * Register all state management tools on the MCP server.\r\n */\r\nexport function registerStateTools(server: McpServer): void {\r\n // ── mcp_get_state ───────────────────────────────────────────────────────────\r\n\r\n server.tool(\r\n 'mcp_get_state',\r\n 'Read STATE.md content — full file, a specific **field:** value, or a ## section.',\r\n {\r\n field: z\r\n .string()\r\n .optional()\r\n .describe('Specific field or section name, or omit for full STATE.md'),\r\n },\r\n async ({ field }) => {\r\n try {\r\n const cwd = detectProjectRoot();\r\n if (!cwd) {\r\n return mcpError('No .planning/ directory found', 'Project not detected');\r\n }\r\n\r\n const stPath = statePath(cwd);\r\n if (!fs.existsSync(stPath)) {\r\n return mcpError('STATE.md not found', 'STATE.md missing');\r\n }\r\n\r\n const content = fs.readFileSync(stPath, 'utf-8');\r\n\r\n if (!field) {\r\n return mcpSuccess({ content }, 'Full STATE.md retrieved');\r\n }\r\n\r\n // Try **field:** value pattern first\r\n const fieldValue = stateExtractField(content, field);\r\n if (fieldValue) {\r\n return mcpSuccess(\r\n { content: fieldValue, field },\r\n `State field retrieved: ${field}`,\r\n );\r\n }\r\n\r\n // Try ## Section pattern\r\n const fieldEscaped = escapeStringRegexp(field);\r\n const sectionPattern = new RegExp(\r\n `##\\\\s*${fieldEscaped}\\\\s*\\n([\\\\s\\\\S]*?)(?=\\\\n##|$)`,\r\n 'i',\r\n );\r\n const sectionMatch = content.match(sectionPattern);\r\n if (sectionMatch) {\r\n return mcpSuccess(\r\n { content: sectionMatch[1].trim(), field },\r\n `State section retrieved: ${field}`,\r\n );\r\n }\r\n\r\n return mcpError(\r\n `Section or field \"${field}\" not found in STATE.md`,\r\n 'Field not found',\r\n );\r\n } catch (e) {\r\n return mcpError((e as Error).message, 'Operation failed');\r\n }\r\n },\r\n );\r\n\r\n // ── mcp_update_state ────────────────────────────────────────────────────────\r\n\r\n server.tool(\r\n 'mcp_update_state',\r\n 'Update a **field:** value in STATE.md (e.g., \"Status\", \"Current focus\").',\r\n {\r\n field: z.string().describe('Field name (e.g., \"Status\", \"Current focus\")'),\r\n value: z.string().describe('New value for the field'),\r\n },\r\n async ({ field, value }) => {\r\n try {\r\n const cwd = detectProjectRoot();\r\n if (!cwd) {\r\n return mcpError('No .planning/ directory found', 'Project not detected');\r\n }\r\n\r\n const stPath = statePath(cwd);\r\n if (!fs.existsSync(stPath)) {\r\n return mcpError('STATE.md not found', 'STATE.md missing');\r\n }\r\n\r\n const content = fs.readFileSync(stPath, 'utf-8');\r\n const updated = stateReplaceField(content, field, value);\r\n\r\n if (!updated) {\r\n return mcpError(\r\n `Field \"${field}\" not found in STATE.md`,\r\n 'Field not found',\r\n );\r\n }\r\n\r\n fs.writeFileSync(stPath, updated, 'utf-8');\r\n\r\n return mcpSuccess(\r\n { updated: true, field, value },\r\n `State updated: ${field}`,\r\n );\r\n } catch (e) {\r\n return mcpError((e as Error).message, 'Operation failed');\r\n }\r\n },\r\n );\r\n\r\n // ── mcp_add_decision ────────────────────────────────────────────────────────\r\n\r\n server.tool(\r\n 'mcp_add_decision',\r\n 'Record a decision in the Decisions section of STATE.md.',\r\n {\r\n summary: z.string().describe('Decision summary'),\r\n rationale: z.string().optional().describe('Optional rationale'),\r\n phase: z.string().optional().describe('Associated phase number'),\r\n },\r\n async ({ summary, rationale, phase }) => {\r\n try {\r\n const cwd = detectProjectRoot();\r\n if (!cwd) {\r\n return mcpError('No .planning/ directory found', 'Project not detected');\r\n }\r\n\r\n const stPath = statePath(cwd);\r\n if (!fs.existsSync(stPath)) {\r\n return mcpError('STATE.md not found', 'STATE.md missing');\r\n }\r\n\r\n const content = fs.readFileSync(stPath, 'utf-8');\r\n const entry = `- [Phase ${phase || '?'}]: ${summary}${rationale ? ` -- ${rationale}` : ''}`;\r\n\r\n const sectionPattern =\r\n /(###?\\s*(?:Decisions|Decisions Made|Accumulated.*Decisions)\\s*\\n)([\\s\\S]*?)(?=\\n###?|\\n##[^#]|$)/i;\r\n const updated = appendToStateSection(content, sectionPattern, entry, [/None yet\\.?\\s*\\n?/gi, /No decisions yet\\.?\\s*\\n?/gi]);\r\n\r\n if (!updated) {\r\n return mcpError(\r\n 'Decisions section not found in STATE.md',\r\n 'Section not found',\r\n );\r\n }\r\n\r\n fs.writeFileSync(stPath, updated, 'utf-8');\r\n\r\n return mcpSuccess(\r\n { added: true, decision: entry },\r\n 'Decision recorded',\r\n );\r\n } catch (e) {\r\n return mcpError((e as Error).message, 'Operation failed');\r\n }\r\n },\r\n );\r\n\r\n // ── mcp_add_blocker ─────────────────────────────────────────────────────────\r\n\r\n server.tool(\r\n 'mcp_add_blocker',\r\n 'Add a blocker entry to the Blockers section of STATE.md.',\r\n {\r\n text: z.string().describe('Blocker description'),\r\n },\r\n async ({ text }) => {\r\n try {\r\n const cwd = detectProjectRoot();\r\n if (!cwd) {\r\n return mcpError('No .planning/ directory found', 'Project not detected');\r\n }\r\n\r\n const stPath = statePath(cwd);\r\n if (!fs.existsSync(stPath)) {\r\n return mcpError('STATE.md not found', 'STATE.md missing');\r\n }\r\n\r\n const content = fs.readFileSync(stPath, 'utf-8');\r\n const entry = `- ${text}`;\r\n\r\n const sectionPattern =\r\n /(###?\\s*(?:Blockers|Blockers\\/Concerns|Concerns)\\s*\\n)([\\s\\S]*?)(?=\\n###?|\\n##[^#]|$)/i;\r\n const updated = appendToStateSection(content, sectionPattern, entry, [/None\\.?\\s*\\n?/gi, /None yet\\.?\\s*\\n?/gi]);\r\n\r\n if (!updated) {\r\n return mcpError(\r\n 'Blockers section not found in STATE.md',\r\n 'Section not found',\r\n );\r\n }\r\n\r\n fs.writeFileSync(stPath, updated, 'utf-8');\r\n\r\n return mcpSuccess(\r\n { added: true, blocker: text },\r\n 'Blocker added',\r\n );\r\n } catch (e) {\r\n return mcpError((e as Error).message, 'Operation failed');\r\n }\r\n },\r\n );\r\n\r\n // ── mcp_resolve_blocker ─────────────────────────────────────────────────────\r\n\r\n server.tool(\r\n 'mcp_resolve_blocker',\r\n 'Remove a blocker from STATE.md by matching text (case-insensitive partial match).',\r\n {\r\n text: z\r\n .string()\r\n .describe('Text to match against blocker entries (case-insensitive partial match)'),\r\n },\r\n async ({ text }) => {\r\n try {\r\n const cwd = detectProjectRoot();\r\n if (!cwd) {\r\n return mcpError('No .planning/ directory found', 'Project not detected');\r\n }\r\n\r\n const stPath = statePath(cwd);\r\n if (!fs.existsSync(stPath)) {\r\n return mcpError('STATE.md not found', 'STATE.md missing');\r\n }\r\n\r\n let content = fs.readFileSync(stPath, 'utf-8');\r\n\r\n const sectionPattern =\r\n /(###?\\s*(?:Blockers|Blockers\\/Concerns|Concerns)\\s*\\n)([\\s\\S]*?)(?=\\n###?|\\n##[^#]|$)/i;\r\n const match = content.match(sectionPattern);\r\n\r\n if (!match) {\r\n return mcpError(\r\n 'Blockers section not found in STATE.md',\r\n 'Section not found',\r\n );\r\n }\r\n\r\n const sectionBody = match[2];\r\n const lines = sectionBody.split('\\n');\r\n const filtered = lines.filter((line) => {\r\n if (!line.startsWith('- ')) return true;\r\n return !line.toLowerCase().includes(text.toLowerCase());\r\n });\r\n\r\n let newBody = filtered.join('\\n');\r\n if (!newBody.trim() || !newBody.includes('- ')) {\r\n newBody = 'None\\n';\r\n }\r\n\r\n content = content.replace(\r\n sectionPattern,\r\n (_match, header: string) => `${header}${newBody}`,\r\n );\r\n\r\n fs.writeFileSync(stPath, content, 'utf-8');\r\n\r\n return mcpSuccess(\r\n { resolved: true, blocker: text },\r\n 'Blocker resolved',\r\n );\r\n } catch (e) {\r\n return mcpError((e as Error).message, 'Operation failed');\r\n }\r\n },\r\n );\r\n}\r\n","/**\r\n * MCP Tool Registration — Orchestrates all tool registrations\r\n *\r\n * This is the single entry point for registering MCP tools on the server.\r\n * Later plans will add registerTodoTools, registerStateTools, etc.\r\n */\r\n\r\nimport type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\r\nimport { registerPhaseTools } from './phase-tools.js';\r\nimport { registerTodoTools } from './todo-tools.js';\r\nimport { registerStateTools } from './state-tools.js';\r\n\r\n/**\r\n * Register all MCP tools on the given server instance.\r\n */\r\nexport function registerAllTools(server: McpServer): void {\r\n registerPhaseTools(server);\r\n registerTodoTools(server);\r\n registerStateTools(server);\r\n}\r\n","/**\r\n * MAXSIM MCP Server — Entry point\r\n *\r\n * Provides MCP tools for phase operations, state management, and more.\r\n * Communicates over stdio using the MCP JSON-RPC protocol.\r\n *\r\n * CRITICAL: Never write to stdout directly — stdout is reserved for MCP protocol.\r\n * All logging must go to stderr.\r\n * CRITICAL: Never import output() or error() from core — they call process.exit().\r\n */\r\n\r\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\r\nimport { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';\r\nimport { registerAllTools } from './mcp/index.js';\r\n\r\nasync function main() {\r\n const server = new McpServer({\r\n name: 'maxsim',\r\n version: '1.0.0',\r\n });\r\n\r\n registerAllTools(server);\r\n\r\n const transport = new StdioServerTransport();\r\n await server.connect(transport);\r\n\r\n // Log to stderr ONLY — stdout is reserved for MCP JSON-RPC protocol\r\n process.stderr.write('MAXSIM MCP server started\\n');\r\n}\r\n\r\nmain().catch((err) => {\r\n process.stderr.write(`MAXSIM MCP server error: ${err}\\n`);\r\n process.exitCode = 1;\r\n});\r\n"],"x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,91],"mappings":"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"} \ No newline at end of file diff --git a/packages/cli/src/cli.ts b/packages/cli/src/cli.ts index 122a916..544173a 100644 --- a/packages/cli/src/cli.ts +++ b/packages/cli/src/cli.ts @@ -83,6 +83,7 @@ import { cmdInitMapCodebase, cmdInitExisting, cmdInitProgress, + cmdSkillContext, } from './core/index.js'; // ─── Arg parsing utilities ─────────────────────────────────────────────────── @@ -347,6 +348,7 @@ const COMMANDS: Record = { cmdScaffold(cwd, args[1], { phase: f.phase, name: f.name ? args.slice(args.indexOf('--name') + 1).join(' ') : null }, raw); }, 'init': handleInit, + 'skill-context': (args, cwd, raw) => cmdSkillContext(cwd, args[1] || 'unknown', raw), 'phase-plan-index': (args, cwd, raw) => cmdPhasePlanIndex(cwd, args[1], raw), 'state-snapshot': (_args, cwd, raw) => cmdStateSnapshot(cwd, raw), 'summary-extract': (args, cwd, raw) => { diff --git a/packages/cli/src/core/index.ts b/packages/cli/src/core/index.ts index d8d6e00..e0a233d 100644 --- a/packages/cli/src/core/index.ts +++ b/packages/cli/src/core/index.ts @@ -243,6 +243,10 @@ export type { SpawnDashboardOptions, } from './dashboard-launcher.js'; +// Skill context exports +export type { SkillContextResult } from './skill-context.js'; +export { cmdSkillContext } from './skill-context.js'; + // Init exports export type { WorkflowType, diff --git a/packages/cli/src/core/skill-context.ts b/packages/cli/src/core/skill-context.ts new file mode 100644 index 0000000..f48d757 --- /dev/null +++ b/packages/cli/src/core/skill-context.ts @@ -0,0 +1,185 @@ +/** + * Skill Context — Provides MAXSIM state to skills via a single CLI call + */ + +import fs from 'node:fs'; +import path from 'node:path'; + +import { + loadConfig, + findPhaseInternal, + pathExistsInternal, + safeReadFile, + output, + statePath, + isPlanFile, + isSummaryFile, +} from './core.js'; + +import { stateExtractField } from './state.js'; +import type { AppConfig, PhaseSearchResult } from './types.js'; + +// ─── Types ─────────────────────────────────────────────────────────────────── + +export interface SkillContextResult { + skill_name: string; + planning_dir: string | null; + phase: { + number: string | null; + name: string | null; + directory: string | null; + }; + state: { + current_focus: string | null; + position: string | null; + status: string | null; + }; + blockers: string[]; + decisions: Array<{ phase: string; summary: string; rationale: string }>; + artifacts: { + plan: string | null; + summary: string | null; + research: string | null; + context: string | null; + verification: string | null; + }; + config: { + model_profile: string; + commit_docs: boolean; + branching_strategy: string; + }; +} + +// ─── Command ───────────────────────────────────────────────────────────────── + +export function cmdSkillContext(cwd: string, skillName: string, raw: boolean): void { + const planningExists = pathExistsInternal(cwd, '.planning'); + + if (!planningExists) { + const result: SkillContextResult = { + skill_name: skillName, + planning_dir: null, + phase: { number: null, name: null, directory: null }, + state: { current_focus: null, position: null, status: null }, + blockers: [], + decisions: [], + artifacts: { plan: null, summary: null, research: null, context: null, verification: null }, + config: { model_profile: 'balanced', commit_docs: true, branching_strategy: 'none' }, + }; + output(result, raw); + return; + } + + // Load config + const config: AppConfig = loadConfig(cwd); + + // Read STATE.md + const stateContent = safeReadFile(statePath(cwd)); + let currentPhase: string | null = null; + let currentPhaseName: string | null = null; + let currentPlan: string | null = null; + let status: string | null = null; + const blockers: string[] = []; + const decisions: Array<{ phase: string; summary: string; rationale: string }> = []; + + if (stateContent) { + currentPhase = stateExtractField(stateContent, 'Current Phase'); + currentPhaseName = stateExtractField(stateContent, 'Current Phase Name'); + currentPlan = stateExtractField(stateContent, 'Current Plan'); + status = stateExtractField(stateContent, 'Status'); + + // Extract blockers + const blockersMatch = stateContent.match(/##\s*Blockers\s*\n([\s\S]*?)(?=\n##|$)/i); + if (blockersMatch) { + const items = blockersMatch[1].match(/^-\s+(.+)$/gm) || []; + for (const item of items) { + blockers.push(item.replace(/^-\s+/, '').trim()); + } + } + + // Extract decisions + const decisionsMatch = stateContent.match(/##\s*Decisions Made[\s\S]*?\n\|[^\n]+\n\|[-|\s]+\n([\s\S]*?)(?=\n##|\n$|$)/i); + if (decisionsMatch) { + const rows = decisionsMatch[1].trim().split('\n').filter(r => r.includes('|')); + for (const row of rows) { + const cells = row.split('|').map(c => c.trim()).filter(Boolean); + if (cells.length >= 3) { + decisions.push({ phase: cells[0], summary: cells[1], rationale: cells[2] }); + } + } + } + } + + // Find phase directory and artifacts + const phaseInfo: PhaseSearchResult | null = currentPhase + ? findPhaseInternal(cwd, currentPhase) + : null; + + const phaseDir = phaseInfo?.directory ?? null; + const phaseNumber = phaseInfo?.phase_number ?? currentPhase; + const phaseName = phaseInfo?.phase_name ?? currentPhaseName; + + // Resolve artifact paths within the phase directory + const artifacts: SkillContextResult['artifacts'] = { + plan: null, + summary: null, + research: null, + context: null, + verification: null, + }; + + if (phaseDir) { + const absPhaseDir = path.isAbsolute(phaseDir) ? phaseDir : path.join(cwd, phaseDir); + try { + const files = fs.readdirSync(absPhaseDir); + for (const f of files) { + if (isPlanFile(f)) { + artifacts.plan = path.join(phaseDir, f); + } else if (isSummaryFile(f)) { + artifacts.summary = path.join(phaseDir, f); + } else if (f.endsWith('-RESEARCH.md') || f === 'RESEARCH.md') { + artifacts.research = path.join(phaseDir, f); + } else if (f.endsWith('-CONTEXT.md') || f === 'CONTEXT.md') { + artifacts.context = path.join(phaseDir, f); + } else if (f.endsWith('-VERIFICATION.md') || f === 'VERIFICATION.md') { + artifacts.verification = path.join(phaseDir, f); + } + } + } catch { + // Phase directory unreadable — leave artifacts as null + } + } + + // Build position string + const totalPlans = stateContent ? stateExtractField(stateContent, 'Total Plans in Phase') : null; + const position = currentPlan && totalPlans + ? `Plan ${currentPlan} of ${totalPlans}` + : currentPlan + ? `Plan ${currentPlan}` + : null; + + const result: SkillContextResult = { + skill_name: skillName, + planning_dir: '.planning', + phase: { + number: phaseNumber ?? null, + name: phaseName ?? null, + directory: phaseDir, + }, + state: { + current_focus: currentPhaseName ?? null, + position, + status, + }, + blockers, + decisions, + artifacts, + config: { + model_profile: config.model_profile, + commit_docs: config.commit_docs, + branching_strategy: config.branching_strategy, + }, + }; + + output(result, raw); +} diff --git a/packages/dashboard/dist/client/assets/index-CxFKStBk.css b/packages/dashboard/dist/client/assets/index-CxFKStBk.css new file mode 100644 index 0000000..1dab97f --- /dev/null +++ b/packages/dashboard/dist/client/assets/index-CxFKStBk.css @@ -0,0 +1,32 @@ +/*! tailwindcss v4.2.1 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-pan-x:initial;--tw-pan-y:initial;--tw-pinch-zoom:initial;--tw-space-y-reverse:0;--tw-space-x-reverse:0;--tw-divide-x-reverse:0;--tw-border-style:solid;--tw-divide-y-reverse:0;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-ease:initial;--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0}}}@layer theme{:root,:host{--font-sans:"Geist", "Helvetica Neue", Helvetica, Arial, sans-serif;--font-mono:"Geist Mono", "JetBrains Mono", "Fira Code", monospace;--color-red-400:oklch(70.4% .191 22.216);--color-red-500:oklch(63.7% .237 25.331);--color-yellow-500:oklch(79.5% .184 86.047);--color-green-500:oklch(72.3% .219 149.579);--color-teal-400:oklch(77.7% .152 181.912);--color-teal-500:oklch(70.4% .14 182.503);--color-blue-400:oklch(70.7% .165 254.624);--color-black:#000;--spacing:.25rem;--container-sm:24rem;--container-lg:32rem;--container-3xl:48rem;--container-4xl:56rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75 / 1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2 / 1.5);--text-3xl:1.875rem;--text-3xl--line-height: 1.2 ;--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-tight:-.025em;--tracking-wide:.025em;--tracking-wider:.05em;--tracking-widest:.1em;--leading-tight:1.25;--leading-snug:1.375;--leading-relaxed:1.625;--radius-sm:0;--radius-md:0;--radius-lg:0;--ease-in:cubic-bezier(.4, 0, 1, 1);--ease-out:cubic-bezier(0, 0, .2, 1);--ease-in-out:cubic-bezier(.4, 0, .2, 1);--animate-spin:spin 1s linear infinite;--animate-pulse:pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--blur-sm:8px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--color-background:#09090b;--color-foreground:#fafafa;--color-muted:#27272a;--color-muted-foreground:#a1a1aa;--color-accent:#3b82f6;--color-accent-glow:#60a5fa;--color-success:#22c55e;--color-warning:#eab308;--color-danger:#ef4444;--color-border:#27272a;--color-card:#18181b;--color-card-hover:#1f1f23;--color-simple-accent:#14b8a6}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){-webkit-appearance:button;-moz-appearance:button;appearance:button}::file-selector-button{-webkit-appearance:button;-moz-appearance:button;appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.\@container{container-type:inline-size}.pointer-events-none{pointer-events:none}.collapse{visibility:collapse}.invisible{visibility:hidden}.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.not-sr-only{clip-path:none;white-space:normal;width:auto;height:auto;margin:0;padding:0;position:static;overflow:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.inset-0{inset:calc(var(--spacing) * 0)}.inset-x-0{inset-inline:calc(var(--spacing) * 0)}.start{inset-inline-start:var(--spacing)}.start\!{inset-inline-start:var(--spacing)!important}.end{inset-inline-end:var(--spacing)}.end\!{inset-inline-end:var(--spacing)!important}.top-0{top:calc(var(--spacing) * 0)}.top-2{top:calc(var(--spacing) * 2)}.right-0{right:calc(var(--spacing) * 0)}.right-2{right:calc(var(--spacing) * 2)}.right-3{right:calc(var(--spacing) * 3)}.bottom-0{bottom:calc(var(--spacing) * 0)}.bottom-2{bottom:calc(var(--spacing) * 2)}.bottom-8{bottom:calc(var(--spacing) * 8)}.bottom-full{bottom:100%}.left-0{left:calc(var(--spacing) * 0)}.left-2{left:calc(var(--spacing) * 2)}.isolate{isolation:isolate}.isolation-auto{isolation:auto}.z-10{z-index:10}.z-20{z-index:20}.z-50{z-index:50}.container{width:100%}@media(min-width:40rem){.container{max-width:40rem}}@media(min-width:48rem){.container{max-width:48rem}}@media(min-width:64rem){.container{max-width:64rem}}@media(min-width:80rem){.container{max-width:80rem}}@media(min-width:96rem){.container{max-width:96rem}}.container\!{width:100%!important}@media(min-width:40rem){.container\!{max-width:40rem!important}}@media(min-width:48rem){.container\!{max-width:48rem!important}}@media(min-width:64rem){.container\!{max-width:64rem!important}}@media(min-width:80rem){.container\!{max-width:80rem!important}}@media(min-width:96rem){.container\!{max-width:96rem!important}}.mx-4{margin-inline:calc(var(--spacing) * 4)}.mx-auto{margin-inline:auto}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:calc(var(--spacing) * 1)}.mt-1\.5{margin-top:calc(var(--spacing) * 1.5)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-3{margin-top:calc(var(--spacing) * 3)}.mr-2{margin-right:calc(var(--spacing) * 2)}.mb-0\.5{margin-bottom:calc(var(--spacing) * .5)}.mb-1{margin-bottom:calc(var(--spacing) * 1)}.mb-1\.5{margin-bottom:calc(var(--spacing) * 1.5)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.mb-5{margin-bottom:calc(var(--spacing) * 5)}.mb-6{margin-bottom:calc(var(--spacing) * 6)}.-ml-1{margin-left:calc(var(--spacing) * -1)}.ml-0\.5{margin-left:calc(var(--spacing) * .5)}.ml-1{margin-left:calc(var(--spacing) * 1)}.ml-1\.5{margin-left:calc(var(--spacing) * 1.5)}.ml-auto{margin-left:auto}.block{display:block}.contents{display:contents}.flex{display:flex}.flow-root{display:flow-root}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.inline-grid{display:inline-grid}.inline-table{display:inline-table}.list-item{display:list-item}.table{display:table}.table-caption{display:table-caption}.table-cell{display:table-cell}.table-column{display:table-column}.table-column-group{display:table-column-group}.table-footer-group{display:table-footer-group}.table-header-group{display:table-header-group}.table-row{display:table-row}.table-row-group{display:table-row-group}.h-1{height:calc(var(--spacing) * 1)}.h-1\.5{height:calc(var(--spacing) * 1.5)}.h-1\/2{height:50%}.h-2{height:calc(var(--spacing) * 2)}.h-3{height:calc(var(--spacing) * 3)}.h-3\.5{height:calc(var(--spacing) * 3.5)}.h-4{height:calc(var(--spacing) * 4)}.h-5{height:calc(var(--spacing) * 5)}.h-6{height:calc(var(--spacing) * 6)}.h-7{height:calc(var(--spacing) * 7)}.h-8{height:calc(var(--spacing) * 8)}.h-10{height:calc(var(--spacing) * 10)}.h-auto{height:auto}.h-full{height:100%}.h-px{height:1px}.h-screen{height:100vh}.max-h-40{max-height:calc(var(--spacing) * 40)}.max-h-52{max-height:calc(var(--spacing) * 52)}.max-h-64{max-height:calc(var(--spacing) * 64)}.min-h-0{min-height:calc(var(--spacing) * 0)}.min-h-\[50vh\]{min-height:50vh}.w-1\.5{width:calc(var(--spacing) * 1.5)}.w-1\/2{width:50%}.w-2{width:calc(var(--spacing) * 2)}.w-3{width:calc(var(--spacing) * 3)}.w-3\.5{width:calc(var(--spacing) * 3.5)}.w-3\/4{width:75%}.w-4{width:calc(var(--spacing) * 4)}.w-5{width:calc(var(--spacing) * 5)}.w-6{width:calc(var(--spacing) * 6)}.w-7{width:calc(var(--spacing) * 7)}.w-8{width:calc(var(--spacing) * 8)}.w-12{width:calc(var(--spacing) * 12)}.w-16{width:calc(var(--spacing) * 16)}.w-20{width:calc(var(--spacing) * 20)}.w-24{width:calc(var(--spacing) * 24)}.w-32{width:calc(var(--spacing) * 32)}.w-36{width:calc(var(--spacing) * 36)}.w-40{width:calc(var(--spacing) * 40)}.w-48{width:calc(var(--spacing) * 48)}.w-56{width:calc(var(--spacing) * 56)}.w-64{width:calc(var(--spacing) * 64)}.w-72{width:calc(var(--spacing) * 72)}.w-full{width:100%}.max-w-3xl{max-width:var(--container-3xl)}.max-w-4xl{max-width:var(--container-4xl)}.max-w-\[140px\]{max-width:140px}.max-w-lg{max-width:var(--container-lg)}.max-w-none{max-width:none}.max-w-sm{max-width:var(--container-sm)}.min-w-0{min-width:calc(var(--spacing) * 0)}.min-w-max{min-width:max-content}.flex-1,.flex-\[1\]{flex:1}.flex-\[2\]{flex:2}.flex-shrink-0{flex-shrink:0}.shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.border-collapse{border-collapse:collapse}.translate-none{translate:none}.scale-3d{scale:var(--tw-scale-x) var(--tw-scale-y) var(--tw-scale-z)}.rotate-90{rotate:90deg}.rotate-180{rotate:180deg}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.animate-pulse{animation:var(--animate-pulse)}.animate-spin{animation:var(--animate-spin)}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.touch-pinch-zoom{--tw-pinch-zoom:pinch-zoom;touch-action:var(--tw-pan-x,) var(--tw-pan-y,) var(--tw-pinch-zoom,)}.resize{resize:both}.resize\!{resize:both!important}.resize-none{resize:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-baseline{align-items:baseline}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.gap-0{gap:calc(var(--spacing) * 0)}.gap-0\.5{gap:calc(var(--spacing) * .5)}.gap-1{gap:calc(var(--spacing) * 1)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-2\.5{gap:calc(var(--spacing) * 2.5)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-6{gap:calc(var(--spacing) * 6)}.gap-8{gap:calc(var(--spacing) * 8)}.gap-10{gap:calc(var(--spacing) * 10)}.gap-px{gap:1px}:where(.space-y-0\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * .5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * .5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 6) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 6) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-px>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(1px * var(--tw-space-y-reverse));margin-block-end:calc(1px * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-reverse>:not(:last-child)){--tw-space-y-reverse:1}:where(.space-x-reverse>:not(:last-child)){--tw-space-x-reverse:1}:where(.divide-x>:not(:last-child)){--tw-divide-x-reverse:0;border-inline-style:var(--tw-border-style);border-inline-start-width:calc(1px * var(--tw-divide-x-reverse));border-inline-end-width:calc(1px * calc(1 - var(--tw-divide-x-reverse)))}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px * var(--tw-divide-y-reverse));border-bottom-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)))}:where(.divide-y-reverse>:not(:last-child)){--tw-divide-y-reverse:1}:where(.divide-border>:not(:last-child)){border-color:var(--color-border)}.self-end{align-self:flex-end}.self-start{align-self:flex-start}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-sm{border-radius:var(--radius-sm)}.rounded-s{border-start-start-radius:.25rem;border-end-start-radius:.25rem}.rounded-ss{border-start-start-radius:.25rem}.rounded-e{border-start-end-radius:.25rem;border-end-end-radius:.25rem}.rounded-se{border-start-end-radius:.25rem}.rounded-ee{border-end-end-radius:.25rem}.rounded-es{border-end-start-radius:.25rem}.rounded-t{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.rounded-l{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.rounded-tl{border-top-left-radius:.25rem}.rounded-r{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.rounded-tr{border-top-right-radius:.25rem}.rounded-b{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.rounded-br{border-bottom-right-radius:.25rem}.rounded-bl{border-bottom-left-radius:.25rem}.border{border-style:var(--tw-border-style);border-width:1px}.border-0{border-style:var(--tw-border-style);border-width:0}.border-x{border-inline-style:var(--tw-border-style);border-inline-width:1px}.border-y{border-block-style:var(--tw-border-style);border-block-width:1px}.border-s{border-inline-start-style:var(--tw-border-style);border-inline-start-width:1px}.border-e{border-inline-end-style:var(--tw-border-style);border-inline-end-width:1px}.border-bs{border-block-start-style:var(--tw-border-style);border-block-start-width:1px}.border-be{border-block-end-style:var(--tw-border-style);border-block-end-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-b-2{border-bottom-style:var(--tw-border-style);border-bottom-width:2px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-l-2{border-left-style:var(--tw-border-style);border-left-width:2px}.border-accent{border-color:var(--color-accent)}.border-accent\/20{border-color:#3b82f633}@supports (color:color-mix(in lab,red,red)){.border-accent\/20{border-color:color-mix(in oklab,var(--color-accent) 20%,transparent)}}.border-border{border-color:var(--color-border)}.border-border\/40{border-color:#27272a66}@supports (color:color-mix(in lab,red,red)){.border-border\/40{border-color:color-mix(in oklab,var(--color-border) 40%,transparent)}}.border-border\/60{border-color:#27272a99}@supports (color:color-mix(in lab,red,red)){.border-border\/60{border-color:color-mix(in oklab,var(--color-border) 60%,transparent)}}.border-danger\/30{border-color:#ef44444d}@supports (color:color-mix(in lab,red,red)){.border-danger\/30{border-color:color-mix(in oklab,var(--color-danger) 30%,transparent)}}.border-danger\/40{border-color:#ef444466}@supports (color:color-mix(in lab,red,red)){.border-danger\/40{border-color:color-mix(in oklab,var(--color-danger) 40%,transparent)}}.border-muted-foreground{border-color:var(--color-muted-foreground)}.border-muted-foreground\/60{border-color:#a1a1aa99}@supports (color:color-mix(in lab,red,red)){.border-muted-foreground\/60{border-color:color-mix(in oklab,var(--color-muted-foreground) 60%,transparent)}}.border-simple-accent{border-color:var(--color-simple-accent)}.border-simple-accent\/30{border-color:#14b8a64d}@supports (color:color-mix(in lab,red,red)){.border-simple-accent\/30{border-color:color-mix(in oklab,var(--color-simple-accent) 30%,transparent)}}.border-simple-accent\/40{border-color:#14b8a666}@supports (color:color-mix(in lab,red,red)){.border-simple-accent\/40{border-color:color-mix(in oklab,var(--color-simple-accent) 40%,transparent)}}.border-simple-accent\/50{border-color:#14b8a680}@supports (color:color-mix(in lab,red,red)){.border-simple-accent\/50{border-color:color-mix(in oklab,var(--color-simple-accent) 50%,transparent)}}.border-success{border-color:var(--color-success)}.border-success\/20{border-color:#22c55e33}@supports (color:color-mix(in lab,red,red)){.border-success\/20{border-color:color-mix(in oklab,var(--color-success) 20%,transparent)}}.border-success\/30{border-color:#22c55e4d}@supports (color:color-mix(in lab,red,red)){.border-success\/30{border-color:color-mix(in oklab,var(--color-success) 30%,transparent)}}.border-b-simple-accent{border-bottom-color:var(--color-simple-accent)}.border-b-transparent{border-bottom-color:#0000}.border-l-accent{border-left-color:var(--color-accent)}.border-l-simple-accent{border-left-color:var(--color-simple-accent)}.border-l-transparent{border-left-color:#0000}.bg-accent{background-color:var(--color-accent)}.bg-accent\/10{background-color:#3b82f61a}@supports (color:color-mix(in lab,red,red)){.bg-accent\/10{background-color:color-mix(in oklab,var(--color-accent) 10%,transparent)}}.bg-accent\/20{background-color:#3b82f633}@supports (color:color-mix(in lab,red,red)){.bg-accent\/20{background-color:color-mix(in oklab,var(--color-accent) 20%,transparent)}}.bg-background{background-color:var(--color-background)}.bg-background\/60{background-color:#09090b99}@supports (color:color-mix(in lab,red,red)){.bg-background\/60{background-color:color-mix(in oklab,var(--color-background) 60%,transparent)}}.bg-background\/95{background-color:#09090bf2}@supports (color:color-mix(in lab,red,red)){.bg-background\/95{background-color:color-mix(in oklab,var(--color-background) 95%,transparent)}}.bg-black\/50{background-color:#00000080}@supports (color:color-mix(in lab,red,red)){.bg-black\/50{background-color:color-mix(in oklab,var(--color-black) 50%,transparent)}}.bg-black\/60{background-color:#0009}@supports (color:color-mix(in lab,red,red)){.bg-black\/60{background-color:color-mix(in oklab,var(--color-black) 60%,transparent)}}.bg-blue-400{background-color:var(--color-blue-400)}.bg-border{background-color:var(--color-border)}.bg-card{background-color:var(--color-card)}.bg-card-hover{background-color:var(--color-card-hover)}.bg-card\/80{background-color:#18181bcc}@supports (color:color-mix(in lab,red,red)){.bg-card\/80{background-color:color-mix(in oklab,var(--color-card) 80%,transparent)}}.bg-card\/90{background-color:#18181be6}@supports (color:color-mix(in lab,red,red)){.bg-card\/90{background-color:color-mix(in oklab,var(--color-card) 90%,transparent)}}.bg-danger{background-color:var(--color-danger)}.bg-danger\/5{background-color:#ef44440d}@supports (color:color-mix(in lab,red,red)){.bg-danger\/5{background-color:color-mix(in oklab,var(--color-danger) 5%,transparent)}}.bg-danger\/15{background-color:#ef444426}@supports (color:color-mix(in lab,red,red)){.bg-danger\/15{background-color:color-mix(in oklab,var(--color-danger) 15%,transparent)}}.bg-danger\/20{background-color:#ef444433}@supports (color:color-mix(in lab,red,red)){.bg-danger\/20{background-color:color-mix(in oklab,var(--color-danger) 20%,transparent)}}.bg-green-500{background-color:var(--color-green-500)}.bg-muted{background-color:var(--color-muted)}.bg-muted-foreground{background-color:var(--color-muted-foreground)}.bg-muted-foreground\/40{background-color:#a1a1aa66}@supports (color:color-mix(in lab,red,red)){.bg-muted-foreground\/40{background-color:color-mix(in oklab,var(--color-muted-foreground) 40%,transparent)}}.bg-muted-foreground\/50{background-color:#a1a1aa80}@supports (color:color-mix(in lab,red,red)){.bg-muted-foreground\/50{background-color:color-mix(in oklab,var(--color-muted-foreground) 50%,transparent)}}.bg-muted\/10{background-color:#27272a1a}@supports (color:color-mix(in lab,red,red)){.bg-muted\/10{background-color:color-mix(in oklab,var(--color-muted) 10%,transparent)}}.bg-muted\/20{background-color:#27272a33}@supports (color:color-mix(in lab,red,red)){.bg-muted\/20{background-color:color-mix(in oklab,var(--color-muted) 20%,transparent)}}.bg-muted\/50{background-color:#27272a80}@supports (color:color-mix(in lab,red,red)){.bg-muted\/50{background-color:color-mix(in oklab,var(--color-muted) 50%,transparent)}}.bg-red-500{background-color:var(--color-red-500)}.bg-simple-accent{background-color:var(--color-simple-accent)}.bg-simple-accent\/5{background-color:#14b8a60d}@supports (color:color-mix(in lab,red,red)){.bg-simple-accent\/5{background-color:color-mix(in oklab,var(--color-simple-accent) 5%,transparent)}}.bg-simple-accent\/10{background-color:#14b8a61a}@supports (color:color-mix(in lab,red,red)){.bg-simple-accent\/10{background-color:color-mix(in oklab,var(--color-simple-accent) 10%,transparent)}}.bg-simple-accent\/15{background-color:#14b8a626}@supports (color:color-mix(in lab,red,red)){.bg-simple-accent\/15{background-color:color-mix(in oklab,var(--color-simple-accent) 15%,transparent)}}.bg-simple-accent\/20{background-color:#14b8a633}@supports (color:color-mix(in lab,red,red)){.bg-simple-accent\/20{background-color:color-mix(in oklab,var(--color-simple-accent) 20%,transparent)}}.bg-success{background-color:var(--color-success)}.bg-success\/20{background-color:#22c55e33}@supports (color:color-mix(in lab,red,red)){.bg-success\/20{background-color:color-mix(in oklab,var(--color-success) 20%,transparent)}}.bg-teal-500\/20{background-color:#00baa733}@supports (color:color-mix(in lab,red,red)){.bg-teal-500\/20{background-color:color-mix(in oklab,var(--color-teal-500) 20%,transparent)}}.bg-transparent{background-color:#0000}.bg-warning\/20{background-color:#eab30833}@supports (color:color-mix(in lab,red,red)){.bg-warning\/20{background-color:color-mix(in oklab,var(--color-warning) 20%,transparent)}}.bg-yellow-500{background-color:var(--color-yellow-500)}.bg-repeat{background-repeat:repeat}.mask-no-clip{-webkit-mask-clip:no-clip;mask-clip:no-clip}.mask-repeat{-webkit-mask-repeat:repeat;mask-repeat:repeat}.p-1\.5{padding:calc(var(--spacing) * 1.5)}.p-2{padding:calc(var(--spacing) * 2)}.p-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.p-6{padding:calc(var(--spacing) * 6)}.p-8{padding:calc(var(--spacing) * 8)}.px-0\.5{padding-inline:calc(var(--spacing) * .5)}.px-1{padding-inline:calc(var(--spacing) * 1)}.px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-5{padding-inline:calc(var(--spacing) * 5)}.px-6{padding-inline:calc(var(--spacing) * 6)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:calc(var(--spacing) * 1)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-2\.5{padding-block:calc(var(--spacing) * 2.5)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-4{padding-block:calc(var(--spacing) * 4)}.py-6{padding-block:calc(var(--spacing) * 6)}.py-10{padding-block:calc(var(--spacing) * 10)}.py-12{padding-block:calc(var(--spacing) * 12)}.pt-1{padding-top:calc(var(--spacing) * 1)}.pt-3{padding-top:calc(var(--spacing) * 3)}.pt-4{padding-top:calc(var(--spacing) * 4)}.pb-3{padding-bottom:calc(var(--spacing) * 3)}.pb-4{padding-bottom:calc(var(--spacing) * 4)}.pb-6{padding-bottom:calc(var(--spacing) * 6)}.pb-20{padding-bottom:calc(var(--spacing) * 20)}.pl-2{padding-left:calc(var(--spacing) * 2)}.pl-4{padding-left:calc(var(--spacing) * 4)}.text-center{text-align:center}.text-left{text-align:left}.font-mono{font-family:var(--font-mono)}.font-sans{font-family:var(--font-sans)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[9px\]{font-size:9px}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.leading-none{--tw-leading:1;line-height:1}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.leading-snug{--tw-leading:var(--leading-snug);line-height:var(--leading-snug)}.leading-tight{--tw-leading:var(--leading-tight);line-height:var(--leading-tight)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.tracking-wider{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.tracking-widest{--tw-tracking:var(--tracking-widest);letter-spacing:var(--tracking-widest)}.text-wrap{text-wrap:wrap}.break-all{word-break:break-all}.text-clip{text-overflow:clip}.text-ellipsis{text-overflow:ellipsis}.text-accent{color:var(--color-accent)}.text-accent\/70{color:#3b82f6b3}@supports (color:color-mix(in lab,red,red)){.text-accent\/70{color:color-mix(in oklab,var(--color-accent) 70%,transparent)}}.text-background{color:var(--color-background)}.text-border{color:var(--color-border)}.text-danger{color:var(--color-danger)}.text-foreground{color:var(--color-foreground)}.text-foreground\/70{color:#fafafab3}@supports (color:color-mix(in lab,red,red)){.text-foreground\/70{color:color-mix(in oklab,var(--color-foreground) 70%,transparent)}}.text-foreground\/80{color:#fafafacc}@supports (color:color-mix(in lab,red,red)){.text-foreground\/80{color:color-mix(in oklab,var(--color-foreground) 80%,transparent)}}.text-foreground\/90{color:#fafafae6}@supports (color:color-mix(in lab,red,red)){.text-foreground\/90{color:color-mix(in oklab,var(--color-foreground) 90%,transparent)}}.text-muted-foreground{color:var(--color-muted-foreground)}.text-red-400{color:var(--color-red-400)}.text-simple-accent{color:var(--color-simple-accent)}.text-success{color:var(--color-success)}.text-teal-400{color:var(--color-teal-400)}.text-warning{color:var(--color-warning)}.capitalize{text-transform:capitalize}.lowercase{text-transform:lowercase}.normal-case{text-transform:none}.uppercase{text-transform:uppercase}.italic{font-style:italic}.not-italic{font-style:normal}.diagonal-fractions{--tw-numeric-fraction:diagonal-fractions;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.lining-nums{--tw-numeric-figure:lining-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.oldstyle-nums{--tw-numeric-figure:oldstyle-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.ordinal{--tw-ordinal:ordinal;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.proportional-nums{--tw-numeric-spacing:proportional-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.slashed-zero{--tw-slashed-zero:slashed-zero;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.stacked-fractions{--tw-numeric-fraction:stacked-fractions;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.normal-nums{font-variant-numeric:normal}.line-through{text-decoration-line:line-through}.no-underline{text-decoration-line:none}.overline{text-decoration-line:overline}.underline{text-decoration-line:underline}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.subpixel-antialiased{-webkit-font-smoothing:auto;-moz-osx-font-smoothing:auto}.accent-accent{accent-color:var(--color-accent)}.opacity-0{opacity:0}.opacity-25{opacity:.25}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-75{opacity:.75}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a), 0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-1{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.inset-ring{--tw-inset-ring-shadow:inset 0 0 0 1px var(--tw-inset-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-simple-accent\/40{--tw-ring-color:#14b8a666}@supports (color:color-mix(in lab,red,red)){.ring-simple-accent\/40{--tw-ring-color:color-mix(in oklab, var(--color-simple-accent) 40%, transparent)}}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.drop-shadow{--tw-drop-shadow-size:drop-shadow(0 1px 2px var(--tw-drop-shadow-color,#0000001a)) drop-shadow(0 1px 1px var(--tw-drop-shadow-color,#0000000f));--tw-drop-shadow:drop-shadow(0 1px 2px #0000001a) drop-shadow(0 1px 1px #0000000f);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.invert{--tw-invert:invert(100%);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.backdrop-blur{--tw-backdrop-blur:blur(8px);-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-blur-sm{--tw-backdrop-blur:blur(var(--blur-sm));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-grayscale{--tw-backdrop-grayscale:grayscale(100%);-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-invert{--tw-backdrop-invert:invert(100%);-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-sepia{--tw-backdrop-sepia:sepia(100%);-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-filter{-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-150{--tw-duration:.15s;transition-duration:.15s}.duration-200{--tw-duration:.2s;transition-duration:.2s}.ease-in{--tw-ease:var(--ease-in);transition-timing-function:var(--ease-in)}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}.outline-none{--tw-outline-style:none;outline-style:none}:where(.divide-x-reverse>:not(:last-child)){--tw-divide-x-reverse:1}.ring-inset{--tw-ring-inset:inset}@media(hover:hover){.group-hover\:border-accent:is(:where(.group):hover *){border-color:var(--color-accent)}.group-hover\:border-simple-accent:is(:where(.group):hover *){border-color:var(--color-simple-accent)}.group-hover\:opacity-100:is(:where(.group):hover *){opacity:1}}.placeholder\:text-muted-foreground::placeholder{color:var(--color-muted-foreground)}@media(hover:hover){.hover\:-translate-y-px:hover{--tw-translate-y:-1px;translate:var(--tw-translate-x) var(--tw-translate-y)}.hover\:border-accent:hover{border-color:var(--color-accent)}.hover\:border-muted-foreground:hover{border-color:var(--color-muted-foreground)}.hover\:border-muted-foreground\/40:hover{border-color:#a1a1aa66}@supports (color:color-mix(in lab,red,red)){.hover\:border-muted-foreground\/40:hover{border-color:color-mix(in oklab,var(--color-muted-foreground) 40%,transparent)}}.hover\:border-l-accent\/40:hover{border-left-color:#3b82f666}@supports (color:color-mix(in lab,red,red)){.hover\:border-l-accent\/40:hover{border-left-color:color-mix(in oklab,var(--color-accent) 40%,transparent)}}.hover\:bg-accent:hover{background-color:var(--color-accent)}.hover\:bg-accent-glow:hover{background-color:var(--color-accent-glow)}.hover\:bg-accent\/20:hover{background-color:#3b82f633}@supports (color:color-mix(in lab,red,red)){.hover\:bg-accent\/20:hover{background-color:color-mix(in oklab,var(--color-accent) 20%,transparent)}}.hover\:bg-accent\/30:hover{background-color:#3b82f64d}@supports (color:color-mix(in lab,red,red)){.hover\:bg-accent\/30:hover{background-color:color-mix(in oklab,var(--color-accent) 30%,transparent)}}.hover\:bg-card-hover:hover{background-color:var(--color-card-hover)}.hover\:bg-danger\/10:hover{background-color:#ef44441a}@supports (color:color-mix(in lab,red,red)){.hover\:bg-danger\/10:hover{background-color:color-mix(in oklab,var(--color-danger) 10%,transparent)}}.hover\:bg-danger\/20:hover{background-color:#ef444433}@supports (color:color-mix(in lab,red,red)){.hover\:bg-danger\/20:hover{background-color:color-mix(in oklab,var(--color-danger) 20%,transparent)}}.hover\:bg-danger\/25:hover{background-color:#ef444440}@supports (color:color-mix(in lab,red,red)){.hover\:bg-danger\/25:hover{background-color:color-mix(in oklab,var(--color-danger) 25%,transparent)}}.hover\:bg-danger\/30:hover{background-color:#ef44444d}@supports (color:color-mix(in lab,red,red)){.hover\:bg-danger\/30:hover{background-color:color-mix(in oklab,var(--color-danger) 30%,transparent)}}.hover\:bg-muted:hover{background-color:var(--color-muted)}.hover\:bg-muted\/50:hover{background-color:#27272a80}@supports (color:color-mix(in lab,red,red)){.hover\:bg-muted\/50:hover{background-color:color-mix(in oklab,var(--color-muted) 50%,transparent)}}.hover\:bg-red-500\/20:hover{background-color:#fb2c3633}@supports (color:color-mix(in lab,red,red)){.hover\:bg-red-500\/20:hover{background-color:color-mix(in oklab,var(--color-red-500) 20%,transparent)}}.hover\:bg-simple-accent:hover{background-color:var(--color-simple-accent)}.hover\:bg-simple-accent\/10:hover{background-color:#14b8a61a}@supports (color:color-mix(in lab,red,red)){.hover\:bg-simple-accent\/10:hover{background-color:color-mix(in oklab,var(--color-simple-accent) 10%,transparent)}}.hover\:bg-success\/10:hover{background-color:#22c55e1a}@supports (color:color-mix(in lab,red,red)){.hover\:bg-success\/10:hover{background-color:color-mix(in oklab,var(--color-success) 10%,transparent)}}.hover\:text-accent:hover{color:var(--color-accent)}.hover\:text-background:hover{color:var(--color-background)}.hover\:text-danger:hover{color:var(--color-danger)}.hover\:text-foreground:hover{color:var(--color-foreground)}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-80:hover{opacity:.8}.hover\:shadow-md:hover{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a), 0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}.focus\:border-accent:focus{border-color:var(--color-accent)}.focus\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\:ring-accent\/50:focus{--tw-ring-color:#3b82f680}@supports (color:color-mix(in lab,red,red)){.focus\:ring-accent\/50:focus{--tw-ring-color:color-mix(in oklab, var(--color-accent) 50%, transparent)}}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-30:disabled{opacity:.3}.disabled\:opacity-40:disabled{opacity:.4}.disabled\:opacity-50:disabled{opacity:.5}@media(min-width:40rem){.sm\:ml-auto{margin-left:auto}.sm\:max-w-none{max-width:none}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:flex-row{flex-direction:row}.sm\:items-end{align-items:flex-end}.sm\:gap-8{gap:calc(var(--spacing) * 8)}.sm\:gap-10{gap:calc(var(--spacing) * 10)}.sm\:p-6{padding:calc(var(--spacing) * 6)}.sm\:px-6{padding-inline:calc(var(--spacing) * 6)}.sm\:pl-10{padding-left:calc(var(--spacing) * 10)}}@media(min-width:48rem){.md\:flex{display:flex}.md\:hidden{display:none}.md\:flex-row{flex-direction:row}}@media(min-width:64rem){.lg\:absolute{position:absolute}.lg\:top-0{top:calc(var(--spacing) * 0)}.lg\:right-0{right:calc(var(--spacing) * 0)}.lg\:z-10{z-index:10}.lg\:mt-0{margin-top:calc(var(--spacing) * 0)}.lg\:w-80{width:calc(var(--spacing) * 80)}.lg\:translate-x-\[calc\(100\%\+0\.75rem\)\]{--tw-translate-x: calc(100% + .75rem) ;translate:var(--tw-translate-x) var(--tw-translate-y)}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}.\[\&_a\]\:text-simple-accent a{color:var(--color-simple-accent)}.\[\&_code\]\:bg-muted code{background-color:var(--color-muted)}.\[\&_code\]\:px-1 code{padding-inline:calc(var(--spacing) * 1)}.\[\&_code\]\:py-0\.5 code{padding-block:calc(var(--spacing) * .5)}.\[\&_code\]\:text-xs code{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}}:root{--color-background:#09090b;--color-foreground:#fafafa;--color-muted:#27272a;--color-muted-foreground:#a1a1aa;--color-accent:#3b82f6;--color-accent-glow:#60a5fa;--color-success:#22c55e;--color-warning:#eab308;--color-danger:#ef4444;--color-border:#27272a;--color-card:#18181b;--color-card-hover:#1f1f23;--color-simple-accent:#14b8a6;--font-mono:"Geist Mono", "JetBrains Mono", "Fira Code", monospace;--font-sans:"Geist", "Helvetica Neue", Helvetica, Arial, sans-serif;--radius-sm:0;--radius-md:0;--radius-lg:0}body{background-color:var(--color-background);color:var(--color-foreground);font-family:var(--font-sans);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:var(--color-background)}::-webkit-scrollbar-thumb{background:var(--color-border)}::-webkit-scrollbar-thumb:hover{background:var(--color-muted-foreground)}::selection{background-color:var(--color-accent);color:#fff}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-pan-x{syntax:"*";inherits:false}@property --tw-pan-y{syntax:"*";inherits:false}@property --tw-pinch-zoom{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-space-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.5}}/** +* Copyright (c) 2014 The xterm.js authors. All rights reserved. +* Copyright (c) 2012-2013, Christopher Jeffrey (MIT License) +* https://github.com/chjj/term.js +* @license MIT +* +* Permission is hereby granted, free of charge, to any person obtaining a copy +* of this software and associated documentation files (the "Software"), to deal +* in the Software without restriction, including without limitation the rights +* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +* copies of the Software, and to permit persons to whom the Software is +* furnished to do so, subject to the following conditions: +* +* The above copyright notice and this permission notice shall be included in +* all copies or substantial portions of the Software. +* +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +* THE SOFTWARE. +* +* Originally forked from (with the author's permission): +* Fabrice Bellard's javascript vt100 for jslinux: +* http://bellard.org/jslinux/ +* Copyright (c) 2011 Fabrice Bellard +* The original design remains. The terminal itself +* has been extended to include xterm CSI codes, among +* other features. +*/.xterm{cursor:text;position:relative;user-select:none;-ms-user-select:none;-webkit-user-select:none}.xterm.focus,.xterm:focus{outline:none}.xterm .xterm-helpers{position:absolute;top:0;z-index:5}.xterm .xterm-helper-textarea{padding:0;border:0;margin:0;position:absolute;opacity:0;left:-9999em;top:0;width:0;height:0;z-index:-5;white-space:nowrap;overflow:hidden;resize:none}.xterm .composition-view{background:#000;color:#fff;display:none;position:absolute;white-space:nowrap;z-index:1}.xterm .composition-view.active{display:block}.xterm .xterm-viewport{background-color:#000;overflow-y:scroll;cursor:default;position:absolute;right:0;left:0;top:0;bottom:0}.xterm .xterm-screen{position:relative}.xterm .xterm-screen canvas{position:absolute;left:0;top:0}.xterm-char-measure-element{display:inline-block;visibility:hidden;position:absolute;top:0;left:-9999em;line-height:normal}.xterm.enable-mouse-events{cursor:default}.xterm.xterm-cursor-pointer,.xterm .xterm-cursor-pointer{cursor:pointer}.xterm.column-select.focus{cursor:crosshair}.xterm .xterm-accessibility:not(.debug),.xterm .xterm-message{position:absolute;left:0;top:0;bottom:0;right:0;z-index:10;color:transparent;pointer-events:none}.xterm .xterm-accessibility-tree:not(.debug) *::selection{color:transparent}.xterm .xterm-accessibility-tree{font-family:monospace;-webkit-user-select:text;user-select:text;white-space:pre}.xterm .xterm-accessibility-tree>div{transform-origin:left;width:fit-content}.xterm .live-region{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}.xterm-dim{opacity:1!important}.xterm-underline-1{text-decoration:underline}.xterm-underline-2{text-decoration:double underline}.xterm-underline-3{text-decoration:wavy underline}.xterm-underline-4{text-decoration:dotted underline}.xterm-underline-5{text-decoration:dashed underline}.xterm-overline{text-decoration:overline}.xterm-overline.xterm-underline-1{text-decoration:overline underline}.xterm-overline.xterm-underline-2{text-decoration:overline double underline}.xterm-overline.xterm-underline-3{text-decoration:overline wavy underline}.xterm-overline.xterm-underline-4{text-decoration:overline dotted underline}.xterm-overline.xterm-underline-5{text-decoration:overline dashed underline}.xterm-strikethrough{text-decoration:line-through}.xterm-screen .xterm-decoration-container .xterm-decoration{z-index:6;position:absolute}.xterm-screen .xterm-decoration-container .xterm-decoration.xterm-decoration-top-layer{z-index:7}.xterm-decoration-overview-ruler{z-index:8;position:absolute;top:0;right:0;pointer-events:none}.xterm-decoration-top{z-index:2;position:relative}.xterm .xterm-scrollable-element>.scrollbar{cursor:default}.xterm .xterm-scrollable-element>.scrollbar>.scra{cursor:pointer;font-size:11px!important}.xterm .xterm-scrollable-element>.visible{opacity:1;background:#0000;transition:opacity .1s linear;z-index:11}.xterm .xterm-scrollable-element>.invisible{opacity:0;pointer-events:none}.xterm .xterm-scrollable-element>.invisible.fade{transition:opacity .8s linear}.xterm .xterm-scrollable-element>.shadow{position:absolute;display:none}.xterm .xterm-scrollable-element>.shadow.top{display:block;top:0;left:3px;height:3px;width:100%;box-shadow:var(--vscode-scrollbar-shadow, #000) 0 6px 6px -6px inset}.xterm .xterm-scrollable-element>.shadow.left{display:block;top:3px;left:0;height:100%;width:3px;box-shadow:var(--vscode-scrollbar-shadow, #000) 6px 0 6px -6px inset}.xterm .xterm-scrollable-element>.shadow.top-left-corner{display:block;top:0;left:0;height:3px;width:3px}.xterm .xterm-scrollable-element>.shadow.top.left{box-shadow:var(--vscode-scrollbar-shadow, #000) 6px 0 6px -6px inset} diff --git a/packages/dashboard/dist/client/assets/index-DzJChB-D.css b/packages/dashboard/dist/client/assets/index-DzJChB-D.css deleted file mode 100644 index 2e8a4d7..0000000 --- a/packages/dashboard/dist/client/assets/index-DzJChB-D.css +++ /dev/null @@ -1,32 +0,0 @@ -/*! tailwindcss v4.2.1 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-pan-x:initial;--tw-pan-y:initial;--tw-pinch-zoom:initial;--tw-space-y-reverse:0;--tw-space-x-reverse:0;--tw-divide-x-reverse:0;--tw-border-style:solid;--tw-divide-y-reverse:0;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-ease:initial;--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0}}}@layer theme{:root,:host{--font-sans:"Geist", "Helvetica Neue", Helvetica, Arial, sans-serif;--font-mono:"Geist Mono", "JetBrains Mono", "Fira Code", monospace;--color-red-400:oklch(70.4% .191 22.216);--color-red-500:oklch(63.7% .237 25.331);--color-yellow-500:oklch(79.5% .184 86.047);--color-green-500:oklch(72.3% .219 149.579);--color-teal-400:oklch(77.7% .152 181.912);--color-teal-500:oklch(70.4% .14 182.503);--color-black:#000;--spacing:.25rem;--container-sm:24rem;--container-lg:32rem;--container-3xl:48rem;--container-4xl:56rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75 / 1.25);--text-3xl:1.875rem;--text-3xl--line-height: 1.2 ;--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-tight:-.025em;--tracking-wide:.025em;--tracking-wider:.05em;--tracking-widest:.1em;--leading-tight:1.25;--leading-snug:1.375;--leading-relaxed:1.625;--radius-sm:0;--radius-md:0;--radius-lg:0;--ease-in:cubic-bezier(.4, 0, 1, 1);--ease-out:cubic-bezier(0, 0, .2, 1);--ease-in-out:cubic-bezier(.4, 0, .2, 1);--animate-spin:spin 1s linear infinite;--animate-pulse:pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--blur-sm:8px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--color-background:#09090b;--color-foreground:#fafafa;--color-muted:#27272a;--color-muted-foreground:#a1a1aa;--color-accent:#3b82f6;--color-accent-glow:#60a5fa;--color-success:#22c55e;--color-warning:#eab308;--color-danger:#ef4444;--color-border:#27272a;--color-card:#18181b;--color-card-hover:#1f1f23;--color-simple-accent:#14b8a6}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){-webkit-appearance:button;-moz-appearance:button;appearance:button}::file-selector-button{-webkit-appearance:button;-moz-appearance:button;appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.\@container{container-type:inline-size}.pointer-events-none{pointer-events:none}.collapse{visibility:collapse}.invisible{visibility:hidden}.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.not-sr-only{clip-path:none;white-space:normal;width:auto;height:auto;margin:0;padding:0;position:static;overflow:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.inset-0{inset:calc(var(--spacing) * 0)}.inset-x-0{inset-inline:calc(var(--spacing) * 0)}.start{inset-inline-start:var(--spacing)}.start\!{inset-inline-start:var(--spacing)!important}.end{inset-inline-end:var(--spacing)}.end\!{inset-inline-end:var(--spacing)!important}.top-0{top:calc(var(--spacing) * 0)}.top-2{top:calc(var(--spacing) * 2)}.right-0{right:calc(var(--spacing) * 0)}.right-2{right:calc(var(--spacing) * 2)}.right-3{right:calc(var(--spacing) * 3)}.bottom-0{bottom:calc(var(--spacing) * 0)}.bottom-2{bottom:calc(var(--spacing) * 2)}.bottom-8{bottom:calc(var(--spacing) * 8)}.bottom-full{bottom:100%}.left-0{left:calc(var(--spacing) * 0)}.left-2{left:calc(var(--spacing) * 2)}.isolate{isolation:isolate}.isolation-auto{isolation:auto}.z-10{z-index:10}.z-20{z-index:20}.z-50{z-index:50}.container{width:100%}@media(min-width:40rem){.container{max-width:40rem}}@media(min-width:48rem){.container{max-width:48rem}}@media(min-width:64rem){.container{max-width:64rem}}@media(min-width:80rem){.container{max-width:80rem}}@media(min-width:96rem){.container{max-width:96rem}}.container\!{width:100%!important}@media(min-width:40rem){.container\!{max-width:40rem!important}}@media(min-width:48rem){.container\!{max-width:48rem!important}}@media(min-width:64rem){.container\!{max-width:64rem!important}}@media(min-width:80rem){.container\!{max-width:80rem!important}}@media(min-width:96rem){.container\!{max-width:96rem!important}}.mx-4{margin-inline:calc(var(--spacing) * 4)}.mx-auto{margin-inline:auto}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:calc(var(--spacing) * 1)}.mt-1\.5{margin-top:calc(var(--spacing) * 1.5)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-3{margin-top:calc(var(--spacing) * 3)}.mr-2{margin-right:calc(var(--spacing) * 2)}.mb-0\.5{margin-bottom:calc(var(--spacing) * .5)}.mb-1{margin-bottom:calc(var(--spacing) * 1)}.mb-1\.5{margin-bottom:calc(var(--spacing) * 1.5)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.mb-5{margin-bottom:calc(var(--spacing) * 5)}.mb-6{margin-bottom:calc(var(--spacing) * 6)}.ml-0\.5{margin-left:calc(var(--spacing) * .5)}.ml-1{margin-left:calc(var(--spacing) * 1)}.ml-1\.5{margin-left:calc(var(--spacing) * 1.5)}.ml-auto{margin-left:auto}.block{display:block}.contents{display:contents}.flex{display:flex}.flow-root{display:flow-root}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.inline-grid{display:inline-grid}.inline-table{display:inline-table}.list-item{display:list-item}.table{display:table}.table-caption{display:table-caption}.table-cell{display:table-cell}.table-column{display:table-column}.table-column-group{display:table-column-group}.table-footer-group{display:table-footer-group}.table-header-group{display:table-header-group}.table-row{display:table-row}.table-row-group{display:table-row-group}.h-1{height:calc(var(--spacing) * 1)}.h-1\.5{height:calc(var(--spacing) * 1.5)}.h-1\/2{height:50%}.h-2{height:calc(var(--spacing) * 2)}.h-3{height:calc(var(--spacing) * 3)}.h-3\.5{height:calc(var(--spacing) * 3.5)}.h-4{height:calc(var(--spacing) * 4)}.h-5{height:calc(var(--spacing) * 5)}.h-6{height:calc(var(--spacing) * 6)}.h-7{height:calc(var(--spacing) * 7)}.h-8{height:calc(var(--spacing) * 8)}.h-10{height:calc(var(--spacing) * 10)}.h-auto{height:auto}.h-full{height:100%}.h-px{height:1px}.h-screen{height:100vh}.max-h-64{max-height:calc(var(--spacing) * 64)}.min-h-0{min-height:calc(var(--spacing) * 0)}.min-h-\[50vh\]{min-height:50vh}.w-1\.5{width:calc(var(--spacing) * 1.5)}.w-1\/2{width:50%}.w-2{width:calc(var(--spacing) * 2)}.w-3{width:calc(var(--spacing) * 3)}.w-3\.5{width:calc(var(--spacing) * 3.5)}.w-3\/4{width:75%}.w-4{width:calc(var(--spacing) * 4)}.w-5{width:calc(var(--spacing) * 5)}.w-6{width:calc(var(--spacing) * 6)}.w-7{width:calc(var(--spacing) * 7)}.w-8{width:calc(var(--spacing) * 8)}.w-12{width:calc(var(--spacing) * 12)}.w-16{width:calc(var(--spacing) * 16)}.w-24{width:calc(var(--spacing) * 24)}.w-32{width:calc(var(--spacing) * 32)}.w-36{width:calc(var(--spacing) * 36)}.w-40{width:calc(var(--spacing) * 40)}.w-48{width:calc(var(--spacing) * 48)}.w-56{width:calc(var(--spacing) * 56)}.w-64{width:calc(var(--spacing) * 64)}.w-72{width:calc(var(--spacing) * 72)}.w-full{width:100%}.max-w-3xl{max-width:var(--container-3xl)}.max-w-4xl{max-width:var(--container-4xl)}.max-w-\[140px\]{max-width:140px}.max-w-lg{max-width:var(--container-lg)}.max-w-none{max-width:none}.max-w-sm{max-width:var(--container-sm)}.min-w-0{min-width:calc(var(--spacing) * 0)}.min-w-max{min-width:max-content}.flex-1,.flex-\[1\]{flex:1}.flex-\[2\]{flex:2}.flex-shrink-0{flex-shrink:0}.shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.border-collapse{border-collapse:collapse}.translate-none{translate:none}.scale-3d{scale:var(--tw-scale-x) var(--tw-scale-y) var(--tw-scale-z)}.rotate-90{rotate:90deg}.rotate-180{rotate:180deg}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.animate-pulse{animation:var(--animate-pulse)}.animate-spin{animation:var(--animate-spin)}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.touch-pinch-zoom{--tw-pinch-zoom:pinch-zoom;touch-action:var(--tw-pan-x,) var(--tw-pan-y,) var(--tw-pinch-zoom,)}.resize{resize:both}.resize\!{resize:both!important}.resize-none{resize:none}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-baseline{align-items:baseline}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.gap-0{gap:calc(var(--spacing) * 0)}.gap-0\.5{gap:calc(var(--spacing) * .5)}.gap-1{gap:calc(var(--spacing) * 1)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-2\.5{gap:calc(var(--spacing) * 2.5)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-6{gap:calc(var(--spacing) * 6)}.gap-8{gap:calc(var(--spacing) * 8)}.gap-10{gap:calc(var(--spacing) * 10)}.gap-px{gap:1px}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 6) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 6) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-px>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(1px * var(--tw-space-y-reverse));margin-block-end:calc(1px * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-reverse>:not(:last-child)){--tw-space-y-reverse:1}:where(.space-x-reverse>:not(:last-child)){--tw-space-x-reverse:1}:where(.divide-x>:not(:last-child)){--tw-divide-x-reverse:0;border-inline-style:var(--tw-border-style);border-inline-start-width:calc(1px * var(--tw-divide-x-reverse));border-inline-end-width:calc(1px * calc(1 - var(--tw-divide-x-reverse)))}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px * var(--tw-divide-y-reverse));border-bottom-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)))}:where(.divide-y-reverse>:not(:last-child)){--tw-divide-y-reverse:1}:where(.divide-border>:not(:last-child)){border-color:var(--color-border)}.self-end{align-self:flex-end}.self-start{align-self:flex-start}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-sm{border-radius:var(--radius-sm)}.rounded-s{border-start-start-radius:.25rem;border-end-start-radius:.25rem}.rounded-ss{border-start-start-radius:.25rem}.rounded-e{border-start-end-radius:.25rem;border-end-end-radius:.25rem}.rounded-se{border-start-end-radius:.25rem}.rounded-ee{border-end-end-radius:.25rem}.rounded-es{border-end-start-radius:.25rem}.rounded-t{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.rounded-l{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.rounded-tl{border-top-left-radius:.25rem}.rounded-r{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.rounded-tr{border-top-right-radius:.25rem}.rounded-b{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.rounded-br{border-bottom-right-radius:.25rem}.rounded-bl{border-bottom-left-radius:.25rem}.border{border-style:var(--tw-border-style);border-width:1px}.border-0{border-style:var(--tw-border-style);border-width:0}.border-x{border-inline-style:var(--tw-border-style);border-inline-width:1px}.border-y{border-block-style:var(--tw-border-style);border-block-width:1px}.border-s{border-inline-start-style:var(--tw-border-style);border-inline-start-width:1px}.border-e{border-inline-end-style:var(--tw-border-style);border-inline-end-width:1px}.border-bs{border-block-start-style:var(--tw-border-style);border-block-start-width:1px}.border-be{border-block-end-style:var(--tw-border-style);border-block-end-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-b-2{border-bottom-style:var(--tw-border-style);border-bottom-width:2px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-l-2{border-left-style:var(--tw-border-style);border-left-width:2px}.border-accent{border-color:var(--color-accent)}.border-accent\/20{border-color:#3b82f633}@supports (color:color-mix(in lab,red,red)){.border-accent\/20{border-color:color-mix(in oklab,var(--color-accent) 20%,transparent)}}.border-border{border-color:var(--color-border)}.border-border\/40{border-color:#27272a66}@supports (color:color-mix(in lab,red,red)){.border-border\/40{border-color:color-mix(in oklab,var(--color-border) 40%,transparent)}}.border-border\/60{border-color:#27272a99}@supports (color:color-mix(in lab,red,red)){.border-border\/60{border-color:color-mix(in oklab,var(--color-border) 60%,transparent)}}.border-danger\/30{border-color:#ef44444d}@supports (color:color-mix(in lab,red,red)){.border-danger\/30{border-color:color-mix(in oklab,var(--color-danger) 30%,transparent)}}.border-muted-foreground{border-color:var(--color-muted-foreground)}.border-simple-accent{border-color:var(--color-simple-accent)}.border-simple-accent\/30{border-color:#14b8a64d}@supports (color:color-mix(in lab,red,red)){.border-simple-accent\/30{border-color:color-mix(in oklab,var(--color-simple-accent) 30%,transparent)}}.border-simple-accent\/40{border-color:#14b8a666}@supports (color:color-mix(in lab,red,red)){.border-simple-accent\/40{border-color:color-mix(in oklab,var(--color-simple-accent) 40%,transparent)}}.border-simple-accent\/50{border-color:#14b8a680}@supports (color:color-mix(in lab,red,red)){.border-simple-accent\/50{border-color:color-mix(in oklab,var(--color-simple-accent) 50%,transparent)}}.border-success{border-color:var(--color-success)}.border-success\/20{border-color:#22c55e33}@supports (color:color-mix(in lab,red,red)){.border-success\/20{border-color:color-mix(in oklab,var(--color-success) 20%,transparent)}}.border-success\/30{border-color:#22c55e4d}@supports (color:color-mix(in lab,red,red)){.border-success\/30{border-color:color-mix(in oklab,var(--color-success) 30%,transparent)}}.border-b-simple-accent{border-bottom-color:var(--color-simple-accent)}.border-b-transparent{border-bottom-color:#0000}.border-l-accent{border-left-color:var(--color-accent)}.border-l-transparent{border-left-color:#0000}.bg-accent{background-color:var(--color-accent)}.bg-accent\/10{background-color:#3b82f61a}@supports (color:color-mix(in lab,red,red)){.bg-accent\/10{background-color:color-mix(in oklab,var(--color-accent) 10%,transparent)}}.bg-accent\/20{background-color:#3b82f633}@supports (color:color-mix(in lab,red,red)){.bg-accent\/20{background-color:color-mix(in oklab,var(--color-accent) 20%,transparent)}}.bg-background{background-color:var(--color-background)}.bg-background\/60{background-color:#09090b99}@supports (color:color-mix(in lab,red,red)){.bg-background\/60{background-color:color-mix(in oklab,var(--color-background) 60%,transparent)}}.bg-background\/95{background-color:#09090bf2}@supports (color:color-mix(in lab,red,red)){.bg-background\/95{background-color:color-mix(in oklab,var(--color-background) 95%,transparent)}}.bg-black\/50{background-color:#00000080}@supports (color:color-mix(in lab,red,red)){.bg-black\/50{background-color:color-mix(in oklab,var(--color-black) 50%,transparent)}}.bg-black\/60{background-color:#0009}@supports (color:color-mix(in lab,red,red)){.bg-black\/60{background-color:color-mix(in oklab,var(--color-black) 60%,transparent)}}.bg-border{background-color:var(--color-border)}.bg-card{background-color:var(--color-card)}.bg-card-hover{background-color:var(--color-card-hover)}.bg-card\/80{background-color:#18181bcc}@supports (color:color-mix(in lab,red,red)){.bg-card\/80{background-color:color-mix(in oklab,var(--color-card) 80%,transparent)}}.bg-card\/90{background-color:#18181be6}@supports (color:color-mix(in lab,red,red)){.bg-card\/90{background-color:color-mix(in oklab,var(--color-card) 90%,transparent)}}.bg-danger{background-color:var(--color-danger)}.bg-danger\/15{background-color:#ef444426}@supports (color:color-mix(in lab,red,red)){.bg-danger\/15{background-color:color-mix(in oklab,var(--color-danger) 15%,transparent)}}.bg-danger\/20{background-color:#ef444433}@supports (color:color-mix(in lab,red,red)){.bg-danger\/20{background-color:color-mix(in oklab,var(--color-danger) 20%,transparent)}}.bg-green-500{background-color:var(--color-green-500)}.bg-muted{background-color:var(--color-muted)}.bg-muted-foreground{background-color:var(--color-muted-foreground)}.bg-muted-foreground\/40{background-color:#a1a1aa66}@supports (color:color-mix(in lab,red,red)){.bg-muted-foreground\/40{background-color:color-mix(in oklab,var(--color-muted-foreground) 40%,transparent)}}.bg-muted-foreground\/50{background-color:#a1a1aa80}@supports (color:color-mix(in lab,red,red)){.bg-muted-foreground\/50{background-color:color-mix(in oklab,var(--color-muted-foreground) 50%,transparent)}}.bg-muted\/10{background-color:#27272a1a}@supports (color:color-mix(in lab,red,red)){.bg-muted\/10{background-color:color-mix(in oklab,var(--color-muted) 10%,transparent)}}.bg-muted\/20{background-color:#27272a33}@supports (color:color-mix(in lab,red,red)){.bg-muted\/20{background-color:color-mix(in oklab,var(--color-muted) 20%,transparent)}}.bg-muted\/50{background-color:#27272a80}@supports (color:color-mix(in lab,red,red)){.bg-muted\/50{background-color:color-mix(in oklab,var(--color-muted) 50%,transparent)}}.bg-red-500{background-color:var(--color-red-500)}.bg-simple-accent{background-color:var(--color-simple-accent)}.bg-simple-accent\/5{background-color:#14b8a60d}@supports (color:color-mix(in lab,red,red)){.bg-simple-accent\/5{background-color:color-mix(in oklab,var(--color-simple-accent) 5%,transparent)}}.bg-simple-accent\/10{background-color:#14b8a61a}@supports (color:color-mix(in lab,red,red)){.bg-simple-accent\/10{background-color:color-mix(in oklab,var(--color-simple-accent) 10%,transparent)}}.bg-simple-accent\/15{background-color:#14b8a626}@supports (color:color-mix(in lab,red,red)){.bg-simple-accent\/15{background-color:color-mix(in oklab,var(--color-simple-accent) 15%,transparent)}}.bg-simple-accent\/20{background-color:#14b8a633}@supports (color:color-mix(in lab,red,red)){.bg-simple-accent\/20{background-color:color-mix(in oklab,var(--color-simple-accent) 20%,transparent)}}.bg-success{background-color:var(--color-success)}.bg-success\/20{background-color:#22c55e33}@supports (color:color-mix(in lab,red,red)){.bg-success\/20{background-color:color-mix(in oklab,var(--color-success) 20%,transparent)}}.bg-teal-500\/20{background-color:#00baa733}@supports (color:color-mix(in lab,red,red)){.bg-teal-500\/20{background-color:color-mix(in oklab,var(--color-teal-500) 20%,transparent)}}.bg-transparent{background-color:#0000}.bg-warning\/20{background-color:#eab30833}@supports (color:color-mix(in lab,red,red)){.bg-warning\/20{background-color:color-mix(in oklab,var(--color-warning) 20%,transparent)}}.bg-yellow-500{background-color:var(--color-yellow-500)}.bg-repeat{background-repeat:repeat}.mask-no-clip{-webkit-mask-clip:no-clip;mask-clip:no-clip}.mask-repeat{-webkit-mask-repeat:repeat;mask-repeat:repeat}.p-1\.5{padding:calc(var(--spacing) * 1.5)}.p-2{padding:calc(var(--spacing) * 2)}.p-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.p-6{padding:calc(var(--spacing) * 6)}.p-8{padding:calc(var(--spacing) * 8)}.px-0\.5{padding-inline:calc(var(--spacing) * .5)}.px-1{padding-inline:calc(var(--spacing) * 1)}.px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-5{padding-inline:calc(var(--spacing) * 5)}.px-6{padding-inline:calc(var(--spacing) * 6)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:calc(var(--spacing) * 1)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-2\.5{padding-block:calc(var(--spacing) * 2.5)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-4{padding-block:calc(var(--spacing) * 4)}.py-6{padding-block:calc(var(--spacing) * 6)}.py-10{padding-block:calc(var(--spacing) * 10)}.py-12{padding-block:calc(var(--spacing) * 12)}.pt-3{padding-top:calc(var(--spacing) * 3)}.pt-4{padding-top:calc(var(--spacing) * 4)}.pb-3{padding-bottom:calc(var(--spacing) * 3)}.pb-4{padding-bottom:calc(var(--spacing) * 4)}.pb-6{padding-bottom:calc(var(--spacing) * 6)}.pb-20{padding-bottom:calc(var(--spacing) * 20)}.pl-4{padding-left:calc(var(--spacing) * 4)}.text-center{text-align:center}.text-left{text-align:left}.font-mono{font-family:var(--font-mono)}.font-sans{font-family:var(--font-sans)}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[9px\]{font-size:9px}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.leading-none{--tw-leading:1;line-height:1}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.leading-snug{--tw-leading:var(--leading-snug);line-height:var(--leading-snug)}.leading-tight{--tw-leading:var(--leading-tight);line-height:var(--leading-tight)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.tracking-wider{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.tracking-widest{--tw-tracking:var(--tracking-widest);letter-spacing:var(--tracking-widest)}.text-wrap{text-wrap:wrap}.break-all{word-break:break-all}.text-clip{text-overflow:clip}.text-ellipsis{text-overflow:ellipsis}.text-accent{color:var(--color-accent)}.text-accent\/70{color:#3b82f6b3}@supports (color:color-mix(in lab,red,red)){.text-accent\/70{color:color-mix(in oklab,var(--color-accent) 70%,transparent)}}.text-background{color:var(--color-background)}.text-border{color:var(--color-border)}.text-danger{color:var(--color-danger)}.text-foreground{color:var(--color-foreground)}.text-foreground\/70{color:#fafafab3}@supports (color:color-mix(in lab,red,red)){.text-foreground\/70{color:color-mix(in oklab,var(--color-foreground) 70%,transparent)}}.text-foreground\/80{color:#fafafacc}@supports (color:color-mix(in lab,red,red)){.text-foreground\/80{color:color-mix(in oklab,var(--color-foreground) 80%,transparent)}}.text-foreground\/90{color:#fafafae6}@supports (color:color-mix(in lab,red,red)){.text-foreground\/90{color:color-mix(in oklab,var(--color-foreground) 90%,transparent)}}.text-muted-foreground{color:var(--color-muted-foreground)}.text-red-400{color:var(--color-red-400)}.text-simple-accent{color:var(--color-simple-accent)}.text-success{color:var(--color-success)}.text-teal-400{color:var(--color-teal-400)}.text-warning{color:var(--color-warning)}.capitalize{text-transform:capitalize}.lowercase{text-transform:lowercase}.normal-case{text-transform:none}.uppercase{text-transform:uppercase}.italic{font-style:italic}.not-italic{font-style:normal}.diagonal-fractions{--tw-numeric-fraction:diagonal-fractions;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.lining-nums{--tw-numeric-figure:lining-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.oldstyle-nums{--tw-numeric-figure:oldstyle-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.ordinal{--tw-ordinal:ordinal;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.proportional-nums{--tw-numeric-spacing:proportional-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.slashed-zero{--tw-slashed-zero:slashed-zero;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.stacked-fractions{--tw-numeric-fraction:stacked-fractions;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.normal-nums{font-variant-numeric:normal}.line-through{text-decoration-line:line-through}.no-underline{text-decoration-line:none}.overline{text-decoration-line:overline}.underline{text-decoration-line:underline}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.subpixel-antialiased{-webkit-font-smoothing:auto;-moz-osx-font-smoothing:auto}.accent-accent{accent-color:var(--color-accent)}.opacity-0{opacity:0}.opacity-25{opacity:.25}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-75{opacity:.75}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a), 0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-1{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.inset-ring{--tw-inset-ring-shadow:inset 0 0 0 1px var(--tw-inset-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-simple-accent\/40{--tw-ring-color:#14b8a666}@supports (color:color-mix(in lab,red,red)){.ring-simple-accent\/40{--tw-ring-color:color-mix(in oklab, var(--color-simple-accent) 40%, transparent)}}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.drop-shadow{--tw-drop-shadow-size:drop-shadow(0 1px 2px var(--tw-drop-shadow-color,#0000001a)) drop-shadow(0 1px 1px var(--tw-drop-shadow-color,#0000000f));--tw-drop-shadow:drop-shadow(0 1px 2px #0000001a) drop-shadow(0 1px 1px #0000000f);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.invert{--tw-invert:invert(100%);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.backdrop-blur{--tw-backdrop-blur:blur(8px);-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-blur-sm{--tw-backdrop-blur:blur(var(--blur-sm));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-grayscale{--tw-backdrop-grayscale:grayscale(100%);-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-invert{--tw-backdrop-invert:invert(100%);-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-sepia{--tw-backdrop-sepia:sepia(100%);-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-filter{-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-150{--tw-duration:.15s;transition-duration:.15s}.duration-200{--tw-duration:.2s;transition-duration:.2s}.ease-in{--tw-ease:var(--ease-in);transition-timing-function:var(--ease-in)}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}.outline-none{--tw-outline-style:none;outline-style:none}:where(.divide-x-reverse>:not(:last-child)){--tw-divide-x-reverse:1}.ring-inset{--tw-ring-inset:inset}@media(hover:hover){.group-hover\:border-accent:is(:where(.group):hover *){border-color:var(--color-accent)}.group-hover\:opacity-100:is(:where(.group):hover *){opacity:1}}.placeholder\:text-muted-foreground::placeholder{color:var(--color-muted-foreground)}@media(hover:hover){.hover\:-translate-y-px:hover{--tw-translate-y:-1px;translate:var(--tw-translate-x) var(--tw-translate-y)}.hover\:border-accent:hover{border-color:var(--color-accent)}.hover\:border-muted-foreground:hover{border-color:var(--color-muted-foreground)}.hover\:border-muted-foreground\/40:hover{border-color:#a1a1aa66}@supports (color:color-mix(in lab,red,red)){.hover\:border-muted-foreground\/40:hover{border-color:color-mix(in oklab,var(--color-muted-foreground) 40%,transparent)}}.hover\:border-l-accent\/40:hover{border-left-color:#3b82f666}@supports (color:color-mix(in lab,red,red)){.hover\:border-l-accent\/40:hover{border-left-color:color-mix(in oklab,var(--color-accent) 40%,transparent)}}.hover\:bg-accent:hover{background-color:var(--color-accent)}.hover\:bg-accent-glow:hover{background-color:var(--color-accent-glow)}.hover\:bg-accent\/20:hover{background-color:#3b82f633}@supports (color:color-mix(in lab,red,red)){.hover\:bg-accent\/20:hover{background-color:color-mix(in oklab,var(--color-accent) 20%,transparent)}}.hover\:bg-accent\/30:hover{background-color:#3b82f64d}@supports (color:color-mix(in lab,red,red)){.hover\:bg-accent\/30:hover{background-color:color-mix(in oklab,var(--color-accent) 30%,transparent)}}.hover\:bg-card-hover:hover{background-color:var(--color-card-hover)}.hover\:bg-danger\/10:hover{background-color:#ef44441a}@supports (color:color-mix(in lab,red,red)){.hover\:bg-danger\/10:hover{background-color:color-mix(in oklab,var(--color-danger) 10%,transparent)}}.hover\:bg-danger\/20:hover{background-color:#ef444433}@supports (color:color-mix(in lab,red,red)){.hover\:bg-danger\/20:hover{background-color:color-mix(in oklab,var(--color-danger) 20%,transparent)}}.hover\:bg-danger\/25:hover{background-color:#ef444440}@supports (color:color-mix(in lab,red,red)){.hover\:bg-danger\/25:hover{background-color:color-mix(in oklab,var(--color-danger) 25%,transparent)}}.hover\:bg-danger\/30:hover{background-color:#ef44444d}@supports (color:color-mix(in lab,red,red)){.hover\:bg-danger\/30:hover{background-color:color-mix(in oklab,var(--color-danger) 30%,transparent)}}.hover\:bg-muted:hover{background-color:var(--color-muted)}.hover\:bg-muted\/50:hover{background-color:#27272a80}@supports (color:color-mix(in lab,red,red)){.hover\:bg-muted\/50:hover{background-color:color-mix(in oklab,var(--color-muted) 50%,transparent)}}.hover\:bg-red-500\/20:hover{background-color:#fb2c3633}@supports (color:color-mix(in lab,red,red)){.hover\:bg-red-500\/20:hover{background-color:color-mix(in oklab,var(--color-red-500) 20%,transparent)}}.hover\:bg-simple-accent:hover{background-color:var(--color-simple-accent)}.hover\:bg-simple-accent\/10:hover{background-color:#14b8a61a}@supports (color:color-mix(in lab,red,red)){.hover\:bg-simple-accent\/10:hover{background-color:color-mix(in oklab,var(--color-simple-accent) 10%,transparent)}}.hover\:bg-success\/10:hover{background-color:#22c55e1a}@supports (color:color-mix(in lab,red,red)){.hover\:bg-success\/10:hover{background-color:color-mix(in oklab,var(--color-success) 10%,transparent)}}.hover\:text-accent:hover{color:var(--color-accent)}.hover\:text-background:hover{color:var(--color-background)}.hover\:text-danger:hover{color:var(--color-danger)}.hover\:text-foreground:hover{color:var(--color-foreground)}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-80:hover{opacity:.8}.hover\:shadow-md:hover{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a), 0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}.focus\:border-accent:focus{border-color:var(--color-accent)}.focus\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\:ring-accent\/50:focus{--tw-ring-color:#3b82f680}@supports (color:color-mix(in lab,red,red)){.focus\:ring-accent\/50:focus{--tw-ring-color:color-mix(in oklab, var(--color-accent) 50%, transparent)}}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-30:disabled{opacity:.3}.disabled\:opacity-40:disabled{opacity:.4}.disabled\:opacity-50:disabled{opacity:.5}@media(min-width:40rem){.sm\:ml-auto{margin-left:auto}.sm\:max-w-none{max-width:none}.sm\:flex-row{flex-direction:row}.sm\:items-end{align-items:flex-end}.sm\:gap-8{gap:calc(var(--spacing) * 8)}.sm\:gap-10{gap:calc(var(--spacing) * 10)}.sm\:p-6{padding:calc(var(--spacing) * 6)}.sm\:px-6{padding-inline:calc(var(--spacing) * 6)}.sm\:pl-10{padding-left:calc(var(--spacing) * 10)}}@media(min-width:48rem){.md\:flex{display:flex}.md\:hidden{display:none}.md\:flex-row{flex-direction:row}}@media(min-width:64rem){.lg\:absolute{position:absolute}.lg\:top-0{top:calc(var(--spacing) * 0)}.lg\:right-0{right:calc(var(--spacing) * 0)}.lg\:z-10{z-index:10}.lg\:mt-0{margin-top:calc(var(--spacing) * 0)}.lg\:w-80{width:calc(var(--spacing) * 80)}.lg\:translate-x-\[calc\(100\%\+0\.75rem\)\]{--tw-translate-x: calc(100% + .75rem) ;translate:var(--tw-translate-x) var(--tw-translate-y)}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}.\[\&_a\]\:text-simple-accent a{color:var(--color-simple-accent)}.\[\&_code\]\:bg-muted code{background-color:var(--color-muted)}.\[\&_code\]\:px-1 code{padding-inline:calc(var(--spacing) * 1)}.\[\&_code\]\:py-0\.5 code{padding-block:calc(var(--spacing) * .5)}.\[\&_code\]\:text-xs code{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}}:root{--color-background:#09090b;--color-foreground:#fafafa;--color-muted:#27272a;--color-muted-foreground:#a1a1aa;--color-accent:#3b82f6;--color-accent-glow:#60a5fa;--color-success:#22c55e;--color-warning:#eab308;--color-danger:#ef4444;--color-border:#27272a;--color-card:#18181b;--color-card-hover:#1f1f23;--color-simple-accent:#14b8a6;--font-mono:"Geist Mono", "JetBrains Mono", "Fira Code", monospace;--font-sans:"Geist", "Helvetica Neue", Helvetica, Arial, sans-serif;--radius-sm:0;--radius-md:0;--radius-lg:0}body{background-color:var(--color-background);color:var(--color-foreground);font-family:var(--font-sans);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:var(--color-background)}::-webkit-scrollbar-thumb{background:var(--color-border)}::-webkit-scrollbar-thumb:hover{background:var(--color-muted-foreground)}::selection{background-color:var(--color-accent);color:#fff}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-pan-x{syntax:"*";inherits:false}@property --tw-pan-y{syntax:"*";inherits:false}@property --tw-pinch-zoom{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-space-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.5}}/** -* Copyright (c) 2014 The xterm.js authors. All rights reserved. -* Copyright (c) 2012-2013, Christopher Jeffrey (MIT License) -* https://github.com/chjj/term.js -* @license MIT -* -* Permission is hereby granted, free of charge, to any person obtaining a copy -* of this software and associated documentation files (the "Software"), to deal -* in the Software without restriction, including without limitation the rights -* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -* copies of the Software, and to permit persons to whom the Software is -* furnished to do so, subject to the following conditions: -* -* The above copyright notice and this permission notice shall be included in -* all copies or substantial portions of the Software. -* -* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -* THE SOFTWARE. -* -* Originally forked from (with the author's permission): -* Fabrice Bellard's javascript vt100 for jslinux: -* http://bellard.org/jslinux/ -* Copyright (c) 2011 Fabrice Bellard -* The original design remains. The terminal itself -* has been extended to include xterm CSI codes, among -* other features. -*/.xterm{cursor:text;position:relative;user-select:none;-ms-user-select:none;-webkit-user-select:none}.xterm.focus,.xterm:focus{outline:none}.xterm .xterm-helpers{position:absolute;top:0;z-index:5}.xterm .xterm-helper-textarea{padding:0;border:0;margin:0;position:absolute;opacity:0;left:-9999em;top:0;width:0;height:0;z-index:-5;white-space:nowrap;overflow:hidden;resize:none}.xterm .composition-view{background:#000;color:#fff;display:none;position:absolute;white-space:nowrap;z-index:1}.xterm .composition-view.active{display:block}.xterm .xterm-viewport{background-color:#000;overflow-y:scroll;cursor:default;position:absolute;right:0;left:0;top:0;bottom:0}.xterm .xterm-screen{position:relative}.xterm .xterm-screen canvas{position:absolute;left:0;top:0}.xterm-char-measure-element{display:inline-block;visibility:hidden;position:absolute;top:0;left:-9999em;line-height:normal}.xterm.enable-mouse-events{cursor:default}.xterm.xterm-cursor-pointer,.xterm .xterm-cursor-pointer{cursor:pointer}.xterm.column-select.focus{cursor:crosshair}.xterm .xterm-accessibility:not(.debug),.xterm .xterm-message{position:absolute;left:0;top:0;bottom:0;right:0;z-index:10;color:transparent;pointer-events:none}.xterm .xterm-accessibility-tree:not(.debug) *::selection{color:transparent}.xterm .xterm-accessibility-tree{font-family:monospace;-webkit-user-select:text;user-select:text;white-space:pre}.xterm .xterm-accessibility-tree>div{transform-origin:left;width:fit-content}.xterm .live-region{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}.xterm-dim{opacity:1!important}.xterm-underline-1{text-decoration:underline}.xterm-underline-2{text-decoration:double underline}.xterm-underline-3{text-decoration:wavy underline}.xterm-underline-4{text-decoration:dotted underline}.xterm-underline-5{text-decoration:dashed underline}.xterm-overline{text-decoration:overline}.xterm-overline.xterm-underline-1{text-decoration:overline underline}.xterm-overline.xterm-underline-2{text-decoration:overline double underline}.xterm-overline.xterm-underline-3{text-decoration:overline wavy underline}.xterm-overline.xterm-underline-4{text-decoration:overline dotted underline}.xterm-overline.xterm-underline-5{text-decoration:overline dashed underline}.xterm-strikethrough{text-decoration:line-through}.xterm-screen .xterm-decoration-container .xterm-decoration{z-index:6;position:absolute}.xterm-screen .xterm-decoration-container .xterm-decoration.xterm-decoration-top-layer{z-index:7}.xterm-decoration-overview-ruler{z-index:8;position:absolute;top:0;right:0;pointer-events:none}.xterm-decoration-top{z-index:2;position:relative}.xterm .xterm-scrollable-element>.scrollbar{cursor:default}.xterm .xterm-scrollable-element>.scrollbar>.scra{cursor:pointer;font-size:11px!important}.xterm .xterm-scrollable-element>.visible{opacity:1;background:#0000;transition:opacity .1s linear;z-index:11}.xterm .xterm-scrollable-element>.invisible{opacity:0;pointer-events:none}.xterm .xterm-scrollable-element>.invisible.fade{transition:opacity .8s linear}.xterm .xterm-scrollable-element>.shadow{position:absolute;display:none}.xterm .xterm-scrollable-element>.shadow.top{display:block;top:0;left:3px;height:3px;width:100%;box-shadow:var(--vscode-scrollbar-shadow, #000) 0 6px 6px -6px inset}.xterm .xterm-scrollable-element>.shadow.left{display:block;top:3px;left:0;height:100%;width:3px;box-shadow:var(--vscode-scrollbar-shadow, #000) 6px 0 6px -6px inset}.xterm .xterm-scrollable-element>.shadow.top-left-corner{display:block;top:0;left:0;height:3px;width:3px}.xterm .xterm-scrollable-element>.shadow.top.left{box-shadow:var(--vscode-scrollbar-shadow, #000) 6px 0 6px -6px inset} diff --git a/packages/dashboard/dist/client/assets/index-CZ8WC97G.js b/packages/dashboard/dist/client/assets/index-wtQDvXzr.js similarity index 67% rename from packages/dashboard/dist/client/assets/index-CZ8WC97G.js rename to packages/dashboard/dist/client/assets/index-wtQDvXzr.js index b41e53a..9f9e5fe 100644 --- a/packages/dashboard/dist/client/assets/index-CZ8WC97G.js +++ b/packages/dashboard/dist/client/assets/index-wtQDvXzr.js @@ -1,4 +1,4 @@ -(function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const r of document.querySelectorAll('link[rel="modulepreload"]'))n(r);new MutationObserver(r=>{for(const s of r)if(s.type==="childList")for(const o of s.addedNodes)o.tagName==="LINK"&&o.rel==="modulepreload"&&n(o)}).observe(document,{childList:!0,subtree:!0});function i(r){const s={};return r.integrity&&(s.integrity=r.integrity),r.referrerPolicy&&(s.referrerPolicy=r.referrerPolicy),r.crossOrigin==="use-credentials"?s.credentials="include":r.crossOrigin==="anonymous"?s.credentials="omit":s.credentials="same-origin",s}function n(r){if(r.ep)return;r.ep=!0;const s=i(r);fetch(r.href,s)}})();function WS(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var Hv={exports:{}},Su={};/** +(function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const s of document.querySelectorAll('link[rel="modulepreload"]'))n(s);new MutationObserver(s=>{for(const r of s)if(r.type==="childList")for(const o of r.addedNodes)o.tagName==="LINK"&&o.rel==="modulepreload"&&n(o)}).observe(document,{childList:!0,subtree:!0});function i(s){const r={};return s.integrity&&(r.integrity=s.integrity),s.referrerPolicy&&(r.referrerPolicy=s.referrerPolicy),s.crossOrigin==="use-credentials"?r.credentials="include":s.crossOrigin==="anonymous"?r.credentials="omit":r.credentials="same-origin",r}function n(s){if(s.ep)return;s.ep=!0;const r=i(s);fetch(s.href,r)}})();function WS(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var Hv={exports:{}},Su={};/** * @license React * react-jsx-runtime.production.js * @@ -6,7 +6,7 @@ * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. - */var K5;function jj(){if(K5)return Su;K5=1;var t=Symbol.for("react.transitional.element"),e=Symbol.for("react.fragment");function i(n,r,s){var o=null;if(s!==void 0&&(o=""+s),r.key!==void 0&&(o=""+r.key),"key"in r){s={};for(var l in r)l!=="key"&&(s[l]=r[l])}else s=r;return r=s.ref,{$$typeof:t,type:n,key:o,ref:r!==void 0?r:null,props:s}}return Su.Fragment=e,Su.jsx=i,Su.jsxs=i,Su}var J5;function Ij(){return J5||(J5=1,Hv.exports=jj()),Hv.exports}var S=Ij(),Fv={exports:{}},je={};/** + */var K5;function jj(){if(K5)return Su;K5=1;var t=Symbol.for("react.transitional.element"),e=Symbol.for("react.fragment");function i(n,s,r){var o=null;if(r!==void 0&&(o=""+r),s.key!==void 0&&(o=""+s.key),"key"in s){r={};for(var l in s)l!=="key"&&(r[l]=s[l])}else r=s;return s=r.ref,{$$typeof:t,type:n,key:o,ref:s!==void 0?s:null,props:r}}return Su.Fragment=e,Su.jsx=i,Su.jsxs=i,Su}var J5;function Ij(){return J5||(J5=1,Hv.exports=jj()),Hv.exports}var S=Ij(),Fv={exports:{}},je={};/** * @license React * react.production.js * @@ -14,7 +14,7 @@ * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. - */var eT;function Vj(){if(eT)return je;eT=1;var t=Symbol.for("react.transitional.element"),e=Symbol.for("react.portal"),i=Symbol.for("react.fragment"),n=Symbol.for("react.strict_mode"),r=Symbol.for("react.profiler"),s=Symbol.for("react.consumer"),o=Symbol.for("react.context"),l=Symbol.for("react.forward_ref"),c=Symbol.for("react.suspense"),u=Symbol.for("react.memo"),d=Symbol.for("react.lazy"),p=Symbol.for("react.activity"),g=Symbol.iterator;function O(I){return I===null||typeof I!="object"?null:(I=g&&I[g]||I["@@iterator"],typeof I=="function"?I:null)}var _={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},b=Object.assign,x={};function w(I,K,L){this.props=I,this.context=K,this.refs=x,this.updater=L||_}w.prototype.isReactComponent={},w.prototype.setState=function(I,K){if(typeof I!="object"&&typeof I!="function"&&I!=null)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,I,K,"setState")},w.prototype.forceUpdate=function(I){this.updater.enqueueForceUpdate(this,I,"forceUpdate")};function k(){}k.prototype=w.prototype;function T(I,K,L){this.props=I,this.context=K,this.refs=x,this.updater=L||_}var A=T.prototype=new k;A.constructor=T,b(A,w.prototype),A.isPureReactComponent=!0;var Q=Array.isArray;function E(){}var z={H:null,A:null,T:null,S:null},N=Object.prototype.hasOwnProperty;function q(I,K,L){var ue=L.ref;return{$$typeof:t,type:I,key:K,ref:ue!==void 0?ue:null,props:L}}function J(I,K){return q(I.type,K,I.props)}function U(I){return typeof I=="object"&&I!==null&&I.$$typeof===t}function R(I){var K={"=":"=0",":":"=2"};return"$"+I.replace(/[=:]/g,function(L){return K[L]})}var B=/\/+/g;function j(I,K){return typeof I=="object"&&I!==null&&I.key!=null?R(""+I.key):K.toString(36)}function $(I){switch(I.status){case"fulfilled":return I.value;case"rejected":throw I.reason;default:switch(typeof I.status=="string"?I.then(E,E):(I.status="pending",I.then(function(K){I.status==="pending"&&(I.status="fulfilled",I.value=K)},function(K){I.status==="pending"&&(I.status="rejected",I.reason=K)})),I.status){case"fulfilled":return I.value;case"rejected":throw I.reason}}throw I}function D(I,K,L,ue,he){var fe=typeof I;(fe==="undefined"||fe==="boolean")&&(I=null);var Oe=!1;if(I===null)Oe=!0;else switch(fe){case"bigint":case"string":case"number":Oe=!0;break;case"object":switch(I.$$typeof){case t:case e:Oe=!0;break;case d:return Oe=I._init,D(Oe(I._payload),K,L,ue,he)}}if(Oe)return he=he(I),Oe=ue===""?"."+j(I,0):ue,Q(he)?(L="",Oe!=null&&(L=Oe.replace(B,"$&/")+"/"),D(he,K,L,"",function(nt){return nt})):he!=null&&(U(he)&&(he=J(he,L+(he.key==null||I&&I.key===he.key?"":(""+he.key).replace(B,"$&/")+"/")+Oe)),K.push(he)),1;Oe=0;var Ce=ue===""?".":ue+":";if(Q(I))for(var ye=0;ye>>1,M=D[F];if(0>>1;Fr(L,H))uer(he,L)?(D[F]=he,D[ue]=H,F=ue):(D[F]=L,D[K]=H,F=K);else if(uer(he,H))D[F]=he,D[ue]=H,F=ue;else break e}}return X}function r(D,X){var H=D.sortIndex-X.sortIndex;return H!==0?H:D.id-X.id}if(t.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var s=performance;t.unstable_now=function(){return s.now()}}else{var o=Date,l=o.now();t.unstable_now=function(){return o.now()-l}}var c=[],u=[],d=1,p=null,g=3,O=!1,_=!1,b=!1,x=!1,w=typeof setTimeout=="function"?setTimeout:null,k=typeof clearTimeout=="function"?clearTimeout:null,T=typeof setImmediate<"u"?setImmediate:null;function A(D){for(var X=i(u);X!==null;){if(X.callback===null)n(u);else if(X.startTime<=D)n(u),X.sortIndex=X.expirationTime,e(c,X);else break;X=i(u)}}function Q(D){if(b=!1,A(D),!_)if(i(c)!==null)_=!0,E||(E=!0,R());else{var X=i(u);X!==null&&$(Q,X.startTime-D)}}var E=!1,z=-1,N=5,q=-1;function J(){return x?!0:!(t.unstable_now()-qD&&J());){var F=p.callback;if(typeof F=="function"){p.callback=null,g=p.priorityLevel;var M=F(p.expirationTime<=D);if(D=t.unstable_now(),typeof M=="function"){p.callback=M,A(D),X=!0;break t}p===i(c)&&n(c),A(D)}else n(c);p=i(c)}if(p!==null)X=!0;else{var I=i(u);I!==null&&$(Q,I.startTime-D),X=!1}}break e}finally{p=null,g=H,O=!1}X=void 0}}finally{X?R():E=!1}}}var R;if(typeof T=="function")R=function(){T(U)};else if(typeof MessageChannel<"u"){var B=new MessageChannel,j=B.port2;B.port1.onmessage=U,R=function(){j.postMessage(null)}}else R=function(){w(U,0)};function $(D,X){z=w(function(){D(t.unstable_now())},X)}t.unstable_IdlePriority=5,t.unstable_ImmediatePriority=1,t.unstable_LowPriority=4,t.unstable_NormalPriority=3,t.unstable_Profiling=null,t.unstable_UserBlockingPriority=2,t.unstable_cancelCallback=function(D){D.callback=null},t.unstable_forceFrameRate=function(D){0>D||125F?(D.sortIndex=H,e(u,D),i(c)===null&&D===i(u)&&(b?(k(z),z=-1):b=!0,$(Q,H-F))):(D.sortIndex=M,e(c,D),_||O||(_=!0,E||(E=!0,R()))),D},t.unstable_shouldYield=J,t.unstable_wrapCallback=function(D){var X=g;return function(){var H=g;g=X;try{return D.apply(this,arguments)}finally{g=H}}}})(Jv)),Jv}var nT;function Zj(){return nT||(nT=1,Kv.exports=Xj()),Kv.exports}var e_={exports:{}},Ji={};/** + */var iT;function Xj(){return iT||(iT=1,(function(t){function e(D,Z){var H=D.length;D.push(Z);e:for(;0>>1,M=D[F];if(0>>1;Fs(L,H))ues(he,L)?(D[F]=he,D[ue]=H,F=ue):(D[F]=L,D[K]=H,F=K);else if(ues(he,H))D[F]=he,D[ue]=H,F=ue;else break e}}return Z}function s(D,Z){var H=D.sortIndex-Z.sortIndex;return H!==0?H:D.id-Z.id}if(t.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var r=performance;t.unstable_now=function(){return r.now()}}else{var o=Date,l=o.now();t.unstable_now=function(){return o.now()-l}}var c=[],u=[],d=1,p=null,g=3,O=!1,_=!1,b=!1,x=!1,w=typeof setTimeout=="function"?setTimeout:null,k=typeof clearTimeout=="function"?clearTimeout:null,T=typeof setImmediate<"u"?setImmediate:null;function A(D){for(var Z=i(u);Z!==null;){if(Z.callback===null)n(u);else if(Z.startTime<=D)n(u),Z.sortIndex=Z.expirationTime,e(c,Z);else break;Z=i(u)}}function Q(D){if(b=!1,A(D),!_)if(i(c)!==null)_=!0,E||(E=!0,R());else{var Z=i(u);Z!==null&&$(Q,Z.startTime-D)}}var E=!1,N=-1,z=5,q=-1;function J(){return x?!0:!(t.unstable_now()-qD&&J());){var F=p.callback;if(typeof F=="function"){p.callback=null,g=p.priorityLevel;var M=F(p.expirationTime<=D);if(D=t.unstable_now(),typeof M=="function"){p.callback=M,A(D),Z=!0;break t}p===i(c)&&n(c),A(D)}else n(c);p=i(c)}if(p!==null)Z=!0;else{var I=i(u);I!==null&&$(Q,I.startTime-D),Z=!1}}break e}finally{p=null,g=H,O=!1}Z=void 0}}finally{Z?R():E=!1}}}var R;if(typeof T=="function")R=function(){T(U)};else if(typeof MessageChannel<"u"){var B=new MessageChannel,j=B.port2;B.port1.onmessage=U,R=function(){j.postMessage(null)}}else R=function(){w(U,0)};function $(D,Z){N=w(function(){D(t.unstable_now())},Z)}t.unstable_IdlePriority=5,t.unstable_ImmediatePriority=1,t.unstable_LowPriority=4,t.unstable_NormalPriority=3,t.unstable_Profiling=null,t.unstable_UserBlockingPriority=2,t.unstable_cancelCallback=function(D){D.callback=null},t.unstable_forceFrameRate=function(D){0>D||125F?(D.sortIndex=H,e(u,D),i(c)===null&&D===i(u)&&(b?(k(N),N=-1):b=!0,$(Q,H-F))):(D.sortIndex=M,e(c,D),_||O||(_=!0,E||(E=!0,R()))),D},t.unstable_shouldYield=J,t.unstable_wrapCallback=function(D){var Z=g;return function(){var H=g;g=Z;try{return D.apply(this,arguments)}finally{g=H}}}})(Jv)),Jv}var nT;function Zj(){return nT||(nT=1,Kv.exports=Xj()),Kv.exports}var e_={exports:{}},Ji={};/** * @license React * react-dom.production.js * @@ -30,7 +30,7 @@ * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. - */var rT;function qj(){if(rT)return Ji;rT=1;var t=US();function e(c){var u="https://react.dev/errors/"+c;if(1"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(t)}catch(e){console.error(e)}}return t(),e_.exports=qj(),e_.exports}/** + */var sT;function qj(){if(sT)return Ji;sT=1;var t=US();function e(c){var u="https://react.dev/errors/"+c;if(1"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(t)}catch(e){console.error(e)}}return t(),e_.exports=qj(),e_.exports}/** * @license React * react-dom-client.production.js * @@ -38,15 +38,15 @@ * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. - */var oT;function Uj(){if(oT)return xu;oT=1;var t=Zj(),e=US(),i=Wj();function n(a){var h="https://react.dev/errors/"+a;if(1M||(a.current=F[M],F[M]=null,M--)}function L(a,h){M++,F[M]=a.current,a.current=h}var ue=I(null),he=I(null),fe=I(null),Oe=I(null);function Ce(a,h){switch(L(fe,h),L(he,a),L(ue,null),h.nodeType){case 9:case 11:a=(a=h.documentElement)&&(a=a.namespaceURI)?b5(a):0;break;default:if(a=h.tagName,h=h.namespaceURI)h=b5(h),a=S5(h,a);else switch(a){case"svg":a=1;break;case"math":a=2;break;default:a=0}}K(ue),L(ue,a)}function ye(){K(ue),K(he),K(fe)}function nt(a){a.memoizedState!==null&&L(Oe,a);var h=ue.current,f=S5(h,a.type);h!==f&&(L(he,a),L(ue,f))}function Qt(a){he.current===a&&(K(ue),K(he)),Oe.current===a&&(K(Oe),vu._currentValue=H)}var Yt,ei;function Le(a){if(Yt===void 0)try{throw Error()}catch(f){var h=f.stack.trim().match(/\n( *(at )?)/);Yt=h&&h[1]||"",ei=-1M||(a.current=F[M],F[M]=null,M--)}function L(a,h){M++,F[M]=a.current,a.current=h}var ue=I(null),he=I(null),fe=I(null),Oe=I(null);function Ce(a,h){switch(L(fe,h),L(he,a),L(ue,null),h.nodeType){case 9:case 11:a=(a=h.documentElement)&&(a=a.namespaceURI)?b5(a):0;break;default:if(a=h.tagName,h=h.namespaceURI)h=b5(h),a=S5(h,a);else switch(a){case"svg":a=1;break;case"math":a=2;break;default:a=0}}K(ue),L(ue,a)}function ye(){K(ue),K(he),K(fe)}function nt(a){a.memoizedState!==null&&L(Oe,a);var h=ue.current,f=S5(h,a.type);h!==f&&(L(he,a),L(ue,f))}function Qt(a){he.current===a&&(K(ue),K(he)),Oe.current===a&&(K(Oe),vu._currentValue=H)}var Yt,ei;function Le(a){if(Yt===void 0)try{throw Error()}catch(f){var h=f.stack.trim().match(/\n( *(at )?)/);Yt=h&&h[1]||"",ei=-1)":-1v||W[m]!==te[v]){var re=` -`+W[m].replace(" at new "," at ");return a.displayName&&re.includes("")&&(re=re.replace("",a.displayName)),re}while(1<=m&&0<=v);break}}}finally{ar=!1,Error.prepareStackTrace=f}return(f=a?a.displayName||a.name:"")?Le(f):""}function ko(a,h){switch(a.tag){case 26:case 27:case 5:return Le(a.type);case 16:return Le("Lazy");case 13:return a.child!==h&&h!==null?Le("Suspense Fallback"):Le("Suspense");case 19:return Le("SuspenseList");case 0:case 15:return Co(a.type,!1);case 11:return Co(a.type.render,!1);case 1:return Co(a.type,!0);case 31:return Le("Activity");default:return""}}function La(a){try{var h="",f=null;do h+=ko(a,f),f=a,a=a.return;while(a);return h}catch(m){return` +`);for(v=m=0;mv||W[m]!==te[v]){var se=` +`+W[m].replace(" at new "," at ");return a.displayName&&se.includes("")&&(se=se.replace("",a.displayName)),se}while(1<=m&&0<=v);break}}}finally{as=!1,Error.prepareStackTrace=f}return(f=a?a.displayName||a.name:"")?Le(f):""}function Ao(a,h){switch(a.tag){case 26:case 27:case 5:return Le(a.type);case 16:return Le("Lazy");case 13:return a.child!==h&&h!==null?Le("Suspense Fallback"):Le("Suspense");case 19:return Le("SuspenseList");case 0:case 15:return To(a.type,!1);case 11:return To(a.type.render,!1);case 1:return To(a.type,!0);case 31:return Le("Activity");default:return""}}function Da(a){try{var h="",f=null;do h+=Ao(a,f),f=a,a=a.return;while(a);return h}catch(m){return` Error generating stack: `+m.message+` -`+m.stack}}var Ds=Object.prototype.hasOwnProperty,To=t.unstable_scheduleCallback,Mh=t.unstable_cancelCallback,LO=t.unstable_shouldYield,DO=t.unstable_requestPaint,cn=t.unstable_now,BO=t.unstable_getCurrentPriorityLevel,oe=t.unstable_ImmediatePriority,ge=t.unstable_UserBlockingPriority,De=t.unstable_NormalPriority,Ue=t.unstable_LowPriority,ht=t.unstable_IdlePriority,In=t.log,Bs=t.unstable_setDisableYieldValue,hn=null,fi=null;function Sn(a){if(typeof In=="function"&&Bs(a),fi&&typeof fi.setStrictMode=="function")try{fi.setStrictMode(hn,a)}catch{}}var _t=Math.clz32?Math.clz32:kN,Ao=Math.log,Br=Math.LN2;function kN(a){return a>>>=0,a===0?32:31-(Ao(a)/Br|0)|0}var Td=256,Ad=262144,Ed=4194304;function Da(a){var h=a&42;if(h!==0)return h;switch(a&-a){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return a&261888;case 262144:case 524288:case 1048576:case 2097152:return a&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return a&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return a}}function Md(a,h,f){var m=a.pendingLanes;if(m===0)return 0;var v=0,y=a.suspendedLanes,C=a.pingedLanes;a=a.warmLanes;var P=m&134217727;return P!==0?(m=P&~y,m!==0?v=Da(m):(C&=P,C!==0?v=Da(C):f||(f=P&~a,f!==0&&(v=Da(f))))):(P=m&~y,P!==0?v=Da(P):C!==0?v=Da(C):f||(f=m&~a,f!==0&&(v=Da(f)))),v===0?0:h!==0&&h!==v&&(h&y)===0&&(y=v&-v,f=h&-h,y>=f||y===32&&(f&4194048)!==0)?h:v}function Ph(a,h){return(a.pendingLanes&~(a.suspendedLanes&~a.pingedLanes)&h)===0}function TN(a,h){switch(a){case 1:case 2:case 4:case 8:case 64:return h+250;case 16:case 32:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return h+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function iC(){var a=Ed;return Ed<<=1,(Ed&62914560)===0&&(Ed=4194304),a}function $O(a){for(var h=[],f=0;31>f;f++)h.push(a);return h}function Rh(a,h){a.pendingLanes|=h,h!==268435456&&(a.suspendedLanes=0,a.pingedLanes=0,a.warmLanes=0)}function AN(a,h,f,m,v,y){var C=a.pendingLanes;a.pendingLanes=f,a.suspendedLanes=0,a.pingedLanes=0,a.warmLanes=0,a.expiredLanes&=f,a.entangledLanes&=f,a.errorRecoveryDisabledLanes&=f,a.shellSuspendCounter=0;var P=a.entanglements,W=a.expirationTimes,te=a.hiddenUpdates;for(f=C&~f;0"u")return null;try{return a.activeElement||a.body}catch{return a.body}}var LN=/[\n"\\]/g;function cr(a){return a.replace(LN,function(h){return"\\"+h.charCodeAt(0).toString(16)+" "})}function XO(a,h,f,m,v,y,C,P){a.name="",C!=null&&typeof C!="function"&&typeof C!="symbol"&&typeof C!="boolean"?a.type=C:a.removeAttribute("type"),h!=null?C==="number"?(h===0&&a.value===""||a.value!=h)&&(a.value=""+lr(h)):a.value!==""+lr(h)&&(a.value=""+lr(h)):C!=="submit"&&C!=="reset"||a.removeAttribute("value"),h!=null?ZO(a,C,lr(h)):f!=null?ZO(a,C,lr(f)):m!=null&&a.removeAttribute("value"),v==null&&y!=null&&(a.defaultChecked=!!y),v!=null&&(a.checked=v&&typeof v!="function"&&typeof v!="symbol"),P!=null&&typeof P!="function"&&typeof P!="symbol"&&typeof P!="boolean"?a.name=""+lr(P):a.removeAttribute("name")}function mC(a,h,f,m,v,y,C,P){if(y!=null&&typeof y!="function"&&typeof y!="symbol"&&typeof y!="boolean"&&(a.type=y),h!=null||f!=null){if(!(y!=="submit"&&y!=="reset"||h!=null)){VO(a);return}f=f!=null?""+lr(f):"",h=h!=null?""+lr(h):f,P||h===a.value||(a.value=h),a.defaultValue=h}m=m??v,m=typeof m!="function"&&typeof m!="symbol"&&!!m,a.checked=P?a.checked:!!m,a.defaultChecked=!!m,C!=null&&typeof C!="function"&&typeof C!="symbol"&&typeof C!="boolean"&&(a.name=C),VO(a)}function ZO(a,h,f){h==="number"&&Qd(a.ownerDocument)===a||a.defaultValue===""+f||(a.defaultValue=""+f)}function Zl(a,h,f,m){if(a=a.options,h){h={};for(var v=0;v"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),HO=!1;if(Ns)try{var Bh={};Object.defineProperty(Bh,"passive",{get:function(){HO=!0}}),window.addEventListener("test",Bh,Bh),window.removeEventListener("test",Bh,Bh)}catch{HO=!1}var Mo=null,FO=null,Dd=null;function SC(){if(Dd)return Dd;var a,h=FO,f=h.length,m,v="value"in Mo?Mo.value:Mo.textContent,y=v.length;for(a=0;a=Nh),AC=" ",EC=!1;function MC(a,h){switch(a){case"keyup":return l8.indexOf(h.keyCode)!==-1;case"keydown":return h.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function PC(a){return a=a.detail,typeof a=="object"&&"data"in a?a.data:null}var Yl=!1;function h8(a,h){switch(a){case"compositionend":return PC(h);case"keypress":return h.which!==32?null:(EC=!0,AC);case"textInput":return a=h.data,a===AC&&EC?null:a;default:return null}}function u8(a,h){if(Yl)return a==="compositionend"||!t0&&MC(a,h)?(a=SC(),Dd=FO=Mo=null,Yl=!1,a):null;switch(a){case"paste":return null;case"keypress":if(!(h.ctrlKey||h.altKey||h.metaKey)||h.ctrlKey&&h.altKey){if(h.char&&1=h)return{node:f,offset:h-a};a=m}e:{for(;f;){if(f.nextSibling){f=f.nextSibling;break e}f=f.parentNode}f=void 0}f=NC(f)}}function IC(a,h){return a&&h?a===h?!0:a&&a.nodeType===3?!1:h&&h.nodeType===3?IC(a,h.parentNode):"contains"in a?a.contains(h):a.compareDocumentPosition?!!(a.compareDocumentPosition(h)&16):!1:!1}function VC(a){a=a!=null&&a.ownerDocument!=null&&a.ownerDocument.defaultView!=null?a.ownerDocument.defaultView:window;for(var h=Qd(a.document);h instanceof a.HTMLIFrameElement;){try{var f=typeof h.contentWindow.location.href=="string"}catch{f=!1}if(f)a=h.contentWindow;else break;h=Qd(a.document)}return h}function r0(a){var h=a&&a.nodeName&&a.nodeName.toLowerCase();return h&&(h==="input"&&(a.type==="text"||a.type==="search"||a.type==="tel"||a.type==="url"||a.type==="password")||h==="textarea"||a.contentEditable==="true")}var _8=Ns&&"documentMode"in document&&11>=document.documentMode,Hl=null,s0=null,Xh=null,o0=!1;function XC(a,h,f){var m=f.window===f?f.document:f.nodeType===9?f:f.ownerDocument;o0||Hl==null||Hl!==Qd(m)||(m=Hl,"selectionStart"in m&&r0(m)?m={start:m.selectionStart,end:m.selectionEnd}:(m=(m.ownerDocument&&m.ownerDocument.defaultView||window).getSelection(),m={anchorNode:m.anchorNode,anchorOffset:m.anchorOffset,focusNode:m.focusNode,focusOffset:m.focusOffset}),Xh&&Vh(Xh,m)||(Xh=m,m=Ap(s0,"onSelect"),0>=C,v-=C,es=1<<32-_t(h)+v|f<Ve?(Je=Ee,Ee=null):Je=Ee.sibling;var st=ie(G,Ee,ee[Ve],ae);if(st===null){Ee===null&&(Ee=Je);break}a&&Ee&&st.alternate===null&&h(G,Ee),Y=y(st,Y,Ve),rt===null?Re=st:rt.sibling=st,rt=st,Ee=Je}if(Ve===ee.length)return f(G,Ee),tt&&Is(G,Ve),Re;if(Ee===null){for(;VeVe?(Je=Ee,Ee=null):Je=Ee.sibling;var Ko=ie(G,Ee,st.value,ae);if(Ko===null){Ee===null&&(Ee=Je);break}a&&Ee&&Ko.alternate===null&&h(G,Ee),Y=y(Ko,Y,Ve),rt===null?Re=Ko:rt.sibling=Ko,rt=Ko,Ee=Je}if(st.done)return f(G,Ee),tt&&Is(G,Ve),Re;if(Ee===null){for(;!st.done;Ve++,st=ee.next())st=le(G,st.value,ae),st!==null&&(Y=y(st,Y,Ve),rt===null?Re=st:rt.sibling=st,rt=st);return tt&&Is(G,Ve),Re}for(Ee=m(Ee);!st.done;Ve++,st=ee.next())st=ne(Ee,G,Ve,st.value,ae),st!==null&&(a&&st.alternate!==null&&Ee.delete(st.key===null?Ve:st.key),Y=y(st,Y,Ve),rt===null?Re=st:rt.sibling=st,rt=st);return a&&Ee.forEach(function(Nj){return h(G,Nj)}),tt&&Is(G,Ve),Re}function gt(G,Y,ee,ae){if(typeof ee=="object"&&ee!==null&&ee.type===b&&ee.key===null&&(ee=ee.props.children),typeof ee=="object"&&ee!==null){switch(ee.$$typeof){case O:e:{for(var Re=ee.key;Y!==null;){if(Y.key===Re){if(Re=ee.type,Re===b){if(Y.tag===7){f(G,Y.sibling),ae=v(Y,ee.props.children),ae.return=G,G=ae;break e}}else if(Y.elementType===Re||typeof Re=="object"&&Re!==null&&Re.$$typeof===N&&Wa(Re)===Y.type){f(G,Y.sibling),ae=v(Y,ee.props),Hh(ae,ee),ae.return=G,G=ae;break e}f(G,Y);break}else h(G,Y);Y=Y.sibling}ee.type===b?(ae=Ia(ee.props.children,G.mode,ae,ee.key),ae.return=G,G=ae):(ae=qd(ee.type,ee.key,ee.props,null,G.mode,ae),Hh(ae,ee),ae.return=G,G=ae)}return C(G);case _:e:{for(Re=ee.key;Y!==null;){if(Y.key===Re)if(Y.tag===4&&Y.stateNode.containerInfo===ee.containerInfo&&Y.stateNode.implementation===ee.implementation){f(G,Y.sibling),ae=v(Y,ee.children||[]),ae.return=G,G=ae;break e}else{f(G,Y);break}else h(G,Y);Y=Y.sibling}ae=d0(ee,G.mode,ae),ae.return=G,G=ae}return C(G);case N:return ee=Wa(ee),gt(G,Y,ee,ae)}if($(ee))return we(G,Y,ee,ae);if(R(ee)){if(Re=R(ee),typeof Re!="function")throw Error(n(150));return ee=Re.call(ee),Qe(G,Y,ee,ae)}if(typeof ee.then=="function")return gt(G,Y,Kd(ee),ae);if(ee.$$typeof===T)return gt(G,Y,Yd(G,ee),ae);Jd(G,ee)}return typeof ee=="string"&&ee!==""||typeof ee=="number"||typeof ee=="bigint"?(ee=""+ee,Y!==null&&Y.tag===6?(f(G,Y.sibling),ae=v(Y,ee),ae.return=G,G=ae):(f(G,Y),ae=f0(ee,G.mode,ae),ae.return=G,G=ae),C(G)):f(G,Y)}return function(G,Y,ee,ae){try{Yh=0;var Re=gt(G,Y,ee,ae);return oc=null,Re}catch(Ee){if(Ee===sc||Ee===Fd)throw Ee;var rt=Xn(29,Ee,null,G.mode);return rt.lanes=ae,rt.return=G,rt}finally{}}}var Ya=fk(!0),dk=fk(!1),Do=!1;function C0(a){a.updateQueue={baseState:a.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function k0(a,h){a=a.updateQueue,h.updateQueue===a&&(h.updateQueue={baseState:a.baseState,firstBaseUpdate:a.firstBaseUpdate,lastBaseUpdate:a.lastBaseUpdate,shared:a.shared,callbacks:null})}function Bo(a){return{lane:a,tag:0,payload:null,callback:null,next:null}}function $o(a,h,f){var m=a.updateQueue;if(m===null)return null;if(m=m.shared,(ot&2)!==0){var v=m.pending;return v===null?h.next=h:(h.next=v.next,v.next=h),m.pending=h,h=Zd(a),FC(a,null,f),h}return Xd(a,m,h,f),Zd(a)}function Fh(a,h,f){if(h=h.updateQueue,h!==null&&(h=h.shared,(f&4194048)!==0)){var m=h.lanes;m&=a.pendingLanes,f|=m,h.lanes=f,rC(a,f)}}function T0(a,h){var f=a.updateQueue,m=a.alternate;if(m!==null&&(m=m.updateQueue,f===m)){var v=null,y=null;if(f=f.firstBaseUpdate,f!==null){do{var C={lane:f.lane,tag:f.tag,payload:f.payload,callback:null,next:null};y===null?v=y=C:y=y.next=C,f=f.next}while(f!==null);y===null?v=y=h:y=y.next=h}else v=y=h;f={baseState:m.baseState,firstBaseUpdate:v,lastBaseUpdate:y,shared:m.shared,callbacks:m.callbacks},a.updateQueue=f;return}a=f.lastBaseUpdate,a===null?f.firstBaseUpdate=h:a.next=h,f.lastBaseUpdate=h}var A0=!1;function Gh(){if(A0){var a=rc;if(a!==null)throw a}}function Kh(a,h,f,m){A0=!1;var v=a.updateQueue;Do=!1;var y=v.firstBaseUpdate,C=v.lastBaseUpdate,P=v.shared.pending;if(P!==null){v.shared.pending=null;var W=P,te=W.next;W.next=null,C===null?y=te:C.next=te,C=W;var re=a.alternate;re!==null&&(re=re.updateQueue,P=re.lastBaseUpdate,P!==C&&(P===null?re.firstBaseUpdate=te:P.next=te,re.lastBaseUpdate=W))}if(y!==null){var le=v.baseState;C=0,re=te=W=null,P=y;do{var ie=P.lane&-536870913,ne=ie!==P.lane;if(ne?(Ke&ie)===ie:(m&ie)===ie){ie!==0&&ie===nc&&(A0=!0),re!==null&&(re=re.next={lane:0,tag:P.tag,payload:P.payload,callback:null,next:null});e:{var we=a,Qe=P;ie=h;var gt=f;switch(Qe.tag){case 1:if(we=Qe.payload,typeof we=="function"){le=we.call(gt,le,ie);break e}le=we;break e;case 3:we.flags=we.flags&-65537|128;case 0:if(we=Qe.payload,ie=typeof we=="function"?we.call(gt,le,ie):we,ie==null)break e;le=p({},le,ie);break e;case 2:Do=!0}}ie=P.callback,ie!==null&&(a.flags|=64,ne&&(a.flags|=8192),ne=v.callbacks,ne===null?v.callbacks=[ie]:ne.push(ie))}else ne={lane:ie,tag:P.tag,payload:P.payload,callback:P.callback,next:null},re===null?(te=re=ne,W=le):re=re.next=ne,C|=ie;if(P=P.next,P===null){if(P=v.shared.pending,P===null)break;ne=P,P=ne.next,ne.next=null,v.lastBaseUpdate=ne,v.shared.pending=null}}while(!0);re===null&&(W=le),v.baseState=W,v.firstBaseUpdate=te,v.lastBaseUpdate=re,y===null&&(v.shared.lanes=0),Vo|=C,a.lanes=C,a.memoizedState=le}}function pk(a,h){if(typeof a!="function")throw Error(n(191,a));a.call(h)}function mk(a,h){var f=a.callbacks;if(f!==null)for(a.callbacks=null,a=0;ay?y:8;var C=D.T,P={};D.T=P,U0(a,!1,h,f);try{var W=v(),te=D.S;if(te!==null&&te(P,W),W!==null&&typeof W=="object"&&typeof W.then=="function"){var re=A8(W,m);tu(a,h,re,Yn(a))}else tu(a,h,m,Yn(a))}catch(le){tu(a,h,{then:function(){},status:"rejected",reason:le},Yn())}finally{X.p=y,C!==null&&P.types!==null&&(C.types=P.types),D.T=C}}function L8(){}function q0(a,h,f,m){if(a.tag!==5)throw Error(n(476));var v=Uk(a).queue;Wk(a,v,h,H,f===null?L8:function(){return Yk(a),f(m)})}function Uk(a){var h=a.memoizedState;if(h!==null)return h;h={memoizedState:H,baseState:H,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:qs,lastRenderedState:H},next:null};var f={};return h.next={memoizedState:f,baseState:f,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:qs,lastRenderedState:f},next:null},a.memoizedState=h,a=a.alternate,a!==null&&(a.memoizedState=h),h}function Yk(a){var h=Uk(a);h.next===null&&(h=a.alternate.memoizedState),tu(a,h.next.queue,{},Yn())}function W0(){return ji(vu)}function Hk(){return Ft().memoizedState}function Fk(){return Ft().memoizedState}function D8(a){for(var h=a.return;h!==null;){switch(h.tag){case 24:case 3:var f=Yn();a=Bo(f);var m=$o(h,a,f);m!==null&&(En(m,h,f),Fh(m,h,f)),h={cache:b0()},a.payload=h;return}h=h.return}}function B8(a,h,f){var m=Yn();f={lane:m,revertLane:0,gesture:null,action:f,hasEagerState:!1,eagerState:null,next:null},cp(a)?Kk(h,f):(f=h0(a,h,f,m),f!==null&&(En(f,a,m),Jk(f,h,m)))}function Gk(a,h,f){var m=Yn();tu(a,h,f,m)}function tu(a,h,f,m){var v={lane:m,revertLane:0,gesture:null,action:f,hasEagerState:!1,eagerState:null,next:null};if(cp(a))Kk(h,v);else{var y=a.alternate;if(a.lanes===0&&(y===null||y.lanes===0)&&(y=h.lastRenderedReducer,y!==null))try{var C=h.lastRenderedState,P=y(C,f);if(v.hasEagerState=!0,v.eagerState=P,Vn(P,C))return Xd(a,h,v,0),yt===null&&Vd(),!1}catch{}finally{}if(f=h0(a,h,v,m),f!==null)return En(f,a,m),Jk(f,h,m),!0}return!1}function U0(a,h,f,m){if(m={lane:2,revertLane:Cv(),gesture:null,action:m,hasEagerState:!1,eagerState:null,next:null},cp(a)){if(h)throw Error(n(479))}else h=h0(a,f,m,2),h!==null&&En(h,a,2)}function cp(a){var h=a.alternate;return a===Ie||h!==null&&h===Ie}function Kk(a,h){lc=ip=!0;var f=a.pending;f===null?h.next=h:(h.next=f.next,f.next=h),a.pending=h}function Jk(a,h,f){if((f&4194048)!==0){var m=h.lanes;m&=a.pendingLanes,f|=m,h.lanes=f,rC(a,f)}}var iu={readContext:ji,use:sp,useCallback:jt,useContext:jt,useEffect:jt,useImperativeHandle:jt,useLayoutEffect:jt,useInsertionEffect:jt,useMemo:jt,useReducer:jt,useRef:jt,useState:jt,useDebugValue:jt,useDeferredValue:jt,useTransition:jt,useSyncExternalStore:jt,useId:jt,useHostTransitionStatus:jt,useFormState:jt,useActionState:jt,useOptimistic:jt,useMemoCache:jt,useCacheRefresh:jt};iu.useEffectEvent=jt;var e2={readContext:ji,use:sp,useCallback:function(a,h){return un().memoizedState=[a,h===void 0?null:h],a},useContext:ji,useEffect:$k,useImperativeHandle:function(a,h,f){f=f!=null?f.concat([a]):null,ap(4194308,4,Ik.bind(null,h,a),f)},useLayoutEffect:function(a,h){return ap(4194308,4,a,h)},useInsertionEffect:function(a,h){ap(4,2,a,h)},useMemo:function(a,h){var f=un();h=h===void 0?null:h;var m=a();if(Ha){Sn(!0);try{a()}finally{Sn(!1)}}return f.memoizedState=[m,h],m},useReducer:function(a,h,f){var m=un();if(f!==void 0){var v=f(h);if(Ha){Sn(!0);try{f(h)}finally{Sn(!1)}}}else v=h;return m.memoizedState=m.baseState=v,a={pending:null,lanes:0,dispatch:null,lastRenderedReducer:a,lastRenderedState:v},m.queue=a,a=a.dispatch=B8.bind(null,Ie,a),[m.memoizedState,a]},useRef:function(a){var h=un();return a={current:a},h.memoizedState=a},useState:function(a){a=j0(a);var h=a.queue,f=Gk.bind(null,Ie,h);return h.dispatch=f,[a.memoizedState,f]},useDebugValue:X0,useDeferredValue:function(a,h){var f=un();return Z0(f,a,h)},useTransition:function(){var a=j0(!1);return a=Wk.bind(null,Ie,a.queue,!0,!1),un().memoizedState=a,[!1,a]},useSyncExternalStore:function(a,h,f){var m=Ie,v=un();if(tt){if(f===void 0)throw Error(n(407));f=f()}else{if(f=h(),yt===null)throw Error(n(349));(Ke&127)!==0||bk(m,h,f)}v.memoizedState=f;var y={value:f,getSnapshot:h};return v.queue=y,$k(xk.bind(null,m,y,a),[a]),m.flags|=2048,hc(9,{destroy:void 0},Sk.bind(null,m,y,f,h),null),f},useId:function(){var a=un(),h=yt.identifierPrefix;if(tt){var f=ts,m=es;f=(m&~(1<<32-_t(m)-1)).toString(32)+f,h="_"+h+"R_"+f,f=np++,0<\/script>",y=y.removeChild(y.firstChild);break;case"select":y=typeof m.is=="string"?C.createElement("select",{is:m.is}):C.createElement("select"),m.multiple?y.multiple=!0:m.size&&(y.size=m.size);break;default:y=typeof m.is=="string"?C.createElement(v,{is:m.is}):C.createElement(v)}}y[zi]=h,y[xn]=m;e:for(C=h.child;C!==null;){if(C.tag===5||C.tag===6)y.appendChild(C.stateNode);else if(C.tag!==4&&C.tag!==27&&C.child!==null){C.child.return=C,C=C.child;continue}if(C===h)break e;for(;C.sibling===null;){if(C.return===null||C.return===h)break e;C=C.return}C.sibling.return=C.return,C=C.sibling}h.stateNode=y;e:switch(Vi(y,v,m),v){case"button":case"input":case"select":case"textarea":m=!!m.autoFocus;break e;case"img":m=!0;break e;default:m=!1}m&&Us(h)}}return Et(h),av(h,h.type,a===null?null:a.memoizedProps,h.pendingProps,f),null;case 6:if(a&&h.stateNode!=null)a.memoizedProps!==m&&Us(h);else{if(typeof m!="string"&&h.stateNode===null)throw Error(n(166));if(a=fe.current,tc(h)){if(a=h.stateNode,f=h.memoizedProps,m=null,v=Ni,v!==null)switch(v.tag){case 27:case 5:m=v.memoizedProps}a[zi]=h,a=!!(a.nodeValue===f||m!==null&&m.suppressHydrationWarning===!0||_5(a.nodeValue,f)),a||Qo(h,!0)}else a=Ep(a).createTextNode(m),a[zi]=h,h.stateNode=a}return Et(h),null;case 31:if(f=h.memoizedState,a===null||a.memoizedState!==null){if(m=tc(h),f!==null){if(a===null){if(!m)throw Error(n(318));if(a=h.memoizedState,a=a!==null?a.dehydrated:null,!a)throw Error(n(557));a[zi]=h}else Va(),(h.flags&128)===0&&(h.memoizedState=null),h.flags|=4;Et(h),a=!1}else f=O0(),a!==null&&a.memoizedState!==null&&(a.memoizedState.hydrationErrors=f),a=!0;if(!a)return h.flags&256?(qn(h),h):(qn(h),null);if((h.flags&128)!==0)throw Error(n(558))}return Et(h),null;case 13:if(m=h.memoizedState,a===null||a.memoizedState!==null&&a.memoizedState.dehydrated!==null){if(v=tc(h),m!==null&&m.dehydrated!==null){if(a===null){if(!v)throw Error(n(318));if(v=h.memoizedState,v=v!==null?v.dehydrated:null,!v)throw Error(n(317));v[zi]=h}else Va(),(h.flags&128)===0&&(h.memoizedState=null),h.flags|=4;Et(h),v=!1}else v=O0(),a!==null&&a.memoizedState!==null&&(a.memoizedState.hydrationErrors=v),v=!0;if(!v)return h.flags&256?(qn(h),h):(qn(h),null)}return qn(h),(h.flags&128)!==0?(h.lanes=f,h):(f=m!==null,a=a!==null&&a.memoizedState!==null,f&&(m=h.child,v=null,m.alternate!==null&&m.alternate.memoizedState!==null&&m.alternate.memoizedState.cachePool!==null&&(v=m.alternate.memoizedState.cachePool.pool),y=null,m.memoizedState!==null&&m.memoizedState.cachePool!==null&&(y=m.memoizedState.cachePool.pool),y!==v&&(m.flags|=2048)),f!==a&&f&&(h.child.flags|=8192),pp(h,h.updateQueue),Et(h),null);case 4:return ye(),a===null&&Ev(h.stateNode.containerInfo),Et(h),null;case 10:return Xs(h.type),Et(h),null;case 19:if(K(Ht),m=h.memoizedState,m===null)return Et(h),null;if(v=(h.flags&128)!==0,y=m.rendering,y===null)if(v)ru(m,!1);else{if(It!==0||a!==null&&(a.flags&128)!==0)for(a=h.child;a!==null;){if(y=tp(a),y!==null){for(h.flags|=128,ru(m,!1),a=y.updateQueue,h.updateQueue=a,pp(h,a),h.subtreeFlags=0,a=f,f=h.child;f!==null;)GC(f,a),f=f.sibling;return L(Ht,Ht.current&1|2),tt&&Is(h,m.treeForkCount),h.child}a=a.sibling}m.tail!==null&&cn()>_p&&(h.flags|=128,v=!0,ru(m,!1),h.lanes=4194304)}else{if(!v)if(a=tp(y),a!==null){if(h.flags|=128,v=!0,a=a.updateQueue,h.updateQueue=a,pp(h,a),ru(m,!0),m.tail===null&&m.tailMode==="hidden"&&!y.alternate&&!tt)return Et(h),null}else 2*cn()-m.renderingStartTime>_p&&f!==536870912&&(h.flags|=128,v=!0,ru(m,!1),h.lanes=4194304);m.isBackwards?(y.sibling=h.child,h.child=y):(a=m.last,a!==null?a.sibling=y:h.child=y,m.last=y)}return m.tail!==null?(a=m.tail,m.rendering=a,m.tail=a.sibling,m.renderingStartTime=cn(),a.sibling=null,f=Ht.current,L(Ht,v?f&1|2:f&1),tt&&Is(h,m.treeForkCount),a):(Et(h),null);case 22:case 23:return qn(h),M0(),m=h.memoizedState!==null,a!==null?a.memoizedState!==null!==m&&(h.flags|=8192):m&&(h.flags|=8192),m?(f&536870912)!==0&&(h.flags&128)===0&&(Et(h),h.subtreeFlags&6&&(h.flags|=8192)):Et(h),f=h.updateQueue,f!==null&&pp(h,f.retryQueue),f=null,a!==null&&a.memoizedState!==null&&a.memoizedState.cachePool!==null&&(f=a.memoizedState.cachePool.pool),m=null,h.memoizedState!==null&&h.memoizedState.cachePool!==null&&(m=h.memoizedState.cachePool.pool),m!==f&&(h.flags|=2048),a!==null&&K(qa),null;case 24:return f=null,a!==null&&(f=a.memoizedState.cache),h.memoizedState.cache!==f&&(h.flags|=2048),Xs(ti),Et(h),null;case 25:return null;case 30:return null}throw Error(n(156,h.tag))}function I8(a,h){switch(m0(h),h.tag){case 1:return a=h.flags,a&65536?(h.flags=a&-65537|128,h):null;case 3:return Xs(ti),ye(),a=h.flags,(a&65536)!==0&&(a&128)===0?(h.flags=a&-65537|128,h):null;case 26:case 27:case 5:return Qt(h),null;case 31:if(h.memoizedState!==null){if(qn(h),h.alternate===null)throw Error(n(340));Va()}return a=h.flags,a&65536?(h.flags=a&-65537|128,h):null;case 13:if(qn(h),a=h.memoizedState,a!==null&&a.dehydrated!==null){if(h.alternate===null)throw Error(n(340));Va()}return a=h.flags,a&65536?(h.flags=a&-65537|128,h):null;case 19:return K(Ht),null;case 4:return ye(),null;case 10:return Xs(h.type),null;case 22:case 23:return qn(h),M0(),a!==null&&K(qa),a=h.flags,a&65536?(h.flags=a&-65537|128,h):null;case 24:return Xs(ti),null;case 25:return null;default:return null}}function w2(a,h){switch(m0(h),h.tag){case 3:Xs(ti),ye();break;case 26:case 27:case 5:Qt(h);break;case 4:ye();break;case 31:h.memoizedState!==null&&qn(h);break;case 13:qn(h);break;case 19:K(Ht);break;case 10:Xs(h.type);break;case 22:case 23:qn(h),M0(),a!==null&&K(qa);break;case 24:Xs(ti)}}function su(a,h){try{var f=h.updateQueue,m=f!==null?f.lastEffect:null;if(m!==null){var v=m.next;f=v;do{if((f.tag&a)===a){m=void 0;var y=f.create,C=f.inst;m=y(),C.destroy=m}f=f.next}while(f!==v)}}catch(P){dt(h,h.return,P)}}function jo(a,h,f){try{var m=h.updateQueue,v=m!==null?m.lastEffect:null;if(v!==null){var y=v.next;m=y;do{if((m.tag&a)===a){var C=m.inst,P=C.destroy;if(P!==void 0){C.destroy=void 0,v=h;var W=f,te=P;try{te()}catch(re){dt(v,W,re)}}}m=m.next}while(m!==y)}}catch(re){dt(h,h.return,re)}}function C2(a){var h=a.updateQueue;if(h!==null){var f=a.stateNode;try{mk(h,f)}catch(m){dt(a,a.return,m)}}}function k2(a,h,f){f.props=Fa(a.type,a.memoizedProps),f.state=a.memoizedState;try{f.componentWillUnmount()}catch(m){dt(a,h,m)}}function ou(a,h){try{var f=a.ref;if(f!==null){switch(a.tag){case 26:case 27:case 5:var m=a.stateNode;break;case 30:m=a.stateNode;break;default:m=a.stateNode}typeof f=="function"?a.refCleanup=f(m):f.current=m}}catch(v){dt(a,h,v)}}function is(a,h){var f=a.ref,m=a.refCleanup;if(f!==null)if(typeof m=="function")try{m()}catch(v){dt(a,h,v)}finally{a.refCleanup=null,a=a.alternate,a!=null&&(a.refCleanup=null)}else if(typeof f=="function")try{f(null)}catch(v){dt(a,h,v)}else f.current=null}function T2(a){var h=a.type,f=a.memoizedProps,m=a.stateNode;try{e:switch(h){case"button":case"input":case"select":case"textarea":f.autoFocus&&m.focus();break e;case"img":f.src?m.src=f.src:f.srcSet&&(m.srcset=f.srcSet)}}catch(v){dt(a,a.return,v)}}function lv(a,h,f){try{var m=a.stateNode;cj(m,a.type,f,h),m[xn]=h}catch(v){dt(a,a.return,v)}}function A2(a){return a.tag===5||a.tag===3||a.tag===26||a.tag===27&&Uo(a.type)||a.tag===4}function cv(a){e:for(;;){for(;a.sibling===null;){if(a.return===null||A2(a.return))return null;a=a.return}for(a.sibling.return=a.return,a=a.sibling;a.tag!==5&&a.tag!==6&&a.tag!==18;){if(a.tag===27&&Uo(a.type)||a.flags&2||a.child===null||a.tag===4)continue e;a.child.return=a,a=a.child}if(!(a.flags&2))return a.stateNode}}function hv(a,h,f){var m=a.tag;if(m===5||m===6)a=a.stateNode,h?(f.nodeType===9?f.body:f.nodeName==="HTML"?f.ownerDocument.body:f).insertBefore(a,h):(h=f.nodeType===9?f.body:f.nodeName==="HTML"?f.ownerDocument.body:f,h.appendChild(a),f=f._reactRootContainer,f!=null||h.onclick!==null||(h.onclick=zs));else if(m!==4&&(m===27&&Uo(a.type)&&(f=a.stateNode,h=null),a=a.child,a!==null))for(hv(a,h,f),a=a.sibling;a!==null;)hv(a,h,f),a=a.sibling}function mp(a,h,f){var m=a.tag;if(m===5||m===6)a=a.stateNode,h?f.insertBefore(a,h):f.appendChild(a);else if(m!==4&&(m===27&&Uo(a.type)&&(f=a.stateNode),a=a.child,a!==null))for(mp(a,h,f),a=a.sibling;a!==null;)mp(a,h,f),a=a.sibling}function E2(a){var h=a.stateNode,f=a.memoizedProps;try{for(var m=a.type,v=h.attributes;v.length;)h.removeAttributeNode(v[0]);Vi(h,m,f),h[zi]=a,h[xn]=f}catch(y){dt(a,a.return,y)}}var Ys=!1,ri=!1,uv=!1,M2=typeof WeakSet=="function"?WeakSet:Set,Si=null;function V8(a,h){if(a=a.containerInfo,Rv=Bp,a=VC(a),r0(a)){if("selectionStart"in a)var f={start:a.selectionStart,end:a.selectionEnd};else e:{f=(f=a.ownerDocument)&&f.defaultView||window;var m=f.getSelection&&f.getSelection();if(m&&m.rangeCount!==0){f=m.anchorNode;var v=m.anchorOffset,y=m.focusNode;m=m.focusOffset;try{f.nodeType,y.nodeType}catch{f=null;break e}var C=0,P=-1,W=-1,te=0,re=0,le=a,ie=null;t:for(;;){for(var ne;le!==f||v!==0&&le.nodeType!==3||(P=C+v),le!==y||m!==0&&le.nodeType!==3||(W=C+m),le.nodeType===3&&(C+=le.nodeValue.length),(ne=le.firstChild)!==null;)ie=le,le=ne;for(;;){if(le===a)break t;if(ie===f&&++te===v&&(P=C),ie===y&&++re===m&&(W=C),(ne=le.nextSibling)!==null)break;le=ie,ie=le.parentNode}le=ne}f=P===-1||W===-1?null:{start:P,end:W}}else f=null}f=f||{start:0,end:0}}else f=null;for(Qv={focusedElem:a,selectionRange:f},Bp=!1,Si=h;Si!==null;)if(h=Si,a=h.child,(h.subtreeFlags&1028)!==0&&a!==null)a.return=h,Si=a;else for(;Si!==null;){switch(h=Si,y=h.alternate,a=h.flags,h.tag){case 0:if((a&4)!==0&&(a=h.updateQueue,a=a!==null?a.events:null,a!==null))for(f=0;f title"))),Vi(y,m,f),y[zi]=a,bi(y),m=y;break e;case"link":var C=B5("link","href",v).get(m+(f.href||""));if(C){for(var P=0;Pgt&&(C=gt,gt=Qe,Qe=C);var G=jC(P,Qe),Y=jC(P,gt);if(G&&Y&&(ne.rangeCount!==1||ne.anchorNode!==G.node||ne.anchorOffset!==G.offset||ne.focusNode!==Y.node||ne.focusOffset!==Y.offset)){var ee=le.createRange();ee.setStart(G.node,G.offset),ne.removeAllRanges(),Qe>gt?(ne.addRange(ee),ne.extend(Y.node,Y.offset)):(ee.setEnd(Y.node,Y.offset),ne.addRange(ee))}}}}for(le=[],ne=P;ne=ne.parentNode;)ne.nodeType===1&&le.push({element:ne,left:ne.scrollLeft,top:ne.scrollTop});for(typeof P.focus=="function"&&P.focus(),P=0;Pf?32:f,D.T=null,f=vv,vv=null;var y=Zo,C=Js;if(di=0,mc=Zo=null,Js=0,(ot&6)!==0)throw Error(n(331));var P=ot;if(ot|=4,I2(y.current),z2(y,y.current,C,f),ot=P,fu(0,!1),fi&&typeof fi.onPostCommitFiberRoot=="function")try{fi.onPostCommitFiberRoot(hn,y)}catch{}return!0}finally{X.p=v,D.T=m,s5(a,h)}}function a5(a,h,f){h=ur(f,h),h=G0(a.stateNode,h,2),a=$o(a,h,2),a!==null&&(Rh(a,2),ns(a))}function dt(a,h,f){if(a.tag===3)a5(a,a,f);else for(;h!==null;){if(h.tag===3){a5(h,a,f);break}else if(h.tag===1){var m=h.stateNode;if(typeof h.type.getDerivedStateFromError=="function"||typeof m.componentDidCatch=="function"&&(Xo===null||!Xo.has(m))){a=ur(f,a),f=l2(2),m=$o(h,f,2),m!==null&&(c2(f,m,h,a),Rh(m,2),ns(m));break}}h=h.return}}function Sv(a,h,f){var m=a.pingCache;if(m===null){m=a.pingCache=new q8;var v=new Set;m.set(h,v)}else v=m.get(h),v===void 0&&(v=new Set,m.set(h,v));v.has(f)||(pv=!0,v.add(f),a=F8.bind(null,a,h,f),h.then(a,a))}function F8(a,h,f){var m=a.pingCache;m!==null&&m.delete(h),a.pingedLanes|=a.suspendedLanes&f,a.warmLanes&=~f,yt===a&&(Ke&f)===f&&(It===4||It===3&&(Ke&62914560)===Ke&&300>cn()-vp?(ot&2)===0&&gc(a,0):mv|=f,pc===Ke&&(pc=0)),ns(a)}function l5(a,h){h===0&&(h=iC()),a=ja(a,h),a!==null&&(Rh(a,h),ns(a))}function G8(a){var h=a.memoizedState,f=0;h!==null&&(f=h.retryLane),l5(a,f)}function K8(a,h){var f=0;switch(a.tag){case 31:case 13:var m=a.stateNode,v=a.memoizedState;v!==null&&(f=v.retryLane);break;case 19:m=a.stateNode;break;case 22:m=a.stateNode._retryCache;break;default:throw Error(n(314))}m!==null&&m.delete(h),l5(a,f)}function J8(a,h){return To(a,h)}var Cp=null,vc=null,xv=!1,kp=!1,wv=!1,Wo=0;function ns(a){a!==vc&&a.next===null&&(vc===null?Cp=vc=a:vc=vc.next=a),kp=!0,xv||(xv=!0,tj())}function fu(a,h){if(!wv&&kp){wv=!0;do for(var f=!1,m=Cp;m!==null;){if(a!==0){var v=m.pendingLanes;if(v===0)var y=0;else{var C=m.suspendedLanes,P=m.pingedLanes;y=(1<<31-_t(42|a)+1)-1,y&=v&~(C&~P),y=y&201326741?y&201326741|1:y?y|2:0}y!==0&&(f=!0,f5(m,y))}else y=Ke,y=Md(m,m===yt?y:0,m.cancelPendingCommit!==null||m.timeoutHandle!==-1),(y&3)===0||Ph(m,y)||(f=!0,f5(m,y));m=m.next}while(f);wv=!1}}function ej(){c5()}function c5(){kp=xv=!1;var a=0;Wo!==0&&uj()&&(a=Wo);for(var h=cn(),f=null,m=Cp;m!==null;){var v=m.next,y=h5(m,h);y===0?(m.next=null,f===null?Cp=v:f.next=v,v===null&&(vc=f)):(f=m,(a!==0||(y&3)!==0)&&(kp=!0)),m=v}di!==0&&di!==5||fu(a),Wo!==0&&(Wo=0)}function h5(a,h){for(var f=a.suspendedLanes,m=a.pingedLanes,v=a.expirationTimes,y=a.pendingLanes&-62914561;0P)break;var re=W.transferSize,le=W.initiatorType;re&&y5(le)&&(W=W.responseEnd,C+=re*(W"u"?null:document;function R5(a,h,f){var m=_c;if(m&&typeof h=="string"&&h){var v=cr(h);v='link[rel="'+a+'"][href="'+v+'"]',typeof f=="string"&&(v+='[crossorigin="'+f+'"]'),P5.has(v)||(P5.add(v),a={rel:a,crossOrigin:f,href:h},m.querySelector(v)===null&&(h=m.createElement("link"),Vi(h,"link",a),bi(h),m.head.appendChild(h)))}}function yj(a){eo.D(a),R5("dns-prefetch",a,null)}function bj(a,h){eo.C(a,h),R5("preconnect",a,h)}function Sj(a,h,f){eo.L(a,h,f);var m=_c;if(m&&a&&h){var v='link[rel="preload"][as="'+cr(h)+'"]';h==="image"&&f&&f.imageSrcSet?(v+='[imagesrcset="'+cr(f.imageSrcSet)+'"]',typeof f.imageSizes=="string"&&(v+='[imagesizes="'+cr(f.imageSizes)+'"]')):v+='[href="'+cr(a)+'"]';var y=v;switch(h){case"style":y=yc(a);break;case"script":y=bc(a)}Or.has(y)||(a=p({rel:"preload",href:h==="image"&&f&&f.imageSrcSet?void 0:a,as:h},f),Or.set(y,a),m.querySelector(v)!==null||h==="style"&&m.querySelector(gu(y))||h==="script"&&m.querySelector(Ou(y))||(h=m.createElement("link"),Vi(h,"link",a),bi(h),m.head.appendChild(h)))}}function xj(a,h){eo.m(a,h);var f=_c;if(f&&a){var m=h&&typeof h.as=="string"?h.as:"script",v='link[rel="modulepreload"][as="'+cr(m)+'"][href="'+cr(a)+'"]',y=v;switch(m){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":y=bc(a)}if(!Or.has(y)&&(a=p({rel:"modulepreload",href:a},h),Or.set(y,a),f.querySelector(v)===null)){switch(m){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":if(f.querySelector(Ou(y)))return}m=f.createElement("link"),Vi(m,"link",a),bi(m),f.head.appendChild(m)}}}function wj(a,h,f){eo.S(a,h,f);var m=_c;if(m&&a){var v=Vl(m).hoistableStyles,y=yc(a);h=h||"default";var C=v.get(y);if(!C){var P={loading:0,preload:null};if(C=m.querySelector(gu(y)))P.loading=5;else{a=p({rel:"stylesheet",href:a,"data-precedence":h},f),(f=Or.get(y))&&jv(a,f);var W=C=m.createElement("link");bi(W),Vi(W,"link",a),W._p=new Promise(function(te,re){W.onload=te,W.onerror=re}),W.addEventListener("load",function(){P.loading|=1}),W.addEventListener("error",function(){P.loading|=2}),P.loading|=4,Pp(C,h,m)}C={type:"stylesheet",instance:C,count:1,state:P},v.set(y,C)}}}function Cj(a,h){eo.X(a,h);var f=_c;if(f&&a){var m=Vl(f).hoistableScripts,v=bc(a),y=m.get(v);y||(y=f.querySelector(Ou(v)),y||(a=p({src:a,async:!0},h),(h=Or.get(v))&&Iv(a,h),y=f.createElement("script"),bi(y),Vi(y,"link",a),f.head.appendChild(y)),y={type:"script",instance:y,count:1,state:null},m.set(v,y))}}function kj(a,h){eo.M(a,h);var f=_c;if(f&&a){var m=Vl(f).hoistableScripts,v=bc(a),y=m.get(v);y||(y=f.querySelector(Ou(v)),y||(a=p({src:a,async:!0,type:"module"},h),(h=Or.get(v))&&Iv(a,h),y=f.createElement("script"),bi(y),Vi(y,"link",a),f.head.appendChild(y)),y={type:"script",instance:y,count:1,state:null},m.set(v,y))}}function Q5(a,h,f,m){var v=(v=fe.current)?Mp(v):null;if(!v)throw Error(n(446));switch(a){case"meta":case"title":return null;case"style":return typeof f.precedence=="string"&&typeof f.href=="string"?(h=yc(f.href),f=Vl(v).hoistableStyles,m=f.get(h),m||(m={type:"style",instance:null,count:0,state:null},f.set(h,m)),m):{type:"void",instance:null,count:0,state:null};case"link":if(f.rel==="stylesheet"&&typeof f.href=="string"&&typeof f.precedence=="string"){a=yc(f.href);var y=Vl(v).hoistableStyles,C=y.get(a);if(C||(v=v.ownerDocument||v,C={type:"stylesheet",instance:null,count:0,state:{loading:0,preload:null}},y.set(a,C),(y=v.querySelector(gu(a)))&&!y._p&&(C.instance=y,C.state.loading=5),Or.has(a)||(f={rel:"preload",as:"style",href:f.href,crossOrigin:f.crossOrigin,integrity:f.integrity,media:f.media,hrefLang:f.hrefLang,referrerPolicy:f.referrerPolicy},Or.set(a,f),y||Tj(v,a,f,C.state))),h&&m===null)throw Error(n(528,""));return C}if(h&&m!==null)throw Error(n(529,""));return null;case"script":return h=f.async,f=f.src,typeof f=="string"&&h&&typeof h!="function"&&typeof h!="symbol"?(h=bc(f),f=Vl(v).hoistableScripts,m=f.get(h),m||(m={type:"script",instance:null,count:0,state:null},f.set(h,m)),m):{type:"void",instance:null,count:0,state:null};default:throw Error(n(444,a))}}function yc(a){return'href="'+cr(a)+'"'}function gu(a){return'link[rel="stylesheet"]['+a+"]"}function L5(a){return p({},a,{"data-precedence":a.precedence,precedence:null})}function Tj(a,h,f,m){a.querySelector('link[rel="preload"][as="style"]['+h+"]")?m.loading=1:(h=a.createElement("link"),m.preload=h,h.addEventListener("load",function(){return m.loading|=1}),h.addEventListener("error",function(){return m.loading|=2}),Vi(h,"link",f),bi(h),a.head.appendChild(h))}function bc(a){return'[src="'+cr(a)+'"]'}function Ou(a){return"script[async]"+a}function D5(a,h,f){if(h.count++,h.instance===null)switch(h.type){case"style":var m=a.querySelector('style[data-href~="'+cr(f.href)+'"]');if(m)return h.instance=m,bi(m),m;var v=p({},f,{"data-href":f.href,"data-precedence":f.precedence,href:null,precedence:null});return m=(a.ownerDocument||a).createElement("style"),bi(m),Vi(m,"style",v),Pp(m,f.precedence,a),h.instance=m;case"stylesheet":v=yc(f.href);var y=a.querySelector(gu(v));if(y)return h.state.loading|=4,h.instance=y,bi(y),y;m=L5(f),(v=Or.get(v))&&jv(m,v),y=(a.ownerDocument||a).createElement("link"),bi(y);var C=y;return C._p=new Promise(function(P,W){C.onload=P,C.onerror=W}),Vi(y,"link",m),h.state.loading|=4,Pp(y,f.precedence,a),h.instance=y;case"script":return y=bc(f.src),(v=a.querySelector(Ou(y)))?(h.instance=v,bi(v),v):(m=f,(v=Or.get(y))&&(m=p({},f),Iv(m,v)),a=a.ownerDocument||a,v=a.createElement("script"),bi(v),Vi(v,"link",m),a.head.appendChild(v),h.instance=v);case"void":return null;default:throw Error(n(443,h.type))}else h.type==="stylesheet"&&(h.state.loading&4)===0&&(m=h.instance,h.state.loading|=4,Pp(m,f.precedence,a));return h.instance}function Pp(a,h,f){for(var m=f.querySelectorAll('link[rel="stylesheet"][data-precedence],style[data-precedence]'),v=m.length?m[m.length-1]:null,y=v,C=0;C title"):null)}function Aj(a,h,f){if(f===1||h.itemProp!=null)return!1;switch(a){case"meta":case"title":return!0;case"style":if(typeof h.precedence!="string"||typeof h.href!="string"||h.href==="")break;return!0;case"link":if(typeof h.rel!="string"||typeof h.href!="string"||h.href===""||h.onLoad||h.onError)break;switch(h.rel){case"stylesheet":return a=h.disabled,typeof h.precedence=="string"&&a==null;default:return!0}case"script":if(h.async&&typeof h.async!="function"&&typeof h.async!="symbol"&&!h.onLoad&&!h.onError&&h.src&&typeof h.src=="string")return!0}return!1}function z5(a){return!(a.type==="stylesheet"&&(a.state.loading&3)===0)}function Ej(a,h,f,m){if(f.type==="stylesheet"&&(typeof m.media!="string"||matchMedia(m.media).matches!==!1)&&(f.state.loading&4)===0){if(f.instance===null){var v=yc(m.href),y=h.querySelector(gu(v));if(y){h=y._p,h!==null&&typeof h=="object"&&typeof h.then=="function"&&(a.count++,a=Qp.bind(a),h.then(a,a)),f.state.loading|=4,f.instance=y,bi(y);return}y=h.ownerDocument||h,m=L5(m),(v=Or.get(v))&&jv(m,v),y=y.createElement("link"),bi(y);var C=y;C._p=new Promise(function(P,W){C.onload=P,C.onerror=W}),Vi(y,"link",m),f.instance=y}a.stylesheets===null&&(a.stylesheets=new Map),a.stylesheets.set(f,h),(h=f.state.preload)&&(f.state.loading&3)===0&&(a.count++,f=Qp.bind(a),h.addEventListener("load",f),h.addEventListener("error",f))}}var Vv=0;function Mj(a,h){return a.stylesheets&&a.count===0&&Dp(a,a.stylesheets),0Vv?50:800)+h);return a.unsuspend=f,function(){a.unsuspend=null,clearTimeout(m),clearTimeout(v)}}:null}function Qp(){if(this.count--,this.count===0&&(this.imgCount===0||!this.waitingForImages)){if(this.stylesheets)Dp(this,this.stylesheets);else if(this.unsuspend){var a=this.unsuspend;this.unsuspend=null,a()}}}var Lp=null;function Dp(a,h){a.stylesheets=null,a.unsuspend!==null&&(a.count++,Lp=new Map,h.forEach(Pj,a),Lp=null,Qp.call(a))}function Pj(a,h){if(!(h.state.loading&4)){var f=Lp.get(a);if(f)var m=f.get(null);else{f=new Map,Lp.set(a,f);for(var v=a.querySelectorAll("link[data-precedence],style[data-precedence]"),y=0;y"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(t)}catch(e){console.error(e)}}return t(),Gv.exports=Uj(),Gv.exports}var Hj=Yj();const iL=Z.createContext({connected:!1,lastChange:0,lifecycleEvent:null,pendingQuestionCount:0,onQuestionReceivedRef:{current:null}}),lT=2e3,Fj=3e4,Gj=1.5;function Kj({children:t}){const[e,i]=Z.useState(!1),[n,r]=Z.useState(0),[s,o]=Z.useState(null),[l,c]=Z.useState(0),u=Z.useRef(null),d=Z.useRef(null),p=Z.useRef(lT),g=Z.useRef(null);return Z.useEffect(()=>{function O(){const b=`${window.location.protocol==="https:"?"wss:":"ws:"}//${window.location.host}/api/ws`,x=new WebSocket(b);u.current=x,x.onopen=()=>{i(!0),p.current=lT},x.onclose=()=>{i(!1),u.current=null;const w=p.current;p.current=Math.min(w*Gj,Fj),d.current=setTimeout(O,w)},x.onmessage=w=>{var k,T;try{const A=JSON.parse(w.data);switch(A.type){case"file-changes":typeof A.timestamp=="number"&&r(A.timestamp);break;case"question-received":{const Q=A.question,E={id:Q.id,header:"Question",question:Q.question,multiSelect:!1,options:(Q.options||[]).map(z=>({id:z.value,label:z.label,description:z.description||""}))};(k=g.current)==null||k.call(g,[E]),c(A.queueLength??0);break}case"questions-queued":{const Q=(A.questions||[]).map(E=>({id:E.id,header:"Question",question:E.question,multiSelect:!1,options:(E.options||[]).map(z=>({id:z.value,label:z.label,description:z.description||""}))}));(T=g.current)==null||T.call(g,Q),c(A.count??0);break}case"answer-given":c(A.remainingQueue??0);break;case"lifecycle":o(A.event);break}}catch{}},x.onerror=()=>{console.warn("[ws-provider] WebSocket error occurred")}}return O(),()=>{d.current!==null&&(clearTimeout(d.current),d.current=null),u.current&&(u.current.onclose=null,u.current.close(),u.current=null)}},[]),S.jsx(iL.Provider,{value:{connected:e,lastChange:n,lifecycleEvent:s,pendingQuestionCount:l,onQuestionReceivedRef:g},children:t})}function Ea(){return Z.useContext(iL)}function Jj(t,e){switch(e.type){case"SET_TAB":return{...t,activeTab:e.tab,expandedCardId:null};case"SET_EXPANDED":return{...t,expandedCardId:e.cardId};case"SET_INPUT":return{...t,inputValues:{...t.inputValues,[e.cardId]:e.value}};case"RESET":return{activeTab:"plan",expandedCardId:null,inputValues:{}};default:return t}}const e7={activeTab:"plan",expandedCardId:null,inputValues:{}},nL=Z.createContext(null);function t7({children:t}){const[e,i]=Z.useReducer(Jj,e7),n=Z.useCallback(l=>i({type:"SET_TAB",tab:l}),[]),r=Z.useCallback(l=>i({type:"SET_EXPANDED",cardId:l}),[]),s=Z.useCallback((l,c)=>i({type:"SET_INPUT",cardId:l,value:c}),[]),o=Z.useCallback(()=>i({type:"RESET"}),[]);return S.jsx(nL.Provider,{value:{...e,setTab:n,setExpanded:r,setInput:s,reset:o},children:t})}function oO(){const t=Z.useContext(nL);if(!t)throw new Error("useSimpleMode must be used within SimpleModeProvider");return t}const rL={phase:"idle",questions:[],currentQuestion:null,answeredQuestions:[],answerCount:0};function i7(t,e){switch(e.type){case"START_DISCUSSION":return{...t,phase:"loading"};case"QUESTIONS_RECEIVED":{const[i,...n]=e.questions;return{...t,phase:i?"active":t.phase,currentQuestion:i??null,questions:[...t.questions,...n]}}case"SUBMIT_ANSWER":return{...t,phase:"submitting",answeredQuestions:[...t.answeredQuestions,e.answer],answerCount:t.answerCount+1};case"ANSWER_ACCEPTED":{const[i,...n]=t.questions;return{...t,phase:i?"active":"loading",currentQuestion:i??null,questions:n}}case"ASK_MORE":return{...t,phase:"loading"};case"DONE_EXECUTE":return{...t,phase:"complete",currentQuestion:null,questions:[]};case"RESET":return rL;default:return t}}const sL=Z.createContext(null);function n7({children:t}){const[e,i]=Z.useReducer(i7,rL),n=Z.useRef(null),r=Z.useRef(null),s=Z.useCallback(()=>{i({type:"START_DISCUSSION"})},[]),o=Z.useCallback(p=>{i({type:"QUESTIONS_RECEIVED",questions:p})},[]),l=Z.useCallback(async p=>{i({type:"SUBMIT_ANSWER",answer:p});const g=p.freeText.trim()?p.freeText:p.selectedLabels.join(", ");try{await fetch("/api/mcp-answer",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({questionId:p.questionId,answer:g})})}catch(O){console.error("[discussion] Failed to submit answer:",O)}i({type:"ANSWER_ACCEPTED"})},[]),c=Z.useCallback(()=>{i({type:"ASK_MORE"})},[]),u=Z.useCallback(()=>{var p;i({type:"DONE_EXECUTE"}),(p=r.current)==null||p.call(r)},[]),d=Z.useCallback(()=>{i({type:"RESET"})},[]);return S.jsx(sL.Provider,{value:{...e,startDiscussion:s,receiveQuestions:o,submitAnswer:l,askMore:c,doneExecute:u,resetDiscussion:d,onQuestionReceived:n,onExecutionQueued:r},children:t})}function oL(){const t=Z.useContext(sL);if(!t)throw new Error("useDiscussion must be used within DiscussionProvider");return t}function Rl(){const{lastChange:t}=Ea(),[e,i]=Z.useState(null),[n,r]=Z.useState(null),[s,o]=Z.useState(null),[l,c]=Z.useState(!0),[u,d]=Z.useState(null),p=Z.useCallback(async()=>{try{d(null);const[g,O,_]=await Promise.all([fetch("/api/roadmap"),fetch("/api/state"),fetch("/api/todos")]);if(!g.ok&&g.status!==404)throw new Error(`Roadmap fetch failed: ${g.status}`);if(!O.ok&&O.status!==404)throw new Error(`State fetch failed: ${O.status}`);if(!_.ok)throw new Error(`Todos fetch failed: ${_.status}`);const b=g.ok?await g.json():null,x=O.ok?await O.json():null,w=_.ok?await _.json():{pending:[],completed:[]};i(b),r(x),o(w)}catch(g){const O=g instanceof Error?g.message:"Failed to fetch dashboard data";d(O),console.error("[use-dashboard-data]",O)}finally{c(!1)}},[]);return Z.useEffect(()=>{p()},[p]),Z.useEffect(()=>{t>0&&p()},[t,p]),{roadmap:e,state:n,todos:s,loading:l,error:u}}const Xp="maxsim_dashboard_mode";function r7(){const[t,e]=Z.useState(()=>{try{const s=localStorage.getItem(Xp);if(s==="simple"||s==="advanced")return s}catch{}return null}),[i,n]=Z.useState(()=>{try{const s=localStorage.getItem(Xp);return s==="simple"||s==="advanced"}catch{return!1}});return Z.useEffect(()=>{i||fetch("/api/simple-mode-config").then(s=>s.json()).then(s=>{if(s.default_mode==="simple"||s.default_mode==="advanced"){e(s.default_mode);try{localStorage.setItem(Xp,s.default_mode)}catch{}}}).catch(()=>{}).finally(()=>n(!0))},[i]),{mode:t,setMode:s=>{e(s),i||n(!0);try{localStorage.setItem(Xp,s)}catch{}fetch("/api/simple-mode-config",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({default_mode:s})}).catch(()=>{})},initialized:i}}const YS=Z.createContext({});function HS(t){const e=Z.useRef(null);return e.current===null&&(e.current=t()),e.current}const aL=typeof window<"u",lL=aL?Z.useLayoutEffect:Z.useEffect,aO=Z.createContext(null);function FS(t,e){t.indexOf(e)===-1&&t.push(e)}function hg(t,e){const i=t.indexOf(e);i>-1&&t.splice(i,1)}const As=(t,e,i)=>i>e?e:i{};const Oo={},cL=t=>/^-?(?:\d+(?:\.\d+)?|\.\d+)$/u.test(t);function hL(t){return typeof t=="object"&&t!==null}const uL=t=>/^0[^.\s]+$/u.test(t);function fL(t){let e;return()=>(e===void 0&&(e=t()),e)}const Pr=t=>t,s7=(t,e)=>i=>e(t(i)),od=(...t)=>t.reduce(s7),Cf=(t,e,i)=>{const n=e-t;return n===0?1:(i-t)/n};class KS{constructor(){this.subscriptions=[]}add(e){return FS(this.subscriptions,e),()=>hg(this.subscriptions,e)}notify(e,i,n){const r=this.subscriptions.length;if(r)if(r===1)this.subscriptions[0](e,i,n);else for(let s=0;st*1e3,Cr=t=>t/1e3;function dL(t,e){return e?t*(1e3/e):0}const pL=(t,e,i)=>(((1-3*i+3*e)*t+(3*i-6*e))*t+3*e)*t,o7=1e-7,a7=12;function l7(t,e,i,n,r){let s,o,l=0;do o=e+(i-e)/2,s=pL(o,n,r)-t,s>0?i=o:e=o;while(Math.abs(s)>o7&&++ll7(s,0,1,t,i);return s=>s===0||s===1?s:pL(r(s),e,n)}const mL=t=>e=>e<=.5?t(2*e)/2:(2-t(2*(1-e)))/2,gL=t=>e=>1-t(1-e),OL=ad(.33,1.53,.69,.99),JS=gL(OL),vL=mL(JS),_L=t=>(t*=2)<1?.5*JS(t):.5*(2-Math.pow(2,-10*(t-1))),ex=t=>1-Math.sin(Math.acos(t)),yL=gL(ex),bL=mL(ex),c7=ad(.42,0,1,1),h7=ad(0,0,.58,1),SL=ad(.42,0,.58,1),u7=t=>Array.isArray(t)&&typeof t[0]!="number",xL=t=>Array.isArray(t)&&typeof t[0]=="number",f7={linear:Pr,easeIn:c7,easeInOut:SL,easeOut:h7,circIn:ex,circInOut:bL,circOut:yL,backIn:JS,backInOut:vL,backOut:OL,anticipate:_L},d7=t=>typeof t=="string",cT=t=>{if(xL(t)){GS(t.length===4);const[e,i,n,r]=t;return ad(e,i,n,r)}else if(d7(t))return f7[t];return t},Zp=["setup","read","resolveKeyframes","preUpdate","update","preRender","render","postRender"];function p7(t,e){let i=new Set,n=new Set,r=!1,s=!1;const o=new WeakSet;let l={delta:0,timestamp:0,isProcessing:!1};function c(d){o.has(d)&&(u.schedule(d),t()),d(l)}const u={schedule:(d,p=!1,g=!1)=>{const _=g&&r?i:n;return p&&o.add(d),_.has(d)||_.add(d),d},cancel:d=>{n.delete(d),o.delete(d)},process:d=>{if(l=d,r){s=!0;return}r=!0,[i,n]=[n,i],i.forEach(c),i.clear(),r=!1,s&&(s=!1,u.process(d))}};return u}const m7=40;function wL(t,e){let i=!1,n=!0;const r={delta:0,timestamp:0,isProcessing:!1},s=()=>i=!0,o=Zp.reduce((T,A)=>(T[A]=p7(s),T),{}),{setup:l,read:c,resolveKeyframes:u,preUpdate:d,update:p,preRender:g,render:O,postRender:_}=o,b=()=>{const T=Oo.useManualTiming?r.timestamp:performance.now();i=!1,Oo.useManualTiming||(r.delta=n?1e3/60:Math.max(Math.min(T-r.timestamp,m7),1)),r.timestamp=T,r.isProcessing=!0,l.process(r),c.process(r),u.process(r),d.process(r),p.process(r),g.process(r),O.process(r),_.process(r),r.isProcessing=!1,i&&e&&(n=!1,t(b))},x=()=>{i=!0,n=!0,r.isProcessing||t(b)};return{schedule:Zp.reduce((T,A)=>{const Q=o[A];return T[A]=(E,z=!1,N=!1)=>(i||x(),Q.schedule(E,z,N)),T},{}),cancel:T=>{for(let A=0;A(Dm===void 0&&On.set(qi.isProcessing||Oo.useManualTiming?qi.timestamp:performance.now()),Dm),set:t=>{Dm=t,queueMicrotask(g7)}},CL=t=>e=>typeof e=="string"&&e.startsWith(t),kL=CL("--"),O7=CL("var(--"),tx=t=>O7(t)?v7.test(t.split("/*")[0].trim()):!1,v7=/var\(--(?:[\w-]+\s*|[\w-]+\s*,(?:\s*[^)(\s]|\s*\((?:[^)(]|\([^)(]*\))*\))+\s*)\)$/iu;function hT(t){return typeof t!="string"?!1:t.split("/*")[0].includes("var(--")}const gh={test:t=>typeof t=="number",parse:parseFloat,transform:t=>t},kf={...gh,transform:t=>As(0,1,t)},qp={...gh,default:1},lf=t=>Math.round(t*1e5)/1e5,ix=/-?(?:\d+(?:\.\d+)?|\.\d+)/gu;function _7(t){return t==null}const y7=/^(?:#[\da-f]{3,8}|(?:rgb|hsl)a?\((?:-?[\d.]+%?[,\s]+){2}-?[\d.]+%?\s*(?:[,/]\s*)?(?:\b\d+(?:\.\d+)?|\.\d+)?%?\))$/iu,nx=(t,e)=>i=>!!(typeof i=="string"&&y7.test(i)&&i.startsWith(t)||e&&!_7(i)&&Object.prototype.hasOwnProperty.call(i,e)),TL=(t,e,i)=>n=>{if(typeof n!="string")return n;const[r,s,o,l]=n.match(ix);return{[t]:parseFloat(r),[e]:parseFloat(s),[i]:parseFloat(o),alpha:l!==void 0?parseFloat(l):1}},b7=t=>As(0,255,t),i_={...gh,transform:t=>Math.round(b7(t))},dl={test:nx("rgb","red"),parse:TL("red","green","blue"),transform:({red:t,green:e,blue:i,alpha:n=1})=>"rgba("+i_.transform(t)+", "+i_.transform(e)+", "+i_.transform(i)+", "+lf(kf.transform(n))+")"};function S7(t){let e="",i="",n="",r="";return t.length>5?(e=t.substring(1,3),i=t.substring(3,5),n=t.substring(5,7),r=t.substring(7,9)):(e=t.substring(1,2),i=t.substring(2,3),n=t.substring(3,4),r=t.substring(4,5),e+=e,i+=i,n+=n,r+=r),{red:parseInt(e,16),green:parseInt(i,16),blue:parseInt(n,16),alpha:r?parseInt(r,16)/255:1}}const v1={test:nx("#"),parse:S7,transform:dl.transform},ld=t=>({test:e=>typeof e=="string"&&e.endsWith(t)&&e.split(" ").length===1,parse:parseFloat,transform:e=>`${e}${t}`}),la=ld("deg"),ws=ld("%"),Te=ld("px"),x7=ld("vh"),w7=ld("vw"),uT={...ws,parse:t=>ws.parse(t)/100,transform:t=>ws.transform(t*100)},Lc={test:nx("hsl","hue"),parse:TL("hue","saturation","lightness"),transform:({hue:t,saturation:e,lightness:i,alpha:n=1})=>"hsla("+Math.round(t)+", "+ws.transform(lf(e))+", "+ws.transform(lf(i))+", "+lf(kf.transform(n))+")"},ai={test:t=>dl.test(t)||v1.test(t)||Lc.test(t),parse:t=>dl.test(t)?dl.parse(t):Lc.test(t)?Lc.parse(t):v1.parse(t),transform:t=>typeof t=="string"?t:t.hasOwnProperty("red")?dl.transform(t):Lc.transform(t),getAnimatableNone:t=>{const e=ai.parse(t);return e.alpha=0,ai.transform(e)}},C7=/(?:#[\da-f]{3,8}|(?:rgb|hsl)a?\((?:-?[\d.]+%?[,\s]+){2}-?[\d.]+%?\s*(?:[,/]\s*)?(?:\b\d+(?:\.\d+)?|\.\d+)?%?\))/giu;function k7(t){var e,i;return isNaN(t)&&typeof t=="string"&&(((e=t.match(ix))==null?void 0:e.length)||0)+(((i=t.match(C7))==null?void 0:i.length)||0)>0}const AL="number",EL="color",T7="var",A7="var(",fT="${}",E7=/var\s*\(\s*--(?:[\w-]+\s*|[\w-]+\s*,(?:\s*[^)(\s]|\s*\((?:[^)(]|\([^)(]*\))*\))+\s*)\)|#[\da-f]{3,8}|(?:rgb|hsl)a?\((?:-?[\d.]+%?[,\s]+){2}-?[\d.]+%?\s*(?:[,/]\s*)?(?:\b\d+(?:\.\d+)?|\.\d+)?%?\)|-?(?:\d+(?:\.\d+)?|\.\d+)/giu;function Tf(t){const e=t.toString(),i=[],n={color:[],number:[],var:[]},r=[];let s=0;const l=e.replace(E7,c=>(ai.test(c)?(n.color.push(s),r.push(EL),i.push(ai.parse(c))):c.startsWith(A7)?(n.var.push(s),r.push(T7),i.push(c)):(n.number.push(s),r.push(AL),i.push(parseFloat(c))),++s,fT)).split(fT);return{values:i,split:l,indexes:n,types:r}}function ML(t){return Tf(t).values}function PL(t){const{split:e,types:i}=Tf(t),n=e.length;return r=>{let s="";for(let o=0;otypeof t=="number"?0:ai.test(t)?ai.getAnimatableNone(t):t;function P7(t){const e=ML(t);return PL(t)(e.map(M7))}const Ur={test:k7,parse:ML,createTransformer:PL,getAnimatableNone:P7};function n_(t,e,i){return i<0&&(i+=1),i>1&&(i-=1),i<1/6?t+(e-t)*6*i:i<1/2?e:i<2/3?t+(e-t)*(2/3-i)*6:t}function R7({hue:t,saturation:e,lightness:i,alpha:n}){t/=360,e/=100,i/=100;let r=0,s=0,o=0;if(!e)r=s=o=i;else{const l=i<.5?i*(1+e):i+e-i*e,c=2*i-l;r=n_(c,l,t+1/3),s=n_(c,l,t),o=n_(c,l,t-1/3)}return{red:Math.round(r*255),green:Math.round(s*255),blue:Math.round(o*255),alpha:n}}function ug(t,e){return i=>i>0?e:t}const Nt=(t,e,i)=>t+(e-t)*i,r_=(t,e,i)=>{const n=t*t,r=i*(e*e-n)+n;return r<0?0:Math.sqrt(r)},Q7=[v1,dl,Lc],L7=t=>Q7.find(e=>e.test(t));function dT(t){const e=L7(t);if(!e)return!1;let i=e.parse(t);return e===Lc&&(i=R7(i)),i}const pT=(t,e)=>{const i=dT(t),n=dT(e);if(!i||!n)return ug(t,e);const r={...i};return s=>(r.red=r_(i.red,n.red,s),r.green=r_(i.green,n.green,s),r.blue=r_(i.blue,n.blue,s),r.alpha=Nt(i.alpha,n.alpha,s),dl.transform(r))},_1=new Set(["none","hidden"]);function D7(t,e){return _1.has(t)?i=>i<=0?t:e:i=>i>=1?e:t}function B7(t,e){return i=>Nt(t,e,i)}function rx(t){return typeof t=="number"?B7:typeof t=="string"?tx(t)?ug:ai.test(t)?pT:N7:Array.isArray(t)?RL:typeof t=="object"?ai.test(t)?pT:$7:ug}function RL(t,e){const i=[...t],n=i.length,r=t.map((s,o)=>rx(s)(s,e[o]));return s=>{for(let o=0;o{for(const s in n)i[s]=n[s](r);return i}}function z7(t,e){const i=[],n={color:0,var:0,number:0};for(let r=0;r{const i=Ur.createTransformer(e),n=Tf(t),r=Tf(e);return n.indexes.var.length===r.indexes.var.length&&n.indexes.color.length===r.indexes.color.length&&n.indexes.number.length>=r.indexes.number.length?_1.has(t)&&!r.values.length||_1.has(e)&&!n.values.length?D7(t,e):od(RL(z7(n,r),r.values),i):ug(t,e)};function QL(t,e,i){return typeof t=="number"&&typeof e=="number"&&typeof i=="number"?Nt(t,e,i):rx(t)(t,e)}const j7=t=>{const e=({timestamp:i})=>t(i);return{start:(i=!0)=>Tt.update(e,i),stop:()=>ba(e),now:()=>qi.isProcessing?qi.timestamp:On.now()}},LL=(t,e,i=10)=>{let n="";const r=Math.max(Math.round(e/i),2);for(let s=0;s=fg?1/0:e}function I7(t,e=100,i){const n=i({...t,keyframes:[0,e]}),r=Math.min(sx(n),fg);return{type:"keyframes",ease:s=>n.next(r*s).value/e,duration:Cr(r)}}const V7=5;function DL(t,e,i){const n=Math.max(e-V7,0);return dL(i-t(n),e-n)}const Xt={stiffness:100,damping:10,mass:1,velocity:0,duration:800,bounce:.3,visualDuration:.3,restSpeed:{granular:.01,default:2},restDelta:{granular:.005,default:.5},minDuration:.01,maxDuration:10,minDamping:.05,maxDamping:1},s_=.001;function X7({duration:t=Xt.duration,bounce:e=Xt.bounce,velocity:i=Xt.velocity,mass:n=Xt.mass}){let r,s,o=1-e;o=As(Xt.minDamping,Xt.maxDamping,o),t=As(Xt.minDuration,Xt.maxDuration,Cr(t)),o<1?(r=u=>{const d=u*o,p=d*t,g=d-i,O=y1(u,o),_=Math.exp(-p);return s_-g/O*_},s=u=>{const p=u*o*t,g=p*i+i,O=Math.pow(o,2)*Math.pow(u,2)*t,_=Math.exp(-p),b=y1(Math.pow(u,2),o);return(-r(u)+s_>0?-1:1)*((g-O)*_)/b}):(r=u=>{const d=Math.exp(-u*t),p=(u-i)*t+1;return-s_+d*p},s=u=>{const d=Math.exp(-u*t),p=(i-u)*(t*t);return d*p});const l=5/t,c=q7(r,s,l);if(t=Wr(t),isNaN(c))return{stiffness:Xt.stiffness,damping:Xt.damping,duration:t};{const u=Math.pow(c,2)*n;return{stiffness:u,damping:o*2*Math.sqrt(n*u),duration:t}}}const Z7=12;function q7(t,e,i){let n=i;for(let r=1;rt[i]!==void 0)}function Y7(t){let e={velocity:Xt.velocity,stiffness:Xt.stiffness,damping:Xt.damping,mass:Xt.mass,isResolvedFromDuration:!1,...t};if(!mT(t,U7)&&mT(t,W7))if(e.velocity=0,t.visualDuration){const i=t.visualDuration,n=2*Math.PI/(i*1.2),r=n*n,s=2*As(.05,1,1-(t.bounce||0))*Math.sqrt(r);e={...e,mass:Xt.mass,stiffness:r,damping:s}}else{const i=X7({...t,velocity:0});e={...e,...i,mass:Xt.mass},e.isResolvedFromDuration=!0}return e}function dg(t=Xt.visualDuration,e=Xt.bounce){const i=typeof t!="object"?{visualDuration:t,keyframes:[0,1],bounce:e}:t;let{restSpeed:n,restDelta:r}=i;const s=i.keyframes[0],o=i.keyframes[i.keyframes.length-1],l={done:!1,value:s},{stiffness:c,damping:u,mass:d,duration:p,velocity:g,isResolvedFromDuration:O}=Y7({...i,velocity:-Cr(i.velocity||0)}),_=g||0,b=u/(2*Math.sqrt(c*d)),x=o-s,w=Cr(Math.sqrt(c/d)),k=Math.abs(x)<5;n||(n=k?Xt.restSpeed.granular:Xt.restSpeed.default),r||(r=k?Xt.restDelta.granular:Xt.restDelta.default);let T;if(b<1){const Q=y1(w,b);T=E=>{const z=Math.exp(-b*w*E);return o-z*((_+b*w*x)/Q*Math.sin(Q*E)+x*Math.cos(Q*E))}}else if(b===1)T=Q=>o-Math.exp(-w*Q)*(x+(_+w*x)*Q);else{const Q=w*Math.sqrt(b*b-1);T=E=>{const z=Math.exp(-b*w*E),N=Math.min(Q*E,300);return o-z*((_+b*w*x)*Math.sinh(N)+Q*x*Math.cosh(N))/Q}}const A={calculatedDuration:O&&p||null,next:Q=>{const E=T(Q);if(O)l.done=Q>=p;else{let z=Q===0?_:0;b<1&&(z=Q===0?Wr(_):DL(T,Q,E));const N=Math.abs(z)<=n,q=Math.abs(o-E)<=r;l.done=N&&q}return l.value=l.done?o:E,l},toString:()=>{const Q=Math.min(sx(A),fg),E=LL(z=>A.next(Q*z).value,Q,30);return Q+"ms "+E},toTransition:()=>{}};return A}dg.applyToOptions=t=>{const e=I7(t,100,dg);return t.ease=e.ease,t.duration=Wr(e.duration),t.type="keyframes",t};function b1({keyframes:t,velocity:e=0,power:i=.8,timeConstant:n=325,bounceDamping:r=10,bounceStiffness:s=500,modifyTarget:o,min:l,max:c,restDelta:u=.5,restSpeed:d}){const p=t[0],g={done:!1,value:p},O=N=>l!==void 0&&Nc,_=N=>l===void 0?c:c===void 0||Math.abs(l-N)-b*Math.exp(-N/n),T=N=>w+k(N),A=N=>{const q=k(N),J=T(N);g.done=Math.abs(q)<=u,g.value=g.done?w:J};let Q,E;const z=N=>{O(g.value)&&(Q=N,E=dg({keyframes:[g.value,_(g.value)],velocity:DL(T,N,g.value),damping:r,stiffness:s,restDelta:u,restSpeed:d}))};return z(0),{calculatedDuration:null,next:N=>{let q=!1;return!E&&Q===void 0&&(q=!0,A(N),z(N)),Q!==void 0&&N>=Q?E.next(N-Q):(!q&&A(N),g)}}}function H7(t,e,i){const n=[],r=i||Oo.mix||QL,s=t.length-1;for(let o=0;oe[0];if(s===2&&e[0]===e[1])return()=>e[1];const o=t[0]===t[1];t[0]>t[s-1]&&(t=[...t].reverse(),e=[...e].reverse());const l=H7(e,n,r),c=l.length,u=d=>{if(o&&d1)for(;pu(As(t[0],t[s-1],d)):u}function G7(t,e){const i=t[t.length-1];for(let n=1;n<=e;n++){const r=Cf(0,e,n);t.push(Nt(i,1,r))}}function K7(t){const e=[0];return G7(e,t.length-1),e}function J7(t,e){return t.map(i=>i*e)}function eI(t,e){return t.map(()=>e||SL).splice(0,t.length-1)}function cf({duration:t=300,keyframes:e,times:i,ease:n="easeInOut"}){const r=u7(n)?n.map(cT):cT(n),s={done:!1,value:e[0]},o=J7(i&&i.length===e.length?i:K7(e),t),l=F7(o,e,{ease:Array.isArray(r)?r:eI(e,r)});return{calculatedDuration:t,next:c=>(s.value=l(c),s.done=c>=t,s)}}const tI=t=>t!==null;function ox(t,{repeat:e,repeatType:i="loop"},n,r=1){const s=t.filter(tI),l=r<0||e&&i!=="loop"&&e%2===1?0:s.length-1;return!l||n===void 0?s[l]:n}const iI={decay:b1,inertia:b1,tween:cf,keyframes:cf,spring:dg};function BL(t){typeof t.type=="string"&&(t.type=iI[t.type])}class ax{constructor(){this.updateFinished()}get finished(){return this._finished}updateFinished(){this._finished=new Promise(e=>{this.resolve=e})}notifyFinished(){this.resolve()}then(e,i){return this.finished.then(e,i)}}const nI=t=>t/100;class lx extends ax{constructor(e){super(),this.state="idle",this.startTime=null,this.isStopped=!1,this.currentTime=0,this.holdTime=null,this.playbackSpeed=1,this.stop=()=>{var n,r;const{motionValue:i}=this.options;i&&i.updatedAt!==On.now()&&this.tick(On.now()),this.isStopped=!0,this.state!=="idle"&&(this.teardown(),(r=(n=this.options).onStop)==null||r.call(n))},this.options=e,this.initAnimation(),this.play(),e.autoplay===!1&&this.pause()}initAnimation(){const{options:e}=this;BL(e);const{type:i=cf,repeat:n=0,repeatDelay:r=0,repeatType:s,velocity:o=0}=e;let{keyframes:l}=e;const c=i||cf;c!==cf&&typeof l[0]!="number"&&(this.mixKeyframes=od(nI,QL(l[0],l[1])),l=[0,100]);const u=c({...e,keyframes:l});s==="mirror"&&(this.mirroredGenerator=c({...e,keyframes:[...l].reverse(),velocity:-o})),u.calculatedDuration===null&&(u.calculatedDuration=sx(u));const{calculatedDuration:d}=u;this.calculatedDuration=d,this.resolvedDuration=d+r,this.totalDuration=this.resolvedDuration*(n+1)-r,this.generator=u}updateTime(e){const i=Math.round(e-this.startTime)*this.playbackSpeed;this.holdTime!==null?this.currentTime=this.holdTime:this.currentTime=i}tick(e,i=!1){const{generator:n,totalDuration:r,mixKeyframes:s,mirroredGenerator:o,resolvedDuration:l,calculatedDuration:c}=this;if(this.startTime===null)return n.next(0);const{delay:u=0,keyframes:d,repeat:p,repeatType:g,repeatDelay:O,type:_,onUpdate:b,finalKeyframe:x}=this.options;this.speed>0?this.startTime=Math.min(this.startTime,e):this.speed<0&&(this.startTime=Math.min(e-r/this.speed,this.startTime)),i?this.currentTime=e:this.updateTime(e);const w=this.currentTime-u*(this.playbackSpeed>=0?1:-1),k=this.playbackSpeed>=0?w<0:w>r;this.currentTime=Math.max(w,0),this.state==="finished"&&this.holdTime===null&&(this.currentTime=r);let T=this.currentTime,A=n;if(p){const N=Math.min(this.currentTime,r)/l;let q=Math.floor(N),J=N%1;!J&&N>=1&&(J=1),J===1&&q--,q=Math.min(q,p+1),!!(q%2)&&(g==="reverse"?(J=1-J,O&&(J-=O/l)):g==="mirror"&&(A=o)),T=As(0,1,J)*l}const Q=k?{done:!1,value:d[0]}:A.next(T);s&&(Q.value=s(Q.value));let{done:E}=Q;!k&&c!==null&&(E=this.playbackSpeed>=0?this.currentTime>=r:this.currentTime<=0);const z=this.holdTime===null&&(this.state==="finished"||this.state==="running"&&E);return z&&_!==b1&&(Q.value=ox(d,this.options,x,this.speed)),b&&b(Q.value),z&&this.finish(),Q}then(e,i){return this.finished.then(e,i)}get duration(){return Cr(this.calculatedDuration)}get iterationDuration(){const{delay:e=0}=this.options||{};return this.duration+Cr(e)}get time(){return Cr(this.currentTime)}set time(e){var i;e=Wr(e),this.currentTime=e,this.startTime===null||this.holdTime!==null||this.playbackSpeed===0?this.holdTime=e:this.driver&&(this.startTime=this.driver.now()-e/this.playbackSpeed),(i=this.driver)==null||i.start(!1)}get speed(){return this.playbackSpeed}set speed(e){this.updateTime(On.now());const i=this.playbackSpeed!==e;this.playbackSpeed=e,i&&(this.time=Cr(this.currentTime))}play(){var r,s;if(this.isStopped)return;const{driver:e=j7,startTime:i}=this.options;this.driver||(this.driver=e(o=>this.tick(o))),(s=(r=this.options).onPlay)==null||s.call(r);const n=this.driver.now();this.state==="finished"?(this.updateFinished(),this.startTime=n):this.holdTime!==null?this.startTime=n-this.holdTime:this.startTime||(this.startTime=i??n),this.state==="finished"&&this.speed<0&&(this.startTime+=this.calculatedDuration),this.holdTime=null,this.state="running",this.driver.start()}pause(){this.state="paused",this.updateTime(On.now()),this.holdTime=this.currentTime}complete(){this.state!=="running"&&this.play(),this.state="finished",this.holdTime=null}finish(){var e,i;this.notifyFinished(),this.teardown(),this.state="finished",(i=(e=this.options).onComplete)==null||i.call(e)}cancel(){var e,i;this.holdTime=null,this.startTime=0,this.tick(0),this.teardown(),(i=(e=this.options).onCancel)==null||i.call(e)}teardown(){this.state="idle",this.stopDriver(),this.startTime=this.holdTime=null}stopDriver(){this.driver&&(this.driver.stop(),this.driver=void 0)}sample(e){return this.startTime=0,this.tick(e,!0)}attachTimeline(e){var i;return this.options.allowFlatten&&(this.options.type="keyframes",this.options.ease="linear",this.initAnimation()),(i=this.driver)==null||i.stop(),e.observe(this)}}function rI(t){for(let e=1;et*180/Math.PI,S1=t=>{const e=pl(Math.atan2(t[1],t[0]));return x1(e)},sI={x:4,y:5,translateX:4,translateY:5,scaleX:0,scaleY:3,scale:t=>(Math.abs(t[0])+Math.abs(t[3]))/2,rotate:S1,rotateZ:S1,skewX:t=>pl(Math.atan(t[1])),skewY:t=>pl(Math.atan(t[2])),skew:t=>(Math.abs(t[1])+Math.abs(t[2]))/2},x1=t=>(t=t%360,t<0&&(t+=360),t),gT=S1,OT=t=>Math.sqrt(t[0]*t[0]+t[1]*t[1]),vT=t=>Math.sqrt(t[4]*t[4]+t[5]*t[5]),oI={x:12,y:13,z:14,translateX:12,translateY:13,translateZ:14,scaleX:OT,scaleY:vT,scale:t=>(OT(t)+vT(t))/2,rotateX:t=>x1(pl(Math.atan2(t[6],t[5]))),rotateY:t=>x1(pl(Math.atan2(-t[2],t[0]))),rotateZ:gT,rotate:gT,skewX:t=>pl(Math.atan(t[4])),skewY:t=>pl(Math.atan(t[1])),skew:t=>(Math.abs(t[1])+Math.abs(t[4]))/2};function w1(t){return t.includes("scale")?1:0}function C1(t,e){if(!t||t==="none")return w1(e);const i=t.match(/^matrix3d\(([-\d.e\s,]+)\)$/u);let n,r;if(i)n=oI,r=i;else{const l=t.match(/^matrix\(([-\d.e\s,]+)\)$/u);n=sI,r=l}if(!r)return w1(e);const s=n[e],o=r[1].split(",").map(lI);return typeof s=="function"?s(o):o[s]}const aI=(t,e)=>{const{transform:i="none"}=getComputedStyle(t);return C1(i,e)};function lI(t){return parseFloat(t.trim())}const Oh=["transformPerspective","x","y","z","translateX","translateY","translateZ","scale","scaleX","scaleY","rotate","rotateX","rotateY","rotateZ","skew","skewX","skewY"],vh=new Set(Oh),_T=t=>t===gh||t===Te,cI=new Set(["x","y","z"]),hI=Oh.filter(t=>!cI.has(t));function uI(t){const e=[];return hI.forEach(i=>{const n=t.getValue(i);n!==void 0&&(e.push([i,n.get()]),n.set(i.startsWith("scale")?1:0))}),e}const ga={width:({x:t},{paddingLeft:e="0",paddingRight:i="0"})=>t.max-t.min-parseFloat(e)-parseFloat(i),height:({y:t},{paddingTop:e="0",paddingBottom:i="0"})=>t.max-t.min-parseFloat(e)-parseFloat(i),top:(t,{top:e})=>parseFloat(e),left:(t,{left:e})=>parseFloat(e),bottom:({y:t},{top:e})=>parseFloat(e)+(t.max-t.min),right:({x:t},{left:e})=>parseFloat(e)+(t.max-t.min),x:(t,{transform:e})=>C1(e,"x"),y:(t,{transform:e})=>C1(e,"y")};ga.translateX=ga.x;ga.translateY=ga.y;const bl=new Set;let k1=!1,T1=!1,A1=!1;function $L(){if(T1){const t=Array.from(bl).filter(n=>n.needsMeasurement),e=new Set(t.map(n=>n.element)),i=new Map;e.forEach(n=>{const r=uI(n);r.length&&(i.set(n,r),n.render())}),t.forEach(n=>n.measureInitialState()),e.forEach(n=>{n.render();const r=i.get(n);r&&r.forEach(([s,o])=>{var l;(l=n.getValue(s))==null||l.set(o)})}),t.forEach(n=>n.measureEndState()),t.forEach(n=>{n.suspendedScrollY!==void 0&&window.scrollTo(0,n.suspendedScrollY)})}T1=!1,k1=!1,bl.forEach(t=>t.complete(A1)),bl.clear()}function zL(){bl.forEach(t=>{t.readKeyframes(),t.needsMeasurement&&(T1=!0)})}function fI(){A1=!0,zL(),$L(),A1=!1}class cx{constructor(e,i,n,r,s,o=!1){this.state="pending",this.isAsync=!1,this.needsMeasurement=!1,this.unresolvedKeyframes=[...e],this.onComplete=i,this.name=n,this.motionValue=r,this.element=s,this.isAsync=o}scheduleResolve(){this.state="scheduled",this.isAsync?(bl.add(this),k1||(k1=!0,Tt.read(zL),Tt.resolveKeyframes($L))):(this.readKeyframes(),this.complete())}readKeyframes(){const{unresolvedKeyframes:e,name:i,element:n,motionValue:r}=this;if(e[0]===null){const s=r==null?void 0:r.get(),o=e[e.length-1];if(s!==void 0)e[0]=s;else if(n&&i){const l=n.readValue(i,o);l!=null&&(e[0]=l)}e[0]===void 0&&(e[0]=o),r&&s===void 0&&r.set(e[0])}rI(e)}setFinalKeyframe(){}measureInitialState(){}renderEndStyles(){}measureEndState(){}complete(e=!1){this.state="complete",this.onComplete(this.unresolvedKeyframes,this.finalKeyframe,e),bl.delete(this)}cancel(){this.state==="scheduled"&&(bl.delete(this),this.state="pending")}resume(){this.state==="pending"&&this.scheduleResolve()}}const dI=t=>t.startsWith("--");function pI(t,e,i){dI(e)?t.style.setProperty(e,i):t.style[e]=i}const mI={};function NL(t,e){const i=fL(t);return()=>mI[e]??i()}const gI=NL(()=>window.ScrollTimeline!==void 0,"scrollTimeline"),jL=NL(()=>{try{document.createElement("div").animate({opacity:0},{easing:"linear(0, 1)"})}catch{return!1}return!0},"linearEasing"),Hu=([t,e,i,n])=>`cubic-bezier(${t}, ${e}, ${i}, ${n})`,yT={linear:"linear",ease:"ease",easeIn:"ease-in",easeOut:"ease-out",easeInOut:"ease-in-out",circIn:Hu([0,.65,.55,1]),circOut:Hu([.55,0,1,.45]),backIn:Hu([.31,.01,.66,-.59]),backOut:Hu([.33,1.53,.69,.99])};function IL(t,e){if(t)return typeof t=="function"?jL()?LL(t,e):"ease-out":xL(t)?Hu(t):Array.isArray(t)?t.map(i=>IL(i,e)||yT.easeOut):yT[t]}function OI(t,e,i,{delay:n=0,duration:r=300,repeat:s=0,repeatType:o="loop",ease:l="easeOut",times:c}={},u=void 0){const d={[e]:i};c&&(d.offset=c);const p=IL(l,r);Array.isArray(p)&&(d.easing=p);const g={delay:n,duration:r,easing:Array.isArray(p)?"linear":p,fill:"both",iterations:s+1,direction:o==="reverse"?"alternate":"normal"};return u&&(g.pseudoElement=u),t.animate(d,g)}function VL(t){return typeof t=="function"&&"applyToOptions"in t}function vI({type:t,...e}){return VL(t)&&jL()?t.applyToOptions(e):(e.duration??(e.duration=300),e.ease??(e.ease="easeOut"),e)}class XL extends ax{constructor(e){if(super(),this.finishedTime=null,this.isStopped=!1,this.manualStartTime=null,!e)return;const{element:i,name:n,keyframes:r,pseudoElement:s,allowFlatten:o=!1,finalKeyframe:l,onComplete:c}=e;this.isPseudoElement=!!s,this.allowFlatten=o,this.options=e,GS(typeof e.type!="string");const u=vI(e);this.animation=OI(i,n,r,u,s),u.autoplay===!1&&this.animation.pause(),this.animation.onfinish=()=>{if(this.finishedTime=this.time,!s){const d=ox(r,this.options,l,this.speed);this.updateMotionValue?this.updateMotionValue(d):pI(i,n,d),this.animation.cancel()}c==null||c(),this.notifyFinished()}}play(){this.isStopped||(this.manualStartTime=null,this.animation.play(),this.state==="finished"&&this.updateFinished())}pause(){this.animation.pause()}complete(){var e,i;(i=(e=this.animation).finish)==null||i.call(e)}cancel(){try{this.animation.cancel()}catch{}}stop(){if(this.isStopped)return;this.isStopped=!0;const{state:e}=this;e==="idle"||e==="finished"||(this.updateMotionValue?this.updateMotionValue():this.commitStyles(),this.isPseudoElement||this.cancel())}commitStyles(){var i,n,r;const e=(i=this.options)==null?void 0:i.element;!this.isPseudoElement&&(e!=null&&e.isConnected)&&((r=(n=this.animation).commitStyles)==null||r.call(n))}get duration(){var i,n;const e=((n=(i=this.animation.effect)==null?void 0:i.getComputedTiming)==null?void 0:n.call(i).duration)||0;return Cr(Number(e))}get iterationDuration(){const{delay:e=0}=this.options||{};return this.duration+Cr(e)}get time(){return Cr(Number(this.animation.currentTime)||0)}set time(e){this.manualStartTime=null,this.finishedTime=null,this.animation.currentTime=Wr(e)}get speed(){return this.animation.playbackRate}set speed(e){e<0&&(this.finishedTime=null),this.animation.playbackRate=e}get state(){return this.finishedTime!==null?"finished":this.animation.playState}get startTime(){return this.manualStartTime??Number(this.animation.startTime)}set startTime(e){this.manualStartTime=this.animation.startTime=e}attachTimeline({timeline:e,observe:i}){var n;return this.allowFlatten&&((n=this.animation.effect)==null||n.updateTiming({easing:"linear"})),this.animation.onfinish=null,e&&gI()?(this.animation.timeline=e,Pr):i(this)}}const ZL={anticipate:_L,backInOut:vL,circInOut:bL};function _I(t){return t in ZL}function yI(t){typeof t.ease=="string"&&_I(t.ease)&&(t.ease=ZL[t.ease])}const o_=10;class bI extends XL{constructor(e){yI(e),BL(e),super(e),e.startTime!==void 0&&(this.startTime=e.startTime),this.options=e}updateMotionValue(e){const{motionValue:i,onUpdate:n,onComplete:r,element:s,...o}=this.options;if(!i)return;if(e!==void 0){i.set(e);return}const l=new lx({...o,autoplay:!1}),c=Math.max(o_,On.now()-this.startTime),u=As(0,o_,c-o_);i.setWithVelocity(l.sample(Math.max(0,c-u)).value,l.sample(c).value,u),l.stop()}}const bT=(t,e)=>e==="zIndex"?!1:!!(typeof t=="number"||Array.isArray(t)||typeof t=="string"&&(Ur.test(t)||t==="0")&&!t.startsWith("url("));function SI(t){const e=t[0];if(t.length===1)return!0;for(let i=0;iObject.hasOwnProperty.call(Element.prototype,"animate"));function kI(t){var d;const{motionValue:e,name:i,repeatDelay:n,repeatType:r,damping:s,type:o}=t;if(!(((d=e==null?void 0:e.owner)==null?void 0:d.current)instanceof HTMLElement))return!1;const{onUpdate:c,transformTemplate:u}=e.owner.getProps();return CI()&&i&&wI.has(i)&&(i!=="transform"||!u)&&!c&&!n&&r!=="mirror"&&s!==0&&o!=="inertia"}const TI=40;class AI extends ax{constructor({autoplay:e=!0,delay:i=0,type:n="keyframes",repeat:r=0,repeatDelay:s=0,repeatType:o="loop",keyframes:l,name:c,motionValue:u,element:d,...p}){var _;super(),this.stop=()=>{var b,x;this._animation&&(this._animation.stop(),(b=this.stopTimeline)==null||b.call(this)),(x=this.keyframeResolver)==null||x.cancel()},this.createdAt=On.now();const g={autoplay:e,delay:i,type:n,repeat:r,repeatDelay:s,repeatType:o,name:c,motionValue:u,element:d,...p},O=(d==null?void 0:d.KeyframeResolver)||cx;this.keyframeResolver=new O(l,(b,x,w)=>this.onKeyframesResolved(b,x,g,!w),c,u,d),(_=this.keyframeResolver)==null||_.scheduleResolve()}onKeyframesResolved(e,i,n,r){var x,w;this.keyframeResolver=void 0;const{name:s,type:o,velocity:l,delay:c,isHandoff:u,onUpdate:d}=n;this.resolvedAt=On.now(),xI(e,s,o,l)||((Oo.instantAnimations||!c)&&(d==null||d(ox(e,n,i))),e[0]=e[e.length-1],E1(n),n.repeat=0);const g={startTime:r?this.resolvedAt?this.resolvedAt-this.createdAt>TI?this.resolvedAt:this.createdAt:this.createdAt:void 0,finalKeyframe:i,...n,keyframes:e},O=!u&&kI(g),_=(w=(x=g.motionValue)==null?void 0:x.owner)==null?void 0:w.current,b=O?new bI({...g,element:_}):new lx(g);b.finished.then(()=>{this.notifyFinished()}).catch(Pr),this.pendingTimeline&&(this.stopTimeline=b.attachTimeline(this.pendingTimeline),this.pendingTimeline=void 0),this._animation=b}get finished(){return this._animation?this.animation.finished:this._finished}then(e,i){return this.finished.finally(e).then(()=>{})}get animation(){var e;return this._animation||((e=this.keyframeResolver)==null||e.resume(),fI()),this._animation}get duration(){return this.animation.duration}get iterationDuration(){return this.animation.iterationDuration}get time(){return this.animation.time}set time(e){this.animation.time=e}get speed(){return this.animation.speed}get state(){return this.animation.state}set speed(e){this.animation.speed=e}get startTime(){return this.animation.startTime}attachTimeline(e){return this._animation?this.stopTimeline=this.animation.attachTimeline(e):this.pendingTimeline=e,()=>this.stop()}play(){this.animation.play()}pause(){this.animation.pause()}complete(){this.animation.complete()}cancel(){var e;this._animation&&this.animation.cancel(),(e=this.keyframeResolver)==null||e.cancel()}}function qL(t,e,i,n=0,r=1){const s=Array.from(t).sort((u,d)=>u.sortNodePosition(d)).indexOf(e),o=t.size,l=(o-1)*n;return typeof i=="function"?i(s,o):r===1?s*n:l-s*n}const EI=/^var\(--(?:([\w-]+)|([\w-]+), ?([a-zA-Z\d ()%#.,-]+))\)/u;function MI(t){const e=EI.exec(t);if(!e)return[,];const[,i,n,r]=e;return[`--${i??n}`,r]}function WL(t,e,i=1){const[n,r]=MI(t);if(!n)return;const s=window.getComputedStyle(e).getPropertyValue(n);if(s){const o=s.trim();return cL(o)?parseFloat(o):o}return tx(r)?WL(r,e,i+1):r}const PI={type:"spring",stiffness:500,damping:25,restSpeed:10},RI=t=>({type:"spring",stiffness:550,damping:t===0?2*Math.sqrt(550):30,restSpeed:10}),QI={type:"keyframes",duration:.8},LI={type:"keyframes",ease:[.25,.1,.35,1],duration:.3},DI=(t,{keyframes:e})=>e.length>2?QI:vh.has(t)?t.startsWith("scale")?RI(e[1]):PI:LI,BI=t=>t!==null;function $I(t,{repeat:e,repeatType:i="loop"},n){const r=t.filter(BI),s=e&&i!=="loop"&&e%2===1?0:r.length-1;return r[s]}function UL(t,e){if(t!=null&&t.inherit&&e){const{inherit:i,...n}=t;return{...e,...n}}return t}function hx(t,e){const i=(t==null?void 0:t[e])??(t==null?void 0:t.default)??t;return i!==t?UL(i,t):i}function zI({when:t,delay:e,delayChildren:i,staggerChildren:n,staggerDirection:r,repeat:s,repeatType:o,repeatDelay:l,from:c,elapsed:u,...d}){return!!Object.keys(d).length}const ux=(t,e,i,n={},r,s)=>o=>{const l=hx(n,t)||{},c=l.delay||n.delay||0;let{elapsed:u=0}=n;u=u-Wr(c);const d={keyframes:Array.isArray(i)?i:[null,i],ease:"easeOut",velocity:e.getVelocity(),...l,delay:-u,onUpdate:g=>{e.set(g),l.onUpdate&&l.onUpdate(g)},onComplete:()=>{o(),l.onComplete&&l.onComplete()},name:t,motionValue:e,element:s?void 0:r};zI(l)||Object.assign(d,DI(t,d)),d.duration&&(d.duration=Wr(d.duration)),d.repeatDelay&&(d.repeatDelay=Wr(d.repeatDelay)),d.from!==void 0&&(d.keyframes[0]=d.from);let p=!1;if((d.type===!1||d.duration===0&&!d.repeatDelay)&&(E1(d),d.delay===0&&(p=!0)),(Oo.instantAnimations||Oo.skipAnimations||r!=null&&r.shouldSkipAnimations)&&(p=!0,E1(d),d.delay=0),d.allowFlatten=!l.type&&!l.ease,p&&!s&&e.get()!==void 0){const g=$I(d.keyframes,l);if(g!==void 0){Tt.update(()=>{d.onUpdate(g),d.onComplete()});return}}return l.isSync?new lx(d):new AI(d)};function ST(t){const e=[{},{}];return t==null||t.values.forEach((i,n)=>{e[0][n]=i.get(),e[1][n]=i.getVelocity()}),e}function fx(t,e,i,n){if(typeof e=="function"){const[r,s]=ST(n);e=e(i!==void 0?i:t.custom,r,s)}if(typeof e=="string"&&(e=t.variants&&t.variants[e]),typeof e=="function"){const[r,s]=ST(n);e=e(i!==void 0?i:t.custom,r,s)}return e}function qc(t,e,i){const n=t.getProps();return fx(n,e,i!==void 0?i:n.custom,t)}const YL=new Set(["width","height","top","left","right","bottom",...Oh]),xT=30,NI=t=>!isNaN(parseFloat(t));class jI{constructor(e,i={}){this.canTrackVelocity=null,this.events={},this.updateAndNotify=n=>{var s;const r=On.now();if(this.updatedAt!==r&&this.setPrevFrameValue(),this.prev=this.current,this.setCurrent(n),this.current!==this.prev&&((s=this.events.change)==null||s.notify(this.current),this.dependents))for(const o of this.dependents)o.dirty()},this.hasAnimated=!1,this.setCurrent(e),this.owner=i.owner}setCurrent(e){this.current=e,this.updatedAt=On.now(),this.canTrackVelocity===null&&e!==void 0&&(this.canTrackVelocity=NI(this.current))}setPrevFrameValue(e=this.current){this.prevFrameValue=e,this.prevUpdatedAt=this.updatedAt}onChange(e){return this.on("change",e)}on(e,i){this.events[e]||(this.events[e]=new KS);const n=this.events[e].add(i);return e==="change"?()=>{n(),Tt.read(()=>{this.events.change.getSize()||this.stop()})}:n}clearListeners(){for(const e in this.events)this.events[e].clear()}attach(e,i){this.passiveEffect=e,this.stopPassiveEffect=i}set(e){this.passiveEffect?this.passiveEffect(e,this.updateAndNotify):this.updateAndNotify(e)}setWithVelocity(e,i,n){this.set(i),this.prev=void 0,this.prevFrameValue=e,this.prevUpdatedAt=this.updatedAt-n}jump(e,i=!0){this.updateAndNotify(e),this.prev=e,this.prevUpdatedAt=this.prevFrameValue=void 0,i&&this.stop(),this.stopPassiveEffect&&this.stopPassiveEffect()}dirty(){var e;(e=this.events.change)==null||e.notify(this.current)}addDependent(e){this.dependents||(this.dependents=new Set),this.dependents.add(e)}removeDependent(e){this.dependents&&this.dependents.delete(e)}get(){return this.current}getPrevious(){return this.prev}getVelocity(){const e=On.now();if(!this.canTrackVelocity||this.prevFrameValue===void 0||e-this.updatedAt>xT)return 0;const i=Math.min(this.updatedAt-this.prevUpdatedAt,xT);return dL(parseFloat(this.current)-parseFloat(this.prevFrameValue),i)}start(e){return this.stop(),new Promise(i=>{this.hasAnimated=!0,this.animation=e(i),this.events.animationStart&&this.events.animationStart.notify()}).then(()=>{this.events.animationComplete&&this.events.animationComplete.notify(),this.clearAnimation()})}stop(){this.animation&&(this.animation.stop(),this.events.animationCancel&&this.events.animationCancel.notify()),this.clearAnimation()}isAnimating(){return!!this.animation}clearAnimation(){delete this.animation}destroy(){var e,i;(e=this.dependents)==null||e.clear(),(i=this.events.destroy)==null||i.notify(),this.clearListeners(),this.stop(),this.stopPassiveEffect&&this.stopPassiveEffect()}}function nh(t,e){return new jI(t,e)}const M1=t=>Array.isArray(t);function II(t,e,i){t.hasValue(e)?t.getValue(e).set(i):t.addValue(e,nh(i))}function VI(t){return M1(t)?t[t.length-1]||0:t}function XI(t,e){const i=qc(t,e);let{transitionEnd:n={},transition:r={},...s}=i||{};s={...s,...n};for(const o in s){const l=VI(s[o]);II(t,o,l)}}const sn=t=>!!(t&&t.getVelocity);function ZI(t){return!!(sn(t)&&t.add)}function P1(t,e){const i=t.getValue("willChange");if(ZI(i))return i.add(e);if(!i&&Oo.WillChange){const n=new Oo.WillChange("auto");t.addValue("willChange",n),n.add(e)}}function dx(t){return t.replace(/([A-Z])/g,e=>`-${e.toLowerCase()}`)}const qI="framerAppearId",HL="data-"+dx(qI);function FL(t){return t.props[HL]}function WI({protectedKeys:t,needsAnimating:e},i){const n=t.hasOwnProperty(i)&&e[i]!==!0;return e[i]=!1,n}function GL(t,e,{delay:i=0,transitionOverride:n,type:r}={}){let{transition:s,transitionEnd:o,...l}=e;const c=t.getDefaultTransition();s=s?UL(s,c):c;const u=s==null?void 0:s.reduceMotion;n&&(s=n);const d=[],p=r&&t.animationState&&t.animationState.getState()[r];for(const g in l){const O=t.getValue(g,t.latestValues[g]??null),_=l[g];if(_===void 0||p&&WI(p,g))continue;const b={delay:i,...hx(s||{},g)},x=O.get();if(x!==void 0&&!O.isAnimating&&!Array.isArray(_)&&_===x&&!b.velocity)continue;let w=!1;if(window.MotionHandoffAnimation){const A=FL(t);if(A){const Q=window.MotionHandoffAnimation(A,g,Tt);Q!==null&&(b.startTime=Q,w=!0)}}P1(t,g);const k=u??t.shouldReduceMotion;O.start(ux(g,O,_,k&&YL.has(g)?{type:!1}:b,t,w));const T=O.animation;T&&d.push(T)}if(o){const g=()=>Tt.update(()=>{o&&XI(t,o)});d.length?Promise.all(d).then(g):g()}return d}function R1(t,e,i={}){var c;const n=qc(t,e,i.type==="exit"?(c=t.presenceContext)==null?void 0:c.custom:void 0);let{transition:r=t.getDefaultTransition()||{}}=n||{};i.transitionOverride&&(r=i.transitionOverride);const s=n?()=>Promise.all(GL(t,n,i)):()=>Promise.resolve(),o=t.variantChildren&&t.variantChildren.size?(u=0)=>{const{delayChildren:d=0,staggerChildren:p,staggerDirection:g}=r;return UI(t,e,u,d,p,g,i)}:()=>Promise.resolve(),{when:l}=r;if(l){const[u,d]=l==="beforeChildren"?[s,o]:[o,s];return u().then(()=>d())}else return Promise.all([s(),o(i.delay)])}function UI(t,e,i=0,n=0,r=0,s=1,o){const l=[];for(const c of t.variantChildren)c.notify("AnimationStart",e),l.push(R1(c,e,{...o,delay:i+(typeof n=="function"?0:n)+qL(t.variantChildren,c,n,r,s)}).then(()=>c.notify("AnimationComplete",e)));return Promise.all(l)}function YI(t,e,i={}){t.notify("AnimationStart",e);let n;if(Array.isArray(e)){const r=e.map(s=>R1(t,s,i));n=Promise.all(r)}else if(typeof e=="string")n=R1(t,e,i);else{const r=typeof e=="function"?qc(t,e,i.custom):e;n=Promise.all(GL(t,r,i))}return n.then(()=>{t.notify("AnimationComplete",e)})}const HI={test:t=>t==="auto",parse:t=>t},KL=t=>e=>e.test(t),JL=[gh,Te,ws,la,w7,x7,HI],wT=t=>JL.find(KL(t));function FI(t){return typeof t=="number"?t===0:t!==null?t==="none"||t==="0"||uL(t):!0}const GI=new Set(["brightness","contrast","saturate","opacity"]);function KI(t){const[e,i]=t.slice(0,-1).split("(");if(e==="drop-shadow")return t;const[n]=i.match(ix)||[];if(!n)return t;const r=i.replace(n,"");let s=GI.has(e)?1:0;return n!==i&&(s*=100),e+"("+s+r+")"}const JI=/\b([a-z-]*)\(.*?\)/gu,Q1={...Ur,getAnimatableNone:t=>{const e=t.match(JI);return e?e.map(KI).join(" "):t}},L1={...Ur,getAnimatableNone:t=>{const e=Ur.parse(t);return Ur.createTransformer(t)(e.map(n=>typeof n=="number"?0:typeof n=="object"?{...n,alpha:1}:n))}},CT={...gh,transform:Math.round},eV={rotate:la,rotateX:la,rotateY:la,rotateZ:la,scale:qp,scaleX:qp,scaleY:qp,scaleZ:qp,skew:la,skewX:la,skewY:la,distance:Te,translateX:Te,translateY:Te,translateZ:Te,x:Te,y:Te,z:Te,perspective:Te,transformPerspective:Te,opacity:kf,originX:uT,originY:uT,originZ:Te},px={borderWidth:Te,borderTopWidth:Te,borderRightWidth:Te,borderBottomWidth:Te,borderLeftWidth:Te,borderRadius:Te,borderTopLeftRadius:Te,borderTopRightRadius:Te,borderBottomRightRadius:Te,borderBottomLeftRadius:Te,width:Te,maxWidth:Te,height:Te,maxHeight:Te,top:Te,right:Te,bottom:Te,left:Te,inset:Te,insetBlock:Te,insetBlockStart:Te,insetBlockEnd:Te,insetInline:Te,insetInlineStart:Te,insetInlineEnd:Te,padding:Te,paddingTop:Te,paddingRight:Te,paddingBottom:Te,paddingLeft:Te,paddingBlock:Te,paddingBlockStart:Te,paddingBlockEnd:Te,paddingInline:Te,paddingInlineStart:Te,paddingInlineEnd:Te,margin:Te,marginTop:Te,marginRight:Te,marginBottom:Te,marginLeft:Te,marginBlock:Te,marginBlockStart:Te,marginBlockEnd:Te,marginInline:Te,marginInlineStart:Te,marginInlineEnd:Te,fontSize:Te,backgroundPositionX:Te,backgroundPositionY:Te,...eV,zIndex:CT,fillOpacity:kf,strokeOpacity:kf,numOctaves:CT},tV={...px,color:ai,backgroundColor:ai,outlineColor:ai,fill:ai,stroke:ai,borderColor:ai,borderTopColor:ai,borderRightColor:ai,borderBottomColor:ai,borderLeftColor:ai,filter:Q1,WebkitFilter:Q1,mask:L1,WebkitMask:L1},e3=t=>tV[t],iV=new Set([Q1,L1]);function t3(t,e){let i=e3(t);return iV.has(i)||(i=Ur),i.getAnimatableNone?i.getAnimatableNone(e):void 0}const nV=new Set(["auto","none","0"]);function rV(t,e,i){let n=0,r;for(;n{e.getValue(c).set(u)}),this.resolveNoneKeyframes()}}const oV=new Set(["opacity","clipPath","filter","transform"]);function i3(t,e,i){if(t==null)return[];if(t instanceof EventTarget)return[t];if(typeof t=="string"){let n=document;const r=(i==null?void 0:i[t])??n.querySelectorAll(t);return r?Array.from(r):[]}return Array.from(t).filter(n=>n!=null)}const n3=(t,e)=>e&&typeof t=="number"?e.transform(t):t;function D1(t){return hL(t)&&"offsetHeight"in t}const{schedule:mx}=wL(queueMicrotask,!1),Xr={x:!1,y:!1};function r3(){return Xr.x||Xr.y}function aV(t){return t==="x"||t==="y"?Xr[t]?null:(Xr[t]=!0,()=>{Xr[t]=!1}):Xr.x||Xr.y?null:(Xr.x=Xr.y=!0,()=>{Xr.x=Xr.y=!1})}function s3(t,e){const i=i3(t),n=new AbortController,r={passive:!0,...e,signal:n.signal};return[i,r,()=>n.abort()]}function lV(t){return!(t.pointerType==="touch"||r3())}function cV(t,e,i={}){const[n,r,s]=s3(t,i);return n.forEach(o=>{let l=!1,c=!1,u;const d=()=>{o.removeEventListener("pointerleave",_)},p=x=>{u&&(u(x),u=void 0),d()},g=x=>{l=!1,window.removeEventListener("pointerup",g),window.removeEventListener("pointercancel",g),c&&(c=!1,p(x))},O=()=>{l=!0,window.addEventListener("pointerup",g,r),window.addEventListener("pointercancel",g,r)},_=x=>{if(x.pointerType!=="touch"){if(l){c=!0;return}p(x)}},b=x=>{if(!lV(x))return;c=!1;const w=e(o,x);typeof w=="function"&&(u=w,o.addEventListener("pointerleave",_,r))};o.addEventListener("pointerenter",b,r),o.addEventListener("pointerdown",O,r)}),s}const o3=(t,e)=>e?t===e?!0:o3(t,e.parentElement):!1,gx=t=>t.pointerType==="mouse"?typeof t.button!="number"||t.button<=0:t.isPrimary!==!1,hV=new Set(["BUTTON","INPUT","SELECT","TEXTAREA","A"]);function uV(t){return hV.has(t.tagName)||t.isContentEditable===!0}const fV=new Set(["INPUT","SELECT","TEXTAREA"]);function dV(t){return fV.has(t.tagName)||t.isContentEditable===!0}const Bm=new WeakSet;function kT(t){return e=>{e.key==="Enter"&&t(e)}}function a_(t,e){t.dispatchEvent(new PointerEvent("pointer"+e,{isPrimary:!0,bubbles:!0}))}const pV=(t,e)=>{const i=t.currentTarget;if(!i)return;const n=kT(()=>{if(Bm.has(i))return;a_(i,"down");const r=kT(()=>{a_(i,"up")}),s=()=>a_(i,"cancel");i.addEventListener("keyup",r,e),i.addEventListener("blur",s,e)});i.addEventListener("keydown",n,e),i.addEventListener("blur",()=>i.removeEventListener("keydown",n),e)};function TT(t){return gx(t)&&!r3()}const AT=new WeakSet;function mV(t,e,i={}){const[n,r,s]=s3(t,i),o=l=>{const c=l.currentTarget;if(!TT(l)||AT.has(l))return;Bm.add(c),i.stopPropagation&&AT.add(l);const u=e(c,l),d=(O,_)=>{window.removeEventListener("pointerup",p),window.removeEventListener("pointercancel",g),Bm.has(c)&&Bm.delete(c),TT(O)&&typeof u=="function"&&u(O,{success:_})},p=O=>{d(O,c===window||c===document||i.useGlobalTarget||o3(c,O.target))},g=O=>{d(O,!1)};window.addEventListener("pointerup",p,r),window.addEventListener("pointercancel",g,r)};return n.forEach(l=>{(i.useGlobalTarget?window:l).addEventListener("pointerdown",o,r),D1(l)&&(l.addEventListener("focus",u=>pV(u,r)),!uV(l)&&!l.hasAttribute("tabindex")&&(l.tabIndex=0))}),s}function Ox(t){return hL(t)&&"ownerSVGElement"in t}const $m=new WeakMap;let ca;const a3=(t,e,i)=>(n,r)=>r&&r[0]?r[0][t+"Size"]:Ox(n)&&"getBBox"in n?n.getBBox()[e]:n[i],gV=a3("inline","width","offsetWidth"),OV=a3("block","height","offsetHeight");function vV({target:t,borderBoxSize:e}){var i;(i=$m.get(t))==null||i.forEach(n=>{n(t,{get width(){return gV(t,e)},get height(){return OV(t,e)}})})}function _V(t){t.forEach(vV)}function yV(){typeof ResizeObserver>"u"||(ca=new ResizeObserver(_V))}function bV(t,e){ca||yV();const i=i3(t);return i.forEach(n=>{let r=$m.get(n);r||(r=new Set,$m.set(n,r)),r.add(e),ca==null||ca.observe(n)}),()=>{i.forEach(n=>{const r=$m.get(n);r==null||r.delete(e),r!=null&&r.size||ca==null||ca.unobserve(n)})}}const zm=new Set;let Dc;function SV(){Dc=()=>{const t={get width(){return window.innerWidth},get height(){return window.innerHeight}};zm.forEach(e=>e(t))},window.addEventListener("resize",Dc)}function xV(t){return zm.add(t),Dc||SV(),()=>{zm.delete(t),!zm.size&&typeof Dc=="function"&&(window.removeEventListener("resize",Dc),Dc=void 0)}}function ET(t,e){return typeof t=="function"?xV(t):bV(t,e)}function wV(t){return Ox(t)&&t.tagName==="svg"}const CV=[...JL,ai,Ur],kV=t=>CV.find(KL(t)),MT=()=>({translate:0,scale:1,origin:0,originPoint:0}),Bc=()=>({x:MT(),y:MT()}),PT=()=>({min:0,max:0}),Oi=()=>({x:PT(),y:PT()}),TV=new WeakMap;function lO(t){return t!==null&&typeof t=="object"&&typeof t.start=="function"}function Af(t){return typeof t=="string"||Array.isArray(t)}const vx=["animate","whileInView","whileFocus","whileHover","whileTap","whileDrag","exit"],_x=["initial",...vx];function cO(t){return lO(t.animate)||_x.some(e=>Af(t[e]))}function l3(t){return!!(cO(t)||t.variants)}function AV(t,e,i){for(const n in e){const r=e[n],s=i[n];if(sn(r))t.addValue(n,r);else if(sn(s))t.addValue(n,nh(r,{owner:t}));else if(s!==r)if(t.hasValue(n)){const o=t.getValue(n);o.liveStyle===!0?o.jump(r):o.hasAnimated||o.set(r)}else{const o=t.getStaticValue(n);t.addValue(n,nh(o!==void 0?o:r,{owner:t}))}}for(const n in i)e[n]===void 0&&t.removeValue(n);return e}const B1={current:null},c3={current:!1},EV=typeof window<"u";function MV(){if(c3.current=!0,!!EV)if(window.matchMedia){const t=window.matchMedia("(prefers-reduced-motion)"),e=()=>B1.current=t.matches;t.addEventListener("change",e),e()}else B1.current=!1}const RT=["AnimationStart","AnimationComplete","Update","BeforeLayoutMeasure","LayoutMeasure","LayoutAnimationStart","LayoutAnimationComplete"];let pg={};function h3(t){pg=t}function PV(){return pg}class RV{scrapeMotionValuesFromProps(e,i,n){return{}}constructor({parent:e,props:i,presenceContext:n,reducedMotionConfig:r,skipAnimations:s,blockInitialAnimation:o,visualState:l},c={}){this.current=null,this.children=new Set,this.isVariantNode=!1,this.isControllingVariants=!1,this.shouldReduceMotion=null,this.shouldSkipAnimations=!1,this.values=new Map,this.KeyframeResolver=cx,this.features={},this.valueSubscriptions=new Map,this.prevMotionValues={},this.hasBeenMounted=!1,this.events={},this.propEventSubscriptions={},this.notifyUpdate=()=>this.notify("Update",this.latestValues),this.render=()=>{this.current&&(this.triggerBuild(),this.renderInstance(this.current,this.renderState,this.props.style,this.projection))},this.renderScheduledAt=0,this.scheduleRender=()=>{const O=On.now();this.renderScheduledAtthis.bindToMotionValue(s,r)),this.reducedMotionConfig==="never"?this.shouldReduceMotion=!1:this.reducedMotionConfig==="always"?this.shouldReduceMotion=!0:(c3.current||MV(),this.shouldReduceMotion=B1.current),this.shouldSkipAnimations=this.skipAnimationsConfig??!1,(n=this.parent)==null||n.addChild(this),this.update(this.props,this.presenceContext),this.hasBeenMounted=!0}unmount(){var e;this.projection&&this.projection.unmount(),ba(this.notifyUpdate),ba(this.render),this.valueSubscriptions.forEach(i=>i()),this.valueSubscriptions.clear(),this.removeFromVariantTree&&this.removeFromVariantTree(),(e=this.parent)==null||e.removeChild(this);for(const i in this.events)this.events[i].clear();for(const i in this.features){const n=this.features[i];n&&(n.unmount(),n.isMounted=!1)}this.current=null}addChild(e){this.children.add(e),this.enteringChildren??(this.enteringChildren=new Set),this.enteringChildren.add(e)}removeChild(e){this.children.delete(e),this.enteringChildren&&this.enteringChildren.delete(e)}bindToMotionValue(e,i){if(this.valueSubscriptions.has(e)&&this.valueSubscriptions.get(e)(),i.accelerate&&oV.has(e)&&this.current instanceof HTMLElement){const{factory:o,keyframes:l,times:c,ease:u,duration:d}=i.accelerate,p=new XL({element:this.current,name:e,keyframes:l,times:c,ease:u,duration:Wr(d)}),g=o(p);this.valueSubscriptions.set(e,()=>{g(),p.cancel()});return}const n=vh.has(e);n&&this.onBindTransform&&this.onBindTransform();const r=i.on("change",o=>{this.latestValues[e]=o,this.props.onUpdate&&Tt.preRender(this.notifyUpdate),n&&this.projection&&(this.projection.isTransformDirty=!0),this.scheduleRender()});let s;typeof window<"u"&&window.MotionCheckAppearSync&&(s=window.MotionCheckAppearSync(this,e,i)),this.valueSubscriptions.set(e,()=>{r(),s&&s(),i.owner&&i.stop()})}sortNodePosition(e){return!this.current||!this.sortInstanceNodePosition||this.type!==e.type?0:this.sortInstanceNodePosition(this.current,e.current)}updateFeatures(){let e="animation";for(e in pg){const i=pg[e];if(!i)continue;const{isEnabled:n,Feature:r}=i;if(!this.features[e]&&r&&n(this.props)&&(this.features[e]=new r(this)),this.features[e]){const s=this.features[e];s.isMounted?s.update():(s.mount(),s.isMounted=!0)}}}triggerBuild(){this.build(this.renderState,this.latestValues,this.props)}measureViewportBox(){return this.current?this.measureInstanceViewportBox(this.current,this.props):Oi()}getStaticValue(e){return this.latestValues[e]}setStaticValue(e,i){this.latestValues[e]=i}update(e,i){(e.transformTemplate||this.props.transformTemplate)&&this.scheduleRender(),this.prevProps=this.props,this.props=e,this.prevPresenceContext=this.presenceContext,this.presenceContext=i;for(let n=0;ni.variantChildren.delete(e)}addValue(e,i){const n=this.values.get(e);i!==n&&(n&&this.removeValue(e),this.bindToMotionValue(e,i),this.values.set(e,i),this.latestValues[e]=i.get())}removeValue(e){this.values.delete(e);const i=this.valueSubscriptions.get(e);i&&(i(),this.valueSubscriptions.delete(e)),delete this.latestValues[e],this.removeValueFromRenderState(e,this.renderState)}hasValue(e){return this.values.has(e)}getValue(e,i){if(this.props.values&&this.props.values[e])return this.props.values[e];let n=this.values.get(e);return n===void 0&&i!==void 0&&(n=nh(i===null?void 0:i,{owner:this}),this.addValue(e,n)),n}readValue(e,i){let n=this.latestValues[e]!==void 0||!this.current?this.latestValues[e]:this.getBaseTargetFromProps(this.props,e)??this.readValueFromInstance(this.current,e,this.options);return n!=null&&(typeof n=="string"&&(cL(n)||uL(n))?n=parseFloat(n):!kV(n)&&Ur.test(i)&&(n=t3(e,i)),this.setBaseTarget(e,sn(n)?n.get():n)),sn(n)?n.get():n}setBaseTarget(e,i){this.baseTarget[e]=i}getBaseTarget(e){var s;const{initial:i}=this.props;let n;if(typeof i=="string"||typeof i=="object"){const o=fx(this.props,i,(s=this.presenceContext)==null?void 0:s.custom);o&&(n=o[e])}if(i&&n!==void 0)return n;const r=this.getBaseTargetFromProps(this.props,e);return r!==void 0&&!sn(r)?r:this.initialValues[e]!==void 0&&n===void 0?void 0:this.baseTarget[e]}on(e,i){return this.events[e]||(this.events[e]=new KS),this.events[e].add(i)}notify(e,...i){this.events[e]&&this.events[e].notify(...i)}scheduleRenderMicrotask(){mx.render(this.render)}}class u3 extends RV{constructor(){super(...arguments),this.KeyframeResolver=sV}sortInstanceNodePosition(e,i){return e.compareDocumentPosition(i)&2?1:-1}getBaseTargetFromProps(e,i){const n=e.style;return n?n[i]:void 0}removeValueFromRenderState(e,{vars:i,style:n}){delete i[e],delete n[e]}handleChildMotionValue(){this.childSubscription&&(this.childSubscription(),delete this.childSubscription);const{children:e}=this.props;sn(e)&&(this.childSubscription=e.on("change",i=>{this.current&&(this.current.textContent=`${i}`)}))}}class Ma{constructor(e){this.isMounted=!1,this.node=e}update(){}}function f3({top:t,left:e,right:i,bottom:n}){return{x:{min:e,max:i},y:{min:t,max:n}}}function QV({x:t,y:e}){return{top:e.min,right:t.max,bottom:e.max,left:t.min}}function LV(t,e){if(!e)return t;const i=e({x:t.left,y:t.top}),n=e({x:t.right,y:t.bottom});return{top:i.y,left:i.x,bottom:n.y,right:n.x}}function l_(t){return t===void 0||t===1}function $1({scale:t,scaleX:e,scaleY:i}){return!l_(t)||!l_(e)||!l_(i)}function ol(t){return $1(t)||d3(t)||t.z||t.rotate||t.rotateX||t.rotateY||t.skewX||t.skewY}function d3(t){return QT(t.x)||QT(t.y)}function QT(t){return t&&t!=="0%"}function mg(t,e,i){const n=t-i,r=e*n;return i+r}function LT(t,e,i,n,r){return r!==void 0&&(t=mg(t,r,n)),mg(t,i,n)+e}function z1(t,e=0,i=1,n,r){t.min=LT(t.min,e,i,n,r),t.max=LT(t.max,e,i,n,r)}function p3(t,{x:e,y:i}){z1(t.x,e.translate,e.scale,e.originPoint),z1(t.y,i.translate,i.scale,i.originPoint)}const DT=.999999999999,BT=1.0000000000001;function DV(t,e,i,n=!1){const r=i.length;if(!r)return;e.x=e.y=1;let s,o;for(let l=0;lDT&&(e.x=1),e.yDT&&(e.y=1)}function $c(t,e){t.min=t.min+e,t.max=t.max+e}function $T(t,e,i,n,r=.5){const s=Nt(t.min,t.max,r);z1(t,e,i,s,n)}function zc(t,e){$T(t.x,e.x,e.scaleX,e.scale,e.originX),$T(t.y,e.y,e.scaleY,e.scale,e.originY)}function m3(t,e){return f3(LV(t.getBoundingClientRect(),e))}function BV(t,e,i){const n=m3(t,i),{scroll:r}=e;return r&&($c(n.x,r.offset.x),$c(n.y,r.offset.y)),n}const $V={x:"translateX",y:"translateY",z:"translateZ",transformPerspective:"perspective"},zV=Oh.length;function NV(t,e,i){let n="",r=!0;for(let s=0;s{if(!e.target)return t;if(typeof t=="string")if(Te.test(t))t=parseFloat(t);else return t;const i=zT(t,e.target.x),n=zT(t,e.target.y);return`${i}% ${n}%`}},jV={correct:(t,{treeScale:e,projectionDelta:i})=>{const n=t,r=Ur.parse(t);if(r.length>5)return n;const s=Ur.createTransformer(t),o=typeof r[0]!="number"?1:0,l=i.x.scale*e.x,c=i.y.scale*e.y;r[0+o]/=l,r[1+o]/=c;const u=Nt(l,c,.5);return typeof r[2+o]=="number"&&(r[2+o]/=u),typeof r[3+o]=="number"&&(r[3+o]/=u),s(r)}},N1={borderRadius:{...wu,applyTo:["borderTopLeftRadius","borderTopRightRadius","borderBottomLeftRadius","borderBottomRightRadius"]},borderTopLeftRadius:wu,borderTopRightRadius:wu,borderBottomLeftRadius:wu,borderBottomRightRadius:wu,boxShadow:jV};function O3(t,{layout:e,layoutId:i}){return vh.has(t)||t.startsWith("origin")||(e||i!==void 0)&&(!!N1[t]||t==="opacity")}function bx(t,e,i){var o;const n=t.style,r=e==null?void 0:e.style,s={};if(!n)return s;for(const l in n)(sn(n[l])||r&&sn(r[l])||O3(l,t)||((o=i==null?void 0:i.getValue(l))==null?void 0:o.liveStyle)!==void 0)&&(s[l]=n[l]);return s}function IV(t){return window.getComputedStyle(t)}class VV extends u3{constructor(){super(...arguments),this.type="html",this.renderInstance=g3}readValueFromInstance(e,i){var n;if(vh.has(i))return(n=this.projection)!=null&&n.isProjecting?w1(i):aI(e,i);{const r=IV(e),s=(kL(i)?r.getPropertyValue(i):r[i])||0;return typeof s=="string"?s.trim():s}}measureInstanceViewportBox(e,{transformPagePoint:i}){return m3(e,i)}build(e,i,n){yx(e,i,n.transformTemplate)}scrapeMotionValuesFromProps(e,i,n){return bx(e,i,n)}}const XV={offset:"stroke-dashoffset",array:"stroke-dasharray"},ZV={offset:"strokeDashoffset",array:"strokeDasharray"};function qV(t,e,i=1,n=0,r=!0){t.pathLength=1;const s=r?XV:ZV;t[s.offset]=`${-n}`,t[s.array]=`${e} ${i}`}const WV=["offsetDistance","offsetPath","offsetRotate","offsetAnchor"];function v3(t,{attrX:e,attrY:i,attrScale:n,pathLength:r,pathSpacing:s=1,pathOffset:o=0,...l},c,u,d){if(yx(t,l,u),c){t.style.viewBox&&(t.attrs.viewBox=t.style.viewBox);return}t.attrs=t.style,t.style={};const{attrs:p,style:g}=t;p.transform&&(g.transform=p.transform,delete p.transform),(g.transform||p.transformOrigin)&&(g.transformOrigin=p.transformOrigin??"50% 50%",delete p.transformOrigin),g.transform&&(g.transformBox=(d==null?void 0:d.transformBox)??"fill-box",delete p.transformBox);for(const O of WV)p[O]!==void 0&&(g[O]=p[O],delete p[O]);e!==void 0&&(p.x=e),i!==void 0&&(p.y=i),n!==void 0&&(p.scale=n),r!==void 0&&qV(p,r,s,o,!1)}const _3=new Set(["baseFrequency","diffuseConstant","kernelMatrix","kernelUnitLength","keySplines","keyTimes","limitingConeAngle","markerHeight","markerWidth","numOctaves","targetX","targetY","surfaceScale","specularConstant","specularExponent","stdDeviation","tableValues","viewBox","gradientTransform","pathLength","startOffset","textLength","lengthAdjust"]),y3=t=>typeof t=="string"&&t.toLowerCase()==="svg";function UV(t,e,i,n){g3(t,e,void 0,n);for(const r in e.attrs)t.setAttribute(_3.has(r)?r:dx(r),e.attrs[r])}function b3(t,e,i){const n=bx(t,e,i);for(const r in t)if(sn(t[r])||sn(e[r])){const s=Oh.indexOf(r)!==-1?"attr"+r.charAt(0).toUpperCase()+r.substring(1):r;n[s]=t[r]}return n}class YV extends u3{constructor(){super(...arguments),this.type="svg",this.isSVGTag=!1,this.measureInstanceViewportBox=Oi}getBaseTargetFromProps(e,i){return e[i]}readValueFromInstance(e,i){if(vh.has(i)){const n=e3(i);return n&&n.default||0}return i=_3.has(i)?i:dx(i),e.getAttribute(i)}scrapeMotionValuesFromProps(e,i,n){return b3(e,i,n)}build(e,i,n){v3(e,i,this.isSVGTag,n.transformTemplate,n.style)}renderInstance(e,i,n,r){UV(e,i,n,r)}mount(e){this.isSVGTag=y3(e.tagName),super.mount(e)}}const HV=_x.length;function S3(t){if(!t)return;if(!t.isControllingVariants){const i=t.parent?S3(t.parent)||{}:{};return t.props.initial!==void 0&&(i.initial=t.props.initial),i}const e={};for(let i=0;iPromise.all(e.map(({animation:i,options:n})=>YI(t,i,n)))}function JV(t){let e=KV(t),i=NT(),n=!0;const r=c=>(u,d)=>{var g;const p=qc(t,d,c==="exit"?(g=t.presenceContext)==null?void 0:g.custom:void 0);if(p){const{transition:O,transitionEnd:_,...b}=p;u={...u,...b,..._}}return u};function s(c){e=c(t)}function o(c){const{props:u}=t,d=S3(t.parent)||{},p=[],g=new Set;let O={},_=1/0;for(let x=0;x_&&A,q=!1;const J=Array.isArray(T)?T:[T];let U=J.reduce(r(w),{});Q===!1&&(U={});const{prevResolvedValues:R={}}=k,B={...R,...U},j=X=>{N=!0,g.has(X)&&(q=!0,g.delete(X)),k.needsAnimating[X]=!0;const H=t.getValue(X);H&&(H.liveStyle=!1)};for(const X in B){const H=U[X],F=R[X];if(O.hasOwnProperty(X))continue;let M=!1;M1(H)&&M1(F)?M=!x3(H,F):M=H!==F,M?H!=null?j(X):g.add(X):H!==void 0&&g.has(X)?j(X):k.protectedKeys[X]=!0}k.prevProp=T,k.prevResolvedValues=U,k.isActive&&(O={...O,...U}),n&&t.blockInitialAnimation&&(N=!1);const $=E&&z;N&&(!$||q)&&p.push(...J.map(X=>{const H={type:w};if(typeof X=="string"&&n&&!$&&t.manuallyAnimateOnMount&&t.parent){const{parent:F}=t,M=qc(F,X);if(F.enteringChildren&&M){const{delayChildren:I}=M.transition||{};H.delay=qL(F.enteringChildren,t,I)}}return{animation:X,options:H}}))}if(g.size){const x={};if(typeof u.initial!="boolean"){const w=qc(t,Array.isArray(u.initial)?u.initial[0]:u.initial);w&&w.transition&&(x.transition=w.transition)}g.forEach(w=>{const k=t.getBaseTarget(w),T=t.getValue(w);T&&(T.liveStyle=!0),x[w]=k??null}),p.push({animation:x})}let b=!!p.length;return n&&(u.initial===!1||u.initial===u.animate)&&!t.manuallyAnimateOnMount&&(b=!1),n=!1,b?e(p):Promise.resolve()}function l(c,u){var p;if(i[c].isActive===u)return Promise.resolve();(p=t.variantChildren)==null||p.forEach(g=>{var O;return(O=g.animationState)==null?void 0:O.setActive(c,u)}),i[c].isActive=u;const d=o(c);for(const g in i)i[g].protectedKeys={};return d}return{animateChanges:o,setActive:l,setAnimateFunction:s,getState:()=>i,reset:()=>{i=NT()}}}function eX(t,e){return typeof e=="string"?e!==t:Array.isArray(e)?!x3(e,t):!1}function Ja(t=!1){return{isActive:t,protectedKeys:{},needsAnimating:{},prevResolvedValues:{}}}function NT(){return{animate:Ja(!0),whileInView:Ja(),whileHover:Ja(),whileTap:Ja(),whileDrag:Ja(),whileFocus:Ja(),exit:Ja()}}function jT(t,e){t.min=e.min,t.max=e.max}function jr(t,e){jT(t.x,e.x),jT(t.y,e.y)}function IT(t,e){t.translate=e.translate,t.scale=e.scale,t.originPoint=e.originPoint,t.origin=e.origin}const w3=1e-4,tX=1-w3,iX=1+w3,C3=.01,nX=0-C3,rX=0+C3;function vn(t){return t.max-t.min}function sX(t,e,i){return Math.abs(t-e)<=i}function VT(t,e,i,n=.5){t.origin=n,t.originPoint=Nt(e.min,e.max,t.origin),t.scale=vn(i)/vn(e),t.translate=Nt(i.min,i.max,t.origin)-t.originPoint,(t.scale>=tX&&t.scale<=iX||isNaN(t.scale))&&(t.scale=1),(t.translate>=nX&&t.translate<=rX||isNaN(t.translate))&&(t.translate=0)}function hf(t,e,i,n){VT(t.x,e.x,i.x,n?n.originX:void 0),VT(t.y,e.y,i.y,n?n.originY:void 0)}function XT(t,e,i){t.min=i.min+e.min,t.max=t.min+vn(e)}function oX(t,e,i){XT(t.x,e.x,i.x),XT(t.y,e.y,i.y)}function ZT(t,e,i){t.min=e.min-i.min,t.max=t.min+vn(e)}function gg(t,e,i){ZT(t.x,e.x,i.x),ZT(t.y,e.y,i.y)}function qT(t,e,i,n,r){return t-=e,t=mg(t,1/i,n),r!==void 0&&(t=mg(t,1/r,n)),t}function aX(t,e=0,i=1,n=.5,r,s=t,o=t){if(ws.test(e)&&(e=parseFloat(e),e=Nt(o.min,o.max,e/100)-o.min),typeof e!="number")return;let l=Nt(s.min,s.max,n);t===s&&(l-=e),t.min=qT(t.min,e,i,l,r),t.max=qT(t.max,e,i,l,r)}function WT(t,e,[i,n,r],s,o){aX(t,e[i],e[n],e[r],e.scale,s,o)}const lX=["x","scaleX","originX"],cX=["y","scaleY","originY"];function UT(t,e,i,n){WT(t.x,e,lX,i?i.x:void 0,n?n.x:void 0),WT(t.y,e,cX,i?i.y:void 0,n?n.y:void 0)}function YT(t){return t.translate===0&&t.scale===1}function k3(t){return YT(t.x)&&YT(t.y)}function HT(t,e){return t.min===e.min&&t.max===e.max}function hX(t,e){return HT(t.x,e.x)&&HT(t.y,e.y)}function FT(t,e){return Math.round(t.min)===Math.round(e.min)&&Math.round(t.max)===Math.round(e.max)}function T3(t,e){return FT(t.x,e.x)&&FT(t.y,e.y)}function GT(t){return vn(t.x)/vn(t.y)}function KT(t,e){return t.translate===e.translate&&t.scale===e.scale&&t.originPoint===e.originPoint}function ds(t){return[t("x"),t("y")]}function uX(t,e,i){let n="";const r=t.x.translate/e.x,s=t.y.translate/e.y,o=(i==null?void 0:i.z)||0;if((r||s||o)&&(n=`translate3d(${r}px, ${s}px, ${o}px) `),(e.x!==1||e.y!==1)&&(n+=`scale(${1/e.x}, ${1/e.y}) `),i){const{transformPerspective:u,rotate:d,rotateX:p,rotateY:g,skewX:O,skewY:_}=i;u&&(n=`perspective(${u}px) ${n}`),d&&(n+=`rotate(${d}deg) `),p&&(n+=`rotateX(${p}deg) `),g&&(n+=`rotateY(${g}deg) `),O&&(n+=`skewX(${O}deg) `),_&&(n+=`skewY(${_}deg) `)}const l=t.x.scale*e.x,c=t.y.scale*e.y;return(l!==1||c!==1)&&(n+=`scale(${l}, ${c})`),n||"none"}const A3=["TopLeft","TopRight","BottomLeft","BottomRight"],fX=A3.length,JT=t=>typeof t=="string"?parseFloat(t):t,eA=t=>typeof t=="number"||Te.test(t);function dX(t,e,i,n,r,s){r?(t.opacity=Nt(0,i.opacity??1,pX(n)),t.opacityExit=Nt(e.opacity??1,0,mX(n))):s&&(t.opacity=Nt(e.opacity??1,i.opacity??1,n));for(let o=0;one?1:i(Cf(t,e,n))}function gX(t,e,i){const n=sn(t)?t:nh(t);return n.start(ux("",n,e,i)),n.animation}function Ef(t,e,i,n={passive:!0}){return t.addEventListener(e,i,n),()=>t.removeEventListener(e,i)}const OX=(t,e)=>t.depth-e.depth;class vX{constructor(){this.children=[],this.isDirty=!1}add(e){FS(this.children,e),this.isDirty=!0}remove(e){hg(this.children,e),this.isDirty=!0}forEach(e){this.isDirty&&this.children.sort(OX),this.isDirty=!1,this.children.forEach(e)}}function _X(t,e){const i=On.now(),n=({timestamp:r})=>{const s=r-i;s>=e&&(ba(n),t(s-e))};return Tt.setup(n,!0),()=>ba(n)}function Nm(t){return sn(t)?t.get():t}class yX{constructor(){this.members=[]}add(e){FS(this.members,e);for(let i=this.members.length-1;i>=0;i--){const n=this.members[i];if(n===e||n===this.lead||n===this.prevLead)continue;const r=n.instance;r&&r.isConnected===!1&&n.isPresent!==!1&&!n.snapshot&&hg(this.members,n)}e.scheduleRender()}remove(e){if(hg(this.members,e),e===this.prevLead&&(this.prevLead=void 0),e===this.lead){const i=this.members[this.members.length-1];i&&this.promote(i)}}relegate(e){const i=this.members.findIndex(r=>e===r);if(i===0)return!1;let n;for(let r=i;r>=0;r--){const s=this.members[r],o=s.instance;if(s.isPresent!==!1&&(!o||o.isConnected!==!1)){n=s;break}}return n?(this.promote(n),!0):!1}promote(e,i){const n=this.lead;if(e!==n&&(this.prevLead=n,this.lead=e,e.show(),n)){n.instance&&n.scheduleRender(),e.scheduleRender();const r=n.options.layoutDependency,s=e.options.layoutDependency;if(!(r!==void 0&&s!==void 0&&r===s)){const c=n.instance;c&&c.isConnected===!1&&!n.snapshot||(e.resumeFrom=n,i&&(e.resumeFrom.preserveOpacity=!0),n.snapshot&&(e.snapshot=n.snapshot,e.snapshot.latestValues=n.animationValues||n.latestValues),e.root&&e.root.isUpdating&&(e.isLayoutDirty=!0))}const{crossfade:l}=e.options;l===!1&&n.hide()}}exitAnimationComplete(){this.members.forEach(e=>{const{options:i,resumingFrom:n}=e;i.onExitComplete&&i.onExitComplete(),n&&n.options.onExitComplete&&n.options.onExitComplete()})}scheduleRender(){this.members.forEach(e=>{e.instance&&e.scheduleRender(!1)})}removeLeadSnapshot(){this.lead&&this.lead.snapshot&&(this.lead.snapshot=void 0)}}const jm={hasAnimatedSinceResize:!0,hasEverUpdated:!1},c_=["","X","Y","Z"],bX=1e3;let SX=0;function h_(t,e,i,n){const{latestValues:r}=e;r[t]&&(i[t]=r[t],e.setStaticValue(t,0),n&&(n[t]=0))}function M3(t){if(t.hasCheckedOptimisedAppear=!0,t.root===t)return;const{visualElement:e}=t.options;if(!e)return;const i=FL(e);if(window.MotionHasOptimisedAnimation(i,"transform")){const{layout:r,layoutId:s}=t.options;window.MotionCancelOptimisedAnimation(i,"transform",Tt,!(r||s))}const{parent:n}=t;n&&!n.hasCheckedOptimisedAppear&&M3(n)}function P3({attachResizeListener:t,defaultParent:e,measureScroll:i,checkIsScrollRoot:n,resetTransform:r}){return class{constructor(o={},l=e==null?void 0:e()){this.id=SX++,this.animationId=0,this.animationCommitId=0,this.children=new Set,this.options={},this.isTreeAnimating=!1,this.isAnimationBlocked=!1,this.isLayoutDirty=!1,this.isProjectionDirty=!1,this.isSharedProjectionDirty=!1,this.isTransformDirty=!1,this.updateManuallyBlocked=!1,this.updateBlockedByResize=!1,this.isUpdating=!1,this.isSVG=!1,this.needsReset=!1,this.shouldResetTransform=!1,this.hasCheckedOptimisedAppear=!1,this.treeScale={x:1,y:1},this.eventHandlers=new Map,this.hasTreeAnimated=!1,this.layoutVersion=0,this.updateScheduled=!1,this.scheduleUpdate=()=>this.update(),this.projectionUpdateScheduled=!1,this.checkUpdateFailed=()=>{this.isUpdating&&(this.isUpdating=!1,this.clearAllSnapshots())},this.updateProjection=()=>{this.projectionUpdateScheduled=!1,this.nodes.forEach(CX),this.nodes.forEach(EX),this.nodes.forEach(MX),this.nodes.forEach(kX)},this.resolvedRelativeTargetAt=0,this.linkedParentVersion=0,this.hasProjected=!1,this.isVisible=!0,this.animationProgress=0,this.sharedNodes=new Map,this.latestValues=o,this.root=l?l.root||l:this,this.path=l?[...l.path,l]:[],this.parent=l,this.depth=l?l.depth+1:0;for(let c=0;cthis.root.updateBlockedByResize=!1;Tt.read(()=>{p=window.innerWidth}),t(o,()=>{const O=window.innerWidth;O!==p&&(p=O,this.root.updateBlockedByResize=!0,d&&d(),d=_X(g,250),jm.hasAnimatedSinceResize&&(jm.hasAnimatedSinceResize=!1,this.nodes.forEach(rA)))})}l&&this.root.registerSharedNode(l,this),this.options.animate!==!1&&u&&(l||c)&&this.addEventListener("didUpdate",({delta:d,hasLayoutChanged:p,hasRelativeLayoutChanged:g,layout:O})=>{if(this.isTreeAnimationBlocked()){this.target=void 0,this.relativeTarget=void 0;return}const _=this.options.transition||u.getDefaultTransition()||DX,{onLayoutAnimationStart:b,onLayoutAnimationComplete:x}=u.getProps(),w=!this.targetLayout||!T3(this.targetLayout,O),k=!p&&g;if(this.options.layoutRoot||this.resumeFrom||k||p&&(w||!this.currentAnimation)){this.resumeFrom&&(this.resumingFrom=this.resumeFrom,this.resumingFrom.resumingFrom=void 0);const T={...hx(_,"layout"),onPlay:b,onComplete:x};(u.shouldReduceMotion||this.options.layoutRoot)&&(T.delay=0,T.type=!1),this.startAnimation(T),this.setAnimationOrigin(d,k)}else p||rA(this),this.isLead()&&this.options.onExitComplete&&this.options.onExitComplete();this.targetLayout=O})}unmount(){this.options.layoutId&&this.willUpdate(),this.root.nodes.remove(this);const o=this.getStack();o&&o.remove(this),this.parent&&this.parent.children.delete(this),this.instance=void 0,this.eventHandlers.clear(),ba(this.updateProjection)}blockUpdate(){this.updateManuallyBlocked=!0}unblockUpdate(){this.updateManuallyBlocked=!1}isUpdateBlocked(){return this.updateManuallyBlocked||this.updateBlockedByResize}isTreeAnimationBlocked(){return this.isAnimationBlocked||this.parent&&this.parent.isTreeAnimationBlocked()||!1}startUpdate(){this.isUpdateBlocked()||(this.isUpdating=!0,this.nodes&&this.nodes.forEach(PX),this.animationId++)}getTransformTemplate(){const{visualElement:o}=this.options;return o&&o.getProps().transformTemplate}willUpdate(o=!0){if(this.root.hasTreeAnimated=!0,this.root.isUpdateBlocked()){this.options.onExitComplete&&this.options.onExitComplete();return}if(window.MotionCancelOptimisedAnimation&&!this.hasCheckedOptimisedAppear&&M3(this),!this.root.isUpdating&&this.root.startUpdate(),this.isLayoutDirty)return;this.isLayoutDirty=!0;for(let d=0;d{this.isLayoutDirty?this.root.didUpdate():this.root.checkUpdateFailed()})}updateSnapshot(){this.snapshot||!this.instance||(this.snapshot=this.measure(),this.snapshot&&!vn(this.snapshot.measuredBox.x)&&!vn(this.snapshot.measuredBox.y)&&(this.snapshot=void 0))}updateLayout(){if(!this.instance||(this.updateScroll(),!(this.options.alwaysMeasureLayout&&this.isLead())&&!this.isLayoutDirty))return;if(this.resumeFrom&&!this.resumeFrom.instance)for(let c=0;c{const Q=A/1e3;sA(p.x,o.x,Q),sA(p.y,o.y,Q),this.setTargetDelta(p),this.relativeTarget&&this.relativeTargetOrigin&&this.layout&&this.relativeParent&&this.relativeParent.layout&&(gg(g,this.layout.layoutBox,this.relativeParent.layout.layoutBox),QX(this.relativeTarget,this.relativeTargetOrigin,g,Q),T&&hX(this.relativeTarget,T)&&(this.isProjectionDirty=!1),T||(T=Oi()),jr(T,this.relativeTarget)),b&&(this.animationValues=d,dX(d,u,this.latestValues,Q,k,w)),this.root.scheduleUpdateProjection(),this.scheduleRender(),this.animationProgress=Q},this.mixTargetDelta(this.options.layoutRoot?1e3:0)}startAnimation(o){var l,c,u;this.notifyListeners("animationStart"),(l=this.currentAnimation)==null||l.stop(),(u=(c=this.resumingFrom)==null?void 0:c.currentAnimation)==null||u.stop(),this.pendingAnimation&&(ba(this.pendingAnimation),this.pendingAnimation=void 0),this.pendingAnimation=Tt.update(()=>{jm.hasAnimatedSinceResize=!0,this.motionValue||(this.motionValue=nh(0)),this.motionValue.jump(0,!1),this.currentAnimation=gX(this.motionValue,[0,1e3],{...o,velocity:0,isSync:!0,onUpdate:d=>{this.mixTargetDelta(d),o.onUpdate&&o.onUpdate(d)},onStop:()=>{},onComplete:()=>{o.onComplete&&o.onComplete(),this.completeAnimation()}}),this.resumingFrom&&(this.resumingFrom.currentAnimation=this.currentAnimation),this.pendingAnimation=void 0})}completeAnimation(){this.resumingFrom&&(this.resumingFrom.currentAnimation=void 0,this.resumingFrom.preserveOpacity=void 0);const o=this.getStack();o&&o.exitAnimationComplete(),this.resumingFrom=this.currentAnimation=this.animationValues=void 0,this.notifyListeners("animationComplete")}finishAnimation(){this.currentAnimation&&(this.mixTargetDelta&&this.mixTargetDelta(bX),this.currentAnimation.stop()),this.completeAnimation()}applyTransformsToTarget(){const o=this.getLead();let{targetWithTransforms:l,target:c,layout:u,latestValues:d}=o;if(!(!l||!c||!u)){if(this!==o&&this.layout&&u&&R3(this.options.animationType,this.layout.layoutBox,u.layoutBox)){c=this.target||Oi();const p=vn(this.layout.layoutBox.x);c.x.min=o.target.x.min,c.x.max=c.x.min+p;const g=vn(this.layout.layoutBox.y);c.y.min=o.target.y.min,c.y.max=c.y.min+g}jr(l,c),zc(l,d),hf(this.projectionDeltaWithTransform,this.layoutCorrected,l,d)}}registerSharedNode(o,l){this.sharedNodes.has(o)||this.sharedNodes.set(o,new yX),this.sharedNodes.get(o).add(l);const u=l.options.initialPromotionConfig;l.promote({transition:u?u.transition:void 0,preserveFollowOpacity:u&&u.shouldPreserveFollowOpacity?u.shouldPreserveFollowOpacity(l):void 0})}isLead(){const o=this.getStack();return o?o.lead===this:!0}getLead(){var l;const{layoutId:o}=this.options;return o?((l=this.getStack())==null?void 0:l.lead)||this:this}getPrevLead(){var l;const{layoutId:o}=this.options;return o?(l=this.getStack())==null?void 0:l.prevLead:void 0}getStack(){const{layoutId:o}=this.options;if(o)return this.root.sharedNodes.get(o)}promote({needsReset:o,transition:l,preserveFollowOpacity:c}={}){const u=this.getStack();u&&u.promote(this,c),o&&(this.projectionDelta=void 0,this.needsReset=!0),l&&this.setOptions({transition:l})}relegate(){const o=this.getStack();return o?o.relegate(this):!1}resetSkewAndRotation(){const{visualElement:o}=this.options;if(!o)return;let l=!1;const{latestValues:c}=o;if((c.z||c.rotate||c.rotateX||c.rotateY||c.rotateZ||c.skewX||c.skewY)&&(l=!0),!l)return;const u={};c.z&&h_("z",o,u,this.animationValues);for(let d=0;d{var l;return(l=o.currentAnimation)==null?void 0:l.stop()}),this.root.nodes.forEach(iA),this.root.sharedNodes.clear()}}}function xX(t){t.updateLayout()}function wX(t){var i;const e=((i=t.resumeFrom)==null?void 0:i.snapshot)||t.snapshot;if(t.isLead()&&t.layout&&e&&t.hasListeners("didUpdate")){const{layoutBox:n,measuredBox:r}=t.layout,{animationType:s}=t.options,o=e.source!==t.layout.source;s==="size"?ds(p=>{const g=o?e.measuredBox[p]:e.layoutBox[p],O=vn(g);g.min=n[p].min,g.max=g.min+O}):R3(s,e.layoutBox,n)&&ds(p=>{const g=o?e.measuredBox[p]:e.layoutBox[p],O=vn(n[p]);g.max=g.min+O,t.relativeTarget&&!t.currentAnimation&&(t.isProjectionDirty=!0,t.relativeTarget[p].max=t.relativeTarget[p].min+O)});const l=Bc();hf(l,n,e.layoutBox);const c=Bc();o?hf(c,t.applyTransform(r,!0),e.measuredBox):hf(c,n,e.layoutBox);const u=!k3(l);let d=!1;if(!t.resumeFrom){const p=t.getClosestProjectingParent();if(p&&!p.resumeFrom){const{snapshot:g,layout:O}=p;if(g&&O){const _=Oi();gg(_,e.layoutBox,g.layoutBox);const b=Oi();gg(b,n,O.layoutBox),T3(_,b)||(d=!0),p.options.layoutRoot&&(t.relativeTarget=b,t.relativeTargetOrigin=_,t.relativeParent=p)}}}t.notifyListeners("didUpdate",{layout:n,snapshot:e,delta:c,layoutDelta:l,hasLayoutChanged:u,hasRelativeLayoutChanged:d})}else if(t.isLead()){const{onExitComplete:n}=t.options;n&&n()}t.options.transition=void 0}function CX(t){t.parent&&(t.isProjecting()||(t.isProjectionDirty=t.parent.isProjectionDirty),t.isSharedProjectionDirty||(t.isSharedProjectionDirty=!!(t.isProjectionDirty||t.parent.isProjectionDirty||t.parent.isSharedProjectionDirty)),t.isTransformDirty||(t.isTransformDirty=t.parent.isTransformDirty))}function kX(t){t.isProjectionDirty=t.isSharedProjectionDirty=t.isTransformDirty=!1}function TX(t){t.clearSnapshot()}function iA(t){t.clearMeasurements()}function nA(t){t.isLayoutDirty=!1}function AX(t){const{visualElement:e}=t.options;e&&e.getProps().onBeforeLayoutMeasure&&e.notify("BeforeLayoutMeasure"),t.resetTransform()}function rA(t){t.finishAnimation(),t.targetDelta=t.relativeTarget=t.target=void 0,t.isProjectionDirty=!0}function EX(t){t.resolveTargetDelta()}function MX(t){t.calcProjection()}function PX(t){t.resetSkewAndRotation()}function RX(t){t.removeLeadSnapshot()}function sA(t,e,i){t.translate=Nt(e.translate,0,i),t.scale=Nt(e.scale,1,i),t.origin=e.origin,t.originPoint=e.originPoint}function oA(t,e,i,n){t.min=Nt(e.min,i.min,n),t.max=Nt(e.max,i.max,n)}function QX(t,e,i,n){oA(t.x,e.x,i.x,n),oA(t.y,e.y,i.y,n)}function LX(t){return t.animationValues&&t.animationValues.opacityExit!==void 0}const DX={duration:.45,ease:[.4,0,.1,1]},aA=t=>typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().includes(t),lA=aA("applewebkit/")&&!aA("chrome/")?Math.round:Pr;function cA(t){t.min=lA(t.min),t.max=lA(t.max)}function BX(t){cA(t.x),cA(t.y)}function R3(t,e,i){return t==="position"||t==="preserve-aspect"&&!sX(GT(e),GT(i),.2)}function $X(t){var e;return t!==t.root&&((e=t.scroll)==null?void 0:e.wasRoot)}const zX=P3({attachResizeListener:(t,e)=>Ef(t,"resize",e),measureScroll:()=>{var t,e;return{x:document.documentElement.scrollLeft||((t=document.body)==null?void 0:t.scrollLeft)||0,y:document.documentElement.scrollTop||((e=document.body)==null?void 0:e.scrollTop)||0}},checkIsScrollRoot:()=>!0}),u_={current:void 0},Q3=P3({measureScroll:t=>({x:t.scrollLeft,y:t.scrollTop}),defaultParent:()=>{if(!u_.current){const t=new zX({});t.mount(window),t.setOptions({layoutScroll:!0}),u_.current=t}return u_.current},resetTransform:(t,e)=>{t.style.transform=e!==void 0?e:"none"},checkIsScrollRoot:t=>window.getComputedStyle(t).position==="fixed"}),Sx=Z.createContext({transformPagePoint:t=>t,isStatic:!1,reducedMotion:"never"});function hA(t,e){if(typeof t=="function")return t(e);t!=null&&(t.current=e)}function NX(...t){return e=>{let i=!1;const n=t.map(r=>{const s=hA(r,e);return!i&&typeof s=="function"&&(i=!0),s});if(i)return()=>{for(let r=0;r{const{width:O,height:_,top:b,left:x,right:w,bottom:k}=c.current;if(e||s===!1||!l.current||!O||!_)return;const T=i==="left"?`left: ${x}`:`right: ${w}`,A=n==="bottom"?`bottom: ${k}`:`top: ${b}`;l.current.dataset.motionPopId=o;const Q=document.createElement("style");u&&(Q.nonce=u);const E=r??document.head;return E.appendChild(Q),Q.sheet&&Q.sheet.insertRule(` +`+m.stack}}var $r=Object.prototype.hasOwnProperty,Eo=t.unstable_scheduleCallback,Mh=t.unstable_cancelCallback,LO=t.unstable_shouldYield,DO=t.unstable_requestPaint,cn=t.unstable_now,BO=t.unstable_getCurrentPriorityLevel,oe=t.unstable_ImmediatePriority,ge=t.unstable_UserBlockingPriority,De=t.unstable_NormalPriority,Ye=t.unstable_LowPriority,ht=t.unstable_IdlePriority,In=t.log,Nr=t.unstable_setDisableYieldValue,hn=null,fi=null;function Sn(a){if(typeof In=="function"&&Nr(a),fi&&typeof fi.setStrictMode=="function")try{fi.setStrictMode(hn,a)}catch{}}var _t=Math.clz32?Math.clz32:kz,Mo=Math.log,Bs=Math.LN2;function kz(a){return a>>>=0,a===0?32:31-(Mo(a)/Bs|0)|0}var Td=256,Ad=262144,Ed=4194304;function Ba(a){var h=a&42;if(h!==0)return h;switch(a&-a){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return a&261888;case 262144:case 524288:case 1048576:case 2097152:return a&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return a&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return a}}function Md(a,h,f){var m=a.pendingLanes;if(m===0)return 0;var v=0,y=a.suspendedLanes,C=a.pingedLanes;a=a.warmLanes;var P=m&134217727;return P!==0?(m=P&~y,m!==0?v=Ba(m):(C&=P,C!==0?v=Ba(C):f||(f=P&~a,f!==0&&(v=Ba(f))))):(P=m&~y,P!==0?v=Ba(P):C!==0?v=Ba(C):f||(f=m&~a,f!==0&&(v=Ba(f)))),v===0?0:h!==0&&h!==v&&(h&y)===0&&(y=v&-v,f=h&-h,y>=f||y===32&&(f&4194048)!==0)?h:v}function Ph(a,h){return(a.pendingLanes&~(a.suspendedLanes&~a.pingedLanes)&h)===0}function Tz(a,h){switch(a){case 1:case 2:case 4:case 8:case 64:return h+250;case 16:case 32:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return h+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function iC(){var a=Ed;return Ed<<=1,(Ed&62914560)===0&&(Ed=4194304),a}function $O(a){for(var h=[],f=0;31>f;f++)h.push(a);return h}function Rh(a,h){a.pendingLanes|=h,h!==268435456&&(a.suspendedLanes=0,a.pingedLanes=0,a.warmLanes=0)}function Az(a,h,f,m,v,y){var C=a.pendingLanes;a.pendingLanes=f,a.suspendedLanes=0,a.pingedLanes=0,a.warmLanes=0,a.expiredLanes&=f,a.entangledLanes&=f,a.errorRecoveryDisabledLanes&=f,a.shellSuspendCounter=0;var P=a.entanglements,W=a.expirationTimes,te=a.hiddenUpdates;for(f=C&~f;0"u")return null;try{return a.activeElement||a.body}catch{return a.body}}var Lz=/[\n"\\]/g;function cs(a){return a.replace(Lz,function(h){return"\\"+h.charCodeAt(0).toString(16)+" "})}function XO(a,h,f,m,v,y,C,P){a.name="",C!=null&&typeof C!="function"&&typeof C!="symbol"&&typeof C!="boolean"?a.type=C:a.removeAttribute("type"),h!=null?C==="number"?(h===0&&a.value===""||a.value!=h)&&(a.value=""+ls(h)):a.value!==""+ls(h)&&(a.value=""+ls(h)):C!=="submit"&&C!=="reset"||a.removeAttribute("value"),h!=null?ZO(a,C,ls(h)):f!=null?ZO(a,C,ls(f)):m!=null&&a.removeAttribute("value"),v==null&&y!=null&&(a.defaultChecked=!!y),v!=null&&(a.checked=v&&typeof v!="function"&&typeof v!="symbol"),P!=null&&typeof P!="function"&&typeof P!="symbol"&&typeof P!="boolean"?a.name=""+ls(P):a.removeAttribute("name")}function mC(a,h,f,m,v,y,C,P){if(y!=null&&typeof y!="function"&&typeof y!="symbol"&&typeof y!="boolean"&&(a.type=y),h!=null||f!=null){if(!(y!=="submit"&&y!=="reset"||h!=null)){VO(a);return}f=f!=null?""+ls(f):"",h=h!=null?""+ls(h):f,P||h===a.value||(a.value=h),a.defaultValue=h}m=m??v,m=typeof m!="function"&&typeof m!="symbol"&&!!m,a.checked=P?a.checked:!!m,a.defaultChecked=!!m,C!=null&&typeof C!="function"&&typeof C!="symbol"&&typeof C!="boolean"&&(a.name=C),VO(a)}function ZO(a,h,f){h==="number"&&Qd(a.ownerDocument)===a||a.defaultValue===""+f||(a.defaultValue=""+f)}function Zl(a,h,f,m){if(a=a.options,h){h={};for(var v=0;v"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),HO=!1;if(Ir)try{var Bh={};Object.defineProperty(Bh,"passive",{get:function(){HO=!0}}),window.addEventListener("test",Bh,Bh),window.removeEventListener("test",Bh,Bh)}catch{HO=!1}var Ro=null,FO=null,Dd=null;function SC(){if(Dd)return Dd;var a,h=FO,f=h.length,m,v="value"in Ro?Ro.value:Ro.textContent,y=v.length;for(a=0;a=zh),AC=" ",EC=!1;function MC(a,h){switch(a){case"keyup":return l8.indexOf(h.keyCode)!==-1;case"keydown":return h.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function PC(a){return a=a.detail,typeof a=="object"&&"data"in a?a.data:null}var Yl=!1;function h8(a,h){switch(a){case"compositionend":return PC(h);case"keypress":return h.which!==32?null:(EC=!0,AC);case"textInput":return a=h.data,a===AC&&EC?null:a;default:return null}}function u8(a,h){if(Yl)return a==="compositionend"||!t0&&MC(a,h)?(a=SC(),Dd=FO=Ro=null,Yl=!1,a):null;switch(a){case"paste":return null;case"keypress":if(!(h.ctrlKey||h.altKey||h.metaKey)||h.ctrlKey&&h.altKey){if(h.char&&1=h)return{node:f,offset:h-a};a=m}e:{for(;f;){if(f.nextSibling){f=f.nextSibling;break e}f=f.parentNode}f=void 0}f=zC(f)}}function IC(a,h){return a&&h?a===h?!0:a&&a.nodeType===3?!1:h&&h.nodeType===3?IC(a,h.parentNode):"contains"in a?a.contains(h):a.compareDocumentPosition?!!(a.compareDocumentPosition(h)&16):!1:!1}function VC(a){a=a!=null&&a.ownerDocument!=null&&a.ownerDocument.defaultView!=null?a.ownerDocument.defaultView:window;for(var h=Qd(a.document);h instanceof a.HTMLIFrameElement;){try{var f=typeof h.contentWindow.location.href=="string"}catch{f=!1}if(f)a=h.contentWindow;else break;h=Qd(a.document)}return h}function s0(a){var h=a&&a.nodeName&&a.nodeName.toLowerCase();return h&&(h==="input"&&(a.type==="text"||a.type==="search"||a.type==="tel"||a.type==="url"||a.type==="password")||h==="textarea"||a.contentEditable==="true")}var _8=Ir&&"documentMode"in document&&11>=document.documentMode,Hl=null,r0=null,Xh=null,o0=!1;function XC(a,h,f){var m=f.window===f?f.document:f.nodeType===9?f:f.ownerDocument;o0||Hl==null||Hl!==Qd(m)||(m=Hl,"selectionStart"in m&&s0(m)?m={start:m.selectionStart,end:m.selectionEnd}:(m=(m.ownerDocument&&m.ownerDocument.defaultView||window).getSelection(),m={anchorNode:m.anchorNode,anchorOffset:m.anchorOffset,focusNode:m.focusNode,focusOffset:m.focusOffset}),Xh&&Vh(Xh,m)||(Xh=m,m=Ap(r0,"onSelect"),0>=C,v-=C,er=1<<32-_t(h)+v|f<Ve?(Je=Ee,Ee=null):Je=Ee.sibling;var rt=ie(G,Ee,ee[Ve],ae);if(rt===null){Ee===null&&(Ee=Je);break}a&&Ee&&rt.alternate===null&&h(G,Ee),Y=y(rt,Y,Ve),st===null?Re=rt:st.sibling=rt,st=rt,Ee=Je}if(Ve===ee.length)return f(G,Ee),tt&&Xr(G,Ve),Re;if(Ee===null){for(;VeVe?(Je=Ee,Ee=null):Je=Ee.sibling;var ea=ie(G,Ee,rt.value,ae);if(ea===null){Ee===null&&(Ee=Je);break}a&&Ee&&ea.alternate===null&&h(G,Ee),Y=y(ea,Y,Ve),st===null?Re=ea:st.sibling=ea,st=ea,Ee=Je}if(rt.done)return f(G,Ee),tt&&Xr(G,Ve),Re;if(Ee===null){for(;!rt.done;Ve++,rt=ee.next())rt=le(G,rt.value,ae),rt!==null&&(Y=y(rt,Y,Ve),st===null?Re=rt:st.sibling=rt,st=rt);return tt&&Xr(G,Ve),Re}for(Ee=m(Ee);!rt.done;Ve++,rt=ee.next())rt=ne(Ee,G,Ve,rt.value,ae),rt!==null&&(a&&rt.alternate!==null&&Ee.delete(rt.key===null?Ve:rt.key),Y=y(rt,Y,Ve),st===null?Re=rt:st.sibling=rt,st=rt);return a&&Ee.forEach(function(zj){return h(G,zj)}),tt&&Xr(G,Ve),Re}function gt(G,Y,ee,ae){if(typeof ee=="object"&&ee!==null&&ee.type===b&&ee.key===null&&(ee=ee.props.children),typeof ee=="object"&&ee!==null){switch(ee.$$typeof){case O:e:{for(var Re=ee.key;Y!==null;){if(Y.key===Re){if(Re=ee.type,Re===b){if(Y.tag===7){f(G,Y.sibling),ae=v(Y,ee.props.children),ae.return=G,G=ae;break e}}else if(Y.elementType===Re||typeof Re=="object"&&Re!==null&&Re.$$typeof===z&&Ua(Re)===Y.type){f(G,Y.sibling),ae=v(Y,ee.props),Hh(ae,ee),ae.return=G,G=ae;break e}f(G,Y);break}else h(G,Y);Y=Y.sibling}ee.type===b?(ae=Va(ee.props.children,G.mode,ae,ee.key),ae.return=G,G=ae):(ae=qd(ee.type,ee.key,ee.props,null,G.mode,ae),Hh(ae,ee),ae.return=G,G=ae)}return C(G);case _:e:{for(Re=ee.key;Y!==null;){if(Y.key===Re)if(Y.tag===4&&Y.stateNode.containerInfo===ee.containerInfo&&Y.stateNode.implementation===ee.implementation){f(G,Y.sibling),ae=v(Y,ee.children||[]),ae.return=G,G=ae;break e}else{f(G,Y);break}else h(G,Y);Y=Y.sibling}ae=d0(ee,G.mode,ae),ae.return=G,G=ae}return C(G);case z:return ee=Ua(ee),gt(G,Y,ee,ae)}if($(ee))return we(G,Y,ee,ae);if(R(ee)){if(Re=R(ee),typeof Re!="function")throw Error(n(150));return ee=Re.call(ee),Qe(G,Y,ee,ae)}if(typeof ee.then=="function")return gt(G,Y,Kd(ee),ae);if(ee.$$typeof===T)return gt(G,Y,Yd(G,ee),ae);Jd(G,ee)}return typeof ee=="string"&&ee!==""||typeof ee=="number"||typeof ee=="bigint"?(ee=""+ee,Y!==null&&Y.tag===6?(f(G,Y.sibling),ae=v(Y,ee),ae.return=G,G=ae):(f(G,Y),ae=f0(ee,G.mode,ae),ae.return=G,G=ae),C(G)):f(G,Y)}return function(G,Y,ee,ae){try{Yh=0;var Re=gt(G,Y,ee,ae);return oc=null,Re}catch(Ee){if(Ee===rc||Ee===Fd)throw Ee;var st=Xn(29,Ee,null,G.mode);return st.lanes=ae,st.return=G,st}finally{}}}var Ha=fk(!0),dk=fk(!1),$o=!1;function C0(a){a.updateQueue={baseState:a.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function k0(a,h){a=a.updateQueue,h.updateQueue===a&&(h.updateQueue={baseState:a.baseState,firstBaseUpdate:a.firstBaseUpdate,lastBaseUpdate:a.lastBaseUpdate,shared:a.shared,callbacks:null})}function No(a){return{lane:a,tag:0,payload:null,callback:null,next:null}}function zo(a,h,f){var m=a.updateQueue;if(m===null)return null;if(m=m.shared,(ot&2)!==0){var v=m.pending;return v===null?h.next=h:(h.next=v.next,v.next=h),m.pending=h,h=Zd(a),FC(a,null,f),h}return Xd(a,m,h,f),Zd(a)}function Fh(a,h,f){if(h=h.updateQueue,h!==null&&(h=h.shared,(f&4194048)!==0)){var m=h.lanes;m&=a.pendingLanes,f|=m,h.lanes=f,sC(a,f)}}function T0(a,h){var f=a.updateQueue,m=a.alternate;if(m!==null&&(m=m.updateQueue,f===m)){var v=null,y=null;if(f=f.firstBaseUpdate,f!==null){do{var C={lane:f.lane,tag:f.tag,payload:f.payload,callback:null,next:null};y===null?v=y=C:y=y.next=C,f=f.next}while(f!==null);y===null?v=y=h:y=y.next=h}else v=y=h;f={baseState:m.baseState,firstBaseUpdate:v,lastBaseUpdate:y,shared:m.shared,callbacks:m.callbacks},a.updateQueue=f;return}a=f.lastBaseUpdate,a===null?f.firstBaseUpdate=h:a.next=h,f.lastBaseUpdate=h}var A0=!1;function Gh(){if(A0){var a=sc;if(a!==null)throw a}}function Kh(a,h,f,m){A0=!1;var v=a.updateQueue;$o=!1;var y=v.firstBaseUpdate,C=v.lastBaseUpdate,P=v.shared.pending;if(P!==null){v.shared.pending=null;var W=P,te=W.next;W.next=null,C===null?y=te:C.next=te,C=W;var se=a.alternate;se!==null&&(se=se.updateQueue,P=se.lastBaseUpdate,P!==C&&(P===null?se.firstBaseUpdate=te:P.next=te,se.lastBaseUpdate=W))}if(y!==null){var le=v.baseState;C=0,se=te=W=null,P=y;do{var ie=P.lane&-536870913,ne=ie!==P.lane;if(ne?(Ke&ie)===ie:(m&ie)===ie){ie!==0&&ie===nc&&(A0=!0),se!==null&&(se=se.next={lane:0,tag:P.tag,payload:P.payload,callback:null,next:null});e:{var we=a,Qe=P;ie=h;var gt=f;switch(Qe.tag){case 1:if(we=Qe.payload,typeof we=="function"){le=we.call(gt,le,ie);break e}le=we;break e;case 3:we.flags=we.flags&-65537|128;case 0:if(we=Qe.payload,ie=typeof we=="function"?we.call(gt,le,ie):we,ie==null)break e;le=p({},le,ie);break e;case 2:$o=!0}}ie=P.callback,ie!==null&&(a.flags|=64,ne&&(a.flags|=8192),ne=v.callbacks,ne===null?v.callbacks=[ie]:ne.push(ie))}else ne={lane:ie,tag:P.tag,payload:P.payload,callback:P.callback,next:null},se===null?(te=se=ne,W=le):se=se.next=ne,C|=ie;if(P=P.next,P===null){if(P=v.shared.pending,P===null)break;ne=P,P=ne.next,ne.next=null,v.lastBaseUpdate=ne,v.shared.pending=null}}while(!0);se===null&&(W=le),v.baseState=W,v.firstBaseUpdate=te,v.lastBaseUpdate=se,y===null&&(v.shared.lanes=0),Zo|=C,a.lanes=C,a.memoizedState=le}}function pk(a,h){if(typeof a!="function")throw Error(n(191,a));a.call(h)}function mk(a,h){var f=a.callbacks;if(f!==null)for(a.callbacks=null,a=0;ay?y:8;var C=D.T,P={};D.T=P,U0(a,!1,h,f);try{var W=v(),te=D.S;if(te!==null&&te(P,W),W!==null&&typeof W=="object"&&typeof W.then=="function"){var se=A8(W,m);tu(a,h,se,Yn(a))}else tu(a,h,m,Yn(a))}catch(le){tu(a,h,{then:function(){},status:"rejected",reason:le},Yn())}finally{Z.p=y,C!==null&&P.types!==null&&(C.types=P.types),D.T=C}}function L8(){}function q0(a,h,f,m){if(a.tag!==5)throw Error(n(476));var v=Uk(a).queue;Wk(a,v,h,H,f===null?L8:function(){return Yk(a),f(m)})}function Uk(a){var h=a.memoizedState;if(h!==null)return h;h={memoizedState:H,baseState:H,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Ur,lastRenderedState:H},next:null};var f={};return h.next={memoizedState:f,baseState:f,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Ur,lastRenderedState:f},next:null},a.memoizedState=h,a=a.alternate,a!==null&&(a.memoizedState=h),h}function Yk(a){var h=Uk(a);h.next===null&&(h=a.alternate.memoizedState),tu(a,h.next.queue,{},Yn())}function W0(){return ji(vu)}function Hk(){return Ft().memoizedState}function Fk(){return Ft().memoizedState}function D8(a){for(var h=a.return;h!==null;){switch(h.tag){case 24:case 3:var f=Yn();a=No(f);var m=zo(h,a,f);m!==null&&(En(m,h,f),Fh(m,h,f)),h={cache:b0()},a.payload=h;return}h=h.return}}function B8(a,h,f){var m=Yn();f={lane:m,revertLane:0,gesture:null,action:f,hasEagerState:!1,eagerState:null,next:null},cp(a)?Kk(h,f):(f=h0(a,h,f,m),f!==null&&(En(f,a,m),Jk(f,h,m)))}function Gk(a,h,f){var m=Yn();tu(a,h,f,m)}function tu(a,h,f,m){var v={lane:m,revertLane:0,gesture:null,action:f,hasEagerState:!1,eagerState:null,next:null};if(cp(a))Kk(h,v);else{var y=a.alternate;if(a.lanes===0&&(y===null||y.lanes===0)&&(y=h.lastRenderedReducer,y!==null))try{var C=h.lastRenderedState,P=y(C,f);if(v.hasEagerState=!0,v.eagerState=P,Vn(P,C))return Xd(a,h,v,0),yt===null&&Vd(),!1}catch{}finally{}if(f=h0(a,h,v,m),f!==null)return En(f,a,m),Jk(f,h,m),!0}return!1}function U0(a,h,f,m){if(m={lane:2,revertLane:Cv(),gesture:null,action:m,hasEagerState:!1,eagerState:null,next:null},cp(a)){if(h)throw Error(n(479))}else h=h0(a,f,m,2),h!==null&&En(h,a,2)}function cp(a){var h=a.alternate;return a===Ie||h!==null&&h===Ie}function Kk(a,h){lc=ip=!0;var f=a.pending;f===null?h.next=h:(h.next=f.next,f.next=h),a.pending=h}function Jk(a,h,f){if((f&4194048)!==0){var m=h.lanes;m&=a.pendingLanes,f|=m,h.lanes=f,sC(a,f)}}var iu={readContext:ji,use:rp,useCallback:jt,useContext:jt,useEffect:jt,useImperativeHandle:jt,useLayoutEffect:jt,useInsertionEffect:jt,useMemo:jt,useReducer:jt,useRef:jt,useState:jt,useDebugValue:jt,useDeferredValue:jt,useTransition:jt,useSyncExternalStore:jt,useId:jt,useHostTransitionStatus:jt,useFormState:jt,useActionState:jt,useOptimistic:jt,useMemoCache:jt,useCacheRefresh:jt};iu.useEffectEvent=jt;var e2={readContext:ji,use:rp,useCallback:function(a,h){return un().memoizedState=[a,h===void 0?null:h],a},useContext:ji,useEffect:$k,useImperativeHandle:function(a,h,f){f=f!=null?f.concat([a]):null,ap(4194308,4,Ik.bind(null,h,a),f)},useLayoutEffect:function(a,h){return ap(4194308,4,a,h)},useInsertionEffect:function(a,h){ap(4,2,a,h)},useMemo:function(a,h){var f=un();h=h===void 0?null:h;var m=a();if(Fa){Sn(!0);try{a()}finally{Sn(!1)}}return f.memoizedState=[m,h],m},useReducer:function(a,h,f){var m=un();if(f!==void 0){var v=f(h);if(Fa){Sn(!0);try{f(h)}finally{Sn(!1)}}}else v=h;return m.memoizedState=m.baseState=v,a={pending:null,lanes:0,dispatch:null,lastRenderedReducer:a,lastRenderedState:v},m.queue=a,a=a.dispatch=B8.bind(null,Ie,a),[m.memoizedState,a]},useRef:function(a){var h=un();return a={current:a},h.memoizedState=a},useState:function(a){a=j0(a);var h=a.queue,f=Gk.bind(null,Ie,h);return h.dispatch=f,[a.memoizedState,f]},useDebugValue:X0,useDeferredValue:function(a,h){var f=un();return Z0(f,a,h)},useTransition:function(){var a=j0(!1);return a=Wk.bind(null,Ie,a.queue,!0,!1),un().memoizedState=a,[!1,a]},useSyncExternalStore:function(a,h,f){var m=Ie,v=un();if(tt){if(f===void 0)throw Error(n(407));f=f()}else{if(f=h(),yt===null)throw Error(n(349));(Ke&127)!==0||bk(m,h,f)}v.memoizedState=f;var y={value:f,getSnapshot:h};return v.queue=y,$k(xk.bind(null,m,y,a),[a]),m.flags|=2048,hc(9,{destroy:void 0},Sk.bind(null,m,y,f,h),null),f},useId:function(){var a=un(),h=yt.identifierPrefix;if(tt){var f=tr,m=er;f=(m&~(1<<32-_t(m)-1)).toString(32)+f,h="_"+h+"R_"+f,f=np++,0<\/script>",y=y.removeChild(y.firstChild);break;case"select":y=typeof m.is=="string"?C.createElement("select",{is:m.is}):C.createElement("select"),m.multiple?y.multiple=!0:m.size&&(y.size=m.size);break;default:y=typeof m.is=="string"?C.createElement(v,{is:m.is}):C.createElement(v)}}y[Ni]=h,y[xn]=m;e:for(C=h.child;C!==null;){if(C.tag===5||C.tag===6)y.appendChild(C.stateNode);else if(C.tag!==4&&C.tag!==27&&C.child!==null){C.child.return=C,C=C.child;continue}if(C===h)break e;for(;C.sibling===null;){if(C.return===null||C.return===h)break e;C=C.return}C.sibling.return=C.return,C=C.sibling}h.stateNode=y;e:switch(Vi(y,v,m),v){case"button":case"input":case"select":case"textarea":m=!!m.autoFocus;break e;case"img":m=!0;break e;default:m=!1}m&&Hr(h)}}return Et(h),av(h,h.type,a===null?null:a.memoizedProps,h.pendingProps,f),null;case 6:if(a&&h.stateNode!=null)a.memoizedProps!==m&&Hr(h);else{if(typeof m!="string"&&h.stateNode===null)throw Error(n(166));if(a=fe.current,tc(h)){if(a=h.stateNode,f=h.memoizedProps,m=null,v=zi,v!==null)switch(v.tag){case 27:case 5:m=v.memoizedProps}a[Ni]=h,a=!!(a.nodeValue===f||m!==null&&m.suppressHydrationWarning===!0||_5(a.nodeValue,f)),a||Do(h,!0)}else a=Ep(a).createTextNode(m),a[Ni]=h,h.stateNode=a}return Et(h),null;case 31:if(f=h.memoizedState,a===null||a.memoizedState!==null){if(m=tc(h),f!==null){if(a===null){if(!m)throw Error(n(318));if(a=h.memoizedState,a=a!==null?a.dehydrated:null,!a)throw Error(n(557));a[Ni]=h}else Xa(),(h.flags&128)===0&&(h.memoizedState=null),h.flags|=4;Et(h),a=!1}else f=O0(),a!==null&&a.memoizedState!==null&&(a.memoizedState.hydrationErrors=f),a=!0;if(!a)return h.flags&256?(qn(h),h):(qn(h),null);if((h.flags&128)!==0)throw Error(n(558))}return Et(h),null;case 13:if(m=h.memoizedState,a===null||a.memoizedState!==null&&a.memoizedState.dehydrated!==null){if(v=tc(h),m!==null&&m.dehydrated!==null){if(a===null){if(!v)throw Error(n(318));if(v=h.memoizedState,v=v!==null?v.dehydrated:null,!v)throw Error(n(317));v[Ni]=h}else Xa(),(h.flags&128)===0&&(h.memoizedState=null),h.flags|=4;Et(h),v=!1}else v=O0(),a!==null&&a.memoizedState!==null&&(a.memoizedState.hydrationErrors=v),v=!0;if(!v)return h.flags&256?(qn(h),h):(qn(h),null)}return qn(h),(h.flags&128)!==0?(h.lanes=f,h):(f=m!==null,a=a!==null&&a.memoizedState!==null,f&&(m=h.child,v=null,m.alternate!==null&&m.alternate.memoizedState!==null&&m.alternate.memoizedState.cachePool!==null&&(v=m.alternate.memoizedState.cachePool.pool),y=null,m.memoizedState!==null&&m.memoizedState.cachePool!==null&&(y=m.memoizedState.cachePool.pool),y!==v&&(m.flags|=2048)),f!==a&&f&&(h.child.flags|=8192),pp(h,h.updateQueue),Et(h),null);case 4:return ye(),a===null&&Ev(h.stateNode.containerInfo),Et(h),null;case 10:return qr(h.type),Et(h),null;case 19:if(K(Ht),m=h.memoizedState,m===null)return Et(h),null;if(v=(h.flags&128)!==0,y=m.rendering,y===null)if(v)su(m,!1);else{if(It!==0||a!==null&&(a.flags&128)!==0)for(a=h.child;a!==null;){if(y=tp(a),y!==null){for(h.flags|=128,su(m,!1),a=y.updateQueue,h.updateQueue=a,pp(h,a),h.subtreeFlags=0,a=f,f=h.child;f!==null;)GC(f,a),f=f.sibling;return L(Ht,Ht.current&1|2),tt&&Xr(h,m.treeForkCount),h.child}a=a.sibling}m.tail!==null&&cn()>_p&&(h.flags|=128,v=!0,su(m,!1),h.lanes=4194304)}else{if(!v)if(a=tp(y),a!==null){if(h.flags|=128,v=!0,a=a.updateQueue,h.updateQueue=a,pp(h,a),su(m,!0),m.tail===null&&m.tailMode==="hidden"&&!y.alternate&&!tt)return Et(h),null}else 2*cn()-m.renderingStartTime>_p&&f!==536870912&&(h.flags|=128,v=!0,su(m,!1),h.lanes=4194304);m.isBackwards?(y.sibling=h.child,h.child=y):(a=m.last,a!==null?a.sibling=y:h.child=y,m.last=y)}return m.tail!==null?(a=m.tail,m.rendering=a,m.tail=a.sibling,m.renderingStartTime=cn(),a.sibling=null,f=Ht.current,L(Ht,v?f&1|2:f&1),tt&&Xr(h,m.treeForkCount),a):(Et(h),null);case 22:case 23:return qn(h),M0(),m=h.memoizedState!==null,a!==null?a.memoizedState!==null!==m&&(h.flags|=8192):m&&(h.flags|=8192),m?(f&536870912)!==0&&(h.flags&128)===0&&(Et(h),h.subtreeFlags&6&&(h.flags|=8192)):Et(h),f=h.updateQueue,f!==null&&pp(h,f.retryQueue),f=null,a!==null&&a.memoizedState!==null&&a.memoizedState.cachePool!==null&&(f=a.memoizedState.cachePool.pool),m=null,h.memoizedState!==null&&h.memoizedState.cachePool!==null&&(m=h.memoizedState.cachePool.pool),m!==f&&(h.flags|=2048),a!==null&&K(Wa),null;case 24:return f=null,a!==null&&(f=a.memoizedState.cache),h.memoizedState.cache!==f&&(h.flags|=2048),qr(ti),Et(h),null;case 25:return null;case 30:return null}throw Error(n(156,h.tag))}function I8(a,h){switch(m0(h),h.tag){case 1:return a=h.flags,a&65536?(h.flags=a&-65537|128,h):null;case 3:return qr(ti),ye(),a=h.flags,(a&65536)!==0&&(a&128)===0?(h.flags=a&-65537|128,h):null;case 26:case 27:case 5:return Qt(h),null;case 31:if(h.memoizedState!==null){if(qn(h),h.alternate===null)throw Error(n(340));Xa()}return a=h.flags,a&65536?(h.flags=a&-65537|128,h):null;case 13:if(qn(h),a=h.memoizedState,a!==null&&a.dehydrated!==null){if(h.alternate===null)throw Error(n(340));Xa()}return a=h.flags,a&65536?(h.flags=a&-65537|128,h):null;case 19:return K(Ht),null;case 4:return ye(),null;case 10:return qr(h.type),null;case 22:case 23:return qn(h),M0(),a!==null&&K(Wa),a=h.flags,a&65536?(h.flags=a&-65537|128,h):null;case 24:return qr(ti),null;case 25:return null;default:return null}}function w2(a,h){switch(m0(h),h.tag){case 3:qr(ti),ye();break;case 26:case 27:case 5:Qt(h);break;case 4:ye();break;case 31:h.memoizedState!==null&&qn(h);break;case 13:qn(h);break;case 19:K(Ht);break;case 10:qr(h.type);break;case 22:case 23:qn(h),M0(),a!==null&&K(Wa);break;case 24:qr(ti)}}function ru(a,h){try{var f=h.updateQueue,m=f!==null?f.lastEffect:null;if(m!==null){var v=m.next;f=v;do{if((f.tag&a)===a){m=void 0;var y=f.create,C=f.inst;m=y(),C.destroy=m}f=f.next}while(f!==v)}}catch(P){dt(h,h.return,P)}}function Vo(a,h,f){try{var m=h.updateQueue,v=m!==null?m.lastEffect:null;if(v!==null){var y=v.next;m=y;do{if((m.tag&a)===a){var C=m.inst,P=C.destroy;if(P!==void 0){C.destroy=void 0,v=h;var W=f,te=P;try{te()}catch(se){dt(v,W,se)}}}m=m.next}while(m!==y)}}catch(se){dt(h,h.return,se)}}function C2(a){var h=a.updateQueue;if(h!==null){var f=a.stateNode;try{mk(h,f)}catch(m){dt(a,a.return,m)}}}function k2(a,h,f){f.props=Ga(a.type,a.memoizedProps),f.state=a.memoizedState;try{f.componentWillUnmount()}catch(m){dt(a,h,m)}}function ou(a,h){try{var f=a.ref;if(f!==null){switch(a.tag){case 26:case 27:case 5:var m=a.stateNode;break;case 30:m=a.stateNode;break;default:m=a.stateNode}typeof f=="function"?a.refCleanup=f(m):f.current=m}}catch(v){dt(a,h,v)}}function ir(a,h){var f=a.ref,m=a.refCleanup;if(f!==null)if(typeof m=="function")try{m()}catch(v){dt(a,h,v)}finally{a.refCleanup=null,a=a.alternate,a!=null&&(a.refCleanup=null)}else if(typeof f=="function")try{f(null)}catch(v){dt(a,h,v)}else f.current=null}function T2(a){var h=a.type,f=a.memoizedProps,m=a.stateNode;try{e:switch(h){case"button":case"input":case"select":case"textarea":f.autoFocus&&m.focus();break e;case"img":f.src?m.src=f.src:f.srcSet&&(m.srcset=f.srcSet)}}catch(v){dt(a,a.return,v)}}function lv(a,h,f){try{var m=a.stateNode;cj(m,a.type,f,h),m[xn]=h}catch(v){dt(a,a.return,v)}}function A2(a){return a.tag===5||a.tag===3||a.tag===26||a.tag===27&&Ho(a.type)||a.tag===4}function cv(a){e:for(;;){for(;a.sibling===null;){if(a.return===null||A2(a.return))return null;a=a.return}for(a.sibling.return=a.return,a=a.sibling;a.tag!==5&&a.tag!==6&&a.tag!==18;){if(a.tag===27&&Ho(a.type)||a.flags&2||a.child===null||a.tag===4)continue e;a.child.return=a,a=a.child}if(!(a.flags&2))return a.stateNode}}function hv(a,h,f){var m=a.tag;if(m===5||m===6)a=a.stateNode,h?(f.nodeType===9?f.body:f.nodeName==="HTML"?f.ownerDocument.body:f).insertBefore(a,h):(h=f.nodeType===9?f.body:f.nodeName==="HTML"?f.ownerDocument.body:f,h.appendChild(a),f=f._reactRootContainer,f!=null||h.onclick!==null||(h.onclick=jr));else if(m!==4&&(m===27&&Ho(a.type)&&(f=a.stateNode,h=null),a=a.child,a!==null))for(hv(a,h,f),a=a.sibling;a!==null;)hv(a,h,f),a=a.sibling}function mp(a,h,f){var m=a.tag;if(m===5||m===6)a=a.stateNode,h?f.insertBefore(a,h):f.appendChild(a);else if(m!==4&&(m===27&&Ho(a.type)&&(f=a.stateNode),a=a.child,a!==null))for(mp(a,h,f),a=a.sibling;a!==null;)mp(a,h,f),a=a.sibling}function E2(a){var h=a.stateNode,f=a.memoizedProps;try{for(var m=a.type,v=h.attributes;v.length;)h.removeAttributeNode(v[0]);Vi(h,m,f),h[Ni]=a,h[xn]=f}catch(y){dt(a,a.return,y)}}var Fr=!1,si=!1,uv=!1,M2=typeof WeakSet=="function"?WeakSet:Set,Si=null;function V8(a,h){if(a=a.containerInfo,Rv=Bp,a=VC(a),s0(a)){if("selectionStart"in a)var f={start:a.selectionStart,end:a.selectionEnd};else e:{f=(f=a.ownerDocument)&&f.defaultView||window;var m=f.getSelection&&f.getSelection();if(m&&m.rangeCount!==0){f=m.anchorNode;var v=m.anchorOffset,y=m.focusNode;m=m.focusOffset;try{f.nodeType,y.nodeType}catch{f=null;break e}var C=0,P=-1,W=-1,te=0,se=0,le=a,ie=null;t:for(;;){for(var ne;le!==f||v!==0&&le.nodeType!==3||(P=C+v),le!==y||m!==0&&le.nodeType!==3||(W=C+m),le.nodeType===3&&(C+=le.nodeValue.length),(ne=le.firstChild)!==null;)ie=le,le=ne;for(;;){if(le===a)break t;if(ie===f&&++te===v&&(P=C),ie===y&&++se===m&&(W=C),(ne=le.nextSibling)!==null)break;le=ie,ie=le.parentNode}le=ne}f=P===-1||W===-1?null:{start:P,end:W}}else f=null}f=f||{start:0,end:0}}else f=null;for(Qv={focusedElem:a,selectionRange:f},Bp=!1,Si=h;Si!==null;)if(h=Si,a=h.child,(h.subtreeFlags&1028)!==0&&a!==null)a.return=h,Si=a;else for(;Si!==null;){switch(h=Si,y=h.alternate,a=h.flags,h.tag){case 0:if((a&4)!==0&&(a=h.updateQueue,a=a!==null?a.events:null,a!==null))for(f=0;f title"))),Vi(y,m,f),y[Ni]=a,bi(y),m=y;break e;case"link":var C=B5("link","href",v).get(m+(f.href||""));if(C){for(var P=0;Pgt&&(C=gt,gt=Qe,Qe=C);var G=jC(P,Qe),Y=jC(P,gt);if(G&&Y&&(ne.rangeCount!==1||ne.anchorNode!==G.node||ne.anchorOffset!==G.offset||ne.focusNode!==Y.node||ne.focusOffset!==Y.offset)){var ee=le.createRange();ee.setStart(G.node,G.offset),ne.removeAllRanges(),Qe>gt?(ne.addRange(ee),ne.extend(Y.node,Y.offset)):(ee.setEnd(Y.node,Y.offset),ne.addRange(ee))}}}}for(le=[],ne=P;ne=ne.parentNode;)ne.nodeType===1&&le.push({element:ne,left:ne.scrollLeft,top:ne.scrollTop});for(typeof P.focus=="function"&&P.focus(),P=0;Pf?32:f,D.T=null,f=vv,vv=null;var y=Wo,C=to;if(di=0,mc=Wo=null,to=0,(ot&6)!==0)throw Error(n(331));var P=ot;if(ot|=4,I2(y.current),N2(y,y.current,C,f),ot=P,fu(0,!1),fi&&typeof fi.onPostCommitFiberRoot=="function")try{fi.onPostCommitFiberRoot(hn,y)}catch{}return!0}finally{Z.p=v,D.T=m,r5(a,h)}}function a5(a,h,f){h=us(f,h),h=G0(a.stateNode,h,2),a=zo(a,h,2),a!==null&&(Rh(a,2),nr(a))}function dt(a,h,f){if(a.tag===3)a5(a,a,f);else for(;h!==null;){if(h.tag===3){a5(h,a,f);break}else if(h.tag===1){var m=h.stateNode;if(typeof h.type.getDerivedStateFromError=="function"||typeof m.componentDidCatch=="function"&&(qo===null||!qo.has(m))){a=us(f,a),f=l2(2),m=zo(h,f,2),m!==null&&(c2(f,m,h,a),Rh(m,2),nr(m));break}}h=h.return}}function Sv(a,h,f){var m=a.pingCache;if(m===null){m=a.pingCache=new q8;var v=new Set;m.set(h,v)}else v=m.get(h),v===void 0&&(v=new Set,m.set(h,v));v.has(f)||(pv=!0,v.add(f),a=F8.bind(null,a,h,f),h.then(a,a))}function F8(a,h,f){var m=a.pingCache;m!==null&&m.delete(h),a.pingedLanes|=a.suspendedLanes&f,a.warmLanes&=~f,yt===a&&(Ke&f)===f&&(It===4||It===3&&(Ke&62914560)===Ke&&300>cn()-vp?(ot&2)===0&&gc(a,0):mv|=f,pc===Ke&&(pc=0)),nr(a)}function l5(a,h){h===0&&(h=iC()),a=Ia(a,h),a!==null&&(Rh(a,h),nr(a))}function G8(a){var h=a.memoizedState,f=0;h!==null&&(f=h.retryLane),l5(a,f)}function K8(a,h){var f=0;switch(a.tag){case 31:case 13:var m=a.stateNode,v=a.memoizedState;v!==null&&(f=v.retryLane);break;case 19:m=a.stateNode;break;case 22:m=a.stateNode._retryCache;break;default:throw Error(n(314))}m!==null&&m.delete(h),l5(a,f)}function J8(a,h){return Eo(a,h)}var Cp=null,vc=null,xv=!1,kp=!1,wv=!1,Yo=0;function nr(a){a!==vc&&a.next===null&&(vc===null?Cp=vc=a:vc=vc.next=a),kp=!0,xv||(xv=!0,tj())}function fu(a,h){if(!wv&&kp){wv=!0;do for(var f=!1,m=Cp;m!==null;){if(a!==0){var v=m.pendingLanes;if(v===0)var y=0;else{var C=m.suspendedLanes,P=m.pingedLanes;y=(1<<31-_t(42|a)+1)-1,y&=v&~(C&~P),y=y&201326741?y&201326741|1:y?y|2:0}y!==0&&(f=!0,f5(m,y))}else y=Ke,y=Md(m,m===yt?y:0,m.cancelPendingCommit!==null||m.timeoutHandle!==-1),(y&3)===0||Ph(m,y)||(f=!0,f5(m,y));m=m.next}while(f);wv=!1}}function ej(){c5()}function c5(){kp=xv=!1;var a=0;Yo!==0&&uj()&&(a=Yo);for(var h=cn(),f=null,m=Cp;m!==null;){var v=m.next,y=h5(m,h);y===0?(m.next=null,f===null?Cp=v:f.next=v,v===null&&(vc=f)):(f=m,(a!==0||(y&3)!==0)&&(kp=!0)),m=v}di!==0&&di!==5||fu(a),Yo!==0&&(Yo=0)}function h5(a,h){for(var f=a.suspendedLanes,m=a.pingedLanes,v=a.expirationTimes,y=a.pendingLanes&-62914561;0P)break;var se=W.transferSize,le=W.initiatorType;se&&y5(le)&&(W=W.responseEnd,C+=se*(W"u"?null:document;function R5(a,h,f){var m=_c;if(m&&typeof h=="string"&&h){var v=cs(h);v='link[rel="'+a+'"][href="'+v+'"]',typeof f=="string"&&(v+='[crossorigin="'+f+'"]'),P5.has(v)||(P5.add(v),a={rel:a,crossOrigin:f,href:h},m.querySelector(v)===null&&(h=m.createElement("link"),Vi(h,"link",a),bi(h),m.head.appendChild(h)))}}function yj(a){io.D(a),R5("dns-prefetch",a,null)}function bj(a,h){io.C(a,h),R5("preconnect",a,h)}function Sj(a,h,f){io.L(a,h,f);var m=_c;if(m&&a&&h){var v='link[rel="preload"][as="'+cs(h)+'"]';h==="image"&&f&&f.imageSrcSet?(v+='[imagesrcset="'+cs(f.imageSrcSet)+'"]',typeof f.imageSizes=="string"&&(v+='[imagesizes="'+cs(f.imageSizes)+'"]')):v+='[href="'+cs(a)+'"]';var y=v;switch(h){case"style":y=yc(a);break;case"script":y=bc(a)}Os.has(y)||(a=p({rel:"preload",href:h==="image"&&f&&f.imageSrcSet?void 0:a,as:h},f),Os.set(y,a),m.querySelector(v)!==null||h==="style"&&m.querySelector(gu(y))||h==="script"&&m.querySelector(Ou(y))||(h=m.createElement("link"),Vi(h,"link",a),bi(h),m.head.appendChild(h)))}}function xj(a,h){io.m(a,h);var f=_c;if(f&&a){var m=h&&typeof h.as=="string"?h.as:"script",v='link[rel="modulepreload"][as="'+cs(m)+'"][href="'+cs(a)+'"]',y=v;switch(m){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":y=bc(a)}if(!Os.has(y)&&(a=p({rel:"modulepreload",href:a},h),Os.set(y,a),f.querySelector(v)===null)){switch(m){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":if(f.querySelector(Ou(y)))return}m=f.createElement("link"),Vi(m,"link",a),bi(m),f.head.appendChild(m)}}}function wj(a,h,f){io.S(a,h,f);var m=_c;if(m&&a){var v=Vl(m).hoistableStyles,y=yc(a);h=h||"default";var C=v.get(y);if(!C){var P={loading:0,preload:null};if(C=m.querySelector(gu(y)))P.loading=5;else{a=p({rel:"stylesheet",href:a,"data-precedence":h},f),(f=Os.get(y))&&jv(a,f);var W=C=m.createElement("link");bi(W),Vi(W,"link",a),W._p=new Promise(function(te,se){W.onload=te,W.onerror=se}),W.addEventListener("load",function(){P.loading|=1}),W.addEventListener("error",function(){P.loading|=2}),P.loading|=4,Pp(C,h,m)}C={type:"stylesheet",instance:C,count:1,state:P},v.set(y,C)}}}function Cj(a,h){io.X(a,h);var f=_c;if(f&&a){var m=Vl(f).hoistableScripts,v=bc(a),y=m.get(v);y||(y=f.querySelector(Ou(v)),y||(a=p({src:a,async:!0},h),(h=Os.get(v))&&Iv(a,h),y=f.createElement("script"),bi(y),Vi(y,"link",a),f.head.appendChild(y)),y={type:"script",instance:y,count:1,state:null},m.set(v,y))}}function kj(a,h){io.M(a,h);var f=_c;if(f&&a){var m=Vl(f).hoistableScripts,v=bc(a),y=m.get(v);y||(y=f.querySelector(Ou(v)),y||(a=p({src:a,async:!0,type:"module"},h),(h=Os.get(v))&&Iv(a,h),y=f.createElement("script"),bi(y),Vi(y,"link",a),f.head.appendChild(y)),y={type:"script",instance:y,count:1,state:null},m.set(v,y))}}function Q5(a,h,f,m){var v=(v=fe.current)?Mp(v):null;if(!v)throw Error(n(446));switch(a){case"meta":case"title":return null;case"style":return typeof f.precedence=="string"&&typeof f.href=="string"?(h=yc(f.href),f=Vl(v).hoistableStyles,m=f.get(h),m||(m={type:"style",instance:null,count:0,state:null},f.set(h,m)),m):{type:"void",instance:null,count:0,state:null};case"link":if(f.rel==="stylesheet"&&typeof f.href=="string"&&typeof f.precedence=="string"){a=yc(f.href);var y=Vl(v).hoistableStyles,C=y.get(a);if(C||(v=v.ownerDocument||v,C={type:"stylesheet",instance:null,count:0,state:{loading:0,preload:null}},y.set(a,C),(y=v.querySelector(gu(a)))&&!y._p&&(C.instance=y,C.state.loading=5),Os.has(a)||(f={rel:"preload",as:"style",href:f.href,crossOrigin:f.crossOrigin,integrity:f.integrity,media:f.media,hrefLang:f.hrefLang,referrerPolicy:f.referrerPolicy},Os.set(a,f),y||Tj(v,a,f,C.state))),h&&m===null)throw Error(n(528,""));return C}if(h&&m!==null)throw Error(n(529,""));return null;case"script":return h=f.async,f=f.src,typeof f=="string"&&h&&typeof h!="function"&&typeof h!="symbol"?(h=bc(f),f=Vl(v).hoistableScripts,m=f.get(h),m||(m={type:"script",instance:null,count:0,state:null},f.set(h,m)),m):{type:"void",instance:null,count:0,state:null};default:throw Error(n(444,a))}}function yc(a){return'href="'+cs(a)+'"'}function gu(a){return'link[rel="stylesheet"]['+a+"]"}function L5(a){return p({},a,{"data-precedence":a.precedence,precedence:null})}function Tj(a,h,f,m){a.querySelector('link[rel="preload"][as="style"]['+h+"]")?m.loading=1:(h=a.createElement("link"),m.preload=h,h.addEventListener("load",function(){return m.loading|=1}),h.addEventListener("error",function(){return m.loading|=2}),Vi(h,"link",f),bi(h),a.head.appendChild(h))}function bc(a){return'[src="'+cs(a)+'"]'}function Ou(a){return"script[async]"+a}function D5(a,h,f){if(h.count++,h.instance===null)switch(h.type){case"style":var m=a.querySelector('style[data-href~="'+cs(f.href)+'"]');if(m)return h.instance=m,bi(m),m;var v=p({},f,{"data-href":f.href,"data-precedence":f.precedence,href:null,precedence:null});return m=(a.ownerDocument||a).createElement("style"),bi(m),Vi(m,"style",v),Pp(m,f.precedence,a),h.instance=m;case"stylesheet":v=yc(f.href);var y=a.querySelector(gu(v));if(y)return h.state.loading|=4,h.instance=y,bi(y),y;m=L5(f),(v=Os.get(v))&&jv(m,v),y=(a.ownerDocument||a).createElement("link"),bi(y);var C=y;return C._p=new Promise(function(P,W){C.onload=P,C.onerror=W}),Vi(y,"link",m),h.state.loading|=4,Pp(y,f.precedence,a),h.instance=y;case"script":return y=bc(f.src),(v=a.querySelector(Ou(y)))?(h.instance=v,bi(v),v):(m=f,(v=Os.get(y))&&(m=p({},f),Iv(m,v)),a=a.ownerDocument||a,v=a.createElement("script"),bi(v),Vi(v,"link",m),a.head.appendChild(v),h.instance=v);case"void":return null;default:throw Error(n(443,h.type))}else h.type==="stylesheet"&&(h.state.loading&4)===0&&(m=h.instance,h.state.loading|=4,Pp(m,f.precedence,a));return h.instance}function Pp(a,h,f){for(var m=f.querySelectorAll('link[rel="stylesheet"][data-precedence],style[data-precedence]'),v=m.length?m[m.length-1]:null,y=v,C=0;C title"):null)}function Aj(a,h,f){if(f===1||h.itemProp!=null)return!1;switch(a){case"meta":case"title":return!0;case"style":if(typeof h.precedence!="string"||typeof h.href!="string"||h.href==="")break;return!0;case"link":if(typeof h.rel!="string"||typeof h.href!="string"||h.href===""||h.onLoad||h.onError)break;switch(h.rel){case"stylesheet":return a=h.disabled,typeof h.precedence=="string"&&a==null;default:return!0}case"script":if(h.async&&typeof h.async!="function"&&typeof h.async!="symbol"&&!h.onLoad&&!h.onError&&h.src&&typeof h.src=="string")return!0}return!1}function N5(a){return!(a.type==="stylesheet"&&(a.state.loading&3)===0)}function Ej(a,h,f,m){if(f.type==="stylesheet"&&(typeof m.media!="string"||matchMedia(m.media).matches!==!1)&&(f.state.loading&4)===0){if(f.instance===null){var v=yc(m.href),y=h.querySelector(gu(v));if(y){h=y._p,h!==null&&typeof h=="object"&&typeof h.then=="function"&&(a.count++,a=Qp.bind(a),h.then(a,a)),f.state.loading|=4,f.instance=y,bi(y);return}y=h.ownerDocument||h,m=L5(m),(v=Os.get(v))&&jv(m,v),y=y.createElement("link"),bi(y);var C=y;C._p=new Promise(function(P,W){C.onload=P,C.onerror=W}),Vi(y,"link",m),f.instance=y}a.stylesheets===null&&(a.stylesheets=new Map),a.stylesheets.set(f,h),(h=f.state.preload)&&(f.state.loading&3)===0&&(a.count++,f=Qp.bind(a),h.addEventListener("load",f),h.addEventListener("error",f))}}var Vv=0;function Mj(a,h){return a.stylesheets&&a.count===0&&Dp(a,a.stylesheets),0Vv?50:800)+h);return a.unsuspend=f,function(){a.unsuspend=null,clearTimeout(m),clearTimeout(v)}}:null}function Qp(){if(this.count--,this.count===0&&(this.imgCount===0||!this.waitingForImages)){if(this.stylesheets)Dp(this,this.stylesheets);else if(this.unsuspend){var a=this.unsuspend;this.unsuspend=null,a()}}}var Lp=null;function Dp(a,h){a.stylesheets=null,a.unsuspend!==null&&(a.count++,Lp=new Map,h.forEach(Pj,a),Lp=null,Qp.call(a))}function Pj(a,h){if(!(h.state.loading&4)){var f=Lp.get(a);if(f)var m=f.get(null);else{f=new Map,Lp.set(a,f);for(var v=a.querySelectorAll("link[data-precedence],style[data-precedence]"),y=0;y"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(t)}catch(e){console.error(e)}}return t(),Gv.exports=Uj(),Gv.exports}var Hj=Yj();const iL=X.createContext({connected:!1,lastChange:0,lifecycleEvent:null,pendingQuestionCount:0,onQuestionReceivedRef:{current:null}}),lT=2e3,Fj=3e4,Gj=1.5;function Kj({children:t}){const[e,i]=X.useState(!1),[n,s]=X.useState(0),[r,o]=X.useState(null),[l,c]=X.useState(0),u=X.useRef(null),d=X.useRef(null),p=X.useRef(lT),g=X.useRef(null);return X.useEffect(()=>{function O(){const b=`${window.location.protocol==="https:"?"wss:":"ws:"}//${window.location.host}/api/ws`,x=new WebSocket(b);u.current=x,x.onopen=()=>{i(!0),p.current=lT},x.onclose=()=>{i(!1),u.current=null;const w=p.current;p.current=Math.min(w*Gj,Fj),d.current=setTimeout(O,w)},x.onmessage=w=>{var k,T;try{const A=JSON.parse(w.data);switch(A.type){case"file-changes":typeof A.timestamp=="number"&&s(A.timestamp);break;case"question-received":{const Q=A.question,E={id:Q.id,header:"Question",question:Q.question,multiSelect:!1,options:(Q.options||[]).map(N=>({id:N.value,label:N.label,description:N.description||""}))};(k=g.current)==null||k.call(g,[E]),c(A.queueLength??0);break}case"questions-queued":{const Q=(A.questions||[]).map(E=>({id:E.id,header:"Question",question:E.question,multiSelect:!1,options:(E.options||[]).map(N=>({id:N.value,label:N.label,description:N.description||""}))}));(T=g.current)==null||T.call(g,Q),c(A.count??0);break}case"answer-given":c(A.remainingQueue??0);break;case"lifecycle":o(A.event);break}}catch{}},x.onerror=()=>{console.warn("[ws-provider] WebSocket error occurred")}}return O(),()=>{d.current!==null&&(clearTimeout(d.current),d.current=null),u.current&&(u.current.onclose=null,u.current.close(),u.current=null)}},[]),S.jsx(iL.Provider,{value:{connected:e,lastChange:n,lifecycleEvent:r,pendingQuestionCount:l,onQuestionReceivedRef:g},children:t})}function Qr(){return X.useContext(iL)}function Jj(t,e){switch(e.type){case"SET_TAB":return{...t,activeTab:e.tab,expandedCardId:null};case"SET_EXPANDED":return{...t,expandedCardId:e.cardId};case"SET_INPUT":return{...t,inputValues:{...t.inputValues,[e.cardId]:e.value}};case"RESET":return{activeTab:"plan",expandedCardId:null,inputValues:{}};default:return t}}const e7={activeTab:"plan",expandedCardId:null,inputValues:{}},nL=X.createContext(null);function t7({children:t}){const[e,i]=X.useReducer(Jj,e7),n=X.useCallback(l=>i({type:"SET_TAB",tab:l}),[]),s=X.useCallback(l=>i({type:"SET_EXPANDED",cardId:l}),[]),r=X.useCallback((l,c)=>i({type:"SET_INPUT",cardId:l,value:c}),[]),o=X.useCallback(()=>i({type:"RESET"}),[]);return S.jsx(nL.Provider,{value:{...e,setTab:n,setExpanded:s,setInput:r,reset:o},children:t})}function oO(){const t=X.useContext(nL);if(!t)throw new Error("useSimpleMode must be used within SimpleModeProvider");return t}const sL={phase:"idle",questions:[],currentQuestion:null,answeredQuestions:[],answerCount:0};function i7(t,e){switch(e.type){case"START_DISCUSSION":return{...t,phase:"loading"};case"QUESTIONS_RECEIVED":{const[i,...n]=e.questions;return{...t,phase:i?"active":t.phase,currentQuestion:i??null,questions:[...t.questions,...n]}}case"SUBMIT_ANSWER":return{...t,phase:"submitting",answeredQuestions:[...t.answeredQuestions,e.answer],answerCount:t.answerCount+1};case"ANSWER_ACCEPTED":{const[i,...n]=t.questions;return{...t,phase:i?"active":"loading",currentQuestion:i??null,questions:n}}case"ASK_MORE":return{...t,phase:"loading"};case"DONE_EXECUTE":return{...t,phase:"complete",currentQuestion:null,questions:[]};case"RESET":return sL;default:return t}}const rL=X.createContext(null);function n7({children:t}){const[e,i]=X.useReducer(i7,sL),n=X.useRef(null),s=X.useRef(null),r=X.useCallback(()=>{i({type:"START_DISCUSSION"})},[]),o=X.useCallback(p=>{i({type:"QUESTIONS_RECEIVED",questions:p})},[]),l=X.useCallback(async p=>{i({type:"SUBMIT_ANSWER",answer:p});const g=p.freeText.trim()?p.freeText:p.selectedLabels.join(", ");try{await fetch("/api/mcp-answer",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({questionId:p.questionId,answer:g})})}catch(O){console.error("[discussion] Failed to submit answer:",O)}i({type:"ANSWER_ACCEPTED"})},[]),c=X.useCallback(()=>{i({type:"ASK_MORE"})},[]),u=X.useCallback(()=>{var p;i({type:"DONE_EXECUTE"}),(p=s.current)==null||p.call(s)},[]),d=X.useCallback(()=>{i({type:"RESET"})},[]);return S.jsx(rL.Provider,{value:{...e,startDiscussion:r,receiveQuestions:o,submitAnswer:l,askMore:c,doneExecute:u,resetDiscussion:d,onQuestionReceived:n,onExecutionQueued:s},children:t})}function oL(){const t=X.useContext(rL);if(!t)throw new Error("useDiscussion must be used within DiscussionProvider");return t}function xo(){const{lastChange:t}=Qr(),[e,i]=X.useState(null),[n,s]=X.useState(null),[r,o]=X.useState(null),[l,c]=X.useState(!0),[u,d]=X.useState(null),p=X.useCallback(async()=>{try{d(null);const[g,O,_]=await Promise.all([fetch("/api/roadmap"),fetch("/api/state"),fetch("/api/todos")]);if(!g.ok&&g.status!==404)throw new Error(`Roadmap fetch failed: ${g.status}`);if(!O.ok&&O.status!==404)throw new Error(`State fetch failed: ${O.status}`);if(!_.ok)throw new Error(`Todos fetch failed: ${_.status}`);const b=g.ok?await g.json():null,x=O.ok?await O.json():null,w=_.ok?await _.json():{pending:[],completed:[]};i(b),s(x),o(w)}catch(g){const O=g instanceof Error?g.message:"Failed to fetch dashboard data";d(O),console.error("[use-dashboard-data]",O)}finally{c(!1)}},[]);return X.useEffect(()=>{p()},[p]),X.useEffect(()=>{t>0&&p()},[t,p]),{roadmap:e,state:n,todos:r,loading:l,error:u}}const Xp="maxsim_dashboard_mode";function s7(){const[t,e]=X.useState(()=>{try{const r=localStorage.getItem(Xp);if(r==="simple"||r==="advanced")return r}catch{}return null}),[i,n]=X.useState(()=>{try{const r=localStorage.getItem(Xp);return r==="simple"||r==="advanced"}catch{return!1}});return X.useEffect(()=>{i||fetch("/api/simple-mode-config").then(r=>r.json()).then(r=>{if(r.default_mode==="simple"||r.default_mode==="advanced"){e(r.default_mode);try{localStorage.setItem(Xp,r.default_mode)}catch{}}}).catch(()=>{}).finally(()=>n(!0))},[i]),{mode:t,setMode:r=>{e(r),i||n(!0);try{localStorage.setItem(Xp,r)}catch{}fetch("/api/simple-mode-config",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({default_mode:r})}).catch(()=>{})},initialized:i}}const YS=X.createContext({});function HS(t){const e=X.useRef(null);return e.current===null&&(e.current=t()),e.current}const aL=typeof window<"u",lL=aL?X.useLayoutEffect:X.useEffect,aO=X.createContext(null);function FS(t,e){t.indexOf(e)===-1&&t.push(e)}function hg(t,e){const i=t.indexOf(e);i>-1&&t.splice(i,1)}const Ar=(t,e,i)=>i>e?e:i{};const _o={},cL=t=>/^-?(?:\d+(?:\.\d+)?|\.\d+)$/u.test(t);function hL(t){return typeof t=="object"&&t!==null}const uL=t=>/^0[^.\s]+$/u.test(t);function fL(t){let e;return()=>(e===void 0&&(e=t()),e)}const Ps=t=>t,r7=(t,e)=>i=>e(t(i)),od=(...t)=>t.reduce(r7),Cf=(t,e,i)=>{const n=e-t;return n===0?1:(i-t)/n};class KS{constructor(){this.subscriptions=[]}add(e){return FS(this.subscriptions,e),()=>hg(this.subscriptions,e)}notify(e,i,n){const s=this.subscriptions.length;if(s)if(s===1)this.subscriptions[0](e,i,n);else for(let r=0;rt*1e3,Cs=t=>t/1e3;function dL(t,e){return e?t*(1e3/e):0}const pL=(t,e,i)=>(((1-3*i+3*e)*t+(3*i-6*e))*t+3*e)*t,o7=1e-7,a7=12;function l7(t,e,i,n,s){let r,o,l=0;do o=e+(i-e)/2,r=pL(o,n,s)-t,r>0?i=o:e=o;while(Math.abs(r)>o7&&++ll7(r,0,1,t,i);return r=>r===0||r===1?r:pL(s(r),e,n)}const mL=t=>e=>e<=.5?t(2*e)/2:(2-t(2*(1-e)))/2,gL=t=>e=>1-t(1-e),OL=ad(.33,1.53,.69,.99),JS=gL(OL),vL=mL(JS),_L=t=>(t*=2)<1?.5*JS(t):.5*(2-Math.pow(2,-10*(t-1))),ex=t=>1-Math.sin(Math.acos(t)),yL=gL(ex),bL=mL(ex),c7=ad(.42,0,1,1),h7=ad(0,0,.58,1),SL=ad(.42,0,.58,1),u7=t=>Array.isArray(t)&&typeof t[0]!="number",xL=t=>Array.isArray(t)&&typeof t[0]=="number",f7={linear:Ps,easeIn:c7,easeInOut:SL,easeOut:h7,circIn:ex,circInOut:bL,circOut:yL,backIn:JS,backInOut:vL,backOut:OL,anticipate:_L},d7=t=>typeof t=="string",cT=t=>{if(xL(t)){GS(t.length===4);const[e,i,n,s]=t;return ad(e,i,n,s)}else if(d7(t))return f7[t];return t},Zp=["setup","read","resolveKeyframes","preUpdate","update","preRender","render","postRender"];function p7(t,e){let i=new Set,n=new Set,s=!1,r=!1;const o=new WeakSet;let l={delta:0,timestamp:0,isProcessing:!1};function c(d){o.has(d)&&(u.schedule(d),t()),d(l)}const u={schedule:(d,p=!1,g=!1)=>{const _=g&&s?i:n;return p&&o.add(d),_.has(d)||_.add(d),d},cancel:d=>{n.delete(d),o.delete(d)},process:d=>{if(l=d,s){r=!0;return}s=!0,[i,n]=[n,i],i.forEach(c),i.clear(),s=!1,r&&(r=!1,u.process(d))}};return u}const m7=40;function wL(t,e){let i=!1,n=!0;const s={delta:0,timestamp:0,isProcessing:!1},r=()=>i=!0,o=Zp.reduce((T,A)=>(T[A]=p7(r),T),{}),{setup:l,read:c,resolveKeyframes:u,preUpdate:d,update:p,preRender:g,render:O,postRender:_}=o,b=()=>{const T=_o.useManualTiming?s.timestamp:performance.now();i=!1,_o.useManualTiming||(s.delta=n?1e3/60:Math.max(Math.min(T-s.timestamp,m7),1)),s.timestamp=T,s.isProcessing=!0,l.process(s),c.process(s),u.process(s),d.process(s),p.process(s),g.process(s),O.process(s),_.process(s),s.isProcessing=!1,i&&e&&(n=!1,t(b))},x=()=>{i=!0,n=!0,s.isProcessing||t(b)};return{schedule:Zp.reduce((T,A)=>{const Q=o[A];return T[A]=(E,N=!1,z=!1)=>(i||x(),Q.schedule(E,N,z)),T},{}),cancel:T=>{for(let A=0;A(Dm===void 0&&On.set(qi.isProcessing||_o.useManualTiming?qi.timestamp:performance.now()),Dm),set:t=>{Dm=t,queueMicrotask(g7)}},CL=t=>e=>typeof e=="string"&&e.startsWith(t),kL=CL("--"),O7=CL("var(--"),tx=t=>O7(t)?v7.test(t.split("/*")[0].trim()):!1,v7=/var\(--(?:[\w-]+\s*|[\w-]+\s*,(?:\s*[^)(\s]|\s*\((?:[^)(]|\([^)(]*\))*\))+\s*)\)$/iu;function hT(t){return typeof t!="string"?!1:t.split("/*")[0].includes("var(--")}const gh={test:t=>typeof t=="number",parse:parseFloat,transform:t=>t},kf={...gh,transform:t=>Ar(0,1,t)},qp={...gh,default:1},lf=t=>Math.round(t*1e5)/1e5,ix=/-?(?:\d+(?:\.\d+)?|\.\d+)/gu;function _7(t){return t==null}const y7=/^(?:#[\da-f]{3,8}|(?:rgb|hsl)a?\((?:-?[\d.]+%?[,\s]+){2}-?[\d.]+%?\s*(?:[,/]\s*)?(?:\b\d+(?:\.\d+)?|\.\d+)?%?\))$/iu,nx=(t,e)=>i=>!!(typeof i=="string"&&y7.test(i)&&i.startsWith(t)||e&&!_7(i)&&Object.prototype.hasOwnProperty.call(i,e)),TL=(t,e,i)=>n=>{if(typeof n!="string")return n;const[s,r,o,l]=n.match(ix);return{[t]:parseFloat(s),[e]:parseFloat(r),[i]:parseFloat(o),alpha:l!==void 0?parseFloat(l):1}},b7=t=>Ar(0,255,t),i_={...gh,transform:t=>Math.round(b7(t))},pl={test:nx("rgb","red"),parse:TL("red","green","blue"),transform:({red:t,green:e,blue:i,alpha:n=1})=>"rgba("+i_.transform(t)+", "+i_.transform(e)+", "+i_.transform(i)+", "+lf(kf.transform(n))+")"};function S7(t){let e="",i="",n="",s="";return t.length>5?(e=t.substring(1,3),i=t.substring(3,5),n=t.substring(5,7),s=t.substring(7,9)):(e=t.substring(1,2),i=t.substring(2,3),n=t.substring(3,4),s=t.substring(4,5),e+=e,i+=i,n+=n,s+=s),{red:parseInt(e,16),green:parseInt(i,16),blue:parseInt(n,16),alpha:s?parseInt(s,16)/255:1}}const v1={test:nx("#"),parse:S7,transform:pl.transform},ld=t=>({test:e=>typeof e=="string"&&e.endsWith(t)&&e.split(" ").length===1,parse:parseFloat,transform:e=>`${e}${t}`}),ha=ld("deg"),wr=ld("%"),Te=ld("px"),x7=ld("vh"),w7=ld("vw"),uT={...wr,parse:t=>wr.parse(t)/100,transform:t=>wr.transform(t*100)},Lc={test:nx("hsl","hue"),parse:TL("hue","saturation","lightness"),transform:({hue:t,saturation:e,lightness:i,alpha:n=1})=>"hsla("+Math.round(t)+", "+wr.transform(lf(e))+", "+wr.transform(lf(i))+", "+lf(kf.transform(n))+")"},ai={test:t=>pl.test(t)||v1.test(t)||Lc.test(t),parse:t=>pl.test(t)?pl.parse(t):Lc.test(t)?Lc.parse(t):v1.parse(t),transform:t=>typeof t=="string"?t:t.hasOwnProperty("red")?pl.transform(t):Lc.transform(t),getAnimatableNone:t=>{const e=ai.parse(t);return e.alpha=0,ai.transform(e)}},C7=/(?:#[\da-f]{3,8}|(?:rgb|hsl)a?\((?:-?[\d.]+%?[,\s]+){2}-?[\d.]+%?\s*(?:[,/]\s*)?(?:\b\d+(?:\.\d+)?|\.\d+)?%?\))/giu;function k7(t){var e,i;return isNaN(t)&&typeof t=="string"&&(((e=t.match(ix))==null?void 0:e.length)||0)+(((i=t.match(C7))==null?void 0:i.length)||0)>0}const AL="number",EL="color",T7="var",A7="var(",fT="${}",E7=/var\s*\(\s*--(?:[\w-]+\s*|[\w-]+\s*,(?:\s*[^)(\s]|\s*\((?:[^)(]|\([^)(]*\))*\))+\s*)\)|#[\da-f]{3,8}|(?:rgb|hsl)a?\((?:-?[\d.]+%?[,\s]+){2}-?[\d.]+%?\s*(?:[,/]\s*)?(?:\b\d+(?:\.\d+)?|\.\d+)?%?\)|-?(?:\d+(?:\.\d+)?|\.\d+)/giu;function Tf(t){const e=t.toString(),i=[],n={color:[],number:[],var:[]},s=[];let r=0;const l=e.replace(E7,c=>(ai.test(c)?(n.color.push(r),s.push(EL),i.push(ai.parse(c))):c.startsWith(A7)?(n.var.push(r),s.push(T7),i.push(c)):(n.number.push(r),s.push(AL),i.push(parseFloat(c))),++r,fT)).split(fT);return{values:i,split:l,indexes:n,types:s}}function ML(t){return Tf(t).values}function PL(t){const{split:e,types:i}=Tf(t),n=e.length;return s=>{let r="";for(let o=0;otypeof t=="number"?0:ai.test(t)?ai.getAnimatableNone(t):t;function P7(t){const e=ML(t);return PL(t)(e.map(M7))}const Us={test:k7,parse:ML,createTransformer:PL,getAnimatableNone:P7};function n_(t,e,i){return i<0&&(i+=1),i>1&&(i-=1),i<1/6?t+(e-t)*6*i:i<1/2?e:i<2/3?t+(e-t)*(2/3-i)*6:t}function R7({hue:t,saturation:e,lightness:i,alpha:n}){t/=360,e/=100,i/=100;let s=0,r=0,o=0;if(!e)s=r=o=i;else{const l=i<.5?i*(1+e):i+e-i*e,c=2*i-l;s=n_(c,l,t+1/3),r=n_(c,l,t),o=n_(c,l,t-1/3)}return{red:Math.round(s*255),green:Math.round(r*255),blue:Math.round(o*255),alpha:n}}function ug(t,e){return i=>i>0?e:t}const zt=(t,e,i)=>t+(e-t)*i,s_=(t,e,i)=>{const n=t*t,s=i*(e*e-n)+n;return s<0?0:Math.sqrt(s)},Q7=[v1,pl,Lc],L7=t=>Q7.find(e=>e.test(t));function dT(t){const e=L7(t);if(!e)return!1;let i=e.parse(t);return e===Lc&&(i=R7(i)),i}const pT=(t,e)=>{const i=dT(t),n=dT(e);if(!i||!n)return ug(t,e);const s={...i};return r=>(s.red=s_(i.red,n.red,r),s.green=s_(i.green,n.green,r),s.blue=s_(i.blue,n.blue,r),s.alpha=zt(i.alpha,n.alpha,r),pl.transform(s))},_1=new Set(["none","hidden"]);function D7(t,e){return _1.has(t)?i=>i<=0?t:e:i=>i>=1?e:t}function B7(t,e){return i=>zt(t,e,i)}function sx(t){return typeof t=="number"?B7:typeof t=="string"?tx(t)?ug:ai.test(t)?pT:z7:Array.isArray(t)?RL:typeof t=="object"?ai.test(t)?pT:$7:ug}function RL(t,e){const i=[...t],n=i.length,s=t.map((r,o)=>sx(r)(r,e[o]));return r=>{for(let o=0;o{for(const r in n)i[r]=n[r](s);return i}}function N7(t,e){const i=[],n={color:0,var:0,number:0};for(let s=0;s{const i=Us.createTransformer(e),n=Tf(t),s=Tf(e);return n.indexes.var.length===s.indexes.var.length&&n.indexes.color.length===s.indexes.color.length&&n.indexes.number.length>=s.indexes.number.length?_1.has(t)&&!s.values.length||_1.has(e)&&!n.values.length?D7(t,e):od(RL(N7(n,s),s.values),i):ug(t,e)};function QL(t,e,i){return typeof t=="number"&&typeof e=="number"&&typeof i=="number"?zt(t,e,i):sx(t)(t,e)}const j7=t=>{const e=({timestamp:i})=>t(i);return{start:(i=!0)=>Tt.update(e,i),stop:()=>xa(e),now:()=>qi.isProcessing?qi.timestamp:On.now()}},LL=(t,e,i=10)=>{let n="";const s=Math.max(Math.round(e/i),2);for(let r=0;r=fg?1/0:e}function I7(t,e=100,i){const n=i({...t,keyframes:[0,e]}),s=Math.min(rx(n),fg);return{type:"keyframes",ease:r=>n.next(s*r).value/e,duration:Cs(s)}}const V7=5;function DL(t,e,i){const n=Math.max(e-V7,0);return dL(i-t(n),e-n)}const Xt={stiffness:100,damping:10,mass:1,velocity:0,duration:800,bounce:.3,visualDuration:.3,restSpeed:{granular:.01,default:2},restDelta:{granular:.005,default:.5},minDuration:.01,maxDuration:10,minDamping:.05,maxDamping:1},r_=.001;function X7({duration:t=Xt.duration,bounce:e=Xt.bounce,velocity:i=Xt.velocity,mass:n=Xt.mass}){let s,r,o=1-e;o=Ar(Xt.minDamping,Xt.maxDamping,o),t=Ar(Xt.minDuration,Xt.maxDuration,Cs(t)),o<1?(s=u=>{const d=u*o,p=d*t,g=d-i,O=y1(u,o),_=Math.exp(-p);return r_-g/O*_},r=u=>{const p=u*o*t,g=p*i+i,O=Math.pow(o,2)*Math.pow(u,2)*t,_=Math.exp(-p),b=y1(Math.pow(u,2),o);return(-s(u)+r_>0?-1:1)*((g-O)*_)/b}):(s=u=>{const d=Math.exp(-u*t),p=(u-i)*t+1;return-r_+d*p},r=u=>{const d=Math.exp(-u*t),p=(i-u)*(t*t);return d*p});const l=5/t,c=q7(s,r,l);if(t=Ws(t),isNaN(c))return{stiffness:Xt.stiffness,damping:Xt.damping,duration:t};{const u=Math.pow(c,2)*n;return{stiffness:u,damping:o*2*Math.sqrt(n*u),duration:t}}}const Z7=12;function q7(t,e,i){let n=i;for(let s=1;st[i]!==void 0)}function Y7(t){let e={velocity:Xt.velocity,stiffness:Xt.stiffness,damping:Xt.damping,mass:Xt.mass,isResolvedFromDuration:!1,...t};if(!mT(t,U7)&&mT(t,W7))if(e.velocity=0,t.visualDuration){const i=t.visualDuration,n=2*Math.PI/(i*1.2),s=n*n,r=2*Ar(.05,1,1-(t.bounce||0))*Math.sqrt(s);e={...e,mass:Xt.mass,stiffness:s,damping:r}}else{const i=X7({...t,velocity:0});e={...e,...i,mass:Xt.mass},e.isResolvedFromDuration=!0}return e}function dg(t=Xt.visualDuration,e=Xt.bounce){const i=typeof t!="object"?{visualDuration:t,keyframes:[0,1],bounce:e}:t;let{restSpeed:n,restDelta:s}=i;const r=i.keyframes[0],o=i.keyframes[i.keyframes.length-1],l={done:!1,value:r},{stiffness:c,damping:u,mass:d,duration:p,velocity:g,isResolvedFromDuration:O}=Y7({...i,velocity:-Cs(i.velocity||0)}),_=g||0,b=u/(2*Math.sqrt(c*d)),x=o-r,w=Cs(Math.sqrt(c/d)),k=Math.abs(x)<5;n||(n=k?Xt.restSpeed.granular:Xt.restSpeed.default),s||(s=k?Xt.restDelta.granular:Xt.restDelta.default);let T;if(b<1){const Q=y1(w,b);T=E=>{const N=Math.exp(-b*w*E);return o-N*((_+b*w*x)/Q*Math.sin(Q*E)+x*Math.cos(Q*E))}}else if(b===1)T=Q=>o-Math.exp(-w*Q)*(x+(_+w*x)*Q);else{const Q=w*Math.sqrt(b*b-1);T=E=>{const N=Math.exp(-b*w*E),z=Math.min(Q*E,300);return o-N*((_+b*w*x)*Math.sinh(z)+Q*x*Math.cosh(z))/Q}}const A={calculatedDuration:O&&p||null,next:Q=>{const E=T(Q);if(O)l.done=Q>=p;else{let N=Q===0?_:0;b<1&&(N=Q===0?Ws(_):DL(T,Q,E));const z=Math.abs(N)<=n,q=Math.abs(o-E)<=s;l.done=z&&q}return l.value=l.done?o:E,l},toString:()=>{const Q=Math.min(rx(A),fg),E=LL(N=>A.next(Q*N).value,Q,30);return Q+"ms "+E},toTransition:()=>{}};return A}dg.applyToOptions=t=>{const e=I7(t,100,dg);return t.ease=e.ease,t.duration=Ws(e.duration),t.type="keyframes",t};function b1({keyframes:t,velocity:e=0,power:i=.8,timeConstant:n=325,bounceDamping:s=10,bounceStiffness:r=500,modifyTarget:o,min:l,max:c,restDelta:u=.5,restSpeed:d}){const p=t[0],g={done:!1,value:p},O=z=>l!==void 0&&zc,_=z=>l===void 0?c:c===void 0||Math.abs(l-z)-b*Math.exp(-z/n),T=z=>w+k(z),A=z=>{const q=k(z),J=T(z);g.done=Math.abs(q)<=u,g.value=g.done?w:J};let Q,E;const N=z=>{O(g.value)&&(Q=z,E=dg({keyframes:[g.value,_(g.value)],velocity:DL(T,z,g.value),damping:s,stiffness:r,restDelta:u,restSpeed:d}))};return N(0),{calculatedDuration:null,next:z=>{let q=!1;return!E&&Q===void 0&&(q=!0,A(z),N(z)),Q!==void 0&&z>=Q?E.next(z-Q):(!q&&A(z),g)}}}function H7(t,e,i){const n=[],s=i||_o.mix||QL,r=t.length-1;for(let o=0;oe[0];if(r===2&&e[0]===e[1])return()=>e[1];const o=t[0]===t[1];t[0]>t[r-1]&&(t=[...t].reverse(),e=[...e].reverse());const l=H7(e,n,s),c=l.length,u=d=>{if(o&&d1)for(;pu(Ar(t[0],t[r-1],d)):u}function G7(t,e){const i=t[t.length-1];for(let n=1;n<=e;n++){const s=Cf(0,e,n);t.push(zt(i,1,s))}}function K7(t){const e=[0];return G7(e,t.length-1),e}function J7(t,e){return t.map(i=>i*e)}function eI(t,e){return t.map(()=>e||SL).splice(0,t.length-1)}function cf({duration:t=300,keyframes:e,times:i,ease:n="easeInOut"}){const s=u7(n)?n.map(cT):cT(n),r={done:!1,value:e[0]},o=J7(i&&i.length===e.length?i:K7(e),t),l=F7(o,e,{ease:Array.isArray(s)?s:eI(e,s)});return{calculatedDuration:t,next:c=>(r.value=l(c),r.done=c>=t,r)}}const tI=t=>t!==null;function ox(t,{repeat:e,repeatType:i="loop"},n,s=1){const r=t.filter(tI),l=s<0||e&&i!=="loop"&&e%2===1?0:r.length-1;return!l||n===void 0?r[l]:n}const iI={decay:b1,inertia:b1,tween:cf,keyframes:cf,spring:dg};function BL(t){typeof t.type=="string"&&(t.type=iI[t.type])}class ax{constructor(){this.updateFinished()}get finished(){return this._finished}updateFinished(){this._finished=new Promise(e=>{this.resolve=e})}notifyFinished(){this.resolve()}then(e,i){return this.finished.then(e,i)}}const nI=t=>t/100;class lx extends ax{constructor(e){super(),this.state="idle",this.startTime=null,this.isStopped=!1,this.currentTime=0,this.holdTime=null,this.playbackSpeed=1,this.stop=()=>{var n,s;const{motionValue:i}=this.options;i&&i.updatedAt!==On.now()&&this.tick(On.now()),this.isStopped=!0,this.state!=="idle"&&(this.teardown(),(s=(n=this.options).onStop)==null||s.call(n))},this.options=e,this.initAnimation(),this.play(),e.autoplay===!1&&this.pause()}initAnimation(){const{options:e}=this;BL(e);const{type:i=cf,repeat:n=0,repeatDelay:s=0,repeatType:r,velocity:o=0}=e;let{keyframes:l}=e;const c=i||cf;c!==cf&&typeof l[0]!="number"&&(this.mixKeyframes=od(nI,QL(l[0],l[1])),l=[0,100]);const u=c({...e,keyframes:l});r==="mirror"&&(this.mirroredGenerator=c({...e,keyframes:[...l].reverse(),velocity:-o})),u.calculatedDuration===null&&(u.calculatedDuration=rx(u));const{calculatedDuration:d}=u;this.calculatedDuration=d,this.resolvedDuration=d+s,this.totalDuration=this.resolvedDuration*(n+1)-s,this.generator=u}updateTime(e){const i=Math.round(e-this.startTime)*this.playbackSpeed;this.holdTime!==null?this.currentTime=this.holdTime:this.currentTime=i}tick(e,i=!1){const{generator:n,totalDuration:s,mixKeyframes:r,mirroredGenerator:o,resolvedDuration:l,calculatedDuration:c}=this;if(this.startTime===null)return n.next(0);const{delay:u=0,keyframes:d,repeat:p,repeatType:g,repeatDelay:O,type:_,onUpdate:b,finalKeyframe:x}=this.options;this.speed>0?this.startTime=Math.min(this.startTime,e):this.speed<0&&(this.startTime=Math.min(e-s/this.speed,this.startTime)),i?this.currentTime=e:this.updateTime(e);const w=this.currentTime-u*(this.playbackSpeed>=0?1:-1),k=this.playbackSpeed>=0?w<0:w>s;this.currentTime=Math.max(w,0),this.state==="finished"&&this.holdTime===null&&(this.currentTime=s);let T=this.currentTime,A=n;if(p){const z=Math.min(this.currentTime,s)/l;let q=Math.floor(z),J=z%1;!J&&z>=1&&(J=1),J===1&&q--,q=Math.min(q,p+1),!!(q%2)&&(g==="reverse"?(J=1-J,O&&(J-=O/l)):g==="mirror"&&(A=o)),T=Ar(0,1,J)*l}const Q=k?{done:!1,value:d[0]}:A.next(T);r&&(Q.value=r(Q.value));let{done:E}=Q;!k&&c!==null&&(E=this.playbackSpeed>=0?this.currentTime>=s:this.currentTime<=0);const N=this.holdTime===null&&(this.state==="finished"||this.state==="running"&&E);return N&&_!==b1&&(Q.value=ox(d,this.options,x,this.speed)),b&&b(Q.value),N&&this.finish(),Q}then(e,i){return this.finished.then(e,i)}get duration(){return Cs(this.calculatedDuration)}get iterationDuration(){const{delay:e=0}=this.options||{};return this.duration+Cs(e)}get time(){return Cs(this.currentTime)}set time(e){var i;e=Ws(e),this.currentTime=e,this.startTime===null||this.holdTime!==null||this.playbackSpeed===0?this.holdTime=e:this.driver&&(this.startTime=this.driver.now()-e/this.playbackSpeed),(i=this.driver)==null||i.start(!1)}get speed(){return this.playbackSpeed}set speed(e){this.updateTime(On.now());const i=this.playbackSpeed!==e;this.playbackSpeed=e,i&&(this.time=Cs(this.currentTime))}play(){var s,r;if(this.isStopped)return;const{driver:e=j7,startTime:i}=this.options;this.driver||(this.driver=e(o=>this.tick(o))),(r=(s=this.options).onPlay)==null||r.call(s);const n=this.driver.now();this.state==="finished"?(this.updateFinished(),this.startTime=n):this.holdTime!==null?this.startTime=n-this.holdTime:this.startTime||(this.startTime=i??n),this.state==="finished"&&this.speed<0&&(this.startTime+=this.calculatedDuration),this.holdTime=null,this.state="running",this.driver.start()}pause(){this.state="paused",this.updateTime(On.now()),this.holdTime=this.currentTime}complete(){this.state!=="running"&&this.play(),this.state="finished",this.holdTime=null}finish(){var e,i;this.notifyFinished(),this.teardown(),this.state="finished",(i=(e=this.options).onComplete)==null||i.call(e)}cancel(){var e,i;this.holdTime=null,this.startTime=0,this.tick(0),this.teardown(),(i=(e=this.options).onCancel)==null||i.call(e)}teardown(){this.state="idle",this.stopDriver(),this.startTime=this.holdTime=null}stopDriver(){this.driver&&(this.driver.stop(),this.driver=void 0)}sample(e){return this.startTime=0,this.tick(e,!0)}attachTimeline(e){var i;return this.options.allowFlatten&&(this.options.type="keyframes",this.options.ease="linear",this.initAnimation()),(i=this.driver)==null||i.stop(),e.observe(this)}}function sI(t){for(let e=1;et*180/Math.PI,S1=t=>{const e=ml(Math.atan2(t[1],t[0]));return x1(e)},rI={x:4,y:5,translateX:4,translateY:5,scaleX:0,scaleY:3,scale:t=>(Math.abs(t[0])+Math.abs(t[3]))/2,rotate:S1,rotateZ:S1,skewX:t=>ml(Math.atan(t[1])),skewY:t=>ml(Math.atan(t[2])),skew:t=>(Math.abs(t[1])+Math.abs(t[2]))/2},x1=t=>(t=t%360,t<0&&(t+=360),t),gT=S1,OT=t=>Math.sqrt(t[0]*t[0]+t[1]*t[1]),vT=t=>Math.sqrt(t[4]*t[4]+t[5]*t[5]),oI={x:12,y:13,z:14,translateX:12,translateY:13,translateZ:14,scaleX:OT,scaleY:vT,scale:t=>(OT(t)+vT(t))/2,rotateX:t=>x1(ml(Math.atan2(t[6],t[5]))),rotateY:t=>x1(ml(Math.atan2(-t[2],t[0]))),rotateZ:gT,rotate:gT,skewX:t=>ml(Math.atan(t[4])),skewY:t=>ml(Math.atan(t[1])),skew:t=>(Math.abs(t[1])+Math.abs(t[4]))/2};function w1(t){return t.includes("scale")?1:0}function C1(t,e){if(!t||t==="none")return w1(e);const i=t.match(/^matrix3d\(([-\d.e\s,]+)\)$/u);let n,s;if(i)n=oI,s=i;else{const l=t.match(/^matrix\(([-\d.e\s,]+)\)$/u);n=rI,s=l}if(!s)return w1(e);const r=n[e],o=s[1].split(",").map(lI);return typeof r=="function"?r(o):o[r]}const aI=(t,e)=>{const{transform:i="none"}=getComputedStyle(t);return C1(i,e)};function lI(t){return parseFloat(t.trim())}const Oh=["transformPerspective","x","y","z","translateX","translateY","translateZ","scale","scaleX","scaleY","rotate","rotateX","rotateY","rotateZ","skew","skewX","skewY"],vh=new Set(Oh),_T=t=>t===gh||t===Te,cI=new Set(["x","y","z"]),hI=Oh.filter(t=>!cI.has(t));function uI(t){const e=[];return hI.forEach(i=>{const n=t.getValue(i);n!==void 0&&(e.push([i,n.get()]),n.set(i.startsWith("scale")?1:0))}),e}const va={width:({x:t},{paddingLeft:e="0",paddingRight:i="0"})=>t.max-t.min-parseFloat(e)-parseFloat(i),height:({y:t},{paddingTop:e="0",paddingBottom:i="0"})=>t.max-t.min-parseFloat(e)-parseFloat(i),top:(t,{top:e})=>parseFloat(e),left:(t,{left:e})=>parseFloat(e),bottom:({y:t},{top:e})=>parseFloat(e)+(t.max-t.min),right:({x:t},{left:e})=>parseFloat(e)+(t.max-t.min),x:(t,{transform:e})=>C1(e,"x"),y:(t,{transform:e})=>C1(e,"y")};va.translateX=va.x;va.translateY=va.y;const Sl=new Set;let k1=!1,T1=!1,A1=!1;function $L(){if(T1){const t=Array.from(Sl).filter(n=>n.needsMeasurement),e=new Set(t.map(n=>n.element)),i=new Map;e.forEach(n=>{const s=uI(n);s.length&&(i.set(n,s),n.render())}),t.forEach(n=>n.measureInitialState()),e.forEach(n=>{n.render();const s=i.get(n);s&&s.forEach(([r,o])=>{var l;(l=n.getValue(r))==null||l.set(o)})}),t.forEach(n=>n.measureEndState()),t.forEach(n=>{n.suspendedScrollY!==void 0&&window.scrollTo(0,n.suspendedScrollY)})}T1=!1,k1=!1,Sl.forEach(t=>t.complete(A1)),Sl.clear()}function NL(){Sl.forEach(t=>{t.readKeyframes(),t.needsMeasurement&&(T1=!0)})}function fI(){A1=!0,NL(),$L(),A1=!1}class cx{constructor(e,i,n,s,r,o=!1){this.state="pending",this.isAsync=!1,this.needsMeasurement=!1,this.unresolvedKeyframes=[...e],this.onComplete=i,this.name=n,this.motionValue=s,this.element=r,this.isAsync=o}scheduleResolve(){this.state="scheduled",this.isAsync?(Sl.add(this),k1||(k1=!0,Tt.read(NL),Tt.resolveKeyframes($L))):(this.readKeyframes(),this.complete())}readKeyframes(){const{unresolvedKeyframes:e,name:i,element:n,motionValue:s}=this;if(e[0]===null){const r=s==null?void 0:s.get(),o=e[e.length-1];if(r!==void 0)e[0]=r;else if(n&&i){const l=n.readValue(i,o);l!=null&&(e[0]=l)}e[0]===void 0&&(e[0]=o),s&&r===void 0&&s.set(e[0])}sI(e)}setFinalKeyframe(){}measureInitialState(){}renderEndStyles(){}measureEndState(){}complete(e=!1){this.state="complete",this.onComplete(this.unresolvedKeyframes,this.finalKeyframe,e),Sl.delete(this)}cancel(){this.state==="scheduled"&&(Sl.delete(this),this.state="pending")}resume(){this.state==="pending"&&this.scheduleResolve()}}const dI=t=>t.startsWith("--");function pI(t,e,i){dI(e)?t.style.setProperty(e,i):t.style[e]=i}const mI={};function zL(t,e){const i=fL(t);return()=>mI[e]??i()}const gI=zL(()=>window.ScrollTimeline!==void 0,"scrollTimeline"),jL=zL(()=>{try{document.createElement("div").animate({opacity:0},{easing:"linear(0, 1)"})}catch{return!1}return!0},"linearEasing"),Hu=([t,e,i,n])=>`cubic-bezier(${t}, ${e}, ${i}, ${n})`,yT={linear:"linear",ease:"ease",easeIn:"ease-in",easeOut:"ease-out",easeInOut:"ease-in-out",circIn:Hu([0,.65,.55,1]),circOut:Hu([.55,0,1,.45]),backIn:Hu([.31,.01,.66,-.59]),backOut:Hu([.33,1.53,.69,.99])};function IL(t,e){if(t)return typeof t=="function"?jL()?LL(t,e):"ease-out":xL(t)?Hu(t):Array.isArray(t)?t.map(i=>IL(i,e)||yT.easeOut):yT[t]}function OI(t,e,i,{delay:n=0,duration:s=300,repeat:r=0,repeatType:o="loop",ease:l="easeOut",times:c}={},u=void 0){const d={[e]:i};c&&(d.offset=c);const p=IL(l,s);Array.isArray(p)&&(d.easing=p);const g={delay:n,duration:s,easing:Array.isArray(p)?"linear":p,fill:"both",iterations:r+1,direction:o==="reverse"?"alternate":"normal"};return u&&(g.pseudoElement=u),t.animate(d,g)}function VL(t){return typeof t=="function"&&"applyToOptions"in t}function vI({type:t,...e}){return VL(t)&&jL()?t.applyToOptions(e):(e.duration??(e.duration=300),e.ease??(e.ease="easeOut"),e)}class XL extends ax{constructor(e){if(super(),this.finishedTime=null,this.isStopped=!1,this.manualStartTime=null,!e)return;const{element:i,name:n,keyframes:s,pseudoElement:r,allowFlatten:o=!1,finalKeyframe:l,onComplete:c}=e;this.isPseudoElement=!!r,this.allowFlatten=o,this.options=e,GS(typeof e.type!="string");const u=vI(e);this.animation=OI(i,n,s,u,r),u.autoplay===!1&&this.animation.pause(),this.animation.onfinish=()=>{if(this.finishedTime=this.time,!r){const d=ox(s,this.options,l,this.speed);this.updateMotionValue?this.updateMotionValue(d):pI(i,n,d),this.animation.cancel()}c==null||c(),this.notifyFinished()}}play(){this.isStopped||(this.manualStartTime=null,this.animation.play(),this.state==="finished"&&this.updateFinished())}pause(){this.animation.pause()}complete(){var e,i;(i=(e=this.animation).finish)==null||i.call(e)}cancel(){try{this.animation.cancel()}catch{}}stop(){if(this.isStopped)return;this.isStopped=!0;const{state:e}=this;e==="idle"||e==="finished"||(this.updateMotionValue?this.updateMotionValue():this.commitStyles(),this.isPseudoElement||this.cancel())}commitStyles(){var i,n,s;const e=(i=this.options)==null?void 0:i.element;!this.isPseudoElement&&(e!=null&&e.isConnected)&&((s=(n=this.animation).commitStyles)==null||s.call(n))}get duration(){var i,n;const e=((n=(i=this.animation.effect)==null?void 0:i.getComputedTiming)==null?void 0:n.call(i).duration)||0;return Cs(Number(e))}get iterationDuration(){const{delay:e=0}=this.options||{};return this.duration+Cs(e)}get time(){return Cs(Number(this.animation.currentTime)||0)}set time(e){this.manualStartTime=null,this.finishedTime=null,this.animation.currentTime=Ws(e)}get speed(){return this.animation.playbackRate}set speed(e){e<0&&(this.finishedTime=null),this.animation.playbackRate=e}get state(){return this.finishedTime!==null?"finished":this.animation.playState}get startTime(){return this.manualStartTime??Number(this.animation.startTime)}set startTime(e){this.manualStartTime=this.animation.startTime=e}attachTimeline({timeline:e,observe:i}){var n;return this.allowFlatten&&((n=this.animation.effect)==null||n.updateTiming({easing:"linear"})),this.animation.onfinish=null,e&&gI()?(this.animation.timeline=e,Ps):i(this)}}const ZL={anticipate:_L,backInOut:vL,circInOut:bL};function _I(t){return t in ZL}function yI(t){typeof t.ease=="string"&&_I(t.ease)&&(t.ease=ZL[t.ease])}const o_=10;class bI extends XL{constructor(e){yI(e),BL(e),super(e),e.startTime!==void 0&&(this.startTime=e.startTime),this.options=e}updateMotionValue(e){const{motionValue:i,onUpdate:n,onComplete:s,element:r,...o}=this.options;if(!i)return;if(e!==void 0){i.set(e);return}const l=new lx({...o,autoplay:!1}),c=Math.max(o_,On.now()-this.startTime),u=Ar(0,o_,c-o_);i.setWithVelocity(l.sample(Math.max(0,c-u)).value,l.sample(c).value,u),l.stop()}}const bT=(t,e)=>e==="zIndex"?!1:!!(typeof t=="number"||Array.isArray(t)||typeof t=="string"&&(Us.test(t)||t==="0")&&!t.startsWith("url("));function SI(t){const e=t[0];if(t.length===1)return!0;for(let i=0;iObject.hasOwnProperty.call(Element.prototype,"animate"));function kI(t){var d;const{motionValue:e,name:i,repeatDelay:n,repeatType:s,damping:r,type:o}=t;if(!(((d=e==null?void 0:e.owner)==null?void 0:d.current)instanceof HTMLElement))return!1;const{onUpdate:c,transformTemplate:u}=e.owner.getProps();return CI()&&i&&wI.has(i)&&(i!=="transform"||!u)&&!c&&!n&&s!=="mirror"&&r!==0&&o!=="inertia"}const TI=40;class AI extends ax{constructor({autoplay:e=!0,delay:i=0,type:n="keyframes",repeat:s=0,repeatDelay:r=0,repeatType:o="loop",keyframes:l,name:c,motionValue:u,element:d,...p}){var _;super(),this.stop=()=>{var b,x;this._animation&&(this._animation.stop(),(b=this.stopTimeline)==null||b.call(this)),(x=this.keyframeResolver)==null||x.cancel()},this.createdAt=On.now();const g={autoplay:e,delay:i,type:n,repeat:s,repeatDelay:r,repeatType:o,name:c,motionValue:u,element:d,...p},O=(d==null?void 0:d.KeyframeResolver)||cx;this.keyframeResolver=new O(l,(b,x,w)=>this.onKeyframesResolved(b,x,g,!w),c,u,d),(_=this.keyframeResolver)==null||_.scheduleResolve()}onKeyframesResolved(e,i,n,s){var x,w;this.keyframeResolver=void 0;const{name:r,type:o,velocity:l,delay:c,isHandoff:u,onUpdate:d}=n;this.resolvedAt=On.now(),xI(e,r,o,l)||((_o.instantAnimations||!c)&&(d==null||d(ox(e,n,i))),e[0]=e[e.length-1],E1(n),n.repeat=0);const g={startTime:s?this.resolvedAt?this.resolvedAt-this.createdAt>TI?this.resolvedAt:this.createdAt:this.createdAt:void 0,finalKeyframe:i,...n,keyframes:e},O=!u&&kI(g),_=(w=(x=g.motionValue)==null?void 0:x.owner)==null?void 0:w.current,b=O?new bI({...g,element:_}):new lx(g);b.finished.then(()=>{this.notifyFinished()}).catch(Ps),this.pendingTimeline&&(this.stopTimeline=b.attachTimeline(this.pendingTimeline),this.pendingTimeline=void 0),this._animation=b}get finished(){return this._animation?this.animation.finished:this._finished}then(e,i){return this.finished.finally(e).then(()=>{})}get animation(){var e;return this._animation||((e=this.keyframeResolver)==null||e.resume(),fI()),this._animation}get duration(){return this.animation.duration}get iterationDuration(){return this.animation.iterationDuration}get time(){return this.animation.time}set time(e){this.animation.time=e}get speed(){return this.animation.speed}get state(){return this.animation.state}set speed(e){this.animation.speed=e}get startTime(){return this.animation.startTime}attachTimeline(e){return this._animation?this.stopTimeline=this.animation.attachTimeline(e):this.pendingTimeline=e,()=>this.stop()}play(){this.animation.play()}pause(){this.animation.pause()}complete(){this.animation.complete()}cancel(){var e;this._animation&&this.animation.cancel(),(e=this.keyframeResolver)==null||e.cancel()}}function qL(t,e,i,n=0,s=1){const r=Array.from(t).sort((u,d)=>u.sortNodePosition(d)).indexOf(e),o=t.size,l=(o-1)*n;return typeof i=="function"?i(r,o):s===1?r*n:l-r*n}const EI=/^var\(--(?:([\w-]+)|([\w-]+), ?([a-zA-Z\d ()%#.,-]+))\)/u;function MI(t){const e=EI.exec(t);if(!e)return[,];const[,i,n,s]=e;return[`--${i??n}`,s]}function WL(t,e,i=1){const[n,s]=MI(t);if(!n)return;const r=window.getComputedStyle(e).getPropertyValue(n);if(r){const o=r.trim();return cL(o)?parseFloat(o):o}return tx(s)?WL(s,e,i+1):s}const PI={type:"spring",stiffness:500,damping:25,restSpeed:10},RI=t=>({type:"spring",stiffness:550,damping:t===0?2*Math.sqrt(550):30,restSpeed:10}),QI={type:"keyframes",duration:.8},LI={type:"keyframes",ease:[.25,.1,.35,1],duration:.3},DI=(t,{keyframes:e})=>e.length>2?QI:vh.has(t)?t.startsWith("scale")?RI(e[1]):PI:LI,BI=t=>t!==null;function $I(t,{repeat:e,repeatType:i="loop"},n){const s=t.filter(BI),r=e&&i!=="loop"&&e%2===1?0:s.length-1;return s[r]}function UL(t,e){if(t!=null&&t.inherit&&e){const{inherit:i,...n}=t;return{...e,...n}}return t}function hx(t,e){const i=(t==null?void 0:t[e])??(t==null?void 0:t.default)??t;return i!==t?UL(i,t):i}function NI({when:t,delay:e,delayChildren:i,staggerChildren:n,staggerDirection:s,repeat:r,repeatType:o,repeatDelay:l,from:c,elapsed:u,...d}){return!!Object.keys(d).length}const ux=(t,e,i,n={},s,r)=>o=>{const l=hx(n,t)||{},c=l.delay||n.delay||0;let{elapsed:u=0}=n;u=u-Ws(c);const d={keyframes:Array.isArray(i)?i:[null,i],ease:"easeOut",velocity:e.getVelocity(),...l,delay:-u,onUpdate:g=>{e.set(g),l.onUpdate&&l.onUpdate(g)},onComplete:()=>{o(),l.onComplete&&l.onComplete()},name:t,motionValue:e,element:r?void 0:s};NI(l)||Object.assign(d,DI(t,d)),d.duration&&(d.duration=Ws(d.duration)),d.repeatDelay&&(d.repeatDelay=Ws(d.repeatDelay)),d.from!==void 0&&(d.keyframes[0]=d.from);let p=!1;if((d.type===!1||d.duration===0&&!d.repeatDelay)&&(E1(d),d.delay===0&&(p=!0)),(_o.instantAnimations||_o.skipAnimations||s!=null&&s.shouldSkipAnimations)&&(p=!0,E1(d),d.delay=0),d.allowFlatten=!l.type&&!l.ease,p&&!r&&e.get()!==void 0){const g=$I(d.keyframes,l);if(g!==void 0){Tt.update(()=>{d.onUpdate(g),d.onComplete()});return}}return l.isSync?new lx(d):new AI(d)};function ST(t){const e=[{},{}];return t==null||t.values.forEach((i,n)=>{e[0][n]=i.get(),e[1][n]=i.getVelocity()}),e}function fx(t,e,i,n){if(typeof e=="function"){const[s,r]=ST(n);e=e(i!==void 0?i:t.custom,s,r)}if(typeof e=="string"&&(e=t.variants&&t.variants[e]),typeof e=="function"){const[s,r]=ST(n);e=e(i!==void 0?i:t.custom,s,r)}return e}function qc(t,e,i){const n=t.getProps();return fx(n,e,i!==void 0?i:n.custom,t)}const YL=new Set(["width","height","top","left","right","bottom",...Oh]),xT=30,zI=t=>!isNaN(parseFloat(t));class jI{constructor(e,i={}){this.canTrackVelocity=null,this.events={},this.updateAndNotify=n=>{var r;const s=On.now();if(this.updatedAt!==s&&this.setPrevFrameValue(),this.prev=this.current,this.setCurrent(n),this.current!==this.prev&&((r=this.events.change)==null||r.notify(this.current),this.dependents))for(const o of this.dependents)o.dirty()},this.hasAnimated=!1,this.setCurrent(e),this.owner=i.owner}setCurrent(e){this.current=e,this.updatedAt=On.now(),this.canTrackVelocity===null&&e!==void 0&&(this.canTrackVelocity=zI(this.current))}setPrevFrameValue(e=this.current){this.prevFrameValue=e,this.prevUpdatedAt=this.updatedAt}onChange(e){return this.on("change",e)}on(e,i){this.events[e]||(this.events[e]=new KS);const n=this.events[e].add(i);return e==="change"?()=>{n(),Tt.read(()=>{this.events.change.getSize()||this.stop()})}:n}clearListeners(){for(const e in this.events)this.events[e].clear()}attach(e,i){this.passiveEffect=e,this.stopPassiveEffect=i}set(e){this.passiveEffect?this.passiveEffect(e,this.updateAndNotify):this.updateAndNotify(e)}setWithVelocity(e,i,n){this.set(i),this.prev=void 0,this.prevFrameValue=e,this.prevUpdatedAt=this.updatedAt-n}jump(e,i=!0){this.updateAndNotify(e),this.prev=e,this.prevUpdatedAt=this.prevFrameValue=void 0,i&&this.stop(),this.stopPassiveEffect&&this.stopPassiveEffect()}dirty(){var e;(e=this.events.change)==null||e.notify(this.current)}addDependent(e){this.dependents||(this.dependents=new Set),this.dependents.add(e)}removeDependent(e){this.dependents&&this.dependents.delete(e)}get(){return this.current}getPrevious(){return this.prev}getVelocity(){const e=On.now();if(!this.canTrackVelocity||this.prevFrameValue===void 0||e-this.updatedAt>xT)return 0;const i=Math.min(this.updatedAt-this.prevUpdatedAt,xT);return dL(parseFloat(this.current)-parseFloat(this.prevFrameValue),i)}start(e){return this.stop(),new Promise(i=>{this.hasAnimated=!0,this.animation=e(i),this.events.animationStart&&this.events.animationStart.notify()}).then(()=>{this.events.animationComplete&&this.events.animationComplete.notify(),this.clearAnimation()})}stop(){this.animation&&(this.animation.stop(),this.events.animationCancel&&this.events.animationCancel.notify()),this.clearAnimation()}isAnimating(){return!!this.animation}clearAnimation(){delete this.animation}destroy(){var e,i;(e=this.dependents)==null||e.clear(),(i=this.events.destroy)==null||i.notify(),this.clearListeners(),this.stop(),this.stopPassiveEffect&&this.stopPassiveEffect()}}function nh(t,e){return new jI(t,e)}const M1=t=>Array.isArray(t);function II(t,e,i){t.hasValue(e)?t.getValue(e).set(i):t.addValue(e,nh(i))}function VI(t){return M1(t)?t[t.length-1]||0:t}function XI(t,e){const i=qc(t,e);let{transitionEnd:n={},transition:s={},...r}=i||{};r={...r,...n};for(const o in r){const l=VI(r[o]);II(t,o,l)}}const rn=t=>!!(t&&t.getVelocity);function ZI(t){return!!(rn(t)&&t.add)}function P1(t,e){const i=t.getValue("willChange");if(ZI(i))return i.add(e);if(!i&&_o.WillChange){const n=new _o.WillChange("auto");t.addValue("willChange",n),n.add(e)}}function dx(t){return t.replace(/([A-Z])/g,e=>`-${e.toLowerCase()}`)}const qI="framerAppearId",HL="data-"+dx(qI);function FL(t){return t.props[HL]}function WI({protectedKeys:t,needsAnimating:e},i){const n=t.hasOwnProperty(i)&&e[i]!==!0;return e[i]=!1,n}function GL(t,e,{delay:i=0,transitionOverride:n,type:s}={}){let{transition:r,transitionEnd:o,...l}=e;const c=t.getDefaultTransition();r=r?UL(r,c):c;const u=r==null?void 0:r.reduceMotion;n&&(r=n);const d=[],p=s&&t.animationState&&t.animationState.getState()[s];for(const g in l){const O=t.getValue(g,t.latestValues[g]??null),_=l[g];if(_===void 0||p&&WI(p,g))continue;const b={delay:i,...hx(r||{},g)},x=O.get();if(x!==void 0&&!O.isAnimating&&!Array.isArray(_)&&_===x&&!b.velocity)continue;let w=!1;if(window.MotionHandoffAnimation){const A=FL(t);if(A){const Q=window.MotionHandoffAnimation(A,g,Tt);Q!==null&&(b.startTime=Q,w=!0)}}P1(t,g);const k=u??t.shouldReduceMotion;O.start(ux(g,O,_,k&&YL.has(g)?{type:!1}:b,t,w));const T=O.animation;T&&d.push(T)}if(o){const g=()=>Tt.update(()=>{o&&XI(t,o)});d.length?Promise.all(d).then(g):g()}return d}function R1(t,e,i={}){var c;const n=qc(t,e,i.type==="exit"?(c=t.presenceContext)==null?void 0:c.custom:void 0);let{transition:s=t.getDefaultTransition()||{}}=n||{};i.transitionOverride&&(s=i.transitionOverride);const r=n?()=>Promise.all(GL(t,n,i)):()=>Promise.resolve(),o=t.variantChildren&&t.variantChildren.size?(u=0)=>{const{delayChildren:d=0,staggerChildren:p,staggerDirection:g}=s;return UI(t,e,u,d,p,g,i)}:()=>Promise.resolve(),{when:l}=s;if(l){const[u,d]=l==="beforeChildren"?[r,o]:[o,r];return u().then(()=>d())}else return Promise.all([r(),o(i.delay)])}function UI(t,e,i=0,n=0,s=0,r=1,o){const l=[];for(const c of t.variantChildren)c.notify("AnimationStart",e),l.push(R1(c,e,{...o,delay:i+(typeof n=="function"?0:n)+qL(t.variantChildren,c,n,s,r)}).then(()=>c.notify("AnimationComplete",e)));return Promise.all(l)}function YI(t,e,i={}){t.notify("AnimationStart",e);let n;if(Array.isArray(e)){const s=e.map(r=>R1(t,r,i));n=Promise.all(s)}else if(typeof e=="string")n=R1(t,e,i);else{const s=typeof e=="function"?qc(t,e,i.custom):e;n=Promise.all(GL(t,s,i))}return n.then(()=>{t.notify("AnimationComplete",e)})}const HI={test:t=>t==="auto",parse:t=>t},KL=t=>e=>e.test(t),JL=[gh,Te,wr,ha,w7,x7,HI],wT=t=>JL.find(KL(t));function FI(t){return typeof t=="number"?t===0:t!==null?t==="none"||t==="0"||uL(t):!0}const GI=new Set(["brightness","contrast","saturate","opacity"]);function KI(t){const[e,i]=t.slice(0,-1).split("(");if(e==="drop-shadow")return t;const[n]=i.match(ix)||[];if(!n)return t;const s=i.replace(n,"");let r=GI.has(e)?1:0;return n!==i&&(r*=100),e+"("+r+s+")"}const JI=/\b([a-z-]*)\(.*?\)/gu,Q1={...Us,getAnimatableNone:t=>{const e=t.match(JI);return e?e.map(KI).join(" "):t}},L1={...Us,getAnimatableNone:t=>{const e=Us.parse(t);return Us.createTransformer(t)(e.map(n=>typeof n=="number"?0:typeof n=="object"?{...n,alpha:1}:n))}},CT={...gh,transform:Math.round},eV={rotate:ha,rotateX:ha,rotateY:ha,rotateZ:ha,scale:qp,scaleX:qp,scaleY:qp,scaleZ:qp,skew:ha,skewX:ha,skewY:ha,distance:Te,translateX:Te,translateY:Te,translateZ:Te,x:Te,y:Te,z:Te,perspective:Te,transformPerspective:Te,opacity:kf,originX:uT,originY:uT,originZ:Te},px={borderWidth:Te,borderTopWidth:Te,borderRightWidth:Te,borderBottomWidth:Te,borderLeftWidth:Te,borderRadius:Te,borderTopLeftRadius:Te,borderTopRightRadius:Te,borderBottomRightRadius:Te,borderBottomLeftRadius:Te,width:Te,maxWidth:Te,height:Te,maxHeight:Te,top:Te,right:Te,bottom:Te,left:Te,inset:Te,insetBlock:Te,insetBlockStart:Te,insetBlockEnd:Te,insetInline:Te,insetInlineStart:Te,insetInlineEnd:Te,padding:Te,paddingTop:Te,paddingRight:Te,paddingBottom:Te,paddingLeft:Te,paddingBlock:Te,paddingBlockStart:Te,paddingBlockEnd:Te,paddingInline:Te,paddingInlineStart:Te,paddingInlineEnd:Te,margin:Te,marginTop:Te,marginRight:Te,marginBottom:Te,marginLeft:Te,marginBlock:Te,marginBlockStart:Te,marginBlockEnd:Te,marginInline:Te,marginInlineStart:Te,marginInlineEnd:Te,fontSize:Te,backgroundPositionX:Te,backgroundPositionY:Te,...eV,zIndex:CT,fillOpacity:kf,strokeOpacity:kf,numOctaves:CT},tV={...px,color:ai,backgroundColor:ai,outlineColor:ai,fill:ai,stroke:ai,borderColor:ai,borderTopColor:ai,borderRightColor:ai,borderBottomColor:ai,borderLeftColor:ai,filter:Q1,WebkitFilter:Q1,mask:L1,WebkitMask:L1},e3=t=>tV[t],iV=new Set([Q1,L1]);function t3(t,e){let i=e3(t);return iV.has(i)||(i=Us),i.getAnimatableNone?i.getAnimatableNone(e):void 0}const nV=new Set(["auto","none","0"]);function sV(t,e,i){let n=0,s;for(;n{e.getValue(c).set(u)}),this.resolveNoneKeyframes()}}const oV=new Set(["opacity","clipPath","filter","transform"]);function i3(t,e,i){if(t==null)return[];if(t instanceof EventTarget)return[t];if(typeof t=="string"){let n=document;const s=(i==null?void 0:i[t])??n.querySelectorAll(t);return s?Array.from(s):[]}return Array.from(t).filter(n=>n!=null)}const n3=(t,e)=>e&&typeof t=="number"?e.transform(t):t;function D1(t){return hL(t)&&"offsetHeight"in t}const{schedule:mx}=wL(queueMicrotask,!1),Xs={x:!1,y:!1};function s3(){return Xs.x||Xs.y}function aV(t){return t==="x"||t==="y"?Xs[t]?null:(Xs[t]=!0,()=>{Xs[t]=!1}):Xs.x||Xs.y?null:(Xs.x=Xs.y=!0,()=>{Xs.x=Xs.y=!1})}function r3(t,e){const i=i3(t),n=new AbortController,s={passive:!0,...e,signal:n.signal};return[i,s,()=>n.abort()]}function lV(t){return!(t.pointerType==="touch"||s3())}function cV(t,e,i={}){const[n,s,r]=r3(t,i);return n.forEach(o=>{let l=!1,c=!1,u;const d=()=>{o.removeEventListener("pointerleave",_)},p=x=>{u&&(u(x),u=void 0),d()},g=x=>{l=!1,window.removeEventListener("pointerup",g),window.removeEventListener("pointercancel",g),c&&(c=!1,p(x))},O=()=>{l=!0,window.addEventListener("pointerup",g,s),window.addEventListener("pointercancel",g,s)},_=x=>{if(x.pointerType!=="touch"){if(l){c=!0;return}p(x)}},b=x=>{if(!lV(x))return;c=!1;const w=e(o,x);typeof w=="function"&&(u=w,o.addEventListener("pointerleave",_,s))};o.addEventListener("pointerenter",b,s),o.addEventListener("pointerdown",O,s)}),r}const o3=(t,e)=>e?t===e?!0:o3(t,e.parentElement):!1,gx=t=>t.pointerType==="mouse"?typeof t.button!="number"||t.button<=0:t.isPrimary!==!1,hV=new Set(["BUTTON","INPUT","SELECT","TEXTAREA","A"]);function uV(t){return hV.has(t.tagName)||t.isContentEditable===!0}const fV=new Set(["INPUT","SELECT","TEXTAREA"]);function dV(t){return fV.has(t.tagName)||t.isContentEditable===!0}const Bm=new WeakSet;function kT(t){return e=>{e.key==="Enter"&&t(e)}}function a_(t,e){t.dispatchEvent(new PointerEvent("pointer"+e,{isPrimary:!0,bubbles:!0}))}const pV=(t,e)=>{const i=t.currentTarget;if(!i)return;const n=kT(()=>{if(Bm.has(i))return;a_(i,"down");const s=kT(()=>{a_(i,"up")}),r=()=>a_(i,"cancel");i.addEventListener("keyup",s,e),i.addEventListener("blur",r,e)});i.addEventListener("keydown",n,e),i.addEventListener("blur",()=>i.removeEventListener("keydown",n),e)};function TT(t){return gx(t)&&!s3()}const AT=new WeakSet;function mV(t,e,i={}){const[n,s,r]=r3(t,i),o=l=>{const c=l.currentTarget;if(!TT(l)||AT.has(l))return;Bm.add(c),i.stopPropagation&&AT.add(l);const u=e(c,l),d=(O,_)=>{window.removeEventListener("pointerup",p),window.removeEventListener("pointercancel",g),Bm.has(c)&&Bm.delete(c),TT(O)&&typeof u=="function"&&u(O,{success:_})},p=O=>{d(O,c===window||c===document||i.useGlobalTarget||o3(c,O.target))},g=O=>{d(O,!1)};window.addEventListener("pointerup",p,s),window.addEventListener("pointercancel",g,s)};return n.forEach(l=>{(i.useGlobalTarget?window:l).addEventListener("pointerdown",o,s),D1(l)&&(l.addEventListener("focus",u=>pV(u,s)),!uV(l)&&!l.hasAttribute("tabindex")&&(l.tabIndex=0))}),r}function Ox(t){return hL(t)&&"ownerSVGElement"in t}const $m=new WeakMap;let ua;const a3=(t,e,i)=>(n,s)=>s&&s[0]?s[0][t+"Size"]:Ox(n)&&"getBBox"in n?n.getBBox()[e]:n[i],gV=a3("inline","width","offsetWidth"),OV=a3("block","height","offsetHeight");function vV({target:t,borderBoxSize:e}){var i;(i=$m.get(t))==null||i.forEach(n=>{n(t,{get width(){return gV(t,e)},get height(){return OV(t,e)}})})}function _V(t){t.forEach(vV)}function yV(){typeof ResizeObserver>"u"||(ua=new ResizeObserver(_V))}function bV(t,e){ua||yV();const i=i3(t);return i.forEach(n=>{let s=$m.get(n);s||(s=new Set,$m.set(n,s)),s.add(e),ua==null||ua.observe(n)}),()=>{i.forEach(n=>{const s=$m.get(n);s==null||s.delete(e),s!=null&&s.size||ua==null||ua.unobserve(n)})}}const Nm=new Set;let Dc;function SV(){Dc=()=>{const t={get width(){return window.innerWidth},get height(){return window.innerHeight}};Nm.forEach(e=>e(t))},window.addEventListener("resize",Dc)}function xV(t){return Nm.add(t),Dc||SV(),()=>{Nm.delete(t),!Nm.size&&typeof Dc=="function"&&(window.removeEventListener("resize",Dc),Dc=void 0)}}function ET(t,e){return typeof t=="function"?xV(t):bV(t,e)}function wV(t){return Ox(t)&&t.tagName==="svg"}const CV=[...JL,ai,Us],kV=t=>CV.find(KL(t)),MT=()=>({translate:0,scale:1,origin:0,originPoint:0}),Bc=()=>({x:MT(),y:MT()}),PT=()=>({min:0,max:0}),Oi=()=>({x:PT(),y:PT()}),TV=new WeakMap;function lO(t){return t!==null&&typeof t=="object"&&typeof t.start=="function"}function Af(t){return typeof t=="string"||Array.isArray(t)}const vx=["animate","whileInView","whileFocus","whileHover","whileTap","whileDrag","exit"],_x=["initial",...vx];function cO(t){return lO(t.animate)||_x.some(e=>Af(t[e]))}function l3(t){return!!(cO(t)||t.variants)}function AV(t,e,i){for(const n in e){const s=e[n],r=i[n];if(rn(s))t.addValue(n,s);else if(rn(r))t.addValue(n,nh(s,{owner:t}));else if(r!==s)if(t.hasValue(n)){const o=t.getValue(n);o.liveStyle===!0?o.jump(s):o.hasAnimated||o.set(s)}else{const o=t.getStaticValue(n);t.addValue(n,nh(o!==void 0?o:s,{owner:t}))}}for(const n in i)e[n]===void 0&&t.removeValue(n);return e}const B1={current:null},c3={current:!1},EV=typeof window<"u";function MV(){if(c3.current=!0,!!EV)if(window.matchMedia){const t=window.matchMedia("(prefers-reduced-motion)"),e=()=>B1.current=t.matches;t.addEventListener("change",e),e()}else B1.current=!1}const RT=["AnimationStart","AnimationComplete","Update","BeforeLayoutMeasure","LayoutMeasure","LayoutAnimationStart","LayoutAnimationComplete"];let pg={};function h3(t){pg=t}function PV(){return pg}class RV{scrapeMotionValuesFromProps(e,i,n){return{}}constructor({parent:e,props:i,presenceContext:n,reducedMotionConfig:s,skipAnimations:r,blockInitialAnimation:o,visualState:l},c={}){this.current=null,this.children=new Set,this.isVariantNode=!1,this.isControllingVariants=!1,this.shouldReduceMotion=null,this.shouldSkipAnimations=!1,this.values=new Map,this.KeyframeResolver=cx,this.features={},this.valueSubscriptions=new Map,this.prevMotionValues={},this.hasBeenMounted=!1,this.events={},this.propEventSubscriptions={},this.notifyUpdate=()=>this.notify("Update",this.latestValues),this.render=()=>{this.current&&(this.triggerBuild(),this.renderInstance(this.current,this.renderState,this.props.style,this.projection))},this.renderScheduledAt=0,this.scheduleRender=()=>{const O=On.now();this.renderScheduledAtthis.bindToMotionValue(r,s)),this.reducedMotionConfig==="never"?this.shouldReduceMotion=!1:this.reducedMotionConfig==="always"?this.shouldReduceMotion=!0:(c3.current||MV(),this.shouldReduceMotion=B1.current),this.shouldSkipAnimations=this.skipAnimationsConfig??!1,(n=this.parent)==null||n.addChild(this),this.update(this.props,this.presenceContext),this.hasBeenMounted=!0}unmount(){var e;this.projection&&this.projection.unmount(),xa(this.notifyUpdate),xa(this.render),this.valueSubscriptions.forEach(i=>i()),this.valueSubscriptions.clear(),this.removeFromVariantTree&&this.removeFromVariantTree(),(e=this.parent)==null||e.removeChild(this);for(const i in this.events)this.events[i].clear();for(const i in this.features){const n=this.features[i];n&&(n.unmount(),n.isMounted=!1)}this.current=null}addChild(e){this.children.add(e),this.enteringChildren??(this.enteringChildren=new Set),this.enteringChildren.add(e)}removeChild(e){this.children.delete(e),this.enteringChildren&&this.enteringChildren.delete(e)}bindToMotionValue(e,i){if(this.valueSubscriptions.has(e)&&this.valueSubscriptions.get(e)(),i.accelerate&&oV.has(e)&&this.current instanceof HTMLElement){const{factory:o,keyframes:l,times:c,ease:u,duration:d}=i.accelerate,p=new XL({element:this.current,name:e,keyframes:l,times:c,ease:u,duration:Ws(d)}),g=o(p);this.valueSubscriptions.set(e,()=>{g(),p.cancel()});return}const n=vh.has(e);n&&this.onBindTransform&&this.onBindTransform();const s=i.on("change",o=>{this.latestValues[e]=o,this.props.onUpdate&&Tt.preRender(this.notifyUpdate),n&&this.projection&&(this.projection.isTransformDirty=!0),this.scheduleRender()});let r;typeof window<"u"&&window.MotionCheckAppearSync&&(r=window.MotionCheckAppearSync(this,e,i)),this.valueSubscriptions.set(e,()=>{s(),r&&r(),i.owner&&i.stop()})}sortNodePosition(e){return!this.current||!this.sortInstanceNodePosition||this.type!==e.type?0:this.sortInstanceNodePosition(this.current,e.current)}updateFeatures(){let e="animation";for(e in pg){const i=pg[e];if(!i)continue;const{isEnabled:n,Feature:s}=i;if(!this.features[e]&&s&&n(this.props)&&(this.features[e]=new s(this)),this.features[e]){const r=this.features[e];r.isMounted?r.update():(r.mount(),r.isMounted=!0)}}}triggerBuild(){this.build(this.renderState,this.latestValues,this.props)}measureViewportBox(){return this.current?this.measureInstanceViewportBox(this.current,this.props):Oi()}getStaticValue(e){return this.latestValues[e]}setStaticValue(e,i){this.latestValues[e]=i}update(e,i){(e.transformTemplate||this.props.transformTemplate)&&this.scheduleRender(),this.prevProps=this.props,this.props=e,this.prevPresenceContext=this.presenceContext,this.presenceContext=i;for(let n=0;ni.variantChildren.delete(e)}addValue(e,i){const n=this.values.get(e);i!==n&&(n&&this.removeValue(e),this.bindToMotionValue(e,i),this.values.set(e,i),this.latestValues[e]=i.get())}removeValue(e){this.values.delete(e);const i=this.valueSubscriptions.get(e);i&&(i(),this.valueSubscriptions.delete(e)),delete this.latestValues[e],this.removeValueFromRenderState(e,this.renderState)}hasValue(e){return this.values.has(e)}getValue(e,i){if(this.props.values&&this.props.values[e])return this.props.values[e];let n=this.values.get(e);return n===void 0&&i!==void 0&&(n=nh(i===null?void 0:i,{owner:this}),this.addValue(e,n)),n}readValue(e,i){let n=this.latestValues[e]!==void 0||!this.current?this.latestValues[e]:this.getBaseTargetFromProps(this.props,e)??this.readValueFromInstance(this.current,e,this.options);return n!=null&&(typeof n=="string"&&(cL(n)||uL(n))?n=parseFloat(n):!kV(n)&&Us.test(i)&&(n=t3(e,i)),this.setBaseTarget(e,rn(n)?n.get():n)),rn(n)?n.get():n}setBaseTarget(e,i){this.baseTarget[e]=i}getBaseTarget(e){var r;const{initial:i}=this.props;let n;if(typeof i=="string"||typeof i=="object"){const o=fx(this.props,i,(r=this.presenceContext)==null?void 0:r.custom);o&&(n=o[e])}if(i&&n!==void 0)return n;const s=this.getBaseTargetFromProps(this.props,e);return s!==void 0&&!rn(s)?s:this.initialValues[e]!==void 0&&n===void 0?void 0:this.baseTarget[e]}on(e,i){return this.events[e]||(this.events[e]=new KS),this.events[e].add(i)}notify(e,...i){this.events[e]&&this.events[e].notify(...i)}scheduleRenderMicrotask(){mx.render(this.render)}}class u3 extends RV{constructor(){super(...arguments),this.KeyframeResolver=rV}sortInstanceNodePosition(e,i){return e.compareDocumentPosition(i)&2?1:-1}getBaseTargetFromProps(e,i){const n=e.style;return n?n[i]:void 0}removeValueFromRenderState(e,{vars:i,style:n}){delete i[e],delete n[e]}handleChildMotionValue(){this.childSubscription&&(this.childSubscription(),delete this.childSubscription);const{children:e}=this.props;rn(e)&&(this.childSubscription=e.on("change",i=>{this.current&&(this.current.textContent=`${i}`)}))}}class Pa{constructor(e){this.isMounted=!1,this.node=e}update(){}}function f3({top:t,left:e,right:i,bottom:n}){return{x:{min:e,max:i},y:{min:t,max:n}}}function QV({x:t,y:e}){return{top:e.min,right:t.max,bottom:e.max,left:t.min}}function LV(t,e){if(!e)return t;const i=e({x:t.left,y:t.top}),n=e({x:t.right,y:t.bottom});return{top:i.y,left:i.x,bottom:n.y,right:n.x}}function l_(t){return t===void 0||t===1}function $1({scale:t,scaleX:e,scaleY:i}){return!l_(t)||!l_(e)||!l_(i)}function al(t){return $1(t)||d3(t)||t.z||t.rotate||t.rotateX||t.rotateY||t.skewX||t.skewY}function d3(t){return QT(t.x)||QT(t.y)}function QT(t){return t&&t!=="0%"}function mg(t,e,i){const n=t-i,s=e*n;return i+s}function LT(t,e,i,n,s){return s!==void 0&&(t=mg(t,s,n)),mg(t,i,n)+e}function N1(t,e=0,i=1,n,s){t.min=LT(t.min,e,i,n,s),t.max=LT(t.max,e,i,n,s)}function p3(t,{x:e,y:i}){N1(t.x,e.translate,e.scale,e.originPoint),N1(t.y,i.translate,i.scale,i.originPoint)}const DT=.999999999999,BT=1.0000000000001;function DV(t,e,i,n=!1){const s=i.length;if(!s)return;e.x=e.y=1;let r,o;for(let l=0;lDT&&(e.x=1),e.yDT&&(e.y=1)}function $c(t,e){t.min=t.min+e,t.max=t.max+e}function $T(t,e,i,n,s=.5){const r=zt(t.min,t.max,s);N1(t,e,i,r,n)}function Nc(t,e){$T(t.x,e.x,e.scaleX,e.scale,e.originX),$T(t.y,e.y,e.scaleY,e.scale,e.originY)}function m3(t,e){return f3(LV(t.getBoundingClientRect(),e))}function BV(t,e,i){const n=m3(t,i),{scroll:s}=e;return s&&($c(n.x,s.offset.x),$c(n.y,s.offset.y)),n}const $V={x:"translateX",y:"translateY",z:"translateZ",transformPerspective:"perspective"},NV=Oh.length;function zV(t,e,i){let n="",s=!0;for(let r=0;r{if(!e.target)return t;if(typeof t=="string")if(Te.test(t))t=parseFloat(t);else return t;const i=NT(t,e.target.x),n=NT(t,e.target.y);return`${i}% ${n}%`}},jV={correct:(t,{treeScale:e,projectionDelta:i})=>{const n=t,s=Us.parse(t);if(s.length>5)return n;const r=Us.createTransformer(t),o=typeof s[0]!="number"?1:0,l=i.x.scale*e.x,c=i.y.scale*e.y;s[0+o]/=l,s[1+o]/=c;const u=zt(l,c,.5);return typeof s[2+o]=="number"&&(s[2+o]/=u),typeof s[3+o]=="number"&&(s[3+o]/=u),r(s)}},z1={borderRadius:{...wu,applyTo:["borderTopLeftRadius","borderTopRightRadius","borderBottomLeftRadius","borderBottomRightRadius"]},borderTopLeftRadius:wu,borderTopRightRadius:wu,borderBottomLeftRadius:wu,borderBottomRightRadius:wu,boxShadow:jV};function O3(t,{layout:e,layoutId:i}){return vh.has(t)||t.startsWith("origin")||(e||i!==void 0)&&(!!z1[t]||t==="opacity")}function bx(t,e,i){var o;const n=t.style,s=e==null?void 0:e.style,r={};if(!n)return r;for(const l in n)(rn(n[l])||s&&rn(s[l])||O3(l,t)||((o=i==null?void 0:i.getValue(l))==null?void 0:o.liveStyle)!==void 0)&&(r[l]=n[l]);return r}function IV(t){return window.getComputedStyle(t)}class VV extends u3{constructor(){super(...arguments),this.type="html",this.renderInstance=g3}readValueFromInstance(e,i){var n;if(vh.has(i))return(n=this.projection)!=null&&n.isProjecting?w1(i):aI(e,i);{const s=IV(e),r=(kL(i)?s.getPropertyValue(i):s[i])||0;return typeof r=="string"?r.trim():r}}measureInstanceViewportBox(e,{transformPagePoint:i}){return m3(e,i)}build(e,i,n){yx(e,i,n.transformTemplate)}scrapeMotionValuesFromProps(e,i,n){return bx(e,i,n)}}const XV={offset:"stroke-dashoffset",array:"stroke-dasharray"},ZV={offset:"strokeDashoffset",array:"strokeDasharray"};function qV(t,e,i=1,n=0,s=!0){t.pathLength=1;const r=s?XV:ZV;t[r.offset]=`${-n}`,t[r.array]=`${e} ${i}`}const WV=["offsetDistance","offsetPath","offsetRotate","offsetAnchor"];function v3(t,{attrX:e,attrY:i,attrScale:n,pathLength:s,pathSpacing:r=1,pathOffset:o=0,...l},c,u,d){if(yx(t,l,u),c){t.style.viewBox&&(t.attrs.viewBox=t.style.viewBox);return}t.attrs=t.style,t.style={};const{attrs:p,style:g}=t;p.transform&&(g.transform=p.transform,delete p.transform),(g.transform||p.transformOrigin)&&(g.transformOrigin=p.transformOrigin??"50% 50%",delete p.transformOrigin),g.transform&&(g.transformBox=(d==null?void 0:d.transformBox)??"fill-box",delete p.transformBox);for(const O of WV)p[O]!==void 0&&(g[O]=p[O],delete p[O]);e!==void 0&&(p.x=e),i!==void 0&&(p.y=i),n!==void 0&&(p.scale=n),s!==void 0&&qV(p,s,r,o,!1)}const _3=new Set(["baseFrequency","diffuseConstant","kernelMatrix","kernelUnitLength","keySplines","keyTimes","limitingConeAngle","markerHeight","markerWidth","numOctaves","targetX","targetY","surfaceScale","specularConstant","specularExponent","stdDeviation","tableValues","viewBox","gradientTransform","pathLength","startOffset","textLength","lengthAdjust"]),y3=t=>typeof t=="string"&&t.toLowerCase()==="svg";function UV(t,e,i,n){g3(t,e,void 0,n);for(const s in e.attrs)t.setAttribute(_3.has(s)?s:dx(s),e.attrs[s])}function b3(t,e,i){const n=bx(t,e,i);for(const s in t)if(rn(t[s])||rn(e[s])){const r=Oh.indexOf(s)!==-1?"attr"+s.charAt(0).toUpperCase()+s.substring(1):s;n[r]=t[s]}return n}class YV extends u3{constructor(){super(...arguments),this.type="svg",this.isSVGTag=!1,this.measureInstanceViewportBox=Oi}getBaseTargetFromProps(e,i){return e[i]}readValueFromInstance(e,i){if(vh.has(i)){const n=e3(i);return n&&n.default||0}return i=_3.has(i)?i:dx(i),e.getAttribute(i)}scrapeMotionValuesFromProps(e,i,n){return b3(e,i,n)}build(e,i,n){v3(e,i,this.isSVGTag,n.transformTemplate,n.style)}renderInstance(e,i,n,s){UV(e,i,n,s)}mount(e){this.isSVGTag=y3(e.tagName),super.mount(e)}}const HV=_x.length;function S3(t){if(!t)return;if(!t.isControllingVariants){const i=t.parent?S3(t.parent)||{}:{};return t.props.initial!==void 0&&(i.initial=t.props.initial),i}const e={};for(let i=0;iPromise.all(e.map(({animation:i,options:n})=>YI(t,i,n)))}function JV(t){let e=KV(t),i=zT(),n=!0;const s=c=>(u,d)=>{var g;const p=qc(t,d,c==="exit"?(g=t.presenceContext)==null?void 0:g.custom:void 0);if(p){const{transition:O,transitionEnd:_,...b}=p;u={...u,...b,..._}}return u};function r(c){e=c(t)}function o(c){const{props:u}=t,d=S3(t.parent)||{},p=[],g=new Set;let O={},_=1/0;for(let x=0;x_&&A,q=!1;const J=Array.isArray(T)?T:[T];let U=J.reduce(s(w),{});Q===!1&&(U={});const{prevResolvedValues:R={}}=k,B={...R,...U},j=Z=>{z=!0,g.has(Z)&&(q=!0,g.delete(Z)),k.needsAnimating[Z]=!0;const H=t.getValue(Z);H&&(H.liveStyle=!1)};for(const Z in B){const H=U[Z],F=R[Z];if(O.hasOwnProperty(Z))continue;let M=!1;M1(H)&&M1(F)?M=!x3(H,F):M=H!==F,M?H!=null?j(Z):g.add(Z):H!==void 0&&g.has(Z)?j(Z):k.protectedKeys[Z]=!0}k.prevProp=T,k.prevResolvedValues=U,k.isActive&&(O={...O,...U}),n&&t.blockInitialAnimation&&(z=!1);const $=E&&N;z&&(!$||q)&&p.push(...J.map(Z=>{const H={type:w};if(typeof Z=="string"&&n&&!$&&t.manuallyAnimateOnMount&&t.parent){const{parent:F}=t,M=qc(F,Z);if(F.enteringChildren&&M){const{delayChildren:I}=M.transition||{};H.delay=qL(F.enteringChildren,t,I)}}return{animation:Z,options:H}}))}if(g.size){const x={};if(typeof u.initial!="boolean"){const w=qc(t,Array.isArray(u.initial)?u.initial[0]:u.initial);w&&w.transition&&(x.transition=w.transition)}g.forEach(w=>{const k=t.getBaseTarget(w),T=t.getValue(w);T&&(T.liveStyle=!0),x[w]=k??null}),p.push({animation:x})}let b=!!p.length;return n&&(u.initial===!1||u.initial===u.animate)&&!t.manuallyAnimateOnMount&&(b=!1),n=!1,b?e(p):Promise.resolve()}function l(c,u){var p;if(i[c].isActive===u)return Promise.resolve();(p=t.variantChildren)==null||p.forEach(g=>{var O;return(O=g.animationState)==null?void 0:O.setActive(c,u)}),i[c].isActive=u;const d=o(c);for(const g in i)i[g].protectedKeys={};return d}return{animateChanges:o,setActive:l,setAnimateFunction:r,getState:()=>i,reset:()=>{i=zT()}}}function eX(t,e){return typeof e=="string"?e!==t:Array.isArray(e)?!x3(e,t):!1}function el(t=!1){return{isActive:t,protectedKeys:{},needsAnimating:{},prevResolvedValues:{}}}function zT(){return{animate:el(!0),whileInView:el(),whileHover:el(),whileTap:el(),whileDrag:el(),whileFocus:el(),exit:el()}}function jT(t,e){t.min=e.min,t.max=e.max}function js(t,e){jT(t.x,e.x),jT(t.y,e.y)}function IT(t,e){t.translate=e.translate,t.scale=e.scale,t.originPoint=e.originPoint,t.origin=e.origin}const w3=1e-4,tX=1-w3,iX=1+w3,C3=.01,nX=0-C3,sX=0+C3;function vn(t){return t.max-t.min}function rX(t,e,i){return Math.abs(t-e)<=i}function VT(t,e,i,n=.5){t.origin=n,t.originPoint=zt(e.min,e.max,t.origin),t.scale=vn(i)/vn(e),t.translate=zt(i.min,i.max,t.origin)-t.originPoint,(t.scale>=tX&&t.scale<=iX||isNaN(t.scale))&&(t.scale=1),(t.translate>=nX&&t.translate<=sX||isNaN(t.translate))&&(t.translate=0)}function hf(t,e,i,n){VT(t.x,e.x,i.x,n?n.originX:void 0),VT(t.y,e.y,i.y,n?n.originY:void 0)}function XT(t,e,i){t.min=i.min+e.min,t.max=t.min+vn(e)}function oX(t,e,i){XT(t.x,e.x,i.x),XT(t.y,e.y,i.y)}function ZT(t,e,i){t.min=e.min-i.min,t.max=t.min+vn(e)}function gg(t,e,i){ZT(t.x,e.x,i.x),ZT(t.y,e.y,i.y)}function qT(t,e,i,n,s){return t-=e,t=mg(t,1/i,n),s!==void 0&&(t=mg(t,1/s,n)),t}function aX(t,e=0,i=1,n=.5,s,r=t,o=t){if(wr.test(e)&&(e=parseFloat(e),e=zt(o.min,o.max,e/100)-o.min),typeof e!="number")return;let l=zt(r.min,r.max,n);t===r&&(l-=e),t.min=qT(t.min,e,i,l,s),t.max=qT(t.max,e,i,l,s)}function WT(t,e,[i,n,s],r,o){aX(t,e[i],e[n],e[s],e.scale,r,o)}const lX=["x","scaleX","originX"],cX=["y","scaleY","originY"];function UT(t,e,i,n){WT(t.x,e,lX,i?i.x:void 0,n?n.x:void 0),WT(t.y,e,cX,i?i.y:void 0,n?n.y:void 0)}function YT(t){return t.translate===0&&t.scale===1}function k3(t){return YT(t.x)&&YT(t.y)}function HT(t,e){return t.min===e.min&&t.max===e.max}function hX(t,e){return HT(t.x,e.x)&&HT(t.y,e.y)}function FT(t,e){return Math.round(t.min)===Math.round(e.min)&&Math.round(t.max)===Math.round(e.max)}function T3(t,e){return FT(t.x,e.x)&&FT(t.y,e.y)}function GT(t){return vn(t.x)/vn(t.y)}function KT(t,e){return t.translate===e.translate&&t.scale===e.scale&&t.originPoint===e.originPoint}function dr(t){return[t("x"),t("y")]}function uX(t,e,i){let n="";const s=t.x.translate/e.x,r=t.y.translate/e.y,o=(i==null?void 0:i.z)||0;if((s||r||o)&&(n=`translate3d(${s}px, ${r}px, ${o}px) `),(e.x!==1||e.y!==1)&&(n+=`scale(${1/e.x}, ${1/e.y}) `),i){const{transformPerspective:u,rotate:d,rotateX:p,rotateY:g,skewX:O,skewY:_}=i;u&&(n=`perspective(${u}px) ${n}`),d&&(n+=`rotate(${d}deg) `),p&&(n+=`rotateX(${p}deg) `),g&&(n+=`rotateY(${g}deg) `),O&&(n+=`skewX(${O}deg) `),_&&(n+=`skewY(${_}deg) `)}const l=t.x.scale*e.x,c=t.y.scale*e.y;return(l!==1||c!==1)&&(n+=`scale(${l}, ${c})`),n||"none"}const A3=["TopLeft","TopRight","BottomLeft","BottomRight"],fX=A3.length,JT=t=>typeof t=="string"?parseFloat(t):t,eA=t=>typeof t=="number"||Te.test(t);function dX(t,e,i,n,s,r){s?(t.opacity=zt(0,i.opacity??1,pX(n)),t.opacityExit=zt(e.opacity??1,0,mX(n))):r&&(t.opacity=zt(e.opacity??1,i.opacity??1,n));for(let o=0;one?1:i(Cf(t,e,n))}function gX(t,e,i){const n=rn(t)?t:nh(t);return n.start(ux("",n,e,i)),n.animation}function Ef(t,e,i,n={passive:!0}){return t.addEventListener(e,i,n),()=>t.removeEventListener(e,i)}const OX=(t,e)=>t.depth-e.depth;class vX{constructor(){this.children=[],this.isDirty=!1}add(e){FS(this.children,e),this.isDirty=!0}remove(e){hg(this.children,e),this.isDirty=!0}forEach(e){this.isDirty&&this.children.sort(OX),this.isDirty=!1,this.children.forEach(e)}}function _X(t,e){const i=On.now(),n=({timestamp:s})=>{const r=s-i;r>=e&&(xa(n),t(r-e))};return Tt.setup(n,!0),()=>xa(n)}function zm(t){return rn(t)?t.get():t}class yX{constructor(){this.members=[]}add(e){FS(this.members,e);for(let i=this.members.length-1;i>=0;i--){const n=this.members[i];if(n===e||n===this.lead||n===this.prevLead)continue;const s=n.instance;s&&s.isConnected===!1&&n.isPresent!==!1&&!n.snapshot&&hg(this.members,n)}e.scheduleRender()}remove(e){if(hg(this.members,e),e===this.prevLead&&(this.prevLead=void 0),e===this.lead){const i=this.members[this.members.length-1];i&&this.promote(i)}}relegate(e){const i=this.members.findIndex(s=>e===s);if(i===0)return!1;let n;for(let s=i;s>=0;s--){const r=this.members[s],o=r.instance;if(r.isPresent!==!1&&(!o||o.isConnected!==!1)){n=r;break}}return n?(this.promote(n),!0):!1}promote(e,i){const n=this.lead;if(e!==n&&(this.prevLead=n,this.lead=e,e.show(),n)){n.instance&&n.scheduleRender(),e.scheduleRender();const s=n.options.layoutDependency,r=e.options.layoutDependency;if(!(s!==void 0&&r!==void 0&&s===r)){const c=n.instance;c&&c.isConnected===!1&&!n.snapshot||(e.resumeFrom=n,i&&(e.resumeFrom.preserveOpacity=!0),n.snapshot&&(e.snapshot=n.snapshot,e.snapshot.latestValues=n.animationValues||n.latestValues),e.root&&e.root.isUpdating&&(e.isLayoutDirty=!0))}const{crossfade:l}=e.options;l===!1&&n.hide()}}exitAnimationComplete(){this.members.forEach(e=>{const{options:i,resumingFrom:n}=e;i.onExitComplete&&i.onExitComplete(),n&&n.options.onExitComplete&&n.options.onExitComplete()})}scheduleRender(){this.members.forEach(e=>{e.instance&&e.scheduleRender(!1)})}removeLeadSnapshot(){this.lead&&this.lead.snapshot&&(this.lead.snapshot=void 0)}}const jm={hasAnimatedSinceResize:!0,hasEverUpdated:!1},c_=["","X","Y","Z"],bX=1e3;let SX=0;function h_(t,e,i,n){const{latestValues:s}=e;s[t]&&(i[t]=s[t],e.setStaticValue(t,0),n&&(n[t]=0))}function M3(t){if(t.hasCheckedOptimisedAppear=!0,t.root===t)return;const{visualElement:e}=t.options;if(!e)return;const i=FL(e);if(window.MotionHasOptimisedAnimation(i,"transform")){const{layout:s,layoutId:r}=t.options;window.MotionCancelOptimisedAnimation(i,"transform",Tt,!(s||r))}const{parent:n}=t;n&&!n.hasCheckedOptimisedAppear&&M3(n)}function P3({attachResizeListener:t,defaultParent:e,measureScroll:i,checkIsScrollRoot:n,resetTransform:s}){return class{constructor(o={},l=e==null?void 0:e()){this.id=SX++,this.animationId=0,this.animationCommitId=0,this.children=new Set,this.options={},this.isTreeAnimating=!1,this.isAnimationBlocked=!1,this.isLayoutDirty=!1,this.isProjectionDirty=!1,this.isSharedProjectionDirty=!1,this.isTransformDirty=!1,this.updateManuallyBlocked=!1,this.updateBlockedByResize=!1,this.isUpdating=!1,this.isSVG=!1,this.needsReset=!1,this.shouldResetTransform=!1,this.hasCheckedOptimisedAppear=!1,this.treeScale={x:1,y:1},this.eventHandlers=new Map,this.hasTreeAnimated=!1,this.layoutVersion=0,this.updateScheduled=!1,this.scheduleUpdate=()=>this.update(),this.projectionUpdateScheduled=!1,this.checkUpdateFailed=()=>{this.isUpdating&&(this.isUpdating=!1,this.clearAllSnapshots())},this.updateProjection=()=>{this.projectionUpdateScheduled=!1,this.nodes.forEach(CX),this.nodes.forEach(EX),this.nodes.forEach(MX),this.nodes.forEach(kX)},this.resolvedRelativeTargetAt=0,this.linkedParentVersion=0,this.hasProjected=!1,this.isVisible=!0,this.animationProgress=0,this.sharedNodes=new Map,this.latestValues=o,this.root=l?l.root||l:this,this.path=l?[...l.path,l]:[],this.parent=l,this.depth=l?l.depth+1:0;for(let c=0;cthis.root.updateBlockedByResize=!1;Tt.read(()=>{p=window.innerWidth}),t(o,()=>{const O=window.innerWidth;O!==p&&(p=O,this.root.updateBlockedByResize=!0,d&&d(),d=_X(g,250),jm.hasAnimatedSinceResize&&(jm.hasAnimatedSinceResize=!1,this.nodes.forEach(sA)))})}l&&this.root.registerSharedNode(l,this),this.options.animate!==!1&&u&&(l||c)&&this.addEventListener("didUpdate",({delta:d,hasLayoutChanged:p,hasRelativeLayoutChanged:g,layout:O})=>{if(this.isTreeAnimationBlocked()){this.target=void 0,this.relativeTarget=void 0;return}const _=this.options.transition||u.getDefaultTransition()||DX,{onLayoutAnimationStart:b,onLayoutAnimationComplete:x}=u.getProps(),w=!this.targetLayout||!T3(this.targetLayout,O),k=!p&&g;if(this.options.layoutRoot||this.resumeFrom||k||p&&(w||!this.currentAnimation)){this.resumeFrom&&(this.resumingFrom=this.resumeFrom,this.resumingFrom.resumingFrom=void 0);const T={...hx(_,"layout"),onPlay:b,onComplete:x};(u.shouldReduceMotion||this.options.layoutRoot)&&(T.delay=0,T.type=!1),this.startAnimation(T),this.setAnimationOrigin(d,k)}else p||sA(this),this.isLead()&&this.options.onExitComplete&&this.options.onExitComplete();this.targetLayout=O})}unmount(){this.options.layoutId&&this.willUpdate(),this.root.nodes.remove(this);const o=this.getStack();o&&o.remove(this),this.parent&&this.parent.children.delete(this),this.instance=void 0,this.eventHandlers.clear(),xa(this.updateProjection)}blockUpdate(){this.updateManuallyBlocked=!0}unblockUpdate(){this.updateManuallyBlocked=!1}isUpdateBlocked(){return this.updateManuallyBlocked||this.updateBlockedByResize}isTreeAnimationBlocked(){return this.isAnimationBlocked||this.parent&&this.parent.isTreeAnimationBlocked()||!1}startUpdate(){this.isUpdateBlocked()||(this.isUpdating=!0,this.nodes&&this.nodes.forEach(PX),this.animationId++)}getTransformTemplate(){const{visualElement:o}=this.options;return o&&o.getProps().transformTemplate}willUpdate(o=!0){if(this.root.hasTreeAnimated=!0,this.root.isUpdateBlocked()){this.options.onExitComplete&&this.options.onExitComplete();return}if(window.MotionCancelOptimisedAnimation&&!this.hasCheckedOptimisedAppear&&M3(this),!this.root.isUpdating&&this.root.startUpdate(),this.isLayoutDirty)return;this.isLayoutDirty=!0;for(let d=0;d{this.isLayoutDirty?this.root.didUpdate():this.root.checkUpdateFailed()})}updateSnapshot(){this.snapshot||!this.instance||(this.snapshot=this.measure(),this.snapshot&&!vn(this.snapshot.measuredBox.x)&&!vn(this.snapshot.measuredBox.y)&&(this.snapshot=void 0))}updateLayout(){if(!this.instance||(this.updateScroll(),!(this.options.alwaysMeasureLayout&&this.isLead())&&!this.isLayoutDirty))return;if(this.resumeFrom&&!this.resumeFrom.instance)for(let c=0;c{const Q=A/1e3;rA(p.x,o.x,Q),rA(p.y,o.y,Q),this.setTargetDelta(p),this.relativeTarget&&this.relativeTargetOrigin&&this.layout&&this.relativeParent&&this.relativeParent.layout&&(gg(g,this.layout.layoutBox,this.relativeParent.layout.layoutBox),QX(this.relativeTarget,this.relativeTargetOrigin,g,Q),T&&hX(this.relativeTarget,T)&&(this.isProjectionDirty=!1),T||(T=Oi()),js(T,this.relativeTarget)),b&&(this.animationValues=d,dX(d,u,this.latestValues,Q,k,w)),this.root.scheduleUpdateProjection(),this.scheduleRender(),this.animationProgress=Q},this.mixTargetDelta(this.options.layoutRoot?1e3:0)}startAnimation(o){var l,c,u;this.notifyListeners("animationStart"),(l=this.currentAnimation)==null||l.stop(),(u=(c=this.resumingFrom)==null?void 0:c.currentAnimation)==null||u.stop(),this.pendingAnimation&&(xa(this.pendingAnimation),this.pendingAnimation=void 0),this.pendingAnimation=Tt.update(()=>{jm.hasAnimatedSinceResize=!0,this.motionValue||(this.motionValue=nh(0)),this.motionValue.jump(0,!1),this.currentAnimation=gX(this.motionValue,[0,1e3],{...o,velocity:0,isSync:!0,onUpdate:d=>{this.mixTargetDelta(d),o.onUpdate&&o.onUpdate(d)},onStop:()=>{},onComplete:()=>{o.onComplete&&o.onComplete(),this.completeAnimation()}}),this.resumingFrom&&(this.resumingFrom.currentAnimation=this.currentAnimation),this.pendingAnimation=void 0})}completeAnimation(){this.resumingFrom&&(this.resumingFrom.currentAnimation=void 0,this.resumingFrom.preserveOpacity=void 0);const o=this.getStack();o&&o.exitAnimationComplete(),this.resumingFrom=this.currentAnimation=this.animationValues=void 0,this.notifyListeners("animationComplete")}finishAnimation(){this.currentAnimation&&(this.mixTargetDelta&&this.mixTargetDelta(bX),this.currentAnimation.stop()),this.completeAnimation()}applyTransformsToTarget(){const o=this.getLead();let{targetWithTransforms:l,target:c,layout:u,latestValues:d}=o;if(!(!l||!c||!u)){if(this!==o&&this.layout&&u&&R3(this.options.animationType,this.layout.layoutBox,u.layoutBox)){c=this.target||Oi();const p=vn(this.layout.layoutBox.x);c.x.min=o.target.x.min,c.x.max=c.x.min+p;const g=vn(this.layout.layoutBox.y);c.y.min=o.target.y.min,c.y.max=c.y.min+g}js(l,c),Nc(l,d),hf(this.projectionDeltaWithTransform,this.layoutCorrected,l,d)}}registerSharedNode(o,l){this.sharedNodes.has(o)||this.sharedNodes.set(o,new yX),this.sharedNodes.get(o).add(l);const u=l.options.initialPromotionConfig;l.promote({transition:u?u.transition:void 0,preserveFollowOpacity:u&&u.shouldPreserveFollowOpacity?u.shouldPreserveFollowOpacity(l):void 0})}isLead(){const o=this.getStack();return o?o.lead===this:!0}getLead(){var l;const{layoutId:o}=this.options;return o?((l=this.getStack())==null?void 0:l.lead)||this:this}getPrevLead(){var l;const{layoutId:o}=this.options;return o?(l=this.getStack())==null?void 0:l.prevLead:void 0}getStack(){const{layoutId:o}=this.options;if(o)return this.root.sharedNodes.get(o)}promote({needsReset:o,transition:l,preserveFollowOpacity:c}={}){const u=this.getStack();u&&u.promote(this,c),o&&(this.projectionDelta=void 0,this.needsReset=!0),l&&this.setOptions({transition:l})}relegate(){const o=this.getStack();return o?o.relegate(this):!1}resetSkewAndRotation(){const{visualElement:o}=this.options;if(!o)return;let l=!1;const{latestValues:c}=o;if((c.z||c.rotate||c.rotateX||c.rotateY||c.rotateZ||c.skewX||c.skewY)&&(l=!0),!l)return;const u={};c.z&&h_("z",o,u,this.animationValues);for(let d=0;d{var l;return(l=o.currentAnimation)==null?void 0:l.stop()}),this.root.nodes.forEach(iA),this.root.sharedNodes.clear()}}}function xX(t){t.updateLayout()}function wX(t){var i;const e=((i=t.resumeFrom)==null?void 0:i.snapshot)||t.snapshot;if(t.isLead()&&t.layout&&e&&t.hasListeners("didUpdate")){const{layoutBox:n,measuredBox:s}=t.layout,{animationType:r}=t.options,o=e.source!==t.layout.source;r==="size"?dr(p=>{const g=o?e.measuredBox[p]:e.layoutBox[p],O=vn(g);g.min=n[p].min,g.max=g.min+O}):R3(r,e.layoutBox,n)&&dr(p=>{const g=o?e.measuredBox[p]:e.layoutBox[p],O=vn(n[p]);g.max=g.min+O,t.relativeTarget&&!t.currentAnimation&&(t.isProjectionDirty=!0,t.relativeTarget[p].max=t.relativeTarget[p].min+O)});const l=Bc();hf(l,n,e.layoutBox);const c=Bc();o?hf(c,t.applyTransform(s,!0),e.measuredBox):hf(c,n,e.layoutBox);const u=!k3(l);let d=!1;if(!t.resumeFrom){const p=t.getClosestProjectingParent();if(p&&!p.resumeFrom){const{snapshot:g,layout:O}=p;if(g&&O){const _=Oi();gg(_,e.layoutBox,g.layoutBox);const b=Oi();gg(b,n,O.layoutBox),T3(_,b)||(d=!0),p.options.layoutRoot&&(t.relativeTarget=b,t.relativeTargetOrigin=_,t.relativeParent=p)}}}t.notifyListeners("didUpdate",{layout:n,snapshot:e,delta:c,layoutDelta:l,hasLayoutChanged:u,hasRelativeLayoutChanged:d})}else if(t.isLead()){const{onExitComplete:n}=t.options;n&&n()}t.options.transition=void 0}function CX(t){t.parent&&(t.isProjecting()||(t.isProjectionDirty=t.parent.isProjectionDirty),t.isSharedProjectionDirty||(t.isSharedProjectionDirty=!!(t.isProjectionDirty||t.parent.isProjectionDirty||t.parent.isSharedProjectionDirty)),t.isTransformDirty||(t.isTransformDirty=t.parent.isTransformDirty))}function kX(t){t.isProjectionDirty=t.isSharedProjectionDirty=t.isTransformDirty=!1}function TX(t){t.clearSnapshot()}function iA(t){t.clearMeasurements()}function nA(t){t.isLayoutDirty=!1}function AX(t){const{visualElement:e}=t.options;e&&e.getProps().onBeforeLayoutMeasure&&e.notify("BeforeLayoutMeasure"),t.resetTransform()}function sA(t){t.finishAnimation(),t.targetDelta=t.relativeTarget=t.target=void 0,t.isProjectionDirty=!0}function EX(t){t.resolveTargetDelta()}function MX(t){t.calcProjection()}function PX(t){t.resetSkewAndRotation()}function RX(t){t.removeLeadSnapshot()}function rA(t,e,i){t.translate=zt(e.translate,0,i),t.scale=zt(e.scale,1,i),t.origin=e.origin,t.originPoint=e.originPoint}function oA(t,e,i,n){t.min=zt(e.min,i.min,n),t.max=zt(e.max,i.max,n)}function QX(t,e,i,n){oA(t.x,e.x,i.x,n),oA(t.y,e.y,i.y,n)}function LX(t){return t.animationValues&&t.animationValues.opacityExit!==void 0}const DX={duration:.45,ease:[.4,0,.1,1]},aA=t=>typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().includes(t),lA=aA("applewebkit/")&&!aA("chrome/")?Math.round:Ps;function cA(t){t.min=lA(t.min),t.max=lA(t.max)}function BX(t){cA(t.x),cA(t.y)}function R3(t,e,i){return t==="position"||t==="preserve-aspect"&&!rX(GT(e),GT(i),.2)}function $X(t){var e;return t!==t.root&&((e=t.scroll)==null?void 0:e.wasRoot)}const NX=P3({attachResizeListener:(t,e)=>Ef(t,"resize",e),measureScroll:()=>{var t,e;return{x:document.documentElement.scrollLeft||((t=document.body)==null?void 0:t.scrollLeft)||0,y:document.documentElement.scrollTop||((e=document.body)==null?void 0:e.scrollTop)||0}},checkIsScrollRoot:()=>!0}),u_={current:void 0},Q3=P3({measureScroll:t=>({x:t.scrollLeft,y:t.scrollTop}),defaultParent:()=>{if(!u_.current){const t=new NX({});t.mount(window),t.setOptions({layoutScroll:!0}),u_.current=t}return u_.current},resetTransform:(t,e)=>{t.style.transform=e!==void 0?e:"none"},checkIsScrollRoot:t=>window.getComputedStyle(t).position==="fixed"}),Sx=X.createContext({transformPagePoint:t=>t,isStatic:!1,reducedMotion:"never"});function hA(t,e){if(typeof t=="function")return t(e);t!=null&&(t.current=e)}function zX(...t){return e=>{let i=!1;const n=t.map(s=>{const r=hA(s,e);return!i&&typeof r=="function"&&(i=!0),r});if(i)return()=>{for(let s=0;s{const{width:O,height:_,top:b,left:x,right:w,bottom:k}=c.current;if(e||r===!1||!l.current||!O||!_)return;const T=i==="left"?`left: ${x}`:`right: ${w}`,A=n==="bottom"?`bottom: ${k}`:`top: ${b}`;l.current.dataset.motionPopId=o;const Q=document.createElement("style");u&&(Q.nonce=u);const E=s??document.head;return E.appendChild(Q),Q.sheet&&Q.sheet.insertRule(` [data-motion-pop-id="${o}"] { position: absolute !important; width: ${O}px !important; @@ -54,24 +54,24 @@ Error generating stack: `+m.message+` ${T}px !important; ${A}px !important; } - `),()=>{E.contains(Q)&&E.removeChild(Q)}},[e]),S.jsx(IX,{isPresent:e,childRef:l,sizeRef:c,pop:s,children:s===!1?t:Z.cloneElement(t,{ref:p})})}const XX=({children:t,initial:e,isPresent:i,onExitComplete:n,custom:r,presenceAffectsLayout:s,mode:o,anchorX:l,anchorY:c,root:u})=>{const d=HS(ZX),p=Z.useId();let g=!0,O=Z.useMemo(()=>(g=!1,{id:p,initial:e,isPresent:i,custom:r,onExitComplete:_=>{d.set(_,!0);for(const b of d.values())if(!b)return;n&&n()},register:_=>(d.set(_,!1),()=>d.delete(_))}),[i,d,n]);return s&&g&&(O={...O}),Z.useMemo(()=>{d.forEach((_,b)=>d.set(b,!1))},[i]),Z.useEffect(()=>{!i&&!d.size&&n&&n()},[i]),t=S.jsx(VX,{pop:o==="popLayout",isPresent:i,anchorX:l,anchorY:c,root:u,children:t}),S.jsx(aO.Provider,{value:O,children:t})};function ZX(){return new Map}function L3(t=!0){const e=Z.useContext(aO);if(e===null)return[!0,null];const{isPresent:i,onExitComplete:n,register:r}=e,s=Z.useId();Z.useEffect(()=>{if(t)return r(s)},[t]);const o=Z.useCallback(()=>t&&n&&n(s),[s,n,t]);return!i&&n?[!1,o]:[!0]}const Wp=t=>t.key||"";function uA(t){const e=[];return Z.Children.forEach(t,i=>{Z.isValidElement(i)&&e.push(i)}),e}const xx=({children:t,custom:e,initial:i=!0,onExitComplete:n,presenceAffectsLayout:r=!0,mode:s="sync",propagate:o=!1,anchorX:l="left",anchorY:c="top",root:u})=>{const[d,p]=L3(o),g=Z.useMemo(()=>uA(t),[t]),O=o&&!d?[]:g.map(Wp),_=Z.useRef(!0),b=Z.useRef(g),x=HS(()=>new Map),w=Z.useRef(new Set),[k,T]=Z.useState(g),[A,Q]=Z.useState(g);lL(()=>{_.current=!1,b.current=g;for(let N=0;N{const q=Wp(N),J=o&&!d?!1:g===A||O.includes(q),U=()=>{if(w.current.has(q))return;if(w.current.add(q),x.has(q))x.set(q,!0);else return;let R=!0;x.forEach(B=>{B||(R=!1)}),R&&(z==null||z(),Q(b.current),o&&(p==null||p()),n&&n())};return S.jsx(XX,{isPresent:J,initial:!_.current||i?void 0:!1,custom:e,presenceAffectsLayout:r,mode:s,root:u,onExitComplete:J?void 0:U,anchorX:l,anchorY:c,children:N},q)})})},D3=Z.createContext({strict:!1}),fA={animation:["animate","variants","whileHover","whileTap","exit","whileInView","whileFocus","whileDrag"],exit:["exit"],drag:["drag","dragControls"],focus:["whileFocus"],hover:["whileHover","onHoverStart","onHoverEnd"],tap:["whileTap","onTap","onTapStart","onTapCancel"],pan:["onPan","onPanStart","onPanSessionStart","onPanEnd"],inView:["whileInView","onViewportEnter","onViewportLeave"],layout:["layout","layoutId"]};let dA=!1;function qX(){if(dA)return;const t={};for(const e in fA)t[e]={isEnabled:i=>fA[e].some(n=>!!i[n])};h3(t),dA=!0}function B3(){return qX(),PV()}function WX(t){const e=B3();for(const i in t)e[i]={...e[i],...t[i]};h3(e)}const UX=new Set(["animate","exit","variants","initial","style","values","variants","transition","transformTemplate","custom","inherit","onBeforeLayoutMeasure","onAnimationStart","onAnimationComplete","onUpdate","onDragStart","onDrag","onDragEnd","onMeasureDragConstraints","onDirectionLock","onDragTransitionEnd","_dragX","_dragY","onHoverStart","onHoverEnd","onViewportEnter","onViewportLeave","globalTapTarget","propagate","ignoreStrict","viewport"]);function Og(t){return t.startsWith("while")||t.startsWith("drag")&&t!=="draggable"||t.startsWith("layout")||t.startsWith("onTap")||t.startsWith("onPan")||t.startsWith("onLayout")||UX.has(t)}let $3=t=>!Og(t);function YX(t){typeof t=="function"&&($3=e=>e.startsWith("on")?!Og(e):t(e))}try{YX(require("@emotion/is-prop-valid").default)}catch{}function HX(t,e,i){const n={};for(const r in t)r==="values"&&typeof t.values=="object"||($3(r)||i===!0&&Og(r)||!e&&!Og(r)||t.draggable&&r.startsWith("onDrag"))&&(n[r]=t[r]);return n}const hO=Z.createContext({});function FX(t,e){if(cO(t)){const{initial:i,animate:n}=t;return{initial:i===!1||Af(i)?i:void 0,animate:Af(n)?n:void 0}}return t.inherit!==!1?e:{}}function GX(t){const{initial:e,animate:i}=FX(t,Z.useContext(hO));return Z.useMemo(()=>({initial:e,animate:i}),[pA(e),pA(i)])}function pA(t){return Array.isArray(t)?t.join(" "):t}const wx=()=>({style:{},transform:{},transformOrigin:{},vars:{}});function z3(t,e,i){for(const n in e)!sn(e[n])&&!O3(n,i)&&(t[n]=e[n])}function KX({transformTemplate:t},e){return Z.useMemo(()=>{const i=wx();return yx(i,e,t),Object.assign({},i.vars,i.style)},[e])}function JX(t,e){const i=t.style||{},n={};return z3(n,i,t),Object.assign(n,KX(t,e)),n}function e9(t,e){const i={},n=JX(t,e);return t.drag&&t.dragListener!==!1&&(i.draggable=!1,n.userSelect=n.WebkitUserSelect=n.WebkitTouchCallout="none",n.touchAction=t.drag===!0?"none":`pan-${t.drag==="x"?"y":"x"}`),t.tabIndex===void 0&&(t.onTap||t.onTapStart||t.whileTap)&&(i.tabIndex=0),i.style=n,i}const N3=()=>({...wx(),attrs:{}});function t9(t,e,i,n){const r=Z.useMemo(()=>{const s=N3();return v3(s,e,y3(n),t.transformTemplate,t.style),{...s.attrs,style:{...s.style}}},[e]);if(t.style){const s={};z3(s,t.style,t),r.style={...s,...r.style}}return r}const i9=["animate","circle","defs","desc","ellipse","g","image","line","filter","marker","mask","metadata","path","pattern","polygon","polyline","rect","stop","switch","symbol","svg","text","tspan","use","view"];function Cx(t){return typeof t!="string"||t.includes("-")?!1:!!(i9.indexOf(t)>-1||/[A-Z]/u.test(t))}function n9(t,e,i,{latestValues:n},r,s=!1,o){const c=(o??Cx(t)?t9:e9)(e,n,r,t),u=HX(e,typeof t=="string",s),d=t!==Z.Fragment?{...u,...c,ref:i}:{},{children:p}=e,g=Z.useMemo(()=>sn(p)?p.get():p,[p]);return Z.createElement(t,{...d,children:g})}function r9({scrapeMotionValuesFromProps:t,createRenderState:e},i,n,r){return{latestValues:s9(i,n,r,t),renderState:e()}}function s9(t,e,i,n){const r={},s=n(t,{});for(const g in s)r[g]=Nm(s[g]);let{initial:o,animate:l}=t;const c=cO(t),u=l3(t);e&&u&&!c&&t.inherit!==!1&&(o===void 0&&(o=e.initial),l===void 0&&(l=e.animate));let d=i?i.initial===!1:!1;d=d||o===!1;const p=d?l:o;if(p&&typeof p!="boolean"&&!lO(p)){const g=Array.isArray(p)?p:[p];for(let O=0;O(e,i)=>{const n=Z.useContext(hO),r=Z.useContext(aO),s=()=>r9(t,e,n,r);return i?s():HS(s)},o9=j3({scrapeMotionValuesFromProps:bx,createRenderState:wx}),a9=j3({scrapeMotionValuesFromProps:b3,createRenderState:N3}),l9=Symbol.for("motionComponentSymbol");function c9(t,e,i){const n=Z.useRef(i);Z.useInsertionEffect(()=>{n.current=i});const r=Z.useRef(null);return Z.useCallback(s=>{var l;s&&((l=t.onMount)==null||l.call(t,s)),e&&(s?e.mount(s):e.unmount());const o=n.current;if(typeof o=="function")if(s){const c=o(s);typeof c=="function"&&(r.current=c)}else r.current?(r.current(),r.current=null):o(s);else o&&(o.current=s)},[e])}const I3=Z.createContext({});function Mc(t){return t&&typeof t=="object"&&Object.prototype.hasOwnProperty.call(t,"current")}function h9(t,e,i,n,r,s){var T,A;const{visualElement:o}=Z.useContext(hO),l=Z.useContext(D3),c=Z.useContext(aO),u=Z.useContext(Sx),d=u.reducedMotion,p=u.skipAnimations,g=Z.useRef(null),O=Z.useRef(!1);n=n||l.renderer,!g.current&&n&&(g.current=n(t,{visualState:e,parent:o,props:i,presenceContext:c,blockInitialAnimation:c?c.initial===!1:!1,reducedMotionConfig:d,skipAnimations:p,isSVG:s}),O.current&&g.current&&(g.current.manuallyAnimateOnMount=!0));const _=g.current,b=Z.useContext(I3);_&&!_.projection&&r&&(_.type==="html"||_.type==="svg")&&u9(g.current,i,r,b);const x=Z.useRef(!1);Z.useInsertionEffect(()=>{_&&x.current&&_.update(i,c)});const w=i[HL],k=Z.useRef(!!w&&!((T=window.MotionHandoffIsComplete)!=null&&T.call(window,w))&&((A=window.MotionHasOptimisedAnimation)==null?void 0:A.call(window,w)));return lL(()=>{O.current=!0,_&&(x.current=!0,window.MotionIsMounted=!0,_.updateFeatures(),_.scheduleRenderMicrotask(),k.current&&_.animationState&&_.animationState.animateChanges())}),Z.useEffect(()=>{_&&(!k.current&&_.animationState&&_.animationState.animateChanges(),k.current&&(queueMicrotask(()=>{var Q;(Q=window.MotionHandoffMarkAsComplete)==null||Q.call(window,w)}),k.current=!1),_.enteringChildren=void 0)}),_}function u9(t,e,i,n){const{layoutId:r,layout:s,drag:o,dragConstraints:l,layoutScroll:c,layoutRoot:u,layoutCrossfade:d}=e;t.projection=new i(t.latestValues,e["data-framer-portal-id"]?void 0:V3(t.parent)),t.projection.setOptions({layoutId:r,layout:s,alwaysMeasureLayout:!!o||l&&Mc(l),visualElement:t,animationType:typeof s=="string"?s:"both",initialPromotionConfig:n,crossfade:d,layoutScroll:c,layoutRoot:u})}function V3(t){if(t)return t.options.allowProjection!==!1?t.projection:V3(t.parent)}function f_(t,{forwardMotionProps:e=!1,type:i}={},n,r){n&&WX(n);const s=i?i==="svg":Cx(t),o=s?a9:o9;function l(u,d){let p;const g={...Z.useContext(Sx),...u,layoutId:f9(u)},{isStatic:O}=g,_=GX(u),b=o(u,O);if(!O&&aL){d9();const x=p9(g);p=x.MeasureLayout,_.visualElement=h9(t,b,g,r,x.ProjectionNode,s)}return S.jsxs(hO.Provider,{value:_,children:[p&&_.visualElement?S.jsx(p,{visualElement:_.visualElement,...g}):null,n9(t,u,c9(b,_.visualElement,d),b,O,e,s)]})}l.displayName=`motion.${typeof t=="string"?t:`create(${t.displayName??t.name??""})`}`;const c=Z.forwardRef(l);return c[l9]=t,c}function f9({layoutId:t}){const e=Z.useContext(YS).id;return e&&t!==void 0?e+"-"+t:t}function d9(t,e){Z.useContext(D3).strict}function p9(t){const e=B3(),{drag:i,layout:n}=e;if(!i&&!n)return{};const r={...i,...n};return{MeasureLayout:i!=null&&i.isEnabled(t)||n!=null&&n.isEnabled(t)?r.MeasureLayout:void 0,ProjectionNode:r.ProjectionNode}}function m9(t,e){if(typeof Proxy>"u")return f_;const i=new Map,n=(s,o)=>f_(s,o,t,e),r=(s,o)=>n(s,o);return new Proxy(r,{get:(s,o)=>o==="create"?n:(i.has(o)||i.set(o,f_(o,void 0,t,e)),i.get(o))})}const g9=(t,e)=>e.isSVG??Cx(t)?new YV(e):new VV(e,{allowProjection:t!==Z.Fragment});class O9 extends Ma{constructor(e){super(e),e.animationState||(e.animationState=JV(e))}updateAnimationControlsSubscription(){const{animate:e}=this.node.getProps();lO(e)&&(this.unmountControls=e.subscribe(this.node))}mount(){this.updateAnimationControlsSubscription()}update(){const{animate:e}=this.node.getProps(),{animate:i}=this.node.prevProps||{};e!==i&&this.updateAnimationControlsSubscription()}unmount(){var e;this.node.animationState.reset(),(e=this.unmountControls)==null||e.call(this)}}let v9=0;class _9 extends Ma{constructor(){super(...arguments),this.id=v9++}update(){if(!this.node.presenceContext)return;const{isPresent:e,onExitComplete:i}=this.node.presenceContext,{isPresent:n}=this.node.prevPresenceContext||{};if(!this.node.animationState||e===n)return;const r=this.node.animationState.setActive("exit",!e);i&&!e&&r.then(()=>{i(this.id)})}mount(){const{register:e,onExitComplete:i}=this.node.presenceContext||{};i&&i(this.id),e&&(this.unmount=e(this.id))}unmount(){}}const y9={animation:{Feature:O9},exit:{Feature:_9}};function cd(t){return{point:{x:t.pageX,y:t.pageY}}}const b9=t=>e=>gx(e)&&t(e,cd(e));function uf(t,e,i,n){return Ef(t,e,b9(i),n)}const X3=({current:t})=>t?t.ownerDocument.defaultView:null,mA=(t,e)=>Math.abs(t-e);function S9(t,e){const i=mA(t.x,e.x),n=mA(t.y,e.y);return Math.sqrt(i**2+n**2)}const gA=new Set(["auto","scroll"]);class Z3{constructor(e,i,{transformPagePoint:n,contextWindow:r=window,dragSnapToOrigin:s=!1,distanceThreshold:o=3,element:l}={}){if(this.startEvent=null,this.lastMoveEvent=null,this.lastMoveEventInfo=null,this.handlers={},this.contextWindow=window,this.scrollPositions=new Map,this.removeScrollListeners=null,this.onElementScroll=O=>{this.handleScroll(O.target)},this.onWindowScroll=()=>{this.handleScroll(window)},this.updatePoint=()=>{if(!(this.lastMoveEvent&&this.lastMoveEventInfo))return;const O=p_(this.lastMoveEventInfo,this.history),_=this.startEvent!==null,b=S9(O.offset,{x:0,y:0})>=this.distanceThreshold;if(!_&&!b)return;const{point:x}=O,{timestamp:w}=qi;this.history.push({...x,timestamp:w});const{onStart:k,onMove:T}=this.handlers;_||(k&&k(this.lastMoveEvent,O),this.startEvent=this.lastMoveEvent),T&&T(this.lastMoveEvent,O)},this.handlePointerMove=(O,_)=>{this.lastMoveEvent=O,this.lastMoveEventInfo=d_(_,this.transformPagePoint),Tt.update(this.updatePoint,!0)},this.handlePointerUp=(O,_)=>{this.end();const{onEnd:b,onSessionEnd:x,resumeAnimation:w}=this.handlers;if((this.dragSnapToOrigin||!this.startEvent)&&w&&w(),!(this.lastMoveEvent&&this.lastMoveEventInfo))return;const k=p_(O.type==="pointercancel"?this.lastMoveEventInfo:d_(_,this.transformPagePoint),this.history);this.startEvent&&b&&b(O,k),x&&x(O,k)},!gx(e))return;this.dragSnapToOrigin=s,this.handlers=i,this.transformPagePoint=n,this.distanceThreshold=o,this.contextWindow=r||window;const c=cd(e),u=d_(c,this.transformPagePoint),{point:d}=u,{timestamp:p}=qi;this.history=[{...d,timestamp:p}];const{onSessionStart:g}=i;g&&g(e,p_(u,this.history)),this.removeListeners=od(uf(this.contextWindow,"pointermove",this.handlePointerMove),uf(this.contextWindow,"pointerup",this.handlePointerUp),uf(this.contextWindow,"pointercancel",this.handlePointerUp)),l&&this.startScrollTracking(l)}startScrollTracking(e){let i=e.parentElement;for(;i;){const n=getComputedStyle(i);(gA.has(n.overflowX)||gA.has(n.overflowY))&&this.scrollPositions.set(i,{x:i.scrollLeft,y:i.scrollTop}),i=i.parentElement}this.scrollPositions.set(window,{x:window.scrollX,y:window.scrollY}),window.addEventListener("scroll",this.onElementScroll,{capture:!0}),window.addEventListener("scroll",this.onWindowScroll),this.removeScrollListeners=()=>{window.removeEventListener("scroll",this.onElementScroll,{capture:!0}),window.removeEventListener("scroll",this.onWindowScroll)}}handleScroll(e){const i=this.scrollPositions.get(e);if(!i)return;const n=e===window,r=n?{x:window.scrollX,y:window.scrollY}:{x:e.scrollLeft,y:e.scrollTop},s={x:r.x-i.x,y:r.y-i.y};s.x===0&&s.y===0||(n?this.lastMoveEventInfo&&(this.lastMoveEventInfo.point.x+=s.x,this.lastMoveEventInfo.point.y+=s.y):this.history.length>0&&(this.history[0].x-=s.x,this.history[0].y-=s.y),this.scrollPositions.set(e,r),Tt.update(this.updatePoint,!0))}updateHandlers(e){this.handlers=e}end(){this.removeListeners&&this.removeListeners(),this.removeScrollListeners&&this.removeScrollListeners(),this.scrollPositions.clear(),ba(this.updatePoint)}}function d_(t,e){return e?{point:e(t.point)}:t}function OA(t,e){return{x:t.x-e.x,y:t.y-e.y}}function p_({point:t},e){return{point:t,delta:OA(t,q3(e)),offset:OA(t,x9(e)),velocity:w9(e,.1)}}function x9(t){return t[0]}function q3(t){return t[t.length-1]}function w9(t,e){if(t.length<2)return{x:0,y:0};let i=t.length-1,n=null;const r=q3(t);for(;i>=0&&(n=t[i],!(r.timestamp-n.timestamp>Wr(e)));)i--;if(!n)return{x:0,y:0};n===t[0]&&t.length>2&&r.timestamp-n.timestamp>Wr(e)*2&&(n=t[1]);const s=Cr(r.timestamp-n.timestamp);if(s===0)return{x:0,y:0};const o={x:(r.x-n.x)/s,y:(r.y-n.y)/s};return o.x===1/0&&(o.x=0),o.y===1/0&&(o.y=0),o}function C9(t,{min:e,max:i},n){return e!==void 0&&ti&&(t=n?Nt(i,t,n.max):Math.min(t,i)),t}function vA(t,e,i){return{min:e!==void 0?t.min+e:void 0,max:i!==void 0?t.max+i-(t.max-t.min):void 0}}function k9(t,{top:e,left:i,bottom:n,right:r}){return{x:vA(t.x,i,r),y:vA(t.y,e,n)}}function _A(t,e){let i=e.min-t.min,n=e.max-t.max;return e.max-e.minn?i=Cf(e.min,e.max-n,t.min):n>r&&(i=Cf(t.min,t.max-r,e.min)),As(0,1,i)}function E9(t,e){const i={};return e.min!==void 0&&(i.min=e.min-t.min),e.max!==void 0&&(i.max=e.max-t.min),i}const j1=.35;function M9(t=j1){return t===!1?t=0:t===!0&&(t=j1),{x:yA(t,"left","right"),y:yA(t,"top","bottom")}}function yA(t,e,i){return{min:bA(t,e),max:bA(t,i)}}function bA(t,e){return typeof t=="number"?t:t[e]||0}const P9=new WeakMap;class R9{constructor(e){this.openDragLock=null,this.isDragging=!1,this.currentDirection=null,this.originPoint={x:0,y:0},this.constraints=!1,this.hasMutatedConstraints=!1,this.elastic=Oi(),this.latestPointerEvent=null,this.latestPanInfo=null,this.visualElement=e}start(e,{snapToCursor:i=!1,distanceThreshold:n}={}){const{presenceContext:r}=this.visualElement;if(r&&r.isPresent===!1)return;const s=p=>{i&&this.snapToCursor(cd(p).point),this.stopAnimation()},o=(p,g)=>{const{drag:O,dragPropagation:_,onDragStart:b}=this.getProps();if(O&&!_&&(this.openDragLock&&this.openDragLock(),this.openDragLock=aV(O),!this.openDragLock))return;this.latestPointerEvent=p,this.latestPanInfo=g,this.isDragging=!0,this.currentDirection=null,this.resolveConstraints(),this.visualElement.projection&&(this.visualElement.projection.isAnimationBlocked=!0,this.visualElement.projection.target=void 0),ds(w=>{let k=this.getAxisMotionValue(w).get()||0;if(ws.test(k)){const{projection:T}=this.visualElement;if(T&&T.layout){const A=T.layout.layoutBox[w];A&&(k=vn(A)*(parseFloat(k)/100))}}this.originPoint[w]=k}),b&&Tt.update(()=>b(p,g),!1,!0),P1(this.visualElement,"transform");const{animationState:x}=this.visualElement;x&&x.setActive("whileDrag",!0)},l=(p,g)=>{this.latestPointerEvent=p,this.latestPanInfo=g;const{dragPropagation:O,dragDirectionLock:_,onDirectionLock:b,onDrag:x}=this.getProps();if(!O&&!this.openDragLock)return;const{offset:w}=g;if(_&&this.currentDirection===null){this.currentDirection=L9(w),this.currentDirection!==null&&b&&b(this.currentDirection);return}this.updateAxis("x",g.point,w),this.updateAxis("y",g.point,w),this.visualElement.render(),x&&Tt.update(()=>x(p,g),!1,!0)},c=(p,g)=>{this.latestPointerEvent=p,this.latestPanInfo=g,this.stop(p,g),this.latestPointerEvent=null,this.latestPanInfo=null},u=()=>{const{dragSnapToOrigin:p}=this.getProps();(p||this.constraints)&&this.startAnimation({x:0,y:0})},{dragSnapToOrigin:d}=this.getProps();this.panSession=new Z3(e,{onSessionStart:s,onStart:o,onMove:l,onSessionEnd:c,resumeAnimation:u},{transformPagePoint:this.visualElement.getTransformPagePoint(),dragSnapToOrigin:d,distanceThreshold:n,contextWindow:X3(this.visualElement),element:this.visualElement.current})}stop(e,i){const n=e||this.latestPointerEvent,r=i||this.latestPanInfo,s=this.isDragging;if(this.cancel(),!s||!r||!n)return;const{velocity:o}=r;this.startAnimation(o);const{onDragEnd:l}=this.getProps();l&&Tt.postRender(()=>l(n,r))}cancel(){this.isDragging=!1;const{projection:e,animationState:i}=this.visualElement;e&&(e.isAnimationBlocked=!1),this.endPanSession();const{dragPropagation:n}=this.getProps();!n&&this.openDragLock&&(this.openDragLock(),this.openDragLock=null),i&&i.setActive("whileDrag",!1)}endPanSession(){this.panSession&&this.panSession.end(),this.panSession=void 0}updateAxis(e,i,n){const{drag:r}=this.getProps();if(!n||!Up(e,r,this.currentDirection))return;const s=this.getAxisMotionValue(e);let o=this.originPoint[e]+n[e];this.constraints&&this.constraints[e]&&(o=C9(o,this.constraints[e],this.elastic[e])),s.set(o)}resolveConstraints(){var s;const{dragConstraints:e,dragElastic:i}=this.getProps(),n=this.visualElement.projection&&!this.visualElement.projection.layout?this.visualElement.projection.measure(!1):(s=this.visualElement.projection)==null?void 0:s.layout,r=this.constraints;e&&Mc(e)?this.constraints||(this.constraints=this.resolveRefConstraints()):e&&n?this.constraints=k9(n.layoutBox,e):this.constraints=!1,this.elastic=M9(i),r!==this.constraints&&!Mc(e)&&n&&this.constraints&&!this.hasMutatedConstraints&&ds(o=>{this.constraints!==!1&&this.getAxisMotionValue(o)&&(this.constraints[o]=E9(n.layoutBox[o],this.constraints[o]))})}resolveRefConstraints(){const{dragConstraints:e,onMeasureDragConstraints:i}=this.getProps();if(!e||!Mc(e))return!1;const n=e.current,{projection:r}=this.visualElement;if(!r||!r.layout)return!1;const s=BV(n,r.root,this.visualElement.getTransformPagePoint());let o=T9(r.layout.layoutBox,s);if(i){const l=i(QV(o));this.hasMutatedConstraints=!!l,l&&(o=f3(l))}return o}startAnimation(e){const{drag:i,dragMomentum:n,dragElastic:r,dragTransition:s,dragSnapToOrigin:o,onDragTransitionEnd:l}=this.getProps(),c=this.constraints||{},u=ds(d=>{if(!Up(d,i,this.currentDirection))return;let p=c&&c[d]||{};o&&(p={min:0,max:0});const g=r?200:1e6,O=r?40:1e7,_={type:"inertia",velocity:n?e[d]:0,bounceStiffness:g,bounceDamping:O,timeConstant:750,restDelta:1,restSpeed:10,...s,...p};return this.startAxisValueAnimation(d,_)});return Promise.all(u).then(l)}startAxisValueAnimation(e,i){const n=this.getAxisMotionValue(e);return P1(this.visualElement,e),n.start(ux(e,n,0,i,this.visualElement,!1))}stopAnimation(){ds(e=>this.getAxisMotionValue(e).stop())}getAxisMotionValue(e){const i=`_drag${e.toUpperCase()}`,n=this.visualElement.getProps(),r=n[i];return r||this.visualElement.getValue(e,(n.initial?n.initial[e]:void 0)||0)}snapToCursor(e){ds(i=>{const{drag:n}=this.getProps();if(!Up(i,n,this.currentDirection))return;const{projection:r}=this.visualElement,s=this.getAxisMotionValue(i);if(r&&r.layout){const{min:o,max:l}=r.layout.layoutBox[i],c=s.get()||0;s.set(e[i]-Nt(o,l,.5)+c)}})}scalePositionWithinConstraints(){if(!this.visualElement.current)return;const{drag:e,dragConstraints:i}=this.getProps(),{projection:n}=this.visualElement;if(!Mc(i)||!n||!this.constraints)return;this.stopAnimation();const r={x:0,y:0};ds(o=>{const l=this.getAxisMotionValue(o);if(l&&this.constraints!==!1){const c=l.get();r[o]=A9({min:c,max:c},this.constraints[o])}});const{transformTemplate:s}=this.visualElement.getProps();this.visualElement.current.style.transform=s?s({},""):"none",n.root&&n.root.updateScroll(),n.updateLayout(),this.constraints=!1,this.resolveConstraints(),ds(o=>{if(!Up(o,e,null))return;const l=this.getAxisMotionValue(o),{min:c,max:u}=this.constraints[o];l.set(Nt(c,u,r[o]))}),this.visualElement.render()}addListeners(){if(!this.visualElement.current)return;P9.set(this.visualElement,this);const e=this.visualElement.current,i=uf(e,"pointerdown",u=>{const{drag:d,dragListener:p=!0}=this.getProps(),g=u.target,O=g!==e&&dV(g);d&&p&&!O&&this.start(u)});let n;const r=()=>{const{dragConstraints:u}=this.getProps();Mc(u)&&u.current&&(this.constraints=this.resolveRefConstraints(),n||(n=Q9(e,u.current,()=>this.scalePositionWithinConstraints())))},{projection:s}=this.visualElement,o=s.addEventListener("measure",r);s&&!s.layout&&(s.root&&s.root.updateScroll(),s.updateLayout()),Tt.read(r);const l=Ef(window,"resize",()=>this.scalePositionWithinConstraints()),c=s.addEventListener("didUpdate",(({delta:u,hasLayoutChanged:d})=>{this.isDragging&&d&&(ds(p=>{const g=this.getAxisMotionValue(p);g&&(this.originPoint[p]+=u[p].translate,g.set(g.get()+u[p].translate))}),this.visualElement.render())}));return()=>{l(),i(),o(),c&&c(),n&&n()}}getProps(){const e=this.visualElement.getProps(),{drag:i=!1,dragDirectionLock:n=!1,dragPropagation:r=!1,dragConstraints:s=!1,dragElastic:o=j1,dragMomentum:l=!0}=e;return{...e,drag:i,dragDirectionLock:n,dragPropagation:r,dragConstraints:s,dragElastic:o,dragMomentum:l}}}function SA(t){let e=!0;return()=>{if(e){e=!1;return}t()}}function Q9(t,e,i){const n=ET(t,SA(i)),r=ET(e,SA(i));return()=>{n(),r()}}function Up(t,e,i){return(e===!0||e===t)&&(i===null||i===t)}function L9(t,e=10){let i=null;return Math.abs(t.y)>e?i="y":Math.abs(t.x)>e&&(i="x"),i}class D9 extends Ma{constructor(e){super(e),this.removeGroupControls=Pr,this.removeListeners=Pr,this.controls=new R9(e)}mount(){const{dragControls:e}=this.node.getProps();e&&(this.removeGroupControls=e.subscribe(this.controls)),this.removeListeners=this.controls.addListeners()||Pr}update(){const{dragControls:e}=this.node.getProps(),{dragControls:i}=this.node.prevProps||{};e!==i&&(this.removeGroupControls(),e&&(this.removeGroupControls=e.subscribe(this.controls)))}unmount(){this.removeGroupControls(),this.removeListeners(),this.controls.isDragging||this.controls.endPanSession()}}const m_=t=>(e,i)=>{t&&Tt.update(()=>t(e,i),!1,!0)};class B9 extends Ma{constructor(){super(...arguments),this.removePointerDownListener=Pr}onPointerDown(e){this.session=new Z3(e,this.createPanHandlers(),{transformPagePoint:this.node.getTransformPagePoint(),contextWindow:X3(this.node)})}createPanHandlers(){const{onPanSessionStart:e,onPanStart:i,onPan:n,onPanEnd:r}=this.node.getProps();return{onSessionStart:m_(e),onStart:m_(i),onMove:m_(n),onEnd:(s,o)=>{delete this.session,r&&Tt.postRender(()=>r(s,o))}}}mount(){this.removePointerDownListener=uf(this.node.current,"pointerdown",e=>this.onPointerDown(e))}update(){this.session&&this.session.updateHandlers(this.createPanHandlers())}unmount(){this.removePointerDownListener(),this.session&&this.session.end()}}let g_=!1;class $9 extends Z.Component{componentDidMount(){const{visualElement:e,layoutGroup:i,switchLayoutGroup:n,layoutId:r}=this.props,{projection:s}=e;s&&(i.group&&i.group.add(s),n&&n.register&&r&&n.register(s),g_&&s.root.didUpdate(),s.addEventListener("animationComplete",()=>{this.safeToRemove()}),s.setOptions({...s.options,layoutDependency:this.props.layoutDependency,onExitComplete:()=>this.safeToRemove()})),jm.hasEverUpdated=!0}getSnapshotBeforeUpdate(e){const{layoutDependency:i,visualElement:n,drag:r,isPresent:s}=this.props,{projection:o}=n;return o&&(o.isPresent=s,e.layoutDependency!==i&&o.setOptions({...o.options,layoutDependency:i}),g_=!0,r||e.layoutDependency!==i||i===void 0||e.isPresent!==s?o.willUpdate():this.safeToRemove(),e.isPresent!==s&&(s?o.promote():o.relegate()||Tt.postRender(()=>{const l=o.getStack();(!l||!l.members.length)&&this.safeToRemove()}))),null}componentDidUpdate(){const{projection:e}=this.props.visualElement;e&&(e.root.didUpdate(),mx.postRender(()=>{!e.currentAnimation&&e.isLead()&&this.safeToRemove()}))}componentWillUnmount(){const{visualElement:e,layoutGroup:i,switchLayoutGroup:n}=this.props,{projection:r}=e;g_=!0,r&&(r.scheduleCheckAfterUnmount(),i&&i.group&&i.group.remove(r),n&&n.deregister&&n.deregister(r))}safeToRemove(){const{safeToRemove:e}=this.props;e&&e()}render(){return null}}function W3(t){const[e,i]=L3(),n=Z.useContext(YS);return S.jsx($9,{...t,layoutGroup:n,switchLayoutGroup:Z.useContext(I3),isPresent:e,safeToRemove:i})}const z9={pan:{Feature:B9},drag:{Feature:D9,ProjectionNode:Q3,MeasureLayout:W3}};function xA(t,e,i){const{props:n}=t;t.animationState&&n.whileHover&&t.animationState.setActive("whileHover",i==="Start");const r="onHover"+i,s=n[r];s&&Tt.postRender(()=>s(e,cd(e)))}class N9 extends Ma{mount(){const{current:e}=this.node;e&&(this.unmount=cV(e,(i,n)=>(xA(this.node,n,"Start"),r=>xA(this.node,r,"End"))))}unmount(){}}class j9 extends Ma{constructor(){super(...arguments),this.isActive=!1}onFocus(){let e=!1;try{e=this.node.current.matches(":focus-visible")}catch{e=!0}!e||!this.node.animationState||(this.node.animationState.setActive("whileFocus",!0),this.isActive=!0)}onBlur(){!this.isActive||!this.node.animationState||(this.node.animationState.setActive("whileFocus",!1),this.isActive=!1)}mount(){this.unmount=od(Ef(this.node.current,"focus",()=>this.onFocus()),Ef(this.node.current,"blur",()=>this.onBlur()))}unmount(){}}function wA(t,e,i){const{props:n}=t;if(t.current instanceof HTMLButtonElement&&t.current.disabled)return;t.animationState&&n.whileTap&&t.animationState.setActive("whileTap",i==="Start");const r="onTap"+(i==="End"?"":i),s=n[r];s&&Tt.postRender(()=>s(e,cd(e)))}class I9 extends Ma{mount(){const{current:e}=this.node;if(!e)return;const{globalTapTarget:i,propagate:n}=this.node.props;this.unmount=mV(e,(r,s)=>(wA(this.node,s,"Start"),(o,{success:l})=>wA(this.node,o,l?"End":"Cancel")),{useGlobalTarget:i,stopPropagation:(n==null?void 0:n.tap)===!1})}unmount(){}}const I1=new WeakMap,O_=new WeakMap,V9=t=>{const e=I1.get(t.target);e&&e(t)},X9=t=>{t.forEach(V9)};function Z9({root:t,...e}){const i=t||document;O_.has(i)||O_.set(i,{});const n=O_.get(i),r=JSON.stringify(e);return n[r]||(n[r]=new IntersectionObserver(X9,{root:t,...e})),n[r]}function q9(t,e,i){const n=Z9(e);return I1.set(t,i),n.observe(t),()=>{I1.delete(t),n.unobserve(t)}}const W9={some:0,all:1};class U9 extends Ma{constructor(){super(...arguments),this.hasEnteredView=!1,this.isInView=!1}startObserver(){this.unmount();const{viewport:e={}}=this.node.getProps(),{root:i,margin:n,amount:r="some",once:s}=e,o={root:i?i.current:void 0,rootMargin:n,threshold:typeof r=="number"?r:W9[r]},l=c=>{const{isIntersecting:u}=c;if(this.isInView===u||(this.isInView=u,s&&!u&&this.hasEnteredView))return;u&&(this.hasEnteredView=!0),this.node.animationState&&this.node.animationState.setActive("whileInView",u);const{onViewportEnter:d,onViewportLeave:p}=this.node.getProps(),g=u?d:p;g&&g(c)};return q9(this.node.current,o,l)}mount(){this.startObserver()}update(){if(typeof IntersectionObserver>"u")return;const{props:e,prevProps:i}=this.node;["amount","margin","root"].some(Y9(e,i))&&this.startObserver()}unmount(){}}function Y9({viewport:t={}},{viewport:e={}}={}){return i=>t[i]!==e[i]}const H9={inView:{Feature:U9},tap:{Feature:I9},focus:{Feature:j9},hover:{Feature:N9}},F9={layout:{ProjectionNode:Q3,MeasureLayout:W3}},G9={...y9,...H9,...z9,...F9},vo=m9(G9,g9);function K9({roadmap:t,state:e,todos:i}){var p;const{connected:n}=Ea(),r=(t==null?void 0:t.progress_percent)??0,s=(t==null?void 0:t.current_phase)??(e==null?void 0:e.currentPhase)??"--",o=((p=t==null?void 0:t.phases.find(g=>g.number===t.current_phase))==null?void 0:p.name)??"",l=(e==null?void 0:e.blockers.filter(g=>!g.includes("RESOLVED")).length)??0,c=(i==null?void 0:i.pending.length)??0,u=(t==null?void 0:t.completed_phases)??0,d=(t==null?void 0:t.phase_count)??0;return S.jsxs("div",{className:"border-b border-border pb-6",children:[S.jsxs("div",{className:"flex items-center gap-3 mb-4",children:[S.jsx("span",{className:"block w-6 h-px bg-accent"}),S.jsx("span",{className:"text-xs font-medium uppercase tracking-widest text-muted-foreground",children:"Milestone Progress"}),S.jsxs("span",{className:"ml-auto flex items-center gap-3",children:[S.jsxs("span",{className:"text-xs text-muted-foreground tabular-nums",children:[u,"/",d," phases"]}),S.jsx("span",{className:`inline-block h-1.5 w-1.5 ${n?"bg-success":"bg-danger"}`,title:n?"Connected":"Disconnected"})]})]}),S.jsx("div",{className:"h-1 w-full bg-muted mb-5",children:S.jsx(vo.div,{className:"h-full bg-accent",initial:{width:0},animate:{width:`${r}%`},transition:{duration:.6,ease:"easeOut"}})}),S.jsxs("div",{className:"flex flex-col gap-4 sm:flex-row sm:items-end sm:gap-10",children:[S.jsxs("div",{className:"flex items-end gap-4 sm:gap-10",children:[S.jsxs("div",{children:[S.jsx("span",{className:"font-mono text-3xl font-bold tabular-nums text-foreground leading-none",children:r}),S.jsx("span",{className:"text-sm text-muted-foreground ml-1",children:"%"})]}),S.jsxs("div",{className:"border-l border-border pl-4 sm:pl-10",children:[S.jsx("span",{className:"text-xs uppercase tracking-widest text-muted-foreground block mb-1",children:"Current"}),S.jsxs("div",{className:"flex items-baseline gap-2",children:[S.jsx("span",{className:"font-mono text-sm font-bold text-accent",children:s}),S.jsx("span",{className:"truncate text-sm text-foreground/80 max-w-[140px] sm:max-w-none",children:o})]})]})]}),S.jsxs("div",{className:"flex items-end gap-6 sm:ml-auto sm:gap-8",children:[S.jsxs("div",{children:[S.jsx("span",{className:"text-xs uppercase tracking-widest text-muted-foreground block mb-1",children:"Blockers"}),S.jsx("span",{className:`font-mono text-xl font-bold tabular-nums ${l>0?"text-danger":"text-muted-foreground"}`,children:l})]}),S.jsxs("div",{children:[S.jsx("span",{className:"text-xs uppercase tracking-widest text-muted-foreground block mb-1",children:"Todos"}),S.jsx("span",{className:`font-mono text-xl font-bold tabular-nums ${c>0?"text-warning":"text-muted-foreground"}`,children:c})]})]})]})]})}function J9(t){switch(t){case"complete":return"bg-success";case"partial":return"bg-accent";default:return"bg-muted-foreground/40"}}function eZ(t){switch(t){case"complete":return"bg-success";case"partial":return"bg-accent";default:return"bg-muted-foreground/40"}}function tZ({phaseName:t,phaseNumber:e,completedPlans:i,totalPlans:n,status:r,roadmapComplete:s,isCurrent:o,onClick:l,onToggleComplete:c}){const u=n>0?Math.round(i/n*100):0;return S.jsxs("button",{type:"button",onClick:()=>l(e),className:`group relative w-full text-left transition-colors duration-200 bg-background ${o?"border-l-2 border-l-accent":"border-l-2 border-l-transparent hover:border-l-accent/40"}`,children:[S.jsx("div",{className:"absolute inset-0 pointer-events-none opacity-0 group-hover:opacity-100 transition-opacity duration-200 bg-card-hover"}),S.jsxs("div",{className:"relative flex items-center gap-3 px-4 py-3",children:[c?S.jsx("input",{type:"checkbox",checked:s,onChange:d=>{d.stopPropagation(),c(e,d.target.checked)},onClick:d=>d.stopPropagation(),className:"h-3 w-3 shrink-0 cursor-pointer accent-accent",title:s?"Mark incomplete":"Mark complete"}):S.jsx("span",{className:`inline-block h-1.5 w-1.5 shrink-0 ${eZ(r)}`}),S.jsx("span",{className:`font-mono text-xs font-bold tabular-nums shrink-0 ${o?"text-accent":"text-muted-foreground"}`,children:e}),S.jsx("span",{className:"truncate text-sm text-foreground/90",children:t}),S.jsxs("span",{className:"ml-auto shrink-0 font-mono text-xs text-muted-foreground tabular-nums",children:[i,"/",n]})]}),S.jsx("div",{className:"h-px w-full bg-muted/50",children:S.jsx(vo.div,{className:`h-full ${J9(r)}`,initial:{width:0},animate:{width:`${u}%`},transition:{duration:.5,ease:"easeOut"}})})]})}function iZ({phases:t,currentPhase:e,onPhaseClick:i,onToggleComplete:n}){return S.jsxs("div",{className:"flex flex-col gap-4",children:[S.jsxs("div",{className:"flex items-center justify-between",children:[S.jsxs("div",{className:"flex items-center gap-3",children:[S.jsx("span",{className:"block w-6 h-px bg-accent"}),S.jsx("span",{className:"text-xs font-medium uppercase tracking-widest text-muted-foreground",children:"Phases"})]}),S.jsx("span",{className:"text-xs text-muted-foreground",children:t.length})]}),t.length===0?S.jsxs("div",{className:"flex flex-col items-center gap-3 border border-border px-4 py-10 text-center",children:[S.jsx("span",{className:"text-sm text-muted-foreground",children:"No project initialized yet."}),S.jsxs("span",{className:"text-sm text-muted-foreground",children:["Run"," ",S.jsx("code",{className:"bg-muted px-1.5 py-0.5 font-mono text-accent text-xs",children:"/maxsim:new-project"})," ","in Claude Code to get started."]})]}):S.jsx("div",{className:"flex flex-col gap-px bg-border",children:t.map(r=>S.jsx(tZ,{phaseNumber:r.number,phaseName:r.name,completedPlans:r.summaryCount,totalPlans:r.planCount,status:r.diskStatus,roadmapComplete:r.roadmapComplete,isCurrent:r.number===e,onClick:i,onToggleComplete:n},r.number))})]})}function U3(t){var e,i,n="";if(typeof t=="string"||typeof t=="number")n+=t;else if(typeof t=="object")if(Array.isArray(t)){var r=t.length;for(e=0;e{const i=new Array(t.length+e.length);for(let n=0;n({classGroupId:t,validator:e}),Y3=(t=new Map,e=null,i)=>({nextPart:t,validators:e,classGroupId:i}),vg="-",CA=[],oZ="arbitrary..",aZ=t=>{const e=cZ(t),{conflictingClassGroups:i,conflictingClassGroupModifiers:n}=t;return{getClassGroupId:o=>{if(o.startsWith("[")&&o.endsWith("]"))return lZ(o);const l=o.split(vg),c=l[0]===""&&l.length>1?1:0;return H3(l,c,e)},getConflictingClassGroupIds:(o,l)=>{if(l){const c=n[o],u=i[o];return c?u?rZ(u,c):c:u||CA}return i[o]||CA}}},H3=(t,e,i)=>{if(t.length-e===0)return i.classGroupId;const r=t[e],s=i.nextPart.get(r);if(s){const u=H3(t,e+1,s);if(u)return u}const o=i.validators;if(o===null)return;const l=e===0?t.join(vg):t.slice(e).join(vg),c=o.length;for(let u=0;ut.slice(1,-1).indexOf(":")===-1?void 0:(()=>{const e=t.slice(1,-1),i=e.indexOf(":"),n=e.slice(0,i);return n?oZ+n:void 0})(),cZ=t=>{const{theme:e,classGroups:i}=t;return hZ(i,e)},hZ=(t,e)=>{const i=Y3();for(const n in t){const r=t[n];kx(r,i,n,e)}return i},kx=(t,e,i,n)=>{const r=t.length;for(let s=0;s{if(typeof t=="string"){fZ(t,e,i);return}if(typeof t=="function"){dZ(t,e,i,n);return}pZ(t,e,i,n)},fZ=(t,e,i)=>{const n=t===""?e:F3(e,t);n.classGroupId=i},dZ=(t,e,i,n)=>{if(mZ(t)){kx(t(n),e,i,n);return}e.validators===null&&(e.validators=[]),e.validators.push(sZ(i,t))},pZ=(t,e,i,n)=>{const r=Object.entries(t),s=r.length;for(let o=0;o{let i=t;const n=e.split(vg),r=n.length;for(let s=0;s"isThemeGetter"in t&&t.isThemeGetter===!0,gZ=t=>{if(t<1)return{get:()=>{},set:()=>{}};let e=0,i=Object.create(null),n=Object.create(null);const r=(s,o)=>{i[s]=o,e++,e>t&&(e=0,n=i,i=Object.create(null))};return{get(s){let o=i[s];if(o!==void 0)return o;if((o=n[s])!==void 0)return r(s,o),o},set(s,o){s in i?i[s]=o:r(s,o)}}},V1="!",kA=":",OZ=[],TA=(t,e,i,n,r)=>({modifiers:t,hasImportantModifier:e,baseClassName:i,maybePostfixModifierPosition:n,isExternal:r}),vZ=t=>{const{prefix:e,experimentalParseClassName:i}=t;let n=r=>{const s=[];let o=0,l=0,c=0,u;const d=r.length;for(let b=0;bc?u-c:void 0;return TA(s,O,g,_)};if(e){const r=e+kA,s=n;n=o=>o.startsWith(r)?s(o.slice(r.length)):TA(OZ,!1,o,void 0,!0)}if(i){const r=n;n=s=>i({className:s,parseClassName:r})}return n},_Z=t=>{const e=new Map;return t.orderSensitiveModifiers.forEach((i,n)=>{e.set(i,1e6+n)}),i=>{const n=[];let r=[];for(let s=0;s0&&(r.sort(),n.push(...r),r=[]),n.push(o)):r.push(o)}return r.length>0&&(r.sort(),n.push(...r)),n}},yZ=t=>({cache:gZ(t.cacheSize),parseClassName:vZ(t),sortModifiers:_Z(t),...aZ(t)}),bZ=/\s+/,SZ=(t,e)=>{const{parseClassName:i,getClassGroupId:n,getConflictingClassGroupIds:r,sortModifiers:s}=e,o=[],l=t.trim().split(bZ);let c="";for(let u=l.length-1;u>=0;u-=1){const d=l[u],{isExternal:p,modifiers:g,hasImportantModifier:O,baseClassName:_,maybePostfixModifierPosition:b}=i(d);if(p){c=d+(c.length>0?" "+c:c);continue}let x=!!b,w=n(x?_.substring(0,b):_);if(!w){if(!x){c=d+(c.length>0?" "+c:c);continue}if(w=n(_),!w){c=d+(c.length>0?" "+c:c);continue}x=!1}const k=g.length===0?"":g.length===1?g[0]:s(g).join(":"),T=O?k+V1:k,A=T+w;if(o.indexOf(A)>-1)continue;o.push(A);const Q=r(w,x);for(let E=0;E0?" "+c:c)}return c},xZ=(...t)=>{let e=0,i,n,r="";for(;e{if(typeof t=="string")return t;let e,i="";for(let n=0;n{let i,n,r,s;const o=c=>{const u=e.reduce((d,p)=>p(d),t());return i=yZ(u),n=i.cache.get,r=i.cache.set,s=l,l(c)},l=c=>{const u=n(c);if(u)return u;const d=SZ(c,i);return r(c,d),d};return s=o,(...c)=>s(xZ(...c))},CZ=[],pi=t=>{const e=i=>i[t]||CZ;return e.isThemeGetter=!0,e},K3=/^\[(?:(\w[\w-]*):)?(.+)\]$/i,J3=/^\((?:(\w[\w-]*):)?(.+)\)$/i,kZ=/^\d+(?:\.\d+)?\/\d+(?:\.\d+)?$/,TZ=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,AZ=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,EZ=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/,MZ=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,PZ=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,Jo=t=>kZ.test(t),qe=t=>!!t&&!Number.isNaN(Number(t)),ea=t=>!!t&&Number.isInteger(Number(t)),v_=t=>t.endsWith("%")&&qe(t.slice(0,-1)),to=t=>TZ.test(t),eD=()=>!0,RZ=t=>AZ.test(t)&&!EZ.test(t),Tx=()=>!1,QZ=t=>MZ.test(t),LZ=t=>PZ.test(t),DZ=t=>!ke(t)&&!Ae(t),BZ=t=>Pa(t,nD,Tx),ke=t=>K3.test(t),el=t=>Pa(t,rD,RZ),AA=t=>Pa(t,ZZ,qe),$Z=t=>Pa(t,oD,eD),zZ=t=>Pa(t,sD,Tx),EA=t=>Pa(t,tD,Tx),NZ=t=>Pa(t,iD,LZ),Yp=t=>Pa(t,aD,QZ),Ae=t=>J3.test(t),Cu=t=>Ql(t,rD),jZ=t=>Ql(t,sD),MA=t=>Ql(t,tD),IZ=t=>Ql(t,nD),VZ=t=>Ql(t,iD),Hp=t=>Ql(t,aD,!0),XZ=t=>Ql(t,oD,!0),Pa=(t,e,i)=>{const n=K3.exec(t);return n?n[1]?e(n[1]):i(n[2]):!1},Ql=(t,e,i=!1)=>{const n=J3.exec(t);return n?n[1]?e(n[1]):i:!1},tD=t=>t==="position"||t==="percentage",iD=t=>t==="image"||t==="url",nD=t=>t==="length"||t==="size"||t==="bg-size",rD=t=>t==="length",ZZ=t=>t==="number",sD=t=>t==="family-name",oD=t=>t==="number"||t==="weight",aD=t=>t==="shadow",qZ=()=>{const t=pi("color"),e=pi("font"),i=pi("text"),n=pi("font-weight"),r=pi("tracking"),s=pi("leading"),o=pi("breakpoint"),l=pi("container"),c=pi("spacing"),u=pi("radius"),d=pi("shadow"),p=pi("inset-shadow"),g=pi("text-shadow"),O=pi("drop-shadow"),_=pi("blur"),b=pi("perspective"),x=pi("aspect"),w=pi("ease"),k=pi("animate"),T=()=>["auto","avoid","all","avoid-page","page","left","right","column"],A=()=>["center","top","bottom","left","right","top-left","left-top","top-right","right-top","bottom-right","right-bottom","bottom-left","left-bottom"],Q=()=>[...A(),Ae,ke],E=()=>["auto","hidden","clip","visible","scroll"],z=()=>["auto","contain","none"],N=()=>[Ae,ke,c],q=()=>[Jo,"full","auto",...N()],J=()=>[ea,"none","subgrid",Ae,ke],U=()=>["auto",{span:["full",ea,Ae,ke]},ea,Ae,ke],R=()=>[ea,"auto",Ae,ke],B=()=>["auto","min","max","fr",Ae,ke],j=()=>["start","end","center","between","around","evenly","stretch","baseline","center-safe","end-safe"],$=()=>["start","end","center","stretch","center-safe","end-safe"],D=()=>["auto",...N()],X=()=>[Jo,"auto","full","dvw","dvh","lvw","lvh","svw","svh","min","max","fit",...N()],H=()=>[Jo,"screen","full","dvw","lvw","svw","min","max","fit",...N()],F=()=>[Jo,"screen","full","lh","dvh","lvh","svh","min","max","fit",...N()],M=()=>[t,Ae,ke],I=()=>[...A(),MA,EA,{position:[Ae,ke]}],K=()=>["no-repeat",{repeat:["","x","y","space","round"]}],L=()=>["auto","cover","contain",IZ,BZ,{size:[Ae,ke]}],ue=()=>[v_,Cu,el],he=()=>["","none","full",u,Ae,ke],fe=()=>["",qe,Cu,el],Oe=()=>["solid","dashed","dotted","double"],Ce=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],ye=()=>[qe,v_,MA,EA],nt=()=>["","none",_,Ae,ke],Qt=()=>["none",qe,Ae,ke],Yt=()=>["none",qe,Ae,ke],ei=()=>[qe,Ae,ke],Le=()=>[Jo,"full",...N()];return{cacheSize:500,theme:{animate:["spin","ping","pulse","bounce"],aspect:["video"],blur:[to],breakpoint:[to],color:[eD],container:[to],"drop-shadow":[to],ease:["in","out","in-out"],font:[DZ],"font-weight":["thin","extralight","light","normal","medium","semibold","bold","extrabold","black"],"inset-shadow":[to],leading:["none","tight","snug","normal","relaxed","loose"],perspective:["dramatic","near","normal","midrange","distant","none"],radius:[to],shadow:[to],spacing:["px",qe],text:[to],"text-shadow":[to],tracking:["tighter","tight","normal","wide","wider","widest"]},classGroups:{aspect:[{aspect:["auto","square",Jo,ke,Ae,x]}],container:["container"],columns:[{columns:[qe,ke,Ae,l]}],"break-after":[{"break-after":T()}],"break-before":[{"break-before":T()}],"break-inside":[{"break-inside":["auto","avoid","avoid-page","avoid-column"]}],"box-decoration":[{"box-decoration":["slice","clone"]}],box:[{box:["border","content"]}],display:["block","inline-block","inline","flex","inline-flex","table","inline-table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row-group","table-row","flow-root","grid","inline-grid","contents","list-item","hidden"],sr:["sr-only","not-sr-only"],float:[{float:["right","left","none","start","end"]}],clear:[{clear:["left","right","both","none","start","end"]}],isolation:["isolate","isolation-auto"],"object-fit":[{object:["contain","cover","fill","none","scale-down"]}],"object-position":[{object:Q()}],overflow:[{overflow:E()}],"overflow-x":[{"overflow-x":E()}],"overflow-y":[{"overflow-y":E()}],overscroll:[{overscroll:z()}],"overscroll-x":[{"overscroll-x":z()}],"overscroll-y":[{"overscroll-y":z()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:q()}],"inset-x":[{"inset-x":q()}],"inset-y":[{"inset-y":q()}],start:[{"inset-s":q(),start:q()}],end:[{"inset-e":q(),end:q()}],"inset-bs":[{"inset-bs":q()}],"inset-be":[{"inset-be":q()}],top:[{top:q()}],right:[{right:q()}],bottom:[{bottom:q()}],left:[{left:q()}],visibility:["visible","invisible","collapse"],z:[{z:[ea,"auto",Ae,ke]}],basis:[{basis:[Jo,"full","auto",l,...N()]}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["nowrap","wrap","wrap-reverse"]}],flex:[{flex:[qe,Jo,"auto","initial","none",ke]}],grow:[{grow:["",qe,Ae,ke]}],shrink:[{shrink:["",qe,Ae,ke]}],order:[{order:[ea,"first","last","none",Ae,ke]}],"grid-cols":[{"grid-cols":J()}],"col-start-end":[{col:U()}],"col-start":[{"col-start":R()}],"col-end":[{"col-end":R()}],"grid-rows":[{"grid-rows":J()}],"row-start-end":[{row:U()}],"row-start":[{"row-start":R()}],"row-end":[{"row-end":R()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":B()}],"auto-rows":[{"auto-rows":B()}],gap:[{gap:N()}],"gap-x":[{"gap-x":N()}],"gap-y":[{"gap-y":N()}],"justify-content":[{justify:[...j(),"normal"]}],"justify-items":[{"justify-items":[...$(),"normal"]}],"justify-self":[{"justify-self":["auto",...$()]}],"align-content":[{content:["normal",...j()]}],"align-items":[{items:[...$(),{baseline:["","last"]}]}],"align-self":[{self:["auto",...$(),{baseline:["","last"]}]}],"place-content":[{"place-content":j()}],"place-items":[{"place-items":[...$(),"baseline"]}],"place-self":[{"place-self":["auto",...$()]}],p:[{p:N()}],px:[{px:N()}],py:[{py:N()}],ps:[{ps:N()}],pe:[{pe:N()}],pbs:[{pbs:N()}],pbe:[{pbe:N()}],pt:[{pt:N()}],pr:[{pr:N()}],pb:[{pb:N()}],pl:[{pl:N()}],m:[{m:D()}],mx:[{mx:D()}],my:[{my:D()}],ms:[{ms:D()}],me:[{me:D()}],mbs:[{mbs:D()}],mbe:[{mbe:D()}],mt:[{mt:D()}],mr:[{mr:D()}],mb:[{mb:D()}],ml:[{ml:D()}],"space-x":[{"space-x":N()}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":N()}],"space-y-reverse":["space-y-reverse"],size:[{size:X()}],"inline-size":[{inline:["auto",...H()]}],"min-inline-size":[{"min-inline":["auto",...H()]}],"max-inline-size":[{"max-inline":["none",...H()]}],"block-size":[{block:["auto",...F()]}],"min-block-size":[{"min-block":["auto",...F()]}],"max-block-size":[{"max-block":["none",...F()]}],w:[{w:[l,"screen",...X()]}],"min-w":[{"min-w":[l,"screen","none",...X()]}],"max-w":[{"max-w":[l,"screen","none","prose",{screen:[o]},...X()]}],h:[{h:["screen","lh",...X()]}],"min-h":[{"min-h":["screen","lh","none",...X()]}],"max-h":[{"max-h":["screen","lh",...X()]}],"font-size":[{text:["base",i,Cu,el]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:[n,XZ,$Z]}],"font-stretch":[{"font-stretch":["ultra-condensed","extra-condensed","condensed","semi-condensed","normal","semi-expanded","expanded","extra-expanded","ultra-expanded",v_,ke]}],"font-family":[{font:[jZ,zZ,e]}],"font-features":[{"font-features":[ke]}],"fvn-normal":["normal-nums"],"fvn-ordinal":["ordinal"],"fvn-slashed-zero":["slashed-zero"],"fvn-figure":["lining-nums","oldstyle-nums"],"fvn-spacing":["proportional-nums","tabular-nums"],"fvn-fraction":["diagonal-fractions","stacked-fractions"],tracking:[{tracking:[r,Ae,ke]}],"line-clamp":[{"line-clamp":[qe,"none",Ae,AA]}],leading:[{leading:[s,...N()]}],"list-image":[{"list-image":["none",Ae,ke]}],"list-style-position":[{list:["inside","outside"]}],"list-style-type":[{list:["disc","decimal","none",Ae,ke]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"placeholder-color":[{placeholder:M()}],"text-color":[{text:M()}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...Oe(),"wavy"]}],"text-decoration-thickness":[{decoration:[qe,"from-font","auto",Ae,el]}],"text-decoration-color":[{decoration:M()}],"underline-offset":[{"underline-offset":[qe,"auto",Ae,ke]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:N()}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",Ae,ke]}],whitespace:[{whitespace:["normal","nowrap","pre","pre-line","pre-wrap","break-spaces"]}],break:[{break:["normal","words","all","keep"]}],wrap:[{wrap:["break-word","anywhere","normal"]}],hyphens:[{hyphens:["none","manual","auto"]}],content:[{content:["none",Ae,ke]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:I()}],"bg-repeat":[{bg:K()}],"bg-size":[{bg:L()}],"bg-image":[{bg:["none",{linear:[{to:["t","tr","r","br","b","bl","l","tl"]},ea,Ae,ke],radial:["",Ae,ke],conic:[ea,Ae,ke]},VZ,NZ]}],"bg-color":[{bg:M()}],"gradient-from-pos":[{from:ue()}],"gradient-via-pos":[{via:ue()}],"gradient-to-pos":[{to:ue()}],"gradient-from":[{from:M()}],"gradient-via":[{via:M()}],"gradient-to":[{to:M()}],rounded:[{rounded:he()}],"rounded-s":[{"rounded-s":he()}],"rounded-e":[{"rounded-e":he()}],"rounded-t":[{"rounded-t":he()}],"rounded-r":[{"rounded-r":he()}],"rounded-b":[{"rounded-b":he()}],"rounded-l":[{"rounded-l":he()}],"rounded-ss":[{"rounded-ss":he()}],"rounded-se":[{"rounded-se":he()}],"rounded-ee":[{"rounded-ee":he()}],"rounded-es":[{"rounded-es":he()}],"rounded-tl":[{"rounded-tl":he()}],"rounded-tr":[{"rounded-tr":he()}],"rounded-br":[{"rounded-br":he()}],"rounded-bl":[{"rounded-bl":he()}],"border-w":[{border:fe()}],"border-w-x":[{"border-x":fe()}],"border-w-y":[{"border-y":fe()}],"border-w-s":[{"border-s":fe()}],"border-w-e":[{"border-e":fe()}],"border-w-bs":[{"border-bs":fe()}],"border-w-be":[{"border-be":fe()}],"border-w-t":[{"border-t":fe()}],"border-w-r":[{"border-r":fe()}],"border-w-b":[{"border-b":fe()}],"border-w-l":[{"border-l":fe()}],"divide-x":[{"divide-x":fe()}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":fe()}],"divide-y-reverse":["divide-y-reverse"],"border-style":[{border:[...Oe(),"hidden","none"]}],"divide-style":[{divide:[...Oe(),"hidden","none"]}],"border-color":[{border:M()}],"border-color-x":[{"border-x":M()}],"border-color-y":[{"border-y":M()}],"border-color-s":[{"border-s":M()}],"border-color-e":[{"border-e":M()}],"border-color-bs":[{"border-bs":M()}],"border-color-be":[{"border-be":M()}],"border-color-t":[{"border-t":M()}],"border-color-r":[{"border-r":M()}],"border-color-b":[{"border-b":M()}],"border-color-l":[{"border-l":M()}],"divide-color":[{divide:M()}],"outline-style":[{outline:[...Oe(),"none","hidden"]}],"outline-offset":[{"outline-offset":[qe,Ae,ke]}],"outline-w":[{outline:["",qe,Cu,el]}],"outline-color":[{outline:M()}],shadow:[{shadow:["","none",d,Hp,Yp]}],"shadow-color":[{shadow:M()}],"inset-shadow":[{"inset-shadow":["none",p,Hp,Yp]}],"inset-shadow-color":[{"inset-shadow":M()}],"ring-w":[{ring:fe()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:M()}],"ring-offset-w":[{"ring-offset":[qe,el]}],"ring-offset-color":[{"ring-offset":M()}],"inset-ring-w":[{"inset-ring":fe()}],"inset-ring-color":[{"inset-ring":M()}],"text-shadow":[{"text-shadow":["none",g,Hp,Yp]}],"text-shadow-color":[{"text-shadow":M()}],opacity:[{opacity:[qe,Ae,ke]}],"mix-blend":[{"mix-blend":[...Ce(),"plus-darker","plus-lighter"]}],"bg-blend":[{"bg-blend":Ce()}],"mask-clip":[{"mask-clip":["border","padding","content","fill","stroke","view"]},"mask-no-clip"],"mask-composite":[{mask:["add","subtract","intersect","exclude"]}],"mask-image-linear-pos":[{"mask-linear":[qe]}],"mask-image-linear-from-pos":[{"mask-linear-from":ye()}],"mask-image-linear-to-pos":[{"mask-linear-to":ye()}],"mask-image-linear-from-color":[{"mask-linear-from":M()}],"mask-image-linear-to-color":[{"mask-linear-to":M()}],"mask-image-t-from-pos":[{"mask-t-from":ye()}],"mask-image-t-to-pos":[{"mask-t-to":ye()}],"mask-image-t-from-color":[{"mask-t-from":M()}],"mask-image-t-to-color":[{"mask-t-to":M()}],"mask-image-r-from-pos":[{"mask-r-from":ye()}],"mask-image-r-to-pos":[{"mask-r-to":ye()}],"mask-image-r-from-color":[{"mask-r-from":M()}],"mask-image-r-to-color":[{"mask-r-to":M()}],"mask-image-b-from-pos":[{"mask-b-from":ye()}],"mask-image-b-to-pos":[{"mask-b-to":ye()}],"mask-image-b-from-color":[{"mask-b-from":M()}],"mask-image-b-to-color":[{"mask-b-to":M()}],"mask-image-l-from-pos":[{"mask-l-from":ye()}],"mask-image-l-to-pos":[{"mask-l-to":ye()}],"mask-image-l-from-color":[{"mask-l-from":M()}],"mask-image-l-to-color":[{"mask-l-to":M()}],"mask-image-x-from-pos":[{"mask-x-from":ye()}],"mask-image-x-to-pos":[{"mask-x-to":ye()}],"mask-image-x-from-color":[{"mask-x-from":M()}],"mask-image-x-to-color":[{"mask-x-to":M()}],"mask-image-y-from-pos":[{"mask-y-from":ye()}],"mask-image-y-to-pos":[{"mask-y-to":ye()}],"mask-image-y-from-color":[{"mask-y-from":M()}],"mask-image-y-to-color":[{"mask-y-to":M()}],"mask-image-radial":[{"mask-radial":[Ae,ke]}],"mask-image-radial-from-pos":[{"mask-radial-from":ye()}],"mask-image-radial-to-pos":[{"mask-radial-to":ye()}],"mask-image-radial-from-color":[{"mask-radial-from":M()}],"mask-image-radial-to-color":[{"mask-radial-to":M()}],"mask-image-radial-shape":[{"mask-radial":["circle","ellipse"]}],"mask-image-radial-size":[{"mask-radial":[{closest:["side","corner"],farthest:["side","corner"]}]}],"mask-image-radial-pos":[{"mask-radial-at":A()}],"mask-image-conic-pos":[{"mask-conic":[qe]}],"mask-image-conic-from-pos":[{"mask-conic-from":ye()}],"mask-image-conic-to-pos":[{"mask-conic-to":ye()}],"mask-image-conic-from-color":[{"mask-conic-from":M()}],"mask-image-conic-to-color":[{"mask-conic-to":M()}],"mask-mode":[{mask:["alpha","luminance","match"]}],"mask-origin":[{"mask-origin":["border","padding","content","fill","stroke","view"]}],"mask-position":[{mask:I()}],"mask-repeat":[{mask:K()}],"mask-size":[{mask:L()}],"mask-type":[{"mask-type":["alpha","luminance"]}],"mask-image":[{mask:["none",Ae,ke]}],filter:[{filter:["","none",Ae,ke]}],blur:[{blur:nt()}],brightness:[{brightness:[qe,Ae,ke]}],contrast:[{contrast:[qe,Ae,ke]}],"drop-shadow":[{"drop-shadow":["","none",O,Hp,Yp]}],"drop-shadow-color":[{"drop-shadow":M()}],grayscale:[{grayscale:["",qe,Ae,ke]}],"hue-rotate":[{"hue-rotate":[qe,Ae,ke]}],invert:[{invert:["",qe,Ae,ke]}],saturate:[{saturate:[qe,Ae,ke]}],sepia:[{sepia:["",qe,Ae,ke]}],"backdrop-filter":[{"backdrop-filter":["","none",Ae,ke]}],"backdrop-blur":[{"backdrop-blur":nt()}],"backdrop-brightness":[{"backdrop-brightness":[qe,Ae,ke]}],"backdrop-contrast":[{"backdrop-contrast":[qe,Ae,ke]}],"backdrop-grayscale":[{"backdrop-grayscale":["",qe,Ae,ke]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[qe,Ae,ke]}],"backdrop-invert":[{"backdrop-invert":["",qe,Ae,ke]}],"backdrop-opacity":[{"backdrop-opacity":[qe,Ae,ke]}],"backdrop-saturate":[{"backdrop-saturate":[qe,Ae,ke]}],"backdrop-sepia":[{"backdrop-sepia":["",qe,Ae,ke]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":N()}],"border-spacing-x":[{"border-spacing-x":N()}],"border-spacing-y":[{"border-spacing-y":N()}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["","all","colors","opacity","shadow","transform","none",Ae,ke]}],"transition-behavior":[{transition:["normal","discrete"]}],duration:[{duration:[qe,"initial",Ae,ke]}],ease:[{ease:["linear","initial",w,Ae,ke]}],delay:[{delay:[qe,Ae,ke]}],animate:[{animate:["none",k,Ae,ke]}],backface:[{backface:["hidden","visible"]}],perspective:[{perspective:[b,Ae,ke]}],"perspective-origin":[{"perspective-origin":Q()}],rotate:[{rotate:Qt()}],"rotate-x":[{"rotate-x":Qt()}],"rotate-y":[{"rotate-y":Qt()}],"rotate-z":[{"rotate-z":Qt()}],scale:[{scale:Yt()}],"scale-x":[{"scale-x":Yt()}],"scale-y":[{"scale-y":Yt()}],"scale-z":[{"scale-z":Yt()}],"scale-3d":["scale-3d"],skew:[{skew:ei()}],"skew-x":[{"skew-x":ei()}],"skew-y":[{"skew-y":ei()}],transform:[{transform:[Ae,ke,"","none","gpu","cpu"]}],"transform-origin":[{origin:Q()}],"transform-style":[{transform:["3d","flat"]}],translate:[{translate:Le()}],"translate-x":[{"translate-x":Le()}],"translate-y":[{"translate-y":Le()}],"translate-z":[{"translate-z":Le()}],"translate-none":["translate-none"],accent:[{accent:M()}],appearance:[{appearance:["none","auto"]}],"caret-color":[{caret:M()}],"color-scheme":[{scheme:["normal","dark","light","light-dark","only-dark","only-light"]}],cursor:[{cursor:["auto","default","pointer","wait","text","move","help","not-allowed","none","context-menu","progress","cell","crosshair","vertical-text","alias","copy","no-drop","grab","grabbing","all-scroll","col-resize","row-resize","n-resize","e-resize","s-resize","w-resize","ne-resize","nw-resize","se-resize","sw-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","zoom-in","zoom-out",Ae,ke]}],"field-sizing":[{"field-sizing":["fixed","content"]}],"pointer-events":[{"pointer-events":["auto","none"]}],resize:[{resize:["none","","y","x"]}],"scroll-behavior":[{scroll:["auto","smooth"]}],"scroll-m":[{"scroll-m":N()}],"scroll-mx":[{"scroll-mx":N()}],"scroll-my":[{"scroll-my":N()}],"scroll-ms":[{"scroll-ms":N()}],"scroll-me":[{"scroll-me":N()}],"scroll-mbs":[{"scroll-mbs":N()}],"scroll-mbe":[{"scroll-mbe":N()}],"scroll-mt":[{"scroll-mt":N()}],"scroll-mr":[{"scroll-mr":N()}],"scroll-mb":[{"scroll-mb":N()}],"scroll-ml":[{"scroll-ml":N()}],"scroll-p":[{"scroll-p":N()}],"scroll-px":[{"scroll-px":N()}],"scroll-py":[{"scroll-py":N()}],"scroll-ps":[{"scroll-ps":N()}],"scroll-pe":[{"scroll-pe":N()}],"scroll-pbs":[{"scroll-pbs":N()}],"scroll-pbe":[{"scroll-pbe":N()}],"scroll-pt":[{"scroll-pt":N()}],"scroll-pr":[{"scroll-pr":N()}],"scroll-pb":[{"scroll-pb":N()}],"scroll-pl":[{"scroll-pl":N()}],"snap-align":[{snap:["start","end","center","align-none"]}],"snap-stop":[{snap:["normal","always"]}],"snap-type":[{snap:["none","x","y","both"]}],"snap-strictness":[{snap:["mandatory","proximity"]}],touch:[{touch:["auto","none","manipulation"]}],"touch-x":[{"touch-pan":["x","left","right"]}],"touch-y":[{"touch-pan":["y","up","down"]}],"touch-pz":["touch-pinch-zoom"],select:[{select:["none","text","all","auto"]}],"will-change":[{"will-change":["auto","scroll","contents","transform",Ae,ke]}],fill:[{fill:["none",...M()]}],"stroke-w":[{stroke:[qe,Cu,el,AA]}],stroke:[{stroke:["none",...M()]}],"forced-color-adjust":[{"forced-color-adjust":["auto","none"]}]},conflictingClassGroups:{overflow:["overflow-x","overflow-y"],overscroll:["overscroll-x","overscroll-y"],inset:["inset-x","inset-y","inset-bs","inset-be","start","end","top","right","bottom","left"],"inset-x":["right","left"],"inset-y":["top","bottom"],flex:["basis","grow","shrink"],gap:["gap-x","gap-y"],p:["px","py","ps","pe","pbs","pbe","pt","pr","pb","pl"],px:["pr","pl"],py:["pt","pb"],m:["mx","my","ms","me","mbs","mbe","mt","mr","mb","ml"],mx:["mr","ml"],my:["mt","mb"],size:["w","h"],"font-size":["leading"],"fvn-normal":["fvn-ordinal","fvn-slashed-zero","fvn-figure","fvn-spacing","fvn-fraction"],"fvn-ordinal":["fvn-normal"],"fvn-slashed-zero":["fvn-normal"],"fvn-figure":["fvn-normal"],"fvn-spacing":["fvn-normal"],"fvn-fraction":["fvn-normal"],"line-clamp":["display","overflow"],rounded:["rounded-s","rounded-e","rounded-t","rounded-r","rounded-b","rounded-l","rounded-ss","rounded-se","rounded-ee","rounded-es","rounded-tl","rounded-tr","rounded-br","rounded-bl"],"rounded-s":["rounded-ss","rounded-es"],"rounded-e":["rounded-se","rounded-ee"],"rounded-t":["rounded-tl","rounded-tr"],"rounded-r":["rounded-tr","rounded-br"],"rounded-b":["rounded-br","rounded-bl"],"rounded-l":["rounded-tl","rounded-bl"],"border-spacing":["border-spacing-x","border-spacing-y"],"border-w":["border-w-x","border-w-y","border-w-s","border-w-e","border-w-bs","border-w-be","border-w-t","border-w-r","border-w-b","border-w-l"],"border-w-x":["border-w-r","border-w-l"],"border-w-y":["border-w-t","border-w-b"],"border-color":["border-color-x","border-color-y","border-color-s","border-color-e","border-color-bs","border-color-be","border-color-t","border-color-r","border-color-b","border-color-l"],"border-color-x":["border-color-r","border-color-l"],"border-color-y":["border-color-t","border-color-b"],translate:["translate-x","translate-y","translate-none"],"translate-none":["translate","translate-x","translate-y","translate-z"],"scroll-m":["scroll-mx","scroll-my","scroll-ms","scroll-me","scroll-mbs","scroll-mbe","scroll-mt","scroll-mr","scroll-mb","scroll-ml"],"scroll-mx":["scroll-mr","scroll-ml"],"scroll-my":["scroll-mt","scroll-mb"],"scroll-p":["scroll-px","scroll-py","scroll-ps","scroll-pe","scroll-pbs","scroll-pbe","scroll-pt","scroll-pr","scroll-pb","scroll-pl"],"scroll-px":["scroll-pr","scroll-pl"],"scroll-py":["scroll-pt","scroll-pb"],touch:["touch-x","touch-y","touch-pz"],"touch-x":["touch"],"touch-y":["touch"],"touch-pz":["touch"]},conflictingClassGroupModifiers:{"font-size":["leading"]},orderSensitiveModifiers:["*","**","after","backdrop","before","details-content","file","first-letter","first-line","marker","placeholder","selection"]}},WZ=wZ(qZ);function Fe(...t){return WZ(nZ(t))}function UZ(t){const[e,i]=Z.useState(null),[n,r]=Z.useState(!1),[s,o]=Z.useState(null),{lastChange:l}=Ea(),c=Z.useCallback(async()=>{if(!t){i(null),r(!1),o(null);return}r(!0),o(null);try{const u=await fetch(`/api/phase/${encodeURIComponent(t)}`);if(!u.ok){const p=await u.json().catch(()=>({}));throw new Error(p.error||`Failed to fetch phase ${t} (${u.status})`)}const d=await u.json();i(d)}catch(u){o(u instanceof Error?u.message:"Unknown error")}finally{r(!1)}},[t]);return Z.useEffect(()=>{c()},[c]),Z.useEffect(()=>{l>0&&c()},[l,c]),{plans:(e==null?void 0:e.plans)??[],context:(e==null?void 0:e.context)??null,research:(e==null?void 0:e.research)??null,loading:n,error:s,refetch:c}}function YZ({tasks:t,planPath:e,planContent:i,onContentChange:n}){const r=Z.useCallback(async s=>{const o=t[s];if(!o)return;let l=i;const c=o.name.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),d=new RegExp(`\\s*${c}\\s*`).exec(l);if(d){const p=l.slice(d.index),g=p.match(/([\s\S]*?)<\/done>/);if(g){const O=g[1],_=d.index+p.indexOf(g[0]),b=_+g[0].length,x=/^\s*\[x\]/i.test(O);let w;x?w=O.replace(/^\s*\[x\]\s*/i,""):w=`[x] ${O.trim()}`,l=l.slice(0,_)+`${w}`+l.slice(b)}}if(l!==i){n(l);try{const g=e.replace(/^\.planning[\\/]/,"").split(/[\\/]/);await fetch(`/api/plan/${g.join("/")}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({content:l})})}catch(p){console.error("[task-list] Failed to write checkbox change:",p)}}},[t,e,i,n]);return t.length===0?S.jsx("p",{className:"text-sm text-muted-foreground italic",children:"No tasks defined"}):S.jsx("div",{className:"space-y-1",children:t.map((s,o)=>S.jsxs("div",{className:Fe("flex items-start gap-2 py-1 px-2 rounded-md transition-colors","hover:bg-muted/50",s.completed&&"opacity-60"),children:[S.jsx("button",{type:"button",onClick:()=>r(o),className:Fe("mt-0.5 flex-shrink-0 w-4 h-4 rounded-sm border transition-colors","focus:outline-none focus:ring-2 focus:ring-accent/50",s.completed?"bg-success border-success text-background":"border-muted-foreground hover:border-accent"),"aria-label":`Toggle ${s.name}`,children:s.completed&&S.jsx("svg",{className:"w-4 h-4",viewBox:"0 0 16 16",fill:"none",stroke:"currentColor",strokeWidth:"2",children:S.jsx("path",{d:"M3 8l3 3 7-7"})})}),S.jsxs("div",{className:"flex-1 min-w-0",children:[S.jsxs("div",{className:"flex items-center gap-2",children:[S.jsx("span",{className:Fe("text-sm font-sans",s.completed&&"line-through text-muted-foreground"),children:s.name}),S.jsx("span",{className:Fe("text-xs px-1.5 py-0.5 rounded-sm font-mono",s.type.startsWith("checkpoint")?"bg-warning/20 text-warning":"bg-muted text-muted-foreground"),children:s.type})]}),s.files.length>0&&S.jsx("div",{className:"mt-0.5",children:s.files.map((l,c)=>S.jsx("span",{className:"text-xs font-mono text-muted-foreground mr-2",children:l},c))})]})]},o))})}function HZ({plan:t,onEdit:e}){const[i,n]=Z.useState(t.content),r=t.frontmatter,s=r.plan??"?",o=r.wave,l=r.autonomous,c=r.depends_on??[],u=r.files_modified??[];let d="";const p=t.content.match(/([\s\S]*?)<\/objective>/);if(p){const _=p[1].trim().split(` -`)[0];d=_.length>120?_.slice(0,117)+"...":_}const g=Z.useCallback(O=>{n(O)},[]);return S.jsxs("div",{className:"border border-border bg-card transition-colors hover:bg-card-hover",children:[S.jsxs("div",{className:"flex items-center justify-between border-b border-border px-4 py-3",children:[S.jsxs("div",{className:"flex items-center gap-3",children:[S.jsxs("span",{className:"font-mono text-sm font-bold text-accent tabular-nums",children:["#",String(s).padStart(2,"0")]}),o!==void 0&&S.jsxs("span",{className:"font-mono text-[9px] uppercase tracking-widest px-1.5 py-0.5 border border-accent/20 text-accent/70",children:["Wave ",o]}),l&&S.jsx("span",{className:"font-mono text-[9px] uppercase tracking-widest px-1.5 py-0.5 border border-success/20 text-success",children:"Auto"})]}),S.jsx("button",{type:"button",onClick:()=>e(t.path),className:Fe("font-mono text-[10px] uppercase tracking-widest px-3 py-1","border border-border text-muted-foreground","hover:border-accent hover:text-accent","transition-colors"),children:"Edit"})]}),S.jsxs("div",{className:"px-4 py-3",children:[d&&S.jsx("p",{className:"text-sm text-muted-foreground mb-3 leading-relaxed",children:d}),S.jsxs("div",{className:"flex gap-4 mb-3 font-mono text-[10px] text-muted-foreground",children:[c.length>0&&S.jsxs("span",{children:["deps: ",c.join(", ")]}),u.length>0&&S.jsxs("span",{children:[u.length," file",u.length!==1?"s":""]}),S.jsxs("span",{children:[t.tasks.length," task",t.tasks.length!==1?"s":""]})]}),S.jsx(YZ,{tasks:t.tasks,planPath:t.path,planContent:i,onContentChange:g})]})]})}function X1(){return X1=Object.assign?Object.assign.bind():function(t){for(var e=1;e{let t="lc,34,7n,7,7b,19,,,,2,,2,,,20,b,1c,l,g,,2t,7,2,6,2,2,,4,z,,u,r,2j,b,1m,9,9,,o,4,,9,,3,,5,17,3,3b,f,,w,1j,,,,4,8,4,,3,7,a,2,t,,1m,,,,2,4,8,,9,,a,2,q,,2,2,1l,,4,2,4,2,2,3,3,,u,2,3,,b,2,1l,,4,5,,2,4,,k,2,m,6,,,1m,,,2,,4,8,,7,3,a,2,u,,1n,,,,c,,9,,14,,3,,1l,3,5,3,,4,7,2,b,2,t,,1m,,2,,2,,3,,5,2,7,2,b,2,s,2,1l,2,,,2,4,8,,9,,a,2,t,,20,,4,,2,3,,,8,,29,,2,7,c,8,2q,,2,9,b,6,22,2,r,,,,,,1j,e,,5,,2,5,b,,10,9,,2u,4,,6,,2,2,2,p,2,4,3,g,4,d,,2,2,6,,f,,jj,3,qa,3,t,3,t,2,u,2,1s,2,,7,8,,2,b,9,,19,3,3b,2,y,,3a,3,4,2,9,,6,3,63,2,2,,1m,,,7,,,,,2,8,6,a,2,,1c,h,1r,4,1c,7,,,5,,14,9,c,2,w,4,2,2,,3,1k,,,2,3,,,3,1m,8,2,2,48,3,,d,,7,4,,6,,3,2,5i,1m,,5,ek,,5f,x,2da,3,3x,,2o,w,fe,6,2x,2,n9w,4,,a,w,2,28,2,7k,,3,,4,,p,2,5,,47,2,q,i,d,,12,8,p,b,1a,3,1c,,2,4,2,2,13,,1v,6,2,2,2,2,c,,8,,1b,,1f,,,3,2,2,5,2,,,16,2,8,,6m,,2,,4,,fn4,,kh,g,g,g,a6,2,gt,,6a,,45,5,1ae,3,,2,5,4,14,3,4,,4l,2,fx,4,ar,2,49,b,4w,,1i,f,1k,3,1d,4,2,2,1x,3,10,5,,8,1q,,c,2,1g,9,a,4,2,,2n,3,2,,,2,6,,4g,,3,8,l,2,1l,2,,,,,m,,e,7,3,5,5f,8,2,3,,,n,,29,,2,6,,,2,,,2,,2,6j,,2,4,6,2,,2,r,2,2d,8,2,,,2,2y,,,,2,6,,,2t,3,2,4,,5,77,9,,2,6t,,a,2,,,4,,40,4,2,2,4,,w,a,14,6,2,4,8,,9,6,2,3,1a,d,,2,ba,7,,6,,,2a,m,2,7,,2,,2,3e,6,3,,,2,,7,,,20,2,3,,,,9n,2,f0b,5,1n,7,t4,,1r,4,29,,f5k,2,43q,,,3,4,5,8,8,2,7,u,4,44,3,1iz,1j,4,1e,8,,e,,m,5,,f,11s,7,,h,2,7,,2,,5,79,7,c5,4,15s,7,31,7,240,5,gx7k,2o,3k,6o".split(",").map(e=>e?parseInt(e,36):1);for(let e=0,i=0;e>1;if(t=lD[n])e=n+1;else return!0;if(e==i)return!1}}function PA(t){return t>=127462&&t<=127487}const RA=8205;function KZ(t,e,i=!0,n=!0){return(i?cD:JZ)(t,e,n)}function cD(t,e,i){if(e==t.length)return e;e&&hD(t.charCodeAt(e))&&uD(t.charCodeAt(e-1))&&e--;let n=__(t,e);for(e+=QA(n);e=0&&PA(__(t,o));)s++,o-=2;if(s%2==0)break;e+=2}else break}return e}function JZ(t,e,i){for(;e>0;){let n=cD(t,e-2,i);if(n=56320&&t<57344}function uD(t){return t>=55296&&t<56320}function QA(t){return t<65536?1:2}let at=class fD{lineAt(e){if(e<0||e>this.length)throw new RangeError(`Invalid position ${e} in document of length ${this.length}`);return this.lineInner(e,!1,1,0)}line(e){if(e<1||e>this.lines)throw new RangeError(`Invalid line number ${e} in ${this.lines}-line document`);return this.lineInner(e,!0,1,0)}replace(e,i,n){[e,i]=rh(this,e,i);let r=[];return this.decompose(0,e,r,2),n.length&&n.decompose(0,n.length,r,3),this.decompose(i,this.length,r,1),ms.from(r,this.length-(i-e)+n.length)}append(e){return this.replace(this.length,this.length,e)}slice(e,i=this.length){[e,i]=rh(this,e,i);let n=[];return this.decompose(e,i,n,0),ms.from(n,i-e)}eq(e){if(e==this)return!0;if(e.length!=this.length||e.lines!=this.lines)return!1;let i=this.scanIdentical(e,1),n=this.length-this.scanIdentical(e,-1),r=new ff(this),s=new ff(e);for(let o=i,l=i;;){if(r.next(o),s.next(o),o=0,r.lineBreak!=s.lineBreak||r.done!=s.done||r.value!=s.value)return!1;if(l+=r.value.length,r.done||l>=n)return!0}}iter(e=1){return new ff(this,e)}iterRange(e,i=this.length){return new dD(this,e,i)}iterLines(e,i){let n;if(e==null)n=this.iter();else{i==null&&(i=this.lines+1);let r=this.line(e).from;n=this.iterRange(r,Math.max(r,i==this.lines+1?this.length:i<=1?0:this.line(i-1).to))}return new pD(n)}toString(){return this.sliceString(0)}toJSON(){let e=[];return this.flatten(e),e}constructor(){}static of(e){if(e.length==0)throw new RangeError("A document must have at least one line");return e.length==1&&!e[0]?fD.empty:e.length<=32?new Kt(e):ms.from(Kt.split(e,[]))}};class Kt extends at{constructor(e,i=eq(e)){super(),this.text=e,this.length=i}get lines(){return this.text.length}get children(){return null}lineInner(e,i,n,r){for(let s=0;;s++){let o=this.text[s],l=r+o.length;if((i?n:l)>=e)return new tq(r,l,n,o);r=l+1,n++}}decompose(e,i,n,r){let s=e<=0&&i>=this.length?this:new Kt(LA(this.text,e,i),Math.min(i,this.length)-Math.max(0,e));if(r&1){let o=n.pop(),l=Im(s.text,o.text.slice(),0,s.length);if(l.length<=32)n.push(new Kt(l,o.length+s.length));else{let c=l.length>>1;n.push(new Kt(l.slice(0,c)),new Kt(l.slice(c)))}}else n.push(s)}replace(e,i,n){if(!(n instanceof Kt))return super.replace(e,i,n);[e,i]=rh(this,e,i);let r=Im(this.text,Im(n.text,LA(this.text,0,e)),i),s=this.length+n.length-(i-e);return r.length<=32?new Kt(r,s):ms.from(Kt.split(r,[]),s)}sliceString(e,i=this.length,n=` -`){[e,i]=rh(this,e,i);let r="";for(let s=0,o=0;s<=i&&oe&&o&&(r+=n),es&&(r+=l.slice(Math.max(0,e-s),i-s)),s=c+1}return r}flatten(e){for(let i of this.text)e.push(i)}scanIdentical(){return 0}static split(e,i){let n=[],r=-1;for(let s of e)n.push(s),r+=s.length+1,n.length==32&&(i.push(new Kt(n,r)),n=[],r=-1);return r>-1&&i.push(new Kt(n,r)),i}}class ms extends at{constructor(e,i){super(),this.children=e,this.length=i,this.lines=0;for(let n of e)this.lines+=n.lines}lineInner(e,i,n,r){for(let s=0;;s++){let o=this.children[s],l=r+o.length,c=n+o.lines-1;if((i?c:l)>=e)return o.lineInner(e,i,n,r);r=l+1,n=c+1}}decompose(e,i,n,r){for(let s=0,o=0;o<=i&&s=o){let u=r&((o<=e?1:0)|(c>=i?2:0));o>=e&&c<=i&&!u?n.push(l):l.decompose(e-o,i-o,n,u)}o=c+1}}replace(e,i,n){if([e,i]=rh(this,e,i),n.lines=s&&i<=l){let c=o.replace(e-s,i-s,n),u=this.lines-o.lines+c.lines;if(c.lines>4&&c.lines>u>>6){let d=this.children.slice();return d[r]=c,new ms(d,this.length-(i-e)+n.length)}return super.replace(s,l,c)}s=l+1}return super.replace(e,i,n)}sliceString(e,i=this.length,n=` -`){[e,i]=rh(this,e,i);let r="";for(let s=0,o=0;se&&s&&(r+=n),eo&&(r+=l.sliceString(e-o,i-o,n)),o=c+1}return r}flatten(e){for(let i of this.children)i.flatten(e)}scanIdentical(e,i){if(!(e instanceof ms))return 0;let n=0,[r,s,o,l]=i>0?[0,0,this.children.length,e.children.length]:[this.children.length-1,e.children.length-1,-1,-1];for(;;r+=i,s+=i){if(r==o||s==l)return n;let c=this.children[r],u=e.children[s];if(c!=u)return n+c.scanIdentical(u,i);n+=c.length+1}}static from(e,i=e.reduce((n,r)=>n+r.length+1,-1)){let n=0;for(let O of e)n+=O.lines;if(n<32){let O=[];for(let _ of e)_.flatten(O);return new Kt(O,i)}let r=Math.max(32,n>>5),s=r<<1,o=r>>1,l=[],c=0,u=-1,d=[];function p(O){let _;if(O.lines>s&&O instanceof ms)for(let b of O.children)p(b);else O.lines>o&&(c>o||!c)?(g(),l.push(O)):O instanceof Kt&&c&&(_=d[d.length-1])instanceof Kt&&O.lines+_.lines<=32?(c+=O.lines,u+=O.length+1,d[d.length-1]=new Kt(_.text.concat(O.text),_.length+1+O.length)):(c+O.lines>r&&g(),c+=O.lines,u+=O.length+1,d.push(O))}function g(){c!=0&&(l.push(d.length==1?d[0]:ms.from(d,u)),u=-1,c=d.length=0)}for(let O of e)p(O);return g(),l.length==1?l[0]:new ms(l,i)}}at.empty=new Kt([""],0);function eq(t){let e=-1;for(let i of t)e+=i.length+1;return e}function Im(t,e,i=0,n=1e9){for(let r=0,s=0,o=!0;s=i&&(c>n&&(l=l.slice(0,n-r)),r0?1:(e instanceof Kt?e.text.length:e.children.length)<<1]}nextInner(e,i){for(this.done=this.lineBreak=!1;;){let n=this.nodes.length-1,r=this.nodes[n],s=this.offsets[n],o=s>>1,l=r instanceof Kt?r.text.length:r.children.length;if(o==(i>0?l:0)){if(n==0)return this.done=!0,this.value="",this;i>0&&this.offsets[n-1]++,this.nodes.pop(),this.offsets.pop()}else if((s&1)==(i>0?0:1)){if(this.offsets[n]+=i,e==0)return this.lineBreak=!0,this.value=` -`,this;e--}else if(r instanceof Kt){let c=r.text[o+(i<0?-1:0)];if(this.offsets[n]+=i,c.length>Math.max(0,e))return this.value=e==0?c:i>0?c.slice(e):c.slice(0,c.length-e),this;e-=c.length}else{let c=r.children[o+(i<0?-1:0)];e>c.length?(e-=c.length,this.offsets[n]+=i):(i<0&&this.offsets[n]--,this.nodes.push(c),this.offsets.push(i>0?1:(c instanceof Kt?c.text.length:c.children.length)<<1))}}}next(e=0){return e<0&&(this.nextInner(-e,-this.dir),e=this.value.length),this.nextInner(e,this.dir)}}class dD{constructor(e,i,n){this.value="",this.done=!1,this.cursor=new ff(e,i>n?-1:1),this.pos=i>n?e.length:0,this.from=Math.min(i,n),this.to=Math.max(i,n)}nextInner(e,i){if(i<0?this.pos<=this.from:this.pos>=this.to)return this.value="",this.done=!0,this;e+=Math.max(0,i<0?this.pos-this.to:this.from-this.pos);let n=i<0?this.pos-this.from:this.to-this.pos;e>n&&(e=n),n-=e;let{value:r}=this.cursor.next(e);return this.pos+=(r.length+e)*i,this.value=r.length<=n?r:i<0?r.slice(r.length-n):r.slice(0,n),this.done=!this.value,this}next(e=0){return e<0?e=Math.max(e,this.from-this.pos):e>0&&(e=Math.min(e,this.to-this.pos)),this.nextInner(e,this.cursor.dir)}get lineBreak(){return this.cursor.lineBreak&&this.value!=""}}class pD{constructor(e){this.inner=e,this.afterBreak=!0,this.value="",this.done=!1}next(e=0){let{done:i,lineBreak:n,value:r}=this.inner.next(e);return i&&this.afterBreak?(this.value="",this.afterBreak=!1):i?(this.done=!0,this.value=""):n?this.afterBreak?this.value="":(this.afterBreak=!0,this.next()):(this.value=r,this.afterBreak=!1),this}get lineBreak(){return!1}}typeof Symbol<"u"&&(at.prototype[Symbol.iterator]=function(){return this.iter()},ff.prototype[Symbol.iterator]=dD.prototype[Symbol.iterator]=pD.prototype[Symbol.iterator]=function(){return this});let tq=class{constructor(e,i,n,r){this.from=e,this.to=i,this.number=n,this.text=r}get length(){return this.to-this.from}};function rh(t,e,i){return e=Math.max(0,Math.min(t.length,e)),[e,Math.max(e,Math.min(t.length,i))]}function Di(t,e,i=!0,n=!0){return KZ(t,e,i,n)}function iq(t){return t>=56320&&t<57344}function nq(t){return t>=55296&&t<56320}function Ln(t,e){let i=t.charCodeAt(e);if(!nq(i)||e+1==t.length)return i;let n=t.charCodeAt(e+1);return iq(n)?(i-55296<<10)+(n-56320)+65536:i}function Ax(t){return t<=65535?String.fromCharCode(t):(t-=65536,String.fromCharCode((t>>10)+55296,(t&1023)+56320))}function gs(t){return t<65536?1:2}const q1=/\r\n?|\n/;var Fi=(function(t){return t[t.Simple=0]="Simple",t[t.TrackDel=1]="TrackDel",t[t.TrackBefore=2]="TrackBefore",t[t.TrackAfter=3]="TrackAfter",t})(Fi||(Fi={}));class Cs{constructor(e){this.sections=e}get length(){let e=0;for(let i=0;ie)return s+(e-r);s+=l}else{if(n!=Fi.Simple&&u>=e&&(n==Fi.TrackDel&&re||n==Fi.TrackBefore&&re))return null;if(u>e||u==e&&i<0&&!l)return e==r||i<0?s:s+c;s+=c}r=u}if(e>r)throw new RangeError(`Position ${e} is out of range for changeset of length ${r}`);return s}touchesRange(e,i=e){for(let n=0,r=0;n=0&&r<=i&&l>=e)return ri?"cover":!0;r=l}return!1}toString(){let e="";for(let i=0;i=0?":"+r:"")}return e}toJSON(){return this.sections}static fromJSON(e){if(!Array.isArray(e)||e.length%2||e.some(i=>typeof i!="number"))throw new RangeError("Invalid JSON representation of ChangeDesc");return new Cs(e)}static create(e){return new Cs(e)}}class vi extends Cs{constructor(e,i){super(e),this.inserted=i}apply(e){if(this.length!=e.length)throw new RangeError("Applying change set to a document with the wrong length");return W1(this,(i,n,r,s,o)=>e=e.replace(r,r+(n-i),o),!1),e}mapDesc(e,i=!1){return U1(this,e,i,!0)}invert(e){let i=this.sections.slice(),n=[];for(let r=0,s=0;r=0){i[r]=l,i[r+1]=o;let c=r>>1;for(;n.length0&&Oa(n,i,s.text),s.forward(d),l+=d}let u=e[o++];for(;l>1].toJSON()))}return e}static of(e,i,n){let r=[],s=[],o=0,l=null;function c(d=!1){if(!d&&!r.length)return;og||p<0||g>i)throw new RangeError(`Invalid change range ${p} to ${g} (in doc of length ${i})`);let _=O?typeof O=="string"?at.of(O.split(n||q1)):O:at.empty,b=_.length;if(p==g&&b==0)return;po&&tn(r,p-o,-1),tn(r,g-p,b),Oa(s,r,_),o=g}}return u(e),c(!l),l}static empty(e){return new vi(e?[e,-1]:[],[])}static fromJSON(e){if(!Array.isArray(e))throw new RangeError("Invalid JSON representation of ChangeSet");let i=[],n=[];for(let r=0;rl&&typeof o!="string"))throw new RangeError("Invalid JSON representation of ChangeSet");if(s.length==1)i.push(s[0],0);else{for(;n.length=0&&i<=0&&i==t[r+1]?t[r]+=e:r>=0&&e==0&&t[r]==0?t[r+1]+=i:n?(t[r]+=e,t[r+1]+=i):t.push(e,i)}function Oa(t,e,i){if(i.length==0)return;let n=e.length-2>>1;if(n>1])),!(i||o==t.sections.length||t.sections[o+1]<0);)l=t.sections[o++],c=t.sections[o++];e(r,u,s,d,p),r=u,s=d}}}function U1(t,e,i,n=!1){let r=[],s=n?[]:null,o=new Mf(t),l=new Mf(e);for(let c=-1;;){if(o.done&&l.len||l.done&&o.len)throw new Error("Mismatched change set lengths");if(o.ins==-1&&l.ins==-1){let u=Math.min(o.len,l.len);tn(r,u,-1),o.forward(u),l.forward(u)}else if(l.ins>=0&&(o.ins<0||c==o.i||o.off==0&&(l.len=0&&c=0){let u=0,d=o.len;for(;d;)if(l.ins==-1){let p=Math.min(d,l.len);u+=p,d-=p,l.forward(p)}else if(l.ins==0&&l.lenc||o.ins>=0&&o.len>c)&&(l||n.length>u),s.forward2(c),o.forward(c)}}}}class Mf{constructor(e){this.set=e,this.i=0,this.next()}next(){let{sections:e}=this.set;this.i>1;return i>=e.length?at.empty:e[i]}textBit(e){let{inserted:i}=this.set,n=this.i-2>>1;return n>=i.length&&!e?at.empty:i[n].slice(this.off,e==null?void 0:this.off+e)}forward(e){e==this.len?this.next():(this.len-=e,this.off+=e)}forward2(e){this.ins==-1?this.forward(e):e==this.ins?this.next():(this.ins-=e,this.off+=e)}}class ml{constructor(e,i,n){this.from=e,this.to=i,this.flags=n}get anchor(){return this.flags&32?this.to:this.from}get head(){return this.flags&32?this.from:this.to}get empty(){return this.from==this.to}get assoc(){return this.flags&8?-1:this.flags&16?1:0}get bidiLevel(){let e=this.flags&7;return e==7?null:e}get goalColumn(){let e=this.flags>>6;return e==16777215?void 0:e}map(e,i=-1){let n,r;return this.empty?n=r=e.mapPos(this.from,i):(n=e.mapPos(this.from,1),r=e.mapPos(this.to,-1)),n==this.from&&r==this.to?this:new ml(n,r,this.flags)}extend(e,i=e){if(e<=this.anchor&&i>=this.anchor)return se.range(e,i);let n=Math.abs(e-this.anchor)>Math.abs(i-this.anchor)?e:i;return se.range(this.anchor,n)}eq(e,i=!1){return this.anchor==e.anchor&&this.head==e.head&&this.goalColumn==e.goalColumn&&(!i||!this.empty||this.assoc==e.assoc)}toJSON(){return{anchor:this.anchor,head:this.head}}static fromJSON(e){if(!e||typeof e.anchor!="number"||typeof e.head!="number")throw new RangeError("Invalid JSON representation for SelectionRange");return se.range(e.anchor,e.head)}static create(e,i,n){return new ml(e,i,n)}}class se{constructor(e,i){this.ranges=e,this.mainIndex=i}map(e,i=-1){return e.empty?this:se.create(this.ranges.map(n=>n.map(e,i)),this.mainIndex)}eq(e,i=!1){if(this.ranges.length!=e.ranges.length||this.mainIndex!=e.mainIndex)return!1;for(let n=0;ne.toJSON()),main:this.mainIndex}}static fromJSON(e){if(!e||!Array.isArray(e.ranges)||typeof e.main!="number"||e.main>=e.ranges.length)throw new RangeError("Invalid JSON representation for EditorSelection");return new se(e.ranges.map(i=>ml.fromJSON(i)),e.main)}static single(e,i=e){return new se([se.range(e,i)],0)}static create(e,i=0){if(e.length==0)throw new RangeError("A selection needs at least one range");for(let n=0,r=0;re?8:0)|s)}static normalized(e,i=0){let n=e[i];e.sort((r,s)=>r.from-s.from),i=e.indexOf(n);for(let r=1;rs.head?se.range(c,l):se.range(l,c))}}return new se(e,i)}}function gD(t,e){for(let i of t.ranges)if(i.to>e)throw new RangeError("Selection points outside of document")}let Ex=0;class Se{constructor(e,i,n,r,s){this.combine=e,this.compareInput=i,this.compare=n,this.isStatic=r,this.id=Ex++,this.default=e([]),this.extensions=typeof s=="function"?s(this):s}get reader(){return this}static define(e={}){return new Se(e.combine||(i=>i),e.compareInput||((i,n)=>i===n),e.compare||(e.combine?(i,n)=>i===n:Mx),!!e.static,e.enables)}of(e){return new Vm([],this,0,e)}compute(e,i){if(this.isStatic)throw new Error("Can't compute a static facet");return new Vm(e,this,1,i)}computeN(e,i){if(this.isStatic)throw new Error("Can't compute a static facet");return new Vm(e,this,2,i)}from(e,i){return i||(i=n=>n),this.compute([e],n=>i(n.field(e)))}}function Mx(t,e){return t==e||t.length==e.length&&t.every((i,n)=>i===e[n])}class Vm{constructor(e,i,n,r){this.dependencies=e,this.facet=i,this.type=n,this.value=r,this.id=Ex++}dynamicSlot(e){var i;let n=this.value,r=this.facet.compareInput,s=this.id,o=e[s]>>1,l=this.type==2,c=!1,u=!1,d=[];for(let p of this.dependencies)p=="doc"?c=!0:p=="selection"?u=!0:(((i=e[p.id])!==null&&i!==void 0?i:1)&1)==0&&d.push(e[p.id]);return{create(p){return p.values[o]=n(p),1},update(p,g){if(c&&g.docChanged||u&&(g.docChanged||g.selection)||Y1(p,d)){let O=n(p);if(l?!DA(O,p.values[o],r):!r(O,p.values[o]))return p.values[o]=O,1}return 0},reconfigure:(p,g)=>{let O,_=g.config.address[s];if(_!=null){let b=yg(g,_);if(this.dependencies.every(x=>x instanceof Se?g.facet(x)===p.facet(x):x instanceof Bi?g.field(x,!1)==p.field(x,!1):!0)||(l?DA(O=n(p),b,r):r(O=n(p),b)))return p.values[o]=b,0}else O=n(p);return p.values[o]=O,1}}}}function DA(t,e,i){if(t.length!=e.length)return!1;for(let n=0;nt[c.id]),r=i.map(c=>c.type),s=n.filter(c=>!(c&1)),o=t[e.id]>>1;function l(c){let u=[];for(let d=0;dn===r),e);return e.provide&&(i.provides=e.provide(i)),i}create(e){let i=e.facet(Fp).find(n=>n.field==this);return((i==null?void 0:i.create)||this.createF)(e)}slot(e){let i=e[this.id]>>1;return{create:n=>(n.values[i]=this.create(n),1),update:(n,r)=>{let s=n.values[i],o=this.updateF(s,r);return this.compareF(s,o)?0:(n.values[i]=o,1)},reconfigure:(n,r)=>{let s=n.facet(Fp),o=r.facet(Fp),l;return(l=s.find(c=>c.field==this))&&l!=o.find(c=>c.field==this)?(n.values[i]=l.create(n),1):r.config.address[this.id]!=null?(n.values[i]=r.field(this),0):(n.values[i]=this.create(n),1)}}}init(e){return[this,Fp.of({field:this,create:e})]}get extension(){return this}}const hl={lowest:4,low:3,default:2,high:1,highest:0};function ku(t){return e=>new OD(e,t)}const So={highest:ku(hl.highest),high:ku(hl.high),default:ku(hl.default),low:ku(hl.low),lowest:ku(hl.lowest)};class OD{constructor(e,i){this.inner=e,this.prec=i}}class uO{of(e){return new H1(this,e)}reconfigure(e){return uO.reconfigure.of({compartment:this,extension:e})}get(e){return e.config.compartments.get(this)}}class H1{constructor(e,i){this.compartment=e,this.inner=i}}class _g{constructor(e,i,n,r,s,o){for(this.base=e,this.compartments=i,this.dynamicSlots=n,this.address=r,this.staticValues=s,this.facets=o,this.statusTemplate=[];this.statusTemplate.length>1]}static resolve(e,i,n){let r=[],s=Object.create(null),o=new Map;for(let g of sq(e,i,o))g instanceof Bi?r.push(g):(s[g.facet.id]||(s[g.facet.id]=[])).push(g);let l=Object.create(null),c=[],u=[];for(let g of r)l[g.id]=u.length<<1,u.push(O=>g.slot(O));let d=n==null?void 0:n.config.facets;for(let g in s){let O=s[g],_=O[0].facet,b=d&&d[g]||[];if(O.every(x=>x.type==0))if(l[_.id]=c.length<<1|1,Mx(b,O))c.push(n.facet(_));else{let x=_.combine(O.map(w=>w.value));c.push(n&&_.compare(x,n.facet(_))?n.facet(_):x)}else{for(let x of O)x.type==0?(l[x.id]=c.length<<1|1,c.push(x.value)):(l[x.id]=u.length<<1,u.push(w=>x.dynamicSlot(w)));l[_.id]=u.length<<1,u.push(x=>rq(x,_,O))}}let p=u.map(g=>g(l));return new _g(e,o,p,l,c,s)}}function sq(t,e,i){let n=[[],[],[],[],[]],r=new Map;function s(o,l){let c=r.get(o);if(c!=null){if(c<=l)return;let u=n[c].indexOf(o);u>-1&&n[c].splice(u,1),o instanceof H1&&i.delete(o.compartment)}if(r.set(o,l),Array.isArray(o))for(let u of o)s(u,l);else if(o instanceof H1){if(i.has(o.compartment))throw new RangeError("Duplicate use of compartment in extensions");let u=e.get(o.compartment)||o.inner;i.set(o.compartment,u),s(u,l)}else if(o instanceof OD)s(o.inner,o.prec);else if(o instanceof Bi)n[l].push(o),o.provides&&s(o.provides,l);else if(o instanceof Vm)n[l].push(o),o.facet.extensions&&s(o.facet.extensions,hl.default);else{let u=o.extension;if(!u)throw new Error(`Unrecognized extension value in extension set (${o}). This sometimes happens because multiple instances of @codemirror/state are loaded, breaking instanceof checks.`);s(u,l)}}return s(t,hl.default),n.reduce((o,l)=>o.concat(l))}function df(t,e){if(e&1)return 2;let i=e>>1,n=t.status[i];if(n==4)throw new Error("Cyclic dependency between fields and/or facets");if(n&2)return n;t.status[i]=4;let r=t.computeSlot(t,t.config.dynamicSlots[i]);return t.status[i]=2|r}function yg(t,e){return e&1?t.config.staticValues[e>>1]:t.values[e>>1]}const vD=Se.define(),F1=Se.define({combine:t=>t.some(e=>e),static:!0}),_D=Se.define({combine:t=>t.length?t[0]:void 0,static:!0}),yD=Se.define(),bD=Se.define(),SD=Se.define(),xD=Se.define({combine:t=>t.length?t[0]:!1});class Rs{constructor(e,i){this.type=e,this.value=i}static define(){return new oq}}class oq{of(e){return new Rs(this,e)}}class aq{constructor(e){this.map=e}of(e){return new ze(this,e)}}class ze{constructor(e,i){this.type=e,this.value=i}map(e){let i=this.type.map(this.value,e);return i===void 0?void 0:i==this.value?this:new ze(this.type,i)}is(e){return this.type==e}static define(e={}){return new aq(e.map||(i=>i))}static mapEffects(e,i){if(!e.length)return e;let n=[];for(let r of e){let s=r.map(i);s&&n.push(s)}return n}}ze.reconfigure=ze.define();ze.appendConfig=ze.define();class hi{constructor(e,i,n,r,s,o){this.startState=e,this.changes=i,this.selection=n,this.effects=r,this.annotations=s,this.scrollIntoView=o,this._doc=null,this._state=null,n&&gD(n,i.newLength),s.some(l=>l.type==hi.time)||(this.annotations=s.concat(hi.time.of(Date.now())))}static create(e,i,n,r,s,o){return new hi(e,i,n,r,s,o)}get newDoc(){return this._doc||(this._doc=this.changes.apply(this.startState.doc))}get newSelection(){return this.selection||this.startState.selection.map(this.changes)}get state(){return this._state||this.startState.applyTransaction(this),this._state}annotation(e){for(let i of this.annotations)if(i.type==e)return i.value}get docChanged(){return!this.changes.empty}get reconfigured(){return this.startState.config!=this.state.config}isUserEvent(e){let i=this.annotation(hi.userEvent);return!!(i&&(i==e||i.length>e.length&&i.slice(0,e.length)==e&&i[e.length]=="."))}}hi.time=Rs.define();hi.userEvent=Rs.define();hi.addToHistory=Rs.define();hi.remote=Rs.define();function lq(t,e){let i=[];for(let n=0,r=0;;){let s,o;if(n=t[n]))s=t[n++],o=t[n++];else if(r=0;r--){let s=n[r](t);s instanceof hi?t=s:Array.isArray(s)&&s.length==1&&s[0]instanceof hi?t=s[0]:t=CD(e,Wc(s),!1)}return t}function hq(t){let e=t.startState,i=e.facet(SD),n=t;for(let r=i.length-1;r>=0;r--){let s=i[r](t);s&&Object.keys(s).length&&(n=wD(n,G1(e,s,t.changes.newLength),!0))}return n==t?t:hi.create(e,t.changes,t.selection,n.effects,n.annotations,n.scrollIntoView)}const uq=[];function Wc(t){return t==null?uq:Array.isArray(t)?t:[t]}var Dt=(function(t){return t[t.Word=0]="Word",t[t.Space=1]="Space",t[t.Other=2]="Other",t})(Dt||(Dt={}));const fq=/[\u00df\u0587\u0590-\u05f4\u0600-\u06ff\u3040-\u309f\u30a0-\u30ff\u3400-\u4db5\u4e00-\u9fcc\uac00-\ud7af]/;let K1;try{K1=new RegExp("[\\p{Alphabetic}\\p{Number}_]","u")}catch{}function dq(t){if(K1)return K1.test(t);for(let e=0;e"€"&&(i.toUpperCase()!=i.toLowerCase()||fq.test(i)))return!0}return!1}function pq(t){return e=>{if(!/\S/.test(e))return Dt.Space;if(dq(e))return Dt.Word;for(let i=0;i-1)return Dt.Word;return Dt.Other}}class et{constructor(e,i,n,r,s,o){this.config=e,this.doc=i,this.selection=n,this.values=r,this.status=e.statusTemplate.slice(),this.computeSlot=s,o&&(o._state=this);for(let l=0;lr.set(u,c)),i=null),r.set(l.value.compartment,l.value.extension)):l.is(ze.reconfigure)?(i=null,n=l.value):l.is(ze.appendConfig)&&(i=null,n=Wc(n).concat(l.value));let s;i?s=e.startState.values.slice():(i=_g.resolve(n,r,this),s=new et(i,this.doc,this.selection,i.dynamicSlots.map(()=>null),(c,u)=>u.reconfigure(c,this),null).values);let o=e.startState.facet(F1)?e.newSelection:e.newSelection.asSingle();new et(i,e.newDoc,o,s,(l,c)=>c.update(l,e),e)}replaceSelection(e){return typeof e=="string"&&(e=this.toText(e)),this.changeByRange(i=>({changes:{from:i.from,to:i.to,insert:e},range:se.cursor(i.from+e.length)}))}changeByRange(e){let i=this.selection,n=e(i.ranges[0]),r=this.changes(n.changes),s=[n.range],o=Wc(n.effects);for(let l=1;lo.spec.fromJSON(l,c)))}}return et.create({doc:e.doc,selection:se.fromJSON(e.selection),extensions:i.extensions?r.concat([i.extensions]):r})}static create(e={}){let i=_g.resolve(e.extensions||[],new Map),n=e.doc instanceof at?e.doc:at.of((e.doc||"").split(i.staticFacet(et.lineSeparator)||q1)),r=e.selection?e.selection instanceof se?e.selection:se.single(e.selection.anchor,e.selection.head):se.single(0);return gD(r,n.length),i.staticFacet(F1)||(r=r.asSingle()),new et(i,n,r,i.dynamicSlots.map(()=>null),(s,o)=>o.create(s),null)}get tabSize(){return this.facet(et.tabSize)}get lineBreak(){return this.facet(et.lineSeparator)||` -`}get readOnly(){return this.facet(xD)}phrase(e,...i){for(let n of this.facet(et.phrases))if(Object.prototype.hasOwnProperty.call(n,e)){e=n[e];break}return i.length&&(e=e.replace(/\$(\$|\d*)/g,(n,r)=>{if(r=="$")return"$";let s=+(r||1);return!s||s>i.length?n:i[s-1]})),e}languageDataAt(e,i,n=-1){let r=[];for(let s of this.facet(vD))for(let o of s(this,i,n))Object.prototype.hasOwnProperty.call(o,e)&&r.push(o[e]);return r}charCategorizer(e){let i=this.languageDataAt("wordChars",e);return pq(i.length?i[0]:"")}wordAt(e){let{text:i,from:n,length:r}=this.doc.lineAt(e),s=this.charCategorizer(e),o=e-n,l=e-n;for(;o>0;){let c=Di(i,o,!1);if(s(i.slice(c,o))!=Dt.Word)break;o=c}for(;lt.length?t[0]:4});et.lineSeparator=_D;et.readOnly=xD;et.phrases=Se.define({compare(t,e){let i=Object.keys(t),n=Object.keys(e);return i.length==n.length&&i.every(r=>t[r]==e[r])}});et.languageData=vD;et.changeFilter=yD;et.transactionFilter=bD;et.transactionExtender=SD;uO.reconfigure=ze.define();function Qs(t,e,i={}){let n={};for(let r of t)for(let s of Object.keys(r)){let o=r[s],l=n[s];if(l===void 0)n[s]=o;else if(!(l===o||o===void 0))if(Object.hasOwnProperty.call(i,s))n[s]=i[s](l,o);else throw new Error("Config merge conflict for field "+s)}for(let r in e)n[r]===void 0&&(n[r]=e[r]);return n}class Sa{eq(e){return this==e}range(e,i=e){return J1.create(e,i,this)}}Sa.prototype.startSide=Sa.prototype.endSide=0;Sa.prototype.point=!1;Sa.prototype.mapMode=Fi.TrackDel;function Px(t,e){return t==e||t.constructor==e.constructor&&t.eq(e)}let J1=class kD{constructor(e,i,n){this.from=e,this.to=i,this.value=n}static create(e,i,n){return new kD(e,i,n)}};function eb(t,e){return t.from-e.from||t.value.startSide-e.value.startSide}class Rx{constructor(e,i,n,r){this.from=e,this.to=i,this.value=n,this.maxPoint=r}get length(){return this.to[this.to.length-1]}findIndex(e,i,n,r=0){let s=n?this.to:this.from;for(let o=r,l=s.length;;){if(o==l)return o;let c=o+l>>1,u=s[c]-e||(n?this.value[c].endSide:this.value[c].startSide)-i;if(c==o)return u>=0?o:l;u>=0?l=c:o=c+1}}between(e,i,n,r){for(let s=this.findIndex(i,-1e9,!0),o=this.findIndex(n,1e9,!1,s);sO||g==O&&u.startSide>0&&u.endSide<=0)continue;(O-g||u.endSide-u.startSide)<0||(o<0&&(o=g),u.point&&(l=Math.max(l,O-g)),n.push(u),r.push(g-o),s.push(O-o))}return{mapped:n.length?new Rx(r,s,n,l):null,pos:o}}}class Ge{constructor(e,i,n,r){this.chunkPos=e,this.chunk=i,this.nextLayer=n,this.maxPoint=r}static create(e,i,n,r){return new Ge(e,i,n,r)}get length(){let e=this.chunk.length-1;return e<0?0:Math.max(this.chunkEnd(e),this.nextLayer.length)}get size(){if(this.isEmpty)return 0;let e=this.nextLayer.size;for(let i of this.chunk)e+=i.value.length;return e}chunkEnd(e){return this.chunkPos[e]+this.chunk[e].length}update(e){let{add:i=[],sort:n=!1,filterFrom:r=0,filterTo:s=this.length}=e,o=e.filter;if(i.length==0&&!o)return this;if(n&&(i=i.slice().sort(eb)),this.isEmpty)return i.length?Ge.of(i):this;let l=new TD(this,null,-1).goto(0),c=0,u=[],d=new _o;for(;l.value||c=0){let p=i[c++];d.addInner(p.from,p.to,p.value)||u.push(p)}else l.rangeIndex==1&&l.chunkIndexthis.chunkEnd(l.chunkIndex)||sl.to||s=s&&e<=s+o.length&&o.between(s,e-s,i-s,n)===!1)return}this.nextLayer.between(e,i,n)}}iter(e=0){return Pf.from([this]).goto(e)}get isEmpty(){return this.nextLayer==this}static iter(e,i=0){return Pf.from(e).goto(i)}static compare(e,i,n,r,s=-1){let o=e.filter(p=>p.maxPoint>0||!p.isEmpty&&p.maxPoint>=s),l=i.filter(p=>p.maxPoint>0||!p.isEmpty&&p.maxPoint>=s),c=BA(o,l,n),u=new Tu(o,c,s),d=new Tu(l,c,s);n.iterGaps((p,g,O)=>$A(u,p,d,g,O,r)),n.empty&&n.length==0&&$A(u,0,d,0,0,r)}static eq(e,i,n=0,r){r==null&&(r=999999999);let s=e.filter(d=>!d.isEmpty&&i.indexOf(d)<0),o=i.filter(d=>!d.isEmpty&&e.indexOf(d)<0);if(s.length!=o.length)return!1;if(!s.length)return!0;let l=BA(s,o),c=new Tu(s,l,0).goto(n),u=new Tu(o,l,0).goto(n);for(;;){if(c.to!=u.to||!tb(c.active,u.active)||c.point&&(!u.point||!Px(c.point,u.point)))return!1;if(c.to>r)return!0;c.next(),u.next()}}static spans(e,i,n,r,s=-1){let o=new Tu(e,null,s).goto(i),l=i,c=o.openStart;for(;;){let u=Math.min(o.to,n);if(o.point){let d=o.activeForPoint(o.to),p=o.pointFroml&&(r.span(l,u,o.active,c),c=o.openEnd(u));if(o.to>n)return c+(o.point&&o.to>n?1:0);l=o.to,o.next()}}static of(e,i=!1){let n=new _o;for(let r of e instanceof J1?[e]:i?mq(e):e)n.add(r.from,r.to,r.value);return n.finish()}static join(e){if(!e.length)return Ge.empty;let i=e[e.length-1];for(let n=e.length-2;n>=0;n--)for(let r=e[n];r!=Ge.empty;r=r.nextLayer)i=new Ge(r.chunkPos,r.chunk,i,Math.max(r.maxPoint,i.maxPoint));return i}}Ge.empty=new Ge([],[],null,-1);function mq(t){if(t.length>1)for(let e=t[0],i=1;i0)return t.slice().sort(eb);e=n}return t}Ge.empty.nextLayer=Ge.empty;class _o{finishChunk(e){this.chunks.push(new Rx(this.from,this.to,this.value,this.maxPoint)),this.chunkPos.push(this.chunkStart),this.chunkStart=-1,this.setMaxPoint=Math.max(this.setMaxPoint,this.maxPoint),this.maxPoint=-1,e&&(this.from=[],this.to=[],this.value=[])}constructor(){this.chunks=[],this.chunkPos=[],this.chunkStart=-1,this.last=null,this.lastFrom=-1e9,this.lastTo=-1e9,this.from=[],this.to=[],this.value=[],this.maxPoint=-1,this.setMaxPoint=-1,this.nextLayer=null}add(e,i,n){this.addInner(e,i,n)||(this.nextLayer||(this.nextLayer=new _o)).add(e,i,n)}addInner(e,i,n){let r=e-this.lastTo||n.startSide-this.last.endSide;if(r<=0&&(e-this.lastFrom||n.startSide-this.last.startSide)<0)throw new Error("Ranges must be added sorted by `from` position and `startSide`");return r<0?!1:(this.from.length==250&&this.finishChunk(!0),this.chunkStart<0&&(this.chunkStart=e),this.from.push(e-this.chunkStart),this.to.push(i-this.chunkStart),this.last=n,this.lastFrom=e,this.lastTo=i,this.value.push(n),n.point&&(this.maxPoint=Math.max(this.maxPoint,i-e)),!0)}addChunk(e,i){if((e-this.lastTo||i.value[0].startSide-this.last.endSide)<0)return!1;this.from.length&&this.finishChunk(!0),this.setMaxPoint=Math.max(this.setMaxPoint,i.maxPoint),this.chunks.push(i),this.chunkPos.push(e);let n=i.value.length-1;return this.last=i.value[n],this.lastFrom=i.from[n]+e,this.lastTo=i.to[n]+e,!0}finish(){return this.finishInner(Ge.empty)}finishInner(e){if(this.from.length&&this.finishChunk(!1),this.chunks.length==0)return e;let i=Ge.create(this.chunkPos,this.chunks,this.nextLayer?this.nextLayer.finishInner(e):e,this.setMaxPoint);return this.from=null,i}}function BA(t,e,i){let n=new Map;for(let s of t)for(let o=0;o=this.minPoint)break}}setRangeIndex(e){if(e==this.layer.chunk[this.chunkIndex].value.length){if(this.chunkIndex++,this.skip)for(;this.chunkIndex=n&&r.push(new TD(o,i,n,s));return r.length==1?r[0]:new Pf(r)}get startSide(){return this.value?this.value.startSide:0}goto(e,i=-1e9){for(let n of this.heap)n.goto(e,i);for(let n=this.heap.length>>1;n>=0;n--)y_(this.heap,n);return this.next(),this}forward(e,i){for(let n of this.heap)n.forward(e,i);for(let n=this.heap.length>>1;n>=0;n--)y_(this.heap,n);(this.to-e||this.value.endSide-i)<0&&this.next()}next(){if(this.heap.length==0)this.from=this.to=1e9,this.value=null,this.rank=-1;else{let e=this.heap[0];this.from=e.from,this.to=e.to,this.value=e.value,this.rank=e.rank,e.value&&e.next(),y_(this.heap,0)}}}function y_(t,e){for(let i=t[e];;){let n=(e<<1)+1;if(n>=t.length)break;let r=t[n];if(n+1=0&&(r=t[n+1],n++),i.compare(r)<0)break;t[n]=i,t[e]=r,e=n}}class Tu{constructor(e,i,n){this.minPoint=n,this.active=[],this.activeTo=[],this.activeRank=[],this.minActive=-1,this.point=null,this.pointFrom=0,this.pointRank=0,this.to=-1e9,this.endSide=0,this.openStart=-1,this.cursor=Pf.from(e,i,n)}goto(e,i=-1e9){return this.cursor.goto(e,i),this.active.length=this.activeTo.length=this.activeRank.length=0,this.minActive=-1,this.to=e,this.endSide=i,this.openStart=-1,this.next(),this}forward(e,i){for(;this.minActive>-1&&(this.activeTo[this.minActive]-e||this.active[this.minActive].endSide-i)<0;)this.removeActive(this.minActive);this.cursor.forward(e,i)}removeActive(e){Gp(this.active,e),Gp(this.activeTo,e),Gp(this.activeRank,e),this.minActive=zA(this.active,this.activeTo)}addActive(e){let i=0,{value:n,to:r,rank:s}=this.cursor;for(;i0;)i++;Kp(this.active,i,n),Kp(this.activeTo,i,r),Kp(this.activeRank,i,s),e&&Kp(e,i,this.cursor.from),this.minActive=zA(this.active,this.activeTo)}next(){let e=this.to,i=this.point;this.point=null;let n=this.openStart<0?[]:null;for(;;){let r=this.minActive;if(r>-1&&(this.activeTo[r]-this.cursor.from||this.active[r].endSide-this.cursor.startSide)<0){if(this.activeTo[r]>e){this.to=this.activeTo[r],this.endSide=this.active[r].endSide;break}this.removeActive(r),n&&Gp(n,r)}else if(this.cursor.value)if(this.cursor.from>e){this.to=this.cursor.from,this.endSide=this.cursor.startSide;break}else{let s=this.cursor.value;if(!s.point)this.addActive(n),this.cursor.next();else if(i&&this.cursor.to==this.to&&this.cursor.from=0&&n[r]=0&&!(this.activeRank[n]e||this.activeTo[n]==e&&this.active[n].endSide>=this.point.endSide)&&i.push(this.active[n]);return i.reverse()}openEnd(e){let i=0;for(let n=this.activeTo.length-1;n>=0&&this.activeTo[n]>e;n--)i++;return i}}function $A(t,e,i,n,r,s){t.goto(e),i.goto(n);let o=n+r,l=n,c=n-e,u=!!s.boundChange;for(let d=!1;;){let p=t.to+c-i.to,g=p||t.endSide-i.endSide,O=g<0?t.to+c:i.to,_=Math.min(O,o);if(t.point||i.point?(t.point&&i.point&&Px(t.point,i.point)&&tb(t.activeForPoint(t.to),i.activeForPoint(i.to))||s.comparePoint(l,_,t.point,i.point),d=!1):(d&&s.boundChange(l),_>l&&!tb(t.active,i.active)&&s.compareRange(l,_,t.active,i.active),u&&_o)break;l=O,g<=0&&t.next(),g>=0&&i.next()}}function tb(t,e){if(t.length!=e.length)return!1;for(let i=0;i=e;n--)t[n+1]=t[n];t[e]=i}function zA(t,e){let i=-1,n=1e9;for(let r=0;r=e)return r;if(r==t.length)break;s+=t.charCodeAt(r)==9?i-s%i:1,r=Di(t,r)}return n===!0?-1:t.length}const nb="ͼ",NA=typeof Symbol>"u"?"__"+nb:Symbol.for(nb),rb=typeof Symbol>"u"?"__styleSet"+Math.floor(Math.random()*1e8):Symbol("styleSet"),jA=typeof globalThis<"u"?globalThis:typeof window<"u"?window:{};class xa{constructor(e,i){this.rules=[];let{finish:n}=i||{};function r(o){return/^@/.test(o)?[o]:o.split(/,\s*/)}function s(o,l,c,u){let d=[],p=/^@(\w+)\b/.exec(o[0]),g=p&&p[1]=="keyframes";if(p&&l==null)return c.push(o[0]+";");for(let O in l){let _=l[O];if(/&/.test(O))s(O.split(/,\s*/).map(b=>o.map(x=>b.replace(/&/,x))).reduce((b,x)=>b.concat(x)),_,c);else if(_&&typeof _=="object"){if(!p)throw new RangeError("The value of a property ("+O+") should be a primitive value.");s(r(O),_,d,g)}else _!=null&&d.push(O.replace(/_.*/,"").replace(/[A-Z]/g,b=>"-"+b.toLowerCase())+": "+_+";")}(d.length||g)&&c.push((n&&!p&&!u?o.map(n):o).join(", ")+" {"+d.join(" ")+"}")}for(let o in e)s(r(o),e[o],this.rules)}getRules(){return this.rules.join(` -`)}static newName(){let e=jA[NA]||1;return jA[NA]=e+1,nb+e.toString(36)}static mount(e,i,n){let r=e[rb],s=n&&n.nonce;r?s&&r.setNonce(s):r=new gq(e,s),r.mount(Array.isArray(i)?i:[i],e)}}let IA=new Map;class gq{constructor(e,i){let n=e.ownerDocument||e,r=n.defaultView;if(!e.head&&e.adoptedStyleSheets&&r.CSSStyleSheet){let s=IA.get(n);if(s)return e[rb]=s;this.sheet=new r.CSSStyleSheet,IA.set(n,this)}else this.styleTag=n.createElement("style"),i&&this.styleTag.setAttribute("nonce",i);this.modules=[],e[rb]=this}mount(e,i){let n=this.sheet,r=0,s=0;for(let o=0;o-1&&(this.modules.splice(c,1),s--,c=-1),c==-1){if(this.modules.splice(s++,0,l),n)for(let u=0;u",191:"?",192:"~",219:"{",220:"|",221:"}",222:'"'},Oq=typeof navigator<"u"&&/Mac/.test(navigator.platform),vq=typeof navigator<"u"&&/MSIE \d|Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(navigator.userAgent);for(var Hi=0;Hi<10;Hi++)wa[48+Hi]=wa[96+Hi]=String(Hi);for(var Hi=1;Hi<=24;Hi++)wa[Hi+111]="F"+Hi;for(var Hi=65;Hi<=90;Hi++)wa[Hi]=String.fromCharCode(Hi+32),Rf[Hi]=String.fromCharCode(Hi);for(var b_ in wa)Rf.hasOwnProperty(b_)||(Rf[b_]=wa[b_]);function _q(t){var e=Oq&&t.metaKey&&t.shiftKey&&!t.ctrlKey&&!t.altKey||vq&&t.shiftKey&&t.key&&t.key.length==1||t.key=="Unidentified",i=!e&&t.key||(t.shiftKey?Rf:wa)[t.keyCode]||t.key||"Unidentified";return i=="Esc"&&(i="Escape"),i=="Del"&&(i="Delete"),i=="Left"&&(i="ArrowLeft"),i=="Up"&&(i="ArrowUp"),i=="Right"&&(i="ArrowRight"),i=="Down"&&(i="ArrowDown"),i}function vt(){var t=arguments[0];typeof t=="string"&&(t=document.createElement(t));var e=1,i=arguments[1];if(i&&typeof i=="object"&&i.nodeType==null&&!Array.isArray(i)){for(var n in i)if(Object.prototype.hasOwnProperty.call(i,n)){var r=i[n];typeof r=="string"?t.setAttribute(n,r):r!=null&&(t[n]=r)}e++}for(;e2);var xe={mac:XA||/Mac/.test(mn.platform),windows:/Win/.test(mn.platform),linux:/Linux|X11/.test(mn.platform),ie:fO,ie_version:ED?sb.documentMode||6:ab?+ab[1]:ob?+ob[1]:0,gecko:VA,gecko_version:VA?+(/Firefox\/(\d+)/.exec(mn.userAgent)||[0,0])[1]:0,chrome:!!S_,chrome_version:S_?+S_[1]:0,ios:XA,android:/Android\b/.test(mn.userAgent),webkit_version:yq?+(/\bAppleWebKit\/(\d+)/.exec(mn.userAgent)||[0,0])[1]:0,safari:lb,safari_version:lb?+(/\bVersion\/(\d+(\.\d+)?)/.exec(mn.userAgent)||[0,0])[1]:0,tabSize:sb.documentElement.style.tabSize!=null?"tab-size":"-moz-tab-size"};function Qx(t,e){for(let i in t)i=="class"&&e.class?e.class+=" "+t.class:i=="style"&&e.style?e.style+=";"+t.style:e[i]=t[i];return e}const bg=Object.create(null);function Lx(t,e,i){if(t==e)return!0;t||(t=bg),e||(e=bg);let n=Object.keys(t),r=Object.keys(e);if(n.length-0!=r.length-0)return!1;for(let s of n)if(s!=i&&(r.indexOf(s)==-1||t[s]!==e[s]))return!1;return!0}function bq(t,e){for(let i=t.attributes.length-1;i>=0;i--){let n=t.attributes[i].name;e[n]==null&&t.removeAttribute(n)}for(let i in e){let n=e[i];i=="style"?t.style.cssText=n:t.getAttribute(i)!=n&&t.setAttribute(i,n)}}function ZA(t,e,i){let n=!1;if(e)for(let r in e)i&&r in i||(n=!0,r=="style"?t.style.cssText="":t.removeAttribute(r));if(i)for(let r in i)e&&e[r]==i[r]||(n=!0,r=="style"?t.style.cssText=i[r]:t.setAttribute(r,i[r]));return n}function Sq(t){let e=Object.create(null);for(let i=0;i0?3e8:-4e8:i>0?1e8:-1e8,new kl(e,i,i,n,e.widget||null,!1)}static replace(e){let i=!!e.block,n,r;if(e.isBlockGap)n=-5e8,r=4e8;else{let{start:s,end:o}=MD(e,i);n=(s?i?-3e8:-1:5e8)-1,r=(o?i?2e8:1:-6e8)+1}return new kl(e,n,r,i,e.widget||null,!0)}static line(e){return new ud(e)}static set(e,i=!1){return Ge.of(e,i)}hasHeight(){return this.widget?this.widget.estimatedHeight>-1:!1}}Pe.none=Ge.empty;class hd extends Pe{constructor(e){let{start:i,end:n}=MD(e);super(i?-1:5e8,n?1:-6e8,null,e),this.tagName=e.tagName||"span",this.attrs=e.class&&e.attributes?Qx(e.attributes,{class:e.class}):e.class?{class:e.class}:e.attributes||bg}eq(e){return this==e||e instanceof hd&&this.tagName==e.tagName&&Lx(this.attrs,e.attrs)}range(e,i=e){if(e>=i)throw new RangeError("Mark decorations may not be empty");return super.range(e,i)}}hd.prototype.point=!1;class ud extends Pe{constructor(e){super(-2e8,-2e8,null,e)}eq(e){return e instanceof ud&&this.spec.class==e.spec.class&&Lx(this.spec.attributes,e.spec.attributes)}range(e,i=e){if(i!=e)throw new RangeError("Line decoration ranges must be zero-length");return super.range(e,i)}}ud.prototype.mapMode=Fi.TrackBefore;ud.prototype.point=!0;class kl extends Pe{constructor(e,i,n,r,s,o){super(i,n,s,e),this.block=r,this.isReplace=o,this.mapMode=r?i<=0?Fi.TrackBefore:Fi.TrackAfter:Fi.TrackDel}get type(){return this.startSide!=this.endSide?Ki.WidgetRange:this.startSide<=0?Ki.WidgetBefore:Ki.WidgetAfter}get heightRelevant(){return this.block||!!this.widget&&(this.widget.estimatedHeight>=5||this.widget.lineBreaks>0)}eq(e){return e instanceof kl&&xq(this.widget,e.widget)&&this.block==e.block&&this.startSide==e.startSide&&this.endSide==e.endSide}range(e,i=e){if(this.isReplace&&(e>i||e==i&&this.startSide>0&&this.endSide<=0))throw new RangeError("Invalid range for replacement decoration");if(!this.isReplace&&i!=e)throw new RangeError("Widget decorations can only have zero-length ranges");return super.range(e,i)}}kl.prototype.point=!0;function MD(t,e=!1){let{inclusiveStart:i,inclusiveEnd:n}=t;return i==null&&(i=t.inclusive),n==null&&(n=t.inclusive),{start:i??e,end:n??e}}function xq(t,e){return t==e||!!(t&&e&&t.compare(e))}function Uc(t,e,i,n=0){let r=i.length-1;r>=0&&i[r]+n>=t?i[r]=Math.max(i[r],e):i.push(t,e)}class Qf extends Sa{constructor(e,i){super(),this.tagName=e,this.attributes=i}eq(e){return e==this||e instanceof Qf&&this.tagName==e.tagName&&Lx(this.attributes,e.attributes)}static create(e){return new Qf(e.tagName,e.attributes||bg)}static set(e,i=!1){return Ge.of(e,i)}}Qf.prototype.startSide=Qf.prototype.endSide=-1;function Lf(t){let e;return t.nodeType==11?e=t.getSelection?t:t.ownerDocument:e=t,e.getSelection()}function cb(t,e){return e?t==e||t.contains(e.nodeType!=1?e.parentNode:e):!1}function pf(t,e){if(!e.anchorNode)return!1;try{return cb(t,e.anchorNode)}catch{return!1}}function mf(t){return t.nodeType==3?Bf(t,0,t.nodeValue.length).getClientRects():t.nodeType==1?t.getClientRects():[]}function gf(t,e,i,n){return i?qA(t,e,i,n,-1)||qA(t,e,i,n,1):!1}function Ca(t){for(var e=0;;e++)if(t=t.previousSibling,!t)return e}function Sg(t){return t.nodeType==1&&/^(DIV|P|LI|UL|OL|BLOCKQUOTE|DD|DT|H\d|SECTION|PRE)$/.test(t.nodeName)}function qA(t,e,i,n,r){for(;;){if(t==i&&e==n)return!0;if(e==(r<0?0:yo(t))){if(t.nodeName=="DIV")return!1;let s=t.parentNode;if(!s||s.nodeType!=1)return!1;e=Ca(t)+(r<0?0:1),t=s}else if(t.nodeType==1){if(t=t.childNodes[e+(r<0?-1:0)],t.nodeType==1&&t.contentEditable=="false")return!1;e=r<0?yo(t):0}else return!1}}function yo(t){return t.nodeType==3?t.nodeValue.length:t.childNodes.length}function Df(t,e){let i=e?t.left:t.right;return{left:i,right:i,top:t.top,bottom:t.bottom}}function wq(t){let e=t.visualViewport;return e?{left:0,right:e.width,top:0,bottom:e.height}:{left:0,right:t.innerWidth,top:0,bottom:t.innerHeight}}function PD(t,e){let i=e.width/t.offsetWidth,n=e.height/t.offsetHeight;return(i>.995&&i<1.005||!isFinite(i)||Math.abs(e.width-t.offsetWidth)<1)&&(i=1),(n>.995&&n<1.005||!isFinite(n)||Math.abs(e.height-t.offsetHeight)<1)&&(n=1),{scaleX:i,scaleY:n}}function Cq(t,e,i,n,r,s,o,l){let c=t.ownerDocument,u=c.defaultView||window;for(let d=t,p=!1;d&&!p;)if(d.nodeType==1){let g,O=d==c.body,_=1,b=1;if(O)g=wq(u);else{if(/^(fixed|sticky)$/.test(getComputedStyle(d).position)&&(p=!0),d.scrollHeight<=d.clientHeight&&d.scrollWidth<=d.clientWidth){d=d.assignedSlot||d.parentNode;continue}let k=d.getBoundingClientRect();({scaleX:_,scaleY:b}=PD(d,k)),g={left:k.left,right:k.left+d.clientWidth*_,top:k.top,bottom:k.top+d.clientHeight*b}}let x=0,w=0;if(r=="nearest")e.top0&&e.bottom>g.bottom+w&&(w=e.bottom-g.bottom+o)):e.bottom>g.bottom&&(w=e.bottom-g.bottom+o,i<0&&e.top-w0&&e.right>g.right+x&&(x=e.right-g.right+s)):e.right>g.right&&(x=e.right-g.right+s,i<0&&e.leftg.bottom||e.leftg.right)&&(e={left:Math.max(e.left,g.left),right:Math.min(e.right,g.right),top:Math.max(e.top,g.top),bottom:Math.min(e.bottom,g.bottom)}),d=d.assignedSlot||d.parentNode}else if(d.nodeType==11)d=d.host;else break}function kq(t){let e=t.ownerDocument,i,n;for(let r=t.parentNode;r&&!(r==e.body||i&&n);)if(r.nodeType==1)!n&&r.scrollHeight>r.clientHeight&&(n=r),!i&&r.scrollWidth>r.clientWidth&&(i=r),r=r.assignedSlot||r.parentNode;else if(r.nodeType==11)r=r.host;else break;return{x:i,y:n}}class Tq{constructor(){this.anchorNode=null,this.anchorOffset=0,this.focusNode=null,this.focusOffset=0}eq(e){return this.anchorNode==e.anchorNode&&this.anchorOffset==e.anchorOffset&&this.focusNode==e.focusNode&&this.focusOffset==e.focusOffset}setRange(e){let{anchorNode:i,focusNode:n}=e;this.set(i,Math.min(e.anchorOffset,i?yo(i):0),n,Math.min(e.focusOffset,n?yo(n):0))}set(e,i,n,r){this.anchorNode=e,this.anchorOffset=i,this.focusNode=n,this.focusOffset=r}}let al=null;xe.safari&&xe.safari_version>=26&&(al=!1);function RD(t){if(t.setActive)return t.setActive();if(al)return t.focus(al);let e=[];for(let i=t;i&&(e.push(i,i.scrollTop,i.scrollLeft),i!=i.ownerDocument);i=i.parentNode);if(t.focus(al==null?{get preventScroll(){return al={preventScroll:!0},!0}}:void 0),!al){al=!1;for(let i=0;iMath.max(1,t.scrollHeight-t.clientHeight-4)}function LD(t,e){for(let i=t,n=e;;){if(i.nodeType==3&&n>0)return{node:i,offset:n};if(i.nodeType==1&&n>0){if(i.contentEditable=="false")return null;i=i.childNodes[n-1],n=yo(i)}else if(i.parentNode&&!Sg(i))n=Ca(i),i=i.parentNode;else return null}}function DD(t,e){for(let i=t,n=e;;){if(i.nodeType==3&&n=i){if(l.level==n)return o;(s<0||(r!=0?r<0?l.fromi:e[s].level>l.level))&&(s=o)}}if(s<0)throw new RangeError("Index out of range");return s}}function zD(t,e){if(t.length!=e.length)return!1;for(let i=0;i=0;b-=3)if(rs[b+1]==-O){let x=rs[b+2],w=x&2?r:x&4?x&1?s:r:0;w&&(bt[p]=bt[rs[b]]=w),l=b;break}}else{if(rs.length==189)break;rs[l++]=p,rs[l++]=g,rs[l++]=c}else if((_=bt[p])==2||_==1){let b=_==r;c=b?0:1;for(let x=l-3;x>=0;x-=3){let w=rs[x+2];if(w&2)break;if(b)rs[x+2]|=2;else{if(w&4)break;rs[x+2]|=4}}}}}function Dq(t,e,i,n){for(let r=0,s=n;r<=i.length;r++){let o=r?i[r-1].to:t,l=rc;)_==x&&(_=i[--b].from,x=b?i[b-1].to:t),bt[--_]=O;c=d}else s=u,c++}}}function ub(t,e,i,n,r,s,o){let l=n%2?2:1;if(n%2==r%2)for(let c=e,u=0;cc&&o.push(new _s(c,b.from,O));let x=b.direction==Tl!=!(O%2);fb(t,x?n+1:n,r,b.inner,b.from,b.to,o),c=b.to}_=b.to}else{if(_==i||(d?bt[_]!=l:bt[_]==l))break;_++}g?ub(t,c,_,n+1,r,g,o):c<_&&o.push(new _s(c,_,O)),c=_}else for(let c=i,u=s.length;c>e;){let d=!0,p=!1;if(!u||c>s[u-1].to){let b=bt[c-1];b!=l&&(d=!1,p=b==16)}let g=!d&&l==1?[]:null,O=d?n:n+1,_=c;e:for(;;)if(u&&_==s[u-1].to){if(p)break e;let b=s[--u];if(!d)for(let x=b.from,w=u;;){if(x==e)break e;if(w&&s[w-1].to==x)x=s[--w].from;else{if(bt[x-1]==l)break e;break}}if(g)g.push(b);else{b.tobt.length;)bt[bt.length]=256;let n=[],r=e==Tl?0:1;return fb(t,r,r,i,0,t.length,n),n}function ND(t){return[new _s(0,t,0)]}let jD="";function $q(t,e,i,n,r){var s;let o=n.head-t.from,l=_s.find(e,o,(s=n.bidiLevel)!==null&&s!==void 0?s:-1,n.assoc),c=e[l],u=c.side(r,i);if(o==u){let g=l+=r?1:-1;if(g<0||g>=e.length)return null;c=e[l=g],o=c.side(!r,i),u=c.side(r,i)}let d=Di(t.text,o,c.forward(r,i));(dc.to)&&(d=u),jD=t.text.slice(Math.min(o,d),Math.max(o,d));let p=l==(r?e.length-1:0)?null:e[l+(r?1:-1)];return p&&d==u&&p.level+(r?0:1)t.some(e=>e)}),YD=Se.define({combine:t=>t.some(e=>e)}),HD=Se.define();class Hc{constructor(e,i="nearest",n="nearest",r=5,s=5,o=!1){this.range=e,this.y=i,this.x=n,this.yMargin=r,this.xMargin=s,this.isSnapshot=o}map(e){return e.empty?this:new Hc(this.range.map(e),this.y,this.x,this.yMargin,this.xMargin,this.isSnapshot)}clip(e){return this.range.to<=e.doc.length?this:new Hc(se.cursor(e.doc.length),this.y,this.x,this.yMargin,this.xMargin,this.isSnapshot)}}const Jp=ze.define({map:(t,e)=>t.map(e)}),FD=ze.define();function $n(t,e,i){let n=t.facet(ZD);n.length?n[0](e):window.onerror&&window.onerror(String(e),i,void 0,void 0,e)||(i?console.error(i+":",e):console.error(e))}const uo=Se.define({combine:t=>t.length?t[0]:!0});let Nq=0;const Nc=Se.define({combine(t){return t.filter((e,i)=>{for(let n=0;n{let c=[];return o&&c.push(dO.of(u=>{let d=u.plugin(l);return d?o(d):Pe.none})),s&&c.push(s(l)),c})}static fromClass(e,i){return Jt.define((n,r)=>new e(n,r),i)}}class x_{constructor(e){this.spec=e,this.mustUpdate=null,this.value=null}get plugin(){return this.spec&&this.spec.plugin}update(e){if(this.value){if(this.mustUpdate){let i=this.mustUpdate;if(this.mustUpdate=null,this.value.update)try{this.value.update(i)}catch(n){if($n(i.state,n,"CodeMirror plugin crashed"),this.value.destroy)try{this.value.destroy()}catch{}this.deactivate()}}}else if(this.spec)try{this.value=this.spec.plugin.create(e,this.spec.arg)}catch(i){$n(e.state,i,"CodeMirror plugin crashed"),this.deactivate()}return this}destroy(e){var i;if(!((i=this.value)===null||i===void 0)&&i.destroy)try{this.value.destroy()}catch(n){$n(e.state,n,"CodeMirror plugin crashed")}}deactivate(){this.spec=this.value=null}}const GD=Se.define(),zx=Se.define(),dO=Se.define(),KD=Se.define(),Nx=Se.define(),fd=Se.define(),JD=Se.define();function UA(t,e){let i=t.state.facet(JD);if(!i.length)return i;let n=i.map(s=>s instanceof Function?s(t):s),r=[];return Ge.spans(n,e.from,e.to,{point(){},span(s,o,l,c){let u=s-e.from,d=o-e.from,p=r;for(let g=l.length-1;g>=0;g--,c--){let O=l[g].spec.bidiIsolate,_;if(O==null&&(O=zq(e.text,u,d)),c>0&&p.length&&(_=p[p.length-1]).to==u&&_.direction==O)_.to=d,p=_.inner;else{let b={from:u,to:d,direction:O,inner:[]};p.push(b),p=b.inner}}}}),r}const eB=Se.define();function jx(t){let e=0,i=0,n=0,r=0;for(let s of t.state.facet(eB)){let o=s(t);o&&(o.left!=null&&(e=Math.max(e,o.left)),o.right!=null&&(i=Math.max(i,o.right)),o.top!=null&&(n=Math.max(n,o.top)),o.bottom!=null&&(r=Math.max(r,o.bottom)))}return{left:e,right:i,top:n,bottom:r}}const Fu=Se.define();class kr{constructor(e,i,n,r){this.fromA=e,this.toA=i,this.fromB=n,this.toB=r}join(e){return new kr(Math.min(this.fromA,e.fromA),Math.max(this.toA,e.toA),Math.min(this.fromB,e.fromB),Math.max(this.toB,e.toB))}addToSet(e){let i=e.length,n=this;for(;i>0;i--){let r=e[i-1];if(!(r.fromA>n.toA)){if(r.toAr.push(new kr(s,o,l,c))),this.changedRanges=r}static create(e,i,n){return new xg(e,i,n)}get viewportChanged(){return(this.flags&4)>0}get viewportMoved(){return(this.flags&8)>0}get heightChanged(){return(this.flags&2)>0}get geometryChanged(){return this.docChanged||(this.flags&18)>0}get focusChanged(){return(this.flags&1)>0}get docChanged(){return!this.changes.empty}get selectionSet(){return this.transactions.some(e=>e.selection)}get empty(){return this.flags==0&&this.transactions.length==0}}const jq=[];class ui{constructor(e,i,n=0){this.dom=e,this.length=i,this.flags=n,this.parent=null,e.cmTile=this}get breakAfter(){return this.flags&1}get children(){return jq}isWidget(){return!1}get isHidden(){return!1}isComposite(){return!1}isLine(){return!1}isText(){return!1}isBlock(){return!1}get domAttrs(){return null}sync(e){if(this.flags|=2,this.flags&4){this.flags&=-5;let i=this.domAttrs;i&&bq(this.dom,i)}}toString(){return this.constructor.name+(this.children.length?`(${this.children})`:"")+(this.breakAfter?"#":"")}destroy(){this.parent=null}setDOM(e){this.dom=e,e.cmTile=this}get posAtStart(){return this.parent?this.parent.posBefore(this):0}get posAtEnd(){return this.posAtStart+this.length}posBefore(e,i=this.posAtStart){let n=i;for(let r of this.children){if(r==e)return n;n+=r.length+r.breakAfter}throw new RangeError("Invalid child in posBefore")}posAfter(e){return this.posBefore(e)+e.length}covers(e){return!0}coordsIn(e,i){return null}domPosFor(e,i){let n=Ca(this.dom),r=this.length?e>0:i>0;return new qr(this.parent.dom,n+(r?1:0),e==0||e==this.length)}markDirty(e){this.flags&=-3,e&&(this.flags|=4),this.parent&&this.parent.flags&2&&this.parent.markDirty(!1)}get overrideDOMText(){return null}get root(){for(let e=this;e;e=e.parent)if(e instanceof mO)return e;return null}static get(e){return e.cmTile}}class pO extends ui{constructor(e){super(e,0),this._children=[]}isComposite(){return!0}get children(){return this._children}get lastChild(){return this.children.length?this.children[this.children.length-1]:null}append(e){this.children.push(e),e.parent=this}sync(e){if(this.flags&2)return;super.sync(e);let i=this.dom,n=null,r,s=(e==null?void 0:e.node)==i?e:null,o=0;for(let l of this.children){if(l.sync(e),o+=l.length+l.breakAfter,r=n?n.nextSibling:i.firstChild,s&&r!=l.dom&&(s.written=!0),l.dom.parentNode==i)for(;r&&r!=l.dom;)r=YA(r);else i.insertBefore(l.dom,r);n=l.dom}for(r=n?n.nextSibling:i.firstChild,s&&r&&(s.written=!0);r;)r=YA(r);this.length=o}}function YA(t){let e=t.nextSibling;return t.parentNode.removeChild(t),e}class mO extends pO{constructor(e,i){super(i),this.view=e}owns(e){for(;e;e=e.parent)if(e==this)return!0;return!1}isBlock(){return!0}nearest(e){for(;;){if(!e)return null;let i=ui.get(e);if(i&&this.owns(i))return i;e=e.parentNode}}blockTiles(e){for(let i=[],n=this,r=0,s=0;;)if(r==n.children.length){if(!i.length)return;n=n.parent,n.breakAfter&&s++,r=i.pop()}else{let o=n.children[r++];if(o instanceof mo)i.push(r),n=o,r=0;else{let l=s+o.length,c=e(o,s);if(c!==void 0)return c;s=l+o.breakAfter}}}resolveBlock(e,i){let n,r=-1,s,o=-1;if(this.blockTiles((l,c)=>{let u=c+l.length;if(e>=c&&e<=u){if(l.isWidget()&&i>=-1&&i<=1){if(l.flags&32)return!0;l.flags&16&&(n=void 0)}(ce||e==c&&(i>1?l.length:l.covers(-1)))&&(!s||!l.isWidget()&&s.isWidget())&&(s=l,o=e-c)}}),!n&&!s)throw new Error("No tile at position "+e);return n&&i<0||!s?{tile:n,offset:r}:{tile:s,offset:o}}}class mo extends pO{constructor(e,i){super(e),this.wrapper=i}isBlock(){return!0}covers(e){return this.children.length?e<0?this.children[0].covers(-1):this.lastChild.covers(1):!1}get domAttrs(){return this.wrapper.attributes}static of(e,i){let n=new mo(i||document.createElement(e.tagName),e);return i||(n.flags|=4),n}}class sh extends pO{constructor(e,i){super(e),this.attrs=i}isLine(){return!0}static start(e,i,n){let r=new sh(i||document.createElement("div"),e);return(!i||!n)&&(r.flags|=4),r}get domAttrs(){return this.attrs}resolveInline(e,i,n){let r=null,s=-1,o=null,l=-1;function c(d,p){for(let g=0,O=0;g=p&&(_.isComposite()?c(_,p-O):(!o||o.isHidden&&(i>0||n&&Vq(o,_)))&&(b>p||_.flags&32)?(o=_,l=p-O):(On&&(e=n);let r=e,s=e,o=0;e==0&&i<0||e==n&&i>=0?xe.chrome||xe.gecko||(e?(r--,o=1):s=0)?0:l.length-1];return xe.safari&&!o&&c.width==0&&(c=Array.prototype.find.call(l,u=>u.width)||c),o?Df(c,o<0):c||null}static of(e,i){let n=new gl(i||document.createTextNode(e),e);return i||(n.flags|=2),n}}class Al extends ui{constructor(e,i,n,r){super(e,i,r),this.widget=n}isWidget(){return!0}get isHidden(){return this.widget.isHidden}covers(e){return this.flags&48?!1:(this.flags&(e<0?64:128))>0}coordsIn(e,i){return this.coordsInWidget(e,i,!1)}coordsInWidget(e,i,n){let r=this.widget.coordsAt(this.dom,e,i);if(r)return r;if(n)return Df(this.dom.getBoundingClientRect(),this.length?e==0:i<=0);{let s=this.dom.getClientRects(),o=null;if(!s.length)return null;let l=this.flags&16?!0:this.flags&32?!1:e>0;for(let c=l?s.length-1:0;o=s[c],!(e>0?c==0:c==s.length-1||o.top0;)if(r.isComposite())if(o){if(!e)break;n&&n.break(),e--,o=!1}else if(s==r.children.length){if(!e&&!l.length)break;n&&n.leave(r),o=!!r.breakAfter,{tile:r,index:s}=l.pop(),s++}else{let c=r.children[s],u=c.breakAfter;(i>0?c.length<=e:c.length=0;l--){let c=i.marks[l],u=r.lastChild;if(u instanceof Bn&&u.mark.eq(c.mark))u.dom!=c.dom&&u.setDOM(w_(c.dom)),r=u;else{if(this.cache.reused.get(c)){let p=ui.get(c.dom);p&&p.setDOM(w_(c.dom))}let d=Bn.of(c.mark,c.dom);r.append(d),r=d}this.cache.reused.set(c,2)}let s=ui.get(e.text);s&&this.cache.reused.set(s,2);let o=new gl(e.text,e.text.nodeValue);o.flags|=8,r.append(o)}addInlineWidget(e,i,n){let r=this.afterWidget&&e.flags&48&&(this.afterWidget.flags&48)==(e.flags&48);r||this.flushBuffer();let s=this.ensureMarks(i,n);!r&&!(e.flags&16)&&s.append(this.getBuffer(1)),s.append(e),this.pos+=e.length,this.afterWidget=e}addMark(e,i,n){this.flushBuffer(),this.ensureMarks(i,n).append(e),this.pos+=e.length,this.afterWidget=null}addBlockWidget(e){this.getBlockPos().append(e),this.pos+=e.length,this.lastBlock=e,this.endLine()}continueWidget(e){let i=this.afterWidget||this.lastBlock;i.length+=e,this.pos+=e}addLineStart(e,i){var n;e||(e=tB);let r=sh.start(e,i||((n=this.cache.find(sh))===null||n===void 0?void 0:n.dom),!!i);this.getBlockPos().append(this.lastBlock=this.curLine=r)}addLine(e){this.getBlockPos().append(e),this.pos+=e.length,this.lastBlock=e,this.endLine()}addBreak(){this.lastBlock.flags|=1,this.endLine(),this.pos++}addLineStartIfNotCovered(e){this.blockPosCovered()||this.addLineStart(e)}ensureLine(e){this.curLine||this.addLineStart(e)}ensureMarks(e,i){var n;let r=this.curLine;for(let s=e.length-1;s>=0;s--){let o=e[s],l;if(i>0&&(l=r.lastChild)&&l instanceof Bn&&l.mark.eq(o))r=l,i--;else{let c=Bn.of(o,(n=this.cache.find(Bn,u=>u.mark.eq(o)))===null||n===void 0?void 0:n.dom);r.append(c),r=c,i=0}}return r}endLine(){if(this.curLine){this.flushBuffer();let e=this.curLine.lastChild;(!e||!HA(this.curLine,!1)||e.dom.nodeName!="BR"&&e.isWidget()&&!(xe.ios&&HA(this.curLine,!0)))&&this.curLine.append(this.cache.findWidget(C_,0,32)||new Al(C_.toDOM(),0,C_,32)),this.curLine=this.afterWidget=null}}updateBlockWrappers(){this.wrapperPos>this.pos+1e4&&(this.blockWrappers.goto(this.pos),this.wrappers.length=0);for(let e=this.wrappers.length-1;e>=0;e--)this.wrappers[e].to=this.pos){let i=new Zq(e.from,e.to,e.value,e.rank),n=this.wrappers.length;for(;n>0&&(this.wrappers[n-1].rank-i.rank||this.wrappers[n-1].to-i.to)<0;)n--;this.wrappers.splice(n,0,i)}this.wrapperPos=this.pos}getBlockPos(){var e;this.updateBlockWrappers();let i=this.root;for(let n of this.wrappers){let r=i.lastChild;if(n.fromo.wrapper.eq(n.wrapper)))===null||e===void 0?void 0:e.dom);i.append(s),i=s}}return i}blockPosCovered(){let e=this.lastBlock;return e!=null&&!e.breakAfter&&(!e.isWidget()||(e.flags&160)>0)}getBuffer(e){let i=2|(e<0?16:32),n=this.cache.find(wg,void 0,1);return n&&(n.flags=i),n||new wg(i)}flushBuffer(){this.afterWidget&&!(this.afterWidget.flags&32)&&(this.afterWidget.parent.append(this.getBuffer(-1)),this.afterWidget=null)}}class Wq{constructor(e){this.skipCount=0,this.text="",this.textOff=0,this.cursor=e.iter()}skip(e){this.textOff+e<=this.text.length?this.textOff+=e:(this.skipCount+=e-(this.text.length-this.textOff),this.text="",this.textOff=0)}next(e){if(this.textOff==this.text.length){let{value:r,lineBreak:s,done:o}=this.cursor.next(this.skipCount);if(this.skipCount=0,o)throw new Error("Ran out of text content when drawing inline views");this.text=r;let l=this.textOff=Math.min(e,r.length);return s?null:r.slice(0,l)}let i=Math.min(this.text.length,this.textOff+e),n=this.text.slice(this.textOff,i);return this.textOff=i,n}}const Cg=[Al,sh,gl,Bn,wg,mo,mO];for(let t=0;t[]),this.index=Cg.map(()=>0),this.reused=new Map}add(e){let i=e.constructor.bucket,n=this.buckets[i];n.length<6?n.push(e):n[this.index[i]=(this.index[i]+1)%6]=e}find(e,i,n=2){let r=e.bucket,s=this.buckets[r],o=this.index[r];for(let l=s.length-1;l>=0;l--){let c=(l+o)%s.length,u=s[c];if((!i||i(u))&&!this.reused.has(u))return s.splice(c,1),c{if(this.cache.add(o),o.isComposite())return!1},enter:o=>this.cache.add(o),leave:()=>{},break:()=>{}}}run(e,i){let n=i&&this.getCompositionContext(i.text);for(let r=0,s=0,o=0;;){let l=or){let u=c-r;this.preserve(u,!o,!l),r=c,s+=u}if(!l)break;i&&l.fromA<=i.range.fromA&&l.toA>=i.range.toA?(this.forward(l.fromA,i.range.fromA,i.range.fromA{if(o.isWidget())if(this.openWidget)this.builder.continueWidget(c-l);else{let u=c>0||l{o.isLine()?this.builder.addLineStart(o.attrs,this.cache.maybeReuse(o)):(this.cache.add(o),o instanceof Bn&&r.unshift(o.mark)),this.openWidget=!1},leave:o=>{o.isLine()?r.length&&(r.length=s=0):o instanceof Bn&&(r.shift(),s=Math.min(s,r.length))},break:()=>{this.builder.addBreak(),this.openWidget=!1}}),this.text.skip(e)}emit(e,i){let n=null,r=this.builder,s=0,o=Ge.spans(this.decorations,e,i,{point:(l,c,u,d,p,g)=>{if(u instanceof kl){if(this.disallowBlockEffectsFor[g]){if(u.block)throw new RangeError("Block decorations may not be specified via plugins");if(c>this.view.state.doc.lineAt(l).to)throw new RangeError("Decorations that replace line breaks may not be specified via plugins")}if(s=d.length,p>d.length)r.continueWidget(c-l);else{let O=u.widget||(u.block?oh.block:oh.inline),_=Hq(u),b=this.cache.findWidget(O,c-l,_)||Al.of(O,this.view,c-l,_);u.block?(u.startSide>0&&r.addLineStartIfNotCovered(n),r.addBlockWidget(b)):(r.ensureLine(n),r.addInlineWidget(b,d,p))}n=null}else n=Fq(n,u);c>l&&this.text.skip(c-l)},span:(l,c,u,d)=>{for(let p=l;ps,this.openMarks=o}forward(e,i,n=1){i-e<=10?this.old.advance(i-e,n,this.reuseWalker):(this.old.advance(5,-1,this.reuseWalker),this.old.advance(i-e-10,-1),this.old.advance(5,n,this.reuseWalker))}getCompositionContext(e){let i=[],n=null;for(let r=e.parentNode;;r=r.parentNode){let s=ui.get(r);if(r==this.view.contentDOM)break;s instanceof Bn?i.push(s):s!=null&&s.isLine()?n=s:s instanceof mo||(r.nodeName=="DIV"&&!n&&r!=this.view.contentDOM?n=new sh(r,tB):n||i.push(Bn.of(new hd({tagName:r.nodeName.toLowerCase(),attributes:Sq(r)}),r)))}return{line:n,marks:i}}}function HA(t,e){let i=n=>{for(let r of n.children)if((e?r.isText():r.length)||i(r))return!0;return!1};return i(t)}function Hq(t){let e=t.isReplace?(t.startSide<0?64:0)|(t.endSide>0?128:0):t.startSide>0?32:16;return t.block&&(e|=256),e}const tB={class:"cm-line"};function Fq(t,e){let i=e.spec.attributes,n=e.spec.class;return!i&&!n||(t||(t={class:"cm-line"}),i&&Qx(i,t),n&&(t.class+=" "+n)),t}function Gq(t){let e=[];for(let i=t.parents.length;i>1;i--){let n=i==t.parents.length?t.tile:t.parents[i].tile;n instanceof Bn&&e.push(n.mark)}return e}function w_(t){let e=ui.get(t);return e&&e.setDOM(t.cloneNode()),t}class oh extends Gr{constructor(e){super(),this.tag=e}eq(e){return e.tag==this.tag}toDOM(){return document.createElement(this.tag)}updateDOM(e){return e.nodeName.toLowerCase()==this.tag}get isHidden(){return!0}}oh.inline=new oh("span");oh.block=new oh("div");const C_=new class extends Gr{toDOM(){return document.createElement("br")}get isHidden(){return!0}get editable(){return!0}};class FA{constructor(e){this.view=e,this.decorations=[],this.blockWrappers=[],this.dynamicDecorationMap=[!1],this.domChanged=null,this.hasComposition=null,this.editContextFormatting=Pe.none,this.lastCompositionAfterCursor=!1,this.minWidth=0,this.minWidthFrom=0,this.minWidthTo=0,this.impreciseAnchor=null,this.impreciseHead=null,this.forceSelection=!1,this.lastUpdate=Date.now(),this.updateDeco(),this.tile=new mO(e,e.contentDOM),this.updateInner([new kr(0,0,0,e.state.doc.length)],null)}update(e){var i;let n=e.changedRanges;this.minWidth>0&&n.length&&(n.every(({fromA:d,toA:p})=>pthis.minWidthTo)?(this.minWidthFrom=e.changes.mapPos(this.minWidthFrom,1),this.minWidthTo=e.changes.mapPos(this.minWidthTo,1)):this.minWidth=this.minWidthFrom=this.minWidthTo=0),this.updateEditContextFormatting(e);let r=-1;this.view.inputState.composing>=0&&!this.view.observer.editContext&&(!((i=this.domChanged)===null||i===void 0)&&i.newSel?r=this.domChanged.newSel.head:!oW(e.changes,this.hasComposition)&&!e.selectionSet&&(r=e.state.selection.main.head));let s=r>-1?Jq(this.view,e.changes,r):null;if(this.domChanged=null,this.hasComposition){let{from:d,to:p}=this.hasComposition;n=new kr(d,p,e.changes.mapPos(d,-1),e.changes.mapPos(p,1)).addToSet(n.slice())}this.hasComposition=s?{from:s.range.fromB,to:s.range.toB}:null,(xe.ie||xe.chrome)&&!s&&e&&e.state.doc.lines!=e.startState.doc.lines&&(this.forceSelection=!0);let o=this.decorations,l=this.blockWrappers;this.updateDeco();let c=iW(o,this.decorations,e.changes);c.length&&(n=kr.extendWithRanges(n,c));let u=rW(l,this.blockWrappers,e.changes);return u.length&&(n=kr.extendWithRanges(n,u)),s&&!n.some(d=>d.fromA<=s.range.fromA&&d.toA>=s.range.toA)&&(n=s.range.addToSet(n.slice())),this.tile.flags&2&&n.length==0?!1:(this.updateInner(n,s),e.transactions.length&&(this.lastUpdate=Date.now()),!0)}updateInner(e,i){this.view.viewState.mustMeasureContent=!0;let{observer:n}=this.view;n.ignore(()=>{if(i||e.length){let o=this.tile,l=new Yq(this.view,o,this.blockWrappers,this.decorations,this.dynamicDecorationMap);this.tile=l.run(e,i),pb(o,l.cache.reused)}this.tile.dom.style.height=this.view.viewState.contentHeight/this.view.scaleY+"px",this.tile.dom.style.flexBasis=this.minWidth?this.minWidth+"px":"";let s=xe.chrome||xe.ios?{node:n.selectionRange.focusNode,written:!1}:void 0;this.tile.sync(s),s&&(s.written||n.selectionRange.focusNode!=s.node||!this.tile.dom.contains(s.node))&&(this.forceSelection=!0),this.tile.dom.style.height=""});let r=[];if(this.view.viewport.from||this.view.viewport.to-1)&&pf(n,this.view.observer.selectionRange)&&!(r&&n.contains(r));if(!(s||i||o))return;let l=this.forceSelection;this.forceSelection=!1;let c=this.view.state.selection.main,u,d;if(c.empty?d=u=this.inlineDOMNearPos(c.anchor,c.assoc||1):(d=this.inlineDOMNearPos(c.head,c.head==c.from?1:-1),u=this.inlineDOMNearPos(c.anchor,c.anchor==c.from?1:-1)),xe.gecko&&c.empty&&!this.hasComposition&&Kq(u)){let g=document.createTextNode("");this.view.observer.ignore(()=>u.node.insertBefore(g,u.node.childNodes[u.offset]||null)),u=d=new qr(g,0),l=!0}let p=this.view.observer.selectionRange;(l||!p.focusNode||(!gf(u.node,u.offset,p.anchorNode,p.anchorOffset)||!gf(d.node,d.offset,p.focusNode,p.focusOffset))&&!this.suppressWidgetCursorChange(p,c))&&(this.view.observer.ignore(()=>{xe.android&&xe.chrome&&n.contains(p.focusNode)&&sW(p.focusNode,n)&&(n.blur(),n.focus({preventScroll:!0}));let g=Lf(this.view.root);if(g)if(c.empty){if(xe.gecko){let O=eW(u.node,u.offset);if(O&&O!=3){let _=(O==1?LD:DD)(u.node,u.offset);_&&(u=new qr(_.node,_.offset))}}g.collapse(u.node,u.offset),c.bidiLevel!=null&&g.caretBidiLevel!==void 0&&(g.caretBidiLevel=c.bidiLevel)}else if(g.extend){g.collapse(u.node,u.offset);try{g.extend(d.node,d.offset)}catch{}}else{let O=document.createRange();c.anchor>c.head&&([u,d]=[d,u]),O.setEnd(d.node,d.offset),O.setStart(u.node,u.offset),g.removeAllRanges(),g.addRange(O)}o&&this.view.root.activeElement==n&&(n.blur(),r&&r.focus())}),this.view.observer.setSelectionRange(u,d)),this.impreciseAnchor=u.precise?null:new qr(p.anchorNode,p.anchorOffset),this.impreciseHead=d.precise?null:new qr(p.focusNode,p.focusOffset)}suppressWidgetCursorChange(e,i){return this.hasComposition&&i.empty&&gf(e.focusNode,e.focusOffset,e.anchorNode,e.anchorOffset)&&this.posFromDOM(e.focusNode,e.focusOffset)==i.head}enforceCursorAssoc(){if(this.hasComposition)return;let{view:e}=this,i=e.state.selection.main,n=Lf(e.root),{anchorNode:r,anchorOffset:s}=e.observer.selectionRange;if(!n||!i.empty||!i.assoc||!n.modify)return;let o=this.lineAt(i.head,i.assoc);if(!o)return;let l=o.posAtStart;if(i.head==l||i.head==l+o.length)return;let c=this.coordsAt(i.head,-1),u=this.coordsAt(i.head,1);if(!c||!u||c.bottom>u.top)return;let d=this.domAtPos(i.head+i.assoc,i.assoc);n.collapse(d.node,d.offset),n.modify("move",i.assoc<0?"forward":"backward","lineboundary"),e.observer.readSelectionRange();let p=e.observer.selectionRange;e.docView.posFromDOM(p.anchorNode,p.anchorOffset)!=i.from&&n.collapse(r,s)}posFromDOM(e,i){let n=this.tile.nearest(e);if(!n)return this.tile.dom.compareDocumentPosition(e)&2?0:this.view.state.doc.length;let r=n.posAtStart;if(n.isComposite()){let s;if(e==n.dom)s=n.dom.childNodes[i];else{let o=yo(e)==0?0:i==0?-1:1;for(;;){let l=e.parentNode;if(l==n.dom)break;o==0&&l.firstChild!=l.lastChild&&(e==l.firstChild?o=-1:o=1),e=l}o<0?s=e:s=e.nextSibling}if(s==n.dom.firstChild)return r;for(;s&&!ui.get(s);)s=s.nextSibling;if(!s)return r+n.length;for(let o=0,l=r;;o++){let c=n.children[o];if(c.dom==s)return l;l+=c.length+c.breakAfter}}else return n.isText()?e==n.dom?r+i:r+(i?n.length:0):r}domAtPos(e,i){let{tile:n,offset:r}=this.tile.resolveBlock(e,i);return n.isWidget()?n.domPosFor(e,i):n.domIn(r,i)}inlineDOMNearPos(e,i){let n,r=-1,s=!1,o,l=-1,c=!1;return this.tile.blockTiles((u,d)=>{if(u.isWidget()){if(u.flags&32&&d>=e)return!0;u.flags&16&&(s=!0)}else{let p=d+u.length;if(d<=e&&(n=u,r=e-d,s=p=e&&!o&&(o=u,l=e-d,c=d>e),d>e&&o)return!0}}),!n&&!o?this.domAtPos(e,i):(s&&o?n=null:c&&n&&(o=null),n&&i<0||!o?n.domIn(r,i):o.domIn(l,i))}coordsAt(e,i){let{tile:n,offset:r}=this.tile.resolveBlock(e,i);return n.isWidget()?n.widget instanceof k_?null:n.coordsInWidget(r,i,!0):n.coordsIn(r,i)}lineAt(e,i){let{tile:n}=this.tile.resolveBlock(e,i);return n.isLine()?n:null}coordsForChar(e){let{tile:i,offset:n}=this.tile.resolveBlock(e,1);if(!i.isLine())return null;function r(s,o){if(s.isComposite())for(let l of s.children){if(l.length>=o){let c=r(l,o);if(c)return c}if(o-=l.length,o<0)break}else if(s.isText()&&oMath.max(this.view.scrollDOM.clientWidth,this.minWidth)+1,l=-1,c=this.view.textDirection==St.LTR,u=0,d=(p,g,O)=>{for(let _=0;_r);_++){let b=p.children[_],x=g+b.length,w=b.dom.getBoundingClientRect(),{height:k}=w;if(O&&!_&&(u+=w.top-O.top),b instanceof mo)x>n&&d(b,g,w);else if(g>=n&&(u>0&&i.push(-u),i.push(k+u),u=0,o)){let T=b.dom.lastChild,A=T?mf(T):[];if(A.length){let Q=A[A.length-1],E=c?Q.right-w.left:w.right-Q.left;E>l&&(l=E,this.minWidth=s,this.minWidthFrom=g,this.minWidthTo=x)}}O&&_==p.children.length-1&&(u+=O.bottom-w.bottom),g=x+b.breakAfter}};return d(this.tile,0,null),i}textDirectionAt(e){let{tile:i}=this.tile.resolveBlock(e,1);return getComputedStyle(i.dom).direction=="rtl"?St.RTL:St.LTR}measureTextSize(){let e=this.tile.blockTiles(o=>{if(o.isLine()&&o.children.length&&o.length<=20){let l=0,c;for(let u of o.children){if(!u.isText()||/[^ -~]/.test(u.text))return;let d=mf(u.dom);if(d.length!=1)return;l+=d[0].width,c=d[0].height}if(l)return{lineHeight:o.dom.getBoundingClientRect().height,charWidth:l/o.length,textHeight:c}}});if(e)return e;let i=document.createElement("div"),n,r,s;return i.className="cm-line",i.style.width="99999px",i.style.position="absolute",i.textContent="abc def ghi jkl mno pqr stu",this.view.observer.ignore(()=>{this.tile.dom.appendChild(i);let o=mf(i.firstChild)[0];n=i.getBoundingClientRect().height,r=o&&o.width?o.width/27:7,s=o&&o.height?o.height:n,i.remove()}),{lineHeight:n,charWidth:r,textHeight:s}}computeBlockGapDeco(){let e=[],i=this.view.viewState;for(let n=0,r=0;;r++){let s=r==i.viewports.length?null:i.viewports[r],o=s?s.from-1:this.view.state.doc.length;if(o>n){let l=(i.lineBlockAt(o).bottom-i.lineBlockAt(n).top)/this.view.scaleY;e.push(Pe.replace({widget:new k_(l),block:!0,inclusive:!0,isBlockGap:!0}).range(n,o))}if(!s)break;n=s.to+1}return Pe.set(e)}updateDeco(){let e=1,i=this.view.state.facet(dO).map(s=>(this.dynamicDecorationMap[e++]=typeof s=="function")?s(this.view):s),n=!1,r=this.view.state.facet(Nx).map((s,o)=>{let l=typeof s=="function";return l&&(n=!0),l?s(this.view):s});for(r.length&&(this.dynamicDecorationMap[e++]=n,i.push(Ge.join(r))),this.decorations=[this.editContextFormatting,...i,this.computeBlockGapDeco(),this.view.viewState.lineGapDeco];etypeof s=="function"?s(this.view):s)}scrollIntoView(e){if(e.isSnapshot){let u=this.view.viewState.lineBlockAt(e.range.head);this.view.scrollDOM.scrollTop=u.top-e.yMargin,this.view.scrollDOM.scrollLeft=e.xMargin;return}for(let u of this.view.state.facet(HD))try{if(u(this.view,e.range,e))return!0}catch(d){$n(this.view.state,d,"scroll handler")}let{range:i}=e,n=this.coordsAt(i.head,i.empty?i.assoc:i.head>i.anchor?-1:1),r;if(!n)return;!i.empty&&(r=this.coordsAt(i.anchor,i.anchor>i.head?-1:1))&&(n={left:Math.min(n.left,r.left),top:Math.min(n.top,r.top),right:Math.max(n.right,r.right),bottom:Math.max(n.bottom,r.bottom)});let s=jx(this.view),o={left:n.left-s.left,top:n.top-s.top,right:n.right+s.right,bottom:n.bottom+s.bottom},{offsetWidth:l,offsetHeight:c}=this.view.scrollDOM;if(Cq(this.view.scrollDOM,o,i.head1&&(n.top>window.pageYOffset+window.visualViewport.offsetTop+window.visualViewport.height||n.bottomn.isWidget()||n.children.some(i);return i(this.tile.resolveBlock(e,1).tile)}destroy(){pb(this.tile)}}function pb(t,e){let i=e==null?void 0:e.get(t);if(i!=1){i==null&&t.destroy();for(let n of t.children)pb(n,e)}}function Kq(t){return t.node.nodeType==1&&t.node.firstChild&&(t.offset==0||t.node.childNodes[t.offset-1].contentEditable=="false")&&(t.offset==t.node.childNodes.length||t.node.childNodes[t.offset].contentEditable=="false")}function iB(t,e){let i=t.observer.selectionRange;if(!i.focusNode)return null;let n=LD(i.focusNode,i.focusOffset),r=DD(i.focusNode,i.focusOffset),s=n||r;if(r&&n&&r.node!=n.node){let l=ui.get(r.node);if(!l||l.isText()&&l.text!=r.node.nodeValue)s=r;else if(t.docView.lastCompositionAfterCursor){let c=ui.get(n.node);!c||c.isText()&&c.text!=n.node.nodeValue||(s=r)}}if(t.docView.lastCompositionAfterCursor=s!=n,!s)return null;let o=e-s.offset;return{from:o,to:o+s.node.nodeValue.length,node:s.node}}function Jq(t,e,i){let n=iB(t,i);if(!n)return null;let{node:r,from:s,to:o}=n,l=r.nodeValue;if(/[\n\r]/.test(l)||t.state.doc.sliceString(n.from,n.to)!=l)return null;let c=e.invertedDesc;return{range:new kr(c.mapPos(s),c.mapPos(o),s,o),text:r}}function eW(t,e){return t.nodeType!=1?0:(e&&t.childNodes[e-1].contentEditable=="false"?1:0)|(e{ne.from&&(i=!0)}),i}class k_ extends Gr{constructor(e){super(),this.height=e}toDOM(){let e=document.createElement("div");return e.className="cm-gap",this.updateDOM(e),e}eq(e){return e.height==this.height}updateDOM(e){return e.style.height=this.height+"px",!0}get editable(){return!0}get estimatedHeight(){return this.height}ignoreEvent(){return!1}}function aW(t,e,i=1){let n=t.charCategorizer(e),r=t.doc.lineAt(e),s=e-r.from;if(r.length==0)return se.cursor(e);s==0?i=1:s==r.length&&(i=-1);let o=s,l=s;i<0?o=Di(r.text,s,!1):l=Di(r.text,s);let c=n(r.text.slice(o,l));for(;o>0;){let u=Di(r.text,o,!1);if(n(r.text.slice(u,o))!=c)break;o=u}for(;lt.defaultLineHeight*1.5){let l=t.viewState.heightOracle.textHeight,c=Math.floor((r-i.top-(t.defaultLineHeight-l)*.5)/l);s+=c*t.viewState.heightOracle.lineLength}let o=t.state.sliceDoc(i.from,i.to);return i.from+ib(o,s,t.state.tabSize)}function mb(t,e,i){let n=t.lineBlockAt(e);if(Array.isArray(n.type)){let r;for(let s of n.type){if(s.from>e)break;if(!(s.toe)return s;(!r||s.type==Ki.Text&&(r.type!=s.type||(i<0?s.frome)))&&(r=s)}}return r||n}return n}function cW(t,e,i,n){let r=mb(t,e.head,e.assoc||-1),s=!n||r.type!=Ki.Text||!(t.lineWrapping||r.widgetLineBreaks)?null:t.coordsAtPos(e.assoc<0&&e.head>r.from?e.head-1:e.head);if(s){let o=t.dom.getBoundingClientRect(),l=t.textDirectionAt(r.from),c=t.posAtCoords({x:i==(l==St.LTR)?o.right-1:o.left+1,y:(s.top+s.bottom)/2});if(c!=null)return se.cursor(c,i?-1:1)}return se.cursor(i?r.to:r.from,i?-1:1)}function GA(t,e,i,n){let r=t.state.doc.lineAt(e.head),s=t.bidiSpans(r),o=t.textDirectionAt(r.from);for(let l=e,c=null;;){let u=$q(r,s,o,l,i),d=jD;if(!u){if(r.number==(i?t.state.doc.lines:1))return l;d=` -`,r=t.state.doc.line(r.number+(i?1:-1)),s=t.bidiSpans(r),u=t.visualLineSide(r,!i)}if(c){if(!c(d))return l}else{if(!n)return u;c=n(d)}l=u}}function hW(t,e,i){let n=t.state.charCategorizer(e),r=n(i);return s=>{let o=n(s);return r==Dt.Space&&(r=o),r==o}}function uW(t,e,i,n){let r=e.head,s=i?1:-1;if(r==(i?t.state.doc.length:0))return se.cursor(r,e.assoc);let o=e.goalColumn,l,c=t.contentDOM.getBoundingClientRect(),u=t.coordsAtPos(r,(e.empty?e.assoc:0)||(i?1:-1)),d=t.documentTop;if(u)o==null&&(o=u.left-c.left),l=s<0?u.top:u.bottom;else{let _=t.viewState.lineBlockAt(r);o==null&&(o=Math.min(c.right-c.left,t.defaultCharacterWidth*(r-_.from))),l=(s<0?_.top:_.bottom)+d}let p=c.left+o,g=n??t.viewState.heightOracle.textHeight>>1,O=gb(t,{x:p,y:l+g*s},!1,s);return se.cursor(O.pos,O.assoc,void 0,o)}function Of(t,e,i){for(;;){let n=0;for(let r of t)r.between(e-1,e+1,(s,o,l)=>{if(e>s&&er(t)),i.from,e.head>i.from?-1:1);return n==i.from?i:se.cursor(n,nt.viewState.docHeight)return new Os(t.state.doc.length,-1);if(u=t.elementAtHeight(c),n==null)break;if(u.type==Ki.Text){if(n<0?u.tot.viewport.to)break;let g=t.docView.coordsAt(n<0?u.from:u.to,n>0?-1:1);if(g&&(n<0?g.top<=c+s:g.bottom>=c+s))break}let p=t.viewState.heightOracle.textHeight/2;c=n>0?u.bottom+p:u.top-p}if(t.viewport.from>=u.to||t.viewport.to<=u.from){if(i)return null;if(u.type==Ki.Text){let p=lW(t,r,u,o,l);return new Os(p,p==u.from?1:-1)}}if(u.type!=Ki.Text)return c<(u.top+u.bottom)/2?new Os(u.from,1):new Os(u.to,-1);let d=t.docView.lineAt(u.from,2);return(!d||d.length!=u.length)&&(d=t.docView.lineAt(u.from,-2)),new fW(t,o,l,t.textDirectionAt(u.from)).scanTile(d,u.from)}class fW{constructor(e,i,n,r){this.view=e,this.x=i,this.y=n,this.baseDir=r,this.line=null,this.spans=null}bidiSpansAt(e){return(!this.line||this.line.from>e||this.line.to1||n.length&&(n[0].level!=this.baseDir||n[0].to+r.from>1;t:if(s.has(_)){let x=n+Math.floor(Math.random()*O);for(let w=0;wthis.y)(!c||c.top>w.top)&&(c=w),k=-1;else{let T=w.left>this.x?this.x-w.left:w.right(p.left+p.right)/2==g}}scanText(e,i){let n=[];for(let s=0;s{let o=n[s]-i,l=n[s+1]-i;return Bf(e.dom,o,l).getClientRects()});return r.after?new Os(n[r.i+1],-1):new Os(n[r.i],1)}scanTile(e,i){if(!e.length)return new Os(i,1);if(e.children.length==1){let l=e.children[0];if(l.isText())return this.scanText(l,i);if(l.isComposite())return this.scanTile(l,i)}let n=[i];for(let l=0,c=i;l{let c=e.children[l];return c.flags&48?null:(c.dom.nodeType==1?c.dom:Bf(c.dom,0,c.length)).getClientRects()}),s=e.children[r.i],o=n[r.i];return s.isText()?this.scanText(s,o):s.isComposite()?this.scanTile(s,o):r.after?new Os(n[r.i+1],-1):new Os(o,1)}}const Gu="￿";class dW{constructor(e,i){this.points=e,this.view=i,this.text="",this.lineSeparator=i.state.facet(et.lineSeparator)}append(e){this.text+=e}lineBreak(){this.text+=Gu}readRange(e,i){if(!e)return this;let n=e.parentNode;for(let r=e;;){this.findPointBefore(n,r);let s=this.text.length;this.readNode(r);let o=ui.get(r),l=r.nextSibling;if(l==i){o!=null&&o.breakAfter&&!l&&n!=this.view.contentDOM&&this.lineBreak();break}let c=ui.get(l);(o&&c?o.breakAfter:(o?o.breakAfter:Sg(r))||Sg(l)&&(r.nodeName!="BR"||o!=null&&o.isWidget())&&this.text.length>s)&&!mW(l,i)&&this.lineBreak(),r=l}return this.findPointBefore(n,i),this}readTextNode(e){let i=e.nodeValue;for(let n of this.points)n.node==e&&(n.pos=this.text.length+Math.min(n.offset,i.length));for(let n=0,r=this.lineSeparator?null:/\r\n?|\n/g;;){let s=-1,o=1,l;if(this.lineSeparator?(s=i.indexOf(this.lineSeparator,n),o=this.lineSeparator.length):(l=r.exec(i))&&(s=l.index,o=l[0].length),this.append(i.slice(n,s<0?i.length:s)),s<0)break;if(this.lineBreak(),o>1)for(let c of this.points)c.node==e&&c.pos>this.text.length&&(c.pos-=o-1);n=s+o}}readNode(e){let i=ui.get(e),n=i&&i.overrideDOMText;if(n!=null){this.findPointInside(e,n.length);for(let r=n.iter();!r.next().done;)r.lineBreak?this.lineBreak():this.append(r.value)}else e.nodeType==3?this.readTextNode(e):e.nodeName=="BR"?e.nextSibling&&this.lineBreak():e.nodeType==1&&this.readRange(e.firstChild,null)}findPointBefore(e,i){for(let n of this.points)n.node==e&&e.childNodes[n.offset]==i&&(n.pos=this.text.length)}findPointInside(e,i){for(let n of this.points)(e.nodeType==3?n.node==e:e.contains(n.node))&&(n.pos=this.text.length+(pW(e,n.node,n.offset)?i:0))}}function pW(t,e,i){for(;;){if(!e||i-1;let{impreciseHead:s,impreciseAnchor:o}=e.docView;if(e.state.readOnly&&i>-1)this.newSel=null;else if(i>-1&&(this.bounds=rB(e.docView.tile,i,n,0))){let l=s||o?[]:vW(e),c=new dW(l,e);c.readRange(this.bounds.startDOM,this.bounds.endDOM),this.text=c.text,this.newSel=_W(l,this.bounds.from)}else{let l=e.observer.selectionRange,c=s&&s.node==l.focusNode&&s.offset==l.focusOffset||!cb(e.contentDOM,l.focusNode)?e.state.selection.main.head:e.docView.posFromDOM(l.focusNode,l.focusOffset),u=o&&o.node==l.anchorNode&&o.offset==l.anchorOffset||!cb(e.contentDOM,l.anchorNode)?e.state.selection.main.anchor:e.docView.posFromDOM(l.anchorNode,l.anchorOffset),d=e.viewport;if((xe.ios||xe.chrome)&&e.state.selection.main.empty&&c!=u&&(d.from>0||d.to-1&&e.state.selection.ranges.length>1?this.newSel=e.state.selection.replaceRange(se.range(u,c)):this.newSel=se.single(u,c)}}}function rB(t,e,i,n){if(t.isComposite()){let r=-1,s=-1,o=-1,l=-1;for(let c=0,u=n,d=n;ci)return rB(p,e,i,u);if(g>=e&&r==-1&&(r=c,s=u),u>i&&p.dom.parentNode==t.dom){o=c,l=d;break}d=g,u=g+p.breakAfter}return{from:s,to:l<0?n+t.length:l,startDOM:(r?t.children[r-1].dom.nextSibling:null)||t.dom.firstChild,endDOM:o=0?t.children[o].dom:null}}else return t.isText()?{from:n,to:n+t.length,startDOM:t.dom,endDOM:t.dom.nextSibling}:null}function sB(t,e){let i,{newSel:n}=e,r=t.state.selection.main,s=t.inputState.lastKeyTime>Date.now()-100?t.inputState.lastKeyCode:-1;if(e.bounds){let{from:o,to:l}=e.bounds,c=r.from,u=null;(s===8||xe.android&&e.text.length=r.from&&i.to<=r.to&&(i.from!=r.from||i.to!=r.to)&&r.to-r.from-(i.to-i.from)<=4?i={from:r.from,to:r.to,insert:t.state.doc.slice(r.from,i.from).append(i.insert).append(t.state.doc.slice(i.to,r.to))}:t.state.doc.lineAt(r.from).toDate.now()-50?i={from:r.from,to:r.to,insert:t.state.toText(t.inputState.insertingText)}:xe.chrome&&i&&i.from==i.to&&i.from==r.head&&i.insert.toString()==` - `&&t.lineWrapping&&(n&&(n=se.single(n.main.anchor-1,n.main.head-1)),i={from:r.from,to:r.to,insert:at.of([" "])}),i)return Ix(t,i,n,s);if(n&&!kg(n,r)){let o=!1,l="select";return t.inputState.lastSelectionTime>Date.now()-50&&(t.inputState.lastSelectionOrigin=="select"&&(o=!0),l=t.inputState.lastSelectionOrigin,l=="select.pointer"&&(n=nB(t.state.facet(fd).map(c=>c(t)),n))),t.dispatch({selection:n,scrollIntoView:o,userEvent:l}),!0}else return!1}function Ix(t,e,i,n=-1){if(xe.ios&&t.inputState.flushIOSKey(e))return!0;let r=t.state.selection.main;if(xe.android&&(e.to==r.to&&(e.from==r.from||e.from==r.from-1&&t.state.sliceDoc(e.from,r.from)==" ")&&e.insert.length==1&&e.insert.lines==2&&Yc(t.contentDOM,"Enter",13)||(e.from==r.from-1&&e.to==r.to&&e.insert.length==0||n==8&&e.insert.lengthr.head)&&Yc(t.contentDOM,"Backspace",8)||e.from==r.from&&e.to==r.to+1&&e.insert.length==0&&Yc(t.contentDOM,"Delete",46)))return!0;let s=e.insert.toString();t.inputState.composing>=0&&t.inputState.composing++;let o,l=()=>o||(o=OW(t,e,i));return t.state.facet(qD).some(c=>c(t,e.from,e.to,s,l))||t.dispatch(l()),!0}function OW(t,e,i){let n,r=t.state,s=r.selection.main,o=-1;if(e.from==e.to&&e.froms.to){let c=e.fromp(t)),u,c);e.from==d&&(o=d)}if(o>-1)n={changes:e,selection:se.cursor(e.from+e.insert.length,-1)};else if(e.from>=s.from&&e.to<=s.to&&e.to-e.from>=(s.to-s.from)/3&&(!i||i.main.empty&&i.main.from==e.from+e.insert.length)&&t.inputState.composing<0){let c=s.frome.to?r.sliceDoc(e.to,s.to):"";n=r.replaceSelection(t.state.toText(c+e.insert.sliceString(0,void 0,t.state.lineBreak)+u))}else{let c=r.changes(e),u=i&&i.main.to<=c.newLength?i.main:void 0;if(r.selection.ranges.length>1&&(t.inputState.composing>=0||t.inputState.compositionPendingChange)&&e.to<=s.to+10&&e.to>=s.to-10){let d=t.state.sliceDoc(e.from,e.to),p,g=i&&iB(t,i.main.head);if(g){let _=e.insert.length-(e.to-e.from);p={from:g.from,to:g.to-_}}else p=t.state.doc.lineAt(s.head);let O=s.to-e.to;n=r.changeByRange(_=>{if(_.from==s.from&&_.to==s.to)return{changes:c,range:u||_.map(c)};let b=_.to-O,x=b-d.length;if(t.state.sliceDoc(x,b)!=d||b>=p.from&&x<=p.to)return{range:_};let w=r.changes({from:x,to:b,insert:e.insert}),k=_.to-s.to;return{changes:w,range:u?se.range(Math.max(0,u.anchor+k),Math.max(0,u.head+k)):_.map(w)}})}else n={changes:c,selection:u&&r.selection.replaceRange(u)}}let l="input.type";return(t.composing||t.inputState.compositionPendingChange&&t.inputState.compositionEndedAt>Date.now()-50)&&(t.inputState.compositionPendingChange=!1,l+=".compose",t.inputState.compositionFirstChange&&(l+=".start",t.inputState.compositionFirstChange=!1)),r.update(n,{userEvent:l,scrollIntoView:!0})}function oB(t,e,i,n){let r=Math.min(t.length,e.length),s=0;for(;s0&&l>0&&t.charCodeAt(o-1)==e.charCodeAt(l-1);)o--,l--;if(n=="end"){let c=Math.max(0,s-Math.min(o,l));i-=o+c-s}if(o=o?s-i:0;s-=c,l=s+(l-o),o=s}else if(l=l?s-i:0;s-=c,o=s+(o-l),l=s}return{from:s,toA:o,toB:l}}function vW(t){let e=[];if(t.root.activeElement!=t.contentDOM)return e;let{anchorNode:i,anchorOffset:n,focusNode:r,focusOffset:s}=t.observer.selectionRange;return i&&(e.push(new KA(i,n)),(r!=i||s!=n)&&e.push(new KA(r,s))),e}function _W(t,e){if(t.length==0)return null;let i=t[0].pos,n=t.length==2?t[1].pos:i;return i>-1&&n>-1?se.single(i+e,n+e):null}function kg(t,e){return e.head==t.main.head&&e.anchor==t.main.anchor}class yW{setSelectionOrigin(e){this.lastSelectionOrigin=e,this.lastSelectionTime=Date.now()}constructor(e){this.view=e,this.lastKeyCode=0,this.lastKeyTime=0,this.lastTouchTime=0,this.lastFocusTime=0,this.lastScrollTop=0,this.lastScrollLeft=0,this.pendingIOSKey=void 0,this.tabFocusMode=-1,this.lastSelectionOrigin=null,this.lastSelectionTime=0,this.lastContextMenu=0,this.scrollHandlers=[],this.handlers=Object.create(null),this.composing=-1,this.compositionFirstChange=null,this.compositionEndedAt=0,this.compositionPendingKey=!1,this.compositionPendingChange=!1,this.insertingText="",this.insertingTextAt=0,this.mouseSelection=null,this.draggedContent=null,this.handleEvent=this.handleEvent.bind(this),this.notifiedFocused=e.hasFocus,xe.safari&&e.contentDOM.addEventListener("input",()=>null),xe.gecko&&DW(e.contentDOM.ownerDocument)}handleEvent(e){!AW(this.view,e)||this.ignoreDuringComposition(e)||e.type=="keydown"&&this.keydown(e)||(this.view.updateState!=0?Promise.resolve().then(()=>this.runHandlers(e.type,e)):this.runHandlers(e.type,e))}runHandlers(e,i){let n=this.handlers[e];if(n){for(let r of n.observers)r(this.view,i);for(let r of n.handlers){if(i.defaultPrevented)break;if(r(this.view,i)){i.preventDefault();break}}}}ensureHandlers(e){let i=bW(e),n=this.handlers,r=this.view.contentDOM;for(let s in i)if(s!="scroll"){let o=!i[s].handlers.length,l=n[s];l&&o!=!l.handlers.length&&(r.removeEventListener(s,this.handleEvent),l=null),l||r.addEventListener(s,this.handleEvent,{passive:o})}for(let s in n)s!="scroll"&&!i[s]&&r.removeEventListener(s,this.handleEvent);this.handlers=i}keydown(e){if(this.lastKeyCode=e.keyCode,this.lastKeyTime=Date.now(),e.keyCode==9&&this.tabFocusMode>-1&&(!this.tabFocusMode||Date.now()<=this.tabFocusMode))return!0;if(this.tabFocusMode>0&&e.keyCode!=27&&lB.indexOf(e.keyCode)<0&&(this.tabFocusMode=-1),xe.android&&xe.chrome&&!e.synthetic&&(e.keyCode==13||e.keyCode==8))return this.view.observer.delayAndroidKey(e.key,e.keyCode),!0;let i;return xe.ios&&!e.synthetic&&!e.altKey&&!e.metaKey&&((i=aB.find(n=>n.keyCode==e.keyCode))&&!e.ctrlKey||SW.indexOf(e.key)>-1&&e.ctrlKey&&!e.shiftKey)?(this.pendingIOSKey=i||e,setTimeout(()=>this.flushIOSKey(),250),!0):(e.keyCode!=229&&this.view.observer.forceFlush(),!1)}flushIOSKey(e){let i=this.pendingIOSKey;return!i||i.key=="Enter"&&e&&e.from0?!0:xe.safari&&!xe.ios&&this.compositionPendingKey&&Date.now()-this.compositionEndedAt<100?(this.compositionPendingKey=!1,!0):!1}startMouseSelection(e){this.mouseSelection&&this.mouseSelection.destroy(),this.mouseSelection=e}update(e){this.view.observer.update(e),this.mouseSelection&&this.mouseSelection.update(e),this.draggedContent&&e.docChanged&&(this.draggedContent=this.draggedContent.map(e.changes)),e.transactions.length&&(this.lastKeyCode=this.lastSelectionTime=0)}destroy(){this.mouseSelection&&this.mouseSelection.destroy()}}function JA(t,e){return(i,n)=>{try{return e.call(t,n,i)}catch(r){$n(i.state,r)}}}function bW(t){let e=Object.create(null);function i(n){return e[n]||(e[n]={observers:[],handlers:[]})}for(let n of t){let r=n.spec,s=r&&r.plugin.domEventHandlers,o=r&&r.plugin.domEventObservers;if(s)for(let l in s){let c=s[l];c&&i(l).handlers.push(JA(n.value,c))}if(o)for(let l in o){let c=o[l];c&&i(l).observers.push(JA(n.value,c))}}for(let n in Hr)i(n).handlers.push(Hr[n]);for(let n in Qr)i(n).observers.push(Qr[n]);return e}const aB=[{key:"Backspace",keyCode:8,inputType:"deleteContentBackward"},{key:"Enter",keyCode:13,inputType:"insertParagraph"},{key:"Enter",keyCode:13,inputType:"insertLineBreak"},{key:"Delete",keyCode:46,inputType:"deleteContentForward"}],SW="dthko",lB=[16,17,18,20,91,92,224,225],em=6;function tm(t){return Math.max(0,t)*.7+8}function xW(t,e){return Math.max(Math.abs(t.clientX-e.clientX),Math.abs(t.clientY-e.clientY))}class wW{constructor(e,i,n,r){this.view=e,this.startEvent=i,this.style=n,this.mustSelect=r,this.scrollSpeed={x:0,y:0},this.scrolling=-1,this.lastEvent=i,this.scrollParents=kq(e.contentDOM),this.atoms=e.state.facet(fd).map(o=>o(e));let s=e.contentDOM.ownerDocument;s.addEventListener("mousemove",this.move=this.move.bind(this)),s.addEventListener("mouseup",this.up=this.up.bind(this)),this.extend=i.shiftKey,this.multiple=e.state.facet(et.allowMultipleSelections)&&CW(e,i),this.dragging=TW(e,i)&&uB(i)==1?null:!1}start(e){this.dragging===!1&&this.select(e)}move(e){if(e.buttons==0)return this.destroy();if(this.dragging||this.dragging==null&&xW(this.startEvent,e)<10)return;this.select(this.lastEvent=e);let i=0,n=0,r=0,s=0,o=this.view.win.innerWidth,l=this.view.win.innerHeight;this.scrollParents.x&&({left:r,right:o}=this.scrollParents.x.getBoundingClientRect()),this.scrollParents.y&&({top:s,bottom:l}=this.scrollParents.y.getBoundingClientRect());let c=jx(this.view);e.clientX-c.left<=r+em?i=-tm(r-e.clientX):e.clientX+c.right>=o-em&&(i=tm(e.clientX-o)),e.clientY-c.top<=s+em?n=-tm(s-e.clientY):e.clientY+c.bottom>=l-em&&(n=tm(e.clientY-l)),this.setScrollSpeed(i,n)}up(e){this.dragging==null&&this.select(this.lastEvent),this.dragging||e.preventDefault(),this.destroy()}destroy(){this.setScrollSpeed(0,0);let e=this.view.contentDOM.ownerDocument;e.removeEventListener("mousemove",this.move),e.removeEventListener("mouseup",this.up),this.view.inputState.mouseSelection=this.view.inputState.draggedContent=null}setScrollSpeed(e,i){this.scrollSpeed={x:e,y:i},e||i?this.scrolling<0&&(this.scrolling=setInterval(()=>this.scroll(),50)):this.scrolling>-1&&(clearInterval(this.scrolling),this.scrolling=-1)}scroll(){let{x:e,y:i}=this.scrollSpeed;e&&this.scrollParents.x&&(this.scrollParents.x.scrollLeft+=e,e=0),i&&this.scrollParents.y&&(this.scrollParents.y.scrollTop+=i,i=0),(e||i)&&this.view.win.scrollBy(e,i),this.dragging===!1&&this.select(this.lastEvent)}select(e){let{view:i}=this,n=nB(this.atoms,this.style.get(e,this.extend,this.multiple));(this.mustSelect||!n.eq(i.state.selection,this.dragging===!1))&&this.view.dispatch({selection:n,userEvent:"select.pointer"}),this.mustSelect=!1}update(e){e.transactions.some(i=>i.isUserEvent("input.type"))?this.destroy():this.style.update(e)&&setTimeout(()=>this.select(this.lastEvent),20)}}function CW(t,e){let i=t.state.facet(ID);return i.length?i[0](e):xe.mac?e.metaKey:e.ctrlKey}function kW(t,e){let i=t.state.facet(VD);return i.length?i[0](e):xe.mac?!e.altKey:!e.ctrlKey}function TW(t,e){let{main:i}=t.state.selection;if(i.empty)return!1;let n=Lf(t.root);if(!n||n.rangeCount==0)return!0;let r=n.getRangeAt(0).getClientRects();for(let s=0;s=e.clientX&&o.top<=e.clientY&&o.bottom>=e.clientY)return!0}return!1}function AW(t,e){if(!e.bubbles)return!0;if(e.defaultPrevented)return!1;for(let i=e.target,n;i!=t.contentDOM;i=i.parentNode)if(!i||i.nodeType==11||(n=ui.get(i))&&n.isWidget()&&!n.isHidden&&n.widget.ignoreEvent(e))return!1;return!0}const Hr=Object.create(null),Qr=Object.create(null),cB=xe.ie&&xe.ie_version<15||xe.ios&&xe.webkit_version<604;function EW(t){let e=t.dom.parentNode;if(!e)return;let i=e.appendChild(document.createElement("textarea"));i.style.cssText="position: fixed; left: -10000px; top: 10px",i.focus(),setTimeout(()=>{t.focus(),i.remove(),hB(t,i.value)},50)}function gO(t,e,i){for(let n of t.facet(e))i=n(i,t);return i}function hB(t,e){e=gO(t.state,Bx,e);let{state:i}=t,n,r=1,s=i.toText(e),o=s.lines==i.selection.ranges.length;if(Ob!=null&&i.selection.ranges.every(c=>c.empty)&&Ob==s.toString()){let c=-1;n=i.changeByRange(u=>{let d=i.doc.lineAt(u.from);if(d.from==c)return{range:u};c=d.from;let p=i.toText((o?s.line(r++).text:e)+i.lineBreak);return{changes:{from:d.from,insert:p},range:se.cursor(u.from+p.length)}})}else o?n=i.changeByRange(c=>{let u=s.line(r++);return{changes:{from:c.from,to:c.to,insert:u.text},range:se.cursor(c.from+u.length)}}):n=i.replaceSelection(s);t.dispatch(n,{userEvent:"input.paste",scrollIntoView:!0})}Qr.scroll=t=>{t.inputState.lastScrollTop=t.scrollDOM.scrollTop,t.inputState.lastScrollLeft=t.scrollDOM.scrollLeft};Hr.keydown=(t,e)=>(t.inputState.setSelectionOrigin("select"),e.keyCode==27&&t.inputState.tabFocusMode!=0&&(t.inputState.tabFocusMode=Date.now()+2e3),!1);Qr.touchstart=(t,e)=>{t.inputState.lastTouchTime=Date.now(),t.inputState.setSelectionOrigin("select.pointer")};Qr.touchmove=t=>{t.inputState.setSelectionOrigin("select.pointer")};Hr.mousedown=(t,e)=>{if(t.observer.flush(),t.inputState.lastTouchTime>Date.now()-2e3)return!1;let i=null;for(let n of t.state.facet(XD))if(i=n(t,e),i)break;if(!i&&e.button==0&&(i=PW(t,e)),i){let n=!t.hasFocus;t.inputState.startMouseSelection(new wW(t,e,i,n)),n&&t.observer.ignore(()=>{RD(t.contentDOM);let s=t.root.activeElement;s&&!s.contains(t.contentDOM)&&s.blur()});let r=t.inputState.mouseSelection;if(r)return r.start(e),r.dragging===!1}else t.inputState.setSelectionOrigin("select.pointer");return!1};function eE(t,e,i,n){if(n==1)return se.cursor(e,i);if(n==2)return aW(t.state,e,i);{let r=t.docView.lineAt(e,i),s=t.state.doc.lineAt(r?r.posAtEnd:e),o=r?r.posAtStart:s.from,l=r?r.posAtEnd:s.to;return lDate.now()-400&&Math.abs(e.clientX-t.clientX)<2&&Math.abs(e.clientY-t.clientY)<2?(iE+1)%3:1}function PW(t,e){let i=t.posAndSideAtCoords({x:e.clientX,y:e.clientY},!1),n=uB(e),r=t.state.selection;return{update(s){s.docChanged&&(i.pos=s.changes.mapPos(i.pos),r=r.map(s.changes))},get(s,o,l){let c=t.posAndSideAtCoords({x:s.clientX,y:s.clientY},!1),u,d=eE(t,c.pos,c.assoc,n);if(i.pos!=c.pos&&!o){let p=eE(t,i.pos,i.assoc,n),g=Math.min(p.from,d.from),O=Math.max(p.to,d.to);d=g1&&(u=RW(r,c.pos))?u:l?r.addRange(d):se.create([d])}}}function RW(t,e){for(let i=0;i=e)return se.create(t.ranges.slice(0,i).concat(t.ranges.slice(i+1)),t.mainIndex==i?0:t.mainIndex-(t.mainIndex>i?1:0))}return null}Hr.dragstart=(t,e)=>{let{selection:{main:i}}=t.state;if(e.target.draggable){let r=t.docView.tile.nearest(e.target);if(r&&r.isWidget()){let s=r.posAtStart,o=s+r.length;(s>=i.to||o<=i.from)&&(i=se.range(s,o))}}let{inputState:n}=t;return n.mouseSelection&&(n.mouseSelection.dragging=!0),n.draggedContent=i,e.dataTransfer&&(e.dataTransfer.setData("Text",gO(t.state,$x,t.state.sliceDoc(i.from,i.to))),e.dataTransfer.effectAllowed="copyMove"),!1};Hr.dragend=t=>(t.inputState.draggedContent=null,!1);function rE(t,e,i,n){if(i=gO(t.state,Bx,i),!i)return;let r=t.posAtCoords({x:e.clientX,y:e.clientY},!1),{draggedContent:s}=t.inputState,o=n&&s&&kW(t,e)?{from:s.from,to:s.to}:null,l={from:r,insert:i},c=t.state.changes(o?[o,l]:l);t.focus(),t.dispatch({changes:c,selection:{anchor:c.mapPos(r,-1),head:c.mapPos(r,1)},userEvent:o?"move.drop":"input.drop"}),t.inputState.draggedContent=null}Hr.drop=(t,e)=>{if(!e.dataTransfer)return!1;if(t.state.readOnly)return!0;let i=e.dataTransfer.files;if(i&&i.length){let n=Array(i.length),r=0,s=()=>{++r==i.length&&rE(t,e,n.filter(o=>o!=null).join(t.state.lineBreak),!1)};for(let o=0;o{/[\x00-\x08\x0e-\x1f]{2}/.test(l.result)||(n[o]=l.result),s()},l.readAsText(i[o])}return!0}else{let n=e.dataTransfer.getData("Text");if(n)return rE(t,e,n,!0),!0}return!1};Hr.paste=(t,e)=>{if(t.state.readOnly)return!0;t.observer.flush();let i=cB?null:e.clipboardData;return i?(hB(t,i.getData("text/plain")||i.getData("text/uri-list")),!0):(EW(t),!1)};function QW(t,e){let i=t.dom.parentNode;if(!i)return;let n=i.appendChild(document.createElement("textarea"));n.style.cssText="position: fixed; left: -10000px; top: 10px",n.value=e,n.focus(),n.selectionEnd=e.length,n.selectionStart=0,setTimeout(()=>{n.remove(),t.focus()},50)}function LW(t){let e=[],i=[],n=!1;for(let r of t.selection.ranges)r.empty||(e.push(t.sliceDoc(r.from,r.to)),i.push(r));if(!e.length){let r=-1;for(let{from:s}of t.selection.ranges){let o=t.doc.lineAt(s);o.number>r&&(e.push(o.text),i.push({from:o.from,to:Math.min(t.doc.length,o.to+1)})),r=o.number}n=!0}return{text:gO(t,$x,e.join(t.lineBreak)),ranges:i,linewise:n}}let Ob=null;Hr.copy=Hr.cut=(t,e)=>{if(!pf(t.contentDOM,t.observer.selectionRange))return!1;let{text:i,ranges:n,linewise:r}=LW(t.state);if(!i&&!r)return!1;Ob=r?i:null,e.type=="cut"&&!t.state.readOnly&&t.dispatch({changes:n,scrollIntoView:!0,userEvent:"delete.cut"});let s=cB?null:e.clipboardData;return s?(s.clearData(),s.setData("text/plain",i),!0):(QW(t,i),!1)};const fB=Rs.define();function dB(t,e){let i=[];for(let n of t.facet(WD)){let r=n(t,e);r&&i.push(r)}return i.length?t.update({effects:i,annotations:fB.of(!0)}):null}function pB(t){setTimeout(()=>{let e=t.hasFocus;if(e!=t.inputState.notifiedFocused){let i=dB(t.state,e);i?t.dispatch(i):t.update([])}},10)}Qr.focus=t=>{t.inputState.lastFocusTime=Date.now(),!t.scrollDOM.scrollTop&&(t.inputState.lastScrollTop||t.inputState.lastScrollLeft)&&(t.scrollDOM.scrollTop=t.inputState.lastScrollTop,t.scrollDOM.scrollLeft=t.inputState.lastScrollLeft),pB(t)};Qr.blur=t=>{t.observer.clearSelectionRange(),pB(t)};Qr.compositionstart=Qr.compositionupdate=t=>{t.observer.editContext||(t.inputState.compositionFirstChange==null&&(t.inputState.compositionFirstChange=!0),t.inputState.composing<0&&(t.inputState.composing=0))};Qr.compositionend=t=>{t.observer.editContext||(t.inputState.composing=-1,t.inputState.compositionEndedAt=Date.now(),t.inputState.compositionPendingKey=!0,t.inputState.compositionPendingChange=t.observer.pendingRecords().length>0,t.inputState.compositionFirstChange=null,xe.chrome&&xe.android?t.observer.flushSoon():t.inputState.compositionPendingChange?Promise.resolve().then(()=>t.observer.flush()):setTimeout(()=>{t.inputState.composing<0&&t.docView.hasComposition&&t.update([])},50))};Qr.contextmenu=t=>{t.inputState.lastContextMenu=Date.now()};Hr.beforeinput=(t,e)=>{var i,n;if((e.inputType=="insertText"||e.inputType=="insertCompositionText")&&(t.inputState.insertingText=e.data,t.inputState.insertingTextAt=Date.now()),e.inputType=="insertReplacementText"&&t.observer.editContext){let s=(i=e.dataTransfer)===null||i===void 0?void 0:i.getData("text/plain"),o=e.getTargetRanges();if(s&&o.length){let l=o[0],c=t.posAtDOM(l.startContainer,l.startOffset),u=t.posAtDOM(l.endContainer,l.endOffset);return Ix(t,{from:c,to:u,insert:t.state.toText(s)},null),!0}}let r;if(xe.chrome&&xe.android&&(r=aB.find(s=>s.inputType==e.inputType))&&(t.observer.delayAndroidKey(r.key,r.keyCode),r.key=="Backspace"||r.key=="Delete")){let s=((n=window.visualViewport)===null||n===void 0?void 0:n.height)||0;setTimeout(()=>{var o;(((o=window.visualViewport)===null||o===void 0?void 0:o.height)||0)>s+10&&t.hasFocus&&(t.contentDOM.blur(),t.focus())},100)}return xe.ios&&e.inputType=="deleteContentForward"&&t.observer.flushSoon(),xe.safari&&e.inputType=="insertText"&&t.inputState.composing>=0&&setTimeout(()=>Qr.compositionend(t,e),20),!1};const sE=new Set;function DW(t){sE.has(t)||(sE.add(t),t.addEventListener("copy",()=>{}),t.addEventListener("cut",()=>{}))}const oE=["pre-wrap","normal","pre-line","break-spaces"];let ah=!1;function aE(){ah=!1}class BW{constructor(e){this.lineWrapping=e,this.doc=at.empty,this.heightSamples={},this.lineHeight=14,this.charWidth=7,this.textHeight=14,this.lineLength=30}heightForGap(e,i){let n=this.doc.lineAt(i).number-this.doc.lineAt(e).number+1;return this.lineWrapping&&(n+=Math.max(0,Math.ceil((i-e-n*this.lineLength*.5)/this.lineLength))),this.lineHeight*n}heightForLine(e){return this.lineWrapping?(1+Math.max(0,Math.ceil((e-this.lineLength)/Math.max(1,this.lineLength-5))))*this.lineHeight:this.lineHeight}setDoc(e){return this.doc=e,this}mustRefreshForWrapping(e){return oE.indexOf(e)>-1!=this.lineWrapping}mustRefreshForHeights(e){let i=!1;for(let n=0;n-1,c=Math.abs(i-this.lineHeight)>.3||this.lineWrapping!=l||Math.abs(n-this.charWidth)>.1;if(this.lineWrapping=l,this.lineHeight=i,this.charWidth=n,this.textHeight=r,this.lineLength=s,c){this.heightSamples={};for(let u=0;u0}set outdated(e){this.flags=(e?2:0)|this.flags&-3}setHeight(e){this.height!=e&&(Math.abs(this.height-e)>Xm&&(ah=!0),this.height=e)}replace(e,i,n){return _n.of(n)}decomposeLeft(e,i){i.push(this)}decomposeRight(e,i){i.push(this)}applyChanges(e,i,n,r){let s=this,o=n.doc;for(let l=r.length-1;l>=0;l--){let{fromA:c,toA:u,fromB:d,toB:p}=r[l],g=s.lineAt(c,Ct.ByPosNoHeight,n.setDoc(i),0,0),O=g.to>=u?g:s.lineAt(u,Ct.ByPosNoHeight,n,0,0);for(p+=O.to-u,u=O.to;l>0&&g.from<=r[l-1].toA;)c=r[l-1].fromA,d=r[l-1].fromB,l--,cs*2){let l=e[i-1];l.break?e.splice(--i,1,l.left,null,l.right):e.splice(--i,1,l.left,l.right),n+=1+l.break,r-=l.size}else if(s>r*2){let l=e[n];l.break?e.splice(n,1,l.left,null,l.right):e.splice(n,1,l.left,l.right),n+=2+l.break,s-=l.size}else break;else if(r=s&&o(this.lineAt(0,Ct.ByPos,n,r,s))}setMeasuredHeight(e){let i=e.heights[e.index++];i<0?(this.spaceAbove=-i,i=e.heights[e.index++]):this.spaceAbove=0,this.setHeight(i)}updateHeight(e,i=0,n=!1,r){return r&&r.from<=i&&r.more&&this.setMeasuredHeight(r),this.outdated=!1,this}toString(){return`block(${this.length})`}}class tr extends mB{constructor(e,i,n){super(e,i,null),this.collapsed=0,this.widgetHeight=0,this.breaks=0,this.spaceAbove=n}mainBlock(e,i){return new Zr(i,this.length,e+this.spaceAbove,this.height-this.spaceAbove,this.breaks)}replace(e,i,n){let r=n[0];return n.length==1&&(r instanceof tr||r instanceof Wi&&r.flags&4)&&Math.abs(this.length-r.length)<10?(r instanceof Wi?r=new tr(r.length,this.height,this.spaceAbove):r.height=this.height,this.outdated||(r.outdated=!1),r):_n.of(n)}updateHeight(e,i=0,n=!1,r){return r&&r.from<=i&&r.more?this.setMeasuredHeight(r):(n||this.outdated)&&(this.spaceAbove=0,this.setHeight(Math.max(this.widgetHeight,e.heightForLine(this.length-this.collapsed))+this.breaks*e.lineHeight)),this.outdated=!1,this}toString(){return`line(${this.length}${this.collapsed?-this.collapsed:""}${this.widgetHeight?":"+this.widgetHeight:""})`}}class Wi extends _n{constructor(e){super(e,0)}heightMetrics(e,i){let n=e.doc.lineAt(i).number,r=e.doc.lineAt(i+this.length).number,s=r-n+1,o,l=0;if(e.lineWrapping){let c=Math.min(this.height,e.lineHeight*s);o=c/s,this.length>s+1&&(l=(this.height-c)/(this.length-s-1))}else o=this.height/s;return{firstLine:n,lastLine:r,perLine:o,perChar:l}}blockAt(e,i,n,r){let{firstLine:s,lastLine:o,perLine:l,perChar:c}=this.heightMetrics(i,r);if(i.lineWrapping){let u=r+(e0){let s=n[n.length-1];s instanceof Wi?n[n.length-1]=new Wi(s.length+r):n.push(null,new Wi(r-1))}if(e>0){let s=n[0];s instanceof Wi?n[0]=new Wi(e+s.length):n.unshift(new Wi(e-1),null)}return _n.of(n)}decomposeLeft(e,i){i.push(new Wi(e-1),null)}decomposeRight(e,i){i.push(null,new Wi(this.length-e-1))}updateHeight(e,i=0,n=!1,r){let s=i+this.length;if(r&&r.from<=i+this.length&&r.more){let o=[],l=Math.max(i,r.from),c=-1;for(r.from>i&&o.push(new Wi(r.from-i-1).updateHeight(e,i));l<=s&&r.more;){let d=e.doc.lineAt(l).length;o.length&&o.push(null);let p=r.heights[r.index++],g=0;p<0&&(g=-p,p=r.heights[r.index++]),c==-1?c=p:Math.abs(p-c)>=Xm&&(c=-2);let O=new tr(d,p,g);O.outdated=!1,o.push(O),l+=d+1}l<=s&&o.push(null,new Wi(s-l).updateHeight(e,l));let u=_n.of(o);return(c<0||Math.abs(u.height-this.height)>=Xm||Math.abs(c-this.heightMetrics(e,i).perLine)>=Xm)&&(ah=!0),Tg(this,u)}else(n||this.outdated)&&(this.setHeight(e.heightForGap(i,i+this.length)),this.outdated=!1);return this}toString(){return`gap(${this.length})`}}class NW extends _n{constructor(e,i,n){super(e.length+i+n.length,e.height+n.height,i|(e.outdated||n.outdated?2:0)),this.left=e,this.right=n,this.size=e.size+n.size}get break(){return this.flags&1}blockAt(e,i,n,r){let s=n+this.left.height;return el))return u;let d=i==Ct.ByPosNoHeight?Ct.ByPosNoHeight:Ct.ByPos;return c?u.join(this.right.lineAt(l,d,n,o,l)):this.left.lineAt(l,d,n,r,s).join(u)}forEachLine(e,i,n,r,s,o){let l=r+this.left.height,c=s+this.left.length+this.break;if(this.break)e=c&&this.right.forEachLine(e,i,n,l,c,o);else{let u=this.lineAt(c,Ct.ByPos,n,r,s);e=e&&u.from<=i&&o(u),i>u.to&&this.right.forEachLine(u.to+1,i,n,l,c,o)}}replace(e,i,n){let r=this.left.length+this.break;if(ithis.left.length)return this.balanced(this.left,this.right.replace(e-r,i-r,n));let s=[];e>0&&this.decomposeLeft(e,s);let o=s.length;for(let l of n)s.push(l);if(e>0&&lE(s,o-1),i=n&&i.push(null)),e>n&&this.right.decomposeLeft(e-n,i)}decomposeRight(e,i){let n=this.left.length,r=n+this.break;if(e>=r)return this.right.decomposeRight(e-r,i);e2*i.size||i.size>2*e.size?_n.of(this.break?[e,null,i]:[e,i]):(this.left=Tg(this.left,e),this.right=Tg(this.right,i),this.setHeight(e.height+i.height),this.outdated=e.outdated||i.outdated,this.size=e.size+i.size,this.length=e.length+this.break+i.length,this)}updateHeight(e,i=0,n=!1,r){let{left:s,right:o}=this,l=i+s.length+this.break,c=null;return r&&r.from<=i+s.length&&r.more?c=s=s.updateHeight(e,i,n,r):s.updateHeight(e,i,n),r&&r.from<=l+o.length&&r.more?c=o=o.updateHeight(e,l,n,r):o.updateHeight(e,l,n),c?this.balanced(s,o):(this.height=this.left.height+this.right.height,this.outdated=!1,this)}toString(){return this.left+(this.break?" ":"-")+this.right}}function lE(t,e){let i,n;t[e]==null&&(i=t[e-1])instanceof Wi&&(n=t[e+1])instanceof Wi&&t.splice(e-1,3,new Wi(i.length+1+n.length))}const jW=5;class Vx{constructor(e,i){this.pos=e,this.oracle=i,this.nodes=[],this.lineStart=-1,this.lineEnd=-1,this.covering=null,this.writtenTo=e}get isCovered(){return this.covering&&this.nodes[this.nodes.length-1]==this.covering}span(e,i){if(this.lineStart>-1){let n=Math.min(i,this.lineEnd),r=this.nodes[this.nodes.length-1];r instanceof tr?r.length+=n-this.pos:(n>this.pos||!this.isCovered)&&this.nodes.push(new tr(n-this.pos,-1,0)),this.writtenTo=n,i>n&&(this.nodes.push(null),this.writtenTo++,this.lineStart=-1)}this.pos=i}point(e,i,n){if(e=jW)&&this.addLineDeco(r,s,o)}else i>e&&this.span(e,i);this.lineEnd>-1&&this.lineEnd-1)return;let{from:e,to:i}=this.oracle.doc.lineAt(this.pos);this.lineStart=e,this.lineEnd=i,this.writtenToe&&this.nodes.push(new tr(this.pos-e,-1,0)),this.writtenTo=this.pos}blankContent(e,i){let n=new Wi(i-e);return this.oracle.doc.lineAt(e).to==i&&(n.flags|=4),n}ensureLine(){this.enterLine();let e=this.nodes.length?this.nodes[this.nodes.length-1]:null;if(e instanceof tr)return e;let i=new tr(0,-1,0);return this.nodes.push(i),i}addBlock(e){this.enterLine();let i=e.deco;i&&i.startSide>0&&!this.isCovered&&this.ensureLine(),this.nodes.push(e),this.writtenTo=this.pos=this.pos+e.length,i&&i.endSide>0&&(this.covering=e)}addLineDeco(e,i,n){let r=this.ensureLine();r.length+=n,r.collapsed+=n,r.widgetHeight=Math.max(r.widgetHeight,e),r.breaks+=i,this.writtenTo=this.pos=this.pos+n}finish(e){let i=this.nodes.length==0?null:this.nodes[this.nodes.length-1];this.lineStart>-1&&!(i instanceof tr)&&!this.isCovered?this.nodes.push(new tr(0,-1,0)):(this.writtenTod.clientHeight||d.scrollWidth>d.clientWidth)&&p.overflow!="visible"){let g=d.getBoundingClientRect();s=Math.max(s,g.left),o=Math.min(o,g.right),l=Math.max(l,g.top),c=Math.min(u==t.parentNode?r.innerHeight:c,g.bottom)}u=p.position=="absolute"||p.position=="fixed"?d.offsetParent:d.parentNode}else if(u.nodeType==11)u=u.host;else break;return{left:s-i.left,right:Math.max(s,o)-i.left,top:l-(i.top+e),bottom:Math.max(l,c)-(i.top+e)}}function ZW(t){let e=t.getBoundingClientRect(),i=t.ownerDocument.defaultView||window;return e.left0&&e.top0}function qW(t,e){let i=t.getBoundingClientRect();return{left:0,right:i.right-i.left,top:e,bottom:i.bottom-(i.top+e)}}class A_{constructor(e,i,n,r){this.from=e,this.to=i,this.size=n,this.displaySize=r}static same(e,i){if(e.length!=i.length)return!1;for(let n=0;ntypeof n!="function"&&n.class=="cm-lineWrapping");this.heightOracle=new BW(i),this.stateDeco=uE(e),this.heightMap=_n.empty().applyChanges(this.stateDeco,at.empty,this.heightOracle.setDoc(e.doc),[new kr(0,0,0,e.doc.length)]);for(let n=0;n<2&&(this.viewport=this.getViewport(0,null),!!this.updateForViewport());n++);this.updateViewportLines(),this.lineGaps=this.ensureLineGaps([]),this.lineGapDeco=Pe.set(this.lineGaps.map(n=>n.draw(this,!1))),this.computeVisibleRanges()}updateForViewport(){let e=[this.viewport],{main:i}=this.state.selection;for(let n=0;n<=1;n++){let r=n?i.head:i.anchor;if(!e.some(({from:s,to:o})=>r>=s&&r<=o)){let{from:s,to:o}=this.lineBlockAt(r);e.push(new im(s,o))}}return this.viewports=e.sort((n,r)=>n.from-r.from),this.updateScaler()}updateScaler(){let e=this.scaler;return this.scaler=this.heightMap.height<=7e6?hE:new Xx(this.heightOracle,this.heightMap,this.viewports),e.eq(this.scaler)?0:2}updateViewportLines(){this.viewportLines=[],this.heightMap.forEachLine(this.viewport.from,this.viewport.to,this.heightOracle.setDoc(this.state.doc),0,0,e=>{this.viewportLines.push(Ku(e,this.scaler))})}update(e,i=null){this.state=e.state;let n=this.stateDeco;this.stateDeco=uE(this.state);let r=e.changedRanges,s=kr.extendWithRanges(r,IW(n,this.stateDeco,e?e.changes:vi.empty(this.state.doc.length))),o=this.heightMap.height,l=this.scrolledToBottom?null:this.scrollAnchorAt(this.scrollTop);aE(),this.heightMap=this.heightMap.applyChanges(this.stateDeco,e.startState.doc,this.heightOracle.setDoc(this.state.doc),s),(this.heightMap.height!=o||ah)&&(e.flags|=2),l?(this.scrollAnchorPos=e.changes.mapPos(l.from,-1),this.scrollAnchorHeight=l.top):(this.scrollAnchorPos=-1,this.scrollAnchorHeight=o);let c=s.length?this.mapViewport(this.viewport,e.changes):this.viewport;(i&&(i.range.headc.to)||!this.viewportIsAppropriate(c))&&(c=this.getViewport(0,i));let u=c.from!=this.viewport.from||c.to!=this.viewport.to;this.viewport=c,e.flags|=this.updateForViewport(),(u||!e.changes.empty||e.flags&2)&&this.updateViewportLines(),(this.lineGaps.length||this.viewport.to-this.viewport.from>4e3)&&this.updateLineGaps(this.ensureLineGaps(this.mapLineGaps(this.lineGaps,e.changes))),e.flags|=this.computeVisibleRanges(e.changes),i&&(this.scrollTarget=i),!this.mustEnforceCursorAssoc&&(e.selectionSet||e.focusChanged)&&e.view.lineWrapping&&e.state.selection.main.empty&&e.state.selection.main.assoc&&!e.state.facet(YD)&&(this.mustEnforceCursorAssoc=!0)}measure(e){let i=e.contentDOM,n=window.getComputedStyle(i),r=this.heightOracle,s=n.whiteSpace;this.defaultTextDirection=n.direction=="rtl"?St.RTL:St.LTR;let o=this.heightOracle.mustRefreshForWrapping(s)||this.mustMeasureContent==="refresh",l=i.getBoundingClientRect(),c=o||this.mustMeasureContent||this.contentDOMHeight!=l.height;this.contentDOMHeight=l.height,this.mustMeasureContent=!1;let u=0,d=0;if(l.width&&l.height){let{scaleX:A,scaleY:Q}=PD(i,l);(A>.005&&Math.abs(this.scaleX-A)>.005||Q>.005&&Math.abs(this.scaleY-Q)>.005)&&(this.scaleX=A,this.scaleY=Q,u|=16,o=c=!0)}let p=(parseInt(n.paddingTop)||0)*this.scaleY,g=(parseInt(n.paddingBottom)||0)*this.scaleY;(this.paddingTop!=p||this.paddingBottom!=g)&&(this.paddingTop=p,this.paddingBottom=g,u|=18),this.editorWidth!=e.scrollDOM.clientWidth&&(r.lineWrapping&&(c=!0),this.editorWidth=e.scrollDOM.clientWidth,u|=16);let O=e.scrollDOM.scrollTop*this.scaleY;this.scrollTop!=O&&(this.scrollAnchorHeight=-1,this.scrollTop=O),this.scrolledToBottom=QD(e.scrollDOM);let _=(this.printing?qW:XW)(i,this.paddingTop),b=_.top-this.pixelViewport.top,x=_.bottom-this.pixelViewport.bottom;this.pixelViewport=_;let w=this.pixelViewport.bottom>this.pixelViewport.top&&this.pixelViewport.right>this.pixelViewport.left;if(w!=this.inView&&(this.inView=w,w&&(c=!0)),!this.inView&&!this.scrollTarget&&!ZW(e.dom))return 0;let k=l.width;if((this.contentDOMWidth!=k||this.editorHeight!=e.scrollDOM.clientHeight)&&(this.contentDOMWidth=l.width,this.editorHeight=e.scrollDOM.clientHeight,u|=16),c){let A=e.docView.measureVisibleLineHeights(this.viewport);if(r.mustRefreshForHeights(A)&&(o=!0),o||r.lineWrapping&&Math.abs(k-this.contentDOMWidth)>r.charWidth){let{lineHeight:Q,charWidth:E,textHeight:z}=e.docView.measureTextSize();o=Q>0&&r.refresh(s,Q,E,z,Math.max(5,k/E),A),o&&(e.docView.minWidth=0,u|=16)}b>0&&x>0?d=Math.max(b,x):b<0&&x<0&&(d=Math.min(b,x)),aE();for(let Q of this.viewports){let E=Q.from==this.viewport.from?A:e.docView.measureVisibleLineHeights(Q);this.heightMap=(o?_n.empty().applyChanges(this.stateDeco,at.empty,this.heightOracle,[new kr(0,0,0,e.state.doc.length)]):this.heightMap).updateHeight(r,0,o,new $W(Q.from,E))}ah&&(u|=2)}let T=!this.viewportIsAppropriate(this.viewport,d)||this.scrollTarget&&(this.scrollTarget.range.headthis.viewport.to);return T&&(u&2&&(u|=this.updateScaler()),this.viewport=this.getViewport(d,this.scrollTarget),u|=this.updateForViewport()),(u&2||T)&&this.updateViewportLines(),(this.lineGaps.length||this.viewport.to-this.viewport.from>4e3)&&this.updateLineGaps(this.ensureLineGaps(o?[]:this.lineGaps,e)),u|=this.computeVisibleRanges(),this.mustEnforceCursorAssoc&&(this.mustEnforceCursorAssoc=!1,e.docView.enforceCursorAssoc()),u}get visibleTop(){return this.scaler.fromDOM(this.pixelViewport.top)}get visibleBottom(){return this.scaler.fromDOM(this.pixelViewport.bottom)}getViewport(e,i){let n=.5-Math.max(-.5,Math.min(.5,e/1e3/2)),r=this.heightMap,s=this.heightOracle,{visibleTop:o,visibleBottom:l}=this,c=new im(r.lineAt(o-n*1e3,Ct.ByHeight,s,0,0).from,r.lineAt(l+(1-n)*1e3,Ct.ByHeight,s,0,0).to);if(i){let{head:u}=i.range;if(uc.to){let d=Math.min(this.editorHeight,this.pixelViewport.bottom-this.pixelViewport.top),p=r.lineAt(u,Ct.ByPos,s,0,0),g;i.y=="center"?g=(p.top+p.bottom)/2-d/2:i.y=="start"||i.y=="nearest"&&u=l+Math.max(10,Math.min(n,250)))&&r>o-2*1e3&&s>1,o=r<<1;if(this.defaultTextDirection!=St.LTR&&!n)return[];let l=[],c=(d,p,g,O)=>{if(p-dd&&ww.from>=g.from&&w.to<=g.to&&Math.abs(w.from-d)w.fromk));if(!x){if(pT.from<=p&&T.to>=p)){let T=i.moveToLineBoundary(se.cursor(p),!1,!0).head;T>d&&(p=T)}let w=this.gapSize(g,d,p,O),k=n||w<2e6?w:2e6;x=new A_(d,p,w,k)}l.push(x)},u=d=>{if(d.length2e6)for(let E of e)E.from>=d.from&&E.fromd.from&&c(d.from,O,d,p),_i.draw(this,this.heightOracle.lineWrapping))))}computeVisibleRanges(e){let i=this.stateDeco;this.lineGaps.length&&(i=i.concat(this.lineGapDeco));let n=[];Ge.spans(i,this.viewport.from,this.viewport.to,{span(s,o){n.push({from:s,to:o})},point(){}},20);let r=0;if(n.length!=this.visibleRanges.length)r=12;else for(let s=0;s=this.viewport.from&&e<=this.viewport.to&&this.viewportLines.find(i=>i.from<=e&&i.to>=e)||Ku(this.heightMap.lineAt(e,Ct.ByPos,this.heightOracle,0,0),this.scaler)}lineBlockAtHeight(e){return e>=this.viewportLines[0].top&&e<=this.viewportLines[this.viewportLines.length-1].bottom&&this.viewportLines.find(i=>i.top<=e&&i.bottom>=e)||Ku(this.heightMap.lineAt(this.scaler.fromDOM(e),Ct.ByHeight,this.heightOracle,0,0),this.scaler)}scrollAnchorAt(e){let i=this.lineBlockAtHeight(e+8);return i.from>=this.viewport.from||this.viewportLines[0].top-e>200?i:this.viewportLines[0]}elementAtHeight(e){return Ku(this.heightMap.blockAt(this.scaler.fromDOM(e),this.heightOracle,0,0),this.scaler)}get docHeight(){return this.scaler.toDOM(this.heightMap.height)}get contentHeight(){return this.docHeight+this.paddingTop+this.paddingBottom}}class im{constructor(e,i){this.from=e,this.to=i}}function UW(t,e,i){let n=[],r=t,s=0;return Ge.spans(i,t,e,{span(){},point(o,l){o>r&&(n.push({from:r,to:o}),s+=o-r),r=l}},20),r=1)return e[e.length-1].to;let n=Math.floor(t*i);for(let r=0;;r++){let{from:s,to:o}=e[r],l=o-s;if(n<=l)return s+n;n-=l}}function rm(t,e){let i=0;for(let{from:n,to:r}of t.ranges){if(e<=r){i+=e-n;break}i+=r-n}return i/t.total}function YW(t,e){for(let i of t)if(e(i))return i}const hE={toDOM(t){return t},fromDOM(t){return t},scale:1,eq(t){return t==this}};function uE(t){let e=t.facet(dO).filter(n=>typeof n!="function"),i=t.facet(Nx).filter(n=>typeof n!="function");return i.length&&e.push(Ge.join(i)),e}class Xx{constructor(e,i,n){let r=0,s=0,o=0;this.viewports=n.map(({from:l,to:c})=>{let u=i.lineAt(l,Ct.ByPos,e,0,0).top,d=i.lineAt(c,Ct.ByPos,e,0,0).bottom;return r+=d-u,{from:l,to:c,top:u,bottom:d,domTop:0,domBottom:0}}),this.scale=(7e6-r)/(i.height-r);for(let l of this.viewports)l.domTop=o+(l.top-s)*this.scale,o=l.domBottom=l.domTop+(l.bottom-l.top),s=l.bottom}toDOM(e){for(let i=0,n=0,r=0;;i++){let s=ii.from==e.viewports[n].from&&i.to==e.viewports[n].to):!1}}function Ku(t,e){if(e.scale==1)return t;let i=e.toDOM(t.top),n=e.toDOM(t.bottom);return new Zr(t.from,t.length,i,n-i,Array.isArray(t._content)?t._content.map(r=>Ku(r,e)):t._content)}const sm=Se.define({combine:t=>t.join(" ")}),vb=Se.define({combine:t=>t.indexOf(!0)>-1}),_b=xa.newName(),gB=xa.newName(),OB=xa.newName(),vB={"&light":"."+gB,"&dark":"."+OB};function yb(t,e,i){return new xa(e,{finish(n){return/&/.test(n)?n.replace(/&\w*/,r=>{if(r=="&")return t;if(!i||!i[r])throw new RangeError(`Unsupported selector: ${r}`);return i[r]}):t+" "+n}})}const HW=yb("."+_b,{"&":{position:"relative !important",boxSizing:"border-box","&.cm-focused":{outline:"1px dotted #212121"},display:"flex !important",flexDirection:"column"},".cm-scroller":{display:"flex !important",alignItems:"flex-start !important",fontFamily:"monospace",lineHeight:1.4,height:"100%",overflowX:"auto",position:"relative",zIndex:0,overflowAnchor:"none"},".cm-content":{margin:0,flexGrow:2,flexShrink:0,display:"block",whiteSpace:"pre",wordWrap:"normal",boxSizing:"border-box",minHeight:"100%",padding:"4px 0",outline:"none","&[contenteditable=true]":{WebkitUserModify:"read-write-plaintext-only"}},".cm-lineWrapping":{whiteSpace_fallback:"pre-wrap",whiteSpace:"break-spaces",wordBreak:"break-word",overflowWrap:"anywhere",flexShrink:1},"&light .cm-content":{caretColor:"black"},"&dark .cm-content":{caretColor:"white"},".cm-line":{display:"block",padding:"0 2px 0 6px"},".cm-layer":{position:"absolute",left:0,top:0,contain:"size style","& > *":{position:"absolute"}},"&light .cm-selectionBackground":{background:"#d9d9d9"},"&dark .cm-selectionBackground":{background:"#222"},"&light.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground":{background:"#d7d4f0"},"&dark.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground":{background:"#233"},".cm-cursorLayer":{pointerEvents:"none"},"&.cm-focused > .cm-scroller > .cm-cursorLayer":{animation:"steps(1) cm-blink 1.2s infinite"},"@keyframes cm-blink":{"0%":{},"50%":{opacity:0},"100%":{}},"@keyframes cm-blink2":{"0%":{},"50%":{opacity:0},"100%":{}},".cm-cursor, .cm-dropCursor":{borderLeft:"1.2px solid black",marginLeft:"-0.6px",pointerEvents:"none"},".cm-cursor":{display:"none"},"&dark .cm-cursor":{borderLeftColor:"#ddd"},".cm-dropCursor":{position:"absolute"},"&.cm-focused > .cm-scroller > .cm-cursorLayer .cm-cursor":{display:"block"},".cm-iso":{unicodeBidi:"isolate"},".cm-announced":{position:"fixed",top:"-10000px"},"@media print":{".cm-announced":{display:"none"}},"&light .cm-activeLine":{backgroundColor:"#cceeff44"},"&dark .cm-activeLine":{backgroundColor:"#99eeff33"},"&light .cm-specialChar":{color:"red"},"&dark .cm-specialChar":{color:"#f78"},".cm-gutters":{flexShrink:0,display:"flex",height:"100%",boxSizing:"border-box",zIndex:200},".cm-gutters-before":{insetInlineStart:0},".cm-gutters-after":{insetInlineEnd:0},"&light .cm-gutters":{backgroundColor:"#f5f5f5",color:"#6c6c6c",border:"0px solid #ddd","&.cm-gutters-before":{borderRightWidth:"1px"},"&.cm-gutters-after":{borderLeftWidth:"1px"}},"&dark .cm-gutters":{backgroundColor:"#333338",color:"#ccc"},".cm-gutter":{display:"flex !important",flexDirection:"column",flexShrink:0,boxSizing:"border-box",minHeight:"100%",overflow:"hidden"},".cm-gutterElement":{boxSizing:"border-box"},".cm-lineNumbers .cm-gutterElement":{padding:"0 3px 0 5px",minWidth:"20px",textAlign:"right",whiteSpace:"nowrap"},"&light .cm-activeLineGutter":{backgroundColor:"#e2f2ff"},"&dark .cm-activeLineGutter":{backgroundColor:"#222227"},".cm-panels":{boxSizing:"border-box",position:"sticky",left:0,right:0,zIndex:300},"&light .cm-panels":{backgroundColor:"#f5f5f5",color:"black"},"&light .cm-panels-top":{borderBottom:"1px solid #ddd"},"&light .cm-panels-bottom":{borderTop:"1px solid #ddd"},"&dark .cm-panels":{backgroundColor:"#333338",color:"white"},".cm-dialog":{padding:"2px 19px 4px 6px",position:"relative","& label":{fontSize:"80%"}},".cm-dialog-close":{position:"absolute",top:"3px",right:"4px",backgroundColor:"inherit",border:"none",font:"inherit",fontSize:"14px",padding:"0"},".cm-tab":{display:"inline-block",overflow:"hidden",verticalAlign:"bottom"},".cm-widgetBuffer":{verticalAlign:"text-top",height:"1em",width:0,display:"inline"},".cm-placeholder":{color:"#888",display:"inline-block",verticalAlign:"top",userSelect:"none"},".cm-highlightSpace":{backgroundImage:"radial-gradient(circle at 50% 55%, #aaa 20%, transparent 5%)",backgroundPosition:"center"},".cm-highlightTab":{backgroundImage:`url('data:image/svg+xml,')`,backgroundSize:"auto 100%",backgroundPosition:"right 90%",backgroundRepeat:"no-repeat"},".cm-trailingSpace":{backgroundColor:"#ff332255"},".cm-button":{verticalAlign:"middle",color:"inherit",fontSize:"70%",padding:".2em 1em",borderRadius:"1px"},"&light .cm-button":{backgroundImage:"linear-gradient(#eff1f5, #d9d9df)",border:"1px solid #888","&:active":{backgroundImage:"linear-gradient(#b4b4b4, #d0d3d6)"}},"&dark .cm-button":{backgroundImage:"linear-gradient(#393939, #111)",border:"1px solid #888","&:active":{backgroundImage:"linear-gradient(#111, #333)"}},".cm-textfield":{verticalAlign:"middle",color:"inherit",fontSize:"70%",border:"1px solid silver",padding:".2em .5em"},"&light .cm-textfield":{backgroundColor:"white"},"&dark .cm-textfield":{border:"1px solid #555",backgroundColor:"inherit"}},vB),FW={childList:!0,characterData:!0,subtree:!0,attributes:!0,characterDataOldValue:!0},E_=xe.ie&&xe.ie_version<=11;class GW{constructor(e){this.view=e,this.active=!1,this.editContext=null,this.selectionRange=new Tq,this.selectionChanged=!1,this.delayedFlush=-1,this.resizeTimeout=-1,this.queue=[],this.delayedAndroidKey=null,this.flushingAndroidKey=-1,this.lastChange=0,this.scrollTargets=[],this.intersection=null,this.resizeScroll=null,this.intersecting=!1,this.gapIntersection=null,this.gaps=[],this.printQuery=null,this.parentCheck=-1,this.dom=e.contentDOM,this.observer=new MutationObserver(i=>{for(let n of i)this.queue.push(n);(xe.ie&&xe.ie_version<=11||xe.ios&&e.composing)&&i.some(n=>n.type=="childList"&&n.removedNodes.length||n.type=="characterData"&&n.oldValue.length>n.target.nodeValue.length)?this.flushSoon():this.flush()}),window.EditContext&&xe.android&&e.constructor.EDIT_CONTEXT!==!1&&!(xe.chrome&&xe.chrome_version<126)&&(this.editContext=new JW(e),e.state.facet(uo)&&(e.contentDOM.editContext=this.editContext.editContext)),E_&&(this.onCharData=i=>{this.queue.push({target:i.target,type:"characterData",oldValue:i.prevValue}),this.flushSoon()}),this.onSelectionChange=this.onSelectionChange.bind(this),this.onResize=this.onResize.bind(this),this.onPrint=this.onPrint.bind(this),this.onScroll=this.onScroll.bind(this),window.matchMedia&&(this.printQuery=window.matchMedia("print")),typeof ResizeObserver=="function"&&(this.resizeScroll=new ResizeObserver(()=>{var i;((i=this.view.docView)===null||i===void 0?void 0:i.lastUpdate){this.parentCheck<0&&(this.parentCheck=setTimeout(this.listenForScroll.bind(this),1e3)),i.length>0&&i[i.length-1].intersectionRatio>0!=this.intersecting&&(this.intersecting=!this.intersecting,this.intersecting!=this.view.inView&&this.onScrollChanged(document.createEvent("Event")))},{threshold:[0,.001]}),this.intersection.observe(this.dom),this.gapIntersection=new IntersectionObserver(i=>{i.length>0&&i[i.length-1].intersectionRatio>0&&this.onScrollChanged(document.createEvent("Event"))},{})),this.listenForScroll(),this.readSelectionRange()}onScrollChanged(e){this.view.inputState.runHandlers("scroll",e),this.intersecting&&this.view.measure()}onScroll(e){this.intersecting&&this.flush(!1),this.editContext&&this.view.requestMeasure(this.editContext.measureReq),this.onScrollChanged(e)}onResize(){this.resizeTimeout<0&&(this.resizeTimeout=setTimeout(()=>{this.resizeTimeout=-1,this.view.requestMeasure()},50))}onPrint(e){(e.type=="change"||!e.type)&&!e.matches||(this.view.viewState.printing=!0,this.view.measure(),setTimeout(()=>{this.view.viewState.printing=!1,this.view.requestMeasure()},500))}updateGaps(e){if(this.gapIntersection&&(e.length!=this.gaps.length||this.gaps.some((i,n)=>i!=e[n]))){this.gapIntersection.disconnect();for(let i of e)this.gapIntersection.observe(i);this.gaps=e}}onSelectionChange(e){let i=this.selectionChanged;if(!this.readSelectionRange()||this.delayedAndroidKey)return;let{view:n}=this,r=this.selectionRange;if(n.state.facet(uo)?n.root.activeElement!=this.dom:!pf(this.dom,r))return;let s=r.anchorNode&&n.docView.tile.nearest(r.anchorNode);if(s&&s.isWidget()&&s.widget.ignoreEvent(e)){i||(this.selectionChanged=!1);return}(xe.ie&&xe.ie_version<=11||xe.android&&xe.chrome)&&!n.state.selection.main.empty&&r.focusNode&&gf(r.focusNode,r.focusOffset,r.anchorNode,r.anchorOffset)?this.flushSoon():this.flush(!1)}readSelectionRange(){let{view:e}=this,i=Lf(e.root);if(!i)return!1;let n=xe.safari&&e.root.nodeType==11&&e.root.activeElement==this.dom&&KW(this.view,i)||i;if(!n||this.selectionRange.eq(n))return!1;let r=pf(this.dom,n);return r&&!this.selectionChanged&&e.inputState.lastFocusTime>Date.now()-200&&e.inputState.lastTouchTime{let s=this.delayedAndroidKey;s&&(this.clearDelayedAndroidKey(),this.view.inputState.lastKeyCode=s.keyCode,this.view.inputState.lastKeyTime=Date.now(),!this.flush()&&s.force&&Yc(this.dom,s.key,s.keyCode))};this.flushingAndroidKey=this.view.win.requestAnimationFrame(r)}(!this.delayedAndroidKey||e=="Enter")&&(this.delayedAndroidKey={key:e,keyCode:i,force:this.lastChange{this.delayedFlush=-1,this.flush()}))}forceFlush(){this.delayedFlush>=0&&(this.view.win.cancelAnimationFrame(this.delayedFlush),this.delayedFlush=-1),this.flush()}pendingRecords(){for(let e of this.observer.takeRecords())this.queue.push(e);return this.queue}processRecords(){let e=this.pendingRecords();e.length&&(this.queue=[]);let i=-1,n=-1,r=!1;for(let s of e){let o=this.readMutation(s);o&&(o.typeOver&&(r=!0),i==-1?{from:i,to:n}=o:(i=Math.min(o.from,i),n=Math.max(o.to,n)))}return{from:i,to:n,typeOver:r}}readChange(){let{from:e,to:i,typeOver:n}=this.processRecords(),r=this.selectionChanged&&pf(this.dom,this.selectionRange);if(e<0&&!r)return null;e>-1&&(this.lastChange=Date.now()),this.view.inputState.lastFocusTime=0,this.selectionChanged=!1;let s=new gW(this.view,e,i,n);return this.view.docView.domChanged={newSel:s.newSel?s.newSel.main:null},s}flush(e=!0){if(this.delayedFlush>=0||this.delayedAndroidKey)return!1;e&&this.readSelectionRange();let i=this.readChange();if(!i)return this.view.requestMeasure(),!1;let n=this.view.state,r=sB(this.view,i);return this.view.state==n&&(i.domChanged||i.newSel&&!kg(this.view.state.selection,i.newSel.main))&&this.view.update([]),r}readMutation(e){let i=this.view.docView.tile.nearest(e.target);if(!i||i.isWidget())return null;if(i.markDirty(e.type=="attributes"),e.type=="childList"){let n=fE(i,e.previousSibling||e.target.previousSibling,-1),r=fE(i,e.nextSibling||e.target.nextSibling,1);return{from:n?i.posAfter(n):i.posAtStart,to:r?i.posBefore(r):i.posAtEnd,typeOver:!1}}else return e.type=="characterData"?{from:i.posAtStart,to:i.posAtEnd,typeOver:e.target.nodeValue==e.oldValue}:null}setWindow(e){e!=this.win&&(this.removeWindowListeners(this.win),this.win=e,this.addWindowListeners(this.win))}addWindowListeners(e){e.addEventListener("resize",this.onResize),this.printQuery?this.printQuery.addEventListener?this.printQuery.addEventListener("change",this.onPrint):this.printQuery.addListener(this.onPrint):e.addEventListener("beforeprint",this.onPrint),e.addEventListener("scroll",this.onScroll),e.document.addEventListener("selectionchange",this.onSelectionChange)}removeWindowListeners(e){e.removeEventListener("scroll",this.onScroll),e.removeEventListener("resize",this.onResize),this.printQuery?this.printQuery.removeEventListener?this.printQuery.removeEventListener("change",this.onPrint):this.printQuery.removeListener(this.onPrint):e.removeEventListener("beforeprint",this.onPrint),e.document.removeEventListener("selectionchange",this.onSelectionChange)}update(e){this.editContext&&(this.editContext.update(e),e.startState.facet(uo)!=e.state.facet(uo)&&(e.view.contentDOM.editContext=e.state.facet(uo)?this.editContext.editContext:null))}destroy(){var e,i,n;this.stop(),(e=this.intersection)===null||e===void 0||e.disconnect(),(i=this.gapIntersection)===null||i===void 0||i.disconnect(),(n=this.resizeScroll)===null||n===void 0||n.disconnect();for(let r of this.scrollTargets)r.removeEventListener("scroll",this.onScroll);this.removeWindowListeners(this.win),clearTimeout(this.parentCheck),clearTimeout(this.resizeTimeout),this.win.cancelAnimationFrame(this.delayedFlush),this.win.cancelAnimationFrame(this.flushingAndroidKey),this.editContext&&(this.view.contentDOM.editContext=null,this.editContext.destroy())}}function fE(t,e,i){for(;e;){let n=ui.get(e);if(n&&n.parent==t)return n;let r=e.parentNode;e=r!=t.dom?r:i>0?e.nextSibling:e.previousSibling}return null}function dE(t,e){let i=e.startContainer,n=e.startOffset,r=e.endContainer,s=e.endOffset,o=t.docView.domAtPos(t.state.selection.main.anchor,1);return gf(o.node,o.offset,r,s)&&([i,n,r,s]=[r,s,i,n]),{anchorNode:i,anchorOffset:n,focusNode:r,focusOffset:s}}function KW(t,e){if(e.getComposedRanges){let r=e.getComposedRanges(t.root)[0];if(r)return dE(t,r)}let i=null;function n(r){r.preventDefault(),r.stopImmediatePropagation(),i=r.getTargetRanges()[0]}return t.contentDOM.addEventListener("beforeinput",n,!0),t.dom.ownerDocument.execCommand("indent"),t.contentDOM.removeEventListener("beforeinput",n,!0),i?dE(t,i):null}class JW{constructor(e){this.from=0,this.to=0,this.pendingContextChange=null,this.handlers=Object.create(null),this.composing=null,this.resetRange(e.state);let i=this.editContext=new window.EditContext({text:e.state.doc.sliceString(this.from,this.to),selectionStart:this.toContextPos(Math.max(this.from,Math.min(this.to,e.state.selection.main.anchor))),selectionEnd:this.toContextPos(e.state.selection.main.head)});this.handlers.textupdate=n=>{let r=e.state.selection.main,{anchor:s,head:o}=r,l=this.toEditorPos(n.updateRangeStart),c=this.toEditorPos(n.updateRangeEnd);e.inputState.composing>=0&&!this.composing&&(this.composing={contextBase:n.updateRangeStart,editorBase:l,drifted:!1});let u=c-l>n.text.length;l==this.from&&sthis.to&&(c=s);let d=oB(e.state.sliceDoc(l,c),n.text,(u?r.from:r.to)-l,u?"end":null);if(!d){let g=se.single(this.toEditorPos(n.selectionStart),this.toEditorPos(n.selectionEnd));kg(g,r)||e.dispatch({selection:g,userEvent:"select"});return}let p={from:d.from+l,to:d.toA+l,insert:at.of(n.text.slice(d.from,d.toB).split(` -`))};if((xe.mac||xe.android)&&p.from==o-1&&/^\. ?$/.test(n.text)&&e.contentDOM.getAttribute("autocorrect")=="off"&&(p={from:l,to:c,insert:at.of([n.text.replace("."," ")])}),this.pendingContextChange=p,!e.state.readOnly){let g=this.to-this.from+(p.to-p.from+p.insert.length);Ix(e,p,se.single(this.toEditorPos(n.selectionStart,g),this.toEditorPos(n.selectionEnd,g)))}this.pendingContextChange&&(this.revertPending(e.state),this.setSelection(e.state)),p.from=0&&!/[\\p{Alphabetic}\\p{Number}_]/.test(i.text.slice(Math.max(0,n.updateRangeStart-1),Math.min(i.text.length,n.updateRangeStart+1)))&&this.handlers.compositionend(n)},this.handlers.characterboundsupdate=n=>{let r=[],s=null;for(let o=this.toEditorPos(n.rangeStart),l=this.toEditorPos(n.rangeEnd);o{let r=[];for(let s of n.getTextFormats()){let o=s.underlineStyle,l=s.underlineThickness;if(!/none/i.test(o)&&!/none/i.test(l)){let c=this.toEditorPos(s.rangeStart),u=this.toEditorPos(s.rangeEnd);if(c{e.inputState.composing<0&&(e.inputState.composing=0,e.inputState.compositionFirstChange=!0)},this.handlers.compositionend=()=>{if(e.inputState.composing=-1,e.inputState.compositionFirstChange=null,this.composing){let{drifted:n}=this.composing;this.composing=null,n&&this.reset(e.state)}};for(let n in this.handlers)i.addEventListener(n,this.handlers[n]);this.measureReq={read:n=>{this.editContext.updateControlBounds(n.contentDOM.getBoundingClientRect());let r=Lf(n.root);r&&r.rangeCount&&this.editContext.updateSelectionBounds(r.getRangeAt(0).getBoundingClientRect())}}}applyEdits(e){let i=0,n=!1,r=this.pendingContextChange;return e.changes.iterChanges((s,o,l,c,u)=>{if(n)return;let d=u.length-(o-s);if(r&&o>=r.to)if(r.from==s&&r.to==o&&r.insert.eq(u)){r=this.pendingContextChange=null,i+=d,this.to+=d;return}else r=null,this.revertPending(e.state);if(s+=i,o+=i,o<=this.from)this.from+=d,this.to+=d;else if(sthis.to||this.to-this.from+u.length>3e4){n=!0;return}this.editContext.updateText(this.toContextPos(s),this.toContextPos(o),u.toString()),this.to+=d}i+=d}),r&&!n&&this.revertPending(e.state),!n}update(e){let i=this.pendingContextChange,n=e.startState.selection.main;this.composing&&(this.composing.drifted||!e.changes.touchesRange(n.from,n.to)&&e.transactions.some(r=>!r.isUserEvent("input.type")&&r.changes.touchesRange(this.from,this.to)))?(this.composing.drifted=!0,this.composing.editorBase=e.changes.mapPos(this.composing.editorBase)):!this.applyEdits(e)||!this.rangeIsValid(e.state)?(this.pendingContextChange=null,this.reset(e.state)):(e.docChanged||e.selectionSet||i)&&this.setSelection(e.state),(e.geometryChanged||e.docChanged||e.selectionSet)&&e.view.requestMeasure(this.measureReq)}resetRange(e){let{head:i}=e.selection.main;this.from=Math.max(0,i-1e4),this.to=Math.min(e.doc.length,i+1e4)}reset(e){this.resetRange(e),this.editContext.updateText(0,this.editContext.text.length,e.doc.sliceString(this.from,this.to)),this.setSelection(e)}revertPending(e){let i=this.pendingContextChange;this.pendingContextChange=null,this.editContext.updateText(this.toContextPos(i.from),this.toContextPos(i.from+i.insert.length),e.doc.sliceString(i.from,i.to))}setSelection(e){let{main:i}=e.selection,n=this.toContextPos(Math.max(this.from,Math.min(this.to,i.anchor))),r=this.toContextPos(i.head);(this.editContext.selectionStart!=n||this.editContext.selectionEnd!=r)&&this.editContext.updateSelection(n,r)}rangeIsValid(e){let{head:i}=e.selection.main;return!(this.from>0&&i-this.from<500||this.to1e4*3)}toEditorPos(e,i=this.to-this.from){e=Math.min(e,i);let n=this.composing;return n&&n.drifted?n.editorBase+(e-n.contextBase):e+this.from}toContextPos(e){let i=this.composing;return i&&i.drifted?i.contextBase+(e-i.editorBase):e-this.from}destroy(){for(let e in this.handlers)this.editContext.removeEventListener(e,this.handlers[e])}}class ve{get state(){return this.viewState.state}get viewport(){return this.viewState.viewport}get visibleRanges(){return this.viewState.visibleRanges}get inView(){return this.viewState.inView}get composing(){return!!this.inputState&&this.inputState.composing>0}get compositionStarted(){return!!this.inputState&&this.inputState.composing>=0}get root(){return this._root}get win(){return this.dom.ownerDocument.defaultView||window}constructor(e={}){var i;this.plugins=[],this.pluginMap=new Map,this.editorAttrs={},this.contentAttrs={},this.bidiCache=[],this.destroyed=!1,this.updateState=2,this.measureScheduled=-1,this.measureRequests=[],this.contentDOM=document.createElement("div"),this.scrollDOM=document.createElement("div"),this.scrollDOM.tabIndex=-1,this.scrollDOM.className="cm-scroller",this.scrollDOM.appendChild(this.contentDOM),this.announceDOM=document.createElement("div"),this.announceDOM.className="cm-announced",this.announceDOM.setAttribute("aria-live","polite"),this.dom=document.createElement("div"),this.dom.appendChild(this.announceDOM),this.dom.appendChild(this.scrollDOM),e.parent&&e.parent.appendChild(this.dom);let{dispatch:n}=e;this.dispatchTransactions=e.dispatchTransactions||n&&(r=>r.forEach(s=>n(s,this)))||(r=>this.update(r)),this.dispatch=this.dispatch.bind(this),this._root=e.root||Aq(e.parent)||document,this.viewState=new cE(e.state||et.create(e)),e.scrollTo&&e.scrollTo.is(Jp)&&(this.viewState.scrollTarget=e.scrollTo.value.clip(this.viewState.state)),this.plugins=this.state.facet(Nc).map(r=>new x_(r));for(let r of this.plugins)r.update(this);this.observer=new GW(this),this.inputState=new yW(this),this.inputState.ensureHandlers(this.plugins),this.docView=new FA(this),this.mountStyles(),this.updateAttrs(),this.updateState=0,this.requestMeasure(),!((i=document.fonts)===null||i===void 0)&&i.ready&&document.fonts.ready.then(()=>{this.viewState.mustMeasureContent="refresh",this.requestMeasure()})}dispatch(...e){let i=e.length==1&&e[0]instanceof hi?e:e.length==1&&Array.isArray(e[0])?e[0]:[this.state.update(...e)];this.dispatchTransactions(i,this)}update(e){if(this.updateState!=0)throw new Error("Calls to EditorView.update are not allowed while an update is in progress");let i=!1,n=!1,r,s=this.state;for(let g of e){if(g.startState!=s)throw new RangeError("Trying to update state with a transaction that doesn't start from the previous state.");s=g.state}if(this.destroyed){this.viewState.state=s;return}let o=this.hasFocus,l=0,c=null;e.some(g=>g.annotation(fB))?(this.inputState.notifiedFocused=o,l=1):o!=this.inputState.notifiedFocused&&(this.inputState.notifiedFocused=o,c=dB(s,o),c||(l=1));let u=this.observer.delayedAndroidKey,d=null;if(u?(this.observer.clearDelayedAndroidKey(),d=this.observer.readChange(),(d&&!this.state.doc.eq(s.doc)||!this.state.selection.eq(s.selection))&&(d=null)):this.observer.clear(),s.facet(et.phrases)!=this.state.facet(et.phrases))return this.setState(s);r=xg.create(this,s,e),r.flags|=l;let p=this.viewState.scrollTarget;try{this.updateState=2;for(let g of e){if(p&&(p=p.map(g.changes)),g.scrollIntoView){let{main:O}=g.state.selection;p=new Hc(O.empty?O:se.cursor(O.head,O.head>O.anchor?-1:1))}for(let O of g.effects)O.is(Jp)&&(p=O.value.clip(this.state))}this.viewState.update(r,p),this.bidiCache=Ag.update(this.bidiCache,r.changes),r.empty||(this.updatePlugins(r),this.inputState.update(r)),i=this.docView.update(r),this.state.facet(Fu)!=this.styleModules&&this.mountStyles(),n=this.updateAttrs(),this.showAnnouncements(e),this.docView.updateSelection(i,e.some(g=>g.isUserEvent("select.pointer")))}finally{this.updateState=0}if(r.startState.facet(sm)!=r.state.facet(sm)&&(this.viewState.mustMeasureContent=!0),(i||n||p||this.viewState.mustEnforceCursorAssoc||this.viewState.mustMeasureContent)&&this.requestMeasure(),i&&this.docViewUpdate(),!r.empty)for(let g of this.state.facet(db))try{g(r)}catch(O){$n(this.state,O,"update listener")}(c||d)&&Promise.resolve().then(()=>{c&&this.state==c.startState&&this.dispatch(c),d&&!sB(this,d)&&u.force&&Yc(this.contentDOM,u.key,u.keyCode)})}setState(e){if(this.updateState!=0)throw new Error("Calls to EditorView.setState are not allowed while an update is in progress");if(this.destroyed){this.viewState.state=e;return}this.updateState=2;let i=this.hasFocus;try{for(let n of this.plugins)n.destroy(this);this.viewState=new cE(e),this.plugins=e.facet(Nc).map(n=>new x_(n)),this.pluginMap.clear();for(let n of this.plugins)n.update(this);this.docView.destroy(),this.docView=new FA(this),this.inputState.ensureHandlers(this.plugins),this.mountStyles(),this.updateAttrs(),this.bidiCache=[]}finally{this.updateState=0}i&&this.focus(),this.requestMeasure()}updatePlugins(e){let i=e.startState.facet(Nc),n=e.state.facet(Nc);if(i!=n){let r=[];for(let s of n){let o=i.indexOf(s);if(o<0)r.push(new x_(s));else{let l=this.plugins[o];l.mustUpdate=e,r.push(l)}}for(let s of this.plugins)s.mustUpdate!=e&&s.destroy(this);this.plugins=r,this.pluginMap.clear()}else for(let r of this.plugins)r.mustUpdate=e;for(let r=0;r-1&&this.win.cancelAnimationFrame(this.measureScheduled),this.observer.delayedAndroidKey){this.measureScheduled=-1,this.requestMeasure();return}this.measureScheduled=0,e&&this.observer.forceFlush();let i=null,n=this.scrollDOM,r=n.scrollTop*this.scaleY,{scrollAnchorPos:s,scrollAnchorHeight:o}=this.viewState;Math.abs(r-this.viewState.scrollTop)>1&&(o=-1),this.viewState.scrollAnchorHeight=-1;try{for(let l=0;;l++){if(o<0)if(QD(n))s=-1,o=this.viewState.heightMap.height;else{let O=this.viewState.scrollAnchorAt(r);s=O.from,o=O.top}this.updateState=1;let c=this.viewState.measure(this);if(!c&&!this.measureRequests.length&&this.viewState.scrollTarget==null)break;if(l>5){console.warn(this.measureRequests.length?"Measure loop restarted more than 5 times":"Viewport failed to stabilize");break}let u=[];c&4||([this.measureRequests,u]=[u,this.measureRequests]);let d=u.map(O=>{try{return O.read(this)}catch(_){return $n(this.state,_),pE}}),p=xg.create(this,this.state,[]),g=!1;p.flags|=c,i?i.flags|=c:i=p,this.updateState=2,p.empty||(this.updatePlugins(p),this.inputState.update(p),this.updateAttrs(),g=this.docView.update(p),g&&this.docViewUpdate());for(let O=0;O1||_<-1){r=r+_,n.scrollTop=r/this.scaleY,o=-1;continue}}break}}}finally{this.updateState=0,this.measureScheduled=-1}if(i&&!i.empty)for(let l of this.state.facet(db))l(i)}get themeClasses(){return _b+" "+(this.state.facet(vb)?OB:gB)+" "+this.state.facet(sm)}updateAttrs(){let e=mE(this,GD,{class:"cm-editor"+(this.hasFocus?" cm-focused ":" ")+this.themeClasses}),i={spellcheck:"false",autocorrect:"off",autocapitalize:"off",writingsuggestions:"false",translate:"no",contenteditable:this.state.facet(uo)?"true":"false",class:"cm-content",style:`${xe.tabSize}: ${this.state.tabSize}`,role:"textbox","aria-multiline":"true"};this.state.readOnly&&(i["aria-readonly"]="true"),mE(this,zx,i);let n=this.observer.ignore(()=>{let r=ZA(this.contentDOM,this.contentAttrs,i),s=ZA(this.dom,this.editorAttrs,e);return r||s});return this.editorAttrs=e,this.contentAttrs=i,n}showAnnouncements(e){let i=!0;for(let n of e)for(let r of n.effects)if(r.is(ve.announce)){i&&(this.announceDOM.textContent=""),i=!1;let s=this.announceDOM.appendChild(document.createElement("div"));s.textContent=r.value}}mountStyles(){this.styleModules=this.state.facet(Fu);let e=this.state.facet(ve.cspNonce);xa.mount(this.root,this.styleModules.concat(HW).reverse(),e?{nonce:e}:void 0)}readMeasured(){if(this.updateState==2)throw new Error("Reading the editor layout isn't allowed during an update");this.updateState==0&&this.measureScheduled>-1&&this.measure(!1)}requestMeasure(e){if(this.measureScheduled<0&&(this.measureScheduled=this.win.requestAnimationFrame(()=>this.measure())),e){if(this.measureRequests.indexOf(e)>-1)return;if(e.key!=null){for(let i=0;in.plugin==e)||null),i&&i.update(this).value}get documentTop(){return this.contentDOM.getBoundingClientRect().top+this.viewState.paddingTop}get documentPadding(){return{top:this.viewState.paddingTop,bottom:this.viewState.paddingBottom}}get scaleX(){return this.viewState.scaleX}get scaleY(){return this.viewState.scaleY}elementAtHeight(e){return this.readMeasured(),this.viewState.elementAtHeight(e)}lineBlockAtHeight(e){return this.readMeasured(),this.viewState.lineBlockAtHeight(e)}get viewportLineBlocks(){return this.viewState.viewportLines}lineBlockAt(e){return this.viewState.lineBlockAt(e)}get contentHeight(){return this.viewState.contentHeight}moveByChar(e,i,n){return T_(this,e,GA(this,e,i,n))}moveByGroup(e,i){return T_(this,e,GA(this,e,i,n=>hW(this,e.head,n)))}visualLineSide(e,i){let n=this.bidiSpans(e),r=this.textDirectionAt(e.from),s=n[i?n.length-1:0];return se.cursor(s.side(i,r)+e.from,s.forward(!i,r)?1:-1)}moveToLineBoundary(e,i,n=!0){return cW(this,e,i,n)}moveVertically(e,i,n){return T_(this,e,uW(this,e,i,n))}domAtPos(e,i=1){return this.docView.domAtPos(e,i)}posAtDOM(e,i=0){return this.docView.posFromDOM(e,i)}posAtCoords(e,i=!0){this.readMeasured();let n=gb(this,e,i);return n&&n.pos}posAndSideAtCoords(e,i=!0){return this.readMeasured(),gb(this,e,i)}coordsAtPos(e,i=1){this.readMeasured();let n=this.docView.coordsAt(e,i);if(!n||n.left==n.right)return n;let r=this.state.doc.lineAt(e),s=this.bidiSpans(r),o=s[_s.find(s,e-r.from,-1,i)];return Df(n,o.dir==St.LTR==i>0)}coordsForChar(e){return this.readMeasured(),this.docView.coordsForChar(e)}get defaultCharacterWidth(){return this.viewState.heightOracle.charWidth}get defaultLineHeight(){return this.viewState.heightOracle.lineHeight}get textDirection(){return this.viewState.defaultTextDirection}textDirectionAt(e){return!this.state.facet(UD)||ethis.viewport.to?this.textDirection:(this.readMeasured(),this.docView.textDirectionAt(e))}get lineWrapping(){return this.viewState.heightOracle.lineWrapping}bidiSpans(e){if(e.length>eU)return ND(e.length);let i=this.textDirectionAt(e.from),n;for(let s of this.bidiCache)if(s.from==e.from&&s.dir==i&&(s.fresh||zD(s.isolates,n=UA(this,e))))return s.order;n||(n=UA(this,e));let r=Bq(e.text,i,n);return this.bidiCache.push(new Ag(e.from,e.to,i,n,!0,r)),r}get hasFocus(){var e;return(this.dom.ownerDocument.hasFocus()||xe.safari&&((e=this.inputState)===null||e===void 0?void 0:e.lastContextMenu)>Date.now()-3e4)&&this.root.activeElement==this.contentDOM}focus(){this.observer.ignore(()=>{RD(this.contentDOM),this.docView.updateSelection()})}setRoot(e){this._root!=e&&(this._root=e,this.observer.setWindow((e.nodeType==9?e:e.ownerDocument).defaultView||window),this.mountStyles())}destroy(){this.root.activeElement==this.contentDOM&&this.contentDOM.blur();for(let e of this.plugins)e.destroy(this);this.plugins=[],this.inputState.destroy(),this.docView.destroy(),this.dom.remove(),this.observer.destroy(),this.measureScheduled>-1&&this.win.cancelAnimationFrame(this.measureScheduled),this.destroyed=!0}static scrollIntoView(e,i={}){return Jp.of(new Hc(typeof e=="number"?se.cursor(e):e,i.y,i.x,i.yMargin,i.xMargin))}scrollSnapshot(){let{scrollTop:e,scrollLeft:i}=this.scrollDOM,n=this.viewState.scrollAnchorAt(e);return Jp.of(new Hc(se.cursor(n.from),"start","start",n.top-e,i,!0))}setTabFocusMode(e){e==null?this.inputState.tabFocusMode=this.inputState.tabFocusMode<0?0:-1:typeof e=="boolean"?this.inputState.tabFocusMode=e?0:-1:this.inputState.tabFocusMode!=0&&(this.inputState.tabFocusMode=Date.now()+e)}static domEventHandlers(e){return Jt.define(()=>({}),{eventHandlers:e})}static domEventObservers(e){return Jt.define(()=>({}),{eventObservers:e})}static theme(e,i){let n=xa.newName(),r=[sm.of(n),Fu.of(yb(`.${n}`,e))];return i&&i.dark&&r.push(vb.of(!0)),r}static baseTheme(e){return So.lowest(Fu.of(yb("."+_b,e,vB)))}static findFromDOM(e){var i;let n=e.querySelector(".cm-content"),r=n&&ui.get(n)||ui.get(e);return((i=r==null?void 0:r.root)===null||i===void 0?void 0:i.view)||null}}ve.styleModule=Fu;ve.inputHandler=qD;ve.clipboardInputFilter=Bx;ve.clipboardOutputFilter=$x;ve.scrollHandler=HD;ve.focusChangeEffect=WD;ve.perLineTextDirection=UD;ve.exceptionSink=ZD;ve.updateListener=db;ve.editable=uo;ve.mouseSelectionStyle=XD;ve.dragMovesSelection=VD;ve.clickAddsSelectionRange=ID;ve.decorations=dO;ve.blockWrappers=KD;ve.outerDecorations=Nx;ve.atomicRanges=fd;ve.bidiIsolatedRanges=JD;ve.scrollMargins=eB;ve.darkTheme=vb;ve.cspNonce=Se.define({combine:t=>t.length?t[0]:""});ve.contentAttributes=zx;ve.editorAttributes=GD;ve.lineWrapping=ve.contentAttributes.of({class:"cm-lineWrapping"});ve.announce=ze.define();const eU=4096,pE={};class Ag{constructor(e,i,n,r,s,o){this.from=e,this.to=i,this.dir=n,this.isolates=r,this.fresh=s,this.order=o}static update(e,i){if(i.empty&&!e.some(s=>s.fresh))return e;let n=[],r=e.length?e[e.length-1].dir:St.LTR;for(let s=Math.max(0,e.length-10);s=0;r--){let s=n[r],o=typeof s=="function"?s(t):s;o&&Qx(o,i)}return i}const tU=xe.mac?"mac":xe.windows?"win":xe.linux?"linux":"key";function iU(t,e){const i=t.split(/-(?!$)/);let n=i[i.length-1];n=="Space"&&(n=" ");let r,s,o,l;for(let c=0;cn.concat(r),[]))),i}function rU(t,e,i){return yB(_B(t.state),e,t,i)}let ma=null;const sU=4e3;function oU(t,e=tU){let i=Object.create(null),n=Object.create(null),r=(o,l)=>{let c=n[o];if(c==null)n[o]=l;else if(c!=l)throw new Error("Key binding "+o+" is used both as a regular binding and as a multi-stroke prefix")},s=(o,l,c,u,d)=>{var p,g;let O=i[o]||(i[o]=Object.create(null)),_=l.split(/ (?!$)/).map(w=>iU(w,e));for(let w=1;w<_.length;w++){let k=_.slice(0,w).join(" ");r(k,!0),O[k]||(O[k]={preventDefault:!0,stopPropagation:!1,run:[T=>{let A=ma={view:T,prefix:k,scope:o};return setTimeout(()=>{ma==A&&(ma=null)},sU),!0}]})}let b=_.join(" ");r(b,!1);let x=O[b]||(O[b]={preventDefault:!1,stopPropagation:!1,run:((g=(p=O._any)===null||p===void 0?void 0:p.run)===null||g===void 0?void 0:g.slice())||[]});c&&x.run.push(c),u&&(x.preventDefault=!0),d&&(x.stopPropagation=!0)};for(let o of t){let l=o.scope?o.scope.split(" "):["editor"];if(o.any)for(let u of l){let d=i[u]||(i[u]=Object.create(null));d._any||(d._any={preventDefault:!1,stopPropagation:!1,run:[]});let{any:p}=o;for(let g in d)d[g].run.push(O=>p(O,bb))}let c=o[e]||o.key;if(c)for(let u of l)s(u,c,o.run,o.preventDefault,o.stopPropagation),o.shift&&s(u,"Shift-"+c,o.shift,o.preventDefault,o.stopPropagation)}return i}let bb=null;function yB(t,e,i,n){bb=e;let r=_q(e),s=Ln(r,0),o=gs(s)==r.length&&r!=" ",l="",c=!1,u=!1,d=!1;ma&&ma.view==i&&ma.scope==n&&(l=ma.prefix+" ",lB.indexOf(e.keyCode)<0&&(u=!0,ma=null));let p=new Set,g=x=>{if(x){for(let w of x.run)if(!p.has(w)&&(p.add(w),w(i)))return x.stopPropagation&&(d=!0),!0;x.preventDefault&&(x.stopPropagation&&(d=!0),u=!0)}return!1},O=t[n],_,b;return O&&(g(O[l+om(r,e,!o)])?c=!0:o&&(e.altKey||e.metaKey||e.ctrlKey)&&!(xe.windows&&e.ctrlKey&&e.altKey)&&!(xe.mac&&e.altKey&&!(e.ctrlKey||e.metaKey))&&(_=wa[e.keyCode])&&_!=r?(g(O[l+om(_,e,!0)])||e.shiftKey&&(b=Rf[e.keyCode])!=r&&b!=_&&g(O[l+om(b,e,!1)]))&&(c=!0):o&&e.shiftKey&&g(O[l+om(r,e,!0)])&&(c=!0),!c&&g(O._any)&&(c=!0)),u&&(c=!0),c&&d&&e.stopPropagation(),bb=null,c}class dd{constructor(e,i,n,r,s){this.className=e,this.left=i,this.top=n,this.width=r,this.height=s}draw(){let e=document.createElement("div");return e.className=this.className,this.adjust(e),e}update(e,i){return i.className!=this.className?!1:(this.adjust(e),!0)}adjust(e){e.style.left=this.left+"px",e.style.top=this.top+"px",this.width!=null&&(e.style.width=this.width+"px"),e.style.height=this.height+"px"}eq(e){return this.left==e.left&&this.top==e.top&&this.width==e.width&&this.height==e.height&&this.className==e.className}static forRange(e,i,n){if(n.empty){let r=e.coordsAtPos(n.head,n.assoc||1);if(!r)return[];let s=bB(e);return[new dd(i,r.left-s.left,r.top-s.top,null,r.bottom-r.top)]}else return aU(e,i,n)}}function bB(t){let e=t.scrollDOM.getBoundingClientRect();return{left:(t.textDirection==St.LTR?e.left:e.right-t.scrollDOM.clientWidth*t.scaleX)-t.scrollDOM.scrollLeft*t.scaleX,top:e.top-t.scrollDOM.scrollTop*t.scaleY}}function OE(t,e,i,n){let r=t.coordsAtPos(e,i*2);if(!r)return n;let s=t.dom.getBoundingClientRect(),o=(r.top+r.bottom)/2,l=t.posAtCoords({x:s.left+1,y:o}),c=t.posAtCoords({x:s.right-1,y:o});return l==null||c==null?n:{from:Math.max(n.from,Math.min(l,c)),to:Math.min(n.to,Math.max(l,c))}}function aU(t,e,i){if(i.to<=t.viewport.from||i.from>=t.viewport.to)return[];let n=Math.max(i.from,t.viewport.from),r=Math.min(i.to,t.viewport.to),s=t.textDirection==St.LTR,o=t.contentDOM,l=o.getBoundingClientRect(),c=bB(t),u=o.querySelector(".cm-line"),d=u&&window.getComputedStyle(u),p=l.left+(d?parseInt(d.paddingLeft)+Math.min(0,parseInt(d.textIndent)):0),g=l.right-(d?parseInt(d.paddingRight):0),O=mb(t,n,1),_=mb(t,r,-1),b=O.type==Ki.Text?O:null,x=_.type==Ki.Text?_:null;if(b&&(t.lineWrapping||O.widgetLineBreaks)&&(b=OE(t,n,1,b)),x&&(t.lineWrapping||_.widgetLineBreaks)&&(x=OE(t,r,-1,x)),b&&x&&b.from==x.from&&b.to==x.to)return k(T(i.from,i.to,b));{let Q=b?T(i.from,null,b):A(O,!1),E=x?T(null,i.to,x):A(_,!0),z=[];return(b||O).to<(x||_).from-(b&&x?1:0)||O.widgetLineBreaks>1&&Q.bottom+t.defaultLineHeight/2R&&j.from=D)break;M>$&&U(Math.max(F,$),Q==null&&F<=R,Math.min(M,D),E==null&&M>=B,H.dir)}if($=X.to+1,$>=D)break}return J.length==0&&U(R,Q==null,B,E==null,t.textDirection),{top:N,bottom:q,horizontal:J}}function A(Q,E){let z=l.top+(E?Q.top:Q.bottom);return{top:z,bottom:z,horizontal:[]}}}function lU(t,e){return t.constructor==e.constructor&&t.eq(e)}class cU{constructor(e,i){this.view=e,this.layer=i,this.drawn=[],this.scaleX=1,this.scaleY=1,this.measureReq={read:this.measure.bind(this),write:this.draw.bind(this)},this.dom=e.scrollDOM.appendChild(document.createElement("div")),this.dom.classList.add("cm-layer"),i.above&&this.dom.classList.add("cm-layer-above"),i.class&&this.dom.classList.add(i.class),this.scale(),this.dom.setAttribute("aria-hidden","true"),this.setOrder(e.state),e.requestMeasure(this.measureReq),i.mount&&i.mount(this.dom,e)}update(e){e.startState.facet(Zm)!=e.state.facet(Zm)&&this.setOrder(e.state),(this.layer.update(e,this.dom)||e.geometryChanged)&&(this.scale(),e.view.requestMeasure(this.measureReq))}docViewUpdate(e){this.layer.updateOnDocViewUpdate!==!1&&e.requestMeasure(this.measureReq)}setOrder(e){let i=0,n=e.facet(Zm);for(;i!lU(i,this.drawn[n]))){let i=this.dom.firstChild,n=0;for(let r of e)r.update&&i&&r.constructor&&this.drawn[n].constructor&&r.update(i,this.drawn[n])?(i=i.nextSibling,n++):this.dom.insertBefore(r.draw(),i);for(;i;){let r=i.nextSibling;i.remove(),i=r}this.drawn=e,xe.safari&&xe.safari_version>=26&&(this.dom.style.display=this.dom.firstChild?"":"none")}}destroy(){this.layer.destroy&&this.layer.destroy(this.dom,this.view),this.dom.remove()}}const Zm=Se.define();function SB(t){return[Jt.define(e=>new cU(e,t)),Zm.of(t)]}const $f=Se.define({combine(t){return Qs(t,{cursorBlinkRate:1200,drawRangeCursor:!0},{cursorBlinkRate:(e,i)=>Math.min(e,i),drawRangeCursor:(e,i)=>e||i})}});function hU(t={}){return[$f.of(t),uU,fU,dU,YD.of(!0)]}function xB(t){return t.startState.facet($f)!=t.state.facet($f)}const uU=SB({above:!0,markers(t){let{state:e}=t,i=e.facet($f),n=[];for(let r of e.selection.ranges){let s=r==e.selection.main;if(r.empty||i.drawRangeCursor){let o=s?"cm-cursor cm-cursor-primary":"cm-cursor cm-cursor-secondary",l=r.empty?r:se.cursor(r.head,r.head>r.anchor?-1:1);for(let c of dd.forRange(t,o,l))n.push(c)}}return n},update(t,e){t.transactions.some(n=>n.selection)&&(e.style.animationName=e.style.animationName=="cm-blink"?"cm-blink2":"cm-blink");let i=xB(t);return i&&vE(t.state,e),t.docChanged||t.selectionSet||i},mount(t,e){vE(e.state,t)},class:"cm-cursorLayer"});function vE(t,e){e.style.animationDuration=t.facet($f).cursorBlinkRate+"ms"}const fU=SB({above:!1,markers(t){return t.state.selection.ranges.map(e=>e.empty?[]:dd.forRange(t,"cm-selectionBackground",e)).reduce((e,i)=>e.concat(i))},update(t,e){return t.docChanged||t.selectionSet||t.viewportChanged||xB(t)},class:"cm-selectionLayer"}),dU=So.highest(ve.theme({".cm-line":{"& ::selection, &::selection":{backgroundColor:"transparent !important"},caretColor:"transparent !important"},".cm-content":{caretColor:"transparent !important","& :focus":{caretColor:"initial !important","&::selection, & ::selection":{backgroundColor:"Highlight !important"}}}})),wB=ze.define({map(t,e){return t==null?null:e.mapPos(t)}}),Ju=Bi.define({create(){return null},update(t,e){return t!=null&&(t=e.changes.mapPos(t)),e.effects.reduce((i,n)=>n.is(wB)?n.value:i,t)}}),pU=Jt.fromClass(class{constructor(t){this.view=t,this.cursor=null,this.measureReq={read:this.readPos.bind(this),write:this.drawCursor.bind(this)}}update(t){var e;let i=t.state.field(Ju);i==null?this.cursor!=null&&((e=this.cursor)===null||e===void 0||e.remove(),this.cursor=null):(this.cursor||(this.cursor=this.view.scrollDOM.appendChild(document.createElement("div")),this.cursor.className="cm-dropCursor"),(t.startState.field(Ju)!=i||t.docChanged||t.geometryChanged)&&this.view.requestMeasure(this.measureReq))}readPos(){let{view:t}=this,e=t.state.field(Ju),i=e!=null&&t.coordsAtPos(e);if(!i)return null;let n=t.scrollDOM.getBoundingClientRect();return{left:i.left-n.left+t.scrollDOM.scrollLeft*t.scaleX,top:i.top-n.top+t.scrollDOM.scrollTop*t.scaleY,height:i.bottom-i.top}}drawCursor(t){if(this.cursor){let{scaleX:e,scaleY:i}=this.view;t?(this.cursor.style.left=t.left/e+"px",this.cursor.style.top=t.top/i+"px",this.cursor.style.height=t.height/i+"px"):this.cursor.style.left="-100000px"}}destroy(){this.cursor&&this.cursor.remove()}setDropPos(t){this.view.state.field(Ju)!=t&&this.view.dispatch({effects:wB.of(t)})}},{eventObservers:{dragover(t){this.setDropPos(this.view.posAtCoords({x:t.clientX,y:t.clientY}))},dragleave(t){(t.target==this.view.contentDOM||!this.view.contentDOM.contains(t.relatedTarget))&&this.setDropPos(null)},dragend(){this.setDropPos(null)},drop(){this.setDropPos(null)}}});function mU(){return[Ju,pU]}function _E(t,e,i,n,r){e.lastIndex=0;for(let s=t.iterRange(i,n),o=i,l;!s.next().done;o+=s.value.length)if(!s.lineBreak)for(;l=e.exec(s.value);)r(o+l.index,l)}function gU(t,e){let i=t.visibleRanges;if(i.length==1&&i[0].from==t.viewport.from&&i[0].to==t.viewport.to)return i;let n=[];for(let{from:r,to:s}of i)r=Math.max(t.state.doc.lineAt(r).from,r-e),s=Math.min(t.state.doc.lineAt(s).to,s+e),n.length&&n[n.length-1].to>=r?n[n.length-1].to=s:n.push({from:r,to:s});return n}class OU{constructor(e){const{regexp:i,decoration:n,decorate:r,boundary:s,maxLength:o=1e3}=e;if(!i.global)throw new RangeError("The regular expression given to MatchDecorator should have its 'g' flag set");if(this.regexp=i,r)this.addMatch=(l,c,u,d)=>r(d,u,u+l[0].length,l,c);else if(typeof n=="function")this.addMatch=(l,c,u,d)=>{let p=n(l,c,u);p&&d(u,u+l[0].length,p)};else if(n)this.addMatch=(l,c,u,d)=>d(u,u+l[0].length,n);else throw new RangeError("Either 'decorate' or 'decoration' should be provided to MatchDecorator");this.boundary=s,this.maxLength=o}createDeco(e){let i=new _o,n=i.add.bind(i);for(let{from:r,to:s}of gU(e,this.maxLength))_E(e.state.doc,this.regexp,r,s,(o,l)=>this.addMatch(l,e,o,n));return i.finish()}updateDeco(e,i){let n=1e9,r=-1;return e.docChanged&&e.changes.iterChanges((s,o,l,c)=>{c>=e.view.viewport.from&&l<=e.view.viewport.to&&(n=Math.min(l,n),r=Math.max(c,r))}),e.viewportMoved||r-n>1e3?this.createDeco(e.view):r>-1?this.updateRange(e.view,i.map(e.changes),n,r):i}updateRange(e,i,n,r){for(let s of e.visibleRanges){let o=Math.max(s.from,n),l=Math.min(s.to,r);if(l>=o){let c=e.state.doc.lineAt(o),u=c.toc.from;o--)if(this.boundary.test(c.text[o-1-c.from])){d=o;break}for(;lg.push(w.range(b,x));if(c==u)for(this.regexp.lastIndex=d-c.from;(O=this.regexp.exec(c.text))&&O.indexthis.addMatch(x,e,b,_));i=i.update({filterFrom:d,filterTo:p,filter:(b,x)=>bp,add:g})}}return i}}const Sb=/x/.unicode!=null?"gu":"g",vU=new RegExp(`[\0-\b ---Ÿ­؜​‎‏\u2028\u2029‭‮⁦⁧⁩\uFEFF-]`,Sb),_U={0:"null",7:"bell",8:"backspace",10:"newline",11:"vertical tab",13:"carriage return",27:"escape",8203:"zero width space",8204:"zero width non-joiner",8205:"zero width joiner",8206:"left-to-right mark",8207:"right-to-left mark",8232:"line separator",8237:"left-to-right override",8238:"right-to-left override",8294:"left-to-right isolate",8295:"right-to-left isolate",8297:"pop directional isolate",8233:"paragraph separator",65279:"zero width no-break space",65532:"object replacement"};let M_=null;function yU(){var t;if(M_==null&&typeof document<"u"&&document.body){let e=document.body.style;M_=((t=e.tabSize)!==null&&t!==void 0?t:e.MozTabSize)!=null}return M_||!1}const qm=Se.define({combine(t){let e=Qs(t,{render:null,specialChars:vU,addSpecialChars:null});return(e.replaceTabs=!yU())&&(e.specialChars=new RegExp(" |"+e.specialChars.source,Sb)),e.addSpecialChars&&(e.specialChars=new RegExp(e.specialChars.source+"|"+e.addSpecialChars.source,Sb)),e}});function bU(t={}){return[qm.of(t),SU()]}let yE=null;function SU(){return yE||(yE=Jt.fromClass(class{constructor(t){this.view=t,this.decorations=Pe.none,this.decorationCache=Object.create(null),this.decorator=this.makeDecorator(t.state.facet(qm)),this.decorations=this.decorator.createDeco(t)}makeDecorator(t){return new OU({regexp:t.specialChars,decoration:(e,i,n)=>{let{doc:r}=i.state,s=Ln(e[0],0);if(s==9){let o=r.lineAt(n),l=i.state.tabSize,c=Yr(o.text,l,n-o.from);return Pe.replace({widget:new kU((l-c%l)*this.view.defaultCharacterWidth/this.view.scaleX)})}return this.decorationCache[s]||(this.decorationCache[s]=Pe.replace({widget:new CU(t,s)}))},boundary:t.replaceTabs?void 0:/[^]/})}update(t){let e=t.state.facet(qm);t.startState.facet(qm)!=e?(this.decorator=this.makeDecorator(e),this.decorations=this.decorator.createDeco(t.view)):this.decorations=this.decorator.updateDeco(t,this.decorations)}},{decorations:t=>t.decorations}))}const xU="•";function wU(t){return t>=32?xU:t==10?"␤":String.fromCharCode(9216+t)}class CU extends Gr{constructor(e,i){super(),this.options=e,this.code=i}eq(e){return e.code==this.code}toDOM(e){let i=wU(this.code),n=e.state.phrase("Control character")+" "+(_U[this.code]||"0x"+this.code.toString(16)),r=this.options.render&&this.options.render(this.code,n,i);if(r)return r;let s=document.createElement("span");return s.textContent=i,s.title=n,s.setAttribute("aria-label",n),s.className="cm-specialChar",s}ignoreEvent(){return!1}}class kU extends Gr{constructor(e){super(),this.width=e}eq(e){return e.width==this.width}toDOM(){let e=document.createElement("span");return e.textContent=" ",e.className="cm-tab",e.style.width=this.width+"px",e}ignoreEvent(){return!1}}function TU(){return EU}const AU=Pe.line({class:"cm-activeLine"}),EU=Jt.fromClass(class{constructor(t){this.decorations=this.getDeco(t)}update(t){(t.docChanged||t.selectionSet)&&(this.decorations=this.getDeco(t.view))}getDeco(t){let e=-1,i=[];for(let n of t.state.selection.ranges){let r=t.lineBlockAt(n.head);r.from>e&&(i.push(AU.range(r.from)),e=r.from)}return Pe.set(i)}},{decorations:t=>t.decorations});class MU extends Gr{constructor(e){super(),this.content=e}toDOM(e){let i=document.createElement("span");return i.className="cm-placeholder",i.style.pointerEvents="none",i.appendChild(typeof this.content=="string"?document.createTextNode(this.content):typeof this.content=="function"?this.content(e):this.content.cloneNode(!0)),i.setAttribute("aria-hidden","true"),i}coordsAt(e){let i=e.firstChild?mf(e.firstChild):[];if(!i.length)return null;let n=window.getComputedStyle(e.parentNode),r=Df(i[0],n.direction!="rtl"),s=parseInt(n.lineHeight);return r.bottom-r.top>s*1.5?{left:r.left,right:r.right,top:r.top,bottom:r.top+s}:r}ignoreEvent(){return!1}}function PU(t){let e=Jt.fromClass(class{constructor(i){this.view=i,this.placeholder=t?Pe.set([Pe.widget({widget:new MU(t),side:1}).range(0)]):Pe.none}get decorations(){return this.view.state.doc.length?Pe.none:this.placeholder}},{decorations:i=>i.decorations});return typeof t=="string"?[e,ve.contentAttributes.of({"aria-placeholder":t})]:e}const xb=2e3;function RU(t,e,i){let n=Math.min(e.line,i.line),r=Math.max(e.line,i.line),s=[];if(e.off>xb||i.off>xb||e.col<0||i.col<0){let o=Math.min(e.off,i.off),l=Math.max(e.off,i.off);for(let c=n;c<=r;c++){let u=t.doc.line(c);u.length<=l&&s.push(se.range(u.from+o,u.to+l))}}else{let o=Math.min(e.col,i.col),l=Math.max(e.col,i.col);for(let c=n;c<=r;c++){let u=t.doc.line(c),d=ib(u.text,o,t.tabSize,!0);if(d<0)s.push(se.cursor(u.to));else{let p=ib(u.text,l,t.tabSize);s.push(se.range(u.from+d,u.from+p))}}}return s}function QU(t,e){let i=t.coordsAtPos(t.viewport.from);return i?Math.round(Math.abs((i.left-e)/t.defaultCharacterWidth)):-1}function bE(t,e){let i=t.posAtCoords({x:e.clientX,y:e.clientY},!1),n=t.state.doc.lineAt(i),r=i-n.from,s=r>xb?-1:r==n.length?QU(t,e.clientX):Yr(n.text,t.state.tabSize,i-n.from);return{line:n.number,col:s,off:r}}function LU(t,e){let i=bE(t,e),n=t.state.selection;return i?{update(r){if(r.docChanged){let s=r.changes.mapPos(r.startState.doc.line(i.line).from),o=r.state.doc.lineAt(s);i={line:o.number,col:i.col,off:Math.min(i.off,o.length)},n=n.map(r.changes)}},get(r,s,o){let l=bE(t,r);if(!l)return n;let c=RU(t.state,i,l);return c.length?o?se.create(c.concat(n.ranges)):se.create(c):n}}:null}function DU(t){let e=(i=>i.altKey&&i.button==0);return ve.mouseSelectionStyle.of((i,n)=>e(n)?LU(i,n):null)}const BU={Alt:[18,t=>!!t.altKey],Control:[17,t=>!!t.ctrlKey],Shift:[16,t=>!!t.shiftKey],Meta:[91,t=>!!t.metaKey]},$U={style:"cursor: crosshair"};function zU(t={}){let[e,i]=BU[t.key||"Alt"],n=Jt.fromClass(class{constructor(r){this.view=r,this.isDown=!1}set(r){this.isDown!=r&&(this.isDown=r,this.view.update([]))}},{eventObservers:{keydown(r){this.set(r.keyCode==e||i(r))},keyup(r){(r.keyCode==e||!i(r))&&this.set(!1)},mousemove(r){this.set(i(r))}}});return[n,ve.contentAttributes.of(r=>{var s;return!((s=r.plugin(n))===null||s===void 0)&&s.isDown?$U:null})]}const am="-10000px";class CB{constructor(e,i,n,r){this.facet=i,this.createTooltipView=n,this.removeTooltipView=r,this.input=e.state.facet(i),this.tooltips=this.input.filter(o=>o);let s=null;this.tooltipViews=this.tooltips.map(o=>s=n(o,s))}update(e,i){var n;let r=e.state.facet(this.facet),s=r.filter(c=>c);if(r===this.input){for(let c of this.tooltipViews)c.update&&c.update(e);return!1}let o=[],l=i?[]:null;for(let c=0;ci[u]=c),i.length=l.length),this.input=r,this.tooltips=s,this.tooltipViews=o,!0}}function NU(t){let e=t.dom.ownerDocument.documentElement;return{top:0,left:0,bottom:e.clientHeight,right:e.clientWidth}}const P_=Se.define({combine:t=>{var e,i,n;return{position:xe.ios?"absolute":((e=t.find(r=>r.position))===null||e===void 0?void 0:e.position)||"fixed",parent:((i=t.find(r=>r.parent))===null||i===void 0?void 0:i.parent)||null,tooltipSpace:((n=t.find(r=>r.tooltipSpace))===null||n===void 0?void 0:n.tooltipSpace)||NU}}}),SE=new WeakMap,Zx=Jt.fromClass(class{constructor(t){this.view=t,this.above=[],this.inView=!0,this.madeAbsolute=!1,this.lastTransaction=0,this.measureTimeout=-1;let e=t.state.facet(P_);this.position=e.position,this.parent=e.parent,this.classes=t.themeClasses,this.createContainer(),this.measureReq={read:this.readMeasure.bind(this),write:this.writeMeasure.bind(this),key:this},this.resizeObserver=typeof ResizeObserver=="function"?new ResizeObserver(()=>this.measureSoon()):null,this.manager=new CB(t,qx,(i,n)=>this.createTooltip(i,n),i=>{this.resizeObserver&&this.resizeObserver.unobserve(i.dom),i.dom.remove()}),this.above=this.manager.tooltips.map(i=>!!i.above),this.intersectionObserver=typeof IntersectionObserver=="function"?new IntersectionObserver(i=>{Date.now()>this.lastTransaction-50&&i.length>0&&i[i.length-1].intersectionRatio<1&&this.measureSoon()},{threshold:[1]}):null,this.observeIntersection(),t.win.addEventListener("resize",this.measureSoon=this.measureSoon.bind(this)),this.maybeMeasure()}createContainer(){this.parent?(this.container=document.createElement("div"),this.container.style.position="relative",this.container.className=this.view.themeClasses,this.parent.appendChild(this.container)):this.container=this.view.dom}observeIntersection(){if(this.intersectionObserver){this.intersectionObserver.disconnect();for(let t of this.manager.tooltipViews)this.intersectionObserver.observe(t.dom)}}measureSoon(){this.measureTimeout<0&&(this.measureTimeout=setTimeout(()=>{this.measureTimeout=-1,this.maybeMeasure()},50))}update(t){t.transactions.length&&(this.lastTransaction=Date.now());let e=this.manager.update(t,this.above);e&&this.observeIntersection();let i=e||t.geometryChanged,n=t.state.facet(P_);if(n.position!=this.position&&!this.madeAbsolute){this.position=n.position;for(let r of this.manager.tooltipViews)r.dom.style.position=this.position;i=!0}if(n.parent!=this.parent){this.parent&&this.container.remove(),this.parent=n.parent,this.createContainer();for(let r of this.manager.tooltipViews)this.container.appendChild(r.dom);i=!0}else this.parent&&this.view.themeClasses!=this.classes&&(this.classes=this.container.className=this.view.themeClasses);i&&this.maybeMeasure()}createTooltip(t,e){let i=t.create(this.view),n=e?e.dom:null;if(i.dom.classList.add("cm-tooltip"),t.arrow&&!i.dom.querySelector(".cm-tooltip > .cm-tooltip-arrow")){let r=document.createElement("div");r.className="cm-tooltip-arrow",i.dom.appendChild(r)}return i.dom.style.position=this.position,i.dom.style.top=am,i.dom.style.left="0px",this.container.insertBefore(i.dom,n),i.mount&&i.mount(this.view),this.resizeObserver&&this.resizeObserver.observe(i.dom),i}destroy(){var t,e,i;this.view.win.removeEventListener("resize",this.measureSoon);for(let n of this.manager.tooltipViews)n.dom.remove(),(t=n.destroy)===null||t===void 0||t.call(n);this.parent&&this.container.remove(),(e=this.resizeObserver)===null||e===void 0||e.disconnect(),(i=this.intersectionObserver)===null||i===void 0||i.disconnect(),clearTimeout(this.measureTimeout)}readMeasure(){let t=1,e=1,i=!1;if(this.position=="fixed"&&this.manager.tooltipViews.length){let{dom:s}=this.manager.tooltipViews[0];if(xe.safari){let o=s.getBoundingClientRect();i=Math.abs(o.top+1e4)>1||Math.abs(o.left)>1}else i=!!s.offsetParent&&s.offsetParent!=this.container.ownerDocument.body}if(i||this.position=="absolute")if(this.parent){let s=this.parent.getBoundingClientRect();s.width&&s.height&&(t=s.width/this.parent.offsetWidth,e=s.height/this.parent.offsetHeight)}else({scaleX:t,scaleY:e}=this.view.viewState);let n=this.view.scrollDOM.getBoundingClientRect(),r=jx(this.view);return{visible:{left:n.left+r.left,top:n.top+r.top,right:n.right-r.right,bottom:n.bottom-r.bottom},parent:this.parent?this.container.getBoundingClientRect():this.view.dom.getBoundingClientRect(),pos:this.manager.tooltips.map((s,o)=>{let l=this.manager.tooltipViews[o];return l.getCoords?l.getCoords(s.pos):this.view.coordsAtPos(s.pos)}),size:this.manager.tooltipViews.map(({dom:s})=>s.getBoundingClientRect()),space:this.view.state.facet(P_).tooltipSpace(this.view),scaleX:t,scaleY:e,makeAbsolute:i}}writeMeasure(t){var e;if(t.makeAbsolute){this.madeAbsolute=!0,this.position="absolute";for(let l of this.manager.tooltipViews)l.dom.style.position="absolute"}let{visible:i,space:n,scaleX:r,scaleY:s}=t,o=[];for(let l=0;l=Math.min(i.bottom,n.bottom)||p.rightMath.min(i.right,n.right)+.1)){d.style.top=am;continue}let O=c.arrow?u.dom.querySelector(".cm-tooltip-arrow"):null,_=O?7:0,b=g.right-g.left,x=(e=SE.get(u))!==null&&e!==void 0?e:g.bottom-g.top,w=u.offset||IU,k=this.view.textDirection==St.LTR,T=g.width>n.right-n.left?k?n.left:n.right-g.width:k?Math.max(n.left,Math.min(p.left-(O?14:0)+w.x,n.right-b)):Math.min(Math.max(n.left,p.left-b+(O?14:0)-w.x),n.right-b),A=this.above[l];!c.strictSide&&(A?p.top-x-_-w.yn.bottom)&&A==n.bottom-p.bottom>p.top-n.top&&(A=this.above[l]=!A);let Q=(A?p.top-n.top:n.bottom-p.bottom)-_;if(QT&&N.topE&&(E=A?N.top-x-2-_:N.bottom+_+2);if(this.position=="absolute"?(d.style.top=(E-t.parent.top)/s+"px",xE(d,(T-t.parent.left)/r)):(d.style.top=E/s+"px",xE(d,T/r)),O){let N=p.left+(k?w.x:-w.x)-(T+14-7);O.style.left=N/r+"px"}u.overlap!==!0&&o.push({left:T,top:E,right:z,bottom:E+x}),d.classList.toggle("cm-tooltip-above",A),d.classList.toggle("cm-tooltip-below",!A),u.positioned&&u.positioned(t.space)}}maybeMeasure(){if(this.manager.tooltips.length&&(this.view.inView&&this.view.requestMeasure(this.measureReq),this.inView!=this.view.inView&&(this.inView=this.view.inView,!this.inView)))for(let t of this.manager.tooltipViews)t.dom.style.top=am}},{eventObservers:{scroll(){this.maybeMeasure()}}});function xE(t,e){let i=parseInt(t.style.left,10);(isNaN(i)||Math.abs(e-i)>1)&&(t.style.left=e+"px")}const jU=ve.baseTheme({".cm-tooltip":{zIndex:500,boxSizing:"border-box"},"&light .cm-tooltip":{border:"1px solid #bbb",backgroundColor:"#f5f5f5"},"&light .cm-tooltip-section:not(:first-child)":{borderTop:"1px solid #bbb"},"&dark .cm-tooltip":{backgroundColor:"#333338",color:"white"},".cm-tooltip-arrow":{height:"7px",width:"14px",position:"absolute",zIndex:-1,overflow:"hidden","&:before, &:after":{content:"''",position:"absolute",width:0,height:0,borderLeft:"7px solid transparent",borderRight:"7px solid transparent"},".cm-tooltip-above &":{bottom:"-7px","&:before":{borderTop:"7px solid #bbb"},"&:after":{borderTop:"7px solid #f5f5f5",bottom:"1px"}},".cm-tooltip-below &":{top:"-7px","&:before":{borderBottom:"7px solid #bbb"},"&:after":{borderBottom:"7px solid #f5f5f5",top:"1px"}}},"&dark .cm-tooltip .cm-tooltip-arrow":{"&:before":{borderTopColor:"#333338",borderBottomColor:"#333338"},"&:after":{borderTopColor:"transparent",borderBottomColor:"transparent"}}}),IU={x:0,y:0},qx=Se.define({enables:[Zx,jU]}),Eg=Se.define({combine:t=>t.reduce((e,i)=>e.concat(i),[])});class OO{static create(e){return new OO(e)}constructor(e){this.view=e,this.mounted=!1,this.dom=document.createElement("div"),this.dom.classList.add("cm-tooltip-hover"),this.manager=new CB(e,Eg,(i,n)=>this.createHostedView(i,n),i=>i.dom.remove())}createHostedView(e,i){let n=e.create(this.view);return n.dom.classList.add("cm-tooltip-section"),this.dom.insertBefore(n.dom,i?i.dom.nextSibling:this.dom.firstChild),this.mounted&&n.mount&&n.mount(this.view),n}mount(e){for(let i of this.manager.tooltipViews)i.mount&&i.mount(e);this.mounted=!0}positioned(e){for(let i of this.manager.tooltipViews)i.positioned&&i.positioned(e)}update(e){this.manager.update(e)}destroy(){var e;for(let i of this.manager.tooltipViews)(e=i.destroy)===null||e===void 0||e.call(i)}passProp(e){let i;for(let n of this.manager.tooltipViews){let r=n[e];if(r!==void 0){if(i===void 0)i=r;else if(i!==r)return}}return i}get offset(){return this.passProp("offset")}get getCoords(){return this.passProp("getCoords")}get overlap(){return this.passProp("overlap")}get resize(){return this.passProp("resize")}}const VU=qx.compute([Eg],t=>{let e=t.facet(Eg);return e.length===0?null:{pos:Math.min(...e.map(i=>i.pos)),end:Math.max(...e.map(i=>{var n;return(n=i.end)!==null&&n!==void 0?n:i.pos})),create:OO.create,above:e[0].above,arrow:e.some(i=>i.arrow)}});class XU{constructor(e,i,n,r,s){this.view=e,this.source=i,this.field=n,this.setHover=r,this.hoverTime=s,this.hoverTimeout=-1,this.restartTimeout=-1,this.pending=null,this.lastMove={x:0,y:0,target:e.dom,time:0},this.checkHover=this.checkHover.bind(this),e.dom.addEventListener("mouseleave",this.mouseleave=this.mouseleave.bind(this)),e.dom.addEventListener("mousemove",this.mousemove=this.mousemove.bind(this))}update(){this.pending&&(this.pending=null,clearTimeout(this.restartTimeout),this.restartTimeout=setTimeout(()=>this.startHover(),20))}get active(){return this.view.state.field(this.field)}checkHover(){if(this.hoverTimeout=-1,this.active.length)return;let e=Date.now()-this.lastMove.time;el.bottom||i.xl.right+e.defaultCharacterWidth)return;let c=e.bidiSpans(e.state.doc.lineAt(r)).find(d=>d.from<=r&&d.to>=r),u=c&&c.dir==St.RTL?-1:1;s=i.x{this.pending==l&&(this.pending=null,c&&!(Array.isArray(c)&&!c.length)&&e.dispatch({effects:this.setHover.of(Array.isArray(c)?c:[c])}))},c=>$n(e.state,c,"hover tooltip"))}else o&&!(Array.isArray(o)&&!o.length)&&e.dispatch({effects:this.setHover.of(Array.isArray(o)?o:[o])})}get tooltip(){let e=this.view.plugin(Zx),i=e?e.manager.tooltips.findIndex(n=>n.create==OO.create):-1;return i>-1?e.manager.tooltipViews[i]:null}mousemove(e){var i,n;this.lastMove={x:e.clientX,y:e.clientY,target:e.target,time:Date.now()},this.hoverTimeout<0&&(this.hoverTimeout=setTimeout(this.checkHover,this.hoverTime));let{active:r,tooltip:s}=this;if(r.length&&s&&!ZU(s.dom,e)||this.pending){let{pos:o}=r[0]||this.pending,l=(n=(i=r[0])===null||i===void 0?void 0:i.end)!==null&&n!==void 0?n:o;(o==l?this.view.posAtCoords(this.lastMove)!=o:!qU(this.view,o,l,e.clientX,e.clientY))&&(this.view.dispatch({effects:this.setHover.of([])}),this.pending=null)}}mouseleave(e){clearTimeout(this.hoverTimeout),this.hoverTimeout=-1;let{active:i}=this;if(i.length){let{tooltip:n}=this;n&&n.dom.contains(e.relatedTarget)?this.watchTooltipLeave(n.dom):this.view.dispatch({effects:this.setHover.of([])})}}watchTooltipLeave(e){let i=n=>{e.removeEventListener("mouseleave",i),this.active.length&&!this.view.dom.contains(n.relatedTarget)&&this.view.dispatch({effects:this.setHover.of([])})};e.addEventListener("mouseleave",i)}destroy(){clearTimeout(this.hoverTimeout),clearTimeout(this.restartTimeout),this.view.dom.removeEventListener("mouseleave",this.mouseleave),this.view.dom.removeEventListener("mousemove",this.mousemove)}}const lm=4;function ZU(t,e){let{left:i,right:n,top:r,bottom:s}=t.getBoundingClientRect(),o;if(o=t.querySelector(".cm-tooltip-arrow")){let l=o.getBoundingClientRect();r=Math.min(l.top,r),s=Math.max(l.bottom,s)}return e.clientX>=i-lm&&e.clientX<=n+lm&&e.clientY>=r-lm&&e.clientY<=s+lm}function qU(t,e,i,n,r,s){let o=t.scrollDOM.getBoundingClientRect(),l=t.documentTop+t.documentPadding.top+t.contentHeight;if(o.left>n||o.rightr||Math.min(o.bottom,l)=e&&c<=i}function WU(t,e={}){let i=ze.define(),n=Bi.define({create(){return[]},update(r,s){if(r.length&&(e.hideOnChange&&(s.docChanged||s.selection)?r=[]:e.hideOn&&(r=r.filter(o=>!e.hideOn(s,o))),s.docChanged)){let o=[];for(let l of r){let c=s.changes.mapPos(l.pos,-1,Fi.TrackDel);if(c!=null){let u=Object.assign(Object.create(null),l);u.pos=c,u.end!=null&&(u.end=s.changes.mapPos(u.end)),o.push(u)}}r=o}for(let o of s.effects)o.is(i)&&(r=o.value),o.is(UU)&&(r=[]);return r},provide:r=>Eg.from(r)});return{active:n,extension:[n,Jt.define(r=>new XU(r,t,n,i,e.hoverTime||300)),VU]}}function kB(t,e){let i=t.plugin(Zx);if(!i)return null;let n=i.manager.tooltips.indexOf(e);return n<0?null:i.manager.tooltipViews[n]}const UU=ze.define(),wE=Se.define({combine(t){let e,i;for(let n of t)e=e||n.topContainer,i=i||n.bottomContainer;return{topContainer:e,bottomContainer:i}}});function Wx(t,e){let i=t.plugin(TB),n=i?i.specs.indexOf(e):-1;return n>-1?i.panels[n]:null}const TB=Jt.fromClass(class{constructor(t){this.input=t.state.facet(zf),this.specs=this.input.filter(i=>i),this.panels=this.specs.map(i=>i(t));let e=t.state.facet(wE);this.top=new cm(t,!0,e.topContainer),this.bottom=new cm(t,!1,e.bottomContainer),this.top.sync(this.panels.filter(i=>i.top)),this.bottom.sync(this.panels.filter(i=>!i.top));for(let i of this.panels)i.dom.classList.add("cm-panel"),i.mount&&i.mount()}update(t){let e=t.state.facet(wE);this.top.container!=e.topContainer&&(this.top.sync([]),this.top=new cm(t.view,!0,e.topContainer)),this.bottom.container!=e.bottomContainer&&(this.bottom.sync([]),this.bottom=new cm(t.view,!1,e.bottomContainer)),this.top.syncClasses(),this.bottom.syncClasses();let i=t.state.facet(zf);if(i!=this.input){let n=i.filter(c=>c),r=[],s=[],o=[],l=[];for(let c of n){let u=this.specs.indexOf(c),d;u<0?(d=c(t.view),l.push(d)):(d=this.panels[u],d.update&&d.update(t)),r.push(d),(d.top?s:o).push(d)}this.specs=n,this.panels=r,this.top.sync(s),this.bottom.sync(o);for(let c of l)c.dom.classList.add("cm-panel"),c.mount&&c.mount()}else for(let n of this.panels)n.update&&n.update(t)}destroy(){this.top.sync([]),this.bottom.sync([])}},{provide:t=>ve.scrollMargins.of(e=>{let i=e.plugin(t);return i&&{top:i.top.scrollMargin(),bottom:i.bottom.scrollMargin()}})});class cm{constructor(e,i,n){this.view=e,this.top=i,this.container=n,this.dom=void 0,this.classes="",this.panels=[],this.syncClasses()}sync(e){for(let i of this.panels)i.destroy&&e.indexOf(i)<0&&i.destroy();this.panels=e,this.syncDOM()}syncDOM(){if(this.panels.length==0){this.dom&&(this.dom.remove(),this.dom=void 0);return}if(!this.dom){this.dom=document.createElement("div"),this.dom.className=this.top?"cm-panels cm-panels-top":"cm-panels cm-panels-bottom",this.dom.style[this.top?"top":"bottom"]="0";let i=this.container||this.view.dom;i.insertBefore(this.dom,this.top?i.firstChild:null)}let e=this.dom.firstChild;for(let i of this.panels)if(i.dom.parentNode==this.dom){for(;e!=i.dom;)e=CE(e);e=e.nextSibling}else this.dom.insertBefore(i.dom,e);for(;e;)e=CE(e)}scrollMargin(){return!this.dom||this.container?0:Math.max(0,this.top?this.dom.getBoundingClientRect().bottom-Math.max(0,this.view.scrollDOM.getBoundingClientRect().top):Math.min(innerHeight,this.view.scrollDOM.getBoundingClientRect().bottom)-this.dom.getBoundingClientRect().top)}syncClasses(){if(!(!this.container||this.classes==this.view.themeClasses)){for(let e of this.classes.split(" "))e&&this.container.classList.remove(e);for(let e of(this.classes=this.view.themeClasses).split(" "))e&&this.container.classList.add(e)}}}function CE(t){let e=t.nextSibling;return t.remove(),e}const zf=Se.define({enables:TB});function YU(t,e){let i,n=new Promise(o=>i=o),r=o=>HU(o,e,i);t.state.field(R_,!1)?t.dispatch({effects:AB.of(r)}):t.dispatch({effects:ze.appendConfig.of(R_.init(()=>[r]))});let s=EB.of(r);return{close:s,result:n.then(o=>((t.win.queueMicrotask||(c=>t.win.setTimeout(c,10)))(()=>{t.state.field(R_).indexOf(r)>-1&&t.dispatch({effects:s})}),o))}}const R_=Bi.define({create(){return[]},update(t,e){for(let i of e.effects)i.is(AB)?t=[i.value].concat(t):i.is(EB)&&(t=t.filter(n=>n!=i.value));return t},provide:t=>zf.computeN([t],e=>e.field(t))}),AB=ze.define(),EB=ze.define();function HU(t,e,i){let n=e.content?e.content(t,()=>o(null)):null;if(!n){if(n=vt("form"),e.input){let l=vt("input",e.input);/^(text|password|number|email|tel|url)$/.test(l.type)&&l.classList.add("cm-textfield"),l.name||(l.name="input"),n.appendChild(vt("label",(e.label||"")+": ",l))}else n.appendChild(document.createTextNode(e.label||""));n.appendChild(document.createTextNode(" ")),n.appendChild(vt("button",{class:"cm-button",type:"submit"},e.submitLabel||"OK"))}let r=n.nodeName=="FORM"?[n]:n.querySelectorAll("form");for(let l=0;l{u.keyCode==27?(u.preventDefault(),o(null)):u.keyCode==13&&(u.preventDefault(),o(c))}),c.addEventListener("submit",u=>{u.preventDefault(),o(c)})}let s=vt("div",n,vt("button",{onclick:()=>o(null),"aria-label":t.state.phrase("close"),class:"cm-dialog-close",type:"button"},["×"]));e.class&&(s.className=e.class),s.classList.add("cm-dialog");function o(l){s.contains(s.ownerDocument.activeElement)&&t.focus(),i(l)}return{dom:s,top:e.top,mount:()=>{if(e.focus){let l;typeof e.focus=="string"?l=n.querySelector(e.focus):l=n.querySelector("input")||n.querySelector("button"),l&&"select"in l?l.select():l&&"focus"in l&&l.focus()}}}}class bo extends Sa{compare(e){return this==e||this.constructor==e.constructor&&this.eq(e)}eq(e){return!1}destroy(e){}}bo.prototype.elementClass="";bo.prototype.toDOM=void 0;bo.prototype.mapMode=Fi.TrackBefore;bo.prototype.startSide=bo.prototype.endSide=-1;bo.prototype.point=!0;const Wm=Se.define(),FU=Se.define(),GU={class:"",renderEmptyElements:!1,elementStyle:"",markers:()=>Ge.empty,lineMarker:()=>null,widgetMarker:()=>null,lineMarkerChange:null,initialSpacer:null,updateSpacer:null,domEventHandlers:{},side:"before"},vf=Se.define();function KU(t){return[MB(),vf.of({...GU,...t})]}const kE=Se.define({combine:t=>t.some(e=>e)});function MB(t){return[JU]}const JU=Jt.fromClass(class{constructor(t){this.view=t,this.domAfter=null,this.prevViewport=t.viewport,this.dom=document.createElement("div"),this.dom.className="cm-gutters cm-gutters-before",this.dom.setAttribute("aria-hidden","true"),this.dom.style.minHeight=this.view.contentHeight/this.view.scaleY+"px",this.gutters=t.state.facet(vf).map(e=>new AE(t,e)),this.fixed=!t.state.facet(kE);for(let e of this.gutters)e.config.side=="after"?this.getDOMAfter().appendChild(e.dom):this.dom.appendChild(e.dom);this.fixed&&(this.dom.style.position="sticky"),this.syncGutters(!1),t.scrollDOM.insertBefore(this.dom,t.contentDOM)}getDOMAfter(){return this.domAfter||(this.domAfter=document.createElement("div"),this.domAfter.className="cm-gutters cm-gutters-after",this.domAfter.setAttribute("aria-hidden","true"),this.domAfter.style.minHeight=this.view.contentHeight/this.view.scaleY+"px",this.domAfter.style.position=this.fixed?"sticky":"",this.view.scrollDOM.appendChild(this.domAfter)),this.domAfter}update(t){if(this.updateGutters(t)){let e=this.prevViewport,i=t.view.viewport,n=Math.min(e.to,i.to)-Math.max(e.from,i.from);this.syncGutters(n<(i.to-i.from)*.8)}if(t.geometryChanged){let e=this.view.contentHeight/this.view.scaleY+"px";this.dom.style.minHeight=e,this.domAfter&&(this.domAfter.style.minHeight=e)}this.view.state.facet(kE)!=!this.fixed&&(this.fixed=!this.fixed,this.dom.style.position=this.fixed?"sticky":"",this.domAfter&&(this.domAfter.style.position=this.fixed?"sticky":"")),this.prevViewport=t.view.viewport}syncGutters(t){let e=this.dom.nextSibling;t&&(this.dom.remove(),this.domAfter&&this.domAfter.remove());let i=Ge.iter(this.view.state.facet(Wm),this.view.viewport.from),n=[],r=this.gutters.map(s=>new eY(s,this.view.viewport,-this.view.documentPadding.top));for(let s of this.view.viewportLineBlocks)if(n.length&&(n=[]),Array.isArray(s.type)){let o=!0;for(let l of s.type)if(l.type==Ki.Text&&o){wb(i,n,l.from);for(let c of r)c.line(this.view,l,n);o=!1}else if(l.widget)for(let c of r)c.widget(this.view,l)}else if(s.type==Ki.Text){wb(i,n,s.from);for(let o of r)o.line(this.view,s,n)}else if(s.widget)for(let o of r)o.widget(this.view,s);for(let s of r)s.finish();t&&(this.view.scrollDOM.insertBefore(this.dom,e),this.domAfter&&this.view.scrollDOM.appendChild(this.domAfter))}updateGutters(t){let e=t.startState.facet(vf),i=t.state.facet(vf),n=t.docChanged||t.heightChanged||t.viewportChanged||!Ge.eq(t.startState.facet(Wm),t.state.facet(Wm),t.view.viewport.from,t.view.viewport.to);if(e==i)for(let r of this.gutters)r.update(t)&&(n=!0);else{n=!0;let r=[];for(let s of i){let o=e.indexOf(s);o<0?r.push(new AE(this.view,s)):(this.gutters[o].update(t),r.push(this.gutters[o]))}for(let s of this.gutters)s.dom.remove(),r.indexOf(s)<0&&s.destroy();for(let s of r)s.config.side=="after"?this.getDOMAfter().appendChild(s.dom):this.dom.appendChild(s.dom);this.gutters=r}return n}destroy(){for(let t of this.gutters)t.destroy();this.dom.remove(),this.domAfter&&this.domAfter.remove()}},{provide:t=>ve.scrollMargins.of(e=>{let i=e.plugin(t);if(!i||i.gutters.length==0||!i.fixed)return null;let n=i.dom.offsetWidth*e.scaleX,r=i.domAfter?i.domAfter.offsetWidth*e.scaleX:0;return e.textDirection==St.LTR?{left:n,right:r}:{right:n,left:r}})});function TE(t){return Array.isArray(t)?t:[t]}function wb(t,e,i){for(;t.value&&t.from<=i;)t.from==i&&e.push(t.value),t.next()}class eY{constructor(e,i,n){this.gutter=e,this.height=n,this.i=0,this.cursor=Ge.iter(e.markers,i.from)}addElement(e,i,n){let{gutter:r}=this,s=(i.top-this.height)/e.scaleY,o=i.height/e.scaleY;if(this.i==r.elements.length){let l=new PB(e,o,s,n);r.elements.push(l),r.dom.appendChild(l.dom)}else r.elements[this.i].update(e,o,s,n);this.height=i.bottom,this.i++}line(e,i,n){let r=[];wb(this.cursor,r,i.from),n.length&&(r=r.concat(n));let s=this.gutter.config.lineMarker(e,i,r);s&&r.unshift(s);let o=this.gutter;r.length==0&&!o.config.renderEmptyElements||this.addElement(e,i,r)}widget(e,i){let n=this.gutter.config.widgetMarker(e,i.widget,i),r=n?[n]:null;for(let s of e.state.facet(FU)){let o=s(e,i.widget,i);o&&(r||(r=[])).push(o)}r&&this.addElement(e,i,r)}finish(){let e=this.gutter;for(;e.elements.length>this.i;){let i=e.elements.pop();e.dom.removeChild(i.dom),i.destroy()}}}class AE{constructor(e,i){this.view=e,this.config=i,this.elements=[],this.spacer=null,this.dom=document.createElement("div"),this.dom.className="cm-gutter"+(this.config.class?" "+this.config.class:"");for(let n in i.domEventHandlers)this.dom.addEventListener(n,r=>{let s=r.target,o;if(s!=this.dom&&this.dom.contains(s)){for(;s.parentNode!=this.dom;)s=s.parentNode;let c=s.getBoundingClientRect();o=(c.top+c.bottom)/2}else o=r.clientY;let l=e.lineBlockAtHeight(o-e.documentTop);i.domEventHandlers[n](e,l,r)&&r.preventDefault()});this.markers=TE(i.markers(e)),i.initialSpacer&&(this.spacer=new PB(e,0,0,[i.initialSpacer(e)]),this.dom.appendChild(this.spacer.dom),this.spacer.dom.style.cssText+="visibility: hidden; pointer-events: none")}update(e){let i=this.markers;if(this.markers=TE(this.config.markers(e.view)),this.spacer&&this.config.updateSpacer){let r=this.config.updateSpacer(this.spacer.markers[0],e);r!=this.spacer.markers[0]&&this.spacer.update(e.view,0,0,[r])}let n=e.view.viewport;return!Ge.eq(this.markers,i,n.from,n.to)||(this.config.lineMarkerChange?this.config.lineMarkerChange(e):!1)}destroy(){for(let e of this.elements)e.destroy()}}class PB{constructor(e,i,n,r){this.height=-1,this.above=0,this.markers=[],this.dom=document.createElement("div"),this.dom.className="cm-gutterElement",this.update(e,i,n,r)}update(e,i,n,r){this.height!=i&&(this.height=i,this.dom.style.height=i+"px"),this.above!=n&&(this.dom.style.marginTop=(this.above=n)?n+"px":""),tY(this.markers,r)||this.setMarkers(e,r)}setMarkers(e,i){let n="cm-gutterElement",r=this.dom.firstChild;for(let s=0,o=0;;){let l=o,c=ss(l,c,u)||o(l,c,u):o}return n}})}});class Q_ extends bo{constructor(e){super(),this.number=e}eq(e){return this.number==e.number}toDOM(){return document.createTextNode(this.number)}}function L_(t,e){return t.state.facet(jc).formatNumber(e,t.state)}const rY=vf.compute([jc],t=>({class:"cm-lineNumbers",renderEmptyElements:!1,markers(e){return e.state.facet(iY)},lineMarker(e,i,n){return n.some(r=>r.toDOM)?null:new Q_(L_(e,e.state.doc.lineAt(i.from).number))},widgetMarker:(e,i,n)=>{for(let r of e.state.facet(nY)){let s=r(e,i,n);if(s)return s}return null},lineMarkerChange:e=>e.startState.facet(jc)!=e.state.facet(jc),initialSpacer(e){return new Q_(L_(e,EE(e.state.doc.lines)))},updateSpacer(e,i){let n=L_(i.view,EE(i.view.state.doc.lines));return n==e.number?e:new Q_(n)},domEventHandlers:t.facet(jc).domEventHandlers,side:"before"}));function sY(t={}){return[jc.of(t),MB(),rY]}function EE(t){let e=9;for(;e{let e=[],i=-1;for(let n of t.selection.ranges){let r=t.doc.lineAt(n.head).from;r>i&&(i=r,e.push(oY.range(r)))}return Ge.of(e)});function lY(){return aY}const RB=1024;let cY=0;class Tr{constructor(e,i){this.from=e,this.to=i}}class Ne{constructor(e={}){this.id=cY++,this.perNode=!!e.perNode,this.deserialize=e.deserialize||(()=>{throw new Error("This node type doesn't define a deserialize function")}),this.combine=e.combine||null}add(e){if(this.perNode)throw new RangeError("Can't add per-node props to node types");return typeof e!="function"&&(e=_i.match(e)),i=>{let n=e(i);return n===void 0?null:[this,n]}}}Ne.closedBy=new Ne({deserialize:t=>t.split(" ")});Ne.openedBy=new Ne({deserialize:t=>t.split(" ")});Ne.group=new Ne({deserialize:t=>t.split(" ")});Ne.isolate=new Ne({deserialize:t=>{if(t&&t!="rtl"&&t!="ltr"&&t!="auto")throw new RangeError("Invalid value for isolate: "+t);return t||"auto"}});Ne.contextHash=new Ne({perNode:!0});Ne.lookAhead=new Ne({perNode:!0});Ne.mounted=new Ne({perNode:!0});class Fc{constructor(e,i,n,r=!1){this.tree=e,this.overlay=i,this.parser=n,this.bracketed=r}static get(e){return e&&e.props&&e.props[Ne.mounted.id]}}const hY=Object.create(null);class _i{constructor(e,i,n,r=0){this.name=e,this.props=i,this.id=n,this.flags=r}static define(e){let i=e.props&&e.props.length?Object.create(null):hY,n=(e.top?1:0)|(e.skipped?2:0)|(e.error?4:0)|(e.name==null?8:0),r=new _i(e.name||"",i,e.id,n);if(e.props){for(let s of e.props)if(Array.isArray(s)||(s=s(r)),s){if(s[0].perNode)throw new RangeError("Can't store a per-node prop on a node type");i[s[0].id]=s[1]}}return r}prop(e){return this.props[e.id]}get isTop(){return(this.flags&1)>0}get isSkipped(){return(this.flags&2)>0}get isError(){return(this.flags&4)>0}get isAnonymous(){return(this.flags&8)>0}is(e){if(typeof e=="string"){if(this.name==e)return!0;let i=this.prop(Ne.group);return i?i.indexOf(e)>-1:!1}return this.id==e}static match(e){let i=Object.create(null);for(let n in e)for(let r of n.split(" "))i[r]=e[n];return n=>{for(let r=n.prop(Ne.group),s=-1;s<(r?r.length:0);s++){let o=i[s<0?n.name:r[s]];if(o)return o}}}}_i.none=new _i("",Object.create(null),0,8);class pd{constructor(e){this.types=e;for(let i=0;i0;for(let c=this.cursor(o|ut.IncludeAnonymous);;){let u=!1;if(c.from<=s&&c.to>=r&&(!l&&c.type.isAnonymous||i(c)!==!1)){if(c.firstChild())continue;u=!0}for(;u&&n&&(l||!c.type.isAnonymous)&&n(c),!c.nextSibling();){if(!c.parent())return;u=!0}}}prop(e){return e.perNode?this.props?this.props[e.id]:void 0:this.type.prop(e)}get propValues(){let e=[];if(this.props)for(let i in this.props)e.push([+i,this.props[i]]);return e}balance(e={}){return this.children.length<=8?this:Hx(_i.none,this.children,this.positions,0,this.children.length,0,this.length,(i,n,r)=>new ct(this.type,i,n,r,this.propValues),e.makeTree||((i,n,r)=>new ct(_i.none,i,n,r)))}static build(e){return pY(e)}}ct.empty=new ct(_i.none,[],[],0);class Ux{constructor(e,i){this.buffer=e,this.index=i}get id(){return this.buffer[this.index-4]}get start(){return this.buffer[this.index-3]}get end(){return this.buffer[this.index-2]}get size(){return this.buffer[this.index-1]}get pos(){return this.index}next(){this.index-=4}fork(){return new Ux(this.buffer,this.index)}}class ka{constructor(e,i,n){this.buffer=e,this.length=i,this.set=n}get type(){return _i.none}toString(){let e=[];for(let i=0;i0));c=o[c+3]);return l}slice(e,i,n){let r=this.buffer,s=new Uint16Array(i-e),o=0;for(let l=e,c=0;l=e&&ie;case 1:return i<=e&&n>e;case 2:return n>e;case 4:return!0}}function Nf(t,e,i,n){for(var r;t.from==t.to||(i<1?t.from>=e:t.from>e)||(i>-1?t.to<=e:t.to0?l.length:-1;e!=u;e+=i){let d=l[e],p=c[e]+o.from,g;if(!(!(s&ut.EnterBracketed&&d instanceof ct&&(g=Fc.get(d))&&!g.overlay&&g.bracketed&&n>=p&&n<=p+d.length)&&!QB(r,n,p,p+d.length))){if(d instanceof ka){if(s&ut.ExcludeBuffers)continue;let O=d.findChild(0,d.buffer.length,i,n-p,r);if(O>-1)return new ys(new uY(o,d,e,p),null,O)}else if(s&ut.IncludeAnonymous||!d.type.isAnonymous||Yx(d)){let O;if(!(s&ut.IgnoreMounts)&&(O=Fc.get(d))&&!O.overlay)return new on(O.tree,p,e,o);let _=new on(d,p,e,o);return s&ut.IncludeAnonymous||!_.type.isAnonymous?_:_.nextChild(i<0?d.children.length-1:0,i,n,r,s)}}}if(s&ut.IncludeAnonymous||!o.type.isAnonymous||(o.index>=0?e=o.index+i:e=i<0?-1:o._parent._tree.children.length,o=o._parent,!o))return null}}get firstChild(){return this.nextChild(0,1,0,4)}get lastChild(){return this.nextChild(this._tree.children.length-1,-1,0,4)}childAfter(e){return this.nextChild(0,1,e,2)}childBefore(e){return this.nextChild(this._tree.children.length-1,-1,e,-2)}prop(e){return this._tree.prop(e)}enter(e,i,n=0){let r;if(!(n&ut.IgnoreOverlays)&&(r=Fc.get(this._tree))&&r.overlay){let s=e-this.from,o=n&ut.EnterBracketed&&r.bracketed;for(let{from:l,to:c}of r.overlay)if((i>0||o?l<=s:l=s:c>s))return new on(r.tree,r.overlay[0].from+this.from,-1,this)}return this.nextChild(0,1,e,i,n)}nextSignificantParent(){let e=this;for(;e.type.isAnonymous&&e._parent;)e=e._parent;return e}get parent(){return this._parent?this._parent.nextSignificantParent():null}get nextSibling(){return this._parent&&this.index>=0?this._parent.nextChild(this.index+1,1,0,4):null}get prevSibling(){return this._parent&&this.index>=0?this._parent.nextChild(this.index-1,-1,0,4):null}get tree(){return this._tree}toTree(){return this._tree}toString(){return this._tree.toString()}}function PE(t,e,i,n){let r=t.cursor(),s=[];if(!r.firstChild())return s;if(i!=null){for(let o=!1;!o;)if(o=r.type.is(i),!r.nextSibling())return s}for(;;){if(n!=null&&r.type.is(n))return s;if(r.type.is(e)&&s.push(r.node),!r.nextSibling())return n==null?s:[]}}function Cb(t,e,i=e.length-1){for(let n=t;i>=0;n=n.parent){if(!n)return!1;if(!n.type.isAnonymous){if(e[i]&&e[i]!=n.name)return!1;i--}}return!0}class uY{constructor(e,i,n,r){this.parent=e,this.buffer=i,this.index=n,this.start=r}}class ys extends LB{get name(){return this.type.name}get from(){return this.context.start+this.context.buffer.buffer[this.index+1]}get to(){return this.context.start+this.context.buffer.buffer[this.index+2]}constructor(e,i,n){super(),this.context=e,this._parent=i,this.index=n,this.type=e.buffer.set.types[e.buffer.buffer[n]]}child(e,i,n){let{buffer:r}=this.context,s=r.findChild(this.index+4,r.buffer[this.index+3],e,i-this.context.start,n);return s<0?null:new ys(this.context,this,s)}get firstChild(){return this.child(1,0,4)}get lastChild(){return this.child(-1,0,4)}childAfter(e){return this.child(1,e,2)}childBefore(e){return this.child(-1,e,-2)}prop(e){return this.type.prop(e)}enter(e,i,n=0){if(n&ut.ExcludeBuffers)return null;let{buffer:r}=this.context,s=r.findChild(this.index+4,r.buffer[this.index+3],i>0?1:-1,e-this.context.start,i);return s<0?null:new ys(this.context,this,s)}get parent(){return this._parent||this.context.parent.nextSignificantParent()}externalSibling(e){return this._parent?null:this.context.parent.nextChild(this.context.index+e,e,0,4)}get nextSibling(){let{buffer:e}=this.context,i=e.buffer[this.index+3];return i<(this._parent?e.buffer[this._parent.index+3]:e.buffer.length)?new ys(this.context,this._parent,i):this.externalSibling(1)}get prevSibling(){let{buffer:e}=this.context,i=this._parent?this._parent.index+4:0;return this.index==i?this.externalSibling(-1):new ys(this.context,this._parent,e.findChild(i,this.index,-1,0,4))}get tree(){return null}toTree(){let e=[],i=[],{buffer:n}=this.context,r=this.index+4,s=n.buffer[this.index+3];if(s>r){let o=n.buffer[this.index+1];e.push(n.slice(r,s,o)),i.push(0)}return new ct(this.type,e,i,this.to-this.from)}toString(){return this.context.buffer.childString(this.index)}}function DB(t){if(!t.length)return null;let e=0,i=t[0];for(let s=1;si.from||o.to=e){let l=new on(o.tree,o.overlay[0].from+s.from,-1,s);(r||(r=[n])).push(Nf(l,e,i,!1))}}return r?DB(r):n}class Mg{get name(){return this.type.name}constructor(e,i=0){if(this.buffer=null,this.stack=[],this.index=0,this.bufferNode=null,this.mode=i&~ut.EnterBracketed,e instanceof on)this.yieldNode(e);else{this._tree=e.context.parent,this.buffer=e.context;for(let n=e._parent;n;n=n._parent)this.stack.unshift(n.index);this.bufferNode=e,this.yieldBuf(e.index)}}yieldNode(e){return e?(this._tree=e,this.type=e.type,this.from=e.from,this.to=e.to,!0):!1}yieldBuf(e,i){this.index=e;let{start:n,buffer:r}=this.buffer;return this.type=i||r.set.types[r.buffer[e]],this.from=n+r.buffer[e+1],this.to=n+r.buffer[e+2],!0}yield(e){return e?e instanceof on?(this.buffer=null,this.yieldNode(e)):(this.buffer=e.context,this.yieldBuf(e.index,e.type)):!1}toString(){return this.buffer?this.buffer.buffer.childString(this.index):this._tree.toString()}enterChild(e,i,n){if(!this.buffer)return this.yield(this._tree.nextChild(e<0?this._tree._tree.children.length-1:0,e,i,n,this.mode));let{buffer:r}=this.buffer,s=r.findChild(this.index+4,r.buffer[this.index+3],e,i-this.buffer.start,n);return s<0?!1:(this.stack.push(this.index),this.yieldBuf(s))}firstChild(){return this.enterChild(1,0,4)}lastChild(){return this.enterChild(-1,0,4)}childAfter(e){return this.enterChild(1,e,2)}childBefore(e){return this.enterChild(-1,e,-2)}enter(e,i,n=this.mode){return this.buffer?n&ut.ExcludeBuffers?!1:this.enterChild(1,e,i):this.yield(this._tree.enter(e,i,n))}parent(){if(!this.buffer)return this.yieldNode(this.mode&ut.IncludeAnonymous?this._tree._parent:this._tree.parent);if(this.stack.length)return this.yieldBuf(this.stack.pop());let e=this.mode&ut.IncludeAnonymous?this.buffer.parent:this.buffer.parent.nextSignificantParent();return this.buffer=null,this.yieldNode(e)}sibling(e){if(!this.buffer)return this._tree._parent?this.yield(this._tree.index<0?null:this._tree._parent.nextChild(this._tree.index+e,e,0,4,this.mode)):!1;let{buffer:i}=this.buffer,n=this.stack.length-1;if(e<0){let r=n<0?0:this.stack[n]+4;if(this.index!=r)return this.yieldBuf(i.findChild(r,this.index,-1,0,4))}else{let r=i.buffer[this.index+3];if(r<(n<0?i.buffer.length:i.buffer[this.stack[n]+3]))return this.yieldBuf(r)}return n<0?this.yield(this.buffer.parent.nextChild(this.buffer.index+e,e,0,4,this.mode)):!1}nextSibling(){return this.sibling(1)}prevSibling(){return this.sibling(-1)}atLastNode(e){let i,n,{buffer:r}=this;if(r){if(e>0){if(this.index-1)for(let s=i+e,o=e<0?-1:n._tree.children.length;s!=o;s+=e){let l=n._tree.children[s];if(this.mode&ut.IncludeAnonymous||l instanceof ka||!l.type.isAnonymous||Yx(l))return!1}return!0}move(e,i){if(i&&this.enterChild(e,0,4))return!0;for(;;){if(this.sibling(e))return!0;if(this.atLastNode(e)||!this.parent())return!1}}next(e=!0){return this.move(1,e)}prev(e=!0){return this.move(-1,e)}moveTo(e,i=0){for(;(this.from==this.to||(i<1?this.from>=e:this.from>e)||(i>-1?this.to<=e:this.to=0;){for(let o=e;o;o=o._parent)if(o.index==r){if(r==this.index)return o;i=o,n=s+1;break e}r=this.stack[--s]}for(let r=n;r=0;s--){if(s<0)return Cb(this._tree,e,r);let o=n[i.buffer[this.stack[s]]];if(!o.isAnonymous){if(e[r]&&e[r]!=o.name)return!1;r--}}return!0}}function Yx(t){return t.children.some(e=>e instanceof ka||!e.type.isAnonymous||Yx(e))}function pY(t){var e;let{buffer:i,nodeSet:n,maxBufferLength:r=RB,reused:s=[],minRepeatType:o=n.types.length}=t,l=Array.isArray(i)?new Ux(i,i.length):i,c=n.types,u=0,d=0;function p(Q,E,z,N,q,J){let{id:U,start:R,end:B,size:j}=l,$=d,D=u;if(j<0)if(l.next(),j==-1){let I=s[U];z.push(I),N.push(R-Q);return}else if(j==-3){u=U;return}else if(j==-4){d=U;return}else throw new RangeError(`Unrecognized record size: ${j}`);let X=c[U],H,F,M=R-Q;if(B-R<=r&&(F=x(l.pos-E,q))){let I=new Uint16Array(F.size-F.skip),K=l.pos-F.size,L=I.length;for(;l.pos>K;)L=w(F.start,I,L);H=new ka(I,B-F.start,n),M=F.start-Q}else{let I=l.pos-j;l.next();let K=[],L=[],ue=U>=o?U:-1,he=0,fe=B;for(;l.pos>I;)ue>=0&&l.id==ue&&l.size>=0?(l.end<=fe-r&&(_(K,L,R,he,l.end,fe,ue,$,D),he=K.length,fe=l.end),l.next()):J>2500?g(R,I,K,L):p(R,I,K,L,ue,J+1);if(ue>=0&&he>0&&he-1&&he>0){let Oe=O(X,D);H=Hx(X,K,L,0,K.length,0,B-R,Oe,Oe)}else H=b(X,K,L,B-R,$-B,D)}z.push(H),N.push(M)}function g(Q,E,z,N){let q=[],J=0,U=-1;for(;l.pos>E;){let{id:R,start:B,end:j,size:$}=l;if($>4)l.next();else{if(U>-1&&B=0;j-=3)R[$++]=q[j],R[$++]=q[j+1]-B,R[$++]=q[j+2]-B,R[$++]=$;z.push(new ka(R,q[2]-B,n)),N.push(B-Q)}}function O(Q,E){return(z,N,q)=>{let J=0,U=z.length-1,R,B;if(U>=0&&(R=z[U])instanceof ct){if(!U&&R.type==Q&&R.length==q)return R;(B=R.prop(Ne.lookAhead))&&(J=N[U]+R.length+B)}return b(Q,z,N,q,J,E)}}function _(Q,E,z,N,q,J,U,R,B){let j=[],$=[];for(;Q.length>N;)j.push(Q.pop()),$.push(E.pop()+z-q);Q.push(b(n.types[U],j,$,J-q,R-J,B)),E.push(q-z)}function b(Q,E,z,N,q,J,U){if(J){let R=[Ne.contextHash,J];U=U?[R].concat(U):[R]}if(q>25){let R=[Ne.lookAhead,q];U=U?[R].concat(U):[R]}return new ct(Q,E,z,N,U)}function x(Q,E){let z=l.fork(),N=0,q=0,J=0,U=z.end-r,R={size:0,start:0,skip:0};e:for(let B=z.pos-Q;z.pos>B;){let j=z.size;if(z.id==E&&j>=0){R.size=N,R.start=q,R.skip=J,J+=4,N+=4,z.next();continue}let $=z.pos-j;if(j<0||$=o?4:0,X=z.start;for(z.next();z.pos>$;){if(z.size<0)if(z.size==-3||z.size==-4)D+=4;else break e;else z.id>=o&&(D+=4);z.next()}q=X,N+=j,J+=D}return(E<0||N==Q)&&(R.size=N,R.start=q,R.skip=J),R.size>4?R:void 0}function w(Q,E,z){let{id:N,start:q,end:J,size:U}=l;if(l.next(),U>=0&&N4){let B=l.pos-(U-4);for(;l.pos>B;)z=w(Q,E,z)}E[--z]=R,E[--z]=J-Q,E[--z]=q-Q,E[--z]=N}else U==-3?u=N:U==-4&&(d=N);return z}let k=[],T=[];for(;l.pos>0;)p(t.start||0,t.bufferStart||0,k,T,-1,0);let A=(e=t.length)!==null&&e!==void 0?e:k.length?T[0]+k[0].length:0;return new ct(c[t.topID],k.reverse(),T.reverse(),A)}const RE=new WeakMap;function Um(t,e){if(!t.isAnonymous||e instanceof ka||e.type!=t)return 1;let i=RE.get(e);if(i==null){i=1;for(let n of e.children){if(n.type!=t||!(n instanceof ct)){i=1;break}i+=Um(t,n)}RE.set(e,i)}return i}function Hx(t,e,i,n,r,s,o,l,c){let u=0;for(let _=n;_=d)break;E+=z}if(T==A+1){if(E>d){let z=_[A];O(z.children,z.positions,0,z.children.length,b[A]+k);continue}p.push(_[A])}else{let z=b[T-1]+_[T-1].length-Q;p.push(Hx(t,_,b,A,T,Q,z,null,c))}g.push(Q+k-s)}}return O(e,i,n,r,0),(l||c)(p,g,o)}class BB{constructor(){this.map=new WeakMap}setBuffer(e,i,n){let r=this.map.get(e);r||this.map.set(e,r=new Map),r.set(i,n)}getBuffer(e,i){let n=this.map.get(e);return n&&n.get(i)}set(e,i){e instanceof ys?this.setBuffer(e.context.buffer,e.index,i):e instanceof on&&this.map.set(e.tree,i)}get(e){return e instanceof ys?this.getBuffer(e.context.buffer,e.index):e instanceof on?this.map.get(e.tree):void 0}cursorSet(e,i){e.buffer?this.setBuffer(e.buffer.buffer,e.index,i):this.map.set(e.tree,i)}cursorGet(e){return e.buffer?this.getBuffer(e.buffer.buffer,e.index):this.map.get(e.tree)}}class go{constructor(e,i,n,r,s=!1,o=!1){this.from=e,this.to=i,this.tree=n,this.offset=r,this.open=(s?1:0)|(o?2:0)}get openStart(){return(this.open&1)>0}get openEnd(){return(this.open&2)>0}static addTree(e,i=[],n=!1){let r=[new go(0,e.length,e,0,!1,n)];for(let s of i)s.to>e.length&&r.push(s);return r}static applyChanges(e,i,n=128){if(!i.length)return e;let r=[],s=1,o=e.length?e[0]:null;for(let l=0,c=0,u=0;;l++){let d=l=n)for(;o&&o.from=g.from||p<=g.to||u){let O=Math.max(g.from,c)-u,_=Math.min(g.to,p)-u;g=O>=_?null:new go(O,_,g.tree,g.offset+u,l>0,!!d)}if(g&&r.push(g),o.to>p)break;o=snew Tr(r.from,r.to)):[new Tr(0,0)]:[new Tr(0,e.length)],this.createParse(e,i||[],n)}parse(e,i,n){let r=this.startParse(e,i,n);for(;;){let s=r.advance();if(s)return s}}}class mY{constructor(e){this.string=e}get length(){return this.string.length}chunk(e){return this.string.slice(e)}get lineChunks(){return!1}read(e,i){return this.string.slice(e,i)}}function $B(t){return(e,i,n,r)=>new OY(e,t,i,n,r)}class QE{constructor(e,i,n,r,s,o){this.parser=e,this.parse=i,this.overlay=n,this.bracketed=r,this.target=s,this.from=o}}function LE(t){if(!t.length||t.some(e=>e.from>=e.to))throw new RangeError("Invalid inner parse ranges given: "+JSON.stringify(t))}class gY{constructor(e,i,n,r,s,o,l,c){this.parser=e,this.predicate=i,this.mounts=n,this.index=r,this.start=s,this.bracketed=o,this.target=l,this.prev=c,this.depth=0,this.ranges=[]}}const kb=new Ne({perNode:!0});class OY{constructor(e,i,n,r,s){this.nest=i,this.input=n,this.fragments=r,this.ranges=s,this.inner=[],this.innerDone=0,this.baseTree=null,this.stoppedAt=null,this.baseParse=e}advance(){if(this.baseParse){let n=this.baseParse.advance();if(!n)return null;if(this.baseParse=null,this.baseTree=n,this.startInner(),this.stoppedAt!=null)for(let r of this.inner)r.parse.stopAt(this.stoppedAt)}if(this.innerDone==this.inner.length){let n=this.baseTree;return this.stoppedAt!=null&&(n=new ct(n.type,n.children,n.positions,n.length,n.propValues.concat([[kb,this.stoppedAt]]))),n}let e=this.inner[this.innerDone],i=e.parse.advance();if(i){this.innerDone++;let n=Object.assign(Object.create(null),e.target.props);n[Ne.mounted.id]=new Fc(i,e.overlay,e.parser,e.bracketed),e.target.props=n}return null}get parsedPos(){if(this.baseParse)return 0;let e=this.input.length;for(let i=this.innerDone;i=this.stoppedAt)l=!1;else if(e.hasNode(r)){if(i){let u=i.mounts.find(d=>d.frag.from<=r.from&&d.frag.to>=r.to&&d.mount.overlay);if(u)for(let d of u.mount.overlay){let p=d.from+u.pos,g=d.to+u.pos;p>=r.from&&g<=r.to&&!i.ranges.some(O=>O.fromp)&&i.ranges.push({from:p,to:g})}}l=!1}else if(n&&(o=vY(n.ranges,r.from,r.to)))l=o!=2;else if(!r.type.isAnonymous&&(s=this.nest(r,this.input))&&(r.fromnew Tr(p.from-r.from,p.to-r.from)):null,!!s.bracketed,r.tree,d.length?d[0].from:r.from)),s.overlay?d.length&&(n={ranges:d,depth:0,prev:n}):l=!1}}else if(i&&(c=i.predicate(r))&&(c===!0&&(c=new Tr(r.from,r.to)),c.from=0&&i.ranges[u].to==c.from?i.ranges[u]={from:i.ranges[u].from,to:c.to}:i.ranges.push(c)}if(l&&r.firstChild())i&&i.depth++,n&&n.depth++;else for(;!r.nextSibling();){if(!r.parent())break e;if(i&&!--i.depth){let u=$E(this.ranges,i.ranges);u.length&&(LE(u),this.inner.splice(i.index,0,new QE(i.parser,i.parser.startParse(this.input,zE(i.mounts,u),u),i.ranges.map(d=>new Tr(d.from-i.start,d.to-i.start)),i.bracketed,i.target,u[0].from))),i=i.prev}n&&!--n.depth&&(n=n.prev)}}}}function vY(t,e,i){for(let n of t){if(n.from>=i)break;if(n.to>e)return n.from<=e&&n.to>=i?2:1}return 0}function DE(t,e,i,n,r,s){if(e=e&&i.enter(n,1,ut.IgnoreOverlays|ut.ExcludeBuffers)||i.next(!1)||(this.done=!0)}hasNode(e){if(this.moveTo(e.from),!this.done&&this.cursor.from+this.offset==e.from&&this.cursor.tree)for(let i=this.cursor.tree;;){if(i==e.tree)return!0;if(i.children.length&&i.positions[0]==0&&i.children[0]instanceof ct)i=i.children[0];else break}return!1}}let yY=class{constructor(e){var i;if(this.fragments=e,this.curTo=0,this.fragI=0,e.length){let n=this.curFrag=e[0];this.curTo=(i=n.tree.prop(kb))!==null&&i!==void 0?i:n.to,this.inner=new BE(n.tree,-n.offset)}else this.curFrag=this.inner=null}hasNode(e){for(;this.curFrag&&e.from>=this.curTo;)this.nextFrag();return this.curFrag&&this.curFrag.from<=e.from&&this.curTo>=e.to&&this.inner.hasNode(e)}nextFrag(){var e;if(this.fragI++,this.fragI==this.fragments.length)this.curFrag=this.inner=null;else{let i=this.curFrag=this.fragments[this.fragI];this.curTo=(e=i.tree.prop(kb))!==null&&e!==void 0?e:i.to,this.inner=new BE(i.tree,-i.offset)}}findMounts(e,i){var n;let r=[];if(this.inner){this.inner.cursor.moveTo(e,1);for(let s=this.inner.cursor.node;s;s=s.parent){let o=(n=s.tree)===null||n===void 0?void 0:n.prop(Ne.mounted);if(o&&o.parser==i)for(let l=this.fragI;l=s.to)break;c.tree==this.curFrag.tree&&r.push({frag:c,pos:s.from-c.offset,mount:o})}}}return r}};function $E(t,e){let i=null,n=e;for(let r=1,s=0;r=l)break;c.to<=o||(i||(n=i=e.slice()),c.froml&&i.splice(s+1,0,new Tr(l,c.to))):c.to>l?i[s--]=new Tr(l,c.to):i.splice(s--,1))}}return n}function bY(t,e,i,n){let r=0,s=0,o=!1,l=!1,c=-1e9,u=[];for(;;){let d=r==t.length?1e9:o?t[r].to:t[r].from,p=s==e.length?1e9:l?e[s].to:e[s].from;if(o!=l){let g=Math.max(c,i),O=Math.min(d,p,n);gnew Tr(g.from+n,g.to+n)),p=bY(e,d,c,u);for(let g=0,O=c;;g++){let _=g==p.length,b=_?u:p[g].from;if(b>O&&i.push(new go(O,b,r.tree,-o,s.from>=O||s.openStart,s.to<=b||s.openEnd)),_)break;O=p[g].to}}else i.push(new go(c,u,r.tree,-o,s.from>=o||s.openStart,s.to<=l||s.openEnd))}return i}let SY=0;class nr{constructor(e,i,n,r){this.name=e,this.set=i,this.base=n,this.modified=r,this.id=SY++}toString(){let{name:e}=this;for(let i of this.modified)i.name&&(e=`${i.name}(${e})`);return e}static define(e,i){let n=typeof e=="string"?e:"?";if(e instanceof nr&&(i=e),i!=null&&i.base)throw new Error("Can not derive from a modified tag");let r=new nr(n,[],null,[]);if(r.set.push(r),i)for(let s of i.set)r.set.push(s);return r}static defineModifier(e){let i=new Pg(e);return n=>n.modified.indexOf(i)>-1?n:Pg.get(n.base||n,n.modified.concat(i).sort((r,s)=>r.id-s.id))}}let xY=0;class Pg{constructor(e){this.name=e,this.instances=[],this.id=xY++}static get(e,i){if(!i.length)return e;let n=i[0].instances.find(l=>l.base==e&&wY(i,l.modified));if(n)return n;let r=[],s=new nr(e.name,r,e,i);for(let l of i)l.instances.push(s);let o=CY(i);for(let l of e.set)if(!l.modified.length)for(let c of o)r.push(Pg.get(l,c));return s}}function wY(t,e){return t.length==e.length&&t.every((i,n)=>i==e[n])}function CY(t){let e=[[]];for(let i=0;in.length-i.length)}function _h(t){let e=Object.create(null);for(let i in t){let n=t[i];Array.isArray(n)||(n=[n]);for(let r of i.split(" "))if(r){let s=[],o=2,l=r;for(let p=0;;){if(l=="..."&&p>0&&p+3==r.length){o=1;break}let g=/^"(?:[^"\\]|\\.)*?"|[^\/!]+/.exec(l);if(!g)throw new RangeError("Invalid path: "+r);if(s.push(g[0]=="*"?"":g[0][0]=='"'?JSON.parse(g[0]):g[0]),p+=g[0].length,p==r.length)break;let O=r[p++];if(p==r.length&&O=="!"){o=0;break}if(O!="/")throw new RangeError("Invalid path: "+r);l=r.slice(p)}let c=s.length-1,u=s[c];if(!u)throw new RangeError("Invalid path: "+r);let d=new jf(n,o,c>0?s.slice(0,c):null);e[u]=d.sort(e[u])}}return zB.add(e)}const zB=new Ne({combine(t,e){let i,n,r;for(;t||e;){if(!t||e&&t.depth>=e.depth?(r=e,e=e.next):(r=t,t=t.next),i&&i.mode==r.mode&&!r.context&&!i.context)continue;let s=new jf(r.tags,r.mode,r.context);i?i.next=s:n=s,i=s}return n}});class jf{constructor(e,i,n,r){this.tags=e,this.mode=i,this.context=n,this.next=r}get opaque(){return this.mode==0}get inherit(){return this.mode==1}sort(e){return!e||e.depth{let o=r;for(let l of s)for(let c of l.set){let u=i[c.id];if(u){o=o?o+" "+u:u;break}}return o},scope:n}}function kY(t,e){let i=null;for(let n of t){let r=n.style(e);r&&(i=i?i+" "+r:r)}return i}function TY(t,e,i,n=0,r=t.length){let s=new AY(n,Array.isArray(e)?e:[e],i);s.highlightRange(t.cursor(),n,r,"",s.highlighters),s.flush(r)}class AY{constructor(e,i,n){this.at=e,this.highlighters=i,this.span=n,this.class=""}startSpan(e,i){i!=this.class&&(this.flush(e),e>this.at&&(this.at=e),this.class=i)}flush(e){e>this.at&&this.class&&this.span(this.at,e,this.class)}highlightRange(e,i,n,r,s){let{type:o,from:l,to:c}=e;if(l>=n||c<=i)return;o.isTop&&(s=this.highlighters.filter(O=>!O.scope||O.scope(o)));let u=r,d=EY(e)||jf.empty,p=kY(s,d.tags);if(p&&(u&&(u+=" "),u+=p,d.mode==1&&(r+=(r?" ":"")+p)),this.startSpan(Math.max(i,l),u),d.opaque)return;let g=e.tree&&e.tree.prop(Ne.mounted);if(g&&g.overlay){let O=e.node.enter(g.overlay[0].from+l,1),_=this.highlighters.filter(x=>!x.scope||x.scope(g.tree.type)),b=e.firstChild();for(let x=0,w=l;;x++){let k=x=T||!e.nextSibling())););if(!k||T>n)break;w=k.to+l,w>i&&(this.highlightRange(O.cursor(),Math.max(i,k.from+l),Math.min(n,w),"",_),this.startSpan(Math.min(n,w),u))}b&&e.parent()}else if(e.firstChild()){g&&(r="");do if(!(e.to<=i)){if(e.from>=n)break;this.highlightRange(e,i,n,r,s),this.startSpan(Math.min(n,e.to),u)}while(e.nextSibling());e.parent()}}}function EY(t){let e=t.type.prop(zB);for(;e&&e.context&&!t.matchContext(e.context);)e=e.next;return e||null}const _e=nr.define,um=_e(),fa=_e(),NE=_e(fa),jE=_e(fa),da=_e(),fm=_e(da),D_=_e(da),us=_e(),tl=_e(us),ss=_e(),os=_e(),Tb=_e(),Au=_e(Tb),dm=_e(),V={comment:um,lineComment:_e(um),blockComment:_e(um),docComment:_e(um),name:fa,variableName:_e(fa),typeName:NE,tagName:_e(NE),propertyName:jE,attributeName:_e(jE),className:_e(fa),labelName:_e(fa),namespace:_e(fa),macroName:_e(fa),literal:da,string:fm,docString:_e(fm),character:_e(fm),attributeValue:_e(fm),number:D_,integer:_e(D_),float:_e(D_),bool:_e(da),regexp:_e(da),escape:_e(da),color:_e(da),url:_e(da),keyword:ss,self:_e(ss),null:_e(ss),atom:_e(ss),unit:_e(ss),modifier:_e(ss),operatorKeyword:_e(ss),controlKeyword:_e(ss),definitionKeyword:_e(ss),moduleKeyword:_e(ss),operator:os,derefOperator:_e(os),arithmeticOperator:_e(os),logicOperator:_e(os),bitwiseOperator:_e(os),compareOperator:_e(os),updateOperator:_e(os),definitionOperator:_e(os),typeOperator:_e(os),controlOperator:_e(os),punctuation:Tb,separator:_e(Tb),bracket:Au,angleBracket:_e(Au),squareBracket:_e(Au),paren:_e(Au),brace:_e(Au),content:us,heading:tl,heading1:_e(tl),heading2:_e(tl),heading3:_e(tl),heading4:_e(tl),heading5:_e(tl),heading6:_e(tl),contentSeparator:_e(us),list:_e(us),quote:_e(us),emphasis:_e(us),strong:_e(us),link:_e(us),monospace:_e(us),strikethrough:_e(us),inserted:_e(),deleted:_e(),changed:_e(),invalid:_e(),meta:dm,documentMeta:_e(dm),annotation:_e(dm),processingInstruction:_e(dm),definition:nr.defineModifier("definition"),constant:nr.defineModifier("constant"),function:nr.defineModifier("function"),standard:nr.defineModifier("standard"),local:nr.defineModifier("local"),special:nr.defineModifier("special")};for(let t in V){let e=V[t];e instanceof nr&&(e.name=t)}NB([{tag:V.link,class:"tok-link"},{tag:V.heading,class:"tok-heading"},{tag:V.emphasis,class:"tok-emphasis"},{tag:V.strong,class:"tok-strong"},{tag:V.keyword,class:"tok-keyword"},{tag:V.atom,class:"tok-atom"},{tag:V.bool,class:"tok-bool"},{tag:V.url,class:"tok-url"},{tag:V.labelName,class:"tok-labelName"},{tag:V.inserted,class:"tok-inserted"},{tag:V.deleted,class:"tok-deleted"},{tag:V.literal,class:"tok-literal"},{tag:V.string,class:"tok-string"},{tag:V.number,class:"tok-number"},{tag:[V.regexp,V.escape,V.special(V.string)],class:"tok-string2"},{tag:V.variableName,class:"tok-variableName"},{tag:V.local(V.variableName),class:"tok-variableName tok-local"},{tag:V.definition(V.variableName),class:"tok-variableName tok-definition"},{tag:V.special(V.variableName),class:"tok-variableName2"},{tag:V.definition(V.propertyName),class:"tok-propertyName tok-definition"},{tag:V.typeName,class:"tok-typeName"},{tag:V.namespace,class:"tok-namespace"},{tag:V.className,class:"tok-className"},{tag:V.macroName,class:"tok-macroName"},{tag:V.propertyName,class:"tok-propertyName"},{tag:V.operator,class:"tok-operator"},{tag:V.comment,class:"tok-comment"},{tag:V.meta,class:"tok-meta"},{tag:V.invalid,class:"tok-invalid"},{tag:V.punctuation,class:"tok-punctuation"}]);var B_;const Ol=new Ne;function Gx(t){return Se.define({combine:t?e=>e.concat(t):void 0})}const Kx=new Ne;class Ar{constructor(e,i,n=[],r=""){this.data=e,this.name=r,et.prototype.hasOwnProperty("tree")||Object.defineProperty(et.prototype,"tree",{get(){return xt(this)}}),this.parser=i,this.extension=[Ta.of(this),et.languageData.of((s,o,l)=>{let c=IE(s,o,l),u=c.type.prop(Ol);if(!u)return[];let d=s.facet(u),p=c.type.prop(Kx);if(p){let g=c.resolve(o-c.from,l);for(let O of p)if(O.test(g,s)){let _=s.facet(O.facet);return O.type=="replace"?_:_.concat(d)}}return d})].concat(n)}isActiveAt(e,i,n=-1){return IE(e,i,n).type.prop(Ol)==this.data}findRegions(e){let i=e.facet(Ta);if((i==null?void 0:i.data)==this.data)return[{from:0,to:e.doc.length}];if(!i||!i.allowsNesting)return[];let n=[],r=(s,o)=>{if(s.prop(Ol)==this.data){n.push({from:o,to:o+s.length});return}let l=s.prop(Ne.mounted);if(l){if(l.tree.prop(Ol)==this.data){if(l.overlay)for(let c of l.overlay)n.push({from:c.from+o,to:c.to+o});else n.push({from:o,to:o+s.length});return}else if(l.overlay){let c=n.length;if(r(l.tree,l.overlay[0].from+o),n.length>c)return}}for(let c=0;cn.isTop?i:void 0)]}),e.name)}configure(e,i){return new lh(this.data,this.parser.configure(e),i||this.name)}get allowsNesting(){return this.parser.hasWrappers()}}function xt(t){let e=t.field(Ar.state,!1);return e?e.tree:ct.empty}class MY{constructor(e){this.doc=e,this.cursorPos=0,this.string="",this.cursor=e.iter()}get length(){return this.doc.length}syncTo(e){return this.string=this.cursor.next(e-this.cursorPos).value,this.cursorPos=e+this.string.length,this.cursorPos-this.string.length}chunk(e){return this.syncTo(e),this.string}get lineChunks(){return!0}read(e,i){let n=this.cursorPos-this.string.length;return e=this.cursorPos?this.doc.sliceString(e,i):this.string.slice(e-n,i-n)}}let Eu=null;class If{constructor(e,i,n=[],r,s,o,l,c){this.parser=e,this.state=i,this.fragments=n,this.tree=r,this.treeLen=s,this.viewport=o,this.skipped=l,this.scheduleOn=c,this.parse=null,this.tempSkipped=[]}static create(e,i,n){return new If(e,i,[],ct.empty,0,n,[],null)}startParse(){return this.parser.startParse(new MY(this.state.doc),this.fragments)}work(e,i){return i!=null&&i>=this.state.doc.length&&(i=void 0),this.tree!=ct.empty&&this.isDone(i??this.state.doc.length)?(this.takeTree(),!0):this.withContext(()=>{var n;if(typeof e=="number"){let r=Date.now()+e;e=()=>Date.now()>r}for(this.parse||(this.parse=this.startParse()),i!=null&&(this.parse.stoppedAt==null||this.parse.stoppedAt>i)&&i=this.treeLen&&((this.parse.stoppedAt==null||this.parse.stoppedAt>e)&&this.parse.stopAt(e),this.withContext(()=>{for(;!(i=this.parse.advance()););}),this.treeLen=e,this.tree=i,this.fragments=this.withoutTempSkipped(go.addTree(this.tree,this.fragments,!0)),this.parse=null)}withContext(e){let i=Eu;Eu=this;try{return e()}finally{Eu=i}}withoutTempSkipped(e){for(let i;i=this.tempSkipped.pop();)e=VE(e,i.from,i.to);return e}changes(e,i){let{fragments:n,tree:r,treeLen:s,viewport:o,skipped:l}=this;if(this.takeTree(),!e.empty){let c=[];if(e.iterChangedRanges((u,d,p,g)=>c.push({fromA:u,toA:d,fromB:p,toB:g})),n=go.applyChanges(n,c),r=ct.empty,s=0,o={from:e.mapPos(o.from,-1),to:e.mapPos(o.to,1)},this.skipped.length){l=[];for(let u of this.skipped){let d=e.mapPos(u.from,1),p=e.mapPos(u.to,-1);de.from&&(this.fragments=VE(this.fragments,r,s),this.skipped.splice(n--,1))}return this.skipped.length>=i?!1:(this.reset(),!0)}reset(){this.parse&&(this.takeTree(),this.parse=null)}skipUntilInView(e,i){this.skipped.push({from:e,to:i})}static getSkippingParser(e){return new class extends Fx{createParse(i,n,r){let s=r[0].from,o=r[r.length-1].to;return{parsedPos:s,advance(){let c=Eu;if(c){for(let u of r)c.tempSkipped.push(u);e&&(c.scheduleOn=c.scheduleOn?Promise.all([c.scheduleOn,e]):e)}return this.parsedPos=o,new ct(_i.none,[],[],o-s)},stoppedAt:null,stopAt(){}}}}}isDone(e){e=Math.min(e,this.state.doc.length);let i=this.fragments;return this.treeLen>=e&&i.length&&i[0].from==0&&i[0].to>=e}static get(){return Eu}}function VE(t,e,i){return go.applyChanges(t,[{fromA:e,toA:i,fromB:e,toB:i}])}class ch{constructor(e){this.context=e,this.tree=e.tree}apply(e){if(!e.docChanged&&this.tree==this.context.tree)return this;let i=this.context.changes(e.changes,e.state),n=this.context.treeLen==e.startState.doc.length?void 0:Math.max(e.changes.mapPos(this.context.treeLen),i.viewport.to);return i.work(20,n)||i.takeTree(),new ch(i)}static init(e){let i=Math.min(3e3,e.doc.length),n=If.create(e.facet(Ta).parser,e,{from:0,to:i});return n.work(20,i)||n.takeTree(),new ch(n)}}Ar.state=Bi.define({create:ch.init,update(t,e){for(let i of e.effects)if(i.is(Ar.setState))return i.value;return e.startState.facet(Ta)!=e.state.facet(Ta)?ch.init(e.state):t.apply(e)}});let jB=t=>{let e=setTimeout(()=>t(),500);return()=>clearTimeout(e)};typeof requestIdleCallback<"u"&&(jB=t=>{let e=-1,i=setTimeout(()=>{e=requestIdleCallback(t,{timeout:400})},100);return()=>e<0?clearTimeout(i):cancelIdleCallback(e)});const $_=typeof navigator<"u"&&(!((B_=navigator.scheduling)===null||B_===void 0)&&B_.isInputPending)?()=>navigator.scheduling.isInputPending():null,PY=Jt.fromClass(class{constructor(e){this.view=e,this.working=null,this.workScheduled=0,this.chunkEnd=-1,this.chunkBudget=-1,this.work=this.work.bind(this),this.scheduleWork()}update(e){let i=this.view.state.field(Ar.state).context;(i.updateViewport(e.view.viewport)||this.view.viewport.to>i.treeLen)&&this.scheduleWork(),(e.docChanged||e.selectionSet)&&(this.view.hasFocus&&(this.chunkBudget+=50),this.scheduleWork()),this.checkAsyncSchedule(i)}scheduleWork(){if(this.working)return;let{state:e}=this.view,i=e.field(Ar.state);(i.tree!=i.context.tree||!i.context.isDone(e.doc.length))&&(this.working=jB(this.work))}work(e){this.working=null;let i=Date.now();if(this.chunkEndr+1e3,c=s.context.work(()=>$_&&$_()||Date.now()>o,r+(l?0:1e5));this.chunkBudget-=Date.now()-i,(c||this.chunkBudget<=0)&&(s.context.takeTree(),this.view.dispatch({effects:Ar.setState.of(new ch(s.context))})),this.chunkBudget>0&&!(c&&!l)&&this.scheduleWork(),this.checkAsyncSchedule(s.context)}checkAsyncSchedule(e){e.scheduleOn&&(this.workScheduled++,e.scheduleOn.then(()=>this.scheduleWork()).catch(i=>$n(this.view.state,i)).then(()=>this.workScheduled--),e.scheduleOn=null)}destroy(){this.working&&this.working()}isWorking(){return!!(this.working||this.workScheduled>0)}},{eventHandlers:{focus(){this.scheduleWork()}}}),Ta=Se.define({combine(t){return t.length?t[0]:null},enables:t=>[Ar.state,PY,ve.contentAttributes.compute([t],e=>{let i=e.facet(t);return i&&i.name?{"data-language":i.name}:{}})]});class Vf{constructor(e,i=[]){this.language=e,this.support=i,this.extension=[e,i]}}class Rg{constructor(e,i,n,r,s,o=void 0){this.name=e,this.alias=i,this.extensions=n,this.filename=r,this.loadFunc=s,this.support=o,this.loading=null}load(){return this.loading||(this.loading=this.loadFunc().then(e=>this.support=e,e=>{throw this.loading=null,e}))}static of(e){let{load:i,support:n}=e;if(!i){if(!n)throw new RangeError("Must pass either 'load' or 'support' to LanguageDescription.of");i=()=>Promise.resolve(n)}return new Rg(e.name,(e.alias||[]).concat(e.name).map(r=>r.toLowerCase()),e.extensions||[],e.filename,i,n)}static matchFilename(e,i){for(let r of e)if(r.filename&&r.filename.test(i))return r;let n=/\.([^.]+)$/.exec(i);if(n){for(let r of e)if(r.extensions.indexOf(n[1])>-1)return r}return null}static matchLanguageName(e,i,n=!0){i=i.toLowerCase();for(let r of e)if(r.alias.some(s=>s==i))return r;if(n)for(let r of e)for(let s of r.alias){let o=i.indexOf(s);if(o>-1&&(s.length>2||!/\w/.test(i[o-1])&&!/\w/.test(i[o+s.length])))return r}return null}}const RY=Se.define(),yh=Se.define({combine:t=>{if(!t.length)return" ";let e=t[0];if(!e||/\S/.test(e)||Array.from(e).some(i=>i!=e[0]))throw new Error("Invalid indent unit: "+JSON.stringify(t[0]));return e}});function Qg(t){let e=t.facet(yh);return e.charCodeAt(0)==9?t.tabSize*e.length:e.length}function Xf(t,e){let i="",n=t.tabSize,r=t.facet(yh)[0];if(r==" "){for(;e>=n;)i+=" ",e-=n;r=" "}for(let s=0;s=e?QY(t,i,e):null}class vO{constructor(e,i={}){this.state=e,this.options=i,this.unit=Qg(e)}lineAt(e,i=1){let n=this.state.doc.lineAt(e),{simulateBreak:r,simulateDoubleBreak:s}=this.options;return r!=null&&r>=n.from&&r<=n.to?s&&r==e?{text:"",from:e}:(i<0?r-1&&(s+=o-this.countColumn(n,n.search(/\S|$/))),s}countColumn(e,i=e.length){return Yr(e,this.state.tabSize,i)}lineIndent(e,i=1){let{text:n,from:r}=this.lineAt(e,i),s=this.options.overrideIndentation;if(s){let o=s(r);if(o>-1)return o}return this.countColumn(n,n.search(/\S|$/))}get simulatedBreak(){return this.options.simulateBreak||null}}const md=new Ne;function QY(t,e,i){let n=e.resolveStack(i),r=e.resolveInner(i,-1).resolve(i,0).enterUnfinishedNodesBefore(i);if(r!=n.node){let s=[];for(let o=r;o&&!(o.fromn.node.to||o.from==n.node.from&&o.type==n.node.type);o=o.parent)s.push(o);for(let o=s.length-1;o>=0;o--)n={node:s[o],next:n}}return IB(n,t,i)}function IB(t,e,i){for(let n=t;n;n=n.next){let r=DY(n.node);if(r)return r(ew.create(e,i,n))}return 0}function LY(t){return t.pos==t.options.simulateBreak&&t.options.simulateDoubleBreak}function DY(t){let e=t.type.prop(md);if(e)return e;let i=t.firstChild,n;if(i&&(n=i.type.prop(Ne.closedBy))){let r=t.lastChild,s=r&&n.indexOf(r.name)>-1;return o=>VB(o,!0,1,void 0,s&&!LY(o)?r.from:void 0)}return t.parent==null?BY:null}function BY(){return 0}class ew extends vO{constructor(e,i,n){super(e.state,e.options),this.base=e,this.pos=i,this.context=n}get node(){return this.context.node}static create(e,i,n){return new ew(e,i,n)}get textAfter(){return this.textAfterPos(this.pos)}get baseIndent(){return this.baseIndentFor(this.node)}baseIndentFor(e){let i=this.state.doc.lineAt(e.from);for(;;){let n=e.resolve(i.from);for(;n.parent&&n.parent.from==n.from;)n=n.parent;if($Y(n,e))break;i=this.state.doc.lineAt(n.from)}return this.lineIndent(i.from)}continue(){return IB(this.context.next,this.base,this.pos)}}function $Y(t,e){for(let i=e;i;i=i.parent)if(t==i)return!0;return!1}function zY(t){let e=t.node,i=e.childAfter(e.from),n=e.lastChild;if(!i)return null;let r=t.options.simulateBreak,s=t.state.doc.lineAt(i.from),o=r==null||r<=s.from?s.to:Math.min(s.to,r);for(let l=i.to;;){let c=e.childAfter(l);if(!c||c==n)return null;if(!c.type.isSkipped){if(c.from>=o)return null;let u=/^ */.exec(s.text.slice(i.to-s.from))[0].length;return{from:i.from,to:i.to+u}}l=c.to}}function NY({closing:t,align:e=!0,units:i=1}){return n=>VB(n,e,i,t)}function VB(t,e,i,n,r){let s=t.textAfter,o=s.match(/^\s*/)[0].length,l=n&&s.slice(o,o+n.length)==n||r==t.pos+o,c=e?zY(t):null;return c?l?t.column(c.from):t.column(c.to):t.baseIndent+(l?0:t.unit*i)}const jY=t=>t.baseIndent;function Ym({except:t,units:e=1}={}){return i=>{let n=t&&t.test(i.textAfter);return i.baseIndent+(n?0:e*i.unit)}}const IY=200;function VY(){return et.transactionFilter.of(t=>{if(!t.docChanged||!t.isUserEvent("input.type")&&!t.isUserEvent("input.complete"))return t;let e=t.startState.languageDataAt("indentOnInput",t.startState.selection.main.head);if(!e.length)return t;let i=t.newDoc,{head:n}=t.newSelection.main,r=i.lineAt(n);if(n>r.from+IY)return t;let s=i.sliceString(r.from,n);if(!e.some(u=>u.test(s)))return t;let{state:o}=t,l=-1,c=[];for(let{head:u}of o.selection.ranges){let d=o.doc.lineAt(u);if(d.from==l)continue;l=d.from;let p=Jx(o,d.from);if(p==null)continue;let g=/^\s*/.exec(d.text)[0],O=Xf(o,p);g!=O&&c.push({from:d.from,to:d.from+g.length,insert:O})}return c.length?[t,{changes:c,sequential:!0}]:t})}const XB=Se.define(),bh=new Ne;function ZB(t){let e=t.firstChild,i=t.lastChild;return e&&e.toi)continue;if(s&&l.from=e&&u.to>i&&(s=u)}}return s}function ZY(t){let e=t.lastChild;return e&&e.to==t.to&&e.type.isError}function Lg(t,e,i){for(let n of t.facet(XB)){let r=n(t,e,i);if(r)return r}return XY(t,e,i)}function qB(t,e){let i=e.mapPos(t.from,1),n=e.mapPos(t.to,-1);return i>=n?void 0:{from:i,to:n}}const _O=ze.define({map:qB}),gd=ze.define({map:qB});function WB(t){let e=[];for(let{head:i}of t.state.selection.ranges)e.some(n=>n.from<=i&&n.to>=i)||e.push(t.lineBlockAt(i));return e}const El=Bi.define({create(){return Pe.none},update(t,e){e.isUserEvent("delete")&&e.changes.iterChangedRanges((i,n)=>t=XE(t,i,n)),t=t.map(e.changes);for(let i of e.effects)if(i.is(_O)&&!qY(t,i.value.from,i.value.to)){let{preparePlaceholder:n}=e.state.facet(HB),r=n?Pe.replace({widget:new KY(n(e.state,i.value))}):ZE;t=t.update({add:[r.range(i.value.from,i.value.to)]})}else i.is(gd)&&(t=t.update({filter:(n,r)=>i.value.from!=n||i.value.to!=r,filterFrom:i.value.from,filterTo:i.value.to}));return e.selection&&(t=XE(t,e.selection.main.head)),t},provide:t=>ve.decorations.from(t),toJSON(t,e){let i=[];return t.between(0,e.doc.length,(n,r)=>{i.push(n,r)}),i},fromJSON(t){if(!Array.isArray(t)||t.length%2)throw new RangeError("Invalid JSON for fold state");let e=[];for(let i=0;i{re&&(n=!0)}),n?t.update({filterFrom:e,filterTo:i,filter:(r,s)=>r>=i||s<=e}):t}function Dg(t,e,i){var n;let r=null;return(n=t.field(El,!1))===null||n===void 0||n.between(e,i,(s,o)=>{(!r||r.from>s)&&(r={from:s,to:o})}),r}function qY(t,e,i){let n=!1;return t.between(e,e,(r,s)=>{r==e&&s==i&&(n=!0)}),n}function UB(t,e){return t.field(El,!1)?e:e.concat(ze.appendConfig.of(FB()))}const WY=t=>{for(let e of WB(t)){let i=Lg(t.state,e.from,e.to);if(i)return t.dispatch({effects:UB(t.state,[_O.of(i),YB(t,i)])}),!0}return!1},UY=t=>{if(!t.state.field(El,!1))return!1;let e=[];for(let i of WB(t)){let n=Dg(t.state,i.from,i.to);n&&e.push(gd.of(n),YB(t,n,!1))}return e.length&&t.dispatch({effects:e}),e.length>0};function YB(t,e,i=!0){let n=t.state.doc.lineAt(e.from).number,r=t.state.doc.lineAt(e.to).number;return ve.announce.of(`${t.state.phrase(i?"Folded lines":"Unfolded lines")} ${n} ${t.state.phrase("to")} ${r}.`)}const YY=t=>{let{state:e}=t,i=[];for(let n=0;n{let e=t.state.field(El,!1);if(!e||!e.size)return!1;let i=[];return e.between(0,t.state.doc.length,(n,r)=>{i.push(gd.of({from:n,to:r}))}),t.dispatch({effects:i}),!0},FY=[{key:"Ctrl-Shift-[",mac:"Cmd-Alt-[",run:WY},{key:"Ctrl-Shift-]",mac:"Cmd-Alt-]",run:UY},{key:"Ctrl-Alt-[",run:YY},{key:"Ctrl-Alt-]",run:HY}],GY={placeholderDOM:null,preparePlaceholder:null,placeholderText:"…"},HB=Se.define({combine(t){return Qs(t,GY)}});function FB(t){return[El,tH]}function GB(t,e){let{state:i}=t,n=i.facet(HB),r=o=>{let l=t.lineBlockAt(t.posAtDOM(o.target)),c=Dg(t.state,l.from,l.to);c&&t.dispatch({effects:gd.of(c)}),o.preventDefault()};if(n.placeholderDOM)return n.placeholderDOM(t,r,e);let s=document.createElement("span");return s.textContent=n.placeholderText,s.setAttribute("aria-label",i.phrase("folded code")),s.title=i.phrase("unfold"),s.className="cm-foldPlaceholder",s.onclick=r,s}const ZE=Pe.replace({widget:new class extends Gr{toDOM(t){return GB(t,null)}}});class KY extends Gr{constructor(e){super(),this.value=e}eq(e){return this.value==e.value}toDOM(e){return GB(e,this.value)}}const JY={openText:"⌄",closedText:"›",markerDOM:null,domEventHandlers:{},foldingChanged:()=>!1};class z_ extends bo{constructor(e,i){super(),this.config=e,this.open=i}eq(e){return this.config==e.config&&this.open==e.open}toDOM(e){if(this.config.markerDOM)return this.config.markerDOM(this.open);let i=document.createElement("span");return i.textContent=this.open?this.config.openText:this.config.closedText,i.title=e.state.phrase(this.open?"Fold line":"Unfold line"),i}}function eH(t={}){let e={...JY,...t},i=new z_(e,!0),n=new z_(e,!1),r=Jt.fromClass(class{constructor(o){this.from=o.viewport.from,this.markers=this.buildMarkers(o)}update(o){(o.docChanged||o.viewportChanged||o.startState.facet(Ta)!=o.state.facet(Ta)||o.startState.field(El,!1)!=o.state.field(El,!1)||xt(o.startState)!=xt(o.state)||e.foldingChanged(o))&&(this.markers=this.buildMarkers(o.view))}buildMarkers(o){let l=new _o;for(let c of o.viewportLineBlocks){let u=Dg(o.state,c.from,c.to)?n:Lg(o.state,c.from,c.to)?i:null;u&&l.add(c.from,c.from,u)}return l.finish()}}),{domEventHandlers:s}=e;return[r,KU({class:"cm-foldGutter",markers(o){var l;return((l=o.plugin(r))===null||l===void 0?void 0:l.markers)||Ge.empty},initialSpacer(){return new z_(e,!1)},domEventHandlers:{...s,click:(o,l,c)=>{if(s.click&&s.click(o,l,c))return!0;let u=Dg(o.state,l.from,l.to);if(u)return o.dispatch({effects:gd.of(u)}),!0;let d=Lg(o.state,l.from,l.to);return d?(o.dispatch({effects:_O.of(d)}),!0):!1}}}),FB()]}const tH=ve.baseTheme({".cm-foldPlaceholder":{backgroundColor:"#eee",border:"1px solid #ddd",color:"#888",borderRadius:".2em",margin:"0 1px",padding:"0 1px",cursor:"pointer"},".cm-foldGutter span":{padding:"0 1px",cursor:"pointer"}});class Od{constructor(e,i){this.specs=e;let n;function r(l){let c=xa.newName();return(n||(n=Object.create(null)))["."+c]=l,c}const s=typeof i.all=="string"?i.all:i.all?r(i.all):void 0,o=i.scope;this.scope=o instanceof Ar?l=>l.prop(Ol)==o.data:o?l=>l==o:void 0,this.style=NB(e.map(l=>({tag:l.tag,class:l.class||r(Object.assign({},l,{tag:null}))})),{all:s}).style,this.module=n?new xa(n):null,this.themeType=i.themeType}static define(e,i){return new Od(e,i||{})}}const Ab=Se.define(),KB=Se.define({combine(t){return t.length?[t[0]]:null}});function N_(t){let e=t.facet(Ab);return e.length?e:t.facet(KB)}function JB(t,e){let i=[nH],n;return t instanceof Od&&(t.module&&i.push(ve.styleModule.of(t.module)),n=t.themeType),e!=null&&e.fallback?i.push(KB.of(t)):n?i.push(Ab.computeN([ve.darkTheme],r=>r.facet(ve.darkTheme)==(n=="dark")?[t]:[])):i.push(Ab.of(t)),i}class iH{constructor(e){this.markCache=Object.create(null),this.tree=xt(e.state),this.decorations=this.buildDeco(e,N_(e.state)),this.decoratedTo=e.viewport.to}update(e){let i=xt(e.state),n=N_(e.state),r=n!=N_(e.startState),{viewport:s}=e.view,o=e.changes.mapPos(this.decoratedTo,1);i.length=s.to?(this.decorations=this.decorations.map(e.changes),this.decoratedTo=o):(i!=this.tree||e.viewportChanged||r)&&(this.tree=i,this.decorations=this.buildDeco(e.view,n),this.decoratedTo=s.to)}buildDeco(e,i){if(!i||!this.tree.length)return Pe.none;let n=new _o;for(let{from:r,to:s}of e.visibleRanges)TY(this.tree,i,(o,l,c)=>{n.add(o,l,this.markCache[c]||(this.markCache[c]=Pe.mark({class:c})))},r,s);return n.finish()}}const nH=So.high(Jt.fromClass(iH,{decorations:t=>t.decorations})),rH=Od.define([{tag:V.meta,color:"#404740"},{tag:V.link,textDecoration:"underline"},{tag:V.heading,textDecoration:"underline",fontWeight:"bold"},{tag:V.emphasis,fontStyle:"italic"},{tag:V.strong,fontWeight:"bold"},{tag:V.strikethrough,textDecoration:"line-through"},{tag:V.keyword,color:"#708"},{tag:[V.atom,V.bool,V.url,V.contentSeparator,V.labelName],color:"#219"},{tag:[V.literal,V.inserted],color:"#164"},{tag:[V.string,V.deleted],color:"#a11"},{tag:[V.regexp,V.escape,V.special(V.string)],color:"#e40"},{tag:V.definition(V.variableName),color:"#00f"},{tag:V.local(V.variableName),color:"#30a"},{tag:[V.typeName,V.namespace],color:"#085"},{tag:V.className,color:"#167"},{tag:[V.special(V.variableName),V.macroName],color:"#256"},{tag:V.definition(V.propertyName),color:"#00c"},{tag:V.comment,color:"#940"},{tag:V.invalid,color:"#f00"}]),sH=ve.baseTheme({"&.cm-focused .cm-matchingBracket":{backgroundColor:"#328c8252"},"&.cm-focused .cm-nonmatchingBracket":{backgroundColor:"#bb555544"}}),e$=1e4,t$="()[]{}",i$=Se.define({combine(t){return Qs(t,{afterCursor:!0,brackets:t$,maxScanDistance:e$,renderMatch:lH})}}),oH=Pe.mark({class:"cm-matchingBracket"}),aH=Pe.mark({class:"cm-nonmatchingBracket"});function lH(t){let e=[],i=t.matched?oH:aH;return e.push(i.range(t.start.from,t.start.to)),t.end&&e.push(i.range(t.end.from,t.end.to)),e}const cH=Bi.define({create(){return Pe.none},update(t,e){if(!e.docChanged&&!e.selection)return t;let i=[],n=e.state.facet(i$);for(let r of e.state.selection.ranges){if(!r.empty)continue;let s=bs(e.state,r.head,-1,n)||r.head>0&&bs(e.state,r.head-1,1,n)||n.afterCursor&&(bs(e.state,r.head,1,n)||r.headve.decorations.from(t)}),hH=[cH,sH];function uH(t={}){return[i$.of(t),hH]}const n$=new Ne;function Eb(t,e,i){let n=t.prop(e<0?Ne.openedBy:Ne.closedBy);if(n)return n;if(t.name.length==1){let r=i.indexOf(t.name);if(r>-1&&r%2==(e<0?1:0))return[i[r+e]]}return null}function Mb(t){let e=t.type.prop(n$);return e?e(t.node):t}function bs(t,e,i,n={}){let r=n.maxScanDistance||e$,s=n.brackets||t$,o=xt(t),l=o.resolveInner(e,i);for(let c=l;c;c=c.parent){let u=Eb(c.type,i,s);if(u&&c.from0?e>=d.from&&ed.from&&e<=d.to))return fH(t,e,i,c,d,u,s)}}return dH(t,e,i,o,l.type,r,s)}function fH(t,e,i,n,r,s,o){let l=n.parent,c={from:r.from,to:r.to},u=0,d=l==null?void 0:l.cursor();if(d&&(i<0?d.childBefore(n.from):d.childAfter(n.to)))do if(i<0?d.to<=n.from:d.from>=n.to){if(u==0&&s.indexOf(d.type.name)>-1&&d.from0)return null;let u={from:i<0?e-1:e,to:i>0?e+1:e},d=t.doc.iterRange(e,i>0?t.doc.length:0),p=0;for(let g=0;!d.next().done&&g<=s;){let O=d.value;i<0&&(g+=O.length);let _=e+g*i;for(let b=i>0?0:O.length-1,x=i>0?O.length:-1;b!=x;b+=i){let w=o.indexOf(O[b]);if(!(w<0||n.resolveInner(_+b,1).type!=r))if(w%2==0==i>0)p++;else{if(p==1)return{start:u,end:{from:_+b,to:_+b+1},matched:w>>1==c>>1};p--}}i>0&&(g+=O.length)}return d.done?{start:u,matched:!1}:null}const pH=Object.create(null),qE=[_i.none],WE=[],UE=Object.create(null),mH=Object.create(null);for(let[t,e]of[["variable","variableName"],["variable-2","variableName.special"],["string-2","string.special"],["def","variableName.definition"],["tag","tagName"],["attribute","attributeName"],["type","typeName"],["builtin","variableName.standard"],["qualifier","modifier"],["error","invalid"],["header","heading"],["property","propertyName"]])mH[t]=gH(pH,e);function j_(t,e){WE.indexOf(t)>-1||(WE.push(t),console.warn(e))}function gH(t,e){let i=[];for(let l of e.split(" ")){let c=[];for(let u of l.split(".")){let d=t[u]||V[u];d?typeof d=="function"?c.length?c=c.map(d):j_(u,`Modifier ${u} used at start of tag`):c.length?j_(u,`Tag ${u} used as modifier`):c=Array.isArray(d)?d:[d]:j_(u,`Unknown highlighting tag ${u}`)}for(let u of c)i.push(u)}if(!i.length)return 0;let n=e.replace(/ /g,"_"),r=n+" "+i.map(l=>l.id),s=UE[r];if(s)return s.id;let o=UE[r]=_i.define({id:qE.length,name:n,props:[_h({[n]:i})]});return qE.push(o),o.id}St.RTL,St.LTR;const OH=t=>{let{state:e}=t,i=e.doc.lineAt(e.selection.main.from),n=iw(t.state,i.from);return n.line?vH(t):n.block?yH(t):!1};function tw(t,e){return({state:i,dispatch:n})=>{if(i.readOnly)return!1;let r=t(e,i);return r?(n(i.update(r)),!0):!1}}const vH=tw(xH,0),_H=tw(r$,0),yH=tw((t,e)=>r$(t,e,SH(e)),0);function iw(t,e){let i=t.languageDataAt("commentTokens",e,1);return i.length?i[0]:{}}const Mu=50;function bH(t,{open:e,close:i},n,r){let s=t.sliceDoc(n-Mu,n),o=t.sliceDoc(r,r+Mu),l=/\s*$/.exec(s)[0].length,c=/^\s*/.exec(o)[0].length,u=s.length-l;if(s.slice(u-e.length,u)==e&&o.slice(c,c+i.length)==i)return{open:{pos:n-l,margin:l&&1},close:{pos:r+c,margin:c&&1}};let d,p;r-n<=2*Mu?d=p=t.sliceDoc(n,r):(d=t.sliceDoc(n,n+Mu),p=t.sliceDoc(r-Mu,r));let g=/^\s*/.exec(d)[0].length,O=/\s*$/.exec(p)[0].length,_=p.length-O-i.length;return d.slice(g,g+e.length)==e&&p.slice(_,_+i.length)==i?{open:{pos:n+g+e.length,margin:/\s/.test(d.charAt(g+e.length))?1:0},close:{pos:r-O-i.length,margin:/\s/.test(p.charAt(_-1))?1:0}}:null}function SH(t){let e=[];for(let i of t.selection.ranges){let n=t.doc.lineAt(i.from),r=i.to<=n.to?n:t.doc.lineAt(i.to);r.from>n.from&&r.from==i.to&&(r=i.to==n.to+1?n:t.doc.lineAt(i.to-1));let s=e.length-1;s>=0&&e[s].to>n.from?e[s].to=r.to:e.push({from:n.from+/^\s*/.exec(n.text)[0].length,to:r.to})}return e}function r$(t,e,i=e.selection.ranges){let n=i.map(s=>iw(e,s.from).block);if(!n.every(s=>s))return null;let r=i.map((s,o)=>bH(e,n[o],s.from,s.to));if(t!=2&&!r.every(s=>s))return{changes:e.changes(i.map((s,o)=>r[o]?[]:[{from:s.from,insert:n[o].open+" "},{from:s.to,insert:" "+n[o].close}]))};if(t!=1&&r.some(s=>s)){let s=[];for(let o=0,l;or&&(s==o||o>p.from)){r=p.from;let g=/^\s*/.exec(p.text)[0].length,O=g==p.length,_=p.text.slice(g,g+u.length)==u?g:-1;gs.comment<0&&(!s.empty||s.single))){let s=[];for(let{line:l,token:c,indent:u,empty:d,single:p}of n)(p||!d)&&s.push({from:l.from+u,insert:c+" "});let o=e.changes(s);return{changes:o,selection:e.selection.map(o,1)}}else if(t!=1&&n.some(s=>s.comment>=0)){let s=[];for(let{line:o,comment:l,token:c}of n)if(l>=0){let u=o.from+l,d=u+c.length;o.text[d-o.from]==" "&&d++,s.push({from:u,to:d})}return{changes:s}}return null}const Pb=Rs.define(),wH=Rs.define(),CH=Se.define(),s$=Se.define({combine(t){return Qs(t,{minDepth:100,newGroupDelay:500,joinToEvent:(e,i)=>i},{minDepth:Math.max,newGroupDelay:Math.min,joinToEvent:(e,i)=>(n,r)=>e(n,r)||i(n,r)})}}),o$=Bi.define({create(){return Ss.empty},update(t,e){let i=e.state.facet(s$),n=e.annotation(Pb);if(n){let c=zn.fromTransaction(e,n.selection),u=n.side,d=u==0?t.undone:t.done;return c?d=Bg(d,d.length,i.minDepth,c):d=c$(d,e.startState.selection),new Ss(u==0?n.rest:d,u==0?d:n.rest)}let r=e.annotation(wH);if((r=="full"||r=="before")&&(t=t.isolate()),e.annotation(hi.addToHistory)===!1)return e.changes.empty?t:t.addMapping(e.changes.desc);let s=zn.fromTransaction(e),o=e.annotation(hi.time),l=e.annotation(hi.userEvent);return s?t=t.addChanges(s,o,l,i,e):e.selection&&(t=t.addSelection(e.startState.selection,o,l,i.newGroupDelay)),(r=="full"||r=="after")&&(t=t.isolate()),t},toJSON(t){return{done:t.done.map(e=>e.toJSON()),undone:t.undone.map(e=>e.toJSON())}},fromJSON(t){return new Ss(t.done.map(zn.fromJSON),t.undone.map(zn.fromJSON))}});function kH(t={}){return[o$,s$.of(t),ve.domEventHandlers({beforeinput(e,i){let n=e.inputType=="historyUndo"?a$:e.inputType=="historyRedo"?Rb:null;return n?(e.preventDefault(),n(i)):!1}})]}function yO(t,e){return function({state:i,dispatch:n}){if(!e&&i.readOnly)return!1;let r=i.field(o$,!1);if(!r)return!1;let s=r.pop(t,i,e);return s?(n(s),!0):!1}}const a$=yO(0,!1),Rb=yO(1,!1),TH=yO(0,!0),AH=yO(1,!0);class zn{constructor(e,i,n,r,s){this.changes=e,this.effects=i,this.mapped=n,this.startSelection=r,this.selectionsAfter=s}setSelAfter(e){return new zn(this.changes,this.effects,this.mapped,this.startSelection,e)}toJSON(){var e,i,n;return{changes:(e=this.changes)===null||e===void 0?void 0:e.toJSON(),mapped:(i=this.mapped)===null||i===void 0?void 0:i.toJSON(),startSelection:(n=this.startSelection)===null||n===void 0?void 0:n.toJSON(),selectionsAfter:this.selectionsAfter.map(r=>r.toJSON())}}static fromJSON(e){return new zn(e.changes&&vi.fromJSON(e.changes),[],e.mapped&&Cs.fromJSON(e.mapped),e.startSelection&&se.fromJSON(e.startSelection),e.selectionsAfter.map(se.fromJSON))}static fromTransaction(e,i){let n=Er;for(let r of e.startState.facet(CH)){let s=r(e);s.length&&(n=n.concat(s))}return!n.length&&e.changes.empty?null:new zn(e.changes.invert(e.startState.doc),n,void 0,i||e.startState.selection,Er)}static selection(e){return new zn(void 0,Er,void 0,void 0,e)}}function Bg(t,e,i,n){let r=e+1>i+20?e-i-1:0,s=t.slice(r,e);return s.push(n),s}function EH(t,e){let i=[],n=!1;return t.iterChangedRanges((r,s)=>i.push(r,s)),e.iterChangedRanges((r,s,o,l)=>{for(let c=0;c=u&&o<=d&&(n=!0)}}),n}function MH(t,e){return t.ranges.length==e.ranges.length&&t.ranges.filter((i,n)=>i.empty!=e.ranges[n].empty).length===0}function l$(t,e){return t.length?e.length?t.concat(e):t:e}const Er=[],PH=200;function c$(t,e){if(t.length){let i=t[t.length-1],n=i.selectionsAfter.slice(Math.max(0,i.selectionsAfter.length-PH));return n.length&&n[n.length-1].eq(e)?t:(n.push(e),Bg(t,t.length-1,1e9,i.setSelAfter(n)))}else return[zn.selection([e])]}function RH(t){let e=t[t.length-1],i=t.slice();return i[t.length-1]=e.setSelAfter(e.selectionsAfter.slice(0,e.selectionsAfter.length-1)),i}function I_(t,e){if(!t.length)return t;let i=t.length,n=Er;for(;i;){let r=QH(t[i-1],e,n);if(r.changes&&!r.changes.empty||r.effects.length){let s=t.slice(0,i);return s[i-1]=r,s}else e=r.mapped,i--,n=r.selectionsAfter}return n.length?[zn.selection(n)]:Er}function QH(t,e,i){let n=l$(t.selectionsAfter.length?t.selectionsAfter.map(l=>l.map(e)):Er,i);if(!t.changes)return zn.selection(n);let r=t.changes.map(e),s=e.mapDesc(t.changes,!0),o=t.mapped?t.mapped.composeDesc(s):s;return new zn(r,ze.mapEffects(t.effects,e),o,t.startSelection.map(s),n)}const LH=/^(input\.type|delete)($|\.)/;class Ss{constructor(e,i,n=0,r=void 0){this.done=e,this.undone=i,this.prevTime=n,this.prevUserEvent=r}isolate(){return this.prevTime?new Ss(this.done,this.undone):this}addChanges(e,i,n,r,s){let o=this.done,l=o[o.length-1];return l&&l.changes&&!l.changes.empty&&e.changes&&(!n||LH.test(n))&&(!l.selectionsAfter.length&&i-this.prevTime0&&i-this.prevTimei.empty?t.moveByChar(i,e):bO(i,e))}function an(t){return t.textDirectionAt(t.state.selection.main.head)==St.LTR}const u$=t=>h$(t,!an(t)),f$=t=>h$(t,an(t));function d$(t,e){return Jr(t,i=>i.empty?t.moveByGroup(i,e):bO(i,e))}const BH=t=>d$(t,!an(t)),$H=t=>d$(t,an(t));function zH(t,e,i){if(e.type.prop(i))return!0;let n=e.to-e.from;return n&&(n>2||/[^\s,.;:]/.test(t.sliceDoc(e.from,e.to)))||e.firstChild}function SO(t,e,i){let n=xt(t).resolveInner(e.head),r=i?Ne.closedBy:Ne.openedBy;for(let c=e.head;;){let u=i?n.childAfter(c):n.childBefore(c);if(!u)break;zH(t,u,r)?n=u:c=i?u.to:u.from}let s=n.type.prop(r),o,l;return s&&(o=i?bs(t,n.from,1):bs(t,n.to,-1))&&o.matched?l=i?o.end.to:o.end.from:l=i?n.to:n.from,se.cursor(l,i?-1:1)}const NH=t=>Jr(t,e=>SO(t.state,e,!an(t))),jH=t=>Jr(t,e=>SO(t.state,e,an(t)));function p$(t,e){return Jr(t,i=>{if(!i.empty)return bO(i,e);let n=t.moveVertically(i,e);return n.head!=i.head?n:t.moveToLineBoundary(i,e)})}const m$=t=>p$(t,!1),g$=t=>p$(t,!0);function O$(t){let e=t.scrollDOM.clientHeighto.empty?t.moveVertically(o,e,i.height):bO(o,e));if(r.eq(n.selection))return!1;let s;if(i.selfScroll){let o=t.coordsAtPos(n.selection.main.head),l=t.scrollDOM.getBoundingClientRect(),c=l.top+i.marginTop,u=l.bottom-i.marginBottom;o&&o.top>c&&o.bottomv$(t,!1),Qb=t=>v$(t,!0);function Ra(t,e,i){let n=t.lineBlockAt(e.head),r=t.moveToLineBoundary(e,i);if(r.head==e.head&&r.head!=(i?n.to:n.from)&&(r=t.moveToLineBoundary(e,i,!1)),!i&&r.head==n.from&&n.length){let s=/^\s*/.exec(t.state.sliceDoc(n.from,Math.min(n.from+100,n.to)))[0].length;s&&e.head!=n.from+s&&(r=se.cursor(n.from+s))}return r}const IH=t=>Jr(t,e=>Ra(t,e,!0)),VH=t=>Jr(t,e=>Ra(t,e,!1)),XH=t=>Jr(t,e=>Ra(t,e,!an(t))),ZH=t=>Jr(t,e=>Ra(t,e,an(t))),qH=t=>Jr(t,e=>se.cursor(t.lineBlockAt(e.head).from,1)),WH=t=>Jr(t,e=>se.cursor(t.lineBlockAt(e.head).to,-1));function UH(t,e,i){let n=!1,r=Sh(t.selection,s=>{let o=bs(t,s.head,-1)||bs(t,s.head,1)||s.head>0&&bs(t,s.head-1,1)||s.headUH(t,e);function Lr(t,e){let i=Sh(t.state.selection,n=>{let r=e(n);return se.range(n.anchor,r.head,r.goalColumn,r.bidiLevel||void 0)});return i.eq(t.state.selection)?!1:(t.dispatch(Kr(t.state,i)),!0)}function _$(t,e){return Lr(t,i=>t.moveByChar(i,e))}const y$=t=>_$(t,!an(t)),b$=t=>_$(t,an(t));function S$(t,e){return Lr(t,i=>t.moveByGroup(i,e))}const HH=t=>S$(t,!an(t)),FH=t=>S$(t,an(t)),GH=t=>Lr(t,e=>SO(t.state,e,!an(t))),KH=t=>Lr(t,e=>SO(t.state,e,an(t)));function x$(t,e){return Lr(t,i=>t.moveVertically(i,e))}const w$=t=>x$(t,!1),C$=t=>x$(t,!0);function k$(t,e){return Lr(t,i=>t.moveVertically(i,e,O$(t).height))}const HE=t=>k$(t,!1),FE=t=>k$(t,!0),JH=t=>Lr(t,e=>Ra(t,e,!0)),eF=t=>Lr(t,e=>Ra(t,e,!1)),tF=t=>Lr(t,e=>Ra(t,e,!an(t))),iF=t=>Lr(t,e=>Ra(t,e,an(t))),nF=t=>Lr(t,e=>se.cursor(t.lineBlockAt(e.head).from)),rF=t=>Lr(t,e=>se.cursor(t.lineBlockAt(e.head).to)),GE=({state:t,dispatch:e})=>(e(Kr(t,{anchor:0})),!0),KE=({state:t,dispatch:e})=>(e(Kr(t,{anchor:t.doc.length})),!0),JE=({state:t,dispatch:e})=>(e(Kr(t,{anchor:t.selection.main.anchor,head:0})),!0),eM=({state:t,dispatch:e})=>(e(Kr(t,{anchor:t.selection.main.anchor,head:t.doc.length})),!0),sF=({state:t,dispatch:e})=>(e(t.update({selection:{anchor:0,head:t.doc.length},userEvent:"select"})),!0),oF=({state:t,dispatch:e})=>{let i=xO(t).map(({from:n,to:r})=>se.range(n,Math.min(r+1,t.doc.length)));return e(t.update({selection:se.create(i),userEvent:"select"})),!0},aF=({state:t,dispatch:e})=>{let i=Sh(t.selection,n=>{let r=xt(t),s=r.resolveStack(n.from,1);if(n.empty){let o=r.resolveStack(n.from,-1);o.node.from>=s.node.from&&o.node.to<=s.node.to&&(s=o)}for(let o=s;o;o=o.next){let{node:l}=o;if((l.from=n.to||l.to>n.to&&l.from<=n.from)&&o.next)return se.range(l.to,l.from)}return n});return i.eq(t.selection)?!1:(e(Kr(t,i)),!0)};function T$(t,e){let{state:i}=t,n=i.selection,r=i.selection.ranges.slice();for(let s of i.selection.ranges){let o=i.doc.lineAt(s.head);if(e?o.to0)for(let l=s;;){let c=t.moveVertically(l,e);if(c.heado.to){r.some(u=>u.head==c.head)||r.push(c);break}else{if(c.head==l.head)break;l=c}}}return r.length==n.ranges.length?!1:(t.dispatch(Kr(i,se.create(r,r.length-1))),!0)}const lF=t=>T$(t,!1),cF=t=>T$(t,!0),hF=({state:t,dispatch:e})=>{let i=t.selection,n=null;return i.ranges.length>1?n=se.create([i.main]):i.main.empty||(n=se.create([se.cursor(i.main.head)])),n?(e(Kr(t,n)),!0):!1};function vd(t,e){if(t.state.readOnly)return!1;let i="delete.selection",{state:n}=t,r=n.changeByRange(s=>{let{from:o,to:l}=s;if(o==l){let c=e(s);co&&(i="delete.forward",c=pm(t,c,!0)),o=Math.min(o,c),l=Math.max(l,c)}else o=pm(t,o,!1),l=pm(t,l,!0);return o==l?{range:s}:{changes:{from:o,to:l},range:se.cursor(o,or(t)))n.between(e,e,(r,s)=>{re&&(e=i?s:r)});return e}const A$=(t,e,i)=>vd(t,n=>{let r=n.from,{state:s}=t,o=s.doc.lineAt(r),l,c;if(i&&!e&&r>o.from&&rA$(t,!1,!0),E$=t=>A$(t,!0,!1),M$=(t,e)=>vd(t,i=>{let n=i.head,{state:r}=t,s=r.doc.lineAt(n),o=r.charCategorizer(n);for(let l=null;;){if(n==(e?s.to:s.from)){n==i.head&&s.number!=(e?r.doc.lines:1)&&(n+=e?1:-1);break}let c=Di(s.text,n-s.from,e)+s.from,u=s.text.slice(Math.min(n,c)-s.from,Math.max(n,c)-s.from),d=o(u);if(l!=null&&d!=l)break;(u!=" "||n!=i.head)&&(l=d),n=c}return n}),P$=t=>M$(t,!1),uF=t=>M$(t,!0),fF=t=>vd(t,e=>{let i=t.lineBlockAt(e.head).to;return e.headvd(t,e=>{let i=t.moveToLineBoundary(e,!1).head;return e.head>i?i:Math.max(0,e.head-1)}),pF=t=>vd(t,e=>{let i=t.moveToLineBoundary(e,!0).head;return e.head{if(t.readOnly)return!1;let i=t.changeByRange(n=>({changes:{from:n.from,to:n.to,insert:at.of(["",""])},range:se.cursor(n.from)}));return e(t.update(i,{scrollIntoView:!0,userEvent:"input"})),!0},gF=({state:t,dispatch:e})=>{if(t.readOnly)return!1;let i=t.changeByRange(n=>{if(!n.empty||n.from==0||n.from==t.doc.length)return{range:n};let r=n.from,s=t.doc.lineAt(r),o=r==s.from?r-1:Di(s.text,r-s.from,!1)+s.from,l=r==s.to?r+1:Di(s.text,r-s.from,!0)+s.from;return{changes:{from:o,to:l,insert:t.doc.slice(r,l).append(t.doc.slice(o,r))},range:se.cursor(l)}});return i.changes.empty?!1:(e(t.update(i,{scrollIntoView:!0,userEvent:"move.character"})),!0)};function xO(t){let e=[],i=-1;for(let n of t.selection.ranges){let r=t.doc.lineAt(n.from),s=t.doc.lineAt(n.to);if(!n.empty&&n.to==s.from&&(s=t.doc.lineAt(n.to-1)),i>=r.number){let o=e[e.length-1];o.to=s.to,o.ranges.push(n)}else e.push({from:r.from,to:s.to,ranges:[n]});i=s.number+1}return e}function R$(t,e,i){if(t.readOnly)return!1;let n=[],r=[];for(let s of xO(t)){if(i?s.to==t.doc.length:s.from==0)continue;let o=t.doc.lineAt(i?s.to+1:s.from-1),l=o.length+1;if(i){n.push({from:s.to,to:o.to},{from:s.from,insert:o.text+t.lineBreak});for(let c of s.ranges)r.push(se.range(Math.min(t.doc.length,c.anchor+l),Math.min(t.doc.length,c.head+l)))}else{n.push({from:o.from,to:s.from},{from:s.to,insert:t.lineBreak+o.text});for(let c of s.ranges)r.push(se.range(c.anchor-l,c.head-l))}}return n.length?(e(t.update({changes:n,scrollIntoView:!0,selection:se.create(r,t.selection.mainIndex),userEvent:"move.line"})),!0):!1}const OF=({state:t,dispatch:e})=>R$(t,e,!1),vF=({state:t,dispatch:e})=>R$(t,e,!0);function Q$(t,e,i){if(t.readOnly)return!1;let n=[];for(let s of xO(t))i?n.push({from:s.from,insert:t.doc.slice(s.from,s.to)+t.lineBreak}):n.push({from:s.to,insert:t.lineBreak+t.doc.slice(s.from,s.to)});let r=t.changes(n);return e(t.update({changes:r,selection:t.selection.map(r,i?1:-1),scrollIntoView:!0,userEvent:"input.copyline"})),!0}const _F=({state:t,dispatch:e})=>Q$(t,e,!1),yF=({state:t,dispatch:e})=>Q$(t,e,!0),bF=t=>{if(t.state.readOnly)return!1;let{state:e}=t,i=e.changes(xO(e).map(({from:r,to:s})=>(r>0?r--:s{let s;if(t.lineWrapping){let o=t.lineBlockAt(r.head),l=t.coordsAtPos(r.head,r.assoc||1);l&&(s=o.bottom+t.documentTop-l.bottom+t.defaultLineHeight/2)}return t.moveVertically(r,!0,s)}).map(i);return t.dispatch({changes:i,selection:n,scrollIntoView:!0,userEvent:"delete.line"}),!0};function SF(t,e){if(/\(\)|\[\]|\{\}/.test(t.sliceDoc(e-1,e+1)))return{from:e,to:e};let i=xt(t).resolveInner(e),n=i.childBefore(e),r=i.childAfter(e),s;return n&&r&&n.to<=e&&r.from>=e&&(s=n.type.prop(Ne.closedBy))&&s.indexOf(r.name)>-1&&t.doc.lineAt(n.to).from==t.doc.lineAt(r.from).from&&!/\S/.test(t.sliceDoc(n.to,r.from))?{from:n.to,to:r.from}:null}const tM=L$(!1),xF=L$(!0);function L$(t){return({state:e,dispatch:i})=>{if(e.readOnly)return!1;let n=e.changeByRange(r=>{let{from:s,to:o}=r,l=e.doc.lineAt(s),c=!t&&s==o&&SF(e,s);t&&(s=o=(o<=l.to?l:e.doc.lineAt(o)).to);let u=new vO(e,{simulateBreak:s,simulateDoubleBreak:!!c}),d=Jx(u,s);for(d==null&&(d=Yr(/^\s*/.exec(e.doc.lineAt(s).text)[0],e.tabSize));ol.from&&s{let r=[];for(let o=n.from;o<=n.to;){let l=t.doc.lineAt(o);l.number>i&&(n.empty||n.to>l.from)&&(e(l,r,n),i=l.number),o=l.to+1}let s=t.changes(r);return{changes:r,range:se.range(s.mapPos(n.anchor,1),s.mapPos(n.head,1))}})}const wF=({state:t,dispatch:e})=>{if(t.readOnly)return!1;let i=Object.create(null),n=new vO(t,{overrideIndentation:s=>{let o=i[s];return o??-1}}),r=nw(t,(s,o,l)=>{let c=Jx(n,s.from);if(c==null)return;/\S/.test(s.text)||(c=0);let u=/^\s*/.exec(s.text)[0],d=Xf(t,c);(u!=d||l.fromt.readOnly?!1:(e(t.update(nw(t,(i,n)=>{n.push({from:i.from,insert:t.facet(yh)})}),{userEvent:"input.indent"})),!0),B$=({state:t,dispatch:e})=>t.readOnly?!1:(e(t.update(nw(t,(i,n)=>{let r=/^\s*/.exec(i.text)[0];if(!r)return;let s=Yr(r,t.tabSize),o=0,l=Xf(t,Math.max(0,s-Qg(t)));for(;o(t.setTabFocusMode(),!0),kF=[{key:"Ctrl-b",run:u$,shift:y$,preventDefault:!0},{key:"Ctrl-f",run:f$,shift:b$},{key:"Ctrl-p",run:m$,shift:w$},{key:"Ctrl-n",run:g$,shift:C$},{key:"Ctrl-a",run:qH,shift:nF},{key:"Ctrl-e",run:WH,shift:rF},{key:"Ctrl-d",run:E$},{key:"Ctrl-h",run:Lb},{key:"Ctrl-k",run:fF},{key:"Ctrl-Alt-h",run:P$},{key:"Ctrl-o",run:mF},{key:"Ctrl-t",run:gF},{key:"Ctrl-v",run:Qb}],TF=[{key:"ArrowLeft",run:u$,shift:y$,preventDefault:!0},{key:"Mod-ArrowLeft",mac:"Alt-ArrowLeft",run:BH,shift:HH,preventDefault:!0},{mac:"Cmd-ArrowLeft",run:XH,shift:tF,preventDefault:!0},{key:"ArrowRight",run:f$,shift:b$,preventDefault:!0},{key:"Mod-ArrowRight",mac:"Alt-ArrowRight",run:$H,shift:FH,preventDefault:!0},{mac:"Cmd-ArrowRight",run:ZH,shift:iF,preventDefault:!0},{key:"ArrowUp",run:m$,shift:w$,preventDefault:!0},{mac:"Cmd-ArrowUp",run:GE,shift:JE},{mac:"Ctrl-ArrowUp",run:YE,shift:HE},{key:"ArrowDown",run:g$,shift:C$,preventDefault:!0},{mac:"Cmd-ArrowDown",run:KE,shift:eM},{mac:"Ctrl-ArrowDown",run:Qb,shift:FE},{key:"PageUp",run:YE,shift:HE},{key:"PageDown",run:Qb,shift:FE},{key:"Home",run:VH,shift:eF,preventDefault:!0},{key:"Mod-Home",run:GE,shift:JE},{key:"End",run:IH,shift:JH,preventDefault:!0},{key:"Mod-End",run:KE,shift:eM},{key:"Enter",run:tM,shift:tM},{key:"Mod-a",run:sF},{key:"Backspace",run:Lb,shift:Lb,preventDefault:!0},{key:"Delete",run:E$,preventDefault:!0},{key:"Mod-Backspace",mac:"Alt-Backspace",run:P$,preventDefault:!0},{key:"Mod-Delete",mac:"Alt-Delete",run:uF,preventDefault:!0},{mac:"Mod-Backspace",run:dF,preventDefault:!0},{mac:"Mod-Delete",run:pF,preventDefault:!0}].concat(kF.map(t=>({mac:t.key,run:t.run,shift:t.shift}))),AF=[{key:"Alt-ArrowLeft",mac:"Ctrl-ArrowLeft",run:NH,shift:GH},{key:"Alt-ArrowRight",mac:"Ctrl-ArrowRight",run:jH,shift:KH},{key:"Alt-ArrowUp",run:OF},{key:"Shift-Alt-ArrowUp",run:_F},{key:"Alt-ArrowDown",run:vF},{key:"Shift-Alt-ArrowDown",run:yF},{key:"Mod-Alt-ArrowUp",run:lF},{key:"Mod-Alt-ArrowDown",run:cF},{key:"Escape",run:hF},{key:"Mod-Enter",run:xF},{key:"Alt-l",mac:"Ctrl-l",run:oF},{key:"Mod-i",run:aF,preventDefault:!0},{key:"Mod-[",run:B$},{key:"Mod-]",run:D$},{key:"Mod-Alt-\\",run:wF},{key:"Shift-Mod-k",run:bF},{key:"Shift-Mod-\\",run:YH},{key:"Mod-/",run:OH},{key:"Alt-A",run:_H},{key:"Ctrl-m",mac:"Shift-Alt-m",run:CF}].concat(TF),EF={key:"Tab",run:D$,shift:B$},iM=typeof String.prototype.normalize=="function"?t=>t.normalize("NFKD"):t=>t;class hh{constructor(e,i,n=0,r=e.length,s,o){this.test=o,this.value={from:0,to:0},this.done=!1,this.matches=[],this.buffer="",this.bufferPos=0,this.iter=e.iterRange(n,r),this.bufferStart=n,this.normalize=s?l=>s(iM(l)):iM,this.query=this.normalize(i)}peek(){if(this.bufferPos==this.buffer.length){if(this.bufferStart+=this.buffer.length,this.iter.next(),this.iter.done)return-1;this.bufferPos=0,this.buffer=this.iter.value}return Ln(this.buffer,this.bufferPos)}next(){for(;this.matches.length;)this.matches.pop();return this.nextOverlapping()}nextOverlapping(){for(;;){let e=this.peek();if(e<0)return this.done=!0,this;let i=Ax(e),n=this.bufferStart+this.bufferPos;this.bufferPos+=gs(e);let r=this.normalize(i);if(r.length)for(let s=0,o=n;;s++){let l=r.charCodeAt(s),c=this.match(l,o,this.bufferPos+this.bufferStart);if(s==r.length-1){if(c)return this.value=c,this;break}o==n&&sthis.to&&(this.curLine=this.curLine.slice(0,this.to-this.curLineStart)),this.iter.next())}nextLine(){this.curLineStart=this.curLineStart+this.curLine.length+1,this.curLineStart>this.to?this.curLine="":this.getLine(0)}next(){for(let e=this.matchPos-this.curLineStart;;){this.re.lastIndex=e;let i=this.matchPos<=this.to&&this.re.exec(this.curLine);if(i){let n=this.curLineStart+i.index,r=n+i[0].length;if(this.matchPos=$g(this.text,r+(n==r?1:0)),n==this.curLineStart+this.curLine.length&&this.nextLine(),(nthis.value.to)&&(!this.test||this.test(n,r,i)))return this.value={from:n,to:r,match:i},this;e=this.matchPos-this.curLineStart}else if(this.curLineStart+this.curLine.length=n||r.to<=i){let l=new Gc(i,e.sliceString(i,n));return V_.set(e,l),l}if(r.from==i&&r.to==n)return r;let{text:s,from:o}=r;return o>i&&(s=e.sliceString(i,o)+s,o=i),r.to=this.to?this.to:this.text.lineAt(e).to}next(){for(;;){let e=this.re.lastIndex=this.matchPos-this.flat.from,i=this.re.exec(this.flat.text);if(i&&!i[0]&&i.index==e&&(this.re.lastIndex=e+1,i=this.re.exec(this.flat.text)),i){let n=this.flat.from+i.index,r=n+i[0].length;if((this.flat.to>=this.to||i.index+i[0].length<=this.flat.text.length-10)&&(!this.test||this.test(n,r,i)))return this.value={from:n,to:r,match:i},this.matchPos=$g(this.text,r+(n==r?1:0)),this}if(this.flat.to==this.to)return this.done=!0,this;this.flat=Gc.get(this.text,this.flat.from,this.chunkEnd(this.flat.from+this.flat.text.length*2))}}}typeof Symbol<"u"&&(z$.prototype[Symbol.iterator]=N$.prototype[Symbol.iterator]=function(){return this});function MF(t){try{return new RegExp(t,rw),!0}catch{return!1}}function $g(t,e){if(e>=t.length)return e;let i=t.lineAt(e),n;for(;e=56320&&n<57344;)e++;return e}const PF=t=>{let{state:e}=t,i=String(e.doc.lineAt(t.state.selection.main.head).number),{close:n,result:r}=YU(t,{label:e.phrase("Go to line"),input:{type:"text",name:"line",value:i},focus:!0,submitLabel:e.phrase("go")});return r.then(s=>{let o=s&&/^([+-])?(\d+)?(:\d+)?(%)?$/.exec(s.elements.line.value);if(!o){t.dispatch({effects:n});return}let l=e.doc.lineAt(e.selection.main.head),[,c,u,d,p]=o,g=d?+d.slice(1):0,O=u?+u:l.number;if(u&&p){let x=O/100;c&&(x=x*(c=="-"?-1:1)+l.number/e.doc.lines),O=Math.round(e.doc.lines*x)}else u&&c&&(O=O*(c=="-"?-1:1)+l.number);let _=e.doc.line(Math.max(1,Math.min(e.doc.lines,O))),b=se.cursor(_.from+Math.max(0,Math.min(g,_.length)));t.dispatch({effects:[n,ve.scrollIntoView(b.from,{y:"center"})],selection:b})}),!0},RF={highlightWordAroundCursor:!1,minSelectionLength:1,maxMatches:100,wholeWords:!1},QF=Se.define({combine(t){return Qs(t,RF,{highlightWordAroundCursor:(e,i)=>e||i,minSelectionLength:Math.min,maxMatches:Math.min})}});function LF(t){return[NF,zF]}const DF=Pe.mark({class:"cm-selectionMatch"}),BF=Pe.mark({class:"cm-selectionMatch cm-selectionMatch-main"});function nM(t,e,i,n){return(i==0||t(e.sliceDoc(i-1,i))!=Dt.Word)&&(n==e.doc.length||t(e.sliceDoc(n,n+1))!=Dt.Word)}function $F(t,e,i,n){return t(e.sliceDoc(i,i+1))==Dt.Word&&t(e.sliceDoc(n-1,n))==Dt.Word}const zF=Jt.fromClass(class{constructor(t){this.decorations=this.getDeco(t)}update(t){(t.selectionSet||t.docChanged||t.viewportChanged)&&(this.decorations=this.getDeco(t.view))}getDeco(t){let e=t.state.facet(QF),{state:i}=t,n=i.selection;if(n.ranges.length>1)return Pe.none;let r=n.main,s,o=null;if(r.empty){if(!e.highlightWordAroundCursor)return Pe.none;let c=i.wordAt(r.head);if(!c)return Pe.none;o=i.charCategorizer(r.head),s=i.sliceDoc(c.from,c.to)}else{let c=r.to-r.from;if(c200)return Pe.none;if(e.wholeWords){if(s=i.sliceDoc(r.from,r.to),o=i.charCategorizer(r.head),!(nM(o,i,r.from,r.to)&&$F(o,i,r.from,r.to)))return Pe.none}else if(s=i.sliceDoc(r.from,r.to),!s)return Pe.none}let l=[];for(let c of t.visibleRanges){let u=new hh(i.doc,s,c.from,c.to);for(;!u.next().done;){let{from:d,to:p}=u.value;if((!o||nM(o,i,d,p))&&(r.empty&&d<=r.from&&p>=r.to?l.push(BF.range(d,p)):(d>=r.to||p<=r.from)&&l.push(DF.range(d,p)),l.length>e.maxMatches))return Pe.none}}return Pe.set(l)}},{decorations:t=>t.decorations}),NF=ve.baseTheme({".cm-selectionMatch":{backgroundColor:"#99ff7780"},".cm-searchMatch .cm-selectionMatch":{backgroundColor:"transparent"}}),jF=({state:t,dispatch:e})=>{let{selection:i}=t,n=se.create(i.ranges.map(r=>t.wordAt(r.head)||se.cursor(r.head)),i.mainIndex);return n.eq(i)?!1:(e(t.update({selection:n})),!0)};function IF(t,e){let{main:i,ranges:n}=t.selection,r=t.wordAt(i.head),s=r&&r.from==i.from&&r.to==i.to;for(let o=!1,l=new hh(t.doc,e,n[n.length-1].to);;)if(l.next(),l.done){if(o)return null;l=new hh(t.doc,e,0,Math.max(0,n[n.length-1].from-1)),o=!0}else{if(o&&n.some(c=>c.from==l.value.from))continue;if(s){let c=t.wordAt(l.value.from);if(!c||c.from!=l.value.from||c.to!=l.value.to)continue}return l.value}}const VF=({state:t,dispatch:e})=>{let{ranges:i}=t.selection;if(i.some(s=>s.from===s.to))return jF({state:t,dispatch:e});let n=t.sliceDoc(i[0].from,i[0].to);if(t.selection.ranges.some(s=>t.sliceDoc(s.from,s.to)!=n))return!1;let r=IF(t,n);return r?(e(t.update({selection:t.selection.addRange(se.range(r.from,r.to),!1),effects:ve.scrollIntoView(r.to)})),!0):!1},xh=Se.define({combine(t){return Qs(t,{top:!1,caseSensitive:!1,literal:!1,regexp:!1,wholeWord:!1,createPanel:e=>new iG(e),scrollToMatch:e=>ve.scrollIntoView(e)})}});class j${constructor(e){this.search=e.search,this.caseSensitive=!!e.caseSensitive,this.literal=!!e.literal,this.regexp=!!e.regexp,this.replace=e.replace||"",this.valid=!!this.search&&(!this.regexp||MF(this.search)),this.unquoted=this.unquote(this.search),this.wholeWord=!!e.wholeWord,this.test=e.test}unquote(e){return this.literal?e:e.replace(/\\([nrt\\])/g,(i,n)=>n=="n"?` -`:n=="r"?"\r":n=="t"?" ":"\\")}eq(e){return this.search==e.search&&this.replace==e.replace&&this.caseSensitive==e.caseSensitive&&this.regexp==e.regexp&&this.wholeWord==e.wholeWord&&this.test==e.test}create(){return this.regexp?new YF(this):new qF(this)}getCursor(e,i=0,n){let r=e.doc?e:et.create({doc:e});return n==null&&(n=r.doc.length),this.regexp?Rc(this,r,i,n):Pc(this,r,i,n)}}class I${constructor(e){this.spec=e}}function XF(t,e,i){return(n,r,s,o)=>{if(i&&!i(n,r,s,o))return!1;let l=n>=o&&r<=o+s.length?s.slice(n-o,r-o):e.doc.sliceString(n,r);return t(l,e,n,r)}}function Pc(t,e,i,n){let r;return t.wholeWord&&(r=ZF(e.doc,e.charCategorizer(e.selection.main.head))),t.test&&(r=XF(t.test,e,r)),new hh(e.doc,t.unquoted,i,n,t.caseSensitive?void 0:s=>s.toLowerCase(),r)}function ZF(t,e){return(i,n,r,s)=>((s>i||s+r.length=i)return null;r.push(n.value)}return r}highlight(e,i,n,r){let s=Pc(this.spec,e,Math.max(0,i-this.spec.unquoted.length),Math.min(n+this.spec.unquoted.length,e.doc.length));for(;!s.next().done;)r(s.value.from,s.value.to)}}function WF(t,e,i){return(n,r,s)=>(!i||i(n,r,s))&&t(s[0],e,n,r)}function Rc(t,e,i,n){let r;return t.wholeWord&&(r=UF(e.charCategorizer(e.selection.main.head))),t.test&&(r=WF(t.test,e,r)),new z$(e.doc,t.search,{ignoreCase:!t.caseSensitive,test:r},i,n)}function zg(t,e){return t.slice(Di(t,e,!1),e)}function Ng(t,e){return t.slice(e,Di(t,e))}function UF(t){return(e,i,n)=>!n[0].length||(t(zg(n.input,n.index))!=Dt.Word||t(Ng(n.input,n.index))!=Dt.Word)&&(t(Ng(n.input,n.index+n[0].length))!=Dt.Word||t(zg(n.input,n.index+n[0].length))!=Dt.Word)}class YF extends I${nextMatch(e,i,n){let r=Rc(this.spec,e,n,e.doc.length).next();return r.done&&(r=Rc(this.spec,e,0,i).next()),r.done?null:r.value}prevMatchInRange(e,i,n){for(let r=1;;r++){let s=Math.max(i,n-r*1e4),o=Rc(this.spec,e,s,n),l=null;for(;!o.next().done;)l=o.value;if(l&&(s==i||l.from>s+10))return l;if(s==i)return null}}prevMatch(e,i,n){return this.prevMatchInRange(e,0,i)||this.prevMatchInRange(e,n,e.doc.length)}getReplacement(e){return this.spec.unquote(this.spec.replace).replace(/\$([$&]|\d+)/g,(i,n)=>{if(n=="&")return e.match[0];if(n=="$")return"$";for(let r=n.length;r>0;r--){let s=+n.slice(0,r);if(s>0&&s=i)return null;r.push(n.value)}return r}highlight(e,i,n,r){let s=Rc(this.spec,e,Math.max(0,i-250),Math.min(n+250,e.doc.length));for(;!s.next().done;)r(s.value.from,s.value.to)}}const Zf=ze.define(),sw=ze.define(),_a=Bi.define({create(t){return new X_(Db(t).create(),null)},update(t,e){for(let i of e.effects)i.is(Zf)?t=new X_(i.value.create(),t.panel):i.is(sw)&&(t=new X_(t.query,i.value?ow:null));return t},provide:t=>zf.from(t,e=>e.panel)});class X_{constructor(e,i){this.query=e,this.panel=i}}const HF=Pe.mark({class:"cm-searchMatch"}),FF=Pe.mark({class:"cm-searchMatch cm-searchMatch-selected"}),GF=Jt.fromClass(class{constructor(t){this.view=t,this.decorations=this.highlight(t.state.field(_a))}update(t){let e=t.state.field(_a);(e!=t.startState.field(_a)||t.docChanged||t.selectionSet||t.viewportChanged)&&(this.decorations=this.highlight(e))}highlight({query:t,panel:e}){if(!e||!t.spec.valid)return Pe.none;let{view:i}=this,n=new _o;for(let r=0,s=i.visibleRanges,o=s.length;rs[r+1].from-500;)c=s[++r].to;t.highlight(i.state,l,c,(u,d)=>{let p=i.state.selection.ranges.some(g=>g.from==u&&g.to==d);n.add(u,d,p?FF:HF)})}return n.finish()}},{decorations:t=>t.decorations});function _d(t){return e=>{let i=e.state.field(_a,!1);return i&&i.query.spec.valid?t(e,i):Z$(e)}}const jg=_d((t,{query:e})=>{let{to:i}=t.state.selection.main,n=e.nextMatch(t.state,i,i);if(!n)return!1;let r=se.single(n.from,n.to),s=t.state.facet(xh);return t.dispatch({selection:r,effects:[aw(t,n),s.scrollToMatch(r.main,t)],userEvent:"select.search"}),X$(t),!0}),Ig=_d((t,{query:e})=>{let{state:i}=t,{from:n}=i.selection.main,r=e.prevMatch(i,n,n);if(!r)return!1;let s=se.single(r.from,r.to),o=t.state.facet(xh);return t.dispatch({selection:s,effects:[aw(t,r),o.scrollToMatch(s.main,t)],userEvent:"select.search"}),X$(t),!0}),KF=_d((t,{query:e})=>{let i=e.matchAll(t.state,1e3);return!i||!i.length?!1:(t.dispatch({selection:se.create(i.map(n=>se.range(n.from,n.to))),userEvent:"select.search.matches"}),!0)}),JF=({state:t,dispatch:e})=>{let i=t.selection;if(i.ranges.length>1||i.main.empty)return!1;let{from:n,to:r}=i.main,s=[],o=0;for(let l=new hh(t.doc,t.sliceDoc(n,r));!l.next().done;){if(s.length>1e3)return!1;l.value.from==n&&(o=s.length),s.push(se.range(l.value.from,l.value.to))}return e(t.update({selection:se.create(s,o),userEvent:"select.search.matches"})),!0},rM=_d((t,{query:e})=>{let{state:i}=t,{from:n,to:r}=i.selection.main;if(i.readOnly)return!1;let s=e.nextMatch(i,n,n);if(!s)return!1;let o=s,l=[],c,u,d=[];o.from==n&&o.to==r&&(u=i.toText(e.getReplacement(o)),l.push({from:o.from,to:o.to,insert:u}),o=e.nextMatch(i,o.from,o.to),d.push(ve.announce.of(i.phrase("replaced match on line $",i.doc.lineAt(n).number)+".")));let p=t.state.changes(l);return o&&(c=se.single(o.from,o.to).map(p),d.push(aw(t,o)),d.push(i.facet(xh).scrollToMatch(c.main,t))),t.dispatch({changes:p,selection:c,effects:d,userEvent:"input.replace"}),!0}),eG=_d((t,{query:e})=>{if(t.state.readOnly)return!1;let i=e.matchAll(t.state,1e9).map(r=>{let{from:s,to:o}=r;return{from:s,to:o,insert:e.getReplacement(r)}});if(!i.length)return!1;let n=t.state.phrase("replaced $ matches",i.length)+".";return t.dispatch({changes:i,effects:ve.announce.of(n),userEvent:"input.replace.all"}),!0});function ow(t){return t.state.facet(xh).createPanel(t)}function Db(t,e){var i,n,r,s,o;let l=t.selection.main,c=l.empty||l.to>l.from+100?"":t.sliceDoc(l.from,l.to);if(e&&!c)return e;let u=t.facet(xh);return new j$({search:((i=e==null?void 0:e.literal)!==null&&i!==void 0?i:u.literal)?c:c.replace(/\n/g,"\\n"),caseSensitive:(n=e==null?void 0:e.caseSensitive)!==null&&n!==void 0?n:u.caseSensitive,literal:(r=e==null?void 0:e.literal)!==null&&r!==void 0?r:u.literal,regexp:(s=e==null?void 0:e.regexp)!==null&&s!==void 0?s:u.regexp,wholeWord:(o=e==null?void 0:e.wholeWord)!==null&&o!==void 0?o:u.wholeWord})}function V$(t){let e=Wx(t,ow);return e&&e.dom.querySelector("[main-field]")}function X$(t){let e=V$(t);e&&e==t.root.activeElement&&e.select()}const Z$=t=>{let e=t.state.field(_a,!1);if(e&&e.panel){let i=V$(t);if(i&&i!=t.root.activeElement){let n=Db(t.state,e.query.spec);n.valid&&t.dispatch({effects:Zf.of(n)}),i.focus(),i.select()}}else t.dispatch({effects:[sw.of(!0),e?Zf.of(Db(t.state,e.query.spec)):ze.appendConfig.of(rG)]});return!0},q$=t=>{let e=t.state.field(_a,!1);if(!e||!e.panel)return!1;let i=Wx(t,ow);return i&&i.dom.contains(t.root.activeElement)&&t.focus(),t.dispatch({effects:sw.of(!1)}),!0},tG=[{key:"Mod-f",run:Z$,scope:"editor search-panel"},{key:"F3",run:jg,shift:Ig,scope:"editor search-panel",preventDefault:!0},{key:"Mod-g",run:jg,shift:Ig,scope:"editor search-panel",preventDefault:!0},{key:"Escape",run:q$,scope:"editor search-panel"},{key:"Mod-Shift-l",run:JF},{key:"Mod-Alt-g",run:PF},{key:"Mod-d",run:VF,preventDefault:!0}];class iG{constructor(e){this.view=e;let i=this.query=e.state.field(_a).query.spec;this.commit=this.commit.bind(this),this.searchField=vt("input",{value:i.search,placeholder:Hn(e,"Find"),"aria-label":Hn(e,"Find"),class:"cm-textfield",name:"search",form:"","main-field":"true",onchange:this.commit,onkeyup:this.commit}),this.replaceField=vt("input",{value:i.replace,placeholder:Hn(e,"Replace"),"aria-label":Hn(e,"Replace"),class:"cm-textfield",name:"replace",form:"",onchange:this.commit,onkeyup:this.commit}),this.caseField=vt("input",{type:"checkbox",name:"case",form:"",checked:i.caseSensitive,onchange:this.commit}),this.reField=vt("input",{type:"checkbox",name:"re",form:"",checked:i.regexp,onchange:this.commit}),this.wordField=vt("input",{type:"checkbox",name:"word",form:"",checked:i.wholeWord,onchange:this.commit});function n(r,s,o){return vt("button",{class:"cm-button",name:r,onclick:s,type:"button"},o)}this.dom=vt("div",{onkeydown:r=>this.keydown(r),class:"cm-search"},[this.searchField,n("next",()=>jg(e),[Hn(e,"next")]),n("prev",()=>Ig(e),[Hn(e,"previous")]),n("select",()=>KF(e),[Hn(e,"all")]),vt("label",null,[this.caseField,Hn(e,"match case")]),vt("label",null,[this.reField,Hn(e,"regexp")]),vt("label",null,[this.wordField,Hn(e,"by word")]),...e.state.readOnly?[]:[vt("br"),this.replaceField,n("replace",()=>rM(e),[Hn(e,"replace")]),n("replaceAll",()=>eG(e),[Hn(e,"replace all")])],vt("button",{name:"close",onclick:()=>q$(e),"aria-label":Hn(e,"close"),type:"button"},["×"])])}commit(){let e=new j$({search:this.searchField.value,caseSensitive:this.caseField.checked,regexp:this.reField.checked,wholeWord:this.wordField.checked,replace:this.replaceField.value});e.eq(this.query)||(this.query=e,this.view.dispatch({effects:Zf.of(e)}))}keydown(e){rU(this.view,e,"search-panel")?e.preventDefault():e.keyCode==13&&e.target==this.searchField?(e.preventDefault(),(e.shiftKey?Ig:jg)(this.view)):e.keyCode==13&&e.target==this.replaceField&&(e.preventDefault(),rM(this.view))}update(e){for(let i of e.transactions)for(let n of i.effects)n.is(Zf)&&!n.value.eq(this.query)&&this.setQuery(n.value)}setQuery(e){this.query=e,this.searchField.value=e.search,this.replaceField.value=e.replace,this.caseField.checked=e.caseSensitive,this.reField.checked=e.regexp,this.wordField.checked=e.wholeWord}mount(){this.searchField.select()}get pos(){return 80}get top(){return this.view.state.facet(xh).top}}function Hn(t,e){return t.state.phrase(e)}const mm=30,gm=/[\s\.,:;?!]/;function aw(t,{from:e,to:i}){let n=t.state.doc.lineAt(e),r=t.state.doc.lineAt(i).to,s=Math.max(n.from,e-mm),o=Math.min(r,i+mm),l=t.state.sliceDoc(s,o);if(s!=n.from){for(let c=0;cl.length-mm;c--)if(!gm.test(l[c-1])&&gm.test(l[c])){l=l.slice(0,c);break}}return ve.announce.of(`${t.state.phrase("current match")}. ${l} ${t.state.phrase("on line")} ${n.number}.`)}const nG=ve.baseTheme({".cm-panel.cm-search":{padding:"2px 6px 4px",position:"relative","& [name=close]":{position:"absolute",top:"0",right:"4px",backgroundColor:"inherit",border:"none",font:"inherit",padding:0,margin:0},"& input, & button, & label":{margin:".2em .6em .2em 0"},"& input[type=checkbox]":{marginRight:".2em"},"& label":{fontSize:"80%",whiteSpace:"pre"}},"&light .cm-searchMatch":{backgroundColor:"#ffff0054"},"&dark .cm-searchMatch":{backgroundColor:"#00ffff8a"},"&light .cm-searchMatch-selected":{backgroundColor:"#ff6a0054"},"&dark .cm-searchMatch-selected":{backgroundColor:"#ff00ff8a"}}),rG=[_a,So.low(GF),nG];class lw{constructor(e,i,n,r){this.state=e,this.pos=i,this.explicit=n,this.view=r,this.abortListeners=[],this.abortOnDocChange=!1}tokenBefore(e){let i=xt(this.state).resolveInner(this.pos,-1);for(;i&&e.indexOf(i.name)<0;)i=i.parent;return i?{from:i.from,to:this.pos,text:this.state.sliceDoc(i.from,this.pos),type:i.type}:null}matchBefore(e){let i=this.state.doc.lineAt(this.pos),n=Math.max(i.from,this.pos-250),r=i.text.slice(n-i.from,this.pos-i.from),s=r.search(U$(e,!1));return s<0?null:{from:n+s,to:this.pos,text:r.slice(s)}}get aborted(){return this.abortListeners==null}addEventListener(e,i,n){e=="abort"&&this.abortListeners&&(this.abortListeners.push(i),n&&n.onDocChange&&(this.abortOnDocChange=!0))}}function sM(t){let e=Object.keys(t).join(""),i=/\w/.test(e);return i&&(e=e.replace(/\w/g,"")),`[${i?"\\w":""}${e.replace(/[^\w\s]/g,"\\$&")}]`}function sG(t){let e=Object.create(null),i=Object.create(null);for(let{label:r}of t){e[r[0]]=!0;for(let s=1;stypeof r=="string"?{label:r}:r),[i,n]=e.every(r=>/^\w+$/.test(r.label))?[/\w*$/,/\w+$/]:sG(e);return r=>{let s=r.matchBefore(n);return s||r.explicit?{from:s?s.from:r.pos,options:e,validFor:i}:null}}function oG(t,e){return i=>{for(let n=xt(i.state).resolveInner(i.pos,-1);n;n=n.parent){if(t.indexOf(n.name)>-1)return null;if(n.type.isTop)break}return e(i)}}class oM{constructor(e,i,n,r){this.completion=e,this.source=i,this.match=n,this.score=r}}function Sl(t){return t.selection.main.from}function U$(t,e){var i;let{source:n}=t,r=e&&n[0]!="^",s=n[n.length-1]!="$";return!r&&!s?t:new RegExp(`${r?"^":""}(?:${n})${s?"$":""}`,(i=t.flags)!==null&&i!==void 0?i:t.ignoreCase?"i":"")}const cw=Rs.define();function aG(t,e,i,n){let{main:r}=t.selection,s=i-r.from,o=n-r.from;return{...t.changeByRange(l=>{if(l!=r&&i!=n&&t.sliceDoc(l.from+s,l.from+o)!=t.sliceDoc(i,n))return{range:l};let c=t.toText(e);return{changes:{from:l.from+s,to:n==r.from?l.to:l.from+o,insert:c},range:se.cursor(l.from+s+c.length)}}),scrollIntoView:!0,userEvent:"input.complete"}}const aM=new WeakMap;function lG(t){if(!Array.isArray(t))return t;let e=aM.get(t);return e||aM.set(t,e=W$(t)),e}const Vg=ze.define(),qf=ze.define();class cG{constructor(e){this.pattern=e,this.chars=[],this.folded=[],this.any=[],this.precise=[],this.byWord=[],this.score=0,this.matched=[];for(let i=0;i=48&&Q<=57||Q>=97&&Q<=122?2:Q>=65&&Q<=90?1:0:(E=Ax(Q))!=E.toLowerCase()?1:E!=E.toUpperCase()?2:0;(!k||z==1&&x||A==0&&z!=0)&&(i[p]==Q||n[p]==Q&&(g=!0)?o[p++]=k:o.length&&(w=!1)),A=z,k+=gs(Q)}return p==c&&o[0]==0&&w?this.result(-100+(g?-200:0),o,e):O==c&&_==0?this.ret(-200-e.length+(b==e.length?0:-100),[0,b]):l>-1?this.ret(-700-e.length,[l,l+this.pattern.length]):O==c?this.ret(-900-e.length,[_,b]):p==c?this.result(-100+(g?-200:0)+-700+(w?0:-1100),o,e):i.length==2?null:this.result((r[0]?-700:0)+-200+-1100,r,e)}result(e,i,n){let r=[],s=0;for(let o of i){let l=o+(this.astral?gs(Ln(n,o)):1);s&&r[s-1]==o?r[s-1]=l:(r[s++]=o,r[s++]=l)}return this.ret(e-n.length,r)}}class hG{constructor(e){this.pattern=e,this.matched=[],this.score=0,this.folded=e.toLowerCase()}match(e){if(e.length!1,activateOnTypingDelay:100,selectOnOpen:!0,override:null,closeOnBlur:!0,maxRenderedOptions:100,defaultKeymap:!0,tooltipClass:()=>"",optionClass:()=>"",aboveCursor:!1,icons:!0,addToOptions:[],positionInfo:uG,filterStrict:!1,compareCompletions:(e,i)=>(e.sortText||e.label).localeCompare(i.sortText||i.label),interactionDelay:75,updateSyncTime:100},{defaultKeymap:(e,i)=>e&&i,closeOnBlur:(e,i)=>e&&i,icons:(e,i)=>e&&i,tooltipClass:(e,i)=>n=>lM(e(n),i(n)),optionClass:(e,i)=>n=>lM(e(n),i(n)),addToOptions:(e,i)=>e.concat(i),filterStrict:(e,i)=>e||i})}});function lM(t,e){return t?e?t+" "+e:t:e}function uG(t,e,i,n,r,s){let o=t.textDirection==St.RTL,l=o,c=!1,u="top",d,p,g=e.left-r.left,O=r.right-e.right,_=n.right-n.left,b=n.bottom-n.top;if(l&&g=b||k>e.top?d=i.bottom-e.top:(u="bottom",d=e.bottom-i.top)}let x=(e.bottom-e.top)/s.offsetHeight,w=(e.right-e.left)/s.offsetWidth;return{style:`${u}: ${d/x}px; max-width: ${p/w}px`,class:"cm-completionInfo-"+(c?o?"left-narrow":"right-narrow":l?"left":"right")}}function fG(t){let e=t.addToOptions.slice();return t.icons&&e.push({render(i){let n=document.createElement("div");return n.classList.add("cm-completionIcon"),i.type&&n.classList.add(...i.type.split(/\s+/g).map(r=>"cm-completionIcon-"+r)),n.setAttribute("aria-hidden","true"),n},position:20}),e.push({render(i,n,r,s){let o=document.createElement("span");o.className="cm-completionLabel";let l=i.displayLabel||i.label,c=0;for(let u=0;uc&&o.appendChild(document.createTextNode(l.slice(c,d)));let g=o.appendChild(document.createElement("span"));g.appendChild(document.createTextNode(l.slice(d,p))),g.className="cm-completionMatchedText",c=p}return ci.position-n.position).map(i=>i.render)}function Z_(t,e,i){if(t<=i)return{from:0,to:t};if(e<0&&(e=0),e<=t>>1){let r=Math.floor(e/i);return{from:r*i,to:(r+1)*i}}let n=Math.floor((t-e)/i);return{from:t-(n+1)*i,to:t-n*i}}class dG{constructor(e,i,n){this.view=e,this.stateField=i,this.applyCompletion=n,this.info=null,this.infoDestroy=null,this.placeInfoReq={read:()=>this.measureInfo(),write:c=>this.placeInfo(c),key:this},this.space=null,this.currentClass="";let r=e.state.field(i),{options:s,selected:o}=r.open,l=e.state.facet(Li);this.optionContent=fG(l),this.optionClass=l.optionClass,this.tooltipClass=l.tooltipClass,this.range=Z_(s.length,o,l.maxRenderedOptions),this.dom=document.createElement("div"),this.dom.className="cm-tooltip-autocomplete",this.updateTooltipClass(e.state),this.dom.addEventListener("mousedown",c=>{let{options:u}=e.state.field(i).open;for(let d=c.target,p;d&&d!=this.dom;d=d.parentNode)if(d.nodeName=="LI"&&(p=/-(\d+)$/.exec(d.id))&&+p[1]{let u=e.state.field(this.stateField,!1);u&&u.tooltip&&e.state.facet(Li).closeOnBlur&&c.relatedTarget!=e.contentDOM&&e.dispatch({effects:qf.of(null)})}),this.showOptions(s,r.id)}mount(){this.updateSel()}showOptions(e,i){this.list&&this.list.remove(),this.list=this.dom.appendChild(this.createListBox(e,i,this.range)),this.list.addEventListener("scroll",()=>{this.info&&this.view.requestMeasure(this.placeInfoReq)})}update(e){var i;let n=e.state.field(this.stateField),r=e.startState.field(this.stateField);if(this.updateTooltipClass(e.state),n!=r){let{options:s,selected:o,disabled:l}=n.open;(!r.open||r.open.options!=s)&&(this.range=Z_(s.length,o,e.state.facet(Li).maxRenderedOptions),this.showOptions(s,n.id)),this.updateSel(),l!=((i=r.open)===null||i===void 0?void 0:i.disabled)&&this.dom.classList.toggle("cm-tooltip-autocomplete-disabled",!!l)}}updateTooltipClass(e){let i=this.tooltipClass(e);if(i!=this.currentClass){for(let n of this.currentClass.split(" "))n&&this.dom.classList.remove(n);for(let n of i.split(" "))n&&this.dom.classList.add(n);this.currentClass=i}}positioned(e){this.space=e,this.info&&this.view.requestMeasure(this.placeInfoReq)}updateSel(){let e=this.view.state.field(this.stateField),i=e.open;(i.selected>-1&&i.selected=this.range.to)&&(this.range=Z_(i.options.length,i.selected,this.view.state.facet(Li).maxRenderedOptions),this.showOptions(i.options,e.id));let n=this.updateSelectedOption(i.selected);if(n){this.destroyInfo();let{completion:r}=i.options[i.selected],{info:s}=r;if(!s)return;let o=typeof s=="string"?document.createTextNode(s):s(r);if(!o)return;"then"in o?o.then(l=>{l&&this.view.state.field(this.stateField,!1)==e&&this.addInfoPane(l,r)}).catch(l=>$n(this.view.state,l,"completion info")):(this.addInfoPane(o,r),n.setAttribute("aria-describedby",this.info.id))}}addInfoPane(e,i){this.destroyInfo();let n=this.info=document.createElement("div");if(n.className="cm-tooltip cm-completionInfo",n.id="cm-completionInfo-"+Math.floor(Math.random()*65535).toString(16),e.nodeType!=null)n.appendChild(e),this.infoDestroy=null;else{let{dom:r,destroy:s}=e;n.appendChild(r),this.infoDestroy=s||null}this.dom.appendChild(n),this.view.requestMeasure(this.placeInfoReq)}updateSelectedOption(e){let i=null;for(let n=this.list.firstChild,r=this.range.from;n;n=n.nextSibling,r++)n.nodeName!="LI"||!n.id?r--:r==e?n.hasAttribute("aria-selected")||(n.setAttribute("aria-selected","true"),i=n):n.hasAttribute("aria-selected")&&(n.removeAttribute("aria-selected"),n.removeAttribute("aria-describedby"));return i&&mG(this.list,i),i}measureInfo(){let e=this.dom.querySelector("[aria-selected]");if(!e||!this.info)return null;let i=this.dom.getBoundingClientRect(),n=this.info.getBoundingClientRect(),r=e.getBoundingClientRect(),s=this.space;if(!s){let o=this.dom.ownerDocument.documentElement;s={left:0,top:0,right:o.clientWidth,bottom:o.clientHeight}}return r.top>Math.min(s.bottom,i.bottom)-10||r.bottom{o.target==r&&o.preventDefault()});let s=null;for(let o=n.from;on.from||n.from==0))if(s=g,typeof u!="string"&&u.header)r.appendChild(u.header(u));else{let O=r.appendChild(document.createElement("completion-section"));O.textContent=g}}const d=r.appendChild(document.createElement("li"));d.id=i+"-"+o,d.setAttribute("role","option");let p=this.optionClass(l);p&&(d.className=p);for(let g of this.optionContent){let O=g(l,this.view.state,this.view,c);O&&d.appendChild(O)}}return n.from&&r.classList.add("cm-completionListIncompleteTop"),n.tonew dG(i,t,e)}function mG(t,e){let i=t.getBoundingClientRect(),n=e.getBoundingClientRect(),r=i.height/t.offsetHeight;n.topi.bottom&&(t.scrollTop+=(n.bottom-i.bottom)/r)}function cM(t){return(t.boost||0)*100+(t.apply?10:0)+(t.info?5:0)+(t.type?1:0)}function gG(t,e){let i=[],n=null,r=null,s=d=>{i.push(d);let{section:p}=d.completion;if(p){n||(n=[]);let g=typeof p=="string"?p:p.name;n.some(O=>O.name==g)||n.push(typeof p=="string"?{name:g}:p)}},o=e.facet(Li);for(let d of t)if(d.hasResult()){let p=d.result.getMatch;if(d.result.filter===!1)for(let g of d.result.options)s(new oM(g,d.source,p?p(g):[],1e9-i.length));else{let g=e.sliceDoc(d.from,d.to),O,_=o.filterStrict?new hG(g):new cG(g);for(let b of d.result.options)if(O=_.match(b.label)){let x=b.displayLabel?p?p(b,O.matched):[]:O.matched,w=O.score+(b.boost||0);if(s(new oM(b,d.source,x,w)),typeof b.section=="object"&&b.section.rank==="dynamic"){let{name:k}=b.section;r||(r=Object.create(null)),r[k]=Math.max(w,r[k]||-1e9)}}}}if(n){let d=Object.create(null),p=0,g=(O,_)=>(O.rank==="dynamic"&&_.rank==="dynamic"?r[_.name]-r[O.name]:0)||(typeof O.rank=="number"?O.rank:1e9)-(typeof _.rank=="number"?_.rank:1e9)||(O.name<_.name?-1:1);for(let O of n.sort(g))p-=1e5,d[O.name]=p;for(let O of i){let{section:_}=O.completion;_&&(O.score+=d[typeof _=="string"?_:_.name])}}let l=[],c=null,u=o.compareCompletions;for(let d of i.sort((p,g)=>g.score-p.score||u(p.completion,g.completion))){let p=d.completion;!c||c.label!=p.label||c.detail!=p.detail||c.type!=null&&p.type!=null&&c.type!=p.type||c.apply!=p.apply||c.boost!=p.boost?l.push(d):cM(d.completion)>cM(c)&&(l[l.length-1]=d),c=d.completion}return l}class Ic{constructor(e,i,n,r,s,o){this.options=e,this.attrs=i,this.tooltip=n,this.timestamp=r,this.selected=s,this.disabled=o}setSelected(e,i){return e==this.selected||e>=this.options.length?this:new Ic(this.options,hM(i,e),this.tooltip,this.timestamp,e,this.disabled)}static build(e,i,n,r,s,o){if(r&&!o&&e.some(u=>u.isPending))return r.setDisabled();let l=gG(e,i);if(!l.length)return r&&e.some(u=>u.isPending)?r.setDisabled():null;let c=i.facet(Li).selectOnOpen?0:-1;if(r&&r.selected!=c&&r.selected!=-1){let u=r.options[r.selected].completion;for(let d=0;dd.hasResult()?Math.min(u,d.from):u,1e8),create:SG,above:s.aboveCursor},r?r.timestamp:Date.now(),c,!1)}map(e){return new Ic(this.options,this.attrs,{...this.tooltip,pos:e.mapPos(this.tooltip.pos)},this.timestamp,this.selected,this.disabled)}setDisabled(){return new Ic(this.options,this.attrs,this.tooltip,this.timestamp,this.selected,!0)}}class Xg{constructor(e,i,n){this.active=e,this.id=i,this.open=n}static start(){return new Xg(yG,"cm-ac-"+Math.floor(Math.random()*2e6).toString(36),null)}update(e){let{state:i}=e,n=i.facet(Li),s=(n.override||i.languageDataAt("autocomplete",Sl(i)).map(lG)).map(c=>(this.active.find(d=>d.source==c)||new Mr(c,this.active.some(d=>d.state!=0)?1:0)).update(e,n));s.length==this.active.length&&s.every((c,u)=>c==this.active[u])&&(s=this.active);let o=this.open,l=e.effects.some(c=>c.is(hw));o&&e.docChanged&&(o=o.map(e.changes)),e.selection||s.some(c=>c.hasResult()&&e.changes.touchesRange(c.from,c.to))||!OG(s,this.active)||l?o=Ic.build(s,i,this.id,o,n,l):o&&o.disabled&&!s.some(c=>c.isPending)&&(o=null),!o&&s.every(c=>!c.isPending)&&s.some(c=>c.hasResult())&&(s=s.map(c=>c.hasResult()?new Mr(c.source,0):c));for(let c of e.effects)c.is(H$)&&(o=o&&o.setSelected(c.value,this.id));return s==this.active&&o==this.open?this:new Xg(s,this.id,o)}get tooltip(){return this.open?this.open.tooltip:null}get attrs(){return this.open?this.open.attrs:this.active.length?vG:_G}}function OG(t,e){if(t==e)return!0;for(let i=0,n=0;;){for(;i-1&&(i["aria-activedescendant"]=t+"-"+e),i}const yG=[];function Y$(t,e){if(t.isUserEvent("input.complete")){let n=t.annotation(cw);if(n&&e.activateOnCompletion(n))return 12}let i=t.isUserEvent("input.type");return i&&e.activateOnTyping?5:i?1:t.isUserEvent("delete.backward")?2:t.selection?8:t.docChanged?16:0}class Mr{constructor(e,i,n=!1){this.source=e,this.state=i,this.explicit=n}hasResult(){return!1}get isPending(){return this.state==1}update(e,i){let n=Y$(e,i),r=this;(n&8||n&16&&this.touches(e))&&(r=new Mr(r.source,0)),n&4&&r.state==0&&(r=new Mr(this.source,1)),r=r.updateFor(e,n);for(let s of e.effects)if(s.is(Vg))r=new Mr(r.source,1,s.value);else if(s.is(qf))r=new Mr(r.source,0);else if(s.is(hw))for(let o of s.value)o.source==r.source&&(r=o);return r}updateFor(e,i){return this.map(e.changes)}map(e){return this}touches(e){return e.changes.touchesRange(Sl(e.state))}}class Kc extends Mr{constructor(e,i,n,r,s,o){super(e,3,i),this.limit=n,this.result=r,this.from=s,this.to=o}hasResult(){return!0}updateFor(e,i){var n;if(!(i&3))return this.map(e.changes);let r=this.result;r.map&&!e.changes.empty&&(r=r.map(r,e.changes));let s=e.changes.mapPos(this.from),o=e.changes.mapPos(this.to,1),l=Sl(e.state);if(l>o||!r||i&2&&(Sl(e.startState)==this.from||li.map(e))}}),H$=ze.define(),Dn=Bi.define({create(){return Xg.start()},update(t,e){return t.update(e)},provide:t=>[qx.from(t,e=>e.tooltip),ve.contentAttributes.from(t,e=>e.attrs)]});function uw(t,e){const i=e.completion.apply||e.completion.label;let n=t.state.field(Dn).active.find(r=>r.source==e.source);return n instanceof Kc?(typeof i=="string"?t.dispatch({...aG(t.state,i,n.from,n.to),annotations:cw.of(e.completion)}):i(t,e.completion,n.from,n.to),!0):!1}const SG=pG(Dn,uw);function Om(t,e="option"){return i=>{let n=i.state.field(Dn,!1);if(!n||!n.open||n.open.disabled||Date.now()-n.open.timestamp-1?n.open.selected+r*(t?1:-1):t?0:o-1;return l<0?l=e=="page"?0:o-1:l>=o&&(l=e=="page"?o-1:0),i.dispatch({effects:H$.of(l)}),!0}}const xG=t=>{let e=t.state.field(Dn,!1);return t.state.readOnly||!e||!e.open||e.open.selected<0||e.open.disabled||Date.now()-e.open.timestampt.state.field(Dn,!1)?(t.dispatch({effects:Vg.of(!0)}),!0):!1,wG=t=>{let e=t.state.field(Dn,!1);return!e||!e.active.some(i=>i.state!=0)?!1:(t.dispatch({effects:qf.of(null)}),!0)};class CG{constructor(e,i){this.active=e,this.context=i,this.time=Date.now(),this.updates=[],this.done=void 0}}const kG=50,TG=1e3,AG=Jt.fromClass(class{constructor(t){this.view=t,this.debounceUpdate=-1,this.running=[],this.debounceAccept=-1,this.pendingStart=!1,this.composing=0;for(let e of t.state.field(Dn).active)e.isPending&&this.startQuery(e)}update(t){let e=t.state.field(Dn),i=t.state.facet(Li);if(!t.selectionSet&&!t.docChanged&&t.startState.field(Dn)==e)return;let n=t.transactions.some(s=>{let o=Y$(s,i);return o&8||(s.selection||s.docChanged)&&!(o&3)});for(let s=0;skG&&Date.now()-o.time>TG){for(let l of o.context.abortListeners)try{l()}catch(c){$n(this.view.state,c)}o.context.abortListeners=null,this.running.splice(s--,1)}else o.updates.push(...t.transactions)}this.debounceUpdate>-1&&clearTimeout(this.debounceUpdate),t.transactions.some(s=>s.effects.some(o=>o.is(Vg)))&&(this.pendingStart=!0);let r=this.pendingStart?50:i.activateOnTypingDelay;if(this.debounceUpdate=e.active.some(s=>s.isPending&&!this.running.some(o=>o.active.source==s.source))?setTimeout(()=>this.startUpdate(),r):-1,this.composing!=0)for(let s of t.transactions)s.isUserEvent("input.type")?this.composing=2:this.composing==2&&s.selection&&(this.composing=3)}startUpdate(){this.debounceUpdate=-1,this.pendingStart=!1;let{state:t}=this.view,e=t.field(Dn);for(let i of e.active)i.isPending&&!this.running.some(n=>n.active.source==i.source)&&this.startQuery(i);this.running.length&&e.open&&e.open.disabled&&(this.debounceAccept=setTimeout(()=>this.accept(),this.view.state.facet(Li).updateSyncTime))}startQuery(t){let{state:e}=this.view,i=Sl(e),n=new lw(e,i,t.explicit,this.view),r=new CG(t,n);this.running.push(r),Promise.resolve(t.source(n)).then(s=>{r.context.aborted||(r.done=s||null,this.scheduleAccept())},s=>{this.view.dispatch({effects:qf.of(null)}),$n(this.view.state,s)})}scheduleAccept(){this.running.every(t=>t.done!==void 0)?this.accept():this.debounceAccept<0&&(this.debounceAccept=setTimeout(()=>this.accept(),this.view.state.facet(Li).updateSyncTime))}accept(){var t;this.debounceAccept>-1&&clearTimeout(this.debounceAccept),this.debounceAccept=-1;let e=[],i=this.view.state.facet(Li),n=this.view.state.field(Dn);for(let r=0;rl.source==s.active.source);if(o&&o.isPending)if(s.done==null){let l=new Mr(s.active.source,0);for(let c of s.updates)l=l.update(c,i);l.isPending||e.push(l)}else this.startQuery(o)}(e.length||n.open&&n.open.disabled)&&this.view.dispatch({effects:hw.of(e)})}},{eventHandlers:{blur(t){let e=this.view.state.field(Dn,!1);if(e&&e.tooltip&&this.view.state.facet(Li).closeOnBlur){let i=e.open&&kB(this.view,e.open.tooltip);(!i||!i.dom.contains(t.relatedTarget))&&setTimeout(()=>this.view.dispatch({effects:qf.of(null)}),10)}},compositionstart(){this.composing=1},compositionend(){this.composing==3&&setTimeout(()=>this.view.dispatch({effects:Vg.of(!1)}),20),this.composing=0}}}),EG=typeof navigator=="object"&&/Win/.test(navigator.platform),MG=So.highest(ve.domEventHandlers({keydown(t,e){let i=e.state.field(Dn,!1);if(!i||!i.open||i.open.disabled||i.open.selected<0||t.key.length>1||t.ctrlKey&&!(EG&&t.altKey)||t.metaKey)return!1;let n=i.open.options[i.open.selected],r=i.active.find(o=>o.source==n.source),s=n.completion.commitCharacters||r.result.commitCharacters;return s&&s.indexOf(t.key)>-1&&uw(e,n),!1}})),F$=ve.baseTheme({".cm-tooltip.cm-tooltip-autocomplete":{"& > ul":{fontFamily:"monospace",whiteSpace:"nowrap",overflow:"hidden auto",maxWidth_fallback:"700px",maxWidth:"min(700px, 95vw)",minWidth:"250px",maxHeight:"10em",height:"100%",listStyle:"none",margin:0,padding:0,"& > li, & > completion-section":{padding:"1px 3px",lineHeight:1.2},"& > li":{overflowX:"hidden",textOverflow:"ellipsis",cursor:"pointer"},"& > completion-section":{display:"list-item",borderBottom:"1px solid silver",paddingLeft:"0.5em",opacity:.7}}},"&light .cm-tooltip-autocomplete ul li[aria-selected]":{background:"#17c",color:"white"},"&light .cm-tooltip-autocomplete-disabled ul li[aria-selected]":{background:"#777"},"&dark .cm-tooltip-autocomplete ul li[aria-selected]":{background:"#347",color:"white"},"&dark .cm-tooltip-autocomplete-disabled ul li[aria-selected]":{background:"#444"},".cm-completionListIncompleteTop:before, .cm-completionListIncompleteBottom:after":{content:'"···"',opacity:.5,display:"block",textAlign:"center"},".cm-tooltip.cm-completionInfo":{position:"absolute",padding:"3px 9px",width:"max-content",maxWidth:"400px",boxSizing:"border-box",whiteSpace:"pre-line"},".cm-completionInfo.cm-completionInfo-left":{right:"100%"},".cm-completionInfo.cm-completionInfo-right":{left:"100%"},".cm-completionInfo.cm-completionInfo-left-narrow":{right:"30px"},".cm-completionInfo.cm-completionInfo-right-narrow":{left:"30px"},"&light .cm-snippetField":{backgroundColor:"#00000022"},"&dark .cm-snippetField":{backgroundColor:"#ffffff22"},".cm-snippetFieldPosition":{verticalAlign:"text-top",width:0,height:"1.15em",display:"inline-block",margin:"0 -0.7px -.7em",borderLeft:"1.4px dotted #888"},".cm-completionMatchedText":{textDecoration:"underline"},".cm-completionDetail":{marginLeft:"0.5em",fontStyle:"italic"},".cm-completionIcon":{fontSize:"90%",width:".8em",display:"inline-block",textAlign:"center",paddingRight:".6em",opacity:"0.6",boxSizing:"content-box"},".cm-completionIcon-function, .cm-completionIcon-method":{"&:after":{content:"'ƒ'"}},".cm-completionIcon-class":{"&:after":{content:"'○'"}},".cm-completionIcon-interface":{"&:after":{content:"'◌'"}},".cm-completionIcon-variable":{"&:after":{content:"'𝑥'"}},".cm-completionIcon-constant":{"&:after":{content:"'𝐶'"}},".cm-completionIcon-type":{"&:after":{content:"'𝑡'"}},".cm-completionIcon-enum":{"&:after":{content:"'∪'"}},".cm-completionIcon-property":{"&:after":{content:"'□'"}},".cm-completionIcon-keyword":{"&:after":{content:"'🔑︎'"}},".cm-completionIcon-namespace":{"&:after":{content:"'▢'"}},".cm-completionIcon-text":{"&:after":{content:"'abc'",fontSize:"50%",verticalAlign:"middle"}}});class PG{constructor(e,i,n,r){this.field=e,this.line=i,this.from=n,this.to=r}}class fw{constructor(e,i,n){this.field=e,this.from=i,this.to=n}map(e){let i=e.mapPos(this.from,-1,Fi.TrackDel),n=e.mapPos(this.to,1,Fi.TrackDel);return i==null||n==null?null:new fw(this.field,i,n)}}class dw{constructor(e,i){this.lines=e,this.fieldPositions=i}instantiate(e,i){let n=[],r=[i],s=e.doc.lineAt(i),o=/^\s*/.exec(s.text)[0];for(let c of this.lines){if(n.length){let u=o,d=/^\t*/.exec(c)[0].length;for(let p=0;pnew fw(c.field,r[c.line]+c.from,r[c.line]+c.to));return{text:n,ranges:l}}static parse(e){let i=[],n=[],r=[],s;for(let o of e.split(/\r\n?|\n/)){for(;s=/[#$]\{(?:(\d+)(?::([^{}]*))?|((?:\\[{}]|[^{}])*))\}/.exec(o);){let l=s[1]?+s[1]:null,c=s[2]||s[3]||"",u=-1,d=c.replace(/\\[{}]/g,p=>p[1]);for(let p=0;p=u&&g.field++}for(let p of r)if(p.line==n.length&&p.from>s.index){let g=s[2]?3+(s[1]||"").length:2;p.from-=g,p.to-=g}r.push(new PG(u,n.length,s.index,s.index+d.length)),o=o.slice(0,s.index)+c+o.slice(s.index+s[0].length)}o=o.replace(/\\([{}])/g,(l,c,u)=>{for(let d of r)d.line==n.length&&d.from>u&&(d.from--,d.to--);return c}),n.push(o)}return new dw(n,r)}}let RG=Pe.widget({widget:new class extends Gr{toDOM(){let t=document.createElement("span");return t.className="cm-snippetFieldPosition",t}ignoreEvent(){return!1}}}),QG=Pe.mark({class:"cm-snippetField"});class wh{constructor(e,i){this.ranges=e,this.active=i,this.deco=Pe.set(e.map(n=>(n.from==n.to?RG:QG).range(n.from,n.to)),!0)}map(e){let i=[];for(let n of this.ranges){let r=n.map(e);if(!r)return null;i.push(r)}return new wh(i,this.active)}selectionInsideField(e){return e.ranges.every(i=>this.ranges.some(n=>n.field==this.active&&n.from<=i.from&&n.to>=i.to))}}const yd=ze.define({map(t,e){return t&&t.map(e)}}),LG=ze.define(),Wf=Bi.define({create(){return null},update(t,e){for(let i of e.effects){if(i.is(yd))return i.value;if(i.is(LG)&&t)return new wh(t.ranges,i.value)}return t&&e.docChanged&&(t=t.map(e.changes)),t&&e.selection&&!t.selectionInsideField(e.selection)&&(t=null),t},provide:t=>ve.decorations.from(t,e=>e?e.deco:Pe.none)});function pw(t,e){return se.create(t.filter(i=>i.field==e).map(i=>se.range(i.from,i.to)))}function DG(t){let e=dw.parse(t);return(i,n,r,s)=>{let{text:o,ranges:l}=e.instantiate(i.state,r),{main:c}=i.state.selection,u={changes:{from:r,to:s==c.from?c.to:s,insert:at.of(o)},scrollIntoView:!0,annotations:n?[cw.of(n),hi.userEvent.of("input.complete")]:void 0};if(l.length&&(u.selection=pw(l,0)),l.some(d=>d.field>0)){let d=new wh(l,0),p=u.effects=[yd.of(d)];i.state.field(Wf,!1)===void 0&&p.push(ze.appendConfig.of([Wf,jG,IG,F$]))}i.dispatch(i.state.update(u))}}function G$(t){return({state:e,dispatch:i})=>{let n=e.field(Wf,!1);if(!n||t<0&&n.active==0)return!1;let r=n.active+t,s=t>0&&!n.ranges.some(o=>o.field==r+t);return i(e.update({selection:pw(n.ranges,r),effects:yd.of(s?null:new wh(n.ranges,r)),scrollIntoView:!0})),!0}}const BG=({state:t,dispatch:e})=>t.field(Wf,!1)?(e(t.update({effects:yd.of(null)})),!0):!1,$G=G$(1),zG=G$(-1),NG=[{key:"Tab",run:$G,shift:zG},{key:"Escape",run:BG}],uM=Se.define({combine(t){return t.length?t[0]:NG}}),jG=So.highest(Ll.compute([uM],t=>t.facet(uM)));function Qn(t,e){return{...e,apply:DG(t)}}const IG=ve.domEventHandlers({mousedown(t,e){let i=e.state.field(Wf,!1),n;if(!i||(n=e.posAtCoords({x:t.clientX,y:t.clientY}))==null)return!1;let r=i.ranges.find(s=>s.from<=n&&s.to>=n);return!r||r.field==i.active?!1:(e.dispatch({selection:pw(i.ranges,r.field),effects:yd.of(i.ranges.some(s=>s.field>r.field)?new wh(i.ranges,r.field):null),scrollIntoView:!0}),!0)}}),Uf={brackets:["(","[","{","'",'"'],before:")]}:;>",stringPrefixes:[]},vl=ze.define({map(t,e){let i=e.mapPos(t,-1,Fi.TrackAfter);return i??void 0}}),mw=new class extends Sa{};mw.startSide=1;mw.endSide=-1;const K$=Bi.define({create(){return Ge.empty},update(t,e){if(t=t.map(e.changes),e.selection){let i=e.state.doc.lineAt(e.selection.main.head);t=t.update({filter:n=>n>=i.from&&n<=i.to})}for(let i of e.effects)i.is(vl)&&(t=t.update({add:[mw.range(i.value,i.value+1)]}));return t}});function VG(){return[ZG,K$]}const W_="()[]{}<>«»»«[]{}";function J$(t){for(let e=0;e{if((XG?t.composing:t.compositionStarted)||t.state.readOnly)return!1;let r=t.state.selection.main;if(n.length>2||n.length==2&&gs(Ln(n,0))==1||e!=r.from||i!=r.to)return!1;let s=UG(t.state,n);return s?(t.dispatch(s),!0):!1}),qG=({state:t,dispatch:e})=>{if(t.readOnly)return!1;let n=e4(t,t.selection.main.head).brackets||Uf.brackets,r=null,s=t.changeByRange(o=>{if(o.empty){let l=YG(t.doc,o.head);for(let c of n)if(c==l&&wO(t.doc,o.head)==J$(Ln(c,0)))return{changes:{from:o.head-c.length,to:o.head+c.length},range:se.cursor(o.head-c.length)}}return{range:r=o}});return r||e(t.update(s,{scrollIntoView:!0,userEvent:"delete.backward"})),!r},WG=[{key:"Backspace",run:qG}];function UG(t,e){let i=e4(t,t.selection.main.head),n=i.brackets||Uf.brackets;for(let r of n){let s=J$(Ln(r,0));if(e==r)return s==r?GG(t,r,n.indexOf(r+r+r)>-1,i):HG(t,r,s,i.before||Uf.before);if(e==s&&t4(t,t.selection.main.from))return FG(t,r,s)}return null}function t4(t,e){let i=!1;return t.field(K$).between(0,t.doc.length,n=>{n==e&&(i=!0)}),i}function wO(t,e){let i=t.sliceString(e,e+2);return i.slice(0,gs(Ln(i,0)))}function YG(t,e){let i=t.sliceString(e-2,e);return gs(Ln(i,0))==i.length?i:i.slice(1)}function HG(t,e,i,n){let r=null,s=t.changeByRange(o=>{if(!o.empty)return{changes:[{insert:e,from:o.from},{insert:i,from:o.to}],effects:vl.of(o.to+e.length),range:se.range(o.anchor+e.length,o.head+e.length)};let l=wO(t.doc,o.head);return!l||/\s/.test(l)||n.indexOf(l)>-1?{changes:{insert:e+i,from:o.head},effects:vl.of(o.head+e.length),range:se.cursor(o.head+e.length)}:{range:r=o}});return r?null:t.update(s,{scrollIntoView:!0,userEvent:"input.type"})}function FG(t,e,i){let n=null,r=t.changeByRange(s=>s.empty&&wO(t.doc,s.head)==i?{changes:{from:s.head,to:s.head+i.length,insert:i},range:se.cursor(s.head+i.length)}:n={range:s});return n?null:t.update(r,{scrollIntoView:!0,userEvent:"input.type"})}function GG(t,e,i,n){let r=n.stringPrefixes||Uf.stringPrefixes,s=null,o=t.changeByRange(l=>{if(!l.empty)return{changes:[{insert:e,from:l.from},{insert:e,from:l.to}],effects:vl.of(l.to+e.length),range:se.range(l.anchor+e.length,l.head+e.length)};let c=l.head,u=wO(t.doc,c),d;if(u==e){if(fM(t,c))return{changes:{insert:e+e,from:c},effects:vl.of(c+e.length),range:se.cursor(c+e.length)};if(t4(t,c)){let g=i&&t.sliceDoc(c,c+e.length*3)==e+e+e?e+e+e:e;return{changes:{from:c,to:c+g.length,insert:g},range:se.cursor(c+g.length)}}}else{if(i&&t.sliceDoc(c-2*e.length,c)==e+e&&(d=dM(t,c-2*e.length,r))>-1&&fM(t,d))return{changes:{insert:e+e+e+e,from:c},effects:vl.of(c+e.length),range:se.cursor(c+e.length)};if(t.charCategorizer(c)(u)!=Dt.Word&&dM(t,c,r)>-1&&!KG(t,c,e,r))return{changes:{insert:e+e,from:c},effects:vl.of(c+e.length),range:se.cursor(c+e.length)}}return{range:s=l}});return s?null:t.update(o,{scrollIntoView:!0,userEvent:"input.type"})}function fM(t,e){let i=xt(t).resolveInner(e+1);return i.parent&&i.from==e}function KG(t,e,i,n){let r=xt(t).resolveInner(e,-1),s=n.reduce((o,l)=>Math.max(o,l.length),0);for(let o=0;o<5;o++){let l=t.sliceDoc(r.from,Math.min(r.to,r.from+i.length+s)),c=l.indexOf(i);if(!c||c>-1&&n.indexOf(l.slice(0,c))>-1){let d=r.firstChild;for(;d&&d.from==r.from&&d.to-d.from>i.length+c;){if(t.sliceDoc(d.to-i.length,d.to)==i)return!1;d=d.firstChild}return!0}let u=r.to==e&&r.parent;if(!u)break;r=u}return!1}function dM(t,e,i){let n=t.charCategorizer(e);if(n(t.sliceDoc(e-1,e))!=Dt.Word)return e;for(let r of i){let s=e-r.length;if(t.sliceDoc(s,e)==r&&n(t.sliceDoc(s-1,s))!=Dt.Word)return s}return-1}function JG(t={}){return[MG,Dn,Li.of(t),AG,eK,F$]}const i4=[{key:"Ctrl-Space",run:q_},{mac:"Alt-`",run:q_},{mac:"Alt-i",run:q_},{key:"Escape",run:wG},{key:"ArrowDown",run:Om(!0)},{key:"ArrowUp",run:Om(!1)},{key:"PageDown",run:Om(!0,"page")},{key:"PageUp",run:Om(!1,"page")},{key:"Enter",run:xG}],eK=So.highest(Ll.computeN([Li],t=>t.facet(Li).defaultKeymap?[i4]:[]));class pM{constructor(e,i,n){this.from=e,this.to=i,this.diagnostic=n}}class ul{constructor(e,i,n){this.diagnostics=e,this.panel=i,this.selected=n}static init(e,i,n){let r=n.facet(Yf).markerFilter;r&&(e=r(e,n));let s=e.slice().sort((O,_)=>O.from-_.from||O.to-_.to),o=new _o,l=[],c=0,u=n.doc.iter(),d=0,p=n.doc.length;for(let O=0;;){let _=O==s.length?null:s[O];if(!_&&!l.length)break;let b,x;if(l.length)b=c,x=l.reduce((T,A)=>Math.min(T,A.to),_&&_.from>b?_.from:1e8);else{if(b=_.from,b>p)break;x=_.to,l.push(_),O++}for(;OT.from||T.to==b))l.push(T),O++,x=Math.min(T.to,x);else{x=Math.min(T.from,x);break}}x=Math.min(x,p);let w=!1;if(l.some(T=>T.from==b&&(T.to==x||x==p))&&(w=b==x,!w&&x-b<10)){let T=b-(d+u.value.length);T>0&&(u.next(T),d=b);for(let A=b;;){if(A>=x){w=!0;break}if(!u.lineBreak&&d+u.value.length>A)break;A=d+u.value.length,d+=u.value.length,u.next()}}let k=dK(l);if(w)o.add(b,b,Pe.widget({widget:new cK(k),diagnostics:l.slice()}));else{let T=l.reduce((A,Q)=>Q.markClass?A+" "+Q.markClass:A,"");o.add(b,x,Pe.mark({class:"cm-lintRange cm-lintRange-"+k+T,diagnostics:l.slice(),inclusiveEnd:l.some(A=>A.to>x)}))}if(c=x,c==p)break;for(let T=0;T{if(!(e&&o.diagnostics.indexOf(e)<0))if(!n)n=new pM(r,s,e||o.diagnostics[0]);else{if(o.diagnostics.indexOf(n.diagnostic)<0)return!1;n=new pM(n.from,s,n.diagnostic)}}),n}function tK(t,e){let i=e.pos,n=e.end||i,r=t.state.facet(Yf).hideOn(t,i,n);if(r!=null)return r;let s=t.startState.doc.lineAt(e.pos);return!!(t.effects.some(o=>o.is(n4))||t.changes.touchesRange(s.from,Math.max(s.to,n)))}function iK(t,e){return t.field(rr,!1)?e:e.concat(ze.appendConfig.of(pK))}const n4=ze.define(),gw=ze.define(),r4=ze.define(),rr=Bi.define({create(){return new ul(Pe.none,null,null)},update(t,e){if(e.docChanged&&t.diagnostics.size){let i=t.diagnostics.map(e.changes),n=null,r=t.panel;if(t.selected){let s=e.changes.mapPos(t.selected.from,1);n=Aa(i,t.selected.diagnostic,s)||Aa(i,null,s)}!i.size&&r&&e.state.facet(Yf).autoPanel&&(r=null),t=new ul(i,r,n)}for(let i of e.effects)if(i.is(n4)){let n=e.state.facet(Yf).autoPanel?i.value.length?Hf.open:null:t.panel;t=ul.init(i.value,n,e.state)}else i.is(gw)?t=new ul(t.diagnostics,i.value?Hf.open:null,t.selected):i.is(r4)&&(t=new ul(t.diagnostics,t.panel,i.value));return t},provide:t=>[zf.from(t,e=>e.panel),ve.decorations.from(t,e=>e.diagnostics)]}),nK=Pe.mark({class:"cm-lintRange cm-lintRange-active"});function rK(t,e,i){let{diagnostics:n}=t.state.field(rr),r,s=-1,o=-1;n.between(e-(i<0?1:0),e+(i>0?1:0),(c,u,{spec:d})=>{if(e>=c&&e<=u&&(c==u||(e>c||i>0)&&(eo4(t,i,!1)))}const oK=t=>{let e=t.state.field(rr,!1);(!e||!e.panel)&&t.dispatch({effects:iK(t.state,[gw.of(!0)])});let i=Wx(t,Hf.open);return i&&i.dom.querySelector(".cm-panel-lint ul").focus(),!0},mM=t=>{let e=t.state.field(rr,!1);return!e||!e.panel?!1:(t.dispatch({effects:gw.of(!1)}),!0)},aK=t=>{let e=t.state.field(rr,!1);if(!e)return!1;let i=t.state.selection.main,n=Aa(e.diagnostics,null,i.to+1);return!n&&(n=Aa(e.diagnostics,null,0),!n||n.from==i.from&&n.to==i.to)?!1:(t.dispatch({selection:{anchor:n.from,head:n.to},scrollIntoView:!0}),!0)},lK=[{key:"Mod-Shift-m",run:oK,preventDefault:!0},{key:"F8",run:aK}],Yf=Se.define({combine(t){return{sources:t.map(e=>e.source).filter(e=>e!=null),...Qs(t.map(e=>e.config),{delay:750,markerFilter:null,tooltipFilter:null,needsRefresh:null,hideOn:()=>null},{delay:Math.max,markerFilter:gM,tooltipFilter:gM,needsRefresh:(e,i)=>e?i?n=>e(n)||i(n):e:i,hideOn:(e,i)=>e?i?(n,r,s)=>e(n,r,s)||i(n,r,s):e:i,autoPanel:(e,i)=>e||i})}}});function gM(t,e){return t?e?(i,n)=>e(t(i,n),n):t:e}function s4(t){let e=[];if(t)e:for(let{name:i}of t){for(let n=0;ns.toLowerCase()==r.toLowerCase())){e.push(r);continue e}}e.push("")}return e}function o4(t,e,i){var n;let r=i?s4(e.actions):[];return vt("li",{class:"cm-diagnostic cm-diagnostic-"+e.severity},vt("span",{class:"cm-diagnosticText"},e.renderMessage?e.renderMessage(t):e.message),(n=e.actions)===null||n===void 0?void 0:n.map((s,o)=>{let l=!1,c=O=>{if(O.preventDefault(),l)return;l=!0;let _=Aa(t.state.field(rr).diagnostics,e);_&&s.apply(t,_.from,_.to)},{name:u}=s,d=r[o]?u.indexOf(r[o]):-1,p=d<0?u:[u.slice(0,d),vt("u",u.slice(d,d+1)),u.slice(d+1)],g=s.markClass?" "+s.markClass:"";return vt("button",{type:"button",class:"cm-diagnosticAction"+g,onclick:c,onmousedown:c,"aria-label":` Action: ${u}${d<0?"":` (access key "${r[o]})"`}.`},p)}),e.source&&vt("div",{class:"cm-diagnosticSource"},e.source))}class cK extends Gr{constructor(e){super(),this.sev=e}eq(e){return e.sev==this.sev}toDOM(){return vt("span",{class:"cm-lintPoint cm-lintPoint-"+this.sev})}}class OM{constructor(e,i){this.diagnostic=i,this.id="item_"+Math.floor(Math.random()*4294967295).toString(16),this.dom=o4(e,i,!0),this.dom.id=this.id,this.dom.setAttribute("role","option")}}class Hf{constructor(e){this.view=e,this.items=[];let i=r=>{if(!(r.ctrlKey||r.altKey||r.metaKey)){if(r.keyCode==27)mM(this.view),this.view.focus();else if(r.keyCode==38||r.keyCode==33)this.moveSelection((this.selectedIndex-1+this.items.length)%this.items.length);else if(r.keyCode==40||r.keyCode==34)this.moveSelection((this.selectedIndex+1)%this.items.length);else if(r.keyCode==36)this.moveSelection(0);else if(r.keyCode==35)this.moveSelection(this.items.length-1);else if(r.keyCode==13)this.view.focus();else if(r.keyCode>=65&&r.keyCode<=90&&this.selectedIndex>=0){let{diagnostic:s}=this.items[this.selectedIndex],o=s4(s.actions);for(let l=0;l{for(let s=0;smM(this.view)},"×")),this.update()}get selectedIndex(){let e=this.view.state.field(rr).selected;if(!e)return-1;for(let i=0;i{for(let d of u.diagnostics){if(o.has(d))continue;o.add(d);let p=-1,g;for(let O=n;On&&(this.items.splice(n,p-n),r=!0)),i&&g.diagnostic==i.diagnostic?g.dom.hasAttribute("aria-selected")||(g.dom.setAttribute("aria-selected","true"),s=g):g.dom.hasAttribute("aria-selected")&&g.dom.removeAttribute("aria-selected"),n++}});n({sel:s.dom.getBoundingClientRect(),panel:this.list.getBoundingClientRect()}),write:({sel:l,panel:c})=>{let u=c.height/this.list.offsetHeight;l.topc.bottom&&(this.list.scrollTop+=(l.bottom-c.bottom)/u)}})):this.selectedIndex<0&&this.list.removeAttribute("aria-activedescendant"),r&&this.sync()}sync(){let e=this.list.firstChild;function i(){let n=e;e=n.nextSibling,n.remove()}for(let n of this.items)if(n.dom.parentNode==this.list){for(;e!=n.dom;)i();e=n.dom.nextSibling}else this.list.insertBefore(n.dom,e);for(;e;)i()}moveSelection(e){if(this.selectedIndex<0)return;let i=this.view.state.field(rr),n=Aa(i.diagnostics,this.items[e].diagnostic);n&&this.view.dispatch({selection:{anchor:n.from,head:n.to},scrollIntoView:!0,effects:r4.of(n)})}static open(e){return new Hf(e)}}function hK(t,e='viewBox="0 0 40 40"'){return`url('data:image/svg+xml,${encodeURIComponent(t)}')`}function vm(t){return hK(``,'width="6" height="3"')}const uK=ve.baseTheme({".cm-diagnostic":{padding:"3px 6px 3px 8px",marginLeft:"-1px",display:"block",whiteSpace:"pre-wrap"},".cm-diagnostic-error":{borderLeft:"5px solid #d11"},".cm-diagnostic-warning":{borderLeft:"5px solid orange"},".cm-diagnostic-info":{borderLeft:"5px solid #999"},".cm-diagnostic-hint":{borderLeft:"5px solid #66d"},".cm-diagnosticAction":{font:"inherit",border:"none",padding:"2px 4px",backgroundColor:"#444",color:"white",borderRadius:"3px",marginLeft:"8px",cursor:"pointer"},".cm-diagnosticSource":{fontSize:"70%",opacity:.7},".cm-lintRange":{backgroundPosition:"left bottom",backgroundRepeat:"repeat-x",paddingBottom:"0.7px"},".cm-lintRange-error":{backgroundImage:vm("#d11")},".cm-lintRange-warning":{backgroundImage:vm("orange")},".cm-lintRange-info":{backgroundImage:vm("#999")},".cm-lintRange-hint":{backgroundImage:vm("#66d")},".cm-lintRange-active":{backgroundColor:"#ffdd9980"},".cm-tooltip-lint":{padding:0,margin:0},".cm-lintPoint":{position:"relative","&:after":{content:'""',position:"absolute",bottom:0,left:"-2px",borderLeft:"3px solid transparent",borderRight:"3px solid transparent",borderBottom:"4px solid #d11"}},".cm-lintPoint-warning":{"&:after":{borderBottomColor:"orange"}},".cm-lintPoint-info":{"&:after":{borderBottomColor:"#999"}},".cm-lintPoint-hint":{"&:after":{borderBottomColor:"#66d"}},".cm-panel.cm-panel-lint":{position:"relative","& ul":{maxHeight:"100px",overflowY:"auto","& [aria-selected]":{backgroundColor:"#ddd","& u":{textDecoration:"underline"}},"&:focus [aria-selected]":{background_fallback:"#bdf",backgroundColor:"Highlight",color_fallback:"white",color:"HighlightText"},"& u":{textDecoration:"none"},padding:0,margin:0},"& [name=close]":{position:"absolute",top:"0",right:"2px",background:"inherit",border:"none",font:"inherit",padding:0,margin:0}}});function fK(t){return t=="error"?4:t=="warning"?3:t=="info"?2:1}function dK(t){let e="hint",i=1;for(let n of t){let r=fK(n.severity);r>i&&(i=r,e=n.severity)}return e}const pK=[rr,ve.decorations.compute([rr],t=>{let{selected:e,panel:i}=t.field(rr);return!e||!i||e.from==e.to?Pe.none:Pe.set([nK.range(e.from,e.to)])}),WU(rK,{hideOn:tK}),uK];var vM=function(e){e===void 0&&(e={});var{crosshairCursor:i=!1}=e,n=[];e.closeBracketsKeymap!==!1&&(n=n.concat(WG)),e.defaultKeymap!==!1&&(n=n.concat(AF)),e.searchKeymap!==!1&&(n=n.concat(tG)),e.historyKeymap!==!1&&(n=n.concat(DH)),e.foldKeymap!==!1&&(n=n.concat(FY)),e.completionKeymap!==!1&&(n=n.concat(i4)),e.lintKeymap!==!1&&(n=n.concat(lK));var r=[];return e.lineNumbers!==!1&&r.push(sY()),e.highlightActiveLineGutter!==!1&&r.push(lY()),e.highlightSpecialChars!==!1&&r.push(bU()),e.history!==!1&&r.push(kH()),e.foldGutter!==!1&&r.push(eH()),e.drawSelection!==!1&&r.push(hU()),e.dropCursor!==!1&&r.push(mU()),e.allowMultipleSelections!==!1&&r.push(et.allowMultipleSelections.of(!0)),e.indentOnInput!==!1&&r.push(VY()),e.syntaxHighlighting!==!1&&r.push(JB(rH,{fallback:!0})),e.bracketMatching!==!1&&r.push(uH()),e.closeBrackets!==!1&&r.push(VG()),e.autocompletion!==!1&&r.push(JG()),e.rectangularSelection!==!1&&r.push(DU()),i!==!1&&r.push(zU()),e.highlightActiveLine!==!1&&r.push(TU()),e.highlightSelectionMatches!==!1&&r.push(LF()),e.tabSize&&typeof e.tabSize=="number"&&r.push(yh.of(" ".repeat(e.tabSize))),r.concat([Ll.of(n.flat())]).filter(Boolean)};const mK="#e5c07b",_M="#e06c75",gK="#56b6c2",OK="#ffffff",Hm="#abb2bf",Bb="#7d8799",vK="#61afef",_K="#98c379",yM="#d19a66",yK="#c678dd",bK="#21252b",bM="#2c313a",SM="#282c34",U_="#353a42",SK="#3E4451",xM="#528bff",xK=ve.theme({"&":{color:Hm,backgroundColor:SM},".cm-content":{caretColor:xM},".cm-cursor, .cm-dropCursor":{borderLeftColor:xM},"&.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground, .cm-selectionBackground, .cm-content ::selection":{backgroundColor:SK},".cm-panels":{backgroundColor:bK,color:Hm},".cm-panels.cm-panels-top":{borderBottom:"2px solid black"},".cm-panels.cm-panels-bottom":{borderTop:"2px solid black"},".cm-searchMatch":{backgroundColor:"#72a1ff59",outline:"1px solid #457dff"},".cm-searchMatch.cm-searchMatch-selected":{backgroundColor:"#6199ff2f"},".cm-activeLine":{backgroundColor:"#6699ff0b"},".cm-selectionMatch":{backgroundColor:"#aafe661a"},"&.cm-focused .cm-matchingBracket, &.cm-focused .cm-nonmatchingBracket":{backgroundColor:"#bad0f847"},".cm-gutters":{backgroundColor:SM,color:Bb,border:"none"},".cm-activeLineGutter":{backgroundColor:bM},".cm-foldPlaceholder":{backgroundColor:"transparent",border:"none",color:"#ddd"},".cm-tooltip":{border:"none",backgroundColor:U_},".cm-tooltip .cm-tooltip-arrow:before":{borderTopColor:"transparent",borderBottomColor:"transparent"},".cm-tooltip .cm-tooltip-arrow:after":{borderTopColor:U_,borderBottomColor:U_},".cm-tooltip-autocomplete":{"& > ul > li[aria-selected]":{backgroundColor:bM,color:Hm}}},{dark:!0}),wK=Od.define([{tag:V.keyword,color:yK},{tag:[V.name,V.deleted,V.character,V.propertyName,V.macroName],color:_M},{tag:[V.function(V.variableName),V.labelName],color:vK},{tag:[V.color,V.constant(V.name),V.standard(V.name)],color:yM},{tag:[V.definition(V.name),V.separator],color:Hm},{tag:[V.typeName,V.className,V.number,V.changed,V.annotation,V.modifier,V.self,V.namespace],color:mK},{tag:[V.operator,V.operatorKeyword,V.url,V.escape,V.regexp,V.link,V.special(V.string)],color:gK},{tag:[V.meta,V.comment],color:Bb},{tag:V.strong,fontWeight:"bold"},{tag:V.emphasis,fontStyle:"italic"},{tag:V.strikethrough,textDecoration:"line-through"},{tag:V.link,color:Bb,textDecoration:"underline"},{tag:V.heading,fontWeight:"bold",color:_M},{tag:[V.atom,V.bool,V.special(V.variableName)],color:yM},{tag:[V.processingInstruction,V.string,V.inserted],color:_K},{tag:V.invalid,color:OK}]),a4=[xK,JB(wK)];var CK=ve.theme({"&":{backgroundColor:"#fff"}},{dark:!1}),kK=function(e){e===void 0&&(e={});var{indentWithTab:i=!0,editable:n=!0,readOnly:r=!1,theme:s="light",placeholder:o="",basicSetup:l=!0}=e,c=[];switch(i&&c.unshift(Ll.of([EF])),l&&(typeof l=="boolean"?c.unshift(vM()):c.unshift(vM(l))),o&&c.unshift(PU(o)),s){case"light":c.push(CK);break;case"dark":c.push(a4);break;case"none":break;default:c.push(s);break}return n===!1&&c.push(ve.editable.of(!1)),r&&c.push(et.readOnly.of(!0)),[...c]},TK=t=>({line:t.state.doc.lineAt(t.state.selection.main.from),lineCount:t.state.doc.lines,lineBreak:t.state.lineBreak,length:t.state.doc.length,readOnly:t.state.readOnly,tabSize:t.state.tabSize,selection:t.state.selection,selectionAsSingle:t.state.selection.asSingle().main,ranges:t.state.selection.ranges,selectionCode:t.state.sliceDoc(t.state.selection.main.from,t.state.selection.main.to),selections:t.state.selection.ranges.map(e=>t.state.sliceDoc(e.from,e.to)),selectedText:t.state.selection.ranges.some(e=>!e.empty)});class AK{constructor(e,i){this.timeLeftMS=void 0,this.timeoutMS=void 0,this.isCancelled=!1,this.isTimeExhausted=!1,this.callbacks=[],this.timeLeftMS=i,this.timeoutMS=i,this.callbacks.push(e)}tick(){if(!this.isCancelled&&!this.isTimeExhausted&&(this.timeLeftMS--,this.timeLeftMS<=0)){this.isTimeExhausted=!0;var e=this.callbacks.slice();this.callbacks.length=0,e.forEach(i=>{try{i()}catch(n){console.error("TimeoutLatch callback error:",n)}})}}cancel(){this.isCancelled=!0,this.callbacks.length=0}reset(){this.timeLeftMS=this.timeoutMS,this.isCancelled=!1,this.isTimeExhausted=!1}get isDone(){return this.isCancelled||this.isTimeExhausted}}class wM{constructor(){this.interval=null,this.latches=new Set}add(e){this.latches.add(e),this.start()}remove(e){this.latches.delete(e),this.latches.size===0&&this.stop()}start(){this.interval===null&&(this.interval=setInterval(()=>{this.latches.forEach(e=>{e.tick(),e.isDone&&this.remove(e)})},1))}stop(){this.interval!==null&&(clearInterval(this.interval),this.interval=null)}}var Y_=null,EK=()=>typeof window>"u"?new wM:(Y_||(Y_=new wM),Y_),CM=Rs.define(),MK=200,PK=[];function RK(t){var{value:e,selection:i,onChange:n,onStatistics:r,onCreateEditor:s,onUpdate:o,extensions:l=PK,autoFocus:c,theme:u="light",height:d=null,minHeight:p=null,maxHeight:g=null,width:O=null,minWidth:_=null,maxWidth:b=null,placeholder:x="",editable:w=!0,readOnly:k=!1,indentWithTab:T=!0,basicSetup:A=!0,root:Q,initialState:E}=t,[z,N]=Z.useState(),[q,J]=Z.useState(),[U,R]=Z.useState(),B=Z.useState(()=>({current:null}))[0],j=Z.useState(()=>({current:null}))[0],$=ve.theme({"&":{height:d,minHeight:p,maxHeight:g,width:O,minWidth:_,maxWidth:b},"& .cm-scroller":{height:"100% !important"}}),D=ve.updateListener.of(F=>{if(F.docChanged&&typeof n=="function"&&!F.transactions.some(K=>K.annotation(CM))){B.current?B.current.reset():(B.current=new AK(()=>{if(j.current){var K=j.current;j.current=null,K()}B.current=null},MK),EK().add(B.current));var M=F.state.doc,I=M.toString();n(I,F)}r&&r(TK(F))}),X=kK({theme:u,editable:w,readOnly:k,placeholder:x,indentWithTab:T,basicSetup:A}),H=[D,$,...X];return o&&typeof o=="function"&&H.push(ve.updateListener.of(o)),H=H.concat(l),Z.useLayoutEffect(()=>{if(z&&!U){var F={doc:e,selection:i,extensions:H},M=E?et.fromJSON(E.json,F,E.fields):et.create(F);if(R(M),!q){var I=new ve({state:M,parent:z,root:Q});J(I),s&&s(I,M)}}return()=>{q&&(R(void 0),J(void 0))}},[z,U]),Z.useEffect(()=>{t.container&&N(t.container)},[t.container]),Z.useEffect(()=>()=>{q&&(q.destroy(),J(void 0)),B.current&&(B.current.cancel(),B.current=null)},[q]),Z.useEffect(()=>{c&&q&&q.focus()},[c,q]),Z.useEffect(()=>{q&&q.dispatch({effects:ze.reconfigure.of(H)})},[u,l,d,p,g,O,_,b,x,w,k,T,A,n,o]),Z.useEffect(()=>{if(e!==void 0){var F=q?q.state.doc.toString():"";if(q&&e!==F){var M=B.current&&!B.current.isDone,I=()=>{q&&e!==q.state.doc.toString()&&q.dispatch({changes:{from:0,to:q.state.doc.toString().length,insert:e||""},annotations:[CM.of(!0)]})};M?j.current=I:I()}}},[e,q]),{state:U,setState:R,view:q,setView:J,container:z,setContainer:N}}var QK=["className","value","selection","extensions","onChange","onStatistics","onCreateEditor","onUpdate","autoFocus","theme","height","minHeight","maxHeight","width","minWidth","maxWidth","basicSetup","placeholder","indentWithTab","editable","readOnly","root","initialState"],l4=Z.forwardRef((t,e)=>{var{className:i,value:n="",selection:r,extensions:s=[],onChange:o,onStatistics:l,onCreateEditor:c,onUpdate:u,autoFocus:d,theme:p="light",height:g,minHeight:O,maxHeight:_,width:b,minWidth:x,maxWidth:w,basicSetup:k,placeholder:T,indentWithTab:A,editable:Q,readOnly:E,root:z,initialState:N}=t,q=FZ(t,QK),J=Z.useRef(null),{state:U,view:R,container:B,setContainer:j}=RK({root:z,value:n,autoFocus:d,theme:p,height:g,minHeight:O,maxHeight:_,width:b,minWidth:x,maxWidth:w,basicSetup:k,placeholder:T,indentWithTab:A,editable:Q,readOnly:E,selection:r,onChange:o,onStatistics:l,onCreateEditor:c,onUpdate:u,extensions:s,initialState:N});Z.useImperativeHandle(e,()=>({editor:J.current,state:U,view:R}),[J,B,U,R]);var $=Z.useCallback(X=>{J.current=X,j(X)},[j]);if(typeof n!="string")throw new Error("value must be typeof string but got "+typeof n);var D=typeof p=="string"?"cm-theme-"+p:"cm-theme";return S.jsx("div",X1({ref:$,className:""+D+(i?" "+i:"")},q))});l4.displayName="CodeMirror";class Zg{static create(e,i,n,r,s){let o=r+(r<<8)+e+(i<<4)|0;return new Zg(e,i,n,o,s,[],[])}constructor(e,i,n,r,s,o,l){this.type=e,this.value=i,this.from=n,this.hash=r,this.end=s,this.children=o,this.positions=l,this.hashProp=[[Ne.contextHash,r]]}addChild(e,i){e.prop(Ne.contextHash)!=this.hash&&(e=new ct(e.type,e.children,e.positions,e.length,this.hashProp)),this.children.push(e),this.positions.push(i)}toTree(e,i=this.end){let n=this.children.length-1;return n>=0&&(i=Math.max(i,this.positions[n]+this.children[n].length+this.from)),new ct(e.types[this.type],this.children,this.positions,i-this.from).balance({makeTree:(r,s,o)=>new ct(_i.none,r,s,o,this.hashProp)})}}var pe;(function(t){t[t.Document=1]="Document",t[t.CodeBlock=2]="CodeBlock",t[t.FencedCode=3]="FencedCode",t[t.Blockquote=4]="Blockquote",t[t.HorizontalRule=5]="HorizontalRule",t[t.BulletList=6]="BulletList",t[t.OrderedList=7]="OrderedList",t[t.ListItem=8]="ListItem",t[t.ATXHeading1=9]="ATXHeading1",t[t.ATXHeading2=10]="ATXHeading2",t[t.ATXHeading3=11]="ATXHeading3",t[t.ATXHeading4=12]="ATXHeading4",t[t.ATXHeading5=13]="ATXHeading5",t[t.ATXHeading6=14]="ATXHeading6",t[t.SetextHeading1=15]="SetextHeading1",t[t.SetextHeading2=16]="SetextHeading2",t[t.HTMLBlock=17]="HTMLBlock",t[t.LinkReference=18]="LinkReference",t[t.Paragraph=19]="Paragraph",t[t.CommentBlock=20]="CommentBlock",t[t.ProcessingInstructionBlock=21]="ProcessingInstructionBlock",t[t.Escape=22]="Escape",t[t.Entity=23]="Entity",t[t.HardBreak=24]="HardBreak",t[t.Emphasis=25]="Emphasis",t[t.StrongEmphasis=26]="StrongEmphasis",t[t.Link=27]="Link",t[t.Image=28]="Image",t[t.InlineCode=29]="InlineCode",t[t.HTMLTag=30]="HTMLTag",t[t.Comment=31]="Comment",t[t.ProcessingInstruction=32]="ProcessingInstruction",t[t.Autolink=33]="Autolink",t[t.HeaderMark=34]="HeaderMark",t[t.QuoteMark=35]="QuoteMark",t[t.ListMark=36]="ListMark",t[t.LinkMark=37]="LinkMark",t[t.EmphasisMark=38]="EmphasisMark",t[t.CodeMark=39]="CodeMark",t[t.CodeText=40]="CodeText",t[t.CodeInfo=41]="CodeInfo",t[t.LinkTitle=42]="LinkTitle",t[t.LinkLabel=43]="LinkLabel",t[t.URL=44]="URL"})(pe||(pe={}));class LK{constructor(e,i){this.start=e,this.content=i,this.marks=[],this.parsers=[]}}class DK{constructor(){this.text="",this.baseIndent=0,this.basePos=0,this.depth=0,this.markers=[],this.pos=0,this.indent=0,this.next=-1}forward(){this.basePos>this.pos&&this.forwardInner()}forwardInner(){let e=this.skipSpace(this.basePos);this.indent=this.countIndent(e,this.pos,this.indent),this.pos=e,this.next=e==this.text.length?-1:this.text.charCodeAt(e)}skipSpace(e){return _f(this.text,e)}reset(e){for(this.text=e,this.baseIndent=this.basePos=this.pos=this.indent=0,this.forwardInner(),this.depth=1;this.markers.length;)this.markers.pop()}moveBase(e){this.basePos=e,this.baseIndent=this.countIndent(e,this.pos,this.indent)}moveBaseColumn(e){this.baseIndent=e,this.basePos=this.findColumn(e)}addMarker(e){this.markers.push(e)}countIndent(e,i=0,n=0){for(let r=i;r=e.stack[i.depth+1].value+i.baseIndent)return!0;if(i.indent>=i.baseIndent+4)return!1;let n=(t.type==pe.OrderedList?_w:vw)(i,e,!1);return n>0&&(t.type!=pe.BulletList||Ow(i,e,!1)<0)&&i.text.charCodeAt(i.pos+n-1)==t.value}const c4={[pe.Blockquote](t,e,i){return i.next!=62?!1:(i.markers.push(it(pe.QuoteMark,e.lineStart+i.pos,e.lineStart+i.pos+1)),i.moveBase(i.pos+(Dr(i.text.charCodeAt(i.pos+1))?2:1)),t.end=e.lineStart+i.text.length,!0)},[pe.ListItem](t,e,i){return i.indent-1?!1:(i.moveBaseColumn(i.baseIndent+t.value),!0)},[pe.OrderedList]:kM,[pe.BulletList]:kM,[pe.Document](){return!0}};function Dr(t){return t==32||t==9||t==10||t==13}function _f(t,e=0){for(;ei&&Dr(t.charCodeAt(e-1));)e--;return e}function h4(t){if(t.next!=96&&t.next!=126)return-1;let e=t.pos+1;for(;e-1&&t.depth==e.stack.length&&e.parser.leafBlockParsers.indexOf(v4.SetextHeading)>-1||n<3?-1:1}function f4(t,e){for(let i=t.stack.length-1;i>=0;i--)if(t.stack[i].type==e)return!0;return!1}function vw(t,e,i){return(t.next==45||t.next==43||t.next==42)&&(t.pos==t.text.length-1||Dr(t.text.charCodeAt(t.pos+1)))&&(!i||f4(e,pe.BulletList)||t.skipSpace(t.pos+2)=48&&r<=57;){n++;if(n==t.text.length)return-1;r=t.text.charCodeAt(n)}return n==t.pos||n>t.pos+9||r!=46&&r!=41||nt.pos+1||t.next!=49)?-1:n+1-t.pos}function d4(t){if(t.next!=35)return-1;let e=t.pos+1;for(;e6?-1:i}function p4(t){if(t.next!=45&&t.next!=61||t.indent>=t.baseIndent+4)return-1;let e=t.pos+1;for(;e/,g4=/\?>/,zb=[[/^<(?:script|pre|style)(?:\s|>|$)/i,/<\/(?:script|pre|style)>/i],[/^\s*/i.exec(n);if(s)return t.append(it(pe.Comment,i,i+1+s[0].length));let o=/^\?[^]*?\?>/.exec(n);if(o)return t.append(it(pe.ProcessingInstruction,i,i+1+o[0].length));let l=/^(?:![A-Z][^]*?>|!\[CDATA\[[^]*?\]\]>|\/\s*[a-zA-Z][\w-]*\s*>|\s*[a-zA-Z][\w-]*(\s+[a-zA-Z:_][\w-.:]*(?:\s*=\s*(?:[^\s"'=<>`]+|'[^']*'|"[^"]*"))?)*\s*(\/\s*)?>)/.exec(n);return l?t.append(it(pe.HTMLTag,i,i+1+l[0].length)):-1},Emphasis(t,e,i){if(e!=95&&e!=42)return-1;let n=i+1;for(;t.char(n)==e;)n++;let r=t.slice(i-1,i),s=t.slice(n,n+1),o=Gf.test(r),l=Gf.test(s),c=/\s|^$/.test(r),u=/\s|^$/.test(s),d=!u&&(!l||c||o),p=!c&&(!o||u||l),g=d&&(e==42||!p||o),O=p&&(e==42||!d||l);return t.append(new ir(e==95?x4:w4,i,n,(g?1:0)|(O?2:0)))},HardBreak(t,e,i){if(e==92&&t.char(i+1)==10)return t.append(it(pe.HardBreak,i,i+2));if(e==32){let n=i+1;for(;t.char(n)==32;)n++;if(t.char(n)==10&&n>=i+2)return t.append(it(pe.HardBreak,i,n+1))}return-1},Link(t,e,i){return e==91?t.append(new ir(fl,i,i+1,1)):-1},Image(t,e,i){return e==33&&t.char(i+1)==91?t.append(new ir(qg,i,i+2,1)):-1},LinkEnd(t,e,i){if(e!=93)return-1;for(let n=t.parts.length-1;n>=0;n--){let r=t.parts[n];if(r instanceof ir&&(r.type==fl||r.type==qg)){if(!r.side||t.skipSpace(r.to)==i&&!/[(\[]/.test(t.slice(i+1,i+2)))return t.parts[n]=null,-1;let s=t.takeContent(n),o=t.parts[n]=IK(t,s,r.type==fl?pe.Link:pe.Image,r.from,i+1);if(r.type==fl)for(let l=0;le?it(pe.URL,e+i,s+i):s==t.length?null:!1}}function k4(t,e,i){let n=t.charCodeAt(e);if(n!=39&&n!=34&&n!=40)return!1;let r=n==40?41:n;for(let s=e+1,o=!1;s=this.end?-1:this.text.charCodeAt(e-this.offset)}get end(){return this.offset+this.text.length}slice(e,i){return this.text.slice(e-this.offset,i-this.offset)}append(e){return this.parts.push(e),e.to}addDelimiter(e,i,n,r,s){return this.append(new ir(e,i,n,(r?1:0)|(s?2:0)))}get hasOpenLink(){for(let e=this.parts.length-1;e>=0;e--){let i=this.parts[e];if(i instanceof ir&&(i.type==fl||i.type==qg))return!0}return!1}addElement(e){return this.append(e)}resolveMarkers(e){for(let n=e;n=e;c--){let b=this.parts[c];if(b instanceof ir&&b.side&1&&b.type==r.type&&!(s&&(r.side&1||b.side&2)&&(b.to-b.from+o)%3==0&&((b.to-b.from)%3||o%3))){l=b;break}}if(!l)continue;let u=r.type.resolve,d=[],p=l.from,g=r.to;if(s){let b=Math.min(2,l.to-l.from,o);p=l.to-b,g=r.from+b,u=b==1?"Emphasis":"StrongEmphasis"}l.type.mark&&d.push(this.elt(l.type.mark,p,l.to));for(let b=c+1;b=0;i--){let n=this.parts[i];if(n instanceof ir&&n.type==e&&n.side&1)return i}return null}takeContent(e){let i=this.resolveMarkers(e);return this.parts.length=e,i}getDelimiterAt(e){let i=this.parts[e];return i instanceof ir?i:null}skipSpace(e){return _f(this.text,e-this.offset)+this.offset}elt(e,i,n,r){return typeof e=="string"?it(this.parser.getNodeType(e),i,n,r):new S4(e,i)}}yw.linkStart=fl;yw.imageStart=qg;function jb(t,e){if(!e.length)return t;if(!t.length)return e;let i=t.slice(),n=0;for(let r of e){for(;n(e?e-1:0))return!1;if(this.fragmentEnd<0){let s=this.fragment.to;for(;s>0&&this.input.read(s-1,s)!=` -`;)s--;this.fragmentEnd=s?s-1:0}let n=this.cursor;n||(n=this.cursor=this.fragment.tree.cursor(),n.firstChild());let r=e+this.fragment.offset;for(;n.to<=r;)if(!n.parent())return!1;for(;;){if(n.from>=r)return this.fragment.from<=i;if(!n.childAfter(r))return!1}}matches(e){let i=this.cursor.tree;return i&&i.prop(Ne.contextHash)==e}takeNodes(e){let i=this.cursor,n=this.fragment.offset,r=this.fragmentEnd-(this.fragment.openEnd?1:0),s=e.absoluteLineStart,o=s,l=e.block.children.length,c=o,u=l;for(;;){if(i.to-n>r){if(i.type.isAnonymous&&i.firstChild())continue;break}let d=A4(i.from-n,e.ranges);if(i.to-n<=e.ranges[e.rangeI].to)e.addNode(i.tree,d);else{let p=new ct(e.parser.nodeSet.types[pe.Paragraph],[],[],0,e.block.hashProp);e.reusePlaceholders.set(p,i.tree),e.addNode(p,d)}if(i.type.is("Block")&&(VK.indexOf(i.type.id)<0?(o=i.to-n,l=e.block.children.length):(o=c,l=u),c=i.to-n,u=e.block.children.length),!i.nextSibling())break}for(;e.block.children.length>l;)e.block.children.pop(),e.block.positions.pop();return o-s}};function A4(t,e){let i=t;for(let n=1;n_m[t]),Object.keys(_m).map(t=>v4[t]),Object.keys(_m),zK,c4,Object.keys(F_).map(t=>F_[t]),Object.keys(F_),[]);function WK(t,e,i){let n=[];for(let r=t.firstChild,s=e;;r=r.nextSibling){let o=r?r.from:i;if(o>s&&n.push({from:s,to:o}),!r)break;s=r.to}return n}function UK(t){let{codeParser:e,htmlParser:i}=t;return{wrap:$B((r,s)=>{let o=r.type.id;if(e&&(o==pe.CodeBlock||o==pe.FencedCode)){let l="";if(o==pe.FencedCode){let u=r.node.getChild(pe.CodeInfo);u&&(l=s.read(u.from,u.to))}let c=e(l);if(c)return{parser:c,overlay:u=>u.type.id==pe.CodeText,bracketed:o==pe.FencedCode}}else if(i&&(o==pe.HTMLBlock||o==pe.HTMLTag||o==pe.CommentBlock))return{parser:i,overlay:WK(r.node,r.from,r.to)};return null})}}const YK={resolve:"Strikethrough",mark:"StrikethroughMark"},HK={defineNodes:[{name:"Strikethrough",style:{"Strikethrough/...":V.strikethrough}},{name:"StrikethroughMark",style:V.processingInstruction}],parseInline:[{name:"Strikethrough",parse(t,e,i){if(e!=126||t.char(i+1)!=126||t.char(i+2)==126)return-1;let n=t.slice(i-1,i),r=t.slice(i+2,i+3),s=/\s|^$/.test(n),o=/\s|^$/.test(r),l=Gf.test(n),c=Gf.test(r);return t.addDelimiter(YK,i,i+2,!o&&(!c||s||l),!s&&(!l||o||c))},after:"Emphasis"}]};function yf(t,e,i=0,n,r=0){let s=0,o=!0,l=-1,c=-1,u=!1,d=()=>{n.push(t.elt("TableCell",r+l,r+c,t.parser.parseInline(e.slice(l,c),r+l)))};for(let p=i;p-1)&&s++,o=!1,n&&(l>-1&&d(),n.push(t.elt("TableDelimiter",p+r,p+r+1))),l=c=-1):(u||g!=32&&g!=9)&&(l<0&&(l=p),c=p+1),u=!u&&g==92}return l>-1&&(s++,n&&d()),s}function MM(t,e){for(let i=e;ir instanceof PM)||!MM(e.text,e.basePos))return!1;let n=t.peekLine();return E4.test(n)&&yf(t,e.text,e.basePos)==yf(t,n,e.basePos)},before:"SetextHeading"}]};class GK{nextLine(){return!1}finish(e,i){return e.addLeafElement(i,e.elt("Task",i.start,i.start+i.content.length,[e.elt("TaskMarker",i.start,i.start+3),...e.parser.parseInline(i.content.slice(3),i.start+3)])),!0}}const KK={defineNodes:[{name:"Task",block:!0,style:V.list},{name:"TaskMarker",style:V.atom}],parseBlock:[{name:"TaskList",leaf(t,e){return/^\[[ xX]\][ \t]/.test(e.content)&&t.parentType().name=="ListItem"?new GK:null},after:"SetextHeading"}]},RM=/(www\.)|(https?:\/\/)|([\w.+-]{1,100}@)|(mailto:|xmpp:)/gy,QM=/[\w-]+(\.[\w-]+)+(\/[^\s<]*)?/gy,JK=/[\w-]+\.[\w-]+($|\/)/,LM=/[\w.+-]+@[\w-]+(\.[\w.-]+)+/gy,DM=/\/[a-zA-Z\d@.]+/gy;function BM(t,e,i,n){let r=0;for(let s=e;s-1)return-1;let n=e+i[0].length;for(;;){let r=t[n-1],s;if(/[?!.,:*_~]/.test(r)||r==")"&&BM(t,e,n,")")>BM(t,e,n,"("))n--;else if(r==";"&&(s=/&(?:#\d+|#x[a-f\d]+|\w+);$/.exec(t.slice(e,n))))n=e+s.index;else break}return n}function $M(t,e){LM.lastIndex=e;let i=LM.exec(t);if(!i)return-1;let n=i[0][i[0].length-1];return n=="_"||n=="-"?-1:e+i[0].length-(n=="."?1:0)}const tJ={parseInline:[{name:"Autolink",parse(t,e,i){let n=i-t.offset;if(n&&/\w/.test(t.text[n-1]))return-1;RM.lastIndex=n;let r=RM.exec(t.text),s=-1;if(!r)return-1;if(r[1]||r[2]){if(s=eJ(t.text,n+r[0].length),s>-1&&t.hasOpenLink){let o=/([^\[\]]|\[[^\]]*\])*/.exec(t.text.slice(n,s));s=n+o[0].length}}else r[3]?s=$M(t.text,n):(s=$M(t.text,n+r[0].length),s>-1&&r[0]=="xmpp:"&&(DM.lastIndex=s,r=DM.exec(t.text),r&&(s=r.index+r[0].length)));return s<0?-1:(t.addElement(t.elt("URL",i,s+t.offset)),s+t.offset)}}]},iJ=[FK,KK,HK,tJ];function M4(t,e,i){return(n,r,s)=>{if(r!=t||n.char(s+1)==t)return-1;let o=[n.elt(i,s,s+1)];for(let l=s+1;li%3==0).concat(this.state)}]@${this.pos}${this.score?"!"+this.score:""}`}static start(e,i,n=0){let r=e.parser.context;return new Wg(e,[],i,n,n,0,[],0,r?new NM(r,r.start):null,0,null)}get context(){return this.curContext?this.curContext.context:null}pushState(e,i){this.stack.push(this.state,i,this.bufferBase+this.buffer.length),this.state=e}reduce(e){var i;let n=e>>19,r=e&65535,{parser:s}=this.p,o=this.reducePos=2e3&&!(!((i=this.p.parser.nodeSet.types[r])===null||i===void 0)&&i.isAnonymous)&&(u==this.p.lastBigReductionStart?(this.p.bigReductionCount++,this.p.lastBigReductionSize=d):this.p.lastBigReductionSizec;)this.stack.pop();this.reduceContext(r,u)}storeNode(e,i,n,r=4,s=!1){if(e==0&&(!this.stack.length||this.stack[this.stack.length-1]0&&o.buffer[l-4]==0&&o.buffer[l-1]>-1){if(i==n)return;if(o.buffer[l-2]>=i){o.buffer[l-2]=n;return}}}if(!s||this.pos==n)this.buffer.push(e,i,n,r);else{let o=this.buffer.length;if(o>0&&(this.buffer[o-4]!=0||this.buffer[o-1]<0)){let l=!1;for(let c=o;c>0&&this.buffer[c-2]>n;c-=4)if(this.buffer[c-1]>=0){l=!0;break}if(l)for(;o>0&&this.buffer[o-2]>n;)this.buffer[o]=this.buffer[o-4],this.buffer[o+1]=this.buffer[o-3],this.buffer[o+2]=this.buffer[o-2],this.buffer[o+3]=this.buffer[o-1],o-=4,r>4&&(r-=4)}this.buffer[o]=e,this.buffer[o+1]=i,this.buffer[o+2]=n,this.buffer[o+3]=r}}shift(e,i,n,r){if(e&131072)this.pushState(e&65535,this.pos);else if((e&262144)==0){let s=e,{parser:o}=this.p;this.pos=r;let l=o.stateFlag(s,1);!l&&(r>n||i<=o.maxNode)&&(this.reducePos=r),this.pushState(s,l?n:Math.min(n,this.reducePos)),this.shiftContext(i,n),i<=o.maxNode&&this.buffer.push(i,n,r,4)}else this.pos=r,this.shiftContext(i,n),i<=this.p.parser.maxNode&&this.buffer.push(i,n,r,4)}apply(e,i,n,r){e&65536?this.reduce(e):this.shift(e,i,n,r)}useNode(e,i){let n=this.p.reused.length-1;(n<0||this.p.reused[n]!=e)&&(this.p.reused.push(e),n++);let r=this.pos;this.reducePos=this.pos=r+e.length,this.pushState(i,r),this.buffer.push(n,r,this.reducePos,-1),this.curContext&&this.updateContext(this.curContext.tracker.reuse(this.curContext.context,e,this,this.p.stream.reset(this.pos-e.length)))}split(){let e=this,i=e.buffer.length;for(;i>0&&e.buffer[i-2]>e.reducePos;)i-=4;let n=e.buffer.slice(i),r=e.bufferBase+i;for(;e&&r==e.bufferBase;)e=e.parent;return new Wg(this.p,this.stack.slice(),this.state,this.reducePos,this.pos,this.score,n,r,this.curContext,this.lookAhead,e)}recoverByDelete(e,i){let n=e<=this.p.parser.maxNode;n&&this.storeNode(e,this.pos,i,4),this.storeNode(0,this.pos,i,n?8:4),this.pos=this.reducePos=i,this.score-=190}canShift(e){for(let i=new oJ(this);;){let n=this.p.parser.stateSlot(i.state,4)||this.p.parser.hasAction(i.state,e);if(n==0)return!1;if((n&65536)==0)return!0;i.reduce(n)}}recoverByInsert(e){if(this.stack.length>=300)return[];let i=this.p.parser.nextStates(this.state);if(i.length>8||this.stack.length>=120){let r=[];for(let s=0,o;sc&1&&l==o)||r.push(i[s],o)}i=r}let n=[];for(let r=0;r>19,r=i&65535,s=this.stack.length-n*3;if(s<0||e.getGoto(this.stack[s],r,!1)<0){let o=this.findForcedReduction();if(o==null)return!1;i=o}this.storeNode(0,this.pos,this.pos,4,!0),this.score-=100}return this.reducePos=this.pos,this.reduce(i),!0}findForcedReduction(){let{parser:e}=this.p,i=[],n=(r,s)=>{if(!i.includes(r))return i.push(r),e.allActions(r,o=>{if(!(o&393216))if(o&65536){let l=(o>>19)-s;if(l>1){let c=o&65535,u=this.stack.length-l*3;if(u>=0&&e.getGoto(this.stack[u],c,!1)>=0)return l<<19|65536|c}}else{let l=n(o,s+1);if(l!=null)return l}})};return n(this.state,0)}forceAll(){for(;!this.p.parser.stateFlag(this.state,2);)if(!this.forceReduce()){this.storeNode(0,this.pos,this.pos,4,!0);break}return this}get deadEnd(){if(this.stack.length!=3)return!1;let{parser:e}=this.p;return e.data[e.stateSlot(this.state,1)]==65535&&!e.stateSlot(this.state,4)}restart(){this.storeNode(0,this.pos,this.pos,4,!0),this.state=this.stack[0],this.stack.length=0}sameState(e){if(this.state!=e.state||this.stack.length!=e.stack.length)return!1;for(let i=0;i0&&this.emitLookAhead()}}class NM{constructor(e,i){this.tracker=e,this.context=i,this.hash=e.strict?e.hash(i):0}}class oJ{constructor(e){this.start=e,this.state=e.state,this.stack=e.stack,this.base=this.stack.length}reduce(e){let i=e&65535,n=e>>19;n==0?(this.stack==this.start.stack&&(this.stack=this.stack.slice()),this.stack.push(this.state,0,0),this.base+=3):this.base-=(n-1)*3;let r=this.start.p.parser.getGoto(this.stack[this.base-3],i,!0);this.state=r}}class Ug{constructor(e,i,n){this.stack=e,this.pos=i,this.index=n,this.buffer=e.buffer,this.index==0&&this.maybeNext()}static create(e,i=e.bufferBase+e.buffer.length){return new Ug(e,i,i-e.bufferBase)}maybeNext(){let e=this.stack.parent;e!=null&&(this.index=this.stack.bufferBase-e.bufferBase,this.stack=e,this.buffer=e.buffer)}get id(){return this.buffer[this.index-4]}get start(){return this.buffer[this.index-3]}get end(){return this.buffer[this.index-2]}get size(){return this.buffer[this.index-1]}next(){this.index-=4,this.pos-=4,this.index==0&&this.maybeNext()}fork(){return new Ug(this.stack,this.pos,this.index)}}function ef(t,e=Uint16Array){if(typeof t!="string")return t;let i=null;for(let n=0,r=0;n=92&&o--,o>=34&&o--;let c=o-32;if(c>=46&&(c-=46,l=!0),s+=c,l)break;s*=46}i?i[r++]=s:i=new e(s)}return i}class Fm{constructor(){this.start=-1,this.value=-1,this.end=-1,this.extended=-1,this.lookAhead=0,this.mask=0,this.context=0}}const jM=new Fm;class aJ{constructor(e,i){this.input=e,this.ranges=i,this.chunk="",this.chunkOff=0,this.chunk2="",this.chunk2Pos=0,this.next=-1,this.token=jM,this.rangeIndex=0,this.pos=this.chunkPos=i[0].from,this.range=i[0],this.end=i[i.length-1].to,this.readNext()}resolveOffset(e,i){let n=this.range,r=this.rangeIndex,s=this.pos+e;for(;sn.to:s>=n.to;){if(r==this.ranges.length-1)return null;let o=this.ranges[++r];s+=o.from-n.to,n=o}return s}clipPos(e){if(e>=this.range.from&&ee)return Math.max(e,i.from);return this.end}peek(e){let i=this.chunkOff+e,n,r;if(i>=0&&i=this.chunk2Pos&&nl.to&&(this.chunk2=this.chunk2.slice(0,l.to-n)),r=this.chunk2.charCodeAt(0)}}return n>=this.token.lookAhead&&(this.token.lookAhead=n+1),r}acceptToken(e,i=0){let n=i?this.resolveOffset(i,-1):this.pos;if(n==null||n=this.chunk2Pos&&this.posthis.range.to?e.slice(0,this.range.to-this.pos):e,this.chunkPos=this.pos,this.chunkOff=0}}readNext(){return this.chunkOff>=this.chunk.length&&(this.getChunk(),this.chunkOff==this.chunk.length)?this.next=-1:this.next=this.chunk.charCodeAt(this.chunkOff)}advance(e=1){for(this.chunkOff+=e;this.pos+e>=this.range.to;){if(this.rangeIndex==this.ranges.length-1)return this.setDone();e-=this.range.to-this.pos,this.range=this.ranges[++this.rangeIndex],this.pos=this.range.from}return this.pos+=e,this.pos>=this.token.lookAhead&&(this.token.lookAhead=this.pos+1),this.readNext()}setDone(){return this.pos=this.chunkPos=this.end,this.range=this.ranges[this.rangeIndex=this.ranges.length-1],this.chunk="",this.next=-1}reset(e,i){if(i?(this.token=i,i.start=e,i.lookAhead=e+1,i.value=i.extended=-1):this.token=jM,this.pos!=e){if(this.pos=e,e==this.end)return this.setDone(),this;for(;e=this.range.to;)this.range=this.ranges[++this.rangeIndex];e>=this.chunkPos&&e=this.chunkPos&&i<=this.chunkPos+this.chunk.length)return this.chunk.slice(e-this.chunkPos,i-this.chunkPos);if(e>=this.chunk2Pos&&i<=this.chunk2Pos+this.chunk2.length)return this.chunk2.slice(e-this.chunk2Pos,i-this.chunk2Pos);if(e>=this.range.from&&i<=this.range.to)return this.input.read(e,i);let n="";for(let r of this.ranges){if(r.from>=i)break;r.to>e&&(n+=this.input.read(Math.max(r.from,e),Math.min(r.to,i)))}return n}}class Jc{constructor(e,i){this.data=e,this.id=i}token(e,i){let{parser:n}=i.p;P4(this.data,e,i,this.id,n.data,n.tokenPrecTable)}}Jc.prototype.contextual=Jc.prototype.fallback=Jc.prototype.extend=!1;class Yg{constructor(e,i,n){this.precTable=i,this.elseToken=n,this.data=typeof e=="string"?ef(e):e}token(e,i){let n=e.pos,r=0;for(;;){let s=e.next<0,o=e.resolveOffset(1,1);if(P4(this.data,e,i,0,this.data,this.precTable),e.token.value>-1)break;if(this.elseToken==null)return;if(s||r++,o==null)break;e.reset(o,e.token)}r&&(e.reset(n,e.token),e.acceptToken(this.elseToken,r))}}Yg.prototype.contextual=Jc.prototype.fallback=Jc.prototype.extend=!1;class or{constructor(e,i={}){this.token=e,this.contextual=!!i.contextual,this.fallback=!!i.fallback,this.extend=!!i.extend}}function P4(t,e,i,n,r,s){let o=0,l=1<0){let _=t[O];if(c.allows(_)&&(e.token.value==-1||e.token.value==_||lJ(_,e.token.value,r,s))){e.acceptToken(_);break}}let d=e.next,p=0,g=t[o+2];if(e.next<0&&g>p&&t[u+g*3-3]==65535){o=t[u+g*3-1];continue e}for(;p>1,_=u+O+(O<<1),b=t[_],x=t[_+1]||65536;if(d=x)p=O+1;else{o=t[_+2],e.advance();continue e}}break}}function IM(t,e,i){for(let n=e,r;(r=t[n])!=65535;n++)if(r==i)return n-e;return-1}function lJ(t,e,i,n){let r=IM(i,n,e);return r<0||IM(i,n,t)e)&&!n.type.isError)return i<0?Math.max(0,Math.min(n.to-1,e-25)):Math.min(t.length,Math.max(n.from+1,e+25));if(i<0?n.prevSibling():n.nextSibling())break;if(!n.parent())return i<0?0:t.length}}class cJ{constructor(e,i){this.fragments=e,this.nodeSet=i,this.i=0,this.fragment=null,this.safeFrom=-1,this.safeTo=-1,this.trees=[],this.start=[],this.index=[],this.nextFragment()}nextFragment(){let e=this.fragment=this.i==this.fragments.length?null:this.fragments[this.i++];if(e){for(this.safeFrom=e.openStart?VM(e.tree,e.from+e.offset,1)-e.offset:e.from,this.safeTo=e.openEnd?VM(e.tree,e.to+e.offset,-1)-e.offset:e.to;this.trees.length;)this.trees.pop(),this.start.pop(),this.index.pop();this.trees.push(e.tree),this.start.push(-e.offset),this.index.push(0),this.nextStart=this.safeFrom}else this.nextStart=1e9}nodeAt(e){if(ee)return this.nextStart=o,null;if(s instanceof ct){if(o==e){if(o=Math.max(this.safeFrom,e)&&(this.trees.push(s),this.start.push(o),this.index.push(0))}else this.index[i]++,this.nextStart=o+s.length}}}class hJ{constructor(e,i){this.stream=i,this.tokens=[],this.mainToken=null,this.actions=[],this.tokens=e.tokenizers.map(n=>new Fm)}getActions(e){let i=0,n=null,{parser:r}=e.p,{tokenizers:s}=r,o=r.stateSlot(e.state,3),l=e.curContext?e.curContext.hash:0,c=0;for(let u=0;up.end+25&&(c=Math.max(p.lookAhead,c)),p.value!=0)){let g=i;if(p.extended>-1&&(i=this.addActions(e,p.extended,p.end,i)),i=this.addActions(e,p.value,p.end,i),!d.extend&&(n=p,i>g))break}}for(;this.actions.length>i;)this.actions.pop();return c&&e.setLookAhead(c),!n&&e.pos==this.stream.end&&(n=new Fm,n.value=e.p.parser.eofTerm,n.start=n.end=e.pos,i=this.addActions(e,n.value,n.end,i)),this.mainToken=n,this.actions}getMainToken(e){if(this.mainToken)return this.mainToken;let i=new Fm,{pos:n,p:r}=e;return i.start=n,i.end=Math.min(n+1,r.stream.end),i.value=n==r.stream.end?r.parser.eofTerm:0,i}updateCachedToken(e,i,n){let r=this.stream.clipPos(n.pos);if(i.token(this.stream.reset(r,e),n),e.value>-1){let{parser:s}=n.p;for(let o=0;o=0&&n.p.parser.dialect.allows(l>>1)){(l&1)==0?e.value=l>>1:e.extended=l>>1;break}}}else e.value=0,e.end=this.stream.clipPos(r+1)}putAction(e,i,n,r){for(let s=0;se.bufferLength*4?new cJ(n,e.nodeSet):null}get parsedPos(){return this.minStackPos}advance(){let e=this.stacks,i=this.minStackPos,n=this.stacks=[],r,s;if(this.bigReductionCount>300&&e.length==1){let[o]=e;for(;o.forceReduce()&&o.stack.length&&o.stack[o.stack.length-2]>=this.lastBigReductionStart;);this.bigReductionCount=this.lastBigReductionSize=0}for(let o=0;oi)n.push(l);else{if(this.advanceStack(l,n,e))continue;{r||(r=[],s=[]),r.push(l);let c=this.tokens.getMainToken(l);s.push(c.value,c.end)}}break}}if(!n.length){let o=r&&dJ(r);if(o)return Fn&&console.log("Finish with "+this.stackID(o)),this.stackToTree(o);if(this.parser.strict)throw Fn&&r&&console.log("Stuck with token "+(this.tokens.mainToken?this.parser.getName(this.tokens.mainToken.value):"none")),new SyntaxError("No parse at "+i);this.recovering||(this.recovering=5)}if(this.recovering&&r){let o=this.stoppedAt!=null&&r[0].pos>this.stoppedAt?r[0]:this.runRecovery(r,s,n);if(o)return Fn&&console.log("Force-finish "+this.stackID(o)),this.stackToTree(o.forceAll())}if(this.recovering){let o=this.recovering==1?1:this.recovering*3;if(n.length>o)for(n.sort((l,c)=>c.score-l.score);n.length>o;)n.pop();n.some(l=>l.reducePos>i)&&this.recovering--}else if(n.length>1){e:for(let o=0;o500&&u.buffer.length>500)if((l.score-u.score||l.buffer.length-u.buffer.length)>0)n.splice(c--,1);else{n.splice(o--,1);continue e}}}n.length>12&&(n.sort((o,l)=>l.score-o.score),n.splice(12,n.length-12))}this.minStackPos=n[0].pos;for(let o=1;o ":"";if(this.stoppedAt!=null&&r>this.stoppedAt)return e.forceReduce()?e:null;if(this.fragments){let u=e.curContext&&e.curContext.tracker.strict,d=u?e.curContext.hash:0;for(let p=this.fragments.nodeAt(r);p;){let g=this.parser.nodeSet.types[p.type.id]==p.type?s.getGoto(e.state,p.type.id):-1;if(g>-1&&p.length&&(!u||(p.prop(Ne.contextHash)||0)==d))return e.useNode(p,g),Fn&&console.log(o+this.stackID(e)+` (via reuse of ${s.getName(p.type.id)})`),!0;if(!(p instanceof ct)||p.children.length==0||p.positions[0]>0)break;let O=p.children[0];if(O instanceof ct&&p.positions[0]==0)p=O;else break}}let l=s.stateSlot(e.state,4);if(l>0)return e.reduce(l),Fn&&console.log(o+this.stackID(e)+` (via always-reduce ${s.getName(l&65535)})`),!0;if(e.stack.length>=8400)for(;e.stack.length>6e3&&e.forceReduce(););let c=this.tokens.getActions(e);for(let u=0;ur?i.push(_):n.push(_)}return!1}advanceFully(e,i){let n=e.pos;for(;;){if(!this.advanceStack(e,null,null))return!1;if(e.pos>n)return XM(e,i),!0}}runRecovery(e,i,n){let r=null,s=!1;for(let o=0;o ":"";if(l.deadEnd&&(s||(s=!0,l.restart(),Fn&&console.log(d+this.stackID(l)+" (restarted)"),this.advanceFully(l,n))))continue;let p=l.split(),g=d;for(let O=0;O<10&&p.forceReduce()&&(Fn&&console.log(g+this.stackID(p)+" (via force-reduce)"),!this.advanceFully(p,n));O++)Fn&&(g=this.stackID(p)+" -> ");for(let O of l.recoverByInsert(c))Fn&&console.log(d+this.stackID(O)+" (via recover-insert)"),this.advanceFully(O,n);this.stream.end>l.pos?(u==l.pos&&(u++,c=0),l.recoverByDelete(c,u),Fn&&console.log(d+this.stackID(l)+` (via recover-delete ${this.parser.getName(c)})`),XM(l,n)):(!r||r.scoret;class R4{constructor(e){this.start=e.start,this.shift=e.shift||K_,this.reduce=e.reduce||K_,this.reuse=e.reuse||K_,this.hash=e.hash||(()=>0),this.strict=e.strict!==!1}}class fh extends Fx{constructor(e){if(super(),this.wrappers=[],e.version!=14)throw new RangeError(`Parser version (${e.version}) doesn't match runtime version (14)`);let i=e.nodeNames.split(" ");this.minRepeatTerm=i.length;for(let l=0;le.topRules[l][1]),r=[];for(let l=0;l=0)s(d,c,l[u++]);else{let p=l[u+-d];for(let g=-d;g>0;g--)s(l[u++],c,p);u++}}}this.nodeSet=new pd(i.map((l,c)=>_i.define({name:c>=this.minRepeatTerm?void 0:l,id:c,props:r[c],top:n.indexOf(c)>-1,error:c==0,skipped:e.skippedNodes&&e.skippedNodes.indexOf(c)>-1}))),e.propSources&&(this.nodeSet=this.nodeSet.extend(...e.propSources)),this.strict=!1,this.bufferLength=RB;let o=ef(e.tokenData);this.context=e.context,this.specializerSpecs=e.specialized||[],this.specialized=new Uint16Array(this.specializerSpecs.length);for(let l=0;ltypeof l=="number"?new Jc(o,l):l),this.topRules=e.topRules,this.dialects=e.dialects||{},this.dynamicPrecedences=e.dynamicPrecedences||null,this.tokenPrecTable=e.tokenPrec,this.termNames=e.termNames||null,this.maxNode=this.nodeSet.types.length-1,this.dialect=this.parseDialect(),this.top=this.topRules[Object.keys(this.topRules)[0]]}createParse(e,i,n){let r=new uJ(this,e,i,n);for(let s of this.wrappers)r=s(r,e,i,n);return r}getGoto(e,i,n=!1){let r=this.goto;if(i>=r[0])return-1;for(let s=r[i+1];;){let o=r[s++],l=o&1,c=r[s++];if(l&&n)return c;for(let u=s+(o>>1);s0}validAction(e,i){return!!this.allActions(e,n=>n==i?!0:null)}allActions(e,i){let n=this.stateSlot(e,4),r=n?i(n):void 0;for(let s=this.stateSlot(e,1);r==null;s+=3){if(this.data[s]==65535)if(this.data[s+1]==1)s=ho(this.data,s+2);else break;r=i(ho(this.data,s+1))}return r}nextStates(e){let i=[];for(let n=this.stateSlot(e,1);;n+=3){if(this.data[n]==65535)if(this.data[n+1]==1)n=ho(this.data,n+2);else break;if((this.data[n+2]&1)==0){let r=this.data[n+1];i.some((s,o)=>o&1&&s==r)||i.push(this.data[n],r)}}return i}configure(e){let i=Object.assign(Object.create(fh.prototype),this);if(e.props&&(i.nodeSet=this.nodeSet.extend(...e.props)),e.top){let n=this.topRules[e.top];if(!n)throw new RangeError(`Invalid top rule name ${e.top}`);i.top=n}return e.tokenizers&&(i.tokenizers=this.tokenizers.map(n=>{let r=e.tokenizers.find(s=>s.from==n);return r?r.to:n})),e.specializers&&(i.specializers=this.specializers.slice(),i.specializerSpecs=this.specializerSpecs.map((n,r)=>{let s=e.specializers.find(l=>l.from==n.external);if(!s)return n;let o=Object.assign(Object.assign({},n),{external:s.to});return i.specializers[r]=ZM(o),o})),e.contextTracker&&(i.context=e.contextTracker),e.dialect&&(i.dialect=this.parseDialect(e.dialect)),e.strict!=null&&(i.strict=e.strict),e.wrap&&(i.wrappers=i.wrappers.concat(e.wrap)),e.bufferLength!=null&&(i.bufferLength=e.bufferLength),i}hasWrappers(){return this.wrappers.length>0}getName(e){return this.termNames?this.termNames[e]:String(e<=this.maxNode&&this.nodeSet.types[e].name||e)}get eofTerm(){return this.maxNode+1}get topNode(){return this.nodeSet.types[this.top[1]]}dynamicPrecedence(e){let i=this.dynamicPrecedences;return i==null?0:i[e]||0}parseDialect(e){let i=Object.keys(this.dialects),n=i.map(()=>!1);if(e)for(let s of e.split(" ")){let o=i.indexOf(s);o>=0&&(n[o]=!0)}let r=null;for(let s=0;sn)&&i.p.parser.stateFlag(i.state,2)&&(!e||e.scoret.external(i,n)<<1|e}return t.get}const pJ=55,mJ=1,gJ=56,OJ=2,vJ=57,_J=3,qM=4,yJ=5,bw=6,Q4=7,L4=8,D4=9,B4=10,bJ=11,SJ=12,xJ=13,J_=58,wJ=14,CJ=15,WM=59,$4=21,kJ=23,z4=24,TJ=25,Ib=27,N4=28,AJ=29,EJ=32,MJ=35,PJ=37,RJ=38,QJ=0,LJ=1,DJ={area:!0,base:!0,br:!0,col:!0,command:!0,embed:!0,frame:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0,menuitem:!0},BJ={dd:!0,li:!0,optgroup:!0,option:!0,p:!0,rp:!0,rt:!0,tbody:!0,td:!0,tfoot:!0,th:!0,tr:!0},UM={dd:{dd:!0,dt:!0},dt:{dd:!0,dt:!0},li:{li:!0},option:{option:!0,optgroup:!0},optgroup:{optgroup:!0},p:{address:!0,article:!0,aside:!0,blockquote:!0,dir:!0,div:!0,dl:!0,fieldset:!0,footer:!0,form:!0,h1:!0,h2:!0,h3:!0,h4:!0,h5:!0,h6:!0,header:!0,hgroup:!0,hr:!0,menu:!0,nav:!0,ol:!0,p:!0,pre:!0,section:!0,table:!0,ul:!0},rp:{rp:!0,rt:!0},rt:{rp:!0,rt:!0},tbody:{tbody:!0,tfoot:!0},td:{td:!0,th:!0},tfoot:{tbody:!0},th:{td:!0,th:!0},thead:{tbody:!0,tfoot:!0},tr:{tr:!0}};function $J(t){return t==45||t==46||t==58||t>=65&&t<=90||t==95||t>=97&&t<=122||t>=161}let YM=null,HM=null,FM=0;function Vb(t,e){let i=t.pos+e;if(FM==i&&HM==t)return YM;let n=t.peek(e),r="";for(;$J(n);)r+=String.fromCharCode(n),n=t.peek(++e);return HM=t,FM=i,YM=r?r.toLowerCase():n==zJ||n==NJ?void 0:null}const j4=60,Hg=62,Sw=47,zJ=63,NJ=33,jJ=45;function GM(t,e){this.name=t,this.parent=e}const IJ=[bw,B4,Q4,L4,D4],VJ=new R4({start:null,shift(t,e,i,n){return IJ.indexOf(e)>-1?new GM(Vb(n,1)||"",t):t},reduce(t,e){return e==$4&&t?t.parent:t},reuse(t,e,i,n){let r=e.type.id;return r==bw||r==PJ?new GM(Vb(n,1)||"",t):t},strict:!1}),XJ=new or((t,e)=>{if(t.next!=j4){t.next<0&&e.context&&t.acceptToken(J_);return}t.advance();let i=t.next==Sw;i&&t.advance();let n=Vb(t,0);if(n===void 0)return;if(!n)return t.acceptToken(i?CJ:wJ);let r=e.context?e.context.name:null;if(i){if(n==r)return t.acceptToken(bJ);if(r&&BJ[r])return t.acceptToken(J_,-2);if(e.dialectEnabled(QJ))return t.acceptToken(SJ);for(let s=e.context;s;s=s.parent)if(s.name==n)return;t.acceptToken(xJ)}else{if(n=="script")return t.acceptToken(Q4);if(n=="style")return t.acceptToken(L4);if(n=="textarea")return t.acceptToken(D4);if(DJ.hasOwnProperty(n))return t.acceptToken(B4);r&&UM[r]&&UM[r][n]?t.acceptToken(J_,-1):t.acceptToken(bw)}},{contextual:!0}),ZJ=new or(t=>{for(let e=0,i=0;;i++){if(t.next<0){i&&t.acceptToken(WM);break}if(t.next==jJ)e++;else if(t.next==Hg&&e>=2){i>=3&&t.acceptToken(WM,-2);break}else e=0;t.advance()}});function qJ(t){for(;t;t=t.parent)if(t.name=="svg"||t.name=="math")return!0;return!1}const WJ=new or((t,e)=>{if(t.next==Sw&&t.peek(1)==Hg){let i=e.dialectEnabled(LJ)||qJ(e.context);t.acceptToken(i?yJ:qM,2)}else t.next==Hg&&t.acceptToken(qM,1)});function xw(t,e,i){let n=2+t.length;return new or(r=>{for(let s=0,o=0,l=0;;l++){if(r.next<0){l&&r.acceptToken(e);break}if(s==0&&r.next==j4||s==1&&r.next==Sw||s>=2&&so?r.acceptToken(e,-o):r.acceptToken(i,-(o-2));break}else if((r.next==10||r.next==13)&&l){r.acceptToken(e,1);break}else s=o=0;r.advance()}})}const UJ=xw("script",pJ,mJ),YJ=xw("style",gJ,OJ),HJ=xw("textarea",vJ,_J),FJ=_h({"Text RawText IncompleteTag IncompleteCloseTag":V.content,"StartTag StartCloseTag SelfClosingEndTag EndTag":V.angleBracket,TagName:V.tagName,"MismatchedCloseTag/TagName":[V.tagName,V.invalid],AttributeName:V.attributeName,"AttributeValue UnquotedAttributeValue":V.attributeValue,Is:V.definitionOperator,"EntityReference CharacterReference":V.character,Comment:V.blockComment,ProcessingInst:V.processingInstruction,DoctypeDecl:V.documentMeta}),GJ=fh.deserialize({version:14,states:",xOVO!rOOO!ZQ#tO'#CrO!`Q#tO'#C{O!eQ#tO'#DOO!jQ#tO'#DRO!oQ#tO'#DTO!tOaO'#CqO#PObO'#CqO#[OdO'#CqO$kO!rO'#CqOOO`'#Cq'#CqO$rO$fO'#DUO$zQ#tO'#DWO%PQ#tO'#DXOOO`'#Dl'#DlOOO`'#DZ'#DZQVO!rOOO%UQ&rO,59^O%aQ&rO,59gO%lQ&rO,59jO%wQ&rO,59mO&SQ&rO,59oOOOa'#D_'#D_O&_OaO'#CyO&jOaO,59]OOOb'#D`'#D`O&rObO'#C|O&}ObO,59]OOOd'#Da'#DaO'VOdO'#DPO'bOdO,59]OOO`'#Db'#DbO'jO!rO,59]O'qQ#tO'#DSOOO`,59],59]OOOp'#Dc'#DcO'vO$fO,59pOOO`,59p,59pO(OQ#|O,59rO(TQ#|O,59sOOO`-E7X-E7XO(YQ&rO'#CtOOQW'#D['#D[O(hQ&rO1G.xOOOa1G.x1G.xOOO`1G/Z1G/ZO(sQ&rO1G/ROOOb1G/R1G/RO)OQ&rO1G/UOOOd1G/U1G/UO)ZQ&rO1G/XOOO`1G/X1G/XO)fQ&rO1G/ZOOOa-E7]-E7]O)qQ#tO'#CzOOO`1G.w1G.wOOOb-E7^-E7^O)vQ#tO'#C}OOOd-E7_-E7_O){Q#tO'#DQOOO`-E7`-E7`O*QQ#|O,59nOOOp-E7a-E7aOOO`1G/[1G/[OOO`1G/^1G/^OOO`1G/_1G/_O*VQ,UO,59`OOQW-E7Y-E7YOOOa7+$d7+$dOOO`7+$u7+$uOOOb7+$m7+$mOOOd7+$p7+$pOOO`7+$s7+$sO*bQ#|O,59fO*gQ#|O,59iO*lQ#|O,59lOOO`1G/Y1G/YO*qO7[O'#CwO+SOMhO'#CwOOQW1G.z1G.zOOO`1G/Q1G/QOOO`1G/T1G/TOOO`1G/W1G/WOOOO'#D]'#D]O+eO7[O,59cOOQW,59c,59cOOOO'#D^'#D^O+vOMhO,59cOOOO-E7Z-E7ZOOQW1G.}1G.}OOOO-E7[-E7[",stateData:",c~O!_OS~OUSOVPOWQOXROYTO[]O][O^^O_^Oa^Ob^Oc^Od^Oy^O|_O!eZO~OgaO~OgbO~OgcO~OgdO~OgeO~O!XfOPmP![mP~O!YiOQpP![pP~O!ZlORsP![sP~OUSOVPOWQOXROYTOZqO[]O][O^^O_^Oa^Ob^Oc^Od^Oy^O!eZO~O![rO~P#gO!]sO!fuO~OgvO~OgwO~OS|OT}OiyO~OS!POT}OiyO~OS!ROT}OiyO~OS!TOT}OiyO~OS}OT}OiyO~O!XfOPmX![mX~OP!WO![!XO~O!YiOQpX![pX~OQ!ZO![!XO~O!ZlORsX![sX~OR!]O![!XO~O![!XO~P#gOg!_O~O!]sO!f!aO~OS!bO~OS!cO~Oj!dOShXThXihX~OS!fOT!gOiyO~OS!hOT!gOiyO~OS!iOT!gOiyO~OS!jOT!gOiyO~OS!gOT!gOiyO~Og!kO~Og!lO~Og!mO~OS!nO~Ol!qO!a!oO!c!pO~OS!rO~OS!sO~OS!tO~Ob!uOc!uOd!uO!a!wO!b!uO~Ob!xOc!xOd!xO!c!wO!d!xO~Ob!uOc!uOd!uO!a!{O!b!uO~Ob!xOc!xOd!xO!c!{O!d!xO~OT~cbd!ey|!e~",goto:"%q!aPPPPPPPPPPPPPPPPPPPPP!b!hP!nPP!zP!}#Q#T#Z#^#a#g#j#m#s#y!bP!b!bP$P$V$m$s$y%P%V%]%cPPPPPPPP%iX^OX`pXUOX`pezabcde{!O!Q!S!UR!q!dRhUR!XhXVOX`pRkVR!XkXWOX`pRnWR!XnXXOX`pQrXR!XpXYOX`pQ`ORx`Q{aQ!ObQ!QcQ!SdQ!UeZ!e{!O!Q!S!UQ!v!oR!z!vQ!y!pR!|!yQgUR!VgQjVR!YjQmWR![mQpXR!^pQtZR!`tS_O`ToXp",nodeNames:"⚠ StartCloseTag StartCloseTag StartCloseTag EndTag SelfClosingEndTag StartTag StartTag StartTag StartTag StartTag StartCloseTag StartCloseTag StartCloseTag IncompleteTag IncompleteCloseTag Document Text EntityReference CharacterReference InvalidEntity Element OpenTag TagName Attribute AttributeName Is AttributeValue UnquotedAttributeValue ScriptText CloseTag OpenTag StyleText CloseTag OpenTag TextareaText CloseTag OpenTag CloseTag SelfClosingTag Comment ProcessingInst MismatchedCloseTag CloseTag DoctypeDecl",maxTerm:68,context:VJ,nodeProps:[["closedBy",-10,1,2,3,7,8,9,10,11,12,13,"EndTag",6,"EndTag SelfClosingEndTag",-4,22,31,34,37,"CloseTag"],["openedBy",4,"StartTag StartCloseTag",5,"StartTag",-4,30,33,36,38,"OpenTag"],["group",-10,14,15,18,19,20,21,40,41,42,43,"Entity",17,"Entity TextContent",-3,29,32,35,"TextContent Entity"],["isolate",-11,22,30,31,33,34,36,37,38,39,42,43,"ltr",-3,27,28,40,""]],propSources:[FJ],skippedNodes:[0],repeatNodeCount:9,tokenData:"!]tw8twx7Sx!P8t!P!Q5u!Q!]8t!]!^/^!^!a7S!a#S8t#S#T;{#T#s8t#s$f5u$f;'S8t;'S;=`>V<%l?Ah8t?Ah?BY5u?BY?Mn8t?MnO5u!Z5zblWOX5uXZ7SZ[5u[^7S^p5uqr5urs7Sst+Ptw5uwx7Sx!]5u!]!^7w!^!a7S!a#S5u#S#T7S#T;'S5u;'S;=`8n<%lO5u!R7VVOp7Sqs7St!]7S!]!^7l!^;'S7S;'S;=`7q<%lO7S!R7qOb!R!R7tP;=`<%l7S!Z8OYlWb!ROX+PZ[+P^p+Pqr+Psw+Px!^+P!a#S+P#T;'S+P;'S;=`+t<%lO+P!Z8qP;=`<%l5u!_8{iiSlWOX5uXZ7SZ[5u[^7S^p5uqr8trs7Sst/^tw8twx7Sx!P8t!P!Q5u!Q!]8t!]!^:j!^!a7S!a#S8t#S#T;{#T#s8t#s$f5u$f;'S8t;'S;=`>V<%l?Ah8t?Ah?BY5u?BY?Mn8t?MnO5u!_:sbiSlWb!ROX+PZ[+P^p+Pqr/^sw/^x!P/^!P!Q+P!Q!^/^!a#S/^#S#T0m#T#s/^#s$f+P$f;'S/^;'S;=`1e<%l?Ah/^?Ah?BY+P?BY?Mn/^?MnO+P!VP<%l?Ah;{?Ah?BY7S?BY?Mn;{?MnO7S!V=dXiSb!Rqr0msw0mx!P0m!Q!^0m!a#s0m$f;'S0m;'S;=`1_<%l?Ah0m?BY?Mn0m!V>SP;=`<%l;{!_>YP;=`<%l8t!_>dhiSlWOX@OXZAYZ[@O[^AY^p@OqrBwrsAYswBwwxAYx!PBw!P!Q@O!Q!]Bw!]!^/^!^!aAY!a#SBw#S#TE{#T#sBw#s$f@O$f;'SBw;'S;=`HS<%l?AhBw?Ah?BY@O?BY?MnBw?MnO@O!Z@TalWOX@OXZAYZ[@O[^AY^p@Oqr@OrsAYsw@OwxAYx!]@O!]!^Az!^!aAY!a#S@O#S#TAY#T;'S@O;'S;=`Bq<%lO@O!RA]UOpAYq!]AY!]!^Ao!^;'SAY;'S;=`At<%lOAY!RAtOc!R!RAwP;=`<%lAY!ZBRYlWc!ROX+PZ[+P^p+Pqr+Psw+Px!^+P!a#S+P#T;'S+P;'S;=`+t<%lO+P!ZBtP;=`<%l@O!_COhiSlWOX@OXZAYZ[@O[^AY^p@OqrBwrsAYswBwwxAYx!PBw!P!Q@O!Q!]Bw!]!^Dj!^!aAY!a#SBw#S#TE{#T#sBw#s$f@O$f;'SBw;'S;=`HS<%l?AhBw?Ah?BY@O?BY?MnBw?MnO@O!_DsbiSlWc!ROX+PZ[+P^p+Pqr/^sw/^x!P/^!P!Q+P!Q!^/^!a#S/^#S#T0m#T#s/^#s$f+P$f;'S/^;'S;=`1e<%l?Ah/^?Ah?BY+P?BY?Mn/^?MnO+P!VFQbiSOpAYqrE{rsAYswE{wxAYx!PE{!P!QAY!Q!]E{!]!^GY!^!aAY!a#sE{#s$fAY$f;'SE{;'S;=`G|<%l?AhE{?Ah?BYAY?BY?MnE{?MnOAY!VGaXiSc!Rqr0msw0mx!P0m!Q!^0m!a#s0m$f;'S0m;'S;=`1_<%l?Ah0m?BY?Mn0m!VHPP;=`<%lE{!_HVP;=`<%lBw!ZHcW!cxaP!b`Or(trs'ksv(tw!^(t!^!_)e!_;'S(t;'S;=`*P<%lO(t!aIYliSaPlW!b`!dpOX$qXZ&XZ[$q[^&X^p$qpq&Xqr-_rs&}sv-_vw/^wx(tx}-_}!OKQ!O!P-_!P!Q$q!Q!^-_!^!_*V!_!a&X!a#S-_#S#T1k#T#s-_#s$f$q$f;'S-_;'S;=`3X<%l?Ah-_?Ah?BY$q?BY?Mn-_?MnO$q!aK_kiSaPlW!b`!dpOX$qXZ&XZ[$q[^&X^p$qpq&Xqr-_rs&}sv-_vw/^wx(tx!P-_!P!Q$q!Q!^-_!^!_*V!_!`&X!`!aMS!a#S-_#S#T1k#T#s-_#s$f$q$f;'S-_;'S;=`3X<%l?Ah-_?Ah?BY$q?BY?Mn-_?MnO$q!TM_XaP!b`!dp!fQOr&Xrs&}sv&Xwx(tx!^&X!^!_*V!_;'S&X;'S;=`*y<%lO&X!aNZ!ZiSgQaPlW!b`!dpOX$qXZ&XZ[$q[^&X^p$qpq&Xqr-_rs&}sv-_vw/^wx(tx}-_}!OMz!O!PMz!P!Q$q!Q![Mz![!]Mz!]!^-_!^!_*V!_!a&X!a!c-_!c!}Mz!}#R-_#R#SMz#S#T1k#T#oMz#o#s-_#s$f$q$f$}-_$}%OMz%O%W-_%W%oMz%o%p-_%p&aMz&a&b-_&b1pMz1p4UMz4U4dMz4d4e-_4e$ISMz$IS$I`-_$I`$IbMz$Ib$Je-_$Je$JgMz$Jg$Kh-_$Kh%#tMz%#t&/x-_&/x&EtMz&Et&FV-_&FV;'SMz;'S;:j!#|;:j;=`3X<%l?&r-_?&r?AhMz?Ah?BY$q?BY?MnMz?MnO$q!a!$PP;=`<%lMz!R!$ZY!b`!dpOq*Vqr!$yrs(Vsv*Vwx)ex!a*V!a!b!4t!b;'S*V;'S;=`*s<%lO*V!R!%Q]!b`!dpOr*Vrs(Vsv*Vwx)ex}*V}!O!%y!O!f*V!f!g!']!g#W*V#W#X!0`#X;'S*V;'S;=`*s<%lO*V!R!&QX!b`!dpOr*Vrs(Vsv*Vwx)ex}*V}!O!&m!O;'S*V;'S;=`*s<%lO*V!R!&vV!b`!dp!ePOr*Vrs(Vsv*Vwx)ex;'S*V;'S;=`*s<%lO*V!R!'dX!b`!dpOr*Vrs(Vsv*Vwx)ex!q*V!q!r!(P!r;'S*V;'S;=`*s<%lO*V!R!(WX!b`!dpOr*Vrs(Vsv*Vwx)ex!e*V!e!f!(s!f;'S*V;'S;=`*s<%lO*V!R!(zX!b`!dpOr*Vrs(Vsv*Vwx)ex!v*V!v!w!)g!w;'S*V;'S;=`*s<%lO*V!R!)nX!b`!dpOr*Vrs(Vsv*Vwx)ex!{*V!{!|!*Z!|;'S*V;'S;=`*s<%lO*V!R!*bX!b`!dpOr*Vrs(Vsv*Vwx)ex!r*V!r!s!*}!s;'S*V;'S;=`*s<%lO*V!R!+UX!b`!dpOr*Vrs(Vsv*Vwx)ex!g*V!g!h!+q!h;'S*V;'S;=`*s<%lO*V!R!+xY!b`!dpOr!+qrs!,hsv!+qvw!-Swx!.[x!`!+q!`!a!/j!a;'S!+q;'S;=`!0Y<%lO!+qq!,mV!dpOv!,hvx!-Sx!`!,h!`!a!-q!a;'S!,h;'S;=`!.U<%lO!,hP!-VTO!`!-S!`!a!-f!a;'S!-S;'S;=`!-k<%lO!-SP!-kO|PP!-nP;=`<%l!-Sq!-xS!dp|POv(Vx;'S(V;'S;=`(h<%lO(Vq!.XP;=`<%l!,ha!.aX!b`Or!.[rs!-Ssv!.[vw!-Sw!`!.[!`!a!.|!a;'S!.[;'S;=`!/d<%lO!.[a!/TT!b`|POr)esv)ew;'S)e;'S;=`)y<%lO)ea!/gP;=`<%l!.[!R!/sV!b`!dp|POr*Vrs(Vsv*Vwx)ex;'S*V;'S;=`*s<%lO*V!R!0]P;=`<%l!+q!R!0gX!b`!dpOr*Vrs(Vsv*Vwx)ex#c*V#c#d!1S#d;'S*V;'S;=`*s<%lO*V!R!1ZX!b`!dpOr*Vrs(Vsv*Vwx)ex#V*V#V#W!1v#W;'S*V;'S;=`*s<%lO*V!R!1}X!b`!dpOr*Vrs(Vsv*Vwx)ex#h*V#h#i!2j#i;'S*V;'S;=`*s<%lO*V!R!2qX!b`!dpOr*Vrs(Vsv*Vwx)ex#m*V#m#n!3^#n;'S*V;'S;=`*s<%lO*V!R!3eX!b`!dpOr*Vrs(Vsv*Vwx)ex#d*V#d#e!4Q#e;'S*V;'S;=`*s<%lO*V!R!4XX!b`!dpOr*Vrs(Vsv*Vwx)ex#X*V#X#Y!+q#Y;'S*V;'S;=`*s<%lO*V!R!4{Y!b`!dpOr!4trs!5ksv!4tvw!6Vwx!8]x!a!4t!a!b!:]!b;'S!4t;'S;=`!;r<%lO!4tq!5pV!dpOv!5kvx!6Vx!a!5k!a!b!7W!b;'S!5k;'S;=`!8V<%lO!5kP!6YTO!a!6V!a!b!6i!b;'S!6V;'S;=`!7Q<%lO!6VP!6lTO!`!6V!`!a!6{!a;'S!6V;'S;=`!7Q<%lO!6VP!7QOyPP!7TP;=`<%l!6Vq!7]V!dpOv!5kvx!6Vx!`!5k!`!a!7r!a;'S!5k;'S;=`!8V<%lO!5kq!7yS!dpyPOv(Vx;'S(V;'S;=`(h<%lO(Vq!8YP;=`<%l!5ka!8bX!b`Or!8]rs!6Vsv!8]vw!6Vw!a!8]!a!b!8}!b;'S!8];'S;=`!:V<%lO!8]a!9SX!b`Or!8]rs!6Vsv!8]vw!6Vw!`!8]!`!a!9o!a;'S!8];'S;=`!:V<%lO!8]a!9vT!b`yPOr)esv)ew;'S)e;'S;=`)y<%lO)ea!:YP;=`<%l!8]!R!:dY!b`!dpOr!4trs!5ksv!4tvw!6Vwx!8]x!`!4t!`!a!;S!a;'S!4t;'S;=`!;r<%lO!4t!R!;]V!b`!dpyPOr*Vrs(Vsv*Vwx)ex;'S*V;'S;=`*s<%lO*V!R!;uP;=`<%l!4t!V!{let u=l.type.id;if(u==AJ)return ey(l,c,i);if(u==EJ)return ey(l,c,n);if(u==MJ)return ey(l,c,r);if(u==$4&&s.length){let d=l.node,p=d.firstChild,g=p&&KM(p,c),O;if(g){for(let _ of s)if(_.tag==g&&(!_.attrs||_.attrs(O||(O=I4(p,c))))){let b=d.lastChild,x=b.type.id==RJ?b.from:d.to;if(x>p.to)return{parser:_.parser,overlay:[{from:p.to,to:x}]}}}}if(o&&u==z4){let d=l.node,p;if(p=d.firstChild){let g=o[c.read(p.from,p.to)];if(g)for(let O of g){if(O.tagName&&O.tagName!=KM(d.parent,c))continue;let _=d.lastChild;if(_.type.id==Ib){let b=_.from+1,x=_.lastChild,w=_.to-(x&&x.isError?0:1);if(w>b)return{parser:O.parser,overlay:[{from:b,to:w}],bracketed:!0}}else if(_.type.id==N4)return{parser:O.parser,overlay:[{from:_.from,to:_.to}]}}}}return null})}const KJ=122,JM=1,JJ=123,eee=124,X4=2,tee=125,iee=3,nee=4,Z4=[9,10,11,12,13,32,133,160,5760,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8232,8233,8239,8287,12288],ree=58,see=40,q4=95,oee=91,Gm=45,aee=46,lee=35,cee=37,hee=38,uee=92,fee=10,dee=42;function Kf(t){return t>=65&&t<=90||t>=97&&t<=122||t>=161}function ww(t){return t>=48&&t<=57}function eP(t){return ww(t)||t>=97&&t<=102||t>=65&&t<=70}const W4=(t,e,i)=>(n,r)=>{for(let s=!1,o=0,l=0;;l++){let{next:c}=n;if(Kf(c)||c==Gm||c==q4||s&&ww(c))!s&&(c!=Gm||l>0)&&(s=!0),o===l&&c==Gm&&o++,n.advance();else if(c==uee&&n.peek(1)!=fee){if(n.advance(),eP(n.next)){do n.advance();while(eP(n.next));n.next==32&&n.advance()}else n.next>-1&&n.advance();s=!0}else{s&&n.acceptToken(o==2&&r.canShift(X4)?e:c==see?i:t);break}}},pee=new or(W4(JJ,X4,eee)),mee=new or(W4(tee,iee,nee)),gee=new or(t=>{if(Z4.includes(t.peek(-1))){let{next:e}=t;(Kf(e)||e==q4||e==lee||e==aee||e==dee||e==oee||e==ree&&Kf(t.peek(1))||e==Gm||e==hee)&&t.acceptToken(KJ)}}),Oee=new or(t=>{if(!Z4.includes(t.peek(-1))){let{next:e}=t;if(e==cee&&(t.advance(),t.acceptToken(JM)),Kf(e)){do t.advance();while(Kf(t.next)||ww(t.next));t.acceptToken(JM)}}}),vee=_h({"AtKeyword import charset namespace keyframes media supports":V.definitionKeyword,"from to selector":V.keyword,NamespaceName:V.namespace,KeyframeName:V.labelName,KeyframeRangeName:V.operatorKeyword,TagName:V.tagName,ClassName:V.className,PseudoClassName:V.constant(V.className),IdName:V.labelName,"FeatureName PropertyName":V.propertyName,AttributeName:V.attributeName,NumberLiteral:V.number,KeywordQuery:V.keyword,UnaryQueryOp:V.operatorKeyword,"CallTag ValueName":V.atom,VariableName:V.variableName,Callee:V.operatorKeyword,Unit:V.unit,"UniversalSelector NestingSelector":V.definitionOperator,"MatchOp CompareOp":V.compareOperator,"ChildOp SiblingOp, LogicOp":V.logicOperator,BinOp:V.arithmeticOperator,Important:V.modifier,Comment:V.blockComment,ColorLiteral:V.color,"ParenthesizedContent StringLiteral":V.string,":":V.punctuation,"PseudoOp #":V.derefOperator,"; ,":V.separator,"( )":V.paren,"[ ]":V.squareBracket,"{ }":V.brace}),_ee={__proto__:null,lang:38,"nth-child":38,"nth-last-child":38,"nth-of-type":38,"nth-last-of-type":38,dir:38,"host-context":38,if:84,url:124,"url-prefix":124,domain:124,regexp:124},yee={__proto__:null,or:98,and:98,not:106,only:106,layer:170},bee={__proto__:null,selector:112,layer:166},See={__proto__:null,"@import":162,"@media":174,"@charset":178,"@namespace":182,"@keyframes":188,"@supports":200,"@scope":204},xee={__proto__:null,to:207},wee=fh.deserialize({version:14,states:"EbQYQdOOO#qQdOOP#xO`OOOOQP'#Cf'#CfOOQP'#Ce'#CeO#}QdO'#ChO$nQaO'#CcO$xQdO'#CkO%TQdO'#DpO%YQdO'#DrO%_QdO'#DuO%_QdO'#DxOOQP'#FV'#FVO&eQhO'#EhOOQS'#FU'#FUOOQS'#Ek'#EkQYQdOOO&lQdO'#EOO&PQhO'#EUO&lQdO'#EWO'aQdO'#EYO'lQdO'#E]O'tQhO'#EcO(VQdO'#EeO(bQaO'#CfO)VQ`O'#D{O)[Q`O'#F`O)gQdO'#F`QOQ`OOP)qO&jO'#CaPOOO)C@t)C@tOOQP'#Cj'#CjOOQP,59S,59SO#}QdO,59SO)|QdO,59VO%TQdO,5:[O%YQdO,5:^O%_QdO,5:aO%_QdO,5:cO%_QdO,5:dO%_QdO'#ErO*XQ`O,58}O*aQdO'#DzOOQS,58},58}OOQP'#Cn'#CnOOQO'#Dn'#DnOOQP,59V,59VO*hQ`O,59VO*mQ`O,59VOOQP'#Dq'#DqOOQP,5:[,5:[OOQO'#Ds'#DsO*rQpO,5:^O+]QaO,5:aO+sQaO,5:dOOQW'#DZ'#DZO,ZQhO'#DdO,xQhO'#FaO'tQhO'#DbO-WQ`O'#DhOOQW'#F['#F[O-]Q`O,5;SO-eQ`O'#DeOOQS-E8i-E8iOOQ['#Cs'#CsO-jQdO'#CtO.QQdO'#CzO.hQdO'#C}O/OQ!pO'#DPO1RQ!jO,5:jOOQO'#DU'#DUO*mQ`O'#DTO1cQ!nO'#FXO3`Q`O'#DVO3eQ`O'#DkOOQ['#FX'#FXO-`Q`O,5:pO3jQ!bO,5:rOOQS'#E['#E[O3rQ`O,5:tO3wQdO,5:tOOQO'#E_'#E_O4PQ`O,5:wO4UQhO,5:}O%_QdO'#DgOOQS,5;P,5;PO-eQ`O,5;PO4^QdO,5;PO4fQdO,5:gO4vQdO'#EtO5TQ`O,5;zO5TQ`O,5;zPOOO'#Ej'#EjP5`O&jO,58{POOO,58{,58{OOQP1G.n1G.nOOQP1G.q1G.qO*hQ`O1G.qO*mQ`O1G.qOOQP1G/v1G/vO5kQpO1G/xO5sQaO1G/{O6ZQaO1G/}O6qQaO1G0OO7XQaO,5;^OOQO-E8p-E8pOOQS1G.i1G.iO7cQ`O,5:fO7hQdO'#DoO7oQdO'#CrOOQP1G/x1G/xO&lQdO1G/xO7vQ!jO'#DZO8UQ!bO,59vO8^QhO,5:OOOQO'#F]'#F]O8XQ!bO,59zO'tQhO,59xO8fQhO'#EvO8sQ`O,5;{O9OQhO,59|O9uQhO'#DiOOQW,5:S,5:SOOQS1G0n1G0nOOQW,5:P,5:PO9|Q!fO'#FYOOQS'#FY'#FYOOQS'#Em'#EmO;^QdO,59`OOQ[,59`,59`O;tQdO,59fOOQ[,59f,59fO<[QdO,59iOOQ[,59i,59iOOQ[,59k,59kO&lQdO,59mOPQ!fO1G0ROOQO1G0R1G0ROOQO,5;`,5;`O>gQdO,5;`OOQO-E8r-E8rO>tQ`O1G1fPOOO-E8h-E8hPOOO1G.g1G.gOOQP7+$]7+$]OOQP7+%d7+%dO&lQdO7+%dOOQS1G0Q1G0QO?PQaO'#F_O?ZQ`O,5:ZO?`Q!fO'#ElO@^QdO'#FWO@hQ`O,59^O@mQ!bO7+%dO&lQdO1G/bO@uQhO1G/fOOQW1G/j1G/jOOQW1G/d1G/dOAWQhO,5;bOOQO-E8t-E8tOAfQhO'#DZOAtQhO'#F^OBPQ`O'#F^OBUQ`O,5:TOOQS-E8k-E8kOOQ[1G.z1G.zOOQ[1G/Q1G/QOOQ[1G/T1G/TOOQ[1G/X1G/XOBZQdO,5:lOOQS7+%p7+%pOB`Q`O7+%pOBeQhO'#DYOBmQ`O,59sO'tQhO,59sOOQ[1G/q1G/qOBuQ`O1G/qOOQS7+%z7+%zOBzQbO'#DPOOQO'#Eb'#EbOCYQ`O'#EaOOQO'#Ea'#EaOCeQ`O'#EwOCmQdO,5:zOOQS,5:z,5:zOOQ[1G/m1G/mOOQS7+&V7+&VO-`Q`O7+&VOCxQ!fO'#EsO&lQdO'#EsOEPQdO7+%mOOQO7+%m7+%mOOQO1G0z1G0zOEdQ!bO<jAN>jOIUQaO,5;]OOQO-E8o-E8oOI`QdO,5;[OOQO-E8n-E8nOOQW<WO&lQdO1G0uOK]Q`O7+'OOOQO,5;a,5;aOOQO-E8s-E8sOOQW<t}!O?V!O!P?t!P!Q@]!Q![AU![!]BP!]!^B{!^!_C^!_!`DY!`!aDm!a!b$q!b!cEn!c!}$q!}#OG{#O#P$q#P#QH^#Q#R6W#R#o$q#o#pHo#p#q6W#q#rIQ#r#sIc#s#y$q#y#z%i#z$f$q$f$g%i$g#BY$q#BY#BZ%i#BZ$IS$q$IS$I_%i$I_$I|$q$I|$JO%i$JO$JT$q$JT$JU%i$JU$KV$q$KV$KW%i$KW&FU$q&FU&FV%i&FV;'S$q;'S;=`Iz<%lO$q`$tSOy%Qz;'S%Q;'S;=`%c<%lO%Q`%VS!a`Oy%Qz;'S%Q;'S;=`%c<%lO%Q`%fP;=`<%l%Q~%nh#s~OX%QX^'Y^p%Qpq'Yqy%Qz#y%Q#y#z'Y#z$f%Q$f$g'Y$g#BY%Q#BY#BZ'Y#BZ$IS%Q$IS$I_'Y$I_$I|%Q$I|$JO'Y$JO$JT%Q$JT$JU'Y$JU$KV%Q$KV$KW'Y$KW&FU%Q&FU&FV'Y&FV;'S%Q;'S;=`%c<%lO%Q~'ah#s~!a`OX%QX^'Y^p%Qpq'Yqy%Qz#y%Q#y#z'Y#z$f%Q$f$g'Y$g#BY%Q#BY#BZ'Y#BZ$IS%Q$IS$I_'Y$I_$I|%Q$I|$JO'Y$JO$JT%Q$JT$JU'Y$JU$KV%Q$KV$KW'Y$KW&FU%Q&FU&FV'Y&FV;'S%Q;'S;=`%c<%lO%Qj)OUOy%Qz#]%Q#]#^)b#^;'S%Q;'S;=`%c<%lO%Qj)gU!a`Oy%Qz#a%Q#a#b)y#b;'S%Q;'S;=`%c<%lO%Qj*OU!a`Oy%Qz#d%Q#d#e*b#e;'S%Q;'S;=`%c<%lO%Qj*gU!a`Oy%Qz#c%Q#c#d*y#d;'S%Q;'S;=`%c<%lO%Qj+OU!a`Oy%Qz#f%Q#f#g+b#g;'S%Q;'S;=`%c<%lO%Qj+gU!a`Oy%Qz#h%Q#h#i+y#i;'S%Q;'S;=`%c<%lO%Qj,OU!a`Oy%Qz#T%Q#T#U,b#U;'S%Q;'S;=`%c<%lO%Qj,gU!a`Oy%Qz#b%Q#b#c,y#c;'S%Q;'S;=`%c<%lO%Qj-OU!a`Oy%Qz#h%Q#h#i-b#i;'S%Q;'S;=`%c<%lO%Qj-iS!qY!a`Oy%Qz;'S%Q;'S;=`%c<%lO%Q~-xWOY-uZr-urs.bs#O-u#O#P.g#P;'S-u;'S;=`/c<%lO-u~.gOt~~.jRO;'S-u;'S;=`.s;=`O-u~.vXOY-uZr-urs.bs#O-u#O#P.g#P;'S-u;'S;=`/c;=`<%l-u<%lO-u~/fP;=`<%l-uj/nYjYOy%Qz!Q%Q!Q![0^![!c%Q!c!i0^!i#T%Q#T#Z0^#Z;'S%Q;'S;=`%c<%lO%Qj0cY!a`Oy%Qz!Q%Q!Q![1R![!c%Q!c!i1R!i#T%Q#T#Z1R#Z;'S%Q;'S;=`%c<%lO%Qj1WY!a`Oy%Qz!Q%Q!Q![1v![!c%Q!c!i1v!i#T%Q#T#Z1v#Z;'S%Q;'S;=`%c<%lO%Qj1}YrY!a`Oy%Qz!Q%Q!Q![2m![!c%Q!c!i2m!i#T%Q#T#Z2m#Z;'S%Q;'S;=`%c<%lO%Qj2tYrY!a`Oy%Qz!Q%Q!Q![3d![!c%Q!c!i3d!i#T%Q#T#Z3d#Z;'S%Q;'S;=`%c<%lO%Qj3iY!a`Oy%Qz!Q%Q!Q![4X![!c%Q!c!i4X!i#T%Q#T#Z4X#Z;'S%Q;'S;=`%c<%lO%Qj4`YrY!a`Oy%Qz!Q%Q!Q![5O![!c%Q!c!i5O!i#T%Q#T#Z5O#Z;'S%Q;'S;=`%c<%lO%Qj5TY!a`Oy%Qz!Q%Q!Q![5s![!c%Q!c!i5s!i#T%Q#T#Z5s#Z;'S%Q;'S;=`%c<%lO%Qj5zSrY!a`Oy%Qz;'S%Q;'S;=`%c<%lO%Qd6ZUOy%Qz!_%Q!_!`6m!`;'S%Q;'S;=`%c<%lO%Qd6tS!hS!a`Oy%Qz;'S%Q;'S;=`%c<%lO%Qb7VSZQOy%Qz;'S%Q;'S;=`%c<%lO%Q~7fWOY7cZw7cwx.bx#O7c#O#P8O#P;'S7c;'S;=`8z<%lO7c~8RRO;'S7c;'S;=`8[;=`O7c~8_XOY7cZw7cwx.bx#O7c#O#P8O#P;'S7c;'S;=`8z;=`<%l7c<%lO7c~8}P;=`<%l7cj9VSeYOy%Qz;'S%Q;'S;=`%c<%lO%Q~9hOd~n9oUWQvWOy%Qz!_%Q!_!`6m!`;'S%Q;'S;=`%c<%lO%Qj:YWvW!mQOy%Qz!O%Q!O!P:r!P!Q%Q!Q![=w![;'S%Q;'S;=`%c<%lO%Qj:wU!a`Oy%Qz!Q%Q!Q![;Z![;'S%Q;'S;=`%c<%lO%Qj;bY!a`#}YOy%Qz!Q%Q!Q![;Z![!g%Q!g!hO[!a`#}YOy%Qz!O%Q!O!P;Z!P!Q%Q!Q![=w![!g%Q!g!hyS!^YOy%Qz;'S%Q;'S;=`%c<%lO%Qj?[WvWOy%Qz!O%Q!O!P:r!P!Q%Q!Q![=w![;'S%Q;'S;=`%c<%lO%Qj?yU]YOy%Qz!Q%Q!Q![;Z![;'S%Q;'S;=`%c<%lO%Q~@bTvWOy%Qz{@q{;'S%Q;'S;=`%c<%lO%Q~@xS!a`#t~Oy%Qz;'S%Q;'S;=`%c<%lO%QjAZ[#}YOy%Qz!O%Q!O!P;Z!P!Q%Q!Q![=w![!g%Q!g!h_ee[t]||-1},{term:125,get:t=>yee[t]||-1},{term:4,get:t=>bee[t]||-1},{term:25,get:t=>See[t]||-1},{term:123,get:t=>xee[t]||-1}],tokenPrec:1963});let ty=null;function iy(){if(!ty&&typeof document=="object"&&document.body){let{style:t}=document.body,e=[],i=new Set;for(let n in t)n!="cssText"&&n!="cssFloat"&&typeof t[n]=="string"&&(/[A-Z]/.test(n)&&(n=n.replace(/[A-Z]/g,r=>"-"+r.toLowerCase())),i.has(n)||(e.push(n),i.add(n)));ty=e.sort().map(n=>({type:"property",label:n,apply:n+": "}))}return ty||[]}const tP=["active","after","any-link","autofill","backdrop","before","checked","cue","default","defined","disabled","empty","enabled","file-selector-button","first","first-child","first-letter","first-line","first-of-type","focus","focus-visible","focus-within","fullscreen","has","host","host-context","hover","in-range","indeterminate","invalid","is","lang","last-child","last-of-type","left","link","marker","modal","not","nth-child","nth-last-child","nth-last-of-type","nth-of-type","only-child","only-of-type","optional","out-of-range","part","placeholder","placeholder-shown","read-only","read-write","required","right","root","scope","selection","slotted","target","target-text","valid","visited","where"].map(t=>({type:"class",label:t})),iP=["above","absolute","activeborder","additive","activecaption","after-white-space","ahead","alias","all","all-scroll","alphabetic","alternate","always","antialiased","appworkspace","asterisks","attr","auto","auto-flow","avoid","avoid-column","avoid-page","avoid-region","axis-pan","background","backwards","baseline","below","bidi-override","blink","block","block-axis","bold","bolder","border","border-box","both","bottom","break","break-all","break-word","bullets","button","button-bevel","buttonface","buttonhighlight","buttonshadow","buttontext","calc","capitalize","caps-lock-indicator","caption","captiontext","caret","cell","center","checkbox","circle","cjk-decimal","clear","clip","close-quote","col-resize","collapse","color","color-burn","color-dodge","column","column-reverse","compact","condensed","contain","content","contents","content-box","context-menu","continuous","copy","counter","counters","cover","crop","cross","crosshair","currentcolor","cursive","cyclic","darken","dashed","decimal","decimal-leading-zero","default","default-button","dense","destination-atop","destination-in","destination-out","destination-over","difference","disc","discard","disclosure-closed","disclosure-open","document","dot-dash","dot-dot-dash","dotted","double","down","e-resize","ease","ease-in","ease-in-out","ease-out","element","ellipse","ellipsis","embed","end","ethiopic-abegede-gez","ethiopic-halehame-aa-er","ethiopic-halehame-gez","ew-resize","exclusion","expanded","extends","extra-condensed","extra-expanded","fantasy","fast","fill","fill-box","fixed","flat","flex","flex-end","flex-start","footnotes","forwards","from","geometricPrecision","graytext","grid","groove","hand","hard-light","help","hidden","hide","higher","highlight","highlighttext","horizontal","hsl","hsla","hue","icon","ignore","inactiveborder","inactivecaption","inactivecaptiontext","infinite","infobackground","infotext","inherit","initial","inline","inline-axis","inline-block","inline-flex","inline-grid","inline-table","inset","inside","intrinsic","invert","italic","justify","keep-all","landscape","large","larger","left","level","lighter","lighten","line-through","linear","linear-gradient","lines","list-item","listbox","listitem","local","logical","loud","lower","lower-hexadecimal","lower-latin","lower-norwegian","lowercase","ltr","luminosity","manipulation","match","matrix","matrix3d","medium","menu","menutext","message-box","middle","min-intrinsic","mix","monospace","move","multiple","multiple_mask_images","multiply","n-resize","narrower","ne-resize","nesw-resize","no-close-quote","no-drop","no-open-quote","no-repeat","none","normal","not-allowed","nowrap","ns-resize","numbers","numeric","nw-resize","nwse-resize","oblique","opacity","open-quote","optimizeLegibility","optimizeSpeed","outset","outside","outside-shape","overlay","overline","padding","padding-box","painted","page","paused","perspective","pinch-zoom","plus-darker","plus-lighter","pointer","polygon","portrait","pre","pre-line","pre-wrap","preserve-3d","progress","push-button","radial-gradient","radio","read-only","read-write","read-write-plaintext-only","rectangle","region","relative","repeat","repeating-linear-gradient","repeating-radial-gradient","repeat-x","repeat-y","reset","reverse","rgb","rgba","ridge","right","rotate","rotate3d","rotateX","rotateY","rotateZ","round","row","row-resize","row-reverse","rtl","run-in","running","s-resize","sans-serif","saturation","scale","scale3d","scaleX","scaleY","scaleZ","screen","scroll","scrollbar","scroll-position","se-resize","self-start","self-end","semi-condensed","semi-expanded","separate","serif","show","single","skew","skewX","skewY","skip-white-space","slide","slider-horizontal","slider-vertical","sliderthumb-horizontal","sliderthumb-vertical","slow","small","small-caps","small-caption","smaller","soft-light","solid","source-atop","source-in","source-out","source-over","space","space-around","space-between","space-evenly","spell-out","square","start","static","status-bar","stretch","stroke","stroke-box","sub","subpixel-antialiased","svg_masks","super","sw-resize","symbolic","symbols","system-ui","table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row","table-row-group","text","text-bottom","text-top","textarea","textfield","thick","thin","threeddarkshadow","threedface","threedhighlight","threedlightshadow","threedshadow","to","top","transform","translate","translate3d","translateX","translateY","translateZ","transparent","ultra-condensed","ultra-expanded","underline","unidirectional-pan","unset","up","upper-latin","uppercase","url","var","vertical","vertical-text","view-box","visible","visibleFill","visiblePainted","visibleStroke","visual","w-resize","wait","wave","wider","window","windowframe","windowtext","words","wrap","wrap-reverse","x-large","x-small","xor","xx-large","xx-small"].map(t=>({type:"keyword",label:t})).concat(["aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","grey","green","greenyellow","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen"].map(t=>({type:"constant",label:t}))),Cee=["a","abbr","address","article","aside","b","bdi","bdo","blockquote","body","br","button","canvas","caption","cite","code","col","colgroup","dd","del","details","dfn","dialog","div","dl","dt","em","figcaption","figure","footer","form","header","hgroup","h1","h2","h3","h4","h5","h6","hr","html","i","iframe","img","input","ins","kbd","label","legend","li","main","meter","nav","ol","output","p","pre","ruby","section","select","small","source","span","strong","sub","summary","sup","table","tbody","td","template","textarea","tfoot","th","thead","tr","u","ul"].map(t=>({type:"type",label:t})),kee=["@charset","@color-profile","@container","@counter-style","@font-face","@font-feature-values","@font-palette-values","@import","@keyframes","@layer","@media","@namespace","@page","@position-try","@property","@scope","@starting-style","@supports","@view-transition"].map(t=>({type:"keyword",label:t})),io=/^(\w[\w-]*|-\w[\w-]*|)$/,Tee=/^-(-[\w-]*)?$/;function Aee(t,e){var i;if((t.name=="("||t.type.isError)&&(t=t.parent||t),t.name!="ArgList")return!1;let n=(i=t.parent)===null||i===void 0?void 0:i.firstChild;return(n==null?void 0:n.name)!="Callee"?!1:e.sliceString(n.from,n.to)=="var"}const nP=new BB,Eee=["Declaration"];function Mee(t){for(let e=t;;){if(e.type.isTop)return e;if(!(e=e.parent))return t}}function U4(t,e,i){if(e.to-e.from>4096){let n=nP.get(e);if(n)return n;let r=[],s=new Set,o=e.cursor(ut.IncludeAnonymous);if(o.firstChild())do for(let l of U4(t,o.node,i))s.has(l.label)||(s.add(l.label),r.push(l));while(o.nextSibling());return nP.set(e,r),r}else{let n=[],r=new Set;return e.cursor().iterate(s=>{var o;if(i(s)&&s.matchContext(Eee)&&((o=s.node.nextSibling)===null||o===void 0?void 0:o.name)==":"){let l=t.sliceString(s.from,s.to);r.has(l)||(r.add(l),n.push({label:l,type:"variable"}))}}),n}}const Pee=t=>e=>{let{state:i,pos:n}=e,r=xt(i).resolveInner(n,-1),s=r.type.isError&&r.from==r.to-1&&i.doc.sliceString(r.from,r.to)=="-";if(r.name=="PropertyName"||(s||r.name=="TagName")&&/^(Block|Styles)$/.test(r.resolve(r.to).name))return{from:r.from,options:iy(),validFor:io};if(r.name=="ValueName")return{from:r.from,options:iP,validFor:io};if(r.name=="PseudoClassName")return{from:r.from,options:tP,validFor:io};if(t(r)||(e.explicit||s)&&Aee(r,i.doc))return{from:t(r)||s?r.from:n,options:U4(i.doc,Mee(r),t),validFor:Tee};if(r.name=="TagName"){for(let{parent:c}=r;c;c=c.parent)if(c.name=="Block")return{from:r.from,options:iy(),validFor:io};return{from:r.from,options:Cee,validFor:io}}if(r.name=="AtKeyword")return{from:r.from,options:kee,validFor:io};if(!e.explicit)return null;let o=r.resolve(n),l=o.childBefore(n);return l&&l.name==":"&&o.name=="PseudoClassSelector"?{from:n,options:tP,validFor:io}:l&&l.name==":"&&o.name=="Declaration"||o.name=="ArgList"?{from:n,options:iP,validFor:io}:o.name=="Block"||o.name=="Styles"?{from:n,options:iy(),validFor:io}:null},Ree=Pee(t=>t.name=="VariableName"),Fg=lh.define({name:"css",parser:wee.configure({props:[md.add({Declaration:Ym()}),bh.add({"Block KeyframeList":ZB})]}),languageData:{commentTokens:{block:{open:"/*",close:"*/"}},indentOnInput:/^\s*\}$/,wordChars:"-"}});function Qee(){return new Vf(Fg,Fg.data.of({autocomplete:Ree}))}const Lee=316,Dee=317,rP=1,Bee=2,$ee=3,zee=4,Nee=318,jee=320,Iee=321,Vee=5,Xee=6,Zee=0,Xb=[9,10,11,12,13,32,133,160,5760,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8232,8233,8239,8287,12288],Y4=125,qee=59,Zb=47,Wee=42,Uee=43,Yee=45,Hee=60,Fee=44,Gee=63,Kee=46,Jee=91,ete=new R4({start:!1,shift(t,e){return e==Vee||e==Xee||e==jee?t:e==Iee},strict:!1}),tte=new or((t,e)=>{let{next:i}=t;(i==Y4||i==-1||e.context)&&t.acceptToken(Nee)},{contextual:!0,fallback:!0}),ite=new or((t,e)=>{let{next:i}=t,n;Xb.indexOf(i)>-1||i==Zb&&((n=t.peek(1))==Zb||n==Wee)||i!=Y4&&i!=qee&&i!=-1&&!e.context&&t.acceptToken(Lee)},{contextual:!0}),nte=new or((t,e)=>{t.next==Jee&&!e.context&&t.acceptToken(Dee)},{contextual:!0}),rte=new or((t,e)=>{let{next:i}=t;if(i==Uee||i==Yee){if(t.advance(),i==t.next){t.advance();let n=!e.context&&e.canShift(rP);t.acceptToken(n?rP:Bee)}}else i==Gee&&t.peek(1)==Kee&&(t.advance(),t.advance(),(t.next<48||t.next>57)&&t.acceptToken($ee))},{contextual:!0});function ny(t,e){return t>=65&&t<=90||t>=97&&t<=122||t==95||t>=192||!e&&t>=48&&t<=57}const ste=new or((t,e)=>{if(t.next!=Hee||!e.dialectEnabled(Zee)||(t.advance(),t.next==Zb))return;let i=0;for(;Xb.indexOf(t.next)>-1;)t.advance(),i++;if(ny(t.next,!0)){for(t.advance(),i++;ny(t.next,!1);)t.advance(),i++;for(;Xb.indexOf(t.next)>-1;)t.advance(),i++;if(t.next==Fee)return;for(let n=0;;n++){if(n==7){if(!ny(t.next,!0))return;break}if(t.next!="extends".charCodeAt(n))break;t.advance(),i++}}t.acceptToken(zee,-i)}),ote=_h({"get set async static":V.modifier,"for while do if else switch try catch finally return throw break continue default case defer":V.controlKeyword,"in of await yield void typeof delete instanceof as satisfies":V.operatorKeyword,"let var const using function class extends":V.definitionKeyword,"import export from":V.moduleKeyword,"with debugger new":V.keyword,TemplateString:V.special(V.string),super:V.atom,BooleanLiteral:V.bool,this:V.self,null:V.null,Star:V.modifier,VariableName:V.variableName,"CallExpression/VariableName TaggedTemplateExpression/VariableName":V.function(V.variableName),VariableDefinition:V.definition(V.variableName),Label:V.labelName,PropertyName:V.propertyName,PrivatePropertyName:V.special(V.propertyName),"CallExpression/MemberExpression/PropertyName":V.function(V.propertyName),"FunctionDeclaration/VariableDefinition":V.function(V.definition(V.variableName)),"ClassDeclaration/VariableDefinition":V.definition(V.className),"NewExpression/VariableName":V.className,PropertyDefinition:V.definition(V.propertyName),PrivatePropertyDefinition:V.definition(V.special(V.propertyName)),UpdateOp:V.updateOperator,"LineComment Hashbang":V.lineComment,BlockComment:V.blockComment,Number:V.number,String:V.string,Escape:V.escape,ArithOp:V.arithmeticOperator,LogicOp:V.logicOperator,BitOp:V.bitwiseOperator,CompareOp:V.compareOperator,RegExp:V.regexp,Equals:V.definitionOperator,Arrow:V.function(V.punctuation),": Spread":V.punctuation,"( )":V.paren,"[ ]":V.squareBracket,"{ }":V.brace,"InterpolationStart InterpolationEnd":V.special(V.brace),".":V.derefOperator,", ;":V.separator,"@":V.meta,TypeName:V.typeName,TypeDefinition:V.definition(V.typeName),"type enum interface implements namespace module declare":V.definitionKeyword,"abstract global Privacy readonly override":V.modifier,"is keyof unique infer asserts":V.operatorKeyword,JSXAttributeValue:V.attributeValue,JSXText:V.content,"JSXStartTag JSXStartCloseTag JSXSelfCloseEndTag JSXEndTag":V.angleBracket,"JSXIdentifier JSXNameSpacedName":V.tagName,"JSXAttribute/JSXIdentifier JSXAttribute/JSXNameSpacedName":V.attributeName,"JSXBuiltin/JSXIdentifier":V.standard(V.tagName)}),ate={__proto__:null,export:20,as:25,from:33,default:36,async:41,function:42,in:52,out:55,const:56,extends:60,this:64,true:72,false:72,null:84,void:88,typeof:92,super:108,new:142,delete:154,yield:163,await:167,class:172,public:235,private:235,protected:235,readonly:237,instanceof:256,satisfies:259,import:292,keyof:349,unique:353,infer:359,asserts:395,is:397,abstract:417,implements:419,type:421,let:424,var:426,using:429,interface:435,enum:439,namespace:445,module:447,declare:451,global:455,defer:471,for:476,of:485,while:488,with:492,do:496,if:500,else:502,switch:506,case:512,try:518,catch:522,finally:526,return:530,throw:534,break:538,continue:542,debugger:546},lte={__proto__:null,async:129,get:131,set:133,declare:195,public:197,private:197,protected:197,static:199,abstract:201,override:203,readonly:209,accessor:211,new:401},cte={__proto__:null,"<":193},hte=fh.deserialize({version:14,states:"$F|Q%TQlOOO%[QlOOO'_QpOOP(lO`OOO*zQ!0MxO'#CiO+RO#tO'#CjO+aO&jO'#CjO+oO#@ItO'#DaO.QQlO'#DgO.bQlO'#DrO%[QlO'#DzO0fQlO'#ESOOQ!0Lf'#E['#E[O1PQ`O'#EXOOQO'#Ep'#EpOOQO'#Il'#IlO1XQ`O'#GsO1dQ`O'#EoO1iQ`O'#EoO3hQ!0MxO'#JrO6[Q!0MxO'#JsO6uQ`O'#F]O6zQ,UO'#FtOOQ!0Lf'#Ff'#FfO7VO7dO'#FfO9XQMhO'#F|O9`Q`O'#F{OOQ!0Lf'#Js'#JsOOQ!0Lb'#Jr'#JrO9eQ`O'#GwOOQ['#K_'#K_O9pQ`O'#IYO9uQ!0LrO'#IZOOQ['#J`'#J`OOQ['#I_'#I_Q`QlOOQ`QlOOO9}Q!L^O'#DvO:UQlO'#EOO:]QlO'#EQO9kQ`O'#GsO:dQMhO'#CoO:rQ`O'#EnO:}Q`O'#EyO;hQMhO'#FeO;xQ`O'#GsOOQO'#K`'#K`O;}Q`O'#K`O<]Q`O'#G{O<]Q`O'#G|O<]Q`O'#HOO9kQ`O'#HRO=SQ`O'#HUO>kQ`O'#CeO>{Q`O'#HcO?TQ`O'#HiO?TQ`O'#HkO`QlO'#HmO?TQ`O'#HoO?TQ`O'#HrO?YQ`O'#HxO?_Q!0LsO'#IOO%[QlO'#IQO?jQ!0LsO'#ISO?uQ!0LsO'#IUO9uQ!0LrO'#IWO@QQ!0MxO'#CiOASQpO'#DlQOQ`OOO%[QlO'#EQOAjQ`O'#ETO:dQMhO'#EnOAuQ`O'#EnOBQQ!bO'#FeOOQ['#Cg'#CgOOQ!0Lb'#Dq'#DqOOQ!0Lb'#Jv'#JvO%[QlO'#JvOOQO'#Jy'#JyOOQO'#Ih'#IhOCQQpO'#EgOOQ!0Lb'#Ef'#EfOOQ!0Lb'#J}'#J}OC|Q!0MSO'#EgODWQpO'#EWOOQO'#Jx'#JxODlQpO'#JyOEyQpO'#EWODWQpO'#EgPFWO&2DjO'#CbPOOO)CD})CD}OOOO'#I`'#I`OFcO#tO,59UOOQ!0Lh,59U,59UOOOO'#Ia'#IaOFqO&jO,59UOGPQ!L^O'#DcOOOO'#Ic'#IcOGWO#@ItO,59{OOQ!0Lf,59{,59{OGfQlO'#IdOGyQ`O'#JtOIxQ!fO'#JtO+}QlO'#JtOJPQ`O,5:ROJgQ`O'#EpOJtQ`O'#KTOKPQ`O'#KSOKPQ`O'#KSOKXQ`O,5;^OK^Q`O'#KROOQ!0Ln,5:^,5:^OKeQlO,5:^OMcQ!0MxO,5:fONSQ`O,5:nONmQ!0LrO'#KQONtQ`O'#KPO9eQ`O'#KPO! YQ`O'#KPO! bQ`O,5;]O! gQ`O'#KPO!#lQ!fO'#JsOOQ!0Lh'#Ci'#CiO%[QlO'#ESO!$[Q!fO,5:sOOQS'#Jz'#JzOOQO-EtOOQ['#Jh'#JhOOQ[,5>u,5>uOOQ[-E<]-E<]O!TO`QlO,5>VO!LOQ`O,5>XO`QlO,5>ZO!LTQ`O,5>^O!LYQlO,5>dOOQ[,5>j,5>jO%[QlO,5>jO9uQ!0LrO,5>lOOQ[,5>n,5>nO#!dQ`O,5>nOOQ[,5>p,5>pO#!dQ`O,5>pOOQ[,5>r,5>rO##QQpO'#D_O%[QlO'#JvO##sQpO'#JvO##}QpO'#DmO#$`QpO'#DmO#&qQlO'#DmO#&xQ`O'#JuO#'QQ`O,5:WO#'VQ`O'#EtO#'eQ`O'#KUO#'mQ`O,5;_O#'rQpO'#DmO#(PQpO'#EVOOQ!0Lf,5:o,5:oO%[QlO,5:oO#(WQ`O,5:oO?YQ`O,5;YO!CUQpO,5;YO!C^QMhO,5;YO:dQMhO,5;YO#(`Q`O,5@bO#(eQ07dO,5:sOOQO-EPO$6^Q`O,5>POOQ[1G3i1G3iO`QlO1G3iOOQ[1G3o1G3oOOQ[1G3q1G3qO?TQ`O1G3sO$6cQlO1G3uO$:gQlO'#HtOOQ[1G3x1G3xO$:tQ`O'#HzO?YQ`O'#H|OOQ[1G4O1G4OO$:|QlO1G4OO9uQ!0LrO1G4UOOQ[1G4W1G4WOOQ!0Lb'#G_'#G_O9uQ!0LrO1G4YO9uQ!0LrO1G4[O$?TQ`O,5@bO!)[QlO,5;`O9eQ`O,5;`O?YQ`O,5:XO!)[QlO,5:XO!CUQpO,5:XO$?YQ?MtO,5:XOOQO,5;`,5;`O$?dQpO'#IeO$?zQ`O,5@aOOQ!0Lf1G/r1G/rO$@SQpO'#IkO$@^Q`O,5@pOOQ!0Lb1G0y1G0yO#$`QpO,5:XOOQO'#Ig'#IgO$@fQpO,5:qOOQ!0Ln,5:q,5:qO#(ZQ`O1G0ZOOQ!0Lf1G0Z1G0ZO%[QlO1G0ZOOQ!0Lf1G0t1G0tO?YQ`O1G0tO!CUQpO1G0tO!C^QMhO1G0tOOQ!0Lb1G5|1G5|O!ByQ!0LrO1G0^OOQO1G0m1G0mO%[QlO1G0mO$@mQ!0LrO1G0mO$@xQ!0LrO1G0mO!CUQpO1G0^ODWQpO1G0^O$AWQ!0LrO1G0mOOQO1G0^1G0^O$AlQ!0MxO1G0mPOOO-E<[-E<[POOO1G.h1G.hOOOO1G/i1G/iO$AvQ!bO,5QQpO,5@}OOQ!0Lb1G3c1G3cOOQ[7+$V7+$VO@zQ`O7+$VO9uQ!0LrO7+$VO%>]Q`O7+$VO%[QlO1G6lO%[QlO1G6mO%>bQ!0LrO1G6lO%>lQlO1G3kO%>sQ`O1G3kO%>xQlO1G3kOOQ[7+)T7+)TO9uQ!0LrO7+)_O`QlO7+)aOOQ['#Kh'#KhOOQ['#JS'#JSO%?PQlO,5>`OOQ[,5>`,5>`O%[QlO'#HuO%?^Q`O'#HwOOQ[,5>f,5>fO9eQ`O,5>fOOQ[,5>h,5>hOOQ[7+)j7+)jOOQ[7+)p7+)pOOQ[7+)t7+)tOOQ[7+)v7+)vO%?cQpO1G5|O%?}Q?MtO1G0zO%@XQ`O1G0zOOQO1G/s1G/sO%@dQ?MtO1G/sO?YQ`O1G/sO!)[QlO'#DmOOQO,5?P,5?POOQO-ERQ`O7+,WO&>WQ`O7+,XO%[QlO7+,WO%[QlO7+,XOOQ[7+)V7+)VO&>]Q`O7+)VO&>bQlO7+)VO&>iQ`O7+)VOOQ[<nQ`O,5>aOOQ[,5>c,5>cO&>sQ`O1G4QO9eQ`O7+&fO!)[QlO7+&fOOQO7+%_7+%_O&>xQ?MtO1G6ZO?YQ`O7+%_OOQ!0Lf<yQ?MvO,5?aO'@|Q?MvO,5?cO'CPQ?MvO7+'|O'DuQMjOG27TOOQO<VO!l$xO#jROe!iOpkOrPO(T)]O(VTO(YUO(aVO(o[O~O!]$_Oa$qa'z$qa'w$qa!k$qa!Y$qa!_$qa%i$qa!g$qa~Ol)dO~P!&zOh%VOp%WOr%XOs$tOt$tOz%YO|%ZO!O%]O!S${O!_$|O!i%bO!l$xO#j%cO$W%`O$t%^O$v%_O$y%aO(T(vO(VTO(YUO(a$uO(y$}O(z%PO~Og(pP~P!,TO!Q)iO!g)hO!_$^X$Z$^X$]$^X$_$^X$f$^X~O!g)hO!_({X$Z({X$]({X$_({X$f({X~O!Q)iO~P!.^O!Q)iO!_({X$Z({X$]({X$_({X$f({X~O!_)kO$Z)oO$])jO$_)jO$f)pO~O![)sO~P!)[O$]$hO$_$gO$f)wO~On$zX!Q$zX#S$zX'y$zX(y$zX(z$zX~OgmXg$zXnmX!]mX#`mX~P!0SOx)yO(b)zO(c)|O~On*VO!Q*OO'y*PO(y$}O(z%PO~Og)}O~P!1WOg*WO~Oh%VOr%XOs$tOt$tOz%YO|%ZO!OVO!l$xO#jVO!l$xO#jROe!iOpkOrPO(VTO(YUO(aVO(o[O~O(T=QO~P#$qO!]-]O!^(iX~O!^-_O~O!g-VO#`-UO!]#hX!^#hX~O!]-`O!^(xX~O!^-bO~O!c-cO!d-cO(U!lO~P#$`O!^-fO~P'_On-iO!_'`O~O!Y-nO~Os!{a!b!{a!c!{a!d!{a#T!{a#U!{a#V!{a#W!{a#X!{a#[!{a#]!{a(U!{a(V!{a(Y!{a(e!{a(o!{a~P!#vO!p-sO#`-qO~PChO!c-uO!d-uO(U!lO~PDWOa%nO#`-qO'z%nO~Oa%nO!g#vO#`-qO'z%nO~Oa%nO!g#vO!p-sO#`-qO'z%nO(r'pO~O(P'xO(Q'xO(R-zO~Ov-{O~O!Y'Wa!]'Wa~P!:tO![.PO!Y'WX!]'WX~P%[O!](VO!Y(ha~O!Y(ha~PHRO!](^O!Y(va~O!S%hO![.TO!_%iO(T%gO!Y'^X!]'^X~O#`.VO!](ta!k(taa(ta'z(ta~O!g#vO~P#,wO!](jO!k(sa~O!S%hO!_%iO#j.ZO(T%gO~Op.`O!S%hO![.]O!_%iO!|]O#i._O#j.]O(T%gO!]'aX!k'aX~OR.dO!l#xO~Oh%VOn.gO!_'`O%i.fO~Oa#ci!]#ci'z#ci'w#ci!Y#ci!k#civ#ci!_#ci%i#ci!g#ci~P!:tOn>]O!Q*OO'y*PO(y$}O(z%PO~O#k#_aa#_a#`#_a'z#_a!]#_a!k#_a!_#_a!Y#_a~P#/sO#k(`XP(`XR(`X[(`Xa(`Xj(`Xr(`X!S(`X!l(`X!p(`X#R(`X#n(`X#o(`X#p(`X#q(`X#r(`X#s(`X#t(`X#u(`X#v(`X#x(`X#z(`X#{(`X'z(`X(a(`X(r(`X!k(`X!Y(`X'w(`Xv(`X!_(`X%i(`X!g(`X~P!6kO!].tO!k(kX~P!:tO!k.wO~O!Y.yO~OP$[OR#zO!Q#yO!S#{O!l#xO!p$[O(aVO[#mia#mij#mir#mi!]#mi#R#mi#o#mi#p#mi#q#mi#r#mi#s#mi#t#mi#u#mi#v#mi#x#mi#z#mi#{#mi'z#mi(r#mi(y#mi(z#mi'w#mi!Y#mi!k#miv#mi!_#mi%i#mi!g#mi~O#n#mi~P#3cO#n$OO~P#3cOP$[OR#zOr$aO!Q#yO!S#{O!l#xO!p$[O#n$OO#o$PO#p$PO#q$PO(aVO[#mia#mij#mi!]#mi#R#mi#s#mi#t#mi#u#mi#v#mi#x#mi#z#mi#{#mi'z#mi(r#mi(y#mi(z#mi'w#mi!Y#mi!k#miv#mi!_#mi%i#mi!g#mi~O#r#mi~P#6QO#r$QO~P#6QOP$[OR#zO[$cOj$ROr$aO!Q#yO!S#{O!l#xO!p$[O#R$RO#n$OO#o$PO#p$PO#q$PO#r$QO#s$RO#t$RO#u$bO(aVOa#mi!]#mi#x#mi#z#mi#{#mi'z#mi(r#mi(y#mi(z#mi'w#mi!Y#mi!k#miv#mi!_#mi%i#mi!g#mi~O#v#mi~P#8oOP$[OR#zO[$cOj$ROr$aO!Q#yO!S#{O!l#xO!p$[O#R$RO#n$OO#o$PO#p$PO#q$PO#r$QO#s$RO#t$RO#u$bO#v$SO(aVO(z#}Oa#mi!]#mi#z#mi#{#mi'z#mi(r#mi(y#mi'w#mi!Y#mi!k#miv#mi!_#mi%i#mi!g#mi~O#x$UO~P#;VO#x#mi~P#;VO#v$SO~P#8oOP$[OR#zO[$cOj$ROr$aO!Q#yO!S#{O!l#xO!p$[O#R$RO#n$OO#o$PO#p$PO#q$PO#r$QO#s$RO#t$RO#u$bO#v$SO#x$UO(aVO(y#|O(z#}Oa#mi!]#mi#{#mi'z#mi(r#mi'w#mi!Y#mi!k#miv#mi!_#mi%i#mi!g#mi~O#z#mi~P#={O#z$WO~P#={OP]XR]X[]Xj]Xr]X!Q]X!S]X!l]X!p]X#R]X#S]X#`]X#kfX#n]X#o]X#p]X#q]X#r]X#s]X#t]X#u]X#v]X#x]X#z]X#{]X$Q]X(a]X(r]X(y]X(z]X!]]X!^]X~O$O]X~P#@jOP$[OR#zO[]O!Q*OO'y*PO(y$}O(z%POP#miR#mi!S#mi!l#mi!p#mi#n#mi#o#mi#p#mi#q#mi(a#mi~P#EyO!]/POg(pX~P!1WOg/RO~Oa$Pi!]$Pi'z$Pi'w$Pi!Y$Pi!k$Piv$Pi!_$Pi%i$Pi!g$Pi~P!:tO$]/SO$_/SO~O$]/TO$_/TO~O!g)hO#`/UO!_$cX$Z$cX$]$cX$_$cX$f$cX~O![/VO~O!_)kO$Z/XO$])jO$_)jO$f/YO~O!]VO!l$xO#j^O!Q*OO'y*PO(y$}O(z%POP#miR#mi!S#mi!l#mi!p#mi#n#mi#o#mi#p#mi#q#mi(a#mi~P&,QO#S$dOP(`XR(`X[(`Xj(`Xn(`Xr(`X!Q(`X!S(`X!l(`X!p(`X#R(`X#n(`X#o(`X#p(`X#q(`X#r(`X#s(`X#t(`X#u(`X#v(`X#x(`X#z(`X#{(`X$O(`X'y(`X(a(`X(r(`X(y(`X(z(`X!](`X!^(`X~O$O$Pi!]$Pi!^$Pi~P#BwO$O!ri!^!ri~P$+oOg']a!]']a~P!1WO!^7nO~O!]'da!^'da~P#BwO!Y7oO~P#/sO!g#vO(r'pO!]'ea!k'ea~O!]/pO!k)Oi~O!]/pO!g#vO!k)Oi~Og$|q!]$|q#`$|q$O$|q~P!1WO!Y'ga!]'ga~P#/sO!g7vO~O!]/yO!Y)Pi~P#/sO!]/yO!Y)Pi~O!Y7yO~Oh%VOr8OO!l%eO(r'pO~Oj8QO!g#vO~Or8TO!g#vO(r'pO~O!Q*OO'y*PO(z%POn'ja(y'ja!]'ja#`'ja~Og'ja$O'ja~P&5RO!Q*OO'y*POn'la(y'la(z'la!]'la#`'la~Og'la$O'la~P&5tOg(_q!](_q~P!1WO#`8VOg(_q!](_q~P!1WO!Y8WO~Og%Oq!]%Oq#`%Oq$O%Oq~P!1WOa$oy!]$oy'z$oy'w$oy!Y$oy!k$oyv$oy!_$oy%i$oy!g$oy~P!:tO!g6rO~O!]5[O!_)Qa~O!_'`OP$TaR$Ta[$Taj$Tar$Ta!Q$Ta!S$Ta!]$Ta!l$Ta!p$Ta#R$Ta#n$Ta#o$Ta#p$Ta#q$Ta#r$Ta#s$Ta#t$Ta#u$Ta#v$Ta#x$Ta#z$Ta#{$Ta(a$Ta(r$Ta(y$Ta(z$Ta~O%i7WO~P&8fO%^8[Oa%[i!_%[i'z%[i!]%[i~Oa#cy!]#cy'z#cy'w#cy!Y#cy!k#cyv#cy!_#cy%i#cy!g#cy~P!:tO[8^O~Ob8`O(T+qO(VTO(YUO~O!]1TO!^)Xi~O`8dO~O(e(|O!]'pX!^'pX~O!]5uO!^)Ua~O!^8nO~P%;eO(o!sO~P$&YO#[8oO~O!_1oO~O!_1oO%i8qO~On8tO!_1oO%i8qO~O[8yO!]'sa!^'sa~O!]1zO!^)Vi~O!k8}O~O!k9OO~O!k9RO~O!k9RO~P%[Oa9TO~O!g9UO~O!k9VO~O!](wi!^(wi~P#BwOa%nO#`9_O'z%nO~O!](ty!k(tya(ty'z(ty~P!:tO!](jO!k(sy~O%i9bO~P&8fO!_'`O%i9bO~O#k$|qP$|qR$|q[$|qa$|qj$|qr$|q!S$|q!]$|q!l$|q!p$|q#R$|q#n$|q#o$|q#p$|q#q$|q#r$|q#s$|q#t$|q#u$|q#v$|q#x$|q#z$|q#{$|q'z$|q(a$|q(r$|q!k$|q!Y$|q'w$|q#`$|qv$|q!_$|q%i$|q!g$|q~P#/sO#k'jaP'jaR'ja['jaa'jaj'jar'ja!S'ja!l'ja!p'ja#R'ja#n'ja#o'ja#p'ja#q'ja#r'ja#s'ja#t'ja#u'ja#v'ja#x'ja#z'ja#{'ja'z'ja(a'ja(r'ja!k'ja!Y'ja'w'jav'ja!_'ja%i'ja!g'ja~P&5RO#k'laP'laR'la['laa'laj'lar'la!S'la!l'la!p'la#R'la#n'la#o'la#p'la#q'la#r'la#s'la#t'la#u'la#v'la#x'la#z'la#{'la'z'la(a'la(r'la!k'la!Y'la'w'lav'la!_'la%i'la!g'la~P&5tO#k%OqP%OqR%Oq[%Oqa%Oqj%Oqr%Oq!S%Oq!]%Oq!l%Oq!p%Oq#R%Oq#n%Oq#o%Oq#p%Oq#q%Oq#r%Oq#s%Oq#t%Oq#u%Oq#v%Oq#x%Oq#z%Oq#{%Oq'z%Oq(a%Oq(r%Oq!k%Oq!Y%Oq'w%Oq#`%Oqv%Oq!_%Oq%i%Oq!g%Oq~P#/sO!]'Yi!k'Yi~P!:tO$O#cq!]#cq!^#cq~P#BwO(y$}OP%aaR%aa[%aaj%aar%aa!S%aa!l%aa!p%aa#R%aa#n%aa#o%aa#p%aa#q%aa#r%aa#s%aa#t%aa#u%aa#v%aa#x%aa#z%aa#{%aa$O%aa(a%aa(r%aa!]%aa!^%aa~On%aa!Q%aa'y%aa(z%aa~P&IyO(z%POP%caR%ca[%caj%car%ca!S%ca!l%ca!p%ca#R%ca#n%ca#o%ca#p%ca#q%ca#r%ca#s%ca#t%ca#u%ca#v%ca#x%ca#z%ca#{%ca$O%ca(a%ca(r%ca!]%ca!^%ca~On%ca!Q%ca'y%ca(y%ca~P&LQOn>^O!Q*OO'y*PO(z%PO~P&IyOn>^O!Q*OO'y*PO(y$}O~P&LQOR0kO!Q0kO!S0lO#S$dOP}a[}aj}an}ar}a!l}a!p}a#R}a#n}a#o}a#p}a#q}a#r}a#s}a#t}a#u}a#v}a#x}a#z}a#{}a$O}a'y}a(a}a(r}a(y}a(z}a!]}a!^}a~O!Q*OO'y*POP$saR$sa[$saj$san$sar$sa!S$sa!l$sa!p$sa#R$sa#n$sa#o$sa#p$sa#q$sa#r$sa#s$sa#t$sa#u$sa#v$sa#x$sa#z$sa#{$sa$O$sa(a$sa(r$sa(y$sa(z$sa!]$sa!^$sa~O!Q*OO'y*POP$uaR$ua[$uaj$uan$uar$ua!S$ua!l$ua!p$ua#R$ua#n$ua#o$ua#p$ua#q$ua#r$ua#s$ua#t$ua#u$ua#v$ua#x$ua#z$ua#{$ua$O$ua(a$ua(r$ua(y$ua(z$ua!]$ua!^$ua~On>^O!Q*OO'y*PO(y$}O(z%PO~OP%TaR%Ta[%Taj%Tar%Ta!S%Ta!l%Ta!p%Ta#R%Ta#n%Ta#o%Ta#p%Ta#q%Ta#r%Ta#s%Ta#t%Ta#u%Ta#v%Ta#x%Ta#z%Ta#{%Ta$O%Ta(a%Ta(r%Ta!]%Ta!^%Ta~P''VO$O$mq!]$mq!^$mq~P#BwO$O$oq!]$oq!^$oq~P#BwO!^9oO~O$O9pO~P!1WO!g#vO!]'ei!k'ei~O!g#vO(r'pO!]'ei!k'ei~O!]/pO!k)Oq~O!Y'gi!]'gi~P#/sO!]/yO!Y)Pq~Or9wO!g#vO(r'pO~O[9yO!Y9xO~P#/sO!Y9xO~Oj:PO!g#vO~Og(_y!](_y~P!1WO!]'na!_'na~P#/sOa%[q!_%[q'z%[q!]%[q~P#/sO[:UO~O!]1TO!^)Xq~O`:YO~O#`:ZO!]'pa!^'pa~O!]5uO!^)Ui~P#BwO!S:]O~O!_1oO%i:`O~O(VTO(YUO(e:eO~O!]1zO!^)Vq~O!k:hO~O!k:iO~O!k:jO~O!k:jO~P%[O#`:mO!]#hy!^#hy~O!]#hy!^#hy~P#BwO%i:rO~P&8fO!_'`O%i:rO~O$O#|y!]#|y!^#|y~P#BwOP$|iR$|i[$|ij$|ir$|i!S$|i!l$|i!p$|i#R$|i#n$|i#o$|i#p$|i#q$|i#r$|i#s$|i#t$|i#u$|i#v$|i#x$|i#z$|i#{$|i$O$|i(a$|i(r$|i!]$|i!^$|i~P''VO!Q*OO'y*PO(z%POP'iaR'ia['iaj'ian'iar'ia!S'ia!l'ia!p'ia#R'ia#n'ia#o'ia#p'ia#q'ia#r'ia#s'ia#t'ia#u'ia#v'ia#x'ia#z'ia#{'ia$O'ia(a'ia(r'ia(y'ia!]'ia!^'ia~O!Q*OO'y*POP'kaR'ka['kaj'kan'kar'ka!S'ka!l'ka!p'ka#R'ka#n'ka#o'ka#p'ka#q'ka#r'ka#s'ka#t'ka#u'ka#v'ka#x'ka#z'ka#{'ka$O'ka(a'ka(r'ka(y'ka(z'ka!]'ka!^'ka~O(y$}OP%aiR%ai[%aij%ain%air%ai!Q%ai!S%ai!l%ai!p%ai#R%ai#n%ai#o%ai#p%ai#q%ai#r%ai#s%ai#t%ai#u%ai#v%ai#x%ai#z%ai#{%ai$O%ai'y%ai(a%ai(r%ai(z%ai!]%ai!^%ai~O(z%POP%ciR%ci[%cij%cin%cir%ci!Q%ci!S%ci!l%ci!p%ci#R%ci#n%ci#o%ci#p%ci#q%ci#r%ci#s%ci#t%ci#u%ci#v%ci#x%ci#z%ci#{%ci$O%ci'y%ci(a%ci(r%ci(y%ci!]%ci!^%ci~O$O$oy!]$oy!^$oy~P#BwO$O#cy!]#cy!^#cy~P#BwO!g#vO!]'eq!k'eq~O!]/pO!k)Oy~O!Y'gq!]'gq~P#/sOr:|O!g#vO(r'pO~O[;QO!Y;PO~P#/sO!Y;PO~Og(_!R!](_!R~P!1WOa%[y!_%[y'z%[y!]%[y~P#/sO!]1TO!^)Xy~O!]5uO!^)Uq~O(T;XO~O!_1oO%i;[O~O!k;_O~O%i;dO~P&8fOP$|qR$|q[$|qj$|qr$|q!S$|q!l$|q!p$|q#R$|q#n$|q#o$|q#p$|q#q$|q#r$|q#s$|q#t$|q#u$|q#v$|q#x$|q#z$|q#{$|q$O$|q(a$|q(r$|q!]$|q!^$|q~P''VO!Q*OO'y*PO(z%POP'jaR'ja['jaj'jan'jar'ja!S'ja!l'ja!p'ja#R'ja#n'ja#o'ja#p'ja#q'ja#r'ja#s'ja#t'ja#u'ja#v'ja#x'ja#z'ja#{'ja$O'ja(a'ja(r'ja(y'ja!]'ja!^'ja~O!Q*OO'y*POP'laR'la['laj'lan'lar'la!S'la!l'la!p'la#R'la#n'la#o'la#p'la#q'la#r'la#s'la#t'la#u'la#v'la#x'la#z'la#{'la$O'la(a'la(r'la(y'la(z'la!]'la!^'la~OP%OqR%Oq[%Oqj%Oqr%Oq!S%Oq!l%Oq!p%Oq#R%Oq#n%Oq#o%Oq#p%Oq#q%Oq#r%Oq#s%Oq#t%Oq#u%Oq#v%Oq#x%Oq#z%Oq#{%Oq$O%Oq(a%Oq(r%Oq!]%Oq!^%Oq~P''VOg%e!Z!]%e!Z#`%e!Z$O%e!Z~P!1WO!Y;hO~P#/sOr;iO!g#vO(r'pO~O[;kO!Y;hO~P#/sO!]'pq!^'pq~P#BwO!]#h!Z!^#h!Z~P#BwO#k%e!ZP%e!ZR%e!Z[%e!Za%e!Zj%e!Zr%e!Z!S%e!Z!]%e!Z!l%e!Z!p%e!Z#R%e!Z#n%e!Z#o%e!Z#p%e!Z#q%e!Z#r%e!Z#s%e!Z#t%e!Z#u%e!Z#v%e!Z#x%e!Z#z%e!Z#{%e!Z'z%e!Z(a%e!Z(r%e!Z!k%e!Z!Y%e!Z'w%e!Z#`%e!Zv%e!Z!_%e!Z%i%e!Z!g%e!Z~P#/sOr;tO!g#vO(r'pO~O!Y;uO~P#/sOr;|O!g#vO(r'pO~O!Y;}O~P#/sOP%e!ZR%e!Z[%e!Zj%e!Zr%e!Z!S%e!Z!l%e!Z!p%e!Z#R%e!Z#n%e!Z#o%e!Z#p%e!Z#q%e!Z#r%e!Z#s%e!Z#t%e!Z#u%e!Z#v%e!Z#x%e!Z#z%e!Z#{%e!Z$O%e!Z(a%e!Z(r%e!Z!]%e!Z!^%e!Z~P''VOrROe!iOpkOrPO(T)]O(VTO(YUO(aVO(o[O~O!]WO!l$xO#jgPPP!>oI[PPPPPPPPP!BOP!C]PPI[!DnPI[PI[I[I[I[I[PI[!FQP!I[P!LbP!Lf!Lp!Lt!LtP!IXP!Lx!LxP#!OP#!SI[PI[#!Y#%_CjA^PA^PA^A^P#&lA^A^#)OA^#+vA^#.SA^A^#.r#1W#1W#1]#1f#1W#1qPP#1WPA^#2ZA^#6YA^A^6mPPP#:_PPP#:x#:xP#:xP#;`#:xPP#;fP#;]P#;]#;y#;]#P#>V#>]#>k#>q#>{#?R#?]#?c#?s#?y#@k#@}#AT#AZ#Ai#BO#Cs#DR#DY#Et#FS#Gt#HS#HY#H`#Hf#Hp#Hv#H|#IW#Ij#IpPPPPPPPPPPP#IvPPPPPPP#Jk#Mx$ b$ i$ qPPP$']P$'f$*_$0x$0{$1O$1}$2Q$2X$2aP$2g$2jP$3W$3[$4S$5b$5g$5}PP$6S$6Y$6^$6a$6e$6i$7e$7|$8e$8i$8l$8o$8y$8|$9Q$9UR!|RoqOXst!Z#d%m&r&t&u&w,s,x2[2_Y!vQ'`-e1o5{Q%tvQ%|yQ&T|Q&j!VS'W!e-]Q'f!iS'l!r!yU*k$|*Z*oQ+o%}S+|&V&WQ,d&dQ-c'_Q-m'gQ-u'mQ0[*qQ1b,OQ1y,eR<{SU+P%]S!S!nQ!r!v!y!z$|'W'_'`'l'm'n*k*o*q*r-]-c-e-u0[0_1o5{5}%[$ti#v$b$c$d$x${%O%Q%^%_%c)y*R*T*V*Y*a*g*w*x+f+i,S,V.f/P/d/m/x/y/{0`0b0i0j0o1f1i1q3c4^4_4j4o5Q5[5_6S7W7v8Q8V8[8q9b9p9y:P:`:r;Q;[;d;kP>X>Y>]>^Q&X|Q'U!eS'[%i-`Q+t&PQ,P&WQ,f&gQ0n+SQ1Y+uQ1_+{Q2Q,jQ2R,kQ5f1TQ5o1aQ6[1zQ6_1|Q6`2PQ8`5gQ8c5lQ8|6bQ:X8dQ:f8yQ;V:YR<}*ZrnOXst!V!Z#d%m&i&r&t&u&w,s,x2[2_R,h&k&z^OPXYstuvwz!Z!`!g!j!o#S#d#o#u#x#{$O$P$Q$R$S$T$U$V$W$X$Z$_$a$e$n%m%t&R&k&n&o&r&t&u&w&{'T'b'r(V(](d(x(z)O)s)}*i+X+]+g,p,s,x-U-X-i-q.P.V.g.t.{/V/n0]0l0r1S1r2S2T2V2X2[2_2a2p3Q3W3d3l4T4z5w6T6e6f6i6s6|7[8t9T9_:Z:mR>S[#]WZ#W#Z'X(T!b%jm#h#i#l$x%e%h(^(h(i(j*Y*^*b+Z+[+^,o-V.T.Z.[.]._/m/p2d3[3]4a6r7TQ%wxQ%{yW&Q|&V&W,OQ&_!TQ'c!hQ'e!iQ(q#sS+n%|%}Q+r&PQ,_&bQ,c&dS-l'f'gQ.i(rQ1R+oQ1X+uQ1Z+vQ1^+zQ1t,`S1x,d,eQ2|-mQ5e1TQ5i1WQ5n1`Q6Z1yQ8_5gQ8b5kQ8f5pQ:T8^R;T:U!U$zi$d%O%Q%^%_%c*R*T*a*w*x/P/x0`0b0i0j0o4_5Q8V9p>P>X>Y!^%yy!i!u%{%|%}'V'e'f'g'k'u*j+n+o-Y-l-m-t0R0U1R2u2|3T4r4s4v7}9{Q+h%wQ,T&[Q,W&]Q,b&dQ.h(qQ1s,_U1w,c,d,eQ3e.iQ6U1tS6Y1x1yQ8x6Z#f>T#v$b$c$x${)y*V*Y*g+f+i,S,V.f/d/m/y/{1f1i1q3c4^4j4o5[5_6S7W7v8Q8[8q9b9y:P:`:r;Q;[;d;k]>^o>UPS&[!Q&iQ&]!RQ&^!SU*}%[%d=sR,R&Y%]%Si#v$b$c$d$x${%O%Q%^%_%c)y*R*T*V*Y*a*g*w*x+f+i,S,V.f/P/d/m/x/y/{0`0b0i0j0o1f1i1q3c4^4_4j4o5Q5[5_6S7W7v8Q8V8[8q9b9p9y:P:`:r;Q;[;d;kP>X>Y>]>^T)z$u){V+P%]S$i$^c#Y#e%q%s%u(S(Y(t(y)R)S)T)U)V)W)X)Y)Z)[)^)`)b)g)q+d+x-Z-x-}.S.U.s.v.z.|.}/O/b0p2k2n3O3V3k3p3q3r3s3t3u3v3w3x3y3z3{3|4P4Q4X5X5c6u6{7Q7a7b7k7l8k9X9]9g9m9n:o;W;`SQ'Y!eR2q-]!W!nQ!e!r!v!y!z$|'W'_'`'l'm'n*Z*k*o*q*r-]-c-e-u0[0_1o5{5}R1l,ZnqOXst!Z#d%m&r&t&u&w,s,x2[2_Q&y!^Q'v!xS(s#u<^Q+l%zQ,]&_Q,^&aQ-j'dQ-w'oS.r(x=PS0q+X=ZQ1P+mQ1n,[Q2c,zQ2e,{Q2m-WQ2z-kQ2}-oS5Y0r=eQ5a1QS5d1S=fQ6t2oQ6x2{Q6}3SQ8]5bQ9Y6vQ9Z6yQ9^7OR:l9V$d$]c#Y#e%s%u(S(Y(t(y)R)S)T)U)V)W)X)Y)Z)[)^)`)b)g)q+d+x-Z-x-}.S.U.s.v.z.}/O/b0p2k2n3O3V3k3p3q3r3s3t3u3v3w3x3y3z3{3|4P4Q4X5X5c6u6{7Q7a7b7k7l8k9X9]9g9m9n:o;W;`SS#q]SU$fd)_,mS(p#p'iU*v%R(w4OU0m+O.n7gQ5^0xQ7V3`Q9d7YR:s9em!tQ!r!v!y!z'`'l'm'n-e-u1o5{5}Q't!uS(f#g2US-s'k'wQ/s*]Q0R*jQ3U-vQ4f/tQ4r0TQ4s0UQ4x0^Q7r4`S7}4t4vS8R4y4{Q9r7sQ9v7yQ9{8OQ:Q8TS:{9w9xS;g:|;PS;s;h;iS;{;t;uSSR=o>R%^bOPWXYZstuvw!Z!`!g!o#S#W#Z#d#o#u#x#{$O$P$Q$R$S$T$U$V$W$X$_$a$e%m%t&R&k&n&o&r&t&u&w&{'T'b'r(T(V(](d(x(z)O)}*i+X+]+g,p,s,x-i-q.P.V.g.t.{/n0]0l0r1S1r2S2T2V2X2[2_2a3Q3W3d3l4z6T6e6f6i6|7[8t9T9_Q%fj!^%xy!i!u%{%|%}'V'e'f'g'k'u*j+n+o-Y-l-m-t0R0U1R2u2|3T4r4s4v7}9{S&Oz!jQ+k%yQ,a&dW1v,b,c,d,eU6X1w1x1yS8w6Y6ZQ:d8x!r=j$Z$n'X)s-U-X/V2p4T5w6s:Z:mSQ=t>QR=u>R%QeOPXYstuvw!Z!`!g!o#S#d#o#u#x#{$O$P$Q$R$S$T$U$V$W$X$_$a$e%m%t&R&k&n&r&t&u&w&{'T'b'r(V(](d(x(z)O)}*i+X+]+g,p,s,x-i-q.P.V.g.t.{/n0]0l0r1S1r2S2T2V2X2[2_2a3Q3W3d3l4z6T6e6f6i6|7[8t9T9_Y#bWZ#W#Z(T!b%jm#h#i#l$x%e%h(^(h(i(j*Y*^*b+Z+[+^,o-V.T.Z.[.]._/m/p2d3[3]4a6r7TQ,n&o!p=k$Z$n)s-U-X/V2p4T5w6s:Z:mSR=n'XU']!e%i*ZR2s-`%SdOPWXYZstuvw!Z!`!g!o#S#W#Z#d#o#u#x#{$O$P$Q$R$S$T$U$V$W$X$_$a$e%m%t&R&k&n&r&t&u&w&{'T'b'r(T(V(](d(x(z)O)}*i+X+],p,s,x-i-q.P.V.t.{/n0]0l0r1S1r2S2T2V2X2[2_2a3Q3W3l4z6T6e6f6i6|8t9T9_!r)_$Z$n'X)s-U-X/V2p4T5w6s:Z:mSQ,m&oQ0x+gQ3`.gQ7Y3dR9e7[!b$Tc#Y%q(S(Y(t(y)Z)[)`)g+x-x-}.S.U.s.v/b0p3O3V3k3{5X5c6{7Q7a9]:oS)^)q-Z.|2k2n3p4P4X6u7b7k7l8k9X9g9m9n;W;`=vQ>X>ZR>Y>['QkOPWXYZstuvw!Z!`!g!o#S#W#Z#d#o#u#x#{$O$P$Q$R$S$T$U$V$W$X$Z$_$a$e$n%m%t&R&k&n&o&r&t&u&w&{'T'X'b'r(T(V(](d(x(z)O)s)}*i+X+]+g,p,s,x-U-X-i-q.P.V.g.t.{/V/n0]0l0r1S1r2S2T2V2X2[2_2a2p3Q3W3d3l4T4z5w6T6e6f6i6s6|7[8t9T9_:Z:mSS$oh$pR4U/U'XgOPWXYZhstuvw!Z!`!g!o#S#W#Z#d#o#u#x#{$O$P$Q$R$S$T$U$V$W$X$Z$_$a$e$n$p%m%t&R&k&n&o&r&t&u&w&{'T'X'b'r(T(V(](d(x(z)O)s)}*i+X+]+g,p,s,x-U-X-i-q.P.V.g.t.{/U/V/n0]0l0r1S1r2S2T2V2X2[2_2a2p3Q3W3d3l4T4z5w6T6e6f6i6s6|7[8t9T9_:Z:mST$kf$qQ$ifS)j$l)nR)v$qT$jf$qT)l$l)n'XhOPWXYZhstuvw!Z!`!g!o#S#W#Z#d#o#u#x#{$O$P$Q$R$S$T$U$V$W$X$Z$_$a$e$n$p%m%t&R&k&n&o&r&t&u&w&{'T'X'b'r(T(V(](d(x(z)O)s)}*i+X+]+g,p,s,x-U-X-i-q.P.V.g.t.{/U/V/n0]0l0r1S1r2S2T2V2X2[2_2a2p3Q3W3d3l4T4z5w6T6e6f6i6s6|7[8t9T9_:Z:mST$oh$pQ$rhR)u$p%^jOPWXYZstuvw!Z!`!g!o#S#W#Z#d#o#u#x#{$O$P$Q$R$S$T$U$V$W$X$_$a$e%m%t&R&k&n&o&r&t&u&w&{'T'b'r(T(V(](d(x(z)O)}*i+X+]+g,p,s,x-i-q.P.V.g.t.{/n0]0l0r1S1r2S2T2V2X2[2_2a3Q3W3d3l4z6T6e6f6i6|7[8t9T9_!s>Q$Z$n'X)s-U-X/V2p4T5w6s:Z:mS#glOPXZst!Z!`!o#S#d#o#{$n%m&k&n&o&r&t&u&w&{'T'b)O)s*i+]+g,p,s,x-i.g/V/n0]0l1r2S2T2V2X2[2_2a3d4T4z6T6e6f6i7[8t9T!U%Ri$d%O%Q%^%_%c*R*T*a*w*x/P/x0`0b0i0j0o4_5Q8V9p>P>X>Y#f(w#v$b$c$x${)y*V*Y*g+f+i,S,V.f/d/m/y/{1f1i1q3c4^4j4o5[5_6S7W7v8Q8[8q9b9y:P:`:r;Q;[;d;k]>^Q+T%aQ/c*Oo4OP>X>YQ*c$zU*l$|*Z*oQ+U%bQ0W*m#f=q#v$b$c$x${)y*V*Y*g+f+i,S,V.f/d/m/y/{1f1i1q3c4^4j4o5[5_6S7W7v8Q8[8q9b9y:P:`:r;Q;[;d;k]>^n=rTQ=x>UQ=y>VR=z>W!U%Ri$d%O%Q%^%_%c*R*T*a*w*x/P/x0`0b0i0j0o4_5Q8V9p>P>X>Y#f(w#v$b$c$x${)y*V*Y*g+f+i,S,V.f/d/m/y/{1f1i1q3c4^4j4o5[5_6S7W7v8Q8[8q9b9y:P:`:r;Q;[;d;k]>^o4OP>X>Y>]>^Q,U&]Q1h,WQ5s1gR8h5tV*n$|*Z*oU*n$|*Z*oT5z1o5{S0P*i/nQ4w0]T8S4z:]Q+j%xQ0V*lQ1O+kQ1u,aQ6W1vQ8v6XQ:c8wR;^:d!U%Oi$d%O%Q%^%_%c*R*T*a*w*x/P/x0`0b0i0j0o4_5Q8V9p>P>X>Yx*R$v)e*S*u+V/v0d0e4R4g5R5S5W7p8U:R:x=p=}>OS0`*t0a#f]>^nZ>[`=T3}7c7f7j9h:t:w;yS=_.l3iT=`7e9k!U%Qi$d%O%Q%^%_%c*R*T*a*w*x/P/x0`0b0i0j0o4_5Q8V9p>P>X>Y|*T$v)e*U*t+V/g/v0d0e4R4g4|5R5S5W7p8U:R:x=p=}>OS0b*u0c#f]>^nZ>[d=V3}7d7e7j9h9i:t:u:w;yS=a.m3jT=b7f9lrnOXst!V!Z#d%m&i&r&t&u&w,s,x2[2_Q&f!UR,p&ornOXst!V!Z#d%m&i&r&t&u&w,s,x2[2_R&f!UQ,Y&^R1d,RsnOXst!V!Z#d%m&i&r&t&u&w,s,x2[2_Q1p,_S6R1s1tU8p6P6Q6US:_8r8sS;Y:^:aQ;m;ZR;w;nQ&m!VR,i&iR6_1|R:f8yW&Q|&V&W,OR1Z+vQ&r!WR,s&sR,y&xT2],x2_R,}&yQ,|&yR2f,}Q'y!{R-y'ySsOtQ#dXT%ps#dQ#OTR'{#OQ#RUR'}#RQ){$uR/`){Q#UVR(Q#UQ#XWU(W#X(X.QQ(X#YR.Q(YQ-^'YR2r-^Q.u(yS3m.u3nR3n.vQ-e'`R2v-eY!rQ'`-e1o5{R'j!rQ/Q)eR4S/QU#_W%h*YU(_#_(`.RQ(`#`R.R(ZQ-a']R2t-at`OXst!V!Z#d%m&i&k&r&t&u&w,s,x2[2_S#hZ%eU#r`#h.[R.[(jQ(k#jQ.X(gW.a(k.X3X7RQ3X.YR7R3YQ)n$lR/W)nQ$phR)t$pQ$`cU)a$`-|O>Z>[Q/z*eU4k/z4m7xQ4m/|R7x4lS*o$|*ZR0Y*ox*S$v)e*t*u+V/v0d0e4R4g5R5S5W7p8U:R:x=p=}>O!d.j(u)c*[*e.l.m.q/_/k/|0v1e3h4[4h4l5r7]7`7w7z8X8Z9t9|:S:};R;e;j;v>Z>[U/h*S.j7ca7c3}7e7f7j9h:t:w;yQ0a*tQ3i.lU4}0a3i9kR9k7e|*U$v)e*t*u+V/g/v0d0e4R4g4|5R5S5W7p8U:R:x=p=}>O!h.k(u)c*[*e.l.m.q/_/k/|0v1e3f3h4[4h4l5r7]7^7`7w7z8X8Z9t9|:S:};R;e;j;v>Z>[U/j*U.k7de7d3}7e7f7j9h9i:t:u:w;yQ0c*uQ3j.mU5P0c3j9lR9l7fQ*z%UR0g*zQ5]0vR8Y5]Q+_%kR0u+_Q5v1jS8j5v:[R:[8kQ,[&_R1m,[Q5{1oR8m5{Q1{,fS6]1{8zR8z6_Q1U+rW5h1U5j8a:VQ5j1XQ8a5iR:V8bQ+w&QR1[+wQ2_,xR6m2_YrOXst#dQ&v!ZQ+a%mQ,r&rQ,t&tQ,u&uQ,w&wQ2Y,sS2],x2_R6l2[Q%opQ&z!_Q&}!aQ'P!bQ'R!cQ'q!uQ+`%lQ+l%zQ,Q&XQ,h&mQ-P&|W-p'k's't'wQ-w'oQ0X*nQ1P+mQ1c,PS2O,i,lQ2g-OQ2h-RQ2i-SQ2}-oW3P-r-s-v-xQ5a1QQ5m1_Q5q1eQ6V1uQ6a2QQ6k2ZU6z3O3R3UQ6}3SQ8]5bQ8e5oQ8g5rQ8l5zQ8u6WQ8{6`S9[6{7PQ9^7OQ:W8cQ:b8vQ:g8|Q:n9]Q;U:XQ;]:cQ;a:oQ;l;VR;o;^Q%zyQ'd!iQ'o!uU+m%{%|%}Q-W'VU-k'e'f'gS-o'k'uQ0Q*jS1Q+n+oQ2o-YS2{-l-mQ3S-tS4p0R0UQ5b1RQ6v2uQ6y2|Q7O3TU7{4r4s4vQ9z7}R;O9{S$wi>PR*{%VU%Ui%V>PR0f*yQ$viS(u#v+iS)c$b$cQ)e$dQ*[$xS*e${*YQ*t%OQ*u%QQ+Q%^Q+R%_Q+V%cQ.lPQ=}>XQ>O>YQ>Z>]R>[>^Q+O%]Q.nSR#[WR'Z!el!tQ!r!v!y!z'`'l'm'n-e-u1o5{5}S'V!e-]U*j$|*Z*oS-Y'W'_S0U*k*qQ0^*rQ2u-cQ4v0[R4{0_R({#xQ!fQT-d'`-e]!qQ!r'`-e1o5{Q#p]R'i < TypeParamList in out const TypeDefinition extends ThisType this LiteralType ArithOp Number BooleanLiteral TemplateType InterpolationEnd Interpolation InterpolationStart NullType null VoidType void TypeofType typeof MemberExpression . PropertyName [ TemplateString Escape Interpolation super RegExp ] ArrayExpression Spread , } { ObjectExpression Property async get set PropertyDefinition Block : NewTarget new NewExpression ) ( ArgList UnaryExpression delete LogicOp BitOp YieldExpression yield AwaitExpression await ParenthesizedExpression ClassExpression class ClassBody MethodDeclaration Decorator @ MemberExpression PrivatePropertyName CallExpression TypeArgList CompareOp < declare Privacy static abstract override PrivatePropertyDefinition PropertyDeclaration readonly accessor Optional TypeAnnotation Equals StaticBlock FunctionExpression ArrowFunction ParamList ParamList ArrayPattern ObjectPattern PatternProperty Privacy readonly Arrow MemberExpression BinaryExpression ArithOp ArithOp ArithOp ArithOp BitOp CompareOp instanceof satisfies CompareOp BitOp BitOp BitOp LogicOp LogicOp ConditionalExpression LogicOp LogicOp AssignmentExpression UpdateOp PostfixExpression CallExpression InstantiationExpression TaggedTemplateExpression DynamicImport import ImportMeta JSXElement JSXSelfCloseEndTag JSXSelfClosingTag JSXIdentifier JSXBuiltin JSXIdentifier JSXNamespacedName JSXMemberExpression JSXSpreadAttribute JSXAttribute JSXAttributeValue JSXEscape JSXEndTag JSXOpenTag JSXFragmentTag JSXText JSXEscape JSXStartCloseTag JSXCloseTag PrefixCast < ArrowFunction TypeParamList SequenceExpression InstantiationExpression KeyofType keyof UniqueType unique ImportType InferredType infer TypeName ParenthesizedType FunctionSignature ParamList NewSignature IndexedType TupleType Label ArrayType ReadonlyType ObjectType MethodType PropertyType IndexSignature PropertyDefinition CallSignature TypePredicate asserts is NewSignature new UnionType LogicOp IntersectionType LogicOp ConditionalType ParameterizedType ClassDeclaration abstract implements type VariableDeclaration let var using TypeAliasDeclaration InterfaceDeclaration interface EnumDeclaration enum EnumBody NamespaceDeclaration namespace module AmbientDeclaration declare GlobalDeclaration global ClassDeclaration ClassBody AmbientFunctionDeclaration ExportGroup VariableName VariableName ImportDeclaration defer ImportGroup ForStatement for ForSpec ForInSpec ForOfSpec of WhileStatement while WithStatement with DoStatement do IfStatement if else SwitchStatement switch SwitchBody CaseLabel case DefaultLabel TryStatement try CatchClause catch FinallyClause finally ReturnStatement return ThrowStatement throw BreakStatement break ContinueStatement continue DebuggerStatement debugger LabeledStatement ExpressionStatement SingleExpression SingleClassItem",maxTerm:380,context:ete,nodeProps:[["isolate",-8,5,6,14,37,39,51,53,55,""],["group",-26,9,17,19,68,207,211,215,216,218,221,224,234,237,243,245,247,249,252,258,264,266,268,270,272,274,275,"Statement",-34,13,14,32,35,36,42,51,54,55,57,62,70,72,76,80,82,84,85,110,111,120,121,136,139,141,142,143,144,145,147,148,167,169,171,"Expression",-23,31,33,37,41,43,45,173,175,177,178,180,181,182,184,185,186,188,189,190,201,203,205,206,"Type",-3,88,103,109,"ClassItem"],["openedBy",23,"<",38,"InterpolationStart",56,"[",60,"{",73,"(",160,"JSXStartCloseTag"],["closedBy",-2,24,168,">",40,"InterpolationEnd",50,"]",61,"}",74,")",165,"JSXEndTag"]],propSources:[ote],skippedNodes:[0,5,6,278],repeatNodeCount:37,tokenData:"$Fq07[R!bOX%ZXY+gYZ-yZ[+g[]%Z]^.c^p%Zpq+gqr/mrs3cst:_tuEruvJSvwLkwx! Yxy!'iyz!(sz{!)}{|!,q|}!.O}!O!,q!O!P!/Y!P!Q!9j!Q!R#:O!R![#<_![!]#I_!]!^#Jk!^!_#Ku!_!`$![!`!a$$v!a!b$*T!b!c$,r!c!}Er!}#O$-|#O#P$/W#P#Q$4o#Q#R$5y#R#SEr#S#T$7W#T#o$8b#o#p$x#r#s$@U#s$f%Z$f$g+g$g#BYEr#BY#BZ$A`#BZ$ISEr$IS$I_$A`$I_$I|Er$I|$I}$Dk$I}$JO$Dk$JO$JTEr$JT$JU$A`$JU$KVEr$KV$KW$A`$KW&FUEr&FU&FV$A`&FV;'SEr;'S;=`I|<%l?HTEr?HT?HU$A`?HUOEr(n%d_$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z&j&hT$i&jO!^&c!_#o&c#p;'S&c;'S;=`&w<%lO&c&j&zP;=`<%l&c'|'U]$i&j(Z!bOY&}YZ&cZw&}wx&cx!^&}!^!_'}!_#O&}#O#P&c#P#o&}#o#p'}#p;'S&};'S;=`(l<%lO&}!b(SU(Z!bOY'}Zw'}x#O'}#P;'S'};'S;=`(f<%lO'}!b(iP;=`<%l'}'|(oP;=`<%l&}'[(y]$i&j(WpOY(rYZ&cZr(rrs&cs!^(r!^!_)r!_#O(r#O#P&c#P#o(r#o#p)r#p;'S(r;'S;=`*a<%lO(rp)wU(WpOY)rZr)rs#O)r#P;'S)r;'S;=`*Z<%lO)rp*^P;=`<%l)r'[*dP;=`<%l(r#S*nX(Wp(Z!bOY*gZr*grs'}sw*gwx)rx#O*g#P;'S*g;'S;=`+Z<%lO*g#S+^P;=`<%l*g(n+dP;=`<%l%Z07[+rq$i&j(Wp(Z!b'|0/lOX%ZXY+gYZ&cZ[+g[p%Zpq+gqr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p$f%Z$f$g+g$g#BY%Z#BY#BZ+g#BZ$IS%Z$IS$I_+g$I_$JT%Z$JT$JU+g$JU$KV%Z$KV$KW+g$KW&FU%Z&FU&FV+g&FV;'S%Z;'S;=`+a<%l?HT%Z?HT?HU+g?HUO%Z07[.ST(X#S$i&j'}0/lO!^&c!_#o&c#p;'S&c;'S;=`&w<%lO&c07[.n_$i&j(Wp(Z!b'}0/lOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z)3p/x`$i&j!p),Q(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`0z!`#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z(KW1V`#v(Ch$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`2X!`#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z(KW2d_#v(Ch$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z'At3l_(V':f$i&j(Z!bOY4kYZ5qZr4krs7nsw4kwx5qx!^4k!^!_8p!_#O4k#O#P5q#P#o4k#o#p8p#p;'S4k;'S;=`:X<%lO4k(^4r_$i&j(Z!bOY4kYZ5qZr4krs7nsw4kwx5qx!^4k!^!_8p!_#O4k#O#P5q#P#o4k#o#p8p#p;'S4k;'S;=`:X<%lO4k&z5vX$i&jOr5qrs6cs!^5q!^!_6y!_#o5q#o#p6y#p;'S5q;'S;=`7h<%lO5q&z6jT$d`$i&jO!^&c!_#o&c#p;'S&c;'S;=`&w<%lO&c`6|TOr6yrs7]s;'S6y;'S;=`7b<%lO6y`7bO$d``7eP;=`<%l6y&z7kP;=`<%l5q(^7w]$d`$i&j(Z!bOY&}YZ&cZw&}wx&cx!^&}!^!_'}!_#O&}#O#P&c#P#o&}#o#p'}#p;'S&};'S;=`(l<%lO&}!r8uZ(Z!bOY8pYZ6yZr8prs9hsw8pwx6yx#O8p#O#P6y#P;'S8p;'S;=`:R<%lO8p!r9oU$d`(Z!bOY'}Zw'}x#O'}#P;'S'};'S;=`(f<%lO'}!r:UP;=`<%l8p(^:[P;=`<%l4k%9[:hh$i&j(Wp(Z!bOY%ZYZ&cZq%Zqr`#P#o`x!^=^!^!_?q!_#O=^#O#P>`#P#o=^#o#p?q#p;'S=^;'S;=`@h<%lO=^&n>gXWS$i&jOY>`YZ&cZ!^>`!^!_?S!_#o>`#o#p?S#p;'S>`;'S;=`?k<%lO>`S?XSWSOY?SZ;'S?S;'S;=`?e<%lO?SS?hP;=`<%l?S&n?nP;=`<%l>`!f?xWWS(Z!bOY?qZw?qwx?Sx#O?q#O#P?S#P;'S?q;'S;=`@b<%lO?q!f@eP;=`<%l?q(Q@kP;=`<%l=^'`@w]WS$i&j(WpOY@nYZ&cZr@nrs>`s!^@n!^!_Ap!_#O@n#O#P>`#P#o@n#o#pAp#p;'S@n;'S;=`Bg<%lO@ntAwWWS(WpOYApZrAprs?Ss#OAp#O#P?S#P;'SAp;'S;=`Ba<%lOAptBdP;=`<%lAp'`BjP;=`<%l@n#WBvYWS(Wp(Z!bOYBmZrBmrs?qswBmwxApx#OBm#O#P?S#P;'SBm;'S;=`Cf<%lOBm#WCiP;=`<%lBm(rCoP;=`<%l^!Q^$i&j!X7`OY!=yYZ&cZ!P!=y!P!Q!>|!Q!^!=y!^!_!@c!_!}!=y!}#O!CW#O#P!Dy#P#o!=y#o#p!@c#p;'S!=y;'S;=`!Ek<%lO!=y|#X#Z&c#Z#[!>|#[#]&c#]#^!>|#^#a&c#a#b!>|#b#g&c#g#h!>|#h#i&c#i#j!>|#j#k!>|#k#m&c#m#n!>|#n#o&c#p;'S&c;'S;=`&w<%lO&c7`!@hX!X7`OY!@cZ!P!@c!P!Q!AT!Q!}!@c!}#O!Ar#O#P!Bq#P;'S!@c;'S;=`!CQ<%lO!@c7`!AYW!X7`#W#X!AT#Z#[!AT#]#^!AT#a#b!AT#g#h!AT#i#j!AT#j#k!AT#m#n!AT7`!AuVOY!ArZ#O!Ar#O#P!B[#P#Q!@c#Q;'S!Ar;'S;=`!Bk<%lO!Ar7`!B_SOY!ArZ;'S!Ar;'S;=`!Bk<%lO!Ar7`!BnP;=`<%l!Ar7`!BtSOY!@cZ;'S!@c;'S;=`!CQ<%lO!@c7`!CTP;=`<%l!@c^!Ezl$i&j(Z!b!X7`OY&}YZ&cZw&}wx&cx!^&}!^!_'}!_#O&}#O#P&c#P#W&}#W#X!Eq#X#Z&}#Z#[!Eq#[#]&}#]#^!Eq#^#a&}#a#b!Eq#b#g&}#g#h!Eq#h#i&}#i#j!Eq#j#k!Eq#k#m&}#m#n!Eq#n#o&}#o#p'}#p;'S&};'S;=`(l<%lO&}8r!GyZ(Z!b!X7`OY!GrZw!Grwx!@cx!P!Gr!P!Q!Hl!Q!}!Gr!}#O!JU#O#P!Bq#P;'S!Gr;'S;=`!J|<%lO!Gr8r!Hse(Z!b!X7`OY'}Zw'}x#O'}#P#W'}#W#X!Hl#X#Z'}#Z#[!Hl#[#]'}#]#^!Hl#^#a'}#a#b!Hl#b#g'}#g#h!Hl#h#i'}#i#j!Hl#j#k!Hl#k#m'}#m#n!Hl#n;'S'};'S;=`(f<%lO'}8r!JZX(Z!bOY!JUZw!JUwx!Arx#O!JU#O#P!B[#P#Q!Gr#Q;'S!JU;'S;=`!Jv<%lO!JU8r!JyP;=`<%l!JU8r!KPP;=`<%l!Gr>^!KZ^$i&j(Z!bOY!KSYZ&cZw!KSwx!CWx!^!KS!^!_!JU!_#O!KS#O#P!DR#P#Q!^!LYP;=`<%l!KS>^!L`P;=`<%l!_#c#d#Bq#d#l%Z#l#m#Es#m#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z'Ad#_#c#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z'Ad#>j_$i&j(Wp(Z!bs'9tOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z'Ad#?rd$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!Q%Z!Q!R#AQ!R!S#AQ!S!^%Z!^!_*g!_#O%Z#O#P&c#P#R%Z#R#S#AQ#S#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z'Ad#A]f$i&j(Wp(Z!bs'9tOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!Q%Z!Q!R#AQ!R!S#AQ!S!^%Z!^!_*g!_#O%Z#O#P&c#P#R%Z#R#S#AQ#S#b%Z#b#c#>_#c#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z'Ad#Bzc$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!Q%Z!Q!Y#DV!Y!^%Z!^!_*g!_#O%Z#O#P&c#P#R%Z#R#S#DV#S#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z'Ad#Dbe$i&j(Wp(Z!bs'9tOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!Q%Z!Q!Y#DV!Y!^%Z!^!_*g!_#O%Z#O#P&c#P#R%Z#R#S#DV#S#b%Z#b#c#>_#c#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z'Ad#E|g$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!Q%Z!Q![#Ge![!^%Z!^!_*g!_!c%Z!c!i#Ge!i#O%Z#O#P&c#P#R%Z#R#S#Ge#S#T%Z#T#Z#Ge#Z#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z'Ad#Gpi$i&j(Wp(Z!bs'9tOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!Q%Z!Q![#Ge![!^%Z!^!_*g!_!c%Z!c!i#Ge!i#O%Z#O#P&c#P#R%Z#R#S#Ge#S#T%Z#T#Z#Ge#Z#b%Z#b#c#>_#c#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z*)x#Il_!g$b$i&j$O)Lv(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z)[#Jv_al$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z04f#LS^h#)`#R-v$?V_!^(CdvBr$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z?O$@a_!q7`$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z07[$Aq|$i&j(Wp(Z!b'|0/l$]#t(T,2j(e$I[OX%ZXY+gYZ&cZ[+g[p%Zpq+gqr%Zrs&}st%ZtuEruw%Zwx(rx}%Z}!OGv!O!Q%Z!Q![Er![!^%Z!^!_*g!_!c%Z!c!}Er!}#O%Z#O#P&c#P#R%Z#R#SEr#S#T%Z#T#oEr#o#p*g#p$f%Z$f$g+g$g#BYEr#BY#BZ$A`#BZ$ISEr$IS$I_$A`$I_$JTEr$JT$JU$A`$JU$KVEr$KV$KW$A`$KW&FUEr&FU&FV$A`&FV;'SEr;'S;=`I|<%l?HTEr?HT?HU$A`?HUOEr07[$D|k$i&j(Wp(Z!b'}0/l$]#t(T,2j(e$I[OY%ZYZ&cZr%Zrs&}st%ZtuEruw%Zwx(rx}%Z}!OGv!O!Q%Z!Q![Er![!^%Z!^!_*g!_!c%Z!c!}Er!}#O%Z#O#P&c#P#R%Z#R#SEr#S#T%Z#T#oEr#o#p*g#p$g%Z$g;'SEr;'S;=`I|<%lOEr",tokenizers:[ite,nte,rte,ste,2,3,4,5,6,7,8,9,10,11,12,13,14,tte,new Yg("$S~RRtu[#O#Pg#S#T#|~_P#o#pb~gOx~~jVO#i!P#i#j!U#j#l!P#l#m!q#m;'S!P;'S;=`#v<%lO!P~!UO!U~~!XS!Q![!e!c!i!e#T#Z!e#o#p#Z~!hR!Q![!q!c!i!q#T#Z!q~!tR!Q![!}!c!i!}#T#Z!}~#QR!Q![!P!c!i!P#T#Z!P~#^R!Q![#g!c!i#g#T#Z#g~#jS!Q![#g!c!i#g#T#Z#g#q#r!P~#yP;=`<%l!P~$RO(c~~",141,340),new Yg("j~RQYZXz{^~^O(Q~~aP!P!Qd~iO(R~~",25,323)],topRules:{Script:[0,7],SingleExpression:[1,276],SingleClassItem:[2,277]},dialects:{jsx:0,ts:15175},dynamicPrecedences:{80:1,82:1,94:1,169:1,199:1},specialized:[{term:327,get:t=>ate[t]||-1},{term:343,get:t=>lte[t]||-1},{term:95,get:t=>cte[t]||-1}],tokenPrec:15201}),H4=[Qn("function ${name}(${params}) {\n ${}\n}",{label:"function",detail:"definition",type:"keyword"}),Qn("for (let ${index} = 0; ${index} < ${bound}; ${index}++) {\n ${}\n}",{label:"for",detail:"loop",type:"keyword"}),Qn("for (let ${name} of ${collection}) {\n ${}\n}",{label:"for",detail:"of loop",type:"keyword"}),Qn("do {\n ${}\n} while (${})",{label:"do",detail:"loop",type:"keyword"}),Qn("while (${}) {\n ${}\n}",{label:"while",detail:"loop",type:"keyword"}),Qn(`try { + `),()=>{E.contains(Q)&&E.removeChild(Q)}},[e]),S.jsx(IX,{isPresent:e,childRef:l,sizeRef:c,pop:r,children:r===!1?t:X.cloneElement(t,{ref:p})})}const XX=({children:t,initial:e,isPresent:i,onExitComplete:n,custom:s,presenceAffectsLayout:r,mode:o,anchorX:l,anchorY:c,root:u})=>{const d=HS(ZX),p=X.useId();let g=!0,O=X.useMemo(()=>(g=!1,{id:p,initial:e,isPresent:i,custom:s,onExitComplete:_=>{d.set(_,!0);for(const b of d.values())if(!b)return;n&&n()},register:_=>(d.set(_,!1),()=>d.delete(_))}),[i,d,n]);return r&&g&&(O={...O}),X.useMemo(()=>{d.forEach((_,b)=>d.set(b,!1))},[i]),X.useEffect(()=>{!i&&!d.size&&n&&n()},[i]),t=S.jsx(VX,{pop:o==="popLayout",isPresent:i,anchorX:l,anchorY:c,root:u,children:t}),S.jsx(aO.Provider,{value:O,children:t})};function ZX(){return new Map}function L3(t=!0){const e=X.useContext(aO);if(e===null)return[!0,null];const{isPresent:i,onExitComplete:n,register:s}=e,r=X.useId();X.useEffect(()=>{if(t)return s(r)},[t]);const o=X.useCallback(()=>t&&n&&n(r),[r,n,t]);return!i&&n?[!1,o]:[!0]}const Wp=t=>t.key||"";function uA(t){const e=[];return X.Children.forEach(t,i=>{X.isValidElement(i)&&e.push(i)}),e}const xx=({children:t,custom:e,initial:i=!0,onExitComplete:n,presenceAffectsLayout:s=!0,mode:r="sync",propagate:o=!1,anchorX:l="left",anchorY:c="top",root:u})=>{const[d,p]=L3(o),g=X.useMemo(()=>uA(t),[t]),O=o&&!d?[]:g.map(Wp),_=X.useRef(!0),b=X.useRef(g),x=HS(()=>new Map),w=X.useRef(new Set),[k,T]=X.useState(g),[A,Q]=X.useState(g);lL(()=>{_.current=!1,b.current=g;for(let z=0;z{const q=Wp(z),J=o&&!d?!1:g===A||O.includes(q),U=()=>{if(w.current.has(q))return;if(w.current.add(q),x.has(q))x.set(q,!0);else return;let R=!0;x.forEach(B=>{B||(R=!1)}),R&&(N==null||N(),Q(b.current),o&&(p==null||p()),n&&n())};return S.jsx(XX,{isPresent:J,initial:!_.current||i?void 0:!1,custom:e,presenceAffectsLayout:s,mode:r,root:u,onExitComplete:J?void 0:U,anchorX:l,anchorY:c,children:z},q)})})},D3=X.createContext({strict:!1}),fA={animation:["animate","variants","whileHover","whileTap","exit","whileInView","whileFocus","whileDrag"],exit:["exit"],drag:["drag","dragControls"],focus:["whileFocus"],hover:["whileHover","onHoverStart","onHoverEnd"],tap:["whileTap","onTap","onTapStart","onTapCancel"],pan:["onPan","onPanStart","onPanSessionStart","onPanEnd"],inView:["whileInView","onViewportEnter","onViewportLeave"],layout:["layout","layoutId"]};let dA=!1;function qX(){if(dA)return;const t={};for(const e in fA)t[e]={isEnabled:i=>fA[e].some(n=>!!i[n])};h3(t),dA=!0}function B3(){return qX(),PV()}function WX(t){const e=B3();for(const i in t)e[i]={...e[i],...t[i]};h3(e)}const UX=new Set(["animate","exit","variants","initial","style","values","variants","transition","transformTemplate","custom","inherit","onBeforeLayoutMeasure","onAnimationStart","onAnimationComplete","onUpdate","onDragStart","onDrag","onDragEnd","onMeasureDragConstraints","onDirectionLock","onDragTransitionEnd","_dragX","_dragY","onHoverStart","onHoverEnd","onViewportEnter","onViewportLeave","globalTapTarget","propagate","ignoreStrict","viewport"]);function Og(t){return t.startsWith("while")||t.startsWith("drag")&&t!=="draggable"||t.startsWith("layout")||t.startsWith("onTap")||t.startsWith("onPan")||t.startsWith("onLayout")||UX.has(t)}let $3=t=>!Og(t);function YX(t){typeof t=="function"&&($3=e=>e.startsWith("on")?!Og(e):t(e))}try{YX(require("@emotion/is-prop-valid").default)}catch{}function HX(t,e,i){const n={};for(const s in t)s==="values"&&typeof t.values=="object"||($3(s)||i===!0&&Og(s)||!e&&!Og(s)||t.draggable&&s.startsWith("onDrag"))&&(n[s]=t[s]);return n}const hO=X.createContext({});function FX(t,e){if(cO(t)){const{initial:i,animate:n}=t;return{initial:i===!1||Af(i)?i:void 0,animate:Af(n)?n:void 0}}return t.inherit!==!1?e:{}}function GX(t){const{initial:e,animate:i}=FX(t,X.useContext(hO));return X.useMemo(()=>({initial:e,animate:i}),[pA(e),pA(i)])}function pA(t){return Array.isArray(t)?t.join(" "):t}const wx=()=>({style:{},transform:{},transformOrigin:{},vars:{}});function N3(t,e,i){for(const n in e)!rn(e[n])&&!O3(n,i)&&(t[n]=e[n])}function KX({transformTemplate:t},e){return X.useMemo(()=>{const i=wx();return yx(i,e,t),Object.assign({},i.vars,i.style)},[e])}function JX(t,e){const i=t.style||{},n={};return N3(n,i,t),Object.assign(n,KX(t,e)),n}function e9(t,e){const i={},n=JX(t,e);return t.drag&&t.dragListener!==!1&&(i.draggable=!1,n.userSelect=n.WebkitUserSelect=n.WebkitTouchCallout="none",n.touchAction=t.drag===!0?"none":`pan-${t.drag==="x"?"y":"x"}`),t.tabIndex===void 0&&(t.onTap||t.onTapStart||t.whileTap)&&(i.tabIndex=0),i.style=n,i}const z3=()=>({...wx(),attrs:{}});function t9(t,e,i,n){const s=X.useMemo(()=>{const r=z3();return v3(r,e,y3(n),t.transformTemplate,t.style),{...r.attrs,style:{...r.style}}},[e]);if(t.style){const r={};N3(r,t.style,t),s.style={...r,...s.style}}return s}const i9=["animate","circle","defs","desc","ellipse","g","image","line","filter","marker","mask","metadata","path","pattern","polygon","polyline","rect","stop","switch","symbol","svg","text","tspan","use","view"];function Cx(t){return typeof t!="string"||t.includes("-")?!1:!!(i9.indexOf(t)>-1||/[A-Z]/u.test(t))}function n9(t,e,i,{latestValues:n},s,r=!1,o){const c=(o??Cx(t)?t9:e9)(e,n,s,t),u=HX(e,typeof t=="string",r),d=t!==X.Fragment?{...u,...c,ref:i}:{},{children:p}=e,g=X.useMemo(()=>rn(p)?p.get():p,[p]);return X.createElement(t,{...d,children:g})}function s9({scrapeMotionValuesFromProps:t,createRenderState:e},i,n,s){return{latestValues:r9(i,n,s,t),renderState:e()}}function r9(t,e,i,n){const s={},r=n(t,{});for(const g in r)s[g]=zm(r[g]);let{initial:o,animate:l}=t;const c=cO(t),u=l3(t);e&&u&&!c&&t.inherit!==!1&&(o===void 0&&(o=e.initial),l===void 0&&(l=e.animate));let d=i?i.initial===!1:!1;d=d||o===!1;const p=d?l:o;if(p&&typeof p!="boolean"&&!lO(p)){const g=Array.isArray(p)?p:[p];for(let O=0;O(e,i)=>{const n=X.useContext(hO),s=X.useContext(aO),r=()=>s9(t,e,n,s);return i?r():HS(r)},o9=j3({scrapeMotionValuesFromProps:bx,createRenderState:wx}),a9=j3({scrapeMotionValuesFromProps:b3,createRenderState:z3}),l9=Symbol.for("motionComponentSymbol");function c9(t,e,i){const n=X.useRef(i);X.useInsertionEffect(()=>{n.current=i});const s=X.useRef(null);return X.useCallback(r=>{var l;r&&((l=t.onMount)==null||l.call(t,r)),e&&(r?e.mount(r):e.unmount());const o=n.current;if(typeof o=="function")if(r){const c=o(r);typeof c=="function"&&(s.current=c)}else s.current?(s.current(),s.current=null):o(r);else o&&(o.current=r)},[e])}const I3=X.createContext({});function Mc(t){return t&&typeof t=="object"&&Object.prototype.hasOwnProperty.call(t,"current")}function h9(t,e,i,n,s,r){var T,A;const{visualElement:o}=X.useContext(hO),l=X.useContext(D3),c=X.useContext(aO),u=X.useContext(Sx),d=u.reducedMotion,p=u.skipAnimations,g=X.useRef(null),O=X.useRef(!1);n=n||l.renderer,!g.current&&n&&(g.current=n(t,{visualState:e,parent:o,props:i,presenceContext:c,blockInitialAnimation:c?c.initial===!1:!1,reducedMotionConfig:d,skipAnimations:p,isSVG:r}),O.current&&g.current&&(g.current.manuallyAnimateOnMount=!0));const _=g.current,b=X.useContext(I3);_&&!_.projection&&s&&(_.type==="html"||_.type==="svg")&&u9(g.current,i,s,b);const x=X.useRef(!1);X.useInsertionEffect(()=>{_&&x.current&&_.update(i,c)});const w=i[HL],k=X.useRef(!!w&&!((T=window.MotionHandoffIsComplete)!=null&&T.call(window,w))&&((A=window.MotionHasOptimisedAnimation)==null?void 0:A.call(window,w)));return lL(()=>{O.current=!0,_&&(x.current=!0,window.MotionIsMounted=!0,_.updateFeatures(),_.scheduleRenderMicrotask(),k.current&&_.animationState&&_.animationState.animateChanges())}),X.useEffect(()=>{_&&(!k.current&&_.animationState&&_.animationState.animateChanges(),k.current&&(queueMicrotask(()=>{var Q;(Q=window.MotionHandoffMarkAsComplete)==null||Q.call(window,w)}),k.current=!1),_.enteringChildren=void 0)}),_}function u9(t,e,i,n){const{layoutId:s,layout:r,drag:o,dragConstraints:l,layoutScroll:c,layoutRoot:u,layoutCrossfade:d}=e;t.projection=new i(t.latestValues,e["data-framer-portal-id"]?void 0:V3(t.parent)),t.projection.setOptions({layoutId:s,layout:r,alwaysMeasureLayout:!!o||l&&Mc(l),visualElement:t,animationType:typeof r=="string"?r:"both",initialPromotionConfig:n,crossfade:d,layoutScroll:c,layoutRoot:u})}function V3(t){if(t)return t.options.allowProjection!==!1?t.projection:V3(t.parent)}function f_(t,{forwardMotionProps:e=!1,type:i}={},n,s){n&&WX(n);const r=i?i==="svg":Cx(t),o=r?a9:o9;function l(u,d){let p;const g={...X.useContext(Sx),...u,layoutId:f9(u)},{isStatic:O}=g,_=GX(u),b=o(u,O);if(!O&&aL){d9();const x=p9(g);p=x.MeasureLayout,_.visualElement=h9(t,b,g,s,x.ProjectionNode,r)}return S.jsxs(hO.Provider,{value:_,children:[p&&_.visualElement?S.jsx(p,{visualElement:_.visualElement,...g}):null,n9(t,u,c9(b,_.visualElement,d),b,O,e,r)]})}l.displayName=`motion.${typeof t=="string"?t:`create(${t.displayName??t.name??""})`}`;const c=X.forwardRef(l);return c[l9]=t,c}function f9({layoutId:t}){const e=X.useContext(YS).id;return e&&t!==void 0?e+"-"+t:t}function d9(t,e){X.useContext(D3).strict}function p9(t){const e=B3(),{drag:i,layout:n}=e;if(!i&&!n)return{};const s={...i,...n};return{MeasureLayout:i!=null&&i.isEnabled(t)||n!=null&&n.isEnabled(t)?s.MeasureLayout:void 0,ProjectionNode:s.ProjectionNode}}function m9(t,e){if(typeof Proxy>"u")return f_;const i=new Map,n=(r,o)=>f_(r,o,t,e),s=(r,o)=>n(r,o);return new Proxy(s,{get:(r,o)=>o==="create"?n:(i.has(o)||i.set(o,f_(o,void 0,t,e)),i.get(o))})}const g9=(t,e)=>e.isSVG??Cx(t)?new YV(e):new VV(e,{allowProjection:t!==X.Fragment});class O9 extends Pa{constructor(e){super(e),e.animationState||(e.animationState=JV(e))}updateAnimationControlsSubscription(){const{animate:e}=this.node.getProps();lO(e)&&(this.unmountControls=e.subscribe(this.node))}mount(){this.updateAnimationControlsSubscription()}update(){const{animate:e}=this.node.getProps(),{animate:i}=this.node.prevProps||{};e!==i&&this.updateAnimationControlsSubscription()}unmount(){var e;this.node.animationState.reset(),(e=this.unmountControls)==null||e.call(this)}}let v9=0;class _9 extends Pa{constructor(){super(...arguments),this.id=v9++}update(){if(!this.node.presenceContext)return;const{isPresent:e,onExitComplete:i}=this.node.presenceContext,{isPresent:n}=this.node.prevPresenceContext||{};if(!this.node.animationState||e===n)return;const s=this.node.animationState.setActive("exit",!e);i&&!e&&s.then(()=>{i(this.id)})}mount(){const{register:e,onExitComplete:i}=this.node.presenceContext||{};i&&i(this.id),e&&(this.unmount=e(this.id))}unmount(){}}const y9={animation:{Feature:O9},exit:{Feature:_9}};function cd(t){return{point:{x:t.pageX,y:t.pageY}}}const b9=t=>e=>gx(e)&&t(e,cd(e));function uf(t,e,i,n){return Ef(t,e,b9(i),n)}const X3=({current:t})=>t?t.ownerDocument.defaultView:null,mA=(t,e)=>Math.abs(t-e);function S9(t,e){const i=mA(t.x,e.x),n=mA(t.y,e.y);return Math.sqrt(i**2+n**2)}const gA=new Set(["auto","scroll"]);class Z3{constructor(e,i,{transformPagePoint:n,contextWindow:s=window,dragSnapToOrigin:r=!1,distanceThreshold:o=3,element:l}={}){if(this.startEvent=null,this.lastMoveEvent=null,this.lastMoveEventInfo=null,this.handlers={},this.contextWindow=window,this.scrollPositions=new Map,this.removeScrollListeners=null,this.onElementScroll=O=>{this.handleScroll(O.target)},this.onWindowScroll=()=>{this.handleScroll(window)},this.updatePoint=()=>{if(!(this.lastMoveEvent&&this.lastMoveEventInfo))return;const O=p_(this.lastMoveEventInfo,this.history),_=this.startEvent!==null,b=S9(O.offset,{x:0,y:0})>=this.distanceThreshold;if(!_&&!b)return;const{point:x}=O,{timestamp:w}=qi;this.history.push({...x,timestamp:w});const{onStart:k,onMove:T}=this.handlers;_||(k&&k(this.lastMoveEvent,O),this.startEvent=this.lastMoveEvent),T&&T(this.lastMoveEvent,O)},this.handlePointerMove=(O,_)=>{this.lastMoveEvent=O,this.lastMoveEventInfo=d_(_,this.transformPagePoint),Tt.update(this.updatePoint,!0)},this.handlePointerUp=(O,_)=>{this.end();const{onEnd:b,onSessionEnd:x,resumeAnimation:w}=this.handlers;if((this.dragSnapToOrigin||!this.startEvent)&&w&&w(),!(this.lastMoveEvent&&this.lastMoveEventInfo))return;const k=p_(O.type==="pointercancel"?this.lastMoveEventInfo:d_(_,this.transformPagePoint),this.history);this.startEvent&&b&&b(O,k),x&&x(O,k)},!gx(e))return;this.dragSnapToOrigin=r,this.handlers=i,this.transformPagePoint=n,this.distanceThreshold=o,this.contextWindow=s||window;const c=cd(e),u=d_(c,this.transformPagePoint),{point:d}=u,{timestamp:p}=qi;this.history=[{...d,timestamp:p}];const{onSessionStart:g}=i;g&&g(e,p_(u,this.history)),this.removeListeners=od(uf(this.contextWindow,"pointermove",this.handlePointerMove),uf(this.contextWindow,"pointerup",this.handlePointerUp),uf(this.contextWindow,"pointercancel",this.handlePointerUp)),l&&this.startScrollTracking(l)}startScrollTracking(e){let i=e.parentElement;for(;i;){const n=getComputedStyle(i);(gA.has(n.overflowX)||gA.has(n.overflowY))&&this.scrollPositions.set(i,{x:i.scrollLeft,y:i.scrollTop}),i=i.parentElement}this.scrollPositions.set(window,{x:window.scrollX,y:window.scrollY}),window.addEventListener("scroll",this.onElementScroll,{capture:!0}),window.addEventListener("scroll",this.onWindowScroll),this.removeScrollListeners=()=>{window.removeEventListener("scroll",this.onElementScroll,{capture:!0}),window.removeEventListener("scroll",this.onWindowScroll)}}handleScroll(e){const i=this.scrollPositions.get(e);if(!i)return;const n=e===window,s=n?{x:window.scrollX,y:window.scrollY}:{x:e.scrollLeft,y:e.scrollTop},r={x:s.x-i.x,y:s.y-i.y};r.x===0&&r.y===0||(n?this.lastMoveEventInfo&&(this.lastMoveEventInfo.point.x+=r.x,this.lastMoveEventInfo.point.y+=r.y):this.history.length>0&&(this.history[0].x-=r.x,this.history[0].y-=r.y),this.scrollPositions.set(e,s),Tt.update(this.updatePoint,!0))}updateHandlers(e){this.handlers=e}end(){this.removeListeners&&this.removeListeners(),this.removeScrollListeners&&this.removeScrollListeners(),this.scrollPositions.clear(),xa(this.updatePoint)}}function d_(t,e){return e?{point:e(t.point)}:t}function OA(t,e){return{x:t.x-e.x,y:t.y-e.y}}function p_({point:t},e){return{point:t,delta:OA(t,q3(e)),offset:OA(t,x9(e)),velocity:w9(e,.1)}}function x9(t){return t[0]}function q3(t){return t[t.length-1]}function w9(t,e){if(t.length<2)return{x:0,y:0};let i=t.length-1,n=null;const s=q3(t);for(;i>=0&&(n=t[i],!(s.timestamp-n.timestamp>Ws(e)));)i--;if(!n)return{x:0,y:0};n===t[0]&&t.length>2&&s.timestamp-n.timestamp>Ws(e)*2&&(n=t[1]);const r=Cs(s.timestamp-n.timestamp);if(r===0)return{x:0,y:0};const o={x:(s.x-n.x)/r,y:(s.y-n.y)/r};return o.x===1/0&&(o.x=0),o.y===1/0&&(o.y=0),o}function C9(t,{min:e,max:i},n){return e!==void 0&&ti&&(t=n?zt(i,t,n.max):Math.min(t,i)),t}function vA(t,e,i){return{min:e!==void 0?t.min+e:void 0,max:i!==void 0?t.max+i-(t.max-t.min):void 0}}function k9(t,{top:e,left:i,bottom:n,right:s}){return{x:vA(t.x,i,s),y:vA(t.y,e,n)}}function _A(t,e){let i=e.min-t.min,n=e.max-t.max;return e.max-e.minn?i=Cf(e.min,e.max-n,t.min):n>s&&(i=Cf(t.min,t.max-s,e.min)),Ar(0,1,i)}function E9(t,e){const i={};return e.min!==void 0&&(i.min=e.min-t.min),e.max!==void 0&&(i.max=e.max-t.min),i}const j1=.35;function M9(t=j1){return t===!1?t=0:t===!0&&(t=j1),{x:yA(t,"left","right"),y:yA(t,"top","bottom")}}function yA(t,e,i){return{min:bA(t,e),max:bA(t,i)}}function bA(t,e){return typeof t=="number"?t:t[e]||0}const P9=new WeakMap;class R9{constructor(e){this.openDragLock=null,this.isDragging=!1,this.currentDirection=null,this.originPoint={x:0,y:0},this.constraints=!1,this.hasMutatedConstraints=!1,this.elastic=Oi(),this.latestPointerEvent=null,this.latestPanInfo=null,this.visualElement=e}start(e,{snapToCursor:i=!1,distanceThreshold:n}={}){const{presenceContext:s}=this.visualElement;if(s&&s.isPresent===!1)return;const r=p=>{i&&this.snapToCursor(cd(p).point),this.stopAnimation()},o=(p,g)=>{const{drag:O,dragPropagation:_,onDragStart:b}=this.getProps();if(O&&!_&&(this.openDragLock&&this.openDragLock(),this.openDragLock=aV(O),!this.openDragLock))return;this.latestPointerEvent=p,this.latestPanInfo=g,this.isDragging=!0,this.currentDirection=null,this.resolveConstraints(),this.visualElement.projection&&(this.visualElement.projection.isAnimationBlocked=!0,this.visualElement.projection.target=void 0),dr(w=>{let k=this.getAxisMotionValue(w).get()||0;if(wr.test(k)){const{projection:T}=this.visualElement;if(T&&T.layout){const A=T.layout.layoutBox[w];A&&(k=vn(A)*(parseFloat(k)/100))}}this.originPoint[w]=k}),b&&Tt.update(()=>b(p,g),!1,!0),P1(this.visualElement,"transform");const{animationState:x}=this.visualElement;x&&x.setActive("whileDrag",!0)},l=(p,g)=>{this.latestPointerEvent=p,this.latestPanInfo=g;const{dragPropagation:O,dragDirectionLock:_,onDirectionLock:b,onDrag:x}=this.getProps();if(!O&&!this.openDragLock)return;const{offset:w}=g;if(_&&this.currentDirection===null){this.currentDirection=L9(w),this.currentDirection!==null&&b&&b(this.currentDirection);return}this.updateAxis("x",g.point,w),this.updateAxis("y",g.point,w),this.visualElement.render(),x&&Tt.update(()=>x(p,g),!1,!0)},c=(p,g)=>{this.latestPointerEvent=p,this.latestPanInfo=g,this.stop(p,g),this.latestPointerEvent=null,this.latestPanInfo=null},u=()=>{const{dragSnapToOrigin:p}=this.getProps();(p||this.constraints)&&this.startAnimation({x:0,y:0})},{dragSnapToOrigin:d}=this.getProps();this.panSession=new Z3(e,{onSessionStart:r,onStart:o,onMove:l,onSessionEnd:c,resumeAnimation:u},{transformPagePoint:this.visualElement.getTransformPagePoint(),dragSnapToOrigin:d,distanceThreshold:n,contextWindow:X3(this.visualElement),element:this.visualElement.current})}stop(e,i){const n=e||this.latestPointerEvent,s=i||this.latestPanInfo,r=this.isDragging;if(this.cancel(),!r||!s||!n)return;const{velocity:o}=s;this.startAnimation(o);const{onDragEnd:l}=this.getProps();l&&Tt.postRender(()=>l(n,s))}cancel(){this.isDragging=!1;const{projection:e,animationState:i}=this.visualElement;e&&(e.isAnimationBlocked=!1),this.endPanSession();const{dragPropagation:n}=this.getProps();!n&&this.openDragLock&&(this.openDragLock(),this.openDragLock=null),i&&i.setActive("whileDrag",!1)}endPanSession(){this.panSession&&this.panSession.end(),this.panSession=void 0}updateAxis(e,i,n){const{drag:s}=this.getProps();if(!n||!Up(e,s,this.currentDirection))return;const r=this.getAxisMotionValue(e);let o=this.originPoint[e]+n[e];this.constraints&&this.constraints[e]&&(o=C9(o,this.constraints[e],this.elastic[e])),r.set(o)}resolveConstraints(){var r;const{dragConstraints:e,dragElastic:i}=this.getProps(),n=this.visualElement.projection&&!this.visualElement.projection.layout?this.visualElement.projection.measure(!1):(r=this.visualElement.projection)==null?void 0:r.layout,s=this.constraints;e&&Mc(e)?this.constraints||(this.constraints=this.resolveRefConstraints()):e&&n?this.constraints=k9(n.layoutBox,e):this.constraints=!1,this.elastic=M9(i),s!==this.constraints&&!Mc(e)&&n&&this.constraints&&!this.hasMutatedConstraints&&dr(o=>{this.constraints!==!1&&this.getAxisMotionValue(o)&&(this.constraints[o]=E9(n.layoutBox[o],this.constraints[o]))})}resolveRefConstraints(){const{dragConstraints:e,onMeasureDragConstraints:i}=this.getProps();if(!e||!Mc(e))return!1;const n=e.current,{projection:s}=this.visualElement;if(!s||!s.layout)return!1;const r=BV(n,s.root,this.visualElement.getTransformPagePoint());let o=T9(s.layout.layoutBox,r);if(i){const l=i(QV(o));this.hasMutatedConstraints=!!l,l&&(o=f3(l))}return o}startAnimation(e){const{drag:i,dragMomentum:n,dragElastic:s,dragTransition:r,dragSnapToOrigin:o,onDragTransitionEnd:l}=this.getProps(),c=this.constraints||{},u=dr(d=>{if(!Up(d,i,this.currentDirection))return;let p=c&&c[d]||{};o&&(p={min:0,max:0});const g=s?200:1e6,O=s?40:1e7,_={type:"inertia",velocity:n?e[d]:0,bounceStiffness:g,bounceDamping:O,timeConstant:750,restDelta:1,restSpeed:10,...r,...p};return this.startAxisValueAnimation(d,_)});return Promise.all(u).then(l)}startAxisValueAnimation(e,i){const n=this.getAxisMotionValue(e);return P1(this.visualElement,e),n.start(ux(e,n,0,i,this.visualElement,!1))}stopAnimation(){dr(e=>this.getAxisMotionValue(e).stop())}getAxisMotionValue(e){const i=`_drag${e.toUpperCase()}`,n=this.visualElement.getProps(),s=n[i];return s||this.visualElement.getValue(e,(n.initial?n.initial[e]:void 0)||0)}snapToCursor(e){dr(i=>{const{drag:n}=this.getProps();if(!Up(i,n,this.currentDirection))return;const{projection:s}=this.visualElement,r=this.getAxisMotionValue(i);if(s&&s.layout){const{min:o,max:l}=s.layout.layoutBox[i],c=r.get()||0;r.set(e[i]-zt(o,l,.5)+c)}})}scalePositionWithinConstraints(){if(!this.visualElement.current)return;const{drag:e,dragConstraints:i}=this.getProps(),{projection:n}=this.visualElement;if(!Mc(i)||!n||!this.constraints)return;this.stopAnimation();const s={x:0,y:0};dr(o=>{const l=this.getAxisMotionValue(o);if(l&&this.constraints!==!1){const c=l.get();s[o]=A9({min:c,max:c},this.constraints[o])}});const{transformTemplate:r}=this.visualElement.getProps();this.visualElement.current.style.transform=r?r({},""):"none",n.root&&n.root.updateScroll(),n.updateLayout(),this.constraints=!1,this.resolveConstraints(),dr(o=>{if(!Up(o,e,null))return;const l=this.getAxisMotionValue(o),{min:c,max:u}=this.constraints[o];l.set(zt(c,u,s[o]))}),this.visualElement.render()}addListeners(){if(!this.visualElement.current)return;P9.set(this.visualElement,this);const e=this.visualElement.current,i=uf(e,"pointerdown",u=>{const{drag:d,dragListener:p=!0}=this.getProps(),g=u.target,O=g!==e&&dV(g);d&&p&&!O&&this.start(u)});let n;const s=()=>{const{dragConstraints:u}=this.getProps();Mc(u)&&u.current&&(this.constraints=this.resolveRefConstraints(),n||(n=Q9(e,u.current,()=>this.scalePositionWithinConstraints())))},{projection:r}=this.visualElement,o=r.addEventListener("measure",s);r&&!r.layout&&(r.root&&r.root.updateScroll(),r.updateLayout()),Tt.read(s);const l=Ef(window,"resize",()=>this.scalePositionWithinConstraints()),c=r.addEventListener("didUpdate",(({delta:u,hasLayoutChanged:d})=>{this.isDragging&&d&&(dr(p=>{const g=this.getAxisMotionValue(p);g&&(this.originPoint[p]+=u[p].translate,g.set(g.get()+u[p].translate))}),this.visualElement.render())}));return()=>{l(),i(),o(),c&&c(),n&&n()}}getProps(){const e=this.visualElement.getProps(),{drag:i=!1,dragDirectionLock:n=!1,dragPropagation:s=!1,dragConstraints:r=!1,dragElastic:o=j1,dragMomentum:l=!0}=e;return{...e,drag:i,dragDirectionLock:n,dragPropagation:s,dragConstraints:r,dragElastic:o,dragMomentum:l}}}function SA(t){let e=!0;return()=>{if(e){e=!1;return}t()}}function Q9(t,e,i){const n=ET(t,SA(i)),s=ET(e,SA(i));return()=>{n(),s()}}function Up(t,e,i){return(e===!0||e===t)&&(i===null||i===t)}function L9(t,e=10){let i=null;return Math.abs(t.y)>e?i="y":Math.abs(t.x)>e&&(i="x"),i}class D9 extends Pa{constructor(e){super(e),this.removeGroupControls=Ps,this.removeListeners=Ps,this.controls=new R9(e)}mount(){const{dragControls:e}=this.node.getProps();e&&(this.removeGroupControls=e.subscribe(this.controls)),this.removeListeners=this.controls.addListeners()||Ps}update(){const{dragControls:e}=this.node.getProps(),{dragControls:i}=this.node.prevProps||{};e!==i&&(this.removeGroupControls(),e&&(this.removeGroupControls=e.subscribe(this.controls)))}unmount(){this.removeGroupControls(),this.removeListeners(),this.controls.isDragging||this.controls.endPanSession()}}const m_=t=>(e,i)=>{t&&Tt.update(()=>t(e,i),!1,!0)};class B9 extends Pa{constructor(){super(...arguments),this.removePointerDownListener=Ps}onPointerDown(e){this.session=new Z3(e,this.createPanHandlers(),{transformPagePoint:this.node.getTransformPagePoint(),contextWindow:X3(this.node)})}createPanHandlers(){const{onPanSessionStart:e,onPanStart:i,onPan:n,onPanEnd:s}=this.node.getProps();return{onSessionStart:m_(e),onStart:m_(i),onMove:m_(n),onEnd:(r,o)=>{delete this.session,s&&Tt.postRender(()=>s(r,o))}}}mount(){this.removePointerDownListener=uf(this.node.current,"pointerdown",e=>this.onPointerDown(e))}update(){this.session&&this.session.updateHandlers(this.createPanHandlers())}unmount(){this.removePointerDownListener(),this.session&&this.session.end()}}let g_=!1;class $9 extends X.Component{componentDidMount(){const{visualElement:e,layoutGroup:i,switchLayoutGroup:n,layoutId:s}=this.props,{projection:r}=e;r&&(i.group&&i.group.add(r),n&&n.register&&s&&n.register(r),g_&&r.root.didUpdate(),r.addEventListener("animationComplete",()=>{this.safeToRemove()}),r.setOptions({...r.options,layoutDependency:this.props.layoutDependency,onExitComplete:()=>this.safeToRemove()})),jm.hasEverUpdated=!0}getSnapshotBeforeUpdate(e){const{layoutDependency:i,visualElement:n,drag:s,isPresent:r}=this.props,{projection:o}=n;return o&&(o.isPresent=r,e.layoutDependency!==i&&o.setOptions({...o.options,layoutDependency:i}),g_=!0,s||e.layoutDependency!==i||i===void 0||e.isPresent!==r?o.willUpdate():this.safeToRemove(),e.isPresent!==r&&(r?o.promote():o.relegate()||Tt.postRender(()=>{const l=o.getStack();(!l||!l.members.length)&&this.safeToRemove()}))),null}componentDidUpdate(){const{projection:e}=this.props.visualElement;e&&(e.root.didUpdate(),mx.postRender(()=>{!e.currentAnimation&&e.isLead()&&this.safeToRemove()}))}componentWillUnmount(){const{visualElement:e,layoutGroup:i,switchLayoutGroup:n}=this.props,{projection:s}=e;g_=!0,s&&(s.scheduleCheckAfterUnmount(),i&&i.group&&i.group.remove(s),n&&n.deregister&&n.deregister(s))}safeToRemove(){const{safeToRemove:e}=this.props;e&&e()}render(){return null}}function W3(t){const[e,i]=L3(),n=X.useContext(YS);return S.jsx($9,{...t,layoutGroup:n,switchLayoutGroup:X.useContext(I3),isPresent:e,safeToRemove:i})}const N9={pan:{Feature:B9},drag:{Feature:D9,ProjectionNode:Q3,MeasureLayout:W3}};function xA(t,e,i){const{props:n}=t;t.animationState&&n.whileHover&&t.animationState.setActive("whileHover",i==="Start");const s="onHover"+i,r=n[s];r&&Tt.postRender(()=>r(e,cd(e)))}class z9 extends Pa{mount(){const{current:e}=this.node;e&&(this.unmount=cV(e,(i,n)=>(xA(this.node,n,"Start"),s=>xA(this.node,s,"End"))))}unmount(){}}class j9 extends Pa{constructor(){super(...arguments),this.isActive=!1}onFocus(){let e=!1;try{e=this.node.current.matches(":focus-visible")}catch{e=!0}!e||!this.node.animationState||(this.node.animationState.setActive("whileFocus",!0),this.isActive=!0)}onBlur(){!this.isActive||!this.node.animationState||(this.node.animationState.setActive("whileFocus",!1),this.isActive=!1)}mount(){this.unmount=od(Ef(this.node.current,"focus",()=>this.onFocus()),Ef(this.node.current,"blur",()=>this.onBlur()))}unmount(){}}function wA(t,e,i){const{props:n}=t;if(t.current instanceof HTMLButtonElement&&t.current.disabled)return;t.animationState&&n.whileTap&&t.animationState.setActive("whileTap",i==="Start");const s="onTap"+(i==="End"?"":i),r=n[s];r&&Tt.postRender(()=>r(e,cd(e)))}class I9 extends Pa{mount(){const{current:e}=this.node;if(!e)return;const{globalTapTarget:i,propagate:n}=this.node.props;this.unmount=mV(e,(s,r)=>(wA(this.node,r,"Start"),(o,{success:l})=>wA(this.node,o,l?"End":"Cancel")),{useGlobalTarget:i,stopPropagation:(n==null?void 0:n.tap)===!1})}unmount(){}}const I1=new WeakMap,O_=new WeakMap,V9=t=>{const e=I1.get(t.target);e&&e(t)},X9=t=>{t.forEach(V9)};function Z9({root:t,...e}){const i=t||document;O_.has(i)||O_.set(i,{});const n=O_.get(i),s=JSON.stringify(e);return n[s]||(n[s]=new IntersectionObserver(X9,{root:t,...e})),n[s]}function q9(t,e,i){const n=Z9(e);return I1.set(t,i),n.observe(t),()=>{I1.delete(t),n.unobserve(t)}}const W9={some:0,all:1};class U9 extends Pa{constructor(){super(...arguments),this.hasEnteredView=!1,this.isInView=!1}startObserver(){this.unmount();const{viewport:e={}}=this.node.getProps(),{root:i,margin:n,amount:s="some",once:r}=e,o={root:i?i.current:void 0,rootMargin:n,threshold:typeof s=="number"?s:W9[s]},l=c=>{const{isIntersecting:u}=c;if(this.isInView===u||(this.isInView=u,r&&!u&&this.hasEnteredView))return;u&&(this.hasEnteredView=!0),this.node.animationState&&this.node.animationState.setActive("whileInView",u);const{onViewportEnter:d,onViewportLeave:p}=this.node.getProps(),g=u?d:p;g&&g(c)};return q9(this.node.current,o,l)}mount(){this.startObserver()}update(){if(typeof IntersectionObserver>"u")return;const{props:e,prevProps:i}=this.node;["amount","margin","root"].some(Y9(e,i))&&this.startObserver()}unmount(){}}function Y9({viewport:t={}},{viewport:e={}}={}){return i=>t[i]!==e[i]}const H9={inView:{Feature:U9},tap:{Feature:I9},focus:{Feature:j9},hover:{Feature:z9}},F9={layout:{ProjectionNode:Q3,MeasureLayout:W3}},G9={...y9,...H9,...N9,...F9},Er=m9(G9,g9);function K9({roadmap:t,state:e,todos:i}){var p;const{connected:n}=Qr(),s=(t==null?void 0:t.progress_percent)??0,r=(t==null?void 0:t.current_phase)??(e==null?void 0:e.currentPhase)??"--",o=((p=t==null?void 0:t.phases.find(g=>g.number===t.current_phase))==null?void 0:p.name)??"",l=(e==null?void 0:e.blockers.filter(g=>!g.includes("RESOLVED")).length)??0,c=(i==null?void 0:i.pending.length)??0,u=(t==null?void 0:t.completed_phases)??0,d=(t==null?void 0:t.phase_count)??0;return S.jsxs("div",{className:"border-b border-border pb-6",children:[S.jsxs("div",{className:"flex items-center gap-3 mb-4",children:[S.jsx("span",{className:"block w-6 h-px bg-accent"}),S.jsx("span",{className:"text-xs font-medium uppercase tracking-widest text-muted-foreground",children:"Milestone Progress"}),S.jsxs("span",{className:"ml-auto flex items-center gap-3",children:[S.jsxs("span",{className:"text-xs text-muted-foreground tabular-nums",children:[u,"/",d," phases"]}),S.jsx("span",{className:`inline-block h-1.5 w-1.5 ${n?"bg-success":"bg-danger"}`,title:n?"Connected":"Disconnected"})]})]}),S.jsx("div",{className:"h-1 w-full bg-muted mb-5",children:S.jsx(Er.div,{className:"h-full bg-accent",initial:{width:0},animate:{width:`${s}%`},transition:{duration:.6,ease:"easeOut"}})}),S.jsxs("div",{className:"flex flex-col gap-4 sm:flex-row sm:items-end sm:gap-10",children:[S.jsxs("div",{className:"flex items-end gap-4 sm:gap-10",children:[S.jsxs("div",{children:[S.jsx("span",{className:"font-mono text-3xl font-bold tabular-nums text-foreground leading-none",children:s}),S.jsx("span",{className:"text-sm text-muted-foreground ml-1",children:"%"})]}),S.jsxs("div",{className:"border-l border-border pl-4 sm:pl-10",children:[S.jsx("span",{className:"text-xs uppercase tracking-widest text-muted-foreground block mb-1",children:"Current"}),S.jsxs("div",{className:"flex items-baseline gap-2",children:[S.jsx("span",{className:"font-mono text-sm font-bold text-accent",children:r}),S.jsx("span",{className:"truncate text-sm text-foreground/80 max-w-[140px] sm:max-w-none",children:o})]})]})]}),S.jsxs("div",{className:"flex items-end gap-6 sm:ml-auto sm:gap-8",children:[S.jsxs("div",{children:[S.jsx("span",{className:"text-xs uppercase tracking-widest text-muted-foreground block mb-1",children:"Blockers"}),S.jsx("span",{className:`font-mono text-xl font-bold tabular-nums ${l>0?"text-danger":"text-muted-foreground"}`,children:l})]}),S.jsxs("div",{children:[S.jsx("span",{className:"text-xs uppercase tracking-widest text-muted-foreground block mb-1",children:"Todos"}),S.jsx("span",{className:`font-mono text-xl font-bold tabular-nums ${c>0?"text-warning":"text-muted-foreground"}`,children:c})]})]})]})]})}function J9(t){switch(t){case"complete":return"bg-success";case"partial":return"bg-accent";default:return"bg-muted-foreground/40"}}function eZ(t){switch(t){case"complete":return"bg-success";case"partial":return"bg-accent";default:return"bg-muted-foreground/40"}}function tZ({phaseName:t,phaseNumber:e,completedPlans:i,totalPlans:n,status:s,roadmapComplete:r,isCurrent:o,onClick:l,onToggleComplete:c}){const u=n>0?Math.round(i/n*100):0;return S.jsxs("button",{type:"button",onClick:()=>l(e),className:`group relative w-full text-left transition-colors duration-200 bg-background ${o?"border-l-2 border-l-accent":"border-l-2 border-l-transparent hover:border-l-accent/40"}`,children:[S.jsx("div",{className:"absolute inset-0 pointer-events-none opacity-0 group-hover:opacity-100 transition-opacity duration-200 bg-card-hover"}),S.jsxs("div",{className:"relative flex items-center gap-3 px-4 py-3",children:[c?S.jsx("input",{type:"checkbox",checked:r,onChange:d=>{d.stopPropagation(),c(e,d.target.checked)},onClick:d=>d.stopPropagation(),className:"h-3 w-3 shrink-0 cursor-pointer accent-accent",title:r?"Mark incomplete":"Mark complete"}):S.jsx("span",{className:`inline-block h-1.5 w-1.5 shrink-0 ${eZ(s)}`}),S.jsx("span",{className:`font-mono text-xs font-bold tabular-nums shrink-0 ${o?"text-accent":"text-muted-foreground"}`,children:e}),S.jsx("span",{className:"truncate text-sm text-foreground/90",children:t}),S.jsxs("span",{className:"ml-auto shrink-0 font-mono text-xs text-muted-foreground tabular-nums",children:[i,"/",n]})]}),S.jsx("div",{className:"h-px w-full bg-muted/50",children:S.jsx(Er.div,{className:`h-full ${J9(s)}`,initial:{width:0},animate:{width:`${u}%`},transition:{duration:.5,ease:"easeOut"}})})]})}function iZ({phases:t,currentPhase:e,onPhaseClick:i,onToggleComplete:n}){return S.jsxs("div",{className:"flex flex-col gap-4",children:[S.jsxs("div",{className:"flex items-center justify-between",children:[S.jsxs("div",{className:"flex items-center gap-3",children:[S.jsx("span",{className:"block w-6 h-px bg-accent"}),S.jsx("span",{className:"text-xs font-medium uppercase tracking-widest text-muted-foreground",children:"Phases"})]}),S.jsx("span",{className:"text-xs text-muted-foreground",children:t.length})]}),t.length===0?S.jsxs("div",{className:"flex flex-col items-center gap-3 border border-border px-4 py-10 text-center",children:[S.jsx("span",{className:"text-sm text-muted-foreground",children:"No project initialized yet."}),S.jsxs("span",{className:"text-sm text-muted-foreground",children:["Run"," ",S.jsx("code",{className:"bg-muted px-1.5 py-0.5 font-mono text-accent text-xs",children:"/maxsim:new-project"})," ","in Claude Code to get started."]})]}):S.jsx("div",{className:"flex flex-col gap-px bg-border",children:t.map(s=>S.jsx(tZ,{phaseNumber:s.number,phaseName:s.name,completedPlans:s.summaryCount,totalPlans:s.planCount,status:s.diskStatus,roadmapComplete:s.roadmapComplete,isCurrent:s.number===e,onClick:i,onToggleComplete:n},s.number))})]})}function U3(t){var e,i,n="";if(typeof t=="string"||typeof t=="number")n+=t;else if(typeof t=="object")if(Array.isArray(t)){var s=t.length;for(e=0;e{const i=new Array(t.length+e.length);for(let n=0;n({classGroupId:t,validator:e}),Y3=(t=new Map,e=null,i)=>({nextPart:t,validators:e,classGroupId:i}),vg="-",CA=[],oZ="arbitrary..",aZ=t=>{const e=cZ(t),{conflictingClassGroups:i,conflictingClassGroupModifiers:n}=t;return{getClassGroupId:o=>{if(o.startsWith("[")&&o.endsWith("]"))return lZ(o);const l=o.split(vg),c=l[0]===""&&l.length>1?1:0;return H3(l,c,e)},getConflictingClassGroupIds:(o,l)=>{if(l){const c=n[o],u=i[o];return c?u?sZ(u,c):c:u||CA}return i[o]||CA}}},H3=(t,e,i)=>{if(t.length-e===0)return i.classGroupId;const s=t[e],r=i.nextPart.get(s);if(r){const u=H3(t,e+1,r);if(u)return u}const o=i.validators;if(o===null)return;const l=e===0?t.join(vg):t.slice(e).join(vg),c=o.length;for(let u=0;ut.slice(1,-1).indexOf(":")===-1?void 0:(()=>{const e=t.slice(1,-1),i=e.indexOf(":"),n=e.slice(0,i);return n?oZ+n:void 0})(),cZ=t=>{const{theme:e,classGroups:i}=t;return hZ(i,e)},hZ=(t,e)=>{const i=Y3();for(const n in t){const s=t[n];kx(s,i,n,e)}return i},kx=(t,e,i,n)=>{const s=t.length;for(let r=0;r{if(typeof t=="string"){fZ(t,e,i);return}if(typeof t=="function"){dZ(t,e,i,n);return}pZ(t,e,i,n)},fZ=(t,e,i)=>{const n=t===""?e:F3(e,t);n.classGroupId=i},dZ=(t,e,i,n)=>{if(mZ(t)){kx(t(n),e,i,n);return}e.validators===null&&(e.validators=[]),e.validators.push(rZ(i,t))},pZ=(t,e,i,n)=>{const s=Object.entries(t),r=s.length;for(let o=0;o{let i=t;const n=e.split(vg),s=n.length;for(let r=0;r"isThemeGetter"in t&&t.isThemeGetter===!0,gZ=t=>{if(t<1)return{get:()=>{},set:()=>{}};let e=0,i=Object.create(null),n=Object.create(null);const s=(r,o)=>{i[r]=o,e++,e>t&&(e=0,n=i,i=Object.create(null))};return{get(r){let o=i[r];if(o!==void 0)return o;if((o=n[r])!==void 0)return s(r,o),o},set(r,o){r in i?i[r]=o:s(r,o)}}},V1="!",kA=":",OZ=[],TA=(t,e,i,n,s)=>({modifiers:t,hasImportantModifier:e,baseClassName:i,maybePostfixModifierPosition:n,isExternal:s}),vZ=t=>{const{prefix:e,experimentalParseClassName:i}=t;let n=s=>{const r=[];let o=0,l=0,c=0,u;const d=s.length;for(let b=0;bc?u-c:void 0;return TA(r,O,g,_)};if(e){const s=e+kA,r=n;n=o=>o.startsWith(s)?r(o.slice(s.length)):TA(OZ,!1,o,void 0,!0)}if(i){const s=n;n=r=>i({className:r,parseClassName:s})}return n},_Z=t=>{const e=new Map;return t.orderSensitiveModifiers.forEach((i,n)=>{e.set(i,1e6+n)}),i=>{const n=[];let s=[];for(let r=0;r0&&(s.sort(),n.push(...s),s=[]),n.push(o)):s.push(o)}return s.length>0&&(s.sort(),n.push(...s)),n}},yZ=t=>({cache:gZ(t.cacheSize),parseClassName:vZ(t),sortModifiers:_Z(t),...aZ(t)}),bZ=/\s+/,SZ=(t,e)=>{const{parseClassName:i,getClassGroupId:n,getConflictingClassGroupIds:s,sortModifiers:r}=e,o=[],l=t.trim().split(bZ);let c="";for(let u=l.length-1;u>=0;u-=1){const d=l[u],{isExternal:p,modifiers:g,hasImportantModifier:O,baseClassName:_,maybePostfixModifierPosition:b}=i(d);if(p){c=d+(c.length>0?" "+c:c);continue}let x=!!b,w=n(x?_.substring(0,b):_);if(!w){if(!x){c=d+(c.length>0?" "+c:c);continue}if(w=n(_),!w){c=d+(c.length>0?" "+c:c);continue}x=!1}const k=g.length===0?"":g.length===1?g[0]:r(g).join(":"),T=O?k+V1:k,A=T+w;if(o.indexOf(A)>-1)continue;o.push(A);const Q=s(w,x);for(let E=0;E0?" "+c:c)}return c},xZ=(...t)=>{let e=0,i,n,s="";for(;e{if(typeof t=="string")return t;let e,i="";for(let n=0;n{let i,n,s,r;const o=c=>{const u=e.reduce((d,p)=>p(d),t());return i=yZ(u),n=i.cache.get,s=i.cache.set,r=l,l(c)},l=c=>{const u=n(c);if(u)return u;const d=SZ(c,i);return s(c,d),d};return r=o,(...c)=>r(xZ(...c))},CZ=[],pi=t=>{const e=i=>i[t]||CZ;return e.isThemeGetter=!0,e},K3=/^\[(?:(\w[\w-]*):)?(.+)\]$/i,J3=/^\((?:(\w[\w-]*):)?(.+)\)$/i,kZ=/^\d+(?:\.\d+)?\/\d+(?:\.\d+)?$/,TZ=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,AZ=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,EZ=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/,MZ=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,PZ=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,ta=t=>kZ.test(t),We=t=>!!t&&!Number.isNaN(Number(t)),ia=t=>!!t&&Number.isInteger(Number(t)),v_=t=>t.endsWith("%")&&We(t.slice(0,-1)),no=t=>TZ.test(t),eD=()=>!0,RZ=t=>AZ.test(t)&&!EZ.test(t),Tx=()=>!1,QZ=t=>MZ.test(t),LZ=t=>PZ.test(t),DZ=t=>!ke(t)&&!Ae(t),BZ=t=>Ra(t,nD,Tx),ke=t=>K3.test(t),tl=t=>Ra(t,sD,RZ),AA=t=>Ra(t,ZZ,We),$Z=t=>Ra(t,oD,eD),NZ=t=>Ra(t,rD,Tx),EA=t=>Ra(t,tD,Tx),zZ=t=>Ra(t,iD,LZ),Yp=t=>Ra(t,aD,QZ),Ae=t=>J3.test(t),Cu=t=>Ql(t,sD),jZ=t=>Ql(t,rD),MA=t=>Ql(t,tD),IZ=t=>Ql(t,nD),VZ=t=>Ql(t,iD),Hp=t=>Ql(t,aD,!0),XZ=t=>Ql(t,oD,!0),Ra=(t,e,i)=>{const n=K3.exec(t);return n?n[1]?e(n[1]):i(n[2]):!1},Ql=(t,e,i=!1)=>{const n=J3.exec(t);return n?n[1]?e(n[1]):i:!1},tD=t=>t==="position"||t==="percentage",iD=t=>t==="image"||t==="url",nD=t=>t==="length"||t==="size"||t==="bg-size",sD=t=>t==="length",ZZ=t=>t==="number",rD=t=>t==="family-name",oD=t=>t==="number"||t==="weight",aD=t=>t==="shadow",qZ=()=>{const t=pi("color"),e=pi("font"),i=pi("text"),n=pi("font-weight"),s=pi("tracking"),r=pi("leading"),o=pi("breakpoint"),l=pi("container"),c=pi("spacing"),u=pi("radius"),d=pi("shadow"),p=pi("inset-shadow"),g=pi("text-shadow"),O=pi("drop-shadow"),_=pi("blur"),b=pi("perspective"),x=pi("aspect"),w=pi("ease"),k=pi("animate"),T=()=>["auto","avoid","all","avoid-page","page","left","right","column"],A=()=>["center","top","bottom","left","right","top-left","left-top","top-right","right-top","bottom-right","right-bottom","bottom-left","left-bottom"],Q=()=>[...A(),Ae,ke],E=()=>["auto","hidden","clip","visible","scroll"],N=()=>["auto","contain","none"],z=()=>[Ae,ke,c],q=()=>[ta,"full","auto",...z()],J=()=>[ia,"none","subgrid",Ae,ke],U=()=>["auto",{span:["full",ia,Ae,ke]},ia,Ae,ke],R=()=>[ia,"auto",Ae,ke],B=()=>["auto","min","max","fr",Ae,ke],j=()=>["start","end","center","between","around","evenly","stretch","baseline","center-safe","end-safe"],$=()=>["start","end","center","stretch","center-safe","end-safe"],D=()=>["auto",...z()],Z=()=>[ta,"auto","full","dvw","dvh","lvw","lvh","svw","svh","min","max","fit",...z()],H=()=>[ta,"screen","full","dvw","lvw","svw","min","max","fit",...z()],F=()=>[ta,"screen","full","lh","dvh","lvh","svh","min","max","fit",...z()],M=()=>[t,Ae,ke],I=()=>[...A(),MA,EA,{position:[Ae,ke]}],K=()=>["no-repeat",{repeat:["","x","y","space","round"]}],L=()=>["auto","cover","contain",IZ,BZ,{size:[Ae,ke]}],ue=()=>[v_,Cu,tl],he=()=>["","none","full",u,Ae,ke],fe=()=>["",We,Cu,tl],Oe=()=>["solid","dashed","dotted","double"],Ce=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],ye=()=>[We,v_,MA,EA],nt=()=>["","none",_,Ae,ke],Qt=()=>["none",We,Ae,ke],Yt=()=>["none",We,Ae,ke],ei=()=>[We,Ae,ke],Le=()=>[ta,"full",...z()];return{cacheSize:500,theme:{animate:["spin","ping","pulse","bounce"],aspect:["video"],blur:[no],breakpoint:[no],color:[eD],container:[no],"drop-shadow":[no],ease:["in","out","in-out"],font:[DZ],"font-weight":["thin","extralight","light","normal","medium","semibold","bold","extrabold","black"],"inset-shadow":[no],leading:["none","tight","snug","normal","relaxed","loose"],perspective:["dramatic","near","normal","midrange","distant","none"],radius:[no],shadow:[no],spacing:["px",We],text:[no],"text-shadow":[no],tracking:["tighter","tight","normal","wide","wider","widest"]},classGroups:{aspect:[{aspect:["auto","square",ta,ke,Ae,x]}],container:["container"],columns:[{columns:[We,ke,Ae,l]}],"break-after":[{"break-after":T()}],"break-before":[{"break-before":T()}],"break-inside":[{"break-inside":["auto","avoid","avoid-page","avoid-column"]}],"box-decoration":[{"box-decoration":["slice","clone"]}],box:[{box:["border","content"]}],display:["block","inline-block","inline","flex","inline-flex","table","inline-table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row-group","table-row","flow-root","grid","inline-grid","contents","list-item","hidden"],sr:["sr-only","not-sr-only"],float:[{float:["right","left","none","start","end"]}],clear:[{clear:["left","right","both","none","start","end"]}],isolation:["isolate","isolation-auto"],"object-fit":[{object:["contain","cover","fill","none","scale-down"]}],"object-position":[{object:Q()}],overflow:[{overflow:E()}],"overflow-x":[{"overflow-x":E()}],"overflow-y":[{"overflow-y":E()}],overscroll:[{overscroll:N()}],"overscroll-x":[{"overscroll-x":N()}],"overscroll-y":[{"overscroll-y":N()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:q()}],"inset-x":[{"inset-x":q()}],"inset-y":[{"inset-y":q()}],start:[{"inset-s":q(),start:q()}],end:[{"inset-e":q(),end:q()}],"inset-bs":[{"inset-bs":q()}],"inset-be":[{"inset-be":q()}],top:[{top:q()}],right:[{right:q()}],bottom:[{bottom:q()}],left:[{left:q()}],visibility:["visible","invisible","collapse"],z:[{z:[ia,"auto",Ae,ke]}],basis:[{basis:[ta,"full","auto",l,...z()]}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["nowrap","wrap","wrap-reverse"]}],flex:[{flex:[We,ta,"auto","initial","none",ke]}],grow:[{grow:["",We,Ae,ke]}],shrink:[{shrink:["",We,Ae,ke]}],order:[{order:[ia,"first","last","none",Ae,ke]}],"grid-cols":[{"grid-cols":J()}],"col-start-end":[{col:U()}],"col-start":[{"col-start":R()}],"col-end":[{"col-end":R()}],"grid-rows":[{"grid-rows":J()}],"row-start-end":[{row:U()}],"row-start":[{"row-start":R()}],"row-end":[{"row-end":R()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":B()}],"auto-rows":[{"auto-rows":B()}],gap:[{gap:z()}],"gap-x":[{"gap-x":z()}],"gap-y":[{"gap-y":z()}],"justify-content":[{justify:[...j(),"normal"]}],"justify-items":[{"justify-items":[...$(),"normal"]}],"justify-self":[{"justify-self":["auto",...$()]}],"align-content":[{content:["normal",...j()]}],"align-items":[{items:[...$(),{baseline:["","last"]}]}],"align-self":[{self:["auto",...$(),{baseline:["","last"]}]}],"place-content":[{"place-content":j()}],"place-items":[{"place-items":[...$(),"baseline"]}],"place-self":[{"place-self":["auto",...$()]}],p:[{p:z()}],px:[{px:z()}],py:[{py:z()}],ps:[{ps:z()}],pe:[{pe:z()}],pbs:[{pbs:z()}],pbe:[{pbe:z()}],pt:[{pt:z()}],pr:[{pr:z()}],pb:[{pb:z()}],pl:[{pl:z()}],m:[{m:D()}],mx:[{mx:D()}],my:[{my:D()}],ms:[{ms:D()}],me:[{me:D()}],mbs:[{mbs:D()}],mbe:[{mbe:D()}],mt:[{mt:D()}],mr:[{mr:D()}],mb:[{mb:D()}],ml:[{ml:D()}],"space-x":[{"space-x":z()}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":z()}],"space-y-reverse":["space-y-reverse"],size:[{size:Z()}],"inline-size":[{inline:["auto",...H()]}],"min-inline-size":[{"min-inline":["auto",...H()]}],"max-inline-size":[{"max-inline":["none",...H()]}],"block-size":[{block:["auto",...F()]}],"min-block-size":[{"min-block":["auto",...F()]}],"max-block-size":[{"max-block":["none",...F()]}],w:[{w:[l,"screen",...Z()]}],"min-w":[{"min-w":[l,"screen","none",...Z()]}],"max-w":[{"max-w":[l,"screen","none","prose",{screen:[o]},...Z()]}],h:[{h:["screen","lh",...Z()]}],"min-h":[{"min-h":["screen","lh","none",...Z()]}],"max-h":[{"max-h":["screen","lh",...Z()]}],"font-size":[{text:["base",i,Cu,tl]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:[n,XZ,$Z]}],"font-stretch":[{"font-stretch":["ultra-condensed","extra-condensed","condensed","semi-condensed","normal","semi-expanded","expanded","extra-expanded","ultra-expanded",v_,ke]}],"font-family":[{font:[jZ,NZ,e]}],"font-features":[{"font-features":[ke]}],"fvn-normal":["normal-nums"],"fvn-ordinal":["ordinal"],"fvn-slashed-zero":["slashed-zero"],"fvn-figure":["lining-nums","oldstyle-nums"],"fvn-spacing":["proportional-nums","tabular-nums"],"fvn-fraction":["diagonal-fractions","stacked-fractions"],tracking:[{tracking:[s,Ae,ke]}],"line-clamp":[{"line-clamp":[We,"none",Ae,AA]}],leading:[{leading:[r,...z()]}],"list-image":[{"list-image":["none",Ae,ke]}],"list-style-position":[{list:["inside","outside"]}],"list-style-type":[{list:["disc","decimal","none",Ae,ke]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"placeholder-color":[{placeholder:M()}],"text-color":[{text:M()}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...Oe(),"wavy"]}],"text-decoration-thickness":[{decoration:[We,"from-font","auto",Ae,tl]}],"text-decoration-color":[{decoration:M()}],"underline-offset":[{"underline-offset":[We,"auto",Ae,ke]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:z()}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",Ae,ke]}],whitespace:[{whitespace:["normal","nowrap","pre","pre-line","pre-wrap","break-spaces"]}],break:[{break:["normal","words","all","keep"]}],wrap:[{wrap:["break-word","anywhere","normal"]}],hyphens:[{hyphens:["none","manual","auto"]}],content:[{content:["none",Ae,ke]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:I()}],"bg-repeat":[{bg:K()}],"bg-size":[{bg:L()}],"bg-image":[{bg:["none",{linear:[{to:["t","tr","r","br","b","bl","l","tl"]},ia,Ae,ke],radial:["",Ae,ke],conic:[ia,Ae,ke]},VZ,zZ]}],"bg-color":[{bg:M()}],"gradient-from-pos":[{from:ue()}],"gradient-via-pos":[{via:ue()}],"gradient-to-pos":[{to:ue()}],"gradient-from":[{from:M()}],"gradient-via":[{via:M()}],"gradient-to":[{to:M()}],rounded:[{rounded:he()}],"rounded-s":[{"rounded-s":he()}],"rounded-e":[{"rounded-e":he()}],"rounded-t":[{"rounded-t":he()}],"rounded-r":[{"rounded-r":he()}],"rounded-b":[{"rounded-b":he()}],"rounded-l":[{"rounded-l":he()}],"rounded-ss":[{"rounded-ss":he()}],"rounded-se":[{"rounded-se":he()}],"rounded-ee":[{"rounded-ee":he()}],"rounded-es":[{"rounded-es":he()}],"rounded-tl":[{"rounded-tl":he()}],"rounded-tr":[{"rounded-tr":he()}],"rounded-br":[{"rounded-br":he()}],"rounded-bl":[{"rounded-bl":he()}],"border-w":[{border:fe()}],"border-w-x":[{"border-x":fe()}],"border-w-y":[{"border-y":fe()}],"border-w-s":[{"border-s":fe()}],"border-w-e":[{"border-e":fe()}],"border-w-bs":[{"border-bs":fe()}],"border-w-be":[{"border-be":fe()}],"border-w-t":[{"border-t":fe()}],"border-w-r":[{"border-r":fe()}],"border-w-b":[{"border-b":fe()}],"border-w-l":[{"border-l":fe()}],"divide-x":[{"divide-x":fe()}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":fe()}],"divide-y-reverse":["divide-y-reverse"],"border-style":[{border:[...Oe(),"hidden","none"]}],"divide-style":[{divide:[...Oe(),"hidden","none"]}],"border-color":[{border:M()}],"border-color-x":[{"border-x":M()}],"border-color-y":[{"border-y":M()}],"border-color-s":[{"border-s":M()}],"border-color-e":[{"border-e":M()}],"border-color-bs":[{"border-bs":M()}],"border-color-be":[{"border-be":M()}],"border-color-t":[{"border-t":M()}],"border-color-r":[{"border-r":M()}],"border-color-b":[{"border-b":M()}],"border-color-l":[{"border-l":M()}],"divide-color":[{divide:M()}],"outline-style":[{outline:[...Oe(),"none","hidden"]}],"outline-offset":[{"outline-offset":[We,Ae,ke]}],"outline-w":[{outline:["",We,Cu,tl]}],"outline-color":[{outline:M()}],shadow:[{shadow:["","none",d,Hp,Yp]}],"shadow-color":[{shadow:M()}],"inset-shadow":[{"inset-shadow":["none",p,Hp,Yp]}],"inset-shadow-color":[{"inset-shadow":M()}],"ring-w":[{ring:fe()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:M()}],"ring-offset-w":[{"ring-offset":[We,tl]}],"ring-offset-color":[{"ring-offset":M()}],"inset-ring-w":[{"inset-ring":fe()}],"inset-ring-color":[{"inset-ring":M()}],"text-shadow":[{"text-shadow":["none",g,Hp,Yp]}],"text-shadow-color":[{"text-shadow":M()}],opacity:[{opacity:[We,Ae,ke]}],"mix-blend":[{"mix-blend":[...Ce(),"plus-darker","plus-lighter"]}],"bg-blend":[{"bg-blend":Ce()}],"mask-clip":[{"mask-clip":["border","padding","content","fill","stroke","view"]},"mask-no-clip"],"mask-composite":[{mask:["add","subtract","intersect","exclude"]}],"mask-image-linear-pos":[{"mask-linear":[We]}],"mask-image-linear-from-pos":[{"mask-linear-from":ye()}],"mask-image-linear-to-pos":[{"mask-linear-to":ye()}],"mask-image-linear-from-color":[{"mask-linear-from":M()}],"mask-image-linear-to-color":[{"mask-linear-to":M()}],"mask-image-t-from-pos":[{"mask-t-from":ye()}],"mask-image-t-to-pos":[{"mask-t-to":ye()}],"mask-image-t-from-color":[{"mask-t-from":M()}],"mask-image-t-to-color":[{"mask-t-to":M()}],"mask-image-r-from-pos":[{"mask-r-from":ye()}],"mask-image-r-to-pos":[{"mask-r-to":ye()}],"mask-image-r-from-color":[{"mask-r-from":M()}],"mask-image-r-to-color":[{"mask-r-to":M()}],"mask-image-b-from-pos":[{"mask-b-from":ye()}],"mask-image-b-to-pos":[{"mask-b-to":ye()}],"mask-image-b-from-color":[{"mask-b-from":M()}],"mask-image-b-to-color":[{"mask-b-to":M()}],"mask-image-l-from-pos":[{"mask-l-from":ye()}],"mask-image-l-to-pos":[{"mask-l-to":ye()}],"mask-image-l-from-color":[{"mask-l-from":M()}],"mask-image-l-to-color":[{"mask-l-to":M()}],"mask-image-x-from-pos":[{"mask-x-from":ye()}],"mask-image-x-to-pos":[{"mask-x-to":ye()}],"mask-image-x-from-color":[{"mask-x-from":M()}],"mask-image-x-to-color":[{"mask-x-to":M()}],"mask-image-y-from-pos":[{"mask-y-from":ye()}],"mask-image-y-to-pos":[{"mask-y-to":ye()}],"mask-image-y-from-color":[{"mask-y-from":M()}],"mask-image-y-to-color":[{"mask-y-to":M()}],"mask-image-radial":[{"mask-radial":[Ae,ke]}],"mask-image-radial-from-pos":[{"mask-radial-from":ye()}],"mask-image-radial-to-pos":[{"mask-radial-to":ye()}],"mask-image-radial-from-color":[{"mask-radial-from":M()}],"mask-image-radial-to-color":[{"mask-radial-to":M()}],"mask-image-radial-shape":[{"mask-radial":["circle","ellipse"]}],"mask-image-radial-size":[{"mask-radial":[{closest:["side","corner"],farthest:["side","corner"]}]}],"mask-image-radial-pos":[{"mask-radial-at":A()}],"mask-image-conic-pos":[{"mask-conic":[We]}],"mask-image-conic-from-pos":[{"mask-conic-from":ye()}],"mask-image-conic-to-pos":[{"mask-conic-to":ye()}],"mask-image-conic-from-color":[{"mask-conic-from":M()}],"mask-image-conic-to-color":[{"mask-conic-to":M()}],"mask-mode":[{mask:["alpha","luminance","match"]}],"mask-origin":[{"mask-origin":["border","padding","content","fill","stroke","view"]}],"mask-position":[{mask:I()}],"mask-repeat":[{mask:K()}],"mask-size":[{mask:L()}],"mask-type":[{"mask-type":["alpha","luminance"]}],"mask-image":[{mask:["none",Ae,ke]}],filter:[{filter:["","none",Ae,ke]}],blur:[{blur:nt()}],brightness:[{brightness:[We,Ae,ke]}],contrast:[{contrast:[We,Ae,ke]}],"drop-shadow":[{"drop-shadow":["","none",O,Hp,Yp]}],"drop-shadow-color":[{"drop-shadow":M()}],grayscale:[{grayscale:["",We,Ae,ke]}],"hue-rotate":[{"hue-rotate":[We,Ae,ke]}],invert:[{invert:["",We,Ae,ke]}],saturate:[{saturate:[We,Ae,ke]}],sepia:[{sepia:["",We,Ae,ke]}],"backdrop-filter":[{"backdrop-filter":["","none",Ae,ke]}],"backdrop-blur":[{"backdrop-blur":nt()}],"backdrop-brightness":[{"backdrop-brightness":[We,Ae,ke]}],"backdrop-contrast":[{"backdrop-contrast":[We,Ae,ke]}],"backdrop-grayscale":[{"backdrop-grayscale":["",We,Ae,ke]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[We,Ae,ke]}],"backdrop-invert":[{"backdrop-invert":["",We,Ae,ke]}],"backdrop-opacity":[{"backdrop-opacity":[We,Ae,ke]}],"backdrop-saturate":[{"backdrop-saturate":[We,Ae,ke]}],"backdrop-sepia":[{"backdrop-sepia":["",We,Ae,ke]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":z()}],"border-spacing-x":[{"border-spacing-x":z()}],"border-spacing-y":[{"border-spacing-y":z()}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["","all","colors","opacity","shadow","transform","none",Ae,ke]}],"transition-behavior":[{transition:["normal","discrete"]}],duration:[{duration:[We,"initial",Ae,ke]}],ease:[{ease:["linear","initial",w,Ae,ke]}],delay:[{delay:[We,Ae,ke]}],animate:[{animate:["none",k,Ae,ke]}],backface:[{backface:["hidden","visible"]}],perspective:[{perspective:[b,Ae,ke]}],"perspective-origin":[{"perspective-origin":Q()}],rotate:[{rotate:Qt()}],"rotate-x":[{"rotate-x":Qt()}],"rotate-y":[{"rotate-y":Qt()}],"rotate-z":[{"rotate-z":Qt()}],scale:[{scale:Yt()}],"scale-x":[{"scale-x":Yt()}],"scale-y":[{"scale-y":Yt()}],"scale-z":[{"scale-z":Yt()}],"scale-3d":["scale-3d"],skew:[{skew:ei()}],"skew-x":[{"skew-x":ei()}],"skew-y":[{"skew-y":ei()}],transform:[{transform:[Ae,ke,"","none","gpu","cpu"]}],"transform-origin":[{origin:Q()}],"transform-style":[{transform:["3d","flat"]}],translate:[{translate:Le()}],"translate-x":[{"translate-x":Le()}],"translate-y":[{"translate-y":Le()}],"translate-z":[{"translate-z":Le()}],"translate-none":["translate-none"],accent:[{accent:M()}],appearance:[{appearance:["none","auto"]}],"caret-color":[{caret:M()}],"color-scheme":[{scheme:["normal","dark","light","light-dark","only-dark","only-light"]}],cursor:[{cursor:["auto","default","pointer","wait","text","move","help","not-allowed","none","context-menu","progress","cell","crosshair","vertical-text","alias","copy","no-drop","grab","grabbing","all-scroll","col-resize","row-resize","n-resize","e-resize","s-resize","w-resize","ne-resize","nw-resize","se-resize","sw-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","zoom-in","zoom-out",Ae,ke]}],"field-sizing":[{"field-sizing":["fixed","content"]}],"pointer-events":[{"pointer-events":["auto","none"]}],resize:[{resize:["none","","y","x"]}],"scroll-behavior":[{scroll:["auto","smooth"]}],"scroll-m":[{"scroll-m":z()}],"scroll-mx":[{"scroll-mx":z()}],"scroll-my":[{"scroll-my":z()}],"scroll-ms":[{"scroll-ms":z()}],"scroll-me":[{"scroll-me":z()}],"scroll-mbs":[{"scroll-mbs":z()}],"scroll-mbe":[{"scroll-mbe":z()}],"scroll-mt":[{"scroll-mt":z()}],"scroll-mr":[{"scroll-mr":z()}],"scroll-mb":[{"scroll-mb":z()}],"scroll-ml":[{"scroll-ml":z()}],"scroll-p":[{"scroll-p":z()}],"scroll-px":[{"scroll-px":z()}],"scroll-py":[{"scroll-py":z()}],"scroll-ps":[{"scroll-ps":z()}],"scroll-pe":[{"scroll-pe":z()}],"scroll-pbs":[{"scroll-pbs":z()}],"scroll-pbe":[{"scroll-pbe":z()}],"scroll-pt":[{"scroll-pt":z()}],"scroll-pr":[{"scroll-pr":z()}],"scroll-pb":[{"scroll-pb":z()}],"scroll-pl":[{"scroll-pl":z()}],"snap-align":[{snap:["start","end","center","align-none"]}],"snap-stop":[{snap:["normal","always"]}],"snap-type":[{snap:["none","x","y","both"]}],"snap-strictness":[{snap:["mandatory","proximity"]}],touch:[{touch:["auto","none","manipulation"]}],"touch-x":[{"touch-pan":["x","left","right"]}],"touch-y":[{"touch-pan":["y","up","down"]}],"touch-pz":["touch-pinch-zoom"],select:[{select:["none","text","all","auto"]}],"will-change":[{"will-change":["auto","scroll","contents","transform",Ae,ke]}],fill:[{fill:["none",...M()]}],"stroke-w":[{stroke:[We,Cu,tl,AA]}],stroke:[{stroke:["none",...M()]}],"forced-color-adjust":[{"forced-color-adjust":["auto","none"]}]},conflictingClassGroups:{overflow:["overflow-x","overflow-y"],overscroll:["overscroll-x","overscroll-y"],inset:["inset-x","inset-y","inset-bs","inset-be","start","end","top","right","bottom","left"],"inset-x":["right","left"],"inset-y":["top","bottom"],flex:["basis","grow","shrink"],gap:["gap-x","gap-y"],p:["px","py","ps","pe","pbs","pbe","pt","pr","pb","pl"],px:["pr","pl"],py:["pt","pb"],m:["mx","my","ms","me","mbs","mbe","mt","mr","mb","ml"],mx:["mr","ml"],my:["mt","mb"],size:["w","h"],"font-size":["leading"],"fvn-normal":["fvn-ordinal","fvn-slashed-zero","fvn-figure","fvn-spacing","fvn-fraction"],"fvn-ordinal":["fvn-normal"],"fvn-slashed-zero":["fvn-normal"],"fvn-figure":["fvn-normal"],"fvn-spacing":["fvn-normal"],"fvn-fraction":["fvn-normal"],"line-clamp":["display","overflow"],rounded:["rounded-s","rounded-e","rounded-t","rounded-r","rounded-b","rounded-l","rounded-ss","rounded-se","rounded-ee","rounded-es","rounded-tl","rounded-tr","rounded-br","rounded-bl"],"rounded-s":["rounded-ss","rounded-es"],"rounded-e":["rounded-se","rounded-ee"],"rounded-t":["rounded-tl","rounded-tr"],"rounded-r":["rounded-tr","rounded-br"],"rounded-b":["rounded-br","rounded-bl"],"rounded-l":["rounded-tl","rounded-bl"],"border-spacing":["border-spacing-x","border-spacing-y"],"border-w":["border-w-x","border-w-y","border-w-s","border-w-e","border-w-bs","border-w-be","border-w-t","border-w-r","border-w-b","border-w-l"],"border-w-x":["border-w-r","border-w-l"],"border-w-y":["border-w-t","border-w-b"],"border-color":["border-color-x","border-color-y","border-color-s","border-color-e","border-color-bs","border-color-be","border-color-t","border-color-r","border-color-b","border-color-l"],"border-color-x":["border-color-r","border-color-l"],"border-color-y":["border-color-t","border-color-b"],translate:["translate-x","translate-y","translate-none"],"translate-none":["translate","translate-x","translate-y","translate-z"],"scroll-m":["scroll-mx","scroll-my","scroll-ms","scroll-me","scroll-mbs","scroll-mbe","scroll-mt","scroll-mr","scroll-mb","scroll-ml"],"scroll-mx":["scroll-mr","scroll-ml"],"scroll-my":["scroll-mt","scroll-mb"],"scroll-p":["scroll-px","scroll-py","scroll-ps","scroll-pe","scroll-pbs","scroll-pbe","scroll-pt","scroll-pr","scroll-pb","scroll-pl"],"scroll-px":["scroll-pr","scroll-pl"],"scroll-py":["scroll-pt","scroll-pb"],touch:["touch-x","touch-y","touch-pz"],"touch-x":["touch"],"touch-y":["touch"],"touch-pz":["touch"]},conflictingClassGroupModifiers:{"font-size":["leading"]},orderSensitiveModifiers:["*","**","after","backdrop","before","details-content","file","first-letter","first-line","marker","placeholder","selection"]}},WZ=wZ(qZ);function Ze(...t){return WZ(nZ(t))}function UZ(t){const[e,i]=X.useState(null),[n,s]=X.useState(!1),[r,o]=X.useState(null),{lastChange:l}=Qr(),c=X.useCallback(async()=>{if(!t){i(null),s(!1),o(null);return}s(!0),o(null);try{const u=await fetch(`/api/phase/${encodeURIComponent(t)}`);if(!u.ok){const p=await u.json().catch(()=>({}));throw new Error(p.error||`Failed to fetch phase ${t} (${u.status})`)}const d=await u.json();i(d)}catch(u){o(u instanceof Error?u.message:"Unknown error")}finally{s(!1)}},[t]);return X.useEffect(()=>{c()},[c]),X.useEffect(()=>{l>0&&c()},[l,c]),{plans:(e==null?void 0:e.plans)??[],context:(e==null?void 0:e.context)??null,research:(e==null?void 0:e.research)??null,loading:n,error:r,refetch:c}}function YZ({tasks:t,planPath:e,planContent:i,onContentChange:n}){const s=X.useCallback(async r=>{const o=t[r];if(!o)return;let l=i;const c=o.name.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),d=new RegExp(`\\s*${c}\\s*`).exec(l);if(d){const p=l.slice(d.index),g=p.match(/([\s\S]*?)<\/done>/);if(g){const O=g[1],_=d.index+p.indexOf(g[0]),b=_+g[0].length,x=/^\s*\[x\]/i.test(O);let w;x?w=O.replace(/^\s*\[x\]\s*/i,""):w=`[x] ${O.trim()}`,l=l.slice(0,_)+`${w}`+l.slice(b)}}if(l!==i){n(l);try{const g=e.replace(/^\.planning[\\/]/,"").split(/[\\/]/);await fetch(`/api/plan/${g.join("/")}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({content:l})})}catch(p){console.error("[task-list] Failed to write checkbox change:",p)}}},[t,e,i,n]);return t.length===0?S.jsx("p",{className:"text-sm text-muted-foreground italic",children:"No tasks defined"}):S.jsx("div",{className:"space-y-1",children:t.map((r,o)=>S.jsxs("div",{className:Ze("flex items-start gap-2 py-1 px-2 rounded-md transition-colors","hover:bg-muted/50",r.completed&&"opacity-60"),children:[S.jsx("button",{type:"button",onClick:()=>s(o),className:Ze("mt-0.5 flex-shrink-0 w-4 h-4 rounded-sm border transition-colors","focus:outline-none focus:ring-2 focus:ring-accent/50",r.completed?"bg-success border-success text-background":"border-muted-foreground hover:border-accent"),"aria-label":`Toggle ${r.name}`,children:r.completed&&S.jsx("svg",{className:"w-4 h-4",viewBox:"0 0 16 16",fill:"none",stroke:"currentColor",strokeWidth:"2",children:S.jsx("path",{d:"M3 8l3 3 7-7"})})}),S.jsxs("div",{className:"flex-1 min-w-0",children:[S.jsxs("div",{className:"flex items-center gap-2",children:[S.jsx("span",{className:Ze("text-sm font-sans",r.completed&&"line-through text-muted-foreground"),children:r.name}),S.jsx("span",{className:Ze("text-xs px-1.5 py-0.5 rounded-sm font-mono",r.type.startsWith("checkpoint")?"bg-warning/20 text-warning":"bg-muted text-muted-foreground"),children:r.type})]}),r.files.length>0&&S.jsx("div",{className:"mt-0.5",children:r.files.map((l,c)=>S.jsx("span",{className:"text-xs font-mono text-muted-foreground mr-2",children:l},c))})]})]},o))})}function HZ({plan:t,onEdit:e}){const[i,n]=X.useState(t.content),s=t.frontmatter,r=s.plan??"?",o=s.wave,l=s.autonomous,c=s.depends_on??[],u=s.files_modified??[];let d="";const p=t.content.match(/([\s\S]*?)<\/objective>/);if(p){const _=p[1].trim().split(` +`)[0];d=_.length>120?_.slice(0,117)+"...":_}const g=X.useCallback(O=>{n(O)},[]);return S.jsxs("div",{className:"border border-border bg-card transition-colors hover:bg-card-hover",children:[S.jsxs("div",{className:"flex items-center justify-between border-b border-border px-4 py-3",children:[S.jsxs("div",{className:"flex items-center gap-3",children:[S.jsxs("span",{className:"font-mono text-sm font-bold text-accent tabular-nums",children:["#",String(r).padStart(2,"0")]}),o!==void 0&&S.jsxs("span",{className:"font-mono text-[9px] uppercase tracking-widest px-1.5 py-0.5 border border-accent/20 text-accent/70",children:["Wave ",o]}),l&&S.jsx("span",{className:"font-mono text-[9px] uppercase tracking-widest px-1.5 py-0.5 border border-success/20 text-success",children:"Auto"})]}),S.jsx("button",{type:"button",onClick:()=>e(t.path),className:Ze("font-mono text-[10px] uppercase tracking-widest px-3 py-1","border border-border text-muted-foreground","hover:border-accent hover:text-accent","transition-colors"),children:"Edit"})]}),S.jsxs("div",{className:"px-4 py-3",children:[d&&S.jsx("p",{className:"text-sm text-muted-foreground mb-3 leading-relaxed",children:d}),S.jsxs("div",{className:"flex gap-4 mb-3 font-mono text-[10px] text-muted-foreground",children:[c.length>0&&S.jsxs("span",{children:["deps: ",c.join(", ")]}),u.length>0&&S.jsxs("span",{children:[u.length," file",u.length!==1?"s":""]}),S.jsxs("span",{children:[t.tasks.length," task",t.tasks.length!==1?"s":""]})]}),S.jsx(YZ,{tasks:t.tasks,planPath:t.path,planContent:i,onContentChange:g})]})]})}function X1(){return X1=Object.assign?Object.assign.bind():function(t){for(var e=1;e{let t="lc,34,7n,7,7b,19,,,,2,,2,,,20,b,1c,l,g,,2t,7,2,6,2,2,,4,z,,u,r,2j,b,1m,9,9,,o,4,,9,,3,,5,17,3,3b,f,,w,1j,,,,4,8,4,,3,7,a,2,t,,1m,,,,2,4,8,,9,,a,2,q,,2,2,1l,,4,2,4,2,2,3,3,,u,2,3,,b,2,1l,,4,5,,2,4,,k,2,m,6,,,1m,,,2,,4,8,,7,3,a,2,u,,1n,,,,c,,9,,14,,3,,1l,3,5,3,,4,7,2,b,2,t,,1m,,2,,2,,3,,5,2,7,2,b,2,s,2,1l,2,,,2,4,8,,9,,a,2,t,,20,,4,,2,3,,,8,,29,,2,7,c,8,2q,,2,9,b,6,22,2,r,,,,,,1j,e,,5,,2,5,b,,10,9,,2u,4,,6,,2,2,2,p,2,4,3,g,4,d,,2,2,6,,f,,jj,3,qa,3,t,3,t,2,u,2,1s,2,,7,8,,2,b,9,,19,3,3b,2,y,,3a,3,4,2,9,,6,3,63,2,2,,1m,,,7,,,,,2,8,6,a,2,,1c,h,1r,4,1c,7,,,5,,14,9,c,2,w,4,2,2,,3,1k,,,2,3,,,3,1m,8,2,2,48,3,,d,,7,4,,6,,3,2,5i,1m,,5,ek,,5f,x,2da,3,3x,,2o,w,fe,6,2x,2,n9w,4,,a,w,2,28,2,7k,,3,,4,,p,2,5,,47,2,q,i,d,,12,8,p,b,1a,3,1c,,2,4,2,2,13,,1v,6,2,2,2,2,c,,8,,1b,,1f,,,3,2,2,5,2,,,16,2,8,,6m,,2,,4,,fn4,,kh,g,g,g,a6,2,gt,,6a,,45,5,1ae,3,,2,5,4,14,3,4,,4l,2,fx,4,ar,2,49,b,4w,,1i,f,1k,3,1d,4,2,2,1x,3,10,5,,8,1q,,c,2,1g,9,a,4,2,,2n,3,2,,,2,6,,4g,,3,8,l,2,1l,2,,,,,m,,e,7,3,5,5f,8,2,3,,,n,,29,,2,6,,,2,,,2,,2,6j,,2,4,6,2,,2,r,2,2d,8,2,,,2,2y,,,,2,6,,,2t,3,2,4,,5,77,9,,2,6t,,a,2,,,4,,40,4,2,2,4,,w,a,14,6,2,4,8,,9,6,2,3,1a,d,,2,ba,7,,6,,,2a,m,2,7,,2,,2,3e,6,3,,,2,,7,,,20,2,3,,,,9n,2,f0b,5,1n,7,t4,,1r,4,29,,f5k,2,43q,,,3,4,5,8,8,2,7,u,4,44,3,1iz,1j,4,1e,8,,e,,m,5,,f,11s,7,,h,2,7,,2,,5,79,7,c5,4,15s,7,31,7,240,5,gx7k,2o,3k,6o".split(",").map(e=>e?parseInt(e,36):1);for(let e=0,i=0;e>1;if(t=lD[n])e=n+1;else return!0;if(e==i)return!1}}function PA(t){return t>=127462&&t<=127487}const RA=8205;function KZ(t,e,i=!0,n=!0){return(i?cD:JZ)(t,e,n)}function cD(t,e,i){if(e==t.length)return e;e&&hD(t.charCodeAt(e))&&uD(t.charCodeAt(e-1))&&e--;let n=__(t,e);for(e+=QA(n);e=0&&PA(__(t,o));)r++,o-=2;if(r%2==0)break;e+=2}else break}return e}function JZ(t,e,i){for(;e>0;){let n=cD(t,e-2,i);if(n=56320&&t<57344}function uD(t){return t>=55296&&t<56320}function QA(t){return t<65536?1:2}let at=class fD{lineAt(e){if(e<0||e>this.length)throw new RangeError(`Invalid position ${e} in document of length ${this.length}`);return this.lineInner(e,!1,1,0)}line(e){if(e<1||e>this.lines)throw new RangeError(`Invalid line number ${e} in ${this.lines}-line document`);return this.lineInner(e,!0,1,0)}replace(e,i,n){[e,i]=sh(this,e,i);let s=[];return this.decompose(0,e,s,2),n.length&&n.decompose(0,n.length,s,3),this.decompose(i,this.length,s,1),mr.from(s,this.length-(i-e)+n.length)}append(e){return this.replace(this.length,this.length,e)}slice(e,i=this.length){[e,i]=sh(this,e,i);let n=[];return this.decompose(e,i,n,0),mr.from(n,i-e)}eq(e){if(e==this)return!0;if(e.length!=this.length||e.lines!=this.lines)return!1;let i=this.scanIdentical(e,1),n=this.length-this.scanIdentical(e,-1),s=new ff(this),r=new ff(e);for(let o=i,l=i;;){if(s.next(o),r.next(o),o=0,s.lineBreak!=r.lineBreak||s.done!=r.done||s.value!=r.value)return!1;if(l+=s.value.length,s.done||l>=n)return!0}}iter(e=1){return new ff(this,e)}iterRange(e,i=this.length){return new dD(this,e,i)}iterLines(e,i){let n;if(e==null)n=this.iter();else{i==null&&(i=this.lines+1);let s=this.line(e).from;n=this.iterRange(s,Math.max(s,i==this.lines+1?this.length:i<=1?0:this.line(i-1).to))}return new pD(n)}toString(){return this.sliceString(0)}toJSON(){let e=[];return this.flatten(e),e}constructor(){}static of(e){if(e.length==0)throw new RangeError("A document must have at least one line");return e.length==1&&!e[0]?fD.empty:e.length<=32?new Kt(e):mr.from(Kt.split(e,[]))}};class Kt extends at{constructor(e,i=eq(e)){super(),this.text=e,this.length=i}get lines(){return this.text.length}get children(){return null}lineInner(e,i,n,s){for(let r=0;;r++){let o=this.text[r],l=s+o.length;if((i?n:l)>=e)return new tq(s,l,n,o);s=l+1,n++}}decompose(e,i,n,s){let r=e<=0&&i>=this.length?this:new Kt(LA(this.text,e,i),Math.min(i,this.length)-Math.max(0,e));if(s&1){let o=n.pop(),l=Im(r.text,o.text.slice(),0,r.length);if(l.length<=32)n.push(new Kt(l,o.length+r.length));else{let c=l.length>>1;n.push(new Kt(l.slice(0,c)),new Kt(l.slice(c)))}}else n.push(r)}replace(e,i,n){if(!(n instanceof Kt))return super.replace(e,i,n);[e,i]=sh(this,e,i);let s=Im(this.text,Im(n.text,LA(this.text,0,e)),i),r=this.length+n.length-(i-e);return s.length<=32?new Kt(s,r):mr.from(Kt.split(s,[]),r)}sliceString(e,i=this.length,n=` +`){[e,i]=sh(this,e,i);let s="";for(let r=0,o=0;r<=i&&oe&&o&&(s+=n),er&&(s+=l.slice(Math.max(0,e-r),i-r)),r=c+1}return s}flatten(e){for(let i of this.text)e.push(i)}scanIdentical(){return 0}static split(e,i){let n=[],s=-1;for(let r of e)n.push(r),s+=r.length+1,n.length==32&&(i.push(new Kt(n,s)),n=[],s=-1);return s>-1&&i.push(new Kt(n,s)),i}}class mr extends at{constructor(e,i){super(),this.children=e,this.length=i,this.lines=0;for(let n of e)this.lines+=n.lines}lineInner(e,i,n,s){for(let r=0;;r++){let o=this.children[r],l=s+o.length,c=n+o.lines-1;if((i?c:l)>=e)return o.lineInner(e,i,n,s);s=l+1,n=c+1}}decompose(e,i,n,s){for(let r=0,o=0;o<=i&&r=o){let u=s&((o<=e?1:0)|(c>=i?2:0));o>=e&&c<=i&&!u?n.push(l):l.decompose(e-o,i-o,n,u)}o=c+1}}replace(e,i,n){if([e,i]=sh(this,e,i),n.lines=r&&i<=l){let c=o.replace(e-r,i-r,n),u=this.lines-o.lines+c.lines;if(c.lines>4&&c.lines>u>>6){let d=this.children.slice();return d[s]=c,new mr(d,this.length-(i-e)+n.length)}return super.replace(r,l,c)}r=l+1}return super.replace(e,i,n)}sliceString(e,i=this.length,n=` +`){[e,i]=sh(this,e,i);let s="";for(let r=0,o=0;re&&r&&(s+=n),eo&&(s+=l.sliceString(e-o,i-o,n)),o=c+1}return s}flatten(e){for(let i of this.children)i.flatten(e)}scanIdentical(e,i){if(!(e instanceof mr))return 0;let n=0,[s,r,o,l]=i>0?[0,0,this.children.length,e.children.length]:[this.children.length-1,e.children.length-1,-1,-1];for(;;s+=i,r+=i){if(s==o||r==l)return n;let c=this.children[s],u=e.children[r];if(c!=u)return n+c.scanIdentical(u,i);n+=c.length+1}}static from(e,i=e.reduce((n,s)=>n+s.length+1,-1)){let n=0;for(let O of e)n+=O.lines;if(n<32){let O=[];for(let _ of e)_.flatten(O);return new Kt(O,i)}let s=Math.max(32,n>>5),r=s<<1,o=s>>1,l=[],c=0,u=-1,d=[];function p(O){let _;if(O.lines>r&&O instanceof mr)for(let b of O.children)p(b);else O.lines>o&&(c>o||!c)?(g(),l.push(O)):O instanceof Kt&&c&&(_=d[d.length-1])instanceof Kt&&O.lines+_.lines<=32?(c+=O.lines,u+=O.length+1,d[d.length-1]=new Kt(_.text.concat(O.text),_.length+1+O.length)):(c+O.lines>s&&g(),c+=O.lines,u+=O.length+1,d.push(O))}function g(){c!=0&&(l.push(d.length==1?d[0]:mr.from(d,u)),u=-1,c=d.length=0)}for(let O of e)p(O);return g(),l.length==1?l[0]:new mr(l,i)}}at.empty=new Kt([""],0);function eq(t){let e=-1;for(let i of t)e+=i.length+1;return e}function Im(t,e,i=0,n=1e9){for(let s=0,r=0,o=!0;r=i&&(c>n&&(l=l.slice(0,n-s)),s0?1:(e instanceof Kt?e.text.length:e.children.length)<<1]}nextInner(e,i){for(this.done=this.lineBreak=!1;;){let n=this.nodes.length-1,s=this.nodes[n],r=this.offsets[n],o=r>>1,l=s instanceof Kt?s.text.length:s.children.length;if(o==(i>0?l:0)){if(n==0)return this.done=!0,this.value="",this;i>0&&this.offsets[n-1]++,this.nodes.pop(),this.offsets.pop()}else if((r&1)==(i>0?0:1)){if(this.offsets[n]+=i,e==0)return this.lineBreak=!0,this.value=` +`,this;e--}else if(s instanceof Kt){let c=s.text[o+(i<0?-1:0)];if(this.offsets[n]+=i,c.length>Math.max(0,e))return this.value=e==0?c:i>0?c.slice(e):c.slice(0,c.length-e),this;e-=c.length}else{let c=s.children[o+(i<0?-1:0)];e>c.length?(e-=c.length,this.offsets[n]+=i):(i<0&&this.offsets[n]--,this.nodes.push(c),this.offsets.push(i>0?1:(c instanceof Kt?c.text.length:c.children.length)<<1))}}}next(e=0){return e<0&&(this.nextInner(-e,-this.dir),e=this.value.length),this.nextInner(e,this.dir)}}class dD{constructor(e,i,n){this.value="",this.done=!1,this.cursor=new ff(e,i>n?-1:1),this.pos=i>n?e.length:0,this.from=Math.min(i,n),this.to=Math.max(i,n)}nextInner(e,i){if(i<0?this.pos<=this.from:this.pos>=this.to)return this.value="",this.done=!0,this;e+=Math.max(0,i<0?this.pos-this.to:this.from-this.pos);let n=i<0?this.pos-this.from:this.to-this.pos;e>n&&(e=n),n-=e;let{value:s}=this.cursor.next(e);return this.pos+=(s.length+e)*i,this.value=s.length<=n?s:i<0?s.slice(s.length-n):s.slice(0,n),this.done=!this.value,this}next(e=0){return e<0?e=Math.max(e,this.from-this.pos):e>0&&(e=Math.min(e,this.to-this.pos)),this.nextInner(e,this.cursor.dir)}get lineBreak(){return this.cursor.lineBreak&&this.value!=""}}class pD{constructor(e){this.inner=e,this.afterBreak=!0,this.value="",this.done=!1}next(e=0){let{done:i,lineBreak:n,value:s}=this.inner.next(e);return i&&this.afterBreak?(this.value="",this.afterBreak=!1):i?(this.done=!0,this.value=""):n?this.afterBreak?this.value="":(this.afterBreak=!0,this.next()):(this.value=s,this.afterBreak=!1),this}get lineBreak(){return!1}}typeof Symbol<"u"&&(at.prototype[Symbol.iterator]=function(){return this.iter()},ff.prototype[Symbol.iterator]=dD.prototype[Symbol.iterator]=pD.prototype[Symbol.iterator]=function(){return this});let tq=class{constructor(e,i,n,s){this.from=e,this.to=i,this.number=n,this.text=s}get length(){return this.to-this.from}};function sh(t,e,i){return e=Math.max(0,Math.min(t.length,e)),[e,Math.max(e,Math.min(t.length,i))]}function Di(t,e,i=!0,n=!0){return KZ(t,e,i,n)}function iq(t){return t>=56320&&t<57344}function nq(t){return t>=55296&&t<56320}function Ln(t,e){let i=t.charCodeAt(e);if(!nq(i)||e+1==t.length)return i;let n=t.charCodeAt(e+1);return iq(n)?(i-55296<<10)+(n-56320)+65536:i}function Ax(t){return t<=65535?String.fromCharCode(t):(t-=65536,String.fromCharCode((t>>10)+55296,(t&1023)+56320))}function gr(t){return t<65536?1:2}const q1=/\r\n?|\n/;var Fi=(function(t){return t[t.Simple=0]="Simple",t[t.TrackDel=1]="TrackDel",t[t.TrackBefore=2]="TrackBefore",t[t.TrackAfter=3]="TrackAfter",t})(Fi||(Fi={}));class Cr{constructor(e){this.sections=e}get length(){let e=0;for(let i=0;ie)return r+(e-s);r+=l}else{if(n!=Fi.Simple&&u>=e&&(n==Fi.TrackDel&&se||n==Fi.TrackBefore&&se))return null;if(u>e||u==e&&i<0&&!l)return e==s||i<0?r:r+c;r+=c}s=u}if(e>s)throw new RangeError(`Position ${e} is out of range for changeset of length ${s}`);return r}touchesRange(e,i=e){for(let n=0,s=0;n=0&&s<=i&&l>=e)return si?"cover":!0;s=l}return!1}toString(){let e="";for(let i=0;i=0?":"+s:"")}return e}toJSON(){return this.sections}static fromJSON(e){if(!Array.isArray(e)||e.length%2||e.some(i=>typeof i!="number"))throw new RangeError("Invalid JSON representation of ChangeDesc");return new Cr(e)}static create(e){return new Cr(e)}}class vi extends Cr{constructor(e,i){super(e),this.inserted=i}apply(e){if(this.length!=e.length)throw new RangeError("Applying change set to a document with the wrong length");return W1(this,(i,n,s,r,o)=>e=e.replace(s,s+(n-i),o),!1),e}mapDesc(e,i=!1){return U1(this,e,i,!0)}invert(e){let i=this.sections.slice(),n=[];for(let s=0,r=0;s=0){i[s]=l,i[s+1]=o;let c=s>>1;for(;n.length0&&_a(n,i,r.text),r.forward(d),l+=d}let u=e[o++];for(;l>1].toJSON()))}return e}static of(e,i,n){let s=[],r=[],o=0,l=null;function c(d=!1){if(!d&&!s.length)return;og||p<0||g>i)throw new RangeError(`Invalid change range ${p} to ${g} (in doc of length ${i})`);let _=O?typeof O=="string"?at.of(O.split(n||q1)):O:at.empty,b=_.length;if(p==g&&b==0)return;po&&tn(s,p-o,-1),tn(s,g-p,b),_a(r,s,_),o=g}}return u(e),c(!l),l}static empty(e){return new vi(e?[e,-1]:[],[])}static fromJSON(e){if(!Array.isArray(e))throw new RangeError("Invalid JSON representation of ChangeSet");let i=[],n=[];for(let s=0;sl&&typeof o!="string"))throw new RangeError("Invalid JSON representation of ChangeSet");if(r.length==1)i.push(r[0],0);else{for(;n.length=0&&i<=0&&i==t[s+1]?t[s]+=e:s>=0&&e==0&&t[s]==0?t[s+1]+=i:n?(t[s]+=e,t[s+1]+=i):t.push(e,i)}function _a(t,e,i){if(i.length==0)return;let n=e.length-2>>1;if(n>1])),!(i||o==t.sections.length||t.sections[o+1]<0);)l=t.sections[o++],c=t.sections[o++];e(s,u,r,d,p),s=u,r=d}}}function U1(t,e,i,n=!1){let s=[],r=n?[]:null,o=new Mf(t),l=new Mf(e);for(let c=-1;;){if(o.done&&l.len||l.done&&o.len)throw new Error("Mismatched change set lengths");if(o.ins==-1&&l.ins==-1){let u=Math.min(o.len,l.len);tn(s,u,-1),o.forward(u),l.forward(u)}else if(l.ins>=0&&(o.ins<0||c==o.i||o.off==0&&(l.len=0&&c=0){let u=0,d=o.len;for(;d;)if(l.ins==-1){let p=Math.min(d,l.len);u+=p,d-=p,l.forward(p)}else if(l.ins==0&&l.lenc||o.ins>=0&&o.len>c)&&(l||n.length>u),r.forward2(c),o.forward(c)}}}}class Mf{constructor(e){this.set=e,this.i=0,this.next()}next(){let{sections:e}=this.set;this.i>1;return i>=e.length?at.empty:e[i]}textBit(e){let{inserted:i}=this.set,n=this.i-2>>1;return n>=i.length&&!e?at.empty:i[n].slice(this.off,e==null?void 0:this.off+e)}forward(e){e==this.len?this.next():(this.len-=e,this.off+=e)}forward2(e){this.ins==-1?this.forward(e):e==this.ins?this.next():(this.ins-=e,this.off+=e)}}class gl{constructor(e,i,n){this.from=e,this.to=i,this.flags=n}get anchor(){return this.flags&32?this.to:this.from}get head(){return this.flags&32?this.from:this.to}get empty(){return this.from==this.to}get assoc(){return this.flags&8?-1:this.flags&16?1:0}get bidiLevel(){let e=this.flags&7;return e==7?null:e}get goalColumn(){let e=this.flags>>6;return e==16777215?void 0:e}map(e,i=-1){let n,s;return this.empty?n=s=e.mapPos(this.from,i):(n=e.mapPos(this.from,1),s=e.mapPos(this.to,-1)),n==this.from&&s==this.to?this:new gl(n,s,this.flags)}extend(e,i=e){if(e<=this.anchor&&i>=this.anchor)return re.range(e,i);let n=Math.abs(e-this.anchor)>Math.abs(i-this.anchor)?e:i;return re.range(this.anchor,n)}eq(e,i=!1){return this.anchor==e.anchor&&this.head==e.head&&this.goalColumn==e.goalColumn&&(!i||!this.empty||this.assoc==e.assoc)}toJSON(){return{anchor:this.anchor,head:this.head}}static fromJSON(e){if(!e||typeof e.anchor!="number"||typeof e.head!="number")throw new RangeError("Invalid JSON representation for SelectionRange");return re.range(e.anchor,e.head)}static create(e,i,n){return new gl(e,i,n)}}class re{constructor(e,i){this.ranges=e,this.mainIndex=i}map(e,i=-1){return e.empty?this:re.create(this.ranges.map(n=>n.map(e,i)),this.mainIndex)}eq(e,i=!1){if(this.ranges.length!=e.ranges.length||this.mainIndex!=e.mainIndex)return!1;for(let n=0;ne.toJSON()),main:this.mainIndex}}static fromJSON(e){if(!e||!Array.isArray(e.ranges)||typeof e.main!="number"||e.main>=e.ranges.length)throw new RangeError("Invalid JSON representation for EditorSelection");return new re(e.ranges.map(i=>gl.fromJSON(i)),e.main)}static single(e,i=e){return new re([re.range(e,i)],0)}static create(e,i=0){if(e.length==0)throw new RangeError("A selection needs at least one range");for(let n=0,s=0;se?8:0)|r)}static normalized(e,i=0){let n=e[i];e.sort((s,r)=>s.from-r.from),i=e.indexOf(n);for(let s=1;sr.head?re.range(c,l):re.range(l,c))}}return new re(e,i)}}function gD(t,e){for(let i of t.ranges)if(i.to>e)throw new RangeError("Selection points outside of document")}let Ex=0;class Se{constructor(e,i,n,s,r){this.combine=e,this.compareInput=i,this.compare=n,this.isStatic=s,this.id=Ex++,this.default=e([]),this.extensions=typeof r=="function"?r(this):r}get reader(){return this}static define(e={}){return new Se(e.combine||(i=>i),e.compareInput||((i,n)=>i===n),e.compare||(e.combine?(i,n)=>i===n:Mx),!!e.static,e.enables)}of(e){return new Vm([],this,0,e)}compute(e,i){if(this.isStatic)throw new Error("Can't compute a static facet");return new Vm(e,this,1,i)}computeN(e,i){if(this.isStatic)throw new Error("Can't compute a static facet");return new Vm(e,this,2,i)}from(e,i){return i||(i=n=>n),this.compute([e],n=>i(n.field(e)))}}function Mx(t,e){return t==e||t.length==e.length&&t.every((i,n)=>i===e[n])}class Vm{constructor(e,i,n,s){this.dependencies=e,this.facet=i,this.type=n,this.value=s,this.id=Ex++}dynamicSlot(e){var i;let n=this.value,s=this.facet.compareInput,r=this.id,o=e[r]>>1,l=this.type==2,c=!1,u=!1,d=[];for(let p of this.dependencies)p=="doc"?c=!0:p=="selection"?u=!0:(((i=e[p.id])!==null&&i!==void 0?i:1)&1)==0&&d.push(e[p.id]);return{create(p){return p.values[o]=n(p),1},update(p,g){if(c&&g.docChanged||u&&(g.docChanged||g.selection)||Y1(p,d)){let O=n(p);if(l?!DA(O,p.values[o],s):!s(O,p.values[o]))return p.values[o]=O,1}return 0},reconfigure:(p,g)=>{let O,_=g.config.address[r];if(_!=null){let b=yg(g,_);if(this.dependencies.every(x=>x instanceof Se?g.facet(x)===p.facet(x):x instanceof Bi?g.field(x,!1)==p.field(x,!1):!0)||(l?DA(O=n(p),b,s):s(O=n(p),b)))return p.values[o]=b,0}else O=n(p);return p.values[o]=O,1}}}}function DA(t,e,i){if(t.length!=e.length)return!1;for(let n=0;nt[c.id]),s=i.map(c=>c.type),r=n.filter(c=>!(c&1)),o=t[e.id]>>1;function l(c){let u=[];for(let d=0;dn===s),e);return e.provide&&(i.provides=e.provide(i)),i}create(e){let i=e.facet(Fp).find(n=>n.field==this);return((i==null?void 0:i.create)||this.createF)(e)}slot(e){let i=e[this.id]>>1;return{create:n=>(n.values[i]=this.create(n),1),update:(n,s)=>{let r=n.values[i],o=this.updateF(r,s);return this.compareF(r,o)?0:(n.values[i]=o,1)},reconfigure:(n,s)=>{let r=n.facet(Fp),o=s.facet(Fp),l;return(l=r.find(c=>c.field==this))&&l!=o.find(c=>c.field==this)?(n.values[i]=l.create(n),1):s.config.address[this.id]!=null?(n.values[i]=s.field(this),0):(n.values[i]=this.create(n),1)}}}init(e){return[this,Fp.of({field:this,create:e})]}get extension(){return this}}const ul={lowest:4,low:3,default:2,high:1,highest:0};function ku(t){return e=>new OD(e,t)}const wo={highest:ku(ul.highest),high:ku(ul.high),default:ku(ul.default),low:ku(ul.low),lowest:ku(ul.lowest)};class OD{constructor(e,i){this.inner=e,this.prec=i}}class uO{of(e){return new H1(this,e)}reconfigure(e){return uO.reconfigure.of({compartment:this,extension:e})}get(e){return e.config.compartments.get(this)}}class H1{constructor(e,i){this.compartment=e,this.inner=i}}class _g{constructor(e,i,n,s,r,o){for(this.base=e,this.compartments=i,this.dynamicSlots=n,this.address=s,this.staticValues=r,this.facets=o,this.statusTemplate=[];this.statusTemplate.length>1]}static resolve(e,i,n){let s=[],r=Object.create(null),o=new Map;for(let g of rq(e,i,o))g instanceof Bi?s.push(g):(r[g.facet.id]||(r[g.facet.id]=[])).push(g);let l=Object.create(null),c=[],u=[];for(let g of s)l[g.id]=u.length<<1,u.push(O=>g.slot(O));let d=n==null?void 0:n.config.facets;for(let g in r){let O=r[g],_=O[0].facet,b=d&&d[g]||[];if(O.every(x=>x.type==0))if(l[_.id]=c.length<<1|1,Mx(b,O))c.push(n.facet(_));else{let x=_.combine(O.map(w=>w.value));c.push(n&&_.compare(x,n.facet(_))?n.facet(_):x)}else{for(let x of O)x.type==0?(l[x.id]=c.length<<1|1,c.push(x.value)):(l[x.id]=u.length<<1,u.push(w=>x.dynamicSlot(w)));l[_.id]=u.length<<1,u.push(x=>sq(x,_,O))}}let p=u.map(g=>g(l));return new _g(e,o,p,l,c,r)}}function rq(t,e,i){let n=[[],[],[],[],[]],s=new Map;function r(o,l){let c=s.get(o);if(c!=null){if(c<=l)return;let u=n[c].indexOf(o);u>-1&&n[c].splice(u,1),o instanceof H1&&i.delete(o.compartment)}if(s.set(o,l),Array.isArray(o))for(let u of o)r(u,l);else if(o instanceof H1){if(i.has(o.compartment))throw new RangeError("Duplicate use of compartment in extensions");let u=e.get(o.compartment)||o.inner;i.set(o.compartment,u),r(u,l)}else if(o instanceof OD)r(o.inner,o.prec);else if(o instanceof Bi)n[l].push(o),o.provides&&r(o.provides,l);else if(o instanceof Vm)n[l].push(o),o.facet.extensions&&r(o.facet.extensions,ul.default);else{let u=o.extension;if(!u)throw new Error(`Unrecognized extension value in extension set (${o}). This sometimes happens because multiple instances of @codemirror/state are loaded, breaking instanceof checks.`);r(u,l)}}return r(t,ul.default),n.reduce((o,l)=>o.concat(l))}function df(t,e){if(e&1)return 2;let i=e>>1,n=t.status[i];if(n==4)throw new Error("Cyclic dependency between fields and/or facets");if(n&2)return n;t.status[i]=4;let s=t.computeSlot(t,t.config.dynamicSlots[i]);return t.status[i]=2|s}function yg(t,e){return e&1?t.config.staticValues[e>>1]:t.values[e>>1]}const vD=Se.define(),F1=Se.define({combine:t=>t.some(e=>e),static:!0}),_D=Se.define({combine:t=>t.length?t[0]:void 0,static:!0}),yD=Se.define(),bD=Se.define(),SD=Se.define(),xD=Se.define({combine:t=>t.length?t[0]:!1});class Lr{constructor(e,i){this.type=e,this.value=i}static define(){return new oq}}class oq{of(e){return new Lr(this,e)}}class aq{constructor(e){this.map=e}of(e){return new Ne(this,e)}}class Ne{constructor(e,i){this.type=e,this.value=i}map(e){let i=this.type.map(this.value,e);return i===void 0?void 0:i==this.value?this:new Ne(this.type,i)}is(e){return this.type==e}static define(e={}){return new aq(e.map||(i=>i))}static mapEffects(e,i){if(!e.length)return e;let n=[];for(let s of e){let r=s.map(i);r&&n.push(r)}return n}}Ne.reconfigure=Ne.define();Ne.appendConfig=Ne.define();class hi{constructor(e,i,n,s,r,o){this.startState=e,this.changes=i,this.selection=n,this.effects=s,this.annotations=r,this.scrollIntoView=o,this._doc=null,this._state=null,n&&gD(n,i.newLength),r.some(l=>l.type==hi.time)||(this.annotations=r.concat(hi.time.of(Date.now())))}static create(e,i,n,s,r,o){return new hi(e,i,n,s,r,o)}get newDoc(){return this._doc||(this._doc=this.changes.apply(this.startState.doc))}get newSelection(){return this.selection||this.startState.selection.map(this.changes)}get state(){return this._state||this.startState.applyTransaction(this),this._state}annotation(e){for(let i of this.annotations)if(i.type==e)return i.value}get docChanged(){return!this.changes.empty}get reconfigured(){return this.startState.config!=this.state.config}isUserEvent(e){let i=this.annotation(hi.userEvent);return!!(i&&(i==e||i.length>e.length&&i.slice(0,e.length)==e&&i[e.length]=="."))}}hi.time=Lr.define();hi.userEvent=Lr.define();hi.addToHistory=Lr.define();hi.remote=Lr.define();function lq(t,e){let i=[];for(let n=0,s=0;;){let r,o;if(n=t[n]))r=t[n++],o=t[n++];else if(s=0;s--){let r=n[s](t);r instanceof hi?t=r:Array.isArray(r)&&r.length==1&&r[0]instanceof hi?t=r[0]:t=CD(e,Wc(r),!1)}return t}function hq(t){let e=t.startState,i=e.facet(SD),n=t;for(let s=i.length-1;s>=0;s--){let r=i[s](t);r&&Object.keys(r).length&&(n=wD(n,G1(e,r,t.changes.newLength),!0))}return n==t?t:hi.create(e,t.changes,t.selection,n.effects,n.annotations,n.scrollIntoView)}const uq=[];function Wc(t){return t==null?uq:Array.isArray(t)?t:[t]}var Dt=(function(t){return t[t.Word=0]="Word",t[t.Space=1]="Space",t[t.Other=2]="Other",t})(Dt||(Dt={}));const fq=/[\u00df\u0587\u0590-\u05f4\u0600-\u06ff\u3040-\u309f\u30a0-\u30ff\u3400-\u4db5\u4e00-\u9fcc\uac00-\ud7af]/;let K1;try{K1=new RegExp("[\\p{Alphabetic}\\p{Number}_]","u")}catch{}function dq(t){if(K1)return K1.test(t);for(let e=0;e"€"&&(i.toUpperCase()!=i.toLowerCase()||fq.test(i)))return!0}return!1}function pq(t){return e=>{if(!/\S/.test(e))return Dt.Space;if(dq(e))return Dt.Word;for(let i=0;i-1)return Dt.Word;return Dt.Other}}class et{constructor(e,i,n,s,r,o){this.config=e,this.doc=i,this.selection=n,this.values=s,this.status=e.statusTemplate.slice(),this.computeSlot=r,o&&(o._state=this);for(let l=0;ls.set(u,c)),i=null),s.set(l.value.compartment,l.value.extension)):l.is(Ne.reconfigure)?(i=null,n=l.value):l.is(Ne.appendConfig)&&(i=null,n=Wc(n).concat(l.value));let r;i?r=e.startState.values.slice():(i=_g.resolve(n,s,this),r=new et(i,this.doc,this.selection,i.dynamicSlots.map(()=>null),(c,u)=>u.reconfigure(c,this),null).values);let o=e.startState.facet(F1)?e.newSelection:e.newSelection.asSingle();new et(i,e.newDoc,o,r,(l,c)=>c.update(l,e),e)}replaceSelection(e){return typeof e=="string"&&(e=this.toText(e)),this.changeByRange(i=>({changes:{from:i.from,to:i.to,insert:e},range:re.cursor(i.from+e.length)}))}changeByRange(e){let i=this.selection,n=e(i.ranges[0]),s=this.changes(n.changes),r=[n.range],o=Wc(n.effects);for(let l=1;lo.spec.fromJSON(l,c)))}}return et.create({doc:e.doc,selection:re.fromJSON(e.selection),extensions:i.extensions?s.concat([i.extensions]):s})}static create(e={}){let i=_g.resolve(e.extensions||[],new Map),n=e.doc instanceof at?e.doc:at.of((e.doc||"").split(i.staticFacet(et.lineSeparator)||q1)),s=e.selection?e.selection instanceof re?e.selection:re.single(e.selection.anchor,e.selection.head):re.single(0);return gD(s,n.length),i.staticFacet(F1)||(s=s.asSingle()),new et(i,n,s,i.dynamicSlots.map(()=>null),(r,o)=>o.create(r),null)}get tabSize(){return this.facet(et.tabSize)}get lineBreak(){return this.facet(et.lineSeparator)||` +`}get readOnly(){return this.facet(xD)}phrase(e,...i){for(let n of this.facet(et.phrases))if(Object.prototype.hasOwnProperty.call(n,e)){e=n[e];break}return i.length&&(e=e.replace(/\$(\$|\d*)/g,(n,s)=>{if(s=="$")return"$";let r=+(s||1);return!r||r>i.length?n:i[r-1]})),e}languageDataAt(e,i,n=-1){let s=[];for(let r of this.facet(vD))for(let o of r(this,i,n))Object.prototype.hasOwnProperty.call(o,e)&&s.push(o[e]);return s}charCategorizer(e){let i=this.languageDataAt("wordChars",e);return pq(i.length?i[0]:"")}wordAt(e){let{text:i,from:n,length:s}=this.doc.lineAt(e),r=this.charCategorizer(e),o=e-n,l=e-n;for(;o>0;){let c=Di(i,o,!1);if(r(i.slice(c,o))!=Dt.Word)break;o=c}for(;lt.length?t[0]:4});et.lineSeparator=_D;et.readOnly=xD;et.phrases=Se.define({compare(t,e){let i=Object.keys(t),n=Object.keys(e);return i.length==n.length&&i.every(s=>t[s]==e[s])}});et.languageData=vD;et.changeFilter=yD;et.transactionFilter=bD;et.transactionExtender=SD;uO.reconfigure=Ne.define();function Dr(t,e,i={}){let n={};for(let s of t)for(let r of Object.keys(s)){let o=s[r],l=n[r];if(l===void 0)n[r]=o;else if(!(l===o||o===void 0))if(Object.hasOwnProperty.call(i,r))n[r]=i[r](l,o);else throw new Error("Config merge conflict for field "+r)}for(let s in e)n[s]===void 0&&(n[s]=e[s]);return n}class wa{eq(e){return this==e}range(e,i=e){return J1.create(e,i,this)}}wa.prototype.startSide=wa.prototype.endSide=0;wa.prototype.point=!1;wa.prototype.mapMode=Fi.TrackDel;function Px(t,e){return t==e||t.constructor==e.constructor&&t.eq(e)}let J1=class kD{constructor(e,i,n){this.from=e,this.to=i,this.value=n}static create(e,i,n){return new kD(e,i,n)}};function eb(t,e){return t.from-e.from||t.value.startSide-e.value.startSide}class Rx{constructor(e,i,n,s){this.from=e,this.to=i,this.value=n,this.maxPoint=s}get length(){return this.to[this.to.length-1]}findIndex(e,i,n,s=0){let r=n?this.to:this.from;for(let o=s,l=r.length;;){if(o==l)return o;let c=o+l>>1,u=r[c]-e||(n?this.value[c].endSide:this.value[c].startSide)-i;if(c==o)return u>=0?o:l;u>=0?l=c:o=c+1}}between(e,i,n,s){for(let r=this.findIndex(i,-1e9,!0),o=this.findIndex(n,1e9,!1,r);rO||g==O&&u.startSide>0&&u.endSide<=0)continue;(O-g||u.endSide-u.startSide)<0||(o<0&&(o=g),u.point&&(l=Math.max(l,O-g)),n.push(u),s.push(g-o),r.push(O-o))}return{mapped:n.length?new Rx(s,r,n,l):null,pos:o}}}class Ge{constructor(e,i,n,s){this.chunkPos=e,this.chunk=i,this.nextLayer=n,this.maxPoint=s}static create(e,i,n,s){return new Ge(e,i,n,s)}get length(){let e=this.chunk.length-1;return e<0?0:Math.max(this.chunkEnd(e),this.nextLayer.length)}get size(){if(this.isEmpty)return 0;let e=this.nextLayer.size;for(let i of this.chunk)e+=i.value.length;return e}chunkEnd(e){return this.chunkPos[e]+this.chunk[e].length}update(e){let{add:i=[],sort:n=!1,filterFrom:s=0,filterTo:r=this.length}=e,o=e.filter;if(i.length==0&&!o)return this;if(n&&(i=i.slice().sort(eb)),this.isEmpty)return i.length?Ge.of(i):this;let l=new TD(this,null,-1).goto(0),c=0,u=[],d=new yo;for(;l.value||c=0){let p=i[c++];d.addInner(p.from,p.to,p.value)||u.push(p)}else l.rangeIndex==1&&l.chunkIndexthis.chunkEnd(l.chunkIndex)||rl.to||r=r&&e<=r+o.length&&o.between(r,e-r,i-r,n)===!1)return}this.nextLayer.between(e,i,n)}}iter(e=0){return Pf.from([this]).goto(e)}get isEmpty(){return this.nextLayer==this}static iter(e,i=0){return Pf.from(e).goto(i)}static compare(e,i,n,s,r=-1){let o=e.filter(p=>p.maxPoint>0||!p.isEmpty&&p.maxPoint>=r),l=i.filter(p=>p.maxPoint>0||!p.isEmpty&&p.maxPoint>=r),c=BA(o,l,n),u=new Tu(o,c,r),d=new Tu(l,c,r);n.iterGaps((p,g,O)=>$A(u,p,d,g,O,s)),n.empty&&n.length==0&&$A(u,0,d,0,0,s)}static eq(e,i,n=0,s){s==null&&(s=999999999);let r=e.filter(d=>!d.isEmpty&&i.indexOf(d)<0),o=i.filter(d=>!d.isEmpty&&e.indexOf(d)<0);if(r.length!=o.length)return!1;if(!r.length)return!0;let l=BA(r,o),c=new Tu(r,l,0).goto(n),u=new Tu(o,l,0).goto(n);for(;;){if(c.to!=u.to||!tb(c.active,u.active)||c.point&&(!u.point||!Px(c.point,u.point)))return!1;if(c.to>s)return!0;c.next(),u.next()}}static spans(e,i,n,s,r=-1){let o=new Tu(e,null,r).goto(i),l=i,c=o.openStart;for(;;){let u=Math.min(o.to,n);if(o.point){let d=o.activeForPoint(o.to),p=o.pointFroml&&(s.span(l,u,o.active,c),c=o.openEnd(u));if(o.to>n)return c+(o.point&&o.to>n?1:0);l=o.to,o.next()}}static of(e,i=!1){let n=new yo;for(let s of e instanceof J1?[e]:i?mq(e):e)n.add(s.from,s.to,s.value);return n.finish()}static join(e){if(!e.length)return Ge.empty;let i=e[e.length-1];for(let n=e.length-2;n>=0;n--)for(let s=e[n];s!=Ge.empty;s=s.nextLayer)i=new Ge(s.chunkPos,s.chunk,i,Math.max(s.maxPoint,i.maxPoint));return i}}Ge.empty=new Ge([],[],null,-1);function mq(t){if(t.length>1)for(let e=t[0],i=1;i0)return t.slice().sort(eb);e=n}return t}Ge.empty.nextLayer=Ge.empty;class yo{finishChunk(e){this.chunks.push(new Rx(this.from,this.to,this.value,this.maxPoint)),this.chunkPos.push(this.chunkStart),this.chunkStart=-1,this.setMaxPoint=Math.max(this.setMaxPoint,this.maxPoint),this.maxPoint=-1,e&&(this.from=[],this.to=[],this.value=[])}constructor(){this.chunks=[],this.chunkPos=[],this.chunkStart=-1,this.last=null,this.lastFrom=-1e9,this.lastTo=-1e9,this.from=[],this.to=[],this.value=[],this.maxPoint=-1,this.setMaxPoint=-1,this.nextLayer=null}add(e,i,n){this.addInner(e,i,n)||(this.nextLayer||(this.nextLayer=new yo)).add(e,i,n)}addInner(e,i,n){let s=e-this.lastTo||n.startSide-this.last.endSide;if(s<=0&&(e-this.lastFrom||n.startSide-this.last.startSide)<0)throw new Error("Ranges must be added sorted by `from` position and `startSide`");return s<0?!1:(this.from.length==250&&this.finishChunk(!0),this.chunkStart<0&&(this.chunkStart=e),this.from.push(e-this.chunkStart),this.to.push(i-this.chunkStart),this.last=n,this.lastFrom=e,this.lastTo=i,this.value.push(n),n.point&&(this.maxPoint=Math.max(this.maxPoint,i-e)),!0)}addChunk(e,i){if((e-this.lastTo||i.value[0].startSide-this.last.endSide)<0)return!1;this.from.length&&this.finishChunk(!0),this.setMaxPoint=Math.max(this.setMaxPoint,i.maxPoint),this.chunks.push(i),this.chunkPos.push(e);let n=i.value.length-1;return this.last=i.value[n],this.lastFrom=i.from[n]+e,this.lastTo=i.to[n]+e,!0}finish(){return this.finishInner(Ge.empty)}finishInner(e){if(this.from.length&&this.finishChunk(!1),this.chunks.length==0)return e;let i=Ge.create(this.chunkPos,this.chunks,this.nextLayer?this.nextLayer.finishInner(e):e,this.setMaxPoint);return this.from=null,i}}function BA(t,e,i){let n=new Map;for(let r of t)for(let o=0;o=this.minPoint)break}}setRangeIndex(e){if(e==this.layer.chunk[this.chunkIndex].value.length){if(this.chunkIndex++,this.skip)for(;this.chunkIndex=n&&s.push(new TD(o,i,n,r));return s.length==1?s[0]:new Pf(s)}get startSide(){return this.value?this.value.startSide:0}goto(e,i=-1e9){for(let n of this.heap)n.goto(e,i);for(let n=this.heap.length>>1;n>=0;n--)y_(this.heap,n);return this.next(),this}forward(e,i){for(let n of this.heap)n.forward(e,i);for(let n=this.heap.length>>1;n>=0;n--)y_(this.heap,n);(this.to-e||this.value.endSide-i)<0&&this.next()}next(){if(this.heap.length==0)this.from=this.to=1e9,this.value=null,this.rank=-1;else{let e=this.heap[0];this.from=e.from,this.to=e.to,this.value=e.value,this.rank=e.rank,e.value&&e.next(),y_(this.heap,0)}}}function y_(t,e){for(let i=t[e];;){let n=(e<<1)+1;if(n>=t.length)break;let s=t[n];if(n+1=0&&(s=t[n+1],n++),i.compare(s)<0)break;t[n]=i,t[e]=s,e=n}}class Tu{constructor(e,i,n){this.minPoint=n,this.active=[],this.activeTo=[],this.activeRank=[],this.minActive=-1,this.point=null,this.pointFrom=0,this.pointRank=0,this.to=-1e9,this.endSide=0,this.openStart=-1,this.cursor=Pf.from(e,i,n)}goto(e,i=-1e9){return this.cursor.goto(e,i),this.active.length=this.activeTo.length=this.activeRank.length=0,this.minActive=-1,this.to=e,this.endSide=i,this.openStart=-1,this.next(),this}forward(e,i){for(;this.minActive>-1&&(this.activeTo[this.minActive]-e||this.active[this.minActive].endSide-i)<0;)this.removeActive(this.minActive);this.cursor.forward(e,i)}removeActive(e){Gp(this.active,e),Gp(this.activeTo,e),Gp(this.activeRank,e),this.minActive=NA(this.active,this.activeTo)}addActive(e){let i=0,{value:n,to:s,rank:r}=this.cursor;for(;i0;)i++;Kp(this.active,i,n),Kp(this.activeTo,i,s),Kp(this.activeRank,i,r),e&&Kp(e,i,this.cursor.from),this.minActive=NA(this.active,this.activeTo)}next(){let e=this.to,i=this.point;this.point=null;let n=this.openStart<0?[]:null;for(;;){let s=this.minActive;if(s>-1&&(this.activeTo[s]-this.cursor.from||this.active[s].endSide-this.cursor.startSide)<0){if(this.activeTo[s]>e){this.to=this.activeTo[s],this.endSide=this.active[s].endSide;break}this.removeActive(s),n&&Gp(n,s)}else if(this.cursor.value)if(this.cursor.from>e){this.to=this.cursor.from,this.endSide=this.cursor.startSide;break}else{let r=this.cursor.value;if(!r.point)this.addActive(n),this.cursor.next();else if(i&&this.cursor.to==this.to&&this.cursor.from=0&&n[s]=0&&!(this.activeRank[n]e||this.activeTo[n]==e&&this.active[n].endSide>=this.point.endSide)&&i.push(this.active[n]);return i.reverse()}openEnd(e){let i=0;for(let n=this.activeTo.length-1;n>=0&&this.activeTo[n]>e;n--)i++;return i}}function $A(t,e,i,n,s,r){t.goto(e),i.goto(n);let o=n+s,l=n,c=n-e,u=!!r.boundChange;for(let d=!1;;){let p=t.to+c-i.to,g=p||t.endSide-i.endSide,O=g<0?t.to+c:i.to,_=Math.min(O,o);if(t.point||i.point?(t.point&&i.point&&Px(t.point,i.point)&&tb(t.activeForPoint(t.to),i.activeForPoint(i.to))||r.comparePoint(l,_,t.point,i.point),d=!1):(d&&r.boundChange(l),_>l&&!tb(t.active,i.active)&&r.compareRange(l,_,t.active,i.active),u&&_o)break;l=O,g<=0&&t.next(),g>=0&&i.next()}}function tb(t,e){if(t.length!=e.length)return!1;for(let i=0;i=e;n--)t[n+1]=t[n];t[e]=i}function NA(t,e){let i=-1,n=1e9;for(let s=0;s=e)return s;if(s==t.length)break;r+=t.charCodeAt(s)==9?i-r%i:1,s=Di(t,s)}return n===!0?-1:t.length}const nb="ͼ",zA=typeof Symbol>"u"?"__"+nb:Symbol.for(nb),sb=typeof Symbol>"u"?"__styleSet"+Math.floor(Math.random()*1e8):Symbol("styleSet"),jA=typeof globalThis<"u"?globalThis:typeof window<"u"?window:{};class Ca{constructor(e,i){this.rules=[];let{finish:n}=i||{};function s(o){return/^@/.test(o)?[o]:o.split(/,\s*/)}function r(o,l,c,u){let d=[],p=/^@(\w+)\b/.exec(o[0]),g=p&&p[1]=="keyframes";if(p&&l==null)return c.push(o[0]+";");for(let O in l){let _=l[O];if(/&/.test(O))r(O.split(/,\s*/).map(b=>o.map(x=>b.replace(/&/,x))).reduce((b,x)=>b.concat(x)),_,c);else if(_&&typeof _=="object"){if(!p)throw new RangeError("The value of a property ("+O+") should be a primitive value.");r(s(O),_,d,g)}else _!=null&&d.push(O.replace(/_.*/,"").replace(/[A-Z]/g,b=>"-"+b.toLowerCase())+": "+_+";")}(d.length||g)&&c.push((n&&!p&&!u?o.map(n):o).join(", ")+" {"+d.join(" ")+"}")}for(let o in e)r(s(o),e[o],this.rules)}getRules(){return this.rules.join(` +`)}static newName(){let e=jA[zA]||1;return jA[zA]=e+1,nb+e.toString(36)}static mount(e,i,n){let s=e[sb],r=n&&n.nonce;s?r&&s.setNonce(r):s=new gq(e,r),s.mount(Array.isArray(i)?i:[i],e)}}let IA=new Map;class gq{constructor(e,i){let n=e.ownerDocument||e,s=n.defaultView;if(!e.head&&e.adoptedStyleSheets&&s.CSSStyleSheet){let r=IA.get(n);if(r)return e[sb]=r;this.sheet=new s.CSSStyleSheet,IA.set(n,this)}else this.styleTag=n.createElement("style"),i&&this.styleTag.setAttribute("nonce",i);this.modules=[],e[sb]=this}mount(e,i){let n=this.sheet,s=0,r=0;for(let o=0;o-1&&(this.modules.splice(c,1),r--,c=-1),c==-1){if(this.modules.splice(r++,0,l),n)for(let u=0;u",191:"?",192:"~",219:"{",220:"|",221:"}",222:'"'},Oq=typeof navigator<"u"&&/Mac/.test(navigator.platform),vq=typeof navigator<"u"&&/MSIE \d|Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(navigator.userAgent);for(var Hi=0;Hi<10;Hi++)ka[48+Hi]=ka[96+Hi]=String(Hi);for(var Hi=1;Hi<=24;Hi++)ka[Hi+111]="F"+Hi;for(var Hi=65;Hi<=90;Hi++)ka[Hi]=String.fromCharCode(Hi+32),Rf[Hi]=String.fromCharCode(Hi);for(var b_ in ka)Rf.hasOwnProperty(b_)||(Rf[b_]=ka[b_]);function _q(t){var e=Oq&&t.metaKey&&t.shiftKey&&!t.ctrlKey&&!t.altKey||vq&&t.shiftKey&&t.key&&t.key.length==1||t.key=="Unidentified",i=!e&&t.key||(t.shiftKey?Rf:ka)[t.keyCode]||t.key||"Unidentified";return i=="Esc"&&(i="Escape"),i=="Del"&&(i="Delete"),i=="Left"&&(i="ArrowLeft"),i=="Up"&&(i="ArrowUp"),i=="Right"&&(i="ArrowRight"),i=="Down"&&(i="ArrowDown"),i}function vt(){var t=arguments[0];typeof t=="string"&&(t=document.createElement(t));var e=1,i=arguments[1];if(i&&typeof i=="object"&&i.nodeType==null&&!Array.isArray(i)){for(var n in i)if(Object.prototype.hasOwnProperty.call(i,n)){var s=i[n];typeof s=="string"?t.setAttribute(n,s):s!=null&&(t[n]=s)}e++}for(;e2);var xe={mac:XA||/Mac/.test(mn.platform),windows:/Win/.test(mn.platform),linux:/Linux|X11/.test(mn.platform),ie:fO,ie_version:ED?rb.documentMode||6:ab?+ab[1]:ob?+ob[1]:0,gecko:VA,gecko_version:VA?+(/Firefox\/(\d+)/.exec(mn.userAgent)||[0,0])[1]:0,chrome:!!S_,chrome_version:S_?+S_[1]:0,ios:XA,android:/Android\b/.test(mn.userAgent),webkit_version:yq?+(/\bAppleWebKit\/(\d+)/.exec(mn.userAgent)||[0,0])[1]:0,safari:lb,safari_version:lb?+(/\bVersion\/(\d+(\.\d+)?)/.exec(mn.userAgent)||[0,0])[1]:0,tabSize:rb.documentElement.style.tabSize!=null?"tab-size":"-moz-tab-size"};function Qx(t,e){for(let i in t)i=="class"&&e.class?e.class+=" "+t.class:i=="style"&&e.style?e.style+=";"+t.style:e[i]=t[i];return e}const bg=Object.create(null);function Lx(t,e,i){if(t==e)return!0;t||(t=bg),e||(e=bg);let n=Object.keys(t),s=Object.keys(e);if(n.length-0!=s.length-0)return!1;for(let r of n)if(r!=i&&(s.indexOf(r)==-1||t[r]!==e[r]))return!1;return!0}function bq(t,e){for(let i=t.attributes.length-1;i>=0;i--){let n=t.attributes[i].name;e[n]==null&&t.removeAttribute(n)}for(let i in e){let n=e[i];i=="style"?t.style.cssText=n:t.getAttribute(i)!=n&&t.setAttribute(i,n)}}function ZA(t,e,i){let n=!1;if(e)for(let s in e)i&&s in i||(n=!0,s=="style"?t.style.cssText="":t.removeAttribute(s));if(i)for(let s in i)e&&e[s]==i[s]||(n=!0,s=="style"?t.style.cssText=i[s]:t.setAttribute(s,i[s]));return n}function Sq(t){let e=Object.create(null);for(let i=0;i0?3e8:-4e8:i>0?1e8:-1e8,new Tl(e,i,i,n,e.widget||null,!1)}static replace(e){let i=!!e.block,n,s;if(e.isBlockGap)n=-5e8,s=4e8;else{let{start:r,end:o}=MD(e,i);n=(r?i?-3e8:-1:5e8)-1,s=(o?i?2e8:1:-6e8)+1}return new Tl(e,n,s,i,e.widget||null,!0)}static line(e){return new ud(e)}static set(e,i=!1){return Ge.of(e,i)}hasHeight(){return this.widget?this.widget.estimatedHeight>-1:!1}}Pe.none=Ge.empty;class hd extends Pe{constructor(e){let{start:i,end:n}=MD(e);super(i?-1:5e8,n?1:-6e8,null,e),this.tagName=e.tagName||"span",this.attrs=e.class&&e.attributes?Qx(e.attributes,{class:e.class}):e.class?{class:e.class}:e.attributes||bg}eq(e){return this==e||e instanceof hd&&this.tagName==e.tagName&&Lx(this.attrs,e.attrs)}range(e,i=e){if(e>=i)throw new RangeError("Mark decorations may not be empty");return super.range(e,i)}}hd.prototype.point=!1;class ud extends Pe{constructor(e){super(-2e8,-2e8,null,e)}eq(e){return e instanceof ud&&this.spec.class==e.spec.class&&Lx(this.spec.attributes,e.spec.attributes)}range(e,i=e){if(i!=e)throw new RangeError("Line decoration ranges must be zero-length");return super.range(e,i)}}ud.prototype.mapMode=Fi.TrackBefore;ud.prototype.point=!0;class Tl extends Pe{constructor(e,i,n,s,r,o){super(i,n,r,e),this.block=s,this.isReplace=o,this.mapMode=s?i<=0?Fi.TrackBefore:Fi.TrackAfter:Fi.TrackDel}get type(){return this.startSide!=this.endSide?Ki.WidgetRange:this.startSide<=0?Ki.WidgetBefore:Ki.WidgetAfter}get heightRelevant(){return this.block||!!this.widget&&(this.widget.estimatedHeight>=5||this.widget.lineBreaks>0)}eq(e){return e instanceof Tl&&xq(this.widget,e.widget)&&this.block==e.block&&this.startSide==e.startSide&&this.endSide==e.endSide}range(e,i=e){if(this.isReplace&&(e>i||e==i&&this.startSide>0&&this.endSide<=0))throw new RangeError("Invalid range for replacement decoration");if(!this.isReplace&&i!=e)throw new RangeError("Widget decorations can only have zero-length ranges");return super.range(e,i)}}Tl.prototype.point=!0;function MD(t,e=!1){let{inclusiveStart:i,inclusiveEnd:n}=t;return i==null&&(i=t.inclusive),n==null&&(n=t.inclusive),{start:i??e,end:n??e}}function xq(t,e){return t==e||!!(t&&e&&t.compare(e))}function Uc(t,e,i,n=0){let s=i.length-1;s>=0&&i[s]+n>=t?i[s]=Math.max(i[s],e):i.push(t,e)}class Qf extends wa{constructor(e,i){super(),this.tagName=e,this.attributes=i}eq(e){return e==this||e instanceof Qf&&this.tagName==e.tagName&&Lx(this.attributes,e.attributes)}static create(e){return new Qf(e.tagName,e.attributes||bg)}static set(e,i=!1){return Ge.of(e,i)}}Qf.prototype.startSide=Qf.prototype.endSide=-1;function Lf(t){let e;return t.nodeType==11?e=t.getSelection?t:t.ownerDocument:e=t,e.getSelection()}function cb(t,e){return e?t==e||t.contains(e.nodeType!=1?e.parentNode:e):!1}function pf(t,e){if(!e.anchorNode)return!1;try{return cb(t,e.anchorNode)}catch{return!1}}function mf(t){return t.nodeType==3?Bf(t,0,t.nodeValue.length).getClientRects():t.nodeType==1?t.getClientRects():[]}function gf(t,e,i,n){return i?qA(t,e,i,n,-1)||qA(t,e,i,n,1):!1}function Ta(t){for(var e=0;;e++)if(t=t.previousSibling,!t)return e}function Sg(t){return t.nodeType==1&&/^(DIV|P|LI|UL|OL|BLOCKQUOTE|DD|DT|H\d|SECTION|PRE)$/.test(t.nodeName)}function qA(t,e,i,n,s){for(;;){if(t==i&&e==n)return!0;if(e==(s<0?0:bo(t))){if(t.nodeName=="DIV")return!1;let r=t.parentNode;if(!r||r.nodeType!=1)return!1;e=Ta(t)+(s<0?0:1),t=r}else if(t.nodeType==1){if(t=t.childNodes[e+(s<0?-1:0)],t.nodeType==1&&t.contentEditable=="false")return!1;e=s<0?bo(t):0}else return!1}}function bo(t){return t.nodeType==3?t.nodeValue.length:t.childNodes.length}function Df(t,e){let i=e?t.left:t.right;return{left:i,right:i,top:t.top,bottom:t.bottom}}function wq(t){let e=t.visualViewport;return e?{left:0,right:e.width,top:0,bottom:e.height}:{left:0,right:t.innerWidth,top:0,bottom:t.innerHeight}}function PD(t,e){let i=e.width/t.offsetWidth,n=e.height/t.offsetHeight;return(i>.995&&i<1.005||!isFinite(i)||Math.abs(e.width-t.offsetWidth)<1)&&(i=1),(n>.995&&n<1.005||!isFinite(n)||Math.abs(e.height-t.offsetHeight)<1)&&(n=1),{scaleX:i,scaleY:n}}function Cq(t,e,i,n,s,r,o,l){let c=t.ownerDocument,u=c.defaultView||window;for(let d=t,p=!1;d&&!p;)if(d.nodeType==1){let g,O=d==c.body,_=1,b=1;if(O)g=wq(u);else{if(/^(fixed|sticky)$/.test(getComputedStyle(d).position)&&(p=!0),d.scrollHeight<=d.clientHeight&&d.scrollWidth<=d.clientWidth){d=d.assignedSlot||d.parentNode;continue}let k=d.getBoundingClientRect();({scaleX:_,scaleY:b}=PD(d,k)),g={left:k.left,right:k.left+d.clientWidth*_,top:k.top,bottom:k.top+d.clientHeight*b}}let x=0,w=0;if(s=="nearest")e.top0&&e.bottom>g.bottom+w&&(w=e.bottom-g.bottom+o)):e.bottom>g.bottom&&(w=e.bottom-g.bottom+o,i<0&&e.top-w0&&e.right>g.right+x&&(x=e.right-g.right+r)):e.right>g.right&&(x=e.right-g.right+r,i<0&&e.leftg.bottom||e.leftg.right)&&(e={left:Math.max(e.left,g.left),right:Math.min(e.right,g.right),top:Math.max(e.top,g.top),bottom:Math.min(e.bottom,g.bottom)}),d=d.assignedSlot||d.parentNode}else if(d.nodeType==11)d=d.host;else break}function kq(t){let e=t.ownerDocument,i,n;for(let s=t.parentNode;s&&!(s==e.body||i&&n);)if(s.nodeType==1)!n&&s.scrollHeight>s.clientHeight&&(n=s),!i&&s.scrollWidth>s.clientWidth&&(i=s),s=s.assignedSlot||s.parentNode;else if(s.nodeType==11)s=s.host;else break;return{x:i,y:n}}class Tq{constructor(){this.anchorNode=null,this.anchorOffset=0,this.focusNode=null,this.focusOffset=0}eq(e){return this.anchorNode==e.anchorNode&&this.anchorOffset==e.anchorOffset&&this.focusNode==e.focusNode&&this.focusOffset==e.focusOffset}setRange(e){let{anchorNode:i,focusNode:n}=e;this.set(i,Math.min(e.anchorOffset,i?bo(i):0),n,Math.min(e.focusOffset,n?bo(n):0))}set(e,i,n,s){this.anchorNode=e,this.anchorOffset=i,this.focusNode=n,this.focusOffset=s}}let ll=null;xe.safari&&xe.safari_version>=26&&(ll=!1);function RD(t){if(t.setActive)return t.setActive();if(ll)return t.focus(ll);let e=[];for(let i=t;i&&(e.push(i,i.scrollTop,i.scrollLeft),i!=i.ownerDocument);i=i.parentNode);if(t.focus(ll==null?{get preventScroll(){return ll={preventScroll:!0},!0}}:void 0),!ll){ll=!1;for(let i=0;iMath.max(1,t.scrollHeight-t.clientHeight-4)}function LD(t,e){for(let i=t,n=e;;){if(i.nodeType==3&&n>0)return{node:i,offset:n};if(i.nodeType==1&&n>0){if(i.contentEditable=="false")return null;i=i.childNodes[n-1],n=bo(i)}else if(i.parentNode&&!Sg(i))n=Ta(i),i=i.parentNode;else return null}}function DD(t,e){for(let i=t,n=e;;){if(i.nodeType==3&&n=i){if(l.level==n)return o;(r<0||(s!=0?s<0?l.fromi:e[r].level>l.level))&&(r=o)}}if(r<0)throw new RangeError("Index out of range");return r}}function ND(t,e){if(t.length!=e.length)return!1;for(let i=0;i=0;b-=3)if(sr[b+1]==-O){let x=sr[b+2],w=x&2?s:x&4?x&1?r:s:0;w&&(bt[p]=bt[sr[b]]=w),l=b;break}}else{if(sr.length==189)break;sr[l++]=p,sr[l++]=g,sr[l++]=c}else if((_=bt[p])==2||_==1){let b=_==s;c=b?0:1;for(let x=l-3;x>=0;x-=3){let w=sr[x+2];if(w&2)break;if(b)sr[x+2]|=2;else{if(w&4)break;sr[x+2]|=4}}}}}function Dq(t,e,i,n){for(let s=0,r=n;s<=i.length;s++){let o=s?i[s-1].to:t,l=sc;)_==x&&(_=i[--b].from,x=b?i[b-1].to:t),bt[--_]=O;c=d}else r=u,c++}}}function ub(t,e,i,n,s,r,o){let l=n%2?2:1;if(n%2==s%2)for(let c=e,u=0;cc&&o.push(new _r(c,b.from,O));let x=b.direction==Al!=!(O%2);fb(t,x?n+1:n,s,b.inner,b.from,b.to,o),c=b.to}_=b.to}else{if(_==i||(d?bt[_]!=l:bt[_]==l))break;_++}g?ub(t,c,_,n+1,s,g,o):c<_&&o.push(new _r(c,_,O)),c=_}else for(let c=i,u=r.length;c>e;){let d=!0,p=!1;if(!u||c>r[u-1].to){let b=bt[c-1];b!=l&&(d=!1,p=b==16)}let g=!d&&l==1?[]:null,O=d?n:n+1,_=c;e:for(;;)if(u&&_==r[u-1].to){if(p)break e;let b=r[--u];if(!d)for(let x=b.from,w=u;;){if(x==e)break e;if(w&&r[w-1].to==x)x=r[--w].from;else{if(bt[x-1]==l)break e;break}}if(g)g.push(b);else{b.tobt.length;)bt[bt.length]=256;let n=[],s=e==Al?0:1;return fb(t,s,s,i,0,t.length,n),n}function zD(t){return[new _r(0,t,0)]}let jD="";function $q(t,e,i,n,s){var r;let o=n.head-t.from,l=_r.find(e,o,(r=n.bidiLevel)!==null&&r!==void 0?r:-1,n.assoc),c=e[l],u=c.side(s,i);if(o==u){let g=l+=s?1:-1;if(g<0||g>=e.length)return null;c=e[l=g],o=c.side(!s,i),u=c.side(s,i)}let d=Di(t.text,o,c.forward(s,i));(dc.to)&&(d=u),jD=t.text.slice(Math.min(o,d),Math.max(o,d));let p=l==(s?e.length-1:0)?null:e[l+(s?1:-1)];return p&&d==u&&p.level+(s?0:1)t.some(e=>e)}),YD=Se.define({combine:t=>t.some(e=>e)}),HD=Se.define();class Hc{constructor(e,i="nearest",n="nearest",s=5,r=5,o=!1){this.range=e,this.y=i,this.x=n,this.yMargin=s,this.xMargin=r,this.isSnapshot=o}map(e){return e.empty?this:new Hc(this.range.map(e),this.y,this.x,this.yMargin,this.xMargin,this.isSnapshot)}clip(e){return this.range.to<=e.doc.length?this:new Hc(re.cursor(e.doc.length),this.y,this.x,this.yMargin,this.xMargin,this.isSnapshot)}}const Jp=Ne.define({map:(t,e)=>t.map(e)}),FD=Ne.define();function $n(t,e,i){let n=t.facet(ZD);n.length?n[0](e):window.onerror&&window.onerror(String(e),i,void 0,void 0,e)||(i?console.error(i+":",e):console.error(e))}const po=Se.define({combine:t=>t.length?t[0]:!0});let zq=0;const zc=Se.define({combine(t){return t.filter((e,i)=>{for(let n=0;n{let c=[];return o&&c.push(dO.of(u=>{let d=u.plugin(l);return d?o(d):Pe.none})),r&&c.push(r(l)),c})}static fromClass(e,i){return Jt.define((n,s)=>new e(n,s),i)}}class x_{constructor(e){this.spec=e,this.mustUpdate=null,this.value=null}get plugin(){return this.spec&&this.spec.plugin}update(e){if(this.value){if(this.mustUpdate){let i=this.mustUpdate;if(this.mustUpdate=null,this.value.update)try{this.value.update(i)}catch(n){if($n(i.state,n,"CodeMirror plugin crashed"),this.value.destroy)try{this.value.destroy()}catch{}this.deactivate()}}}else if(this.spec)try{this.value=this.spec.plugin.create(e,this.spec.arg)}catch(i){$n(e.state,i,"CodeMirror plugin crashed"),this.deactivate()}return this}destroy(e){var i;if(!((i=this.value)===null||i===void 0)&&i.destroy)try{this.value.destroy()}catch(n){$n(e.state,n,"CodeMirror plugin crashed")}}deactivate(){this.spec=this.value=null}}const GD=Se.define(),Nx=Se.define(),dO=Se.define(),KD=Se.define(),zx=Se.define(),fd=Se.define(),JD=Se.define();function UA(t,e){let i=t.state.facet(JD);if(!i.length)return i;let n=i.map(r=>r instanceof Function?r(t):r),s=[];return Ge.spans(n,e.from,e.to,{point(){},span(r,o,l,c){let u=r-e.from,d=o-e.from,p=s;for(let g=l.length-1;g>=0;g--,c--){let O=l[g].spec.bidiIsolate,_;if(O==null&&(O=Nq(e.text,u,d)),c>0&&p.length&&(_=p[p.length-1]).to==u&&_.direction==O)_.to=d,p=_.inner;else{let b={from:u,to:d,direction:O,inner:[]};p.push(b),p=b.inner}}}}),s}const eB=Se.define();function jx(t){let e=0,i=0,n=0,s=0;for(let r of t.state.facet(eB)){let o=r(t);o&&(o.left!=null&&(e=Math.max(e,o.left)),o.right!=null&&(i=Math.max(i,o.right)),o.top!=null&&(n=Math.max(n,o.top)),o.bottom!=null&&(s=Math.max(s,o.bottom)))}return{left:e,right:i,top:n,bottom:s}}const Fu=Se.define();class ks{constructor(e,i,n,s){this.fromA=e,this.toA=i,this.fromB=n,this.toB=s}join(e){return new ks(Math.min(this.fromA,e.fromA),Math.max(this.toA,e.toA),Math.min(this.fromB,e.fromB),Math.max(this.toB,e.toB))}addToSet(e){let i=e.length,n=this;for(;i>0;i--){let s=e[i-1];if(!(s.fromA>n.toA)){if(s.toAs.push(new ks(r,o,l,c))),this.changedRanges=s}static create(e,i,n){return new xg(e,i,n)}get viewportChanged(){return(this.flags&4)>0}get viewportMoved(){return(this.flags&8)>0}get heightChanged(){return(this.flags&2)>0}get geometryChanged(){return this.docChanged||(this.flags&18)>0}get focusChanged(){return(this.flags&1)>0}get docChanged(){return!this.changes.empty}get selectionSet(){return this.transactions.some(e=>e.selection)}get empty(){return this.flags==0&&this.transactions.length==0}}const jq=[];class ui{constructor(e,i,n=0){this.dom=e,this.length=i,this.flags=n,this.parent=null,e.cmTile=this}get breakAfter(){return this.flags&1}get children(){return jq}isWidget(){return!1}get isHidden(){return!1}isComposite(){return!1}isLine(){return!1}isText(){return!1}isBlock(){return!1}get domAttrs(){return null}sync(e){if(this.flags|=2,this.flags&4){this.flags&=-5;let i=this.domAttrs;i&&bq(this.dom,i)}}toString(){return this.constructor.name+(this.children.length?`(${this.children})`:"")+(this.breakAfter?"#":"")}destroy(){this.parent=null}setDOM(e){this.dom=e,e.cmTile=this}get posAtStart(){return this.parent?this.parent.posBefore(this):0}get posAtEnd(){return this.posAtStart+this.length}posBefore(e,i=this.posAtStart){let n=i;for(let s of this.children){if(s==e)return n;n+=s.length+s.breakAfter}throw new RangeError("Invalid child in posBefore")}posAfter(e){return this.posBefore(e)+e.length}covers(e){return!0}coordsIn(e,i){return null}domPosFor(e,i){let n=Ta(this.dom),s=this.length?e>0:i>0;return new qs(this.parent.dom,n+(s?1:0),e==0||e==this.length)}markDirty(e){this.flags&=-3,e&&(this.flags|=4),this.parent&&this.parent.flags&2&&this.parent.markDirty(!1)}get overrideDOMText(){return null}get root(){for(let e=this;e;e=e.parent)if(e instanceof mO)return e;return null}static get(e){return e.cmTile}}class pO extends ui{constructor(e){super(e,0),this._children=[]}isComposite(){return!0}get children(){return this._children}get lastChild(){return this.children.length?this.children[this.children.length-1]:null}append(e){this.children.push(e),e.parent=this}sync(e){if(this.flags&2)return;super.sync(e);let i=this.dom,n=null,s,r=(e==null?void 0:e.node)==i?e:null,o=0;for(let l of this.children){if(l.sync(e),o+=l.length+l.breakAfter,s=n?n.nextSibling:i.firstChild,r&&s!=l.dom&&(r.written=!0),l.dom.parentNode==i)for(;s&&s!=l.dom;)s=YA(s);else i.insertBefore(l.dom,s);n=l.dom}for(s=n?n.nextSibling:i.firstChild,r&&s&&(r.written=!0);s;)s=YA(s);this.length=o}}function YA(t){let e=t.nextSibling;return t.parentNode.removeChild(t),e}class mO extends pO{constructor(e,i){super(i),this.view=e}owns(e){for(;e;e=e.parent)if(e==this)return!0;return!1}isBlock(){return!0}nearest(e){for(;;){if(!e)return null;let i=ui.get(e);if(i&&this.owns(i))return i;e=e.parentNode}}blockTiles(e){for(let i=[],n=this,s=0,r=0;;)if(s==n.children.length){if(!i.length)return;n=n.parent,n.breakAfter&&r++,s=i.pop()}else{let o=n.children[s++];if(o instanceof Oo)i.push(s),n=o,s=0;else{let l=r+o.length,c=e(o,r);if(c!==void 0)return c;r=l+o.breakAfter}}}resolveBlock(e,i){let n,s=-1,r,o=-1;if(this.blockTiles((l,c)=>{let u=c+l.length;if(e>=c&&e<=u){if(l.isWidget()&&i>=-1&&i<=1){if(l.flags&32)return!0;l.flags&16&&(n=void 0)}(ce||e==c&&(i>1?l.length:l.covers(-1)))&&(!r||!l.isWidget()&&r.isWidget())&&(r=l,o=e-c)}}),!n&&!r)throw new Error("No tile at position "+e);return n&&i<0||!r?{tile:n,offset:s}:{tile:r,offset:o}}}class Oo extends pO{constructor(e,i){super(e),this.wrapper=i}isBlock(){return!0}covers(e){return this.children.length?e<0?this.children[0].covers(-1):this.lastChild.covers(1):!1}get domAttrs(){return this.wrapper.attributes}static of(e,i){let n=new Oo(i||document.createElement(e.tagName),e);return i||(n.flags|=4),n}}class rh extends pO{constructor(e,i){super(e),this.attrs=i}isLine(){return!0}static start(e,i,n){let s=new rh(i||document.createElement("div"),e);return(!i||!n)&&(s.flags|=4),s}get domAttrs(){return this.attrs}resolveInline(e,i,n){let s=null,r=-1,o=null,l=-1;function c(d,p){for(let g=0,O=0;g=p&&(_.isComposite()?c(_,p-O):(!o||o.isHidden&&(i>0||n&&Vq(o,_)))&&(b>p||_.flags&32)?(o=_,l=p-O):(On&&(e=n);let s=e,r=e,o=0;e==0&&i<0||e==n&&i>=0?xe.chrome||xe.gecko||(e?(s--,o=1):r=0)?0:l.length-1];return xe.safari&&!o&&c.width==0&&(c=Array.prototype.find.call(l,u=>u.width)||c),o?Df(c,o<0):c||null}static of(e,i){let n=new Ol(i||document.createTextNode(e),e);return i||(n.flags|=2),n}}class El extends ui{constructor(e,i,n,s){super(e,i,s),this.widget=n}isWidget(){return!0}get isHidden(){return this.widget.isHidden}covers(e){return this.flags&48?!1:(this.flags&(e<0?64:128))>0}coordsIn(e,i){return this.coordsInWidget(e,i,!1)}coordsInWidget(e,i,n){let s=this.widget.coordsAt(this.dom,e,i);if(s)return s;if(n)return Df(this.dom.getBoundingClientRect(),this.length?e==0:i<=0);{let r=this.dom.getClientRects(),o=null;if(!r.length)return null;let l=this.flags&16?!0:this.flags&32?!1:e>0;for(let c=l?r.length-1:0;o=r[c],!(e>0?c==0:c==r.length-1||o.top0;)if(s.isComposite())if(o){if(!e)break;n&&n.break(),e--,o=!1}else if(r==s.children.length){if(!e&&!l.length)break;n&&n.leave(s),o=!!s.breakAfter,{tile:s,index:r}=l.pop(),r++}else{let c=s.children[r],u=c.breakAfter;(i>0?c.length<=e:c.length=0;l--){let c=i.marks[l],u=s.lastChild;if(u instanceof Bn&&u.mark.eq(c.mark))u.dom!=c.dom&&u.setDOM(w_(c.dom)),s=u;else{if(this.cache.reused.get(c)){let p=ui.get(c.dom);p&&p.setDOM(w_(c.dom))}let d=Bn.of(c.mark,c.dom);s.append(d),s=d}this.cache.reused.set(c,2)}let r=ui.get(e.text);r&&this.cache.reused.set(r,2);let o=new Ol(e.text,e.text.nodeValue);o.flags|=8,s.append(o)}addInlineWidget(e,i,n){let s=this.afterWidget&&e.flags&48&&(this.afterWidget.flags&48)==(e.flags&48);s||this.flushBuffer();let r=this.ensureMarks(i,n);!s&&!(e.flags&16)&&r.append(this.getBuffer(1)),r.append(e),this.pos+=e.length,this.afterWidget=e}addMark(e,i,n){this.flushBuffer(),this.ensureMarks(i,n).append(e),this.pos+=e.length,this.afterWidget=null}addBlockWidget(e){this.getBlockPos().append(e),this.pos+=e.length,this.lastBlock=e,this.endLine()}continueWidget(e){let i=this.afterWidget||this.lastBlock;i.length+=e,this.pos+=e}addLineStart(e,i){var n;e||(e=tB);let s=rh.start(e,i||((n=this.cache.find(rh))===null||n===void 0?void 0:n.dom),!!i);this.getBlockPos().append(this.lastBlock=this.curLine=s)}addLine(e){this.getBlockPos().append(e),this.pos+=e.length,this.lastBlock=e,this.endLine()}addBreak(){this.lastBlock.flags|=1,this.endLine(),this.pos++}addLineStartIfNotCovered(e){this.blockPosCovered()||this.addLineStart(e)}ensureLine(e){this.curLine||this.addLineStart(e)}ensureMarks(e,i){var n;let s=this.curLine;for(let r=e.length-1;r>=0;r--){let o=e[r],l;if(i>0&&(l=s.lastChild)&&l instanceof Bn&&l.mark.eq(o))s=l,i--;else{let c=Bn.of(o,(n=this.cache.find(Bn,u=>u.mark.eq(o)))===null||n===void 0?void 0:n.dom);s.append(c),s=c,i=0}}return s}endLine(){if(this.curLine){this.flushBuffer();let e=this.curLine.lastChild;(!e||!HA(this.curLine,!1)||e.dom.nodeName!="BR"&&e.isWidget()&&!(xe.ios&&HA(this.curLine,!0)))&&this.curLine.append(this.cache.findWidget(C_,0,32)||new El(C_.toDOM(),0,C_,32)),this.curLine=this.afterWidget=null}}updateBlockWrappers(){this.wrapperPos>this.pos+1e4&&(this.blockWrappers.goto(this.pos),this.wrappers.length=0);for(let e=this.wrappers.length-1;e>=0;e--)this.wrappers[e].to=this.pos){let i=new Zq(e.from,e.to,e.value,e.rank),n=this.wrappers.length;for(;n>0&&(this.wrappers[n-1].rank-i.rank||this.wrappers[n-1].to-i.to)<0;)n--;this.wrappers.splice(n,0,i)}this.wrapperPos=this.pos}getBlockPos(){var e;this.updateBlockWrappers();let i=this.root;for(let n of this.wrappers){let s=i.lastChild;if(n.fromo.wrapper.eq(n.wrapper)))===null||e===void 0?void 0:e.dom);i.append(r),i=r}}return i}blockPosCovered(){let e=this.lastBlock;return e!=null&&!e.breakAfter&&(!e.isWidget()||(e.flags&160)>0)}getBuffer(e){let i=2|(e<0?16:32),n=this.cache.find(wg,void 0,1);return n&&(n.flags=i),n||new wg(i)}flushBuffer(){this.afterWidget&&!(this.afterWidget.flags&32)&&(this.afterWidget.parent.append(this.getBuffer(-1)),this.afterWidget=null)}}class Wq{constructor(e){this.skipCount=0,this.text="",this.textOff=0,this.cursor=e.iter()}skip(e){this.textOff+e<=this.text.length?this.textOff+=e:(this.skipCount+=e-(this.text.length-this.textOff),this.text="",this.textOff=0)}next(e){if(this.textOff==this.text.length){let{value:s,lineBreak:r,done:o}=this.cursor.next(this.skipCount);if(this.skipCount=0,o)throw new Error("Ran out of text content when drawing inline views");this.text=s;let l=this.textOff=Math.min(e,s.length);return r?null:s.slice(0,l)}let i=Math.min(this.text.length,this.textOff+e),n=this.text.slice(this.textOff,i);return this.textOff=i,n}}const Cg=[El,rh,Ol,Bn,wg,Oo,mO];for(let t=0;t[]),this.index=Cg.map(()=>0),this.reused=new Map}add(e){let i=e.constructor.bucket,n=this.buckets[i];n.length<6?n.push(e):n[this.index[i]=(this.index[i]+1)%6]=e}find(e,i,n=2){let s=e.bucket,r=this.buckets[s],o=this.index[s];for(let l=r.length-1;l>=0;l--){let c=(l+o)%r.length,u=r[c];if((!i||i(u))&&!this.reused.has(u))return r.splice(c,1),c{if(this.cache.add(o),o.isComposite())return!1},enter:o=>this.cache.add(o),leave:()=>{},break:()=>{}}}run(e,i){let n=i&&this.getCompositionContext(i.text);for(let s=0,r=0,o=0;;){let l=os){let u=c-s;this.preserve(u,!o,!l),s=c,r+=u}if(!l)break;i&&l.fromA<=i.range.fromA&&l.toA>=i.range.toA?(this.forward(l.fromA,i.range.fromA,i.range.fromA{if(o.isWidget())if(this.openWidget)this.builder.continueWidget(c-l);else{let u=c>0||l{o.isLine()?this.builder.addLineStart(o.attrs,this.cache.maybeReuse(o)):(this.cache.add(o),o instanceof Bn&&s.unshift(o.mark)),this.openWidget=!1},leave:o=>{o.isLine()?s.length&&(s.length=r=0):o instanceof Bn&&(s.shift(),r=Math.min(r,s.length))},break:()=>{this.builder.addBreak(),this.openWidget=!1}}),this.text.skip(e)}emit(e,i){let n=null,s=this.builder,r=0,o=Ge.spans(this.decorations,e,i,{point:(l,c,u,d,p,g)=>{if(u instanceof Tl){if(this.disallowBlockEffectsFor[g]){if(u.block)throw new RangeError("Block decorations may not be specified via plugins");if(c>this.view.state.doc.lineAt(l).to)throw new RangeError("Decorations that replace line breaks may not be specified via plugins")}if(r=d.length,p>d.length)s.continueWidget(c-l);else{let O=u.widget||(u.block?oh.block:oh.inline),_=Hq(u),b=this.cache.findWidget(O,c-l,_)||El.of(O,this.view,c-l,_);u.block?(u.startSide>0&&s.addLineStartIfNotCovered(n),s.addBlockWidget(b)):(s.ensureLine(n),s.addInlineWidget(b,d,p))}n=null}else n=Fq(n,u);c>l&&this.text.skip(c-l)},span:(l,c,u,d)=>{for(let p=l;pr,this.openMarks=o}forward(e,i,n=1){i-e<=10?this.old.advance(i-e,n,this.reuseWalker):(this.old.advance(5,-1,this.reuseWalker),this.old.advance(i-e-10,-1),this.old.advance(5,n,this.reuseWalker))}getCompositionContext(e){let i=[],n=null;for(let s=e.parentNode;;s=s.parentNode){let r=ui.get(s);if(s==this.view.contentDOM)break;r instanceof Bn?i.push(r):r!=null&&r.isLine()?n=r:r instanceof Oo||(s.nodeName=="DIV"&&!n&&s!=this.view.contentDOM?n=new rh(s,tB):n||i.push(Bn.of(new hd({tagName:s.nodeName.toLowerCase(),attributes:Sq(s)}),s)))}return{line:n,marks:i}}}function HA(t,e){let i=n=>{for(let s of n.children)if((e?s.isText():s.length)||i(s))return!0;return!1};return i(t)}function Hq(t){let e=t.isReplace?(t.startSide<0?64:0)|(t.endSide>0?128:0):t.startSide>0?32:16;return t.block&&(e|=256),e}const tB={class:"cm-line"};function Fq(t,e){let i=e.spec.attributes,n=e.spec.class;return!i&&!n||(t||(t={class:"cm-line"}),i&&Qx(i,t),n&&(t.class+=" "+n)),t}function Gq(t){let e=[];for(let i=t.parents.length;i>1;i--){let n=i==t.parents.length?t.tile:t.parents[i].tile;n instanceof Bn&&e.push(n.mark)}return e}function w_(t){let e=ui.get(t);return e&&e.setDOM(t.cloneNode()),t}class oh extends Gs{constructor(e){super(),this.tag=e}eq(e){return e.tag==this.tag}toDOM(){return document.createElement(this.tag)}updateDOM(e){return e.nodeName.toLowerCase()==this.tag}get isHidden(){return!0}}oh.inline=new oh("span");oh.block=new oh("div");const C_=new class extends Gs{toDOM(){return document.createElement("br")}get isHidden(){return!0}get editable(){return!0}};class FA{constructor(e){this.view=e,this.decorations=[],this.blockWrappers=[],this.dynamicDecorationMap=[!1],this.domChanged=null,this.hasComposition=null,this.editContextFormatting=Pe.none,this.lastCompositionAfterCursor=!1,this.minWidth=0,this.minWidthFrom=0,this.minWidthTo=0,this.impreciseAnchor=null,this.impreciseHead=null,this.forceSelection=!1,this.lastUpdate=Date.now(),this.updateDeco(),this.tile=new mO(e,e.contentDOM),this.updateInner([new ks(0,0,0,e.state.doc.length)],null)}update(e){var i;let n=e.changedRanges;this.minWidth>0&&n.length&&(n.every(({fromA:d,toA:p})=>pthis.minWidthTo)?(this.minWidthFrom=e.changes.mapPos(this.minWidthFrom,1),this.minWidthTo=e.changes.mapPos(this.minWidthTo,1)):this.minWidth=this.minWidthFrom=this.minWidthTo=0),this.updateEditContextFormatting(e);let s=-1;this.view.inputState.composing>=0&&!this.view.observer.editContext&&(!((i=this.domChanged)===null||i===void 0)&&i.newSel?s=this.domChanged.newSel.head:!oW(e.changes,this.hasComposition)&&!e.selectionSet&&(s=e.state.selection.main.head));let r=s>-1?Jq(this.view,e.changes,s):null;if(this.domChanged=null,this.hasComposition){let{from:d,to:p}=this.hasComposition;n=new ks(d,p,e.changes.mapPos(d,-1),e.changes.mapPos(p,1)).addToSet(n.slice())}this.hasComposition=r?{from:r.range.fromB,to:r.range.toB}:null,(xe.ie||xe.chrome)&&!r&&e&&e.state.doc.lines!=e.startState.doc.lines&&(this.forceSelection=!0);let o=this.decorations,l=this.blockWrappers;this.updateDeco();let c=iW(o,this.decorations,e.changes);c.length&&(n=ks.extendWithRanges(n,c));let u=sW(l,this.blockWrappers,e.changes);return u.length&&(n=ks.extendWithRanges(n,u)),r&&!n.some(d=>d.fromA<=r.range.fromA&&d.toA>=r.range.toA)&&(n=r.range.addToSet(n.slice())),this.tile.flags&2&&n.length==0?!1:(this.updateInner(n,r),e.transactions.length&&(this.lastUpdate=Date.now()),!0)}updateInner(e,i){this.view.viewState.mustMeasureContent=!0;let{observer:n}=this.view;n.ignore(()=>{if(i||e.length){let o=this.tile,l=new Yq(this.view,o,this.blockWrappers,this.decorations,this.dynamicDecorationMap);this.tile=l.run(e,i),pb(o,l.cache.reused)}this.tile.dom.style.height=this.view.viewState.contentHeight/this.view.scaleY+"px",this.tile.dom.style.flexBasis=this.minWidth?this.minWidth+"px":"";let r=xe.chrome||xe.ios?{node:n.selectionRange.focusNode,written:!1}:void 0;this.tile.sync(r),r&&(r.written||n.selectionRange.focusNode!=r.node||!this.tile.dom.contains(r.node))&&(this.forceSelection=!0),this.tile.dom.style.height=""});let s=[];if(this.view.viewport.from||this.view.viewport.to-1)&&pf(n,this.view.observer.selectionRange)&&!(s&&n.contains(s));if(!(r||i||o))return;let l=this.forceSelection;this.forceSelection=!1;let c=this.view.state.selection.main,u,d;if(c.empty?d=u=this.inlineDOMNearPos(c.anchor,c.assoc||1):(d=this.inlineDOMNearPos(c.head,c.head==c.from?1:-1),u=this.inlineDOMNearPos(c.anchor,c.anchor==c.from?1:-1)),xe.gecko&&c.empty&&!this.hasComposition&&Kq(u)){let g=document.createTextNode("");this.view.observer.ignore(()=>u.node.insertBefore(g,u.node.childNodes[u.offset]||null)),u=d=new qs(g,0),l=!0}let p=this.view.observer.selectionRange;(l||!p.focusNode||(!gf(u.node,u.offset,p.anchorNode,p.anchorOffset)||!gf(d.node,d.offset,p.focusNode,p.focusOffset))&&!this.suppressWidgetCursorChange(p,c))&&(this.view.observer.ignore(()=>{xe.android&&xe.chrome&&n.contains(p.focusNode)&&rW(p.focusNode,n)&&(n.blur(),n.focus({preventScroll:!0}));let g=Lf(this.view.root);if(g)if(c.empty){if(xe.gecko){let O=eW(u.node,u.offset);if(O&&O!=3){let _=(O==1?LD:DD)(u.node,u.offset);_&&(u=new qs(_.node,_.offset))}}g.collapse(u.node,u.offset),c.bidiLevel!=null&&g.caretBidiLevel!==void 0&&(g.caretBidiLevel=c.bidiLevel)}else if(g.extend){g.collapse(u.node,u.offset);try{g.extend(d.node,d.offset)}catch{}}else{let O=document.createRange();c.anchor>c.head&&([u,d]=[d,u]),O.setEnd(d.node,d.offset),O.setStart(u.node,u.offset),g.removeAllRanges(),g.addRange(O)}o&&this.view.root.activeElement==n&&(n.blur(),s&&s.focus())}),this.view.observer.setSelectionRange(u,d)),this.impreciseAnchor=u.precise?null:new qs(p.anchorNode,p.anchorOffset),this.impreciseHead=d.precise?null:new qs(p.focusNode,p.focusOffset)}suppressWidgetCursorChange(e,i){return this.hasComposition&&i.empty&&gf(e.focusNode,e.focusOffset,e.anchorNode,e.anchorOffset)&&this.posFromDOM(e.focusNode,e.focusOffset)==i.head}enforceCursorAssoc(){if(this.hasComposition)return;let{view:e}=this,i=e.state.selection.main,n=Lf(e.root),{anchorNode:s,anchorOffset:r}=e.observer.selectionRange;if(!n||!i.empty||!i.assoc||!n.modify)return;let o=this.lineAt(i.head,i.assoc);if(!o)return;let l=o.posAtStart;if(i.head==l||i.head==l+o.length)return;let c=this.coordsAt(i.head,-1),u=this.coordsAt(i.head,1);if(!c||!u||c.bottom>u.top)return;let d=this.domAtPos(i.head+i.assoc,i.assoc);n.collapse(d.node,d.offset),n.modify("move",i.assoc<0?"forward":"backward","lineboundary"),e.observer.readSelectionRange();let p=e.observer.selectionRange;e.docView.posFromDOM(p.anchorNode,p.anchorOffset)!=i.from&&n.collapse(s,r)}posFromDOM(e,i){let n=this.tile.nearest(e);if(!n)return this.tile.dom.compareDocumentPosition(e)&2?0:this.view.state.doc.length;let s=n.posAtStart;if(n.isComposite()){let r;if(e==n.dom)r=n.dom.childNodes[i];else{let o=bo(e)==0?0:i==0?-1:1;for(;;){let l=e.parentNode;if(l==n.dom)break;o==0&&l.firstChild!=l.lastChild&&(e==l.firstChild?o=-1:o=1),e=l}o<0?r=e:r=e.nextSibling}if(r==n.dom.firstChild)return s;for(;r&&!ui.get(r);)r=r.nextSibling;if(!r)return s+n.length;for(let o=0,l=s;;o++){let c=n.children[o];if(c.dom==r)return l;l+=c.length+c.breakAfter}}else return n.isText()?e==n.dom?s+i:s+(i?n.length:0):s}domAtPos(e,i){let{tile:n,offset:s}=this.tile.resolveBlock(e,i);return n.isWidget()?n.domPosFor(e,i):n.domIn(s,i)}inlineDOMNearPos(e,i){let n,s=-1,r=!1,o,l=-1,c=!1;return this.tile.blockTiles((u,d)=>{if(u.isWidget()){if(u.flags&32&&d>=e)return!0;u.flags&16&&(r=!0)}else{let p=d+u.length;if(d<=e&&(n=u,s=e-d,r=p=e&&!o&&(o=u,l=e-d,c=d>e),d>e&&o)return!0}}),!n&&!o?this.domAtPos(e,i):(r&&o?n=null:c&&n&&(o=null),n&&i<0||!o?n.domIn(s,i):o.domIn(l,i))}coordsAt(e,i){let{tile:n,offset:s}=this.tile.resolveBlock(e,i);return n.isWidget()?n.widget instanceof k_?null:n.coordsInWidget(s,i,!0):n.coordsIn(s,i)}lineAt(e,i){let{tile:n}=this.tile.resolveBlock(e,i);return n.isLine()?n:null}coordsForChar(e){let{tile:i,offset:n}=this.tile.resolveBlock(e,1);if(!i.isLine())return null;function s(r,o){if(r.isComposite())for(let l of r.children){if(l.length>=o){let c=s(l,o);if(c)return c}if(o-=l.length,o<0)break}else if(r.isText()&&oMath.max(this.view.scrollDOM.clientWidth,this.minWidth)+1,l=-1,c=this.view.textDirection==St.LTR,u=0,d=(p,g,O)=>{for(let _=0;_s);_++){let b=p.children[_],x=g+b.length,w=b.dom.getBoundingClientRect(),{height:k}=w;if(O&&!_&&(u+=w.top-O.top),b instanceof Oo)x>n&&d(b,g,w);else if(g>=n&&(u>0&&i.push(-u),i.push(k+u),u=0,o)){let T=b.dom.lastChild,A=T?mf(T):[];if(A.length){let Q=A[A.length-1],E=c?Q.right-w.left:w.right-Q.left;E>l&&(l=E,this.minWidth=r,this.minWidthFrom=g,this.minWidthTo=x)}}O&&_==p.children.length-1&&(u+=O.bottom-w.bottom),g=x+b.breakAfter}};return d(this.tile,0,null),i}textDirectionAt(e){let{tile:i}=this.tile.resolveBlock(e,1);return getComputedStyle(i.dom).direction=="rtl"?St.RTL:St.LTR}measureTextSize(){let e=this.tile.blockTiles(o=>{if(o.isLine()&&o.children.length&&o.length<=20){let l=0,c;for(let u of o.children){if(!u.isText()||/[^ -~]/.test(u.text))return;let d=mf(u.dom);if(d.length!=1)return;l+=d[0].width,c=d[0].height}if(l)return{lineHeight:o.dom.getBoundingClientRect().height,charWidth:l/o.length,textHeight:c}}});if(e)return e;let i=document.createElement("div"),n,s,r;return i.className="cm-line",i.style.width="99999px",i.style.position="absolute",i.textContent="abc def ghi jkl mno pqr stu",this.view.observer.ignore(()=>{this.tile.dom.appendChild(i);let o=mf(i.firstChild)[0];n=i.getBoundingClientRect().height,s=o&&o.width?o.width/27:7,r=o&&o.height?o.height:n,i.remove()}),{lineHeight:n,charWidth:s,textHeight:r}}computeBlockGapDeco(){let e=[],i=this.view.viewState;for(let n=0,s=0;;s++){let r=s==i.viewports.length?null:i.viewports[s],o=r?r.from-1:this.view.state.doc.length;if(o>n){let l=(i.lineBlockAt(o).bottom-i.lineBlockAt(n).top)/this.view.scaleY;e.push(Pe.replace({widget:new k_(l),block:!0,inclusive:!0,isBlockGap:!0}).range(n,o))}if(!r)break;n=r.to+1}return Pe.set(e)}updateDeco(){let e=1,i=this.view.state.facet(dO).map(r=>(this.dynamicDecorationMap[e++]=typeof r=="function")?r(this.view):r),n=!1,s=this.view.state.facet(zx).map((r,o)=>{let l=typeof r=="function";return l&&(n=!0),l?r(this.view):r});for(s.length&&(this.dynamicDecorationMap[e++]=n,i.push(Ge.join(s))),this.decorations=[this.editContextFormatting,...i,this.computeBlockGapDeco(),this.view.viewState.lineGapDeco];etypeof r=="function"?r(this.view):r)}scrollIntoView(e){if(e.isSnapshot){let u=this.view.viewState.lineBlockAt(e.range.head);this.view.scrollDOM.scrollTop=u.top-e.yMargin,this.view.scrollDOM.scrollLeft=e.xMargin;return}for(let u of this.view.state.facet(HD))try{if(u(this.view,e.range,e))return!0}catch(d){$n(this.view.state,d,"scroll handler")}let{range:i}=e,n=this.coordsAt(i.head,i.empty?i.assoc:i.head>i.anchor?-1:1),s;if(!n)return;!i.empty&&(s=this.coordsAt(i.anchor,i.anchor>i.head?-1:1))&&(n={left:Math.min(n.left,s.left),top:Math.min(n.top,s.top),right:Math.max(n.right,s.right),bottom:Math.max(n.bottom,s.bottom)});let r=jx(this.view),o={left:n.left-r.left,top:n.top-r.top,right:n.right+r.right,bottom:n.bottom+r.bottom},{offsetWidth:l,offsetHeight:c}=this.view.scrollDOM;if(Cq(this.view.scrollDOM,o,i.head1&&(n.top>window.pageYOffset+window.visualViewport.offsetTop+window.visualViewport.height||n.bottomn.isWidget()||n.children.some(i);return i(this.tile.resolveBlock(e,1).tile)}destroy(){pb(this.tile)}}function pb(t,e){let i=e==null?void 0:e.get(t);if(i!=1){i==null&&t.destroy();for(let n of t.children)pb(n,e)}}function Kq(t){return t.node.nodeType==1&&t.node.firstChild&&(t.offset==0||t.node.childNodes[t.offset-1].contentEditable=="false")&&(t.offset==t.node.childNodes.length||t.node.childNodes[t.offset].contentEditable=="false")}function iB(t,e){let i=t.observer.selectionRange;if(!i.focusNode)return null;let n=LD(i.focusNode,i.focusOffset),s=DD(i.focusNode,i.focusOffset),r=n||s;if(s&&n&&s.node!=n.node){let l=ui.get(s.node);if(!l||l.isText()&&l.text!=s.node.nodeValue)r=s;else if(t.docView.lastCompositionAfterCursor){let c=ui.get(n.node);!c||c.isText()&&c.text!=n.node.nodeValue||(r=s)}}if(t.docView.lastCompositionAfterCursor=r!=n,!r)return null;let o=e-r.offset;return{from:o,to:o+r.node.nodeValue.length,node:r.node}}function Jq(t,e,i){let n=iB(t,i);if(!n)return null;let{node:s,from:r,to:o}=n,l=s.nodeValue;if(/[\n\r]/.test(l)||t.state.doc.sliceString(n.from,n.to)!=l)return null;let c=e.invertedDesc;return{range:new ks(c.mapPos(r),c.mapPos(o),r,o),text:s}}function eW(t,e){return t.nodeType!=1?0:(e&&t.childNodes[e-1].contentEditable=="false"?1:0)|(e{ne.from&&(i=!0)}),i}class k_ extends Gs{constructor(e){super(),this.height=e}toDOM(){let e=document.createElement("div");return e.className="cm-gap",this.updateDOM(e),e}eq(e){return e.height==this.height}updateDOM(e){return e.style.height=this.height+"px",!0}get editable(){return!0}get estimatedHeight(){return this.height}ignoreEvent(){return!1}}function aW(t,e,i=1){let n=t.charCategorizer(e),s=t.doc.lineAt(e),r=e-s.from;if(s.length==0)return re.cursor(e);r==0?i=1:r==s.length&&(i=-1);let o=r,l=r;i<0?o=Di(s.text,r,!1):l=Di(s.text,r);let c=n(s.text.slice(o,l));for(;o>0;){let u=Di(s.text,o,!1);if(n(s.text.slice(u,o))!=c)break;o=u}for(;lt.defaultLineHeight*1.5){let l=t.viewState.heightOracle.textHeight,c=Math.floor((s-i.top-(t.defaultLineHeight-l)*.5)/l);r+=c*t.viewState.heightOracle.lineLength}let o=t.state.sliceDoc(i.from,i.to);return i.from+ib(o,r,t.state.tabSize)}function mb(t,e,i){let n=t.lineBlockAt(e);if(Array.isArray(n.type)){let s;for(let r of n.type){if(r.from>e)break;if(!(r.toe)return r;(!s||r.type==Ki.Text&&(s.type!=r.type||(i<0?r.frome)))&&(s=r)}}return s||n}return n}function cW(t,e,i,n){let s=mb(t,e.head,e.assoc||-1),r=!n||s.type!=Ki.Text||!(t.lineWrapping||s.widgetLineBreaks)?null:t.coordsAtPos(e.assoc<0&&e.head>s.from?e.head-1:e.head);if(r){let o=t.dom.getBoundingClientRect(),l=t.textDirectionAt(s.from),c=t.posAtCoords({x:i==(l==St.LTR)?o.right-1:o.left+1,y:(r.top+r.bottom)/2});if(c!=null)return re.cursor(c,i?-1:1)}return re.cursor(i?s.to:s.from,i?-1:1)}function GA(t,e,i,n){let s=t.state.doc.lineAt(e.head),r=t.bidiSpans(s),o=t.textDirectionAt(s.from);for(let l=e,c=null;;){let u=$q(s,r,o,l,i),d=jD;if(!u){if(s.number==(i?t.state.doc.lines:1))return l;d=` +`,s=t.state.doc.line(s.number+(i?1:-1)),r=t.bidiSpans(s),u=t.visualLineSide(s,!i)}if(c){if(!c(d))return l}else{if(!n)return u;c=n(d)}l=u}}function hW(t,e,i){let n=t.state.charCategorizer(e),s=n(i);return r=>{let o=n(r);return s==Dt.Space&&(s=o),s==o}}function uW(t,e,i,n){let s=e.head,r=i?1:-1;if(s==(i?t.state.doc.length:0))return re.cursor(s,e.assoc);let o=e.goalColumn,l,c=t.contentDOM.getBoundingClientRect(),u=t.coordsAtPos(s,(e.empty?e.assoc:0)||(i?1:-1)),d=t.documentTop;if(u)o==null&&(o=u.left-c.left),l=r<0?u.top:u.bottom;else{let _=t.viewState.lineBlockAt(s);o==null&&(o=Math.min(c.right-c.left,t.defaultCharacterWidth*(s-_.from))),l=(r<0?_.top:_.bottom)+d}let p=c.left+o,g=n??t.viewState.heightOracle.textHeight>>1,O=gb(t,{x:p,y:l+g*r},!1,r);return re.cursor(O.pos,O.assoc,void 0,o)}function Of(t,e,i){for(;;){let n=0;for(let s of t)s.between(e-1,e+1,(r,o,l)=>{if(e>r&&es(t)),i.from,e.head>i.from?-1:1);return n==i.from?i:re.cursor(n,nt.viewState.docHeight)return new Or(t.state.doc.length,-1);if(u=t.elementAtHeight(c),n==null)break;if(u.type==Ki.Text){if(n<0?u.tot.viewport.to)break;let g=t.docView.coordsAt(n<0?u.from:u.to,n>0?-1:1);if(g&&(n<0?g.top<=c+r:g.bottom>=c+r))break}let p=t.viewState.heightOracle.textHeight/2;c=n>0?u.bottom+p:u.top-p}if(t.viewport.from>=u.to||t.viewport.to<=u.from){if(i)return null;if(u.type==Ki.Text){let p=lW(t,s,u,o,l);return new Or(p,p==u.from?1:-1)}}if(u.type!=Ki.Text)return c<(u.top+u.bottom)/2?new Or(u.from,1):new Or(u.to,-1);let d=t.docView.lineAt(u.from,2);return(!d||d.length!=u.length)&&(d=t.docView.lineAt(u.from,-2)),new fW(t,o,l,t.textDirectionAt(u.from)).scanTile(d,u.from)}class fW{constructor(e,i,n,s){this.view=e,this.x=i,this.y=n,this.baseDir=s,this.line=null,this.spans=null}bidiSpansAt(e){return(!this.line||this.line.from>e||this.line.to1||n.length&&(n[0].level!=this.baseDir||n[0].to+s.from>1;t:if(r.has(_)){let x=n+Math.floor(Math.random()*O);for(let w=0;wthis.y)(!c||c.top>w.top)&&(c=w),k=-1;else{let T=w.left>this.x?this.x-w.left:w.right(p.left+p.right)/2==g}}scanText(e,i){let n=[];for(let r=0;r{let o=n[r]-i,l=n[r+1]-i;return Bf(e.dom,o,l).getClientRects()});return s.after?new Or(n[s.i+1],-1):new Or(n[s.i],1)}scanTile(e,i){if(!e.length)return new Or(i,1);if(e.children.length==1){let l=e.children[0];if(l.isText())return this.scanText(l,i);if(l.isComposite())return this.scanTile(l,i)}let n=[i];for(let l=0,c=i;l{let c=e.children[l];return c.flags&48?null:(c.dom.nodeType==1?c.dom:Bf(c.dom,0,c.length)).getClientRects()}),r=e.children[s.i],o=n[s.i];return r.isText()?this.scanText(r,o):r.isComposite()?this.scanTile(r,o):s.after?new Or(n[s.i+1],-1):new Or(o,1)}}const Gu="￿";class dW{constructor(e,i){this.points=e,this.view=i,this.text="",this.lineSeparator=i.state.facet(et.lineSeparator)}append(e){this.text+=e}lineBreak(){this.text+=Gu}readRange(e,i){if(!e)return this;let n=e.parentNode;for(let s=e;;){this.findPointBefore(n,s);let r=this.text.length;this.readNode(s);let o=ui.get(s),l=s.nextSibling;if(l==i){o!=null&&o.breakAfter&&!l&&n!=this.view.contentDOM&&this.lineBreak();break}let c=ui.get(l);(o&&c?o.breakAfter:(o?o.breakAfter:Sg(s))||Sg(l)&&(s.nodeName!="BR"||o!=null&&o.isWidget())&&this.text.length>r)&&!mW(l,i)&&this.lineBreak(),s=l}return this.findPointBefore(n,i),this}readTextNode(e){let i=e.nodeValue;for(let n of this.points)n.node==e&&(n.pos=this.text.length+Math.min(n.offset,i.length));for(let n=0,s=this.lineSeparator?null:/\r\n?|\n/g;;){let r=-1,o=1,l;if(this.lineSeparator?(r=i.indexOf(this.lineSeparator,n),o=this.lineSeparator.length):(l=s.exec(i))&&(r=l.index,o=l[0].length),this.append(i.slice(n,r<0?i.length:r)),r<0)break;if(this.lineBreak(),o>1)for(let c of this.points)c.node==e&&c.pos>this.text.length&&(c.pos-=o-1);n=r+o}}readNode(e){let i=ui.get(e),n=i&&i.overrideDOMText;if(n!=null){this.findPointInside(e,n.length);for(let s=n.iter();!s.next().done;)s.lineBreak?this.lineBreak():this.append(s.value)}else e.nodeType==3?this.readTextNode(e):e.nodeName=="BR"?e.nextSibling&&this.lineBreak():e.nodeType==1&&this.readRange(e.firstChild,null)}findPointBefore(e,i){for(let n of this.points)n.node==e&&e.childNodes[n.offset]==i&&(n.pos=this.text.length)}findPointInside(e,i){for(let n of this.points)(e.nodeType==3?n.node==e:e.contains(n.node))&&(n.pos=this.text.length+(pW(e,n.node,n.offset)?i:0))}}function pW(t,e,i){for(;;){if(!e||i-1;let{impreciseHead:r,impreciseAnchor:o}=e.docView;if(e.state.readOnly&&i>-1)this.newSel=null;else if(i>-1&&(this.bounds=sB(e.docView.tile,i,n,0))){let l=r||o?[]:vW(e),c=new dW(l,e);c.readRange(this.bounds.startDOM,this.bounds.endDOM),this.text=c.text,this.newSel=_W(l,this.bounds.from)}else{let l=e.observer.selectionRange,c=r&&r.node==l.focusNode&&r.offset==l.focusOffset||!cb(e.contentDOM,l.focusNode)?e.state.selection.main.head:e.docView.posFromDOM(l.focusNode,l.focusOffset),u=o&&o.node==l.anchorNode&&o.offset==l.anchorOffset||!cb(e.contentDOM,l.anchorNode)?e.state.selection.main.anchor:e.docView.posFromDOM(l.anchorNode,l.anchorOffset),d=e.viewport;if((xe.ios||xe.chrome)&&e.state.selection.main.empty&&c!=u&&(d.from>0||d.to-1&&e.state.selection.ranges.length>1?this.newSel=e.state.selection.replaceRange(re.range(u,c)):this.newSel=re.single(u,c)}}}function sB(t,e,i,n){if(t.isComposite()){let s=-1,r=-1,o=-1,l=-1;for(let c=0,u=n,d=n;ci)return sB(p,e,i,u);if(g>=e&&s==-1&&(s=c,r=u),u>i&&p.dom.parentNode==t.dom){o=c,l=d;break}d=g,u=g+p.breakAfter}return{from:r,to:l<0?n+t.length:l,startDOM:(s?t.children[s-1].dom.nextSibling:null)||t.dom.firstChild,endDOM:o=0?t.children[o].dom:null}}else return t.isText()?{from:n,to:n+t.length,startDOM:t.dom,endDOM:t.dom.nextSibling}:null}function rB(t,e){let i,{newSel:n}=e,s=t.state.selection.main,r=t.inputState.lastKeyTime>Date.now()-100?t.inputState.lastKeyCode:-1;if(e.bounds){let{from:o,to:l}=e.bounds,c=s.from,u=null;(r===8||xe.android&&e.text.length=s.from&&i.to<=s.to&&(i.from!=s.from||i.to!=s.to)&&s.to-s.from-(i.to-i.from)<=4?i={from:s.from,to:s.to,insert:t.state.doc.slice(s.from,i.from).append(i.insert).append(t.state.doc.slice(i.to,s.to))}:t.state.doc.lineAt(s.from).toDate.now()-50?i={from:s.from,to:s.to,insert:t.state.toText(t.inputState.insertingText)}:xe.chrome&&i&&i.from==i.to&&i.from==s.head&&i.insert.toString()==` + `&&t.lineWrapping&&(n&&(n=re.single(n.main.anchor-1,n.main.head-1)),i={from:s.from,to:s.to,insert:at.of([" "])}),i)return Ix(t,i,n,r);if(n&&!kg(n,s)){let o=!1,l="select";return t.inputState.lastSelectionTime>Date.now()-50&&(t.inputState.lastSelectionOrigin=="select"&&(o=!0),l=t.inputState.lastSelectionOrigin,l=="select.pointer"&&(n=nB(t.state.facet(fd).map(c=>c(t)),n))),t.dispatch({selection:n,scrollIntoView:o,userEvent:l}),!0}else return!1}function Ix(t,e,i,n=-1){if(xe.ios&&t.inputState.flushIOSKey(e))return!0;let s=t.state.selection.main;if(xe.android&&(e.to==s.to&&(e.from==s.from||e.from==s.from-1&&t.state.sliceDoc(e.from,s.from)==" ")&&e.insert.length==1&&e.insert.lines==2&&Yc(t.contentDOM,"Enter",13)||(e.from==s.from-1&&e.to==s.to&&e.insert.length==0||n==8&&e.insert.lengths.head)&&Yc(t.contentDOM,"Backspace",8)||e.from==s.from&&e.to==s.to+1&&e.insert.length==0&&Yc(t.contentDOM,"Delete",46)))return!0;let r=e.insert.toString();t.inputState.composing>=0&&t.inputState.composing++;let o,l=()=>o||(o=OW(t,e,i));return t.state.facet(qD).some(c=>c(t,e.from,e.to,r,l))||t.dispatch(l()),!0}function OW(t,e,i){let n,s=t.state,r=s.selection.main,o=-1;if(e.from==e.to&&e.fromr.to){let c=e.fromp(t)),u,c);e.from==d&&(o=d)}if(o>-1)n={changes:e,selection:re.cursor(e.from+e.insert.length,-1)};else if(e.from>=r.from&&e.to<=r.to&&e.to-e.from>=(r.to-r.from)/3&&(!i||i.main.empty&&i.main.from==e.from+e.insert.length)&&t.inputState.composing<0){let c=r.frome.to?s.sliceDoc(e.to,r.to):"";n=s.replaceSelection(t.state.toText(c+e.insert.sliceString(0,void 0,t.state.lineBreak)+u))}else{let c=s.changes(e),u=i&&i.main.to<=c.newLength?i.main:void 0;if(s.selection.ranges.length>1&&(t.inputState.composing>=0||t.inputState.compositionPendingChange)&&e.to<=r.to+10&&e.to>=r.to-10){let d=t.state.sliceDoc(e.from,e.to),p,g=i&&iB(t,i.main.head);if(g){let _=e.insert.length-(e.to-e.from);p={from:g.from,to:g.to-_}}else p=t.state.doc.lineAt(r.head);let O=r.to-e.to;n=s.changeByRange(_=>{if(_.from==r.from&&_.to==r.to)return{changes:c,range:u||_.map(c)};let b=_.to-O,x=b-d.length;if(t.state.sliceDoc(x,b)!=d||b>=p.from&&x<=p.to)return{range:_};let w=s.changes({from:x,to:b,insert:e.insert}),k=_.to-r.to;return{changes:w,range:u?re.range(Math.max(0,u.anchor+k),Math.max(0,u.head+k)):_.map(w)}})}else n={changes:c,selection:u&&s.selection.replaceRange(u)}}let l="input.type";return(t.composing||t.inputState.compositionPendingChange&&t.inputState.compositionEndedAt>Date.now()-50)&&(t.inputState.compositionPendingChange=!1,l+=".compose",t.inputState.compositionFirstChange&&(l+=".start",t.inputState.compositionFirstChange=!1)),s.update(n,{userEvent:l,scrollIntoView:!0})}function oB(t,e,i,n){let s=Math.min(t.length,e.length),r=0;for(;r0&&l>0&&t.charCodeAt(o-1)==e.charCodeAt(l-1);)o--,l--;if(n=="end"){let c=Math.max(0,r-Math.min(o,l));i-=o+c-r}if(o=o?r-i:0;r-=c,l=r+(l-o),o=r}else if(l=l?r-i:0;r-=c,o=r+(o-l),l=r}return{from:r,toA:o,toB:l}}function vW(t){let e=[];if(t.root.activeElement!=t.contentDOM)return e;let{anchorNode:i,anchorOffset:n,focusNode:s,focusOffset:r}=t.observer.selectionRange;return i&&(e.push(new KA(i,n)),(s!=i||r!=n)&&e.push(new KA(s,r))),e}function _W(t,e){if(t.length==0)return null;let i=t[0].pos,n=t.length==2?t[1].pos:i;return i>-1&&n>-1?re.single(i+e,n+e):null}function kg(t,e){return e.head==t.main.head&&e.anchor==t.main.anchor}class yW{setSelectionOrigin(e){this.lastSelectionOrigin=e,this.lastSelectionTime=Date.now()}constructor(e){this.view=e,this.lastKeyCode=0,this.lastKeyTime=0,this.lastTouchTime=0,this.lastFocusTime=0,this.lastScrollTop=0,this.lastScrollLeft=0,this.pendingIOSKey=void 0,this.tabFocusMode=-1,this.lastSelectionOrigin=null,this.lastSelectionTime=0,this.lastContextMenu=0,this.scrollHandlers=[],this.handlers=Object.create(null),this.composing=-1,this.compositionFirstChange=null,this.compositionEndedAt=0,this.compositionPendingKey=!1,this.compositionPendingChange=!1,this.insertingText="",this.insertingTextAt=0,this.mouseSelection=null,this.draggedContent=null,this.handleEvent=this.handleEvent.bind(this),this.notifiedFocused=e.hasFocus,xe.safari&&e.contentDOM.addEventListener("input",()=>null),xe.gecko&&DW(e.contentDOM.ownerDocument)}handleEvent(e){!AW(this.view,e)||this.ignoreDuringComposition(e)||e.type=="keydown"&&this.keydown(e)||(this.view.updateState!=0?Promise.resolve().then(()=>this.runHandlers(e.type,e)):this.runHandlers(e.type,e))}runHandlers(e,i){let n=this.handlers[e];if(n){for(let s of n.observers)s(this.view,i);for(let s of n.handlers){if(i.defaultPrevented)break;if(s(this.view,i)){i.preventDefault();break}}}}ensureHandlers(e){let i=bW(e),n=this.handlers,s=this.view.contentDOM;for(let r in i)if(r!="scroll"){let o=!i[r].handlers.length,l=n[r];l&&o!=!l.handlers.length&&(s.removeEventListener(r,this.handleEvent),l=null),l||s.addEventListener(r,this.handleEvent,{passive:o})}for(let r in n)r!="scroll"&&!i[r]&&s.removeEventListener(r,this.handleEvent);this.handlers=i}keydown(e){if(this.lastKeyCode=e.keyCode,this.lastKeyTime=Date.now(),e.keyCode==9&&this.tabFocusMode>-1&&(!this.tabFocusMode||Date.now()<=this.tabFocusMode))return!0;if(this.tabFocusMode>0&&e.keyCode!=27&&lB.indexOf(e.keyCode)<0&&(this.tabFocusMode=-1),xe.android&&xe.chrome&&!e.synthetic&&(e.keyCode==13||e.keyCode==8))return this.view.observer.delayAndroidKey(e.key,e.keyCode),!0;let i;return xe.ios&&!e.synthetic&&!e.altKey&&!e.metaKey&&((i=aB.find(n=>n.keyCode==e.keyCode))&&!e.ctrlKey||SW.indexOf(e.key)>-1&&e.ctrlKey&&!e.shiftKey)?(this.pendingIOSKey=i||e,setTimeout(()=>this.flushIOSKey(),250),!0):(e.keyCode!=229&&this.view.observer.forceFlush(),!1)}flushIOSKey(e){let i=this.pendingIOSKey;return!i||i.key=="Enter"&&e&&e.from0?!0:xe.safari&&!xe.ios&&this.compositionPendingKey&&Date.now()-this.compositionEndedAt<100?(this.compositionPendingKey=!1,!0):!1}startMouseSelection(e){this.mouseSelection&&this.mouseSelection.destroy(),this.mouseSelection=e}update(e){this.view.observer.update(e),this.mouseSelection&&this.mouseSelection.update(e),this.draggedContent&&e.docChanged&&(this.draggedContent=this.draggedContent.map(e.changes)),e.transactions.length&&(this.lastKeyCode=this.lastSelectionTime=0)}destroy(){this.mouseSelection&&this.mouseSelection.destroy()}}function JA(t,e){return(i,n)=>{try{return e.call(t,n,i)}catch(s){$n(i.state,s)}}}function bW(t){let e=Object.create(null);function i(n){return e[n]||(e[n]={observers:[],handlers:[]})}for(let n of t){let s=n.spec,r=s&&s.plugin.domEventHandlers,o=s&&s.plugin.domEventObservers;if(r)for(let l in r){let c=r[l];c&&i(l).handlers.push(JA(n.value,c))}if(o)for(let l in o){let c=o[l];c&&i(l).observers.push(JA(n.value,c))}}for(let n in Hs)i(n).handlers.push(Hs[n]);for(let n in Qs)i(n).observers.push(Qs[n]);return e}const aB=[{key:"Backspace",keyCode:8,inputType:"deleteContentBackward"},{key:"Enter",keyCode:13,inputType:"insertParagraph"},{key:"Enter",keyCode:13,inputType:"insertLineBreak"},{key:"Delete",keyCode:46,inputType:"deleteContentForward"}],SW="dthko",lB=[16,17,18,20,91,92,224,225],em=6;function tm(t){return Math.max(0,t)*.7+8}function xW(t,e){return Math.max(Math.abs(t.clientX-e.clientX),Math.abs(t.clientY-e.clientY))}class wW{constructor(e,i,n,s){this.view=e,this.startEvent=i,this.style=n,this.mustSelect=s,this.scrollSpeed={x:0,y:0},this.scrolling=-1,this.lastEvent=i,this.scrollParents=kq(e.contentDOM),this.atoms=e.state.facet(fd).map(o=>o(e));let r=e.contentDOM.ownerDocument;r.addEventListener("mousemove",this.move=this.move.bind(this)),r.addEventListener("mouseup",this.up=this.up.bind(this)),this.extend=i.shiftKey,this.multiple=e.state.facet(et.allowMultipleSelections)&&CW(e,i),this.dragging=TW(e,i)&&uB(i)==1?null:!1}start(e){this.dragging===!1&&this.select(e)}move(e){if(e.buttons==0)return this.destroy();if(this.dragging||this.dragging==null&&xW(this.startEvent,e)<10)return;this.select(this.lastEvent=e);let i=0,n=0,s=0,r=0,o=this.view.win.innerWidth,l=this.view.win.innerHeight;this.scrollParents.x&&({left:s,right:o}=this.scrollParents.x.getBoundingClientRect()),this.scrollParents.y&&({top:r,bottom:l}=this.scrollParents.y.getBoundingClientRect());let c=jx(this.view);e.clientX-c.left<=s+em?i=-tm(s-e.clientX):e.clientX+c.right>=o-em&&(i=tm(e.clientX-o)),e.clientY-c.top<=r+em?n=-tm(r-e.clientY):e.clientY+c.bottom>=l-em&&(n=tm(e.clientY-l)),this.setScrollSpeed(i,n)}up(e){this.dragging==null&&this.select(this.lastEvent),this.dragging||e.preventDefault(),this.destroy()}destroy(){this.setScrollSpeed(0,0);let e=this.view.contentDOM.ownerDocument;e.removeEventListener("mousemove",this.move),e.removeEventListener("mouseup",this.up),this.view.inputState.mouseSelection=this.view.inputState.draggedContent=null}setScrollSpeed(e,i){this.scrollSpeed={x:e,y:i},e||i?this.scrolling<0&&(this.scrolling=setInterval(()=>this.scroll(),50)):this.scrolling>-1&&(clearInterval(this.scrolling),this.scrolling=-1)}scroll(){let{x:e,y:i}=this.scrollSpeed;e&&this.scrollParents.x&&(this.scrollParents.x.scrollLeft+=e,e=0),i&&this.scrollParents.y&&(this.scrollParents.y.scrollTop+=i,i=0),(e||i)&&this.view.win.scrollBy(e,i),this.dragging===!1&&this.select(this.lastEvent)}select(e){let{view:i}=this,n=nB(this.atoms,this.style.get(e,this.extend,this.multiple));(this.mustSelect||!n.eq(i.state.selection,this.dragging===!1))&&this.view.dispatch({selection:n,userEvent:"select.pointer"}),this.mustSelect=!1}update(e){e.transactions.some(i=>i.isUserEvent("input.type"))?this.destroy():this.style.update(e)&&setTimeout(()=>this.select(this.lastEvent),20)}}function CW(t,e){let i=t.state.facet(ID);return i.length?i[0](e):xe.mac?e.metaKey:e.ctrlKey}function kW(t,e){let i=t.state.facet(VD);return i.length?i[0](e):xe.mac?!e.altKey:!e.ctrlKey}function TW(t,e){let{main:i}=t.state.selection;if(i.empty)return!1;let n=Lf(t.root);if(!n||n.rangeCount==0)return!0;let s=n.getRangeAt(0).getClientRects();for(let r=0;r=e.clientX&&o.top<=e.clientY&&o.bottom>=e.clientY)return!0}return!1}function AW(t,e){if(!e.bubbles)return!0;if(e.defaultPrevented)return!1;for(let i=e.target,n;i!=t.contentDOM;i=i.parentNode)if(!i||i.nodeType==11||(n=ui.get(i))&&n.isWidget()&&!n.isHidden&&n.widget.ignoreEvent(e))return!1;return!0}const Hs=Object.create(null),Qs=Object.create(null),cB=xe.ie&&xe.ie_version<15||xe.ios&&xe.webkit_version<604;function EW(t){let e=t.dom.parentNode;if(!e)return;let i=e.appendChild(document.createElement("textarea"));i.style.cssText="position: fixed; left: -10000px; top: 10px",i.focus(),setTimeout(()=>{t.focus(),i.remove(),hB(t,i.value)},50)}function gO(t,e,i){for(let n of t.facet(e))i=n(i,t);return i}function hB(t,e){e=gO(t.state,Bx,e);let{state:i}=t,n,s=1,r=i.toText(e),o=r.lines==i.selection.ranges.length;if(Ob!=null&&i.selection.ranges.every(c=>c.empty)&&Ob==r.toString()){let c=-1;n=i.changeByRange(u=>{let d=i.doc.lineAt(u.from);if(d.from==c)return{range:u};c=d.from;let p=i.toText((o?r.line(s++).text:e)+i.lineBreak);return{changes:{from:d.from,insert:p},range:re.cursor(u.from+p.length)}})}else o?n=i.changeByRange(c=>{let u=r.line(s++);return{changes:{from:c.from,to:c.to,insert:u.text},range:re.cursor(c.from+u.length)}}):n=i.replaceSelection(r);t.dispatch(n,{userEvent:"input.paste",scrollIntoView:!0})}Qs.scroll=t=>{t.inputState.lastScrollTop=t.scrollDOM.scrollTop,t.inputState.lastScrollLeft=t.scrollDOM.scrollLeft};Hs.keydown=(t,e)=>(t.inputState.setSelectionOrigin("select"),e.keyCode==27&&t.inputState.tabFocusMode!=0&&(t.inputState.tabFocusMode=Date.now()+2e3),!1);Qs.touchstart=(t,e)=>{t.inputState.lastTouchTime=Date.now(),t.inputState.setSelectionOrigin("select.pointer")};Qs.touchmove=t=>{t.inputState.setSelectionOrigin("select.pointer")};Hs.mousedown=(t,e)=>{if(t.observer.flush(),t.inputState.lastTouchTime>Date.now()-2e3)return!1;let i=null;for(let n of t.state.facet(XD))if(i=n(t,e),i)break;if(!i&&e.button==0&&(i=PW(t,e)),i){let n=!t.hasFocus;t.inputState.startMouseSelection(new wW(t,e,i,n)),n&&t.observer.ignore(()=>{RD(t.contentDOM);let r=t.root.activeElement;r&&!r.contains(t.contentDOM)&&r.blur()});let s=t.inputState.mouseSelection;if(s)return s.start(e),s.dragging===!1}else t.inputState.setSelectionOrigin("select.pointer");return!1};function eE(t,e,i,n){if(n==1)return re.cursor(e,i);if(n==2)return aW(t.state,e,i);{let s=t.docView.lineAt(e,i),r=t.state.doc.lineAt(s?s.posAtEnd:e),o=s?s.posAtStart:r.from,l=s?s.posAtEnd:r.to;return lDate.now()-400&&Math.abs(e.clientX-t.clientX)<2&&Math.abs(e.clientY-t.clientY)<2?(iE+1)%3:1}function PW(t,e){let i=t.posAndSideAtCoords({x:e.clientX,y:e.clientY},!1),n=uB(e),s=t.state.selection;return{update(r){r.docChanged&&(i.pos=r.changes.mapPos(i.pos),s=s.map(r.changes))},get(r,o,l){let c=t.posAndSideAtCoords({x:r.clientX,y:r.clientY},!1),u,d=eE(t,c.pos,c.assoc,n);if(i.pos!=c.pos&&!o){let p=eE(t,i.pos,i.assoc,n),g=Math.min(p.from,d.from),O=Math.max(p.to,d.to);d=g1&&(u=RW(s,c.pos))?u:l?s.addRange(d):re.create([d])}}}function RW(t,e){for(let i=0;i=e)return re.create(t.ranges.slice(0,i).concat(t.ranges.slice(i+1)),t.mainIndex==i?0:t.mainIndex-(t.mainIndex>i?1:0))}return null}Hs.dragstart=(t,e)=>{let{selection:{main:i}}=t.state;if(e.target.draggable){let s=t.docView.tile.nearest(e.target);if(s&&s.isWidget()){let r=s.posAtStart,o=r+s.length;(r>=i.to||o<=i.from)&&(i=re.range(r,o))}}let{inputState:n}=t;return n.mouseSelection&&(n.mouseSelection.dragging=!0),n.draggedContent=i,e.dataTransfer&&(e.dataTransfer.setData("Text",gO(t.state,$x,t.state.sliceDoc(i.from,i.to))),e.dataTransfer.effectAllowed="copyMove"),!1};Hs.dragend=t=>(t.inputState.draggedContent=null,!1);function sE(t,e,i,n){if(i=gO(t.state,Bx,i),!i)return;let s=t.posAtCoords({x:e.clientX,y:e.clientY},!1),{draggedContent:r}=t.inputState,o=n&&r&&kW(t,e)?{from:r.from,to:r.to}:null,l={from:s,insert:i},c=t.state.changes(o?[o,l]:l);t.focus(),t.dispatch({changes:c,selection:{anchor:c.mapPos(s,-1),head:c.mapPos(s,1)},userEvent:o?"move.drop":"input.drop"}),t.inputState.draggedContent=null}Hs.drop=(t,e)=>{if(!e.dataTransfer)return!1;if(t.state.readOnly)return!0;let i=e.dataTransfer.files;if(i&&i.length){let n=Array(i.length),s=0,r=()=>{++s==i.length&&sE(t,e,n.filter(o=>o!=null).join(t.state.lineBreak),!1)};for(let o=0;o{/[\x00-\x08\x0e-\x1f]{2}/.test(l.result)||(n[o]=l.result),r()},l.readAsText(i[o])}return!0}else{let n=e.dataTransfer.getData("Text");if(n)return sE(t,e,n,!0),!0}return!1};Hs.paste=(t,e)=>{if(t.state.readOnly)return!0;t.observer.flush();let i=cB?null:e.clipboardData;return i?(hB(t,i.getData("text/plain")||i.getData("text/uri-list")),!0):(EW(t),!1)};function QW(t,e){let i=t.dom.parentNode;if(!i)return;let n=i.appendChild(document.createElement("textarea"));n.style.cssText="position: fixed; left: -10000px; top: 10px",n.value=e,n.focus(),n.selectionEnd=e.length,n.selectionStart=0,setTimeout(()=>{n.remove(),t.focus()},50)}function LW(t){let e=[],i=[],n=!1;for(let s of t.selection.ranges)s.empty||(e.push(t.sliceDoc(s.from,s.to)),i.push(s));if(!e.length){let s=-1;for(let{from:r}of t.selection.ranges){let o=t.doc.lineAt(r);o.number>s&&(e.push(o.text),i.push({from:o.from,to:Math.min(t.doc.length,o.to+1)})),s=o.number}n=!0}return{text:gO(t,$x,e.join(t.lineBreak)),ranges:i,linewise:n}}let Ob=null;Hs.copy=Hs.cut=(t,e)=>{if(!pf(t.contentDOM,t.observer.selectionRange))return!1;let{text:i,ranges:n,linewise:s}=LW(t.state);if(!i&&!s)return!1;Ob=s?i:null,e.type=="cut"&&!t.state.readOnly&&t.dispatch({changes:n,scrollIntoView:!0,userEvent:"delete.cut"});let r=cB?null:e.clipboardData;return r?(r.clearData(),r.setData("text/plain",i),!0):(QW(t,i),!1)};const fB=Lr.define();function dB(t,e){let i=[];for(let n of t.facet(WD)){let s=n(t,e);s&&i.push(s)}return i.length?t.update({effects:i,annotations:fB.of(!0)}):null}function pB(t){setTimeout(()=>{let e=t.hasFocus;if(e!=t.inputState.notifiedFocused){let i=dB(t.state,e);i?t.dispatch(i):t.update([])}},10)}Qs.focus=t=>{t.inputState.lastFocusTime=Date.now(),!t.scrollDOM.scrollTop&&(t.inputState.lastScrollTop||t.inputState.lastScrollLeft)&&(t.scrollDOM.scrollTop=t.inputState.lastScrollTop,t.scrollDOM.scrollLeft=t.inputState.lastScrollLeft),pB(t)};Qs.blur=t=>{t.observer.clearSelectionRange(),pB(t)};Qs.compositionstart=Qs.compositionupdate=t=>{t.observer.editContext||(t.inputState.compositionFirstChange==null&&(t.inputState.compositionFirstChange=!0),t.inputState.composing<0&&(t.inputState.composing=0))};Qs.compositionend=t=>{t.observer.editContext||(t.inputState.composing=-1,t.inputState.compositionEndedAt=Date.now(),t.inputState.compositionPendingKey=!0,t.inputState.compositionPendingChange=t.observer.pendingRecords().length>0,t.inputState.compositionFirstChange=null,xe.chrome&&xe.android?t.observer.flushSoon():t.inputState.compositionPendingChange?Promise.resolve().then(()=>t.observer.flush()):setTimeout(()=>{t.inputState.composing<0&&t.docView.hasComposition&&t.update([])},50))};Qs.contextmenu=t=>{t.inputState.lastContextMenu=Date.now()};Hs.beforeinput=(t,e)=>{var i,n;if((e.inputType=="insertText"||e.inputType=="insertCompositionText")&&(t.inputState.insertingText=e.data,t.inputState.insertingTextAt=Date.now()),e.inputType=="insertReplacementText"&&t.observer.editContext){let r=(i=e.dataTransfer)===null||i===void 0?void 0:i.getData("text/plain"),o=e.getTargetRanges();if(r&&o.length){let l=o[0],c=t.posAtDOM(l.startContainer,l.startOffset),u=t.posAtDOM(l.endContainer,l.endOffset);return Ix(t,{from:c,to:u,insert:t.state.toText(r)},null),!0}}let s;if(xe.chrome&&xe.android&&(s=aB.find(r=>r.inputType==e.inputType))&&(t.observer.delayAndroidKey(s.key,s.keyCode),s.key=="Backspace"||s.key=="Delete")){let r=((n=window.visualViewport)===null||n===void 0?void 0:n.height)||0;setTimeout(()=>{var o;(((o=window.visualViewport)===null||o===void 0?void 0:o.height)||0)>r+10&&t.hasFocus&&(t.contentDOM.blur(),t.focus())},100)}return xe.ios&&e.inputType=="deleteContentForward"&&t.observer.flushSoon(),xe.safari&&e.inputType=="insertText"&&t.inputState.composing>=0&&setTimeout(()=>Qs.compositionend(t,e),20),!1};const rE=new Set;function DW(t){rE.has(t)||(rE.add(t),t.addEventListener("copy",()=>{}),t.addEventListener("cut",()=>{}))}const oE=["pre-wrap","normal","pre-line","break-spaces"];let ah=!1;function aE(){ah=!1}class BW{constructor(e){this.lineWrapping=e,this.doc=at.empty,this.heightSamples={},this.lineHeight=14,this.charWidth=7,this.textHeight=14,this.lineLength=30}heightForGap(e,i){let n=this.doc.lineAt(i).number-this.doc.lineAt(e).number+1;return this.lineWrapping&&(n+=Math.max(0,Math.ceil((i-e-n*this.lineLength*.5)/this.lineLength))),this.lineHeight*n}heightForLine(e){return this.lineWrapping?(1+Math.max(0,Math.ceil((e-this.lineLength)/Math.max(1,this.lineLength-5))))*this.lineHeight:this.lineHeight}setDoc(e){return this.doc=e,this}mustRefreshForWrapping(e){return oE.indexOf(e)>-1!=this.lineWrapping}mustRefreshForHeights(e){let i=!1;for(let n=0;n-1,c=Math.abs(i-this.lineHeight)>.3||this.lineWrapping!=l||Math.abs(n-this.charWidth)>.1;if(this.lineWrapping=l,this.lineHeight=i,this.charWidth=n,this.textHeight=s,this.lineLength=r,c){this.heightSamples={};for(let u=0;u0}set outdated(e){this.flags=(e?2:0)|this.flags&-3}setHeight(e){this.height!=e&&(Math.abs(this.height-e)>Xm&&(ah=!0),this.height=e)}replace(e,i,n){return _n.of(n)}decomposeLeft(e,i){i.push(this)}decomposeRight(e,i){i.push(this)}applyChanges(e,i,n,s){let r=this,o=n.doc;for(let l=s.length-1;l>=0;l--){let{fromA:c,toA:u,fromB:d,toB:p}=s[l],g=r.lineAt(c,Ct.ByPosNoHeight,n.setDoc(i),0,0),O=g.to>=u?g:r.lineAt(u,Ct.ByPosNoHeight,n,0,0);for(p+=O.to-u,u=O.to;l>0&&g.from<=s[l-1].toA;)c=s[l-1].fromA,d=s[l-1].fromB,l--,cr*2){let l=e[i-1];l.break?e.splice(--i,1,l.left,null,l.right):e.splice(--i,1,l.left,l.right),n+=1+l.break,s-=l.size}else if(r>s*2){let l=e[n];l.break?e.splice(n,1,l.left,null,l.right):e.splice(n,1,l.left,l.right),n+=2+l.break,r-=l.size}else break;else if(s=r&&o(this.lineAt(0,Ct.ByPos,n,s,r))}setMeasuredHeight(e){let i=e.heights[e.index++];i<0?(this.spaceAbove=-i,i=e.heights[e.index++]):this.spaceAbove=0,this.setHeight(i)}updateHeight(e,i=0,n=!1,s){return s&&s.from<=i&&s.more&&this.setMeasuredHeight(s),this.outdated=!1,this}toString(){return`block(${this.length})`}}class ts extends mB{constructor(e,i,n){super(e,i,null),this.collapsed=0,this.widgetHeight=0,this.breaks=0,this.spaceAbove=n}mainBlock(e,i){return new Zs(i,this.length,e+this.spaceAbove,this.height-this.spaceAbove,this.breaks)}replace(e,i,n){let s=n[0];return n.length==1&&(s instanceof ts||s instanceof Wi&&s.flags&4)&&Math.abs(this.length-s.length)<10?(s instanceof Wi?s=new ts(s.length,this.height,this.spaceAbove):s.height=this.height,this.outdated||(s.outdated=!1),s):_n.of(n)}updateHeight(e,i=0,n=!1,s){return s&&s.from<=i&&s.more?this.setMeasuredHeight(s):(n||this.outdated)&&(this.spaceAbove=0,this.setHeight(Math.max(this.widgetHeight,e.heightForLine(this.length-this.collapsed))+this.breaks*e.lineHeight)),this.outdated=!1,this}toString(){return`line(${this.length}${this.collapsed?-this.collapsed:""}${this.widgetHeight?":"+this.widgetHeight:""})`}}class Wi extends _n{constructor(e){super(e,0)}heightMetrics(e,i){let n=e.doc.lineAt(i).number,s=e.doc.lineAt(i+this.length).number,r=s-n+1,o,l=0;if(e.lineWrapping){let c=Math.min(this.height,e.lineHeight*r);o=c/r,this.length>r+1&&(l=(this.height-c)/(this.length-r-1))}else o=this.height/r;return{firstLine:n,lastLine:s,perLine:o,perChar:l}}blockAt(e,i,n,s){let{firstLine:r,lastLine:o,perLine:l,perChar:c}=this.heightMetrics(i,s);if(i.lineWrapping){let u=s+(e0){let r=n[n.length-1];r instanceof Wi?n[n.length-1]=new Wi(r.length+s):n.push(null,new Wi(s-1))}if(e>0){let r=n[0];r instanceof Wi?n[0]=new Wi(e+r.length):n.unshift(new Wi(e-1),null)}return _n.of(n)}decomposeLeft(e,i){i.push(new Wi(e-1),null)}decomposeRight(e,i){i.push(null,new Wi(this.length-e-1))}updateHeight(e,i=0,n=!1,s){let r=i+this.length;if(s&&s.from<=i+this.length&&s.more){let o=[],l=Math.max(i,s.from),c=-1;for(s.from>i&&o.push(new Wi(s.from-i-1).updateHeight(e,i));l<=r&&s.more;){let d=e.doc.lineAt(l).length;o.length&&o.push(null);let p=s.heights[s.index++],g=0;p<0&&(g=-p,p=s.heights[s.index++]),c==-1?c=p:Math.abs(p-c)>=Xm&&(c=-2);let O=new ts(d,p,g);O.outdated=!1,o.push(O),l+=d+1}l<=r&&o.push(null,new Wi(r-l).updateHeight(e,l));let u=_n.of(o);return(c<0||Math.abs(u.height-this.height)>=Xm||Math.abs(c-this.heightMetrics(e,i).perLine)>=Xm)&&(ah=!0),Tg(this,u)}else(n||this.outdated)&&(this.setHeight(e.heightForGap(i,i+this.length)),this.outdated=!1);return this}toString(){return`gap(${this.length})`}}class zW extends _n{constructor(e,i,n){super(e.length+i+n.length,e.height+n.height,i|(e.outdated||n.outdated?2:0)),this.left=e,this.right=n,this.size=e.size+n.size}get break(){return this.flags&1}blockAt(e,i,n,s){let r=n+this.left.height;return el))return u;let d=i==Ct.ByPosNoHeight?Ct.ByPosNoHeight:Ct.ByPos;return c?u.join(this.right.lineAt(l,d,n,o,l)):this.left.lineAt(l,d,n,s,r).join(u)}forEachLine(e,i,n,s,r,o){let l=s+this.left.height,c=r+this.left.length+this.break;if(this.break)e=c&&this.right.forEachLine(e,i,n,l,c,o);else{let u=this.lineAt(c,Ct.ByPos,n,s,r);e=e&&u.from<=i&&o(u),i>u.to&&this.right.forEachLine(u.to+1,i,n,l,c,o)}}replace(e,i,n){let s=this.left.length+this.break;if(ithis.left.length)return this.balanced(this.left,this.right.replace(e-s,i-s,n));let r=[];e>0&&this.decomposeLeft(e,r);let o=r.length;for(let l of n)r.push(l);if(e>0&&lE(r,o-1),i=n&&i.push(null)),e>n&&this.right.decomposeLeft(e-n,i)}decomposeRight(e,i){let n=this.left.length,s=n+this.break;if(e>=s)return this.right.decomposeRight(e-s,i);e2*i.size||i.size>2*e.size?_n.of(this.break?[e,null,i]:[e,i]):(this.left=Tg(this.left,e),this.right=Tg(this.right,i),this.setHeight(e.height+i.height),this.outdated=e.outdated||i.outdated,this.size=e.size+i.size,this.length=e.length+this.break+i.length,this)}updateHeight(e,i=0,n=!1,s){let{left:r,right:o}=this,l=i+r.length+this.break,c=null;return s&&s.from<=i+r.length&&s.more?c=r=r.updateHeight(e,i,n,s):r.updateHeight(e,i,n),s&&s.from<=l+o.length&&s.more?c=o=o.updateHeight(e,l,n,s):o.updateHeight(e,l,n),c?this.balanced(r,o):(this.height=this.left.height+this.right.height,this.outdated=!1,this)}toString(){return this.left+(this.break?" ":"-")+this.right}}function lE(t,e){let i,n;t[e]==null&&(i=t[e-1])instanceof Wi&&(n=t[e+1])instanceof Wi&&t.splice(e-1,3,new Wi(i.length+1+n.length))}const jW=5;class Vx{constructor(e,i){this.pos=e,this.oracle=i,this.nodes=[],this.lineStart=-1,this.lineEnd=-1,this.covering=null,this.writtenTo=e}get isCovered(){return this.covering&&this.nodes[this.nodes.length-1]==this.covering}span(e,i){if(this.lineStart>-1){let n=Math.min(i,this.lineEnd),s=this.nodes[this.nodes.length-1];s instanceof ts?s.length+=n-this.pos:(n>this.pos||!this.isCovered)&&this.nodes.push(new ts(n-this.pos,-1,0)),this.writtenTo=n,i>n&&(this.nodes.push(null),this.writtenTo++,this.lineStart=-1)}this.pos=i}point(e,i,n){if(e=jW)&&this.addLineDeco(s,r,o)}else i>e&&this.span(e,i);this.lineEnd>-1&&this.lineEnd-1)return;let{from:e,to:i}=this.oracle.doc.lineAt(this.pos);this.lineStart=e,this.lineEnd=i,this.writtenToe&&this.nodes.push(new ts(this.pos-e,-1,0)),this.writtenTo=this.pos}blankContent(e,i){let n=new Wi(i-e);return this.oracle.doc.lineAt(e).to==i&&(n.flags|=4),n}ensureLine(){this.enterLine();let e=this.nodes.length?this.nodes[this.nodes.length-1]:null;if(e instanceof ts)return e;let i=new ts(0,-1,0);return this.nodes.push(i),i}addBlock(e){this.enterLine();let i=e.deco;i&&i.startSide>0&&!this.isCovered&&this.ensureLine(),this.nodes.push(e),this.writtenTo=this.pos=this.pos+e.length,i&&i.endSide>0&&(this.covering=e)}addLineDeco(e,i,n){let s=this.ensureLine();s.length+=n,s.collapsed+=n,s.widgetHeight=Math.max(s.widgetHeight,e),s.breaks+=i,this.writtenTo=this.pos=this.pos+n}finish(e){let i=this.nodes.length==0?null:this.nodes[this.nodes.length-1];this.lineStart>-1&&!(i instanceof ts)&&!this.isCovered?this.nodes.push(new ts(0,-1,0)):(this.writtenTod.clientHeight||d.scrollWidth>d.clientWidth)&&p.overflow!="visible"){let g=d.getBoundingClientRect();r=Math.max(r,g.left),o=Math.min(o,g.right),l=Math.max(l,g.top),c=Math.min(u==t.parentNode?s.innerHeight:c,g.bottom)}u=p.position=="absolute"||p.position=="fixed"?d.offsetParent:d.parentNode}else if(u.nodeType==11)u=u.host;else break;return{left:r-i.left,right:Math.max(r,o)-i.left,top:l-(i.top+e),bottom:Math.max(l,c)-(i.top+e)}}function ZW(t){let e=t.getBoundingClientRect(),i=t.ownerDocument.defaultView||window;return e.left0&&e.top0}function qW(t,e){let i=t.getBoundingClientRect();return{left:0,right:i.right-i.left,top:e,bottom:i.bottom-(i.top+e)}}class A_{constructor(e,i,n,s){this.from=e,this.to=i,this.size=n,this.displaySize=s}static same(e,i){if(e.length!=i.length)return!1;for(let n=0;ntypeof n!="function"&&n.class=="cm-lineWrapping");this.heightOracle=new BW(i),this.stateDeco=uE(e),this.heightMap=_n.empty().applyChanges(this.stateDeco,at.empty,this.heightOracle.setDoc(e.doc),[new ks(0,0,0,e.doc.length)]);for(let n=0;n<2&&(this.viewport=this.getViewport(0,null),!!this.updateForViewport());n++);this.updateViewportLines(),this.lineGaps=this.ensureLineGaps([]),this.lineGapDeco=Pe.set(this.lineGaps.map(n=>n.draw(this,!1))),this.computeVisibleRanges()}updateForViewport(){let e=[this.viewport],{main:i}=this.state.selection;for(let n=0;n<=1;n++){let s=n?i.head:i.anchor;if(!e.some(({from:r,to:o})=>s>=r&&s<=o)){let{from:r,to:o}=this.lineBlockAt(s);e.push(new im(r,o))}}return this.viewports=e.sort((n,s)=>n.from-s.from),this.updateScaler()}updateScaler(){let e=this.scaler;return this.scaler=this.heightMap.height<=7e6?hE:new Xx(this.heightOracle,this.heightMap,this.viewports),e.eq(this.scaler)?0:2}updateViewportLines(){this.viewportLines=[],this.heightMap.forEachLine(this.viewport.from,this.viewport.to,this.heightOracle.setDoc(this.state.doc),0,0,e=>{this.viewportLines.push(Ku(e,this.scaler))})}update(e,i=null){this.state=e.state;let n=this.stateDeco;this.stateDeco=uE(this.state);let s=e.changedRanges,r=ks.extendWithRanges(s,IW(n,this.stateDeco,e?e.changes:vi.empty(this.state.doc.length))),o=this.heightMap.height,l=this.scrolledToBottom?null:this.scrollAnchorAt(this.scrollTop);aE(),this.heightMap=this.heightMap.applyChanges(this.stateDeco,e.startState.doc,this.heightOracle.setDoc(this.state.doc),r),(this.heightMap.height!=o||ah)&&(e.flags|=2),l?(this.scrollAnchorPos=e.changes.mapPos(l.from,-1),this.scrollAnchorHeight=l.top):(this.scrollAnchorPos=-1,this.scrollAnchorHeight=o);let c=r.length?this.mapViewport(this.viewport,e.changes):this.viewport;(i&&(i.range.headc.to)||!this.viewportIsAppropriate(c))&&(c=this.getViewport(0,i));let u=c.from!=this.viewport.from||c.to!=this.viewport.to;this.viewport=c,e.flags|=this.updateForViewport(),(u||!e.changes.empty||e.flags&2)&&this.updateViewportLines(),(this.lineGaps.length||this.viewport.to-this.viewport.from>4e3)&&this.updateLineGaps(this.ensureLineGaps(this.mapLineGaps(this.lineGaps,e.changes))),e.flags|=this.computeVisibleRanges(e.changes),i&&(this.scrollTarget=i),!this.mustEnforceCursorAssoc&&(e.selectionSet||e.focusChanged)&&e.view.lineWrapping&&e.state.selection.main.empty&&e.state.selection.main.assoc&&!e.state.facet(YD)&&(this.mustEnforceCursorAssoc=!0)}measure(e){let i=e.contentDOM,n=window.getComputedStyle(i),s=this.heightOracle,r=n.whiteSpace;this.defaultTextDirection=n.direction=="rtl"?St.RTL:St.LTR;let o=this.heightOracle.mustRefreshForWrapping(r)||this.mustMeasureContent==="refresh",l=i.getBoundingClientRect(),c=o||this.mustMeasureContent||this.contentDOMHeight!=l.height;this.contentDOMHeight=l.height,this.mustMeasureContent=!1;let u=0,d=0;if(l.width&&l.height){let{scaleX:A,scaleY:Q}=PD(i,l);(A>.005&&Math.abs(this.scaleX-A)>.005||Q>.005&&Math.abs(this.scaleY-Q)>.005)&&(this.scaleX=A,this.scaleY=Q,u|=16,o=c=!0)}let p=(parseInt(n.paddingTop)||0)*this.scaleY,g=(parseInt(n.paddingBottom)||0)*this.scaleY;(this.paddingTop!=p||this.paddingBottom!=g)&&(this.paddingTop=p,this.paddingBottom=g,u|=18),this.editorWidth!=e.scrollDOM.clientWidth&&(s.lineWrapping&&(c=!0),this.editorWidth=e.scrollDOM.clientWidth,u|=16);let O=e.scrollDOM.scrollTop*this.scaleY;this.scrollTop!=O&&(this.scrollAnchorHeight=-1,this.scrollTop=O),this.scrolledToBottom=QD(e.scrollDOM);let _=(this.printing?qW:XW)(i,this.paddingTop),b=_.top-this.pixelViewport.top,x=_.bottom-this.pixelViewport.bottom;this.pixelViewport=_;let w=this.pixelViewport.bottom>this.pixelViewport.top&&this.pixelViewport.right>this.pixelViewport.left;if(w!=this.inView&&(this.inView=w,w&&(c=!0)),!this.inView&&!this.scrollTarget&&!ZW(e.dom))return 0;let k=l.width;if((this.contentDOMWidth!=k||this.editorHeight!=e.scrollDOM.clientHeight)&&(this.contentDOMWidth=l.width,this.editorHeight=e.scrollDOM.clientHeight,u|=16),c){let A=e.docView.measureVisibleLineHeights(this.viewport);if(s.mustRefreshForHeights(A)&&(o=!0),o||s.lineWrapping&&Math.abs(k-this.contentDOMWidth)>s.charWidth){let{lineHeight:Q,charWidth:E,textHeight:N}=e.docView.measureTextSize();o=Q>0&&s.refresh(r,Q,E,N,Math.max(5,k/E),A),o&&(e.docView.minWidth=0,u|=16)}b>0&&x>0?d=Math.max(b,x):b<0&&x<0&&(d=Math.min(b,x)),aE();for(let Q of this.viewports){let E=Q.from==this.viewport.from?A:e.docView.measureVisibleLineHeights(Q);this.heightMap=(o?_n.empty().applyChanges(this.stateDeco,at.empty,this.heightOracle,[new ks(0,0,0,e.state.doc.length)]):this.heightMap).updateHeight(s,0,o,new $W(Q.from,E))}ah&&(u|=2)}let T=!this.viewportIsAppropriate(this.viewport,d)||this.scrollTarget&&(this.scrollTarget.range.headthis.viewport.to);return T&&(u&2&&(u|=this.updateScaler()),this.viewport=this.getViewport(d,this.scrollTarget),u|=this.updateForViewport()),(u&2||T)&&this.updateViewportLines(),(this.lineGaps.length||this.viewport.to-this.viewport.from>4e3)&&this.updateLineGaps(this.ensureLineGaps(o?[]:this.lineGaps,e)),u|=this.computeVisibleRanges(),this.mustEnforceCursorAssoc&&(this.mustEnforceCursorAssoc=!1,e.docView.enforceCursorAssoc()),u}get visibleTop(){return this.scaler.fromDOM(this.pixelViewport.top)}get visibleBottom(){return this.scaler.fromDOM(this.pixelViewport.bottom)}getViewport(e,i){let n=.5-Math.max(-.5,Math.min(.5,e/1e3/2)),s=this.heightMap,r=this.heightOracle,{visibleTop:o,visibleBottom:l}=this,c=new im(s.lineAt(o-n*1e3,Ct.ByHeight,r,0,0).from,s.lineAt(l+(1-n)*1e3,Ct.ByHeight,r,0,0).to);if(i){let{head:u}=i.range;if(uc.to){let d=Math.min(this.editorHeight,this.pixelViewport.bottom-this.pixelViewport.top),p=s.lineAt(u,Ct.ByPos,r,0,0),g;i.y=="center"?g=(p.top+p.bottom)/2-d/2:i.y=="start"||i.y=="nearest"&&u=l+Math.max(10,Math.min(n,250)))&&s>o-2*1e3&&r>1,o=s<<1;if(this.defaultTextDirection!=St.LTR&&!n)return[];let l=[],c=(d,p,g,O)=>{if(p-dd&&ww.from>=g.from&&w.to<=g.to&&Math.abs(w.from-d)w.fromk));if(!x){if(pT.from<=p&&T.to>=p)){let T=i.moveToLineBoundary(re.cursor(p),!1,!0).head;T>d&&(p=T)}let w=this.gapSize(g,d,p,O),k=n||w<2e6?w:2e6;x=new A_(d,p,w,k)}l.push(x)},u=d=>{if(d.length2e6)for(let E of e)E.from>=d.from&&E.fromd.from&&c(d.from,O,d,p),_i.draw(this,this.heightOracle.lineWrapping))))}computeVisibleRanges(e){let i=this.stateDeco;this.lineGaps.length&&(i=i.concat(this.lineGapDeco));let n=[];Ge.spans(i,this.viewport.from,this.viewport.to,{span(r,o){n.push({from:r,to:o})},point(){}},20);let s=0;if(n.length!=this.visibleRanges.length)s=12;else for(let r=0;r=this.viewport.from&&e<=this.viewport.to&&this.viewportLines.find(i=>i.from<=e&&i.to>=e)||Ku(this.heightMap.lineAt(e,Ct.ByPos,this.heightOracle,0,0),this.scaler)}lineBlockAtHeight(e){return e>=this.viewportLines[0].top&&e<=this.viewportLines[this.viewportLines.length-1].bottom&&this.viewportLines.find(i=>i.top<=e&&i.bottom>=e)||Ku(this.heightMap.lineAt(this.scaler.fromDOM(e),Ct.ByHeight,this.heightOracle,0,0),this.scaler)}scrollAnchorAt(e){let i=this.lineBlockAtHeight(e+8);return i.from>=this.viewport.from||this.viewportLines[0].top-e>200?i:this.viewportLines[0]}elementAtHeight(e){return Ku(this.heightMap.blockAt(this.scaler.fromDOM(e),this.heightOracle,0,0),this.scaler)}get docHeight(){return this.scaler.toDOM(this.heightMap.height)}get contentHeight(){return this.docHeight+this.paddingTop+this.paddingBottom}}class im{constructor(e,i){this.from=e,this.to=i}}function UW(t,e,i){let n=[],s=t,r=0;return Ge.spans(i,t,e,{span(){},point(o,l){o>s&&(n.push({from:s,to:o}),r+=o-s),s=l}},20),s=1)return e[e.length-1].to;let n=Math.floor(t*i);for(let s=0;;s++){let{from:r,to:o}=e[s],l=o-r;if(n<=l)return r+n;n-=l}}function sm(t,e){let i=0;for(let{from:n,to:s}of t.ranges){if(e<=s){i+=e-n;break}i+=s-n}return i/t.total}function YW(t,e){for(let i of t)if(e(i))return i}const hE={toDOM(t){return t},fromDOM(t){return t},scale:1,eq(t){return t==this}};function uE(t){let e=t.facet(dO).filter(n=>typeof n!="function"),i=t.facet(zx).filter(n=>typeof n!="function");return i.length&&e.push(Ge.join(i)),e}class Xx{constructor(e,i,n){let s=0,r=0,o=0;this.viewports=n.map(({from:l,to:c})=>{let u=i.lineAt(l,Ct.ByPos,e,0,0).top,d=i.lineAt(c,Ct.ByPos,e,0,0).bottom;return s+=d-u,{from:l,to:c,top:u,bottom:d,domTop:0,domBottom:0}}),this.scale=(7e6-s)/(i.height-s);for(let l of this.viewports)l.domTop=o+(l.top-r)*this.scale,o=l.domBottom=l.domTop+(l.bottom-l.top),r=l.bottom}toDOM(e){for(let i=0,n=0,s=0;;i++){let r=ii.from==e.viewports[n].from&&i.to==e.viewports[n].to):!1}}function Ku(t,e){if(e.scale==1)return t;let i=e.toDOM(t.top),n=e.toDOM(t.bottom);return new Zs(t.from,t.length,i,n-i,Array.isArray(t._content)?t._content.map(s=>Ku(s,e)):t._content)}const rm=Se.define({combine:t=>t.join(" ")}),vb=Se.define({combine:t=>t.indexOf(!0)>-1}),_b=Ca.newName(),gB=Ca.newName(),OB=Ca.newName(),vB={"&light":"."+gB,"&dark":"."+OB};function yb(t,e,i){return new Ca(e,{finish(n){return/&/.test(n)?n.replace(/&\w*/,s=>{if(s=="&")return t;if(!i||!i[s])throw new RangeError(`Unsupported selector: ${s}`);return i[s]}):t+" "+n}})}const HW=yb("."+_b,{"&":{position:"relative !important",boxSizing:"border-box","&.cm-focused":{outline:"1px dotted #212121"},display:"flex !important",flexDirection:"column"},".cm-scroller":{display:"flex !important",alignItems:"flex-start !important",fontFamily:"monospace",lineHeight:1.4,height:"100%",overflowX:"auto",position:"relative",zIndex:0,overflowAnchor:"none"},".cm-content":{margin:0,flexGrow:2,flexShrink:0,display:"block",whiteSpace:"pre",wordWrap:"normal",boxSizing:"border-box",minHeight:"100%",padding:"4px 0",outline:"none","&[contenteditable=true]":{WebkitUserModify:"read-write-plaintext-only"}},".cm-lineWrapping":{whiteSpace_fallback:"pre-wrap",whiteSpace:"break-spaces",wordBreak:"break-word",overflowWrap:"anywhere",flexShrink:1},"&light .cm-content":{caretColor:"black"},"&dark .cm-content":{caretColor:"white"},".cm-line":{display:"block",padding:"0 2px 0 6px"},".cm-layer":{position:"absolute",left:0,top:0,contain:"size style","& > *":{position:"absolute"}},"&light .cm-selectionBackground":{background:"#d9d9d9"},"&dark .cm-selectionBackground":{background:"#222"},"&light.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground":{background:"#d7d4f0"},"&dark.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground":{background:"#233"},".cm-cursorLayer":{pointerEvents:"none"},"&.cm-focused > .cm-scroller > .cm-cursorLayer":{animation:"steps(1) cm-blink 1.2s infinite"},"@keyframes cm-blink":{"0%":{},"50%":{opacity:0},"100%":{}},"@keyframes cm-blink2":{"0%":{},"50%":{opacity:0},"100%":{}},".cm-cursor, .cm-dropCursor":{borderLeft:"1.2px solid black",marginLeft:"-0.6px",pointerEvents:"none"},".cm-cursor":{display:"none"},"&dark .cm-cursor":{borderLeftColor:"#ddd"},".cm-dropCursor":{position:"absolute"},"&.cm-focused > .cm-scroller > .cm-cursorLayer .cm-cursor":{display:"block"},".cm-iso":{unicodeBidi:"isolate"},".cm-announced":{position:"fixed",top:"-10000px"},"@media print":{".cm-announced":{display:"none"}},"&light .cm-activeLine":{backgroundColor:"#cceeff44"},"&dark .cm-activeLine":{backgroundColor:"#99eeff33"},"&light .cm-specialChar":{color:"red"},"&dark .cm-specialChar":{color:"#f78"},".cm-gutters":{flexShrink:0,display:"flex",height:"100%",boxSizing:"border-box",zIndex:200},".cm-gutters-before":{insetInlineStart:0},".cm-gutters-after":{insetInlineEnd:0},"&light .cm-gutters":{backgroundColor:"#f5f5f5",color:"#6c6c6c",border:"0px solid #ddd","&.cm-gutters-before":{borderRightWidth:"1px"},"&.cm-gutters-after":{borderLeftWidth:"1px"}},"&dark .cm-gutters":{backgroundColor:"#333338",color:"#ccc"},".cm-gutter":{display:"flex !important",flexDirection:"column",flexShrink:0,boxSizing:"border-box",minHeight:"100%",overflow:"hidden"},".cm-gutterElement":{boxSizing:"border-box"},".cm-lineNumbers .cm-gutterElement":{padding:"0 3px 0 5px",minWidth:"20px",textAlign:"right",whiteSpace:"nowrap"},"&light .cm-activeLineGutter":{backgroundColor:"#e2f2ff"},"&dark .cm-activeLineGutter":{backgroundColor:"#222227"},".cm-panels":{boxSizing:"border-box",position:"sticky",left:0,right:0,zIndex:300},"&light .cm-panels":{backgroundColor:"#f5f5f5",color:"black"},"&light .cm-panels-top":{borderBottom:"1px solid #ddd"},"&light .cm-panels-bottom":{borderTop:"1px solid #ddd"},"&dark .cm-panels":{backgroundColor:"#333338",color:"white"},".cm-dialog":{padding:"2px 19px 4px 6px",position:"relative","& label":{fontSize:"80%"}},".cm-dialog-close":{position:"absolute",top:"3px",right:"4px",backgroundColor:"inherit",border:"none",font:"inherit",fontSize:"14px",padding:"0"},".cm-tab":{display:"inline-block",overflow:"hidden",verticalAlign:"bottom"},".cm-widgetBuffer":{verticalAlign:"text-top",height:"1em",width:0,display:"inline"},".cm-placeholder":{color:"#888",display:"inline-block",verticalAlign:"top",userSelect:"none"},".cm-highlightSpace":{backgroundImage:"radial-gradient(circle at 50% 55%, #aaa 20%, transparent 5%)",backgroundPosition:"center"},".cm-highlightTab":{backgroundImage:`url('data:image/svg+xml,')`,backgroundSize:"auto 100%",backgroundPosition:"right 90%",backgroundRepeat:"no-repeat"},".cm-trailingSpace":{backgroundColor:"#ff332255"},".cm-button":{verticalAlign:"middle",color:"inherit",fontSize:"70%",padding:".2em 1em",borderRadius:"1px"},"&light .cm-button":{backgroundImage:"linear-gradient(#eff1f5, #d9d9df)",border:"1px solid #888","&:active":{backgroundImage:"linear-gradient(#b4b4b4, #d0d3d6)"}},"&dark .cm-button":{backgroundImage:"linear-gradient(#393939, #111)",border:"1px solid #888","&:active":{backgroundImage:"linear-gradient(#111, #333)"}},".cm-textfield":{verticalAlign:"middle",color:"inherit",fontSize:"70%",border:"1px solid silver",padding:".2em .5em"},"&light .cm-textfield":{backgroundColor:"white"},"&dark .cm-textfield":{border:"1px solid #555",backgroundColor:"inherit"}},vB),FW={childList:!0,characterData:!0,subtree:!0,attributes:!0,characterDataOldValue:!0},E_=xe.ie&&xe.ie_version<=11;class GW{constructor(e){this.view=e,this.active=!1,this.editContext=null,this.selectionRange=new Tq,this.selectionChanged=!1,this.delayedFlush=-1,this.resizeTimeout=-1,this.queue=[],this.delayedAndroidKey=null,this.flushingAndroidKey=-1,this.lastChange=0,this.scrollTargets=[],this.intersection=null,this.resizeScroll=null,this.intersecting=!1,this.gapIntersection=null,this.gaps=[],this.printQuery=null,this.parentCheck=-1,this.dom=e.contentDOM,this.observer=new MutationObserver(i=>{for(let n of i)this.queue.push(n);(xe.ie&&xe.ie_version<=11||xe.ios&&e.composing)&&i.some(n=>n.type=="childList"&&n.removedNodes.length||n.type=="characterData"&&n.oldValue.length>n.target.nodeValue.length)?this.flushSoon():this.flush()}),window.EditContext&&xe.android&&e.constructor.EDIT_CONTEXT!==!1&&!(xe.chrome&&xe.chrome_version<126)&&(this.editContext=new JW(e),e.state.facet(po)&&(e.contentDOM.editContext=this.editContext.editContext)),E_&&(this.onCharData=i=>{this.queue.push({target:i.target,type:"characterData",oldValue:i.prevValue}),this.flushSoon()}),this.onSelectionChange=this.onSelectionChange.bind(this),this.onResize=this.onResize.bind(this),this.onPrint=this.onPrint.bind(this),this.onScroll=this.onScroll.bind(this),window.matchMedia&&(this.printQuery=window.matchMedia("print")),typeof ResizeObserver=="function"&&(this.resizeScroll=new ResizeObserver(()=>{var i;((i=this.view.docView)===null||i===void 0?void 0:i.lastUpdate){this.parentCheck<0&&(this.parentCheck=setTimeout(this.listenForScroll.bind(this),1e3)),i.length>0&&i[i.length-1].intersectionRatio>0!=this.intersecting&&(this.intersecting=!this.intersecting,this.intersecting!=this.view.inView&&this.onScrollChanged(document.createEvent("Event")))},{threshold:[0,.001]}),this.intersection.observe(this.dom),this.gapIntersection=new IntersectionObserver(i=>{i.length>0&&i[i.length-1].intersectionRatio>0&&this.onScrollChanged(document.createEvent("Event"))},{})),this.listenForScroll(),this.readSelectionRange()}onScrollChanged(e){this.view.inputState.runHandlers("scroll",e),this.intersecting&&this.view.measure()}onScroll(e){this.intersecting&&this.flush(!1),this.editContext&&this.view.requestMeasure(this.editContext.measureReq),this.onScrollChanged(e)}onResize(){this.resizeTimeout<0&&(this.resizeTimeout=setTimeout(()=>{this.resizeTimeout=-1,this.view.requestMeasure()},50))}onPrint(e){(e.type=="change"||!e.type)&&!e.matches||(this.view.viewState.printing=!0,this.view.measure(),setTimeout(()=>{this.view.viewState.printing=!1,this.view.requestMeasure()},500))}updateGaps(e){if(this.gapIntersection&&(e.length!=this.gaps.length||this.gaps.some((i,n)=>i!=e[n]))){this.gapIntersection.disconnect();for(let i of e)this.gapIntersection.observe(i);this.gaps=e}}onSelectionChange(e){let i=this.selectionChanged;if(!this.readSelectionRange()||this.delayedAndroidKey)return;let{view:n}=this,s=this.selectionRange;if(n.state.facet(po)?n.root.activeElement!=this.dom:!pf(this.dom,s))return;let r=s.anchorNode&&n.docView.tile.nearest(s.anchorNode);if(r&&r.isWidget()&&r.widget.ignoreEvent(e)){i||(this.selectionChanged=!1);return}(xe.ie&&xe.ie_version<=11||xe.android&&xe.chrome)&&!n.state.selection.main.empty&&s.focusNode&&gf(s.focusNode,s.focusOffset,s.anchorNode,s.anchorOffset)?this.flushSoon():this.flush(!1)}readSelectionRange(){let{view:e}=this,i=Lf(e.root);if(!i)return!1;let n=xe.safari&&e.root.nodeType==11&&e.root.activeElement==this.dom&&KW(this.view,i)||i;if(!n||this.selectionRange.eq(n))return!1;let s=pf(this.dom,n);return s&&!this.selectionChanged&&e.inputState.lastFocusTime>Date.now()-200&&e.inputState.lastTouchTime{let r=this.delayedAndroidKey;r&&(this.clearDelayedAndroidKey(),this.view.inputState.lastKeyCode=r.keyCode,this.view.inputState.lastKeyTime=Date.now(),!this.flush()&&r.force&&Yc(this.dom,r.key,r.keyCode))};this.flushingAndroidKey=this.view.win.requestAnimationFrame(s)}(!this.delayedAndroidKey||e=="Enter")&&(this.delayedAndroidKey={key:e,keyCode:i,force:this.lastChange{this.delayedFlush=-1,this.flush()}))}forceFlush(){this.delayedFlush>=0&&(this.view.win.cancelAnimationFrame(this.delayedFlush),this.delayedFlush=-1),this.flush()}pendingRecords(){for(let e of this.observer.takeRecords())this.queue.push(e);return this.queue}processRecords(){let e=this.pendingRecords();e.length&&(this.queue=[]);let i=-1,n=-1,s=!1;for(let r of e){let o=this.readMutation(r);o&&(o.typeOver&&(s=!0),i==-1?{from:i,to:n}=o:(i=Math.min(o.from,i),n=Math.max(o.to,n)))}return{from:i,to:n,typeOver:s}}readChange(){let{from:e,to:i,typeOver:n}=this.processRecords(),s=this.selectionChanged&&pf(this.dom,this.selectionRange);if(e<0&&!s)return null;e>-1&&(this.lastChange=Date.now()),this.view.inputState.lastFocusTime=0,this.selectionChanged=!1;let r=new gW(this.view,e,i,n);return this.view.docView.domChanged={newSel:r.newSel?r.newSel.main:null},r}flush(e=!0){if(this.delayedFlush>=0||this.delayedAndroidKey)return!1;e&&this.readSelectionRange();let i=this.readChange();if(!i)return this.view.requestMeasure(),!1;let n=this.view.state,s=rB(this.view,i);return this.view.state==n&&(i.domChanged||i.newSel&&!kg(this.view.state.selection,i.newSel.main))&&this.view.update([]),s}readMutation(e){let i=this.view.docView.tile.nearest(e.target);if(!i||i.isWidget())return null;if(i.markDirty(e.type=="attributes"),e.type=="childList"){let n=fE(i,e.previousSibling||e.target.previousSibling,-1),s=fE(i,e.nextSibling||e.target.nextSibling,1);return{from:n?i.posAfter(n):i.posAtStart,to:s?i.posBefore(s):i.posAtEnd,typeOver:!1}}else return e.type=="characterData"?{from:i.posAtStart,to:i.posAtEnd,typeOver:e.target.nodeValue==e.oldValue}:null}setWindow(e){e!=this.win&&(this.removeWindowListeners(this.win),this.win=e,this.addWindowListeners(this.win))}addWindowListeners(e){e.addEventListener("resize",this.onResize),this.printQuery?this.printQuery.addEventListener?this.printQuery.addEventListener("change",this.onPrint):this.printQuery.addListener(this.onPrint):e.addEventListener("beforeprint",this.onPrint),e.addEventListener("scroll",this.onScroll),e.document.addEventListener("selectionchange",this.onSelectionChange)}removeWindowListeners(e){e.removeEventListener("scroll",this.onScroll),e.removeEventListener("resize",this.onResize),this.printQuery?this.printQuery.removeEventListener?this.printQuery.removeEventListener("change",this.onPrint):this.printQuery.removeListener(this.onPrint):e.removeEventListener("beforeprint",this.onPrint),e.document.removeEventListener("selectionchange",this.onSelectionChange)}update(e){this.editContext&&(this.editContext.update(e),e.startState.facet(po)!=e.state.facet(po)&&(e.view.contentDOM.editContext=e.state.facet(po)?this.editContext.editContext:null))}destroy(){var e,i,n;this.stop(),(e=this.intersection)===null||e===void 0||e.disconnect(),(i=this.gapIntersection)===null||i===void 0||i.disconnect(),(n=this.resizeScroll)===null||n===void 0||n.disconnect();for(let s of this.scrollTargets)s.removeEventListener("scroll",this.onScroll);this.removeWindowListeners(this.win),clearTimeout(this.parentCheck),clearTimeout(this.resizeTimeout),this.win.cancelAnimationFrame(this.delayedFlush),this.win.cancelAnimationFrame(this.flushingAndroidKey),this.editContext&&(this.view.contentDOM.editContext=null,this.editContext.destroy())}}function fE(t,e,i){for(;e;){let n=ui.get(e);if(n&&n.parent==t)return n;let s=e.parentNode;e=s!=t.dom?s:i>0?e.nextSibling:e.previousSibling}return null}function dE(t,e){let i=e.startContainer,n=e.startOffset,s=e.endContainer,r=e.endOffset,o=t.docView.domAtPos(t.state.selection.main.anchor,1);return gf(o.node,o.offset,s,r)&&([i,n,s,r]=[s,r,i,n]),{anchorNode:i,anchorOffset:n,focusNode:s,focusOffset:r}}function KW(t,e){if(e.getComposedRanges){let s=e.getComposedRanges(t.root)[0];if(s)return dE(t,s)}let i=null;function n(s){s.preventDefault(),s.stopImmediatePropagation(),i=s.getTargetRanges()[0]}return t.contentDOM.addEventListener("beforeinput",n,!0),t.dom.ownerDocument.execCommand("indent"),t.contentDOM.removeEventListener("beforeinput",n,!0),i?dE(t,i):null}class JW{constructor(e){this.from=0,this.to=0,this.pendingContextChange=null,this.handlers=Object.create(null),this.composing=null,this.resetRange(e.state);let i=this.editContext=new window.EditContext({text:e.state.doc.sliceString(this.from,this.to),selectionStart:this.toContextPos(Math.max(this.from,Math.min(this.to,e.state.selection.main.anchor))),selectionEnd:this.toContextPos(e.state.selection.main.head)});this.handlers.textupdate=n=>{let s=e.state.selection.main,{anchor:r,head:o}=s,l=this.toEditorPos(n.updateRangeStart),c=this.toEditorPos(n.updateRangeEnd);e.inputState.composing>=0&&!this.composing&&(this.composing={contextBase:n.updateRangeStart,editorBase:l,drifted:!1});let u=c-l>n.text.length;l==this.from&&rthis.to&&(c=r);let d=oB(e.state.sliceDoc(l,c),n.text,(u?s.from:s.to)-l,u?"end":null);if(!d){let g=re.single(this.toEditorPos(n.selectionStart),this.toEditorPos(n.selectionEnd));kg(g,s)||e.dispatch({selection:g,userEvent:"select"});return}let p={from:d.from+l,to:d.toA+l,insert:at.of(n.text.slice(d.from,d.toB).split(` +`))};if((xe.mac||xe.android)&&p.from==o-1&&/^\. ?$/.test(n.text)&&e.contentDOM.getAttribute("autocorrect")=="off"&&(p={from:l,to:c,insert:at.of([n.text.replace("."," ")])}),this.pendingContextChange=p,!e.state.readOnly){let g=this.to-this.from+(p.to-p.from+p.insert.length);Ix(e,p,re.single(this.toEditorPos(n.selectionStart,g),this.toEditorPos(n.selectionEnd,g)))}this.pendingContextChange&&(this.revertPending(e.state),this.setSelection(e.state)),p.from=0&&!/[\\p{Alphabetic}\\p{Number}_]/.test(i.text.slice(Math.max(0,n.updateRangeStart-1),Math.min(i.text.length,n.updateRangeStart+1)))&&this.handlers.compositionend(n)},this.handlers.characterboundsupdate=n=>{let s=[],r=null;for(let o=this.toEditorPos(n.rangeStart),l=this.toEditorPos(n.rangeEnd);o{let s=[];for(let r of n.getTextFormats()){let o=r.underlineStyle,l=r.underlineThickness;if(!/none/i.test(o)&&!/none/i.test(l)){let c=this.toEditorPos(r.rangeStart),u=this.toEditorPos(r.rangeEnd);if(c{e.inputState.composing<0&&(e.inputState.composing=0,e.inputState.compositionFirstChange=!0)},this.handlers.compositionend=()=>{if(e.inputState.composing=-1,e.inputState.compositionFirstChange=null,this.composing){let{drifted:n}=this.composing;this.composing=null,n&&this.reset(e.state)}};for(let n in this.handlers)i.addEventListener(n,this.handlers[n]);this.measureReq={read:n=>{this.editContext.updateControlBounds(n.contentDOM.getBoundingClientRect());let s=Lf(n.root);s&&s.rangeCount&&this.editContext.updateSelectionBounds(s.getRangeAt(0).getBoundingClientRect())}}}applyEdits(e){let i=0,n=!1,s=this.pendingContextChange;return e.changes.iterChanges((r,o,l,c,u)=>{if(n)return;let d=u.length-(o-r);if(s&&o>=s.to)if(s.from==r&&s.to==o&&s.insert.eq(u)){s=this.pendingContextChange=null,i+=d,this.to+=d;return}else s=null,this.revertPending(e.state);if(r+=i,o+=i,o<=this.from)this.from+=d,this.to+=d;else if(rthis.to||this.to-this.from+u.length>3e4){n=!0;return}this.editContext.updateText(this.toContextPos(r),this.toContextPos(o),u.toString()),this.to+=d}i+=d}),s&&!n&&this.revertPending(e.state),!n}update(e){let i=this.pendingContextChange,n=e.startState.selection.main;this.composing&&(this.composing.drifted||!e.changes.touchesRange(n.from,n.to)&&e.transactions.some(s=>!s.isUserEvent("input.type")&&s.changes.touchesRange(this.from,this.to)))?(this.composing.drifted=!0,this.composing.editorBase=e.changes.mapPos(this.composing.editorBase)):!this.applyEdits(e)||!this.rangeIsValid(e.state)?(this.pendingContextChange=null,this.reset(e.state)):(e.docChanged||e.selectionSet||i)&&this.setSelection(e.state),(e.geometryChanged||e.docChanged||e.selectionSet)&&e.view.requestMeasure(this.measureReq)}resetRange(e){let{head:i}=e.selection.main;this.from=Math.max(0,i-1e4),this.to=Math.min(e.doc.length,i+1e4)}reset(e){this.resetRange(e),this.editContext.updateText(0,this.editContext.text.length,e.doc.sliceString(this.from,this.to)),this.setSelection(e)}revertPending(e){let i=this.pendingContextChange;this.pendingContextChange=null,this.editContext.updateText(this.toContextPos(i.from),this.toContextPos(i.from+i.insert.length),e.doc.sliceString(i.from,i.to))}setSelection(e){let{main:i}=e.selection,n=this.toContextPos(Math.max(this.from,Math.min(this.to,i.anchor))),s=this.toContextPos(i.head);(this.editContext.selectionStart!=n||this.editContext.selectionEnd!=s)&&this.editContext.updateSelection(n,s)}rangeIsValid(e){let{head:i}=e.selection.main;return!(this.from>0&&i-this.from<500||this.to1e4*3)}toEditorPos(e,i=this.to-this.from){e=Math.min(e,i);let n=this.composing;return n&&n.drifted?n.editorBase+(e-n.contextBase):e+this.from}toContextPos(e){let i=this.composing;return i&&i.drifted?i.contextBase+(e-i.editorBase):e-this.from}destroy(){for(let e in this.handlers)this.editContext.removeEventListener(e,this.handlers[e])}}class ve{get state(){return this.viewState.state}get viewport(){return this.viewState.viewport}get visibleRanges(){return this.viewState.visibleRanges}get inView(){return this.viewState.inView}get composing(){return!!this.inputState&&this.inputState.composing>0}get compositionStarted(){return!!this.inputState&&this.inputState.composing>=0}get root(){return this._root}get win(){return this.dom.ownerDocument.defaultView||window}constructor(e={}){var i;this.plugins=[],this.pluginMap=new Map,this.editorAttrs={},this.contentAttrs={},this.bidiCache=[],this.destroyed=!1,this.updateState=2,this.measureScheduled=-1,this.measureRequests=[],this.contentDOM=document.createElement("div"),this.scrollDOM=document.createElement("div"),this.scrollDOM.tabIndex=-1,this.scrollDOM.className="cm-scroller",this.scrollDOM.appendChild(this.contentDOM),this.announceDOM=document.createElement("div"),this.announceDOM.className="cm-announced",this.announceDOM.setAttribute("aria-live","polite"),this.dom=document.createElement("div"),this.dom.appendChild(this.announceDOM),this.dom.appendChild(this.scrollDOM),e.parent&&e.parent.appendChild(this.dom);let{dispatch:n}=e;this.dispatchTransactions=e.dispatchTransactions||n&&(s=>s.forEach(r=>n(r,this)))||(s=>this.update(s)),this.dispatch=this.dispatch.bind(this),this._root=e.root||Aq(e.parent)||document,this.viewState=new cE(e.state||et.create(e)),e.scrollTo&&e.scrollTo.is(Jp)&&(this.viewState.scrollTarget=e.scrollTo.value.clip(this.viewState.state)),this.plugins=this.state.facet(zc).map(s=>new x_(s));for(let s of this.plugins)s.update(this);this.observer=new GW(this),this.inputState=new yW(this),this.inputState.ensureHandlers(this.plugins),this.docView=new FA(this),this.mountStyles(),this.updateAttrs(),this.updateState=0,this.requestMeasure(),!((i=document.fonts)===null||i===void 0)&&i.ready&&document.fonts.ready.then(()=>{this.viewState.mustMeasureContent="refresh",this.requestMeasure()})}dispatch(...e){let i=e.length==1&&e[0]instanceof hi?e:e.length==1&&Array.isArray(e[0])?e[0]:[this.state.update(...e)];this.dispatchTransactions(i,this)}update(e){if(this.updateState!=0)throw new Error("Calls to EditorView.update are not allowed while an update is in progress");let i=!1,n=!1,s,r=this.state;for(let g of e){if(g.startState!=r)throw new RangeError("Trying to update state with a transaction that doesn't start from the previous state.");r=g.state}if(this.destroyed){this.viewState.state=r;return}let o=this.hasFocus,l=0,c=null;e.some(g=>g.annotation(fB))?(this.inputState.notifiedFocused=o,l=1):o!=this.inputState.notifiedFocused&&(this.inputState.notifiedFocused=o,c=dB(r,o),c||(l=1));let u=this.observer.delayedAndroidKey,d=null;if(u?(this.observer.clearDelayedAndroidKey(),d=this.observer.readChange(),(d&&!this.state.doc.eq(r.doc)||!this.state.selection.eq(r.selection))&&(d=null)):this.observer.clear(),r.facet(et.phrases)!=this.state.facet(et.phrases))return this.setState(r);s=xg.create(this,r,e),s.flags|=l;let p=this.viewState.scrollTarget;try{this.updateState=2;for(let g of e){if(p&&(p=p.map(g.changes)),g.scrollIntoView){let{main:O}=g.state.selection;p=new Hc(O.empty?O:re.cursor(O.head,O.head>O.anchor?-1:1))}for(let O of g.effects)O.is(Jp)&&(p=O.value.clip(this.state))}this.viewState.update(s,p),this.bidiCache=Ag.update(this.bidiCache,s.changes),s.empty||(this.updatePlugins(s),this.inputState.update(s)),i=this.docView.update(s),this.state.facet(Fu)!=this.styleModules&&this.mountStyles(),n=this.updateAttrs(),this.showAnnouncements(e),this.docView.updateSelection(i,e.some(g=>g.isUserEvent("select.pointer")))}finally{this.updateState=0}if(s.startState.facet(rm)!=s.state.facet(rm)&&(this.viewState.mustMeasureContent=!0),(i||n||p||this.viewState.mustEnforceCursorAssoc||this.viewState.mustMeasureContent)&&this.requestMeasure(),i&&this.docViewUpdate(),!s.empty)for(let g of this.state.facet(db))try{g(s)}catch(O){$n(this.state,O,"update listener")}(c||d)&&Promise.resolve().then(()=>{c&&this.state==c.startState&&this.dispatch(c),d&&!rB(this,d)&&u.force&&Yc(this.contentDOM,u.key,u.keyCode)})}setState(e){if(this.updateState!=0)throw new Error("Calls to EditorView.setState are not allowed while an update is in progress");if(this.destroyed){this.viewState.state=e;return}this.updateState=2;let i=this.hasFocus;try{for(let n of this.plugins)n.destroy(this);this.viewState=new cE(e),this.plugins=e.facet(zc).map(n=>new x_(n)),this.pluginMap.clear();for(let n of this.plugins)n.update(this);this.docView.destroy(),this.docView=new FA(this),this.inputState.ensureHandlers(this.plugins),this.mountStyles(),this.updateAttrs(),this.bidiCache=[]}finally{this.updateState=0}i&&this.focus(),this.requestMeasure()}updatePlugins(e){let i=e.startState.facet(zc),n=e.state.facet(zc);if(i!=n){let s=[];for(let r of n){let o=i.indexOf(r);if(o<0)s.push(new x_(r));else{let l=this.plugins[o];l.mustUpdate=e,s.push(l)}}for(let r of this.plugins)r.mustUpdate!=e&&r.destroy(this);this.plugins=s,this.pluginMap.clear()}else for(let s of this.plugins)s.mustUpdate=e;for(let s=0;s-1&&this.win.cancelAnimationFrame(this.measureScheduled),this.observer.delayedAndroidKey){this.measureScheduled=-1,this.requestMeasure();return}this.measureScheduled=0,e&&this.observer.forceFlush();let i=null,n=this.scrollDOM,s=n.scrollTop*this.scaleY,{scrollAnchorPos:r,scrollAnchorHeight:o}=this.viewState;Math.abs(s-this.viewState.scrollTop)>1&&(o=-1),this.viewState.scrollAnchorHeight=-1;try{for(let l=0;;l++){if(o<0)if(QD(n))r=-1,o=this.viewState.heightMap.height;else{let O=this.viewState.scrollAnchorAt(s);r=O.from,o=O.top}this.updateState=1;let c=this.viewState.measure(this);if(!c&&!this.measureRequests.length&&this.viewState.scrollTarget==null)break;if(l>5){console.warn(this.measureRequests.length?"Measure loop restarted more than 5 times":"Viewport failed to stabilize");break}let u=[];c&4||([this.measureRequests,u]=[u,this.measureRequests]);let d=u.map(O=>{try{return O.read(this)}catch(_){return $n(this.state,_),pE}}),p=xg.create(this,this.state,[]),g=!1;p.flags|=c,i?i.flags|=c:i=p,this.updateState=2,p.empty||(this.updatePlugins(p),this.inputState.update(p),this.updateAttrs(),g=this.docView.update(p),g&&this.docViewUpdate());for(let O=0;O1||_<-1){s=s+_,n.scrollTop=s/this.scaleY,o=-1;continue}}break}}}finally{this.updateState=0,this.measureScheduled=-1}if(i&&!i.empty)for(let l of this.state.facet(db))l(i)}get themeClasses(){return _b+" "+(this.state.facet(vb)?OB:gB)+" "+this.state.facet(rm)}updateAttrs(){let e=mE(this,GD,{class:"cm-editor"+(this.hasFocus?" cm-focused ":" ")+this.themeClasses}),i={spellcheck:"false",autocorrect:"off",autocapitalize:"off",writingsuggestions:"false",translate:"no",contenteditable:this.state.facet(po)?"true":"false",class:"cm-content",style:`${xe.tabSize}: ${this.state.tabSize}`,role:"textbox","aria-multiline":"true"};this.state.readOnly&&(i["aria-readonly"]="true"),mE(this,Nx,i);let n=this.observer.ignore(()=>{let s=ZA(this.contentDOM,this.contentAttrs,i),r=ZA(this.dom,this.editorAttrs,e);return s||r});return this.editorAttrs=e,this.contentAttrs=i,n}showAnnouncements(e){let i=!0;for(let n of e)for(let s of n.effects)if(s.is(ve.announce)){i&&(this.announceDOM.textContent=""),i=!1;let r=this.announceDOM.appendChild(document.createElement("div"));r.textContent=s.value}}mountStyles(){this.styleModules=this.state.facet(Fu);let e=this.state.facet(ve.cspNonce);Ca.mount(this.root,this.styleModules.concat(HW).reverse(),e?{nonce:e}:void 0)}readMeasured(){if(this.updateState==2)throw new Error("Reading the editor layout isn't allowed during an update");this.updateState==0&&this.measureScheduled>-1&&this.measure(!1)}requestMeasure(e){if(this.measureScheduled<0&&(this.measureScheduled=this.win.requestAnimationFrame(()=>this.measure())),e){if(this.measureRequests.indexOf(e)>-1)return;if(e.key!=null){for(let i=0;in.plugin==e)||null),i&&i.update(this).value}get documentTop(){return this.contentDOM.getBoundingClientRect().top+this.viewState.paddingTop}get documentPadding(){return{top:this.viewState.paddingTop,bottom:this.viewState.paddingBottom}}get scaleX(){return this.viewState.scaleX}get scaleY(){return this.viewState.scaleY}elementAtHeight(e){return this.readMeasured(),this.viewState.elementAtHeight(e)}lineBlockAtHeight(e){return this.readMeasured(),this.viewState.lineBlockAtHeight(e)}get viewportLineBlocks(){return this.viewState.viewportLines}lineBlockAt(e){return this.viewState.lineBlockAt(e)}get contentHeight(){return this.viewState.contentHeight}moveByChar(e,i,n){return T_(this,e,GA(this,e,i,n))}moveByGroup(e,i){return T_(this,e,GA(this,e,i,n=>hW(this,e.head,n)))}visualLineSide(e,i){let n=this.bidiSpans(e),s=this.textDirectionAt(e.from),r=n[i?n.length-1:0];return re.cursor(r.side(i,s)+e.from,r.forward(!i,s)?1:-1)}moveToLineBoundary(e,i,n=!0){return cW(this,e,i,n)}moveVertically(e,i,n){return T_(this,e,uW(this,e,i,n))}domAtPos(e,i=1){return this.docView.domAtPos(e,i)}posAtDOM(e,i=0){return this.docView.posFromDOM(e,i)}posAtCoords(e,i=!0){this.readMeasured();let n=gb(this,e,i);return n&&n.pos}posAndSideAtCoords(e,i=!0){return this.readMeasured(),gb(this,e,i)}coordsAtPos(e,i=1){this.readMeasured();let n=this.docView.coordsAt(e,i);if(!n||n.left==n.right)return n;let s=this.state.doc.lineAt(e),r=this.bidiSpans(s),o=r[_r.find(r,e-s.from,-1,i)];return Df(n,o.dir==St.LTR==i>0)}coordsForChar(e){return this.readMeasured(),this.docView.coordsForChar(e)}get defaultCharacterWidth(){return this.viewState.heightOracle.charWidth}get defaultLineHeight(){return this.viewState.heightOracle.lineHeight}get textDirection(){return this.viewState.defaultTextDirection}textDirectionAt(e){return!this.state.facet(UD)||ethis.viewport.to?this.textDirection:(this.readMeasured(),this.docView.textDirectionAt(e))}get lineWrapping(){return this.viewState.heightOracle.lineWrapping}bidiSpans(e){if(e.length>eU)return zD(e.length);let i=this.textDirectionAt(e.from),n;for(let r of this.bidiCache)if(r.from==e.from&&r.dir==i&&(r.fresh||ND(r.isolates,n=UA(this,e))))return r.order;n||(n=UA(this,e));let s=Bq(e.text,i,n);return this.bidiCache.push(new Ag(e.from,e.to,i,n,!0,s)),s}get hasFocus(){var e;return(this.dom.ownerDocument.hasFocus()||xe.safari&&((e=this.inputState)===null||e===void 0?void 0:e.lastContextMenu)>Date.now()-3e4)&&this.root.activeElement==this.contentDOM}focus(){this.observer.ignore(()=>{RD(this.contentDOM),this.docView.updateSelection()})}setRoot(e){this._root!=e&&(this._root=e,this.observer.setWindow((e.nodeType==9?e:e.ownerDocument).defaultView||window),this.mountStyles())}destroy(){this.root.activeElement==this.contentDOM&&this.contentDOM.blur();for(let e of this.plugins)e.destroy(this);this.plugins=[],this.inputState.destroy(),this.docView.destroy(),this.dom.remove(),this.observer.destroy(),this.measureScheduled>-1&&this.win.cancelAnimationFrame(this.measureScheduled),this.destroyed=!0}static scrollIntoView(e,i={}){return Jp.of(new Hc(typeof e=="number"?re.cursor(e):e,i.y,i.x,i.yMargin,i.xMargin))}scrollSnapshot(){let{scrollTop:e,scrollLeft:i}=this.scrollDOM,n=this.viewState.scrollAnchorAt(e);return Jp.of(new Hc(re.cursor(n.from),"start","start",n.top-e,i,!0))}setTabFocusMode(e){e==null?this.inputState.tabFocusMode=this.inputState.tabFocusMode<0?0:-1:typeof e=="boolean"?this.inputState.tabFocusMode=e?0:-1:this.inputState.tabFocusMode!=0&&(this.inputState.tabFocusMode=Date.now()+e)}static domEventHandlers(e){return Jt.define(()=>({}),{eventHandlers:e})}static domEventObservers(e){return Jt.define(()=>({}),{eventObservers:e})}static theme(e,i){let n=Ca.newName(),s=[rm.of(n),Fu.of(yb(`.${n}`,e))];return i&&i.dark&&s.push(vb.of(!0)),s}static baseTheme(e){return wo.lowest(Fu.of(yb("."+_b,e,vB)))}static findFromDOM(e){var i;let n=e.querySelector(".cm-content"),s=n&&ui.get(n)||ui.get(e);return((i=s==null?void 0:s.root)===null||i===void 0?void 0:i.view)||null}}ve.styleModule=Fu;ve.inputHandler=qD;ve.clipboardInputFilter=Bx;ve.clipboardOutputFilter=$x;ve.scrollHandler=HD;ve.focusChangeEffect=WD;ve.perLineTextDirection=UD;ve.exceptionSink=ZD;ve.updateListener=db;ve.editable=po;ve.mouseSelectionStyle=XD;ve.dragMovesSelection=VD;ve.clickAddsSelectionRange=ID;ve.decorations=dO;ve.blockWrappers=KD;ve.outerDecorations=zx;ve.atomicRanges=fd;ve.bidiIsolatedRanges=JD;ve.scrollMargins=eB;ve.darkTheme=vb;ve.cspNonce=Se.define({combine:t=>t.length?t[0]:""});ve.contentAttributes=Nx;ve.editorAttributes=GD;ve.lineWrapping=ve.contentAttributes.of({class:"cm-lineWrapping"});ve.announce=Ne.define();const eU=4096,pE={};class Ag{constructor(e,i,n,s,r,o){this.from=e,this.to=i,this.dir=n,this.isolates=s,this.fresh=r,this.order=o}static update(e,i){if(i.empty&&!e.some(r=>r.fresh))return e;let n=[],s=e.length?e[e.length-1].dir:St.LTR;for(let r=Math.max(0,e.length-10);r=0;s--){let r=n[s],o=typeof r=="function"?r(t):r;o&&Qx(o,i)}return i}const tU=xe.mac?"mac":xe.windows?"win":xe.linux?"linux":"key";function iU(t,e){const i=t.split(/-(?!$)/);let n=i[i.length-1];n=="Space"&&(n=" ");let s,r,o,l;for(let c=0;cn.concat(s),[]))),i}function sU(t,e,i){return yB(_B(t.state),e,t,i)}let Oa=null;const rU=4e3;function oU(t,e=tU){let i=Object.create(null),n=Object.create(null),s=(o,l)=>{let c=n[o];if(c==null)n[o]=l;else if(c!=l)throw new Error("Key binding "+o+" is used both as a regular binding and as a multi-stroke prefix")},r=(o,l,c,u,d)=>{var p,g;let O=i[o]||(i[o]=Object.create(null)),_=l.split(/ (?!$)/).map(w=>iU(w,e));for(let w=1;w<_.length;w++){let k=_.slice(0,w).join(" ");s(k,!0),O[k]||(O[k]={preventDefault:!0,stopPropagation:!1,run:[T=>{let A=Oa={view:T,prefix:k,scope:o};return setTimeout(()=>{Oa==A&&(Oa=null)},rU),!0}]})}let b=_.join(" ");s(b,!1);let x=O[b]||(O[b]={preventDefault:!1,stopPropagation:!1,run:((g=(p=O._any)===null||p===void 0?void 0:p.run)===null||g===void 0?void 0:g.slice())||[]});c&&x.run.push(c),u&&(x.preventDefault=!0),d&&(x.stopPropagation=!0)};for(let o of t){let l=o.scope?o.scope.split(" "):["editor"];if(o.any)for(let u of l){let d=i[u]||(i[u]=Object.create(null));d._any||(d._any={preventDefault:!1,stopPropagation:!1,run:[]});let{any:p}=o;for(let g in d)d[g].run.push(O=>p(O,bb))}let c=o[e]||o.key;if(c)for(let u of l)r(u,c,o.run,o.preventDefault,o.stopPropagation),o.shift&&r(u,"Shift-"+c,o.shift,o.preventDefault,o.stopPropagation)}return i}let bb=null;function yB(t,e,i,n){bb=e;let s=_q(e),r=Ln(s,0),o=gr(r)==s.length&&s!=" ",l="",c=!1,u=!1,d=!1;Oa&&Oa.view==i&&Oa.scope==n&&(l=Oa.prefix+" ",lB.indexOf(e.keyCode)<0&&(u=!0,Oa=null));let p=new Set,g=x=>{if(x){for(let w of x.run)if(!p.has(w)&&(p.add(w),w(i)))return x.stopPropagation&&(d=!0),!0;x.preventDefault&&(x.stopPropagation&&(d=!0),u=!0)}return!1},O=t[n],_,b;return O&&(g(O[l+om(s,e,!o)])?c=!0:o&&(e.altKey||e.metaKey||e.ctrlKey)&&!(xe.windows&&e.ctrlKey&&e.altKey)&&!(xe.mac&&e.altKey&&!(e.ctrlKey||e.metaKey))&&(_=ka[e.keyCode])&&_!=s?(g(O[l+om(_,e,!0)])||e.shiftKey&&(b=Rf[e.keyCode])!=s&&b!=_&&g(O[l+om(b,e,!1)]))&&(c=!0):o&&e.shiftKey&&g(O[l+om(s,e,!0)])&&(c=!0),!c&&g(O._any)&&(c=!0)),u&&(c=!0),c&&d&&e.stopPropagation(),bb=null,c}class dd{constructor(e,i,n,s,r){this.className=e,this.left=i,this.top=n,this.width=s,this.height=r}draw(){let e=document.createElement("div");return e.className=this.className,this.adjust(e),e}update(e,i){return i.className!=this.className?!1:(this.adjust(e),!0)}adjust(e){e.style.left=this.left+"px",e.style.top=this.top+"px",this.width!=null&&(e.style.width=this.width+"px"),e.style.height=this.height+"px"}eq(e){return this.left==e.left&&this.top==e.top&&this.width==e.width&&this.height==e.height&&this.className==e.className}static forRange(e,i,n){if(n.empty){let s=e.coordsAtPos(n.head,n.assoc||1);if(!s)return[];let r=bB(e);return[new dd(i,s.left-r.left,s.top-r.top,null,s.bottom-s.top)]}else return aU(e,i,n)}}function bB(t){let e=t.scrollDOM.getBoundingClientRect();return{left:(t.textDirection==St.LTR?e.left:e.right-t.scrollDOM.clientWidth*t.scaleX)-t.scrollDOM.scrollLeft*t.scaleX,top:e.top-t.scrollDOM.scrollTop*t.scaleY}}function OE(t,e,i,n){let s=t.coordsAtPos(e,i*2);if(!s)return n;let r=t.dom.getBoundingClientRect(),o=(s.top+s.bottom)/2,l=t.posAtCoords({x:r.left+1,y:o}),c=t.posAtCoords({x:r.right-1,y:o});return l==null||c==null?n:{from:Math.max(n.from,Math.min(l,c)),to:Math.min(n.to,Math.max(l,c))}}function aU(t,e,i){if(i.to<=t.viewport.from||i.from>=t.viewport.to)return[];let n=Math.max(i.from,t.viewport.from),s=Math.min(i.to,t.viewport.to),r=t.textDirection==St.LTR,o=t.contentDOM,l=o.getBoundingClientRect(),c=bB(t),u=o.querySelector(".cm-line"),d=u&&window.getComputedStyle(u),p=l.left+(d?parseInt(d.paddingLeft)+Math.min(0,parseInt(d.textIndent)):0),g=l.right-(d?parseInt(d.paddingRight):0),O=mb(t,n,1),_=mb(t,s,-1),b=O.type==Ki.Text?O:null,x=_.type==Ki.Text?_:null;if(b&&(t.lineWrapping||O.widgetLineBreaks)&&(b=OE(t,n,1,b)),x&&(t.lineWrapping||_.widgetLineBreaks)&&(x=OE(t,s,-1,x)),b&&x&&b.from==x.from&&b.to==x.to)return k(T(i.from,i.to,b));{let Q=b?T(i.from,null,b):A(O,!1),E=x?T(null,i.to,x):A(_,!0),N=[];return(b||O).to<(x||_).from-(b&&x?1:0)||O.widgetLineBreaks>1&&Q.bottom+t.defaultLineHeight/2R&&j.from=D)break;M>$&&U(Math.max(F,$),Q==null&&F<=R,Math.min(M,D),E==null&&M>=B,H.dir)}if($=Z.to+1,$>=D)break}return J.length==0&&U(R,Q==null,B,E==null,t.textDirection),{top:z,bottom:q,horizontal:J}}function A(Q,E){let N=l.top+(E?Q.top:Q.bottom);return{top:N,bottom:N,horizontal:[]}}}function lU(t,e){return t.constructor==e.constructor&&t.eq(e)}class cU{constructor(e,i){this.view=e,this.layer=i,this.drawn=[],this.scaleX=1,this.scaleY=1,this.measureReq={read:this.measure.bind(this),write:this.draw.bind(this)},this.dom=e.scrollDOM.appendChild(document.createElement("div")),this.dom.classList.add("cm-layer"),i.above&&this.dom.classList.add("cm-layer-above"),i.class&&this.dom.classList.add(i.class),this.scale(),this.dom.setAttribute("aria-hidden","true"),this.setOrder(e.state),e.requestMeasure(this.measureReq),i.mount&&i.mount(this.dom,e)}update(e){e.startState.facet(Zm)!=e.state.facet(Zm)&&this.setOrder(e.state),(this.layer.update(e,this.dom)||e.geometryChanged)&&(this.scale(),e.view.requestMeasure(this.measureReq))}docViewUpdate(e){this.layer.updateOnDocViewUpdate!==!1&&e.requestMeasure(this.measureReq)}setOrder(e){let i=0,n=e.facet(Zm);for(;i!lU(i,this.drawn[n]))){let i=this.dom.firstChild,n=0;for(let s of e)s.update&&i&&s.constructor&&this.drawn[n].constructor&&s.update(i,this.drawn[n])?(i=i.nextSibling,n++):this.dom.insertBefore(s.draw(),i);for(;i;){let s=i.nextSibling;i.remove(),i=s}this.drawn=e,xe.safari&&xe.safari_version>=26&&(this.dom.style.display=this.dom.firstChild?"":"none")}}destroy(){this.layer.destroy&&this.layer.destroy(this.dom,this.view),this.dom.remove()}}const Zm=Se.define();function SB(t){return[Jt.define(e=>new cU(e,t)),Zm.of(t)]}const $f=Se.define({combine(t){return Dr(t,{cursorBlinkRate:1200,drawRangeCursor:!0},{cursorBlinkRate:(e,i)=>Math.min(e,i),drawRangeCursor:(e,i)=>e||i})}});function hU(t={}){return[$f.of(t),uU,fU,dU,YD.of(!0)]}function xB(t){return t.startState.facet($f)!=t.state.facet($f)}const uU=SB({above:!0,markers(t){let{state:e}=t,i=e.facet($f),n=[];for(let s of e.selection.ranges){let r=s==e.selection.main;if(s.empty||i.drawRangeCursor){let o=r?"cm-cursor cm-cursor-primary":"cm-cursor cm-cursor-secondary",l=s.empty?s:re.cursor(s.head,s.head>s.anchor?-1:1);for(let c of dd.forRange(t,o,l))n.push(c)}}return n},update(t,e){t.transactions.some(n=>n.selection)&&(e.style.animationName=e.style.animationName=="cm-blink"?"cm-blink2":"cm-blink");let i=xB(t);return i&&vE(t.state,e),t.docChanged||t.selectionSet||i},mount(t,e){vE(e.state,t)},class:"cm-cursorLayer"});function vE(t,e){e.style.animationDuration=t.facet($f).cursorBlinkRate+"ms"}const fU=SB({above:!1,markers(t){return t.state.selection.ranges.map(e=>e.empty?[]:dd.forRange(t,"cm-selectionBackground",e)).reduce((e,i)=>e.concat(i))},update(t,e){return t.docChanged||t.selectionSet||t.viewportChanged||xB(t)},class:"cm-selectionLayer"}),dU=wo.highest(ve.theme({".cm-line":{"& ::selection, &::selection":{backgroundColor:"transparent !important"},caretColor:"transparent !important"},".cm-content":{caretColor:"transparent !important","& :focus":{caretColor:"initial !important","&::selection, & ::selection":{backgroundColor:"Highlight !important"}}}})),wB=Ne.define({map(t,e){return t==null?null:e.mapPos(t)}}),Ju=Bi.define({create(){return null},update(t,e){return t!=null&&(t=e.changes.mapPos(t)),e.effects.reduce((i,n)=>n.is(wB)?n.value:i,t)}}),pU=Jt.fromClass(class{constructor(t){this.view=t,this.cursor=null,this.measureReq={read:this.readPos.bind(this),write:this.drawCursor.bind(this)}}update(t){var e;let i=t.state.field(Ju);i==null?this.cursor!=null&&((e=this.cursor)===null||e===void 0||e.remove(),this.cursor=null):(this.cursor||(this.cursor=this.view.scrollDOM.appendChild(document.createElement("div")),this.cursor.className="cm-dropCursor"),(t.startState.field(Ju)!=i||t.docChanged||t.geometryChanged)&&this.view.requestMeasure(this.measureReq))}readPos(){let{view:t}=this,e=t.state.field(Ju),i=e!=null&&t.coordsAtPos(e);if(!i)return null;let n=t.scrollDOM.getBoundingClientRect();return{left:i.left-n.left+t.scrollDOM.scrollLeft*t.scaleX,top:i.top-n.top+t.scrollDOM.scrollTop*t.scaleY,height:i.bottom-i.top}}drawCursor(t){if(this.cursor){let{scaleX:e,scaleY:i}=this.view;t?(this.cursor.style.left=t.left/e+"px",this.cursor.style.top=t.top/i+"px",this.cursor.style.height=t.height/i+"px"):this.cursor.style.left="-100000px"}}destroy(){this.cursor&&this.cursor.remove()}setDropPos(t){this.view.state.field(Ju)!=t&&this.view.dispatch({effects:wB.of(t)})}},{eventObservers:{dragover(t){this.setDropPos(this.view.posAtCoords({x:t.clientX,y:t.clientY}))},dragleave(t){(t.target==this.view.contentDOM||!this.view.contentDOM.contains(t.relatedTarget))&&this.setDropPos(null)},dragend(){this.setDropPos(null)},drop(){this.setDropPos(null)}}});function mU(){return[Ju,pU]}function _E(t,e,i,n,s){e.lastIndex=0;for(let r=t.iterRange(i,n),o=i,l;!r.next().done;o+=r.value.length)if(!r.lineBreak)for(;l=e.exec(r.value);)s(o+l.index,l)}function gU(t,e){let i=t.visibleRanges;if(i.length==1&&i[0].from==t.viewport.from&&i[0].to==t.viewport.to)return i;let n=[];for(let{from:s,to:r}of i)s=Math.max(t.state.doc.lineAt(s).from,s-e),r=Math.min(t.state.doc.lineAt(r).to,r+e),n.length&&n[n.length-1].to>=s?n[n.length-1].to=r:n.push({from:s,to:r});return n}class OU{constructor(e){const{regexp:i,decoration:n,decorate:s,boundary:r,maxLength:o=1e3}=e;if(!i.global)throw new RangeError("The regular expression given to MatchDecorator should have its 'g' flag set");if(this.regexp=i,s)this.addMatch=(l,c,u,d)=>s(d,u,u+l[0].length,l,c);else if(typeof n=="function")this.addMatch=(l,c,u,d)=>{let p=n(l,c,u);p&&d(u,u+l[0].length,p)};else if(n)this.addMatch=(l,c,u,d)=>d(u,u+l[0].length,n);else throw new RangeError("Either 'decorate' or 'decoration' should be provided to MatchDecorator");this.boundary=r,this.maxLength=o}createDeco(e){let i=new yo,n=i.add.bind(i);for(let{from:s,to:r}of gU(e,this.maxLength))_E(e.state.doc,this.regexp,s,r,(o,l)=>this.addMatch(l,e,o,n));return i.finish()}updateDeco(e,i){let n=1e9,s=-1;return e.docChanged&&e.changes.iterChanges((r,o,l,c)=>{c>=e.view.viewport.from&&l<=e.view.viewport.to&&(n=Math.min(l,n),s=Math.max(c,s))}),e.viewportMoved||s-n>1e3?this.createDeco(e.view):s>-1?this.updateRange(e.view,i.map(e.changes),n,s):i}updateRange(e,i,n,s){for(let r of e.visibleRanges){let o=Math.max(r.from,n),l=Math.min(r.to,s);if(l>=o){let c=e.state.doc.lineAt(o),u=c.toc.from;o--)if(this.boundary.test(c.text[o-1-c.from])){d=o;break}for(;lg.push(w.range(b,x));if(c==u)for(this.regexp.lastIndex=d-c.from;(O=this.regexp.exec(c.text))&&O.indexthis.addMatch(x,e,b,_));i=i.update({filterFrom:d,filterTo:p,filter:(b,x)=>bp,add:g})}}return i}}const Sb=/x/.unicode!=null?"gu":"g",vU=new RegExp(`[\0-\b +--Ÿ­؜​‎‏\u2028\u2029‭‮⁦⁧⁩\uFEFF-]`,Sb),_U={0:"null",7:"bell",8:"backspace",10:"newline",11:"vertical tab",13:"carriage return",27:"escape",8203:"zero width space",8204:"zero width non-joiner",8205:"zero width joiner",8206:"left-to-right mark",8207:"right-to-left mark",8232:"line separator",8237:"left-to-right override",8238:"right-to-left override",8294:"left-to-right isolate",8295:"right-to-left isolate",8297:"pop directional isolate",8233:"paragraph separator",65279:"zero width no-break space",65532:"object replacement"};let M_=null;function yU(){var t;if(M_==null&&typeof document<"u"&&document.body){let e=document.body.style;M_=((t=e.tabSize)!==null&&t!==void 0?t:e.MozTabSize)!=null}return M_||!1}const qm=Se.define({combine(t){let e=Dr(t,{render:null,specialChars:vU,addSpecialChars:null});return(e.replaceTabs=!yU())&&(e.specialChars=new RegExp(" |"+e.specialChars.source,Sb)),e.addSpecialChars&&(e.specialChars=new RegExp(e.specialChars.source+"|"+e.addSpecialChars.source,Sb)),e}});function bU(t={}){return[qm.of(t),SU()]}let yE=null;function SU(){return yE||(yE=Jt.fromClass(class{constructor(t){this.view=t,this.decorations=Pe.none,this.decorationCache=Object.create(null),this.decorator=this.makeDecorator(t.state.facet(qm)),this.decorations=this.decorator.createDeco(t)}makeDecorator(t){return new OU({regexp:t.specialChars,decoration:(e,i,n)=>{let{doc:s}=i.state,r=Ln(e[0],0);if(r==9){let o=s.lineAt(n),l=i.state.tabSize,c=Ys(o.text,l,n-o.from);return Pe.replace({widget:new kU((l-c%l)*this.view.defaultCharacterWidth/this.view.scaleX)})}return this.decorationCache[r]||(this.decorationCache[r]=Pe.replace({widget:new CU(t,r)}))},boundary:t.replaceTabs?void 0:/[^]/})}update(t){let e=t.state.facet(qm);t.startState.facet(qm)!=e?(this.decorator=this.makeDecorator(e),this.decorations=this.decorator.createDeco(t.view)):this.decorations=this.decorator.updateDeco(t,this.decorations)}},{decorations:t=>t.decorations}))}const xU="•";function wU(t){return t>=32?xU:t==10?"␤":String.fromCharCode(9216+t)}class CU extends Gs{constructor(e,i){super(),this.options=e,this.code=i}eq(e){return e.code==this.code}toDOM(e){let i=wU(this.code),n=e.state.phrase("Control character")+" "+(_U[this.code]||"0x"+this.code.toString(16)),s=this.options.render&&this.options.render(this.code,n,i);if(s)return s;let r=document.createElement("span");return r.textContent=i,r.title=n,r.setAttribute("aria-label",n),r.className="cm-specialChar",r}ignoreEvent(){return!1}}class kU extends Gs{constructor(e){super(),this.width=e}eq(e){return e.width==this.width}toDOM(){let e=document.createElement("span");return e.textContent=" ",e.className="cm-tab",e.style.width=this.width+"px",e}ignoreEvent(){return!1}}function TU(){return EU}const AU=Pe.line({class:"cm-activeLine"}),EU=Jt.fromClass(class{constructor(t){this.decorations=this.getDeco(t)}update(t){(t.docChanged||t.selectionSet)&&(this.decorations=this.getDeco(t.view))}getDeco(t){let e=-1,i=[];for(let n of t.state.selection.ranges){let s=t.lineBlockAt(n.head);s.from>e&&(i.push(AU.range(s.from)),e=s.from)}return Pe.set(i)}},{decorations:t=>t.decorations});class MU extends Gs{constructor(e){super(),this.content=e}toDOM(e){let i=document.createElement("span");return i.className="cm-placeholder",i.style.pointerEvents="none",i.appendChild(typeof this.content=="string"?document.createTextNode(this.content):typeof this.content=="function"?this.content(e):this.content.cloneNode(!0)),i.setAttribute("aria-hidden","true"),i}coordsAt(e){let i=e.firstChild?mf(e.firstChild):[];if(!i.length)return null;let n=window.getComputedStyle(e.parentNode),s=Df(i[0],n.direction!="rtl"),r=parseInt(n.lineHeight);return s.bottom-s.top>r*1.5?{left:s.left,right:s.right,top:s.top,bottom:s.top+r}:s}ignoreEvent(){return!1}}function PU(t){let e=Jt.fromClass(class{constructor(i){this.view=i,this.placeholder=t?Pe.set([Pe.widget({widget:new MU(t),side:1}).range(0)]):Pe.none}get decorations(){return this.view.state.doc.length?Pe.none:this.placeholder}},{decorations:i=>i.decorations});return typeof t=="string"?[e,ve.contentAttributes.of({"aria-placeholder":t})]:e}const xb=2e3;function RU(t,e,i){let n=Math.min(e.line,i.line),s=Math.max(e.line,i.line),r=[];if(e.off>xb||i.off>xb||e.col<0||i.col<0){let o=Math.min(e.off,i.off),l=Math.max(e.off,i.off);for(let c=n;c<=s;c++){let u=t.doc.line(c);u.length<=l&&r.push(re.range(u.from+o,u.to+l))}}else{let o=Math.min(e.col,i.col),l=Math.max(e.col,i.col);for(let c=n;c<=s;c++){let u=t.doc.line(c),d=ib(u.text,o,t.tabSize,!0);if(d<0)r.push(re.cursor(u.to));else{let p=ib(u.text,l,t.tabSize);r.push(re.range(u.from+d,u.from+p))}}}return r}function QU(t,e){let i=t.coordsAtPos(t.viewport.from);return i?Math.round(Math.abs((i.left-e)/t.defaultCharacterWidth)):-1}function bE(t,e){let i=t.posAtCoords({x:e.clientX,y:e.clientY},!1),n=t.state.doc.lineAt(i),s=i-n.from,r=s>xb?-1:s==n.length?QU(t,e.clientX):Ys(n.text,t.state.tabSize,i-n.from);return{line:n.number,col:r,off:s}}function LU(t,e){let i=bE(t,e),n=t.state.selection;return i?{update(s){if(s.docChanged){let r=s.changes.mapPos(s.startState.doc.line(i.line).from),o=s.state.doc.lineAt(r);i={line:o.number,col:i.col,off:Math.min(i.off,o.length)},n=n.map(s.changes)}},get(s,r,o){let l=bE(t,s);if(!l)return n;let c=RU(t.state,i,l);return c.length?o?re.create(c.concat(n.ranges)):re.create(c):n}}:null}function DU(t){let e=(i=>i.altKey&&i.button==0);return ve.mouseSelectionStyle.of((i,n)=>e(n)?LU(i,n):null)}const BU={Alt:[18,t=>!!t.altKey],Control:[17,t=>!!t.ctrlKey],Shift:[16,t=>!!t.shiftKey],Meta:[91,t=>!!t.metaKey]},$U={style:"cursor: crosshair"};function NU(t={}){let[e,i]=BU[t.key||"Alt"],n=Jt.fromClass(class{constructor(s){this.view=s,this.isDown=!1}set(s){this.isDown!=s&&(this.isDown=s,this.view.update([]))}},{eventObservers:{keydown(s){this.set(s.keyCode==e||i(s))},keyup(s){(s.keyCode==e||!i(s))&&this.set(!1)},mousemove(s){this.set(i(s))}}});return[n,ve.contentAttributes.of(s=>{var r;return!((r=s.plugin(n))===null||r===void 0)&&r.isDown?$U:null})]}const am="-10000px";class CB{constructor(e,i,n,s){this.facet=i,this.createTooltipView=n,this.removeTooltipView=s,this.input=e.state.facet(i),this.tooltips=this.input.filter(o=>o);let r=null;this.tooltipViews=this.tooltips.map(o=>r=n(o,r))}update(e,i){var n;let s=e.state.facet(this.facet),r=s.filter(c=>c);if(s===this.input){for(let c of this.tooltipViews)c.update&&c.update(e);return!1}let o=[],l=i?[]:null;for(let c=0;ci[u]=c),i.length=l.length),this.input=s,this.tooltips=r,this.tooltipViews=o,!0}}function zU(t){let e=t.dom.ownerDocument.documentElement;return{top:0,left:0,bottom:e.clientHeight,right:e.clientWidth}}const P_=Se.define({combine:t=>{var e,i,n;return{position:xe.ios?"absolute":((e=t.find(s=>s.position))===null||e===void 0?void 0:e.position)||"fixed",parent:((i=t.find(s=>s.parent))===null||i===void 0?void 0:i.parent)||null,tooltipSpace:((n=t.find(s=>s.tooltipSpace))===null||n===void 0?void 0:n.tooltipSpace)||zU}}}),SE=new WeakMap,Zx=Jt.fromClass(class{constructor(t){this.view=t,this.above=[],this.inView=!0,this.madeAbsolute=!1,this.lastTransaction=0,this.measureTimeout=-1;let e=t.state.facet(P_);this.position=e.position,this.parent=e.parent,this.classes=t.themeClasses,this.createContainer(),this.measureReq={read:this.readMeasure.bind(this),write:this.writeMeasure.bind(this),key:this},this.resizeObserver=typeof ResizeObserver=="function"?new ResizeObserver(()=>this.measureSoon()):null,this.manager=new CB(t,qx,(i,n)=>this.createTooltip(i,n),i=>{this.resizeObserver&&this.resizeObserver.unobserve(i.dom),i.dom.remove()}),this.above=this.manager.tooltips.map(i=>!!i.above),this.intersectionObserver=typeof IntersectionObserver=="function"?new IntersectionObserver(i=>{Date.now()>this.lastTransaction-50&&i.length>0&&i[i.length-1].intersectionRatio<1&&this.measureSoon()},{threshold:[1]}):null,this.observeIntersection(),t.win.addEventListener("resize",this.measureSoon=this.measureSoon.bind(this)),this.maybeMeasure()}createContainer(){this.parent?(this.container=document.createElement("div"),this.container.style.position="relative",this.container.className=this.view.themeClasses,this.parent.appendChild(this.container)):this.container=this.view.dom}observeIntersection(){if(this.intersectionObserver){this.intersectionObserver.disconnect();for(let t of this.manager.tooltipViews)this.intersectionObserver.observe(t.dom)}}measureSoon(){this.measureTimeout<0&&(this.measureTimeout=setTimeout(()=>{this.measureTimeout=-1,this.maybeMeasure()},50))}update(t){t.transactions.length&&(this.lastTransaction=Date.now());let e=this.manager.update(t,this.above);e&&this.observeIntersection();let i=e||t.geometryChanged,n=t.state.facet(P_);if(n.position!=this.position&&!this.madeAbsolute){this.position=n.position;for(let s of this.manager.tooltipViews)s.dom.style.position=this.position;i=!0}if(n.parent!=this.parent){this.parent&&this.container.remove(),this.parent=n.parent,this.createContainer();for(let s of this.manager.tooltipViews)this.container.appendChild(s.dom);i=!0}else this.parent&&this.view.themeClasses!=this.classes&&(this.classes=this.container.className=this.view.themeClasses);i&&this.maybeMeasure()}createTooltip(t,e){let i=t.create(this.view),n=e?e.dom:null;if(i.dom.classList.add("cm-tooltip"),t.arrow&&!i.dom.querySelector(".cm-tooltip > .cm-tooltip-arrow")){let s=document.createElement("div");s.className="cm-tooltip-arrow",i.dom.appendChild(s)}return i.dom.style.position=this.position,i.dom.style.top=am,i.dom.style.left="0px",this.container.insertBefore(i.dom,n),i.mount&&i.mount(this.view),this.resizeObserver&&this.resizeObserver.observe(i.dom),i}destroy(){var t,e,i;this.view.win.removeEventListener("resize",this.measureSoon);for(let n of this.manager.tooltipViews)n.dom.remove(),(t=n.destroy)===null||t===void 0||t.call(n);this.parent&&this.container.remove(),(e=this.resizeObserver)===null||e===void 0||e.disconnect(),(i=this.intersectionObserver)===null||i===void 0||i.disconnect(),clearTimeout(this.measureTimeout)}readMeasure(){let t=1,e=1,i=!1;if(this.position=="fixed"&&this.manager.tooltipViews.length){let{dom:r}=this.manager.tooltipViews[0];if(xe.safari){let o=r.getBoundingClientRect();i=Math.abs(o.top+1e4)>1||Math.abs(o.left)>1}else i=!!r.offsetParent&&r.offsetParent!=this.container.ownerDocument.body}if(i||this.position=="absolute")if(this.parent){let r=this.parent.getBoundingClientRect();r.width&&r.height&&(t=r.width/this.parent.offsetWidth,e=r.height/this.parent.offsetHeight)}else({scaleX:t,scaleY:e}=this.view.viewState);let n=this.view.scrollDOM.getBoundingClientRect(),s=jx(this.view);return{visible:{left:n.left+s.left,top:n.top+s.top,right:n.right-s.right,bottom:n.bottom-s.bottom},parent:this.parent?this.container.getBoundingClientRect():this.view.dom.getBoundingClientRect(),pos:this.manager.tooltips.map((r,o)=>{let l=this.manager.tooltipViews[o];return l.getCoords?l.getCoords(r.pos):this.view.coordsAtPos(r.pos)}),size:this.manager.tooltipViews.map(({dom:r})=>r.getBoundingClientRect()),space:this.view.state.facet(P_).tooltipSpace(this.view),scaleX:t,scaleY:e,makeAbsolute:i}}writeMeasure(t){var e;if(t.makeAbsolute){this.madeAbsolute=!0,this.position="absolute";for(let l of this.manager.tooltipViews)l.dom.style.position="absolute"}let{visible:i,space:n,scaleX:s,scaleY:r}=t,o=[];for(let l=0;l=Math.min(i.bottom,n.bottom)||p.rightMath.min(i.right,n.right)+.1)){d.style.top=am;continue}let O=c.arrow?u.dom.querySelector(".cm-tooltip-arrow"):null,_=O?7:0,b=g.right-g.left,x=(e=SE.get(u))!==null&&e!==void 0?e:g.bottom-g.top,w=u.offset||IU,k=this.view.textDirection==St.LTR,T=g.width>n.right-n.left?k?n.left:n.right-g.width:k?Math.max(n.left,Math.min(p.left-(O?14:0)+w.x,n.right-b)):Math.min(Math.max(n.left,p.left-b+(O?14:0)-w.x),n.right-b),A=this.above[l];!c.strictSide&&(A?p.top-x-_-w.yn.bottom)&&A==n.bottom-p.bottom>p.top-n.top&&(A=this.above[l]=!A);let Q=(A?p.top-n.top:n.bottom-p.bottom)-_;if(QT&&z.topE&&(E=A?z.top-x-2-_:z.bottom+_+2);if(this.position=="absolute"?(d.style.top=(E-t.parent.top)/r+"px",xE(d,(T-t.parent.left)/s)):(d.style.top=E/r+"px",xE(d,T/s)),O){let z=p.left+(k?w.x:-w.x)-(T+14-7);O.style.left=z/s+"px"}u.overlap!==!0&&o.push({left:T,top:E,right:N,bottom:E+x}),d.classList.toggle("cm-tooltip-above",A),d.classList.toggle("cm-tooltip-below",!A),u.positioned&&u.positioned(t.space)}}maybeMeasure(){if(this.manager.tooltips.length&&(this.view.inView&&this.view.requestMeasure(this.measureReq),this.inView!=this.view.inView&&(this.inView=this.view.inView,!this.inView)))for(let t of this.manager.tooltipViews)t.dom.style.top=am}},{eventObservers:{scroll(){this.maybeMeasure()}}});function xE(t,e){let i=parseInt(t.style.left,10);(isNaN(i)||Math.abs(e-i)>1)&&(t.style.left=e+"px")}const jU=ve.baseTheme({".cm-tooltip":{zIndex:500,boxSizing:"border-box"},"&light .cm-tooltip":{border:"1px solid #bbb",backgroundColor:"#f5f5f5"},"&light .cm-tooltip-section:not(:first-child)":{borderTop:"1px solid #bbb"},"&dark .cm-tooltip":{backgroundColor:"#333338",color:"white"},".cm-tooltip-arrow":{height:"7px",width:"14px",position:"absolute",zIndex:-1,overflow:"hidden","&:before, &:after":{content:"''",position:"absolute",width:0,height:0,borderLeft:"7px solid transparent",borderRight:"7px solid transparent"},".cm-tooltip-above &":{bottom:"-7px","&:before":{borderTop:"7px solid #bbb"},"&:after":{borderTop:"7px solid #f5f5f5",bottom:"1px"}},".cm-tooltip-below &":{top:"-7px","&:before":{borderBottom:"7px solid #bbb"},"&:after":{borderBottom:"7px solid #f5f5f5",top:"1px"}}},"&dark .cm-tooltip .cm-tooltip-arrow":{"&:before":{borderTopColor:"#333338",borderBottomColor:"#333338"},"&:after":{borderTopColor:"transparent",borderBottomColor:"transparent"}}}),IU={x:0,y:0},qx=Se.define({enables:[Zx,jU]}),Eg=Se.define({combine:t=>t.reduce((e,i)=>e.concat(i),[])});class OO{static create(e){return new OO(e)}constructor(e){this.view=e,this.mounted=!1,this.dom=document.createElement("div"),this.dom.classList.add("cm-tooltip-hover"),this.manager=new CB(e,Eg,(i,n)=>this.createHostedView(i,n),i=>i.dom.remove())}createHostedView(e,i){let n=e.create(this.view);return n.dom.classList.add("cm-tooltip-section"),this.dom.insertBefore(n.dom,i?i.dom.nextSibling:this.dom.firstChild),this.mounted&&n.mount&&n.mount(this.view),n}mount(e){for(let i of this.manager.tooltipViews)i.mount&&i.mount(e);this.mounted=!0}positioned(e){for(let i of this.manager.tooltipViews)i.positioned&&i.positioned(e)}update(e){this.manager.update(e)}destroy(){var e;for(let i of this.manager.tooltipViews)(e=i.destroy)===null||e===void 0||e.call(i)}passProp(e){let i;for(let n of this.manager.tooltipViews){let s=n[e];if(s!==void 0){if(i===void 0)i=s;else if(i!==s)return}}return i}get offset(){return this.passProp("offset")}get getCoords(){return this.passProp("getCoords")}get overlap(){return this.passProp("overlap")}get resize(){return this.passProp("resize")}}const VU=qx.compute([Eg],t=>{let e=t.facet(Eg);return e.length===0?null:{pos:Math.min(...e.map(i=>i.pos)),end:Math.max(...e.map(i=>{var n;return(n=i.end)!==null&&n!==void 0?n:i.pos})),create:OO.create,above:e[0].above,arrow:e.some(i=>i.arrow)}});class XU{constructor(e,i,n,s,r){this.view=e,this.source=i,this.field=n,this.setHover=s,this.hoverTime=r,this.hoverTimeout=-1,this.restartTimeout=-1,this.pending=null,this.lastMove={x:0,y:0,target:e.dom,time:0},this.checkHover=this.checkHover.bind(this),e.dom.addEventListener("mouseleave",this.mouseleave=this.mouseleave.bind(this)),e.dom.addEventListener("mousemove",this.mousemove=this.mousemove.bind(this))}update(){this.pending&&(this.pending=null,clearTimeout(this.restartTimeout),this.restartTimeout=setTimeout(()=>this.startHover(),20))}get active(){return this.view.state.field(this.field)}checkHover(){if(this.hoverTimeout=-1,this.active.length)return;let e=Date.now()-this.lastMove.time;el.bottom||i.xl.right+e.defaultCharacterWidth)return;let c=e.bidiSpans(e.state.doc.lineAt(s)).find(d=>d.from<=s&&d.to>=s),u=c&&c.dir==St.RTL?-1:1;r=i.x{this.pending==l&&(this.pending=null,c&&!(Array.isArray(c)&&!c.length)&&e.dispatch({effects:this.setHover.of(Array.isArray(c)?c:[c])}))},c=>$n(e.state,c,"hover tooltip"))}else o&&!(Array.isArray(o)&&!o.length)&&e.dispatch({effects:this.setHover.of(Array.isArray(o)?o:[o])})}get tooltip(){let e=this.view.plugin(Zx),i=e?e.manager.tooltips.findIndex(n=>n.create==OO.create):-1;return i>-1?e.manager.tooltipViews[i]:null}mousemove(e){var i,n;this.lastMove={x:e.clientX,y:e.clientY,target:e.target,time:Date.now()},this.hoverTimeout<0&&(this.hoverTimeout=setTimeout(this.checkHover,this.hoverTime));let{active:s,tooltip:r}=this;if(s.length&&r&&!ZU(r.dom,e)||this.pending){let{pos:o}=s[0]||this.pending,l=(n=(i=s[0])===null||i===void 0?void 0:i.end)!==null&&n!==void 0?n:o;(o==l?this.view.posAtCoords(this.lastMove)!=o:!qU(this.view,o,l,e.clientX,e.clientY))&&(this.view.dispatch({effects:this.setHover.of([])}),this.pending=null)}}mouseleave(e){clearTimeout(this.hoverTimeout),this.hoverTimeout=-1;let{active:i}=this;if(i.length){let{tooltip:n}=this;n&&n.dom.contains(e.relatedTarget)?this.watchTooltipLeave(n.dom):this.view.dispatch({effects:this.setHover.of([])})}}watchTooltipLeave(e){let i=n=>{e.removeEventListener("mouseleave",i),this.active.length&&!this.view.dom.contains(n.relatedTarget)&&this.view.dispatch({effects:this.setHover.of([])})};e.addEventListener("mouseleave",i)}destroy(){clearTimeout(this.hoverTimeout),clearTimeout(this.restartTimeout),this.view.dom.removeEventListener("mouseleave",this.mouseleave),this.view.dom.removeEventListener("mousemove",this.mousemove)}}const lm=4;function ZU(t,e){let{left:i,right:n,top:s,bottom:r}=t.getBoundingClientRect(),o;if(o=t.querySelector(".cm-tooltip-arrow")){let l=o.getBoundingClientRect();s=Math.min(l.top,s),r=Math.max(l.bottom,r)}return e.clientX>=i-lm&&e.clientX<=n+lm&&e.clientY>=s-lm&&e.clientY<=r+lm}function qU(t,e,i,n,s,r){let o=t.scrollDOM.getBoundingClientRect(),l=t.documentTop+t.documentPadding.top+t.contentHeight;if(o.left>n||o.rights||Math.min(o.bottom,l)=e&&c<=i}function WU(t,e={}){let i=Ne.define(),n=Bi.define({create(){return[]},update(s,r){if(s.length&&(e.hideOnChange&&(r.docChanged||r.selection)?s=[]:e.hideOn&&(s=s.filter(o=>!e.hideOn(r,o))),r.docChanged)){let o=[];for(let l of s){let c=r.changes.mapPos(l.pos,-1,Fi.TrackDel);if(c!=null){let u=Object.assign(Object.create(null),l);u.pos=c,u.end!=null&&(u.end=r.changes.mapPos(u.end)),o.push(u)}}s=o}for(let o of r.effects)o.is(i)&&(s=o.value),o.is(UU)&&(s=[]);return s},provide:s=>Eg.from(s)});return{active:n,extension:[n,Jt.define(s=>new XU(s,t,n,i,e.hoverTime||300)),VU]}}function kB(t,e){let i=t.plugin(Zx);if(!i)return null;let n=i.manager.tooltips.indexOf(e);return n<0?null:i.manager.tooltipViews[n]}const UU=Ne.define(),wE=Se.define({combine(t){let e,i;for(let n of t)e=e||n.topContainer,i=i||n.bottomContainer;return{topContainer:e,bottomContainer:i}}});function Wx(t,e){let i=t.plugin(TB),n=i?i.specs.indexOf(e):-1;return n>-1?i.panels[n]:null}const TB=Jt.fromClass(class{constructor(t){this.input=t.state.facet(Nf),this.specs=this.input.filter(i=>i),this.panels=this.specs.map(i=>i(t));let e=t.state.facet(wE);this.top=new cm(t,!0,e.topContainer),this.bottom=new cm(t,!1,e.bottomContainer),this.top.sync(this.panels.filter(i=>i.top)),this.bottom.sync(this.panels.filter(i=>!i.top));for(let i of this.panels)i.dom.classList.add("cm-panel"),i.mount&&i.mount()}update(t){let e=t.state.facet(wE);this.top.container!=e.topContainer&&(this.top.sync([]),this.top=new cm(t.view,!0,e.topContainer)),this.bottom.container!=e.bottomContainer&&(this.bottom.sync([]),this.bottom=new cm(t.view,!1,e.bottomContainer)),this.top.syncClasses(),this.bottom.syncClasses();let i=t.state.facet(Nf);if(i!=this.input){let n=i.filter(c=>c),s=[],r=[],o=[],l=[];for(let c of n){let u=this.specs.indexOf(c),d;u<0?(d=c(t.view),l.push(d)):(d=this.panels[u],d.update&&d.update(t)),s.push(d),(d.top?r:o).push(d)}this.specs=n,this.panels=s,this.top.sync(r),this.bottom.sync(o);for(let c of l)c.dom.classList.add("cm-panel"),c.mount&&c.mount()}else for(let n of this.panels)n.update&&n.update(t)}destroy(){this.top.sync([]),this.bottom.sync([])}},{provide:t=>ve.scrollMargins.of(e=>{let i=e.plugin(t);return i&&{top:i.top.scrollMargin(),bottom:i.bottom.scrollMargin()}})});class cm{constructor(e,i,n){this.view=e,this.top=i,this.container=n,this.dom=void 0,this.classes="",this.panels=[],this.syncClasses()}sync(e){for(let i of this.panels)i.destroy&&e.indexOf(i)<0&&i.destroy();this.panels=e,this.syncDOM()}syncDOM(){if(this.panels.length==0){this.dom&&(this.dom.remove(),this.dom=void 0);return}if(!this.dom){this.dom=document.createElement("div"),this.dom.className=this.top?"cm-panels cm-panels-top":"cm-panels cm-panels-bottom",this.dom.style[this.top?"top":"bottom"]="0";let i=this.container||this.view.dom;i.insertBefore(this.dom,this.top?i.firstChild:null)}let e=this.dom.firstChild;for(let i of this.panels)if(i.dom.parentNode==this.dom){for(;e!=i.dom;)e=CE(e);e=e.nextSibling}else this.dom.insertBefore(i.dom,e);for(;e;)e=CE(e)}scrollMargin(){return!this.dom||this.container?0:Math.max(0,this.top?this.dom.getBoundingClientRect().bottom-Math.max(0,this.view.scrollDOM.getBoundingClientRect().top):Math.min(innerHeight,this.view.scrollDOM.getBoundingClientRect().bottom)-this.dom.getBoundingClientRect().top)}syncClasses(){if(!(!this.container||this.classes==this.view.themeClasses)){for(let e of this.classes.split(" "))e&&this.container.classList.remove(e);for(let e of(this.classes=this.view.themeClasses).split(" "))e&&this.container.classList.add(e)}}}function CE(t){let e=t.nextSibling;return t.remove(),e}const Nf=Se.define({enables:TB});function YU(t,e){let i,n=new Promise(o=>i=o),s=o=>HU(o,e,i);t.state.field(R_,!1)?t.dispatch({effects:AB.of(s)}):t.dispatch({effects:Ne.appendConfig.of(R_.init(()=>[s]))});let r=EB.of(s);return{close:r,result:n.then(o=>((t.win.queueMicrotask||(c=>t.win.setTimeout(c,10)))(()=>{t.state.field(R_).indexOf(s)>-1&&t.dispatch({effects:r})}),o))}}const R_=Bi.define({create(){return[]},update(t,e){for(let i of e.effects)i.is(AB)?t=[i.value].concat(t):i.is(EB)&&(t=t.filter(n=>n!=i.value));return t},provide:t=>Nf.computeN([t],e=>e.field(t))}),AB=Ne.define(),EB=Ne.define();function HU(t,e,i){let n=e.content?e.content(t,()=>o(null)):null;if(!n){if(n=vt("form"),e.input){let l=vt("input",e.input);/^(text|password|number|email|tel|url)$/.test(l.type)&&l.classList.add("cm-textfield"),l.name||(l.name="input"),n.appendChild(vt("label",(e.label||"")+": ",l))}else n.appendChild(document.createTextNode(e.label||""));n.appendChild(document.createTextNode(" ")),n.appendChild(vt("button",{class:"cm-button",type:"submit"},e.submitLabel||"OK"))}let s=n.nodeName=="FORM"?[n]:n.querySelectorAll("form");for(let l=0;l{u.keyCode==27?(u.preventDefault(),o(null)):u.keyCode==13&&(u.preventDefault(),o(c))}),c.addEventListener("submit",u=>{u.preventDefault(),o(c)})}let r=vt("div",n,vt("button",{onclick:()=>o(null),"aria-label":t.state.phrase("close"),class:"cm-dialog-close",type:"button"},["×"]));e.class&&(r.className=e.class),r.classList.add("cm-dialog");function o(l){r.contains(r.ownerDocument.activeElement)&&t.focus(),i(l)}return{dom:r,top:e.top,mount:()=>{if(e.focus){let l;typeof e.focus=="string"?l=n.querySelector(e.focus):l=n.querySelector("input")||n.querySelector("button"),l&&"select"in l?l.select():l&&"focus"in l&&l.focus()}}}}class So extends wa{compare(e){return this==e||this.constructor==e.constructor&&this.eq(e)}eq(e){return!1}destroy(e){}}So.prototype.elementClass="";So.prototype.toDOM=void 0;So.prototype.mapMode=Fi.TrackBefore;So.prototype.startSide=So.prototype.endSide=-1;So.prototype.point=!0;const Wm=Se.define(),FU=Se.define(),GU={class:"",renderEmptyElements:!1,elementStyle:"",markers:()=>Ge.empty,lineMarker:()=>null,widgetMarker:()=>null,lineMarkerChange:null,initialSpacer:null,updateSpacer:null,domEventHandlers:{},side:"before"},vf=Se.define();function KU(t){return[MB(),vf.of({...GU,...t})]}const kE=Se.define({combine:t=>t.some(e=>e)});function MB(t){return[JU]}const JU=Jt.fromClass(class{constructor(t){this.view=t,this.domAfter=null,this.prevViewport=t.viewport,this.dom=document.createElement("div"),this.dom.className="cm-gutters cm-gutters-before",this.dom.setAttribute("aria-hidden","true"),this.dom.style.minHeight=this.view.contentHeight/this.view.scaleY+"px",this.gutters=t.state.facet(vf).map(e=>new AE(t,e)),this.fixed=!t.state.facet(kE);for(let e of this.gutters)e.config.side=="after"?this.getDOMAfter().appendChild(e.dom):this.dom.appendChild(e.dom);this.fixed&&(this.dom.style.position="sticky"),this.syncGutters(!1),t.scrollDOM.insertBefore(this.dom,t.contentDOM)}getDOMAfter(){return this.domAfter||(this.domAfter=document.createElement("div"),this.domAfter.className="cm-gutters cm-gutters-after",this.domAfter.setAttribute("aria-hidden","true"),this.domAfter.style.minHeight=this.view.contentHeight/this.view.scaleY+"px",this.domAfter.style.position=this.fixed?"sticky":"",this.view.scrollDOM.appendChild(this.domAfter)),this.domAfter}update(t){if(this.updateGutters(t)){let e=this.prevViewport,i=t.view.viewport,n=Math.min(e.to,i.to)-Math.max(e.from,i.from);this.syncGutters(n<(i.to-i.from)*.8)}if(t.geometryChanged){let e=this.view.contentHeight/this.view.scaleY+"px";this.dom.style.minHeight=e,this.domAfter&&(this.domAfter.style.minHeight=e)}this.view.state.facet(kE)!=!this.fixed&&(this.fixed=!this.fixed,this.dom.style.position=this.fixed?"sticky":"",this.domAfter&&(this.domAfter.style.position=this.fixed?"sticky":"")),this.prevViewport=t.view.viewport}syncGutters(t){let e=this.dom.nextSibling;t&&(this.dom.remove(),this.domAfter&&this.domAfter.remove());let i=Ge.iter(this.view.state.facet(Wm),this.view.viewport.from),n=[],s=this.gutters.map(r=>new eY(r,this.view.viewport,-this.view.documentPadding.top));for(let r of this.view.viewportLineBlocks)if(n.length&&(n=[]),Array.isArray(r.type)){let o=!0;for(let l of r.type)if(l.type==Ki.Text&&o){wb(i,n,l.from);for(let c of s)c.line(this.view,l,n);o=!1}else if(l.widget)for(let c of s)c.widget(this.view,l)}else if(r.type==Ki.Text){wb(i,n,r.from);for(let o of s)o.line(this.view,r,n)}else if(r.widget)for(let o of s)o.widget(this.view,r);for(let r of s)r.finish();t&&(this.view.scrollDOM.insertBefore(this.dom,e),this.domAfter&&this.view.scrollDOM.appendChild(this.domAfter))}updateGutters(t){let e=t.startState.facet(vf),i=t.state.facet(vf),n=t.docChanged||t.heightChanged||t.viewportChanged||!Ge.eq(t.startState.facet(Wm),t.state.facet(Wm),t.view.viewport.from,t.view.viewport.to);if(e==i)for(let s of this.gutters)s.update(t)&&(n=!0);else{n=!0;let s=[];for(let r of i){let o=e.indexOf(r);o<0?s.push(new AE(this.view,r)):(this.gutters[o].update(t),s.push(this.gutters[o]))}for(let r of this.gutters)r.dom.remove(),s.indexOf(r)<0&&r.destroy();for(let r of s)r.config.side=="after"?this.getDOMAfter().appendChild(r.dom):this.dom.appendChild(r.dom);this.gutters=s}return n}destroy(){for(let t of this.gutters)t.destroy();this.dom.remove(),this.domAfter&&this.domAfter.remove()}},{provide:t=>ve.scrollMargins.of(e=>{let i=e.plugin(t);if(!i||i.gutters.length==0||!i.fixed)return null;let n=i.dom.offsetWidth*e.scaleX,s=i.domAfter?i.domAfter.offsetWidth*e.scaleX:0;return e.textDirection==St.LTR?{left:n,right:s}:{right:n,left:s}})});function TE(t){return Array.isArray(t)?t:[t]}function wb(t,e,i){for(;t.value&&t.from<=i;)t.from==i&&e.push(t.value),t.next()}class eY{constructor(e,i,n){this.gutter=e,this.height=n,this.i=0,this.cursor=Ge.iter(e.markers,i.from)}addElement(e,i,n){let{gutter:s}=this,r=(i.top-this.height)/e.scaleY,o=i.height/e.scaleY;if(this.i==s.elements.length){let l=new PB(e,o,r,n);s.elements.push(l),s.dom.appendChild(l.dom)}else s.elements[this.i].update(e,o,r,n);this.height=i.bottom,this.i++}line(e,i,n){let s=[];wb(this.cursor,s,i.from),n.length&&(s=s.concat(n));let r=this.gutter.config.lineMarker(e,i,s);r&&s.unshift(r);let o=this.gutter;s.length==0&&!o.config.renderEmptyElements||this.addElement(e,i,s)}widget(e,i){let n=this.gutter.config.widgetMarker(e,i.widget,i),s=n?[n]:null;for(let r of e.state.facet(FU)){let o=r(e,i.widget,i);o&&(s||(s=[])).push(o)}s&&this.addElement(e,i,s)}finish(){let e=this.gutter;for(;e.elements.length>this.i;){let i=e.elements.pop();e.dom.removeChild(i.dom),i.destroy()}}}class AE{constructor(e,i){this.view=e,this.config=i,this.elements=[],this.spacer=null,this.dom=document.createElement("div"),this.dom.className="cm-gutter"+(this.config.class?" "+this.config.class:"");for(let n in i.domEventHandlers)this.dom.addEventListener(n,s=>{let r=s.target,o;if(r!=this.dom&&this.dom.contains(r)){for(;r.parentNode!=this.dom;)r=r.parentNode;let c=r.getBoundingClientRect();o=(c.top+c.bottom)/2}else o=s.clientY;let l=e.lineBlockAtHeight(o-e.documentTop);i.domEventHandlers[n](e,l,s)&&s.preventDefault()});this.markers=TE(i.markers(e)),i.initialSpacer&&(this.spacer=new PB(e,0,0,[i.initialSpacer(e)]),this.dom.appendChild(this.spacer.dom),this.spacer.dom.style.cssText+="visibility: hidden; pointer-events: none")}update(e){let i=this.markers;if(this.markers=TE(this.config.markers(e.view)),this.spacer&&this.config.updateSpacer){let s=this.config.updateSpacer(this.spacer.markers[0],e);s!=this.spacer.markers[0]&&this.spacer.update(e.view,0,0,[s])}let n=e.view.viewport;return!Ge.eq(this.markers,i,n.from,n.to)||(this.config.lineMarkerChange?this.config.lineMarkerChange(e):!1)}destroy(){for(let e of this.elements)e.destroy()}}class PB{constructor(e,i,n,s){this.height=-1,this.above=0,this.markers=[],this.dom=document.createElement("div"),this.dom.className="cm-gutterElement",this.update(e,i,n,s)}update(e,i,n,s){this.height!=i&&(this.height=i,this.dom.style.height=i+"px"),this.above!=n&&(this.dom.style.marginTop=(this.above=n)?n+"px":""),tY(this.markers,s)||this.setMarkers(e,s)}setMarkers(e,i){let n="cm-gutterElement",s=this.dom.firstChild;for(let r=0,o=0;;){let l=o,c=rr(l,c,u)||o(l,c,u):o}return n}})}});class Q_ extends So{constructor(e){super(),this.number=e}eq(e){return this.number==e.number}toDOM(){return document.createTextNode(this.number)}}function L_(t,e){return t.state.facet(jc).formatNumber(e,t.state)}const sY=vf.compute([jc],t=>({class:"cm-lineNumbers",renderEmptyElements:!1,markers(e){return e.state.facet(iY)},lineMarker(e,i,n){return n.some(s=>s.toDOM)?null:new Q_(L_(e,e.state.doc.lineAt(i.from).number))},widgetMarker:(e,i,n)=>{for(let s of e.state.facet(nY)){let r=s(e,i,n);if(r)return r}return null},lineMarkerChange:e=>e.startState.facet(jc)!=e.state.facet(jc),initialSpacer(e){return new Q_(L_(e,EE(e.state.doc.lines)))},updateSpacer(e,i){let n=L_(i.view,EE(i.view.state.doc.lines));return n==e.number?e:new Q_(n)},domEventHandlers:t.facet(jc).domEventHandlers,side:"before"}));function rY(t={}){return[jc.of(t),MB(),sY]}function EE(t){let e=9;for(;e{let e=[],i=-1;for(let n of t.selection.ranges){let s=t.doc.lineAt(n.head).from;s>i&&(i=s,e.push(oY.range(s)))}return Ge.of(e)});function lY(){return aY}const RB=1024;let cY=0;class Ts{constructor(e,i){this.from=e,this.to=i}}class ze{constructor(e={}){this.id=cY++,this.perNode=!!e.perNode,this.deserialize=e.deserialize||(()=>{throw new Error("This node type doesn't define a deserialize function")}),this.combine=e.combine||null}add(e){if(this.perNode)throw new RangeError("Can't add per-node props to node types");return typeof e!="function"&&(e=_i.match(e)),i=>{let n=e(i);return n===void 0?null:[this,n]}}}ze.closedBy=new ze({deserialize:t=>t.split(" ")});ze.openedBy=new ze({deserialize:t=>t.split(" ")});ze.group=new ze({deserialize:t=>t.split(" ")});ze.isolate=new ze({deserialize:t=>{if(t&&t!="rtl"&&t!="ltr"&&t!="auto")throw new RangeError("Invalid value for isolate: "+t);return t||"auto"}});ze.contextHash=new ze({perNode:!0});ze.lookAhead=new ze({perNode:!0});ze.mounted=new ze({perNode:!0});class Fc{constructor(e,i,n,s=!1){this.tree=e,this.overlay=i,this.parser=n,this.bracketed=s}static get(e){return e&&e.props&&e.props[ze.mounted.id]}}const hY=Object.create(null);class _i{constructor(e,i,n,s=0){this.name=e,this.props=i,this.id=n,this.flags=s}static define(e){let i=e.props&&e.props.length?Object.create(null):hY,n=(e.top?1:0)|(e.skipped?2:0)|(e.error?4:0)|(e.name==null?8:0),s=new _i(e.name||"",i,e.id,n);if(e.props){for(let r of e.props)if(Array.isArray(r)||(r=r(s)),r){if(r[0].perNode)throw new RangeError("Can't store a per-node prop on a node type");i[r[0].id]=r[1]}}return s}prop(e){return this.props[e.id]}get isTop(){return(this.flags&1)>0}get isSkipped(){return(this.flags&2)>0}get isError(){return(this.flags&4)>0}get isAnonymous(){return(this.flags&8)>0}is(e){if(typeof e=="string"){if(this.name==e)return!0;let i=this.prop(ze.group);return i?i.indexOf(e)>-1:!1}return this.id==e}static match(e){let i=Object.create(null);for(let n in e)for(let s of n.split(" "))i[s]=e[n];return n=>{for(let s=n.prop(ze.group),r=-1;r<(s?s.length:0);r++){let o=i[r<0?n.name:s[r]];if(o)return o}}}}_i.none=new _i("",Object.create(null),0,8);class pd{constructor(e){this.types=e;for(let i=0;i0;for(let c=this.cursor(o|ut.IncludeAnonymous);;){let u=!1;if(c.from<=r&&c.to>=s&&(!l&&c.type.isAnonymous||i(c)!==!1)){if(c.firstChild())continue;u=!0}for(;u&&n&&(l||!c.type.isAnonymous)&&n(c),!c.nextSibling();){if(!c.parent())return;u=!0}}}prop(e){return e.perNode?this.props?this.props[e.id]:void 0:this.type.prop(e)}get propValues(){let e=[];if(this.props)for(let i in this.props)e.push([+i,this.props[i]]);return e}balance(e={}){return this.children.length<=8?this:Hx(_i.none,this.children,this.positions,0,this.children.length,0,this.length,(i,n,s)=>new ct(this.type,i,n,s,this.propValues),e.makeTree||((i,n,s)=>new ct(_i.none,i,n,s)))}static build(e){return pY(e)}}ct.empty=new ct(_i.none,[],[],0);class Ux{constructor(e,i){this.buffer=e,this.index=i}get id(){return this.buffer[this.index-4]}get start(){return this.buffer[this.index-3]}get end(){return this.buffer[this.index-2]}get size(){return this.buffer[this.index-1]}get pos(){return this.index}next(){this.index-=4}fork(){return new Ux(this.buffer,this.index)}}class Aa{constructor(e,i,n){this.buffer=e,this.length=i,this.set=n}get type(){return _i.none}toString(){let e=[];for(let i=0;i0));c=o[c+3]);return l}slice(e,i,n){let s=this.buffer,r=new Uint16Array(i-e),o=0;for(let l=e,c=0;l=e&&ie;case 1:return i<=e&&n>e;case 2:return n>e;case 4:return!0}}function zf(t,e,i,n){for(var s;t.from==t.to||(i<1?t.from>=e:t.from>e)||(i>-1?t.to<=e:t.to0?l.length:-1;e!=u;e+=i){let d=l[e],p=c[e]+o.from,g;if(!(!(r&ut.EnterBracketed&&d instanceof ct&&(g=Fc.get(d))&&!g.overlay&&g.bracketed&&n>=p&&n<=p+d.length)&&!QB(s,n,p,p+d.length))){if(d instanceof Aa){if(r&ut.ExcludeBuffers)continue;let O=d.findChild(0,d.buffer.length,i,n-p,s);if(O>-1)return new yr(new uY(o,d,e,p),null,O)}else if(r&ut.IncludeAnonymous||!d.type.isAnonymous||Yx(d)){let O;if(!(r&ut.IgnoreMounts)&&(O=Fc.get(d))&&!O.overlay)return new on(O.tree,p,e,o);let _=new on(d,p,e,o);return r&ut.IncludeAnonymous||!_.type.isAnonymous?_:_.nextChild(i<0?d.children.length-1:0,i,n,s,r)}}}if(r&ut.IncludeAnonymous||!o.type.isAnonymous||(o.index>=0?e=o.index+i:e=i<0?-1:o._parent._tree.children.length,o=o._parent,!o))return null}}get firstChild(){return this.nextChild(0,1,0,4)}get lastChild(){return this.nextChild(this._tree.children.length-1,-1,0,4)}childAfter(e){return this.nextChild(0,1,e,2)}childBefore(e){return this.nextChild(this._tree.children.length-1,-1,e,-2)}prop(e){return this._tree.prop(e)}enter(e,i,n=0){let s;if(!(n&ut.IgnoreOverlays)&&(s=Fc.get(this._tree))&&s.overlay){let r=e-this.from,o=n&ut.EnterBracketed&&s.bracketed;for(let{from:l,to:c}of s.overlay)if((i>0||o?l<=r:l=r:c>r))return new on(s.tree,s.overlay[0].from+this.from,-1,this)}return this.nextChild(0,1,e,i,n)}nextSignificantParent(){let e=this;for(;e.type.isAnonymous&&e._parent;)e=e._parent;return e}get parent(){return this._parent?this._parent.nextSignificantParent():null}get nextSibling(){return this._parent&&this.index>=0?this._parent.nextChild(this.index+1,1,0,4):null}get prevSibling(){return this._parent&&this.index>=0?this._parent.nextChild(this.index-1,-1,0,4):null}get tree(){return this._tree}toTree(){return this._tree}toString(){return this._tree.toString()}}function PE(t,e,i,n){let s=t.cursor(),r=[];if(!s.firstChild())return r;if(i!=null){for(let o=!1;!o;)if(o=s.type.is(i),!s.nextSibling())return r}for(;;){if(n!=null&&s.type.is(n))return r;if(s.type.is(e)&&r.push(s.node),!s.nextSibling())return n==null?r:[]}}function Cb(t,e,i=e.length-1){for(let n=t;i>=0;n=n.parent){if(!n)return!1;if(!n.type.isAnonymous){if(e[i]&&e[i]!=n.name)return!1;i--}}return!0}class uY{constructor(e,i,n,s){this.parent=e,this.buffer=i,this.index=n,this.start=s}}class yr extends LB{get name(){return this.type.name}get from(){return this.context.start+this.context.buffer.buffer[this.index+1]}get to(){return this.context.start+this.context.buffer.buffer[this.index+2]}constructor(e,i,n){super(),this.context=e,this._parent=i,this.index=n,this.type=e.buffer.set.types[e.buffer.buffer[n]]}child(e,i,n){let{buffer:s}=this.context,r=s.findChild(this.index+4,s.buffer[this.index+3],e,i-this.context.start,n);return r<0?null:new yr(this.context,this,r)}get firstChild(){return this.child(1,0,4)}get lastChild(){return this.child(-1,0,4)}childAfter(e){return this.child(1,e,2)}childBefore(e){return this.child(-1,e,-2)}prop(e){return this.type.prop(e)}enter(e,i,n=0){if(n&ut.ExcludeBuffers)return null;let{buffer:s}=this.context,r=s.findChild(this.index+4,s.buffer[this.index+3],i>0?1:-1,e-this.context.start,i);return r<0?null:new yr(this.context,this,r)}get parent(){return this._parent||this.context.parent.nextSignificantParent()}externalSibling(e){return this._parent?null:this.context.parent.nextChild(this.context.index+e,e,0,4)}get nextSibling(){let{buffer:e}=this.context,i=e.buffer[this.index+3];return i<(this._parent?e.buffer[this._parent.index+3]:e.buffer.length)?new yr(this.context,this._parent,i):this.externalSibling(1)}get prevSibling(){let{buffer:e}=this.context,i=this._parent?this._parent.index+4:0;return this.index==i?this.externalSibling(-1):new yr(this.context,this._parent,e.findChild(i,this.index,-1,0,4))}get tree(){return null}toTree(){let e=[],i=[],{buffer:n}=this.context,s=this.index+4,r=n.buffer[this.index+3];if(r>s){let o=n.buffer[this.index+1];e.push(n.slice(s,r,o)),i.push(0)}return new ct(this.type,e,i,this.to-this.from)}toString(){return this.context.buffer.childString(this.index)}}function DB(t){if(!t.length)return null;let e=0,i=t[0];for(let r=1;ri.from||o.to=e){let l=new on(o.tree,o.overlay[0].from+r.from,-1,r);(s||(s=[n])).push(zf(l,e,i,!1))}}return s?DB(s):n}class Mg{get name(){return this.type.name}constructor(e,i=0){if(this.buffer=null,this.stack=[],this.index=0,this.bufferNode=null,this.mode=i&~ut.EnterBracketed,e instanceof on)this.yieldNode(e);else{this._tree=e.context.parent,this.buffer=e.context;for(let n=e._parent;n;n=n._parent)this.stack.unshift(n.index);this.bufferNode=e,this.yieldBuf(e.index)}}yieldNode(e){return e?(this._tree=e,this.type=e.type,this.from=e.from,this.to=e.to,!0):!1}yieldBuf(e,i){this.index=e;let{start:n,buffer:s}=this.buffer;return this.type=i||s.set.types[s.buffer[e]],this.from=n+s.buffer[e+1],this.to=n+s.buffer[e+2],!0}yield(e){return e?e instanceof on?(this.buffer=null,this.yieldNode(e)):(this.buffer=e.context,this.yieldBuf(e.index,e.type)):!1}toString(){return this.buffer?this.buffer.buffer.childString(this.index):this._tree.toString()}enterChild(e,i,n){if(!this.buffer)return this.yield(this._tree.nextChild(e<0?this._tree._tree.children.length-1:0,e,i,n,this.mode));let{buffer:s}=this.buffer,r=s.findChild(this.index+4,s.buffer[this.index+3],e,i-this.buffer.start,n);return r<0?!1:(this.stack.push(this.index),this.yieldBuf(r))}firstChild(){return this.enterChild(1,0,4)}lastChild(){return this.enterChild(-1,0,4)}childAfter(e){return this.enterChild(1,e,2)}childBefore(e){return this.enterChild(-1,e,-2)}enter(e,i,n=this.mode){return this.buffer?n&ut.ExcludeBuffers?!1:this.enterChild(1,e,i):this.yield(this._tree.enter(e,i,n))}parent(){if(!this.buffer)return this.yieldNode(this.mode&ut.IncludeAnonymous?this._tree._parent:this._tree.parent);if(this.stack.length)return this.yieldBuf(this.stack.pop());let e=this.mode&ut.IncludeAnonymous?this.buffer.parent:this.buffer.parent.nextSignificantParent();return this.buffer=null,this.yieldNode(e)}sibling(e){if(!this.buffer)return this._tree._parent?this.yield(this._tree.index<0?null:this._tree._parent.nextChild(this._tree.index+e,e,0,4,this.mode)):!1;let{buffer:i}=this.buffer,n=this.stack.length-1;if(e<0){let s=n<0?0:this.stack[n]+4;if(this.index!=s)return this.yieldBuf(i.findChild(s,this.index,-1,0,4))}else{let s=i.buffer[this.index+3];if(s<(n<0?i.buffer.length:i.buffer[this.stack[n]+3]))return this.yieldBuf(s)}return n<0?this.yield(this.buffer.parent.nextChild(this.buffer.index+e,e,0,4,this.mode)):!1}nextSibling(){return this.sibling(1)}prevSibling(){return this.sibling(-1)}atLastNode(e){let i,n,{buffer:s}=this;if(s){if(e>0){if(this.index-1)for(let r=i+e,o=e<0?-1:n._tree.children.length;r!=o;r+=e){let l=n._tree.children[r];if(this.mode&ut.IncludeAnonymous||l instanceof Aa||!l.type.isAnonymous||Yx(l))return!1}return!0}move(e,i){if(i&&this.enterChild(e,0,4))return!0;for(;;){if(this.sibling(e))return!0;if(this.atLastNode(e)||!this.parent())return!1}}next(e=!0){return this.move(1,e)}prev(e=!0){return this.move(-1,e)}moveTo(e,i=0){for(;(this.from==this.to||(i<1?this.from>=e:this.from>e)||(i>-1?this.to<=e:this.to=0;){for(let o=e;o;o=o._parent)if(o.index==s){if(s==this.index)return o;i=o,n=r+1;break e}s=this.stack[--r]}for(let s=n;s=0;r--){if(r<0)return Cb(this._tree,e,s);let o=n[i.buffer[this.stack[r]]];if(!o.isAnonymous){if(e[s]&&e[s]!=o.name)return!1;s--}}return!0}}function Yx(t){return t.children.some(e=>e instanceof Aa||!e.type.isAnonymous||Yx(e))}function pY(t){var e;let{buffer:i,nodeSet:n,maxBufferLength:s=RB,reused:r=[],minRepeatType:o=n.types.length}=t,l=Array.isArray(i)?new Ux(i,i.length):i,c=n.types,u=0,d=0;function p(Q,E,N,z,q,J){let{id:U,start:R,end:B,size:j}=l,$=d,D=u;if(j<0)if(l.next(),j==-1){let I=r[U];N.push(I),z.push(R-Q);return}else if(j==-3){u=U;return}else if(j==-4){d=U;return}else throw new RangeError(`Unrecognized record size: ${j}`);let Z=c[U],H,F,M=R-Q;if(B-R<=s&&(F=x(l.pos-E,q))){let I=new Uint16Array(F.size-F.skip),K=l.pos-F.size,L=I.length;for(;l.pos>K;)L=w(F.start,I,L);H=new Aa(I,B-F.start,n),M=F.start-Q}else{let I=l.pos-j;l.next();let K=[],L=[],ue=U>=o?U:-1,he=0,fe=B;for(;l.pos>I;)ue>=0&&l.id==ue&&l.size>=0?(l.end<=fe-s&&(_(K,L,R,he,l.end,fe,ue,$,D),he=K.length,fe=l.end),l.next()):J>2500?g(R,I,K,L):p(R,I,K,L,ue,J+1);if(ue>=0&&he>0&&he-1&&he>0){let Oe=O(Z,D);H=Hx(Z,K,L,0,K.length,0,B-R,Oe,Oe)}else H=b(Z,K,L,B-R,$-B,D)}N.push(H),z.push(M)}function g(Q,E,N,z){let q=[],J=0,U=-1;for(;l.pos>E;){let{id:R,start:B,end:j,size:$}=l;if($>4)l.next();else{if(U>-1&&B=0;j-=3)R[$++]=q[j],R[$++]=q[j+1]-B,R[$++]=q[j+2]-B,R[$++]=$;N.push(new Aa(R,q[2]-B,n)),z.push(B-Q)}}function O(Q,E){return(N,z,q)=>{let J=0,U=N.length-1,R,B;if(U>=0&&(R=N[U])instanceof ct){if(!U&&R.type==Q&&R.length==q)return R;(B=R.prop(ze.lookAhead))&&(J=z[U]+R.length+B)}return b(Q,N,z,q,J,E)}}function _(Q,E,N,z,q,J,U,R,B){let j=[],$=[];for(;Q.length>z;)j.push(Q.pop()),$.push(E.pop()+N-q);Q.push(b(n.types[U],j,$,J-q,R-J,B)),E.push(q-N)}function b(Q,E,N,z,q,J,U){if(J){let R=[ze.contextHash,J];U=U?[R].concat(U):[R]}if(q>25){let R=[ze.lookAhead,q];U=U?[R].concat(U):[R]}return new ct(Q,E,N,z,U)}function x(Q,E){let N=l.fork(),z=0,q=0,J=0,U=N.end-s,R={size:0,start:0,skip:0};e:for(let B=N.pos-Q;N.pos>B;){let j=N.size;if(N.id==E&&j>=0){R.size=z,R.start=q,R.skip=J,J+=4,z+=4,N.next();continue}let $=N.pos-j;if(j<0||$=o?4:0,Z=N.start;for(N.next();N.pos>$;){if(N.size<0)if(N.size==-3||N.size==-4)D+=4;else break e;else N.id>=o&&(D+=4);N.next()}q=Z,z+=j,J+=D}return(E<0||z==Q)&&(R.size=z,R.start=q,R.skip=J),R.size>4?R:void 0}function w(Q,E,N){let{id:z,start:q,end:J,size:U}=l;if(l.next(),U>=0&&z4){let B=l.pos-(U-4);for(;l.pos>B;)N=w(Q,E,N)}E[--N]=R,E[--N]=J-Q,E[--N]=q-Q,E[--N]=z}else U==-3?u=z:U==-4&&(d=z);return N}let k=[],T=[];for(;l.pos>0;)p(t.start||0,t.bufferStart||0,k,T,-1,0);let A=(e=t.length)!==null&&e!==void 0?e:k.length?T[0]+k[0].length:0;return new ct(c[t.topID],k.reverse(),T.reverse(),A)}const RE=new WeakMap;function Um(t,e){if(!t.isAnonymous||e instanceof Aa||e.type!=t)return 1;let i=RE.get(e);if(i==null){i=1;for(let n of e.children){if(n.type!=t||!(n instanceof ct)){i=1;break}i+=Um(t,n)}RE.set(e,i)}return i}function Hx(t,e,i,n,s,r,o,l,c){let u=0;for(let _=n;_=d)break;E+=N}if(T==A+1){if(E>d){let N=_[A];O(N.children,N.positions,0,N.children.length,b[A]+k);continue}p.push(_[A])}else{let N=b[T-1]+_[T-1].length-Q;p.push(Hx(t,_,b,A,T,Q,N,null,c))}g.push(Q+k-r)}}return O(e,i,n,s,0),(l||c)(p,g,o)}class BB{constructor(){this.map=new WeakMap}setBuffer(e,i,n){let s=this.map.get(e);s||this.map.set(e,s=new Map),s.set(i,n)}getBuffer(e,i){let n=this.map.get(e);return n&&n.get(i)}set(e,i){e instanceof yr?this.setBuffer(e.context.buffer,e.index,i):e instanceof on&&this.map.set(e.tree,i)}get(e){return e instanceof yr?this.getBuffer(e.context.buffer,e.index):e instanceof on?this.map.get(e.tree):void 0}cursorSet(e,i){e.buffer?this.setBuffer(e.buffer.buffer,e.index,i):this.map.set(e.tree,i)}cursorGet(e){return e.buffer?this.getBuffer(e.buffer.buffer,e.index):this.map.get(e.tree)}}class vo{constructor(e,i,n,s,r=!1,o=!1){this.from=e,this.to=i,this.tree=n,this.offset=s,this.open=(r?1:0)|(o?2:0)}get openStart(){return(this.open&1)>0}get openEnd(){return(this.open&2)>0}static addTree(e,i=[],n=!1){let s=[new vo(0,e.length,e,0,!1,n)];for(let r of i)r.to>e.length&&s.push(r);return s}static applyChanges(e,i,n=128){if(!i.length)return e;let s=[],r=1,o=e.length?e[0]:null;for(let l=0,c=0,u=0;;l++){let d=l=n)for(;o&&o.from=g.from||p<=g.to||u){let O=Math.max(g.from,c)-u,_=Math.min(g.to,p)-u;g=O>=_?null:new vo(O,_,g.tree,g.offset+u,l>0,!!d)}if(g&&s.push(g),o.to>p)break;o=rnew Ts(s.from,s.to)):[new Ts(0,0)]:[new Ts(0,e.length)],this.createParse(e,i||[],n)}parse(e,i,n){let s=this.startParse(e,i,n);for(;;){let r=s.advance();if(r)return r}}}class mY{constructor(e){this.string=e}get length(){return this.string.length}chunk(e){return this.string.slice(e)}get lineChunks(){return!1}read(e,i){return this.string.slice(e,i)}}function $B(t){return(e,i,n,s)=>new OY(e,t,i,n,s)}class QE{constructor(e,i,n,s,r,o){this.parser=e,this.parse=i,this.overlay=n,this.bracketed=s,this.target=r,this.from=o}}function LE(t){if(!t.length||t.some(e=>e.from>=e.to))throw new RangeError("Invalid inner parse ranges given: "+JSON.stringify(t))}class gY{constructor(e,i,n,s,r,o,l,c){this.parser=e,this.predicate=i,this.mounts=n,this.index=s,this.start=r,this.bracketed=o,this.target=l,this.prev=c,this.depth=0,this.ranges=[]}}const kb=new ze({perNode:!0});class OY{constructor(e,i,n,s,r){this.nest=i,this.input=n,this.fragments=s,this.ranges=r,this.inner=[],this.innerDone=0,this.baseTree=null,this.stoppedAt=null,this.baseParse=e}advance(){if(this.baseParse){let n=this.baseParse.advance();if(!n)return null;if(this.baseParse=null,this.baseTree=n,this.startInner(),this.stoppedAt!=null)for(let s of this.inner)s.parse.stopAt(this.stoppedAt)}if(this.innerDone==this.inner.length){let n=this.baseTree;return this.stoppedAt!=null&&(n=new ct(n.type,n.children,n.positions,n.length,n.propValues.concat([[kb,this.stoppedAt]]))),n}let e=this.inner[this.innerDone],i=e.parse.advance();if(i){this.innerDone++;let n=Object.assign(Object.create(null),e.target.props);n[ze.mounted.id]=new Fc(i,e.overlay,e.parser,e.bracketed),e.target.props=n}return null}get parsedPos(){if(this.baseParse)return 0;let e=this.input.length;for(let i=this.innerDone;i=this.stoppedAt)l=!1;else if(e.hasNode(s)){if(i){let u=i.mounts.find(d=>d.frag.from<=s.from&&d.frag.to>=s.to&&d.mount.overlay);if(u)for(let d of u.mount.overlay){let p=d.from+u.pos,g=d.to+u.pos;p>=s.from&&g<=s.to&&!i.ranges.some(O=>O.fromp)&&i.ranges.push({from:p,to:g})}}l=!1}else if(n&&(o=vY(n.ranges,s.from,s.to)))l=o!=2;else if(!s.type.isAnonymous&&(r=this.nest(s,this.input))&&(s.fromnew Ts(p.from-s.from,p.to-s.from)):null,!!r.bracketed,s.tree,d.length?d[0].from:s.from)),r.overlay?d.length&&(n={ranges:d,depth:0,prev:n}):l=!1}}else if(i&&(c=i.predicate(s))&&(c===!0&&(c=new Ts(s.from,s.to)),c.from=0&&i.ranges[u].to==c.from?i.ranges[u]={from:i.ranges[u].from,to:c.to}:i.ranges.push(c)}if(l&&s.firstChild())i&&i.depth++,n&&n.depth++;else for(;!s.nextSibling();){if(!s.parent())break e;if(i&&!--i.depth){let u=$E(this.ranges,i.ranges);u.length&&(LE(u),this.inner.splice(i.index,0,new QE(i.parser,i.parser.startParse(this.input,NE(i.mounts,u),u),i.ranges.map(d=>new Ts(d.from-i.start,d.to-i.start)),i.bracketed,i.target,u[0].from))),i=i.prev}n&&!--n.depth&&(n=n.prev)}}}}function vY(t,e,i){for(let n of t){if(n.from>=i)break;if(n.to>e)return n.from<=e&&n.to>=i?2:1}return 0}function DE(t,e,i,n,s,r){if(e=e&&i.enter(n,1,ut.IgnoreOverlays|ut.ExcludeBuffers)||i.next(!1)||(this.done=!0)}hasNode(e){if(this.moveTo(e.from),!this.done&&this.cursor.from+this.offset==e.from&&this.cursor.tree)for(let i=this.cursor.tree;;){if(i==e.tree)return!0;if(i.children.length&&i.positions[0]==0&&i.children[0]instanceof ct)i=i.children[0];else break}return!1}}let yY=class{constructor(e){var i;if(this.fragments=e,this.curTo=0,this.fragI=0,e.length){let n=this.curFrag=e[0];this.curTo=(i=n.tree.prop(kb))!==null&&i!==void 0?i:n.to,this.inner=new BE(n.tree,-n.offset)}else this.curFrag=this.inner=null}hasNode(e){for(;this.curFrag&&e.from>=this.curTo;)this.nextFrag();return this.curFrag&&this.curFrag.from<=e.from&&this.curTo>=e.to&&this.inner.hasNode(e)}nextFrag(){var e;if(this.fragI++,this.fragI==this.fragments.length)this.curFrag=this.inner=null;else{let i=this.curFrag=this.fragments[this.fragI];this.curTo=(e=i.tree.prop(kb))!==null&&e!==void 0?e:i.to,this.inner=new BE(i.tree,-i.offset)}}findMounts(e,i){var n;let s=[];if(this.inner){this.inner.cursor.moveTo(e,1);for(let r=this.inner.cursor.node;r;r=r.parent){let o=(n=r.tree)===null||n===void 0?void 0:n.prop(ze.mounted);if(o&&o.parser==i)for(let l=this.fragI;l=r.to)break;c.tree==this.curFrag.tree&&s.push({frag:c,pos:r.from-c.offset,mount:o})}}}return s}};function $E(t,e){let i=null,n=e;for(let s=1,r=0;s=l)break;c.to<=o||(i||(n=i=e.slice()),c.froml&&i.splice(r+1,0,new Ts(l,c.to))):c.to>l?i[r--]=new Ts(l,c.to):i.splice(r--,1))}}return n}function bY(t,e,i,n){let s=0,r=0,o=!1,l=!1,c=-1e9,u=[];for(;;){let d=s==t.length?1e9:o?t[s].to:t[s].from,p=r==e.length?1e9:l?e[r].to:e[r].from;if(o!=l){let g=Math.max(c,i),O=Math.min(d,p,n);gnew Ts(g.from+n,g.to+n)),p=bY(e,d,c,u);for(let g=0,O=c;;g++){let _=g==p.length,b=_?u:p[g].from;if(b>O&&i.push(new vo(O,b,s.tree,-o,r.from>=O||r.openStart,r.to<=b||r.openEnd)),_)break;O=p[g].to}}else i.push(new vo(c,u,s.tree,-o,r.from>=o||r.openStart,r.to<=l||r.openEnd))}return i}let SY=0;class ns{constructor(e,i,n,s){this.name=e,this.set=i,this.base=n,this.modified=s,this.id=SY++}toString(){let{name:e}=this;for(let i of this.modified)i.name&&(e=`${i.name}(${e})`);return e}static define(e,i){let n=typeof e=="string"?e:"?";if(e instanceof ns&&(i=e),i!=null&&i.base)throw new Error("Can not derive from a modified tag");let s=new ns(n,[],null,[]);if(s.set.push(s),i)for(let r of i.set)s.set.push(r);return s}static defineModifier(e){let i=new Pg(e);return n=>n.modified.indexOf(i)>-1?n:Pg.get(n.base||n,n.modified.concat(i).sort((s,r)=>s.id-r.id))}}let xY=0;class Pg{constructor(e){this.name=e,this.instances=[],this.id=xY++}static get(e,i){if(!i.length)return e;let n=i[0].instances.find(l=>l.base==e&&wY(i,l.modified));if(n)return n;let s=[],r=new ns(e.name,s,e,i);for(let l of i)l.instances.push(r);let o=CY(i);for(let l of e.set)if(!l.modified.length)for(let c of o)s.push(Pg.get(l,c));return r}}function wY(t,e){return t.length==e.length&&t.every((i,n)=>i==e[n])}function CY(t){let e=[[]];for(let i=0;in.length-i.length)}function _h(t){let e=Object.create(null);for(let i in t){let n=t[i];Array.isArray(n)||(n=[n]);for(let s of i.split(" "))if(s){let r=[],o=2,l=s;for(let p=0;;){if(l=="..."&&p>0&&p+3==s.length){o=1;break}let g=/^"(?:[^"\\]|\\.)*?"|[^\/!]+/.exec(l);if(!g)throw new RangeError("Invalid path: "+s);if(r.push(g[0]=="*"?"":g[0][0]=='"'?JSON.parse(g[0]):g[0]),p+=g[0].length,p==s.length)break;let O=s[p++];if(p==s.length&&O=="!"){o=0;break}if(O!="/")throw new RangeError("Invalid path: "+s);l=s.slice(p)}let c=r.length-1,u=r[c];if(!u)throw new RangeError("Invalid path: "+s);let d=new jf(n,o,c>0?r.slice(0,c):null);e[u]=d.sort(e[u])}}return NB.add(e)}const NB=new ze({combine(t,e){let i,n,s;for(;t||e;){if(!t||e&&t.depth>=e.depth?(s=e,e=e.next):(s=t,t=t.next),i&&i.mode==s.mode&&!s.context&&!i.context)continue;let r=new jf(s.tags,s.mode,s.context);i?i.next=r:n=r,i=r}return n}});class jf{constructor(e,i,n,s){this.tags=e,this.mode=i,this.context=n,this.next=s}get opaque(){return this.mode==0}get inherit(){return this.mode==1}sort(e){return!e||e.depth{let o=s;for(let l of r)for(let c of l.set){let u=i[c.id];if(u){o=o?o+" "+u:u;break}}return o},scope:n}}function kY(t,e){let i=null;for(let n of t){let s=n.style(e);s&&(i=i?i+" "+s:s)}return i}function TY(t,e,i,n=0,s=t.length){let r=new AY(n,Array.isArray(e)?e:[e],i);r.highlightRange(t.cursor(),n,s,"",r.highlighters),r.flush(s)}class AY{constructor(e,i,n){this.at=e,this.highlighters=i,this.span=n,this.class=""}startSpan(e,i){i!=this.class&&(this.flush(e),e>this.at&&(this.at=e),this.class=i)}flush(e){e>this.at&&this.class&&this.span(this.at,e,this.class)}highlightRange(e,i,n,s,r){let{type:o,from:l,to:c}=e;if(l>=n||c<=i)return;o.isTop&&(r=this.highlighters.filter(O=>!O.scope||O.scope(o)));let u=s,d=EY(e)||jf.empty,p=kY(r,d.tags);if(p&&(u&&(u+=" "),u+=p,d.mode==1&&(s+=(s?" ":"")+p)),this.startSpan(Math.max(i,l),u),d.opaque)return;let g=e.tree&&e.tree.prop(ze.mounted);if(g&&g.overlay){let O=e.node.enter(g.overlay[0].from+l,1),_=this.highlighters.filter(x=>!x.scope||x.scope(g.tree.type)),b=e.firstChild();for(let x=0,w=l;;x++){let k=x=T||!e.nextSibling())););if(!k||T>n)break;w=k.to+l,w>i&&(this.highlightRange(O.cursor(),Math.max(i,k.from+l),Math.min(n,w),"",_),this.startSpan(Math.min(n,w),u))}b&&e.parent()}else if(e.firstChild()){g&&(s="");do if(!(e.to<=i)){if(e.from>=n)break;this.highlightRange(e,i,n,s,r),this.startSpan(Math.min(n,e.to),u)}while(e.nextSibling());e.parent()}}}function EY(t){let e=t.type.prop(NB);for(;e&&e.context&&!t.matchContext(e.context);)e=e.next;return e||null}const _e=ns.define,um=_e(),pa=_e(),zE=_e(pa),jE=_e(pa),ma=_e(),fm=_e(ma),D_=_e(ma),ur=_e(),il=_e(ur),rr=_e(),or=_e(),Tb=_e(),Au=_e(Tb),dm=_e(),V={comment:um,lineComment:_e(um),blockComment:_e(um),docComment:_e(um),name:pa,variableName:_e(pa),typeName:zE,tagName:_e(zE),propertyName:jE,attributeName:_e(jE),className:_e(pa),labelName:_e(pa),namespace:_e(pa),macroName:_e(pa),literal:ma,string:fm,docString:_e(fm),character:_e(fm),attributeValue:_e(fm),number:D_,integer:_e(D_),float:_e(D_),bool:_e(ma),regexp:_e(ma),escape:_e(ma),color:_e(ma),url:_e(ma),keyword:rr,self:_e(rr),null:_e(rr),atom:_e(rr),unit:_e(rr),modifier:_e(rr),operatorKeyword:_e(rr),controlKeyword:_e(rr),definitionKeyword:_e(rr),moduleKeyword:_e(rr),operator:or,derefOperator:_e(or),arithmeticOperator:_e(or),logicOperator:_e(or),bitwiseOperator:_e(or),compareOperator:_e(or),updateOperator:_e(or),definitionOperator:_e(or),typeOperator:_e(or),controlOperator:_e(or),punctuation:Tb,separator:_e(Tb),bracket:Au,angleBracket:_e(Au),squareBracket:_e(Au),paren:_e(Au),brace:_e(Au),content:ur,heading:il,heading1:_e(il),heading2:_e(il),heading3:_e(il),heading4:_e(il),heading5:_e(il),heading6:_e(il),contentSeparator:_e(ur),list:_e(ur),quote:_e(ur),emphasis:_e(ur),strong:_e(ur),link:_e(ur),monospace:_e(ur),strikethrough:_e(ur),inserted:_e(),deleted:_e(),changed:_e(),invalid:_e(),meta:dm,documentMeta:_e(dm),annotation:_e(dm),processingInstruction:_e(dm),definition:ns.defineModifier("definition"),constant:ns.defineModifier("constant"),function:ns.defineModifier("function"),standard:ns.defineModifier("standard"),local:ns.defineModifier("local"),special:ns.defineModifier("special")};for(let t in V){let e=V[t];e instanceof ns&&(e.name=t)}zB([{tag:V.link,class:"tok-link"},{tag:V.heading,class:"tok-heading"},{tag:V.emphasis,class:"tok-emphasis"},{tag:V.strong,class:"tok-strong"},{tag:V.keyword,class:"tok-keyword"},{tag:V.atom,class:"tok-atom"},{tag:V.bool,class:"tok-bool"},{tag:V.url,class:"tok-url"},{tag:V.labelName,class:"tok-labelName"},{tag:V.inserted,class:"tok-inserted"},{tag:V.deleted,class:"tok-deleted"},{tag:V.literal,class:"tok-literal"},{tag:V.string,class:"tok-string"},{tag:V.number,class:"tok-number"},{tag:[V.regexp,V.escape,V.special(V.string)],class:"tok-string2"},{tag:V.variableName,class:"tok-variableName"},{tag:V.local(V.variableName),class:"tok-variableName tok-local"},{tag:V.definition(V.variableName),class:"tok-variableName tok-definition"},{tag:V.special(V.variableName),class:"tok-variableName2"},{tag:V.definition(V.propertyName),class:"tok-propertyName tok-definition"},{tag:V.typeName,class:"tok-typeName"},{tag:V.namespace,class:"tok-namespace"},{tag:V.className,class:"tok-className"},{tag:V.macroName,class:"tok-macroName"},{tag:V.propertyName,class:"tok-propertyName"},{tag:V.operator,class:"tok-operator"},{tag:V.comment,class:"tok-comment"},{tag:V.meta,class:"tok-meta"},{tag:V.invalid,class:"tok-invalid"},{tag:V.punctuation,class:"tok-punctuation"}]);var B_;const vl=new ze;function Gx(t){return Se.define({combine:t?e=>e.concat(t):void 0})}const Kx=new ze;class As{constructor(e,i,n=[],s=""){this.data=e,this.name=s,et.prototype.hasOwnProperty("tree")||Object.defineProperty(et.prototype,"tree",{get(){return xt(this)}}),this.parser=i,this.extension=[Ea.of(this),et.languageData.of((r,o,l)=>{let c=IE(r,o,l),u=c.type.prop(vl);if(!u)return[];let d=r.facet(u),p=c.type.prop(Kx);if(p){let g=c.resolve(o-c.from,l);for(let O of p)if(O.test(g,r)){let _=r.facet(O.facet);return O.type=="replace"?_:_.concat(d)}}return d})].concat(n)}isActiveAt(e,i,n=-1){return IE(e,i,n).type.prop(vl)==this.data}findRegions(e){let i=e.facet(Ea);if((i==null?void 0:i.data)==this.data)return[{from:0,to:e.doc.length}];if(!i||!i.allowsNesting)return[];let n=[],s=(r,o)=>{if(r.prop(vl)==this.data){n.push({from:o,to:o+r.length});return}let l=r.prop(ze.mounted);if(l){if(l.tree.prop(vl)==this.data){if(l.overlay)for(let c of l.overlay)n.push({from:c.from+o,to:c.to+o});else n.push({from:o,to:o+r.length});return}else if(l.overlay){let c=n.length;if(s(l.tree,l.overlay[0].from+o),n.length>c)return}}for(let c=0;cn.isTop?i:void 0)]}),e.name)}configure(e,i){return new lh(this.data,this.parser.configure(e),i||this.name)}get allowsNesting(){return this.parser.hasWrappers()}}function xt(t){let e=t.field(As.state,!1);return e?e.tree:ct.empty}class MY{constructor(e){this.doc=e,this.cursorPos=0,this.string="",this.cursor=e.iter()}get length(){return this.doc.length}syncTo(e){return this.string=this.cursor.next(e-this.cursorPos).value,this.cursorPos=e+this.string.length,this.cursorPos-this.string.length}chunk(e){return this.syncTo(e),this.string}get lineChunks(){return!0}read(e,i){let n=this.cursorPos-this.string.length;return e=this.cursorPos?this.doc.sliceString(e,i):this.string.slice(e-n,i-n)}}let Eu=null;class If{constructor(e,i,n=[],s,r,o,l,c){this.parser=e,this.state=i,this.fragments=n,this.tree=s,this.treeLen=r,this.viewport=o,this.skipped=l,this.scheduleOn=c,this.parse=null,this.tempSkipped=[]}static create(e,i,n){return new If(e,i,[],ct.empty,0,n,[],null)}startParse(){return this.parser.startParse(new MY(this.state.doc),this.fragments)}work(e,i){return i!=null&&i>=this.state.doc.length&&(i=void 0),this.tree!=ct.empty&&this.isDone(i??this.state.doc.length)?(this.takeTree(),!0):this.withContext(()=>{var n;if(typeof e=="number"){let s=Date.now()+e;e=()=>Date.now()>s}for(this.parse||(this.parse=this.startParse()),i!=null&&(this.parse.stoppedAt==null||this.parse.stoppedAt>i)&&i=this.treeLen&&((this.parse.stoppedAt==null||this.parse.stoppedAt>e)&&this.parse.stopAt(e),this.withContext(()=>{for(;!(i=this.parse.advance()););}),this.treeLen=e,this.tree=i,this.fragments=this.withoutTempSkipped(vo.addTree(this.tree,this.fragments,!0)),this.parse=null)}withContext(e){let i=Eu;Eu=this;try{return e()}finally{Eu=i}}withoutTempSkipped(e){for(let i;i=this.tempSkipped.pop();)e=VE(e,i.from,i.to);return e}changes(e,i){let{fragments:n,tree:s,treeLen:r,viewport:o,skipped:l}=this;if(this.takeTree(),!e.empty){let c=[];if(e.iterChangedRanges((u,d,p,g)=>c.push({fromA:u,toA:d,fromB:p,toB:g})),n=vo.applyChanges(n,c),s=ct.empty,r=0,o={from:e.mapPos(o.from,-1),to:e.mapPos(o.to,1)},this.skipped.length){l=[];for(let u of this.skipped){let d=e.mapPos(u.from,1),p=e.mapPos(u.to,-1);de.from&&(this.fragments=VE(this.fragments,s,r),this.skipped.splice(n--,1))}return this.skipped.length>=i?!1:(this.reset(),!0)}reset(){this.parse&&(this.takeTree(),this.parse=null)}skipUntilInView(e,i){this.skipped.push({from:e,to:i})}static getSkippingParser(e){return new class extends Fx{createParse(i,n,s){let r=s[0].from,o=s[s.length-1].to;return{parsedPos:r,advance(){let c=Eu;if(c){for(let u of s)c.tempSkipped.push(u);e&&(c.scheduleOn=c.scheduleOn?Promise.all([c.scheduleOn,e]):e)}return this.parsedPos=o,new ct(_i.none,[],[],o-r)},stoppedAt:null,stopAt(){}}}}}isDone(e){e=Math.min(e,this.state.doc.length);let i=this.fragments;return this.treeLen>=e&&i.length&&i[0].from==0&&i[0].to>=e}static get(){return Eu}}function VE(t,e,i){return vo.applyChanges(t,[{fromA:e,toA:i,fromB:e,toB:i}])}class ch{constructor(e){this.context=e,this.tree=e.tree}apply(e){if(!e.docChanged&&this.tree==this.context.tree)return this;let i=this.context.changes(e.changes,e.state),n=this.context.treeLen==e.startState.doc.length?void 0:Math.max(e.changes.mapPos(this.context.treeLen),i.viewport.to);return i.work(20,n)||i.takeTree(),new ch(i)}static init(e){let i=Math.min(3e3,e.doc.length),n=If.create(e.facet(Ea).parser,e,{from:0,to:i});return n.work(20,i)||n.takeTree(),new ch(n)}}As.state=Bi.define({create:ch.init,update(t,e){for(let i of e.effects)if(i.is(As.setState))return i.value;return e.startState.facet(Ea)!=e.state.facet(Ea)?ch.init(e.state):t.apply(e)}});let jB=t=>{let e=setTimeout(()=>t(),500);return()=>clearTimeout(e)};typeof requestIdleCallback<"u"&&(jB=t=>{let e=-1,i=setTimeout(()=>{e=requestIdleCallback(t,{timeout:400})},100);return()=>e<0?clearTimeout(i):cancelIdleCallback(e)});const $_=typeof navigator<"u"&&(!((B_=navigator.scheduling)===null||B_===void 0)&&B_.isInputPending)?()=>navigator.scheduling.isInputPending():null,PY=Jt.fromClass(class{constructor(e){this.view=e,this.working=null,this.workScheduled=0,this.chunkEnd=-1,this.chunkBudget=-1,this.work=this.work.bind(this),this.scheduleWork()}update(e){let i=this.view.state.field(As.state).context;(i.updateViewport(e.view.viewport)||this.view.viewport.to>i.treeLen)&&this.scheduleWork(),(e.docChanged||e.selectionSet)&&(this.view.hasFocus&&(this.chunkBudget+=50),this.scheduleWork()),this.checkAsyncSchedule(i)}scheduleWork(){if(this.working)return;let{state:e}=this.view,i=e.field(As.state);(i.tree!=i.context.tree||!i.context.isDone(e.doc.length))&&(this.working=jB(this.work))}work(e){this.working=null;let i=Date.now();if(this.chunkEnds+1e3,c=r.context.work(()=>$_&&$_()||Date.now()>o,s+(l?0:1e5));this.chunkBudget-=Date.now()-i,(c||this.chunkBudget<=0)&&(r.context.takeTree(),this.view.dispatch({effects:As.setState.of(new ch(r.context))})),this.chunkBudget>0&&!(c&&!l)&&this.scheduleWork(),this.checkAsyncSchedule(r.context)}checkAsyncSchedule(e){e.scheduleOn&&(this.workScheduled++,e.scheduleOn.then(()=>this.scheduleWork()).catch(i=>$n(this.view.state,i)).then(()=>this.workScheduled--),e.scheduleOn=null)}destroy(){this.working&&this.working()}isWorking(){return!!(this.working||this.workScheduled>0)}},{eventHandlers:{focus(){this.scheduleWork()}}}),Ea=Se.define({combine(t){return t.length?t[0]:null},enables:t=>[As.state,PY,ve.contentAttributes.compute([t],e=>{let i=e.facet(t);return i&&i.name?{"data-language":i.name}:{}})]});class Vf{constructor(e,i=[]){this.language=e,this.support=i,this.extension=[e,i]}}class Rg{constructor(e,i,n,s,r,o=void 0){this.name=e,this.alias=i,this.extensions=n,this.filename=s,this.loadFunc=r,this.support=o,this.loading=null}load(){return this.loading||(this.loading=this.loadFunc().then(e=>this.support=e,e=>{throw this.loading=null,e}))}static of(e){let{load:i,support:n}=e;if(!i){if(!n)throw new RangeError("Must pass either 'load' or 'support' to LanguageDescription.of");i=()=>Promise.resolve(n)}return new Rg(e.name,(e.alias||[]).concat(e.name).map(s=>s.toLowerCase()),e.extensions||[],e.filename,i,n)}static matchFilename(e,i){for(let s of e)if(s.filename&&s.filename.test(i))return s;let n=/\.([^.]+)$/.exec(i);if(n){for(let s of e)if(s.extensions.indexOf(n[1])>-1)return s}return null}static matchLanguageName(e,i,n=!0){i=i.toLowerCase();for(let s of e)if(s.alias.some(r=>r==i))return s;if(n)for(let s of e)for(let r of s.alias){let o=i.indexOf(r);if(o>-1&&(r.length>2||!/\w/.test(i[o-1])&&!/\w/.test(i[o+r.length])))return s}return null}}const RY=Se.define(),yh=Se.define({combine:t=>{if(!t.length)return" ";let e=t[0];if(!e||/\S/.test(e)||Array.from(e).some(i=>i!=e[0]))throw new Error("Invalid indent unit: "+JSON.stringify(t[0]));return e}});function Qg(t){let e=t.facet(yh);return e.charCodeAt(0)==9?t.tabSize*e.length:e.length}function Xf(t,e){let i="",n=t.tabSize,s=t.facet(yh)[0];if(s==" "){for(;e>=n;)i+=" ",e-=n;s=" "}for(let r=0;r=e?QY(t,i,e):null}class vO{constructor(e,i={}){this.state=e,this.options=i,this.unit=Qg(e)}lineAt(e,i=1){let n=this.state.doc.lineAt(e),{simulateBreak:s,simulateDoubleBreak:r}=this.options;return s!=null&&s>=n.from&&s<=n.to?r&&s==e?{text:"",from:e}:(i<0?s-1&&(r+=o-this.countColumn(n,n.search(/\S|$/))),r}countColumn(e,i=e.length){return Ys(e,this.state.tabSize,i)}lineIndent(e,i=1){let{text:n,from:s}=this.lineAt(e,i),r=this.options.overrideIndentation;if(r){let o=r(s);if(o>-1)return o}return this.countColumn(n,n.search(/\S|$/))}get simulatedBreak(){return this.options.simulateBreak||null}}const md=new ze;function QY(t,e,i){let n=e.resolveStack(i),s=e.resolveInner(i,-1).resolve(i,0).enterUnfinishedNodesBefore(i);if(s!=n.node){let r=[];for(let o=s;o&&!(o.fromn.node.to||o.from==n.node.from&&o.type==n.node.type);o=o.parent)r.push(o);for(let o=r.length-1;o>=0;o--)n={node:r[o],next:n}}return IB(n,t,i)}function IB(t,e,i){for(let n=t;n;n=n.next){let s=DY(n.node);if(s)return s(ew.create(e,i,n))}return 0}function LY(t){return t.pos==t.options.simulateBreak&&t.options.simulateDoubleBreak}function DY(t){let e=t.type.prop(md);if(e)return e;let i=t.firstChild,n;if(i&&(n=i.type.prop(ze.closedBy))){let s=t.lastChild,r=s&&n.indexOf(s.name)>-1;return o=>VB(o,!0,1,void 0,r&&!LY(o)?s.from:void 0)}return t.parent==null?BY:null}function BY(){return 0}class ew extends vO{constructor(e,i,n){super(e.state,e.options),this.base=e,this.pos=i,this.context=n}get node(){return this.context.node}static create(e,i,n){return new ew(e,i,n)}get textAfter(){return this.textAfterPos(this.pos)}get baseIndent(){return this.baseIndentFor(this.node)}baseIndentFor(e){let i=this.state.doc.lineAt(e.from);for(;;){let n=e.resolve(i.from);for(;n.parent&&n.parent.from==n.from;)n=n.parent;if($Y(n,e))break;i=this.state.doc.lineAt(n.from)}return this.lineIndent(i.from)}continue(){return IB(this.context.next,this.base,this.pos)}}function $Y(t,e){for(let i=e;i;i=i.parent)if(t==i)return!0;return!1}function NY(t){let e=t.node,i=e.childAfter(e.from),n=e.lastChild;if(!i)return null;let s=t.options.simulateBreak,r=t.state.doc.lineAt(i.from),o=s==null||s<=r.from?r.to:Math.min(r.to,s);for(let l=i.to;;){let c=e.childAfter(l);if(!c||c==n)return null;if(!c.type.isSkipped){if(c.from>=o)return null;let u=/^ */.exec(r.text.slice(i.to-r.from))[0].length;return{from:i.from,to:i.to+u}}l=c.to}}function zY({closing:t,align:e=!0,units:i=1}){return n=>VB(n,e,i,t)}function VB(t,e,i,n,s){let r=t.textAfter,o=r.match(/^\s*/)[0].length,l=n&&r.slice(o,o+n.length)==n||s==t.pos+o,c=e?NY(t):null;return c?l?t.column(c.from):t.column(c.to):t.baseIndent+(l?0:t.unit*i)}const jY=t=>t.baseIndent;function Ym({except:t,units:e=1}={}){return i=>{let n=t&&t.test(i.textAfter);return i.baseIndent+(n?0:e*i.unit)}}const IY=200;function VY(){return et.transactionFilter.of(t=>{if(!t.docChanged||!t.isUserEvent("input.type")&&!t.isUserEvent("input.complete"))return t;let e=t.startState.languageDataAt("indentOnInput",t.startState.selection.main.head);if(!e.length)return t;let i=t.newDoc,{head:n}=t.newSelection.main,s=i.lineAt(n);if(n>s.from+IY)return t;let r=i.sliceString(s.from,n);if(!e.some(u=>u.test(r)))return t;let{state:o}=t,l=-1,c=[];for(let{head:u}of o.selection.ranges){let d=o.doc.lineAt(u);if(d.from==l)continue;l=d.from;let p=Jx(o,d.from);if(p==null)continue;let g=/^\s*/.exec(d.text)[0],O=Xf(o,p);g!=O&&c.push({from:d.from,to:d.from+g.length,insert:O})}return c.length?[t,{changes:c,sequential:!0}]:t})}const XB=Se.define(),bh=new ze;function ZB(t){let e=t.firstChild,i=t.lastChild;return e&&e.toi)continue;if(r&&l.from=e&&u.to>i&&(r=u)}}return r}function ZY(t){let e=t.lastChild;return e&&e.to==t.to&&e.type.isError}function Lg(t,e,i){for(let n of t.facet(XB)){let s=n(t,e,i);if(s)return s}return XY(t,e,i)}function qB(t,e){let i=e.mapPos(t.from,1),n=e.mapPos(t.to,-1);return i>=n?void 0:{from:i,to:n}}const _O=Ne.define({map:qB}),gd=Ne.define({map:qB});function WB(t){let e=[];for(let{head:i}of t.state.selection.ranges)e.some(n=>n.from<=i&&n.to>=i)||e.push(t.lineBlockAt(i));return e}const Ml=Bi.define({create(){return Pe.none},update(t,e){e.isUserEvent("delete")&&e.changes.iterChangedRanges((i,n)=>t=XE(t,i,n)),t=t.map(e.changes);for(let i of e.effects)if(i.is(_O)&&!qY(t,i.value.from,i.value.to)){let{preparePlaceholder:n}=e.state.facet(HB),s=n?Pe.replace({widget:new KY(n(e.state,i.value))}):ZE;t=t.update({add:[s.range(i.value.from,i.value.to)]})}else i.is(gd)&&(t=t.update({filter:(n,s)=>i.value.from!=n||i.value.to!=s,filterFrom:i.value.from,filterTo:i.value.to}));return e.selection&&(t=XE(t,e.selection.main.head)),t},provide:t=>ve.decorations.from(t),toJSON(t,e){let i=[];return t.between(0,e.doc.length,(n,s)=>{i.push(n,s)}),i},fromJSON(t){if(!Array.isArray(t)||t.length%2)throw new RangeError("Invalid JSON for fold state");let e=[];for(let i=0;i{se&&(n=!0)}),n?t.update({filterFrom:e,filterTo:i,filter:(s,r)=>s>=i||r<=e}):t}function Dg(t,e,i){var n;let s=null;return(n=t.field(Ml,!1))===null||n===void 0||n.between(e,i,(r,o)=>{(!s||s.from>r)&&(s={from:r,to:o})}),s}function qY(t,e,i){let n=!1;return t.between(e,e,(s,r)=>{s==e&&r==i&&(n=!0)}),n}function UB(t,e){return t.field(Ml,!1)?e:e.concat(Ne.appendConfig.of(FB()))}const WY=t=>{for(let e of WB(t)){let i=Lg(t.state,e.from,e.to);if(i)return t.dispatch({effects:UB(t.state,[_O.of(i),YB(t,i)])}),!0}return!1},UY=t=>{if(!t.state.field(Ml,!1))return!1;let e=[];for(let i of WB(t)){let n=Dg(t.state,i.from,i.to);n&&e.push(gd.of(n),YB(t,n,!1))}return e.length&&t.dispatch({effects:e}),e.length>0};function YB(t,e,i=!0){let n=t.state.doc.lineAt(e.from).number,s=t.state.doc.lineAt(e.to).number;return ve.announce.of(`${t.state.phrase(i?"Folded lines":"Unfolded lines")} ${n} ${t.state.phrase("to")} ${s}.`)}const YY=t=>{let{state:e}=t,i=[];for(let n=0;n{let e=t.state.field(Ml,!1);if(!e||!e.size)return!1;let i=[];return e.between(0,t.state.doc.length,(n,s)=>{i.push(gd.of({from:n,to:s}))}),t.dispatch({effects:i}),!0},FY=[{key:"Ctrl-Shift-[",mac:"Cmd-Alt-[",run:WY},{key:"Ctrl-Shift-]",mac:"Cmd-Alt-]",run:UY},{key:"Ctrl-Alt-[",run:YY},{key:"Ctrl-Alt-]",run:HY}],GY={placeholderDOM:null,preparePlaceholder:null,placeholderText:"…"},HB=Se.define({combine(t){return Dr(t,GY)}});function FB(t){return[Ml,tH]}function GB(t,e){let{state:i}=t,n=i.facet(HB),s=o=>{let l=t.lineBlockAt(t.posAtDOM(o.target)),c=Dg(t.state,l.from,l.to);c&&t.dispatch({effects:gd.of(c)}),o.preventDefault()};if(n.placeholderDOM)return n.placeholderDOM(t,s,e);let r=document.createElement("span");return r.textContent=n.placeholderText,r.setAttribute("aria-label",i.phrase("folded code")),r.title=i.phrase("unfold"),r.className="cm-foldPlaceholder",r.onclick=s,r}const ZE=Pe.replace({widget:new class extends Gs{toDOM(t){return GB(t,null)}}});class KY extends Gs{constructor(e){super(),this.value=e}eq(e){return this.value==e.value}toDOM(e){return GB(e,this.value)}}const JY={openText:"⌄",closedText:"›",markerDOM:null,domEventHandlers:{},foldingChanged:()=>!1};class N_ extends So{constructor(e,i){super(),this.config=e,this.open=i}eq(e){return this.config==e.config&&this.open==e.open}toDOM(e){if(this.config.markerDOM)return this.config.markerDOM(this.open);let i=document.createElement("span");return i.textContent=this.open?this.config.openText:this.config.closedText,i.title=e.state.phrase(this.open?"Fold line":"Unfold line"),i}}function eH(t={}){let e={...JY,...t},i=new N_(e,!0),n=new N_(e,!1),s=Jt.fromClass(class{constructor(o){this.from=o.viewport.from,this.markers=this.buildMarkers(o)}update(o){(o.docChanged||o.viewportChanged||o.startState.facet(Ea)!=o.state.facet(Ea)||o.startState.field(Ml,!1)!=o.state.field(Ml,!1)||xt(o.startState)!=xt(o.state)||e.foldingChanged(o))&&(this.markers=this.buildMarkers(o.view))}buildMarkers(o){let l=new yo;for(let c of o.viewportLineBlocks){let u=Dg(o.state,c.from,c.to)?n:Lg(o.state,c.from,c.to)?i:null;u&&l.add(c.from,c.from,u)}return l.finish()}}),{domEventHandlers:r}=e;return[s,KU({class:"cm-foldGutter",markers(o){var l;return((l=o.plugin(s))===null||l===void 0?void 0:l.markers)||Ge.empty},initialSpacer(){return new N_(e,!1)},domEventHandlers:{...r,click:(o,l,c)=>{if(r.click&&r.click(o,l,c))return!0;let u=Dg(o.state,l.from,l.to);if(u)return o.dispatch({effects:gd.of(u)}),!0;let d=Lg(o.state,l.from,l.to);return d?(o.dispatch({effects:_O.of(d)}),!0):!1}}}),FB()]}const tH=ve.baseTheme({".cm-foldPlaceholder":{backgroundColor:"#eee",border:"1px solid #ddd",color:"#888",borderRadius:".2em",margin:"0 1px",padding:"0 1px",cursor:"pointer"},".cm-foldGutter span":{padding:"0 1px",cursor:"pointer"}});class Od{constructor(e,i){this.specs=e;let n;function s(l){let c=Ca.newName();return(n||(n=Object.create(null)))["."+c]=l,c}const r=typeof i.all=="string"?i.all:i.all?s(i.all):void 0,o=i.scope;this.scope=o instanceof As?l=>l.prop(vl)==o.data:o?l=>l==o:void 0,this.style=zB(e.map(l=>({tag:l.tag,class:l.class||s(Object.assign({},l,{tag:null}))})),{all:r}).style,this.module=n?new Ca(n):null,this.themeType=i.themeType}static define(e,i){return new Od(e,i||{})}}const Ab=Se.define(),KB=Se.define({combine(t){return t.length?[t[0]]:null}});function z_(t){let e=t.facet(Ab);return e.length?e:t.facet(KB)}function JB(t,e){let i=[nH],n;return t instanceof Od&&(t.module&&i.push(ve.styleModule.of(t.module)),n=t.themeType),e!=null&&e.fallback?i.push(KB.of(t)):n?i.push(Ab.computeN([ve.darkTheme],s=>s.facet(ve.darkTheme)==(n=="dark")?[t]:[])):i.push(Ab.of(t)),i}class iH{constructor(e){this.markCache=Object.create(null),this.tree=xt(e.state),this.decorations=this.buildDeco(e,z_(e.state)),this.decoratedTo=e.viewport.to}update(e){let i=xt(e.state),n=z_(e.state),s=n!=z_(e.startState),{viewport:r}=e.view,o=e.changes.mapPos(this.decoratedTo,1);i.length=r.to?(this.decorations=this.decorations.map(e.changes),this.decoratedTo=o):(i!=this.tree||e.viewportChanged||s)&&(this.tree=i,this.decorations=this.buildDeco(e.view,n),this.decoratedTo=r.to)}buildDeco(e,i){if(!i||!this.tree.length)return Pe.none;let n=new yo;for(let{from:s,to:r}of e.visibleRanges)TY(this.tree,i,(o,l,c)=>{n.add(o,l,this.markCache[c]||(this.markCache[c]=Pe.mark({class:c})))},s,r);return n.finish()}}const nH=wo.high(Jt.fromClass(iH,{decorations:t=>t.decorations})),sH=Od.define([{tag:V.meta,color:"#404740"},{tag:V.link,textDecoration:"underline"},{tag:V.heading,textDecoration:"underline",fontWeight:"bold"},{tag:V.emphasis,fontStyle:"italic"},{tag:V.strong,fontWeight:"bold"},{tag:V.strikethrough,textDecoration:"line-through"},{tag:V.keyword,color:"#708"},{tag:[V.atom,V.bool,V.url,V.contentSeparator,V.labelName],color:"#219"},{tag:[V.literal,V.inserted],color:"#164"},{tag:[V.string,V.deleted],color:"#a11"},{tag:[V.regexp,V.escape,V.special(V.string)],color:"#e40"},{tag:V.definition(V.variableName),color:"#00f"},{tag:V.local(V.variableName),color:"#30a"},{tag:[V.typeName,V.namespace],color:"#085"},{tag:V.className,color:"#167"},{tag:[V.special(V.variableName),V.macroName],color:"#256"},{tag:V.definition(V.propertyName),color:"#00c"},{tag:V.comment,color:"#940"},{tag:V.invalid,color:"#f00"}]),rH=ve.baseTheme({"&.cm-focused .cm-matchingBracket":{backgroundColor:"#328c8252"},"&.cm-focused .cm-nonmatchingBracket":{backgroundColor:"#bb555544"}}),e$=1e4,t$="()[]{}",i$=Se.define({combine(t){return Dr(t,{afterCursor:!0,brackets:t$,maxScanDistance:e$,renderMatch:lH})}}),oH=Pe.mark({class:"cm-matchingBracket"}),aH=Pe.mark({class:"cm-nonmatchingBracket"});function lH(t){let e=[],i=t.matched?oH:aH;return e.push(i.range(t.start.from,t.start.to)),t.end&&e.push(i.range(t.end.from,t.end.to)),e}const cH=Bi.define({create(){return Pe.none},update(t,e){if(!e.docChanged&&!e.selection)return t;let i=[],n=e.state.facet(i$);for(let s of e.state.selection.ranges){if(!s.empty)continue;let r=br(e.state,s.head,-1,n)||s.head>0&&br(e.state,s.head-1,1,n)||n.afterCursor&&(br(e.state,s.head,1,n)||s.headve.decorations.from(t)}),hH=[cH,rH];function uH(t={}){return[i$.of(t),hH]}const n$=new ze;function Eb(t,e,i){let n=t.prop(e<0?ze.openedBy:ze.closedBy);if(n)return n;if(t.name.length==1){let s=i.indexOf(t.name);if(s>-1&&s%2==(e<0?1:0))return[i[s+e]]}return null}function Mb(t){let e=t.type.prop(n$);return e?e(t.node):t}function br(t,e,i,n={}){let s=n.maxScanDistance||e$,r=n.brackets||t$,o=xt(t),l=o.resolveInner(e,i);for(let c=l;c;c=c.parent){let u=Eb(c.type,i,r);if(u&&c.from0?e>=d.from&&ed.from&&e<=d.to))return fH(t,e,i,c,d,u,r)}}return dH(t,e,i,o,l.type,s,r)}function fH(t,e,i,n,s,r,o){let l=n.parent,c={from:s.from,to:s.to},u=0,d=l==null?void 0:l.cursor();if(d&&(i<0?d.childBefore(n.from):d.childAfter(n.to)))do if(i<0?d.to<=n.from:d.from>=n.to){if(u==0&&r.indexOf(d.type.name)>-1&&d.from0)return null;let u={from:i<0?e-1:e,to:i>0?e+1:e},d=t.doc.iterRange(e,i>0?t.doc.length:0),p=0;for(let g=0;!d.next().done&&g<=r;){let O=d.value;i<0&&(g+=O.length);let _=e+g*i;for(let b=i>0?0:O.length-1,x=i>0?O.length:-1;b!=x;b+=i){let w=o.indexOf(O[b]);if(!(w<0||n.resolveInner(_+b,1).type!=s))if(w%2==0==i>0)p++;else{if(p==1)return{start:u,end:{from:_+b,to:_+b+1},matched:w>>1==c>>1};p--}}i>0&&(g+=O.length)}return d.done?{start:u,matched:!1}:null}const pH=Object.create(null),qE=[_i.none],WE=[],UE=Object.create(null),mH=Object.create(null);for(let[t,e]of[["variable","variableName"],["variable-2","variableName.special"],["string-2","string.special"],["def","variableName.definition"],["tag","tagName"],["attribute","attributeName"],["type","typeName"],["builtin","variableName.standard"],["qualifier","modifier"],["error","invalid"],["header","heading"],["property","propertyName"]])mH[t]=gH(pH,e);function j_(t,e){WE.indexOf(t)>-1||(WE.push(t),console.warn(e))}function gH(t,e){let i=[];for(let l of e.split(" ")){let c=[];for(let u of l.split(".")){let d=t[u]||V[u];d?typeof d=="function"?c.length?c=c.map(d):j_(u,`Modifier ${u} used at start of tag`):c.length?j_(u,`Tag ${u} used as modifier`):c=Array.isArray(d)?d:[d]:j_(u,`Unknown highlighting tag ${u}`)}for(let u of c)i.push(u)}if(!i.length)return 0;let n=e.replace(/ /g,"_"),s=n+" "+i.map(l=>l.id),r=UE[s];if(r)return r.id;let o=UE[s]=_i.define({id:qE.length,name:n,props:[_h({[n]:i})]});return qE.push(o),o.id}St.RTL,St.LTR;const OH=t=>{let{state:e}=t,i=e.doc.lineAt(e.selection.main.from),n=iw(t.state,i.from);return n.line?vH(t):n.block?yH(t):!1};function tw(t,e){return({state:i,dispatch:n})=>{if(i.readOnly)return!1;let s=t(e,i);return s?(n(i.update(s)),!0):!1}}const vH=tw(xH,0),_H=tw(s$,0),yH=tw((t,e)=>s$(t,e,SH(e)),0);function iw(t,e){let i=t.languageDataAt("commentTokens",e,1);return i.length?i[0]:{}}const Mu=50;function bH(t,{open:e,close:i},n,s){let r=t.sliceDoc(n-Mu,n),o=t.sliceDoc(s,s+Mu),l=/\s*$/.exec(r)[0].length,c=/^\s*/.exec(o)[0].length,u=r.length-l;if(r.slice(u-e.length,u)==e&&o.slice(c,c+i.length)==i)return{open:{pos:n-l,margin:l&&1},close:{pos:s+c,margin:c&&1}};let d,p;s-n<=2*Mu?d=p=t.sliceDoc(n,s):(d=t.sliceDoc(n,n+Mu),p=t.sliceDoc(s-Mu,s));let g=/^\s*/.exec(d)[0].length,O=/\s*$/.exec(p)[0].length,_=p.length-O-i.length;return d.slice(g,g+e.length)==e&&p.slice(_,_+i.length)==i?{open:{pos:n+g+e.length,margin:/\s/.test(d.charAt(g+e.length))?1:0},close:{pos:s-O-i.length,margin:/\s/.test(p.charAt(_-1))?1:0}}:null}function SH(t){let e=[];for(let i of t.selection.ranges){let n=t.doc.lineAt(i.from),s=i.to<=n.to?n:t.doc.lineAt(i.to);s.from>n.from&&s.from==i.to&&(s=i.to==n.to+1?n:t.doc.lineAt(i.to-1));let r=e.length-1;r>=0&&e[r].to>n.from?e[r].to=s.to:e.push({from:n.from+/^\s*/.exec(n.text)[0].length,to:s.to})}return e}function s$(t,e,i=e.selection.ranges){let n=i.map(r=>iw(e,r.from).block);if(!n.every(r=>r))return null;let s=i.map((r,o)=>bH(e,n[o],r.from,r.to));if(t!=2&&!s.every(r=>r))return{changes:e.changes(i.map((r,o)=>s[o]?[]:[{from:r.from,insert:n[o].open+" "},{from:r.to,insert:" "+n[o].close}]))};if(t!=1&&s.some(r=>r)){let r=[];for(let o=0,l;os&&(r==o||o>p.from)){s=p.from;let g=/^\s*/.exec(p.text)[0].length,O=g==p.length,_=p.text.slice(g,g+u.length)==u?g:-1;gr.comment<0&&(!r.empty||r.single))){let r=[];for(let{line:l,token:c,indent:u,empty:d,single:p}of n)(p||!d)&&r.push({from:l.from+u,insert:c+" "});let o=e.changes(r);return{changes:o,selection:e.selection.map(o,1)}}else if(t!=1&&n.some(r=>r.comment>=0)){let r=[];for(let{line:o,comment:l,token:c}of n)if(l>=0){let u=o.from+l,d=u+c.length;o.text[d-o.from]==" "&&d++,r.push({from:u,to:d})}return{changes:r}}return null}const Pb=Lr.define(),wH=Lr.define(),CH=Se.define(),r$=Se.define({combine(t){return Dr(t,{minDepth:100,newGroupDelay:500,joinToEvent:(e,i)=>i},{minDepth:Math.max,newGroupDelay:Math.min,joinToEvent:(e,i)=>(n,s)=>e(n,s)||i(n,s)})}}),o$=Bi.define({create(){return Sr.empty},update(t,e){let i=e.state.facet(r$),n=e.annotation(Pb);if(n){let c=Nn.fromTransaction(e,n.selection),u=n.side,d=u==0?t.undone:t.done;return c?d=Bg(d,d.length,i.minDepth,c):d=c$(d,e.startState.selection),new Sr(u==0?n.rest:d,u==0?d:n.rest)}let s=e.annotation(wH);if((s=="full"||s=="before")&&(t=t.isolate()),e.annotation(hi.addToHistory)===!1)return e.changes.empty?t:t.addMapping(e.changes.desc);let r=Nn.fromTransaction(e),o=e.annotation(hi.time),l=e.annotation(hi.userEvent);return r?t=t.addChanges(r,o,l,i,e):e.selection&&(t=t.addSelection(e.startState.selection,o,l,i.newGroupDelay)),(s=="full"||s=="after")&&(t=t.isolate()),t},toJSON(t){return{done:t.done.map(e=>e.toJSON()),undone:t.undone.map(e=>e.toJSON())}},fromJSON(t){return new Sr(t.done.map(Nn.fromJSON),t.undone.map(Nn.fromJSON))}});function kH(t={}){return[o$,r$.of(t),ve.domEventHandlers({beforeinput(e,i){let n=e.inputType=="historyUndo"?a$:e.inputType=="historyRedo"?Rb:null;return n?(e.preventDefault(),n(i)):!1}})]}function yO(t,e){return function({state:i,dispatch:n}){if(!e&&i.readOnly)return!1;let s=i.field(o$,!1);if(!s)return!1;let r=s.pop(t,i,e);return r?(n(r),!0):!1}}const a$=yO(0,!1),Rb=yO(1,!1),TH=yO(0,!0),AH=yO(1,!0);class Nn{constructor(e,i,n,s,r){this.changes=e,this.effects=i,this.mapped=n,this.startSelection=s,this.selectionsAfter=r}setSelAfter(e){return new Nn(this.changes,this.effects,this.mapped,this.startSelection,e)}toJSON(){var e,i,n;return{changes:(e=this.changes)===null||e===void 0?void 0:e.toJSON(),mapped:(i=this.mapped)===null||i===void 0?void 0:i.toJSON(),startSelection:(n=this.startSelection)===null||n===void 0?void 0:n.toJSON(),selectionsAfter:this.selectionsAfter.map(s=>s.toJSON())}}static fromJSON(e){return new Nn(e.changes&&vi.fromJSON(e.changes),[],e.mapped&&Cr.fromJSON(e.mapped),e.startSelection&&re.fromJSON(e.startSelection),e.selectionsAfter.map(re.fromJSON))}static fromTransaction(e,i){let n=Es;for(let s of e.startState.facet(CH)){let r=s(e);r.length&&(n=n.concat(r))}return!n.length&&e.changes.empty?null:new Nn(e.changes.invert(e.startState.doc),n,void 0,i||e.startState.selection,Es)}static selection(e){return new Nn(void 0,Es,void 0,void 0,e)}}function Bg(t,e,i,n){let s=e+1>i+20?e-i-1:0,r=t.slice(s,e);return r.push(n),r}function EH(t,e){let i=[],n=!1;return t.iterChangedRanges((s,r)=>i.push(s,r)),e.iterChangedRanges((s,r,o,l)=>{for(let c=0;c=u&&o<=d&&(n=!0)}}),n}function MH(t,e){return t.ranges.length==e.ranges.length&&t.ranges.filter((i,n)=>i.empty!=e.ranges[n].empty).length===0}function l$(t,e){return t.length?e.length?t.concat(e):t:e}const Es=[],PH=200;function c$(t,e){if(t.length){let i=t[t.length-1],n=i.selectionsAfter.slice(Math.max(0,i.selectionsAfter.length-PH));return n.length&&n[n.length-1].eq(e)?t:(n.push(e),Bg(t,t.length-1,1e9,i.setSelAfter(n)))}else return[Nn.selection([e])]}function RH(t){let e=t[t.length-1],i=t.slice();return i[t.length-1]=e.setSelAfter(e.selectionsAfter.slice(0,e.selectionsAfter.length-1)),i}function I_(t,e){if(!t.length)return t;let i=t.length,n=Es;for(;i;){let s=QH(t[i-1],e,n);if(s.changes&&!s.changes.empty||s.effects.length){let r=t.slice(0,i);return r[i-1]=s,r}else e=s.mapped,i--,n=s.selectionsAfter}return n.length?[Nn.selection(n)]:Es}function QH(t,e,i){let n=l$(t.selectionsAfter.length?t.selectionsAfter.map(l=>l.map(e)):Es,i);if(!t.changes)return Nn.selection(n);let s=t.changes.map(e),r=e.mapDesc(t.changes,!0),o=t.mapped?t.mapped.composeDesc(r):r;return new Nn(s,Ne.mapEffects(t.effects,e),o,t.startSelection.map(r),n)}const LH=/^(input\.type|delete)($|\.)/;class Sr{constructor(e,i,n=0,s=void 0){this.done=e,this.undone=i,this.prevTime=n,this.prevUserEvent=s}isolate(){return this.prevTime?new Sr(this.done,this.undone):this}addChanges(e,i,n,s,r){let o=this.done,l=o[o.length-1];return l&&l.changes&&!l.changes.empty&&e.changes&&(!n||LH.test(n))&&(!l.selectionsAfter.length&&i-this.prevTime0&&i-this.prevTimei.empty?t.moveByChar(i,e):bO(i,e))}function an(t){return t.textDirectionAt(t.state.selection.main.head)==St.LTR}const u$=t=>h$(t,!an(t)),f$=t=>h$(t,an(t));function d$(t,e){return Js(t,i=>i.empty?t.moveByGroup(i,e):bO(i,e))}const BH=t=>d$(t,!an(t)),$H=t=>d$(t,an(t));function NH(t,e,i){if(e.type.prop(i))return!0;let n=e.to-e.from;return n&&(n>2||/[^\s,.;:]/.test(t.sliceDoc(e.from,e.to)))||e.firstChild}function SO(t,e,i){let n=xt(t).resolveInner(e.head),s=i?ze.closedBy:ze.openedBy;for(let c=e.head;;){let u=i?n.childAfter(c):n.childBefore(c);if(!u)break;NH(t,u,s)?n=u:c=i?u.to:u.from}let r=n.type.prop(s),o,l;return r&&(o=i?br(t,n.from,1):br(t,n.to,-1))&&o.matched?l=i?o.end.to:o.end.from:l=i?n.to:n.from,re.cursor(l,i?-1:1)}const zH=t=>Js(t,e=>SO(t.state,e,!an(t))),jH=t=>Js(t,e=>SO(t.state,e,an(t)));function p$(t,e){return Js(t,i=>{if(!i.empty)return bO(i,e);let n=t.moveVertically(i,e);return n.head!=i.head?n:t.moveToLineBoundary(i,e)})}const m$=t=>p$(t,!1),g$=t=>p$(t,!0);function O$(t){let e=t.scrollDOM.clientHeighto.empty?t.moveVertically(o,e,i.height):bO(o,e));if(s.eq(n.selection))return!1;let r;if(i.selfScroll){let o=t.coordsAtPos(n.selection.main.head),l=t.scrollDOM.getBoundingClientRect(),c=l.top+i.marginTop,u=l.bottom-i.marginBottom;o&&o.top>c&&o.bottomv$(t,!1),Qb=t=>v$(t,!0);function Qa(t,e,i){let n=t.lineBlockAt(e.head),s=t.moveToLineBoundary(e,i);if(s.head==e.head&&s.head!=(i?n.to:n.from)&&(s=t.moveToLineBoundary(e,i,!1)),!i&&s.head==n.from&&n.length){let r=/^\s*/.exec(t.state.sliceDoc(n.from,Math.min(n.from+100,n.to)))[0].length;r&&e.head!=n.from+r&&(s=re.cursor(n.from+r))}return s}const IH=t=>Js(t,e=>Qa(t,e,!0)),VH=t=>Js(t,e=>Qa(t,e,!1)),XH=t=>Js(t,e=>Qa(t,e,!an(t))),ZH=t=>Js(t,e=>Qa(t,e,an(t))),qH=t=>Js(t,e=>re.cursor(t.lineBlockAt(e.head).from,1)),WH=t=>Js(t,e=>re.cursor(t.lineBlockAt(e.head).to,-1));function UH(t,e,i){let n=!1,s=Sh(t.selection,r=>{let o=br(t,r.head,-1)||br(t,r.head,1)||r.head>0&&br(t,r.head-1,1)||r.headUH(t,e);function Ls(t,e){let i=Sh(t.state.selection,n=>{let s=e(n);return re.range(n.anchor,s.head,s.goalColumn,s.bidiLevel||void 0)});return i.eq(t.state.selection)?!1:(t.dispatch(Ks(t.state,i)),!0)}function _$(t,e){return Ls(t,i=>t.moveByChar(i,e))}const y$=t=>_$(t,!an(t)),b$=t=>_$(t,an(t));function S$(t,e){return Ls(t,i=>t.moveByGroup(i,e))}const HH=t=>S$(t,!an(t)),FH=t=>S$(t,an(t)),GH=t=>Ls(t,e=>SO(t.state,e,!an(t))),KH=t=>Ls(t,e=>SO(t.state,e,an(t)));function x$(t,e){return Ls(t,i=>t.moveVertically(i,e))}const w$=t=>x$(t,!1),C$=t=>x$(t,!0);function k$(t,e){return Ls(t,i=>t.moveVertically(i,e,O$(t).height))}const HE=t=>k$(t,!1),FE=t=>k$(t,!0),JH=t=>Ls(t,e=>Qa(t,e,!0)),eF=t=>Ls(t,e=>Qa(t,e,!1)),tF=t=>Ls(t,e=>Qa(t,e,!an(t))),iF=t=>Ls(t,e=>Qa(t,e,an(t))),nF=t=>Ls(t,e=>re.cursor(t.lineBlockAt(e.head).from)),sF=t=>Ls(t,e=>re.cursor(t.lineBlockAt(e.head).to)),GE=({state:t,dispatch:e})=>(e(Ks(t,{anchor:0})),!0),KE=({state:t,dispatch:e})=>(e(Ks(t,{anchor:t.doc.length})),!0),JE=({state:t,dispatch:e})=>(e(Ks(t,{anchor:t.selection.main.anchor,head:0})),!0),eM=({state:t,dispatch:e})=>(e(Ks(t,{anchor:t.selection.main.anchor,head:t.doc.length})),!0),rF=({state:t,dispatch:e})=>(e(t.update({selection:{anchor:0,head:t.doc.length},userEvent:"select"})),!0),oF=({state:t,dispatch:e})=>{let i=xO(t).map(({from:n,to:s})=>re.range(n,Math.min(s+1,t.doc.length)));return e(t.update({selection:re.create(i),userEvent:"select"})),!0},aF=({state:t,dispatch:e})=>{let i=Sh(t.selection,n=>{let s=xt(t),r=s.resolveStack(n.from,1);if(n.empty){let o=s.resolveStack(n.from,-1);o.node.from>=r.node.from&&o.node.to<=r.node.to&&(r=o)}for(let o=r;o;o=o.next){let{node:l}=o;if((l.from=n.to||l.to>n.to&&l.from<=n.from)&&o.next)return re.range(l.to,l.from)}return n});return i.eq(t.selection)?!1:(e(Ks(t,i)),!0)};function T$(t,e){let{state:i}=t,n=i.selection,s=i.selection.ranges.slice();for(let r of i.selection.ranges){let o=i.doc.lineAt(r.head);if(e?o.to0)for(let l=r;;){let c=t.moveVertically(l,e);if(c.heado.to){s.some(u=>u.head==c.head)||s.push(c);break}else{if(c.head==l.head)break;l=c}}}return s.length==n.ranges.length?!1:(t.dispatch(Ks(i,re.create(s,s.length-1))),!0)}const lF=t=>T$(t,!1),cF=t=>T$(t,!0),hF=({state:t,dispatch:e})=>{let i=t.selection,n=null;return i.ranges.length>1?n=re.create([i.main]):i.main.empty||(n=re.create([re.cursor(i.main.head)])),n?(e(Ks(t,n)),!0):!1};function vd(t,e){if(t.state.readOnly)return!1;let i="delete.selection",{state:n}=t,s=n.changeByRange(r=>{let{from:o,to:l}=r;if(o==l){let c=e(r);co&&(i="delete.forward",c=pm(t,c,!0)),o=Math.min(o,c),l=Math.max(l,c)}else o=pm(t,o,!1),l=pm(t,l,!0);return o==l?{range:r}:{changes:{from:o,to:l},range:re.cursor(o,os(t)))n.between(e,e,(s,r)=>{se&&(e=i?r:s)});return e}const A$=(t,e,i)=>vd(t,n=>{let s=n.from,{state:r}=t,o=r.doc.lineAt(s),l,c;if(i&&!e&&s>o.from&&sA$(t,!1,!0),E$=t=>A$(t,!0,!1),M$=(t,e)=>vd(t,i=>{let n=i.head,{state:s}=t,r=s.doc.lineAt(n),o=s.charCategorizer(n);for(let l=null;;){if(n==(e?r.to:r.from)){n==i.head&&r.number!=(e?s.doc.lines:1)&&(n+=e?1:-1);break}let c=Di(r.text,n-r.from,e)+r.from,u=r.text.slice(Math.min(n,c)-r.from,Math.max(n,c)-r.from),d=o(u);if(l!=null&&d!=l)break;(u!=" "||n!=i.head)&&(l=d),n=c}return n}),P$=t=>M$(t,!1),uF=t=>M$(t,!0),fF=t=>vd(t,e=>{let i=t.lineBlockAt(e.head).to;return e.headvd(t,e=>{let i=t.moveToLineBoundary(e,!1).head;return e.head>i?i:Math.max(0,e.head-1)}),pF=t=>vd(t,e=>{let i=t.moveToLineBoundary(e,!0).head;return e.head{if(t.readOnly)return!1;let i=t.changeByRange(n=>({changes:{from:n.from,to:n.to,insert:at.of(["",""])},range:re.cursor(n.from)}));return e(t.update(i,{scrollIntoView:!0,userEvent:"input"})),!0},gF=({state:t,dispatch:e})=>{if(t.readOnly)return!1;let i=t.changeByRange(n=>{if(!n.empty||n.from==0||n.from==t.doc.length)return{range:n};let s=n.from,r=t.doc.lineAt(s),o=s==r.from?s-1:Di(r.text,s-r.from,!1)+r.from,l=s==r.to?s+1:Di(r.text,s-r.from,!0)+r.from;return{changes:{from:o,to:l,insert:t.doc.slice(s,l).append(t.doc.slice(o,s))},range:re.cursor(l)}});return i.changes.empty?!1:(e(t.update(i,{scrollIntoView:!0,userEvent:"move.character"})),!0)};function xO(t){let e=[],i=-1;for(let n of t.selection.ranges){let s=t.doc.lineAt(n.from),r=t.doc.lineAt(n.to);if(!n.empty&&n.to==r.from&&(r=t.doc.lineAt(n.to-1)),i>=s.number){let o=e[e.length-1];o.to=r.to,o.ranges.push(n)}else e.push({from:s.from,to:r.to,ranges:[n]});i=r.number+1}return e}function R$(t,e,i){if(t.readOnly)return!1;let n=[],s=[];for(let r of xO(t)){if(i?r.to==t.doc.length:r.from==0)continue;let o=t.doc.lineAt(i?r.to+1:r.from-1),l=o.length+1;if(i){n.push({from:r.to,to:o.to},{from:r.from,insert:o.text+t.lineBreak});for(let c of r.ranges)s.push(re.range(Math.min(t.doc.length,c.anchor+l),Math.min(t.doc.length,c.head+l)))}else{n.push({from:o.from,to:r.from},{from:r.to,insert:t.lineBreak+o.text});for(let c of r.ranges)s.push(re.range(c.anchor-l,c.head-l))}}return n.length?(e(t.update({changes:n,scrollIntoView:!0,selection:re.create(s,t.selection.mainIndex),userEvent:"move.line"})),!0):!1}const OF=({state:t,dispatch:e})=>R$(t,e,!1),vF=({state:t,dispatch:e})=>R$(t,e,!0);function Q$(t,e,i){if(t.readOnly)return!1;let n=[];for(let r of xO(t))i?n.push({from:r.from,insert:t.doc.slice(r.from,r.to)+t.lineBreak}):n.push({from:r.to,insert:t.lineBreak+t.doc.slice(r.from,r.to)});let s=t.changes(n);return e(t.update({changes:s,selection:t.selection.map(s,i?1:-1),scrollIntoView:!0,userEvent:"input.copyline"})),!0}const _F=({state:t,dispatch:e})=>Q$(t,e,!1),yF=({state:t,dispatch:e})=>Q$(t,e,!0),bF=t=>{if(t.state.readOnly)return!1;let{state:e}=t,i=e.changes(xO(e).map(({from:s,to:r})=>(s>0?s--:r{let r;if(t.lineWrapping){let o=t.lineBlockAt(s.head),l=t.coordsAtPos(s.head,s.assoc||1);l&&(r=o.bottom+t.documentTop-l.bottom+t.defaultLineHeight/2)}return t.moveVertically(s,!0,r)}).map(i);return t.dispatch({changes:i,selection:n,scrollIntoView:!0,userEvent:"delete.line"}),!0};function SF(t,e){if(/\(\)|\[\]|\{\}/.test(t.sliceDoc(e-1,e+1)))return{from:e,to:e};let i=xt(t).resolveInner(e),n=i.childBefore(e),s=i.childAfter(e),r;return n&&s&&n.to<=e&&s.from>=e&&(r=n.type.prop(ze.closedBy))&&r.indexOf(s.name)>-1&&t.doc.lineAt(n.to).from==t.doc.lineAt(s.from).from&&!/\S/.test(t.sliceDoc(n.to,s.from))?{from:n.to,to:s.from}:null}const tM=L$(!1),xF=L$(!0);function L$(t){return({state:e,dispatch:i})=>{if(e.readOnly)return!1;let n=e.changeByRange(s=>{let{from:r,to:o}=s,l=e.doc.lineAt(r),c=!t&&r==o&&SF(e,r);t&&(r=o=(o<=l.to?l:e.doc.lineAt(o)).to);let u=new vO(e,{simulateBreak:r,simulateDoubleBreak:!!c}),d=Jx(u,r);for(d==null&&(d=Ys(/^\s*/.exec(e.doc.lineAt(r).text)[0],e.tabSize));ol.from&&r{let s=[];for(let o=n.from;o<=n.to;){let l=t.doc.lineAt(o);l.number>i&&(n.empty||n.to>l.from)&&(e(l,s,n),i=l.number),o=l.to+1}let r=t.changes(s);return{changes:s,range:re.range(r.mapPos(n.anchor,1),r.mapPos(n.head,1))}})}const wF=({state:t,dispatch:e})=>{if(t.readOnly)return!1;let i=Object.create(null),n=new vO(t,{overrideIndentation:r=>{let o=i[r];return o??-1}}),s=nw(t,(r,o,l)=>{let c=Jx(n,r.from);if(c==null)return;/\S/.test(r.text)||(c=0);let u=/^\s*/.exec(r.text)[0],d=Xf(t,c);(u!=d||l.fromt.readOnly?!1:(e(t.update(nw(t,(i,n)=>{n.push({from:i.from,insert:t.facet(yh)})}),{userEvent:"input.indent"})),!0),B$=({state:t,dispatch:e})=>t.readOnly?!1:(e(t.update(nw(t,(i,n)=>{let s=/^\s*/.exec(i.text)[0];if(!s)return;let r=Ys(s,t.tabSize),o=0,l=Xf(t,Math.max(0,r-Qg(t)));for(;o(t.setTabFocusMode(),!0),kF=[{key:"Ctrl-b",run:u$,shift:y$,preventDefault:!0},{key:"Ctrl-f",run:f$,shift:b$},{key:"Ctrl-p",run:m$,shift:w$},{key:"Ctrl-n",run:g$,shift:C$},{key:"Ctrl-a",run:qH,shift:nF},{key:"Ctrl-e",run:WH,shift:sF},{key:"Ctrl-d",run:E$},{key:"Ctrl-h",run:Lb},{key:"Ctrl-k",run:fF},{key:"Ctrl-Alt-h",run:P$},{key:"Ctrl-o",run:mF},{key:"Ctrl-t",run:gF},{key:"Ctrl-v",run:Qb}],TF=[{key:"ArrowLeft",run:u$,shift:y$,preventDefault:!0},{key:"Mod-ArrowLeft",mac:"Alt-ArrowLeft",run:BH,shift:HH,preventDefault:!0},{mac:"Cmd-ArrowLeft",run:XH,shift:tF,preventDefault:!0},{key:"ArrowRight",run:f$,shift:b$,preventDefault:!0},{key:"Mod-ArrowRight",mac:"Alt-ArrowRight",run:$H,shift:FH,preventDefault:!0},{mac:"Cmd-ArrowRight",run:ZH,shift:iF,preventDefault:!0},{key:"ArrowUp",run:m$,shift:w$,preventDefault:!0},{mac:"Cmd-ArrowUp",run:GE,shift:JE},{mac:"Ctrl-ArrowUp",run:YE,shift:HE},{key:"ArrowDown",run:g$,shift:C$,preventDefault:!0},{mac:"Cmd-ArrowDown",run:KE,shift:eM},{mac:"Ctrl-ArrowDown",run:Qb,shift:FE},{key:"PageUp",run:YE,shift:HE},{key:"PageDown",run:Qb,shift:FE},{key:"Home",run:VH,shift:eF,preventDefault:!0},{key:"Mod-Home",run:GE,shift:JE},{key:"End",run:IH,shift:JH,preventDefault:!0},{key:"Mod-End",run:KE,shift:eM},{key:"Enter",run:tM,shift:tM},{key:"Mod-a",run:rF},{key:"Backspace",run:Lb,shift:Lb,preventDefault:!0},{key:"Delete",run:E$,preventDefault:!0},{key:"Mod-Backspace",mac:"Alt-Backspace",run:P$,preventDefault:!0},{key:"Mod-Delete",mac:"Alt-Delete",run:uF,preventDefault:!0},{mac:"Mod-Backspace",run:dF,preventDefault:!0},{mac:"Mod-Delete",run:pF,preventDefault:!0}].concat(kF.map(t=>({mac:t.key,run:t.run,shift:t.shift}))),AF=[{key:"Alt-ArrowLeft",mac:"Ctrl-ArrowLeft",run:zH,shift:GH},{key:"Alt-ArrowRight",mac:"Ctrl-ArrowRight",run:jH,shift:KH},{key:"Alt-ArrowUp",run:OF},{key:"Shift-Alt-ArrowUp",run:_F},{key:"Alt-ArrowDown",run:vF},{key:"Shift-Alt-ArrowDown",run:yF},{key:"Mod-Alt-ArrowUp",run:lF},{key:"Mod-Alt-ArrowDown",run:cF},{key:"Escape",run:hF},{key:"Mod-Enter",run:xF},{key:"Alt-l",mac:"Ctrl-l",run:oF},{key:"Mod-i",run:aF,preventDefault:!0},{key:"Mod-[",run:B$},{key:"Mod-]",run:D$},{key:"Mod-Alt-\\",run:wF},{key:"Shift-Mod-k",run:bF},{key:"Shift-Mod-\\",run:YH},{key:"Mod-/",run:OH},{key:"Alt-A",run:_H},{key:"Ctrl-m",mac:"Shift-Alt-m",run:CF}].concat(TF),EF={key:"Tab",run:D$,shift:B$},iM=typeof String.prototype.normalize=="function"?t=>t.normalize("NFKD"):t=>t;class hh{constructor(e,i,n=0,s=e.length,r,o){this.test=o,this.value={from:0,to:0},this.done=!1,this.matches=[],this.buffer="",this.bufferPos=0,this.iter=e.iterRange(n,s),this.bufferStart=n,this.normalize=r?l=>r(iM(l)):iM,this.query=this.normalize(i)}peek(){if(this.bufferPos==this.buffer.length){if(this.bufferStart+=this.buffer.length,this.iter.next(),this.iter.done)return-1;this.bufferPos=0,this.buffer=this.iter.value}return Ln(this.buffer,this.bufferPos)}next(){for(;this.matches.length;)this.matches.pop();return this.nextOverlapping()}nextOverlapping(){for(;;){let e=this.peek();if(e<0)return this.done=!0,this;let i=Ax(e),n=this.bufferStart+this.bufferPos;this.bufferPos+=gr(e);let s=this.normalize(i);if(s.length)for(let r=0,o=n;;r++){let l=s.charCodeAt(r),c=this.match(l,o,this.bufferPos+this.bufferStart);if(r==s.length-1){if(c)return this.value=c,this;break}o==n&&rthis.to&&(this.curLine=this.curLine.slice(0,this.to-this.curLineStart)),this.iter.next())}nextLine(){this.curLineStart=this.curLineStart+this.curLine.length+1,this.curLineStart>this.to?this.curLine="":this.getLine(0)}next(){for(let e=this.matchPos-this.curLineStart;;){this.re.lastIndex=e;let i=this.matchPos<=this.to&&this.re.exec(this.curLine);if(i){let n=this.curLineStart+i.index,s=n+i[0].length;if(this.matchPos=$g(this.text,s+(n==s?1:0)),n==this.curLineStart+this.curLine.length&&this.nextLine(),(nthis.value.to)&&(!this.test||this.test(n,s,i)))return this.value={from:n,to:s,match:i},this;e=this.matchPos-this.curLineStart}else if(this.curLineStart+this.curLine.length=n||s.to<=i){let l=new Gc(i,e.sliceString(i,n));return V_.set(e,l),l}if(s.from==i&&s.to==n)return s;let{text:r,from:o}=s;return o>i&&(r=e.sliceString(i,o)+r,o=i),s.to=this.to?this.to:this.text.lineAt(e).to}next(){for(;;){let e=this.re.lastIndex=this.matchPos-this.flat.from,i=this.re.exec(this.flat.text);if(i&&!i[0]&&i.index==e&&(this.re.lastIndex=e+1,i=this.re.exec(this.flat.text)),i){let n=this.flat.from+i.index,s=n+i[0].length;if((this.flat.to>=this.to||i.index+i[0].length<=this.flat.text.length-10)&&(!this.test||this.test(n,s,i)))return this.value={from:n,to:s,match:i},this.matchPos=$g(this.text,s+(n==s?1:0)),this}if(this.flat.to==this.to)return this.done=!0,this;this.flat=Gc.get(this.text,this.flat.from,this.chunkEnd(this.flat.from+this.flat.text.length*2))}}}typeof Symbol<"u"&&(N$.prototype[Symbol.iterator]=z$.prototype[Symbol.iterator]=function(){return this});function MF(t){try{return new RegExp(t,sw),!0}catch{return!1}}function $g(t,e){if(e>=t.length)return e;let i=t.lineAt(e),n;for(;e=56320&&n<57344;)e++;return e}const PF=t=>{let{state:e}=t,i=String(e.doc.lineAt(t.state.selection.main.head).number),{close:n,result:s}=YU(t,{label:e.phrase("Go to line"),input:{type:"text",name:"line",value:i},focus:!0,submitLabel:e.phrase("go")});return s.then(r=>{let o=r&&/^([+-])?(\d+)?(:\d+)?(%)?$/.exec(r.elements.line.value);if(!o){t.dispatch({effects:n});return}let l=e.doc.lineAt(e.selection.main.head),[,c,u,d,p]=o,g=d?+d.slice(1):0,O=u?+u:l.number;if(u&&p){let x=O/100;c&&(x=x*(c=="-"?-1:1)+l.number/e.doc.lines),O=Math.round(e.doc.lines*x)}else u&&c&&(O=O*(c=="-"?-1:1)+l.number);let _=e.doc.line(Math.max(1,Math.min(e.doc.lines,O))),b=re.cursor(_.from+Math.max(0,Math.min(g,_.length)));t.dispatch({effects:[n,ve.scrollIntoView(b.from,{y:"center"})],selection:b})}),!0},RF={highlightWordAroundCursor:!1,minSelectionLength:1,maxMatches:100,wholeWords:!1},QF=Se.define({combine(t){return Dr(t,RF,{highlightWordAroundCursor:(e,i)=>e||i,minSelectionLength:Math.min,maxMatches:Math.min})}});function LF(t){return[zF,NF]}const DF=Pe.mark({class:"cm-selectionMatch"}),BF=Pe.mark({class:"cm-selectionMatch cm-selectionMatch-main"});function nM(t,e,i,n){return(i==0||t(e.sliceDoc(i-1,i))!=Dt.Word)&&(n==e.doc.length||t(e.sliceDoc(n,n+1))!=Dt.Word)}function $F(t,e,i,n){return t(e.sliceDoc(i,i+1))==Dt.Word&&t(e.sliceDoc(n-1,n))==Dt.Word}const NF=Jt.fromClass(class{constructor(t){this.decorations=this.getDeco(t)}update(t){(t.selectionSet||t.docChanged||t.viewportChanged)&&(this.decorations=this.getDeco(t.view))}getDeco(t){let e=t.state.facet(QF),{state:i}=t,n=i.selection;if(n.ranges.length>1)return Pe.none;let s=n.main,r,o=null;if(s.empty){if(!e.highlightWordAroundCursor)return Pe.none;let c=i.wordAt(s.head);if(!c)return Pe.none;o=i.charCategorizer(s.head),r=i.sliceDoc(c.from,c.to)}else{let c=s.to-s.from;if(c200)return Pe.none;if(e.wholeWords){if(r=i.sliceDoc(s.from,s.to),o=i.charCategorizer(s.head),!(nM(o,i,s.from,s.to)&&$F(o,i,s.from,s.to)))return Pe.none}else if(r=i.sliceDoc(s.from,s.to),!r)return Pe.none}let l=[];for(let c of t.visibleRanges){let u=new hh(i.doc,r,c.from,c.to);for(;!u.next().done;){let{from:d,to:p}=u.value;if((!o||nM(o,i,d,p))&&(s.empty&&d<=s.from&&p>=s.to?l.push(BF.range(d,p)):(d>=s.to||p<=s.from)&&l.push(DF.range(d,p)),l.length>e.maxMatches))return Pe.none}}return Pe.set(l)}},{decorations:t=>t.decorations}),zF=ve.baseTheme({".cm-selectionMatch":{backgroundColor:"#99ff7780"},".cm-searchMatch .cm-selectionMatch":{backgroundColor:"transparent"}}),jF=({state:t,dispatch:e})=>{let{selection:i}=t,n=re.create(i.ranges.map(s=>t.wordAt(s.head)||re.cursor(s.head)),i.mainIndex);return n.eq(i)?!1:(e(t.update({selection:n})),!0)};function IF(t,e){let{main:i,ranges:n}=t.selection,s=t.wordAt(i.head),r=s&&s.from==i.from&&s.to==i.to;for(let o=!1,l=new hh(t.doc,e,n[n.length-1].to);;)if(l.next(),l.done){if(o)return null;l=new hh(t.doc,e,0,Math.max(0,n[n.length-1].from-1)),o=!0}else{if(o&&n.some(c=>c.from==l.value.from))continue;if(r){let c=t.wordAt(l.value.from);if(!c||c.from!=l.value.from||c.to!=l.value.to)continue}return l.value}}const VF=({state:t,dispatch:e})=>{let{ranges:i}=t.selection;if(i.some(r=>r.from===r.to))return jF({state:t,dispatch:e});let n=t.sliceDoc(i[0].from,i[0].to);if(t.selection.ranges.some(r=>t.sliceDoc(r.from,r.to)!=n))return!1;let s=IF(t,n);return s?(e(t.update({selection:t.selection.addRange(re.range(s.from,s.to),!1),effects:ve.scrollIntoView(s.to)})),!0):!1},xh=Se.define({combine(t){return Dr(t,{top:!1,caseSensitive:!1,literal:!1,regexp:!1,wholeWord:!1,createPanel:e=>new iG(e),scrollToMatch:e=>ve.scrollIntoView(e)})}});class j${constructor(e){this.search=e.search,this.caseSensitive=!!e.caseSensitive,this.literal=!!e.literal,this.regexp=!!e.regexp,this.replace=e.replace||"",this.valid=!!this.search&&(!this.regexp||MF(this.search)),this.unquoted=this.unquote(this.search),this.wholeWord=!!e.wholeWord,this.test=e.test}unquote(e){return this.literal?e:e.replace(/\\([nrt\\])/g,(i,n)=>n=="n"?` +`:n=="r"?"\r":n=="t"?" ":"\\")}eq(e){return this.search==e.search&&this.replace==e.replace&&this.caseSensitive==e.caseSensitive&&this.regexp==e.regexp&&this.wholeWord==e.wholeWord&&this.test==e.test}create(){return this.regexp?new YF(this):new qF(this)}getCursor(e,i=0,n){let s=e.doc?e:et.create({doc:e});return n==null&&(n=s.doc.length),this.regexp?Rc(this,s,i,n):Pc(this,s,i,n)}}class I${constructor(e){this.spec=e}}function XF(t,e,i){return(n,s,r,o)=>{if(i&&!i(n,s,r,o))return!1;let l=n>=o&&s<=o+r.length?r.slice(n-o,s-o):e.doc.sliceString(n,s);return t(l,e,n,s)}}function Pc(t,e,i,n){let s;return t.wholeWord&&(s=ZF(e.doc,e.charCategorizer(e.selection.main.head))),t.test&&(s=XF(t.test,e,s)),new hh(e.doc,t.unquoted,i,n,t.caseSensitive?void 0:r=>r.toLowerCase(),s)}function ZF(t,e){return(i,n,s,r)=>((r>i||r+s.length=i)return null;s.push(n.value)}return s}highlight(e,i,n,s){let r=Pc(this.spec,e,Math.max(0,i-this.spec.unquoted.length),Math.min(n+this.spec.unquoted.length,e.doc.length));for(;!r.next().done;)s(r.value.from,r.value.to)}}function WF(t,e,i){return(n,s,r)=>(!i||i(n,s,r))&&t(r[0],e,n,s)}function Rc(t,e,i,n){let s;return t.wholeWord&&(s=UF(e.charCategorizer(e.selection.main.head))),t.test&&(s=WF(t.test,e,s)),new N$(e.doc,t.search,{ignoreCase:!t.caseSensitive,test:s},i,n)}function Ng(t,e){return t.slice(Di(t,e,!1),e)}function zg(t,e){return t.slice(e,Di(t,e))}function UF(t){return(e,i,n)=>!n[0].length||(t(Ng(n.input,n.index))!=Dt.Word||t(zg(n.input,n.index))!=Dt.Word)&&(t(zg(n.input,n.index+n[0].length))!=Dt.Word||t(Ng(n.input,n.index+n[0].length))!=Dt.Word)}class YF extends I${nextMatch(e,i,n){let s=Rc(this.spec,e,n,e.doc.length).next();return s.done&&(s=Rc(this.spec,e,0,i).next()),s.done?null:s.value}prevMatchInRange(e,i,n){for(let s=1;;s++){let r=Math.max(i,n-s*1e4),o=Rc(this.spec,e,r,n),l=null;for(;!o.next().done;)l=o.value;if(l&&(r==i||l.from>r+10))return l;if(r==i)return null}}prevMatch(e,i,n){return this.prevMatchInRange(e,0,i)||this.prevMatchInRange(e,n,e.doc.length)}getReplacement(e){return this.spec.unquote(this.spec.replace).replace(/\$([$&]|\d+)/g,(i,n)=>{if(n=="&")return e.match[0];if(n=="$")return"$";for(let s=n.length;s>0;s--){let r=+n.slice(0,s);if(r>0&&r=i)return null;s.push(n.value)}return s}highlight(e,i,n,s){let r=Rc(this.spec,e,Math.max(0,i-250),Math.min(n+250,e.doc.length));for(;!r.next().done;)s(r.value.from,r.value.to)}}const Zf=Ne.define(),rw=Ne.define(),ba=Bi.define({create(t){return new X_(Db(t).create(),null)},update(t,e){for(let i of e.effects)i.is(Zf)?t=new X_(i.value.create(),t.panel):i.is(rw)&&(t=new X_(t.query,i.value?ow:null));return t},provide:t=>Nf.from(t,e=>e.panel)});class X_{constructor(e,i){this.query=e,this.panel=i}}const HF=Pe.mark({class:"cm-searchMatch"}),FF=Pe.mark({class:"cm-searchMatch cm-searchMatch-selected"}),GF=Jt.fromClass(class{constructor(t){this.view=t,this.decorations=this.highlight(t.state.field(ba))}update(t){let e=t.state.field(ba);(e!=t.startState.field(ba)||t.docChanged||t.selectionSet||t.viewportChanged)&&(this.decorations=this.highlight(e))}highlight({query:t,panel:e}){if(!e||!t.spec.valid)return Pe.none;let{view:i}=this,n=new yo;for(let s=0,r=i.visibleRanges,o=r.length;sr[s+1].from-500;)c=r[++s].to;t.highlight(i.state,l,c,(u,d)=>{let p=i.state.selection.ranges.some(g=>g.from==u&&g.to==d);n.add(u,d,p?FF:HF)})}return n.finish()}},{decorations:t=>t.decorations});function _d(t){return e=>{let i=e.state.field(ba,!1);return i&&i.query.spec.valid?t(e,i):Z$(e)}}const jg=_d((t,{query:e})=>{let{to:i}=t.state.selection.main,n=e.nextMatch(t.state,i,i);if(!n)return!1;let s=re.single(n.from,n.to),r=t.state.facet(xh);return t.dispatch({selection:s,effects:[aw(t,n),r.scrollToMatch(s.main,t)],userEvent:"select.search"}),X$(t),!0}),Ig=_d((t,{query:e})=>{let{state:i}=t,{from:n}=i.selection.main,s=e.prevMatch(i,n,n);if(!s)return!1;let r=re.single(s.from,s.to),o=t.state.facet(xh);return t.dispatch({selection:r,effects:[aw(t,s),o.scrollToMatch(r.main,t)],userEvent:"select.search"}),X$(t),!0}),KF=_d((t,{query:e})=>{let i=e.matchAll(t.state,1e3);return!i||!i.length?!1:(t.dispatch({selection:re.create(i.map(n=>re.range(n.from,n.to))),userEvent:"select.search.matches"}),!0)}),JF=({state:t,dispatch:e})=>{let i=t.selection;if(i.ranges.length>1||i.main.empty)return!1;let{from:n,to:s}=i.main,r=[],o=0;for(let l=new hh(t.doc,t.sliceDoc(n,s));!l.next().done;){if(r.length>1e3)return!1;l.value.from==n&&(o=r.length),r.push(re.range(l.value.from,l.value.to))}return e(t.update({selection:re.create(r,o),userEvent:"select.search.matches"})),!0},sM=_d((t,{query:e})=>{let{state:i}=t,{from:n,to:s}=i.selection.main;if(i.readOnly)return!1;let r=e.nextMatch(i,n,n);if(!r)return!1;let o=r,l=[],c,u,d=[];o.from==n&&o.to==s&&(u=i.toText(e.getReplacement(o)),l.push({from:o.from,to:o.to,insert:u}),o=e.nextMatch(i,o.from,o.to),d.push(ve.announce.of(i.phrase("replaced match on line $",i.doc.lineAt(n).number)+".")));let p=t.state.changes(l);return o&&(c=re.single(o.from,o.to).map(p),d.push(aw(t,o)),d.push(i.facet(xh).scrollToMatch(c.main,t))),t.dispatch({changes:p,selection:c,effects:d,userEvent:"input.replace"}),!0}),eG=_d((t,{query:e})=>{if(t.state.readOnly)return!1;let i=e.matchAll(t.state,1e9).map(s=>{let{from:r,to:o}=s;return{from:r,to:o,insert:e.getReplacement(s)}});if(!i.length)return!1;let n=t.state.phrase("replaced $ matches",i.length)+".";return t.dispatch({changes:i,effects:ve.announce.of(n),userEvent:"input.replace.all"}),!0});function ow(t){return t.state.facet(xh).createPanel(t)}function Db(t,e){var i,n,s,r,o;let l=t.selection.main,c=l.empty||l.to>l.from+100?"":t.sliceDoc(l.from,l.to);if(e&&!c)return e;let u=t.facet(xh);return new j$({search:((i=e==null?void 0:e.literal)!==null&&i!==void 0?i:u.literal)?c:c.replace(/\n/g,"\\n"),caseSensitive:(n=e==null?void 0:e.caseSensitive)!==null&&n!==void 0?n:u.caseSensitive,literal:(s=e==null?void 0:e.literal)!==null&&s!==void 0?s:u.literal,regexp:(r=e==null?void 0:e.regexp)!==null&&r!==void 0?r:u.regexp,wholeWord:(o=e==null?void 0:e.wholeWord)!==null&&o!==void 0?o:u.wholeWord})}function V$(t){let e=Wx(t,ow);return e&&e.dom.querySelector("[main-field]")}function X$(t){let e=V$(t);e&&e==t.root.activeElement&&e.select()}const Z$=t=>{let e=t.state.field(ba,!1);if(e&&e.panel){let i=V$(t);if(i&&i!=t.root.activeElement){let n=Db(t.state,e.query.spec);n.valid&&t.dispatch({effects:Zf.of(n)}),i.focus(),i.select()}}else t.dispatch({effects:[rw.of(!0),e?Zf.of(Db(t.state,e.query.spec)):Ne.appendConfig.of(sG)]});return!0},q$=t=>{let e=t.state.field(ba,!1);if(!e||!e.panel)return!1;let i=Wx(t,ow);return i&&i.dom.contains(t.root.activeElement)&&t.focus(),t.dispatch({effects:rw.of(!1)}),!0},tG=[{key:"Mod-f",run:Z$,scope:"editor search-panel"},{key:"F3",run:jg,shift:Ig,scope:"editor search-panel",preventDefault:!0},{key:"Mod-g",run:jg,shift:Ig,scope:"editor search-panel",preventDefault:!0},{key:"Escape",run:q$,scope:"editor search-panel"},{key:"Mod-Shift-l",run:JF},{key:"Mod-Alt-g",run:PF},{key:"Mod-d",run:VF,preventDefault:!0}];class iG{constructor(e){this.view=e;let i=this.query=e.state.field(ba).query.spec;this.commit=this.commit.bind(this),this.searchField=vt("input",{value:i.search,placeholder:Hn(e,"Find"),"aria-label":Hn(e,"Find"),class:"cm-textfield",name:"search",form:"","main-field":"true",onchange:this.commit,onkeyup:this.commit}),this.replaceField=vt("input",{value:i.replace,placeholder:Hn(e,"Replace"),"aria-label":Hn(e,"Replace"),class:"cm-textfield",name:"replace",form:"",onchange:this.commit,onkeyup:this.commit}),this.caseField=vt("input",{type:"checkbox",name:"case",form:"",checked:i.caseSensitive,onchange:this.commit}),this.reField=vt("input",{type:"checkbox",name:"re",form:"",checked:i.regexp,onchange:this.commit}),this.wordField=vt("input",{type:"checkbox",name:"word",form:"",checked:i.wholeWord,onchange:this.commit});function n(s,r,o){return vt("button",{class:"cm-button",name:s,onclick:r,type:"button"},o)}this.dom=vt("div",{onkeydown:s=>this.keydown(s),class:"cm-search"},[this.searchField,n("next",()=>jg(e),[Hn(e,"next")]),n("prev",()=>Ig(e),[Hn(e,"previous")]),n("select",()=>KF(e),[Hn(e,"all")]),vt("label",null,[this.caseField,Hn(e,"match case")]),vt("label",null,[this.reField,Hn(e,"regexp")]),vt("label",null,[this.wordField,Hn(e,"by word")]),...e.state.readOnly?[]:[vt("br"),this.replaceField,n("replace",()=>sM(e),[Hn(e,"replace")]),n("replaceAll",()=>eG(e),[Hn(e,"replace all")])],vt("button",{name:"close",onclick:()=>q$(e),"aria-label":Hn(e,"close"),type:"button"},["×"])])}commit(){let e=new j$({search:this.searchField.value,caseSensitive:this.caseField.checked,regexp:this.reField.checked,wholeWord:this.wordField.checked,replace:this.replaceField.value});e.eq(this.query)||(this.query=e,this.view.dispatch({effects:Zf.of(e)}))}keydown(e){sU(this.view,e,"search-panel")?e.preventDefault():e.keyCode==13&&e.target==this.searchField?(e.preventDefault(),(e.shiftKey?Ig:jg)(this.view)):e.keyCode==13&&e.target==this.replaceField&&(e.preventDefault(),sM(this.view))}update(e){for(let i of e.transactions)for(let n of i.effects)n.is(Zf)&&!n.value.eq(this.query)&&this.setQuery(n.value)}setQuery(e){this.query=e,this.searchField.value=e.search,this.replaceField.value=e.replace,this.caseField.checked=e.caseSensitive,this.reField.checked=e.regexp,this.wordField.checked=e.wholeWord}mount(){this.searchField.select()}get pos(){return 80}get top(){return this.view.state.facet(xh).top}}function Hn(t,e){return t.state.phrase(e)}const mm=30,gm=/[\s\.,:;?!]/;function aw(t,{from:e,to:i}){let n=t.state.doc.lineAt(e),s=t.state.doc.lineAt(i).to,r=Math.max(n.from,e-mm),o=Math.min(s,i+mm),l=t.state.sliceDoc(r,o);if(r!=n.from){for(let c=0;cl.length-mm;c--)if(!gm.test(l[c-1])&&gm.test(l[c])){l=l.slice(0,c);break}}return ve.announce.of(`${t.state.phrase("current match")}. ${l} ${t.state.phrase("on line")} ${n.number}.`)}const nG=ve.baseTheme({".cm-panel.cm-search":{padding:"2px 6px 4px",position:"relative","& [name=close]":{position:"absolute",top:"0",right:"4px",backgroundColor:"inherit",border:"none",font:"inherit",padding:0,margin:0},"& input, & button, & label":{margin:".2em .6em .2em 0"},"& input[type=checkbox]":{marginRight:".2em"},"& label":{fontSize:"80%",whiteSpace:"pre"}},"&light .cm-searchMatch":{backgroundColor:"#ffff0054"},"&dark .cm-searchMatch":{backgroundColor:"#00ffff8a"},"&light .cm-searchMatch-selected":{backgroundColor:"#ff6a0054"},"&dark .cm-searchMatch-selected":{backgroundColor:"#ff00ff8a"}}),sG=[ba,wo.low(GF),nG];class lw{constructor(e,i,n,s){this.state=e,this.pos=i,this.explicit=n,this.view=s,this.abortListeners=[],this.abortOnDocChange=!1}tokenBefore(e){let i=xt(this.state).resolveInner(this.pos,-1);for(;i&&e.indexOf(i.name)<0;)i=i.parent;return i?{from:i.from,to:this.pos,text:this.state.sliceDoc(i.from,this.pos),type:i.type}:null}matchBefore(e){let i=this.state.doc.lineAt(this.pos),n=Math.max(i.from,this.pos-250),s=i.text.slice(n-i.from,this.pos-i.from),r=s.search(U$(e,!1));return r<0?null:{from:n+r,to:this.pos,text:s.slice(r)}}get aborted(){return this.abortListeners==null}addEventListener(e,i,n){e=="abort"&&this.abortListeners&&(this.abortListeners.push(i),n&&n.onDocChange&&(this.abortOnDocChange=!0))}}function rM(t){let e=Object.keys(t).join(""),i=/\w/.test(e);return i&&(e=e.replace(/\w/g,"")),`[${i?"\\w":""}${e.replace(/[^\w\s]/g,"\\$&")}]`}function rG(t){let e=Object.create(null),i=Object.create(null);for(let{label:s}of t){e[s[0]]=!0;for(let r=1;rtypeof s=="string"?{label:s}:s),[i,n]=e.every(s=>/^\w+$/.test(s.label))?[/\w*$/,/\w+$/]:rG(e);return s=>{let r=s.matchBefore(n);return r||s.explicit?{from:r?r.from:s.pos,options:e,validFor:i}:null}}function oG(t,e){return i=>{for(let n=xt(i.state).resolveInner(i.pos,-1);n;n=n.parent){if(t.indexOf(n.name)>-1)return null;if(n.type.isTop)break}return e(i)}}class oM{constructor(e,i,n,s){this.completion=e,this.source=i,this.match=n,this.score=s}}function xl(t){return t.selection.main.from}function U$(t,e){var i;let{source:n}=t,s=e&&n[0]!="^",r=n[n.length-1]!="$";return!s&&!r?t:new RegExp(`${s?"^":""}(?:${n})${r?"$":""}`,(i=t.flags)!==null&&i!==void 0?i:t.ignoreCase?"i":"")}const cw=Lr.define();function aG(t,e,i,n){let{main:s}=t.selection,r=i-s.from,o=n-s.from;return{...t.changeByRange(l=>{if(l!=s&&i!=n&&t.sliceDoc(l.from+r,l.from+o)!=t.sliceDoc(i,n))return{range:l};let c=t.toText(e);return{changes:{from:l.from+r,to:n==s.from?l.to:l.from+o,insert:c},range:re.cursor(l.from+r+c.length)}}),scrollIntoView:!0,userEvent:"input.complete"}}const aM=new WeakMap;function lG(t){if(!Array.isArray(t))return t;let e=aM.get(t);return e||aM.set(t,e=W$(t)),e}const Vg=Ne.define(),qf=Ne.define();class cG{constructor(e){this.pattern=e,this.chars=[],this.folded=[],this.any=[],this.precise=[],this.byWord=[],this.score=0,this.matched=[];for(let i=0;i=48&&Q<=57||Q>=97&&Q<=122?2:Q>=65&&Q<=90?1:0:(E=Ax(Q))!=E.toLowerCase()?1:E!=E.toUpperCase()?2:0;(!k||N==1&&x||A==0&&N!=0)&&(i[p]==Q||n[p]==Q&&(g=!0)?o[p++]=k:o.length&&(w=!1)),A=N,k+=gr(Q)}return p==c&&o[0]==0&&w?this.result(-100+(g?-200:0),o,e):O==c&&_==0?this.ret(-200-e.length+(b==e.length?0:-100),[0,b]):l>-1?this.ret(-700-e.length,[l,l+this.pattern.length]):O==c?this.ret(-900-e.length,[_,b]):p==c?this.result(-100+(g?-200:0)+-700+(w?0:-1100),o,e):i.length==2?null:this.result((s[0]?-700:0)+-200+-1100,s,e)}result(e,i,n){let s=[],r=0;for(let o of i){let l=o+(this.astral?gr(Ln(n,o)):1);r&&s[r-1]==o?s[r-1]=l:(s[r++]=o,s[r++]=l)}return this.ret(e-n.length,s)}}class hG{constructor(e){this.pattern=e,this.matched=[],this.score=0,this.folded=e.toLowerCase()}match(e){if(e.length!1,activateOnTypingDelay:100,selectOnOpen:!0,override:null,closeOnBlur:!0,maxRenderedOptions:100,defaultKeymap:!0,tooltipClass:()=>"",optionClass:()=>"",aboveCursor:!1,icons:!0,addToOptions:[],positionInfo:uG,filterStrict:!1,compareCompletions:(e,i)=>(e.sortText||e.label).localeCompare(i.sortText||i.label),interactionDelay:75,updateSyncTime:100},{defaultKeymap:(e,i)=>e&&i,closeOnBlur:(e,i)=>e&&i,icons:(e,i)=>e&&i,tooltipClass:(e,i)=>n=>lM(e(n),i(n)),optionClass:(e,i)=>n=>lM(e(n),i(n)),addToOptions:(e,i)=>e.concat(i),filterStrict:(e,i)=>e||i})}});function lM(t,e){return t?e?t+" "+e:t:e}function uG(t,e,i,n,s,r){let o=t.textDirection==St.RTL,l=o,c=!1,u="top",d,p,g=e.left-s.left,O=s.right-e.right,_=n.right-n.left,b=n.bottom-n.top;if(l&&g=b||k>e.top?d=i.bottom-e.top:(u="bottom",d=e.bottom-i.top)}let x=(e.bottom-e.top)/r.offsetHeight,w=(e.right-e.left)/r.offsetWidth;return{style:`${u}: ${d/x}px; max-width: ${p/w}px`,class:"cm-completionInfo-"+(c?o?"left-narrow":"right-narrow":l?"left":"right")}}function fG(t){let e=t.addToOptions.slice();return t.icons&&e.push({render(i){let n=document.createElement("div");return n.classList.add("cm-completionIcon"),i.type&&n.classList.add(...i.type.split(/\s+/g).map(s=>"cm-completionIcon-"+s)),n.setAttribute("aria-hidden","true"),n},position:20}),e.push({render(i,n,s,r){let o=document.createElement("span");o.className="cm-completionLabel";let l=i.displayLabel||i.label,c=0;for(let u=0;uc&&o.appendChild(document.createTextNode(l.slice(c,d)));let g=o.appendChild(document.createElement("span"));g.appendChild(document.createTextNode(l.slice(d,p))),g.className="cm-completionMatchedText",c=p}return ci.position-n.position).map(i=>i.render)}function Z_(t,e,i){if(t<=i)return{from:0,to:t};if(e<0&&(e=0),e<=t>>1){let s=Math.floor(e/i);return{from:s*i,to:(s+1)*i}}let n=Math.floor((t-e)/i);return{from:t-(n+1)*i,to:t-n*i}}class dG{constructor(e,i,n){this.view=e,this.stateField=i,this.applyCompletion=n,this.info=null,this.infoDestroy=null,this.placeInfoReq={read:()=>this.measureInfo(),write:c=>this.placeInfo(c),key:this},this.space=null,this.currentClass="";let s=e.state.field(i),{options:r,selected:o}=s.open,l=e.state.facet(Li);this.optionContent=fG(l),this.optionClass=l.optionClass,this.tooltipClass=l.tooltipClass,this.range=Z_(r.length,o,l.maxRenderedOptions),this.dom=document.createElement("div"),this.dom.className="cm-tooltip-autocomplete",this.updateTooltipClass(e.state),this.dom.addEventListener("mousedown",c=>{let{options:u}=e.state.field(i).open;for(let d=c.target,p;d&&d!=this.dom;d=d.parentNode)if(d.nodeName=="LI"&&(p=/-(\d+)$/.exec(d.id))&&+p[1]{let u=e.state.field(this.stateField,!1);u&&u.tooltip&&e.state.facet(Li).closeOnBlur&&c.relatedTarget!=e.contentDOM&&e.dispatch({effects:qf.of(null)})}),this.showOptions(r,s.id)}mount(){this.updateSel()}showOptions(e,i){this.list&&this.list.remove(),this.list=this.dom.appendChild(this.createListBox(e,i,this.range)),this.list.addEventListener("scroll",()=>{this.info&&this.view.requestMeasure(this.placeInfoReq)})}update(e){var i;let n=e.state.field(this.stateField),s=e.startState.field(this.stateField);if(this.updateTooltipClass(e.state),n!=s){let{options:r,selected:o,disabled:l}=n.open;(!s.open||s.open.options!=r)&&(this.range=Z_(r.length,o,e.state.facet(Li).maxRenderedOptions),this.showOptions(r,n.id)),this.updateSel(),l!=((i=s.open)===null||i===void 0?void 0:i.disabled)&&this.dom.classList.toggle("cm-tooltip-autocomplete-disabled",!!l)}}updateTooltipClass(e){let i=this.tooltipClass(e);if(i!=this.currentClass){for(let n of this.currentClass.split(" "))n&&this.dom.classList.remove(n);for(let n of i.split(" "))n&&this.dom.classList.add(n);this.currentClass=i}}positioned(e){this.space=e,this.info&&this.view.requestMeasure(this.placeInfoReq)}updateSel(){let e=this.view.state.field(this.stateField),i=e.open;(i.selected>-1&&i.selected=this.range.to)&&(this.range=Z_(i.options.length,i.selected,this.view.state.facet(Li).maxRenderedOptions),this.showOptions(i.options,e.id));let n=this.updateSelectedOption(i.selected);if(n){this.destroyInfo();let{completion:s}=i.options[i.selected],{info:r}=s;if(!r)return;let o=typeof r=="string"?document.createTextNode(r):r(s);if(!o)return;"then"in o?o.then(l=>{l&&this.view.state.field(this.stateField,!1)==e&&this.addInfoPane(l,s)}).catch(l=>$n(this.view.state,l,"completion info")):(this.addInfoPane(o,s),n.setAttribute("aria-describedby",this.info.id))}}addInfoPane(e,i){this.destroyInfo();let n=this.info=document.createElement("div");if(n.className="cm-tooltip cm-completionInfo",n.id="cm-completionInfo-"+Math.floor(Math.random()*65535).toString(16),e.nodeType!=null)n.appendChild(e),this.infoDestroy=null;else{let{dom:s,destroy:r}=e;n.appendChild(s),this.infoDestroy=r||null}this.dom.appendChild(n),this.view.requestMeasure(this.placeInfoReq)}updateSelectedOption(e){let i=null;for(let n=this.list.firstChild,s=this.range.from;n;n=n.nextSibling,s++)n.nodeName!="LI"||!n.id?s--:s==e?n.hasAttribute("aria-selected")||(n.setAttribute("aria-selected","true"),i=n):n.hasAttribute("aria-selected")&&(n.removeAttribute("aria-selected"),n.removeAttribute("aria-describedby"));return i&&mG(this.list,i),i}measureInfo(){let e=this.dom.querySelector("[aria-selected]");if(!e||!this.info)return null;let i=this.dom.getBoundingClientRect(),n=this.info.getBoundingClientRect(),s=e.getBoundingClientRect(),r=this.space;if(!r){let o=this.dom.ownerDocument.documentElement;r={left:0,top:0,right:o.clientWidth,bottom:o.clientHeight}}return s.top>Math.min(r.bottom,i.bottom)-10||s.bottom{o.target==s&&o.preventDefault()});let r=null;for(let o=n.from;on.from||n.from==0))if(r=g,typeof u!="string"&&u.header)s.appendChild(u.header(u));else{let O=s.appendChild(document.createElement("completion-section"));O.textContent=g}}const d=s.appendChild(document.createElement("li"));d.id=i+"-"+o,d.setAttribute("role","option");let p=this.optionClass(l);p&&(d.className=p);for(let g of this.optionContent){let O=g(l,this.view.state,this.view,c);O&&d.appendChild(O)}}return n.from&&s.classList.add("cm-completionListIncompleteTop"),n.tonew dG(i,t,e)}function mG(t,e){let i=t.getBoundingClientRect(),n=e.getBoundingClientRect(),s=i.height/t.offsetHeight;n.topi.bottom&&(t.scrollTop+=(n.bottom-i.bottom)/s)}function cM(t){return(t.boost||0)*100+(t.apply?10:0)+(t.info?5:0)+(t.type?1:0)}function gG(t,e){let i=[],n=null,s=null,r=d=>{i.push(d);let{section:p}=d.completion;if(p){n||(n=[]);let g=typeof p=="string"?p:p.name;n.some(O=>O.name==g)||n.push(typeof p=="string"?{name:g}:p)}},o=e.facet(Li);for(let d of t)if(d.hasResult()){let p=d.result.getMatch;if(d.result.filter===!1)for(let g of d.result.options)r(new oM(g,d.source,p?p(g):[],1e9-i.length));else{let g=e.sliceDoc(d.from,d.to),O,_=o.filterStrict?new hG(g):new cG(g);for(let b of d.result.options)if(O=_.match(b.label)){let x=b.displayLabel?p?p(b,O.matched):[]:O.matched,w=O.score+(b.boost||0);if(r(new oM(b,d.source,x,w)),typeof b.section=="object"&&b.section.rank==="dynamic"){let{name:k}=b.section;s||(s=Object.create(null)),s[k]=Math.max(w,s[k]||-1e9)}}}}if(n){let d=Object.create(null),p=0,g=(O,_)=>(O.rank==="dynamic"&&_.rank==="dynamic"?s[_.name]-s[O.name]:0)||(typeof O.rank=="number"?O.rank:1e9)-(typeof _.rank=="number"?_.rank:1e9)||(O.name<_.name?-1:1);for(let O of n.sort(g))p-=1e5,d[O.name]=p;for(let O of i){let{section:_}=O.completion;_&&(O.score+=d[typeof _=="string"?_:_.name])}}let l=[],c=null,u=o.compareCompletions;for(let d of i.sort((p,g)=>g.score-p.score||u(p.completion,g.completion))){let p=d.completion;!c||c.label!=p.label||c.detail!=p.detail||c.type!=null&&p.type!=null&&c.type!=p.type||c.apply!=p.apply||c.boost!=p.boost?l.push(d):cM(d.completion)>cM(c)&&(l[l.length-1]=d),c=d.completion}return l}class Ic{constructor(e,i,n,s,r,o){this.options=e,this.attrs=i,this.tooltip=n,this.timestamp=s,this.selected=r,this.disabled=o}setSelected(e,i){return e==this.selected||e>=this.options.length?this:new Ic(this.options,hM(i,e),this.tooltip,this.timestamp,e,this.disabled)}static build(e,i,n,s,r,o){if(s&&!o&&e.some(u=>u.isPending))return s.setDisabled();let l=gG(e,i);if(!l.length)return s&&e.some(u=>u.isPending)?s.setDisabled():null;let c=i.facet(Li).selectOnOpen?0:-1;if(s&&s.selected!=c&&s.selected!=-1){let u=s.options[s.selected].completion;for(let d=0;dd.hasResult()?Math.min(u,d.from):u,1e8),create:SG,above:r.aboveCursor},s?s.timestamp:Date.now(),c,!1)}map(e){return new Ic(this.options,this.attrs,{...this.tooltip,pos:e.mapPos(this.tooltip.pos)},this.timestamp,this.selected,this.disabled)}setDisabled(){return new Ic(this.options,this.attrs,this.tooltip,this.timestamp,this.selected,!0)}}class Xg{constructor(e,i,n){this.active=e,this.id=i,this.open=n}static start(){return new Xg(yG,"cm-ac-"+Math.floor(Math.random()*2e6).toString(36),null)}update(e){let{state:i}=e,n=i.facet(Li),r=(n.override||i.languageDataAt("autocomplete",xl(i)).map(lG)).map(c=>(this.active.find(d=>d.source==c)||new Ms(c,this.active.some(d=>d.state!=0)?1:0)).update(e,n));r.length==this.active.length&&r.every((c,u)=>c==this.active[u])&&(r=this.active);let o=this.open,l=e.effects.some(c=>c.is(hw));o&&e.docChanged&&(o=o.map(e.changes)),e.selection||r.some(c=>c.hasResult()&&e.changes.touchesRange(c.from,c.to))||!OG(r,this.active)||l?o=Ic.build(r,i,this.id,o,n,l):o&&o.disabled&&!r.some(c=>c.isPending)&&(o=null),!o&&r.every(c=>!c.isPending)&&r.some(c=>c.hasResult())&&(r=r.map(c=>c.hasResult()?new Ms(c.source,0):c));for(let c of e.effects)c.is(H$)&&(o=o&&o.setSelected(c.value,this.id));return r==this.active&&o==this.open?this:new Xg(r,this.id,o)}get tooltip(){return this.open?this.open.tooltip:null}get attrs(){return this.open?this.open.attrs:this.active.length?vG:_G}}function OG(t,e){if(t==e)return!0;for(let i=0,n=0;;){for(;i-1&&(i["aria-activedescendant"]=t+"-"+e),i}const yG=[];function Y$(t,e){if(t.isUserEvent("input.complete")){let n=t.annotation(cw);if(n&&e.activateOnCompletion(n))return 12}let i=t.isUserEvent("input.type");return i&&e.activateOnTyping?5:i?1:t.isUserEvent("delete.backward")?2:t.selection?8:t.docChanged?16:0}class Ms{constructor(e,i,n=!1){this.source=e,this.state=i,this.explicit=n}hasResult(){return!1}get isPending(){return this.state==1}update(e,i){let n=Y$(e,i),s=this;(n&8||n&16&&this.touches(e))&&(s=new Ms(s.source,0)),n&4&&s.state==0&&(s=new Ms(this.source,1)),s=s.updateFor(e,n);for(let r of e.effects)if(r.is(Vg))s=new Ms(s.source,1,r.value);else if(r.is(qf))s=new Ms(s.source,0);else if(r.is(hw))for(let o of r.value)o.source==s.source&&(s=o);return s}updateFor(e,i){return this.map(e.changes)}map(e){return this}touches(e){return e.changes.touchesRange(xl(e.state))}}class Kc extends Ms{constructor(e,i,n,s,r,o){super(e,3,i),this.limit=n,this.result=s,this.from=r,this.to=o}hasResult(){return!0}updateFor(e,i){var n;if(!(i&3))return this.map(e.changes);let s=this.result;s.map&&!e.changes.empty&&(s=s.map(s,e.changes));let r=e.changes.mapPos(this.from),o=e.changes.mapPos(this.to,1),l=xl(e.state);if(l>o||!s||i&2&&(xl(e.startState)==this.from||li.map(e))}}),H$=Ne.define(),Dn=Bi.define({create(){return Xg.start()},update(t,e){return t.update(e)},provide:t=>[qx.from(t,e=>e.tooltip),ve.contentAttributes.from(t,e=>e.attrs)]});function uw(t,e){const i=e.completion.apply||e.completion.label;let n=t.state.field(Dn).active.find(s=>s.source==e.source);return n instanceof Kc?(typeof i=="string"?t.dispatch({...aG(t.state,i,n.from,n.to),annotations:cw.of(e.completion)}):i(t,e.completion,n.from,n.to),!0):!1}const SG=pG(Dn,uw);function Om(t,e="option"){return i=>{let n=i.state.field(Dn,!1);if(!n||!n.open||n.open.disabled||Date.now()-n.open.timestamp-1?n.open.selected+s*(t?1:-1):t?0:o-1;return l<0?l=e=="page"?0:o-1:l>=o&&(l=e=="page"?o-1:0),i.dispatch({effects:H$.of(l)}),!0}}const xG=t=>{let e=t.state.field(Dn,!1);return t.state.readOnly||!e||!e.open||e.open.selected<0||e.open.disabled||Date.now()-e.open.timestampt.state.field(Dn,!1)?(t.dispatch({effects:Vg.of(!0)}),!0):!1,wG=t=>{let e=t.state.field(Dn,!1);return!e||!e.active.some(i=>i.state!=0)?!1:(t.dispatch({effects:qf.of(null)}),!0)};class CG{constructor(e,i){this.active=e,this.context=i,this.time=Date.now(),this.updates=[],this.done=void 0}}const kG=50,TG=1e3,AG=Jt.fromClass(class{constructor(t){this.view=t,this.debounceUpdate=-1,this.running=[],this.debounceAccept=-1,this.pendingStart=!1,this.composing=0;for(let e of t.state.field(Dn).active)e.isPending&&this.startQuery(e)}update(t){let e=t.state.field(Dn),i=t.state.facet(Li);if(!t.selectionSet&&!t.docChanged&&t.startState.field(Dn)==e)return;let n=t.transactions.some(r=>{let o=Y$(r,i);return o&8||(r.selection||r.docChanged)&&!(o&3)});for(let r=0;rkG&&Date.now()-o.time>TG){for(let l of o.context.abortListeners)try{l()}catch(c){$n(this.view.state,c)}o.context.abortListeners=null,this.running.splice(r--,1)}else o.updates.push(...t.transactions)}this.debounceUpdate>-1&&clearTimeout(this.debounceUpdate),t.transactions.some(r=>r.effects.some(o=>o.is(Vg)))&&(this.pendingStart=!0);let s=this.pendingStart?50:i.activateOnTypingDelay;if(this.debounceUpdate=e.active.some(r=>r.isPending&&!this.running.some(o=>o.active.source==r.source))?setTimeout(()=>this.startUpdate(),s):-1,this.composing!=0)for(let r of t.transactions)r.isUserEvent("input.type")?this.composing=2:this.composing==2&&r.selection&&(this.composing=3)}startUpdate(){this.debounceUpdate=-1,this.pendingStart=!1;let{state:t}=this.view,e=t.field(Dn);for(let i of e.active)i.isPending&&!this.running.some(n=>n.active.source==i.source)&&this.startQuery(i);this.running.length&&e.open&&e.open.disabled&&(this.debounceAccept=setTimeout(()=>this.accept(),this.view.state.facet(Li).updateSyncTime))}startQuery(t){let{state:e}=this.view,i=xl(e),n=new lw(e,i,t.explicit,this.view),s=new CG(t,n);this.running.push(s),Promise.resolve(t.source(n)).then(r=>{s.context.aborted||(s.done=r||null,this.scheduleAccept())},r=>{this.view.dispatch({effects:qf.of(null)}),$n(this.view.state,r)})}scheduleAccept(){this.running.every(t=>t.done!==void 0)?this.accept():this.debounceAccept<0&&(this.debounceAccept=setTimeout(()=>this.accept(),this.view.state.facet(Li).updateSyncTime))}accept(){var t;this.debounceAccept>-1&&clearTimeout(this.debounceAccept),this.debounceAccept=-1;let e=[],i=this.view.state.facet(Li),n=this.view.state.field(Dn);for(let s=0;sl.source==r.active.source);if(o&&o.isPending)if(r.done==null){let l=new Ms(r.active.source,0);for(let c of r.updates)l=l.update(c,i);l.isPending||e.push(l)}else this.startQuery(o)}(e.length||n.open&&n.open.disabled)&&this.view.dispatch({effects:hw.of(e)})}},{eventHandlers:{blur(t){let e=this.view.state.field(Dn,!1);if(e&&e.tooltip&&this.view.state.facet(Li).closeOnBlur){let i=e.open&&kB(this.view,e.open.tooltip);(!i||!i.dom.contains(t.relatedTarget))&&setTimeout(()=>this.view.dispatch({effects:qf.of(null)}),10)}},compositionstart(){this.composing=1},compositionend(){this.composing==3&&setTimeout(()=>this.view.dispatch({effects:Vg.of(!1)}),20),this.composing=0}}}),EG=typeof navigator=="object"&&/Win/.test(navigator.platform),MG=wo.highest(ve.domEventHandlers({keydown(t,e){let i=e.state.field(Dn,!1);if(!i||!i.open||i.open.disabled||i.open.selected<0||t.key.length>1||t.ctrlKey&&!(EG&&t.altKey)||t.metaKey)return!1;let n=i.open.options[i.open.selected],s=i.active.find(o=>o.source==n.source),r=n.completion.commitCharacters||s.result.commitCharacters;return r&&r.indexOf(t.key)>-1&&uw(e,n),!1}})),F$=ve.baseTheme({".cm-tooltip.cm-tooltip-autocomplete":{"& > ul":{fontFamily:"monospace",whiteSpace:"nowrap",overflow:"hidden auto",maxWidth_fallback:"700px",maxWidth:"min(700px, 95vw)",minWidth:"250px",maxHeight:"10em",height:"100%",listStyle:"none",margin:0,padding:0,"& > li, & > completion-section":{padding:"1px 3px",lineHeight:1.2},"& > li":{overflowX:"hidden",textOverflow:"ellipsis",cursor:"pointer"},"& > completion-section":{display:"list-item",borderBottom:"1px solid silver",paddingLeft:"0.5em",opacity:.7}}},"&light .cm-tooltip-autocomplete ul li[aria-selected]":{background:"#17c",color:"white"},"&light .cm-tooltip-autocomplete-disabled ul li[aria-selected]":{background:"#777"},"&dark .cm-tooltip-autocomplete ul li[aria-selected]":{background:"#347",color:"white"},"&dark .cm-tooltip-autocomplete-disabled ul li[aria-selected]":{background:"#444"},".cm-completionListIncompleteTop:before, .cm-completionListIncompleteBottom:after":{content:'"···"',opacity:.5,display:"block",textAlign:"center"},".cm-tooltip.cm-completionInfo":{position:"absolute",padding:"3px 9px",width:"max-content",maxWidth:"400px",boxSizing:"border-box",whiteSpace:"pre-line"},".cm-completionInfo.cm-completionInfo-left":{right:"100%"},".cm-completionInfo.cm-completionInfo-right":{left:"100%"},".cm-completionInfo.cm-completionInfo-left-narrow":{right:"30px"},".cm-completionInfo.cm-completionInfo-right-narrow":{left:"30px"},"&light .cm-snippetField":{backgroundColor:"#00000022"},"&dark .cm-snippetField":{backgroundColor:"#ffffff22"},".cm-snippetFieldPosition":{verticalAlign:"text-top",width:0,height:"1.15em",display:"inline-block",margin:"0 -0.7px -.7em",borderLeft:"1.4px dotted #888"},".cm-completionMatchedText":{textDecoration:"underline"},".cm-completionDetail":{marginLeft:"0.5em",fontStyle:"italic"},".cm-completionIcon":{fontSize:"90%",width:".8em",display:"inline-block",textAlign:"center",paddingRight:".6em",opacity:"0.6",boxSizing:"content-box"},".cm-completionIcon-function, .cm-completionIcon-method":{"&:after":{content:"'ƒ'"}},".cm-completionIcon-class":{"&:after":{content:"'○'"}},".cm-completionIcon-interface":{"&:after":{content:"'◌'"}},".cm-completionIcon-variable":{"&:after":{content:"'𝑥'"}},".cm-completionIcon-constant":{"&:after":{content:"'𝐶'"}},".cm-completionIcon-type":{"&:after":{content:"'𝑡'"}},".cm-completionIcon-enum":{"&:after":{content:"'∪'"}},".cm-completionIcon-property":{"&:after":{content:"'□'"}},".cm-completionIcon-keyword":{"&:after":{content:"'🔑︎'"}},".cm-completionIcon-namespace":{"&:after":{content:"'▢'"}},".cm-completionIcon-text":{"&:after":{content:"'abc'",fontSize:"50%",verticalAlign:"middle"}}});class PG{constructor(e,i,n,s){this.field=e,this.line=i,this.from=n,this.to=s}}class fw{constructor(e,i,n){this.field=e,this.from=i,this.to=n}map(e){let i=e.mapPos(this.from,-1,Fi.TrackDel),n=e.mapPos(this.to,1,Fi.TrackDel);return i==null||n==null?null:new fw(this.field,i,n)}}class dw{constructor(e,i){this.lines=e,this.fieldPositions=i}instantiate(e,i){let n=[],s=[i],r=e.doc.lineAt(i),o=/^\s*/.exec(r.text)[0];for(let c of this.lines){if(n.length){let u=o,d=/^\t*/.exec(c)[0].length;for(let p=0;pnew fw(c.field,s[c.line]+c.from,s[c.line]+c.to));return{text:n,ranges:l}}static parse(e){let i=[],n=[],s=[],r;for(let o of e.split(/\r\n?|\n/)){for(;r=/[#$]\{(?:(\d+)(?::([^{}]*))?|((?:\\[{}]|[^{}])*))\}/.exec(o);){let l=r[1]?+r[1]:null,c=r[2]||r[3]||"",u=-1,d=c.replace(/\\[{}]/g,p=>p[1]);for(let p=0;p=u&&g.field++}for(let p of s)if(p.line==n.length&&p.from>r.index){let g=r[2]?3+(r[1]||"").length:2;p.from-=g,p.to-=g}s.push(new PG(u,n.length,r.index,r.index+d.length)),o=o.slice(0,r.index)+c+o.slice(r.index+r[0].length)}o=o.replace(/\\([{}])/g,(l,c,u)=>{for(let d of s)d.line==n.length&&d.from>u&&(d.from--,d.to--);return c}),n.push(o)}return new dw(n,s)}}let RG=Pe.widget({widget:new class extends Gs{toDOM(){let t=document.createElement("span");return t.className="cm-snippetFieldPosition",t}ignoreEvent(){return!1}}}),QG=Pe.mark({class:"cm-snippetField"});class wh{constructor(e,i){this.ranges=e,this.active=i,this.deco=Pe.set(e.map(n=>(n.from==n.to?RG:QG).range(n.from,n.to)),!0)}map(e){let i=[];for(let n of this.ranges){let s=n.map(e);if(!s)return null;i.push(s)}return new wh(i,this.active)}selectionInsideField(e){return e.ranges.every(i=>this.ranges.some(n=>n.field==this.active&&n.from<=i.from&&n.to>=i.to))}}const yd=Ne.define({map(t,e){return t&&t.map(e)}}),LG=Ne.define(),Wf=Bi.define({create(){return null},update(t,e){for(let i of e.effects){if(i.is(yd))return i.value;if(i.is(LG)&&t)return new wh(t.ranges,i.value)}return t&&e.docChanged&&(t=t.map(e.changes)),t&&e.selection&&!t.selectionInsideField(e.selection)&&(t=null),t},provide:t=>ve.decorations.from(t,e=>e?e.deco:Pe.none)});function pw(t,e){return re.create(t.filter(i=>i.field==e).map(i=>re.range(i.from,i.to)))}function DG(t){let e=dw.parse(t);return(i,n,s,r)=>{let{text:o,ranges:l}=e.instantiate(i.state,s),{main:c}=i.state.selection,u={changes:{from:s,to:r==c.from?c.to:r,insert:at.of(o)},scrollIntoView:!0,annotations:n?[cw.of(n),hi.userEvent.of("input.complete")]:void 0};if(l.length&&(u.selection=pw(l,0)),l.some(d=>d.field>0)){let d=new wh(l,0),p=u.effects=[yd.of(d)];i.state.field(Wf,!1)===void 0&&p.push(Ne.appendConfig.of([Wf,jG,IG,F$]))}i.dispatch(i.state.update(u))}}function G$(t){return({state:e,dispatch:i})=>{let n=e.field(Wf,!1);if(!n||t<0&&n.active==0)return!1;let s=n.active+t,r=t>0&&!n.ranges.some(o=>o.field==s+t);return i(e.update({selection:pw(n.ranges,s),effects:yd.of(r?null:new wh(n.ranges,s)),scrollIntoView:!0})),!0}}const BG=({state:t,dispatch:e})=>t.field(Wf,!1)?(e(t.update({effects:yd.of(null)})),!0):!1,$G=G$(1),NG=G$(-1),zG=[{key:"Tab",run:$G,shift:NG},{key:"Escape",run:BG}],uM=Se.define({combine(t){return t.length?t[0]:zG}}),jG=wo.highest(Ll.compute([uM],t=>t.facet(uM)));function Qn(t,e){return{...e,apply:DG(t)}}const IG=ve.domEventHandlers({mousedown(t,e){let i=e.state.field(Wf,!1),n;if(!i||(n=e.posAtCoords({x:t.clientX,y:t.clientY}))==null)return!1;let s=i.ranges.find(r=>r.from<=n&&r.to>=n);return!s||s.field==i.active?!1:(e.dispatch({selection:pw(i.ranges,s.field),effects:yd.of(i.ranges.some(r=>r.field>s.field)?new wh(i.ranges,s.field):null),scrollIntoView:!0}),!0)}}),Uf={brackets:["(","[","{","'",'"'],before:")]}:;>",stringPrefixes:[]},_l=Ne.define({map(t,e){let i=e.mapPos(t,-1,Fi.TrackAfter);return i??void 0}}),mw=new class extends wa{};mw.startSide=1;mw.endSide=-1;const K$=Bi.define({create(){return Ge.empty},update(t,e){if(t=t.map(e.changes),e.selection){let i=e.state.doc.lineAt(e.selection.main.head);t=t.update({filter:n=>n>=i.from&&n<=i.to})}for(let i of e.effects)i.is(_l)&&(t=t.update({add:[mw.range(i.value,i.value+1)]}));return t}});function VG(){return[ZG,K$]}const W_="()[]{}<>«»»«[]{}";function J$(t){for(let e=0;e{if((XG?t.composing:t.compositionStarted)||t.state.readOnly)return!1;let s=t.state.selection.main;if(n.length>2||n.length==2&&gr(Ln(n,0))==1||e!=s.from||i!=s.to)return!1;let r=UG(t.state,n);return r?(t.dispatch(r),!0):!1}),qG=({state:t,dispatch:e})=>{if(t.readOnly)return!1;let n=e4(t,t.selection.main.head).brackets||Uf.brackets,s=null,r=t.changeByRange(o=>{if(o.empty){let l=YG(t.doc,o.head);for(let c of n)if(c==l&&wO(t.doc,o.head)==J$(Ln(c,0)))return{changes:{from:o.head-c.length,to:o.head+c.length},range:re.cursor(o.head-c.length)}}return{range:s=o}});return s||e(t.update(r,{scrollIntoView:!0,userEvent:"delete.backward"})),!s},WG=[{key:"Backspace",run:qG}];function UG(t,e){let i=e4(t,t.selection.main.head),n=i.brackets||Uf.brackets;for(let s of n){let r=J$(Ln(s,0));if(e==s)return r==s?GG(t,s,n.indexOf(s+s+s)>-1,i):HG(t,s,r,i.before||Uf.before);if(e==r&&t4(t,t.selection.main.from))return FG(t,s,r)}return null}function t4(t,e){let i=!1;return t.field(K$).between(0,t.doc.length,n=>{n==e&&(i=!0)}),i}function wO(t,e){let i=t.sliceString(e,e+2);return i.slice(0,gr(Ln(i,0)))}function YG(t,e){let i=t.sliceString(e-2,e);return gr(Ln(i,0))==i.length?i:i.slice(1)}function HG(t,e,i,n){let s=null,r=t.changeByRange(o=>{if(!o.empty)return{changes:[{insert:e,from:o.from},{insert:i,from:o.to}],effects:_l.of(o.to+e.length),range:re.range(o.anchor+e.length,o.head+e.length)};let l=wO(t.doc,o.head);return!l||/\s/.test(l)||n.indexOf(l)>-1?{changes:{insert:e+i,from:o.head},effects:_l.of(o.head+e.length),range:re.cursor(o.head+e.length)}:{range:s=o}});return s?null:t.update(r,{scrollIntoView:!0,userEvent:"input.type"})}function FG(t,e,i){let n=null,s=t.changeByRange(r=>r.empty&&wO(t.doc,r.head)==i?{changes:{from:r.head,to:r.head+i.length,insert:i},range:re.cursor(r.head+i.length)}:n={range:r});return n?null:t.update(s,{scrollIntoView:!0,userEvent:"input.type"})}function GG(t,e,i,n){let s=n.stringPrefixes||Uf.stringPrefixes,r=null,o=t.changeByRange(l=>{if(!l.empty)return{changes:[{insert:e,from:l.from},{insert:e,from:l.to}],effects:_l.of(l.to+e.length),range:re.range(l.anchor+e.length,l.head+e.length)};let c=l.head,u=wO(t.doc,c),d;if(u==e){if(fM(t,c))return{changes:{insert:e+e,from:c},effects:_l.of(c+e.length),range:re.cursor(c+e.length)};if(t4(t,c)){let g=i&&t.sliceDoc(c,c+e.length*3)==e+e+e?e+e+e:e;return{changes:{from:c,to:c+g.length,insert:g},range:re.cursor(c+g.length)}}}else{if(i&&t.sliceDoc(c-2*e.length,c)==e+e&&(d=dM(t,c-2*e.length,s))>-1&&fM(t,d))return{changes:{insert:e+e+e+e,from:c},effects:_l.of(c+e.length),range:re.cursor(c+e.length)};if(t.charCategorizer(c)(u)!=Dt.Word&&dM(t,c,s)>-1&&!KG(t,c,e,s))return{changes:{insert:e+e,from:c},effects:_l.of(c+e.length),range:re.cursor(c+e.length)}}return{range:r=l}});return r?null:t.update(o,{scrollIntoView:!0,userEvent:"input.type"})}function fM(t,e){let i=xt(t).resolveInner(e+1);return i.parent&&i.from==e}function KG(t,e,i,n){let s=xt(t).resolveInner(e,-1),r=n.reduce((o,l)=>Math.max(o,l.length),0);for(let o=0;o<5;o++){let l=t.sliceDoc(s.from,Math.min(s.to,s.from+i.length+r)),c=l.indexOf(i);if(!c||c>-1&&n.indexOf(l.slice(0,c))>-1){let d=s.firstChild;for(;d&&d.from==s.from&&d.to-d.from>i.length+c;){if(t.sliceDoc(d.to-i.length,d.to)==i)return!1;d=d.firstChild}return!0}let u=s.to==e&&s.parent;if(!u)break;s=u}return!1}function dM(t,e,i){let n=t.charCategorizer(e);if(n(t.sliceDoc(e-1,e))!=Dt.Word)return e;for(let s of i){let r=e-s.length;if(t.sliceDoc(r,e)==s&&n(t.sliceDoc(r-1,r))!=Dt.Word)return r}return-1}function JG(t={}){return[MG,Dn,Li.of(t),AG,eK,F$]}const i4=[{key:"Ctrl-Space",run:q_},{mac:"Alt-`",run:q_},{mac:"Alt-i",run:q_},{key:"Escape",run:wG},{key:"ArrowDown",run:Om(!0)},{key:"ArrowUp",run:Om(!1)},{key:"PageDown",run:Om(!0,"page")},{key:"PageUp",run:Om(!1,"page")},{key:"Enter",run:xG}],eK=wo.highest(Ll.computeN([Li],t=>t.facet(Li).defaultKeymap?[i4]:[]));class pM{constructor(e,i,n){this.from=e,this.to=i,this.diagnostic=n}}class fl{constructor(e,i,n){this.diagnostics=e,this.panel=i,this.selected=n}static init(e,i,n){let s=n.facet(Yf).markerFilter;s&&(e=s(e,n));let r=e.slice().sort((O,_)=>O.from-_.from||O.to-_.to),o=new yo,l=[],c=0,u=n.doc.iter(),d=0,p=n.doc.length;for(let O=0;;){let _=O==r.length?null:r[O];if(!_&&!l.length)break;let b,x;if(l.length)b=c,x=l.reduce((T,A)=>Math.min(T,A.to),_&&_.from>b?_.from:1e8);else{if(b=_.from,b>p)break;x=_.to,l.push(_),O++}for(;OT.from||T.to==b))l.push(T),O++,x=Math.min(T.to,x);else{x=Math.min(T.from,x);break}}x=Math.min(x,p);let w=!1;if(l.some(T=>T.from==b&&(T.to==x||x==p))&&(w=b==x,!w&&x-b<10)){let T=b-(d+u.value.length);T>0&&(u.next(T),d=b);for(let A=b;;){if(A>=x){w=!0;break}if(!u.lineBreak&&d+u.value.length>A)break;A=d+u.value.length,d+=u.value.length,u.next()}}let k=dK(l);if(w)o.add(b,b,Pe.widget({widget:new cK(k),diagnostics:l.slice()}));else{let T=l.reduce((A,Q)=>Q.markClass?A+" "+Q.markClass:A,"");o.add(b,x,Pe.mark({class:"cm-lintRange cm-lintRange-"+k+T,diagnostics:l.slice(),inclusiveEnd:l.some(A=>A.to>x)}))}if(c=x,c==p)break;for(let T=0;T{if(!(e&&o.diagnostics.indexOf(e)<0))if(!n)n=new pM(s,r,e||o.diagnostics[0]);else{if(o.diagnostics.indexOf(n.diagnostic)<0)return!1;n=new pM(n.from,r,n.diagnostic)}}),n}function tK(t,e){let i=e.pos,n=e.end||i,s=t.state.facet(Yf).hideOn(t,i,n);if(s!=null)return s;let r=t.startState.doc.lineAt(e.pos);return!!(t.effects.some(o=>o.is(n4))||t.changes.touchesRange(r.from,Math.max(r.to,n)))}function iK(t,e){return t.field(ss,!1)?e:e.concat(Ne.appendConfig.of(pK))}const n4=Ne.define(),gw=Ne.define(),s4=Ne.define(),ss=Bi.define({create(){return new fl(Pe.none,null,null)},update(t,e){if(e.docChanged&&t.diagnostics.size){let i=t.diagnostics.map(e.changes),n=null,s=t.panel;if(t.selected){let r=e.changes.mapPos(t.selected.from,1);n=Ma(i,t.selected.diagnostic,r)||Ma(i,null,r)}!i.size&&s&&e.state.facet(Yf).autoPanel&&(s=null),t=new fl(i,s,n)}for(let i of e.effects)if(i.is(n4)){let n=e.state.facet(Yf).autoPanel?i.value.length?Hf.open:null:t.panel;t=fl.init(i.value,n,e.state)}else i.is(gw)?t=new fl(t.diagnostics,i.value?Hf.open:null,t.selected):i.is(s4)&&(t=new fl(t.diagnostics,t.panel,i.value));return t},provide:t=>[Nf.from(t,e=>e.panel),ve.decorations.from(t,e=>e.diagnostics)]}),nK=Pe.mark({class:"cm-lintRange cm-lintRange-active"});function sK(t,e,i){let{diagnostics:n}=t.state.field(ss),s,r=-1,o=-1;n.between(e-(i<0?1:0),e+(i>0?1:0),(c,u,{spec:d})=>{if(e>=c&&e<=u&&(c==u||(e>c||i>0)&&(eo4(t,i,!1)))}const oK=t=>{let e=t.state.field(ss,!1);(!e||!e.panel)&&t.dispatch({effects:iK(t.state,[gw.of(!0)])});let i=Wx(t,Hf.open);return i&&i.dom.querySelector(".cm-panel-lint ul").focus(),!0},mM=t=>{let e=t.state.field(ss,!1);return!e||!e.panel?!1:(t.dispatch({effects:gw.of(!1)}),!0)},aK=t=>{let e=t.state.field(ss,!1);if(!e)return!1;let i=t.state.selection.main,n=Ma(e.diagnostics,null,i.to+1);return!n&&(n=Ma(e.diagnostics,null,0),!n||n.from==i.from&&n.to==i.to)?!1:(t.dispatch({selection:{anchor:n.from,head:n.to},scrollIntoView:!0}),!0)},lK=[{key:"Mod-Shift-m",run:oK,preventDefault:!0},{key:"F8",run:aK}],Yf=Se.define({combine(t){return{sources:t.map(e=>e.source).filter(e=>e!=null),...Dr(t.map(e=>e.config),{delay:750,markerFilter:null,tooltipFilter:null,needsRefresh:null,hideOn:()=>null},{delay:Math.max,markerFilter:gM,tooltipFilter:gM,needsRefresh:(e,i)=>e?i?n=>e(n)||i(n):e:i,hideOn:(e,i)=>e?i?(n,s,r)=>e(n,s,r)||i(n,s,r):e:i,autoPanel:(e,i)=>e||i})}}});function gM(t,e){return t?e?(i,n)=>e(t(i,n),n):t:e}function r4(t){let e=[];if(t)e:for(let{name:i}of t){for(let n=0;nr.toLowerCase()==s.toLowerCase())){e.push(s);continue e}}e.push("")}return e}function o4(t,e,i){var n;let s=i?r4(e.actions):[];return vt("li",{class:"cm-diagnostic cm-diagnostic-"+e.severity},vt("span",{class:"cm-diagnosticText"},e.renderMessage?e.renderMessage(t):e.message),(n=e.actions)===null||n===void 0?void 0:n.map((r,o)=>{let l=!1,c=O=>{if(O.preventDefault(),l)return;l=!0;let _=Ma(t.state.field(ss).diagnostics,e);_&&r.apply(t,_.from,_.to)},{name:u}=r,d=s[o]?u.indexOf(s[o]):-1,p=d<0?u:[u.slice(0,d),vt("u",u.slice(d,d+1)),u.slice(d+1)],g=r.markClass?" "+r.markClass:"";return vt("button",{type:"button",class:"cm-diagnosticAction"+g,onclick:c,onmousedown:c,"aria-label":` Action: ${u}${d<0?"":` (access key "${s[o]})"`}.`},p)}),e.source&&vt("div",{class:"cm-diagnosticSource"},e.source))}class cK extends Gs{constructor(e){super(),this.sev=e}eq(e){return e.sev==this.sev}toDOM(){return vt("span",{class:"cm-lintPoint cm-lintPoint-"+this.sev})}}class OM{constructor(e,i){this.diagnostic=i,this.id="item_"+Math.floor(Math.random()*4294967295).toString(16),this.dom=o4(e,i,!0),this.dom.id=this.id,this.dom.setAttribute("role","option")}}class Hf{constructor(e){this.view=e,this.items=[];let i=s=>{if(!(s.ctrlKey||s.altKey||s.metaKey)){if(s.keyCode==27)mM(this.view),this.view.focus();else if(s.keyCode==38||s.keyCode==33)this.moveSelection((this.selectedIndex-1+this.items.length)%this.items.length);else if(s.keyCode==40||s.keyCode==34)this.moveSelection((this.selectedIndex+1)%this.items.length);else if(s.keyCode==36)this.moveSelection(0);else if(s.keyCode==35)this.moveSelection(this.items.length-1);else if(s.keyCode==13)this.view.focus();else if(s.keyCode>=65&&s.keyCode<=90&&this.selectedIndex>=0){let{diagnostic:r}=this.items[this.selectedIndex],o=r4(r.actions);for(let l=0;l{for(let r=0;rmM(this.view)},"×")),this.update()}get selectedIndex(){let e=this.view.state.field(ss).selected;if(!e)return-1;for(let i=0;i{for(let d of u.diagnostics){if(o.has(d))continue;o.add(d);let p=-1,g;for(let O=n;On&&(this.items.splice(n,p-n),s=!0)),i&&g.diagnostic==i.diagnostic?g.dom.hasAttribute("aria-selected")||(g.dom.setAttribute("aria-selected","true"),r=g):g.dom.hasAttribute("aria-selected")&&g.dom.removeAttribute("aria-selected"),n++}});n({sel:r.dom.getBoundingClientRect(),panel:this.list.getBoundingClientRect()}),write:({sel:l,panel:c})=>{let u=c.height/this.list.offsetHeight;l.topc.bottom&&(this.list.scrollTop+=(l.bottom-c.bottom)/u)}})):this.selectedIndex<0&&this.list.removeAttribute("aria-activedescendant"),s&&this.sync()}sync(){let e=this.list.firstChild;function i(){let n=e;e=n.nextSibling,n.remove()}for(let n of this.items)if(n.dom.parentNode==this.list){for(;e!=n.dom;)i();e=n.dom.nextSibling}else this.list.insertBefore(n.dom,e);for(;e;)i()}moveSelection(e){if(this.selectedIndex<0)return;let i=this.view.state.field(ss),n=Ma(i.diagnostics,this.items[e].diagnostic);n&&this.view.dispatch({selection:{anchor:n.from,head:n.to},scrollIntoView:!0,effects:s4.of(n)})}static open(e){return new Hf(e)}}function hK(t,e='viewBox="0 0 40 40"'){return`url('data:image/svg+xml,${encodeURIComponent(t)}')`}function vm(t){return hK(``,'width="6" height="3"')}const uK=ve.baseTheme({".cm-diagnostic":{padding:"3px 6px 3px 8px",marginLeft:"-1px",display:"block",whiteSpace:"pre-wrap"},".cm-diagnostic-error":{borderLeft:"5px solid #d11"},".cm-diagnostic-warning":{borderLeft:"5px solid orange"},".cm-diagnostic-info":{borderLeft:"5px solid #999"},".cm-diagnostic-hint":{borderLeft:"5px solid #66d"},".cm-diagnosticAction":{font:"inherit",border:"none",padding:"2px 4px",backgroundColor:"#444",color:"white",borderRadius:"3px",marginLeft:"8px",cursor:"pointer"},".cm-diagnosticSource":{fontSize:"70%",opacity:.7},".cm-lintRange":{backgroundPosition:"left bottom",backgroundRepeat:"repeat-x",paddingBottom:"0.7px"},".cm-lintRange-error":{backgroundImage:vm("#d11")},".cm-lintRange-warning":{backgroundImage:vm("orange")},".cm-lintRange-info":{backgroundImage:vm("#999")},".cm-lintRange-hint":{backgroundImage:vm("#66d")},".cm-lintRange-active":{backgroundColor:"#ffdd9980"},".cm-tooltip-lint":{padding:0,margin:0},".cm-lintPoint":{position:"relative","&:after":{content:'""',position:"absolute",bottom:0,left:"-2px",borderLeft:"3px solid transparent",borderRight:"3px solid transparent",borderBottom:"4px solid #d11"}},".cm-lintPoint-warning":{"&:after":{borderBottomColor:"orange"}},".cm-lintPoint-info":{"&:after":{borderBottomColor:"#999"}},".cm-lintPoint-hint":{"&:after":{borderBottomColor:"#66d"}},".cm-panel.cm-panel-lint":{position:"relative","& ul":{maxHeight:"100px",overflowY:"auto","& [aria-selected]":{backgroundColor:"#ddd","& u":{textDecoration:"underline"}},"&:focus [aria-selected]":{background_fallback:"#bdf",backgroundColor:"Highlight",color_fallback:"white",color:"HighlightText"},"& u":{textDecoration:"none"},padding:0,margin:0},"& [name=close]":{position:"absolute",top:"0",right:"2px",background:"inherit",border:"none",font:"inherit",padding:0,margin:0}}});function fK(t){return t=="error"?4:t=="warning"?3:t=="info"?2:1}function dK(t){let e="hint",i=1;for(let n of t){let s=fK(n.severity);s>i&&(i=s,e=n.severity)}return e}const pK=[ss,ve.decorations.compute([ss],t=>{let{selected:e,panel:i}=t.field(ss);return!e||!i||e.from==e.to?Pe.none:Pe.set([nK.range(e.from,e.to)])}),WU(sK,{hideOn:tK}),uK];var vM=function(e){e===void 0&&(e={});var{crosshairCursor:i=!1}=e,n=[];e.closeBracketsKeymap!==!1&&(n=n.concat(WG)),e.defaultKeymap!==!1&&(n=n.concat(AF)),e.searchKeymap!==!1&&(n=n.concat(tG)),e.historyKeymap!==!1&&(n=n.concat(DH)),e.foldKeymap!==!1&&(n=n.concat(FY)),e.completionKeymap!==!1&&(n=n.concat(i4)),e.lintKeymap!==!1&&(n=n.concat(lK));var s=[];return e.lineNumbers!==!1&&s.push(rY()),e.highlightActiveLineGutter!==!1&&s.push(lY()),e.highlightSpecialChars!==!1&&s.push(bU()),e.history!==!1&&s.push(kH()),e.foldGutter!==!1&&s.push(eH()),e.drawSelection!==!1&&s.push(hU()),e.dropCursor!==!1&&s.push(mU()),e.allowMultipleSelections!==!1&&s.push(et.allowMultipleSelections.of(!0)),e.indentOnInput!==!1&&s.push(VY()),e.syntaxHighlighting!==!1&&s.push(JB(sH,{fallback:!0})),e.bracketMatching!==!1&&s.push(uH()),e.closeBrackets!==!1&&s.push(VG()),e.autocompletion!==!1&&s.push(JG()),e.rectangularSelection!==!1&&s.push(DU()),i!==!1&&s.push(NU()),e.highlightActiveLine!==!1&&s.push(TU()),e.highlightSelectionMatches!==!1&&s.push(LF()),e.tabSize&&typeof e.tabSize=="number"&&s.push(yh.of(" ".repeat(e.tabSize))),s.concat([Ll.of(n.flat())]).filter(Boolean)};const mK="#e5c07b",_M="#e06c75",gK="#56b6c2",OK="#ffffff",Hm="#abb2bf",Bb="#7d8799",vK="#61afef",_K="#98c379",yM="#d19a66",yK="#c678dd",bK="#21252b",bM="#2c313a",SM="#282c34",U_="#353a42",SK="#3E4451",xM="#528bff",xK=ve.theme({"&":{color:Hm,backgroundColor:SM},".cm-content":{caretColor:xM},".cm-cursor, .cm-dropCursor":{borderLeftColor:xM},"&.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground, .cm-selectionBackground, .cm-content ::selection":{backgroundColor:SK},".cm-panels":{backgroundColor:bK,color:Hm},".cm-panels.cm-panels-top":{borderBottom:"2px solid black"},".cm-panels.cm-panels-bottom":{borderTop:"2px solid black"},".cm-searchMatch":{backgroundColor:"#72a1ff59",outline:"1px solid #457dff"},".cm-searchMatch.cm-searchMatch-selected":{backgroundColor:"#6199ff2f"},".cm-activeLine":{backgroundColor:"#6699ff0b"},".cm-selectionMatch":{backgroundColor:"#aafe661a"},"&.cm-focused .cm-matchingBracket, &.cm-focused .cm-nonmatchingBracket":{backgroundColor:"#bad0f847"},".cm-gutters":{backgroundColor:SM,color:Bb,border:"none"},".cm-activeLineGutter":{backgroundColor:bM},".cm-foldPlaceholder":{backgroundColor:"transparent",border:"none",color:"#ddd"},".cm-tooltip":{border:"none",backgroundColor:U_},".cm-tooltip .cm-tooltip-arrow:before":{borderTopColor:"transparent",borderBottomColor:"transparent"},".cm-tooltip .cm-tooltip-arrow:after":{borderTopColor:U_,borderBottomColor:U_},".cm-tooltip-autocomplete":{"& > ul > li[aria-selected]":{backgroundColor:bM,color:Hm}}},{dark:!0}),wK=Od.define([{tag:V.keyword,color:yK},{tag:[V.name,V.deleted,V.character,V.propertyName,V.macroName],color:_M},{tag:[V.function(V.variableName),V.labelName],color:vK},{tag:[V.color,V.constant(V.name),V.standard(V.name)],color:yM},{tag:[V.definition(V.name),V.separator],color:Hm},{tag:[V.typeName,V.className,V.number,V.changed,V.annotation,V.modifier,V.self,V.namespace],color:mK},{tag:[V.operator,V.operatorKeyword,V.url,V.escape,V.regexp,V.link,V.special(V.string)],color:gK},{tag:[V.meta,V.comment],color:Bb},{tag:V.strong,fontWeight:"bold"},{tag:V.emphasis,fontStyle:"italic"},{tag:V.strikethrough,textDecoration:"line-through"},{tag:V.link,color:Bb,textDecoration:"underline"},{tag:V.heading,fontWeight:"bold",color:_M},{tag:[V.atom,V.bool,V.special(V.variableName)],color:yM},{tag:[V.processingInstruction,V.string,V.inserted],color:_K},{tag:V.invalid,color:OK}]),a4=[xK,JB(wK)];var CK=ve.theme({"&":{backgroundColor:"#fff"}},{dark:!1}),kK=function(e){e===void 0&&(e={});var{indentWithTab:i=!0,editable:n=!0,readOnly:s=!1,theme:r="light",placeholder:o="",basicSetup:l=!0}=e,c=[];switch(i&&c.unshift(Ll.of([EF])),l&&(typeof l=="boolean"?c.unshift(vM()):c.unshift(vM(l))),o&&c.unshift(PU(o)),r){case"light":c.push(CK);break;case"dark":c.push(a4);break;case"none":break;default:c.push(r);break}return n===!1&&c.push(ve.editable.of(!1)),s&&c.push(et.readOnly.of(!0)),[...c]},TK=t=>({line:t.state.doc.lineAt(t.state.selection.main.from),lineCount:t.state.doc.lines,lineBreak:t.state.lineBreak,length:t.state.doc.length,readOnly:t.state.readOnly,tabSize:t.state.tabSize,selection:t.state.selection,selectionAsSingle:t.state.selection.asSingle().main,ranges:t.state.selection.ranges,selectionCode:t.state.sliceDoc(t.state.selection.main.from,t.state.selection.main.to),selections:t.state.selection.ranges.map(e=>t.state.sliceDoc(e.from,e.to)),selectedText:t.state.selection.ranges.some(e=>!e.empty)});class AK{constructor(e,i){this.timeLeftMS=void 0,this.timeoutMS=void 0,this.isCancelled=!1,this.isTimeExhausted=!1,this.callbacks=[],this.timeLeftMS=i,this.timeoutMS=i,this.callbacks.push(e)}tick(){if(!this.isCancelled&&!this.isTimeExhausted&&(this.timeLeftMS--,this.timeLeftMS<=0)){this.isTimeExhausted=!0;var e=this.callbacks.slice();this.callbacks.length=0,e.forEach(i=>{try{i()}catch(n){console.error("TimeoutLatch callback error:",n)}})}}cancel(){this.isCancelled=!0,this.callbacks.length=0}reset(){this.timeLeftMS=this.timeoutMS,this.isCancelled=!1,this.isTimeExhausted=!1}get isDone(){return this.isCancelled||this.isTimeExhausted}}class wM{constructor(){this.interval=null,this.latches=new Set}add(e){this.latches.add(e),this.start()}remove(e){this.latches.delete(e),this.latches.size===0&&this.stop()}start(){this.interval===null&&(this.interval=setInterval(()=>{this.latches.forEach(e=>{e.tick(),e.isDone&&this.remove(e)})},1))}stop(){this.interval!==null&&(clearInterval(this.interval),this.interval=null)}}var Y_=null,EK=()=>typeof window>"u"?new wM:(Y_||(Y_=new wM),Y_),CM=Lr.define(),MK=200,PK=[];function RK(t){var{value:e,selection:i,onChange:n,onStatistics:s,onCreateEditor:r,onUpdate:o,extensions:l=PK,autoFocus:c,theme:u="light",height:d=null,minHeight:p=null,maxHeight:g=null,width:O=null,minWidth:_=null,maxWidth:b=null,placeholder:x="",editable:w=!0,readOnly:k=!1,indentWithTab:T=!0,basicSetup:A=!0,root:Q,initialState:E}=t,[N,z]=X.useState(),[q,J]=X.useState(),[U,R]=X.useState(),B=X.useState(()=>({current:null}))[0],j=X.useState(()=>({current:null}))[0],$=ve.theme({"&":{height:d,minHeight:p,maxHeight:g,width:O,minWidth:_,maxWidth:b},"& .cm-scroller":{height:"100% !important"}}),D=ve.updateListener.of(F=>{if(F.docChanged&&typeof n=="function"&&!F.transactions.some(K=>K.annotation(CM))){B.current?B.current.reset():(B.current=new AK(()=>{if(j.current){var K=j.current;j.current=null,K()}B.current=null},MK),EK().add(B.current));var M=F.state.doc,I=M.toString();n(I,F)}s&&s(TK(F))}),Z=kK({theme:u,editable:w,readOnly:k,placeholder:x,indentWithTab:T,basicSetup:A}),H=[D,$,...Z];return o&&typeof o=="function"&&H.push(ve.updateListener.of(o)),H=H.concat(l),X.useLayoutEffect(()=>{if(N&&!U){var F={doc:e,selection:i,extensions:H},M=E?et.fromJSON(E.json,F,E.fields):et.create(F);if(R(M),!q){var I=new ve({state:M,parent:N,root:Q});J(I),r&&r(I,M)}}return()=>{q&&(R(void 0),J(void 0))}},[N,U]),X.useEffect(()=>{t.container&&z(t.container)},[t.container]),X.useEffect(()=>()=>{q&&(q.destroy(),J(void 0)),B.current&&(B.current.cancel(),B.current=null)},[q]),X.useEffect(()=>{c&&q&&q.focus()},[c,q]),X.useEffect(()=>{q&&q.dispatch({effects:Ne.reconfigure.of(H)})},[u,l,d,p,g,O,_,b,x,w,k,T,A,n,o]),X.useEffect(()=>{if(e!==void 0){var F=q?q.state.doc.toString():"";if(q&&e!==F){var M=B.current&&!B.current.isDone,I=()=>{q&&e!==q.state.doc.toString()&&q.dispatch({changes:{from:0,to:q.state.doc.toString().length,insert:e||""},annotations:[CM.of(!0)]})};M?j.current=I:I()}}},[e,q]),{state:U,setState:R,view:q,setView:J,container:N,setContainer:z}}var QK=["className","value","selection","extensions","onChange","onStatistics","onCreateEditor","onUpdate","autoFocus","theme","height","minHeight","maxHeight","width","minWidth","maxWidth","basicSetup","placeholder","indentWithTab","editable","readOnly","root","initialState"],l4=X.forwardRef((t,e)=>{var{className:i,value:n="",selection:s,extensions:r=[],onChange:o,onStatistics:l,onCreateEditor:c,onUpdate:u,autoFocus:d,theme:p="light",height:g,minHeight:O,maxHeight:_,width:b,minWidth:x,maxWidth:w,basicSetup:k,placeholder:T,indentWithTab:A,editable:Q,readOnly:E,root:N,initialState:z}=t,q=FZ(t,QK),J=X.useRef(null),{state:U,view:R,container:B,setContainer:j}=RK({root:N,value:n,autoFocus:d,theme:p,height:g,minHeight:O,maxHeight:_,width:b,minWidth:x,maxWidth:w,basicSetup:k,placeholder:T,indentWithTab:A,editable:Q,readOnly:E,selection:s,onChange:o,onStatistics:l,onCreateEditor:c,onUpdate:u,extensions:r,initialState:z});X.useImperativeHandle(e,()=>({editor:J.current,state:U,view:R}),[J,B,U,R]);var $=X.useCallback(Z=>{J.current=Z,j(Z)},[j]);if(typeof n!="string")throw new Error("value must be typeof string but got "+typeof n);var D=typeof p=="string"?"cm-theme-"+p:"cm-theme";return S.jsx("div",X1({ref:$,className:""+D+(i?" "+i:"")},q))});l4.displayName="CodeMirror";class Zg{static create(e,i,n,s,r){let o=s+(s<<8)+e+(i<<4)|0;return new Zg(e,i,n,o,r,[],[])}constructor(e,i,n,s,r,o,l){this.type=e,this.value=i,this.from=n,this.hash=s,this.end=r,this.children=o,this.positions=l,this.hashProp=[[ze.contextHash,s]]}addChild(e,i){e.prop(ze.contextHash)!=this.hash&&(e=new ct(e.type,e.children,e.positions,e.length,this.hashProp)),this.children.push(e),this.positions.push(i)}toTree(e,i=this.end){let n=this.children.length-1;return n>=0&&(i=Math.max(i,this.positions[n]+this.children[n].length+this.from)),new ct(e.types[this.type],this.children,this.positions,i-this.from).balance({makeTree:(s,r,o)=>new ct(_i.none,s,r,o,this.hashProp)})}}var pe;(function(t){t[t.Document=1]="Document",t[t.CodeBlock=2]="CodeBlock",t[t.FencedCode=3]="FencedCode",t[t.Blockquote=4]="Blockquote",t[t.HorizontalRule=5]="HorizontalRule",t[t.BulletList=6]="BulletList",t[t.OrderedList=7]="OrderedList",t[t.ListItem=8]="ListItem",t[t.ATXHeading1=9]="ATXHeading1",t[t.ATXHeading2=10]="ATXHeading2",t[t.ATXHeading3=11]="ATXHeading3",t[t.ATXHeading4=12]="ATXHeading4",t[t.ATXHeading5=13]="ATXHeading5",t[t.ATXHeading6=14]="ATXHeading6",t[t.SetextHeading1=15]="SetextHeading1",t[t.SetextHeading2=16]="SetextHeading2",t[t.HTMLBlock=17]="HTMLBlock",t[t.LinkReference=18]="LinkReference",t[t.Paragraph=19]="Paragraph",t[t.CommentBlock=20]="CommentBlock",t[t.ProcessingInstructionBlock=21]="ProcessingInstructionBlock",t[t.Escape=22]="Escape",t[t.Entity=23]="Entity",t[t.HardBreak=24]="HardBreak",t[t.Emphasis=25]="Emphasis",t[t.StrongEmphasis=26]="StrongEmphasis",t[t.Link=27]="Link",t[t.Image=28]="Image",t[t.InlineCode=29]="InlineCode",t[t.HTMLTag=30]="HTMLTag",t[t.Comment=31]="Comment",t[t.ProcessingInstruction=32]="ProcessingInstruction",t[t.Autolink=33]="Autolink",t[t.HeaderMark=34]="HeaderMark",t[t.QuoteMark=35]="QuoteMark",t[t.ListMark=36]="ListMark",t[t.LinkMark=37]="LinkMark",t[t.EmphasisMark=38]="EmphasisMark",t[t.CodeMark=39]="CodeMark",t[t.CodeText=40]="CodeText",t[t.CodeInfo=41]="CodeInfo",t[t.LinkTitle=42]="LinkTitle",t[t.LinkLabel=43]="LinkLabel",t[t.URL=44]="URL"})(pe||(pe={}));class LK{constructor(e,i){this.start=e,this.content=i,this.marks=[],this.parsers=[]}}class DK{constructor(){this.text="",this.baseIndent=0,this.basePos=0,this.depth=0,this.markers=[],this.pos=0,this.indent=0,this.next=-1}forward(){this.basePos>this.pos&&this.forwardInner()}forwardInner(){let e=this.skipSpace(this.basePos);this.indent=this.countIndent(e,this.pos,this.indent),this.pos=e,this.next=e==this.text.length?-1:this.text.charCodeAt(e)}skipSpace(e){return _f(this.text,e)}reset(e){for(this.text=e,this.baseIndent=this.basePos=this.pos=this.indent=0,this.forwardInner(),this.depth=1;this.markers.length;)this.markers.pop()}moveBase(e){this.basePos=e,this.baseIndent=this.countIndent(e,this.pos,this.indent)}moveBaseColumn(e){this.baseIndent=e,this.basePos=this.findColumn(e)}addMarker(e){this.markers.push(e)}countIndent(e,i=0,n=0){for(let s=i;s=e.stack[i.depth+1].value+i.baseIndent)return!0;if(i.indent>=i.baseIndent+4)return!1;let n=(t.type==pe.OrderedList?_w:vw)(i,e,!1);return n>0&&(t.type!=pe.BulletList||Ow(i,e,!1)<0)&&i.text.charCodeAt(i.pos+n-1)==t.value}const c4={[pe.Blockquote](t,e,i){return i.next!=62?!1:(i.markers.push(it(pe.QuoteMark,e.lineStart+i.pos,e.lineStart+i.pos+1)),i.moveBase(i.pos+(Ds(i.text.charCodeAt(i.pos+1))?2:1)),t.end=e.lineStart+i.text.length,!0)},[pe.ListItem](t,e,i){return i.indent-1?!1:(i.moveBaseColumn(i.baseIndent+t.value),!0)},[pe.OrderedList]:kM,[pe.BulletList]:kM,[pe.Document](){return!0}};function Ds(t){return t==32||t==9||t==10||t==13}function _f(t,e=0){for(;ei&&Ds(t.charCodeAt(e-1));)e--;return e}function h4(t){if(t.next!=96&&t.next!=126)return-1;let e=t.pos+1;for(;e-1&&t.depth==e.stack.length&&e.parser.leafBlockParsers.indexOf(v4.SetextHeading)>-1||n<3?-1:1}function f4(t,e){for(let i=t.stack.length-1;i>=0;i--)if(t.stack[i].type==e)return!0;return!1}function vw(t,e,i){return(t.next==45||t.next==43||t.next==42)&&(t.pos==t.text.length-1||Ds(t.text.charCodeAt(t.pos+1)))&&(!i||f4(e,pe.BulletList)||t.skipSpace(t.pos+2)=48&&s<=57;){n++;if(n==t.text.length)return-1;s=t.text.charCodeAt(n)}return n==t.pos||n>t.pos+9||s!=46&&s!=41||nt.pos+1||t.next!=49)?-1:n+1-t.pos}function d4(t){if(t.next!=35)return-1;let e=t.pos+1;for(;e6?-1:i}function p4(t){if(t.next!=45&&t.next!=61||t.indent>=t.baseIndent+4)return-1;let e=t.pos+1;for(;e/,g4=/\?>/,Nb=[[/^<(?:script|pre|style)(?:\s|>|$)/i,/<\/(?:script|pre|style)>/i],[/^\s*/i.exec(n);if(r)return t.append(it(pe.Comment,i,i+1+r[0].length));let o=/^\?[^]*?\?>/.exec(n);if(o)return t.append(it(pe.ProcessingInstruction,i,i+1+o[0].length));let l=/^(?:![A-Z][^]*?>|!\[CDATA\[[^]*?\]\]>|\/\s*[a-zA-Z][\w-]*\s*>|\s*[a-zA-Z][\w-]*(\s+[a-zA-Z:_][\w-.:]*(?:\s*=\s*(?:[^\s"'=<>`]+|'[^']*'|"[^"]*"))?)*\s*(\/\s*)?>)/.exec(n);return l?t.append(it(pe.HTMLTag,i,i+1+l[0].length)):-1},Emphasis(t,e,i){if(e!=95&&e!=42)return-1;let n=i+1;for(;t.char(n)==e;)n++;let s=t.slice(i-1,i),r=t.slice(n,n+1),o=Gf.test(s),l=Gf.test(r),c=/\s|^$/.test(s),u=/\s|^$/.test(r),d=!u&&(!l||c||o),p=!c&&(!o||u||l),g=d&&(e==42||!p||o),O=p&&(e==42||!d||l);return t.append(new is(e==95?x4:w4,i,n,(g?1:0)|(O?2:0)))},HardBreak(t,e,i){if(e==92&&t.char(i+1)==10)return t.append(it(pe.HardBreak,i,i+2));if(e==32){let n=i+1;for(;t.char(n)==32;)n++;if(t.char(n)==10&&n>=i+2)return t.append(it(pe.HardBreak,i,n+1))}return-1},Link(t,e,i){return e==91?t.append(new is(dl,i,i+1,1)):-1},Image(t,e,i){return e==33&&t.char(i+1)==91?t.append(new is(qg,i,i+2,1)):-1},LinkEnd(t,e,i){if(e!=93)return-1;for(let n=t.parts.length-1;n>=0;n--){let s=t.parts[n];if(s instanceof is&&(s.type==dl||s.type==qg)){if(!s.side||t.skipSpace(s.to)==i&&!/[(\[]/.test(t.slice(i+1,i+2)))return t.parts[n]=null,-1;let r=t.takeContent(n),o=t.parts[n]=IK(t,r,s.type==dl?pe.Link:pe.Image,s.from,i+1);if(s.type==dl)for(let l=0;le?it(pe.URL,e+i,r+i):r==t.length?null:!1}}function k4(t,e,i){let n=t.charCodeAt(e);if(n!=39&&n!=34&&n!=40)return!1;let s=n==40?41:n;for(let r=e+1,o=!1;r=this.end?-1:this.text.charCodeAt(e-this.offset)}get end(){return this.offset+this.text.length}slice(e,i){return this.text.slice(e-this.offset,i-this.offset)}append(e){return this.parts.push(e),e.to}addDelimiter(e,i,n,s,r){return this.append(new is(e,i,n,(s?1:0)|(r?2:0)))}get hasOpenLink(){for(let e=this.parts.length-1;e>=0;e--){let i=this.parts[e];if(i instanceof is&&(i.type==dl||i.type==qg))return!0}return!1}addElement(e){return this.append(e)}resolveMarkers(e){for(let n=e;n=e;c--){let b=this.parts[c];if(b instanceof is&&b.side&1&&b.type==s.type&&!(r&&(s.side&1||b.side&2)&&(b.to-b.from+o)%3==0&&((b.to-b.from)%3||o%3))){l=b;break}}if(!l)continue;let u=s.type.resolve,d=[],p=l.from,g=s.to;if(r){let b=Math.min(2,l.to-l.from,o);p=l.to-b,g=s.from+b,u=b==1?"Emphasis":"StrongEmphasis"}l.type.mark&&d.push(this.elt(l.type.mark,p,l.to));for(let b=c+1;b=0;i--){let n=this.parts[i];if(n instanceof is&&n.type==e&&n.side&1)return i}return null}takeContent(e){let i=this.resolveMarkers(e);return this.parts.length=e,i}getDelimiterAt(e){let i=this.parts[e];return i instanceof is?i:null}skipSpace(e){return _f(this.text,e-this.offset)+this.offset}elt(e,i,n,s){return typeof e=="string"?it(this.parser.getNodeType(e),i,n,s):new S4(e,i)}}yw.linkStart=dl;yw.imageStart=qg;function jb(t,e){if(!e.length)return t;if(!t.length)return e;let i=t.slice(),n=0;for(let s of e){for(;n(e?e-1:0))return!1;if(this.fragmentEnd<0){let r=this.fragment.to;for(;r>0&&this.input.read(r-1,r)!=` +`;)r--;this.fragmentEnd=r?r-1:0}let n=this.cursor;n||(n=this.cursor=this.fragment.tree.cursor(),n.firstChild());let s=e+this.fragment.offset;for(;n.to<=s;)if(!n.parent())return!1;for(;;){if(n.from>=s)return this.fragment.from<=i;if(!n.childAfter(s))return!1}}matches(e){let i=this.cursor.tree;return i&&i.prop(ze.contextHash)==e}takeNodes(e){let i=this.cursor,n=this.fragment.offset,s=this.fragmentEnd-(this.fragment.openEnd?1:0),r=e.absoluteLineStart,o=r,l=e.block.children.length,c=o,u=l;for(;;){if(i.to-n>s){if(i.type.isAnonymous&&i.firstChild())continue;break}let d=A4(i.from-n,e.ranges);if(i.to-n<=e.ranges[e.rangeI].to)e.addNode(i.tree,d);else{let p=new ct(e.parser.nodeSet.types[pe.Paragraph],[],[],0,e.block.hashProp);e.reusePlaceholders.set(p,i.tree),e.addNode(p,d)}if(i.type.is("Block")&&(VK.indexOf(i.type.id)<0?(o=i.to-n,l=e.block.children.length):(o=c,l=u),c=i.to-n,u=e.block.children.length),!i.nextSibling())break}for(;e.block.children.length>l;)e.block.children.pop(),e.block.positions.pop();return o-r}};function A4(t,e){let i=t;for(let n=1;n_m[t]),Object.keys(_m).map(t=>v4[t]),Object.keys(_m),NK,c4,Object.keys(F_).map(t=>F_[t]),Object.keys(F_),[]);function WK(t,e,i){let n=[];for(let s=t.firstChild,r=e;;s=s.nextSibling){let o=s?s.from:i;if(o>r&&n.push({from:r,to:o}),!s)break;r=s.to}return n}function UK(t){let{codeParser:e,htmlParser:i}=t;return{wrap:$B((s,r)=>{let o=s.type.id;if(e&&(o==pe.CodeBlock||o==pe.FencedCode)){let l="";if(o==pe.FencedCode){let u=s.node.getChild(pe.CodeInfo);u&&(l=r.read(u.from,u.to))}let c=e(l);if(c)return{parser:c,overlay:u=>u.type.id==pe.CodeText,bracketed:o==pe.FencedCode}}else if(i&&(o==pe.HTMLBlock||o==pe.HTMLTag||o==pe.CommentBlock))return{parser:i,overlay:WK(s.node,s.from,s.to)};return null})}}const YK={resolve:"Strikethrough",mark:"StrikethroughMark"},HK={defineNodes:[{name:"Strikethrough",style:{"Strikethrough/...":V.strikethrough}},{name:"StrikethroughMark",style:V.processingInstruction}],parseInline:[{name:"Strikethrough",parse(t,e,i){if(e!=126||t.char(i+1)!=126||t.char(i+2)==126)return-1;let n=t.slice(i-1,i),s=t.slice(i+2,i+3),r=/\s|^$/.test(n),o=/\s|^$/.test(s),l=Gf.test(n),c=Gf.test(s);return t.addDelimiter(YK,i,i+2,!o&&(!c||r||l),!r&&(!l||o||c))},after:"Emphasis"}]};function yf(t,e,i=0,n,s=0){let r=0,o=!0,l=-1,c=-1,u=!1,d=()=>{n.push(t.elt("TableCell",s+l,s+c,t.parser.parseInline(e.slice(l,c),s+l)))};for(let p=i;p-1)&&r++,o=!1,n&&(l>-1&&d(),n.push(t.elt("TableDelimiter",p+s,p+s+1))),l=c=-1):(u||g!=32&&g!=9)&&(l<0&&(l=p),c=p+1),u=!u&&g==92}return l>-1&&(r++,n&&d()),r}function MM(t,e){for(let i=e;is instanceof PM)||!MM(e.text,e.basePos))return!1;let n=t.peekLine();return E4.test(n)&&yf(t,e.text,e.basePos)==yf(t,n,e.basePos)},before:"SetextHeading"}]};class GK{nextLine(){return!1}finish(e,i){return e.addLeafElement(i,e.elt("Task",i.start,i.start+i.content.length,[e.elt("TaskMarker",i.start,i.start+3),...e.parser.parseInline(i.content.slice(3),i.start+3)])),!0}}const KK={defineNodes:[{name:"Task",block:!0,style:V.list},{name:"TaskMarker",style:V.atom}],parseBlock:[{name:"TaskList",leaf(t,e){return/^\[[ xX]\][ \t]/.test(e.content)&&t.parentType().name=="ListItem"?new GK:null},after:"SetextHeading"}]},RM=/(www\.)|(https?:\/\/)|([\w.+-]{1,100}@)|(mailto:|xmpp:)/gy,QM=/[\w-]+(\.[\w-]+)+(\/[^\s<]*)?/gy,JK=/[\w-]+\.[\w-]+($|\/)/,LM=/[\w.+-]+@[\w-]+(\.[\w.-]+)+/gy,DM=/\/[a-zA-Z\d@.]+/gy;function BM(t,e,i,n){let s=0;for(let r=e;r-1)return-1;let n=e+i[0].length;for(;;){let s=t[n-1],r;if(/[?!.,:*_~]/.test(s)||s==")"&&BM(t,e,n,")")>BM(t,e,n,"("))n--;else if(s==";"&&(r=/&(?:#\d+|#x[a-f\d]+|\w+);$/.exec(t.slice(e,n))))n=e+r.index;else break}return n}function $M(t,e){LM.lastIndex=e;let i=LM.exec(t);if(!i)return-1;let n=i[0][i[0].length-1];return n=="_"||n=="-"?-1:e+i[0].length-(n=="."?1:0)}const tJ={parseInline:[{name:"Autolink",parse(t,e,i){let n=i-t.offset;if(n&&/\w/.test(t.text[n-1]))return-1;RM.lastIndex=n;let s=RM.exec(t.text),r=-1;if(!s)return-1;if(s[1]||s[2]){if(r=eJ(t.text,n+s[0].length),r>-1&&t.hasOpenLink){let o=/([^\[\]]|\[[^\]]*\])*/.exec(t.text.slice(n,r));r=n+o[0].length}}else s[3]?r=$M(t.text,n):(r=$M(t.text,n+s[0].length),r>-1&&s[0]=="xmpp:"&&(DM.lastIndex=r,s=DM.exec(t.text),s&&(r=s.index+s[0].length)));return r<0?-1:(t.addElement(t.elt("URL",i,r+t.offset)),r+t.offset)}}]},iJ=[FK,KK,HK,tJ];function M4(t,e,i){return(n,s,r)=>{if(s!=t||n.char(r+1)==t)return-1;let o=[n.elt(i,r,r+1)];for(let l=r+1;li%3==0).concat(this.state)}]@${this.pos}${this.score?"!"+this.score:""}`}static start(e,i,n=0){let s=e.parser.context;return new Wg(e,[],i,n,n,0,[],0,s?new zM(s,s.start):null,0,null)}get context(){return this.curContext?this.curContext.context:null}pushState(e,i){this.stack.push(this.state,i,this.bufferBase+this.buffer.length),this.state=e}reduce(e){var i;let n=e>>19,s=e&65535,{parser:r}=this.p,o=this.reducePos=2e3&&!(!((i=this.p.parser.nodeSet.types[s])===null||i===void 0)&&i.isAnonymous)&&(u==this.p.lastBigReductionStart?(this.p.bigReductionCount++,this.p.lastBigReductionSize=d):this.p.lastBigReductionSizec;)this.stack.pop();this.reduceContext(s,u)}storeNode(e,i,n,s=4,r=!1){if(e==0&&(!this.stack.length||this.stack[this.stack.length-1]0&&o.buffer[l-4]==0&&o.buffer[l-1]>-1){if(i==n)return;if(o.buffer[l-2]>=i){o.buffer[l-2]=n;return}}}if(!r||this.pos==n)this.buffer.push(e,i,n,s);else{let o=this.buffer.length;if(o>0&&(this.buffer[o-4]!=0||this.buffer[o-1]<0)){let l=!1;for(let c=o;c>0&&this.buffer[c-2]>n;c-=4)if(this.buffer[c-1]>=0){l=!0;break}if(l)for(;o>0&&this.buffer[o-2]>n;)this.buffer[o]=this.buffer[o-4],this.buffer[o+1]=this.buffer[o-3],this.buffer[o+2]=this.buffer[o-2],this.buffer[o+3]=this.buffer[o-1],o-=4,s>4&&(s-=4)}this.buffer[o]=e,this.buffer[o+1]=i,this.buffer[o+2]=n,this.buffer[o+3]=s}}shift(e,i,n,s){if(e&131072)this.pushState(e&65535,this.pos);else if((e&262144)==0){let r=e,{parser:o}=this.p;this.pos=s;let l=o.stateFlag(r,1);!l&&(s>n||i<=o.maxNode)&&(this.reducePos=s),this.pushState(r,l?n:Math.min(n,this.reducePos)),this.shiftContext(i,n),i<=o.maxNode&&this.buffer.push(i,n,s,4)}else this.pos=s,this.shiftContext(i,n),i<=this.p.parser.maxNode&&this.buffer.push(i,n,s,4)}apply(e,i,n,s){e&65536?this.reduce(e):this.shift(e,i,n,s)}useNode(e,i){let n=this.p.reused.length-1;(n<0||this.p.reused[n]!=e)&&(this.p.reused.push(e),n++);let s=this.pos;this.reducePos=this.pos=s+e.length,this.pushState(i,s),this.buffer.push(n,s,this.reducePos,-1),this.curContext&&this.updateContext(this.curContext.tracker.reuse(this.curContext.context,e,this,this.p.stream.reset(this.pos-e.length)))}split(){let e=this,i=e.buffer.length;for(;i>0&&e.buffer[i-2]>e.reducePos;)i-=4;let n=e.buffer.slice(i),s=e.bufferBase+i;for(;e&&s==e.bufferBase;)e=e.parent;return new Wg(this.p,this.stack.slice(),this.state,this.reducePos,this.pos,this.score,n,s,this.curContext,this.lookAhead,e)}recoverByDelete(e,i){let n=e<=this.p.parser.maxNode;n&&this.storeNode(e,this.pos,i,4),this.storeNode(0,this.pos,i,n?8:4),this.pos=this.reducePos=i,this.score-=190}canShift(e){for(let i=new oJ(this);;){let n=this.p.parser.stateSlot(i.state,4)||this.p.parser.hasAction(i.state,e);if(n==0)return!1;if((n&65536)==0)return!0;i.reduce(n)}}recoverByInsert(e){if(this.stack.length>=300)return[];let i=this.p.parser.nextStates(this.state);if(i.length>8||this.stack.length>=120){let s=[];for(let r=0,o;rc&1&&l==o)||s.push(i[r],o)}i=s}let n=[];for(let s=0;s>19,s=i&65535,r=this.stack.length-n*3;if(r<0||e.getGoto(this.stack[r],s,!1)<0){let o=this.findForcedReduction();if(o==null)return!1;i=o}this.storeNode(0,this.pos,this.pos,4,!0),this.score-=100}return this.reducePos=this.pos,this.reduce(i),!0}findForcedReduction(){let{parser:e}=this.p,i=[],n=(s,r)=>{if(!i.includes(s))return i.push(s),e.allActions(s,o=>{if(!(o&393216))if(o&65536){let l=(o>>19)-r;if(l>1){let c=o&65535,u=this.stack.length-l*3;if(u>=0&&e.getGoto(this.stack[u],c,!1)>=0)return l<<19|65536|c}}else{let l=n(o,r+1);if(l!=null)return l}})};return n(this.state,0)}forceAll(){for(;!this.p.parser.stateFlag(this.state,2);)if(!this.forceReduce()){this.storeNode(0,this.pos,this.pos,4,!0);break}return this}get deadEnd(){if(this.stack.length!=3)return!1;let{parser:e}=this.p;return e.data[e.stateSlot(this.state,1)]==65535&&!e.stateSlot(this.state,4)}restart(){this.storeNode(0,this.pos,this.pos,4,!0),this.state=this.stack[0],this.stack.length=0}sameState(e){if(this.state!=e.state||this.stack.length!=e.stack.length)return!1;for(let i=0;i0&&this.emitLookAhead()}}class zM{constructor(e,i){this.tracker=e,this.context=i,this.hash=e.strict?e.hash(i):0}}class oJ{constructor(e){this.start=e,this.state=e.state,this.stack=e.stack,this.base=this.stack.length}reduce(e){let i=e&65535,n=e>>19;n==0?(this.stack==this.start.stack&&(this.stack=this.stack.slice()),this.stack.push(this.state,0,0),this.base+=3):this.base-=(n-1)*3;let s=this.start.p.parser.getGoto(this.stack[this.base-3],i,!0);this.state=s}}class Ug{constructor(e,i,n){this.stack=e,this.pos=i,this.index=n,this.buffer=e.buffer,this.index==0&&this.maybeNext()}static create(e,i=e.bufferBase+e.buffer.length){return new Ug(e,i,i-e.bufferBase)}maybeNext(){let e=this.stack.parent;e!=null&&(this.index=this.stack.bufferBase-e.bufferBase,this.stack=e,this.buffer=e.buffer)}get id(){return this.buffer[this.index-4]}get start(){return this.buffer[this.index-3]}get end(){return this.buffer[this.index-2]}get size(){return this.buffer[this.index-1]}next(){this.index-=4,this.pos-=4,this.index==0&&this.maybeNext()}fork(){return new Ug(this.stack,this.pos,this.index)}}function ef(t,e=Uint16Array){if(typeof t!="string")return t;let i=null;for(let n=0,s=0;n=92&&o--,o>=34&&o--;let c=o-32;if(c>=46&&(c-=46,l=!0),r+=c,l)break;r*=46}i?i[s++]=r:i=new e(r)}return i}class Fm{constructor(){this.start=-1,this.value=-1,this.end=-1,this.extended=-1,this.lookAhead=0,this.mask=0,this.context=0}}const jM=new Fm;class aJ{constructor(e,i){this.input=e,this.ranges=i,this.chunk="",this.chunkOff=0,this.chunk2="",this.chunk2Pos=0,this.next=-1,this.token=jM,this.rangeIndex=0,this.pos=this.chunkPos=i[0].from,this.range=i[0],this.end=i[i.length-1].to,this.readNext()}resolveOffset(e,i){let n=this.range,s=this.rangeIndex,r=this.pos+e;for(;rn.to:r>=n.to;){if(s==this.ranges.length-1)return null;let o=this.ranges[++s];r+=o.from-n.to,n=o}return r}clipPos(e){if(e>=this.range.from&&ee)return Math.max(e,i.from);return this.end}peek(e){let i=this.chunkOff+e,n,s;if(i>=0&&i=this.chunk2Pos&&nl.to&&(this.chunk2=this.chunk2.slice(0,l.to-n)),s=this.chunk2.charCodeAt(0)}}return n>=this.token.lookAhead&&(this.token.lookAhead=n+1),s}acceptToken(e,i=0){let n=i?this.resolveOffset(i,-1):this.pos;if(n==null||n=this.chunk2Pos&&this.posthis.range.to?e.slice(0,this.range.to-this.pos):e,this.chunkPos=this.pos,this.chunkOff=0}}readNext(){return this.chunkOff>=this.chunk.length&&(this.getChunk(),this.chunkOff==this.chunk.length)?this.next=-1:this.next=this.chunk.charCodeAt(this.chunkOff)}advance(e=1){for(this.chunkOff+=e;this.pos+e>=this.range.to;){if(this.rangeIndex==this.ranges.length-1)return this.setDone();e-=this.range.to-this.pos,this.range=this.ranges[++this.rangeIndex],this.pos=this.range.from}return this.pos+=e,this.pos>=this.token.lookAhead&&(this.token.lookAhead=this.pos+1),this.readNext()}setDone(){return this.pos=this.chunkPos=this.end,this.range=this.ranges[this.rangeIndex=this.ranges.length-1],this.chunk="",this.next=-1}reset(e,i){if(i?(this.token=i,i.start=e,i.lookAhead=e+1,i.value=i.extended=-1):this.token=jM,this.pos!=e){if(this.pos=e,e==this.end)return this.setDone(),this;for(;e=this.range.to;)this.range=this.ranges[++this.rangeIndex];e>=this.chunkPos&&e=this.chunkPos&&i<=this.chunkPos+this.chunk.length)return this.chunk.slice(e-this.chunkPos,i-this.chunkPos);if(e>=this.chunk2Pos&&i<=this.chunk2Pos+this.chunk2.length)return this.chunk2.slice(e-this.chunk2Pos,i-this.chunk2Pos);if(e>=this.range.from&&i<=this.range.to)return this.input.read(e,i);let n="";for(let s of this.ranges){if(s.from>=i)break;s.to>e&&(n+=this.input.read(Math.max(s.from,e),Math.min(s.to,i)))}return n}}class Jc{constructor(e,i){this.data=e,this.id=i}token(e,i){let{parser:n}=i.p;P4(this.data,e,i,this.id,n.data,n.tokenPrecTable)}}Jc.prototype.contextual=Jc.prototype.fallback=Jc.prototype.extend=!1;class Yg{constructor(e,i,n){this.precTable=i,this.elseToken=n,this.data=typeof e=="string"?ef(e):e}token(e,i){let n=e.pos,s=0;for(;;){let r=e.next<0,o=e.resolveOffset(1,1);if(P4(this.data,e,i,0,this.data,this.precTable),e.token.value>-1)break;if(this.elseToken==null)return;if(r||s++,o==null)break;e.reset(o,e.token)}s&&(e.reset(n,e.token),e.acceptToken(this.elseToken,s))}}Yg.prototype.contextual=Jc.prototype.fallback=Jc.prototype.extend=!1;class os{constructor(e,i={}){this.token=e,this.contextual=!!i.contextual,this.fallback=!!i.fallback,this.extend=!!i.extend}}function P4(t,e,i,n,s,r){let o=0,l=1<0){let _=t[O];if(c.allows(_)&&(e.token.value==-1||e.token.value==_||lJ(_,e.token.value,s,r))){e.acceptToken(_);break}}let d=e.next,p=0,g=t[o+2];if(e.next<0&&g>p&&t[u+g*3-3]==65535){o=t[u+g*3-1];continue e}for(;p>1,_=u+O+(O<<1),b=t[_],x=t[_+1]||65536;if(d=x)p=O+1;else{o=t[_+2],e.advance();continue e}}break}}function IM(t,e,i){for(let n=e,s;(s=t[n])!=65535;n++)if(s==i)return n-e;return-1}function lJ(t,e,i,n){let s=IM(i,n,e);return s<0||IM(i,n,t)e)&&!n.type.isError)return i<0?Math.max(0,Math.min(n.to-1,e-25)):Math.min(t.length,Math.max(n.from+1,e+25));if(i<0?n.prevSibling():n.nextSibling())break;if(!n.parent())return i<0?0:t.length}}class cJ{constructor(e,i){this.fragments=e,this.nodeSet=i,this.i=0,this.fragment=null,this.safeFrom=-1,this.safeTo=-1,this.trees=[],this.start=[],this.index=[],this.nextFragment()}nextFragment(){let e=this.fragment=this.i==this.fragments.length?null:this.fragments[this.i++];if(e){for(this.safeFrom=e.openStart?VM(e.tree,e.from+e.offset,1)-e.offset:e.from,this.safeTo=e.openEnd?VM(e.tree,e.to+e.offset,-1)-e.offset:e.to;this.trees.length;)this.trees.pop(),this.start.pop(),this.index.pop();this.trees.push(e.tree),this.start.push(-e.offset),this.index.push(0),this.nextStart=this.safeFrom}else this.nextStart=1e9}nodeAt(e){if(ee)return this.nextStart=o,null;if(r instanceof ct){if(o==e){if(o=Math.max(this.safeFrom,e)&&(this.trees.push(r),this.start.push(o),this.index.push(0))}else this.index[i]++,this.nextStart=o+r.length}}}class hJ{constructor(e,i){this.stream=i,this.tokens=[],this.mainToken=null,this.actions=[],this.tokens=e.tokenizers.map(n=>new Fm)}getActions(e){let i=0,n=null,{parser:s}=e.p,{tokenizers:r}=s,o=s.stateSlot(e.state,3),l=e.curContext?e.curContext.hash:0,c=0;for(let u=0;up.end+25&&(c=Math.max(p.lookAhead,c)),p.value!=0)){let g=i;if(p.extended>-1&&(i=this.addActions(e,p.extended,p.end,i)),i=this.addActions(e,p.value,p.end,i),!d.extend&&(n=p,i>g))break}}for(;this.actions.length>i;)this.actions.pop();return c&&e.setLookAhead(c),!n&&e.pos==this.stream.end&&(n=new Fm,n.value=e.p.parser.eofTerm,n.start=n.end=e.pos,i=this.addActions(e,n.value,n.end,i)),this.mainToken=n,this.actions}getMainToken(e){if(this.mainToken)return this.mainToken;let i=new Fm,{pos:n,p:s}=e;return i.start=n,i.end=Math.min(n+1,s.stream.end),i.value=n==s.stream.end?s.parser.eofTerm:0,i}updateCachedToken(e,i,n){let s=this.stream.clipPos(n.pos);if(i.token(this.stream.reset(s,e),n),e.value>-1){let{parser:r}=n.p;for(let o=0;o=0&&n.p.parser.dialect.allows(l>>1)){(l&1)==0?e.value=l>>1:e.extended=l>>1;break}}}else e.value=0,e.end=this.stream.clipPos(s+1)}putAction(e,i,n,s){for(let r=0;re.bufferLength*4?new cJ(n,e.nodeSet):null}get parsedPos(){return this.minStackPos}advance(){let e=this.stacks,i=this.minStackPos,n=this.stacks=[],s,r;if(this.bigReductionCount>300&&e.length==1){let[o]=e;for(;o.forceReduce()&&o.stack.length&&o.stack[o.stack.length-2]>=this.lastBigReductionStart;);this.bigReductionCount=this.lastBigReductionSize=0}for(let o=0;oi)n.push(l);else{if(this.advanceStack(l,n,e))continue;{s||(s=[],r=[]),s.push(l);let c=this.tokens.getMainToken(l);r.push(c.value,c.end)}}break}}if(!n.length){let o=s&&dJ(s);if(o)return Fn&&console.log("Finish with "+this.stackID(o)),this.stackToTree(o);if(this.parser.strict)throw Fn&&s&&console.log("Stuck with token "+(this.tokens.mainToken?this.parser.getName(this.tokens.mainToken.value):"none")),new SyntaxError("No parse at "+i);this.recovering||(this.recovering=5)}if(this.recovering&&s){let o=this.stoppedAt!=null&&s[0].pos>this.stoppedAt?s[0]:this.runRecovery(s,r,n);if(o)return Fn&&console.log("Force-finish "+this.stackID(o)),this.stackToTree(o.forceAll())}if(this.recovering){let o=this.recovering==1?1:this.recovering*3;if(n.length>o)for(n.sort((l,c)=>c.score-l.score);n.length>o;)n.pop();n.some(l=>l.reducePos>i)&&this.recovering--}else if(n.length>1){e:for(let o=0;o500&&u.buffer.length>500)if((l.score-u.score||l.buffer.length-u.buffer.length)>0)n.splice(c--,1);else{n.splice(o--,1);continue e}}}n.length>12&&(n.sort((o,l)=>l.score-o.score),n.splice(12,n.length-12))}this.minStackPos=n[0].pos;for(let o=1;o ":"";if(this.stoppedAt!=null&&s>this.stoppedAt)return e.forceReduce()?e:null;if(this.fragments){let u=e.curContext&&e.curContext.tracker.strict,d=u?e.curContext.hash:0;for(let p=this.fragments.nodeAt(s);p;){let g=this.parser.nodeSet.types[p.type.id]==p.type?r.getGoto(e.state,p.type.id):-1;if(g>-1&&p.length&&(!u||(p.prop(ze.contextHash)||0)==d))return e.useNode(p,g),Fn&&console.log(o+this.stackID(e)+` (via reuse of ${r.getName(p.type.id)})`),!0;if(!(p instanceof ct)||p.children.length==0||p.positions[0]>0)break;let O=p.children[0];if(O instanceof ct&&p.positions[0]==0)p=O;else break}}let l=r.stateSlot(e.state,4);if(l>0)return e.reduce(l),Fn&&console.log(o+this.stackID(e)+` (via always-reduce ${r.getName(l&65535)})`),!0;if(e.stack.length>=8400)for(;e.stack.length>6e3&&e.forceReduce(););let c=this.tokens.getActions(e);for(let u=0;us?i.push(_):n.push(_)}return!1}advanceFully(e,i){let n=e.pos;for(;;){if(!this.advanceStack(e,null,null))return!1;if(e.pos>n)return XM(e,i),!0}}runRecovery(e,i,n){let s=null,r=!1;for(let o=0;o ":"";if(l.deadEnd&&(r||(r=!0,l.restart(),Fn&&console.log(d+this.stackID(l)+" (restarted)"),this.advanceFully(l,n))))continue;let p=l.split(),g=d;for(let O=0;O<10&&p.forceReduce()&&(Fn&&console.log(g+this.stackID(p)+" (via force-reduce)"),!this.advanceFully(p,n));O++)Fn&&(g=this.stackID(p)+" -> ");for(let O of l.recoverByInsert(c))Fn&&console.log(d+this.stackID(O)+" (via recover-insert)"),this.advanceFully(O,n);this.stream.end>l.pos?(u==l.pos&&(u++,c=0),l.recoverByDelete(c,u),Fn&&console.log(d+this.stackID(l)+` (via recover-delete ${this.parser.getName(c)})`),XM(l,n)):(!s||s.scoret;class R4{constructor(e){this.start=e.start,this.shift=e.shift||K_,this.reduce=e.reduce||K_,this.reuse=e.reuse||K_,this.hash=e.hash||(()=>0),this.strict=e.strict!==!1}}class fh extends Fx{constructor(e){if(super(),this.wrappers=[],e.version!=14)throw new RangeError(`Parser version (${e.version}) doesn't match runtime version (14)`);let i=e.nodeNames.split(" ");this.minRepeatTerm=i.length;for(let l=0;le.topRules[l][1]),s=[];for(let l=0;l=0)r(d,c,l[u++]);else{let p=l[u+-d];for(let g=-d;g>0;g--)r(l[u++],c,p);u++}}}this.nodeSet=new pd(i.map((l,c)=>_i.define({name:c>=this.minRepeatTerm?void 0:l,id:c,props:s[c],top:n.indexOf(c)>-1,error:c==0,skipped:e.skippedNodes&&e.skippedNodes.indexOf(c)>-1}))),e.propSources&&(this.nodeSet=this.nodeSet.extend(...e.propSources)),this.strict=!1,this.bufferLength=RB;let o=ef(e.tokenData);this.context=e.context,this.specializerSpecs=e.specialized||[],this.specialized=new Uint16Array(this.specializerSpecs.length);for(let l=0;ltypeof l=="number"?new Jc(o,l):l),this.topRules=e.topRules,this.dialects=e.dialects||{},this.dynamicPrecedences=e.dynamicPrecedences||null,this.tokenPrecTable=e.tokenPrec,this.termNames=e.termNames||null,this.maxNode=this.nodeSet.types.length-1,this.dialect=this.parseDialect(),this.top=this.topRules[Object.keys(this.topRules)[0]]}createParse(e,i,n){let s=new uJ(this,e,i,n);for(let r of this.wrappers)s=r(s,e,i,n);return s}getGoto(e,i,n=!1){let s=this.goto;if(i>=s[0])return-1;for(let r=s[i+1];;){let o=s[r++],l=o&1,c=s[r++];if(l&&n)return c;for(let u=r+(o>>1);r0}validAction(e,i){return!!this.allActions(e,n=>n==i?!0:null)}allActions(e,i){let n=this.stateSlot(e,4),s=n?i(n):void 0;for(let r=this.stateSlot(e,1);s==null;r+=3){if(this.data[r]==65535)if(this.data[r+1]==1)r=fo(this.data,r+2);else break;s=i(fo(this.data,r+1))}return s}nextStates(e){let i=[];for(let n=this.stateSlot(e,1);;n+=3){if(this.data[n]==65535)if(this.data[n+1]==1)n=fo(this.data,n+2);else break;if((this.data[n+2]&1)==0){let s=this.data[n+1];i.some((r,o)=>o&1&&r==s)||i.push(this.data[n],s)}}return i}configure(e){let i=Object.assign(Object.create(fh.prototype),this);if(e.props&&(i.nodeSet=this.nodeSet.extend(...e.props)),e.top){let n=this.topRules[e.top];if(!n)throw new RangeError(`Invalid top rule name ${e.top}`);i.top=n}return e.tokenizers&&(i.tokenizers=this.tokenizers.map(n=>{let s=e.tokenizers.find(r=>r.from==n);return s?s.to:n})),e.specializers&&(i.specializers=this.specializers.slice(),i.specializerSpecs=this.specializerSpecs.map((n,s)=>{let r=e.specializers.find(l=>l.from==n.external);if(!r)return n;let o=Object.assign(Object.assign({},n),{external:r.to});return i.specializers[s]=ZM(o),o})),e.contextTracker&&(i.context=e.contextTracker),e.dialect&&(i.dialect=this.parseDialect(e.dialect)),e.strict!=null&&(i.strict=e.strict),e.wrap&&(i.wrappers=i.wrappers.concat(e.wrap)),e.bufferLength!=null&&(i.bufferLength=e.bufferLength),i}hasWrappers(){return this.wrappers.length>0}getName(e){return this.termNames?this.termNames[e]:String(e<=this.maxNode&&this.nodeSet.types[e].name||e)}get eofTerm(){return this.maxNode+1}get topNode(){return this.nodeSet.types[this.top[1]]}dynamicPrecedence(e){let i=this.dynamicPrecedences;return i==null?0:i[e]||0}parseDialect(e){let i=Object.keys(this.dialects),n=i.map(()=>!1);if(e)for(let r of e.split(" ")){let o=i.indexOf(r);o>=0&&(n[o]=!0)}let s=null;for(let r=0;rn)&&i.p.parser.stateFlag(i.state,2)&&(!e||e.scoret.external(i,n)<<1|e}return t.get}const pJ=55,mJ=1,gJ=56,OJ=2,vJ=57,_J=3,qM=4,yJ=5,bw=6,Q4=7,L4=8,D4=9,B4=10,bJ=11,SJ=12,xJ=13,J_=58,wJ=14,CJ=15,WM=59,$4=21,kJ=23,N4=24,TJ=25,Ib=27,z4=28,AJ=29,EJ=32,MJ=35,PJ=37,RJ=38,QJ=0,LJ=1,DJ={area:!0,base:!0,br:!0,col:!0,command:!0,embed:!0,frame:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0,menuitem:!0},BJ={dd:!0,li:!0,optgroup:!0,option:!0,p:!0,rp:!0,rt:!0,tbody:!0,td:!0,tfoot:!0,th:!0,tr:!0},UM={dd:{dd:!0,dt:!0},dt:{dd:!0,dt:!0},li:{li:!0},option:{option:!0,optgroup:!0},optgroup:{optgroup:!0},p:{address:!0,article:!0,aside:!0,blockquote:!0,dir:!0,div:!0,dl:!0,fieldset:!0,footer:!0,form:!0,h1:!0,h2:!0,h3:!0,h4:!0,h5:!0,h6:!0,header:!0,hgroup:!0,hr:!0,menu:!0,nav:!0,ol:!0,p:!0,pre:!0,section:!0,table:!0,ul:!0},rp:{rp:!0,rt:!0},rt:{rp:!0,rt:!0},tbody:{tbody:!0,tfoot:!0},td:{td:!0,th:!0},tfoot:{tbody:!0},th:{td:!0,th:!0},thead:{tbody:!0,tfoot:!0},tr:{tr:!0}};function $J(t){return t==45||t==46||t==58||t>=65&&t<=90||t==95||t>=97&&t<=122||t>=161}let YM=null,HM=null,FM=0;function Vb(t,e){let i=t.pos+e;if(FM==i&&HM==t)return YM;let n=t.peek(e),s="";for(;$J(n);)s+=String.fromCharCode(n),n=t.peek(++e);return HM=t,FM=i,YM=s?s.toLowerCase():n==NJ||n==zJ?void 0:null}const j4=60,Hg=62,Sw=47,NJ=63,zJ=33,jJ=45;function GM(t,e){this.name=t,this.parent=e}const IJ=[bw,B4,Q4,L4,D4],VJ=new R4({start:null,shift(t,e,i,n){return IJ.indexOf(e)>-1?new GM(Vb(n,1)||"",t):t},reduce(t,e){return e==$4&&t?t.parent:t},reuse(t,e,i,n){let s=e.type.id;return s==bw||s==PJ?new GM(Vb(n,1)||"",t):t},strict:!1}),XJ=new os((t,e)=>{if(t.next!=j4){t.next<0&&e.context&&t.acceptToken(J_);return}t.advance();let i=t.next==Sw;i&&t.advance();let n=Vb(t,0);if(n===void 0)return;if(!n)return t.acceptToken(i?CJ:wJ);let s=e.context?e.context.name:null;if(i){if(n==s)return t.acceptToken(bJ);if(s&&BJ[s])return t.acceptToken(J_,-2);if(e.dialectEnabled(QJ))return t.acceptToken(SJ);for(let r=e.context;r;r=r.parent)if(r.name==n)return;t.acceptToken(xJ)}else{if(n=="script")return t.acceptToken(Q4);if(n=="style")return t.acceptToken(L4);if(n=="textarea")return t.acceptToken(D4);if(DJ.hasOwnProperty(n))return t.acceptToken(B4);s&&UM[s]&&UM[s][n]?t.acceptToken(J_,-1):t.acceptToken(bw)}},{contextual:!0}),ZJ=new os(t=>{for(let e=0,i=0;;i++){if(t.next<0){i&&t.acceptToken(WM);break}if(t.next==jJ)e++;else if(t.next==Hg&&e>=2){i>=3&&t.acceptToken(WM,-2);break}else e=0;t.advance()}});function qJ(t){for(;t;t=t.parent)if(t.name=="svg"||t.name=="math")return!0;return!1}const WJ=new os((t,e)=>{if(t.next==Sw&&t.peek(1)==Hg){let i=e.dialectEnabled(LJ)||qJ(e.context);t.acceptToken(i?yJ:qM,2)}else t.next==Hg&&t.acceptToken(qM,1)});function xw(t,e,i){let n=2+t.length;return new os(s=>{for(let r=0,o=0,l=0;;l++){if(s.next<0){l&&s.acceptToken(e);break}if(r==0&&s.next==j4||r==1&&s.next==Sw||r>=2&&ro?s.acceptToken(e,-o):s.acceptToken(i,-(o-2));break}else if((s.next==10||s.next==13)&&l){s.acceptToken(e,1);break}else r=o=0;s.advance()}})}const UJ=xw("script",pJ,mJ),YJ=xw("style",gJ,OJ),HJ=xw("textarea",vJ,_J),FJ=_h({"Text RawText IncompleteTag IncompleteCloseTag":V.content,"StartTag StartCloseTag SelfClosingEndTag EndTag":V.angleBracket,TagName:V.tagName,"MismatchedCloseTag/TagName":[V.tagName,V.invalid],AttributeName:V.attributeName,"AttributeValue UnquotedAttributeValue":V.attributeValue,Is:V.definitionOperator,"EntityReference CharacterReference":V.character,Comment:V.blockComment,ProcessingInst:V.processingInstruction,DoctypeDecl:V.documentMeta}),GJ=fh.deserialize({version:14,states:",xOVO!rOOO!ZQ#tO'#CrO!`Q#tO'#C{O!eQ#tO'#DOO!jQ#tO'#DRO!oQ#tO'#DTO!tOaO'#CqO#PObO'#CqO#[OdO'#CqO$kO!rO'#CqOOO`'#Cq'#CqO$rO$fO'#DUO$zQ#tO'#DWO%PQ#tO'#DXOOO`'#Dl'#DlOOO`'#DZ'#DZQVO!rOOO%UQ&rO,59^O%aQ&rO,59gO%lQ&rO,59jO%wQ&rO,59mO&SQ&rO,59oOOOa'#D_'#D_O&_OaO'#CyO&jOaO,59]OOOb'#D`'#D`O&rObO'#C|O&}ObO,59]OOOd'#Da'#DaO'VOdO'#DPO'bOdO,59]OOO`'#Db'#DbO'jO!rO,59]O'qQ#tO'#DSOOO`,59],59]OOOp'#Dc'#DcO'vO$fO,59pOOO`,59p,59pO(OQ#|O,59rO(TQ#|O,59sOOO`-E7X-E7XO(YQ&rO'#CtOOQW'#D['#D[O(hQ&rO1G.xOOOa1G.x1G.xOOO`1G/Z1G/ZO(sQ&rO1G/ROOOb1G/R1G/RO)OQ&rO1G/UOOOd1G/U1G/UO)ZQ&rO1G/XOOO`1G/X1G/XO)fQ&rO1G/ZOOOa-E7]-E7]O)qQ#tO'#CzOOO`1G.w1G.wOOOb-E7^-E7^O)vQ#tO'#C}OOOd-E7_-E7_O){Q#tO'#DQOOO`-E7`-E7`O*QQ#|O,59nOOOp-E7a-E7aOOO`1G/[1G/[OOO`1G/^1G/^OOO`1G/_1G/_O*VQ,UO,59`OOQW-E7Y-E7YOOOa7+$d7+$dOOO`7+$u7+$uOOOb7+$m7+$mOOOd7+$p7+$pOOO`7+$s7+$sO*bQ#|O,59fO*gQ#|O,59iO*lQ#|O,59lOOO`1G/Y1G/YO*qO7[O'#CwO+SOMhO'#CwOOQW1G.z1G.zOOO`1G/Q1G/QOOO`1G/T1G/TOOO`1G/W1G/WOOOO'#D]'#D]O+eO7[O,59cOOQW,59c,59cOOOO'#D^'#D^O+vOMhO,59cOOOO-E7Z-E7ZOOQW1G.}1G.}OOOO-E7[-E7[",stateData:",c~O!_OS~OUSOVPOWQOXROYTO[]O][O^^O_^Oa^Ob^Oc^Od^Oy^O|_O!eZO~OgaO~OgbO~OgcO~OgdO~OgeO~O!XfOPmP![mP~O!YiOQpP![pP~O!ZlORsP![sP~OUSOVPOWQOXROYTOZqO[]O][O^^O_^Oa^Ob^Oc^Od^Oy^O!eZO~O![rO~P#gO!]sO!fuO~OgvO~OgwO~OS|OT}OiyO~OS!POT}OiyO~OS!ROT}OiyO~OS!TOT}OiyO~OS}OT}OiyO~O!XfOPmX![mX~OP!WO![!XO~O!YiOQpX![pX~OQ!ZO![!XO~O!ZlORsX![sX~OR!]O![!XO~O![!XO~P#gOg!_O~O!]sO!f!aO~OS!bO~OS!cO~Oj!dOShXThXihX~OS!fOT!gOiyO~OS!hOT!gOiyO~OS!iOT!gOiyO~OS!jOT!gOiyO~OS!gOT!gOiyO~Og!kO~Og!lO~Og!mO~OS!nO~Ol!qO!a!oO!c!pO~OS!rO~OS!sO~OS!tO~Ob!uOc!uOd!uO!a!wO!b!uO~Ob!xOc!xOd!xO!c!wO!d!xO~Ob!uOc!uOd!uO!a!{O!b!uO~Ob!xOc!xOd!xO!c!{O!d!xO~OT~cbd!ey|!e~",goto:"%q!aPPPPPPPPPPPPPPPPPPPPP!b!hP!nPP!zP!}#Q#T#Z#^#a#g#j#m#s#y!bP!b!bP$P$V$m$s$y%P%V%]%cPPPPPPPP%iX^OX`pXUOX`pezabcde{!O!Q!S!UR!q!dRhUR!XhXVOX`pRkVR!XkXWOX`pRnWR!XnXXOX`pQrXR!XpXYOX`pQ`ORx`Q{aQ!ObQ!QcQ!SdQ!UeZ!e{!O!Q!S!UQ!v!oR!z!vQ!y!pR!|!yQgUR!VgQjVR!YjQmWR![mQpXR!^pQtZR!`tS_O`ToXp",nodeNames:"⚠ StartCloseTag StartCloseTag StartCloseTag EndTag SelfClosingEndTag StartTag StartTag StartTag StartTag StartTag StartCloseTag StartCloseTag StartCloseTag IncompleteTag IncompleteCloseTag Document Text EntityReference CharacterReference InvalidEntity Element OpenTag TagName Attribute AttributeName Is AttributeValue UnquotedAttributeValue ScriptText CloseTag OpenTag StyleText CloseTag OpenTag TextareaText CloseTag OpenTag CloseTag SelfClosingTag Comment ProcessingInst MismatchedCloseTag CloseTag DoctypeDecl",maxTerm:68,context:VJ,nodeProps:[["closedBy",-10,1,2,3,7,8,9,10,11,12,13,"EndTag",6,"EndTag SelfClosingEndTag",-4,22,31,34,37,"CloseTag"],["openedBy",4,"StartTag StartCloseTag",5,"StartTag",-4,30,33,36,38,"OpenTag"],["group",-10,14,15,18,19,20,21,40,41,42,43,"Entity",17,"Entity TextContent",-3,29,32,35,"TextContent Entity"],["isolate",-11,22,30,31,33,34,36,37,38,39,42,43,"ltr",-3,27,28,40,""]],propSources:[FJ],skippedNodes:[0],repeatNodeCount:9,tokenData:"!]tw8twx7Sx!P8t!P!Q5u!Q!]8t!]!^/^!^!a7S!a#S8t#S#T;{#T#s8t#s$f5u$f;'S8t;'S;=`>V<%l?Ah8t?Ah?BY5u?BY?Mn8t?MnO5u!Z5zblWOX5uXZ7SZ[5u[^7S^p5uqr5urs7Sst+Ptw5uwx7Sx!]5u!]!^7w!^!a7S!a#S5u#S#T7S#T;'S5u;'S;=`8n<%lO5u!R7VVOp7Sqs7St!]7S!]!^7l!^;'S7S;'S;=`7q<%lO7S!R7qOb!R!R7tP;=`<%l7S!Z8OYlWb!ROX+PZ[+P^p+Pqr+Psw+Px!^+P!a#S+P#T;'S+P;'S;=`+t<%lO+P!Z8qP;=`<%l5u!_8{iiSlWOX5uXZ7SZ[5u[^7S^p5uqr8trs7Sst/^tw8twx7Sx!P8t!P!Q5u!Q!]8t!]!^:j!^!a7S!a#S8t#S#T;{#T#s8t#s$f5u$f;'S8t;'S;=`>V<%l?Ah8t?Ah?BY5u?BY?Mn8t?MnO5u!_:sbiSlWb!ROX+PZ[+P^p+Pqr/^sw/^x!P/^!P!Q+P!Q!^/^!a#S/^#S#T0m#T#s/^#s$f+P$f;'S/^;'S;=`1e<%l?Ah/^?Ah?BY+P?BY?Mn/^?MnO+P!VP<%l?Ah;{?Ah?BY7S?BY?Mn;{?MnO7S!V=dXiSb!Rqr0msw0mx!P0m!Q!^0m!a#s0m$f;'S0m;'S;=`1_<%l?Ah0m?BY?Mn0m!V>SP;=`<%l;{!_>YP;=`<%l8t!_>dhiSlWOX@OXZAYZ[@O[^AY^p@OqrBwrsAYswBwwxAYx!PBw!P!Q@O!Q!]Bw!]!^/^!^!aAY!a#SBw#S#TE{#T#sBw#s$f@O$f;'SBw;'S;=`HS<%l?AhBw?Ah?BY@O?BY?MnBw?MnO@O!Z@TalWOX@OXZAYZ[@O[^AY^p@Oqr@OrsAYsw@OwxAYx!]@O!]!^Az!^!aAY!a#S@O#S#TAY#T;'S@O;'S;=`Bq<%lO@O!RA]UOpAYq!]AY!]!^Ao!^;'SAY;'S;=`At<%lOAY!RAtOc!R!RAwP;=`<%lAY!ZBRYlWc!ROX+PZ[+P^p+Pqr+Psw+Px!^+P!a#S+P#T;'S+P;'S;=`+t<%lO+P!ZBtP;=`<%l@O!_COhiSlWOX@OXZAYZ[@O[^AY^p@OqrBwrsAYswBwwxAYx!PBw!P!Q@O!Q!]Bw!]!^Dj!^!aAY!a#SBw#S#TE{#T#sBw#s$f@O$f;'SBw;'S;=`HS<%l?AhBw?Ah?BY@O?BY?MnBw?MnO@O!_DsbiSlWc!ROX+PZ[+P^p+Pqr/^sw/^x!P/^!P!Q+P!Q!^/^!a#S/^#S#T0m#T#s/^#s$f+P$f;'S/^;'S;=`1e<%l?Ah/^?Ah?BY+P?BY?Mn/^?MnO+P!VFQbiSOpAYqrE{rsAYswE{wxAYx!PE{!P!QAY!Q!]E{!]!^GY!^!aAY!a#sE{#s$fAY$f;'SE{;'S;=`G|<%l?AhE{?Ah?BYAY?BY?MnE{?MnOAY!VGaXiSc!Rqr0msw0mx!P0m!Q!^0m!a#s0m$f;'S0m;'S;=`1_<%l?Ah0m?BY?Mn0m!VHPP;=`<%lE{!_HVP;=`<%lBw!ZHcW!cxaP!b`Or(trs'ksv(tw!^(t!^!_)e!_;'S(t;'S;=`*P<%lO(t!aIYliSaPlW!b`!dpOX$qXZ&XZ[$q[^&X^p$qpq&Xqr-_rs&}sv-_vw/^wx(tx}-_}!OKQ!O!P-_!P!Q$q!Q!^-_!^!_*V!_!a&X!a#S-_#S#T1k#T#s-_#s$f$q$f;'S-_;'S;=`3X<%l?Ah-_?Ah?BY$q?BY?Mn-_?MnO$q!aK_kiSaPlW!b`!dpOX$qXZ&XZ[$q[^&X^p$qpq&Xqr-_rs&}sv-_vw/^wx(tx!P-_!P!Q$q!Q!^-_!^!_*V!_!`&X!`!aMS!a#S-_#S#T1k#T#s-_#s$f$q$f;'S-_;'S;=`3X<%l?Ah-_?Ah?BY$q?BY?Mn-_?MnO$q!TM_XaP!b`!dp!fQOr&Xrs&}sv&Xwx(tx!^&X!^!_*V!_;'S&X;'S;=`*y<%lO&X!aNZ!ZiSgQaPlW!b`!dpOX$qXZ&XZ[$q[^&X^p$qpq&Xqr-_rs&}sv-_vw/^wx(tx}-_}!OMz!O!PMz!P!Q$q!Q![Mz![!]Mz!]!^-_!^!_*V!_!a&X!a!c-_!c!}Mz!}#R-_#R#SMz#S#T1k#T#oMz#o#s-_#s$f$q$f$}-_$}%OMz%O%W-_%W%oMz%o%p-_%p&aMz&a&b-_&b1pMz1p4UMz4U4dMz4d4e-_4e$ISMz$IS$I`-_$I`$IbMz$Ib$Je-_$Je$JgMz$Jg$Kh-_$Kh%#tMz%#t&/x-_&/x&EtMz&Et&FV-_&FV;'SMz;'S;:j!#|;:j;=`3X<%l?&r-_?&r?AhMz?Ah?BY$q?BY?MnMz?MnO$q!a!$PP;=`<%lMz!R!$ZY!b`!dpOq*Vqr!$yrs(Vsv*Vwx)ex!a*V!a!b!4t!b;'S*V;'S;=`*s<%lO*V!R!%Q]!b`!dpOr*Vrs(Vsv*Vwx)ex}*V}!O!%y!O!f*V!f!g!']!g#W*V#W#X!0`#X;'S*V;'S;=`*s<%lO*V!R!&QX!b`!dpOr*Vrs(Vsv*Vwx)ex}*V}!O!&m!O;'S*V;'S;=`*s<%lO*V!R!&vV!b`!dp!ePOr*Vrs(Vsv*Vwx)ex;'S*V;'S;=`*s<%lO*V!R!'dX!b`!dpOr*Vrs(Vsv*Vwx)ex!q*V!q!r!(P!r;'S*V;'S;=`*s<%lO*V!R!(WX!b`!dpOr*Vrs(Vsv*Vwx)ex!e*V!e!f!(s!f;'S*V;'S;=`*s<%lO*V!R!(zX!b`!dpOr*Vrs(Vsv*Vwx)ex!v*V!v!w!)g!w;'S*V;'S;=`*s<%lO*V!R!)nX!b`!dpOr*Vrs(Vsv*Vwx)ex!{*V!{!|!*Z!|;'S*V;'S;=`*s<%lO*V!R!*bX!b`!dpOr*Vrs(Vsv*Vwx)ex!r*V!r!s!*}!s;'S*V;'S;=`*s<%lO*V!R!+UX!b`!dpOr*Vrs(Vsv*Vwx)ex!g*V!g!h!+q!h;'S*V;'S;=`*s<%lO*V!R!+xY!b`!dpOr!+qrs!,hsv!+qvw!-Swx!.[x!`!+q!`!a!/j!a;'S!+q;'S;=`!0Y<%lO!+qq!,mV!dpOv!,hvx!-Sx!`!,h!`!a!-q!a;'S!,h;'S;=`!.U<%lO!,hP!-VTO!`!-S!`!a!-f!a;'S!-S;'S;=`!-k<%lO!-SP!-kO|PP!-nP;=`<%l!-Sq!-xS!dp|POv(Vx;'S(V;'S;=`(h<%lO(Vq!.XP;=`<%l!,ha!.aX!b`Or!.[rs!-Ssv!.[vw!-Sw!`!.[!`!a!.|!a;'S!.[;'S;=`!/d<%lO!.[a!/TT!b`|POr)esv)ew;'S)e;'S;=`)y<%lO)ea!/gP;=`<%l!.[!R!/sV!b`!dp|POr*Vrs(Vsv*Vwx)ex;'S*V;'S;=`*s<%lO*V!R!0]P;=`<%l!+q!R!0gX!b`!dpOr*Vrs(Vsv*Vwx)ex#c*V#c#d!1S#d;'S*V;'S;=`*s<%lO*V!R!1ZX!b`!dpOr*Vrs(Vsv*Vwx)ex#V*V#V#W!1v#W;'S*V;'S;=`*s<%lO*V!R!1}X!b`!dpOr*Vrs(Vsv*Vwx)ex#h*V#h#i!2j#i;'S*V;'S;=`*s<%lO*V!R!2qX!b`!dpOr*Vrs(Vsv*Vwx)ex#m*V#m#n!3^#n;'S*V;'S;=`*s<%lO*V!R!3eX!b`!dpOr*Vrs(Vsv*Vwx)ex#d*V#d#e!4Q#e;'S*V;'S;=`*s<%lO*V!R!4XX!b`!dpOr*Vrs(Vsv*Vwx)ex#X*V#X#Y!+q#Y;'S*V;'S;=`*s<%lO*V!R!4{Y!b`!dpOr!4trs!5ksv!4tvw!6Vwx!8]x!a!4t!a!b!:]!b;'S!4t;'S;=`!;r<%lO!4tq!5pV!dpOv!5kvx!6Vx!a!5k!a!b!7W!b;'S!5k;'S;=`!8V<%lO!5kP!6YTO!a!6V!a!b!6i!b;'S!6V;'S;=`!7Q<%lO!6VP!6lTO!`!6V!`!a!6{!a;'S!6V;'S;=`!7Q<%lO!6VP!7QOyPP!7TP;=`<%l!6Vq!7]V!dpOv!5kvx!6Vx!`!5k!`!a!7r!a;'S!5k;'S;=`!8V<%lO!5kq!7yS!dpyPOv(Vx;'S(V;'S;=`(h<%lO(Vq!8YP;=`<%l!5ka!8bX!b`Or!8]rs!6Vsv!8]vw!6Vw!a!8]!a!b!8}!b;'S!8];'S;=`!:V<%lO!8]a!9SX!b`Or!8]rs!6Vsv!8]vw!6Vw!`!8]!`!a!9o!a;'S!8];'S;=`!:V<%lO!8]a!9vT!b`yPOr)esv)ew;'S)e;'S;=`)y<%lO)ea!:YP;=`<%l!8]!R!:dY!b`!dpOr!4trs!5ksv!4tvw!6Vwx!8]x!`!4t!`!a!;S!a;'S!4t;'S;=`!;r<%lO!4t!R!;]V!b`!dpyPOr*Vrs(Vsv*Vwx)ex;'S*V;'S;=`*s<%lO*V!R!;uP;=`<%l!4t!V!{let u=l.type.id;if(u==AJ)return ey(l,c,i);if(u==EJ)return ey(l,c,n);if(u==MJ)return ey(l,c,s);if(u==$4&&r.length){let d=l.node,p=d.firstChild,g=p&&KM(p,c),O;if(g){for(let _ of r)if(_.tag==g&&(!_.attrs||_.attrs(O||(O=I4(p,c))))){let b=d.lastChild,x=b.type.id==RJ?b.from:d.to;if(x>p.to)return{parser:_.parser,overlay:[{from:p.to,to:x}]}}}}if(o&&u==N4){let d=l.node,p;if(p=d.firstChild){let g=o[c.read(p.from,p.to)];if(g)for(let O of g){if(O.tagName&&O.tagName!=KM(d.parent,c))continue;let _=d.lastChild;if(_.type.id==Ib){let b=_.from+1,x=_.lastChild,w=_.to-(x&&x.isError?0:1);if(w>b)return{parser:O.parser,overlay:[{from:b,to:w}],bracketed:!0}}else if(_.type.id==z4)return{parser:O.parser,overlay:[{from:_.from,to:_.to}]}}}}return null})}const KJ=122,JM=1,JJ=123,eee=124,X4=2,tee=125,iee=3,nee=4,Z4=[9,10,11,12,13,32,133,160,5760,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8232,8233,8239,8287,12288],see=58,ree=40,q4=95,oee=91,Gm=45,aee=46,lee=35,cee=37,hee=38,uee=92,fee=10,dee=42;function Kf(t){return t>=65&&t<=90||t>=97&&t<=122||t>=161}function ww(t){return t>=48&&t<=57}function eP(t){return ww(t)||t>=97&&t<=102||t>=65&&t<=70}const W4=(t,e,i)=>(n,s)=>{for(let r=!1,o=0,l=0;;l++){let{next:c}=n;if(Kf(c)||c==Gm||c==q4||r&&ww(c))!r&&(c!=Gm||l>0)&&(r=!0),o===l&&c==Gm&&o++,n.advance();else if(c==uee&&n.peek(1)!=fee){if(n.advance(),eP(n.next)){do n.advance();while(eP(n.next));n.next==32&&n.advance()}else n.next>-1&&n.advance();r=!0}else{r&&n.acceptToken(o==2&&s.canShift(X4)?e:c==ree?i:t);break}}},pee=new os(W4(JJ,X4,eee)),mee=new os(W4(tee,iee,nee)),gee=new os(t=>{if(Z4.includes(t.peek(-1))){let{next:e}=t;(Kf(e)||e==q4||e==lee||e==aee||e==dee||e==oee||e==see&&Kf(t.peek(1))||e==Gm||e==hee)&&t.acceptToken(KJ)}}),Oee=new os(t=>{if(!Z4.includes(t.peek(-1))){let{next:e}=t;if(e==cee&&(t.advance(),t.acceptToken(JM)),Kf(e)){do t.advance();while(Kf(t.next)||ww(t.next));t.acceptToken(JM)}}}),vee=_h({"AtKeyword import charset namespace keyframes media supports":V.definitionKeyword,"from to selector":V.keyword,NamespaceName:V.namespace,KeyframeName:V.labelName,KeyframeRangeName:V.operatorKeyword,TagName:V.tagName,ClassName:V.className,PseudoClassName:V.constant(V.className),IdName:V.labelName,"FeatureName PropertyName":V.propertyName,AttributeName:V.attributeName,NumberLiteral:V.number,KeywordQuery:V.keyword,UnaryQueryOp:V.operatorKeyword,"CallTag ValueName":V.atom,VariableName:V.variableName,Callee:V.operatorKeyword,Unit:V.unit,"UniversalSelector NestingSelector":V.definitionOperator,"MatchOp CompareOp":V.compareOperator,"ChildOp SiblingOp, LogicOp":V.logicOperator,BinOp:V.arithmeticOperator,Important:V.modifier,Comment:V.blockComment,ColorLiteral:V.color,"ParenthesizedContent StringLiteral":V.string,":":V.punctuation,"PseudoOp #":V.derefOperator,"; ,":V.separator,"( )":V.paren,"[ ]":V.squareBracket,"{ }":V.brace}),_ee={__proto__:null,lang:38,"nth-child":38,"nth-last-child":38,"nth-of-type":38,"nth-last-of-type":38,dir:38,"host-context":38,if:84,url:124,"url-prefix":124,domain:124,regexp:124},yee={__proto__:null,or:98,and:98,not:106,only:106,layer:170},bee={__proto__:null,selector:112,layer:166},See={__proto__:null,"@import":162,"@media":174,"@charset":178,"@namespace":182,"@keyframes":188,"@supports":200,"@scope":204},xee={__proto__:null,to:207},wee=fh.deserialize({version:14,states:"EbQYQdOOO#qQdOOP#xO`OOOOQP'#Cf'#CfOOQP'#Ce'#CeO#}QdO'#ChO$nQaO'#CcO$xQdO'#CkO%TQdO'#DpO%YQdO'#DrO%_QdO'#DuO%_QdO'#DxOOQP'#FV'#FVO&eQhO'#EhOOQS'#FU'#FUOOQS'#Ek'#EkQYQdOOO&lQdO'#EOO&PQhO'#EUO&lQdO'#EWO'aQdO'#EYO'lQdO'#E]O'tQhO'#EcO(VQdO'#EeO(bQaO'#CfO)VQ`O'#D{O)[Q`O'#F`O)gQdO'#F`QOQ`OOP)qO&jO'#CaPOOO)C@t)C@tOOQP'#Cj'#CjOOQP,59S,59SO#}QdO,59SO)|QdO,59VO%TQdO,5:[O%YQdO,5:^O%_QdO,5:aO%_QdO,5:cO%_QdO,5:dO%_QdO'#ErO*XQ`O,58}O*aQdO'#DzOOQS,58},58}OOQP'#Cn'#CnOOQO'#Dn'#DnOOQP,59V,59VO*hQ`O,59VO*mQ`O,59VOOQP'#Dq'#DqOOQP,5:[,5:[OOQO'#Ds'#DsO*rQpO,5:^O+]QaO,5:aO+sQaO,5:dOOQW'#DZ'#DZO,ZQhO'#DdO,xQhO'#FaO'tQhO'#DbO-WQ`O'#DhOOQW'#F['#F[O-]Q`O,5;SO-eQ`O'#DeOOQS-E8i-E8iOOQ['#Cs'#CsO-jQdO'#CtO.QQdO'#CzO.hQdO'#C}O/OQ!pO'#DPO1RQ!jO,5:jOOQO'#DU'#DUO*mQ`O'#DTO1cQ!nO'#FXO3`Q`O'#DVO3eQ`O'#DkOOQ['#FX'#FXO-`Q`O,5:pO3jQ!bO,5:rOOQS'#E['#E[O3rQ`O,5:tO3wQdO,5:tOOQO'#E_'#E_O4PQ`O,5:wO4UQhO,5:}O%_QdO'#DgOOQS,5;P,5;PO-eQ`O,5;PO4^QdO,5;PO4fQdO,5:gO4vQdO'#EtO5TQ`O,5;zO5TQ`O,5;zPOOO'#Ej'#EjP5`O&jO,58{POOO,58{,58{OOQP1G.n1G.nOOQP1G.q1G.qO*hQ`O1G.qO*mQ`O1G.qOOQP1G/v1G/vO5kQpO1G/xO5sQaO1G/{O6ZQaO1G/}O6qQaO1G0OO7XQaO,5;^OOQO-E8p-E8pOOQS1G.i1G.iO7cQ`O,5:fO7hQdO'#DoO7oQdO'#CrOOQP1G/x1G/xO&lQdO1G/xO7vQ!jO'#DZO8UQ!bO,59vO8^QhO,5:OOOQO'#F]'#F]O8XQ!bO,59zO'tQhO,59xO8fQhO'#EvO8sQ`O,5;{O9OQhO,59|O9uQhO'#DiOOQW,5:S,5:SOOQS1G0n1G0nOOQW,5:P,5:PO9|Q!fO'#FYOOQS'#FY'#FYOOQS'#Em'#EmO;^QdO,59`OOQ[,59`,59`O;tQdO,59fOOQ[,59f,59fO<[QdO,59iOOQ[,59i,59iOOQ[,59k,59kO&lQdO,59mOPQ!fO1G0ROOQO1G0R1G0ROOQO,5;`,5;`O>gQdO,5;`OOQO-E8r-E8rO>tQ`O1G1fPOOO-E8h-E8hPOOO1G.g1G.gOOQP7+$]7+$]OOQP7+%d7+%dO&lQdO7+%dOOQS1G0Q1G0QO?PQaO'#F_O?ZQ`O,5:ZO?`Q!fO'#ElO@^QdO'#FWO@hQ`O,59^O@mQ!bO7+%dO&lQdO1G/bO@uQhO1G/fOOQW1G/j1G/jOOQW1G/d1G/dOAWQhO,5;bOOQO-E8t-E8tOAfQhO'#DZOAtQhO'#F^OBPQ`O'#F^OBUQ`O,5:TOOQS-E8k-E8kOOQ[1G.z1G.zOOQ[1G/Q1G/QOOQ[1G/T1G/TOOQ[1G/X1G/XOBZQdO,5:lOOQS7+%p7+%pOB`Q`O7+%pOBeQhO'#DYOBmQ`O,59sO'tQhO,59sOOQ[1G/q1G/qOBuQ`O1G/qOOQS7+%z7+%zOBzQbO'#DPOOQO'#Eb'#EbOCYQ`O'#EaOOQO'#Ea'#EaOCeQ`O'#EwOCmQdO,5:zOOQS,5:z,5:zOOQ[1G/m1G/mOOQS7+&V7+&VO-`Q`O7+&VOCxQ!fO'#EsO&lQdO'#EsOEPQdO7+%mOOQO7+%m7+%mOOQO1G0z1G0zOEdQ!bO<jAN>jOIUQaO,5;]OOQO-E8o-E8oOI`QdO,5;[OOQO-E8n-E8nOOQW<WO&lQdO1G0uOK]Q`O7+'OOOQO,5;a,5;aOOQO-E8s-E8sOOQW<t}!O?V!O!P?t!P!Q@]!Q![AU![!]BP!]!^B{!^!_C^!_!`DY!`!aDm!a!b$q!b!cEn!c!}$q!}#OG{#O#P$q#P#QH^#Q#R6W#R#o$q#o#pHo#p#q6W#q#rIQ#r#sIc#s#y$q#y#z%i#z$f$q$f$g%i$g#BY$q#BY#BZ%i#BZ$IS$q$IS$I_%i$I_$I|$q$I|$JO%i$JO$JT$q$JT$JU%i$JU$KV$q$KV$KW%i$KW&FU$q&FU&FV%i&FV;'S$q;'S;=`Iz<%lO$q`$tSOy%Qz;'S%Q;'S;=`%c<%lO%Q`%VS!a`Oy%Qz;'S%Q;'S;=`%c<%lO%Q`%fP;=`<%l%Q~%nh#s~OX%QX^'Y^p%Qpq'Yqy%Qz#y%Q#y#z'Y#z$f%Q$f$g'Y$g#BY%Q#BY#BZ'Y#BZ$IS%Q$IS$I_'Y$I_$I|%Q$I|$JO'Y$JO$JT%Q$JT$JU'Y$JU$KV%Q$KV$KW'Y$KW&FU%Q&FU&FV'Y&FV;'S%Q;'S;=`%c<%lO%Q~'ah#s~!a`OX%QX^'Y^p%Qpq'Yqy%Qz#y%Q#y#z'Y#z$f%Q$f$g'Y$g#BY%Q#BY#BZ'Y#BZ$IS%Q$IS$I_'Y$I_$I|%Q$I|$JO'Y$JO$JT%Q$JT$JU'Y$JU$KV%Q$KV$KW'Y$KW&FU%Q&FU&FV'Y&FV;'S%Q;'S;=`%c<%lO%Qj)OUOy%Qz#]%Q#]#^)b#^;'S%Q;'S;=`%c<%lO%Qj)gU!a`Oy%Qz#a%Q#a#b)y#b;'S%Q;'S;=`%c<%lO%Qj*OU!a`Oy%Qz#d%Q#d#e*b#e;'S%Q;'S;=`%c<%lO%Qj*gU!a`Oy%Qz#c%Q#c#d*y#d;'S%Q;'S;=`%c<%lO%Qj+OU!a`Oy%Qz#f%Q#f#g+b#g;'S%Q;'S;=`%c<%lO%Qj+gU!a`Oy%Qz#h%Q#h#i+y#i;'S%Q;'S;=`%c<%lO%Qj,OU!a`Oy%Qz#T%Q#T#U,b#U;'S%Q;'S;=`%c<%lO%Qj,gU!a`Oy%Qz#b%Q#b#c,y#c;'S%Q;'S;=`%c<%lO%Qj-OU!a`Oy%Qz#h%Q#h#i-b#i;'S%Q;'S;=`%c<%lO%Qj-iS!qY!a`Oy%Qz;'S%Q;'S;=`%c<%lO%Q~-xWOY-uZr-urs.bs#O-u#O#P.g#P;'S-u;'S;=`/c<%lO-u~.gOt~~.jRO;'S-u;'S;=`.s;=`O-u~.vXOY-uZr-urs.bs#O-u#O#P.g#P;'S-u;'S;=`/c;=`<%l-u<%lO-u~/fP;=`<%l-uj/nYjYOy%Qz!Q%Q!Q![0^![!c%Q!c!i0^!i#T%Q#T#Z0^#Z;'S%Q;'S;=`%c<%lO%Qj0cY!a`Oy%Qz!Q%Q!Q![1R![!c%Q!c!i1R!i#T%Q#T#Z1R#Z;'S%Q;'S;=`%c<%lO%Qj1WY!a`Oy%Qz!Q%Q!Q![1v![!c%Q!c!i1v!i#T%Q#T#Z1v#Z;'S%Q;'S;=`%c<%lO%Qj1}YrY!a`Oy%Qz!Q%Q!Q![2m![!c%Q!c!i2m!i#T%Q#T#Z2m#Z;'S%Q;'S;=`%c<%lO%Qj2tYrY!a`Oy%Qz!Q%Q!Q![3d![!c%Q!c!i3d!i#T%Q#T#Z3d#Z;'S%Q;'S;=`%c<%lO%Qj3iY!a`Oy%Qz!Q%Q!Q![4X![!c%Q!c!i4X!i#T%Q#T#Z4X#Z;'S%Q;'S;=`%c<%lO%Qj4`YrY!a`Oy%Qz!Q%Q!Q![5O![!c%Q!c!i5O!i#T%Q#T#Z5O#Z;'S%Q;'S;=`%c<%lO%Qj5TY!a`Oy%Qz!Q%Q!Q![5s![!c%Q!c!i5s!i#T%Q#T#Z5s#Z;'S%Q;'S;=`%c<%lO%Qj5zSrY!a`Oy%Qz;'S%Q;'S;=`%c<%lO%Qd6ZUOy%Qz!_%Q!_!`6m!`;'S%Q;'S;=`%c<%lO%Qd6tS!hS!a`Oy%Qz;'S%Q;'S;=`%c<%lO%Qb7VSZQOy%Qz;'S%Q;'S;=`%c<%lO%Q~7fWOY7cZw7cwx.bx#O7c#O#P8O#P;'S7c;'S;=`8z<%lO7c~8RRO;'S7c;'S;=`8[;=`O7c~8_XOY7cZw7cwx.bx#O7c#O#P8O#P;'S7c;'S;=`8z;=`<%l7c<%lO7c~8}P;=`<%l7cj9VSeYOy%Qz;'S%Q;'S;=`%c<%lO%Q~9hOd~n9oUWQvWOy%Qz!_%Q!_!`6m!`;'S%Q;'S;=`%c<%lO%Qj:YWvW!mQOy%Qz!O%Q!O!P:r!P!Q%Q!Q![=w![;'S%Q;'S;=`%c<%lO%Qj:wU!a`Oy%Qz!Q%Q!Q![;Z![;'S%Q;'S;=`%c<%lO%Qj;bY!a`#}YOy%Qz!Q%Q!Q![;Z![!g%Q!g!hO[!a`#}YOy%Qz!O%Q!O!P;Z!P!Q%Q!Q![=w![!g%Q!g!hyS!^YOy%Qz;'S%Q;'S;=`%c<%lO%Qj?[WvWOy%Qz!O%Q!O!P:r!P!Q%Q!Q![=w![;'S%Q;'S;=`%c<%lO%Qj?yU]YOy%Qz!Q%Q!Q![;Z![;'S%Q;'S;=`%c<%lO%Q~@bTvWOy%Qz{@q{;'S%Q;'S;=`%c<%lO%Q~@xS!a`#t~Oy%Qz;'S%Q;'S;=`%c<%lO%QjAZ[#}YOy%Qz!O%Q!O!P;Z!P!Q%Q!Q![=w![!g%Q!g!h_ee[t]||-1},{term:125,get:t=>yee[t]||-1},{term:4,get:t=>bee[t]||-1},{term:25,get:t=>See[t]||-1},{term:123,get:t=>xee[t]||-1}],tokenPrec:1963});let ty=null;function iy(){if(!ty&&typeof document=="object"&&document.body){let{style:t}=document.body,e=[],i=new Set;for(let n in t)n!="cssText"&&n!="cssFloat"&&typeof t[n]=="string"&&(/[A-Z]/.test(n)&&(n=n.replace(/[A-Z]/g,s=>"-"+s.toLowerCase())),i.has(n)||(e.push(n),i.add(n)));ty=e.sort().map(n=>({type:"property",label:n,apply:n+": "}))}return ty||[]}const tP=["active","after","any-link","autofill","backdrop","before","checked","cue","default","defined","disabled","empty","enabled","file-selector-button","first","first-child","first-letter","first-line","first-of-type","focus","focus-visible","focus-within","fullscreen","has","host","host-context","hover","in-range","indeterminate","invalid","is","lang","last-child","last-of-type","left","link","marker","modal","not","nth-child","nth-last-child","nth-last-of-type","nth-of-type","only-child","only-of-type","optional","out-of-range","part","placeholder","placeholder-shown","read-only","read-write","required","right","root","scope","selection","slotted","target","target-text","valid","visited","where"].map(t=>({type:"class",label:t})),iP=["above","absolute","activeborder","additive","activecaption","after-white-space","ahead","alias","all","all-scroll","alphabetic","alternate","always","antialiased","appworkspace","asterisks","attr","auto","auto-flow","avoid","avoid-column","avoid-page","avoid-region","axis-pan","background","backwards","baseline","below","bidi-override","blink","block","block-axis","bold","bolder","border","border-box","both","bottom","break","break-all","break-word","bullets","button","button-bevel","buttonface","buttonhighlight","buttonshadow","buttontext","calc","capitalize","caps-lock-indicator","caption","captiontext","caret","cell","center","checkbox","circle","cjk-decimal","clear","clip","close-quote","col-resize","collapse","color","color-burn","color-dodge","column","column-reverse","compact","condensed","contain","content","contents","content-box","context-menu","continuous","copy","counter","counters","cover","crop","cross","crosshair","currentcolor","cursive","cyclic","darken","dashed","decimal","decimal-leading-zero","default","default-button","dense","destination-atop","destination-in","destination-out","destination-over","difference","disc","discard","disclosure-closed","disclosure-open","document","dot-dash","dot-dot-dash","dotted","double","down","e-resize","ease","ease-in","ease-in-out","ease-out","element","ellipse","ellipsis","embed","end","ethiopic-abegede-gez","ethiopic-halehame-aa-er","ethiopic-halehame-gez","ew-resize","exclusion","expanded","extends","extra-condensed","extra-expanded","fantasy","fast","fill","fill-box","fixed","flat","flex","flex-end","flex-start","footnotes","forwards","from","geometricPrecision","graytext","grid","groove","hand","hard-light","help","hidden","hide","higher","highlight","highlighttext","horizontal","hsl","hsla","hue","icon","ignore","inactiveborder","inactivecaption","inactivecaptiontext","infinite","infobackground","infotext","inherit","initial","inline","inline-axis","inline-block","inline-flex","inline-grid","inline-table","inset","inside","intrinsic","invert","italic","justify","keep-all","landscape","large","larger","left","level","lighter","lighten","line-through","linear","linear-gradient","lines","list-item","listbox","listitem","local","logical","loud","lower","lower-hexadecimal","lower-latin","lower-norwegian","lowercase","ltr","luminosity","manipulation","match","matrix","matrix3d","medium","menu","menutext","message-box","middle","min-intrinsic","mix","monospace","move","multiple","multiple_mask_images","multiply","n-resize","narrower","ne-resize","nesw-resize","no-close-quote","no-drop","no-open-quote","no-repeat","none","normal","not-allowed","nowrap","ns-resize","numbers","numeric","nw-resize","nwse-resize","oblique","opacity","open-quote","optimizeLegibility","optimizeSpeed","outset","outside","outside-shape","overlay","overline","padding","padding-box","painted","page","paused","perspective","pinch-zoom","plus-darker","plus-lighter","pointer","polygon","portrait","pre","pre-line","pre-wrap","preserve-3d","progress","push-button","radial-gradient","radio","read-only","read-write","read-write-plaintext-only","rectangle","region","relative","repeat","repeating-linear-gradient","repeating-radial-gradient","repeat-x","repeat-y","reset","reverse","rgb","rgba","ridge","right","rotate","rotate3d","rotateX","rotateY","rotateZ","round","row","row-resize","row-reverse","rtl","run-in","running","s-resize","sans-serif","saturation","scale","scale3d","scaleX","scaleY","scaleZ","screen","scroll","scrollbar","scroll-position","se-resize","self-start","self-end","semi-condensed","semi-expanded","separate","serif","show","single","skew","skewX","skewY","skip-white-space","slide","slider-horizontal","slider-vertical","sliderthumb-horizontal","sliderthumb-vertical","slow","small","small-caps","small-caption","smaller","soft-light","solid","source-atop","source-in","source-out","source-over","space","space-around","space-between","space-evenly","spell-out","square","start","static","status-bar","stretch","stroke","stroke-box","sub","subpixel-antialiased","svg_masks","super","sw-resize","symbolic","symbols","system-ui","table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row","table-row-group","text","text-bottom","text-top","textarea","textfield","thick","thin","threeddarkshadow","threedface","threedhighlight","threedlightshadow","threedshadow","to","top","transform","translate","translate3d","translateX","translateY","translateZ","transparent","ultra-condensed","ultra-expanded","underline","unidirectional-pan","unset","up","upper-latin","uppercase","url","var","vertical","vertical-text","view-box","visible","visibleFill","visiblePainted","visibleStroke","visual","w-resize","wait","wave","wider","window","windowframe","windowtext","words","wrap","wrap-reverse","x-large","x-small","xor","xx-large","xx-small"].map(t=>({type:"keyword",label:t})).concat(["aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","grey","green","greenyellow","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen"].map(t=>({type:"constant",label:t}))),Cee=["a","abbr","address","article","aside","b","bdi","bdo","blockquote","body","br","button","canvas","caption","cite","code","col","colgroup","dd","del","details","dfn","dialog","div","dl","dt","em","figcaption","figure","footer","form","header","hgroup","h1","h2","h3","h4","h5","h6","hr","html","i","iframe","img","input","ins","kbd","label","legend","li","main","meter","nav","ol","output","p","pre","ruby","section","select","small","source","span","strong","sub","summary","sup","table","tbody","td","template","textarea","tfoot","th","thead","tr","u","ul"].map(t=>({type:"type",label:t})),kee=["@charset","@color-profile","@container","@counter-style","@font-face","@font-feature-values","@font-palette-values","@import","@keyframes","@layer","@media","@namespace","@page","@position-try","@property","@scope","@starting-style","@supports","@view-transition"].map(t=>({type:"keyword",label:t})),so=/^(\w[\w-]*|-\w[\w-]*|)$/,Tee=/^-(-[\w-]*)?$/;function Aee(t,e){var i;if((t.name=="("||t.type.isError)&&(t=t.parent||t),t.name!="ArgList")return!1;let n=(i=t.parent)===null||i===void 0?void 0:i.firstChild;return(n==null?void 0:n.name)!="Callee"?!1:e.sliceString(n.from,n.to)=="var"}const nP=new BB,Eee=["Declaration"];function Mee(t){for(let e=t;;){if(e.type.isTop)return e;if(!(e=e.parent))return t}}function U4(t,e,i){if(e.to-e.from>4096){let n=nP.get(e);if(n)return n;let s=[],r=new Set,o=e.cursor(ut.IncludeAnonymous);if(o.firstChild())do for(let l of U4(t,o.node,i))r.has(l.label)||(r.add(l.label),s.push(l));while(o.nextSibling());return nP.set(e,s),s}else{let n=[],s=new Set;return e.cursor().iterate(r=>{var o;if(i(r)&&r.matchContext(Eee)&&((o=r.node.nextSibling)===null||o===void 0?void 0:o.name)==":"){let l=t.sliceString(r.from,r.to);s.has(l)||(s.add(l),n.push({label:l,type:"variable"}))}}),n}}const Pee=t=>e=>{let{state:i,pos:n}=e,s=xt(i).resolveInner(n,-1),r=s.type.isError&&s.from==s.to-1&&i.doc.sliceString(s.from,s.to)=="-";if(s.name=="PropertyName"||(r||s.name=="TagName")&&/^(Block|Styles)$/.test(s.resolve(s.to).name))return{from:s.from,options:iy(),validFor:so};if(s.name=="ValueName")return{from:s.from,options:iP,validFor:so};if(s.name=="PseudoClassName")return{from:s.from,options:tP,validFor:so};if(t(s)||(e.explicit||r)&&Aee(s,i.doc))return{from:t(s)||r?s.from:n,options:U4(i.doc,Mee(s),t),validFor:Tee};if(s.name=="TagName"){for(let{parent:c}=s;c;c=c.parent)if(c.name=="Block")return{from:s.from,options:iy(),validFor:so};return{from:s.from,options:Cee,validFor:so}}if(s.name=="AtKeyword")return{from:s.from,options:kee,validFor:so};if(!e.explicit)return null;let o=s.resolve(n),l=o.childBefore(n);return l&&l.name==":"&&o.name=="PseudoClassSelector"?{from:n,options:tP,validFor:so}:l&&l.name==":"&&o.name=="Declaration"||o.name=="ArgList"?{from:n,options:iP,validFor:so}:o.name=="Block"||o.name=="Styles"?{from:n,options:iy(),validFor:so}:null},Ree=Pee(t=>t.name=="VariableName"),Fg=lh.define({name:"css",parser:wee.configure({props:[md.add({Declaration:Ym()}),bh.add({"Block KeyframeList":ZB})]}),languageData:{commentTokens:{block:{open:"/*",close:"*/"}},indentOnInput:/^\s*\}$/,wordChars:"-"}});function Qee(){return new Vf(Fg,Fg.data.of({autocomplete:Ree}))}const Lee=316,Dee=317,sP=1,Bee=2,$ee=3,Nee=4,zee=318,jee=320,Iee=321,Vee=5,Xee=6,Zee=0,Xb=[9,10,11,12,13,32,133,160,5760,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8232,8233,8239,8287,12288],Y4=125,qee=59,Zb=47,Wee=42,Uee=43,Yee=45,Hee=60,Fee=44,Gee=63,Kee=46,Jee=91,ete=new R4({start:!1,shift(t,e){return e==Vee||e==Xee||e==jee?t:e==Iee},strict:!1}),tte=new os((t,e)=>{let{next:i}=t;(i==Y4||i==-1||e.context)&&t.acceptToken(zee)},{contextual:!0,fallback:!0}),ite=new os((t,e)=>{let{next:i}=t,n;Xb.indexOf(i)>-1||i==Zb&&((n=t.peek(1))==Zb||n==Wee)||i!=Y4&&i!=qee&&i!=-1&&!e.context&&t.acceptToken(Lee)},{contextual:!0}),nte=new os((t,e)=>{t.next==Jee&&!e.context&&t.acceptToken(Dee)},{contextual:!0}),ste=new os((t,e)=>{let{next:i}=t;if(i==Uee||i==Yee){if(t.advance(),i==t.next){t.advance();let n=!e.context&&e.canShift(sP);t.acceptToken(n?sP:Bee)}}else i==Gee&&t.peek(1)==Kee&&(t.advance(),t.advance(),(t.next<48||t.next>57)&&t.acceptToken($ee))},{contextual:!0});function ny(t,e){return t>=65&&t<=90||t>=97&&t<=122||t==95||t>=192||!e&&t>=48&&t<=57}const rte=new os((t,e)=>{if(t.next!=Hee||!e.dialectEnabled(Zee)||(t.advance(),t.next==Zb))return;let i=0;for(;Xb.indexOf(t.next)>-1;)t.advance(),i++;if(ny(t.next,!0)){for(t.advance(),i++;ny(t.next,!1);)t.advance(),i++;for(;Xb.indexOf(t.next)>-1;)t.advance(),i++;if(t.next==Fee)return;for(let n=0;;n++){if(n==7){if(!ny(t.next,!0))return;break}if(t.next!="extends".charCodeAt(n))break;t.advance(),i++}}t.acceptToken(Nee,-i)}),ote=_h({"get set async static":V.modifier,"for while do if else switch try catch finally return throw break continue default case defer":V.controlKeyword,"in of await yield void typeof delete instanceof as satisfies":V.operatorKeyword,"let var const using function class extends":V.definitionKeyword,"import export from":V.moduleKeyword,"with debugger new":V.keyword,TemplateString:V.special(V.string),super:V.atom,BooleanLiteral:V.bool,this:V.self,null:V.null,Star:V.modifier,VariableName:V.variableName,"CallExpression/VariableName TaggedTemplateExpression/VariableName":V.function(V.variableName),VariableDefinition:V.definition(V.variableName),Label:V.labelName,PropertyName:V.propertyName,PrivatePropertyName:V.special(V.propertyName),"CallExpression/MemberExpression/PropertyName":V.function(V.propertyName),"FunctionDeclaration/VariableDefinition":V.function(V.definition(V.variableName)),"ClassDeclaration/VariableDefinition":V.definition(V.className),"NewExpression/VariableName":V.className,PropertyDefinition:V.definition(V.propertyName),PrivatePropertyDefinition:V.definition(V.special(V.propertyName)),UpdateOp:V.updateOperator,"LineComment Hashbang":V.lineComment,BlockComment:V.blockComment,Number:V.number,String:V.string,Escape:V.escape,ArithOp:V.arithmeticOperator,LogicOp:V.logicOperator,BitOp:V.bitwiseOperator,CompareOp:V.compareOperator,RegExp:V.regexp,Equals:V.definitionOperator,Arrow:V.function(V.punctuation),": Spread":V.punctuation,"( )":V.paren,"[ ]":V.squareBracket,"{ }":V.brace,"InterpolationStart InterpolationEnd":V.special(V.brace),".":V.derefOperator,", ;":V.separator,"@":V.meta,TypeName:V.typeName,TypeDefinition:V.definition(V.typeName),"type enum interface implements namespace module declare":V.definitionKeyword,"abstract global Privacy readonly override":V.modifier,"is keyof unique infer asserts":V.operatorKeyword,JSXAttributeValue:V.attributeValue,JSXText:V.content,"JSXStartTag JSXStartCloseTag JSXSelfCloseEndTag JSXEndTag":V.angleBracket,"JSXIdentifier JSXNameSpacedName":V.tagName,"JSXAttribute/JSXIdentifier JSXAttribute/JSXNameSpacedName":V.attributeName,"JSXBuiltin/JSXIdentifier":V.standard(V.tagName)}),ate={__proto__:null,export:20,as:25,from:33,default:36,async:41,function:42,in:52,out:55,const:56,extends:60,this:64,true:72,false:72,null:84,void:88,typeof:92,super:108,new:142,delete:154,yield:163,await:167,class:172,public:235,private:235,protected:235,readonly:237,instanceof:256,satisfies:259,import:292,keyof:349,unique:353,infer:359,asserts:395,is:397,abstract:417,implements:419,type:421,let:424,var:426,using:429,interface:435,enum:439,namespace:445,module:447,declare:451,global:455,defer:471,for:476,of:485,while:488,with:492,do:496,if:500,else:502,switch:506,case:512,try:518,catch:522,finally:526,return:530,throw:534,break:538,continue:542,debugger:546},lte={__proto__:null,async:129,get:131,set:133,declare:195,public:197,private:197,protected:197,static:199,abstract:201,override:203,readonly:209,accessor:211,new:401},cte={__proto__:null,"<":193},hte=fh.deserialize({version:14,states:"$F|Q%TQlOOO%[QlOOO'_QpOOP(lO`OOO*zQ!0MxO'#CiO+RO#tO'#CjO+aO&jO'#CjO+oO#@ItO'#DaO.QQlO'#DgO.bQlO'#DrO%[QlO'#DzO0fQlO'#ESOOQ!0Lf'#E['#E[O1PQ`O'#EXOOQO'#Ep'#EpOOQO'#Il'#IlO1XQ`O'#GsO1dQ`O'#EoO1iQ`O'#EoO3hQ!0MxO'#JrO6[Q!0MxO'#JsO6uQ`O'#F]O6zQ,UO'#FtOOQ!0Lf'#Ff'#FfO7VO7dO'#FfO9XQMhO'#F|O9`Q`O'#F{OOQ!0Lf'#Js'#JsOOQ!0Lb'#Jr'#JrO9eQ`O'#GwOOQ['#K_'#K_O9pQ`O'#IYO9uQ!0LrO'#IZOOQ['#J`'#J`OOQ['#I_'#I_Q`QlOOQ`QlOOO9}Q!L^O'#DvO:UQlO'#EOO:]QlO'#EQO9kQ`O'#GsO:dQMhO'#CoO:rQ`O'#EnO:}Q`O'#EyO;hQMhO'#FeO;xQ`O'#GsOOQO'#K`'#K`O;}Q`O'#K`O<]Q`O'#G{O<]Q`O'#G|O<]Q`O'#HOO9kQ`O'#HRO=SQ`O'#HUO>kQ`O'#CeO>{Q`O'#HcO?TQ`O'#HiO?TQ`O'#HkO`QlO'#HmO?TQ`O'#HoO?TQ`O'#HrO?YQ`O'#HxO?_Q!0LsO'#IOO%[QlO'#IQO?jQ!0LsO'#ISO?uQ!0LsO'#IUO9uQ!0LrO'#IWO@QQ!0MxO'#CiOASQpO'#DlQOQ`OOO%[QlO'#EQOAjQ`O'#ETO:dQMhO'#EnOAuQ`O'#EnOBQQ!bO'#FeOOQ['#Cg'#CgOOQ!0Lb'#Dq'#DqOOQ!0Lb'#Jv'#JvO%[QlO'#JvOOQO'#Jy'#JyOOQO'#Ih'#IhOCQQpO'#EgOOQ!0Lb'#Ef'#EfOOQ!0Lb'#J}'#J}OC|Q!0MSO'#EgODWQpO'#EWOOQO'#Jx'#JxODlQpO'#JyOEyQpO'#EWODWQpO'#EgPFWO&2DjO'#CbPOOO)CD})CD}OOOO'#I`'#I`OFcO#tO,59UOOQ!0Lh,59U,59UOOOO'#Ia'#IaOFqO&jO,59UOGPQ!L^O'#DcOOOO'#Ic'#IcOGWO#@ItO,59{OOQ!0Lf,59{,59{OGfQlO'#IdOGyQ`O'#JtOIxQ!fO'#JtO+}QlO'#JtOJPQ`O,5:ROJgQ`O'#EpOJtQ`O'#KTOKPQ`O'#KSOKPQ`O'#KSOKXQ`O,5;^OK^Q`O'#KROOQ!0Ln,5:^,5:^OKeQlO,5:^OMcQ!0MxO,5:fONSQ`O,5:nONmQ!0LrO'#KQONtQ`O'#KPO9eQ`O'#KPO! YQ`O'#KPO! bQ`O,5;]O! gQ`O'#KPO!#lQ!fO'#JsOOQ!0Lh'#Ci'#CiO%[QlO'#ESO!$[Q!fO,5:sOOQS'#Jz'#JzOOQO-EtOOQ['#Jh'#JhOOQ[,5>u,5>uOOQ[-E<]-E<]O!TO`QlO,5>VO!LOQ`O,5>XO`QlO,5>ZO!LTQ`O,5>^O!LYQlO,5>dOOQ[,5>j,5>jO%[QlO,5>jO9uQ!0LrO,5>lOOQ[,5>n,5>nO#!dQ`O,5>nOOQ[,5>p,5>pO#!dQ`O,5>pOOQ[,5>r,5>rO##QQpO'#D_O%[QlO'#JvO##sQpO'#JvO##}QpO'#DmO#$`QpO'#DmO#&qQlO'#DmO#&xQ`O'#JuO#'QQ`O,5:WO#'VQ`O'#EtO#'eQ`O'#KUO#'mQ`O,5;_O#'rQpO'#DmO#(PQpO'#EVOOQ!0Lf,5:o,5:oO%[QlO,5:oO#(WQ`O,5:oO?YQ`O,5;YO!CUQpO,5;YO!C^QMhO,5;YO:dQMhO,5;YO#(`Q`O,5@bO#(eQ07dO,5:sOOQO-EPO$6^Q`O,5>POOQ[1G3i1G3iO`QlO1G3iOOQ[1G3o1G3oOOQ[1G3q1G3qO?TQ`O1G3sO$6cQlO1G3uO$:gQlO'#HtOOQ[1G3x1G3xO$:tQ`O'#HzO?YQ`O'#H|OOQ[1G4O1G4OO$:|QlO1G4OO9uQ!0LrO1G4UOOQ[1G4W1G4WOOQ!0Lb'#G_'#G_O9uQ!0LrO1G4YO9uQ!0LrO1G4[O$?TQ`O,5@bO!)[QlO,5;`O9eQ`O,5;`O?YQ`O,5:XO!)[QlO,5:XO!CUQpO,5:XO$?YQ?MtO,5:XOOQO,5;`,5;`O$?dQpO'#IeO$?zQ`O,5@aOOQ!0Lf1G/r1G/rO$@SQpO'#IkO$@^Q`O,5@pOOQ!0Lb1G0y1G0yO#$`QpO,5:XOOQO'#Ig'#IgO$@fQpO,5:qOOQ!0Ln,5:q,5:qO#(ZQ`O1G0ZOOQ!0Lf1G0Z1G0ZO%[QlO1G0ZOOQ!0Lf1G0t1G0tO?YQ`O1G0tO!CUQpO1G0tO!C^QMhO1G0tOOQ!0Lb1G5|1G5|O!ByQ!0LrO1G0^OOQO1G0m1G0mO%[QlO1G0mO$@mQ!0LrO1G0mO$@xQ!0LrO1G0mO!CUQpO1G0^ODWQpO1G0^O$AWQ!0LrO1G0mOOQO1G0^1G0^O$AlQ!0MxO1G0mPOOO-E<[-E<[POOO1G.h1G.hOOOO1G/i1G/iO$AvQ!bO,5QQpO,5@}OOQ!0Lb1G3c1G3cOOQ[7+$V7+$VO@zQ`O7+$VO9uQ!0LrO7+$VO%>]Q`O7+$VO%[QlO1G6lO%[QlO1G6mO%>bQ!0LrO1G6lO%>lQlO1G3kO%>sQ`O1G3kO%>xQlO1G3kOOQ[7+)T7+)TO9uQ!0LrO7+)_O`QlO7+)aOOQ['#Kh'#KhOOQ['#JS'#JSO%?PQlO,5>`OOQ[,5>`,5>`O%[QlO'#HuO%?^Q`O'#HwOOQ[,5>f,5>fO9eQ`O,5>fOOQ[,5>h,5>hOOQ[7+)j7+)jOOQ[7+)p7+)pOOQ[7+)t7+)tOOQ[7+)v7+)vO%?cQpO1G5|O%?}Q?MtO1G0zO%@XQ`O1G0zOOQO1G/s1G/sO%@dQ?MtO1G/sO?YQ`O1G/sO!)[QlO'#DmOOQO,5?P,5?POOQO-ERQ`O7+,WO&>WQ`O7+,XO%[QlO7+,WO%[QlO7+,XOOQ[7+)V7+)VO&>]Q`O7+)VO&>bQlO7+)VO&>iQ`O7+)VOOQ[<nQ`O,5>aOOQ[,5>c,5>cO&>sQ`O1G4QO9eQ`O7+&fO!)[QlO7+&fOOQO7+%_7+%_O&>xQ?MtO1G6ZO?YQ`O7+%_OOQ!0Lf<yQ?MvO,5?aO'@|Q?MvO,5?cO'CPQ?MvO7+'|O'DuQMjOG27TOOQO<VO!l$xO#jROe!iOpkOrPO(T)]O(VTO(YUO(aVO(o[O~O!]$_Oa$qa'z$qa'w$qa!k$qa!Y$qa!_$qa%i$qa!g$qa~Ol)dO~P!&zOh%VOp%WOr%XOs$tOt$tOz%YO|%ZO!O%]O!S${O!_$|O!i%bO!l$xO#j%cO$W%`O$t%^O$v%_O$y%aO(T(vO(VTO(YUO(a$uO(y$}O(z%PO~Og(pP~P!,TO!Q)iO!g)hO!_$^X$Z$^X$]$^X$_$^X$f$^X~O!g)hO!_({X$Z({X$]({X$_({X$f({X~O!Q)iO~P!.^O!Q)iO!_({X$Z({X$]({X$_({X$f({X~O!_)kO$Z)oO$])jO$_)jO$f)pO~O![)sO~P!)[O$]$hO$_$gO$f)wO~On$zX!Q$zX#S$zX'y$zX(y$zX(z$zX~OgmXg$zXnmX!]mX#`mX~P!0SOx)yO(b)zO(c)|O~On*VO!Q*OO'y*PO(y$}O(z%PO~Og)}O~P!1WOg*WO~Oh%VOr%XOs$tOt$tOz%YO|%ZO!OVO!l$xO#jVO!l$xO#jROe!iOpkOrPO(VTO(YUO(aVO(o[O~O(T=QO~P#$qO!]-]O!^(iX~O!^-_O~O!g-VO#`-UO!]#hX!^#hX~O!]-`O!^(xX~O!^-bO~O!c-cO!d-cO(U!lO~P#$`O!^-fO~P'_On-iO!_'`O~O!Y-nO~Os!{a!b!{a!c!{a!d!{a#T!{a#U!{a#V!{a#W!{a#X!{a#[!{a#]!{a(U!{a(V!{a(Y!{a(e!{a(o!{a~P!#vO!p-sO#`-qO~PChO!c-uO!d-uO(U!lO~PDWOa%nO#`-qO'z%nO~Oa%nO!g#vO#`-qO'z%nO~Oa%nO!g#vO!p-sO#`-qO'z%nO(r'pO~O(P'xO(Q'xO(R-zO~Ov-{O~O!Y'Wa!]'Wa~P!:tO![.PO!Y'WX!]'WX~P%[O!](VO!Y(ha~O!Y(ha~PHRO!](^O!Y(va~O!S%hO![.TO!_%iO(T%gO!Y'^X!]'^X~O#`.VO!](ta!k(taa(ta'z(ta~O!g#vO~P#,wO!](jO!k(sa~O!S%hO!_%iO#j.ZO(T%gO~Op.`O!S%hO![.]O!_%iO!|]O#i._O#j.]O(T%gO!]'aX!k'aX~OR.dO!l#xO~Oh%VOn.gO!_'`O%i.fO~Oa#ci!]#ci'z#ci'w#ci!Y#ci!k#civ#ci!_#ci%i#ci!g#ci~P!:tOn>]O!Q*OO'y*PO(y$}O(z%PO~O#k#_aa#_a#`#_a'z#_a!]#_a!k#_a!_#_a!Y#_a~P#/sO#k(`XP(`XR(`X[(`Xa(`Xj(`Xr(`X!S(`X!l(`X!p(`X#R(`X#n(`X#o(`X#p(`X#q(`X#r(`X#s(`X#t(`X#u(`X#v(`X#x(`X#z(`X#{(`X'z(`X(a(`X(r(`X!k(`X!Y(`X'w(`Xv(`X!_(`X%i(`X!g(`X~P!6kO!].tO!k(kX~P!:tO!k.wO~O!Y.yO~OP$[OR#zO!Q#yO!S#{O!l#xO!p$[O(aVO[#mia#mij#mir#mi!]#mi#R#mi#o#mi#p#mi#q#mi#r#mi#s#mi#t#mi#u#mi#v#mi#x#mi#z#mi#{#mi'z#mi(r#mi(y#mi(z#mi'w#mi!Y#mi!k#miv#mi!_#mi%i#mi!g#mi~O#n#mi~P#3cO#n$OO~P#3cOP$[OR#zOr$aO!Q#yO!S#{O!l#xO!p$[O#n$OO#o$PO#p$PO#q$PO(aVO[#mia#mij#mi!]#mi#R#mi#s#mi#t#mi#u#mi#v#mi#x#mi#z#mi#{#mi'z#mi(r#mi(y#mi(z#mi'w#mi!Y#mi!k#miv#mi!_#mi%i#mi!g#mi~O#r#mi~P#6QO#r$QO~P#6QOP$[OR#zO[$cOj$ROr$aO!Q#yO!S#{O!l#xO!p$[O#R$RO#n$OO#o$PO#p$PO#q$PO#r$QO#s$RO#t$RO#u$bO(aVOa#mi!]#mi#x#mi#z#mi#{#mi'z#mi(r#mi(y#mi(z#mi'w#mi!Y#mi!k#miv#mi!_#mi%i#mi!g#mi~O#v#mi~P#8oOP$[OR#zO[$cOj$ROr$aO!Q#yO!S#{O!l#xO!p$[O#R$RO#n$OO#o$PO#p$PO#q$PO#r$QO#s$RO#t$RO#u$bO#v$SO(aVO(z#}Oa#mi!]#mi#z#mi#{#mi'z#mi(r#mi(y#mi'w#mi!Y#mi!k#miv#mi!_#mi%i#mi!g#mi~O#x$UO~P#;VO#x#mi~P#;VO#v$SO~P#8oOP$[OR#zO[$cOj$ROr$aO!Q#yO!S#{O!l#xO!p$[O#R$RO#n$OO#o$PO#p$PO#q$PO#r$QO#s$RO#t$RO#u$bO#v$SO#x$UO(aVO(y#|O(z#}Oa#mi!]#mi#{#mi'z#mi(r#mi'w#mi!Y#mi!k#miv#mi!_#mi%i#mi!g#mi~O#z#mi~P#={O#z$WO~P#={OP]XR]X[]Xj]Xr]X!Q]X!S]X!l]X!p]X#R]X#S]X#`]X#kfX#n]X#o]X#p]X#q]X#r]X#s]X#t]X#u]X#v]X#x]X#z]X#{]X$Q]X(a]X(r]X(y]X(z]X!]]X!^]X~O$O]X~P#@jOP$[OR#zO[]O!Q*OO'y*PO(y$}O(z%POP#miR#mi!S#mi!l#mi!p#mi#n#mi#o#mi#p#mi#q#mi(a#mi~P#EyO!]/POg(pX~P!1WOg/RO~Oa$Pi!]$Pi'z$Pi'w$Pi!Y$Pi!k$Piv$Pi!_$Pi%i$Pi!g$Pi~P!:tO$]/SO$_/SO~O$]/TO$_/TO~O!g)hO#`/UO!_$cX$Z$cX$]$cX$_$cX$f$cX~O![/VO~O!_)kO$Z/XO$])jO$_)jO$f/YO~O!]VO!l$xO#j^O!Q*OO'y*PO(y$}O(z%POP#miR#mi!S#mi!l#mi!p#mi#n#mi#o#mi#p#mi#q#mi(a#mi~P&,QO#S$dOP(`XR(`X[(`Xj(`Xn(`Xr(`X!Q(`X!S(`X!l(`X!p(`X#R(`X#n(`X#o(`X#p(`X#q(`X#r(`X#s(`X#t(`X#u(`X#v(`X#x(`X#z(`X#{(`X$O(`X'y(`X(a(`X(r(`X(y(`X(z(`X!](`X!^(`X~O$O$Pi!]$Pi!^$Pi~P#BwO$O!ri!^!ri~P$+oOg']a!]']a~P!1WO!^7nO~O!]'da!^'da~P#BwO!Y7oO~P#/sO!g#vO(r'pO!]'ea!k'ea~O!]/pO!k)Oi~O!]/pO!g#vO!k)Oi~Og$|q!]$|q#`$|q$O$|q~P!1WO!Y'ga!]'ga~P#/sO!g7vO~O!]/yO!Y)Pi~P#/sO!]/yO!Y)Pi~O!Y7yO~Oh%VOr8OO!l%eO(r'pO~Oj8QO!g#vO~Or8TO!g#vO(r'pO~O!Q*OO'y*PO(z%POn'ja(y'ja!]'ja#`'ja~Og'ja$O'ja~P&5RO!Q*OO'y*POn'la(y'la(z'la!]'la#`'la~Og'la$O'la~P&5tOg(_q!](_q~P!1WO#`8VOg(_q!](_q~P!1WO!Y8WO~Og%Oq!]%Oq#`%Oq$O%Oq~P!1WOa$oy!]$oy'z$oy'w$oy!Y$oy!k$oyv$oy!_$oy%i$oy!g$oy~P!:tO!g6rO~O!]5[O!_)Qa~O!_'`OP$TaR$Ta[$Taj$Tar$Ta!Q$Ta!S$Ta!]$Ta!l$Ta!p$Ta#R$Ta#n$Ta#o$Ta#p$Ta#q$Ta#r$Ta#s$Ta#t$Ta#u$Ta#v$Ta#x$Ta#z$Ta#{$Ta(a$Ta(r$Ta(y$Ta(z$Ta~O%i7WO~P&8fO%^8[Oa%[i!_%[i'z%[i!]%[i~Oa#cy!]#cy'z#cy'w#cy!Y#cy!k#cyv#cy!_#cy%i#cy!g#cy~P!:tO[8^O~Ob8`O(T+qO(VTO(YUO~O!]1TO!^)Xi~O`8dO~O(e(|O!]'pX!^'pX~O!]5uO!^)Ua~O!^8nO~P%;eO(o!sO~P$&YO#[8oO~O!_1oO~O!_1oO%i8qO~On8tO!_1oO%i8qO~O[8yO!]'sa!^'sa~O!]1zO!^)Vi~O!k8}O~O!k9OO~O!k9RO~O!k9RO~P%[Oa9TO~O!g9UO~O!k9VO~O!](wi!^(wi~P#BwOa%nO#`9_O'z%nO~O!](ty!k(tya(ty'z(ty~P!:tO!](jO!k(sy~O%i9bO~P&8fO!_'`O%i9bO~O#k$|qP$|qR$|q[$|qa$|qj$|qr$|q!S$|q!]$|q!l$|q!p$|q#R$|q#n$|q#o$|q#p$|q#q$|q#r$|q#s$|q#t$|q#u$|q#v$|q#x$|q#z$|q#{$|q'z$|q(a$|q(r$|q!k$|q!Y$|q'w$|q#`$|qv$|q!_$|q%i$|q!g$|q~P#/sO#k'jaP'jaR'ja['jaa'jaj'jar'ja!S'ja!l'ja!p'ja#R'ja#n'ja#o'ja#p'ja#q'ja#r'ja#s'ja#t'ja#u'ja#v'ja#x'ja#z'ja#{'ja'z'ja(a'ja(r'ja!k'ja!Y'ja'w'jav'ja!_'ja%i'ja!g'ja~P&5RO#k'laP'laR'la['laa'laj'lar'la!S'la!l'la!p'la#R'la#n'la#o'la#p'la#q'la#r'la#s'la#t'la#u'la#v'la#x'la#z'la#{'la'z'la(a'la(r'la!k'la!Y'la'w'lav'la!_'la%i'la!g'la~P&5tO#k%OqP%OqR%Oq[%Oqa%Oqj%Oqr%Oq!S%Oq!]%Oq!l%Oq!p%Oq#R%Oq#n%Oq#o%Oq#p%Oq#q%Oq#r%Oq#s%Oq#t%Oq#u%Oq#v%Oq#x%Oq#z%Oq#{%Oq'z%Oq(a%Oq(r%Oq!k%Oq!Y%Oq'w%Oq#`%Oqv%Oq!_%Oq%i%Oq!g%Oq~P#/sO!]'Yi!k'Yi~P!:tO$O#cq!]#cq!^#cq~P#BwO(y$}OP%aaR%aa[%aaj%aar%aa!S%aa!l%aa!p%aa#R%aa#n%aa#o%aa#p%aa#q%aa#r%aa#s%aa#t%aa#u%aa#v%aa#x%aa#z%aa#{%aa$O%aa(a%aa(r%aa!]%aa!^%aa~On%aa!Q%aa'y%aa(z%aa~P&IyO(z%POP%caR%ca[%caj%car%ca!S%ca!l%ca!p%ca#R%ca#n%ca#o%ca#p%ca#q%ca#r%ca#s%ca#t%ca#u%ca#v%ca#x%ca#z%ca#{%ca$O%ca(a%ca(r%ca!]%ca!^%ca~On%ca!Q%ca'y%ca(y%ca~P&LQOn>^O!Q*OO'y*PO(z%PO~P&IyOn>^O!Q*OO'y*PO(y$}O~P&LQOR0kO!Q0kO!S0lO#S$dOP}a[}aj}an}ar}a!l}a!p}a#R}a#n}a#o}a#p}a#q}a#r}a#s}a#t}a#u}a#v}a#x}a#z}a#{}a$O}a'y}a(a}a(r}a(y}a(z}a!]}a!^}a~O!Q*OO'y*POP$saR$sa[$saj$san$sar$sa!S$sa!l$sa!p$sa#R$sa#n$sa#o$sa#p$sa#q$sa#r$sa#s$sa#t$sa#u$sa#v$sa#x$sa#z$sa#{$sa$O$sa(a$sa(r$sa(y$sa(z$sa!]$sa!^$sa~O!Q*OO'y*POP$uaR$ua[$uaj$uan$uar$ua!S$ua!l$ua!p$ua#R$ua#n$ua#o$ua#p$ua#q$ua#r$ua#s$ua#t$ua#u$ua#v$ua#x$ua#z$ua#{$ua$O$ua(a$ua(r$ua(y$ua(z$ua!]$ua!^$ua~On>^O!Q*OO'y*PO(y$}O(z%PO~OP%TaR%Ta[%Taj%Tar%Ta!S%Ta!l%Ta!p%Ta#R%Ta#n%Ta#o%Ta#p%Ta#q%Ta#r%Ta#s%Ta#t%Ta#u%Ta#v%Ta#x%Ta#z%Ta#{%Ta$O%Ta(a%Ta(r%Ta!]%Ta!^%Ta~P''VO$O$mq!]$mq!^$mq~P#BwO$O$oq!]$oq!^$oq~P#BwO!^9oO~O$O9pO~P!1WO!g#vO!]'ei!k'ei~O!g#vO(r'pO!]'ei!k'ei~O!]/pO!k)Oq~O!Y'gi!]'gi~P#/sO!]/yO!Y)Pq~Or9wO!g#vO(r'pO~O[9yO!Y9xO~P#/sO!Y9xO~Oj:PO!g#vO~Og(_y!](_y~P!1WO!]'na!_'na~P#/sOa%[q!_%[q'z%[q!]%[q~P#/sO[:UO~O!]1TO!^)Xq~O`:YO~O#`:ZO!]'pa!^'pa~O!]5uO!^)Ui~P#BwO!S:]O~O!_1oO%i:`O~O(VTO(YUO(e:eO~O!]1zO!^)Vq~O!k:hO~O!k:iO~O!k:jO~O!k:jO~P%[O#`:mO!]#hy!^#hy~O!]#hy!^#hy~P#BwO%i:rO~P&8fO!_'`O%i:rO~O$O#|y!]#|y!^#|y~P#BwOP$|iR$|i[$|ij$|ir$|i!S$|i!l$|i!p$|i#R$|i#n$|i#o$|i#p$|i#q$|i#r$|i#s$|i#t$|i#u$|i#v$|i#x$|i#z$|i#{$|i$O$|i(a$|i(r$|i!]$|i!^$|i~P''VO!Q*OO'y*PO(z%POP'iaR'ia['iaj'ian'iar'ia!S'ia!l'ia!p'ia#R'ia#n'ia#o'ia#p'ia#q'ia#r'ia#s'ia#t'ia#u'ia#v'ia#x'ia#z'ia#{'ia$O'ia(a'ia(r'ia(y'ia!]'ia!^'ia~O!Q*OO'y*POP'kaR'ka['kaj'kan'kar'ka!S'ka!l'ka!p'ka#R'ka#n'ka#o'ka#p'ka#q'ka#r'ka#s'ka#t'ka#u'ka#v'ka#x'ka#z'ka#{'ka$O'ka(a'ka(r'ka(y'ka(z'ka!]'ka!^'ka~O(y$}OP%aiR%ai[%aij%ain%air%ai!Q%ai!S%ai!l%ai!p%ai#R%ai#n%ai#o%ai#p%ai#q%ai#r%ai#s%ai#t%ai#u%ai#v%ai#x%ai#z%ai#{%ai$O%ai'y%ai(a%ai(r%ai(z%ai!]%ai!^%ai~O(z%POP%ciR%ci[%cij%cin%cir%ci!Q%ci!S%ci!l%ci!p%ci#R%ci#n%ci#o%ci#p%ci#q%ci#r%ci#s%ci#t%ci#u%ci#v%ci#x%ci#z%ci#{%ci$O%ci'y%ci(a%ci(r%ci(y%ci!]%ci!^%ci~O$O$oy!]$oy!^$oy~P#BwO$O#cy!]#cy!^#cy~P#BwO!g#vO!]'eq!k'eq~O!]/pO!k)Oy~O!Y'gq!]'gq~P#/sOr:|O!g#vO(r'pO~O[;QO!Y;PO~P#/sO!Y;PO~Og(_!R!](_!R~P!1WOa%[y!_%[y'z%[y!]%[y~P#/sO!]1TO!^)Xy~O!]5uO!^)Uq~O(T;XO~O!_1oO%i;[O~O!k;_O~O%i;dO~P&8fOP$|qR$|q[$|qj$|qr$|q!S$|q!l$|q!p$|q#R$|q#n$|q#o$|q#p$|q#q$|q#r$|q#s$|q#t$|q#u$|q#v$|q#x$|q#z$|q#{$|q$O$|q(a$|q(r$|q!]$|q!^$|q~P''VO!Q*OO'y*PO(z%POP'jaR'ja['jaj'jan'jar'ja!S'ja!l'ja!p'ja#R'ja#n'ja#o'ja#p'ja#q'ja#r'ja#s'ja#t'ja#u'ja#v'ja#x'ja#z'ja#{'ja$O'ja(a'ja(r'ja(y'ja!]'ja!^'ja~O!Q*OO'y*POP'laR'la['laj'lan'lar'la!S'la!l'la!p'la#R'la#n'la#o'la#p'la#q'la#r'la#s'la#t'la#u'la#v'la#x'la#z'la#{'la$O'la(a'la(r'la(y'la(z'la!]'la!^'la~OP%OqR%Oq[%Oqj%Oqr%Oq!S%Oq!l%Oq!p%Oq#R%Oq#n%Oq#o%Oq#p%Oq#q%Oq#r%Oq#s%Oq#t%Oq#u%Oq#v%Oq#x%Oq#z%Oq#{%Oq$O%Oq(a%Oq(r%Oq!]%Oq!^%Oq~P''VOg%e!Z!]%e!Z#`%e!Z$O%e!Z~P!1WO!Y;hO~P#/sOr;iO!g#vO(r'pO~O[;kO!Y;hO~P#/sO!]'pq!^'pq~P#BwO!]#h!Z!^#h!Z~P#BwO#k%e!ZP%e!ZR%e!Z[%e!Za%e!Zj%e!Zr%e!Z!S%e!Z!]%e!Z!l%e!Z!p%e!Z#R%e!Z#n%e!Z#o%e!Z#p%e!Z#q%e!Z#r%e!Z#s%e!Z#t%e!Z#u%e!Z#v%e!Z#x%e!Z#z%e!Z#{%e!Z'z%e!Z(a%e!Z(r%e!Z!k%e!Z!Y%e!Z'w%e!Z#`%e!Zv%e!Z!_%e!Z%i%e!Z!g%e!Z~P#/sOr;tO!g#vO(r'pO~O!Y;uO~P#/sOr;|O!g#vO(r'pO~O!Y;}O~P#/sOP%e!ZR%e!Z[%e!Zj%e!Zr%e!Z!S%e!Z!l%e!Z!p%e!Z#R%e!Z#n%e!Z#o%e!Z#p%e!Z#q%e!Z#r%e!Z#s%e!Z#t%e!Z#u%e!Z#v%e!Z#x%e!Z#z%e!Z#{%e!Z$O%e!Z(a%e!Z(r%e!Z!]%e!Z!^%e!Z~P''VOrROe!iOpkOrPO(T)]O(VTO(YUO(aVO(o[O~O!]WO!l$xO#jgPPP!>oI[PPPPPPPPP!BOP!C]PPI[!DnPI[PI[I[I[I[I[PI[!FQP!I[P!LbP!Lf!Lp!Lt!LtP!IXP!Lx!LxP#!OP#!SI[PI[#!Y#%_CjA^PA^PA^A^P#&lA^A^#)OA^#+vA^#.SA^A^#.r#1W#1W#1]#1f#1W#1qPP#1WPA^#2ZA^#6YA^A^6mPPP#:_PPP#:x#:xP#:xP#;`#:xPP#;fP#;]P#;]#;y#;]#P#>V#>]#>k#>q#>{#?R#?]#?c#?s#?y#@k#@}#AT#AZ#Ai#BO#Cs#DR#DY#Et#FS#Gt#HS#HY#H`#Hf#Hp#Hv#H|#IW#Ij#IpPPPPPPPPPPP#IvPPPPPPP#Jk#Mx$ b$ i$ qPPP$']P$'f$*_$0x$0{$1O$1}$2Q$2X$2aP$2g$2jP$3W$3[$4S$5b$5g$5}PP$6S$6Y$6^$6a$6e$6i$7e$7|$8e$8i$8l$8o$8y$8|$9Q$9UR!|RoqOXst!Z#d%m&r&t&u&w,s,x2[2_Y!vQ'`-e1o5{Q%tvQ%|yQ&T|Q&j!VS'W!e-]Q'f!iS'l!r!yU*k$|*Z*oQ+o%}S+|&V&WQ,d&dQ-c'_Q-m'gQ-u'mQ0[*qQ1b,OQ1y,eR<{SU+P%]S!S!nQ!r!v!y!z$|'W'_'`'l'm'n*k*o*q*r-]-c-e-u0[0_1o5{5}%[$ti#v$b$c$d$x${%O%Q%^%_%c)y*R*T*V*Y*a*g*w*x+f+i,S,V.f/P/d/m/x/y/{0`0b0i0j0o1f1i1q3c4^4_4j4o5Q5[5_6S7W7v8Q8V8[8q9b9p9y:P:`:r;Q;[;d;kP>X>Y>]>^Q&X|Q'U!eS'[%i-`Q+t&PQ,P&WQ,f&gQ0n+SQ1Y+uQ1_+{Q2Q,jQ2R,kQ5f1TQ5o1aQ6[1zQ6_1|Q6`2PQ8`5gQ8c5lQ8|6bQ:X8dQ:f8yQ;V:YR<}*ZrnOXst!V!Z#d%m&i&r&t&u&w,s,x2[2_R,h&k&z^OPXYstuvwz!Z!`!g!j!o#S#d#o#u#x#{$O$P$Q$R$S$T$U$V$W$X$Z$_$a$e$n%m%t&R&k&n&o&r&t&u&w&{'T'b'r(V(](d(x(z)O)s)}*i+X+]+g,p,s,x-U-X-i-q.P.V.g.t.{/V/n0]0l0r1S1r2S2T2V2X2[2_2a2p3Q3W3d3l4T4z5w6T6e6f6i6s6|7[8t9T9_:Z:mR>S[#]WZ#W#Z'X(T!b%jm#h#i#l$x%e%h(^(h(i(j*Y*^*b+Z+[+^,o-V.T.Z.[.]._/m/p2d3[3]4a6r7TQ%wxQ%{yW&Q|&V&W,OQ&_!TQ'c!hQ'e!iQ(q#sS+n%|%}Q+r&PQ,_&bQ,c&dS-l'f'gQ.i(rQ1R+oQ1X+uQ1Z+vQ1^+zQ1t,`S1x,d,eQ2|-mQ5e1TQ5i1WQ5n1`Q6Z1yQ8_5gQ8b5kQ8f5pQ:T8^R;T:U!U$zi$d%O%Q%^%_%c*R*T*a*w*x/P/x0`0b0i0j0o4_5Q8V9p>P>X>Y!^%yy!i!u%{%|%}'V'e'f'g'k'u*j+n+o-Y-l-m-t0R0U1R2u2|3T4r4s4v7}9{Q+h%wQ,T&[Q,W&]Q,b&dQ.h(qQ1s,_U1w,c,d,eQ3e.iQ6U1tS6Y1x1yQ8x6Z#f>T#v$b$c$x${)y*V*Y*g+f+i,S,V.f/d/m/y/{1f1i1q3c4^4j4o5[5_6S7W7v8Q8[8q9b9y:P:`:r;Q;[;d;k]>^o>UPS&[!Q&iQ&]!RQ&^!SU*}%[%d=sR,R&Y%]%Si#v$b$c$d$x${%O%Q%^%_%c)y*R*T*V*Y*a*g*w*x+f+i,S,V.f/P/d/m/x/y/{0`0b0i0j0o1f1i1q3c4^4_4j4o5Q5[5_6S7W7v8Q8V8[8q9b9p9y:P:`:r;Q;[;d;kP>X>Y>]>^T)z$u){V+P%]S$i$^c#Y#e%q%s%u(S(Y(t(y)R)S)T)U)V)W)X)Y)Z)[)^)`)b)g)q+d+x-Z-x-}.S.U.s.v.z.|.}/O/b0p2k2n3O3V3k3p3q3r3s3t3u3v3w3x3y3z3{3|4P4Q4X5X5c6u6{7Q7a7b7k7l8k9X9]9g9m9n:o;W;`SQ'Y!eR2q-]!W!nQ!e!r!v!y!z$|'W'_'`'l'm'n*Z*k*o*q*r-]-c-e-u0[0_1o5{5}R1l,ZnqOXst!Z#d%m&r&t&u&w,s,x2[2_Q&y!^Q'v!xS(s#u<^Q+l%zQ,]&_Q,^&aQ-j'dQ-w'oS.r(x=PS0q+X=ZQ1P+mQ1n,[Q2c,zQ2e,{Q2m-WQ2z-kQ2}-oS5Y0r=eQ5a1QS5d1S=fQ6t2oQ6x2{Q6}3SQ8]5bQ9Y6vQ9Z6yQ9^7OR:l9V$d$]c#Y#e%s%u(S(Y(t(y)R)S)T)U)V)W)X)Y)Z)[)^)`)b)g)q+d+x-Z-x-}.S.U.s.v.z.}/O/b0p2k2n3O3V3k3p3q3r3s3t3u3v3w3x3y3z3{3|4P4Q4X5X5c6u6{7Q7a7b7k7l8k9X9]9g9m9n:o;W;`SS#q]SU$fd)_,mS(p#p'iU*v%R(w4OU0m+O.n7gQ5^0xQ7V3`Q9d7YR:s9em!tQ!r!v!y!z'`'l'm'n-e-u1o5{5}Q't!uS(f#g2US-s'k'wQ/s*]Q0R*jQ3U-vQ4f/tQ4r0TQ4s0UQ4x0^Q7r4`S7}4t4vS8R4y4{Q9r7sQ9v7yQ9{8OQ:Q8TS:{9w9xS;g:|;PS;s;h;iS;{;t;uSSR=o>R%^bOPWXYZstuvw!Z!`!g!o#S#W#Z#d#o#u#x#{$O$P$Q$R$S$T$U$V$W$X$_$a$e%m%t&R&k&n&o&r&t&u&w&{'T'b'r(T(V(](d(x(z)O)}*i+X+]+g,p,s,x-i-q.P.V.g.t.{/n0]0l0r1S1r2S2T2V2X2[2_2a3Q3W3d3l4z6T6e6f6i6|7[8t9T9_Q%fj!^%xy!i!u%{%|%}'V'e'f'g'k'u*j+n+o-Y-l-m-t0R0U1R2u2|3T4r4s4v7}9{S&Oz!jQ+k%yQ,a&dW1v,b,c,d,eU6X1w1x1yS8w6Y6ZQ:d8x!r=j$Z$n'X)s-U-X/V2p4T5w6s:Z:mSQ=t>QR=u>R%QeOPXYstuvw!Z!`!g!o#S#d#o#u#x#{$O$P$Q$R$S$T$U$V$W$X$_$a$e%m%t&R&k&n&r&t&u&w&{'T'b'r(V(](d(x(z)O)}*i+X+]+g,p,s,x-i-q.P.V.g.t.{/n0]0l0r1S1r2S2T2V2X2[2_2a3Q3W3d3l4z6T6e6f6i6|7[8t9T9_Y#bWZ#W#Z(T!b%jm#h#i#l$x%e%h(^(h(i(j*Y*^*b+Z+[+^,o-V.T.Z.[.]._/m/p2d3[3]4a6r7TQ,n&o!p=k$Z$n)s-U-X/V2p4T5w6s:Z:mSR=n'XU']!e%i*ZR2s-`%SdOPWXYZstuvw!Z!`!g!o#S#W#Z#d#o#u#x#{$O$P$Q$R$S$T$U$V$W$X$_$a$e%m%t&R&k&n&r&t&u&w&{'T'b'r(T(V(](d(x(z)O)}*i+X+],p,s,x-i-q.P.V.t.{/n0]0l0r1S1r2S2T2V2X2[2_2a3Q3W3l4z6T6e6f6i6|8t9T9_!r)_$Z$n'X)s-U-X/V2p4T5w6s:Z:mSQ,m&oQ0x+gQ3`.gQ7Y3dR9e7[!b$Tc#Y%q(S(Y(t(y)Z)[)`)g+x-x-}.S.U.s.v/b0p3O3V3k3{5X5c6{7Q7a9]:oS)^)q-Z.|2k2n3p4P4X6u7b7k7l8k9X9g9m9n;W;`=vQ>X>ZR>Y>['QkOPWXYZstuvw!Z!`!g!o#S#W#Z#d#o#u#x#{$O$P$Q$R$S$T$U$V$W$X$Z$_$a$e$n%m%t&R&k&n&o&r&t&u&w&{'T'X'b'r(T(V(](d(x(z)O)s)}*i+X+]+g,p,s,x-U-X-i-q.P.V.g.t.{/V/n0]0l0r1S1r2S2T2V2X2[2_2a2p3Q3W3d3l4T4z5w6T6e6f6i6s6|7[8t9T9_:Z:mSS$oh$pR4U/U'XgOPWXYZhstuvw!Z!`!g!o#S#W#Z#d#o#u#x#{$O$P$Q$R$S$T$U$V$W$X$Z$_$a$e$n$p%m%t&R&k&n&o&r&t&u&w&{'T'X'b'r(T(V(](d(x(z)O)s)}*i+X+]+g,p,s,x-U-X-i-q.P.V.g.t.{/U/V/n0]0l0r1S1r2S2T2V2X2[2_2a2p3Q3W3d3l4T4z5w6T6e6f6i6s6|7[8t9T9_:Z:mST$kf$qQ$ifS)j$l)nR)v$qT$jf$qT)l$l)n'XhOPWXYZhstuvw!Z!`!g!o#S#W#Z#d#o#u#x#{$O$P$Q$R$S$T$U$V$W$X$Z$_$a$e$n$p%m%t&R&k&n&o&r&t&u&w&{'T'X'b'r(T(V(](d(x(z)O)s)}*i+X+]+g,p,s,x-U-X-i-q.P.V.g.t.{/U/V/n0]0l0r1S1r2S2T2V2X2[2_2a2p3Q3W3d3l4T4z5w6T6e6f6i6s6|7[8t9T9_:Z:mST$oh$pQ$rhR)u$p%^jOPWXYZstuvw!Z!`!g!o#S#W#Z#d#o#u#x#{$O$P$Q$R$S$T$U$V$W$X$_$a$e%m%t&R&k&n&o&r&t&u&w&{'T'b'r(T(V(](d(x(z)O)}*i+X+]+g,p,s,x-i-q.P.V.g.t.{/n0]0l0r1S1r2S2T2V2X2[2_2a3Q3W3d3l4z6T6e6f6i6|7[8t9T9_!s>Q$Z$n'X)s-U-X/V2p4T5w6s:Z:mS#glOPXZst!Z!`!o#S#d#o#{$n%m&k&n&o&r&t&u&w&{'T'b)O)s*i+]+g,p,s,x-i.g/V/n0]0l1r2S2T2V2X2[2_2a3d4T4z6T6e6f6i7[8t9T!U%Ri$d%O%Q%^%_%c*R*T*a*w*x/P/x0`0b0i0j0o4_5Q8V9p>P>X>Y#f(w#v$b$c$x${)y*V*Y*g+f+i,S,V.f/d/m/y/{1f1i1q3c4^4j4o5[5_6S7W7v8Q8[8q9b9y:P:`:r;Q;[;d;k]>^Q+T%aQ/c*Oo4OP>X>YQ*c$zU*l$|*Z*oQ+U%bQ0W*m#f=q#v$b$c$x${)y*V*Y*g+f+i,S,V.f/d/m/y/{1f1i1q3c4^4j4o5[5_6S7W7v8Q8[8q9b9y:P:`:r;Q;[;d;k]>^n=rTQ=x>UQ=y>VR=z>W!U%Ri$d%O%Q%^%_%c*R*T*a*w*x/P/x0`0b0i0j0o4_5Q8V9p>P>X>Y#f(w#v$b$c$x${)y*V*Y*g+f+i,S,V.f/d/m/y/{1f1i1q3c4^4j4o5[5_6S7W7v8Q8[8q9b9y:P:`:r;Q;[;d;k]>^o4OP>X>Y>]>^Q,U&]Q1h,WQ5s1gR8h5tV*n$|*Z*oU*n$|*Z*oT5z1o5{S0P*i/nQ4w0]T8S4z:]Q+j%xQ0V*lQ1O+kQ1u,aQ6W1vQ8v6XQ:c8wR;^:d!U%Oi$d%O%Q%^%_%c*R*T*a*w*x/P/x0`0b0i0j0o4_5Q8V9p>P>X>Yx*R$v)e*S*u+V/v0d0e4R4g5R5S5W7p8U:R:x=p=}>OS0`*t0a#f]>^nZ>[`=T3}7c7f7j9h:t:w;yS=_.l3iT=`7e9k!U%Qi$d%O%Q%^%_%c*R*T*a*w*x/P/x0`0b0i0j0o4_5Q8V9p>P>X>Y|*T$v)e*U*t+V/g/v0d0e4R4g4|5R5S5W7p8U:R:x=p=}>OS0b*u0c#f]>^nZ>[d=V3}7d7e7j9h9i:t:u:w;yS=a.m3jT=b7f9lrnOXst!V!Z#d%m&i&r&t&u&w,s,x2[2_Q&f!UR,p&ornOXst!V!Z#d%m&i&r&t&u&w,s,x2[2_R&f!UQ,Y&^R1d,RsnOXst!V!Z#d%m&i&r&t&u&w,s,x2[2_Q1p,_S6R1s1tU8p6P6Q6US:_8r8sS;Y:^:aQ;m;ZR;w;nQ&m!VR,i&iR6_1|R:f8yW&Q|&V&W,OR1Z+vQ&r!WR,s&sR,y&xT2],x2_R,}&yQ,|&yR2f,}Q'y!{R-y'ySsOtQ#dXT%ps#dQ#OTR'{#OQ#RUR'}#RQ){$uR/`){Q#UVR(Q#UQ#XWU(W#X(X.QQ(X#YR.Q(YQ-^'YR2r-^Q.u(yS3m.u3nR3n.vQ-e'`R2v-eY!rQ'`-e1o5{R'j!rQ/Q)eR4S/QU#_W%h*YU(_#_(`.RQ(`#`R.R(ZQ-a']R2t-at`OXst!V!Z#d%m&i&k&r&t&u&w,s,x2[2_S#hZ%eU#r`#h.[R.[(jQ(k#jQ.X(gW.a(k.X3X7RQ3X.YR7R3YQ)n$lR/W)nQ$phR)t$pQ$`cU)a$`-|O>Z>[Q/z*eU4k/z4m7xQ4m/|R7x4lS*o$|*ZR0Y*ox*S$v)e*t*u+V/v0d0e4R4g5R5S5W7p8U:R:x=p=}>O!d.j(u)c*[*e.l.m.q/_/k/|0v1e3h4[4h4l5r7]7`7w7z8X8Z9t9|:S:};R;e;j;v>Z>[U/h*S.j7ca7c3}7e7f7j9h:t:w;yQ0a*tQ3i.lU4}0a3i9kR9k7e|*U$v)e*t*u+V/g/v0d0e4R4g4|5R5S5W7p8U:R:x=p=}>O!h.k(u)c*[*e.l.m.q/_/k/|0v1e3f3h4[4h4l5r7]7^7`7w7z8X8Z9t9|:S:};R;e;j;v>Z>[U/j*U.k7de7d3}7e7f7j9h9i:t:u:w;yQ0c*uQ3j.mU5P0c3j9lR9l7fQ*z%UR0g*zQ5]0vR8Y5]Q+_%kR0u+_Q5v1jS8j5v:[R:[8kQ,[&_R1m,[Q5{1oR8m5{Q1{,fS6]1{8zR8z6_Q1U+rW5h1U5j8a:VQ5j1XQ8a5iR:V8bQ+w&QR1[+wQ2_,xR6m2_YrOXst#dQ&v!ZQ+a%mQ,r&rQ,t&tQ,u&uQ,w&wQ2Y,sS2],x2_R6l2[Q%opQ&z!_Q&}!aQ'P!bQ'R!cQ'q!uQ+`%lQ+l%zQ,Q&XQ,h&mQ-P&|W-p'k's't'wQ-w'oQ0X*nQ1P+mQ1c,PS2O,i,lQ2g-OQ2h-RQ2i-SQ2}-oW3P-r-s-v-xQ5a1QQ5m1_Q5q1eQ6V1uQ6a2QQ6k2ZU6z3O3R3UQ6}3SQ8]5bQ8e5oQ8g5rQ8l5zQ8u6WQ8{6`S9[6{7PQ9^7OQ:W8cQ:b8vQ:g8|Q:n9]Q;U:XQ;]:cQ;a:oQ;l;VR;o;^Q%zyQ'd!iQ'o!uU+m%{%|%}Q-W'VU-k'e'f'gS-o'k'uQ0Q*jS1Q+n+oQ2o-YS2{-l-mQ3S-tS4p0R0UQ5b1RQ6v2uQ6y2|Q7O3TU7{4r4s4vQ9z7}R;O9{S$wi>PR*{%VU%Ui%V>PR0f*yQ$viS(u#v+iS)c$b$cQ)e$dQ*[$xS*e${*YQ*t%OQ*u%QQ+Q%^Q+R%_Q+V%cQ.lPQ=}>XQ>O>YQ>Z>]R>[>^Q+O%]Q.nSR#[WR'Z!el!tQ!r!v!y!z'`'l'm'n-e-u1o5{5}S'V!e-]U*j$|*Z*oS-Y'W'_S0U*k*qQ0^*rQ2u-cQ4v0[R4{0_R({#xQ!fQT-d'`-e]!qQ!r'`-e1o5{Q#p]R'i < TypeParamList in out const TypeDefinition extends ThisType this LiteralType ArithOp Number BooleanLiteral TemplateType InterpolationEnd Interpolation InterpolationStart NullType null VoidType void TypeofType typeof MemberExpression . PropertyName [ TemplateString Escape Interpolation super RegExp ] ArrayExpression Spread , } { ObjectExpression Property async get set PropertyDefinition Block : NewTarget new NewExpression ) ( ArgList UnaryExpression delete LogicOp BitOp YieldExpression yield AwaitExpression await ParenthesizedExpression ClassExpression class ClassBody MethodDeclaration Decorator @ MemberExpression PrivatePropertyName CallExpression TypeArgList CompareOp < declare Privacy static abstract override PrivatePropertyDefinition PropertyDeclaration readonly accessor Optional TypeAnnotation Equals StaticBlock FunctionExpression ArrowFunction ParamList ParamList ArrayPattern ObjectPattern PatternProperty Privacy readonly Arrow MemberExpression BinaryExpression ArithOp ArithOp ArithOp ArithOp BitOp CompareOp instanceof satisfies CompareOp BitOp BitOp BitOp LogicOp LogicOp ConditionalExpression LogicOp LogicOp AssignmentExpression UpdateOp PostfixExpression CallExpression InstantiationExpression TaggedTemplateExpression DynamicImport import ImportMeta JSXElement JSXSelfCloseEndTag JSXSelfClosingTag JSXIdentifier JSXBuiltin JSXIdentifier JSXNamespacedName JSXMemberExpression JSXSpreadAttribute JSXAttribute JSXAttributeValue JSXEscape JSXEndTag JSXOpenTag JSXFragmentTag JSXText JSXEscape JSXStartCloseTag JSXCloseTag PrefixCast < ArrowFunction TypeParamList SequenceExpression InstantiationExpression KeyofType keyof UniqueType unique ImportType InferredType infer TypeName ParenthesizedType FunctionSignature ParamList NewSignature IndexedType TupleType Label ArrayType ReadonlyType ObjectType MethodType PropertyType IndexSignature PropertyDefinition CallSignature TypePredicate asserts is NewSignature new UnionType LogicOp IntersectionType LogicOp ConditionalType ParameterizedType ClassDeclaration abstract implements type VariableDeclaration let var using TypeAliasDeclaration InterfaceDeclaration interface EnumDeclaration enum EnumBody NamespaceDeclaration namespace module AmbientDeclaration declare GlobalDeclaration global ClassDeclaration ClassBody AmbientFunctionDeclaration ExportGroup VariableName VariableName ImportDeclaration defer ImportGroup ForStatement for ForSpec ForInSpec ForOfSpec of WhileStatement while WithStatement with DoStatement do IfStatement if else SwitchStatement switch SwitchBody CaseLabel case DefaultLabel TryStatement try CatchClause catch FinallyClause finally ReturnStatement return ThrowStatement throw BreakStatement break ContinueStatement continue DebuggerStatement debugger LabeledStatement ExpressionStatement SingleExpression SingleClassItem",maxTerm:380,context:ete,nodeProps:[["isolate",-8,5,6,14,37,39,51,53,55,""],["group",-26,9,17,19,68,207,211,215,216,218,221,224,234,237,243,245,247,249,252,258,264,266,268,270,272,274,275,"Statement",-34,13,14,32,35,36,42,51,54,55,57,62,70,72,76,80,82,84,85,110,111,120,121,136,139,141,142,143,144,145,147,148,167,169,171,"Expression",-23,31,33,37,41,43,45,173,175,177,178,180,181,182,184,185,186,188,189,190,201,203,205,206,"Type",-3,88,103,109,"ClassItem"],["openedBy",23,"<",38,"InterpolationStart",56,"[",60,"{",73,"(",160,"JSXStartCloseTag"],["closedBy",-2,24,168,">",40,"InterpolationEnd",50,"]",61,"}",74,")",165,"JSXEndTag"]],propSources:[ote],skippedNodes:[0,5,6,278],repeatNodeCount:37,tokenData:"$Fq07[R!bOX%ZXY+gYZ-yZ[+g[]%Z]^.c^p%Zpq+gqr/mrs3cst:_tuEruvJSvwLkwx! Yxy!'iyz!(sz{!)}{|!,q|}!.O}!O!,q!O!P!/Y!P!Q!9j!Q!R#:O!R![#<_![!]#I_!]!^#Jk!^!_#Ku!_!`$![!`!a$$v!a!b$*T!b!c$,r!c!}Er!}#O$-|#O#P$/W#P#Q$4o#Q#R$5y#R#SEr#S#T$7W#T#o$8b#o#p$x#r#s$@U#s$f%Z$f$g+g$g#BYEr#BY#BZ$A`#BZ$ISEr$IS$I_$A`$I_$I|Er$I|$I}$Dk$I}$JO$Dk$JO$JTEr$JT$JU$A`$JU$KVEr$KV$KW$A`$KW&FUEr&FU&FV$A`&FV;'SEr;'S;=`I|<%l?HTEr?HT?HU$A`?HUOEr(n%d_$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z&j&hT$i&jO!^&c!_#o&c#p;'S&c;'S;=`&w<%lO&c&j&zP;=`<%l&c'|'U]$i&j(Z!bOY&}YZ&cZw&}wx&cx!^&}!^!_'}!_#O&}#O#P&c#P#o&}#o#p'}#p;'S&};'S;=`(l<%lO&}!b(SU(Z!bOY'}Zw'}x#O'}#P;'S'};'S;=`(f<%lO'}!b(iP;=`<%l'}'|(oP;=`<%l&}'[(y]$i&j(WpOY(rYZ&cZr(rrs&cs!^(r!^!_)r!_#O(r#O#P&c#P#o(r#o#p)r#p;'S(r;'S;=`*a<%lO(rp)wU(WpOY)rZr)rs#O)r#P;'S)r;'S;=`*Z<%lO)rp*^P;=`<%l)r'[*dP;=`<%l(r#S*nX(Wp(Z!bOY*gZr*grs'}sw*gwx)rx#O*g#P;'S*g;'S;=`+Z<%lO*g#S+^P;=`<%l*g(n+dP;=`<%l%Z07[+rq$i&j(Wp(Z!b'|0/lOX%ZXY+gYZ&cZ[+g[p%Zpq+gqr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p$f%Z$f$g+g$g#BY%Z#BY#BZ+g#BZ$IS%Z$IS$I_+g$I_$JT%Z$JT$JU+g$JU$KV%Z$KV$KW+g$KW&FU%Z&FU&FV+g&FV;'S%Z;'S;=`+a<%l?HT%Z?HT?HU+g?HUO%Z07[.ST(X#S$i&j'}0/lO!^&c!_#o&c#p;'S&c;'S;=`&w<%lO&c07[.n_$i&j(Wp(Z!b'}0/lOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z)3p/x`$i&j!p),Q(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`0z!`#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z(KW1V`#v(Ch$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`2X!`#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z(KW2d_#v(Ch$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z'At3l_(V':f$i&j(Z!bOY4kYZ5qZr4krs7nsw4kwx5qx!^4k!^!_8p!_#O4k#O#P5q#P#o4k#o#p8p#p;'S4k;'S;=`:X<%lO4k(^4r_$i&j(Z!bOY4kYZ5qZr4krs7nsw4kwx5qx!^4k!^!_8p!_#O4k#O#P5q#P#o4k#o#p8p#p;'S4k;'S;=`:X<%lO4k&z5vX$i&jOr5qrs6cs!^5q!^!_6y!_#o5q#o#p6y#p;'S5q;'S;=`7h<%lO5q&z6jT$d`$i&jO!^&c!_#o&c#p;'S&c;'S;=`&w<%lO&c`6|TOr6yrs7]s;'S6y;'S;=`7b<%lO6y`7bO$d``7eP;=`<%l6y&z7kP;=`<%l5q(^7w]$d`$i&j(Z!bOY&}YZ&cZw&}wx&cx!^&}!^!_'}!_#O&}#O#P&c#P#o&}#o#p'}#p;'S&};'S;=`(l<%lO&}!r8uZ(Z!bOY8pYZ6yZr8prs9hsw8pwx6yx#O8p#O#P6y#P;'S8p;'S;=`:R<%lO8p!r9oU$d`(Z!bOY'}Zw'}x#O'}#P;'S'};'S;=`(f<%lO'}!r:UP;=`<%l8p(^:[P;=`<%l4k%9[:hh$i&j(Wp(Z!bOY%ZYZ&cZq%Zqr`#P#o`x!^=^!^!_?q!_#O=^#O#P>`#P#o=^#o#p?q#p;'S=^;'S;=`@h<%lO=^&n>gXWS$i&jOY>`YZ&cZ!^>`!^!_?S!_#o>`#o#p?S#p;'S>`;'S;=`?k<%lO>`S?XSWSOY?SZ;'S?S;'S;=`?e<%lO?SS?hP;=`<%l?S&n?nP;=`<%l>`!f?xWWS(Z!bOY?qZw?qwx?Sx#O?q#O#P?S#P;'S?q;'S;=`@b<%lO?q!f@eP;=`<%l?q(Q@kP;=`<%l=^'`@w]WS$i&j(WpOY@nYZ&cZr@nrs>`s!^@n!^!_Ap!_#O@n#O#P>`#P#o@n#o#pAp#p;'S@n;'S;=`Bg<%lO@ntAwWWS(WpOYApZrAprs?Ss#OAp#O#P?S#P;'SAp;'S;=`Ba<%lOAptBdP;=`<%lAp'`BjP;=`<%l@n#WBvYWS(Wp(Z!bOYBmZrBmrs?qswBmwxApx#OBm#O#P?S#P;'SBm;'S;=`Cf<%lOBm#WCiP;=`<%lBm(rCoP;=`<%l^!Q^$i&j!X7`OY!=yYZ&cZ!P!=y!P!Q!>|!Q!^!=y!^!_!@c!_!}!=y!}#O!CW#O#P!Dy#P#o!=y#o#p!@c#p;'S!=y;'S;=`!Ek<%lO!=y|#X#Z&c#Z#[!>|#[#]&c#]#^!>|#^#a&c#a#b!>|#b#g&c#g#h!>|#h#i&c#i#j!>|#j#k!>|#k#m&c#m#n!>|#n#o&c#p;'S&c;'S;=`&w<%lO&c7`!@hX!X7`OY!@cZ!P!@c!P!Q!AT!Q!}!@c!}#O!Ar#O#P!Bq#P;'S!@c;'S;=`!CQ<%lO!@c7`!AYW!X7`#W#X!AT#Z#[!AT#]#^!AT#a#b!AT#g#h!AT#i#j!AT#j#k!AT#m#n!AT7`!AuVOY!ArZ#O!Ar#O#P!B[#P#Q!@c#Q;'S!Ar;'S;=`!Bk<%lO!Ar7`!B_SOY!ArZ;'S!Ar;'S;=`!Bk<%lO!Ar7`!BnP;=`<%l!Ar7`!BtSOY!@cZ;'S!@c;'S;=`!CQ<%lO!@c7`!CTP;=`<%l!@c^!Ezl$i&j(Z!b!X7`OY&}YZ&cZw&}wx&cx!^&}!^!_'}!_#O&}#O#P&c#P#W&}#W#X!Eq#X#Z&}#Z#[!Eq#[#]&}#]#^!Eq#^#a&}#a#b!Eq#b#g&}#g#h!Eq#h#i&}#i#j!Eq#j#k!Eq#k#m&}#m#n!Eq#n#o&}#o#p'}#p;'S&};'S;=`(l<%lO&}8r!GyZ(Z!b!X7`OY!GrZw!Grwx!@cx!P!Gr!P!Q!Hl!Q!}!Gr!}#O!JU#O#P!Bq#P;'S!Gr;'S;=`!J|<%lO!Gr8r!Hse(Z!b!X7`OY'}Zw'}x#O'}#P#W'}#W#X!Hl#X#Z'}#Z#[!Hl#[#]'}#]#^!Hl#^#a'}#a#b!Hl#b#g'}#g#h!Hl#h#i'}#i#j!Hl#j#k!Hl#k#m'}#m#n!Hl#n;'S'};'S;=`(f<%lO'}8r!JZX(Z!bOY!JUZw!JUwx!Arx#O!JU#O#P!B[#P#Q!Gr#Q;'S!JU;'S;=`!Jv<%lO!JU8r!JyP;=`<%l!JU8r!KPP;=`<%l!Gr>^!KZ^$i&j(Z!bOY!KSYZ&cZw!KSwx!CWx!^!KS!^!_!JU!_#O!KS#O#P!DR#P#Q!^!LYP;=`<%l!KS>^!L`P;=`<%l!_#c#d#Bq#d#l%Z#l#m#Es#m#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z'Ad#_#c#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z'Ad#>j_$i&j(Wp(Z!bs'9tOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z'Ad#?rd$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!Q%Z!Q!R#AQ!R!S#AQ!S!^%Z!^!_*g!_#O%Z#O#P&c#P#R%Z#R#S#AQ#S#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z'Ad#A]f$i&j(Wp(Z!bs'9tOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!Q%Z!Q!R#AQ!R!S#AQ!S!^%Z!^!_*g!_#O%Z#O#P&c#P#R%Z#R#S#AQ#S#b%Z#b#c#>_#c#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z'Ad#Bzc$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!Q%Z!Q!Y#DV!Y!^%Z!^!_*g!_#O%Z#O#P&c#P#R%Z#R#S#DV#S#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z'Ad#Dbe$i&j(Wp(Z!bs'9tOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!Q%Z!Q!Y#DV!Y!^%Z!^!_*g!_#O%Z#O#P&c#P#R%Z#R#S#DV#S#b%Z#b#c#>_#c#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z'Ad#E|g$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!Q%Z!Q![#Ge![!^%Z!^!_*g!_!c%Z!c!i#Ge!i#O%Z#O#P&c#P#R%Z#R#S#Ge#S#T%Z#T#Z#Ge#Z#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z'Ad#Gpi$i&j(Wp(Z!bs'9tOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!Q%Z!Q![#Ge![!^%Z!^!_*g!_!c%Z!c!i#Ge!i#O%Z#O#P&c#P#R%Z#R#S#Ge#S#T%Z#T#Z#Ge#Z#b%Z#b#c#>_#c#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z*)x#Il_!g$b$i&j$O)Lv(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z)[#Jv_al$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z04f#LS^h#)`#R-v$?V_!^(CdvBr$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z?O$@a_!q7`$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z07[$Aq|$i&j(Wp(Z!b'|0/l$]#t(T,2j(e$I[OX%ZXY+gYZ&cZ[+g[p%Zpq+gqr%Zrs&}st%ZtuEruw%Zwx(rx}%Z}!OGv!O!Q%Z!Q![Er![!^%Z!^!_*g!_!c%Z!c!}Er!}#O%Z#O#P&c#P#R%Z#R#SEr#S#T%Z#T#oEr#o#p*g#p$f%Z$f$g+g$g#BYEr#BY#BZ$A`#BZ$ISEr$IS$I_$A`$I_$JTEr$JT$JU$A`$JU$KVEr$KV$KW$A`$KW&FUEr&FU&FV$A`&FV;'SEr;'S;=`I|<%l?HTEr?HT?HU$A`?HUOEr07[$D|k$i&j(Wp(Z!b'}0/l$]#t(T,2j(e$I[OY%ZYZ&cZr%Zrs&}st%ZtuEruw%Zwx(rx}%Z}!OGv!O!Q%Z!Q![Er![!^%Z!^!_*g!_!c%Z!c!}Er!}#O%Z#O#P&c#P#R%Z#R#SEr#S#T%Z#T#oEr#o#p*g#p$g%Z$g;'SEr;'S;=`I|<%lOEr",tokenizers:[ite,nte,ste,rte,2,3,4,5,6,7,8,9,10,11,12,13,14,tte,new Yg("$S~RRtu[#O#Pg#S#T#|~_P#o#pb~gOx~~jVO#i!P#i#j!U#j#l!P#l#m!q#m;'S!P;'S;=`#v<%lO!P~!UO!U~~!XS!Q![!e!c!i!e#T#Z!e#o#p#Z~!hR!Q![!q!c!i!q#T#Z!q~!tR!Q![!}!c!i!}#T#Z!}~#QR!Q![!P!c!i!P#T#Z!P~#^R!Q![#g!c!i#g#T#Z#g~#jS!Q![#g!c!i#g#T#Z#g#q#r!P~#yP;=`<%l!P~$RO(c~~",141,340),new Yg("j~RQYZXz{^~^O(Q~~aP!P!Qd~iO(R~~",25,323)],topRules:{Script:[0,7],SingleExpression:[1,276],SingleClassItem:[2,277]},dialects:{jsx:0,ts:15175},dynamicPrecedences:{80:1,82:1,94:1,169:1,199:1},specialized:[{term:327,get:t=>ate[t]||-1},{term:343,get:t=>lte[t]||-1},{term:95,get:t=>cte[t]||-1}],tokenPrec:15201}),H4=[Qn("function ${name}(${params}) {\n ${}\n}",{label:"function",detail:"definition",type:"keyword"}),Qn("for (let ${index} = 0; ${index} < ${bound}; ${index}++) {\n ${}\n}",{label:"for",detail:"loop",type:"keyword"}),Qn("for (let ${name} of ${collection}) {\n ${}\n}",{label:"for",detail:"of loop",type:"keyword"}),Qn("do {\n ${}\n} while (${})",{label:"do",detail:"loop",type:"keyword"}),Qn("while (${}) {\n ${}\n}",{label:"while",detail:"loop",type:"keyword"}),Qn(`try { \${} } catch (\${error}) { \${} @@ -83,14 +83,14 @@ Error generating stack: `+m.message+` constructor(\${params}) { \${} } -}`,{label:"class",detail:"definition",type:"keyword"}),Qn('import {${names}} from "${module}"\n${}',{label:"import",detail:"named",type:"keyword"}),Qn('import ${name} from "${module}"\n${}',{label:"import",detail:"default",type:"keyword"})],ute=H4.concat([Qn("interface ${name} {\n ${}\n}",{label:"interface",detail:"definition",type:"keyword"}),Qn("type ${name} = ${type}",{label:"type",detail:"definition",type:"keyword"}),Qn("enum ${name} {\n ${}\n}",{label:"enum",detail:"definition",type:"keyword"})]),sP=new BB,F4=new Set(["Script","Block","FunctionExpression","FunctionDeclaration","ArrowFunction","MethodDeclaration","ForStatement"]);function Ru(t){return(e,i)=>{let n=e.node.getChild("VariableDefinition");return n&&i(n,t),!0}}const fte=["FunctionDeclaration"],dte={FunctionDeclaration:Ru("function"),ClassDeclaration:Ru("class"),ClassExpression:()=>!0,EnumDeclaration:Ru("constant"),TypeAliasDeclaration:Ru("type"),NamespaceDeclaration:Ru("namespace"),VariableDefinition(t,e){t.matchContext(fte)||e(t,"variable")},TypeDefinition(t,e){e(t,"type")},__proto__:null};function G4(t,e){let i=sP.get(e);if(i)return i;let n=[],r=!0;function s(o,l){let c=t.sliceString(o.from,o.to);n.push({label:c,type:l})}return e.cursor(ut.IncludeAnonymous).iterate(o=>{if(r)r=!1;else if(o.name){let l=dte[o.name];if(l&&l(o,s)||F4.has(o.name))return!1}else if(o.to-o.from>8192){for(let l of G4(t,o.node))n.push(l);return!1}}),sP.set(e,n),n}const oP=/^[\w$\xa1-\uffff][\w$\d\xa1-\uffff]*$/,K4=["TemplateString","String","RegExp","LineComment","BlockComment","VariableDefinition","TypeDefinition","Label","PropertyDefinition","PropertyName","PrivatePropertyDefinition","PrivatePropertyName","JSXText","JSXAttributeValue","JSXOpenTag","JSXCloseTag","JSXSelfClosingTag",".","?."];function pte(t){let e=xt(t.state).resolveInner(t.pos,-1);if(K4.indexOf(e.name)>-1)return null;let i=e.name=="VariableName"||e.to-e.from<20&&oP.test(t.state.sliceDoc(e.from,e.to));if(!i&&!t.explicit)return null;let n=[];for(let r=e;r;r=r.parent)F4.has(r.name)&&(n=n.concat(G4(t.state.doc,r)));return{options:n,from:i?e.from:t.pos,validFor:oP}}const ks=lh.define({name:"javascript",parser:hte.configure({props:[md.add({IfStatement:Ym({except:/^\s*({|else\b)/}),TryStatement:Ym({except:/^\s*({|catch\b|finally\b)/}),LabeledStatement:jY,SwitchBody:t=>{let e=t.textAfter,i=/^\s*\}/.test(e),n=/^\s*(case|default)\b/.test(e);return t.baseIndent+(i?0:n?1:2)*t.unit},Block:NY({closing:"}"}),ArrowFunction:t=>t.baseIndent+t.unit,"TemplateString BlockComment":()=>null,"Statement Property":Ym({except:/^\s*{/}),JSXElement(t){let e=/^\s*<\//.test(t.textAfter);return t.lineIndent(t.node.from)+(e?0:t.unit)},JSXEscape(t){let e=/\s*\}/.test(t.textAfter);return t.lineIndent(t.node.from)+(e?0:t.unit)},"JSXOpenTag JSXSelfClosingTag"(t){return t.column(t.node.from)+t.unit}}),bh.add({"Block ClassBody SwitchBody EnumBody ObjectExpression ArrayExpression ObjectType":ZB,BlockComment(t){return{from:t.from+2,to:t.to-2}}})]}),languageData:{closeBrackets:{brackets:["(","[","{","'",'"',"`"]},commentTokens:{line:"//",block:{open:"/*",close:"*/"}},indentOnInput:/^\s*(?:case |default:|\{|\}|<\/)$/,wordChars:"$"}}),J4={test:t=>/^JSX/.test(t.name),facet:Gx({commentTokens:{block:{open:"{/*",close:"*/}"}}})},e6=ks.configure({dialect:"ts"},"typescript"),t6=ks.configure({dialect:"jsx",props:[Kx.add(t=>t.isTop?[J4]:void 0)]}),i6=ks.configure({dialect:"jsx ts",props:[Kx.add(t=>t.isTop?[J4]:void 0)]},"typescript");let n6=t=>({label:t,type:"keyword"});const r6="break case const continue default delete export extends false finally in instanceof let new return static super switch this throw true typeof var yield".split(" ").map(n6),mte=r6.concat(["declare","implements","private","protected","public"].map(n6));function gte(t={}){let e=t.jsx?t.typescript?i6:t6:t.typescript?e6:ks,i=t.typescript?ute.concat(mte):H4.concat(r6);return new Vf(e,[ks.data.of({autocomplete:oG(K4,W$(i))}),ks.data.of({autocomplete:pte}),t.jsx?_te:[]])}function Ote(t){for(;;){if(t.name=="JSXOpenTag"||t.name=="JSXSelfClosingTag"||t.name=="JSXFragmentTag")return t;if(t.name=="JSXEscape"||!t.parent)return null;t=t.parent}}function aP(t,e,i=t.length){for(let n=e==null?void 0:e.firstChild;n;n=n.nextSibling)if(n.name=="JSXIdentifier"||n.name=="JSXBuiltin"||n.name=="JSXNamespacedName"||n.name=="JSXMemberExpression")return t.sliceString(n.from,Math.min(n.to,i));return""}const vte=typeof navigator=="object"&&/Android\b/.test(navigator.userAgent),_te=ve.inputHandler.of((t,e,i,n,r)=>{if((vte?t.composing:t.compositionStarted)||t.state.readOnly||e!=i||n!=">"&&n!="/"||!ks.isActiveAt(t.state,e,-1))return!1;let s=r(),{state:o}=s,l=o.changeByRange(c=>{var u;let{head:d}=c,p=xt(o).resolveInner(d-1,-1),g;if(p.name=="JSXStartTag"&&(p=p.parent),!(o.doc.sliceString(d-1,d)!=n||p.name=="JSXAttributeValue"&&p.to>d)){if(n==">"&&p.name=="JSXFragmentTag")return{range:c,changes:{from:d,insert:""}};if(n=="/"&&p.name=="JSXStartCloseTag"){let O=p.parent,_=O.parent;if(_&&O.from==d-2&&((g=aP(o.doc,_.firstChild,d))||((u=_.firstChild)===null||u===void 0?void 0:u.name)=="JSXFragmentTag")){let b=`${g}>`;return{range:se.cursor(d+b.length,-1),changes:{from:d,insert:b}}}}else if(n==">"){let O=Ote(p);if(O&&O.name=="JSXOpenTag"&&!/^\/?>|^<\//.test(o.doc.sliceString(d,d+2))&&(g=aP(o.doc,O,d)))return{range:c,changes:{from:d,insert:``}}}}return{range:c}});return l.changes.empty?!1:(t.dispatch([s,o.update(l,{userEvent:"input.complete",scrollIntoView:!0})]),!0)}),Qu=["_blank","_self","_top","_parent"],ry=["ascii","utf-8","utf-16","latin1","latin1"],sy=["get","post","put","delete"],oy=["application/x-www-form-urlencoded","multipart/form-data","text/plain"],Gn=["true","false"],Me={},yte={a:{attrs:{href:null,ping:null,type:null,media:null,target:Qu,hreflang:null}},abbr:Me,address:Me,area:{attrs:{alt:null,coords:null,href:null,target:null,ping:null,media:null,hreflang:null,type:null,shape:["default","rect","circle","poly"]}},article:Me,aside:Me,audio:{attrs:{src:null,mediagroup:null,crossorigin:["anonymous","use-credentials"],preload:["none","metadata","auto"],autoplay:["autoplay"],loop:["loop"],controls:["controls"]}},b:Me,base:{attrs:{href:null,target:Qu}},bdi:Me,bdo:Me,blockquote:{attrs:{cite:null}},body:Me,br:Me,button:{attrs:{form:null,formaction:null,name:null,value:null,autofocus:["autofocus"],disabled:["autofocus"],formenctype:oy,formmethod:sy,formnovalidate:["novalidate"],formtarget:Qu,type:["submit","reset","button"]}},canvas:{attrs:{width:null,height:null}},caption:Me,center:Me,cite:Me,code:Me,col:{attrs:{span:null}},colgroup:{attrs:{span:null}},command:{attrs:{type:["command","checkbox","radio"],label:null,icon:null,radiogroup:null,command:null,title:null,disabled:["disabled"],checked:["checked"]}},data:{attrs:{value:null}},datagrid:{attrs:{disabled:["disabled"],multiple:["multiple"]}},datalist:{attrs:{data:null}},dd:Me,del:{attrs:{cite:null,datetime:null}},details:{attrs:{open:["open"]}},dfn:Me,div:Me,dl:Me,dt:Me,em:Me,embed:{attrs:{src:null,type:null,width:null,height:null}},eventsource:{attrs:{src:null}},fieldset:{attrs:{disabled:["disabled"],form:null,name:null}},figcaption:Me,figure:Me,footer:Me,form:{attrs:{action:null,name:null,"accept-charset":ry,autocomplete:["on","off"],enctype:oy,method:sy,novalidate:["novalidate"],target:Qu}},h1:Me,h2:Me,h3:Me,h4:Me,h5:Me,h6:Me,head:{children:["title","base","link","style","meta","script","noscript","command"]},header:Me,hgroup:Me,hr:Me,html:{attrs:{manifest:null}},i:Me,iframe:{attrs:{src:null,srcdoc:null,name:null,width:null,height:null,sandbox:["allow-top-navigation","allow-same-origin","allow-forms","allow-scripts"],seamless:["seamless"]}},img:{attrs:{alt:null,src:null,ismap:null,usemap:null,width:null,height:null,crossorigin:["anonymous","use-credentials"]}},input:{attrs:{alt:null,dirname:null,form:null,formaction:null,height:null,list:null,max:null,maxlength:null,min:null,name:null,pattern:null,placeholder:null,size:null,src:null,step:null,value:null,width:null,accept:["audio/*","video/*","image/*"],autocomplete:["on","off"],autofocus:["autofocus"],checked:["checked"],disabled:["disabled"],formenctype:oy,formmethod:sy,formnovalidate:["novalidate"],formtarget:Qu,multiple:["multiple"],readonly:["readonly"],required:["required"],type:["hidden","text","search","tel","url","email","password","datetime","date","month","week","time","datetime-local","number","range","color","checkbox","radio","file","submit","image","reset","button"]}},ins:{attrs:{cite:null,datetime:null}},kbd:Me,keygen:{attrs:{challenge:null,form:null,name:null,autofocus:["autofocus"],disabled:["disabled"],keytype:["RSA"]}},label:{attrs:{for:null,form:null}},legend:Me,li:{attrs:{value:null}},link:{attrs:{href:null,type:null,hreflang:null,media:null,sizes:["all","16x16","16x16 32x32","16x16 32x32 64x64"]}},map:{attrs:{name:null}},mark:Me,menu:{attrs:{label:null,type:["list","context","toolbar"]}},meta:{attrs:{content:null,charset:ry,name:["viewport","application-name","author","description","generator","keywords"],"http-equiv":["content-language","content-type","default-style","refresh"]}},meter:{attrs:{value:null,min:null,low:null,high:null,max:null,optimum:null}},nav:Me,noscript:Me,object:{attrs:{data:null,type:null,name:null,usemap:null,form:null,width:null,height:null,typemustmatch:["typemustmatch"]}},ol:{attrs:{reversed:["reversed"],start:null,type:["1","a","A","i","I"]},children:["li","script","template","ul","ol"]},optgroup:{attrs:{disabled:["disabled"],label:null}},option:{attrs:{disabled:["disabled"],label:null,selected:["selected"],value:null}},output:{attrs:{for:null,form:null,name:null}},p:Me,param:{attrs:{name:null,value:null}},pre:Me,progress:{attrs:{value:null,max:null}},q:{attrs:{cite:null}},rp:Me,rt:Me,ruby:Me,samp:Me,script:{attrs:{type:["text/javascript"],src:null,async:["async"],defer:["defer"],charset:ry}},section:Me,select:{attrs:{form:null,name:null,size:null,autofocus:["autofocus"],disabled:["disabled"],multiple:["multiple"]}},slot:{attrs:{name:null}},small:Me,source:{attrs:{src:null,type:null,media:null}},span:Me,strong:Me,style:{attrs:{type:["text/css"],media:null,scoped:null}},sub:Me,summary:Me,sup:Me,table:Me,tbody:Me,td:{attrs:{colspan:null,rowspan:null,headers:null}},template:Me,textarea:{attrs:{dirname:null,form:null,maxlength:null,name:null,placeholder:null,rows:null,cols:null,autofocus:["autofocus"],disabled:["disabled"],readonly:["readonly"],required:["required"],wrap:["soft","hard"]}},tfoot:Me,th:{attrs:{colspan:null,rowspan:null,headers:null,scope:["row","col","rowgroup","colgroup"]}},thead:Me,time:{attrs:{datetime:null}},title:Me,tr:Me,track:{attrs:{src:null,label:null,default:null,kind:["subtitles","captions","descriptions","chapters","metadata"],srclang:null}},ul:{children:["li","script","template","ul","ol"]},var:Me,video:{attrs:{src:null,poster:null,width:null,height:null,crossorigin:["anonymous","use-credentials"],preload:["auto","metadata","none"],autoplay:["autoplay"],mediagroup:["movie"],muted:["muted"],controls:["controls"]}},wbr:Me},s6={accesskey:null,class:null,contenteditable:Gn,contextmenu:null,dir:["ltr","rtl","auto"],draggable:["true","false","auto"],dropzone:["copy","move","link","string:","file:"],hidden:["hidden"],id:null,inert:["inert"],itemid:null,itemprop:null,itemref:null,itemscope:["itemscope"],itemtype:null,lang:["ar","bn","de","en-GB","en-US","es","fr","hi","id","ja","pa","pt","ru","tr","zh"],spellcheck:Gn,autocorrect:Gn,autocapitalize:Gn,style:null,tabindex:null,title:null,translate:["yes","no"],rel:["stylesheet","alternate","author","bookmark","help","license","next","nofollow","noreferrer","prefetch","prev","search","tag"],role:"alert application article banner button cell checkbox complementary contentinfo dialog document feed figure form grid gridcell heading img list listbox listitem main navigation region row rowgroup search switch tab table tabpanel textbox timer".split(" "),"aria-activedescendant":null,"aria-atomic":Gn,"aria-autocomplete":["inline","list","both","none"],"aria-busy":Gn,"aria-checked":["true","false","mixed","undefined"],"aria-controls":null,"aria-describedby":null,"aria-disabled":Gn,"aria-dropeffect":null,"aria-expanded":["true","false","undefined"],"aria-flowto":null,"aria-grabbed":["true","false","undefined"],"aria-haspopup":Gn,"aria-hidden":Gn,"aria-invalid":["true","false","grammar","spelling"],"aria-label":null,"aria-labelledby":null,"aria-level":null,"aria-live":["off","polite","assertive"],"aria-multiline":Gn,"aria-multiselectable":Gn,"aria-owns":null,"aria-posinset":null,"aria-pressed":["true","false","mixed","undefined"],"aria-readonly":Gn,"aria-relevant":null,"aria-required":Gn,"aria-selected":["true","false","undefined"],"aria-setsize":null,"aria-sort":["ascending","descending","none","other"],"aria-valuemax":null,"aria-valuemin":null,"aria-valuenow":null,"aria-valuetext":null},o6="beforeunload copy cut dragstart dragover dragleave dragenter dragend drag paste focus blur change click load mousedown mouseenter mouseleave mouseup keydown keyup resize scroll unload".split(" ").map(t=>"on"+t);for(let t of o6)s6[t]=null;let Jf=class{constructor(e,i){this.tags={...yte,...e},this.globalAttrs={...s6,...i},this.allTags=Object.keys(this.tags),this.globalAttrNames=Object.keys(this.globalAttrs)}};Jf.default=new Jf;function dh(t,e,i=t.length){if(!e)return"";let n=e.firstChild,r=n&&n.getChild("TagName");return r?t.sliceString(r.from,Math.min(r.to,i)):""}function ph(t,e=!1){for(;t;t=t.parent)if(t.name=="Element")if(e)e=!1;else return t;return null}function a6(t,e,i){let n=i.tags[dh(t,ph(e))];return(n==null?void 0:n.children)||i.allTags}function Cw(t,e){let i=[];for(let n=ph(e);n&&!n.type.isTop;n=ph(n.parent)){let r=dh(t,n);if(r&&n.lastChild.name=="CloseTag")break;r&&i.indexOf(r)<0&&(e.name=="EndTag"||e.from>=n.firstChild.to)&&i.push(r)}return i}const l6=/^[:\-\.\w\u00b7-\uffff]*$/;function lP(t,e,i,n,r){let s=/\s*>/.test(t.sliceDoc(r,r+5))?"":">",o=ph(i,i.name=="StartTag"||i.name=="TagName");return{from:n,to:r,options:a6(t.doc,o,e).map(l=>({label:l,type:"type"})).concat(Cw(t.doc,i).map((l,c)=>({label:"/"+l,apply:"/"+l+s,type:"type",boost:99-c}))),validFor:/^\/?[:\-\.\w\u00b7-\uffff]*$/}}function cP(t,e,i,n){let r=/\s*>/.test(t.sliceDoc(n,n+5))?"":">";return{from:i,to:n,options:Cw(t.doc,e).map((s,o)=>({label:s,apply:s+r,type:"type",boost:99-o})),validFor:l6}}function bte(t,e,i,n){let r=[],s=0;for(let o of a6(t.doc,i,e))r.push({label:"<"+o,type:"type"});for(let o of Cw(t.doc,i))r.push({label:"",type:"type",boost:99-s++});return{from:n,to:n,options:r,validFor:/^<\/?[:\-\.\w\u00b7-\uffff]*$/}}function Ste(t,e,i,n,r){let s=ph(i),o=s?e.tags[dh(t.doc,s)]:null,l=o&&o.attrs?Object.keys(o.attrs):[],c=o&&o.globalAttrs===!1?l:l.length?l.concat(e.globalAttrNames):e.globalAttrNames;return{from:n,to:r,options:c.map(u=>({label:u,type:"property"})),validFor:l6}}function xte(t,e,i,n,r){var s;let o=(s=i.parent)===null||s===void 0?void 0:s.getChild("AttributeName"),l=[],c;if(o){let u=t.sliceDoc(o.from,o.to),d=e.globalAttrs[u];if(!d){let p=ph(i),g=p?e.tags[dh(t.doc,p)]:null;d=(g==null?void 0:g.attrs)&&g.attrs[u]}if(d){let p=t.sliceDoc(n,r).toLowerCase(),g='"',O='"';/^['"]/.test(p)?(c=p[0]=='"'?/^[^"]*$/:/^[^']*$/,g="",O=t.sliceDoc(r,r+1)==p[0]?"":p[0],p=p.slice(1),n++):c=/^[^\s<>='"]*$/;for(let _ of d)l.push({label:_,apply:g+_+O,type:"constant"})}}return{from:n,to:r,options:l,validFor:c}}function c6(t,e){let{state:i,pos:n}=e,r=xt(i).resolveInner(n,-1),s=r.resolve(n);for(let o=n,l;s==r&&(l=r.childBefore(o));){let c=l.lastChild;if(!c||!c.type.isError||c.fromc6(n,r)}const kte=ks.parser.configure({top:"SingleExpression"}),h6=[{tag:"script",attrs:t=>t.type=="text/typescript"||t.lang=="ts",parser:e6.parser},{tag:"script",attrs:t=>t.type=="text/babel"||t.type=="text/jsx",parser:t6.parser},{tag:"script",attrs:t=>t.type=="text/typescript-jsx",parser:i6.parser},{tag:"script",attrs(t){return/^(importmap|speculationrules|application\/(.+\+)?json)$/i.test(t.type)},parser:kte},{tag:"script",attrs(t){return!t.type||/^(?:text|application)\/(?:x-)?(?:java|ecma)script$|^module$|^$/i.test(t.type)},parser:ks.parser},{tag:"style",attrs(t){return(!t.lang||t.lang=="css")&&(!t.type||/^(text\/)?(x-)?(stylesheet|css)$/i.test(t.type))},parser:Fg.parser}],u6=[{name:"style",parser:Fg.parser.configure({top:"Styles"})}].concat(o6.map(t=>({name:t,parser:ks.parser}))),f6=lh.define({name:"html",parser:GJ.configure({props:[md.add({Element(t){let e=/^(\s*)(<\/)?/.exec(t.textAfter);return t.node.to<=t.pos+e[0].length?t.continue():t.lineIndent(t.node.from)+(e[2]?0:t.unit)},"OpenTag CloseTag SelfClosingTag"(t){return t.column(t.node.from)+t.unit},Document(t){if(t.pos+/\s*/.exec(t.textAfter)[0].lengtht.getChild("TagName")})]}),languageData:{commentTokens:{block:{open:""}},indentOnInput:/^\s*<\/\w+\W$/,wordChars:"-_"}}),Km=f6.configure({wrap:V4(h6,u6)});function Tte(t={}){let e="",i;t.matchClosingTags===!1&&(e="noMatch"),t.selfClosingTags===!0&&(e=(e?e+" ":"")+"selfClosing"),(t.nestedLanguages&&t.nestedLanguages.length||t.nestedAttributes&&t.nestedAttributes.length)&&(i=V4((t.nestedLanguages||[]).concat(h6),(t.nestedAttributes||[]).concat(u6)));let n=i?f6.configure({wrap:i,dialect:e}):e?Km.configure({dialect:e}):Km;return new Vf(n,[Km.data.of({autocomplete:Cte(t)}),t.autoCloseTags!==!1?Ate:[],gte().support,Qee().support])}const hP=new Set("area base br col command embed frame hr img input keygen link meta param source track wbr menuitem".split(" ")),Ate=ve.inputHandler.of((t,e,i,n,r)=>{if(t.composing||t.state.readOnly||e!=i||n!=">"&&n!="/"||!Km.isActiveAt(t.state,e,-1))return!1;let s=r(),{state:o}=s,l=o.changeByRange(c=>{var u,d,p;let g=o.doc.sliceString(c.from-1,c.to)==n,{head:O}=c,_=xt(o).resolveInner(O,-1),b;if(g&&n==">"&&_.name=="EndTag"){let x=_.parent;if(((d=(u=x.parent)===null||u===void 0?void 0:u.lastChild)===null||d===void 0?void 0:d.name)!="CloseTag"&&(b=dh(o.doc,x.parent,O))&&!hP.has(b)){let w=O+(o.doc.sliceString(O,O+1)===">"?1:0),k=``;return{range:c,changes:{from:O,to:w,insert:k}}}}else if(g&&n=="/"&&_.name=="IncompleteCloseTag"){let x=_.parent;if(_.from==O-2&&((p=x.lastChild)===null||p===void 0?void 0:p.name)!="CloseTag"&&(b=dh(o.doc,x,O))&&!hP.has(b)){let w=O+(o.doc.sliceString(O,O+1)===">"?1:0),k=`${b}>`;return{range:se.cursor(O+k.length,-1),changes:{from:O,to:w,insert:k}}}}return{range:c}});return l.changes.empty?!1:(t.dispatch([s,o.update(l,{userEvent:"input.complete",scrollIntoView:!0})]),!0)}),d6=Gx({commentTokens:{block:{open:""}}}),p6=new Ne,m6=qK.configure({props:[bh.add(t=>!t.is("Block")||t.is("Document")||qb(t)!=null||Ete(t)?void 0:(e,i)=>({from:i.doc.lineAt(e.from).to,to:e.to})),p6.add(qb),md.add({Document:()=>null}),Ol.add({Document:d6})]});function qb(t){let e=/^(?:ATX|Setext)Heading(\d)$/.exec(t.name);return e?+e[1]:void 0}function Ete(t){return t.name=="OrderedList"||t.name=="BulletList"}function Mte(t,e){let i=t;for(;;){let n=i.nextSibling,r;if(!n||(r=qb(n.type))!=null&&r<=e)break;i=n}return i.to}const Pte=XB.of((t,e,i)=>{for(let n=xt(t).resolveInner(i,-1);n&&!(n.fromi)return{from:i,to:s}}return null});function kw(t){return new Ar(d6,t,[],"markdown")}const Rte=kw(m6),Qte=m6.configure([iJ,rJ,nJ,sJ,{props:[bh.add({Table:(t,e)=>({from:e.doc.lineAt(t.from).to,to:t.to})})]}]),ed=kw(Qte);function Lte(t,e){return i=>{if(i&&t){let n=null;if(i=/\S*/.exec(i)[0],typeof t=="function"?n=t(i):n=Rg.matchLanguageName(t,i,!0),n instanceof Rg)return n.support?n.support.language.parser:If.getSkippingParser(n.load());if(n)return n.parser}return e?e.parser:null}}class ay{constructor(e,i,n,r,s,o,l){this.node=e,this.from=i,this.to=n,this.spaceBefore=r,this.spaceAfter=s,this.type=o,this.item=l}blank(e,i=!0){let n=this.spaceBefore+(this.node.name=="Blockquote"?">":"");if(e!=null){for(;n.length0;r--)n+=" ";return n+(i?this.spaceAfter:"")}}marker(e,i){let n=this.node.name=="OrderedList"?String(+O6(this.item,e)[2]+i):"";return this.spaceBefore+n+this.type+this.spaceAfter}}function g6(t,e){let i=[],n=[];for(let r=t;r;r=r.parent){if(r.name=="FencedCode")return n;(r.name=="ListItem"||r.name=="Blockquote")&&i.push(r)}for(let r=i.length-1;r>=0;r--){let s=i[r],o,l=e.lineAt(s.from),c=s.from-l.from;if(s.name=="Blockquote"&&(o=/^ *>( ?)/.exec(l.text.slice(c))))n.push(new ay(s,c,c+o[0].length,"",o[1],">",null));else if(s.name=="ListItem"&&s.parent.name=="OrderedList"&&(o=/^( *)\d+([.)])( *)/.exec(l.text.slice(c)))){let u=o[3],d=o[0].length;u.length>=4&&(u=u.slice(0,u.length-4),d-=4),n.push(new ay(s.parent,c,c+d,o[1],u,o[2],s))}else if(s.name=="ListItem"&&s.parent.name=="BulletList"&&(o=/^( *)([-+*])( {1,4}\[[ xX]\])?( +)/.exec(l.text.slice(c)))){let u=o[4],d=o[0].length;u.length>4&&(u=u.slice(0,u.length-4),d-=4);let p=o[2];o[3]&&(p+=o[3].replace(/[xX]/," ")),n.push(new ay(s.parent,c,c+d,o[1],u,p,s))}}return n}function O6(t,e){return/^(\s*)(\d+)(?=[.)])/.exec(e.sliceString(t.from,t.from+10))}function ly(t,e,i,n=0){for(let r=-1,s=t;;){if(s.name=="ListItem"){let l=O6(s,e),c=+l[2];if(r>=0){if(c!=r+1)return;i.push({from:s.from+l[1].length,to:s.from+l[0].length,insert:String(r+2+n)})}r=c}let o=s.nextSibling;if(!o)break;s=o}}function Tw(t,e){let i=/^[ \t]*/.exec(t)[0].length;if(!i||e.facet(yh)!=" ")return t;let n=Yr(t,4,i),r="";for(let s=n;s>0;)s>=4?(r+=" ",s-=4):(r+=" ",s--);return r+t.slice(i)}const Dte=(t={})=>({state:e,dispatch:i})=>{let n=xt(e),{doc:r}=e,s=null,o=e.changeByRange(l=>{if(!l.empty||!ed.isActiveAt(e,l.from,-1)&&!ed.isActiveAt(e,l.from,1))return s={range:l};let c=l.from,u=r.lineAt(c),d=g6(n.resolveInner(c,-1),r);for(;d.length&&d[d.length-1].from>c-u.from;)d.pop();if(!d.length)return s={range:l};let p=d[d.length-1];if(p.to-p.spaceAfter.length>c-u.from)return s={range:l};let g=c>=p.to-p.spaceAfter.length&&!/\S/.test(u.text.slice(p.to));if(p.item&&g){let w=p.node.firstChild,k=p.node.getChild("ListItem","ListItem");if(w.to>=c||k&&k.to0&&!/[^\s>]/.test(r.lineAt(u.from-1).text)||t.nonTightLists===!1){let T=d.length>1?d[d.length-2]:null,A,Q="";T&&T.item?(A=u.from+T.from,Q=T.marker(r,1)):A=u.from+(T?T.to:0);let E=[{from:A,to:c,insert:Q}];return p.node.name=="OrderedList"&&ly(p.item,r,E,-2),T&&T.node.name=="OrderedList"&&ly(T.item,r,E),{range:se.cursor(A+Q.length),changes:E}}else{let T=fP(d,e,u);return{range:se.cursor(c+T.length+1),changes:{from:u.from,insert:T+e.lineBreak}}}}if(p.node.name=="Blockquote"&&g&&u.from){let w=r.lineAt(u.from-1),k=/>\s*$/.exec(w.text);if(k&&k.index==p.from){let T=e.changes([{from:w.from+k.index,to:w.to},{from:u.from+p.from,to:u.to}]);return{range:l.map(T),changes:T}}}let O=[];p.node.name=="OrderedList"&&ly(p.item,r,O);let _=p.item&&p.item.from]*/.exec(u.text)[0].length>=p.to)for(let w=0,k=d.length-1;w<=k;w++)b+=w==k&&!_?d[w].marker(r,1):d[w].blank(wu.from&&/\s/.test(u.text.charAt(x-u.from-1));)x--;return b=Tw(b,e),$te(p.node,e.doc)&&(b=fP(d,e,u)+e.lineBreak+b),O.push({from:x,to:c,insert:e.lineBreak+b}),{range:se.cursor(x+b.length+1),changes:O}});return s?!1:(i(e.update(o,{scrollIntoView:!0,userEvent:"input"})),!0)},Bte=Dte();function uP(t){return t.name=="QuoteMark"||t.name=="ListMark"}function $te(t,e){if(t.name!="OrderedList"&&t.name!="BulletList")return!1;let i=t.firstChild,n=t.getChild("ListItem","ListItem");if(!n)return!1;let r=e.lineAt(i.to),s=e.lineAt(n.from),o=/^[\s>]*$/.test(r.text);return r.number+(o?0:1){let i=xt(t),n=null,r=t.changeByRange(s=>{let o=s.from,{doc:l}=t;if(s.empty&&ed.isActiveAt(t,s.from)){let c=l.lineAt(o),u=g6(zte(i,o),l);if(u.length){let d=u[u.length-1],p=d.to-d.spaceAfter.length+(d.spaceAfter?1:0);if(o-c.from>p&&!/\S/.test(c.text.slice(p,o-c.from)))return{range:se.cursor(c.from+p),changes:{from:c.from+p,to:o}};if(o-c.from==p&&(!d.item||c.from<=d.item.from||!/\S/.test(c.text.slice(0,d.to)))){let g=c.from+d.from;if(d.item&&d.node.from{var i;let{main:n}=e.state.selection;if(n.empty)return!1;let r=(i=t.clipboardData)===null||i===void 0?void 0:i.getData("text/plain");if(!r||!/^(https?:\/\/|mailto:|xmpp:|www\.)/.test(r)||(/^www\./.test(r)&&(r="https://"+r),!ed.isActiveAt(e.state,n.from,1)))return!1;let s=xt(e.state),o=!1;return s.iterate({from:n.from,to:n.to,enter:l=>{(l.from>n.from||Zte.test(l.name))&&(o=!0)},leave:l=>{l.to{d.current=r},[r]);const p=Z.useCallback(b=>{s(b),u(b!==t)},[t]),g=Z.useCallback(async()=>{if(!o){l(!0);try{await i(d.current),u(!1)}catch(b){console.error("[plan-editor] Save failed:",b)}finally{l(!1)}}},[i,o]),O=Z.useCallback(()=>{c&&!window.confirm("Unsaved changes -- discard?")||n()},[c,n]),_=Ll.of([{key:"Mod-s",run:()=>(g(),!0)}]);return Z.useEffect(()=>{const b=x=>{(x.ctrlKey||x.metaKey)&&x.key==="s"&&x.preventDefault()};return document.addEventListener("keydown",b),()=>document.removeEventListener("keydown",b)},[]),S.jsxs("div",{className:"fixed inset-0 z-50 bg-background/95 flex flex-col",children:[S.jsxs("div",{className:"flex items-center justify-between px-4 py-3 border-b border-border bg-card",children:[S.jsxs("div",{className:"flex items-center gap-3",children:[S.jsx("span",{className:"text-sm font-mono text-muted-foreground",children:e}),c&&S.jsx("span",{className:"text-xs px-1.5 py-0.5 rounded-sm bg-warning/20 text-warning font-mono",children:"unsaved"})]}),S.jsxs("div",{className:"flex items-center gap-2",children:[c&&S.jsx("button",{type:"button",onClick:g,disabled:o,className:Fe("text-xs px-3 py-1.5 rounded-md font-mono","bg-accent text-foreground","hover:bg-accent-glow","disabled:opacity-50 disabled:cursor-not-allowed","transition-colors focus:outline-none focus:ring-2 focus:ring-accent/50"),children:o?"Saving...":"Save"}),S.jsx("button",{type:"button",onClick:O,className:Fe("text-xs px-3 py-1.5 rounded-md font-mono","bg-muted text-muted-foreground","hover:bg-danger/20 hover:text-danger","transition-colors focus:outline-none focus:ring-2 focus:ring-accent/50"),children:"Close"})]})]}),S.jsx("div",{className:"flex-1 overflow-auto",children:S.jsx(l4,{value:r,onChange:p,theme:a4,extensions:[Ite({base:ed}),_],height:"calc(100vh - 56px)",basicSetup:{lineNumbers:!0,foldGutter:!0,highlightActiveLine:!0,bracketMatching:!0,indentOnInput:!0}})})]})}function Ute({phaseId:t,onBack:e}){const{plans:i,context:n,research:r,loading:s,error:o,refetch:l}=UZ(t),[c,u]=Z.useState(null),[d,p]=Z.useState(""),g=i.length>0?i[0].frontmatter.phase??t:t,O=Z.useCallback(async x=>{try{const k=x.replace(/^\.planning[\\/]/,"").split(/[\\/]/),T=await fetch(`/api/plan/${k.join("/")}`);if(!T.ok)return;const A=await T.json();p(A.content),u(x)}catch(w){console.error("[phase-detail]",w)}},[]),_=Z.useCallback(async x=>{if(!c)return;const k=c.replace(/^\.planning[\\/]/,"").split(/[\\/]/);if(!(await fetch(`/api/plan/${k.join("/")}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({content:x})})).ok)throw new Error("Failed to save plan")},[c]),b=Z.useCallback(()=>{u(null),p(""),l()},[l]);return S.jsxs("div",{className:"space-y-6",children:[S.jsxs("button",{type:"button",onClick:e,className:Fe("flex items-center gap-2 font-mono text-[10px] uppercase tracking-widest text-muted-foreground","hover:text-foreground transition-colors"),children:[S.jsx("svg",{className:"w-3 h-3",viewBox:"0 0 16 16",fill:"none",stroke:"currentColor",strokeWidth:"2",children:S.jsx("path",{d:"M10 3L5 8l5 5"})}),"Overview"]}),S.jsxs("div",{className:"border-b border-border pb-4",children:[S.jsxs("div",{className:"flex items-baseline gap-3 mb-2",children:[S.jsxs("span",{className:"font-mono text-xs font-bold text-accent uppercase tracking-widest",children:["Phase ",t]}),S.jsx("h2",{className:"text-lg font-semibold tracking-tight text-foreground",children:g})]}),S.jsxs("div",{className:"flex gap-2",children:[n&&S.jsx("span",{className:"font-mono text-[9px] uppercase tracking-widest px-2 py-0.5 border border-success/30 text-success",children:"Context"}),r&&S.jsx("span",{className:"font-mono text-[9px] uppercase tracking-widest px-2 py-0.5 border border-success/30 text-success",children:"Research"}),!n&&!r&&!s&&S.jsx("span",{className:"font-mono text-[9px] uppercase tracking-widest px-2 py-0.5 border border-border text-muted-foreground",children:"No context"})]})]}),o&&S.jsx("div",{className:"border border-danger/30 p-4 text-danger text-sm font-mono text-xs",children:o}),s&&i.length===0&&S.jsx("div",{className:"space-y-3",children:[1,2,3].map(x=>S.jsxs("div",{className:"border border-border p-4 animate-pulse",children:[S.jsx("div",{className:"h-4 w-24 bg-muted mb-3"}),S.jsx("div",{className:"h-3 w-3/4 bg-muted mb-2"}),S.jsx("div",{className:"h-3 w-1/2 bg-muted"})]},x))}),!s&&!o&&i.length===0&&S.jsx("div",{className:"border border-border p-8 text-center",children:S.jsxs("p",{className:"font-mono text-xs text-muted-foreground",children:["No plans yet — run"," ",S.jsx("code",{className:"text-accent",children:"/maxsim:plan-phase"})]})}),i.length>0&&S.jsx("div",{className:"space-y-3",children:i.map(x=>S.jsx(HZ,{plan:x,onEdit:O},x.path))}),c&&S.jsx(Wte,{initialContent:d,filePath:c,onSave:_,onClose:b})]})}function Yte(){const{lastChange:t}=Ea(),[e,i]=Z.useState([]),[n,r]=Z.useState([]),[s,o]=Z.useState(!0),[l,c]=Z.useState(null),[u,d]=Z.useState(""),[p,g]=Z.useState(!1),[O,_]=Z.useState(!1),b=Z.useCallback(async()=>{try{c(null);const k=await fetch("/api/todos");if(!k.ok)throw new Error(`Failed to fetch todos: ${k.status}`);const T=await k.json();i(T.pending),r(T.completed)}catch(k){c(k instanceof Error?k.message:"Failed to fetch todos")}finally{o(!1)}},[]);Z.useEffect(()=>{b()},[b]),Z.useEffect(()=>{t>0&&b()},[t,b]);const x=Z.useCallback(async()=>{const k=u.trim();if(k){g(!0);try{if(!(await fetch("/api/todos",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({text:k})})).ok)throw new Error("Failed to create todo");d(""),await b()}catch(T){c(T instanceof Error?T.message:"Failed to create todo")}finally{g(!1)}}},[u,b]),w=Z.useCallback(async(k,T)=>{try{if(!(await fetch("/api/todos",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({file:k,completed:T})})).ok)throw new Error("Failed to update todo");await b()}catch(A){c(A instanceof Error?A.message:"Failed to update todo")}},[b]);return S.jsxs("div",{className:"space-y-6",children:[S.jsxs("div",{className:"flex items-center justify-between",children:[S.jsx("h2",{className:"font-mono text-xs uppercase tracking-widest text-foreground",children:"Todos"}),S.jsxs("span",{className:"font-mono text-xs text-muted-foreground",children:[e.length," pending"]})]}),S.jsxs("div",{className:"flex gap-2",children:[S.jsx("input",{type:"text",value:u,onChange:k=>d(k.target.value),onKeyDown:k=>{k.key==="Enter"&&!p&&x()},placeholder:"Add a new todo...",className:"flex-1 border border-border bg-card px-3 py-2 font-mono text-xs text-foreground placeholder:text-muted-foreground focus:border-accent focus:outline-none"}),S.jsx("button",{type:"button",onClick:x,disabled:p||!u.trim(),className:Fe("bg-accent px-4 py-2 font-mono text-[10px] uppercase tracking-widest text-foreground transition-colors","hover:opacity-80 disabled:opacity-30 disabled:cursor-not-allowed"),children:"Add"})]}),l&&S.jsx("div",{className:"border border-danger/30 px-3 py-2 font-mono text-xs text-danger",children:l}),s&&S.jsx("div",{className:"space-y-px",children:[1,2,3].map(k=>S.jsxs("div",{className:"flex items-center gap-3 bg-card px-4 py-3",children:[S.jsx("div",{className:"h-3 w-3 animate-pulse bg-muted"}),S.jsx("div",{className:"h-3 w-48 animate-pulse bg-muted"})]},k))}),!s&&S.jsx("div",{className:"space-y-1",children:e.length===0?S.jsx("p",{className:"px-4 py-6 text-center text-sm text-muted-foreground",children:"No pending todos"}):e.map(k=>S.jsxs("button",{type:"button",onClick:()=>w(k.file,!0),className:"group flex w-full items-center gap-3 px-4 py-2.5 text-left transition-colors hover:bg-card-hover border-b border-border",children:[S.jsx("span",{className:"inline-flex h-3 w-3 shrink-0 items-center justify-center border border-muted-foreground transition-colors group-hover:border-accent"}),S.jsx("span",{className:"text-sm text-foreground",children:k.text})]},k.file))}),!s&&n.length>0&&S.jsxs("div",{className:"border-t border-border pt-4",children:[S.jsxs("button",{type:"button",onClick:()=>_(!O),className:"flex w-full items-center gap-2 text-left",children:[S.jsx("svg",{className:Fe("h-3 w-3 text-muted-foreground transition-transform",O&&"rotate-90"),viewBox:"0 0 12 12",fill:"currentColor",children:S.jsx("path",{d:"M4 2l5 4-5 4z"})}),S.jsxs("span",{className:"font-mono text-xs text-muted-foreground",children:["Completed (",n.length,")"]})]}),O&&S.jsx("div",{className:"mt-2 space-y-1",children:n.map(k=>S.jsxs("button",{type:"button",onClick:()=>w(k.file,!1),className:"group flex w-full items-center gap-3 rounded-sm px-4 py-2 text-left transition-colors hover:bg-card-hover",children:[S.jsx("span",{className:"inline-flex h-4 w-4 shrink-0 items-center justify-center rounded-sm border border-success bg-success/20",children:S.jsx("svg",{className:"h-3 w-3 text-success",viewBox:"0 0 12 12",fill:"none",stroke:"currentColor",strokeWidth:"2",children:S.jsx("path",{d:"M2 6l3 3 5-5"})})}),S.jsx("span",{className:"text-sm text-muted-foreground line-through",children:k.text})]},k.file))})]})]})}function Hte({onEntryAdded:t}){const[e,i]=Z.useState(!1),[n,r]=Z.useState("decision"),[s,o]=Z.useState(""),[l,c]=Z.useState(""),[u,d]=Z.useState(!1),[p,g]=Z.useState(null),[O,_]=Z.useState(null),b=Z.useCallback(async()=>{const x=l.trim();if(x){d(!0),g(null),_(null);try{if(n==="decision"){const w=await fetch("/api/state/decision",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({phase:s.trim()||void 0,text:x})});if(!w.ok){const k=await w.json().catch(()=>({}));throw new Error(k.error||"Could not add decision")}_("Decision added")}else{const w=await fetch("/api/state/blocker",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({text:x})});if(!w.ok){const k=await w.json().catch(()=>({}));throw new Error(k.error||"Could not add blocker")}_("Blocker added")}c(""),o(""),t==null||t(),setTimeout(()=>_(null),2e3)}catch(w){g(w instanceof Error?w.message:"Failed to update STATE.md")}finally{d(!1)}}},[n,s,l,t]);return S.jsxs("div",{className:"border-t border-border pt-4",children:[S.jsxs("button",{type:"button",onClick:()=>i(!e),className:"flex w-full items-center gap-2 text-left",children:[S.jsx("svg",{className:Fe("h-3 w-3 text-muted-foreground transition-transform",e&&"rotate-90"),viewBox:"0 0 12 12",fill:"currentColor",children:S.jsx("path",{d:"M4 2l5 4-5 4z"})}),S.jsx("span",{className:"font-mono text-xs uppercase tracking-wide text-muted-foreground",children:"Add to STATE.md"})]}),e&&S.jsxs("div",{className:"mt-3 space-y-3",children:[S.jsxs("div",{className:"flex gap-1",children:[S.jsx("button",{type:"button",onClick:()=>r("decision"),className:Fe("rounded-sm px-3 py-1 font-mono text-xs transition-colors",n==="decision"?"bg-accent/20 text-accent":"text-muted-foreground hover:text-foreground"),children:"Decision"}),S.jsx("button",{type:"button",onClick:()=>r("blocker"),className:Fe("rounded-sm px-3 py-1 font-mono text-xs transition-colors",n==="blocker"?"bg-danger/20 text-danger":"text-muted-foreground hover:text-foreground"),children:"Blocker"})]}),n==="decision"&&S.jsx("input",{type:"text",value:s,onChange:x=>o(x.target.value),placeholder:"Phase (e.g. 13-06)",className:"w-full rounded-sm border border-border bg-card px-3 py-1.5 font-mono text-xs text-foreground placeholder:text-muted-foreground focus:border-accent focus:outline-none"}),S.jsx("input",{type:"text",value:l,onChange:x=>c(x.target.value),onKeyDown:x=>{x.key==="Enter"&&!u&&b()},placeholder:n==="decision"?"Decision text...":"Blocker description...",className:"w-full rounded-sm border border-border bg-card px-3 py-1.5 font-mono text-xs text-foreground placeholder:text-muted-foreground focus:border-accent focus:outline-none"}),S.jsx("button",{type:"button",onClick:b,disabled:u||!l.trim(),className:Fe("rounded-sm px-3 py-1.5 font-mono text-xs font-semibold transition-colors","disabled:opacity-40 disabled:cursor-not-allowed",n==="decision"?"bg-accent/20 text-accent hover:bg-accent/30":"bg-danger/20 text-danger hover:bg-danger/30"),children:u?"Saving...":`Add ${n==="decision"?"Decision":"Blocker"}`}),p&&S.jsx("p",{className:"text-xs text-danger",children:p}),O&&S.jsx("p",{className:"text-xs text-success",children:O})]})]})}function Fte(t){return t.map(e=>({text:e.replace(/~~(.+)~~/,"$1").replace(/\s*RESOLVED.*$/i,"").trim(),resolved:e.includes("RESOLVED")||e.startsWith("~~")&&e.endsWith("~~")}))}function Gte(){const{state:t}=Rl(),[e,i]=Z.useState(!1),[n,r]=Z.useState(null),[s,o]=Z.useState(null),[l,c]=Z.useState(0),u=Fte((t==null?void 0:t.blockers)??[]),d=u.filter(_=>!_.resolved),p=u.filter(_=>_.resolved),g=Z.useCallback(async _=>{r(_),o(null);try{if(!(await fetch("/api/state",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({field:"blockers",value:`~~${_}~~ RESOLVED`})})).ok)throw new Error("Failed to resolve blocker");c(x=>x+1)}catch(b){o(b instanceof Error?b.message:"Failed to resolve blocker")}finally{r(null)}},[]),O=Z.useCallback(()=>{c(_=>_+1)},[]);return S.jsxs("div",{className:"space-y-6",children:[S.jsxs("div",{className:"flex items-center justify-between",children:[S.jsx("h2",{className:"font-mono text-xs uppercase tracking-widest text-foreground",children:"Blockers"}),S.jsx("span",{className:Fe("font-mono text-xs",d.length>0?"text-danger":"text-success"),children:d.length>0?`${d.length} active`:"No active blockers"})]}),s&&S.jsx("div",{className:"border border-danger/30 px-3 py-2 font-mono text-xs text-danger",children:s}),d.length===0?S.jsx("div",{className:"border border-success/20 px-4 py-6 text-center",children:S.jsx("p",{className:"font-mono text-xs text-success",children:"No active blockers"})}):S.jsx("div",{className:"border border-border divide-y divide-border",children:d.map(_=>S.jsxs("div",{className:"flex items-start gap-3 bg-card px-4 py-3",children:[S.jsx("span",{className:"mt-1.5 inline-block h-1.5 w-1.5 shrink-0 bg-danger"}),S.jsx("div",{className:"flex-1",children:S.jsx("p",{className:"text-sm text-foreground",children:_.text})}),S.jsx("button",{type:"button",onClick:()=>g(_.text),disabled:n===_.text,className:Fe("shrink-0 border border-success/30 px-3 py-1 font-mono text-[10px] uppercase tracking-widest transition-colors","text-success hover:bg-success/10","disabled:opacity-30 disabled:cursor-not-allowed"),children:n===_.text?"...":"Resolve"})]},_.text))}),p.length>0&&S.jsxs("div",{className:"border-t border-border pt-4",children:[S.jsxs("button",{type:"button",onClick:()=>i(!e),className:"flex w-full items-center gap-2 text-left",children:[S.jsx("svg",{className:Fe("h-3 w-3 text-muted-foreground transition-transform",e&&"rotate-90"),viewBox:"0 0 12 12",fill:"currentColor",children:S.jsx("path",{d:"M4 2l5 4-5 4z"})}),S.jsxs("span",{className:"font-mono text-xs text-muted-foreground",children:["Resolved (",p.length,")"]})]}),e&&S.jsx("div",{className:"mt-2 space-y-1",children:p.map(_=>S.jsxs("div",{className:"flex items-center gap-3 rounded-sm px-4 py-2",children:[S.jsx("span",{className:"inline-block h-1.5 w-1.5 shrink-0 bg-muted"}),S.jsx("p",{className:"text-sm text-muted-foreground line-through",children:_.text})]},_.text))})]}),S.jsx(Hte,{onEntryAdded:O})]},l)}function Kte({sidebar:t,children:e,mobileMenuOpen:i=!1,onMobileMenuToggle:n,onMobileMenuClose:r,headerRight:s,simpleMode:o=!1}){return S.jsxs("div",{className:"flex h-screen flex-col overflow-hidden md:flex-row",children:[S.jsxs("div",{className:Fe("flex shrink-0 items-center justify-between border-b bg-card px-4 py-3 md:hidden",o?"border-simple-accent/30 bg-simple-accent/5":"border-border"),children:[S.jsxs("span",{className:"text-sm font-bold tracking-tight text-foreground",children:["MAXSIM",S.jsx("span",{className:"ml-1.5 text-xs font-normal text-muted-foreground",children:"Dashboard"})]}),S.jsxs("div",{className:"flex items-center gap-2",children:[s,S.jsx("button",{type:"button",onClick:n,className:"flex h-8 w-8 items-center justify-center text-muted-foreground transition-colors hover:text-foreground","aria-label":"Toggle menu",children:i?S.jsx("svg",{className:"h-4 w-4",viewBox:"0 0 16 16",fill:"none",stroke:"currentColor",strokeWidth:"2",children:S.jsx("path",{d:"M3 3l10 10M13 3L3 13"})}):S.jsx("svg",{className:"h-4 w-4",viewBox:"0 0 16 16",fill:"none",stroke:"currentColor",strokeWidth:"2",children:S.jsx("path",{d:"M2 4h12M2 8h12M2 12h12"})})})]})]}),i&&S.jsxs("div",{className:"fixed inset-0 z-50 md:hidden",children:[S.jsx("div",{className:"absolute inset-0 bg-black/60",onClick:r}),S.jsx("div",{className:"absolute left-0 top-0 h-full w-64",children:t})]}),S.jsx("div",{className:"hidden shrink-0 md:flex",children:t}),S.jsxs("main",{className:"flex min-h-0 flex-1 flex-col overflow-hidden",children:[o&&S.jsxs("div",{className:"hidden md:flex shrink-0 items-center justify-between border-b border-simple-accent/30 bg-simple-accent/5 px-6 py-3",children:[S.jsxs("span",{className:"text-sm font-bold tracking-tight text-foreground",children:["MAXSIM ",S.jsx("span",{className:"ml-1.5 text-xs font-normal text-muted-foreground",children:"Simple Mode"})]}),s]}),e]})]})}var xc={},hy,dP;function Jte(){return dP||(dP=1,hy=function(){return typeof Promise=="function"&&Promise.prototype&&Promise.prototype.then}),hy}var uy={},ia={},pP;function Dl(){if(pP)return ia;pP=1;let t;const e=[0,26,44,70,100,134,172,196,242,292,346,404,466,532,581,655,733,815,901,991,1085,1156,1258,1364,1474,1588,1706,1828,1921,2051,2185,2323,2465,2611,2761,2876,3034,3196,3362,3532,3706];return ia.getSymbolSize=function(n){if(!n)throw new Error('"version" cannot be null or undefined');if(n<1||n>40)throw new Error('"version" should be in range from 1 to 40');return n*4+17},ia.getSymbolTotalCodewords=function(n){return e[n]},ia.getBCHDigit=function(i){let n=0;for(;i!==0;)n++,i>>>=1;return n},ia.setToSJISFunction=function(n){if(typeof n!="function")throw new Error('"toSJISFunc" is not a valid function.');t=n},ia.isKanjiModeEnabled=function(){return typeof t<"u"},ia.toSJIS=function(n){return t(n)},ia}var fy={},mP;function Aw(){return mP||(mP=1,(function(t){t.L={bit:1},t.M={bit:0},t.Q={bit:3},t.H={bit:2};function e(i){if(typeof i!="string")throw new Error("Param is not a string");switch(i.toLowerCase()){case"l":case"low":return t.L;case"m":case"medium":return t.M;case"q":case"quartile":return t.Q;case"h":case"high":return t.H;default:throw new Error("Unknown EC Level: "+i)}}t.isValid=function(n){return n&&typeof n.bit<"u"&&n.bit>=0&&n.bit<4},t.from=function(n,r){if(t.isValid(n))return n;try{return e(n)}catch{return r}}})(fy)),fy}var dy,gP;function eie(){if(gP)return dy;gP=1;function t(){this.buffer=[],this.length=0}return t.prototype={get:function(e){const i=Math.floor(e/8);return(this.buffer[i]>>>7-e%8&1)===1},put:function(e,i){for(let n=0;n>>i-n-1&1)===1)},getLengthInBits:function(){return this.length},putBit:function(e){const i=Math.floor(this.length/8);this.buffer.length<=i&&this.buffer.push(0),e&&(this.buffer[i]|=128>>>this.length%8),this.length++}},dy=t,dy}var py,OP;function tie(){if(OP)return py;OP=1;function t(e){if(!e||e<1)throw new Error("BitMatrix size must be defined and greater than 0");this.size=e,this.data=new Uint8Array(e*e),this.reservedBit=new Uint8Array(e*e)}return t.prototype.set=function(e,i,n,r){const s=e*this.size+i;this.data[s]=n,r&&(this.reservedBit[s]=!0)},t.prototype.get=function(e,i){return this.data[e*this.size+i]},t.prototype.xor=function(e,i,n){this.data[e*this.size+i]^=n},t.prototype.isReserved=function(e,i){return this.reservedBit[e*this.size+i]},py=t,py}var my={},vP;function iie(){return vP||(vP=1,(function(t){const e=Dl().getSymbolSize;t.getRowColCoords=function(n){if(n===1)return[];const r=Math.floor(n/7)+2,s=e(n),o=s===145?26:Math.ceil((s-13)/(2*r-2))*2,l=[s-7];for(let c=1;c=0&&r<=7},t.from=function(r){return t.isValid(r)?parseInt(r,10):void 0},t.getPenaltyN1=function(r){const s=r.size;let o=0,l=0,c=0,u=null,d=null;for(let p=0;p=5&&(o+=e.N1+(l-5)),u=O,l=1),O=r.get(g,p),O===d?c++:(c>=5&&(o+=e.N1+(c-5)),d=O,c=1)}l>=5&&(o+=e.N1+(l-5)),c>=5&&(o+=e.N1+(c-5))}return o},t.getPenaltyN2=function(r){const s=r.size;let o=0;for(let l=0;l=10&&(l===1488||l===93)&&o++,c=c<<1&2047|r.get(d,u),d>=10&&(c===1488||c===93)&&o++}return o*e.N3},t.getPenaltyN4=function(r){let s=0;const o=r.data.length;for(let c=0;c=0;){const o=s[0];for(let c=0;c0){const l=new Uint8Array(this.degree);return l.set(s,o),l}return s},_y=e,_y}var yy={},by={},Sy={},CP;function y6(){return CP||(CP=1,Sy.isValid=function(e){return!isNaN(e)&&e>=1&&e<=40}),Sy}var as={},kP;function b6(){if(kP)return as;kP=1;const t="[0-9]+",e="[A-Z $%*+\\-./:]+";let i="(?:[u3000-u303F]|[u3040-u309F]|[u30A0-u30FF]|[uFF00-uFFEF]|[u4E00-u9FAF]|[u2605-u2606]|[u2190-u2195]|u203B|[u2010u2015u2018u2019u2025u2026u201Cu201Du2225u2260]|[u0391-u0451]|[u00A7u00A8u00B1u00B4u00D7u00F7])+";i=i.replace(/u/g,"\\u");const n="(?:(?![A-Z0-9 $%*+\\-./:]|"+i+`)(?:.|[\r -]))+`;as.KANJI=new RegExp(i,"g"),as.BYTE_KANJI=new RegExp("[^A-Z0-9 $%*+\\-./:]+","g"),as.BYTE=new RegExp(n,"g"),as.NUMERIC=new RegExp(t,"g"),as.ALPHANUMERIC=new RegExp(e,"g");const r=new RegExp("^"+i+"$"),s=new RegExp("^"+t+"$"),o=new RegExp("^[A-Z0-9 $%*+\\-./:]+$");return as.testKanji=function(c){return r.test(c)},as.testNumeric=function(c){return s.test(c)},as.testAlphanumeric=function(c){return o.test(c)},as}var TP;function Bl(){return TP||(TP=1,(function(t){const e=y6(),i=b6();t.NUMERIC={id:"Numeric",bit:1,ccBits:[10,12,14]},t.ALPHANUMERIC={id:"Alphanumeric",bit:2,ccBits:[9,11,13]},t.BYTE={id:"Byte",bit:4,ccBits:[8,16,16]},t.KANJI={id:"Kanji",bit:8,ccBits:[8,10,12]},t.MIXED={bit:-1},t.getCharCountIndicator=function(s,o){if(!s.ccBits)throw new Error("Invalid mode: "+s);if(!e.isValid(o))throw new Error("Invalid version: "+o);return o>=1&&o<10?s.ccBits[0]:o<27?s.ccBits[1]:s.ccBits[2]},t.getBestModeForData=function(s){return i.testNumeric(s)?t.NUMERIC:i.testAlphanumeric(s)?t.ALPHANUMERIC:i.testKanji(s)?t.KANJI:t.BYTE},t.toString=function(s){if(s&&s.id)return s.id;throw new Error("Invalid mode")},t.isValid=function(s){return s&&s.bit&&s.ccBits};function n(r){if(typeof r!="string")throw new Error("Param is not a string");switch(r.toLowerCase()){case"numeric":return t.NUMERIC;case"alphanumeric":return t.ALPHANUMERIC;case"kanji":return t.KANJI;case"byte":return t.BYTE;default:throw new Error("Unknown mode: "+r)}}t.from=function(s,o){if(t.isValid(s))return s;try{return n(s)}catch{return o}}})(by)),by}var AP;function lie(){return AP||(AP=1,(function(t){const e=Dl(),i=_6(),n=Aw(),r=Bl(),s=y6(),o=7973,l=e.getBCHDigit(o);function c(g,O,_){for(let b=1;b<=40;b++)if(O<=t.getCapacity(b,_,g))return b}function u(g,O){return r.getCharCountIndicator(g,O)+4}function d(g,O){let _=0;return g.forEach(function(b){const x=u(b.mode,O);_+=x+b.getBitsLength()}),_}function p(g,O){for(let _=1;_<=40;_++)if(d(g,_)<=t.getCapacity(_,O,r.MIXED))return _}t.from=function(O,_){return s.isValid(O)?parseInt(O,10):_},t.getCapacity=function(O,_,b){if(!s.isValid(O))throw new Error("Invalid QR Code version");typeof b>"u"&&(b=r.BYTE);const x=e.getSymbolTotalCodewords(O),w=i.getTotalCodewordsCount(O,_),k=(x-w)*8;if(b===r.MIXED)return k;const T=k-u(b,O);switch(b){case r.NUMERIC:return Math.floor(T/10*3);case r.ALPHANUMERIC:return Math.floor(T/11*2);case r.KANJI:return Math.floor(T/13);case r.BYTE:default:return Math.floor(T/8)}},t.getBestVersionForData=function(O,_){let b;const x=n.from(_,n.M);if(Array.isArray(O)){if(O.length>1)return p(O,x);if(O.length===0)return 1;b=O[0]}else b=O;return c(b.mode,b.getLength(),x)},t.getEncodedBits=function(O){if(!s.isValid(O)||O<7)throw new Error("Invalid QR Code version");let _=O<<12;for(;e.getBCHDigit(_)-l>=0;)_^=o<=0;)c^=e<0&&(s=this.data.substr(r),o=parseInt(s,10),n.put(o,l*3+1))},Cy=e,Cy}var ky,PP;function uie(){if(PP)return ky;PP=1;const t=Bl(),e=["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"," ","$","%","*","+","-",".","/",":"];function i(n){this.mode=t.ALPHANUMERIC,this.data=n}return i.getBitsLength=function(r){return 11*Math.floor(r/2)+6*(r%2)},i.prototype.getLength=function(){return this.data.length},i.prototype.getBitsLength=function(){return i.getBitsLength(this.data.length)},i.prototype.write=function(r){let s;for(s=0;s+2<=this.data.length;s+=2){let o=e.indexOf(this.data[s])*45;o+=e.indexOf(this.data[s+1]),r.put(o,11)}this.data.length%2&&r.put(e.indexOf(this.data[s]),6)},ky=i,ky}var Ty,RP;function fie(){if(RP)return Ty;RP=1;const t=Bl();function e(i){this.mode=t.BYTE,typeof i=="string"?this.data=new TextEncoder().encode(i):this.data=new Uint8Array(i)}return e.getBitsLength=function(n){return n*8},e.prototype.getLength=function(){return this.data.length},e.prototype.getBitsLength=function(){return e.getBitsLength(this.data.length)},e.prototype.write=function(i){for(let n=0,r=this.data.length;n=33088&&s<=40956)s-=33088;else if(s>=57408&&s<=60351)s-=49472;else throw new Error("Invalid SJIS character: "+this.data[r]+` -Make sure your charset is UTF-8`);s=(s>>>8&255)*192+(s&255),n.put(s,13)}},Ay=i,Ay}var Ey={exports:{}},LP;function pie(){return LP||(LP=1,(function(t){var e={single_source_shortest_paths:function(i,n,r){var s={},o={};o[n]=0;var l=e.PriorityQueue.make();l.push(n,0);for(var c,u,d,p,g,O,_,b,x;!l.empty();){c=l.pop(),u=c.value,p=c.cost,g=i[u]||{};for(d in g)g.hasOwnProperty(d)&&(O=g[d],_=p+O,b=o[d],x=typeof o[d]>"u",(x||b>_)&&(o[d]=_,l.push(d,_),s[d]=u))}if(typeof r<"u"&&typeof o[r]>"u"){var w=["Could not find a path from ",n," to ",r,"."].join("");throw new Error(w)}return s},extract_shortest_path_from_predecessor_list:function(i,n){for(var r=[],s=n;s;)r.push(s),i[s],s=i[s];return r.reverse(),r},find_path:function(i,n,r){var s=e.single_source_shortest_paths(i,n,r);return e.extract_shortest_path_from_predecessor_list(s,r)},PriorityQueue:{make:function(i){var n=e.PriorityQueue,r={},s;i=i||{};for(s in n)n.hasOwnProperty(s)&&(r[s]=n[s]);return r.queue=[],r.sorter=i.sorter||n.default_sorter,r},default_sorter:function(i,n){return i.cost-n.cost},push:function(i,n){var r={value:i,cost:n};this.queue.push(r),this.queue.sort(this.sorter)},pop:function(){return this.queue.shift()},empty:function(){return this.queue.length===0}}};t.exports=e})(Ey)),Ey.exports}var DP;function mie(){return DP||(DP=1,(function(t){const e=Bl(),i=hie(),n=uie(),r=fie(),s=die(),o=b6(),l=Dl(),c=pie();function u(w){return unescape(encodeURIComponent(w)).length}function d(w,k,T){const A=[];let Q;for(;(Q=w.exec(T))!==null;)A.push({data:Q[0],index:Q.index,mode:k,length:Q[0].length});return A}function p(w){const k=d(o.NUMERIC,e.NUMERIC,w),T=d(o.ALPHANUMERIC,e.ALPHANUMERIC,w);let A,Q;return l.isKanjiModeEnabled()?(A=d(o.BYTE,e.BYTE,w),Q=d(o.KANJI,e.KANJI,w)):(A=d(o.BYTE_KANJI,e.BYTE,w),Q=[]),k.concat(T,A,Q).sort(function(z,N){return z.index-N.index}).map(function(z){return{data:z.data,mode:z.mode,length:z.length}})}function g(w,k){switch(k){case e.NUMERIC:return i.getBitsLength(w);case e.ALPHANUMERIC:return n.getBitsLength(w);case e.KANJI:return s.getBitsLength(w);case e.BYTE:return r.getBitsLength(w)}}function O(w){return w.reduce(function(k,T){const A=k.length-1>=0?k[k.length-1]:null;return A&&A.mode===T.mode?(k[k.length-1].data+=T.data,k):(k.push(T),k)},[])}function _(w){const k=[];for(let T=0;T=0&&B<=6&&(j===0||j===6)||j>=0&&j<=6&&(B===0||B===6)||B>=2&&B<=4&&j>=2&&j<=4?E.set(U+B,R+j,!0,!0):E.set(U+B,R+j,!1,!0))}}function _(E){const z=E.size;for(let N=8;N>B&1)===1,E.set(J,U,R,!0),E.set(U,J,R,!0)}function w(E,z,N){const q=E.size,J=d.getEncodedBits(z,N);let U,R;for(U=0;U<15;U++)R=(J>>U&1)===1,U<6?E.set(U,8,R,!0):U<8?E.set(U+1,8,R,!0):E.set(q-15+U,8,R,!0),U<8?E.set(8,q-U-1,R,!0):U<9?E.set(8,15-U-1+1,R,!0):E.set(8,15-U-1,R,!0);E.set(q-8,8,1,!0)}function k(E,z){const N=E.size;let q=-1,J=N-1,U=7,R=0;for(let B=N-1;B>0;B-=2)for(B===6&&B--;;){for(let j=0;j<2;j++)if(!E.isReserved(J,B-j)){let $=!1;R>>U&1)===1),E.set(J,B-j,$),U--,U===-1&&(R++,U=7)}if(J+=q,J<0||N<=J){J-=q,q=-q;break}}}function T(E,z,N){const q=new i;N.forEach(function(j){q.put(j.mode.bit,4),q.put(j.getLength(),p.getCharCountIndicator(j.mode,E)),j.write(q)});const J=t.getSymbolTotalCodewords(E),U=l.getTotalCodewordsCount(E,z),R=(J-U)*8;for(q.getLengthInBits()+4<=R&&q.put(0,4);q.getLengthInBits()%8!==0;)q.putBit(0);const B=(R-q.getLengthInBits())/8;for(let j=0;j{let n=e.node.getChild("VariableDefinition");return n&&i(n,t),!0}}const fte=["FunctionDeclaration"],dte={FunctionDeclaration:Ru("function"),ClassDeclaration:Ru("class"),ClassExpression:()=>!0,EnumDeclaration:Ru("constant"),TypeAliasDeclaration:Ru("type"),NamespaceDeclaration:Ru("namespace"),VariableDefinition(t,e){t.matchContext(fte)||e(t,"variable")},TypeDefinition(t,e){e(t,"type")},__proto__:null};function G4(t,e){let i=rP.get(e);if(i)return i;let n=[],s=!0;function r(o,l){let c=t.sliceString(o.from,o.to);n.push({label:c,type:l})}return e.cursor(ut.IncludeAnonymous).iterate(o=>{if(s)s=!1;else if(o.name){let l=dte[o.name];if(l&&l(o,r)||F4.has(o.name))return!1}else if(o.to-o.from>8192){for(let l of G4(t,o.node))n.push(l);return!1}}),rP.set(e,n),n}const oP=/^[\w$\xa1-\uffff][\w$\d\xa1-\uffff]*$/,K4=["TemplateString","String","RegExp","LineComment","BlockComment","VariableDefinition","TypeDefinition","Label","PropertyDefinition","PropertyName","PrivatePropertyDefinition","PrivatePropertyName","JSXText","JSXAttributeValue","JSXOpenTag","JSXCloseTag","JSXSelfClosingTag",".","?."];function pte(t){let e=xt(t.state).resolveInner(t.pos,-1);if(K4.indexOf(e.name)>-1)return null;let i=e.name=="VariableName"||e.to-e.from<20&&oP.test(t.state.sliceDoc(e.from,e.to));if(!i&&!t.explicit)return null;let n=[];for(let s=e;s;s=s.parent)F4.has(s.name)&&(n=n.concat(G4(t.state.doc,s)));return{options:n,from:i?e.from:t.pos,validFor:oP}}const kr=lh.define({name:"javascript",parser:hte.configure({props:[md.add({IfStatement:Ym({except:/^\s*({|else\b)/}),TryStatement:Ym({except:/^\s*({|catch\b|finally\b)/}),LabeledStatement:jY,SwitchBody:t=>{let e=t.textAfter,i=/^\s*\}/.test(e),n=/^\s*(case|default)\b/.test(e);return t.baseIndent+(i?0:n?1:2)*t.unit},Block:zY({closing:"}"}),ArrowFunction:t=>t.baseIndent+t.unit,"TemplateString BlockComment":()=>null,"Statement Property":Ym({except:/^\s*{/}),JSXElement(t){let e=/^\s*<\//.test(t.textAfter);return t.lineIndent(t.node.from)+(e?0:t.unit)},JSXEscape(t){let e=/\s*\}/.test(t.textAfter);return t.lineIndent(t.node.from)+(e?0:t.unit)},"JSXOpenTag JSXSelfClosingTag"(t){return t.column(t.node.from)+t.unit}}),bh.add({"Block ClassBody SwitchBody EnumBody ObjectExpression ArrayExpression ObjectType":ZB,BlockComment(t){return{from:t.from+2,to:t.to-2}}})]}),languageData:{closeBrackets:{brackets:["(","[","{","'",'"',"`"]},commentTokens:{line:"//",block:{open:"/*",close:"*/"}},indentOnInput:/^\s*(?:case |default:|\{|\}|<\/)$/,wordChars:"$"}}),J4={test:t=>/^JSX/.test(t.name),facet:Gx({commentTokens:{block:{open:"{/*",close:"*/}"}}})},e6=kr.configure({dialect:"ts"},"typescript"),t6=kr.configure({dialect:"jsx",props:[Kx.add(t=>t.isTop?[J4]:void 0)]}),i6=kr.configure({dialect:"jsx ts",props:[Kx.add(t=>t.isTop?[J4]:void 0)]},"typescript");let n6=t=>({label:t,type:"keyword"});const s6="break case const continue default delete export extends false finally in instanceof let new return static super switch this throw true typeof var yield".split(" ").map(n6),mte=s6.concat(["declare","implements","private","protected","public"].map(n6));function gte(t={}){let e=t.jsx?t.typescript?i6:t6:t.typescript?e6:kr,i=t.typescript?ute.concat(mte):H4.concat(s6);return new Vf(e,[kr.data.of({autocomplete:oG(K4,W$(i))}),kr.data.of({autocomplete:pte}),t.jsx?_te:[]])}function Ote(t){for(;;){if(t.name=="JSXOpenTag"||t.name=="JSXSelfClosingTag"||t.name=="JSXFragmentTag")return t;if(t.name=="JSXEscape"||!t.parent)return null;t=t.parent}}function aP(t,e,i=t.length){for(let n=e==null?void 0:e.firstChild;n;n=n.nextSibling)if(n.name=="JSXIdentifier"||n.name=="JSXBuiltin"||n.name=="JSXNamespacedName"||n.name=="JSXMemberExpression")return t.sliceString(n.from,Math.min(n.to,i));return""}const vte=typeof navigator=="object"&&/Android\b/.test(navigator.userAgent),_te=ve.inputHandler.of((t,e,i,n,s)=>{if((vte?t.composing:t.compositionStarted)||t.state.readOnly||e!=i||n!=">"&&n!="/"||!kr.isActiveAt(t.state,e,-1))return!1;let r=s(),{state:o}=r,l=o.changeByRange(c=>{var u;let{head:d}=c,p=xt(o).resolveInner(d-1,-1),g;if(p.name=="JSXStartTag"&&(p=p.parent),!(o.doc.sliceString(d-1,d)!=n||p.name=="JSXAttributeValue"&&p.to>d)){if(n==">"&&p.name=="JSXFragmentTag")return{range:c,changes:{from:d,insert:""}};if(n=="/"&&p.name=="JSXStartCloseTag"){let O=p.parent,_=O.parent;if(_&&O.from==d-2&&((g=aP(o.doc,_.firstChild,d))||((u=_.firstChild)===null||u===void 0?void 0:u.name)=="JSXFragmentTag")){let b=`${g}>`;return{range:re.cursor(d+b.length,-1),changes:{from:d,insert:b}}}}else if(n==">"){let O=Ote(p);if(O&&O.name=="JSXOpenTag"&&!/^\/?>|^<\//.test(o.doc.sliceString(d,d+2))&&(g=aP(o.doc,O,d)))return{range:c,changes:{from:d,insert:``}}}}return{range:c}});return l.changes.empty?!1:(t.dispatch([r,o.update(l,{userEvent:"input.complete",scrollIntoView:!0})]),!0)}),Qu=["_blank","_self","_top","_parent"],sy=["ascii","utf-8","utf-16","latin1","latin1"],ry=["get","post","put","delete"],oy=["application/x-www-form-urlencoded","multipart/form-data","text/plain"],Gn=["true","false"],Me={},yte={a:{attrs:{href:null,ping:null,type:null,media:null,target:Qu,hreflang:null}},abbr:Me,address:Me,area:{attrs:{alt:null,coords:null,href:null,target:null,ping:null,media:null,hreflang:null,type:null,shape:["default","rect","circle","poly"]}},article:Me,aside:Me,audio:{attrs:{src:null,mediagroup:null,crossorigin:["anonymous","use-credentials"],preload:["none","metadata","auto"],autoplay:["autoplay"],loop:["loop"],controls:["controls"]}},b:Me,base:{attrs:{href:null,target:Qu}},bdi:Me,bdo:Me,blockquote:{attrs:{cite:null}},body:Me,br:Me,button:{attrs:{form:null,formaction:null,name:null,value:null,autofocus:["autofocus"],disabled:["autofocus"],formenctype:oy,formmethod:ry,formnovalidate:["novalidate"],formtarget:Qu,type:["submit","reset","button"]}},canvas:{attrs:{width:null,height:null}},caption:Me,center:Me,cite:Me,code:Me,col:{attrs:{span:null}},colgroup:{attrs:{span:null}},command:{attrs:{type:["command","checkbox","radio"],label:null,icon:null,radiogroup:null,command:null,title:null,disabled:["disabled"],checked:["checked"]}},data:{attrs:{value:null}},datagrid:{attrs:{disabled:["disabled"],multiple:["multiple"]}},datalist:{attrs:{data:null}},dd:Me,del:{attrs:{cite:null,datetime:null}},details:{attrs:{open:["open"]}},dfn:Me,div:Me,dl:Me,dt:Me,em:Me,embed:{attrs:{src:null,type:null,width:null,height:null}},eventsource:{attrs:{src:null}},fieldset:{attrs:{disabled:["disabled"],form:null,name:null}},figcaption:Me,figure:Me,footer:Me,form:{attrs:{action:null,name:null,"accept-charset":sy,autocomplete:["on","off"],enctype:oy,method:ry,novalidate:["novalidate"],target:Qu}},h1:Me,h2:Me,h3:Me,h4:Me,h5:Me,h6:Me,head:{children:["title","base","link","style","meta","script","noscript","command"]},header:Me,hgroup:Me,hr:Me,html:{attrs:{manifest:null}},i:Me,iframe:{attrs:{src:null,srcdoc:null,name:null,width:null,height:null,sandbox:["allow-top-navigation","allow-same-origin","allow-forms","allow-scripts"],seamless:["seamless"]}},img:{attrs:{alt:null,src:null,ismap:null,usemap:null,width:null,height:null,crossorigin:["anonymous","use-credentials"]}},input:{attrs:{alt:null,dirname:null,form:null,formaction:null,height:null,list:null,max:null,maxlength:null,min:null,name:null,pattern:null,placeholder:null,size:null,src:null,step:null,value:null,width:null,accept:["audio/*","video/*","image/*"],autocomplete:["on","off"],autofocus:["autofocus"],checked:["checked"],disabled:["disabled"],formenctype:oy,formmethod:ry,formnovalidate:["novalidate"],formtarget:Qu,multiple:["multiple"],readonly:["readonly"],required:["required"],type:["hidden","text","search","tel","url","email","password","datetime","date","month","week","time","datetime-local","number","range","color","checkbox","radio","file","submit","image","reset","button"]}},ins:{attrs:{cite:null,datetime:null}},kbd:Me,keygen:{attrs:{challenge:null,form:null,name:null,autofocus:["autofocus"],disabled:["disabled"],keytype:["RSA"]}},label:{attrs:{for:null,form:null}},legend:Me,li:{attrs:{value:null}},link:{attrs:{href:null,type:null,hreflang:null,media:null,sizes:["all","16x16","16x16 32x32","16x16 32x32 64x64"]}},map:{attrs:{name:null}},mark:Me,menu:{attrs:{label:null,type:["list","context","toolbar"]}},meta:{attrs:{content:null,charset:sy,name:["viewport","application-name","author","description","generator","keywords"],"http-equiv":["content-language","content-type","default-style","refresh"]}},meter:{attrs:{value:null,min:null,low:null,high:null,max:null,optimum:null}},nav:Me,noscript:Me,object:{attrs:{data:null,type:null,name:null,usemap:null,form:null,width:null,height:null,typemustmatch:["typemustmatch"]}},ol:{attrs:{reversed:["reversed"],start:null,type:["1","a","A","i","I"]},children:["li","script","template","ul","ol"]},optgroup:{attrs:{disabled:["disabled"],label:null}},option:{attrs:{disabled:["disabled"],label:null,selected:["selected"],value:null}},output:{attrs:{for:null,form:null,name:null}},p:Me,param:{attrs:{name:null,value:null}},pre:Me,progress:{attrs:{value:null,max:null}},q:{attrs:{cite:null}},rp:Me,rt:Me,ruby:Me,samp:Me,script:{attrs:{type:["text/javascript"],src:null,async:["async"],defer:["defer"],charset:sy}},section:Me,select:{attrs:{form:null,name:null,size:null,autofocus:["autofocus"],disabled:["disabled"],multiple:["multiple"]}},slot:{attrs:{name:null}},small:Me,source:{attrs:{src:null,type:null,media:null}},span:Me,strong:Me,style:{attrs:{type:["text/css"],media:null,scoped:null}},sub:Me,summary:Me,sup:Me,table:Me,tbody:Me,td:{attrs:{colspan:null,rowspan:null,headers:null}},template:Me,textarea:{attrs:{dirname:null,form:null,maxlength:null,name:null,placeholder:null,rows:null,cols:null,autofocus:["autofocus"],disabled:["disabled"],readonly:["readonly"],required:["required"],wrap:["soft","hard"]}},tfoot:Me,th:{attrs:{colspan:null,rowspan:null,headers:null,scope:["row","col","rowgroup","colgroup"]}},thead:Me,time:{attrs:{datetime:null}},title:Me,tr:Me,track:{attrs:{src:null,label:null,default:null,kind:["subtitles","captions","descriptions","chapters","metadata"],srclang:null}},ul:{children:["li","script","template","ul","ol"]},var:Me,video:{attrs:{src:null,poster:null,width:null,height:null,crossorigin:["anonymous","use-credentials"],preload:["auto","metadata","none"],autoplay:["autoplay"],mediagroup:["movie"],muted:["muted"],controls:["controls"]}},wbr:Me},r6={accesskey:null,class:null,contenteditable:Gn,contextmenu:null,dir:["ltr","rtl","auto"],draggable:["true","false","auto"],dropzone:["copy","move","link","string:","file:"],hidden:["hidden"],id:null,inert:["inert"],itemid:null,itemprop:null,itemref:null,itemscope:["itemscope"],itemtype:null,lang:["ar","bn","de","en-GB","en-US","es","fr","hi","id","ja","pa","pt","ru","tr","zh"],spellcheck:Gn,autocorrect:Gn,autocapitalize:Gn,style:null,tabindex:null,title:null,translate:["yes","no"],rel:["stylesheet","alternate","author","bookmark","help","license","next","nofollow","noreferrer","prefetch","prev","search","tag"],role:"alert application article banner button cell checkbox complementary contentinfo dialog document feed figure form grid gridcell heading img list listbox listitem main navigation region row rowgroup search switch tab table tabpanel textbox timer".split(" "),"aria-activedescendant":null,"aria-atomic":Gn,"aria-autocomplete":["inline","list","both","none"],"aria-busy":Gn,"aria-checked":["true","false","mixed","undefined"],"aria-controls":null,"aria-describedby":null,"aria-disabled":Gn,"aria-dropeffect":null,"aria-expanded":["true","false","undefined"],"aria-flowto":null,"aria-grabbed":["true","false","undefined"],"aria-haspopup":Gn,"aria-hidden":Gn,"aria-invalid":["true","false","grammar","spelling"],"aria-label":null,"aria-labelledby":null,"aria-level":null,"aria-live":["off","polite","assertive"],"aria-multiline":Gn,"aria-multiselectable":Gn,"aria-owns":null,"aria-posinset":null,"aria-pressed":["true","false","mixed","undefined"],"aria-readonly":Gn,"aria-relevant":null,"aria-required":Gn,"aria-selected":["true","false","undefined"],"aria-setsize":null,"aria-sort":["ascending","descending","none","other"],"aria-valuemax":null,"aria-valuemin":null,"aria-valuenow":null,"aria-valuetext":null},o6="beforeunload copy cut dragstart dragover dragleave dragenter dragend drag paste focus blur change click load mousedown mouseenter mouseleave mouseup keydown keyup resize scroll unload".split(" ").map(t=>"on"+t);for(let t of o6)r6[t]=null;let Jf=class{constructor(e,i){this.tags={...yte,...e},this.globalAttrs={...r6,...i},this.allTags=Object.keys(this.tags),this.globalAttrNames=Object.keys(this.globalAttrs)}};Jf.default=new Jf;function dh(t,e,i=t.length){if(!e)return"";let n=e.firstChild,s=n&&n.getChild("TagName");return s?t.sliceString(s.from,Math.min(s.to,i)):""}function ph(t,e=!1){for(;t;t=t.parent)if(t.name=="Element")if(e)e=!1;else return t;return null}function a6(t,e,i){let n=i.tags[dh(t,ph(e))];return(n==null?void 0:n.children)||i.allTags}function Cw(t,e){let i=[];for(let n=ph(e);n&&!n.type.isTop;n=ph(n.parent)){let s=dh(t,n);if(s&&n.lastChild.name=="CloseTag")break;s&&i.indexOf(s)<0&&(e.name=="EndTag"||e.from>=n.firstChild.to)&&i.push(s)}return i}const l6=/^[:\-\.\w\u00b7-\uffff]*$/;function lP(t,e,i,n,s){let r=/\s*>/.test(t.sliceDoc(s,s+5))?"":">",o=ph(i,i.name=="StartTag"||i.name=="TagName");return{from:n,to:s,options:a6(t.doc,o,e).map(l=>({label:l,type:"type"})).concat(Cw(t.doc,i).map((l,c)=>({label:"/"+l,apply:"/"+l+r,type:"type",boost:99-c}))),validFor:/^\/?[:\-\.\w\u00b7-\uffff]*$/}}function cP(t,e,i,n){let s=/\s*>/.test(t.sliceDoc(n,n+5))?"":">";return{from:i,to:n,options:Cw(t.doc,e).map((r,o)=>({label:r,apply:r+s,type:"type",boost:99-o})),validFor:l6}}function bte(t,e,i,n){let s=[],r=0;for(let o of a6(t.doc,i,e))s.push({label:"<"+o,type:"type"});for(let o of Cw(t.doc,i))s.push({label:"",type:"type",boost:99-r++});return{from:n,to:n,options:s,validFor:/^<\/?[:\-\.\w\u00b7-\uffff]*$/}}function Ste(t,e,i,n,s){let r=ph(i),o=r?e.tags[dh(t.doc,r)]:null,l=o&&o.attrs?Object.keys(o.attrs):[],c=o&&o.globalAttrs===!1?l:l.length?l.concat(e.globalAttrNames):e.globalAttrNames;return{from:n,to:s,options:c.map(u=>({label:u,type:"property"})),validFor:l6}}function xte(t,e,i,n,s){var r;let o=(r=i.parent)===null||r===void 0?void 0:r.getChild("AttributeName"),l=[],c;if(o){let u=t.sliceDoc(o.from,o.to),d=e.globalAttrs[u];if(!d){let p=ph(i),g=p?e.tags[dh(t.doc,p)]:null;d=(g==null?void 0:g.attrs)&&g.attrs[u]}if(d){let p=t.sliceDoc(n,s).toLowerCase(),g='"',O='"';/^['"]/.test(p)?(c=p[0]=='"'?/^[^"]*$/:/^[^']*$/,g="",O=t.sliceDoc(s,s+1)==p[0]?"":p[0],p=p.slice(1),n++):c=/^[^\s<>='"]*$/;for(let _ of d)l.push({label:_,apply:g+_+O,type:"constant"})}}return{from:n,to:s,options:l,validFor:c}}function c6(t,e){let{state:i,pos:n}=e,s=xt(i).resolveInner(n,-1),r=s.resolve(n);for(let o=n,l;r==s&&(l=s.childBefore(o));){let c=l.lastChild;if(!c||!c.type.isError||c.fromc6(n,s)}const kte=kr.parser.configure({top:"SingleExpression"}),h6=[{tag:"script",attrs:t=>t.type=="text/typescript"||t.lang=="ts",parser:e6.parser},{tag:"script",attrs:t=>t.type=="text/babel"||t.type=="text/jsx",parser:t6.parser},{tag:"script",attrs:t=>t.type=="text/typescript-jsx",parser:i6.parser},{tag:"script",attrs(t){return/^(importmap|speculationrules|application\/(.+\+)?json)$/i.test(t.type)},parser:kte},{tag:"script",attrs(t){return!t.type||/^(?:text|application)\/(?:x-)?(?:java|ecma)script$|^module$|^$/i.test(t.type)},parser:kr.parser},{tag:"style",attrs(t){return(!t.lang||t.lang=="css")&&(!t.type||/^(text\/)?(x-)?(stylesheet|css)$/i.test(t.type))},parser:Fg.parser}],u6=[{name:"style",parser:Fg.parser.configure({top:"Styles"})}].concat(o6.map(t=>({name:t,parser:kr.parser}))),f6=lh.define({name:"html",parser:GJ.configure({props:[md.add({Element(t){let e=/^(\s*)(<\/)?/.exec(t.textAfter);return t.node.to<=t.pos+e[0].length?t.continue():t.lineIndent(t.node.from)+(e[2]?0:t.unit)},"OpenTag CloseTag SelfClosingTag"(t){return t.column(t.node.from)+t.unit},Document(t){if(t.pos+/\s*/.exec(t.textAfter)[0].lengtht.getChild("TagName")})]}),languageData:{commentTokens:{block:{open:""}},indentOnInput:/^\s*<\/\w+\W$/,wordChars:"-_"}}),Km=f6.configure({wrap:V4(h6,u6)});function Tte(t={}){let e="",i;t.matchClosingTags===!1&&(e="noMatch"),t.selfClosingTags===!0&&(e=(e?e+" ":"")+"selfClosing"),(t.nestedLanguages&&t.nestedLanguages.length||t.nestedAttributes&&t.nestedAttributes.length)&&(i=V4((t.nestedLanguages||[]).concat(h6),(t.nestedAttributes||[]).concat(u6)));let n=i?f6.configure({wrap:i,dialect:e}):e?Km.configure({dialect:e}):Km;return new Vf(n,[Km.data.of({autocomplete:Cte(t)}),t.autoCloseTags!==!1?Ate:[],gte().support,Qee().support])}const hP=new Set("area base br col command embed frame hr img input keygen link meta param source track wbr menuitem".split(" ")),Ate=ve.inputHandler.of((t,e,i,n,s)=>{if(t.composing||t.state.readOnly||e!=i||n!=">"&&n!="/"||!Km.isActiveAt(t.state,e,-1))return!1;let r=s(),{state:o}=r,l=o.changeByRange(c=>{var u,d,p;let g=o.doc.sliceString(c.from-1,c.to)==n,{head:O}=c,_=xt(o).resolveInner(O,-1),b;if(g&&n==">"&&_.name=="EndTag"){let x=_.parent;if(((d=(u=x.parent)===null||u===void 0?void 0:u.lastChild)===null||d===void 0?void 0:d.name)!="CloseTag"&&(b=dh(o.doc,x.parent,O))&&!hP.has(b)){let w=O+(o.doc.sliceString(O,O+1)===">"?1:0),k=``;return{range:c,changes:{from:O,to:w,insert:k}}}}else if(g&&n=="/"&&_.name=="IncompleteCloseTag"){let x=_.parent;if(_.from==O-2&&((p=x.lastChild)===null||p===void 0?void 0:p.name)!="CloseTag"&&(b=dh(o.doc,x,O))&&!hP.has(b)){let w=O+(o.doc.sliceString(O,O+1)===">"?1:0),k=`${b}>`;return{range:re.cursor(O+k.length,-1),changes:{from:O,to:w,insert:k}}}}return{range:c}});return l.changes.empty?!1:(t.dispatch([r,o.update(l,{userEvent:"input.complete",scrollIntoView:!0})]),!0)}),d6=Gx({commentTokens:{block:{open:""}}}),p6=new ze,m6=qK.configure({props:[bh.add(t=>!t.is("Block")||t.is("Document")||qb(t)!=null||Ete(t)?void 0:(e,i)=>({from:i.doc.lineAt(e.from).to,to:e.to})),p6.add(qb),md.add({Document:()=>null}),vl.add({Document:d6})]});function qb(t){let e=/^(?:ATX|Setext)Heading(\d)$/.exec(t.name);return e?+e[1]:void 0}function Ete(t){return t.name=="OrderedList"||t.name=="BulletList"}function Mte(t,e){let i=t;for(;;){let n=i.nextSibling,s;if(!n||(s=qb(n.type))!=null&&s<=e)break;i=n}return i.to}const Pte=XB.of((t,e,i)=>{for(let n=xt(t).resolveInner(i,-1);n&&!(n.fromi)return{from:i,to:r}}return null});function kw(t){return new As(d6,t,[],"markdown")}const Rte=kw(m6),Qte=m6.configure([iJ,sJ,nJ,rJ,{props:[bh.add({Table:(t,e)=>({from:e.doc.lineAt(t.from).to,to:t.to})})]}]),ed=kw(Qte);function Lte(t,e){return i=>{if(i&&t){let n=null;if(i=/\S*/.exec(i)[0],typeof t=="function"?n=t(i):n=Rg.matchLanguageName(t,i,!0),n instanceof Rg)return n.support?n.support.language.parser:If.getSkippingParser(n.load());if(n)return n.parser}return e?e.parser:null}}class ay{constructor(e,i,n,s,r,o,l){this.node=e,this.from=i,this.to=n,this.spaceBefore=s,this.spaceAfter=r,this.type=o,this.item=l}blank(e,i=!0){let n=this.spaceBefore+(this.node.name=="Blockquote"?">":"");if(e!=null){for(;n.length0;s--)n+=" ";return n+(i?this.spaceAfter:"")}}marker(e,i){let n=this.node.name=="OrderedList"?String(+O6(this.item,e)[2]+i):"";return this.spaceBefore+n+this.type+this.spaceAfter}}function g6(t,e){let i=[],n=[];for(let s=t;s;s=s.parent){if(s.name=="FencedCode")return n;(s.name=="ListItem"||s.name=="Blockquote")&&i.push(s)}for(let s=i.length-1;s>=0;s--){let r=i[s],o,l=e.lineAt(r.from),c=r.from-l.from;if(r.name=="Blockquote"&&(o=/^ *>( ?)/.exec(l.text.slice(c))))n.push(new ay(r,c,c+o[0].length,"",o[1],">",null));else if(r.name=="ListItem"&&r.parent.name=="OrderedList"&&(o=/^( *)\d+([.)])( *)/.exec(l.text.slice(c)))){let u=o[3],d=o[0].length;u.length>=4&&(u=u.slice(0,u.length-4),d-=4),n.push(new ay(r.parent,c,c+d,o[1],u,o[2],r))}else if(r.name=="ListItem"&&r.parent.name=="BulletList"&&(o=/^( *)([-+*])( {1,4}\[[ xX]\])?( +)/.exec(l.text.slice(c)))){let u=o[4],d=o[0].length;u.length>4&&(u=u.slice(0,u.length-4),d-=4);let p=o[2];o[3]&&(p+=o[3].replace(/[xX]/," ")),n.push(new ay(r.parent,c,c+d,o[1],u,p,r))}}return n}function O6(t,e){return/^(\s*)(\d+)(?=[.)])/.exec(e.sliceString(t.from,t.from+10))}function ly(t,e,i,n=0){for(let s=-1,r=t;;){if(r.name=="ListItem"){let l=O6(r,e),c=+l[2];if(s>=0){if(c!=s+1)return;i.push({from:r.from+l[1].length,to:r.from+l[0].length,insert:String(s+2+n)})}s=c}let o=r.nextSibling;if(!o)break;r=o}}function Tw(t,e){let i=/^[ \t]*/.exec(t)[0].length;if(!i||e.facet(yh)!=" ")return t;let n=Ys(t,4,i),s="";for(let r=n;r>0;)r>=4?(s+=" ",r-=4):(s+=" ",r--);return s+t.slice(i)}const Dte=(t={})=>({state:e,dispatch:i})=>{let n=xt(e),{doc:s}=e,r=null,o=e.changeByRange(l=>{if(!l.empty||!ed.isActiveAt(e,l.from,-1)&&!ed.isActiveAt(e,l.from,1))return r={range:l};let c=l.from,u=s.lineAt(c),d=g6(n.resolveInner(c,-1),s);for(;d.length&&d[d.length-1].from>c-u.from;)d.pop();if(!d.length)return r={range:l};let p=d[d.length-1];if(p.to-p.spaceAfter.length>c-u.from)return r={range:l};let g=c>=p.to-p.spaceAfter.length&&!/\S/.test(u.text.slice(p.to));if(p.item&&g){let w=p.node.firstChild,k=p.node.getChild("ListItem","ListItem");if(w.to>=c||k&&k.to0&&!/[^\s>]/.test(s.lineAt(u.from-1).text)||t.nonTightLists===!1){let T=d.length>1?d[d.length-2]:null,A,Q="";T&&T.item?(A=u.from+T.from,Q=T.marker(s,1)):A=u.from+(T?T.to:0);let E=[{from:A,to:c,insert:Q}];return p.node.name=="OrderedList"&&ly(p.item,s,E,-2),T&&T.node.name=="OrderedList"&&ly(T.item,s,E),{range:re.cursor(A+Q.length),changes:E}}else{let T=fP(d,e,u);return{range:re.cursor(c+T.length+1),changes:{from:u.from,insert:T+e.lineBreak}}}}if(p.node.name=="Blockquote"&&g&&u.from){let w=s.lineAt(u.from-1),k=/>\s*$/.exec(w.text);if(k&&k.index==p.from){let T=e.changes([{from:w.from+k.index,to:w.to},{from:u.from+p.from,to:u.to}]);return{range:l.map(T),changes:T}}}let O=[];p.node.name=="OrderedList"&&ly(p.item,s,O);let _=p.item&&p.item.from]*/.exec(u.text)[0].length>=p.to)for(let w=0,k=d.length-1;w<=k;w++)b+=w==k&&!_?d[w].marker(s,1):d[w].blank(wu.from&&/\s/.test(u.text.charAt(x-u.from-1));)x--;return b=Tw(b,e),$te(p.node,e.doc)&&(b=fP(d,e,u)+e.lineBreak+b),O.push({from:x,to:c,insert:e.lineBreak+b}),{range:re.cursor(x+b.length+1),changes:O}});return r?!1:(i(e.update(o,{scrollIntoView:!0,userEvent:"input"})),!0)},Bte=Dte();function uP(t){return t.name=="QuoteMark"||t.name=="ListMark"}function $te(t,e){if(t.name!="OrderedList"&&t.name!="BulletList")return!1;let i=t.firstChild,n=t.getChild("ListItem","ListItem");if(!n)return!1;let s=e.lineAt(i.to),r=e.lineAt(n.from),o=/^[\s>]*$/.test(s.text);return s.number+(o?0:1){let i=xt(t),n=null,s=t.changeByRange(r=>{let o=r.from,{doc:l}=t;if(r.empty&&ed.isActiveAt(t,r.from)){let c=l.lineAt(o),u=g6(Nte(i,o),l);if(u.length){let d=u[u.length-1],p=d.to-d.spaceAfter.length+(d.spaceAfter?1:0);if(o-c.from>p&&!/\S/.test(c.text.slice(p,o-c.from)))return{range:re.cursor(c.from+p),changes:{from:c.from+p,to:o}};if(o-c.from==p&&(!d.item||c.from<=d.item.from||!/\S/.test(c.text.slice(0,d.to)))){let g=c.from+d.from;if(d.item&&d.node.from{var i;let{main:n}=e.state.selection;if(n.empty)return!1;let s=(i=t.clipboardData)===null||i===void 0?void 0:i.getData("text/plain");if(!s||!/^(https?:\/\/|mailto:|xmpp:|www\.)/.test(s)||(/^www\./.test(s)&&(s="https://"+s),!ed.isActiveAt(e.state,n.from,1)))return!1;let r=xt(e.state),o=!1;return r.iterate({from:n.from,to:n.to,enter:l=>{(l.from>n.from||Zte.test(l.name))&&(o=!0)},leave:l=>{l.to{d.current=s},[s]);const p=X.useCallback(b=>{r(b),u(b!==t)},[t]),g=X.useCallback(async()=>{if(!o){l(!0);try{await i(d.current),u(!1)}catch(b){console.error("[plan-editor] Save failed:",b)}finally{l(!1)}}},[i,o]),O=X.useCallback(()=>{c&&!window.confirm("Unsaved changes -- discard?")||n()},[c,n]),_=Ll.of([{key:"Mod-s",run:()=>(g(),!0)}]);return X.useEffect(()=>{const b=x=>{(x.ctrlKey||x.metaKey)&&x.key==="s"&&x.preventDefault()};return document.addEventListener("keydown",b),()=>document.removeEventListener("keydown",b)},[]),S.jsxs("div",{className:"fixed inset-0 z-50 bg-background/95 flex flex-col",children:[S.jsxs("div",{className:"flex items-center justify-between px-4 py-3 border-b border-border bg-card",children:[S.jsxs("div",{className:"flex items-center gap-3",children:[S.jsx("span",{className:"text-sm font-mono text-muted-foreground",children:e}),c&&S.jsx("span",{className:"text-xs px-1.5 py-0.5 rounded-sm bg-warning/20 text-warning font-mono",children:"unsaved"})]}),S.jsxs("div",{className:"flex items-center gap-2",children:[c&&S.jsx("button",{type:"button",onClick:g,disabled:o,className:Ze("text-xs px-3 py-1.5 rounded-md font-mono","bg-accent text-foreground","hover:bg-accent-glow","disabled:opacity-50 disabled:cursor-not-allowed","transition-colors focus:outline-none focus:ring-2 focus:ring-accent/50"),children:o?"Saving...":"Save"}),S.jsx("button",{type:"button",onClick:O,className:Ze("text-xs px-3 py-1.5 rounded-md font-mono","bg-muted text-muted-foreground","hover:bg-danger/20 hover:text-danger","transition-colors focus:outline-none focus:ring-2 focus:ring-accent/50"),children:"Close"})]})]}),S.jsx("div",{className:"flex-1 overflow-auto",children:S.jsx(l4,{value:s,onChange:p,theme:a4,extensions:[Ite({base:ed}),_],height:"calc(100vh - 56px)",basicSetup:{lineNumbers:!0,foldGutter:!0,highlightActiveLine:!0,bracketMatching:!0,indentOnInput:!0}})})]})}function Ute({phaseId:t,onBack:e}){const{plans:i,context:n,research:s,loading:r,error:o,refetch:l}=UZ(t),[c,u]=X.useState(null),[d,p]=X.useState(""),g=i.length>0?i[0].frontmatter.phase??t:t,O=X.useCallback(async x=>{try{const k=x.replace(/^\.planning[\\/]/,"").split(/[\\/]/),T=await fetch(`/api/plan/${k.join("/")}`);if(!T.ok)return;const A=await T.json();p(A.content),u(x)}catch(w){console.error("[phase-detail]",w)}},[]),_=X.useCallback(async x=>{if(!c)return;const k=c.replace(/^\.planning[\\/]/,"").split(/[\\/]/);if(!(await fetch(`/api/plan/${k.join("/")}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({content:x})})).ok)throw new Error("Failed to save plan")},[c]),b=X.useCallback(()=>{u(null),p(""),l()},[l]);return S.jsxs("div",{className:"space-y-6",children:[S.jsxs("button",{type:"button",onClick:e,className:Ze("flex items-center gap-2 font-mono text-[10px] uppercase tracking-widest text-muted-foreground","hover:text-foreground transition-colors"),children:[S.jsx("svg",{className:"w-3 h-3",viewBox:"0 0 16 16",fill:"none",stroke:"currentColor",strokeWidth:"2",children:S.jsx("path",{d:"M10 3L5 8l5 5"})}),"Overview"]}),S.jsxs("div",{className:"border-b border-border pb-4",children:[S.jsxs("div",{className:"flex items-baseline gap-3 mb-2",children:[S.jsxs("span",{className:"font-mono text-xs font-bold text-accent uppercase tracking-widest",children:["Phase ",t]}),S.jsx("h2",{className:"text-lg font-semibold tracking-tight text-foreground",children:g})]}),S.jsxs("div",{className:"flex gap-2",children:[n&&S.jsx("span",{className:"font-mono text-[9px] uppercase tracking-widest px-2 py-0.5 border border-success/30 text-success",children:"Context"}),s&&S.jsx("span",{className:"font-mono text-[9px] uppercase tracking-widest px-2 py-0.5 border border-success/30 text-success",children:"Research"}),!n&&!s&&!r&&S.jsx("span",{className:"font-mono text-[9px] uppercase tracking-widest px-2 py-0.5 border border-border text-muted-foreground",children:"No context"})]})]}),o&&S.jsx("div",{className:"border border-danger/30 p-4 text-danger text-sm font-mono text-xs",children:o}),r&&i.length===0&&S.jsx("div",{className:"space-y-3",children:[1,2,3].map(x=>S.jsxs("div",{className:"border border-border p-4 animate-pulse",children:[S.jsx("div",{className:"h-4 w-24 bg-muted mb-3"}),S.jsx("div",{className:"h-3 w-3/4 bg-muted mb-2"}),S.jsx("div",{className:"h-3 w-1/2 bg-muted"})]},x))}),!r&&!o&&i.length===0&&S.jsx("div",{className:"border border-border p-8 text-center",children:S.jsxs("p",{className:"font-mono text-xs text-muted-foreground",children:["No plans yet — run"," ",S.jsx("code",{className:"text-accent",children:"/maxsim:plan-phase"})]})}),i.length>0&&S.jsx("div",{className:"space-y-3",children:i.map(x=>S.jsx(HZ,{plan:x,onEdit:O},x.path))}),c&&S.jsx(Wte,{initialContent:d,filePath:c,onSave:_,onClose:b})]})}function Yte(){const{lastChange:t}=Qr(),[e,i]=X.useState([]),[n,s]=X.useState([]),[r,o]=X.useState(!0),[l,c]=X.useState(null),[u,d]=X.useState(""),[p,g]=X.useState(!1),[O,_]=X.useState(!1),b=X.useCallback(async()=>{try{c(null);const k=await fetch("/api/todos");if(!k.ok)throw new Error(`Failed to fetch todos: ${k.status}`);const T=await k.json();i(T.pending),s(T.completed)}catch(k){c(k instanceof Error?k.message:"Failed to fetch todos")}finally{o(!1)}},[]);X.useEffect(()=>{b()},[b]),X.useEffect(()=>{t>0&&b()},[t,b]);const x=X.useCallback(async()=>{const k=u.trim();if(k){g(!0);try{if(!(await fetch("/api/todos",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({text:k})})).ok)throw new Error("Failed to create todo");d(""),await b()}catch(T){c(T instanceof Error?T.message:"Failed to create todo")}finally{g(!1)}}},[u,b]),w=X.useCallback(async(k,T)=>{try{if(!(await fetch("/api/todos",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({file:k,completed:T})})).ok)throw new Error("Failed to update todo");await b()}catch(A){c(A instanceof Error?A.message:"Failed to update todo")}},[b]);return S.jsxs("div",{className:"space-y-6",children:[S.jsxs("div",{className:"flex items-center justify-between",children:[S.jsx("h2",{className:"font-mono text-xs uppercase tracking-widest text-foreground",children:"Todos"}),S.jsxs("span",{className:"font-mono text-xs text-muted-foreground",children:[e.length," pending"]})]}),S.jsxs("div",{className:"flex gap-2",children:[S.jsx("input",{type:"text",value:u,onChange:k=>d(k.target.value),onKeyDown:k=>{k.key==="Enter"&&!p&&x()},placeholder:"Add a new todo...",className:"flex-1 border border-border bg-card px-3 py-2 font-mono text-xs text-foreground placeholder:text-muted-foreground focus:border-accent focus:outline-none"}),S.jsx("button",{type:"button",onClick:x,disabled:p||!u.trim(),className:Ze("bg-accent px-4 py-2 font-mono text-[10px] uppercase tracking-widest text-foreground transition-colors","hover:opacity-80 disabled:opacity-30 disabled:cursor-not-allowed"),children:"Add"})]}),l&&S.jsx("div",{className:"border border-danger/30 px-3 py-2 font-mono text-xs text-danger",children:l}),r&&S.jsx("div",{className:"space-y-px",children:[1,2,3].map(k=>S.jsxs("div",{className:"flex items-center gap-3 bg-card px-4 py-3",children:[S.jsx("div",{className:"h-3 w-3 animate-pulse bg-muted"}),S.jsx("div",{className:"h-3 w-48 animate-pulse bg-muted"})]},k))}),!r&&S.jsx("div",{className:"space-y-1",children:e.length===0?S.jsx("p",{className:"px-4 py-6 text-center text-sm text-muted-foreground",children:"No pending todos"}):e.map(k=>S.jsxs("button",{type:"button",onClick:()=>w(k.file,!0),className:"group flex w-full items-center gap-3 px-4 py-2.5 text-left transition-colors hover:bg-card-hover border-b border-border",children:[S.jsx("span",{className:"inline-flex h-3 w-3 shrink-0 items-center justify-center border border-muted-foreground transition-colors group-hover:border-accent"}),S.jsx("span",{className:"text-sm text-foreground",children:k.text})]},k.file))}),!r&&n.length>0&&S.jsxs("div",{className:"border-t border-border pt-4",children:[S.jsxs("button",{type:"button",onClick:()=>_(!O),className:"flex w-full items-center gap-2 text-left",children:[S.jsx("svg",{className:Ze("h-3 w-3 text-muted-foreground transition-transform",O&&"rotate-90"),viewBox:"0 0 12 12",fill:"currentColor",children:S.jsx("path",{d:"M4 2l5 4-5 4z"})}),S.jsxs("span",{className:"font-mono text-xs text-muted-foreground",children:["Completed (",n.length,")"]})]}),O&&S.jsx("div",{className:"mt-2 space-y-1",children:n.map(k=>S.jsxs("button",{type:"button",onClick:()=>w(k.file,!1),className:"group flex w-full items-center gap-3 rounded-sm px-4 py-2 text-left transition-colors hover:bg-card-hover",children:[S.jsx("span",{className:"inline-flex h-4 w-4 shrink-0 items-center justify-center rounded-sm border border-success bg-success/20",children:S.jsx("svg",{className:"h-3 w-3 text-success",viewBox:"0 0 12 12",fill:"none",stroke:"currentColor",strokeWidth:"2",children:S.jsx("path",{d:"M2 6l3 3 5-5"})})}),S.jsx("span",{className:"text-sm text-muted-foreground line-through",children:k.text})]},k.file))})]})]})}function Hte({onEntryAdded:t}){const[e,i]=X.useState(!1),[n,s]=X.useState("decision"),[r,o]=X.useState(""),[l,c]=X.useState(""),[u,d]=X.useState(!1),[p,g]=X.useState(null),[O,_]=X.useState(null),b=X.useCallback(async()=>{const x=l.trim();if(x){d(!0),g(null),_(null);try{if(n==="decision"){const w=await fetch("/api/state/decision",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({phase:r.trim()||void 0,text:x})});if(!w.ok){const k=await w.json().catch(()=>({}));throw new Error(k.error||"Could not add decision")}_("Decision added")}else{const w=await fetch("/api/state/blocker",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({text:x})});if(!w.ok){const k=await w.json().catch(()=>({}));throw new Error(k.error||"Could not add blocker")}_("Blocker added")}c(""),o(""),t==null||t(),setTimeout(()=>_(null),2e3)}catch(w){g(w instanceof Error?w.message:"Failed to update STATE.md")}finally{d(!1)}}},[n,r,l,t]);return S.jsxs("div",{className:"border-t border-border pt-4",children:[S.jsxs("button",{type:"button",onClick:()=>i(!e),className:"flex w-full items-center gap-2 text-left",children:[S.jsx("svg",{className:Ze("h-3 w-3 text-muted-foreground transition-transform",e&&"rotate-90"),viewBox:"0 0 12 12",fill:"currentColor",children:S.jsx("path",{d:"M4 2l5 4-5 4z"})}),S.jsx("span",{className:"font-mono text-xs uppercase tracking-wide text-muted-foreground",children:"Add to STATE.md"})]}),e&&S.jsxs("div",{className:"mt-3 space-y-3",children:[S.jsxs("div",{className:"flex gap-1",children:[S.jsx("button",{type:"button",onClick:()=>s("decision"),className:Ze("rounded-sm px-3 py-1 font-mono text-xs transition-colors",n==="decision"?"bg-accent/20 text-accent":"text-muted-foreground hover:text-foreground"),children:"Decision"}),S.jsx("button",{type:"button",onClick:()=>s("blocker"),className:Ze("rounded-sm px-3 py-1 font-mono text-xs transition-colors",n==="blocker"?"bg-danger/20 text-danger":"text-muted-foreground hover:text-foreground"),children:"Blocker"})]}),n==="decision"&&S.jsx("input",{type:"text",value:r,onChange:x=>o(x.target.value),placeholder:"Phase (e.g. 13-06)",className:"w-full rounded-sm border border-border bg-card px-3 py-1.5 font-mono text-xs text-foreground placeholder:text-muted-foreground focus:border-accent focus:outline-none"}),S.jsx("input",{type:"text",value:l,onChange:x=>c(x.target.value),onKeyDown:x=>{x.key==="Enter"&&!u&&b()},placeholder:n==="decision"?"Decision text...":"Blocker description...",className:"w-full rounded-sm border border-border bg-card px-3 py-1.5 font-mono text-xs text-foreground placeholder:text-muted-foreground focus:border-accent focus:outline-none"}),S.jsx("button",{type:"button",onClick:b,disabled:u||!l.trim(),className:Ze("rounded-sm px-3 py-1.5 font-mono text-xs font-semibold transition-colors","disabled:opacity-40 disabled:cursor-not-allowed",n==="decision"?"bg-accent/20 text-accent hover:bg-accent/30":"bg-danger/20 text-danger hover:bg-danger/30"),children:u?"Saving...":`Add ${n==="decision"?"Decision":"Blocker"}`}),p&&S.jsx("p",{className:"text-xs text-danger",children:p}),O&&S.jsx("p",{className:"text-xs text-success",children:O})]})]})}function Fte(t){return t.map(e=>({text:e.replace(/~~(.+)~~/,"$1").replace(/\s*RESOLVED.*$/i,"").trim(),resolved:e.includes("RESOLVED")||e.startsWith("~~")&&e.endsWith("~~")}))}function Gte(){const{state:t}=xo(),[e,i]=X.useState(!1),[n,s]=X.useState(null),[r,o]=X.useState(null),[l,c]=X.useState(0),u=Fte((t==null?void 0:t.blockers)??[]),d=u.filter(_=>!_.resolved),p=u.filter(_=>_.resolved),g=X.useCallback(async _=>{s(_),o(null);try{if(!(await fetch("/api/state",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({field:"blockers",value:`~~${_}~~ RESOLVED`})})).ok)throw new Error("Failed to resolve blocker");c(x=>x+1)}catch(b){o(b instanceof Error?b.message:"Failed to resolve blocker")}finally{s(null)}},[]),O=X.useCallback(()=>{c(_=>_+1)},[]);return S.jsxs("div",{className:"space-y-6",children:[S.jsxs("div",{className:"flex items-center justify-between",children:[S.jsx("h2",{className:"font-mono text-xs uppercase tracking-widest text-foreground",children:"Blockers"}),S.jsx("span",{className:Ze("font-mono text-xs",d.length>0?"text-danger":"text-success"),children:d.length>0?`${d.length} active`:"No active blockers"})]}),r&&S.jsx("div",{className:"border border-danger/30 px-3 py-2 font-mono text-xs text-danger",children:r}),d.length===0?S.jsx("div",{className:"border border-success/20 px-4 py-6 text-center",children:S.jsx("p",{className:"font-mono text-xs text-success",children:"No active blockers"})}):S.jsx("div",{className:"border border-border divide-y divide-border",children:d.map(_=>S.jsxs("div",{className:"flex items-start gap-3 bg-card px-4 py-3",children:[S.jsx("span",{className:"mt-1.5 inline-block h-1.5 w-1.5 shrink-0 bg-danger"}),S.jsx("div",{className:"flex-1",children:S.jsx("p",{className:"text-sm text-foreground",children:_.text})}),S.jsx("button",{type:"button",onClick:()=>g(_.text),disabled:n===_.text,className:Ze("shrink-0 border border-success/30 px-3 py-1 font-mono text-[10px] uppercase tracking-widest transition-colors","text-success hover:bg-success/10","disabled:opacity-30 disabled:cursor-not-allowed"),children:n===_.text?"...":"Resolve"})]},_.text))}),p.length>0&&S.jsxs("div",{className:"border-t border-border pt-4",children:[S.jsxs("button",{type:"button",onClick:()=>i(!e),className:"flex w-full items-center gap-2 text-left",children:[S.jsx("svg",{className:Ze("h-3 w-3 text-muted-foreground transition-transform",e&&"rotate-90"),viewBox:"0 0 12 12",fill:"currentColor",children:S.jsx("path",{d:"M4 2l5 4-5 4z"})}),S.jsxs("span",{className:"font-mono text-xs text-muted-foreground",children:["Resolved (",p.length,")"]})]}),e&&S.jsx("div",{className:"mt-2 space-y-1",children:p.map(_=>S.jsxs("div",{className:"flex items-center gap-3 rounded-sm px-4 py-2",children:[S.jsx("span",{className:"inline-block h-1.5 w-1.5 shrink-0 bg-muted"}),S.jsx("p",{className:"text-sm text-muted-foreground line-through",children:_.text})]},_.text))})]}),S.jsx(Hte,{onEntryAdded:O})]},l)}function Kte({sidebar:t,children:e,mobileMenuOpen:i=!1,onMobileMenuToggle:n,onMobileMenuClose:s,headerRight:r,simpleMode:o=!1}){return S.jsxs("div",{className:"flex h-screen flex-col overflow-hidden md:flex-row",children:[S.jsxs("div",{className:Ze("flex shrink-0 items-center justify-between border-b bg-card px-4 py-3 md:hidden",o?"border-simple-accent/30 bg-simple-accent/5":"border-border"),children:[S.jsxs("span",{className:"text-sm font-bold tracking-tight text-foreground",children:["MAXSIM",S.jsx("span",{className:"ml-1.5 text-xs font-normal text-muted-foreground",children:"Dashboard"})]}),S.jsxs("div",{className:"flex items-center gap-2",children:[r,S.jsx("button",{type:"button",onClick:n,className:"flex h-8 w-8 items-center justify-center text-muted-foreground transition-colors hover:text-foreground","aria-label":"Toggle menu",children:i?S.jsx("svg",{className:"h-4 w-4",viewBox:"0 0 16 16",fill:"none",stroke:"currentColor",strokeWidth:"2",children:S.jsx("path",{d:"M3 3l10 10M13 3L3 13"})}):S.jsx("svg",{className:"h-4 w-4",viewBox:"0 0 16 16",fill:"none",stroke:"currentColor",strokeWidth:"2",children:S.jsx("path",{d:"M2 4h12M2 8h12M2 12h12"})})})]})]}),i&&S.jsxs("div",{className:"fixed inset-0 z-50 md:hidden",children:[S.jsx("div",{className:"absolute inset-0 bg-black/60",onClick:s}),S.jsx("div",{className:"absolute left-0 top-0 h-full w-64",children:t})]}),S.jsx("div",{className:"hidden shrink-0 md:flex",children:t}),S.jsxs("main",{className:"flex min-h-0 flex-1 flex-col overflow-hidden",children:[o&&S.jsxs("div",{className:"hidden md:flex shrink-0 items-center justify-between border-b border-simple-accent/30 bg-simple-accent/5 px-6 py-3",children:[S.jsxs("span",{className:"text-sm font-bold tracking-tight text-foreground",children:["MAXSIM ",S.jsx("span",{className:"ml-1.5 text-xs font-normal text-muted-foreground",children:"Simple Mode"})]}),r]}),e]})]})}var xc={},hy,dP;function Jte(){return dP||(dP=1,hy=function(){return typeof Promise=="function"&&Promise.prototype&&Promise.prototype.then}),hy}var uy={},sa={},pP;function Dl(){if(pP)return sa;pP=1;let t;const e=[0,26,44,70,100,134,172,196,242,292,346,404,466,532,581,655,733,815,901,991,1085,1156,1258,1364,1474,1588,1706,1828,1921,2051,2185,2323,2465,2611,2761,2876,3034,3196,3362,3532,3706];return sa.getSymbolSize=function(n){if(!n)throw new Error('"version" cannot be null or undefined');if(n<1||n>40)throw new Error('"version" should be in range from 1 to 40');return n*4+17},sa.getSymbolTotalCodewords=function(n){return e[n]},sa.getBCHDigit=function(i){let n=0;for(;i!==0;)n++,i>>>=1;return n},sa.setToSJISFunction=function(n){if(typeof n!="function")throw new Error('"toSJISFunc" is not a valid function.');t=n},sa.isKanjiModeEnabled=function(){return typeof t<"u"},sa.toSJIS=function(n){return t(n)},sa}var fy={},mP;function Aw(){return mP||(mP=1,(function(t){t.L={bit:1},t.M={bit:0},t.Q={bit:3},t.H={bit:2};function e(i){if(typeof i!="string")throw new Error("Param is not a string");switch(i.toLowerCase()){case"l":case"low":return t.L;case"m":case"medium":return t.M;case"q":case"quartile":return t.Q;case"h":case"high":return t.H;default:throw new Error("Unknown EC Level: "+i)}}t.isValid=function(n){return n&&typeof n.bit<"u"&&n.bit>=0&&n.bit<4},t.from=function(n,s){if(t.isValid(n))return n;try{return e(n)}catch{return s}}})(fy)),fy}var dy,gP;function eie(){if(gP)return dy;gP=1;function t(){this.buffer=[],this.length=0}return t.prototype={get:function(e){const i=Math.floor(e/8);return(this.buffer[i]>>>7-e%8&1)===1},put:function(e,i){for(let n=0;n>>i-n-1&1)===1)},getLengthInBits:function(){return this.length},putBit:function(e){const i=Math.floor(this.length/8);this.buffer.length<=i&&this.buffer.push(0),e&&(this.buffer[i]|=128>>>this.length%8),this.length++}},dy=t,dy}var py,OP;function tie(){if(OP)return py;OP=1;function t(e){if(!e||e<1)throw new Error("BitMatrix size must be defined and greater than 0");this.size=e,this.data=new Uint8Array(e*e),this.reservedBit=new Uint8Array(e*e)}return t.prototype.set=function(e,i,n,s){const r=e*this.size+i;this.data[r]=n,s&&(this.reservedBit[r]=!0)},t.prototype.get=function(e,i){return this.data[e*this.size+i]},t.prototype.xor=function(e,i,n){this.data[e*this.size+i]^=n},t.prototype.isReserved=function(e,i){return this.reservedBit[e*this.size+i]},py=t,py}var my={},vP;function iie(){return vP||(vP=1,(function(t){const e=Dl().getSymbolSize;t.getRowColCoords=function(n){if(n===1)return[];const s=Math.floor(n/7)+2,r=e(n),o=r===145?26:Math.ceil((r-13)/(2*s-2))*2,l=[r-7];for(let c=1;c=0&&s<=7},t.from=function(s){return t.isValid(s)?parseInt(s,10):void 0},t.getPenaltyN1=function(s){const r=s.size;let o=0,l=0,c=0,u=null,d=null;for(let p=0;p=5&&(o+=e.N1+(l-5)),u=O,l=1),O=s.get(g,p),O===d?c++:(c>=5&&(o+=e.N1+(c-5)),d=O,c=1)}l>=5&&(o+=e.N1+(l-5)),c>=5&&(o+=e.N1+(c-5))}return o},t.getPenaltyN2=function(s){const r=s.size;let o=0;for(let l=0;l=10&&(l===1488||l===93)&&o++,c=c<<1&2047|s.get(d,u),d>=10&&(c===1488||c===93)&&o++}return o*e.N3},t.getPenaltyN4=function(s){let r=0;const o=s.data.length;for(let c=0;c=0;){const o=r[0];for(let c=0;c0){const l=new Uint8Array(this.degree);return l.set(r,o),l}return r},_y=e,_y}var yy={},by={},Sy={},CP;function y6(){return CP||(CP=1,Sy.isValid=function(e){return!isNaN(e)&&e>=1&&e<=40}),Sy}var ar={},kP;function b6(){if(kP)return ar;kP=1;const t="[0-9]+",e="[A-Z $%*+\\-./:]+";let i="(?:[u3000-u303F]|[u3040-u309F]|[u30A0-u30FF]|[uFF00-uFFEF]|[u4E00-u9FAF]|[u2605-u2606]|[u2190-u2195]|u203B|[u2010u2015u2018u2019u2025u2026u201Cu201Du2225u2260]|[u0391-u0451]|[u00A7u00A8u00B1u00B4u00D7u00F7])+";i=i.replace(/u/g,"\\u");const n="(?:(?![A-Z0-9 $%*+\\-./:]|"+i+`)(?:.|[\r +]))+`;ar.KANJI=new RegExp(i,"g"),ar.BYTE_KANJI=new RegExp("[^A-Z0-9 $%*+\\-./:]+","g"),ar.BYTE=new RegExp(n,"g"),ar.NUMERIC=new RegExp(t,"g"),ar.ALPHANUMERIC=new RegExp(e,"g");const s=new RegExp("^"+i+"$"),r=new RegExp("^"+t+"$"),o=new RegExp("^[A-Z0-9 $%*+\\-./:]+$");return ar.testKanji=function(c){return s.test(c)},ar.testNumeric=function(c){return r.test(c)},ar.testAlphanumeric=function(c){return o.test(c)},ar}var TP;function Bl(){return TP||(TP=1,(function(t){const e=y6(),i=b6();t.NUMERIC={id:"Numeric",bit:1,ccBits:[10,12,14]},t.ALPHANUMERIC={id:"Alphanumeric",bit:2,ccBits:[9,11,13]},t.BYTE={id:"Byte",bit:4,ccBits:[8,16,16]},t.KANJI={id:"Kanji",bit:8,ccBits:[8,10,12]},t.MIXED={bit:-1},t.getCharCountIndicator=function(r,o){if(!r.ccBits)throw new Error("Invalid mode: "+r);if(!e.isValid(o))throw new Error("Invalid version: "+o);return o>=1&&o<10?r.ccBits[0]:o<27?r.ccBits[1]:r.ccBits[2]},t.getBestModeForData=function(r){return i.testNumeric(r)?t.NUMERIC:i.testAlphanumeric(r)?t.ALPHANUMERIC:i.testKanji(r)?t.KANJI:t.BYTE},t.toString=function(r){if(r&&r.id)return r.id;throw new Error("Invalid mode")},t.isValid=function(r){return r&&r.bit&&r.ccBits};function n(s){if(typeof s!="string")throw new Error("Param is not a string");switch(s.toLowerCase()){case"numeric":return t.NUMERIC;case"alphanumeric":return t.ALPHANUMERIC;case"kanji":return t.KANJI;case"byte":return t.BYTE;default:throw new Error("Unknown mode: "+s)}}t.from=function(r,o){if(t.isValid(r))return r;try{return n(r)}catch{return o}}})(by)),by}var AP;function lie(){return AP||(AP=1,(function(t){const e=Dl(),i=_6(),n=Aw(),s=Bl(),r=y6(),o=7973,l=e.getBCHDigit(o);function c(g,O,_){for(let b=1;b<=40;b++)if(O<=t.getCapacity(b,_,g))return b}function u(g,O){return s.getCharCountIndicator(g,O)+4}function d(g,O){let _=0;return g.forEach(function(b){const x=u(b.mode,O);_+=x+b.getBitsLength()}),_}function p(g,O){for(let _=1;_<=40;_++)if(d(g,_)<=t.getCapacity(_,O,s.MIXED))return _}t.from=function(O,_){return r.isValid(O)?parseInt(O,10):_},t.getCapacity=function(O,_,b){if(!r.isValid(O))throw new Error("Invalid QR Code version");typeof b>"u"&&(b=s.BYTE);const x=e.getSymbolTotalCodewords(O),w=i.getTotalCodewordsCount(O,_),k=(x-w)*8;if(b===s.MIXED)return k;const T=k-u(b,O);switch(b){case s.NUMERIC:return Math.floor(T/10*3);case s.ALPHANUMERIC:return Math.floor(T/11*2);case s.KANJI:return Math.floor(T/13);case s.BYTE:default:return Math.floor(T/8)}},t.getBestVersionForData=function(O,_){let b;const x=n.from(_,n.M);if(Array.isArray(O)){if(O.length>1)return p(O,x);if(O.length===0)return 1;b=O[0]}else b=O;return c(b.mode,b.getLength(),x)},t.getEncodedBits=function(O){if(!r.isValid(O)||O<7)throw new Error("Invalid QR Code version");let _=O<<12;for(;e.getBCHDigit(_)-l>=0;)_^=o<=0;)c^=e<0&&(r=this.data.substr(s),o=parseInt(r,10),n.put(o,l*3+1))},Cy=e,Cy}var ky,PP;function uie(){if(PP)return ky;PP=1;const t=Bl(),e=["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"," ","$","%","*","+","-",".","/",":"];function i(n){this.mode=t.ALPHANUMERIC,this.data=n}return i.getBitsLength=function(s){return 11*Math.floor(s/2)+6*(s%2)},i.prototype.getLength=function(){return this.data.length},i.prototype.getBitsLength=function(){return i.getBitsLength(this.data.length)},i.prototype.write=function(s){let r;for(r=0;r+2<=this.data.length;r+=2){let o=e.indexOf(this.data[r])*45;o+=e.indexOf(this.data[r+1]),s.put(o,11)}this.data.length%2&&s.put(e.indexOf(this.data[r]),6)},ky=i,ky}var Ty,RP;function fie(){if(RP)return Ty;RP=1;const t=Bl();function e(i){this.mode=t.BYTE,typeof i=="string"?this.data=new TextEncoder().encode(i):this.data=new Uint8Array(i)}return e.getBitsLength=function(n){return n*8},e.prototype.getLength=function(){return this.data.length},e.prototype.getBitsLength=function(){return e.getBitsLength(this.data.length)},e.prototype.write=function(i){for(let n=0,s=this.data.length;n=33088&&r<=40956)r-=33088;else if(r>=57408&&r<=60351)r-=49472;else throw new Error("Invalid SJIS character: "+this.data[s]+` +Make sure your charset is UTF-8`);r=(r>>>8&255)*192+(r&255),n.put(r,13)}},Ay=i,Ay}var Ey={exports:{}},LP;function pie(){return LP||(LP=1,(function(t){var e={single_source_shortest_paths:function(i,n,s){var r={},o={};o[n]=0;var l=e.PriorityQueue.make();l.push(n,0);for(var c,u,d,p,g,O,_,b,x;!l.empty();){c=l.pop(),u=c.value,p=c.cost,g=i[u]||{};for(d in g)g.hasOwnProperty(d)&&(O=g[d],_=p+O,b=o[d],x=typeof o[d]>"u",(x||b>_)&&(o[d]=_,l.push(d,_),r[d]=u))}if(typeof s<"u"&&typeof o[s]>"u"){var w=["Could not find a path from ",n," to ",s,"."].join("");throw new Error(w)}return r},extract_shortest_path_from_predecessor_list:function(i,n){for(var s=[],r=n;r;)s.push(r),i[r],r=i[r];return s.reverse(),s},find_path:function(i,n,s){var r=e.single_source_shortest_paths(i,n,s);return e.extract_shortest_path_from_predecessor_list(r,s)},PriorityQueue:{make:function(i){var n=e.PriorityQueue,s={},r;i=i||{};for(r in n)n.hasOwnProperty(r)&&(s[r]=n[r]);return s.queue=[],s.sorter=i.sorter||n.default_sorter,s},default_sorter:function(i,n){return i.cost-n.cost},push:function(i,n){var s={value:i,cost:n};this.queue.push(s),this.queue.sort(this.sorter)},pop:function(){return this.queue.shift()},empty:function(){return this.queue.length===0}}};t.exports=e})(Ey)),Ey.exports}var DP;function mie(){return DP||(DP=1,(function(t){const e=Bl(),i=hie(),n=uie(),s=fie(),r=die(),o=b6(),l=Dl(),c=pie();function u(w){return unescape(encodeURIComponent(w)).length}function d(w,k,T){const A=[];let Q;for(;(Q=w.exec(T))!==null;)A.push({data:Q[0],index:Q.index,mode:k,length:Q[0].length});return A}function p(w){const k=d(o.NUMERIC,e.NUMERIC,w),T=d(o.ALPHANUMERIC,e.ALPHANUMERIC,w);let A,Q;return l.isKanjiModeEnabled()?(A=d(o.BYTE,e.BYTE,w),Q=d(o.KANJI,e.KANJI,w)):(A=d(o.BYTE_KANJI,e.BYTE,w),Q=[]),k.concat(T,A,Q).sort(function(N,z){return N.index-z.index}).map(function(N){return{data:N.data,mode:N.mode,length:N.length}})}function g(w,k){switch(k){case e.NUMERIC:return i.getBitsLength(w);case e.ALPHANUMERIC:return n.getBitsLength(w);case e.KANJI:return r.getBitsLength(w);case e.BYTE:return s.getBitsLength(w)}}function O(w){return w.reduce(function(k,T){const A=k.length-1>=0?k[k.length-1]:null;return A&&A.mode===T.mode?(k[k.length-1].data+=T.data,k):(k.push(T),k)},[])}function _(w){const k=[];for(let T=0;T=0&&B<=6&&(j===0||j===6)||j>=0&&j<=6&&(B===0||B===6)||B>=2&&B<=4&&j>=2&&j<=4?E.set(U+B,R+j,!0,!0):E.set(U+B,R+j,!1,!0))}}function _(E){const N=E.size;for(let z=8;z>B&1)===1,E.set(J,U,R,!0),E.set(U,J,R,!0)}function w(E,N,z){const q=E.size,J=d.getEncodedBits(N,z);let U,R;for(U=0;U<15;U++)R=(J>>U&1)===1,U<6?E.set(U,8,R,!0):U<8?E.set(U+1,8,R,!0):E.set(q-15+U,8,R,!0),U<8?E.set(8,q-U-1,R,!0):U<9?E.set(8,15-U-1+1,R,!0):E.set(8,15-U-1,R,!0);E.set(q-8,8,1,!0)}function k(E,N){const z=E.size;let q=-1,J=z-1,U=7,R=0;for(let B=z-1;B>0;B-=2)for(B===6&&B--;;){for(let j=0;j<2;j++)if(!E.isReserved(J,B-j)){let $=!1;R>>U&1)===1),E.set(J,B-j,$),U--,U===-1&&(R++,U=7)}if(J+=q,J<0||z<=J){J-=q,q=-q;break}}}function T(E,N,z){const q=new i;z.forEach(function(j){q.put(j.mode.bit,4),q.put(j.getLength(),p.getCharCountIndicator(j.mode,E)),j.write(q)});const J=t.getSymbolTotalCodewords(E),U=l.getTotalCodewordsCount(E,N),R=(J-U)*8;for(q.getLengthInBits()+4<=R&&q.put(0,4);q.getLengthInBits()%8!==0;)q.putBit(0);const B=(R-q.getLengthInBits())/8;for(let j=0;j=7&&x(j,z),k(j,R),isNaN(q)&&(q=o.getBestMask(j,w.bind(null,j,N))),o.applyMask(q,j),w(j,N,q),{modules:j,version:z,errorCorrectionLevel:N,maskPattern:q,segments:J}}return uy.create=function(z,N){if(typeof z>"u"||z==="")throw new Error("No input text");let q=e.M,J,U;return typeof N<"u"&&(q=e.from(N.errorCorrectionLevel,e.M),J=u.from(N.version),U=o.from(N.maskPattern),N.toSJISFunc&&t.setToSJISFunction(N.toSJISFunc)),Q(z,J,q,U)},uy}var My={},Py={},$P;function S6(){return $P||($P=1,(function(t){function e(i){if(typeof i=="number"&&(i=i.toString()),typeof i!="string")throw new Error("Color should be defined as hex string");let n=i.slice().replace("#","").split("");if(n.length<3||n.length===5||n.length>8)throw new Error("Invalid hex color: "+i);(n.length===3||n.length===4)&&(n=Array.prototype.concat.apply([],n.map(function(s){return[s,s]}))),n.length===6&&n.push("F","F");const r=parseInt(n.join(""),16);return{r:r>>24&255,g:r>>16&255,b:r>>8&255,a:r&255,hex:"#"+n.slice(0,6).join("")}}t.getOptions=function(n){n||(n={}),n.color||(n.color={});const r=typeof n.margin>"u"||n.margin===null||n.margin<0?4:n.margin,s=n.width&&n.width>=21?n.width:void 0,o=n.scale||4;return{width:s,scale:s?4:o,margin:r,color:{dark:e(n.color.dark||"#000000ff"),light:e(n.color.light||"#ffffffff")},type:n.type,rendererOpts:n.rendererOpts||{}}},t.getScale=function(n,r){return r.width&&r.width>=n+r.margin*2?r.width/(n+r.margin*2):r.scale},t.getImageWidth=function(n,r){const s=t.getScale(n,r);return Math.floor((n+r.margin*2)*s)},t.qrToImageData=function(n,r,s){const o=r.modules.size,l=r.modules.data,c=t.getScale(o,s),u=Math.floor((o+s.margin*2)*c),d=s.margin*c,p=[s.color.light,s.color.dark];for(let g=0;g=d&&O>=d&&g"u"&&(!o||!o.getContext)&&(c=o,o=void 0),o||(u=n()),c=e.getOptions(c);const d=e.getImageWidth(s.modules.size,c),p=u.getContext("2d"),g=p.createImageData(d,d);return e.qrToImageData(g.data,s,c),i(p,u,d),p.putImageData(g,0,0),u},t.renderToDataURL=function(s,o,l){let c=l;typeof c>"u"&&(!o||!o.getContext)&&(c=o,o=void 0),c||(c={});const u=t.render(s,o,c),d=c.type||"image/png",p=c.rendererOpts||{};return u.toDataURL(d,p.quality)}})(My)),My}var Ry={},NP;function vie(){if(NP)return Ry;NP=1;const t=S6();function e(r,s){const o=r.a/255,l=s+'="'+r.hex+'"';return o<1?l+" "+s+'-opacity="'+o.toFixed(2).slice(1)+'"':l}function i(r,s,o){let l=r+s;return typeof o<"u"&&(l+=" "+o),l}function n(r,s,o){let l="",c=0,u=!1,d=0;for(let p=0;p0&&g>0&&r[p-1]||(l+=u?i("M",g+o,.5+O+o):i("m",c,0),c=0,u=!1),g+1':"",O="',_='viewBox="0 0 '+p+" "+p+'"',x=''+g+O+` -`;return typeof l=="function"&&l(null,x),x},Ry}var jP;function _ie(){if(jP)return xc;jP=1;const t=Jte(),e=gie(),i=Oie(),n=vie();function r(s,o,l,c,u){const d=[].slice.call(arguments,1),p=d.length,g=typeof d[p-1]=="function";if(!g&&!t())throw new Error("Callback required as last argument");if(g){if(p<2)throw new Error("Too few arguments provided");p===2?(u=l,l=o,o=c=void 0):p===3&&(o.getContext&&typeof u>"u"?(u=c,c=void 0):(u=c,c=l,l=o,o=void 0))}else{if(p<1)throw new Error("Too few arguments provided");return p===1?(l=o,o=c=void 0):p===2&&!o.getContext&&(c=l,l=o,o=void 0),new Promise(function(O,_){try{const b=e.create(l,c);O(s(b,o,c))}catch(b){_(b)}})}try{const O=e.create(l,c);u(null,s(O,o,c))}catch(O){u(O)}}return xc.create=e.create,xc.toCanvas=r.bind(null,i.render),xc.toDataURL=r.bind(null,i.renderToDataURL),xc.toString=r.bind(null,function(s,o,l){return n.render(s,l)}),xc}var yie=_ie();const IP=WS(yie);function bie(){const[t,e]=Z.useState(null),[i,n]=Z.useState(!1),[r,s]=Z.useState(null),[o,l]=Z.useState(null);Z.useEffect(()=>{fetch("/api/server-info").then(p=>p.json()).then(p=>e(p)).catch(()=>{})},[]),Z.useEffect(()=>{t!=null&&t.tailscaleUrl&&IP.toDataURL(t.tailscaleUrl,{width:192,margin:2}).then(s).catch(()=>{}),t!=null&&t.networkUrl&&IP.toDataURL(t.networkUrl,{width:192,margin:2}).then(l).catch(()=>{})},[t==null?void 0:t.tailscaleUrl,t==null?void 0:t.networkUrl]);const c=!!(t!=null&&t.tailscaleUrl),u=!!(t!=null&&t.networkUrl),d=c||u;return S.jsxs("div",{className:"relative border-t border-border px-1 py-2",children:[i&&S.jsxs("div",{className:"absolute bottom-full left-2 right-2 mb-2 border border-border bg-card shadow-xl",children:[c&&S.jsxs("div",{className:"p-3",children:[S.jsxs("div",{className:"mb-2 flex items-center gap-1.5",children:[S.jsx("span",{className:"inline-block h-1.5 w-1.5 bg-success"}),S.jsx("p",{className:"font-mono text-[9px] uppercase tracking-widest text-success",children:"Tailscale — Secure"})]}),S.jsx("p",{className:"mb-3 break-all font-mono text-[11px] text-foreground",children:t.tailscaleUrl}),r&&S.jsx("img",{src:r,alt:"QR code for Tailscale access",width:192,height:192,className:"w-full"}),S.jsx("p",{className:"mt-2 font-mono text-[9px] text-muted-foreground",children:"Only visible to your Tailscale devices"})]}),u&&S.jsxs("div",{className:`p-3 ${c?"border-t border-border":""}`,children:[S.jsx("p",{className:"mb-0.5 font-mono text-[9px] uppercase tracking-widest text-muted-foreground",children:"Local Network"}),S.jsx("p",{className:"mb-3 break-all font-mono text-[11px] text-foreground",children:t.networkUrl}),o&&S.jsx("img",{src:o,alt:"QR code for local network access",width:192,height:192,className:"w-full"}),S.jsx("p",{className:"mt-2 font-mono text-[9px] text-muted-foreground",children:"Anyone on your local network can access this"})]}),!d&&S.jsxs("div",{className:"p-3",children:[S.jsxs("div",{className:"mb-2 flex items-center gap-1.5",children:[S.jsx("span",{className:"inline-block h-1.5 w-1.5 bg-muted-foreground"}),S.jsx("p",{className:"font-mono text-[9px] uppercase tracking-widest text-muted-foreground",children:"Remote Access"})]}),S.jsx("p",{className:"mb-3 font-mono text-[11px] leading-relaxed text-muted-foreground",children:"Install Tailscale on this device and your phone to securely access the dashboard from anywhere — no port forwarding, no public URLs."}),S.jsx("a",{href:"https://tailscale.com/download",target:"_blank",rel:"noopener noreferrer",className:"block w-full border border-border px-3 py-1.5 text-center font-mono text-[10px] uppercase tracking-widest text-muted-foreground transition-colors hover:border-accent hover:text-accent",children:"Get Tailscale →"}),S.jsx("p",{className:"mt-2 font-mono text-[9px] text-muted-foreground",children:"Free · E2E encrypted · No account sharing"})]})]}),S.jsxs("button",{type:"button",onClick:()=>n(p=>!p),title:c?"Open on another device via Tailscale":u?"Open on another device via local network":"Set up remote access",className:"flex w-full items-center gap-2.5 rounded-sm px-3 py-2 text-left text-sm transition-colors hover:bg-card-hover text-muted-foreground",children:[S.jsx(Sie,{active:c}),S.jsx("span",{className:"font-mono text-xs uppercase tracking-wide",children:"Share"}),c&&S.jsx("span",{className:"ml-auto inline-block h-1.5 w-1.5 bg-success"})]})]})}function Sie({active:t}){return S.jsxs("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:[S.jsx("circle",{cx:"18",cy:"5",r:"3"}),S.jsx("circle",{cx:"6",cy:"12",r:"3"}),S.jsx("circle",{cx:"18",cy:"19",r:"3"}),S.jsx("line",{x1:"8.59",y1:"13.51",x2:"15.42",y2:"17.49"}),S.jsx("line",{x1:"15.41",y1:"6.51",x2:"8.59",y2:"10.49"})]})}function xie(t){switch(t){case"complete":return"bg-success";case"partial":return"bg-accent";case"planned":case"researched":case"discussed":return"bg-muted-foreground/50";default:return"bg-muted"}}function wie({activeView:t,activePhaseId:e,onNavigate:i,logoAction:n}){const{roadmap:r,state:s,todos:o}=Rl(),{connected:l}=Ea(),[c,u]=Z.useState(!1);Z.useEffect(()=>{if(!c)return;const b=setTimeout(()=>u(!1),3e3);return()=>clearTimeout(b)},[c]);async function d(){if(!c){u(!0);return}try{await fetch("/api/shutdown",{method:"POST"})}catch{}}const p=((r==null?void 0:r.phases)??[]).map(b=>({number:b.number,name:b.name,goal:b.goal??"",dependsOn:b.depends_on?[b.depends_on]:[],planCount:b.plan_count,summaryCount:b.summary_count,diskStatus:b.disk_status,roadmapComplete:b.roadmap_complete,hasContext:b.has_context,hasResearch:b.has_research})),g=(r==null?void 0:r.current_phase)??null,O=(s==null?void 0:s.blockers.filter(b=>!b.includes("RESOLVED")).length)??0,_=(o==null?void 0:o.pending.length)??0;return S.jsxs("aside",{className:"flex h-full w-56 shrink-0 flex-col border-r border-border bg-card",children:[S.jsxs("div",{className:"border-b border-border px-5 py-4 flex items-center justify-between",children:[S.jsxs("button",{type:"button",onClick:()=>i("overview"),className:"flex flex-col gap-0.5 text-left",children:[S.jsx("span",{className:"text-sm font-bold tracking-tight text-foreground",children:"MAXSIM"}),S.jsx("span",{className:"text-xs text-muted-foreground",children:"Dashboard"})]}),n]}),S.jsxs("div",{className:"flex-1 overflow-y-auto",children:[S.jsxs("div",{className:"flex items-center gap-2 px-5 py-3",children:[S.jsx("span",{className:"block w-4 h-px bg-border"}),S.jsx("span",{className:"text-xs uppercase tracking-widest text-muted-foreground",children:"Phases"})]}),S.jsx("nav",{className:"flex flex-col",children:p.map(b=>{const x=t==="phase"&&e===b.number,w=b.number===g;return S.jsxs("button",{type:"button",onClick:()=>i("phase",b.number),className:Fe("flex w-full items-center gap-2.5 px-5 py-2 text-left transition-colors duration-200",x?"bg-card-hover border-l-2 border-l-accent text-foreground":"border-l-2 border-l-transparent text-muted-foreground hover:text-foreground hover:bg-card-hover"),children:[S.jsx("span",{className:Fe("inline-block h-1.5 w-1.5 shrink-0",xie(b.diskStatus))}),S.jsx("span",{className:Fe("font-mono text-xs tabular-nums shrink-0",w||x?"text-accent":""),children:b.number}),S.jsx("span",{className:"truncate text-xs",children:b.name})]},b.number)})})]}),S.jsxs("div",{className:"border-t border-border",children:[S.jsxs("button",{type:"button",onClick:()=>i("todos"),className:Fe("flex w-full items-center justify-between px-5 py-2.5 text-left transition-colors duration-200",t==="todos"?"text-foreground bg-card-hover":"text-muted-foreground hover:text-foreground hover:bg-card-hover"),children:[S.jsx("span",{className:"text-sm",children:"Todos"}),_>0&&S.jsx("span",{className:"font-mono text-xs text-warning tabular-nums",children:_})]}),S.jsxs("button",{type:"button",onClick:()=>i("blockers"),className:Fe("flex w-full items-center justify-between border-t border-border px-5 py-2.5 text-left transition-colors duration-200",t==="blockers"?"text-foreground bg-card-hover":"text-muted-foreground hover:text-foreground hover:bg-card-hover"),children:[S.jsx("span",{className:"text-sm",children:"Blockers"}),O>0&&S.jsx("span",{className:"font-mono text-xs text-danger tabular-nums",children:O})]})]}),S.jsx("div",{className:"border-t border-border",children:S.jsxs("button",{type:"button",onClick:()=>i("terminal"),className:Fe("flex w-full items-center gap-2 px-5 py-2.5 text-left transition-colors duration-200",t==="terminal"?"text-foreground bg-card-hover":"text-muted-foreground hover:text-foreground hover:bg-card-hover"),children:[S.jsxs("span",{className:"font-mono text-xs",children:[">","_"]}),S.jsx("span",{className:"text-sm",children:"Terminal"})]})}),S.jsx(bie,{}),S.jsx("div",{className:"border-t border-border px-5 py-3",children:S.jsxs("div",{className:"flex items-center justify-between gap-2",children:[S.jsxs("div",{className:"flex items-center gap-2",children:[S.jsx("span",{className:Fe("inline-block h-1.5 w-1.5",l?"bg-success":"bg-danger")}),S.jsx("span",{className:"text-xs text-muted-foreground",children:l?"Connected":"Disconnected"})]}),S.jsxs("button",{type:"button",onClick:d,title:c?"Click again to confirm shutdown":"Shut down dashboard server",className:Fe("flex items-center gap-1 rounded px-1.5 py-0.5 text-xs transition-colors duration-150",c?"bg-danger/15 text-danger hover:bg-danger/25":"text-muted-foreground hover:text-foreground hover:bg-card-hover"),children:[S.jsxs("svg",{viewBox:"0 0 16 16",fill:"none",stroke:"currentColor",strokeWidth:"1.5",className:"h-3 w-3 shrink-0","aria-hidden":"true",children:[S.jsx("path",{d:"M6 2.5A5.5 5.5 0 1 0 10 3",strokeLinecap:"round"}),S.jsx("path",{d:"M8 1v5",strokeLinecap:"round"})]}),c&&S.jsx("span",{children:"Confirm"})]})]})})]})}/** +`);const R=T(N,z,J),B=t.getSymbolSize(N),j=new n(B);return O(j,N),_(j),b(j,N),w(j,z,0),N>=7&&x(j,N),k(j,R),isNaN(q)&&(q=o.getBestMask(j,w.bind(null,j,z))),o.applyMask(q,j),w(j,z,q),{modules:j,version:N,errorCorrectionLevel:z,maskPattern:q,segments:J}}return uy.create=function(N,z){if(typeof N>"u"||N==="")throw new Error("No input text");let q=e.M,J,U;return typeof z<"u"&&(q=e.from(z.errorCorrectionLevel,e.M),J=u.from(z.version),U=o.from(z.maskPattern),z.toSJISFunc&&t.setToSJISFunction(z.toSJISFunc)),Q(N,J,q,U)},uy}var My={},Py={},$P;function S6(){return $P||($P=1,(function(t){function e(i){if(typeof i=="number"&&(i=i.toString()),typeof i!="string")throw new Error("Color should be defined as hex string");let n=i.slice().replace("#","").split("");if(n.length<3||n.length===5||n.length>8)throw new Error("Invalid hex color: "+i);(n.length===3||n.length===4)&&(n=Array.prototype.concat.apply([],n.map(function(r){return[r,r]}))),n.length===6&&n.push("F","F");const s=parseInt(n.join(""),16);return{r:s>>24&255,g:s>>16&255,b:s>>8&255,a:s&255,hex:"#"+n.slice(0,6).join("")}}t.getOptions=function(n){n||(n={}),n.color||(n.color={});const s=typeof n.margin>"u"||n.margin===null||n.margin<0?4:n.margin,r=n.width&&n.width>=21?n.width:void 0,o=n.scale||4;return{width:r,scale:r?4:o,margin:s,color:{dark:e(n.color.dark||"#000000ff"),light:e(n.color.light||"#ffffffff")},type:n.type,rendererOpts:n.rendererOpts||{}}},t.getScale=function(n,s){return s.width&&s.width>=n+s.margin*2?s.width/(n+s.margin*2):s.scale},t.getImageWidth=function(n,s){const r=t.getScale(n,s);return Math.floor((n+s.margin*2)*r)},t.qrToImageData=function(n,s,r){const o=s.modules.size,l=s.modules.data,c=t.getScale(o,r),u=Math.floor((o+r.margin*2)*c),d=r.margin*c,p=[r.color.light,r.color.dark];for(let g=0;g=d&&O>=d&&g"u"&&(!o||!o.getContext)&&(c=o,o=void 0),o||(u=n()),c=e.getOptions(c);const d=e.getImageWidth(r.modules.size,c),p=u.getContext("2d"),g=p.createImageData(d,d);return e.qrToImageData(g.data,r,c),i(p,u,d),p.putImageData(g,0,0),u},t.renderToDataURL=function(r,o,l){let c=l;typeof c>"u"&&(!o||!o.getContext)&&(c=o,o=void 0),c||(c={});const u=t.render(r,o,c),d=c.type||"image/png",p=c.rendererOpts||{};return u.toDataURL(d,p.quality)}})(My)),My}var Ry={},zP;function vie(){if(zP)return Ry;zP=1;const t=S6();function e(s,r){const o=s.a/255,l=r+'="'+s.hex+'"';return o<1?l+" "+r+'-opacity="'+o.toFixed(2).slice(1)+'"':l}function i(s,r,o){let l=s+r;return typeof o<"u"&&(l+=" "+o),l}function n(s,r,o){let l="",c=0,u=!1,d=0;for(let p=0;p0&&g>0&&s[p-1]||(l+=u?i("M",g+o,.5+O+o):i("m",c,0),c=0,u=!1),g+1':"",O="',_='viewBox="0 0 '+p+" "+p+'"',x=''+g+O+` +`;return typeof l=="function"&&l(null,x),x},Ry}var jP;function _ie(){if(jP)return xc;jP=1;const t=Jte(),e=gie(),i=Oie(),n=vie();function s(r,o,l,c,u){const d=[].slice.call(arguments,1),p=d.length,g=typeof d[p-1]=="function";if(!g&&!t())throw new Error("Callback required as last argument");if(g){if(p<2)throw new Error("Too few arguments provided");p===2?(u=l,l=o,o=c=void 0):p===3&&(o.getContext&&typeof u>"u"?(u=c,c=void 0):(u=c,c=l,l=o,o=void 0))}else{if(p<1)throw new Error("Too few arguments provided");return p===1?(l=o,o=c=void 0):p===2&&!o.getContext&&(c=l,l=o,o=void 0),new Promise(function(O,_){try{const b=e.create(l,c);O(r(b,o,c))}catch(b){_(b)}})}try{const O=e.create(l,c);u(null,r(O,o,c))}catch(O){u(O)}}return xc.create=e.create,xc.toCanvas=s.bind(null,i.render),xc.toDataURL=s.bind(null,i.renderToDataURL),xc.toString=s.bind(null,function(r,o,l){return n.render(r,l)}),xc}var yie=_ie();const IP=WS(yie);function bie(){const[t,e]=X.useState(null),[i,n]=X.useState(!1),[s,r]=X.useState(null),[o,l]=X.useState(null);X.useEffect(()=>{fetch("/api/server-info").then(p=>p.json()).then(p=>e(p)).catch(()=>{})},[]),X.useEffect(()=>{t!=null&&t.tailscaleUrl&&IP.toDataURL(t.tailscaleUrl,{width:192,margin:2}).then(r).catch(()=>{}),t!=null&&t.networkUrl&&IP.toDataURL(t.networkUrl,{width:192,margin:2}).then(l).catch(()=>{})},[t==null?void 0:t.tailscaleUrl,t==null?void 0:t.networkUrl]);const c=!!(t!=null&&t.tailscaleUrl),u=!!(t!=null&&t.networkUrl),d=c||u;return S.jsxs("div",{className:"relative border-t border-border px-1 py-2",children:[i&&S.jsxs("div",{className:"absolute bottom-full left-2 right-2 mb-2 border border-border bg-card shadow-xl",children:[c&&S.jsxs("div",{className:"p-3",children:[S.jsxs("div",{className:"mb-2 flex items-center gap-1.5",children:[S.jsx("span",{className:"inline-block h-1.5 w-1.5 bg-success"}),S.jsx("p",{className:"font-mono text-[9px] uppercase tracking-widest text-success",children:"Tailscale — Secure"})]}),S.jsx("p",{className:"mb-3 break-all font-mono text-[11px] text-foreground",children:t.tailscaleUrl}),s&&S.jsx("img",{src:s,alt:"QR code for Tailscale access",width:192,height:192,className:"w-full"}),S.jsx("p",{className:"mt-2 font-mono text-[9px] text-muted-foreground",children:"Only visible to your Tailscale devices"})]}),u&&S.jsxs("div",{className:`p-3 ${c?"border-t border-border":""}`,children:[S.jsx("p",{className:"mb-0.5 font-mono text-[9px] uppercase tracking-widest text-muted-foreground",children:"Local Network"}),S.jsx("p",{className:"mb-3 break-all font-mono text-[11px] text-foreground",children:t.networkUrl}),o&&S.jsx("img",{src:o,alt:"QR code for local network access",width:192,height:192,className:"w-full"}),S.jsx("p",{className:"mt-2 font-mono text-[9px] text-muted-foreground",children:"Anyone on your local network can access this"})]}),!d&&S.jsxs("div",{className:"p-3",children:[S.jsxs("div",{className:"mb-2 flex items-center gap-1.5",children:[S.jsx("span",{className:"inline-block h-1.5 w-1.5 bg-muted-foreground"}),S.jsx("p",{className:"font-mono text-[9px] uppercase tracking-widest text-muted-foreground",children:"Remote Access"})]}),S.jsx("p",{className:"mb-3 font-mono text-[11px] leading-relaxed text-muted-foreground",children:"Install Tailscale on this device and your phone to securely access the dashboard from anywhere — no port forwarding, no public URLs."}),S.jsx("a",{href:"https://tailscale.com/download",target:"_blank",rel:"noopener noreferrer",className:"block w-full border border-border px-3 py-1.5 text-center font-mono text-[10px] uppercase tracking-widest text-muted-foreground transition-colors hover:border-accent hover:text-accent",children:"Get Tailscale →"}),S.jsx("p",{className:"mt-2 font-mono text-[9px] text-muted-foreground",children:"Free · E2E encrypted · No account sharing"})]})]}),S.jsxs("button",{type:"button",onClick:()=>n(p=>!p),title:c?"Open on another device via Tailscale":u?"Open on another device via local network":"Set up remote access",className:"flex w-full items-center gap-2.5 rounded-sm px-3 py-2 text-left text-sm transition-colors hover:bg-card-hover text-muted-foreground",children:[S.jsx(Sie,{active:c}),S.jsx("span",{className:"font-mono text-xs uppercase tracking-wide",children:"Share"}),c&&S.jsx("span",{className:"ml-auto inline-block h-1.5 w-1.5 bg-success"})]})]})}function Sie({active:t}){return S.jsxs("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:[S.jsx("circle",{cx:"18",cy:"5",r:"3"}),S.jsx("circle",{cx:"6",cy:"12",r:"3"}),S.jsx("circle",{cx:"18",cy:"19",r:"3"}),S.jsx("line",{x1:"8.59",y1:"13.51",x2:"15.42",y2:"17.49"}),S.jsx("line",{x1:"15.41",y1:"6.51",x2:"8.59",y2:"10.49"})]})}function xie(t){switch(t){case"complete":return"bg-success";case"partial":return"bg-accent";case"planned":case"researched":case"discussed":return"bg-muted-foreground/50";default:return"bg-muted"}}function wie({activeView:t,activePhaseId:e,onNavigate:i,logoAction:n}){const{roadmap:s,state:r,todos:o}=xo(),{connected:l}=Qr(),[c,u]=X.useState(!1);X.useEffect(()=>{if(!c)return;const b=setTimeout(()=>u(!1),3e3);return()=>clearTimeout(b)},[c]);async function d(){if(!c){u(!0);return}try{await fetch("/api/shutdown",{method:"POST"})}catch{}}const p=((s==null?void 0:s.phases)??[]).map(b=>({number:b.number,name:b.name,goal:b.goal??"",dependsOn:b.depends_on?[b.depends_on]:[],planCount:b.plan_count,summaryCount:b.summary_count,diskStatus:b.disk_status,roadmapComplete:b.roadmap_complete,hasContext:b.has_context,hasResearch:b.has_research})),g=(s==null?void 0:s.current_phase)??null,O=(r==null?void 0:r.blockers.filter(b=>!b.includes("RESOLVED")).length)??0,_=(o==null?void 0:o.pending.length)??0;return S.jsxs("aside",{className:"flex h-full w-56 shrink-0 flex-col border-r border-border bg-card",children:[S.jsxs("div",{className:"border-b border-border px-5 py-4 flex items-center justify-between",children:[S.jsxs("button",{type:"button",onClick:()=>i("overview"),className:"flex flex-col gap-0.5 text-left",children:[S.jsx("span",{className:"text-sm font-bold tracking-tight text-foreground",children:"MAXSIM"}),S.jsx("span",{className:"text-xs text-muted-foreground",children:"Dashboard"})]}),n]}),S.jsxs("div",{className:"flex-1 overflow-y-auto",children:[S.jsxs("div",{className:"flex items-center gap-2 px-5 py-3",children:[S.jsx("span",{className:"block w-4 h-px bg-border"}),S.jsx("span",{className:"text-xs uppercase tracking-widest text-muted-foreground",children:"Phases"})]}),S.jsx("nav",{className:"flex flex-col",children:p.map(b=>{const x=t==="phase"&&e===b.number,w=b.number===g;return S.jsxs("button",{type:"button",onClick:()=>i("phase",b.number),className:Ze("flex w-full items-center gap-2.5 px-5 py-2 text-left transition-colors duration-200",x?"bg-card-hover border-l-2 border-l-accent text-foreground":"border-l-2 border-l-transparent text-muted-foreground hover:text-foreground hover:bg-card-hover"),children:[S.jsx("span",{className:Ze("inline-block h-1.5 w-1.5 shrink-0",xie(b.diskStatus))}),S.jsx("span",{className:Ze("font-mono text-xs tabular-nums shrink-0",w||x?"text-accent":""),children:b.number}),S.jsx("span",{className:"truncate text-xs",children:b.name})]},b.number)})})]}),S.jsxs("div",{className:"border-t border-border",children:[S.jsxs("button",{type:"button",onClick:()=>i("todos"),className:Ze("flex w-full items-center justify-between px-5 py-2.5 text-left transition-colors duration-200",t==="todos"?"text-foreground bg-card-hover":"text-muted-foreground hover:text-foreground hover:bg-card-hover"),children:[S.jsx("span",{className:"text-sm",children:"Todos"}),_>0&&S.jsx("span",{className:"font-mono text-xs text-warning tabular-nums",children:_})]}),S.jsxs("button",{type:"button",onClick:()=>i("blockers"),className:Ze("flex w-full items-center justify-between border-t border-border px-5 py-2.5 text-left transition-colors duration-200",t==="blockers"?"text-foreground bg-card-hover":"text-muted-foreground hover:text-foreground hover:bg-card-hover"),children:[S.jsx("span",{className:"text-sm",children:"Blockers"}),O>0&&S.jsx("span",{className:"font-mono text-xs text-danger tabular-nums",children:O})]})]}),S.jsx("div",{className:"border-t border-border",children:S.jsxs("button",{type:"button",onClick:()=>i("terminal"),className:Ze("flex w-full items-center gap-2 px-5 py-2.5 text-left transition-colors duration-200",t==="terminal"?"text-foreground bg-card-hover":"text-muted-foreground hover:text-foreground hover:bg-card-hover"),children:[S.jsxs("span",{className:"font-mono text-xs",children:[">","_"]}),S.jsx("span",{className:"text-sm",children:"Terminal"})]})}),S.jsx(bie,{}),S.jsx("div",{className:"border-t border-border px-5 py-3",children:S.jsxs("div",{className:"flex items-center justify-between gap-2",children:[S.jsxs("div",{className:"flex items-center gap-2",children:[S.jsx("span",{className:Ze("inline-block h-1.5 w-1.5",l?"bg-success":"bg-danger")}),S.jsx("span",{className:"text-xs text-muted-foreground",children:l?"Connected":"Disconnected"})]}),S.jsxs("button",{type:"button",onClick:d,title:c?"Click again to confirm shutdown":"Shut down dashboard server",className:Ze("flex items-center gap-1 rounded px-1.5 py-0.5 text-xs transition-colors duration-150",c?"bg-danger/15 text-danger hover:bg-danger/25":"text-muted-foreground hover:text-foreground hover:bg-card-hover"),children:[S.jsxs("svg",{viewBox:"0 0 16 16",fill:"none",stroke:"currentColor",strokeWidth:"1.5",className:"h-3 w-3 shrink-0","aria-hidden":"true",children:[S.jsx("path",{d:"M6 2.5A5.5 5.5 0 1 0 10 3",strokeLinecap:"round"}),S.jsx("path",{d:"M8 1v5",strokeLinecap:"round"})]}),c&&S.jsx("span",{children:"Confirm"})]})]})})]})}/** * Copyright (c) 2014-2024 The xterm.js authors. All rights reserved. * @license MIT * @@ -101,22 +101,22 @@ Minimum version required to store current data is: `+U+`. * Fabrice Bellard's javascript vt100 for jslinux: * http://bellard.org/jslinux/ * Copyright (c) 2011 Fabrice Bellard - */var x6=Object.defineProperty,Cie=Object.getOwnPropertyDescriptor,kie=(t,e)=>{for(var i in e)x6(t,i,{get:e[i],enumerable:!0})},Ut=(t,e,i,n)=>{for(var r=n>1?void 0:n?Cie(e,i):e,s=t.length-1,o;s>=0;s--)(o=t[s])&&(r=(n?o(e,i,r):o(r))||r);return n&&r&&x6(e,i,r),r},be=(t,e)=>(i,n)=>e(i,n,t),VP="Terminal input",Wb={get:()=>VP,set:t=>VP=t},XP="Too much output to announce, navigate to rows manually to read",Ub={get:()=>XP,set:t=>XP=t};function Tie(t){return t.replace(/\r?\n/g,"\r")}function Aie(t,e){return e?"\x1B[200~"+t+"\x1B[201~":t}function Eie(t,e){t.clipboardData&&t.clipboardData.setData("text/plain",e.selectionText),t.preventDefault()}function Mie(t,e,i,n){if(t.stopPropagation(),t.clipboardData){let r=t.clipboardData.getData("text/plain");w6(r,e,i,n)}}function w6(t,e,i,n){t=Tie(t),t=Aie(t,i.decPrivateModes.bracketedPasteMode&&n.rawOptions.ignoreBracketedPasteMode!==!0),i.triggerDataEvent(t,!0),e.value=""}function C6(t,e,i){let n=i.getBoundingClientRect(),r=t.clientX-n.left-10,s=t.clientY-n.top-10;e.style.width="20px",e.style.height="20px",e.style.left=`${r}px`,e.style.top=`${s}px`,e.style.zIndex="1000",e.focus()}function ZP(t,e,i,n,r){C6(t,e,i),r&&n.rightClickSelect(t),e.value=n.selectionText,e.select()}function pa(t){return t>65535?(t-=65536,String.fromCharCode((t>>10)+55296)+String.fromCharCode(t%1024+56320)):String.fromCharCode(t)}function kO(t,e=0,i=t.length){let n="";for(let r=e;r65535?(s-=65536,n+=String.fromCharCode((s>>10)+55296)+String.fromCharCode(s%1024+56320)):n+=String.fromCharCode(s)}return n}var Pie=class{constructor(){this._interim=0}clear(){this._interim=0}decode(e,i){let n=e.length;if(!n)return 0;let r=0,s=0;if(this._interim){let o=e.charCodeAt(s++);56320<=o&&o<=57343?i[r++]=(this._interim-55296)*1024+o-56320+65536:(i[r++]=this._interim,i[r++]=o),this._interim=0}for(let o=s;o=n)return this._interim=l,r;let c=e.charCodeAt(o);56320<=c&&c<=57343?i[r++]=(l-55296)*1024+c-56320+65536:(i[r++]=l,i[r++]=c);continue}l!==65279&&(i[r++]=l)}return r}},Rie=class{constructor(){this.interim=new Uint8Array(3)}clear(){this.interim.fill(0)}decode(e,i){let n=e.length;if(!n)return 0;let r=0,s,o,l,c,u=0,d=0;if(this.interim[0]){let O=!1,_=this.interim[0];_&=(_&224)===192?31:(_&240)===224?15:7;let b=0,x;for(;(x=this.interim[++b]&63)&&b<4;)_<<=6,_|=x;let w=(this.interim[0]&224)===192?2:(this.interim[0]&240)===224?3:4,k=w-b;for(;d=n)return 0;if(x=e[d++],(x&192)!==128){d--,O=!0;break}else this.interim[b++]=x,_<<=6,_|=x&63}O||(w===2?_<128?d--:i[r++]=_:w===3?_<2048||_>=55296&&_<=57343||_===65279||(i[r++]=_):_<65536||_>1114111||(i[r++]=_)),this.interim.fill(0)}let p=n-4,g=d;for(;g=n)return this.interim[0]=s,r;if(o=e[g++],(o&192)!==128){g--;continue}if(u=(s&31)<<6|o&63,u<128){g--;continue}i[r++]=u}else if((s&240)===224){if(g>=n)return this.interim[0]=s,r;if(o=e[g++],(o&192)!==128){g--;continue}if(g>=n)return this.interim[0]=s,this.interim[1]=o,r;if(l=e[g++],(l&192)!==128){g--;continue}if(u=(s&15)<<12|(o&63)<<6|l&63,u<2048||u>=55296&&u<=57343||u===65279)continue;i[r++]=u}else if((s&248)===240){if(g>=n)return this.interim[0]=s,r;if(o=e[g++],(o&192)!==128){g--;continue}if(g>=n)return this.interim[0]=s,this.interim[1]=o,r;if(l=e[g++],(l&192)!==128){g--;continue}if(g>=n)return this.interim[0]=s,this.interim[1]=o,this.interim[2]=l,r;if(c=e[g++],(c&192)!==128){g--;continue}if(u=(s&7)<<18|(o&63)<<12|(l&63)<<6|c&63,u<65536||u>1114111)continue;i[r++]=u}}return r}},k6="",va=" ",bd=class T6{constructor(){this.fg=0,this.bg=0,this.extended=new Gg}static toColorRGB(e){return[e>>>16&255,e>>>8&255,e&255]}static fromColorRGB(e){return(e[0]&255)<<16|(e[1]&255)<<8|e[2]&255}clone(){let e=new T6;return e.fg=this.fg,e.bg=this.bg,e.extended=this.extended.clone(),e}isInverse(){return this.fg&67108864}isBold(){return this.fg&134217728}isUnderline(){return this.hasExtendedAttrs()&&this.extended.underlineStyle!==0?1:this.fg&268435456}isBlink(){return this.fg&536870912}isInvisible(){return this.fg&1073741824}isItalic(){return this.bg&67108864}isDim(){return this.bg&134217728}isStrikethrough(){return this.fg&2147483648}isProtected(){return this.bg&536870912}isOverline(){return this.bg&1073741824}getFgColorMode(){return this.fg&50331648}getBgColorMode(){return this.bg&50331648}isFgRGB(){return(this.fg&50331648)===50331648}isBgRGB(){return(this.bg&50331648)===50331648}isFgPalette(){return(this.fg&50331648)===16777216||(this.fg&50331648)===33554432}isBgPalette(){return(this.bg&50331648)===16777216||(this.bg&50331648)===33554432}isFgDefault(){return(this.fg&50331648)===0}isBgDefault(){return(this.bg&50331648)===0}isAttributeDefault(){return this.fg===0&&this.bg===0}getFgColor(){switch(this.fg&50331648){case 16777216:case 33554432:return this.fg&255;case 50331648:return this.fg&16777215;default:return-1}}getBgColor(){switch(this.bg&50331648){case 16777216:case 33554432:return this.bg&255;case 50331648:return this.bg&16777215;default:return-1}}hasExtendedAttrs(){return this.bg&268435456}updateExtended(){this.extended.isEmpty()?this.bg&=-268435457:this.bg|=268435456}getUnderlineColor(){if(this.bg&268435456&&~this.extended.underlineColor)switch(this.extended.underlineColor&50331648){case 16777216:case 33554432:return this.extended.underlineColor&255;case 50331648:return this.extended.underlineColor&16777215;default:return this.getFgColor()}return this.getFgColor()}getUnderlineColorMode(){return this.bg&268435456&&~this.extended.underlineColor?this.extended.underlineColor&50331648:this.getFgColorMode()}isUnderlineColorRGB(){return this.bg&268435456&&~this.extended.underlineColor?(this.extended.underlineColor&50331648)===50331648:this.isFgRGB()}isUnderlineColorPalette(){return this.bg&268435456&&~this.extended.underlineColor?(this.extended.underlineColor&50331648)===16777216||(this.extended.underlineColor&50331648)===33554432:this.isFgPalette()}isUnderlineColorDefault(){return this.bg&268435456&&~this.extended.underlineColor?(this.extended.underlineColor&50331648)===0:this.isFgDefault()}getUnderlineStyle(){return this.fg&268435456?this.bg&268435456?this.extended.underlineStyle:1:0}getUnderlineVariantOffset(){return this.extended.underlineVariantOffset}},Gg=class A6{constructor(e=0,i=0){this._ext=0,this._urlId=0,this._ext=e,this._urlId=i}get ext(){return this._urlId?this._ext&-469762049|this.underlineStyle<<26:this._ext}set ext(e){this._ext=e}get underlineStyle(){return this._urlId?5:(this._ext&469762048)>>26}set underlineStyle(e){this._ext&=-469762049,this._ext|=e<<26&469762048}get underlineColor(){return this._ext&67108863}set underlineColor(e){this._ext&=-67108864,this._ext|=e&67108863}get urlId(){return this._urlId}set urlId(e){this._urlId=e}get underlineVariantOffset(){let e=(this._ext&3758096384)>>29;return e<0?e^4294967288:e}set underlineVariantOffset(e){this._ext&=536870911,this._ext|=e<<29&3758096384}clone(){return new A6(this._ext,this._urlId)}isEmpty(){return this.underlineStyle===0&&this._urlId===0}},Rr=class E6 extends bd{constructor(){super(...arguments),this.content=0,this.fg=0,this.bg=0,this.extended=new Gg,this.combinedData=""}static fromCharData(e){let i=new E6;return i.setFromCharData(e),i}isCombined(){return this.content&2097152}getWidth(){return this.content>>22}getChars(){return this.content&2097152?this.combinedData:this.content&2097151?pa(this.content&2097151):""}getCode(){return this.isCombined()?this.combinedData.charCodeAt(this.combinedData.length-1):this.content&2097151}setFromCharData(e){this.fg=e[0],this.bg=0;let i=!1;if(e[1].length>2)i=!0;else if(e[1].length===2){let n=e[1].charCodeAt(0);if(55296<=n&&n<=56319){let r=e[1].charCodeAt(1);56320<=r&&r<=57343?this.content=(n-55296)*1024+r-56320+65536|e[2]<<22:i=!0}else i=!0}else this.content=e[1].charCodeAt(0)|e[2]<<22;i&&(this.combinedData=e[1],this.content=2097152|e[2]<<22)}getAsCharData(){return[this.fg,this.getChars(),this.getWidth(),this.getCode()]}},qP="di$target",Yb="di$dependencies",Qy=new Map;function Qie(t){return t[Yb]||[]}function $i(t){if(Qy.has(t))return Qy.get(t);let e=function(i,n,r){if(arguments.length!==3)throw new Error("@IServiceName-decorator can only be used to decorate a parameter");Lie(e,i,r)};return e._id=t,Qy.set(t,e),e}function Lie(t,e,i){e[qP]===e?e[Yb].push({id:t,index:i}):(e[Yb]=[{id:t,index:i}],e[qP]=e)}var yn=$i("BufferService"),M6=$i("CoreMouseService"),$l=$i("CoreService"),Die=$i("CharsetService"),Ew=$i("InstantiationService"),P6=$i("LogService"),bn=$i("OptionsService"),R6=$i("OscLinkService"),Bie=$i("UnicodeService"),Sd=$i("DecorationService"),Hb=class{constructor(e,i,n){this._bufferService=e,this._optionsService=i,this._oscLinkService=n}provideLinks(e,i){var p;let n=this._bufferService.buffer.lines.get(e-1);if(!n){i(void 0);return}let r=[],s=this._optionsService.rawOptions.linkHandler,o=new Rr,l=n.getTrimmedLength(),c=-1,u=-1,d=!1;for(let g=0;gs?s.activate(x,w,_):$ie(x,w),hover:(x,w)=>{var k;return(k=s==null?void 0:s.hover)==null?void 0:k.call(s,x,w,_)},leave:(x,w)=>{var k;return(k=s==null?void 0:s.leave)==null?void 0:k.call(s,x,w,_)}})}d=!1,o.hasExtendedAttrs()&&o.extended.urlId?(u=g,c=o.extended.urlId):(u=-1,c=-1)}}i(r)}};Hb=Ut([be(0,yn),be(1,bn),be(2,R6)],Hb);function $ie(t,e){if(confirm(`Do you want to navigate to ${e}? + */var x6=Object.defineProperty,Cie=Object.getOwnPropertyDescriptor,kie=(t,e)=>{for(var i in e)x6(t,i,{get:e[i],enumerable:!0})},Ut=(t,e,i,n)=>{for(var s=n>1?void 0:n?Cie(e,i):e,r=t.length-1,o;r>=0;r--)(o=t[r])&&(s=(n?o(e,i,s):o(s))||s);return n&&s&&x6(e,i,s),s},be=(t,e)=>(i,n)=>e(i,n,t),VP="Terminal input",Wb={get:()=>VP,set:t=>VP=t},XP="Too much output to announce, navigate to rows manually to read",Ub={get:()=>XP,set:t=>XP=t};function Tie(t){return t.replace(/\r?\n/g,"\r")}function Aie(t,e){return e?"\x1B[200~"+t+"\x1B[201~":t}function Eie(t,e){t.clipboardData&&t.clipboardData.setData("text/plain",e.selectionText),t.preventDefault()}function Mie(t,e,i,n){if(t.stopPropagation(),t.clipboardData){let s=t.clipboardData.getData("text/plain");w6(s,e,i,n)}}function w6(t,e,i,n){t=Tie(t),t=Aie(t,i.decPrivateModes.bracketedPasteMode&&n.rawOptions.ignoreBracketedPasteMode!==!0),i.triggerDataEvent(t,!0),e.value=""}function C6(t,e,i){let n=i.getBoundingClientRect(),s=t.clientX-n.left-10,r=t.clientY-n.top-10;e.style.width="20px",e.style.height="20px",e.style.left=`${s}px`,e.style.top=`${r}px`,e.style.zIndex="1000",e.focus()}function ZP(t,e,i,n,s){C6(t,e,i),s&&n.rightClickSelect(t),e.value=n.selectionText,e.select()}function ga(t){return t>65535?(t-=65536,String.fromCharCode((t>>10)+55296)+String.fromCharCode(t%1024+56320)):String.fromCharCode(t)}function kO(t,e=0,i=t.length){let n="";for(let s=e;s65535?(r-=65536,n+=String.fromCharCode((r>>10)+55296)+String.fromCharCode(r%1024+56320)):n+=String.fromCharCode(r)}return n}var Pie=class{constructor(){this._interim=0}clear(){this._interim=0}decode(e,i){let n=e.length;if(!n)return 0;let s=0,r=0;if(this._interim){let o=e.charCodeAt(r++);56320<=o&&o<=57343?i[s++]=(this._interim-55296)*1024+o-56320+65536:(i[s++]=this._interim,i[s++]=o),this._interim=0}for(let o=r;o=n)return this._interim=l,s;let c=e.charCodeAt(o);56320<=c&&c<=57343?i[s++]=(l-55296)*1024+c-56320+65536:(i[s++]=l,i[s++]=c);continue}l!==65279&&(i[s++]=l)}return s}},Rie=class{constructor(){this.interim=new Uint8Array(3)}clear(){this.interim.fill(0)}decode(e,i){let n=e.length;if(!n)return 0;let s=0,r,o,l,c,u=0,d=0;if(this.interim[0]){let O=!1,_=this.interim[0];_&=(_&224)===192?31:(_&240)===224?15:7;let b=0,x;for(;(x=this.interim[++b]&63)&&b<4;)_<<=6,_|=x;let w=(this.interim[0]&224)===192?2:(this.interim[0]&240)===224?3:4,k=w-b;for(;d=n)return 0;if(x=e[d++],(x&192)!==128){d--,O=!0;break}else this.interim[b++]=x,_<<=6,_|=x&63}O||(w===2?_<128?d--:i[s++]=_:w===3?_<2048||_>=55296&&_<=57343||_===65279||(i[s++]=_):_<65536||_>1114111||(i[s++]=_)),this.interim.fill(0)}let p=n-4,g=d;for(;g=n)return this.interim[0]=r,s;if(o=e[g++],(o&192)!==128){g--;continue}if(u=(r&31)<<6|o&63,u<128){g--;continue}i[s++]=u}else if((r&240)===224){if(g>=n)return this.interim[0]=r,s;if(o=e[g++],(o&192)!==128){g--;continue}if(g>=n)return this.interim[0]=r,this.interim[1]=o,s;if(l=e[g++],(l&192)!==128){g--;continue}if(u=(r&15)<<12|(o&63)<<6|l&63,u<2048||u>=55296&&u<=57343||u===65279)continue;i[s++]=u}else if((r&248)===240){if(g>=n)return this.interim[0]=r,s;if(o=e[g++],(o&192)!==128){g--;continue}if(g>=n)return this.interim[0]=r,this.interim[1]=o,s;if(l=e[g++],(l&192)!==128){g--;continue}if(g>=n)return this.interim[0]=r,this.interim[1]=o,this.interim[2]=l,s;if(c=e[g++],(c&192)!==128){g--;continue}if(u=(r&7)<<18|(o&63)<<12|(l&63)<<6|c&63,u<65536||u>1114111)continue;i[s++]=u}}return s}},k6="",ya=" ",bd=class T6{constructor(){this.fg=0,this.bg=0,this.extended=new Gg}static toColorRGB(e){return[e>>>16&255,e>>>8&255,e&255]}static fromColorRGB(e){return(e[0]&255)<<16|(e[1]&255)<<8|e[2]&255}clone(){let e=new T6;return e.fg=this.fg,e.bg=this.bg,e.extended=this.extended.clone(),e}isInverse(){return this.fg&67108864}isBold(){return this.fg&134217728}isUnderline(){return this.hasExtendedAttrs()&&this.extended.underlineStyle!==0?1:this.fg&268435456}isBlink(){return this.fg&536870912}isInvisible(){return this.fg&1073741824}isItalic(){return this.bg&67108864}isDim(){return this.bg&134217728}isStrikethrough(){return this.fg&2147483648}isProtected(){return this.bg&536870912}isOverline(){return this.bg&1073741824}getFgColorMode(){return this.fg&50331648}getBgColorMode(){return this.bg&50331648}isFgRGB(){return(this.fg&50331648)===50331648}isBgRGB(){return(this.bg&50331648)===50331648}isFgPalette(){return(this.fg&50331648)===16777216||(this.fg&50331648)===33554432}isBgPalette(){return(this.bg&50331648)===16777216||(this.bg&50331648)===33554432}isFgDefault(){return(this.fg&50331648)===0}isBgDefault(){return(this.bg&50331648)===0}isAttributeDefault(){return this.fg===0&&this.bg===0}getFgColor(){switch(this.fg&50331648){case 16777216:case 33554432:return this.fg&255;case 50331648:return this.fg&16777215;default:return-1}}getBgColor(){switch(this.bg&50331648){case 16777216:case 33554432:return this.bg&255;case 50331648:return this.bg&16777215;default:return-1}}hasExtendedAttrs(){return this.bg&268435456}updateExtended(){this.extended.isEmpty()?this.bg&=-268435457:this.bg|=268435456}getUnderlineColor(){if(this.bg&268435456&&~this.extended.underlineColor)switch(this.extended.underlineColor&50331648){case 16777216:case 33554432:return this.extended.underlineColor&255;case 50331648:return this.extended.underlineColor&16777215;default:return this.getFgColor()}return this.getFgColor()}getUnderlineColorMode(){return this.bg&268435456&&~this.extended.underlineColor?this.extended.underlineColor&50331648:this.getFgColorMode()}isUnderlineColorRGB(){return this.bg&268435456&&~this.extended.underlineColor?(this.extended.underlineColor&50331648)===50331648:this.isFgRGB()}isUnderlineColorPalette(){return this.bg&268435456&&~this.extended.underlineColor?(this.extended.underlineColor&50331648)===16777216||(this.extended.underlineColor&50331648)===33554432:this.isFgPalette()}isUnderlineColorDefault(){return this.bg&268435456&&~this.extended.underlineColor?(this.extended.underlineColor&50331648)===0:this.isFgDefault()}getUnderlineStyle(){return this.fg&268435456?this.bg&268435456?this.extended.underlineStyle:1:0}getUnderlineVariantOffset(){return this.extended.underlineVariantOffset}},Gg=class A6{constructor(e=0,i=0){this._ext=0,this._urlId=0,this._ext=e,this._urlId=i}get ext(){return this._urlId?this._ext&-469762049|this.underlineStyle<<26:this._ext}set ext(e){this._ext=e}get underlineStyle(){return this._urlId?5:(this._ext&469762048)>>26}set underlineStyle(e){this._ext&=-469762049,this._ext|=e<<26&469762048}get underlineColor(){return this._ext&67108863}set underlineColor(e){this._ext&=-67108864,this._ext|=e&67108863}get urlId(){return this._urlId}set urlId(e){this._urlId=e}get underlineVariantOffset(){let e=(this._ext&3758096384)>>29;return e<0?e^4294967288:e}set underlineVariantOffset(e){this._ext&=536870911,this._ext|=e<<29&3758096384}clone(){return new A6(this._ext,this._urlId)}isEmpty(){return this.underlineStyle===0&&this._urlId===0}},Rs=class E6 extends bd{constructor(){super(...arguments),this.content=0,this.fg=0,this.bg=0,this.extended=new Gg,this.combinedData=""}static fromCharData(e){let i=new E6;return i.setFromCharData(e),i}isCombined(){return this.content&2097152}getWidth(){return this.content>>22}getChars(){return this.content&2097152?this.combinedData:this.content&2097151?ga(this.content&2097151):""}getCode(){return this.isCombined()?this.combinedData.charCodeAt(this.combinedData.length-1):this.content&2097151}setFromCharData(e){this.fg=e[0],this.bg=0;let i=!1;if(e[1].length>2)i=!0;else if(e[1].length===2){let n=e[1].charCodeAt(0);if(55296<=n&&n<=56319){let s=e[1].charCodeAt(1);56320<=s&&s<=57343?this.content=(n-55296)*1024+s-56320+65536|e[2]<<22:i=!0}else i=!0}else this.content=e[1].charCodeAt(0)|e[2]<<22;i&&(this.combinedData=e[1],this.content=2097152|e[2]<<22)}getAsCharData(){return[this.fg,this.getChars(),this.getWidth(),this.getCode()]}},qP="di$target",Yb="di$dependencies",Qy=new Map;function Qie(t){return t[Yb]||[]}function $i(t){if(Qy.has(t))return Qy.get(t);let e=function(i,n,s){if(arguments.length!==3)throw new Error("@IServiceName-decorator can only be used to decorate a parameter");Lie(e,i,s)};return e._id=t,Qy.set(t,e),e}function Lie(t,e,i){e[qP]===e?e[Yb].push({id:t,index:i}):(e[Yb]=[{id:t,index:i}],e[qP]=e)}var yn=$i("BufferService"),M6=$i("CoreMouseService"),$l=$i("CoreService"),Die=$i("CharsetService"),Ew=$i("InstantiationService"),P6=$i("LogService"),bn=$i("OptionsService"),R6=$i("OscLinkService"),Bie=$i("UnicodeService"),Sd=$i("DecorationService"),Hb=class{constructor(e,i,n){this._bufferService=e,this._optionsService=i,this._oscLinkService=n}provideLinks(e,i){var p;let n=this._bufferService.buffer.lines.get(e-1);if(!n){i(void 0);return}let s=[],r=this._optionsService.rawOptions.linkHandler,o=new Rs,l=n.getTrimmedLength(),c=-1,u=-1,d=!1;for(let g=0;gr?r.activate(x,w,_):$ie(x,w),hover:(x,w)=>{var k;return(k=r==null?void 0:r.hover)==null?void 0:k.call(r,x,w,_)},leave:(x,w)=>{var k;return(k=r==null?void 0:r.leave)==null?void 0:k.call(r,x,w,_)}})}d=!1,o.hasExtendedAttrs()&&o.extended.urlId?(u=g,c=o.extended.urlId):(u=-1,c=-1)}}i(s)}};Hb=Ut([be(0,yn),be(1,bn),be(2,R6)],Hb);function $ie(t,e){if(confirm(`Do you want to navigate to ${e}? -WARNING: This link could potentially be dangerous`)){let i=window.open();if(i){try{i.opener=null}catch{}i.location.href=e}else console.warn("Opening link blocked as opener could not be cleared")}}var TO=$i("CharSizeService"),xo=$i("CoreBrowserService"),Mw=$i("MouseService"),wo=$i("RenderService"),zie=$i("SelectionService"),Q6=$i("CharacterJoinerService"),Ch=$i("ThemeService"),L6=$i("LinkProviderService"),Nie=class{constructor(){this.listeners=[],this.unexpectedErrorHandler=function(e){setTimeout(()=>{throw e.stack?WP.isErrorNoTelemetry(e)?new WP(e.message+` +WARNING: This link could potentially be dangerous`)){let i=window.open();if(i){try{i.opener=null}catch{}i.location.href=e}else console.warn("Opening link blocked as opener could not be cleared")}}var TO=$i("CharSizeService"),Co=$i("CoreBrowserService"),Mw=$i("MouseService"),ko=$i("RenderService"),Nie=$i("SelectionService"),Q6=$i("CharacterJoinerService"),Ch=$i("ThemeService"),L6=$i("LinkProviderService"),zie=class{constructor(){this.listeners=[],this.unexpectedErrorHandler=function(e){setTimeout(()=>{throw e.stack?WP.isErrorNoTelemetry(e)?new WP(e.message+` `+e.stack):new Error(e.message+` -`+e.stack):e},0)}}addListener(e){return this.listeners.push(e),()=>{this._removeListener(e)}}emit(e){this.listeners.forEach(i=>{i(e)})}_removeListener(e){this.listeners.splice(this.listeners.indexOf(e),1)}setUnexpectedErrorHandler(e){this.unexpectedErrorHandler=e}getUnexpectedErrorHandler(){return this.unexpectedErrorHandler}onUnexpectedError(e){this.unexpectedErrorHandler(e),this.emit(e)}onUnexpectedExternalError(e){this.unexpectedErrorHandler(e)}},jie=new Nie;function Jm(t){Iie(t)||jie.onUnexpectedError(t)}var Fb="Canceled";function Iie(t){return t instanceof Vie?!0:t instanceof Error&&t.name===Fb&&t.message===Fb}var Vie=class extends Error{constructor(){super(Fb),this.name=this.message}};function Xie(t){return new Error(`Illegal argument: ${t}`)}var WP=class Gb extends Error{constructor(e){super(e),this.name="CodeExpectedError"}static fromError(e){if(e instanceof Gb)return e;let i=new Gb;return i.message=e.message,i.stack=e.stack,i}static isErrorNoTelemetry(e){return e.name==="CodeExpectedError"}},Kb=class D6 extends Error{constructor(e){super(e||"An unexpected bug occurred."),Object.setPrototypeOf(this,D6.prototype)}};function Kn(t,e=0){return t[t.length-(1+e)]}var Zie;(t=>{function e(s){return s<0}t.isLessThan=e;function i(s){return s<=0}t.isLessThanOrEqual=i;function n(s){return s>0}t.isGreaterThan=n;function r(s){return s===0}t.isNeitherLessOrGreaterThan=r,t.greaterThan=1,t.lessThan=-1,t.neitherLessOrGreaterThan=0})(Zie||(Zie={}));function qie(t,e){let i=this,n=!1,r;return function(){return n||(n=!0,e||(r=t.apply(i,arguments))),r}}var B6;(t=>{function e(A){return A&&typeof A=="object"&&typeof A[Symbol.iterator]=="function"}t.is=e;let i=Object.freeze([]);function n(){return i}t.empty=n;function*r(A){yield A}t.single=r;function s(A){return e(A)?A:r(A)}t.wrap=s;function o(A){return A||i}t.from=o;function*l(A){for(let Q=A.length-1;Q>=0;Q--)yield A[Q]}t.reverse=l;function c(A){return!A||A[Symbol.iterator]().next().done===!0}t.isEmpty=c;function u(A){return A[Symbol.iterator]().next().value}t.first=u;function d(A,Q){let E=0;for(let z of A)if(Q(z,E++))return!0;return!1}t.some=d;function p(A,Q){for(let E of A)if(Q(E))return E}t.find=p;function*g(A,Q){for(let E of A)Q(E)&&(yield E)}t.filter=g;function*O(A,Q){let E=0;for(let z of A)yield Q(z,E++)}t.map=O;function*_(A,Q){let E=0;for(let z of A)yield*Q(z,E++)}t.flatMap=_;function*b(...A){for(let Q of A)yield*Q}t.concat=b;function x(A,Q,E){let z=E;for(let N of A)z=Q(z,N);return z}t.reduce=x;function*w(A,Q,E=A.length){for(Q<0&&(Q+=A.length),E<0?E+=A.length:E>A.length&&(E=A.length);Q1)throw new AggregateError(e,"Encountered errors while disposing of store");return Array.isArray(t)?[]:t}else if(t)return t.dispose(),t}function Wie(...t){return Bt(()=>Ml(t))}function Bt(t){return{dispose:qie(()=>{t()})}}var $6=class z6{constructor(){this._toDispose=new Set,this._isDisposed=!1}dispose(){this._isDisposed||(this._isDisposed=!0,this.clear())}get isDisposed(){return this._isDisposed}clear(){if(this._toDispose.size!==0)try{Ml(this._toDispose)}finally{this._toDispose.clear()}}add(e){if(!e)return e;if(e===this)throw new Error("Cannot register a disposable on itself!");return this._isDisposed?z6.DISABLE_DISPOSED_WARNING||console.warn(new Error("Trying to add a disposable to a DisposableStore that has already been disposed of. The added object will be leaked!").stack):this._toDispose.add(e),e}delete(e){if(e){if(e===this)throw new Error("Cannot dispose a disposable on itself!");this._toDispose.delete(e),e.dispose()}}deleteAndLeak(e){e&&this._toDispose.has(e)&&(this._toDispose.delete(e),void 0)}};$6.DISABLE_DISPOSED_WARNING=!1;var ya=$6,We=class{constructor(){this._store=new ya,this._store}dispose(){this._store.dispose()}_register(e){if(e===this)throw new Error("Cannot register a disposable on itself!");return this._store.add(e)}};We.None=Object.freeze({dispose(){}});var mh=class{constructor(){this._isDisposed=!1}get value(){return this._isDisposed?void 0:this._value}set value(e){var i;this._isDisposed||e===this._value||((i=this._value)==null||i.dispose(),this._value=e)}clear(){this.value=void 0}dispose(){var e;this._isDisposed=!0,(e=this._value)==null||e.dispose(),this._value=void 0}clearAndLeak(){let e=this._value;return this._value=void 0,e}},fo=typeof window=="object"?window:globalThis,Jb=class eS{constructor(e){this.element=e,this.next=eS.Undefined,this.prev=eS.Undefined}};Jb.Undefined=new Jb(void 0);var $t=Jb,UP=class{constructor(){this._first=$t.Undefined,this._last=$t.Undefined,this._size=0}get size(){return this._size}isEmpty(){return this._first===$t.Undefined}clear(){let e=this._first;for(;e!==$t.Undefined;){let i=e.next;e.prev=$t.Undefined,e.next=$t.Undefined,e=i}this._first=$t.Undefined,this._last=$t.Undefined,this._size=0}unshift(e){return this._insert(e,!1)}push(e){return this._insert(e,!0)}_insert(e,i){let n=new $t(e);if(this._first===$t.Undefined)this._first=n,this._last=n;else if(i){let s=this._last;this._last=n,n.prev=s,s.next=n}else{let s=this._first;this._first=n,n.next=s,s.prev=n}this._size+=1;let r=!1;return()=>{r||(r=!0,this._remove(n))}}shift(){if(this._first!==$t.Undefined){let e=this._first.element;return this._remove(this._first),e}}pop(){if(this._last!==$t.Undefined){let e=this._last.element;return this._remove(this._last),e}}_remove(e){if(e.prev!==$t.Undefined&&e.next!==$t.Undefined){let i=e.prev;i.next=e.next,e.next.prev=i}else e.prev===$t.Undefined&&e.next===$t.Undefined?(this._first=$t.Undefined,this._last=$t.Undefined):e.next===$t.Undefined?(this._last=this._last.prev,this._last.next=$t.Undefined):e.prev===$t.Undefined&&(this._first=this._first.next,this._first.prev=$t.Undefined);this._size-=1}*[Symbol.iterator](){let e=this._first;for(;e!==$t.Undefined;)yield e.element,e=e.next}},Uie=globalThis.performance&&typeof globalThis.performance.now=="function",Yie=class N6{static create(e){return new N6(e)}constructor(e){this._now=Uie&&e===!1?Date.now:globalThis.performance.now.bind(globalThis.performance),this._startTime=this._now(),this._stopTime=-1}stop(){this._stopTime=this._now()}reset(){this._startTime=this._now(),this._stopTime=-1}elapsed(){return this._stopTime!==-1?this._stopTime-this._startTime:this._now()-this._startTime}},Gi;(t=>{t.None=()=>We.None;function e(R,B){return p(R,()=>{},0,void 0,!0,void 0,B)}t.defer=e;function i(R){return(B,j=null,$)=>{let D=!1,X;return X=R(H=>{if(!D)return X?X.dispose():D=!0,B.call(j,H)},null,$),D&&X.dispose(),X}}t.once=i;function n(R,B,j){return u(($,D=null,X)=>R(H=>$.call(D,B(H)),null,X),j)}t.map=n;function r(R,B,j){return u(($,D=null,X)=>R(H=>{B(H),$.call(D,H)},null,X),j)}t.forEach=r;function s(R,B,j){return u(($,D=null,X)=>R(H=>B(H)&&$.call(D,H),null,X),j)}t.filter=s;function o(R){return R}t.signal=o;function l(...R){return(B,j=null,$)=>{let D=Wie(...R.map(X=>X(H=>B.call(j,H))));return d(D,$)}}t.any=l;function c(R,B,j,$){let D=j;return n(R,X=>(D=B(D,X),D),$)}t.reduce=c;function u(R,B){let j,$={onWillAddFirstListener(){j=R(D.fire,D)},onDidRemoveLastListener(){j==null||j.dispose()}},D=new me($);return B==null||B.add(D),D.event}function d(R,B){return B instanceof Array?B.push(R):B&&B.add(R),R}function p(R,B,j=100,$=!1,D=!1,X,H){let F,M,I,K=0,L,ue={leakWarningThreshold:X,onWillAddFirstListener(){F=R(fe=>{K++,M=B(M,fe),$&&!I&&(he.fire(M),M=void 0),L=()=>{let Oe=M;M=void 0,I=void 0,(!$||K>1)&&he.fire(Oe),K=0},typeof j=="number"?(clearTimeout(I),I=setTimeout(L,j)):I===void 0&&(I=0,queueMicrotask(L))})},onWillRemoveListener(){D&&K>0&&(L==null||L())},onDidRemoveLastListener(){L=void 0,F.dispose()}},he=new me(ue);return H==null||H.add(he),he.event}t.debounce=p;function g(R,B=0,j){return t.debounce(R,($,D)=>$?($.push(D),$):[D],B,void 0,!0,void 0,j)}t.accumulate=g;function O(R,B=($,D)=>$===D,j){let $=!0,D;return s(R,X=>{let H=$||!B(X,D);return $=!1,D=X,H},j)}t.latch=O;function _(R,B,j){return[t.filter(R,B,j),t.filter(R,$=>!B($),j)]}t.split=_;function b(R,B=!1,j=[],$){let D=j.slice(),X=R(M=>{D?D.push(M):F.fire(M)});$&&$.add(X);let H=()=>{D==null||D.forEach(M=>F.fire(M)),D=null},F=new me({onWillAddFirstListener(){X||(X=R(M=>F.fire(M)),$&&$.add(X))},onDidAddFirstListener(){D&&(B?setTimeout(H):H())},onDidRemoveLastListener(){X&&X.dispose(),X=null}});return $&&$.add(F),F.event}t.buffer=b;function x(R,B){return(j,$,D)=>{let X=B(new k);return R(function(H){let F=X.evaluate(H);F!==w&&j.call($,F)},void 0,D)}}t.chain=x;let w=Symbol("HaltChainable");class k{constructor(){this.steps=[]}map(B){return this.steps.push(B),this}forEach(B){return this.steps.push(j=>(B(j),j)),this}filter(B){return this.steps.push(j=>B(j)?j:w),this}reduce(B,j){let $=j;return this.steps.push(D=>($=B($,D),$)),this}latch(B=(j,$)=>j===$){let j=!0,$;return this.steps.push(D=>{let X=j||!B(D,$);return j=!1,$=D,X?D:w}),this}evaluate(B){for(let j of this.steps)if(B=j(B),B===w)break;return B}}function T(R,B,j=$=>$){let $=(...F)=>H.fire(j(...F)),D=()=>R.on(B,$),X=()=>R.removeListener(B,$),H=new me({onWillAddFirstListener:D,onDidRemoveLastListener:X});return H.event}t.fromNodeEventEmitter=T;function A(R,B,j=$=>$){let $=(...F)=>H.fire(j(...F)),D=()=>R.addEventListener(B,$),X=()=>R.removeEventListener(B,$),H=new me({onWillAddFirstListener:D,onDidRemoveLastListener:X});return H.event}t.fromDOMEventEmitter=A;function Q(R){return new Promise(B=>i(R)(B))}t.toPromise=Q;function E(R){let B=new me;return R.then(j=>{B.fire(j)},()=>{B.fire(void 0)}).finally(()=>{B.dispose()}),B.event}t.fromPromise=E;function z(R,B){return R(j=>B.fire(j))}t.forward=z;function N(R,B,j){return B(j),R($=>B($))}t.runAndSubscribe=N;class q{constructor(B,j){this._observable=B,this._counter=0,this._hasChanged=!1;let $={onWillAddFirstListener:()=>{B.addObserver(this)},onDidRemoveLastListener:()=>{B.removeObserver(this)}};this.emitter=new me($),j&&j.add(this.emitter)}beginUpdate(B){this._counter++}handlePossibleChange(B){}handleChange(B,j){this._hasChanged=!0}endUpdate(B){this._counter--,this._counter===0&&(this._observable.reportChanges(),this._hasChanged&&(this._hasChanged=!1,this.emitter.fire(this._observable.get())))}}function J(R,B){return new q(R,B).emitter.event}t.fromObservable=J;function U(R){return(B,j,$)=>{let D=0,X=!1,H={beginUpdate(){D++},endUpdate(){D--,D===0&&(R.reportChanges(),X&&(X=!1,B.call(j)))},handlePossibleChange(){},handleChange(){X=!0}};R.addObserver(H),R.reportChanges();let F={dispose(){R.removeObserver(H)}};return $ instanceof ya?$.add(F):Array.isArray($)&&$.push(F),F}}t.fromObservableLight=U})(Gi||(Gi={}));var tS=class iS{constructor(e){this.listenerCount=0,this.invocationCount=0,this.elapsedOverall=0,this.durations=[],this.name=`${e}_${iS._idPool++}`,iS.all.add(this)}start(e){this._stopWatch=new Yie,this.listenerCount=e}stop(){if(this._stopWatch){let e=this._stopWatch.elapsed();this.durations.push(e),this.elapsedOverall+=e,this.invocationCount+=1,this._stopWatch=void 0}}};tS.all=new Set,tS._idPool=0;var Hie=tS,Fie=-1,j6=class I6{constructor(e,i,n=(I6._idPool++).toString(16).padStart(3,"0")){this._errorHandler=e,this.threshold=i,this.name=n,this._warnCountdown=0}dispose(){var e;(e=this._stacks)==null||e.clear()}check(e,i){let n=this.threshold;if(n<=0||i{let s=this._stacks.get(e.value)||0;this._stacks.set(e.value,s-1)}}getMostFrequentStack(){if(!this._stacks)return;let e,i=0;for(let[n,r]of this._stacks)(!e||i{this._removeListener(e)}}emit(e){this.listeners.forEach(i=>{i(e)})}_removeListener(e){this.listeners.splice(this.listeners.indexOf(e),1)}setUnexpectedErrorHandler(e){this.unexpectedErrorHandler=e}getUnexpectedErrorHandler(){return this.unexpectedErrorHandler}onUnexpectedError(e){this.unexpectedErrorHandler(e),this.emit(e)}onUnexpectedExternalError(e){this.unexpectedErrorHandler(e)}},jie=new zie;function Jm(t){Iie(t)||jie.onUnexpectedError(t)}var Fb="Canceled";function Iie(t){return t instanceof Vie?!0:t instanceof Error&&t.name===Fb&&t.message===Fb}var Vie=class extends Error{constructor(){super(Fb),this.name=this.message}};function Xie(t){return new Error(`Illegal argument: ${t}`)}var WP=class Gb extends Error{constructor(e){super(e),this.name="CodeExpectedError"}static fromError(e){if(e instanceof Gb)return e;let i=new Gb;return i.message=e.message,i.stack=e.stack,i}static isErrorNoTelemetry(e){return e.name==="CodeExpectedError"}},Kb=class D6 extends Error{constructor(e){super(e||"An unexpected bug occurred."),Object.setPrototypeOf(this,D6.prototype)}};function Kn(t,e=0){return t[t.length-(1+e)]}var Zie;(t=>{function e(r){return r<0}t.isLessThan=e;function i(r){return r<=0}t.isLessThanOrEqual=i;function n(r){return r>0}t.isGreaterThan=n;function s(r){return r===0}t.isNeitherLessOrGreaterThan=s,t.greaterThan=1,t.lessThan=-1,t.neitherLessOrGreaterThan=0})(Zie||(Zie={}));function qie(t,e){let i=this,n=!1,s;return function(){return n||(n=!0,e||(s=t.apply(i,arguments))),s}}var B6;(t=>{function e(A){return A&&typeof A=="object"&&typeof A[Symbol.iterator]=="function"}t.is=e;let i=Object.freeze([]);function n(){return i}t.empty=n;function*s(A){yield A}t.single=s;function r(A){return e(A)?A:s(A)}t.wrap=r;function o(A){return A||i}t.from=o;function*l(A){for(let Q=A.length-1;Q>=0;Q--)yield A[Q]}t.reverse=l;function c(A){return!A||A[Symbol.iterator]().next().done===!0}t.isEmpty=c;function u(A){return A[Symbol.iterator]().next().value}t.first=u;function d(A,Q){let E=0;for(let N of A)if(Q(N,E++))return!0;return!1}t.some=d;function p(A,Q){for(let E of A)if(Q(E))return E}t.find=p;function*g(A,Q){for(let E of A)Q(E)&&(yield E)}t.filter=g;function*O(A,Q){let E=0;for(let N of A)yield Q(N,E++)}t.map=O;function*_(A,Q){let E=0;for(let N of A)yield*Q(N,E++)}t.flatMap=_;function*b(...A){for(let Q of A)yield*Q}t.concat=b;function x(A,Q,E){let N=E;for(let z of A)N=Q(N,z);return N}t.reduce=x;function*w(A,Q,E=A.length){for(Q<0&&(Q+=A.length),E<0?E+=A.length:E>A.length&&(E=A.length);Q1)throw new AggregateError(e,"Encountered errors while disposing of store");return Array.isArray(t)?[]:t}else if(t)return t.dispose(),t}function Wie(...t){return Bt(()=>Pl(t))}function Bt(t){return{dispose:qie(()=>{t()})}}var $6=class N6{constructor(){this._toDispose=new Set,this._isDisposed=!1}dispose(){this._isDisposed||(this._isDisposed=!0,this.clear())}get isDisposed(){return this._isDisposed}clear(){if(this._toDispose.size!==0)try{Pl(this._toDispose)}finally{this._toDispose.clear()}}add(e){if(!e)return e;if(e===this)throw new Error("Cannot register a disposable on itself!");return this._isDisposed?N6.DISABLE_DISPOSED_WARNING||console.warn(new Error("Trying to add a disposable to a DisposableStore that has already been disposed of. The added object will be leaked!").stack):this._toDispose.add(e),e}delete(e){if(e){if(e===this)throw new Error("Cannot dispose a disposable on itself!");this._toDispose.delete(e),e.dispose()}}deleteAndLeak(e){e&&this._toDispose.has(e)&&(this._toDispose.delete(e),void 0)}};$6.DISABLE_DISPOSED_WARNING=!1;var Sa=$6,Ue=class{constructor(){this._store=new Sa,this._store}dispose(){this._store.dispose()}_register(e){if(e===this)throw new Error("Cannot register a disposable on itself!");return this._store.add(e)}};Ue.None=Object.freeze({dispose(){}});var mh=class{constructor(){this._isDisposed=!1}get value(){return this._isDisposed?void 0:this._value}set value(e){var i;this._isDisposed||e===this._value||((i=this._value)==null||i.dispose(),this._value=e)}clear(){this.value=void 0}dispose(){var e;this._isDisposed=!0,(e=this._value)==null||e.dispose(),this._value=void 0}clearAndLeak(){let e=this._value;return this._value=void 0,e}},mo=typeof window=="object"?window:globalThis,Jb=class eS{constructor(e){this.element=e,this.next=eS.Undefined,this.prev=eS.Undefined}};Jb.Undefined=new Jb(void 0);var $t=Jb,UP=class{constructor(){this._first=$t.Undefined,this._last=$t.Undefined,this._size=0}get size(){return this._size}isEmpty(){return this._first===$t.Undefined}clear(){let e=this._first;for(;e!==$t.Undefined;){let i=e.next;e.prev=$t.Undefined,e.next=$t.Undefined,e=i}this._first=$t.Undefined,this._last=$t.Undefined,this._size=0}unshift(e){return this._insert(e,!1)}push(e){return this._insert(e,!0)}_insert(e,i){let n=new $t(e);if(this._first===$t.Undefined)this._first=n,this._last=n;else if(i){let r=this._last;this._last=n,n.prev=r,r.next=n}else{let r=this._first;this._first=n,n.next=r,r.prev=n}this._size+=1;let s=!1;return()=>{s||(s=!0,this._remove(n))}}shift(){if(this._first!==$t.Undefined){let e=this._first.element;return this._remove(this._first),e}}pop(){if(this._last!==$t.Undefined){let e=this._last.element;return this._remove(this._last),e}}_remove(e){if(e.prev!==$t.Undefined&&e.next!==$t.Undefined){let i=e.prev;i.next=e.next,e.next.prev=i}else e.prev===$t.Undefined&&e.next===$t.Undefined?(this._first=$t.Undefined,this._last=$t.Undefined):e.next===$t.Undefined?(this._last=this._last.prev,this._last.next=$t.Undefined):e.prev===$t.Undefined&&(this._first=this._first.next,this._first.prev=$t.Undefined);this._size-=1}*[Symbol.iterator](){let e=this._first;for(;e!==$t.Undefined;)yield e.element,e=e.next}},Uie=globalThis.performance&&typeof globalThis.performance.now=="function",Yie=class z6{static create(e){return new z6(e)}constructor(e){this._now=Uie&&e===!1?Date.now:globalThis.performance.now.bind(globalThis.performance),this._startTime=this._now(),this._stopTime=-1}stop(){this._stopTime=this._now()}reset(){this._startTime=this._now(),this._stopTime=-1}elapsed(){return this._stopTime!==-1?this._stopTime-this._startTime:this._now()-this._startTime}},Gi;(t=>{t.None=()=>Ue.None;function e(R,B){return p(R,()=>{},0,void 0,!0,void 0,B)}t.defer=e;function i(R){return(B,j=null,$)=>{let D=!1,Z;return Z=R(H=>{if(!D)return Z?Z.dispose():D=!0,B.call(j,H)},null,$),D&&Z.dispose(),Z}}t.once=i;function n(R,B,j){return u(($,D=null,Z)=>R(H=>$.call(D,B(H)),null,Z),j)}t.map=n;function s(R,B,j){return u(($,D=null,Z)=>R(H=>{B(H),$.call(D,H)},null,Z),j)}t.forEach=s;function r(R,B,j){return u(($,D=null,Z)=>R(H=>B(H)&&$.call(D,H),null,Z),j)}t.filter=r;function o(R){return R}t.signal=o;function l(...R){return(B,j=null,$)=>{let D=Wie(...R.map(Z=>Z(H=>B.call(j,H))));return d(D,$)}}t.any=l;function c(R,B,j,$){let D=j;return n(R,Z=>(D=B(D,Z),D),$)}t.reduce=c;function u(R,B){let j,$={onWillAddFirstListener(){j=R(D.fire,D)},onDidRemoveLastListener(){j==null||j.dispose()}},D=new me($);return B==null||B.add(D),D.event}function d(R,B){return B instanceof Array?B.push(R):B&&B.add(R),R}function p(R,B,j=100,$=!1,D=!1,Z,H){let F,M,I,K=0,L,ue={leakWarningThreshold:Z,onWillAddFirstListener(){F=R(fe=>{K++,M=B(M,fe),$&&!I&&(he.fire(M),M=void 0),L=()=>{let Oe=M;M=void 0,I=void 0,(!$||K>1)&&he.fire(Oe),K=0},typeof j=="number"?(clearTimeout(I),I=setTimeout(L,j)):I===void 0&&(I=0,queueMicrotask(L))})},onWillRemoveListener(){D&&K>0&&(L==null||L())},onDidRemoveLastListener(){L=void 0,F.dispose()}},he=new me(ue);return H==null||H.add(he),he.event}t.debounce=p;function g(R,B=0,j){return t.debounce(R,($,D)=>$?($.push(D),$):[D],B,void 0,!0,void 0,j)}t.accumulate=g;function O(R,B=($,D)=>$===D,j){let $=!0,D;return r(R,Z=>{let H=$||!B(Z,D);return $=!1,D=Z,H},j)}t.latch=O;function _(R,B,j){return[t.filter(R,B,j),t.filter(R,$=>!B($),j)]}t.split=_;function b(R,B=!1,j=[],$){let D=j.slice(),Z=R(M=>{D?D.push(M):F.fire(M)});$&&$.add(Z);let H=()=>{D==null||D.forEach(M=>F.fire(M)),D=null},F=new me({onWillAddFirstListener(){Z||(Z=R(M=>F.fire(M)),$&&$.add(Z))},onDidAddFirstListener(){D&&(B?setTimeout(H):H())},onDidRemoveLastListener(){Z&&Z.dispose(),Z=null}});return $&&$.add(F),F.event}t.buffer=b;function x(R,B){return(j,$,D)=>{let Z=B(new k);return R(function(H){let F=Z.evaluate(H);F!==w&&j.call($,F)},void 0,D)}}t.chain=x;let w=Symbol("HaltChainable");class k{constructor(){this.steps=[]}map(B){return this.steps.push(B),this}forEach(B){return this.steps.push(j=>(B(j),j)),this}filter(B){return this.steps.push(j=>B(j)?j:w),this}reduce(B,j){let $=j;return this.steps.push(D=>($=B($,D),$)),this}latch(B=(j,$)=>j===$){let j=!0,$;return this.steps.push(D=>{let Z=j||!B(D,$);return j=!1,$=D,Z?D:w}),this}evaluate(B){for(let j of this.steps)if(B=j(B),B===w)break;return B}}function T(R,B,j=$=>$){let $=(...F)=>H.fire(j(...F)),D=()=>R.on(B,$),Z=()=>R.removeListener(B,$),H=new me({onWillAddFirstListener:D,onDidRemoveLastListener:Z});return H.event}t.fromNodeEventEmitter=T;function A(R,B,j=$=>$){let $=(...F)=>H.fire(j(...F)),D=()=>R.addEventListener(B,$),Z=()=>R.removeEventListener(B,$),H=new me({onWillAddFirstListener:D,onDidRemoveLastListener:Z});return H.event}t.fromDOMEventEmitter=A;function Q(R){return new Promise(B=>i(R)(B))}t.toPromise=Q;function E(R){let B=new me;return R.then(j=>{B.fire(j)},()=>{B.fire(void 0)}).finally(()=>{B.dispose()}),B.event}t.fromPromise=E;function N(R,B){return R(j=>B.fire(j))}t.forward=N;function z(R,B,j){return B(j),R($=>B($))}t.runAndSubscribe=z;class q{constructor(B,j){this._observable=B,this._counter=0,this._hasChanged=!1;let $={onWillAddFirstListener:()=>{B.addObserver(this)},onDidRemoveLastListener:()=>{B.removeObserver(this)}};this.emitter=new me($),j&&j.add(this.emitter)}beginUpdate(B){this._counter++}handlePossibleChange(B){}handleChange(B,j){this._hasChanged=!0}endUpdate(B){this._counter--,this._counter===0&&(this._observable.reportChanges(),this._hasChanged&&(this._hasChanged=!1,this.emitter.fire(this._observable.get())))}}function J(R,B){return new q(R,B).emitter.event}t.fromObservable=J;function U(R){return(B,j,$)=>{let D=0,Z=!1,H={beginUpdate(){D++},endUpdate(){D--,D===0&&(R.reportChanges(),Z&&(Z=!1,B.call(j)))},handlePossibleChange(){},handleChange(){Z=!0}};R.addObserver(H),R.reportChanges();let F={dispose(){R.removeObserver(H)}};return $ instanceof Sa?$.add(F):Array.isArray($)&&$.push(F),F}}t.fromObservableLight=U})(Gi||(Gi={}));var tS=class iS{constructor(e){this.listenerCount=0,this.invocationCount=0,this.elapsedOverall=0,this.durations=[],this.name=`${e}_${iS._idPool++}`,iS.all.add(this)}start(e){this._stopWatch=new Yie,this.listenerCount=e}stop(){if(this._stopWatch){let e=this._stopWatch.elapsed();this.durations.push(e),this.elapsedOverall+=e,this.invocationCount+=1,this._stopWatch=void 0}}};tS.all=new Set,tS._idPool=0;var Hie=tS,Fie=-1,j6=class I6{constructor(e,i,n=(I6._idPool++).toString(16).padStart(3,"0")){this._errorHandler=e,this.threshold=i,this.name=n,this._warnCountdown=0}dispose(){var e;(e=this._stacks)==null||e.clear()}check(e,i){let n=this.threshold;if(n<=0||i{let r=this._stacks.get(e.value)||0;this._stacks.set(e.value,r-1)}}getMostFrequentStack(){if(!this._stacks)return;let e,i=0;for(let[n,s]of this._stacks)(!e||i{var l,c,u,d,p;if(this._leakageMon&&this._size>this._leakageMon.threshold**2){let g=`[${this._leakageMon.name}] REFUSES to accept new listeners because it exceeded its threshold by far (${this._size} vs ${this._leakageMon.threshold})`;console.warn(g);let O=this._leakageMon.getMostFrequentStack()??["UNKNOWN stack",-1],_=new ene(`${g}. HINT: Stack shows most frequent listener (${O[1]}-times)`,O[0]);return(((l=this._options)==null?void 0:l.onListenerError)||Jm)(_),We.None}if(this._disposed)return We.None;i&&(e=e.bind(i));let r=new Ly(e),s;this._leakageMon&&this._size>=Math.ceil(this._leakageMon.threshold*.2)&&(r.stack=Kie.create(),s=this._leakageMon.check(r.stack,this._size+1)),this._listeners?this._listeners instanceof Ly?(this._deliveryQueue??(this._deliveryQueue=new rne),this._listeners=[this._listeners,r]):this._listeners.push(r):((u=(c=this._options)==null?void 0:c.onWillAddFirstListener)==null||u.call(c,this),this._listeners=r,(p=(d=this._options)==null?void 0:d.onDidAddFirstListener)==null||p.call(d,this)),this._size++;let o=Bt(()=>{s==null||s(),this._removeListener(r)});return n instanceof ya?n.add(o):Array.isArray(n)&&n.push(o),o}),this._event}_removeListener(e){var s,o,l,c;if((o=(s=this._options)==null?void 0:s.onWillRemoveListener)==null||o.call(s,this),!this._listeners)return;if(this._size===1){this._listeners=void 0,(c=(l=this._options)==null?void 0:l.onDidRemoveLastListener)==null||c.call(l,this),this._size=0;return}let i=this._listeners,n=i.indexOf(e);if(n===-1)throw console.log("disposed?",this._disposed),console.log("size?",this._size),console.log("arr?",JSON.stringify(this._listeners)),new Error("Attempted to dispose unknown listener");this._size--,i[n]=void 0;let r=this._deliveryQueue.current===this;if(this._size*ine<=i.length){let u=0;for(let d=0;d0}},rne=class{constructor(){this.i=-1,this.end=0}enqueue(e,i,n){this.i=0,this.end=n,this.current=e,this.value=i}reset(){this.i=this.end,this.current=void 0,this.value=void 0}},nS=class{constructor(){this.mapWindowIdToZoomLevel=new Map,this._onDidChangeZoomLevel=new me,this.onDidChangeZoomLevel=this._onDidChangeZoomLevel.event,this.mapWindowIdToZoomFactor=new Map,this._onDidChangeFullscreen=new me,this.onDidChangeFullscreen=this._onDidChangeFullscreen.event,this.mapWindowIdToFullScreen=new Map}getZoomLevel(e){return this.mapWindowIdToZoomLevel.get(this.getWindowId(e))??0}setZoomLevel(e,i){if(this.getZoomLevel(i)===e)return;let n=this.getWindowId(i);this.mapWindowIdToZoomLevel.set(n,e),this._onDidChangeZoomLevel.fire(n)}getZoomFactor(e){return this.mapWindowIdToZoomFactor.get(this.getWindowId(e))??1}setZoomFactor(e,i){this.mapWindowIdToZoomFactor.set(this.getWindowId(i),e)}setFullscreen(e,i){if(this.isFullscreen(i)===e)return;let n=this.getWindowId(i);this.mapWindowIdToFullScreen.set(n,e),this._onDidChangeFullscreen.fire(n)}isFullscreen(e){return!!this.mapWindowIdToFullScreen.get(this.getWindowId(e))}getWindowId(e){return e.vscodeWindowId}};nS.INSTANCE=new nS;var Pw=nS;function sne(t,e,i){typeof e=="string"&&(e=t.matchMedia(e)),e.addEventListener("change",i)}Pw.INSTANCE.onDidChangeZoomLevel;function one(t){return Pw.INSTANCE.getZoomFactor(t)}Pw.INSTANCE.onDidChangeFullscreen;var kh=typeof navigator=="object"?navigator.userAgent:"",rS=kh.indexOf("Firefox")>=0,ane=kh.indexOf("AppleWebKit")>=0,Rw=kh.indexOf("Chrome")>=0,lne=!Rw&&kh.indexOf("Safari")>=0;kh.indexOf("Electron/")>=0;kh.indexOf("Android")>=0;var Dy=!1;if(typeof fo.matchMedia=="function"){let t=fo.matchMedia("(display-mode: standalone) or (display-mode: window-controls-overlay)"),e=fo.matchMedia("(display-mode: fullscreen)");Dy=t.matches,sne(fo,t,({matches:i})=>{Dy&&e.matches||(Dy=i)})}var Vc="en",sS=!1,oS=!1,eg=!1,X6=!1,Sm,tg=Vc,YP=Vc,cne,Ir,xl=globalThis,Ui,FQ;typeof xl.vscode<"u"&&typeof xl.vscode.process<"u"?Ui=xl.vscode.process:typeof process<"u"&&typeof((FQ=process==null?void 0:process.versions)==null?void 0:FQ.node)=="string"&&(Ui=process);var GQ,hne=typeof((GQ=Ui==null?void 0:Ui.versions)==null?void 0:GQ.electron)=="string",une=hne&&(Ui==null?void 0:Ui.type)==="renderer",KQ;if(typeof Ui=="object"){sS=Ui.platform==="win32",oS=Ui.platform==="darwin",eg=Ui.platform==="linux",eg&&Ui.env.SNAP&&Ui.env.SNAP_REVISION,Ui.env.CI||Ui.env.BUILD_ARTIFACTSTAGINGDIRECTORY,Sm=Vc,tg=Vc;let t=Ui.env.VSCODE_NLS_CONFIG;if(t)try{let e=JSON.parse(t);Sm=e.userLocale,YP=e.osLocale,tg=e.resolvedLanguage||Vc,cne=(KQ=e.languagePack)==null?void 0:KQ.translationsConfigFile}catch{}X6=!0}else typeof navigator=="object"&&!une?(Ir=navigator.userAgent,sS=Ir.indexOf("Windows")>=0,oS=Ir.indexOf("Macintosh")>=0,(Ir.indexOf("Macintosh")>=0||Ir.indexOf("iPad")>=0||Ir.indexOf("iPhone")>=0)&&navigator.maxTouchPoints&&navigator.maxTouchPoints>0,eg=Ir.indexOf("Linux")>=0,(Ir==null?void 0:Ir.indexOf("Mobi"))>=0,tg=globalThis._VSCODE_NLS_LANGUAGE||Vc,Sm=navigator.language.toLowerCase(),YP=Sm):console.error("Unable to resolve platform.");var Z6=sS,Ts=oS,fne=eg,HP=X6,Es=Ir,na=tg,dne;(t=>{function e(){return na}t.value=e;function i(){return na.length===2?na==="en":na.length>=3?na[0]==="e"&&na[1]==="n"&&na[2]==="-":!1}t.isDefaultVariant=i;function n(){return na==="en"}t.isDefault=n})(dne||(dne={}));var pne=typeof xl.postMessage=="function"&&!xl.importScripts;(()=>{if(pne){let t=[];xl.addEventListener("message",i=>{if(i.data&&i.data.vscodeScheduleAsyncWork)for(let n=0,r=t.length;n{let n=++e;t.push({id:n,callback:i}),xl.postMessage({vscodeScheduleAsyncWork:n},"*")}}return t=>setTimeout(t)})();var mne=!!(Es&&Es.indexOf("Chrome")>=0);Es&&Es.indexOf("Firefox")>=0;!mne&&Es&&Es.indexOf("Safari")>=0;Es&&Es.indexOf("Edg/")>=0;Es&&Es.indexOf("Android")>=0;var wc=typeof navigator=="object"?navigator:{};HP||document.queryCommandSupported&&document.queryCommandSupported("copy")||wc&&wc.clipboard&&wc.clipboard.writeText,HP||wc&&wc.clipboard&&wc.clipboard.readText;var Qw=class{constructor(){this._keyCodeToStr=[],this._strToKeyCode=Object.create(null)}define(e,i){this._keyCodeToStr[e]=i,this._strToKeyCode[i.toLowerCase()]=e}keyCodeToStr(e){return this._keyCodeToStr[e]}strToKeyCode(e){return this._strToKeyCode[e.toLowerCase()]||0}},By=new Qw,FP=new Qw,GP=new Qw,gne=new Array(230),q6;(t=>{function e(l){return By.keyCodeToStr(l)}t.toString=e;function i(l){return By.strToKeyCode(l)}t.fromString=i;function n(l){return FP.keyCodeToStr(l)}t.toUserSettingsUS=n;function r(l){return GP.keyCodeToStr(l)}t.toUserSettingsGeneral=r;function s(l){return FP.strToKeyCode(l)||GP.strToKeyCode(l)}t.fromUserSettings=s;function o(l){if(l>=98&&l<=113)return null;switch(l){case 16:return"Up";case 18:return"Down";case 15:return"Left";case 17:return"Right"}return By.keyCodeToStr(l)}t.toElectronAccelerator=o})(q6||(q6={}));var One=class W6{constructor(e,i,n,r,s){this.ctrlKey=e,this.shiftKey=i,this.altKey=n,this.metaKey=r,this.keyCode=s}equals(e){return e instanceof W6&&this.ctrlKey===e.ctrlKey&&this.shiftKey===e.shiftKey&&this.altKey===e.altKey&&this.metaKey===e.metaKey&&this.keyCode===e.keyCode}getHashCode(){let e=this.ctrlKey?"1":"0",i=this.shiftKey?"1":"0",n=this.altKey?"1":"0",r=this.metaKey?"1":"0";return`K${e}${i}${n}${r}${this.keyCode}`}isModifierKey(){return this.keyCode===0||this.keyCode===5||this.keyCode===57||this.keyCode===6||this.keyCode===4}toKeybinding(){return new vne([this])}isDuplicateModifierCase(){return this.ctrlKey&&this.keyCode===5||this.shiftKey&&this.keyCode===4||this.altKey&&this.keyCode===6||this.metaKey&&this.keyCode===57}},vne=class{constructor(t){if(t.length===0)throw Xie("chords");this.chords=t}getHashCode(){let t="";for(let e=0,i=this.chords.length;e{function e(i){return i===t.None||i===t.Cancelled||i instanceof Tne?!0:!i||typeof i!="object"?!1:typeof i.isCancellationRequested=="boolean"&&typeof i.onCancellationRequested=="function"}t.isCancellationToken=e,t.None=Object.freeze({isCancellationRequested:!1,onCancellationRequested:Gi.None}),t.Cancelled=Object.freeze({isCancellationRequested:!0,onCancellationRequested:U6})})(kne||(kne={}));var Tne=class{constructor(){this._isCancelled=!1,this._emitter=null}cancel(){this._isCancelled||(this._isCancelled=!0,this._emitter&&(this._emitter.fire(void 0),this.dispose()))}get isCancellationRequested(){return this._isCancelled}get onCancellationRequested(){return this._isCancelled?U6:(this._emitter||(this._emitter=new me),this._emitter.event)}dispose(){this._emitter&&(this._emitter.dispose(),this._emitter=null)}},Lw=class{constructor(e,i){this._isDisposed=!1,this._token=-1,typeof e=="function"&&typeof i=="number"&&this.setIfNotSet(e,i)}dispose(){this.cancel(),this._isDisposed=!0}cancel(){this._token!==-1&&(clearTimeout(this._token),this._token=-1)}cancelAndSet(e,i){if(this._isDisposed)throw new Kb("Calling 'cancelAndSet' on a disposed TimeoutTimer");this.cancel(),this._token=setTimeout(()=>{this._token=-1,e()},i)}setIfNotSet(e,i){if(this._isDisposed)throw new Kb("Calling 'setIfNotSet' on a disposed TimeoutTimer");this._token===-1&&(this._token=setTimeout(()=>{this._token=-1,e()},i))}},Ane=class{constructor(){this.disposable=void 0,this.isDisposed=!1}cancel(){var e;(e=this.disposable)==null||e.dispose(),this.disposable=void 0}cancelAndSet(e,i,n=globalThis){if(this.isDisposed)throw new Kb("Calling 'cancelAndSet' on a disposed IntervalTimer");this.cancel();let r=n.setInterval(()=>{e()},i);this.disposable=Bt(()=>{n.clearInterval(r),this.disposable=void 0})}dispose(){this.cancel(),this.isDisposed=!0}},Ene;(t=>{async function e(n){let r,s=await Promise.all(n.map(o=>o.then(l=>l,l=>{r||(r=l)})));if(typeof r<"u")throw r;return s}t.settled=e;function i(n){return new Promise(async(r,s)=>{try{await n(r,s)}catch(o){s(o)}})}t.withAsyncBody=i})(Ene||(Ene={}));var tR=class _r{static fromArray(e){return new _r(i=>{i.emitMany(e)})}static fromPromise(e){return new _r(async i=>{i.emitMany(await e)})}static fromPromises(e){return new _r(async i=>{await Promise.all(e.map(async n=>i.emitOne(await n)))})}static merge(e){return new _r(async i=>{await Promise.all(e.map(async n=>{for await(let r of n)i.emitOne(r)}))})}constructor(e,i){this._state=0,this._results=[],this._error=null,this._onReturn=i,this._onStateChanged=new me,queueMicrotask(async()=>{let n={emitOne:r=>this.emitOne(r),emitMany:r=>this.emitMany(r),reject:r=>this.reject(r)};try{await Promise.resolve(e(n)),this.resolve()}catch(r){this.reject(r)}finally{n.emitOne=void 0,n.emitMany=void 0,n.reject=void 0}})}[Symbol.asyncIterator](){let e=0;return{next:async()=>{do{if(this._state===2)throw this._error;if(e{var i;return(i=this._onReturn)==null||i.call(this),{done:!0,value:void 0}}}}static map(e,i){return new _r(async n=>{for await(let r of e)n.emitOne(i(r))})}map(e){return _r.map(this,e)}static filter(e,i){return new _r(async n=>{for await(let r of e)i(r)&&n.emitOne(r)})}filter(e){return _r.filter(this,e)}static coalesce(e){return _r.filter(e,i=>!!i)}coalesce(){return _r.coalesce(this)}static async toPromise(e){let i=[];for await(let n of e)i.push(n);return i}toPromise(){return _r.toPromise(this)}emitOne(e){this._state===0&&(this._results.push(e),this._onStateChanged.fire())}emitMany(e){this._state===0&&(this._results=this._results.concat(e),this._onStateChanged.fire())}resolve(){this._state===0&&(this._state=1,this._onStateChanged.fire())}reject(e){this._state===0&&(this._state=2,this._error=e,this._onStateChanged.fire())}};tR.EMPTY=tR.fromArray([]);var{getWindow:xs,getWindowId:Mne,onDidRegisterWindow:Pne}=(function(){let t=new Map,e={window:fo,disposables:new ya};t.set(fo.vscodeWindowId,e);let i=new me,n=new me,r=new me;function s(o,l){return(typeof o=="number"?t.get(o):void 0)??(l?e:void 0)}return{onDidRegisterWindow:i.event,onWillUnregisterWindow:r.event,onDidUnregisterWindow:n.event,registerWindow(o){if(t.has(o.vscodeWindowId))return We.None;let l=new ya,c={window:o,disposables:l.add(new ya)};return t.set(o.vscodeWindowId,c),l.add(Bt(()=>{t.delete(o.vscodeWindowId),n.fire(o)})),l.add(Be(o,wi.BEFORE_UNLOAD,()=>{r.fire(o)})),i.fire(c),l},getWindows(){return t.values()},getWindowsCount(){return t.size},getWindowId(o){return o.vscodeWindowId},hasWindow(o){return t.has(o)},getWindowById:s,getWindow(o){var u;let l=o;if((u=l==null?void 0:l.ownerDocument)!=null&&u.defaultView)return l.ownerDocument.defaultView.window;let c=o;return c!=null&&c.view?c.view.window:fo},getDocument(o){return xs(o).document}}})(),Rne=class{constructor(e,i,n,r){this._node=e,this._type=i,this._handler=n,this._options=r||!1,this._node.addEventListener(this._type,this._handler,this._options)}dispose(){this._handler&&(this._node.removeEventListener(this._type,this._handler,this._options),this._node=null,this._handler=null)}};function Be(t,e,i,n){return new Rne(t,e,i,n)}var iR=function(t,e,i,n){return Be(t,e,i,n)},Dw,Qne=class extends Ane{constructor(t){super(),this.defaultTarget=t&&xs(t)}cancelAndSet(t,e,i){return super.cancelAndSet(t,e,i??this.defaultTarget)}},nR=class{constructor(e,i=0){this._runner=e,this.priority=i,this._canceled=!1}dispose(){this._canceled=!0}execute(){if(!this._canceled)try{this._runner()}catch(e){Jm(e)}}static sort(e,i){return i.priority-e.priority}};(function(){let t=new Map,e=new Map,i=new Map,n=new Map,r=s=>{i.set(s,!1);let o=t.get(s)??[];for(e.set(s,o),t.set(s,[]),n.set(s,!0);o.length>0;)o.sort(nR.sort),o.shift().execute();n.set(s,!1)};Dw=(s,o,l=0)=>{let c=Mne(s),u=new nR(o,l),d=t.get(c);return d||(d=[],t.set(c,d)),d.push(u),i.get(c)||(i.set(c,!0),s.requestAnimationFrame(()=>r(c))),u}})();function Lne(t){let e=t.getBoundingClientRect(),i=xs(t);return{left:e.left+i.scrollX,top:e.top+i.scrollY,width:e.width,height:e.height}}var wi={CLICK:"click",MOUSE_DOWN:"mousedown",MOUSE_OVER:"mouseover",MOUSE_LEAVE:"mouseleave",MOUSE_WHEEL:"wheel",POINTER_UP:"pointerup",POINTER_DOWN:"pointerdown",POINTER_MOVE:"pointermove",KEY_DOWN:"keydown",KEY_UP:"keyup",BEFORE_UNLOAD:"beforeunload",CHANGE:"change",FOCUS:"focus",BLUR:"blur",INPUT:"input"},Dne=class{constructor(t){this.domNode=t,this._maxWidth="",this._width="",this._height="",this._top="",this._left="",this._bottom="",this._right="",this._paddingTop="",this._paddingLeft="",this._paddingBottom="",this._paddingRight="",this._fontFamily="",this._fontWeight="",this._fontSize="",this._fontStyle="",this._fontFeatureSettings="",this._fontVariationSettings="",this._textDecoration="",this._lineHeight="",this._letterSpacing="",this._className="",this._display="",this._position="",this._visibility="",this._color="",this._backgroundColor="",this._layerHint=!1,this._contain="none",this._boxShadow=""}setMaxWidth(t){let e=Mn(t);this._maxWidth!==e&&(this._maxWidth=e,this.domNode.style.maxWidth=this._maxWidth)}setWidth(t){let e=Mn(t);this._width!==e&&(this._width=e,this.domNode.style.width=this._width)}setHeight(t){let e=Mn(t);this._height!==e&&(this._height=e,this.domNode.style.height=this._height)}setTop(t){let e=Mn(t);this._top!==e&&(this._top=e,this.domNode.style.top=this._top)}setLeft(t){let e=Mn(t);this._left!==e&&(this._left=e,this.domNode.style.left=this._left)}setBottom(t){let e=Mn(t);this._bottom!==e&&(this._bottom=e,this.domNode.style.bottom=this._bottom)}setRight(t){let e=Mn(t);this._right!==e&&(this._right=e,this.domNode.style.right=this._right)}setPaddingTop(t){let e=Mn(t);this._paddingTop!==e&&(this._paddingTop=e,this.domNode.style.paddingTop=this._paddingTop)}setPaddingLeft(t){let e=Mn(t);this._paddingLeft!==e&&(this._paddingLeft=e,this.domNode.style.paddingLeft=this._paddingLeft)}setPaddingBottom(t){let e=Mn(t);this._paddingBottom!==e&&(this._paddingBottom=e,this.domNode.style.paddingBottom=this._paddingBottom)}setPaddingRight(t){let e=Mn(t);this._paddingRight!==e&&(this._paddingRight=e,this.domNode.style.paddingRight=this._paddingRight)}setFontFamily(t){this._fontFamily!==t&&(this._fontFamily=t,this.domNode.style.fontFamily=this._fontFamily)}setFontWeight(t){this._fontWeight!==t&&(this._fontWeight=t,this.domNode.style.fontWeight=this._fontWeight)}setFontSize(t){let e=Mn(t);this._fontSize!==e&&(this._fontSize=e,this.domNode.style.fontSize=this._fontSize)}setFontStyle(t){this._fontStyle!==t&&(this._fontStyle=t,this.domNode.style.fontStyle=this._fontStyle)}setFontFeatureSettings(t){this._fontFeatureSettings!==t&&(this._fontFeatureSettings=t,this.domNode.style.fontFeatureSettings=this._fontFeatureSettings)}setFontVariationSettings(t){this._fontVariationSettings!==t&&(this._fontVariationSettings=t,this.domNode.style.fontVariationSettings=this._fontVariationSettings)}setTextDecoration(t){this._textDecoration!==t&&(this._textDecoration=t,this.domNode.style.textDecoration=this._textDecoration)}setLineHeight(t){let e=Mn(t);this._lineHeight!==e&&(this._lineHeight=e,this.domNode.style.lineHeight=this._lineHeight)}setLetterSpacing(t){let e=Mn(t);this._letterSpacing!==e&&(this._letterSpacing=e,this.domNode.style.letterSpacing=this._letterSpacing)}setClassName(t){this._className!==t&&(this._className=t,this.domNode.className=this._className)}toggleClassName(t,e){this.domNode.classList.toggle(t,e),this._className=this.domNode.className}setDisplay(t){this._display!==t&&(this._display=t,this.domNode.style.display=this._display)}setPosition(t){this._position!==t&&(this._position=t,this.domNode.style.position=this._position)}setVisibility(t){this._visibility!==t&&(this._visibility=t,this.domNode.style.visibility=this._visibility)}setColor(t){this._color!==t&&(this._color=t,this.domNode.style.color=this._color)}setBackgroundColor(t){this._backgroundColor!==t&&(this._backgroundColor=t,this.domNode.style.backgroundColor=this._backgroundColor)}setLayerHinting(t){this._layerHint!==t&&(this._layerHint=t,this.domNode.style.transform=this._layerHint?"translate3d(0px, 0px, 0px)":"")}setBoxShadow(t){this._boxShadow!==t&&(this._boxShadow=t,this.domNode.style.boxShadow=t)}setContain(t){this._contain!==t&&(this._contain=t,this.domNode.style.contain=this._contain)}setAttribute(t,e){this.domNode.setAttribute(t,e)}removeAttribute(t){this.domNode.removeAttribute(t)}appendChild(t){this.domNode.appendChild(t.domNode)}removeChild(t){this.domNode.removeChild(t.domNode)}};function Mn(t){return typeof t=="number"?`${t}px`:t}function bf(t){return new Dne(t)}var Y6=class{constructor(){this._hooks=new ya,this._pointerMoveCallback=null,this._onStopCallback=null}dispose(){this.stopMonitoring(!1),this._hooks.dispose()}stopMonitoring(e,i){if(!this.isMonitoring())return;this._hooks.clear(),this._pointerMoveCallback=null;let n=this._onStopCallback;this._onStopCallback=null,e&&n&&n(i)}isMonitoring(){return!!this._pointerMoveCallback}startMonitoring(e,i,n,r,s){this.isMonitoring()&&this.stopMonitoring(!1),this._pointerMoveCallback=r,this._onStopCallback=s;let o=e;try{e.setPointerCapture(i),this._hooks.add(Bt(()=>{try{e.releasePointerCapture(i)}catch{}}))}catch{o=xs(e)}this._hooks.add(Be(o,wi.POINTER_MOVE,l=>{if(l.buttons!==n){this.stopMonitoring(!0);return}l.preventDefault(),this._pointerMoveCallback(l)})),this._hooks.add(Be(o,wi.POINTER_UP,l=>this.stopMonitoring(!0)))}};function Bne(t,e,i){let n=null,r=null;if(typeof i.value=="function"?(n="value",r=i.value,r.length!==0&&console.warn("Memoize should only be used in functions with zero parameters")):typeof i.get=="function"&&(n="get",r=i.get),!r)throw new Error("not supported");let s=`$memoize$${e}`;i[n]=function(...o){return this.hasOwnProperty(s)||Object.defineProperty(this,s,{configurable:!1,enumerable:!1,writable:!1,value:r.apply(this,o)}),this[s]}}var fs;(t=>(t.Tap="-xterm-gesturetap",t.Change="-xterm-gesturechange",t.Start="-xterm-gesturestart",t.End="-xterm-gesturesend",t.Contextmenu="-xterm-gesturecontextmenu"))(fs||(fs={}));var tf=class en extends We{constructor(){super(),this.dispatched=!1,this.targets=new UP,this.ignoreTargets=new UP,this.activeTouches={},this.handle=null,this._lastSetTapCountTime=0,this._register(Gi.runAndSubscribe(Pne,({window:e,disposables:i})=>{i.add(Be(e.document,"touchstart",n=>this.onTouchStart(n),{passive:!1})),i.add(Be(e.document,"touchend",n=>this.onTouchEnd(e,n))),i.add(Be(e.document,"touchmove",n=>this.onTouchMove(n),{passive:!1}))},{window:fo,disposables:this._store}))}static addTarget(e){if(!en.isTouchDevice())return We.None;en.INSTANCE||(en.INSTANCE=new en);let i=en.INSTANCE.targets.push(e);return Bt(i)}static ignoreTarget(e){if(!en.isTouchDevice())return We.None;en.INSTANCE||(en.INSTANCE=new en);let i=en.INSTANCE.ignoreTargets.push(e);return Bt(i)}static isTouchDevice(){return"ontouchstart"in fo||navigator.maxTouchPoints>0}dispose(){this.handle&&(this.handle.dispose(),this.handle=null),super.dispose()}onTouchStart(e){let i=Date.now();this.handle&&(this.handle.dispose(),this.handle=null);for(let n=0,r=e.targetTouches.length;n=en.HOLD_DELAY&&Math.abs(c.initialPageX-Kn(c.rollingPageX))<30&&Math.abs(c.initialPageY-Kn(c.rollingPageY))<30){let d=this.newGestureEvent(fs.Contextmenu,c.initialTarget);d.pageX=Kn(c.rollingPageX),d.pageY=Kn(c.rollingPageY),this.dispatchEvent(d)}else if(r===1){let d=Kn(c.rollingPageX),p=Kn(c.rollingPageY),g=Kn(c.rollingTimestamps)-c.rollingTimestamps[0],O=d-c.rollingPageX[0],_=p-c.rollingPageY[0],b=[...this.targets].filter(x=>c.initialTarget instanceof Node&&x.contains(c.initialTarget));this.inertia(e,b,n,Math.abs(O)/g,O>0?1:-1,d,Math.abs(_)/g,_>0?1:-1,p)}this.dispatchEvent(this.newGestureEvent(fs.End,c.initialTarget)),delete this.activeTouches[l.identifier]}this.dispatched&&(i.preventDefault(),i.stopPropagation(),this.dispatched=!1)}newGestureEvent(e,i){let n=document.createEvent("CustomEvent");return n.initEvent(e,!1,!0),n.initialTarget=i,n.tapCount=0,n}dispatchEvent(e){if(e.type===fs.Tap){let i=new Date().getTime(),n=0;i-this._lastSetTapCountTime>en.CLEAR_TAP_COUNT_TIME?n=1:n=2,this._lastSetTapCountTime=i,e.tapCount=n}else(e.type===fs.Change||e.type===fs.Contextmenu)&&(this._lastSetTapCountTime=0);if(e.initialTarget instanceof Node){for(let n of this.ignoreTargets)if(n.contains(e.initialTarget))return;let i=[];for(let n of this.targets)if(n.contains(e.initialTarget)){let r=0,s=e.initialTarget;for(;s&&s!==n;)r++,s=s.parentElement;i.push([r,n])}i.sort((n,r)=>n[0]-r[0]);for(let[n,r]of i)r.dispatchEvent(e),this.dispatched=!0}}inertia(e,i,n,r,s,o,l,c,u){this.handle=Dw(e,()=>{let d=Date.now(),p=d-n,g=0,O=0,_=!0;r+=en.SCROLL_FRICTION*p,l+=en.SCROLL_FRICTION*p,r>0&&(_=!1,g=s*r*p),l>0&&(_=!1,O=c*l*p);let b=this.newGestureEvent(fs.Change);b.translationX=g,b.translationY=O,i.forEach(x=>x.dispatchEvent(b)),_||this.inertia(e,i,d,r,s,o+g,l,c,u+O)})}onTouchMove(e){let i=Date.now();for(let n=0,r=e.changedTouches.length;n3&&(o.rollingPageX.shift(),o.rollingPageY.shift(),o.rollingTimestamps.shift()),o.rollingPageX.push(s.pageX),o.rollingPageY.push(s.pageY),o.rollingTimestamps.push(i)}this.dispatched&&(e.preventDefault(),e.stopPropagation(),this.dispatched=!1)}};tf.SCROLL_FRICTION=-.005,tf.HOLD_DELAY=700,tf.CLEAR_TAP_COUNT_TIME=400,Ut([Bne],tf,"isTouchDevice",1);var $ne=tf,Bw=class extends We{onclick(e,i){this._register(Be(e,wi.CLICK,n=>i(new xm(xs(e),n))))}onmousedown(e,i){this._register(Be(e,wi.MOUSE_DOWN,n=>i(new xm(xs(e),n))))}onmouseover(e,i){this._register(Be(e,wi.MOUSE_OVER,n=>i(new xm(xs(e),n))))}onmouseleave(e,i){this._register(Be(e,wi.MOUSE_LEAVE,n=>i(new xm(xs(e),n))))}onkeydown(e,i){this._register(Be(e,wi.KEY_DOWN,n=>i(new KP(n))))}onkeyup(e,i){this._register(Be(e,wi.KEY_UP,n=>i(new KP(n))))}oninput(e,i){this._register(Be(e,wi.INPUT,i))}onblur(e,i){this._register(Be(e,wi.BLUR,i))}onfocus(e,i){this._register(Be(e,wi.FOCUS,i))}onchange(e,i){this._register(Be(e,wi.CHANGE,i))}ignoreGesture(e){return $ne.ignoreTarget(e)}},rR=11,zne=class extends Bw{constructor(t){super(),this._onActivate=t.onActivate,this.bgDomNode=document.createElement("div"),this.bgDomNode.className="arrow-background",this.bgDomNode.style.position="absolute",this.bgDomNode.style.width=t.bgWidth+"px",this.bgDomNode.style.height=t.bgHeight+"px",typeof t.top<"u"&&(this.bgDomNode.style.top="0px"),typeof t.left<"u"&&(this.bgDomNode.style.left="0px"),typeof t.bottom<"u"&&(this.bgDomNode.style.bottom="0px"),typeof t.right<"u"&&(this.bgDomNode.style.right="0px"),this.domNode=document.createElement("div"),this.domNode.className=t.className,this.domNode.style.position="absolute",this.domNode.style.width=rR+"px",this.domNode.style.height=rR+"px",typeof t.top<"u"&&(this.domNode.style.top=t.top+"px"),typeof t.left<"u"&&(this.domNode.style.left=t.left+"px"),typeof t.bottom<"u"&&(this.domNode.style.bottom=t.bottom+"px"),typeof t.right<"u"&&(this.domNode.style.right=t.right+"px"),this._pointerMoveMonitor=this._register(new Y6),this._register(iR(this.bgDomNode,wi.POINTER_DOWN,e=>this._arrowPointerDown(e))),this._register(iR(this.domNode,wi.POINTER_DOWN,e=>this._arrowPointerDown(e))),this._pointerdownRepeatTimer=this._register(new Qne),this._pointerdownScheduleRepeatTimer=this._register(new Lw)}_arrowPointerDown(t){if(!t.target||!(t.target instanceof Element))return;let e=()=>{this._pointerdownRepeatTimer.cancelAndSet(()=>this._onActivate(),1e3/24,xs(t))};this._onActivate(),this._pointerdownRepeatTimer.cancel(),this._pointerdownScheduleRepeatTimer.cancelAndSet(e,200),this._pointerMoveMonitor.startMonitoring(t.target,t.pointerId,t.buttons,i=>{},()=>{this._pointerdownRepeatTimer.cancel(),this._pointerdownScheduleRepeatTimer.cancel()}),t.preventDefault()}},Nne=class aS{constructor(e,i,n,r,s,o,l){this._forceIntegerValues=e,this._scrollStateBrand=void 0,this._forceIntegerValues&&(i=i|0,n=n|0,r=r|0,s=s|0,o=o|0,l=l|0),this.rawScrollLeft=r,this.rawScrollTop=l,i<0&&(i=0),r+i>n&&(r=n-i),r<0&&(r=0),s<0&&(s=0),l+s>o&&(l=o-s),l<0&&(l=0),this.width=i,this.scrollWidth=n,this.scrollLeft=r,this.height=s,this.scrollHeight=o,this.scrollTop=l}equals(e){return this.rawScrollLeft===e.rawScrollLeft&&this.rawScrollTop===e.rawScrollTop&&this.width===e.width&&this.scrollWidth===e.scrollWidth&&this.scrollLeft===e.scrollLeft&&this.height===e.height&&this.scrollHeight===e.scrollHeight&&this.scrollTop===e.scrollTop}withScrollDimensions(e,i){return new aS(this._forceIntegerValues,typeof e.width<"u"?e.width:this.width,typeof e.scrollWidth<"u"?e.scrollWidth:this.scrollWidth,i?this.rawScrollLeft:this.scrollLeft,typeof e.height<"u"?e.height:this.height,typeof e.scrollHeight<"u"?e.scrollHeight:this.scrollHeight,i?this.rawScrollTop:this.scrollTop)}withScrollPosition(e){return new aS(this._forceIntegerValues,this.width,this.scrollWidth,typeof e.scrollLeft<"u"?e.scrollLeft:this.rawScrollLeft,this.height,this.scrollHeight,typeof e.scrollTop<"u"?e.scrollTop:this.rawScrollTop)}createScrollEvent(e,i){let n=this.width!==e.width,r=this.scrollWidth!==e.scrollWidth,s=this.scrollLeft!==e.scrollLeft,o=this.height!==e.height,l=this.scrollHeight!==e.scrollHeight,c=this.scrollTop!==e.scrollTop;return{inSmoothScrolling:i,oldWidth:e.width,oldScrollWidth:e.scrollWidth,oldScrollLeft:e.scrollLeft,width:this.width,scrollWidth:this.scrollWidth,scrollLeft:this.scrollLeft,oldHeight:e.height,oldScrollHeight:e.scrollHeight,oldScrollTop:e.scrollTop,height:this.height,scrollHeight:this.scrollHeight,scrollTop:this.scrollTop,widthChanged:n,scrollWidthChanged:r,scrollLeftChanged:s,heightChanged:o,scrollHeightChanged:l,scrollTopChanged:c}}},jne=class extends We{constructor(t){super(),this._scrollableBrand=void 0,this._onScroll=this._register(new me),this.onScroll=this._onScroll.event,this._smoothScrollDuration=t.smoothScrollDuration,this._scheduleAtNextAnimationFrame=t.scheduleAtNextAnimationFrame,this._state=new Nne(t.forceIntegerValues,0,0,0,0,0,0),this._smoothScrolling=null}dispose(){this._smoothScrolling&&(this._smoothScrolling.dispose(),this._smoothScrolling=null),super.dispose()}setSmoothScrollDuration(t){this._smoothScrollDuration=t}validateScrollPosition(t){return this._state.withScrollPosition(t)}getScrollDimensions(){return this._state}setScrollDimensions(t,e){var n;let i=this._state.withScrollDimensions(t,e);this._setState(i,!!this._smoothScrolling),(n=this._smoothScrolling)==null||n.acceptScrollDimensions(this._state)}getFutureScrollPosition(){return this._smoothScrolling?this._smoothScrolling.to:this._state}getCurrentScrollPosition(){return this._state}setScrollPositionNow(t){let e=this._state.withScrollPosition(t);this._smoothScrolling&&(this._smoothScrolling.dispose(),this._smoothScrolling=null),this._setState(e,!1)}setScrollPositionSmooth(t,e){if(this._smoothScrollDuration===0)return this.setScrollPositionNow(t);if(this._smoothScrolling){t={scrollLeft:typeof t.scrollLeft>"u"?this._smoothScrolling.to.scrollLeft:t.scrollLeft,scrollTop:typeof t.scrollTop>"u"?this._smoothScrolling.to.scrollTop:t.scrollTop};let i=this._state.withScrollPosition(t);if(this._smoothScrolling.to.scrollLeft===i.scrollLeft&&this._smoothScrolling.to.scrollTop===i.scrollTop)return;let n;e?n=new oR(this._smoothScrolling.from,i,this._smoothScrolling.startTime,this._smoothScrolling.duration):n=this._smoothScrolling.combine(this._state,i,this._smoothScrollDuration),this._smoothScrolling.dispose(),this._smoothScrolling=n}else{let i=this._state.withScrollPosition(t);this._smoothScrolling=oR.start(this._state,i,this._smoothScrollDuration)}this._smoothScrolling.animationFrameDisposable=this._scheduleAtNextAnimationFrame(()=>{this._smoothScrolling&&(this._smoothScrolling.animationFrameDisposable=null,this._performSmoothScrolling())})}hasPendingScrollAnimation(){return!!this._smoothScrolling}_performSmoothScrolling(){if(!this._smoothScrolling)return;let t=this._smoothScrolling.tick(),e=this._state.withScrollPosition(t);if(this._setState(e,!0),!!this._smoothScrolling){if(t.isDone){this._smoothScrolling.dispose(),this._smoothScrolling=null;return}this._smoothScrolling.animationFrameDisposable=this._scheduleAtNextAnimationFrame(()=>{this._smoothScrolling&&(this._smoothScrolling.animationFrameDisposable=null,this._performSmoothScrolling())})}}_setState(t,e){let i=this._state;i.equals(t)||(this._state=t,this._onScroll.fire(this._state.createScrollEvent(i,e)))}},sR=class{constructor(e,i,n){this.scrollLeft=e,this.scrollTop=i,this.isDone=n}};function $y(t,e){let i=e-t;return function(n){return t+i*Xne(n)}}function Ine(t,e,i){return function(n){return n2.5*n){let r,s;return e{var e;(e=this._domNode)==null||e.setClassName(this._visibleClassName)},0))}_hide(e){var i;this._revealTimer.cancel(),this._isVisible&&(this._isVisible=!1,(i=this._domNode)==null||i.setClassName(this._invisibleClassName+(e?" fade":"")))}},qne=140,H6=class extends Bw{constructor(e){super(),this._lazyRender=e.lazyRender,this._host=e.host,this._scrollable=e.scrollable,this._scrollByPage=e.scrollByPage,this._scrollbarState=e.scrollbarState,this._visibilityController=this._register(new Zne(e.visibility,"visible scrollbar "+e.extraScrollbarClassName,"invisible scrollbar "+e.extraScrollbarClassName)),this._visibilityController.setIsNeeded(this._scrollbarState.isNeeded()),this._pointerMoveMonitor=this._register(new Y6),this._shouldRender=!0,this.domNode=bf(document.createElement("div")),this.domNode.setAttribute("role","presentation"),this.domNode.setAttribute("aria-hidden","true"),this._visibilityController.setDomNode(this.domNode),this.domNode.setPosition("absolute"),this._register(Be(this.domNode.domNode,wi.POINTER_DOWN,i=>this._domNodePointerDown(i)))}_createArrow(e){let i=this._register(new zne(e));this.domNode.domNode.appendChild(i.bgDomNode),this.domNode.domNode.appendChild(i.domNode)}_createSlider(e,i,n,r){this.slider=bf(document.createElement("div")),this.slider.setClassName("slider"),this.slider.setPosition("absolute"),this.slider.setTop(e),this.slider.setLeft(i),typeof n=="number"&&this.slider.setWidth(n),typeof r=="number"&&this.slider.setHeight(r),this.slider.setLayerHinting(!0),this.slider.setContain("strict"),this.domNode.domNode.appendChild(this.slider.domNode),this._register(Be(this.slider.domNode,wi.POINTER_DOWN,s=>{s.button===0&&(s.preventDefault(),this._sliderPointerDown(s))})),this.onclick(this.slider.domNode,s=>{s.leftButton&&s.stopPropagation()})}_onElementSize(e){return this._scrollbarState.setVisibleSize(e)&&(this._visibilityController.setIsNeeded(this._scrollbarState.isNeeded()),this._shouldRender=!0,this._lazyRender||this.render()),this._shouldRender}_onElementScrollSize(e){return this._scrollbarState.setScrollSize(e)&&(this._visibilityController.setIsNeeded(this._scrollbarState.isNeeded()),this._shouldRender=!0,this._lazyRender||this.render()),this._shouldRender}_onElementScrollPosition(e){return this._scrollbarState.setScrollPosition(e)&&(this._visibilityController.setIsNeeded(this._scrollbarState.isNeeded()),this._shouldRender=!0,this._lazyRender||this.render()),this._shouldRender}beginReveal(){this._visibilityController.setShouldBeVisible(!0)}beginHide(){this._visibilityController.setShouldBeVisible(!1)}render(){this._shouldRender&&(this._shouldRender=!1,this._renderDomNode(this._scrollbarState.getRectangleLargeSize(),this._scrollbarState.getRectangleSmallSize()),this._updateSlider(this._scrollbarState.getSliderSize(),this._scrollbarState.getArrowSize()+this._scrollbarState.getSliderPosition()))}_domNodePointerDown(e){e.target===this.domNode.domNode&&this._onPointerDown(e)}delegatePointerDown(e){let i=this.domNode.domNode.getClientRects()[0].top,n=i+this._scrollbarState.getSliderPosition(),r=i+this._scrollbarState.getSliderPosition()+this._scrollbarState.getSliderSize(),s=this._sliderPointerPosition(e);n<=s&&s<=r?e.button===0&&(e.preventDefault(),this._sliderPointerDown(e)):this._onPointerDown(e)}_onPointerDown(e){let i,n;if(e.target===this.domNode.domNode&&typeof e.offsetX=="number"&&typeof e.offsetY=="number")i=e.offsetX,n=e.offsetY;else{let s=Lne(this.domNode.domNode);i=e.pageX-s.left,n=e.pageY-s.top}let r=this._pointerDownRelativePosition(i,n);this._setDesiredScrollPositionNow(this._scrollByPage?this._scrollbarState.getDesiredScrollPositionFromOffsetPaged(r):this._scrollbarState.getDesiredScrollPositionFromOffset(r)),e.button===0&&(e.preventDefault(),this._sliderPointerDown(e))}_sliderPointerDown(e){if(!e.target||!(e.target instanceof Element))return;let i=this._sliderPointerPosition(e),n=this._sliderOrthogonalPointerPosition(e),r=this._scrollbarState.clone();this.slider.toggleClassName("active",!0),this._pointerMoveMonitor.startMonitoring(e.target,e.pointerId,e.buttons,s=>{let o=this._sliderOrthogonalPointerPosition(s),l=Math.abs(o-n);if(Z6&&l>qne){this._setDesiredScrollPositionNow(r.getScrollPosition());return}let c=this._sliderPointerPosition(s)-i;this._setDesiredScrollPositionNow(r.getDesiredScrollPositionFromDelta(c))},()=>{this.slider.toggleClassName("active",!1),this._host.onDragEnd()}),this._host.onDragStart()}_setDesiredScrollPositionNow(e){let i={};this.writeScrollPosition(i,e),this._scrollable.setScrollPositionNow(i)}updateScrollbarSize(e){this._updateScrollbarSize(e),this._scrollbarState.setScrollbarSize(e),this._shouldRender=!0,this._lazyRender||this.render()}isNeeded(){return this._scrollbarState.isNeeded()}},F6=class cS{constructor(e,i,n,r,s,o){this._scrollbarSize=Math.round(i),this._oppositeScrollbarSize=Math.round(n),this._arrowSize=Math.round(e),this._visibleSize=r,this._scrollSize=s,this._scrollPosition=o,this._computedAvailableSize=0,this._computedIsNeeded=!1,this._computedSliderSize=0,this._computedSliderRatio=0,this._computedSliderPosition=0,this._refreshComputedValues()}clone(){return new cS(this._arrowSize,this._scrollbarSize,this._oppositeScrollbarSize,this._visibleSize,this._scrollSize,this._scrollPosition)}setVisibleSize(e){let i=Math.round(e);return this._visibleSize!==i?(this._visibleSize=i,this._refreshComputedValues(),!0):!1}setScrollSize(e){let i=Math.round(e);return this._scrollSize!==i?(this._scrollSize=i,this._refreshComputedValues(),!0):!1}setScrollPosition(e){let i=Math.round(e);return this._scrollPosition!==i?(this._scrollPosition=i,this._refreshComputedValues(),!0):!1}setScrollbarSize(e){this._scrollbarSize=Math.round(e)}setOppositeScrollbarSize(e){this._oppositeScrollbarSize=Math.round(e)}static _computeValues(e,i,n,r,s){let o=Math.max(0,n-e),l=Math.max(0,o-2*i),c=r>0&&r>n;if(!c)return{computedAvailableSize:Math.round(o),computedIsNeeded:c,computedSliderSize:Math.round(l),computedSliderRatio:0,computedSliderPosition:0};let u=Math.round(Math.max(20,Math.floor(n*l/r))),d=(l-u)/(r-n),p=s*d;return{computedAvailableSize:Math.round(o),computedIsNeeded:c,computedSliderSize:Math.round(u),computedSliderRatio:d,computedSliderPosition:Math.round(p)}}_refreshComputedValues(){let e=cS._computeValues(this._oppositeScrollbarSize,this._arrowSize,this._visibleSize,this._scrollSize,this._scrollPosition);this._computedAvailableSize=e.computedAvailableSize,this._computedIsNeeded=e.computedIsNeeded,this._computedSliderSize=e.computedSliderSize,this._computedSliderRatio=e.computedSliderRatio,this._computedSliderPosition=e.computedSliderPosition}getArrowSize(){return this._arrowSize}getScrollPosition(){return this._scrollPosition}getRectangleLargeSize(){return this._computedAvailableSize}getRectangleSmallSize(){return this._scrollbarSize}isNeeded(){return this._computedIsNeeded}getSliderSize(){return this._computedSliderSize}getSliderPosition(){return this._computedSliderPosition}getDesiredScrollPositionFromOffset(e){if(!this._computedIsNeeded)return 0;let i=e-this._arrowSize-this._computedSliderSize/2;return Math.round(i/this._computedSliderRatio)}getDesiredScrollPositionFromOffsetPaged(e){if(!this._computedIsNeeded)return 0;let i=e-this._arrowSize,n=this._scrollPosition;return i0&&Math.abs(e.deltaY)>0)return 1;let n=.5;if((!this._isAlmostInt(e.deltaX)||!this._isAlmostInt(e.deltaY))&&(n+=.25),i){let r=Math.abs(e.deltaX),s=Math.abs(e.deltaY),o=Math.abs(i.deltaX),l=Math.abs(i.deltaY),c=Math.max(Math.min(r,o),1),u=Math.max(Math.min(s,l),1),d=Math.max(r,o),p=Math.max(s,l);d%c===0&&p%u===0&&(n-=.5)}return Math.min(Math.max(n,0),1)}_isAlmostInt(e){return Math.abs(Math.round(e)-e)<.01}};hS.INSTANCE=new hS;var Fne=hS,Gne=class extends Bw{constructor(t,e,i){super(),this._onScroll=this._register(new me),this.onScroll=this._onScroll.event,this._onWillScroll=this._register(new me),this.onWillScroll=this._onWillScroll.event,this._options=Jne(e),this._scrollable=i,this._register(this._scrollable.onScroll(r=>{this._onWillScroll.fire(r),this._onDidScroll(r),this._onScroll.fire(r)}));let n={onMouseWheel:r=>this._onMouseWheel(r),onDragStart:()=>this._onDragStart(),onDragEnd:()=>this._onDragEnd()};this._verticalScrollbar=this._register(new Une(this._scrollable,this._options,n)),this._horizontalScrollbar=this._register(new Wne(this._scrollable,this._options,n)),this._domNode=document.createElement("div"),this._domNode.className="xterm-scrollable-element "+this._options.className,this._domNode.setAttribute("role","presentation"),this._domNode.style.position="relative",this._domNode.appendChild(t),this._domNode.appendChild(this._horizontalScrollbar.domNode.domNode),this._domNode.appendChild(this._verticalScrollbar.domNode.domNode),this._options.useShadows?(this._leftShadowDomNode=bf(document.createElement("div")),this._leftShadowDomNode.setClassName("shadow"),this._domNode.appendChild(this._leftShadowDomNode.domNode),this._topShadowDomNode=bf(document.createElement("div")),this._topShadowDomNode.setClassName("shadow"),this._domNode.appendChild(this._topShadowDomNode.domNode),this._topLeftShadowDomNode=bf(document.createElement("div")),this._topLeftShadowDomNode.setClassName("shadow"),this._domNode.appendChild(this._topLeftShadowDomNode.domNode)):(this._leftShadowDomNode=null,this._topShadowDomNode=null,this._topLeftShadowDomNode=null),this._listenOnDomNode=this._options.listenOnDomNode||this._domNode,this._mouseWheelToDispose=[],this._setListeningToMouseWheel(this._options.handleMouseWheel),this.onmouseover(this._listenOnDomNode,r=>this._onMouseOver(r)),this.onmouseleave(this._listenOnDomNode,r=>this._onMouseLeave(r)),this._hideTimeout=this._register(new Lw),this._isDragging=!1,this._mouseIsOver=!1,this._shouldRender=!0,this._revealOnScroll=!0}get options(){return this._options}dispose(){this._mouseWheelToDispose=Ml(this._mouseWheelToDispose),super.dispose()}getDomNode(){return this._domNode}getOverviewRulerLayoutInfo(){return{parent:this._domNode,insertBefore:this._verticalScrollbar.domNode.domNode}}delegateVerticalScrollbarPointerDown(t){this._verticalScrollbar.delegatePointerDown(t)}getScrollDimensions(){return this._scrollable.getScrollDimensions()}setScrollDimensions(t){this._scrollable.setScrollDimensions(t,!1)}updateClassName(t){this._options.className=t,Ts&&(this._options.className+=" mac"),this._domNode.className="xterm-scrollable-element "+this._options.className}updateOptions(t){typeof t.handleMouseWheel<"u"&&(this._options.handleMouseWheel=t.handleMouseWheel,this._setListeningToMouseWheel(this._options.handleMouseWheel)),typeof t.mouseWheelScrollSensitivity<"u"&&(this._options.mouseWheelScrollSensitivity=t.mouseWheelScrollSensitivity),typeof t.fastScrollSensitivity<"u"&&(this._options.fastScrollSensitivity=t.fastScrollSensitivity),typeof t.scrollPredominantAxis<"u"&&(this._options.scrollPredominantAxis=t.scrollPredominantAxis),typeof t.horizontal<"u"&&(this._options.horizontal=t.horizontal),typeof t.vertical<"u"&&(this._options.vertical=t.vertical),typeof t.horizontalScrollbarSize<"u"&&(this._options.horizontalScrollbarSize=t.horizontalScrollbarSize),typeof t.verticalScrollbarSize<"u"&&(this._options.verticalScrollbarSize=t.verticalScrollbarSize),typeof t.scrollByPage<"u"&&(this._options.scrollByPage=t.scrollByPage),this._horizontalScrollbar.updateOptions(this._options),this._verticalScrollbar.updateOptions(this._options),this._options.lazyRender||this._render()}setRevealOnScroll(t){this._revealOnScroll=t}delegateScrollFromMouseWheelEvent(t){this._onMouseWheel(new eR(t))}_setListeningToMouseWheel(t){if(this._mouseWheelToDispose.length>0!==t&&(this._mouseWheelToDispose=Ml(this._mouseWheelToDispose),t)){let e=i=>{this._onMouseWheel(new eR(i))};this._mouseWheelToDispose.push(Be(this._listenOnDomNode,wi.MOUSE_WHEEL,e,{passive:!1}))}}_onMouseWheel(t){var r;if((r=t.browserEvent)!=null&&r.defaultPrevented)return;let e=Fne.INSTANCE;e.acceptStandardWheelEvent(t);let i=!1;if(t.deltaY||t.deltaX){let s=t.deltaY*this._options.mouseWheelScrollSensitivity,o=t.deltaX*this._options.mouseWheelScrollSensitivity;this._options.scrollPredominantAxis&&(this._options.scrollYToX&&o+s===0?o=s=0:Math.abs(s)>=Math.abs(o)?o=0:s=0),this._options.flipAxes&&([s,o]=[o,s]);let l=!Ts&&t.browserEvent&&t.browserEvent.shiftKey;(this._options.scrollYToX||l)&&!o&&(o=s,s=0),t.browserEvent&&t.browserEvent.altKey&&(o=o*this._options.fastScrollSensitivity,s=s*this._options.fastScrollSensitivity);let c=this._scrollable.getFutureScrollPosition(),u={};if(s){let d=aR*s,p=c.scrollTop-(d<0?Math.floor(d):Math.ceil(d));this._verticalScrollbar.writeScrollPosition(u,p)}if(o){let d=aR*o,p=c.scrollLeft-(d<0?Math.floor(d):Math.ceil(d));this._horizontalScrollbar.writeScrollPosition(u,p)}u=this._scrollable.validateScrollPosition(u),(c.scrollLeft!==u.scrollLeft||c.scrollTop!==u.scrollTop)&&(this._options.mouseWheelSmoothScroll&&e.isPhysicalMouseWheel()?this._scrollable.setScrollPositionSmooth(u):this._scrollable.setScrollPositionNow(u),i=!0)}let n=i;!n&&this._options.alwaysConsumeMouseWheel&&(n=!0),!n&&this._options.consumeMouseWheelIfScrollbarIsNeeded&&(this._verticalScrollbar.isNeeded()||this._horizontalScrollbar.isNeeded())&&(n=!0),n&&(t.preventDefault(),t.stopPropagation())}_onDidScroll(t){this._shouldRender=this._horizontalScrollbar.onDidScroll(t)||this._shouldRender,this._shouldRender=this._verticalScrollbar.onDidScroll(t)||this._shouldRender,this._options.useShadows&&(this._shouldRender=!0),this._revealOnScroll&&this._reveal(),this._options.lazyRender||this._render()}renderNow(){if(!this._options.lazyRender)throw new Error("Please use `lazyRender` together with `renderNow`!");this._render()}_render(){if(this._shouldRender&&(this._shouldRender=!1,this._horizontalScrollbar.render(),this._verticalScrollbar.render(),this._options.useShadows)){let t=this._scrollable.getCurrentScrollPosition(),e=t.scrollTop>0,i=t.scrollLeft>0,n=i?" left":"",r=e?" top":"",s=i||e?" top-left-corner":"";this._leftShadowDomNode.setClassName(`shadow${n}`),this._topShadowDomNode.setClassName(`shadow${r}`),this._topLeftShadowDomNode.setClassName(`shadow${s}${r}${n}`)}}_onDragStart(){this._isDragging=!0,this._reveal()}_onDragEnd(){this._isDragging=!1,this._hide()}_onMouseLeave(t){this._mouseIsOver=!1,this._hide()}_onMouseOver(t){this._mouseIsOver=!0,this._reveal()}_reveal(){this._verticalScrollbar.beginReveal(),this._horizontalScrollbar.beginReveal(),this._scheduleHide()}_hide(){!this._mouseIsOver&&!this._isDragging&&(this._verticalScrollbar.beginHide(),this._horizontalScrollbar.beginHide())}_scheduleHide(){!this._mouseIsOver&&!this._isDragging&&this._hideTimeout.cancelAndSet(()=>this._hide(),Yne)}},Kne=class extends Gne{constructor(e,i,n){super(e,i,n)}setScrollPosition(e){e.reuseAnimation?this._scrollable.setScrollPositionSmooth(e,e.reuseAnimation):this._scrollable.setScrollPositionNow(e)}getScrollPosition(){return this._scrollable.getCurrentScrollPosition()}};function Jne(t){let e={lazyRender:typeof t.lazyRender<"u"?t.lazyRender:!1,className:typeof t.className<"u"?t.className:"",useShadows:typeof t.useShadows<"u"?t.useShadows:!0,handleMouseWheel:typeof t.handleMouseWheel<"u"?t.handleMouseWheel:!0,flipAxes:typeof t.flipAxes<"u"?t.flipAxes:!1,consumeMouseWheelIfScrollbarIsNeeded:typeof t.consumeMouseWheelIfScrollbarIsNeeded<"u"?t.consumeMouseWheelIfScrollbarIsNeeded:!1,alwaysConsumeMouseWheel:typeof t.alwaysConsumeMouseWheel<"u"?t.alwaysConsumeMouseWheel:!1,scrollYToX:typeof t.scrollYToX<"u"?t.scrollYToX:!1,mouseWheelScrollSensitivity:typeof t.mouseWheelScrollSensitivity<"u"?t.mouseWheelScrollSensitivity:1,fastScrollSensitivity:typeof t.fastScrollSensitivity<"u"?t.fastScrollSensitivity:5,scrollPredominantAxis:typeof t.scrollPredominantAxis<"u"?t.scrollPredominantAxis:!0,mouseWheelSmoothScroll:typeof t.mouseWheelSmoothScroll<"u"?t.mouseWheelSmoothScroll:!0,arrowSize:typeof t.arrowSize<"u"?t.arrowSize:11,listenOnDomNode:typeof t.listenOnDomNode<"u"?t.listenOnDomNode:null,horizontal:typeof t.horizontal<"u"?t.horizontal:1,horizontalScrollbarSize:typeof t.horizontalScrollbarSize<"u"?t.horizontalScrollbarSize:10,horizontalSliderSize:typeof t.horizontalSliderSize<"u"?t.horizontalSliderSize:0,horizontalHasArrows:typeof t.horizontalHasArrows<"u"?t.horizontalHasArrows:!1,vertical:typeof t.vertical<"u"?t.vertical:1,verticalScrollbarSize:typeof t.verticalScrollbarSize<"u"?t.verticalScrollbarSize:10,verticalHasArrows:typeof t.verticalHasArrows<"u"?t.verticalHasArrows:!1,verticalSliderSize:typeof t.verticalSliderSize<"u"?t.verticalSliderSize:0,scrollByPage:typeof t.scrollByPage<"u"?t.scrollByPage:!1};return e.horizontalSliderSize=typeof t.horizontalSliderSize<"u"?t.horizontalSliderSize:e.horizontalScrollbarSize,e.verticalSliderSize=typeof t.verticalSliderSize<"u"?t.verticalSliderSize:e.verticalScrollbarSize,Ts&&(e.className+=" mac"),e}var uS=class extends We{constructor(e,i,n,r,s,o,l,c){super(),this._bufferService=n,this._optionsService=l,this._renderService=c,this._onRequestScrollLines=this._register(new me),this.onRequestScrollLines=this._onRequestScrollLines.event,this._isSyncing=!1,this._isHandlingScroll=!1,this._suppressOnScrollHandler=!1;let u=this._register(new jne({forceIntegerValues:!1,smoothScrollDuration:this._optionsService.rawOptions.smoothScrollDuration,scheduleAtNextAnimationFrame:d=>Dw(r.window,d)}));this._register(this._optionsService.onSpecificOptionChange("smoothScrollDuration",()=>{u.setSmoothScrollDuration(this._optionsService.rawOptions.smoothScrollDuration)})),this._scrollableElement=this._register(new Kne(i,{vertical:1,horizontal:2,useShadows:!1,mouseWheelSmoothScroll:!0,...this._getChangeOptions()},u)),this._register(this._optionsService.onMultipleOptionChange(["scrollSensitivity","fastScrollSensitivity","overviewRuler"],()=>this._scrollableElement.updateOptions(this._getChangeOptions()))),this._register(s.onProtocolChange(d=>{this._scrollableElement.updateOptions({handleMouseWheel:!(d&16)})})),this._scrollableElement.setScrollDimensions({height:0,scrollHeight:0}),this._register(Gi.runAndSubscribe(o.onChangeColors,()=>{this._scrollableElement.getDomNode().style.backgroundColor=o.colors.background.css})),e.appendChild(this._scrollableElement.getDomNode()),this._register(Bt(()=>this._scrollableElement.getDomNode().remove())),this._styleElement=r.mainDocument.createElement("style"),i.appendChild(this._styleElement),this._register(Bt(()=>this._styleElement.remove())),this._register(Gi.runAndSubscribe(o.onChangeColors,()=>{this._styleElement.textContent=[".xterm .xterm-scrollable-element > .scrollbar > .slider {",` background: ${o.colors.scrollbarSliderBackground.css};`,"}",".xterm .xterm-scrollable-element > .scrollbar > .slider:hover {",` background: ${o.colors.scrollbarSliderHoverBackground.css};`,"}",".xterm .xterm-scrollable-element > .scrollbar > .slider.active {",` background: ${o.colors.scrollbarSliderActiveBackground.css};`,"}"].join(` -`)})),this._register(this._bufferService.onResize(()=>this.queueSync())),this._register(this._bufferService.buffers.onBufferActivate(()=>{this._latestYDisp=void 0,this.queueSync()})),this._register(this._bufferService.onScroll(()=>this._sync())),this._register(this._scrollableElement.onScroll(d=>this._handleScroll(d)))}scrollLines(e){let i=this._scrollableElement.getScrollPosition();this._scrollableElement.setScrollPosition({reuseAnimation:!0,scrollTop:i.scrollTop+e*this._renderService.dimensions.css.cell.height})}scrollToLine(e,i){i&&(this._latestYDisp=e),this._scrollableElement.setScrollPosition({reuseAnimation:!i,scrollTop:e*this._renderService.dimensions.css.cell.height})}_getChangeOptions(){var e;return{mouseWheelScrollSensitivity:this._optionsService.rawOptions.scrollSensitivity,fastScrollSensitivity:this._optionsService.rawOptions.fastScrollSensitivity,verticalScrollbarSize:((e=this._optionsService.rawOptions.overviewRuler)==null?void 0:e.width)||14}}queueSync(e){e!==void 0&&(this._latestYDisp=e),this._queuedAnimationFrame===void 0&&(this._queuedAnimationFrame=this._renderService.addRefreshCallback(()=>{this._queuedAnimationFrame=void 0,this._sync(this._latestYDisp)}))}_sync(e=this._bufferService.buffer.ydisp){!this._renderService||this._isSyncing||(this._isSyncing=!0,this._suppressOnScrollHandler=!0,this._scrollableElement.setScrollDimensions({height:this._renderService.dimensions.css.canvas.height,scrollHeight:this._renderService.dimensions.css.cell.height*this._bufferService.buffer.lines.length}),this._suppressOnScrollHandler=!1,e!==this._latestYDisp&&this._scrollableElement.setScrollPosition({scrollTop:e*this._renderService.dimensions.css.cell.height}),this._isSyncing=!1)}_handleScroll(e){if(!this._renderService||this._isHandlingScroll||this._suppressOnScrollHandler)return;this._isHandlingScroll=!0;let i=Math.round(e.scrollTop/this._renderService.dimensions.css.cell.height),n=i-this._bufferService.buffer.ydisp;n!==0&&(this._latestYDisp=i,this._onRequestScrollLines.fire(n)),this._isHandlingScroll=!1}};uS=Ut([be(2,yn),be(3,xo),be(4,M6),be(5,Ch),be(6,bn),be(7,wo)],uS);var fS=class extends We{constructor(e,i,n,r,s){super(),this._screenElement=e,this._bufferService=i,this._coreBrowserService=n,this._decorationService=r,this._renderService=s,this._decorationElements=new Map,this._altBufferIsActive=!1,this._dimensionsChanged=!1,this._container=document.createElement("div"),this._container.classList.add("xterm-decoration-container"),this._screenElement.appendChild(this._container),this._register(this._renderService.onRenderedViewportChange(()=>this._doRefreshDecorations())),this._register(this._renderService.onDimensionsChange(()=>{this._dimensionsChanged=!0,this._queueRefresh()})),this._register(this._coreBrowserService.onDprChange(()=>this._queueRefresh())),this._register(this._bufferService.buffers.onBufferActivate(()=>{this._altBufferIsActive=this._bufferService.buffer===this._bufferService.buffers.alt})),this._register(this._decorationService.onDecorationRegistered(()=>this._queueRefresh())),this._register(this._decorationService.onDecorationRemoved(o=>this._removeDecoration(o))),this._register(Bt(()=>{this._container.remove(),this._decorationElements.clear()}))}_queueRefresh(){this._animationFrame===void 0&&(this._animationFrame=this._renderService.addRefreshCallback(()=>{this._doRefreshDecorations(),this._animationFrame=void 0}))}_doRefreshDecorations(){for(let e of this._decorationService.decorations)this._renderDecoration(e);this._dimensionsChanged=!1}_renderDecoration(e){this._refreshStyle(e),this._dimensionsChanged&&this._refreshXPosition(e)}_createElement(e){var r;let i=this._coreBrowserService.mainDocument.createElement("div");i.classList.add("xterm-decoration"),i.classList.toggle("xterm-decoration-top-layer",((r=e==null?void 0:e.options)==null?void 0:r.layer)==="top"),i.style.width=`${Math.round((e.options.width||1)*this._renderService.dimensions.css.cell.width)}px`,i.style.height=`${(e.options.height||1)*this._renderService.dimensions.css.cell.height}px`,i.style.top=`${(e.marker.line-this._bufferService.buffers.active.ydisp)*this._renderService.dimensions.css.cell.height}px`,i.style.lineHeight=`${this._renderService.dimensions.css.cell.height}px`;let n=e.options.x??0;return n&&n>this._bufferService.cols&&(i.style.display="none"),this._refreshXPosition(e,i),i}_refreshStyle(e){let i=e.marker.line-this._bufferService.buffers.active.ydisp;if(i<0||i>=this._bufferService.rows)e.element&&(e.element.style.display="none",e.onRenderEmitter.fire(e.element));else{let n=this._decorationElements.get(e);n||(n=this._createElement(e),e.element=n,this._decorationElements.set(e,n),this._container.appendChild(n),e.onDispose(()=>{this._decorationElements.delete(e),n.remove()})),n.style.display=this._altBufferIsActive?"none":"block",this._altBufferIsActive||(n.style.width=`${Math.round((e.options.width||1)*this._renderService.dimensions.css.cell.width)}px`,n.style.height=`${(e.options.height||1)*this._renderService.dimensions.css.cell.height}px`,n.style.top=`${i*this._renderService.dimensions.css.cell.height}px`,n.style.lineHeight=`${this._renderService.dimensions.css.cell.height}px`),e.onRenderEmitter.fire(n)}}_refreshXPosition(e,i=e.element){if(!i)return;let n=e.options.x??0;(e.options.anchor||"left")==="right"?i.style.right=n?`${n*this._renderService.dimensions.css.cell.width}px`:"":i.style.left=n?`${n*this._renderService.dimensions.css.cell.width}px`:""}_removeDecoration(e){var i;(i=this._decorationElements.get(e))==null||i.remove(),this._decorationElements.delete(e),e.dispose()}};fS=Ut([be(1,yn),be(2,xo),be(3,Sd),be(4,wo)],fS);var ere=class{constructor(){this._zones=[],this._zonePool=[],this._zonePoolIndex=0,this._linePadding={full:0,left:0,center:0,right:0}}get zones(){return this._zonePool.length=Math.min(this._zonePool.length,this._zones.length),this._zones}clear(){this._zones.length=0,this._zonePoolIndex=0}addDecoration(e){if(e.options.overviewRulerOptions){for(let i of this._zones)if(i.color===e.options.overviewRulerOptions.color&&i.position===e.options.overviewRulerOptions.position){if(this._lineIntersectsZone(i,e.marker.line))return;if(this._lineAdjacentToZone(i,e.marker.line,e.options.overviewRulerOptions.position)){this._addLineToZone(i,e.marker.line);return}}if(this._zonePoolIndex=e.startBufferLine&&i<=e.endBufferLine}_lineAdjacentToZone(e,i,n){return i>=e.startBufferLine-this._linePadding[n||"full"]&&i<=e.endBufferLine+this._linePadding[n||"full"]}_addLineToZone(e,i){e.startBufferLine=Math.min(e.startBufferLine,i),e.endBufferLine=Math.max(e.endBufferLine,i)}},ls={full:0,left:0,center:0,right:0},ra={full:0,left:0,center:0,right:0},Du={full:0,left:0,center:0,right:0},Kg=class extends We{constructor(e,i,n,r,s,o,l,c){var d;super(),this._viewportElement=e,this._screenElement=i,this._bufferService=n,this._decorationService=r,this._renderService=s,this._optionsService=o,this._themeService=l,this._coreBrowserService=c,this._colorZoneStore=new ere,this._shouldUpdateDimensions=!0,this._shouldUpdateAnchor=!0,this._lastKnownBufferLength=0,this._canvas=this._coreBrowserService.mainDocument.createElement("canvas"),this._canvas.classList.add("xterm-decoration-overview-ruler"),this._refreshCanvasDimensions(),(d=this._viewportElement.parentElement)==null||d.insertBefore(this._canvas,this._viewportElement),this._register(Bt(()=>{var p;return(p=this._canvas)==null?void 0:p.remove()}));let u=this._canvas.getContext("2d");if(u)this._ctx=u;else throw new Error("Ctx cannot be null");this._register(this._decorationService.onDecorationRegistered(()=>this._queueRefresh(void 0,!0))),this._register(this._decorationService.onDecorationRemoved(()=>this._queueRefresh(void 0,!0))),this._register(this._renderService.onRenderedViewportChange(()=>this._queueRefresh())),this._register(this._bufferService.buffers.onBufferActivate(()=>{this._canvas.style.display=this._bufferService.buffer===this._bufferService.buffers.alt?"none":"block"})),this._register(this._bufferService.onScroll(()=>{this._lastKnownBufferLength!==this._bufferService.buffers.normal.lines.length&&(this._refreshDrawHeightConstants(),this._refreshColorZonePadding())})),this._register(this._renderService.onRender(()=>{(!this._containerHeight||this._containerHeight!==this._screenElement.clientHeight)&&(this._queueRefresh(!0),this._containerHeight=this._screenElement.clientHeight)})),this._register(this._coreBrowserService.onDprChange(()=>this._queueRefresh(!0))),this._register(this._optionsService.onSpecificOptionChange("overviewRuler",()=>this._queueRefresh(!0))),this._register(this._themeService.onChangeColors(()=>this._queueRefresh())),this._queueRefresh(!0)}get _width(){var e;return((e=this._optionsService.options.overviewRuler)==null?void 0:e.width)||0}_refreshDrawConstants(){let e=Math.floor((this._canvas.width-1)/3),i=Math.ceil((this._canvas.width-1)/3);ra.full=this._canvas.width,ra.left=e,ra.center=i,ra.right=e,this._refreshDrawHeightConstants(),Du.full=1,Du.left=1,Du.center=1+ra.left,Du.right=1+ra.left+ra.center}_refreshDrawHeightConstants(){ls.full=Math.round(2*this._coreBrowserService.dpr);let e=this._canvas.height/this._bufferService.buffer.lines.length,i=Math.round(Math.max(Math.min(e,12),6)*this._coreBrowserService.dpr);ls.left=i,ls.center=i,ls.right=i}_refreshColorZonePadding(){this._colorZoneStore.setPadding({full:Math.floor(this._bufferService.buffers.active.lines.length/(this._canvas.height-1)*ls.full),left:Math.floor(this._bufferService.buffers.active.lines.length/(this._canvas.height-1)*ls.left),center:Math.floor(this._bufferService.buffers.active.lines.length/(this._canvas.height-1)*ls.center),right:Math.floor(this._bufferService.buffers.active.lines.length/(this._canvas.height-1)*ls.right)}),this._lastKnownBufferLength=this._bufferService.buffers.normal.lines.length}_refreshCanvasDimensions(){this._canvas.style.width=`${this._width}px`,this._canvas.width=Math.round(this._width*this._coreBrowserService.dpr),this._canvas.style.height=`${this._screenElement.clientHeight}px`,this._canvas.height=Math.round(this._screenElement.clientHeight*this._coreBrowserService.dpr),this._refreshDrawConstants(),this._refreshColorZonePadding()}_refreshDecorations(){this._shouldUpdateDimensions&&this._refreshCanvasDimensions(),this._ctx.clearRect(0,0,this._canvas.width,this._canvas.height),this._colorZoneStore.clear();for(let i of this._decorationService.decorations)this._colorZoneStore.addDecoration(i);this._ctx.lineWidth=1,this._renderRulerOutline();let e=this._colorZoneStore.zones;for(let i of e)i.position!=="full"&&this._renderColorZone(i);for(let i of e)i.position==="full"&&this._renderColorZone(i);this._shouldUpdateDimensions=!1,this._shouldUpdateAnchor=!1}_renderRulerOutline(){this._ctx.fillStyle=this._themeService.colors.overviewRulerBorder.css,this._ctx.fillRect(0,0,1,this._canvas.height),this._optionsService.rawOptions.overviewRuler.showTopBorder&&this._ctx.fillRect(1,0,this._canvas.width-1,1),this._optionsService.rawOptions.overviewRuler.showBottomBorder&&this._ctx.fillRect(1,this._canvas.height-1,this._canvas.width-1,this._canvas.height)}_renderColorZone(e){this._ctx.fillStyle=e.color,this._ctx.fillRect(Du[e.position||"full"],Math.round((this._canvas.height-1)*(e.startBufferLine/this._bufferService.buffers.active.lines.length)-ls[e.position||"full"]/2),ra[e.position||"full"],Math.round((this._canvas.height-1)*((e.endBufferLine-e.startBufferLine)/this._bufferService.buffers.active.lines.length)+ls[e.position||"full"]))}_queueRefresh(e,i){this._shouldUpdateDimensions=e||this._shouldUpdateDimensions,this._shouldUpdateAnchor=i||this._shouldUpdateAnchor,this._animationFrame===void 0&&(this._animationFrame=this._coreBrowserService.window.requestAnimationFrame(()=>{this._refreshDecorations(),this._animationFrame=void 0}))}};Kg=Ut([be(2,yn),be(3,Sd),be(4,wo),be(5,bn),be(6,Ch),be(7,xo)],Kg);var ce;(t=>(t.NUL="\0",t.SOH="",t.STX="",t.ETX="",t.EOT="",t.ENQ="",t.ACK="",t.BEL="\x07",t.BS="\b",t.HT=" ",t.LF=` -`,t.VT="\v",t.FF="\f",t.CR="\r",t.SO="",t.SI="",t.DLE="",t.DC1="",t.DC2="",t.DC3="",t.DC4="",t.NAK="",t.SYN="",t.ETB="",t.CAN="",t.EM="",t.SUB="",t.ESC="\x1B",t.FS="",t.GS="",t.RS="",t.US="",t.SP=" ",t.DEL=""))(ce||(ce={}));var ig;(t=>(t.PAD="€",t.HOP="",t.BPH="‚",t.NBH="ƒ",t.IND="„",t.NEL="…",t.SSA="†",t.ESA="‡",t.HTS="ˆ",t.HTJ="‰",t.VTS="Š",t.PLD="‹",t.PLU="Œ",t.RI="",t.SS2="Ž",t.SS3="",t.DCS="",t.PU1="‘",t.PU2="’",t.STS="“",t.CCH="”",t.MW="•",t.SPA="–",t.EPA="—",t.SOS="˜",t.SGCI="™",t.SCI="š",t.CSI="›",t.ST="œ",t.OSC="",t.PM="ž",t.APC="Ÿ"))(ig||(ig={}));var G6;(t=>t.ST=`${ce.ESC}\\`)(G6||(G6={}));var dS=class{constructor(e,i,n,r,s,o){this._textarea=e,this._compositionView=i,this._bufferService=n,this._optionsService=r,this._coreService=s,this._renderService=o,this._isComposing=!1,this._isSendingComposition=!1,this._compositionPosition={start:0,end:0},this._dataAlreadySent=""}get isComposing(){return this._isComposing}compositionstart(){this._isComposing=!0,this._compositionPosition.start=this._textarea.value.length,this._compositionView.textContent="",this._dataAlreadySent="",this._compositionView.classList.add("active")}compositionupdate(e){this._compositionView.textContent=e.data,this.updateCompositionElements(),setTimeout(()=>{this._compositionPosition.end=this._textarea.value.length},0)}compositionend(){this._finalizeComposition(!0)}keydown(e){if(this._isComposing||this._isSendingComposition){if(e.keyCode===20||e.keyCode===229||e.keyCode===16||e.keyCode===17||e.keyCode===18)return!1;this._finalizeComposition(!1)}return e.keyCode===229?(this._handleAnyTextareaChanges(),!1):!0}_finalizeComposition(e){if(this._compositionView.classList.remove("active"),this._isComposing=!1,e){let i={start:this._compositionPosition.start,end:this._compositionPosition.end};this._isSendingComposition=!0,setTimeout(()=>{if(this._isSendingComposition){this._isSendingComposition=!1;let n;i.start+=this._dataAlreadySent.length,this._isComposing?n=this._textarea.value.substring(i.start,this._compositionPosition.start):n=this._textarea.value.substring(i.start),n.length>0&&this._coreService.triggerDataEvent(n,!0)}},0)}else{this._isSendingComposition=!1;let i=this._textarea.value.substring(this._compositionPosition.start,this._compositionPosition.end);this._coreService.triggerDataEvent(i,!0)}}_handleAnyTextareaChanges(){let e=this._textarea.value;setTimeout(()=>{if(!this._isComposing){let i=this._textarea.value,n=i.replace(e,"");this._dataAlreadySent=n,i.length>e.length?this._coreService.triggerDataEvent(n,!0):i.lengththis.updateCompositionElements(!0),0)}}};dS=Ut([be(2,yn),be(3,bn),be(4,$l),be(5,wo)],dS);var Ci=0,ki=0,Ti=0,Zt=0,lR={css:"#00000000",rgba:0},ci;(t=>{function e(r,s,o,l){return l!==void 0?`#${il(r)}${il(s)}${il(o)}${il(l)}`:`#${il(r)}${il(s)}${il(o)}`}t.toCss=e;function i(r,s,o,l=255){return(r<<24|s<<16|o<<8|l)>>>0}t.toRgba=i;function n(r,s,o,l){return{css:t.toCss(r,s,o,l),rgba:t.toRgba(r,s,o,l)}}t.toColor=n})(ci||(ci={}));var Pt;(t=>{function e(c,u){if(Zt=(u.rgba&255)/255,Zt===1)return{css:u.css,rgba:u.rgba};let d=u.rgba>>24&255,p=u.rgba>>16&255,g=u.rgba>>8&255,O=c.rgba>>24&255,_=c.rgba>>16&255,b=c.rgba>>8&255;Ci=O+Math.round((d-O)*Zt),ki=_+Math.round((p-_)*Zt),Ti=b+Math.round((g-b)*Zt);let x=ci.toCss(Ci,ki,Ti),w=ci.toRgba(Ci,ki,Ti);return{css:x,rgba:w}}t.blend=e;function i(c){return(c.rgba&255)===255}t.isOpaque=i;function n(c,u,d){let p=ng.ensureContrastRatio(c.rgba,u.rgba,d);if(p)return ci.toColor(p>>24&255,p>>16&255,p>>8&255)}t.ensureContrastRatio=n;function r(c){let u=(c.rgba|255)>>>0;return[Ci,ki,Ti]=ng.toChannels(u),{css:ci.toCss(Ci,ki,Ti),rgba:u}}t.opaque=r;function s(c,u){return Zt=Math.round(u*255),[Ci,ki,Ti]=ng.toChannels(c.rgba),{css:ci.toCss(Ci,ki,Ti,Zt),rgba:ci.toRgba(Ci,ki,Ti,Zt)}}t.opacity=s;function o(c,u){return Zt=c.rgba&255,s(c,Zt*u/255)}t.multiplyOpacity=o;function l(c){return[c.rgba>>24&255,c.rgba>>16&255,c.rgba>>8&255]}t.toColorRGB=l})(Pt||(Pt={}));var zt;(t=>{let e,i;try{let r=document.createElement("canvas");r.width=1,r.height=1;let s=r.getContext("2d",{willReadFrequently:!0});s&&(e=s,e.globalCompositeOperation="copy",i=e.createLinearGradient(0,0,1,1))}catch{}function n(r){if(r.match(/#[\da-f]{3,8}/i))switch(r.length){case 4:return Ci=parseInt(r.slice(1,2).repeat(2),16),ki=parseInt(r.slice(2,3).repeat(2),16),Ti=parseInt(r.slice(3,4).repeat(2),16),ci.toColor(Ci,ki,Ti);case 5:return Ci=parseInt(r.slice(1,2).repeat(2),16),ki=parseInt(r.slice(2,3).repeat(2),16),Ti=parseInt(r.slice(3,4).repeat(2),16),Zt=parseInt(r.slice(4,5).repeat(2),16),ci.toColor(Ci,ki,Ti,Zt);case 7:return{css:r,rgba:(parseInt(r.slice(1),16)<<8|255)>>>0};case 9:return{css:r,rgba:parseInt(r.slice(1),16)>>>0}}let s=r.match(/rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(,\s*(0|1|\d?\.(\d+))\s*)?\)/);if(s)return Ci=parseInt(s[1]),ki=parseInt(s[2]),Ti=parseInt(s[3]),Zt=Math.round((s[5]===void 0?1:parseFloat(s[5]))*255),ci.toColor(Ci,ki,Ti,Zt);if(!e||!i)throw new Error("css.toColor: Unsupported css format");if(e.fillStyle=i,e.fillStyle=r,typeof e.fillStyle!="string")throw new Error("css.toColor: Unsupported css format");if(e.fillRect(0,0,1,1),[Ci,ki,Ti,Zt]=e.getImageData(0,0,1,1).data,Zt!==255)throw new Error("css.toColor: Unsupported css format");return{rgba:ci.toRgba(Ci,ki,Ti,Zt),css:r}}t.toColor=n})(zt||(zt={}));var fn;(t=>{function e(n){return i(n>>16&255,n>>8&255,n&255)}t.relativeLuminance=e;function i(n,r,s){let o=n/255,l=r/255,c=s/255,u=o<=.03928?o/12.92:Math.pow((o+.055)/1.055,2.4),d=l<=.03928?l/12.92:Math.pow((l+.055)/1.055,2.4),p=c<=.03928?c/12.92:Math.pow((c+.055)/1.055,2.4);return u*.2126+d*.7152+p*.0722}t.relativeLuminance2=i})(fn||(fn={}));var ng;(t=>{function e(o,l){if(Zt=(l&255)/255,Zt===1)return l;let c=l>>24&255,u=l>>16&255,d=l>>8&255,p=o>>24&255,g=o>>16&255,O=o>>8&255;return Ci=p+Math.round((c-p)*Zt),ki=g+Math.round((u-g)*Zt),Ti=O+Math.round((d-O)*Zt),ci.toRgba(Ci,ki,Ti)}t.blend=e;function i(o,l,c){let u=fn.relativeLuminance(o>>8),d=fn.relativeLuminance(l>>8);if(no(u,d)>8));if(_>8));return _>x?O:b}return O}let p=r(o,l,c),g=no(u,fn.relativeLuminance(p>>8));if(g>8));return g>_?p:O}return p}}t.ensureContrastRatio=i;function n(o,l,c){let u=o>>24&255,d=o>>16&255,p=o>>8&255,g=l>>24&255,O=l>>16&255,_=l>>8&255,b=no(fn.relativeLuminance2(g,O,_),fn.relativeLuminance2(u,d,p));for(;b0||O>0||_>0);)g-=Math.max(0,Math.ceil(g*.1)),O-=Math.max(0,Math.ceil(O*.1)),_-=Math.max(0,Math.ceil(_*.1)),b=no(fn.relativeLuminance2(g,O,_),fn.relativeLuminance2(u,d,p));return(g<<24|O<<16|_<<8|255)>>>0}t.reduceLuminance=n;function r(o,l,c){let u=o>>24&255,d=o>>16&255,p=o>>8&255,g=l>>24&255,O=l>>16&255,_=l>>8&255,b=no(fn.relativeLuminance2(g,O,_),fn.relativeLuminance2(u,d,p));for(;b>>0}t.increaseLuminance=r;function s(o){return[o>>24&255,o>>16&255,o>>8&255,o&255]}t.toChannels=s})(ng||(ng={}));function il(t){let e=t.toString(16);return e.length<2?"0"+e:e}function no(t,e){return t1){let d=this._getJoinedRanges(n,o,s,e,r);for(let p=0;p1){let u=this._getJoinedRanges(n,o,s,e,r);for(let d=0;d=U,H=j,F=this._workCell;if(O.length>0&&j===O[0][0]&&X){let Le=O.shift(),ar=this._isCellInSelection(Le[0],i);for(T=Le[0]+1;T=Le[1]),X?(D=!0,F=new tre(this._workCell,e.translateToString(!0,Le[0],Le[1]),Le[1]-Le[0]),H=Le[1]-1,$=F.getWidth()):U=Le[1]}let M=this._isCellInSelection(j,i),I=n&&j===o,K=B&&j>=d&&j<=p,L=!1;this._decorationService.forEachDecorationAtCell(j,i,void 0,Le=>{L=!0});let ue=F.getChars()||va;if(ue===" "&&(F.isUnderline()||F.isOverline())&&(ue=" "),J=$*c-u.get(ue,F.isBold(),F.isItalic()),!x)x=this._document.createElement("span");else if(w&&(M&&q||!M&&!q&&F.bg===A)&&(M&&q&&_.selectionForeground||F.fg===Q)&&F.extended.ext===E&&K===z&&J===N&&!I&&!D&&!L&&X){F.isInvisible()?k+=va:k+=ue,w++;continue}else w&&(x.textContent=k),x=this._document.createElement("span"),w=0,k="";if(A=F.bg,Q=F.fg,E=F.extended.ext,z=K,N=J,q=M,D&&o>=j&&o<=H&&(o=j),!this._coreService.isCursorHidden&&I&&this._coreService.isCursorInitialized){if(R.push("xterm-cursor"),this._coreBrowserService.isFocused)l&&R.push("xterm-cursor-blink"),R.push(r==="bar"?"xterm-cursor-bar":r==="underline"?"xterm-cursor-underline":"xterm-cursor-block");else if(s)switch(s){case"outline":R.push("xterm-cursor-outline");break;case"block":R.push("xterm-cursor-block");break;case"bar":R.push("xterm-cursor-bar");break;case"underline":R.push("xterm-cursor-underline");break}}if(F.isBold()&&R.push("xterm-bold"),F.isItalic()&&R.push("xterm-italic"),F.isDim()&&R.push("xterm-dim"),F.isInvisible()?k=va:k=F.getChars()||va,F.isUnderline()&&(R.push(`xterm-underline-${F.extended.underlineStyle}`),k===" "&&(k=" "),!F.isUnderlineColorDefault()))if(F.isUnderlineColorRGB())x.style.textDecorationColor=`rgb(${bd.toColorRGB(F.getUnderlineColor()).join(",")})`;else{let Le=F.getUnderlineColor();this._optionsService.rawOptions.drawBoldTextInBrightColors&&F.isBold()&&Le<8&&(Le+=8),x.style.textDecorationColor=_.ansi[Le].css}F.isOverline()&&(R.push("xterm-overline"),k===" "&&(k=" ")),F.isStrikethrough()&&R.push("xterm-strikethrough"),K&&(x.style.textDecoration="underline");let he=F.getFgColor(),fe=F.getFgColorMode(),Oe=F.getBgColor(),Ce=F.getBgColorMode(),ye=!!F.isInverse();if(ye){let Le=he;he=Oe,Oe=Le;let ar=fe;fe=Ce,Ce=ar}let nt,Qt,Yt=!1;this._decorationService.forEachDecorationAtCell(j,i,void 0,Le=>{Le.options.layer!=="top"&&Yt||(Le.backgroundColorRGB&&(Ce=50331648,Oe=Le.backgroundColorRGB.rgba>>8&16777215,nt=Le.backgroundColorRGB),Le.foregroundColorRGB&&(fe=50331648,he=Le.foregroundColorRGB.rgba>>8&16777215,Qt=Le.foregroundColorRGB),Yt=Le.options.layer==="top")}),!Yt&&M&&(nt=this._coreBrowserService.isFocused?_.selectionBackgroundOpaque:_.selectionInactiveBackgroundOpaque,Oe=nt.rgba>>8&16777215,Ce=50331648,Yt=!0,_.selectionForeground&&(fe=50331648,he=_.selectionForeground.rgba>>8&16777215,Qt=_.selectionForeground)),Yt&&R.push("xterm-decoration-top");let ei;switch(Ce){case 16777216:case 33554432:ei=_.ansi[Oe],R.push(`xterm-bg-${Oe}`);break;case 50331648:ei=ci.toColor(Oe>>16,Oe>>8&255,Oe&255),this._addStyle(x,`background-color:#${cR((Oe>>>0).toString(16),"0",6)}`);break;case 0:default:ye?(ei=_.foreground,R.push("xterm-bg-257")):ei=_.background}switch(nt||F.isDim()&&(nt=Pt.multiplyOpacity(ei,.5)),fe){case 16777216:case 33554432:F.isBold()&&he<8&&this._optionsService.rawOptions.drawBoldTextInBrightColors&&(he+=8),this._applyMinimumContrast(x,ei,_.ansi[he],F,nt,void 0)||R.push(`xterm-fg-${he}`);break;case 50331648:let Le=ci.toColor(he>>16&255,he>>8&255,he&255);this._applyMinimumContrast(x,ei,Le,F,nt,Qt)||this._addStyle(x,`color:#${cR(he.toString(16),"0",6)}`);break;case 0:default:this._applyMinimumContrast(x,ei,_.foreground,F,nt,Qt)||ye&&R.push("xterm-fg-257")}R.length&&(x.className=R.join(" "),R.length=0),!I&&!D&&!L&&X?w++:x.textContent=k,J!==this.defaultSpacing&&(x.style.letterSpacing=`${J}px`),g.push(x),j=H}return x&&w&&(x.textContent=k),g}_applyMinimumContrast(e,i,n,r,s,o){if(this._optionsService.rawOptions.minimumContrastRatio===1||rre(r.getCode()))return!1;let l=this._getContrastCache(r),c;if(!s&&!o&&(c=l.getColor(i.rgba,n.rgba)),c===void 0){let u=this._optionsService.rawOptions.minimumContrastRatio/(r.isDim()?2:1);c=Pt.ensureContrastRatio(s||i,o||n,u),l.setColor((s||i).rgba,(o||n).rgba,c??null)}return c?(this._addStyle(e,`color:${c.css}`),!0):!1}_getContrastCache(e){return e.isDim()?this._themeService.colors.halfContrastCache:this._themeService.colors.contrastCache}_addStyle(e,i){e.setAttribute("style",`${e.getAttribute("style")||""}${i};`)}_isCellInSelection(e,i){let n=this._selectionStart,r=this._selectionEnd;return!n||!r?!1:this._columnSelectMode?n[0]<=r[0]?e>=n[0]&&i>=n[1]&&e=n[1]&&e>=r[0]&&i<=r[1]:i>n[1]&&i=n[0]&&e=n[0]}};pS=Ut([be(1,Q6),be(2,bn),be(3,xo),be(4,$l),be(5,Sd),be(6,Ch)],pS);function cR(t,e,i){for(;t.length0&&(this._flat[r]=l),l}let s=e;i&&(s+="B"),n&&(s+="I");let o=this._holey.get(s);if(o===void 0){let l=0;i&&(l|=1),n&&(l|=2),o=this._measure(e,l),o>0&&this._holey.set(s,o)}return o}_measure(e,i){let n=this._measureElements[i];return n.textContent=e.repeat(32),n.offsetWidth/32}},are=class{constructor(){this.clear()}clear(){this.hasSelection=!1,this.columnSelectMode=!1,this.viewportStartRow=0,this.viewportEndRow=0,this.viewportCappedStartRow=0,this.viewportCappedEndRow=0,this.startCol=0,this.endCol=0,this.selectionStart=void 0,this.selectionEnd=void 0}update(e,i,n,r=!1){if(this.selectionStart=i,this.selectionEnd=n,!i||!n||i[0]===n[0]&&i[1]===n[1]){this.clear();return}let s=e.buffers.active.ydisp,o=i[1]-s,l=n[1]-s,c=Math.max(o,0),u=Math.min(l,e.rows-1);if(c>=e.rows||u<0){this.clear();return}this.hasSelection=!0,this.columnSelectMode=r,this.viewportStartRow=o,this.viewportEndRow=l,this.viewportCappedStartRow=c,this.viewportCappedEndRow=u,this.startCol=i[0],this.endCol=n[0]}isCellSelected(e,i,n){return this.hasSelection?(n-=e.buffer.active.viewportY,this.columnSelectMode?this.startCol<=this.endCol?i>=this.startCol&&n>=this.viewportCappedStartRow&&i=this.viewportCappedStartRow&&i>=this.endCol&&n<=this.viewportCappedEndRow:n>this.viewportStartRow&&n=this.startCol&&i=this.startCol):!1}};function lre(){return new are}var zy="xterm-dom-renderer-owner-",vr="xterm-rows",Cm="xterm-fg-",hR="xterm-bg-",Bu="xterm-focus",km="xterm-selection",cre=1,mS=class extends We{constructor(e,i,n,r,s,o,l,c,u,d,p,g,O,_){super(),this._terminal=e,this._document=i,this._element=n,this._screenElement=r,this._viewportElement=s,this._helperContainer=o,this._linkifier2=l,this._charSizeService=u,this._optionsService=d,this._bufferService=p,this._coreService=g,this._coreBrowserService=O,this._themeService=_,this._terminalClass=cre++,this._rowElements=[],this._selectionRenderModel=lre(),this.onRequestRedraw=this._register(new me).event,this._rowContainer=this._document.createElement("div"),this._rowContainer.classList.add(vr),this._rowContainer.style.lineHeight="normal",this._rowContainer.setAttribute("aria-hidden","true"),this._refreshRowElements(this._bufferService.cols,this._bufferService.rows),this._selectionContainer=this._document.createElement("div"),this._selectionContainer.classList.add(km),this._selectionContainer.setAttribute("aria-hidden","true"),this.dimensions=sre(),this._updateDimensions(),this._register(this._optionsService.onOptionChange(()=>this._handleOptionsChanged())),this._register(this._themeService.onChangeColors(b=>this._injectCss(b))),this._injectCss(this._themeService.colors),this._rowFactory=c.createInstance(pS,document),this._element.classList.add(zy+this._terminalClass),this._screenElement.appendChild(this._rowContainer),this._screenElement.appendChild(this._selectionContainer),this._register(this._linkifier2.onShowLinkUnderline(b=>this._handleLinkHover(b))),this._register(this._linkifier2.onHideLinkUnderline(b=>this._handleLinkLeave(b))),this._register(Bt(()=>{this._element.classList.remove(zy+this._terminalClass),this._rowContainer.remove(),this._selectionContainer.remove(),this._widthCache.dispose(),this._themeStyleElement.remove(),this._dimensionsStyleElement.remove()})),this._widthCache=new ore(this._document,this._helperContainer),this._widthCache.setFont(this._optionsService.rawOptions.fontFamily,this._optionsService.rawOptions.fontSize,this._optionsService.rawOptions.fontWeight,this._optionsService.rawOptions.fontWeightBold),this._setDefaultSpacing()}_updateDimensions(){let e=this._coreBrowserService.dpr;this.dimensions.device.char.width=this._charSizeService.width*e,this.dimensions.device.char.height=Math.ceil(this._charSizeService.height*e),this.dimensions.device.cell.width=this.dimensions.device.char.width+Math.round(this._optionsService.rawOptions.letterSpacing),this.dimensions.device.cell.height=Math.floor(this.dimensions.device.char.height*this._optionsService.rawOptions.lineHeight),this.dimensions.device.char.left=0,this.dimensions.device.char.top=0,this.dimensions.device.canvas.width=this.dimensions.device.cell.width*this._bufferService.cols,this.dimensions.device.canvas.height=this.dimensions.device.cell.height*this._bufferService.rows,this.dimensions.css.canvas.width=Math.round(this.dimensions.device.canvas.width/e),this.dimensions.css.canvas.height=Math.round(this.dimensions.device.canvas.height/e),this.dimensions.css.cell.width=this.dimensions.css.canvas.width/this._bufferService.cols,this.dimensions.css.cell.height=this.dimensions.css.canvas.height/this._bufferService.rows;for(let n of this._rowElements)n.style.width=`${this.dimensions.css.canvas.width}px`,n.style.height=`${this.dimensions.css.cell.height}px`,n.style.lineHeight=`${this.dimensions.css.cell.height}px`,n.style.overflow="hidden";this._dimensionsStyleElement||(this._dimensionsStyleElement=this._document.createElement("style"),this._screenElement.appendChild(this._dimensionsStyleElement));let i=`${this._terminalSelector} .${vr} span { display: inline-block; height: 100%; vertical-align: top;}`;this._dimensionsStyleElement.textContent=i,this._selectionContainer.style.height=this._viewportElement.style.height,this._screenElement.style.width=`${this.dimensions.css.canvas.width}px`,this._screenElement.style.height=`${this.dimensions.css.canvas.height}px`}_injectCss(e){this._themeStyleElement||(this._themeStyleElement=this._document.createElement("style"),this._screenElement.appendChild(this._themeStyleElement));let i=`${this._terminalSelector} .${vr} { pointer-events: none; color: ${e.foreground.css}; font-family: ${this._optionsService.rawOptions.fontFamily}; font-size: ${this._optionsService.rawOptions.fontSize}px; font-kerning: none; white-space: pre}`;i+=`${this._terminalSelector} .${vr} .xterm-dim { color: ${Pt.multiplyOpacity(e.foreground,.5).css};}`,i+=`${this._terminalSelector} span:not(.xterm-bold) { font-weight: ${this._optionsService.rawOptions.fontWeight};}${this._terminalSelector} span.xterm-bold { font-weight: ${this._optionsService.rawOptions.fontWeightBold};}${this._terminalSelector} span.xterm-italic { font-style: italic;}`;let n=`blink_underline_${this._terminalClass}`,r=`blink_bar_${this._terminalClass}`,s=`blink_block_${this._terminalClass}`;i+=`@keyframes ${n} { 50% { border-bottom-style: hidden; }}`,i+=`@keyframes ${r} { 50% { box-shadow: none; }}`,i+=`@keyframes ${s} { 0% { background-color: ${e.cursor.css}; color: ${e.cursorAccent.css}; } 50% { background-color: inherit; color: ${e.cursor.css}; }}`,i+=`${this._terminalSelector} .${vr}.${Bu} .xterm-cursor.xterm-cursor-blink.xterm-cursor-underline { animation: ${n} 1s step-end infinite;}${this._terminalSelector} .${vr}.${Bu} .xterm-cursor.xterm-cursor-blink.xterm-cursor-bar { animation: ${r} 1s step-end infinite;}${this._terminalSelector} .${vr}.${Bu} .xterm-cursor.xterm-cursor-blink.xterm-cursor-block { animation: ${s} 1s step-end infinite;}${this._terminalSelector} .${vr} .xterm-cursor.xterm-cursor-block { background-color: ${e.cursor.css}; color: ${e.cursorAccent.css};}${this._terminalSelector} .${vr} .xterm-cursor.xterm-cursor-block:not(.xterm-cursor-blink) { background-color: ${e.cursor.css} !important; color: ${e.cursorAccent.css} !important;}${this._terminalSelector} .${vr} .xterm-cursor.xterm-cursor-outline { outline: 1px solid ${e.cursor.css}; outline-offset: -1px;}${this._terminalSelector} .${vr} .xterm-cursor.xterm-cursor-bar { box-shadow: ${this._optionsService.rawOptions.cursorWidth}px 0 0 ${e.cursor.css} inset;}${this._terminalSelector} .${vr} .xterm-cursor.xterm-cursor-underline { border-bottom: 1px ${e.cursor.css}; border-bottom-style: solid; height: calc(100% - 1px);}`,i+=`${this._terminalSelector} .${km} { position: absolute; top: 0; left: 0; z-index: 1; pointer-events: none;}${this._terminalSelector}.focus .${km} div { position: absolute; background-color: ${e.selectionBackgroundOpaque.css};}${this._terminalSelector} .${km} div { position: absolute; background-color: ${e.selectionInactiveBackgroundOpaque.css};}`;for(let[o,l]of e.ansi.entries())i+=`${this._terminalSelector} .${Cm}${o} { color: ${l.css}; }${this._terminalSelector} .${Cm}${o}.xterm-dim { color: ${Pt.multiplyOpacity(l,.5).css}; }${this._terminalSelector} .${hR}${o} { background-color: ${l.css}; }`;i+=`${this._terminalSelector} .${Cm}257 { color: ${Pt.opaque(e.background).css}; }${this._terminalSelector} .${Cm}257.xterm-dim { color: ${Pt.multiplyOpacity(Pt.opaque(e.background),.5).css}; }${this._terminalSelector} .${hR}257 { background-color: ${e.foreground.css}; }`,this._themeStyleElement.textContent=i}_setDefaultSpacing(){let e=this.dimensions.css.cell.width-this._widthCache.get("W",!1,!1);this._rowContainer.style.letterSpacing=`${e}px`,this._rowFactory.defaultSpacing=e}handleDevicePixelRatioChange(){this._updateDimensions(),this._widthCache.clear(),this._setDefaultSpacing()}_refreshRowElements(e,i){for(let n=this._rowElements.length;n<=i;n++){let r=this._document.createElement("div");this._rowContainer.appendChild(r),this._rowElements.push(r)}for(;this._rowElements.length>i;)this._rowContainer.removeChild(this._rowElements.pop())}handleResize(e,i){this._refreshRowElements(e,i),this._updateDimensions(),this.handleSelectionChanged(this._selectionRenderModel.selectionStart,this._selectionRenderModel.selectionEnd,this._selectionRenderModel.columnSelectMode)}handleCharSizeChanged(){this._updateDimensions(),this._widthCache.clear(),this._setDefaultSpacing()}handleBlur(){this._rowContainer.classList.remove(Bu),this.renderRows(0,this._bufferService.rows-1)}handleFocus(){this._rowContainer.classList.add(Bu),this.renderRows(this._bufferService.buffer.y,this._bufferService.buffer.y)}handleSelectionChanged(e,i,n){if(this._selectionContainer.replaceChildren(),this._rowFactory.handleSelectionChanged(e,i,n),this.renderRows(0,this._bufferService.rows-1),!e||!i||(this._selectionRenderModel.update(this._terminal,e,i,n),!this._selectionRenderModel.hasSelection))return;let r=this._selectionRenderModel.viewportStartRow,s=this._selectionRenderModel.viewportEndRow,o=this._selectionRenderModel.viewportCappedStartRow,l=this._selectionRenderModel.viewportCappedEndRow,c=this._document.createDocumentFragment();if(n){let u=e[0]>i[0];c.appendChild(this._createSelectionElement(o,u?i[0]:e[0],u?e[0]:i[0],l-o+1))}else{let u=r===o?e[0]:0,d=o===s?i[0]:this._bufferService.cols;c.appendChild(this._createSelectionElement(o,u,d));let p=l-o-1;if(c.appendChild(this._createSelectionElement(o+1,0,this._bufferService.cols,p)),o!==l){let g=s===l?i[0]:this._bufferService.cols;c.appendChild(this._createSelectionElement(l,0,g))}}this._selectionContainer.appendChild(c)}_createSelectionElement(e,i,n,r=1){let s=this._document.createElement("div"),o=i*this.dimensions.css.cell.width,l=this.dimensions.css.cell.width*(n-i);return o+l>this.dimensions.css.canvas.width&&(l=this.dimensions.css.canvas.width-o),s.style.height=`${r*this.dimensions.css.cell.height}px`,s.style.top=`${e*this.dimensions.css.cell.height}px`,s.style.left=`${o}px`,s.style.width=`${l}px`,s}handleCursorMove(){}_handleOptionsChanged(){this._updateDimensions(),this._injectCss(this._themeService.colors),this._widthCache.setFont(this._optionsService.rawOptions.fontFamily,this._optionsService.rawOptions.fontSize,this._optionsService.rawOptions.fontWeight,this._optionsService.rawOptions.fontWeightBold),this._setDefaultSpacing()}clear(){for(let e of this._rowElements)e.replaceChildren()}renderRows(e,i){let n=this._bufferService.buffer,r=n.ybase+n.y,s=Math.min(n.x,this._bufferService.cols-1),o=this._coreService.decPrivateModes.cursorBlink??this._optionsService.rawOptions.cursorBlink,l=this._coreService.decPrivateModes.cursorStyle??this._optionsService.rawOptions.cursorStyle,c=this._optionsService.rawOptions.cursorInactiveStyle;for(let u=e;u<=i;u++){let d=u+n.ydisp,p=this._rowElements[u],g=n.lines.get(d);if(!p||!g)break;p.replaceChildren(...this._rowFactory.createRow(g,d,d===r,l,c,s,o,this.dimensions.css.cell.width,this._widthCache,-1,-1))}}get _terminalSelector(){return`.${zy}${this._terminalClass}`}_handleLinkHover(e){this._setCellUnderline(e.x1,e.x2,e.y1,e.y2,e.cols,!0)}_handleLinkLeave(e){this._setCellUnderline(e.x1,e.x2,e.y1,e.y2,e.cols,!1)}_setCellUnderline(e,i,n,r,s,o){n<0&&(e=0),r<0&&(i=0);let l=this._bufferService.rows-1;n=Math.max(Math.min(n,l),0),r=Math.max(Math.min(r,l),0),s=Math.min(s,this._bufferService.cols);let c=this._bufferService.buffer,u=c.ybase+c.y,d=Math.min(c.x,s-1),p=this._optionsService.rawOptions.cursorBlink,g=this._optionsService.rawOptions.cursorStyle,O=this._optionsService.rawOptions.cursorInactiveStyle;for(let _=n;_<=r;++_){let b=_+c.ydisp,x=this._rowElements[_],w=c.lines.get(b);if(!x||!w)break;x.replaceChildren(...this._rowFactory.createRow(w,b,b===u,g,O,d,p,this.dimensions.css.cell.width,this._widthCache,o?_===n?e:0:-1,o?(_===r?i:s)-1:-1))}}};mS=Ut([be(7,Ew),be(8,TO),be(9,bn),be(10,yn),be(11,$l),be(12,xo),be(13,Ch)],mS);var gS=class extends We{constructor(e,i,n){super(),this._optionsService=n,this.width=0,this.height=0,this._onCharSizeChange=this._register(new me),this.onCharSizeChange=this._onCharSizeChange.event;try{this._measureStrategy=this._register(new ure(this._optionsService))}catch{this._measureStrategy=this._register(new hre(e,i,this._optionsService))}this._register(this._optionsService.onMultipleOptionChange(["fontFamily","fontSize"],()=>this.measure()))}get hasValidSize(){return this.width>0&&this.height>0}measure(){let e=this._measureStrategy.measure();(e.width!==this.width||e.height!==this.height)&&(this.width=e.width,this.height=e.height,this._onCharSizeChange.fire())}};gS=Ut([be(2,bn)],gS);var K6=class extends We{constructor(){super(...arguments),this._result={width:0,height:0}}_validateAndSet(t,e){t!==void 0&&t>0&&e!==void 0&&e>0&&(this._result.width=t,this._result.height=e)}},hre=class extends K6{constructor(t,e,i){super(),this._document=t,this._parentElement=e,this._optionsService=i,this._measureElement=this._document.createElement("span"),this._measureElement.classList.add("xterm-char-measure-element"),this._measureElement.textContent="W".repeat(32),this._measureElement.setAttribute("aria-hidden","true"),this._measureElement.style.whiteSpace="pre",this._measureElement.style.fontKerning="none",this._parentElement.appendChild(this._measureElement)}measure(){return this._measureElement.style.fontFamily=this._optionsService.rawOptions.fontFamily,this._measureElement.style.fontSize=`${this._optionsService.rawOptions.fontSize}px`,this._validateAndSet(Number(this._measureElement.offsetWidth)/32,Number(this._measureElement.offsetHeight)),this._result}},ure=class extends K6{constructor(e){super(),this._optionsService=e,this._canvas=new OffscreenCanvas(100,100),this._ctx=this._canvas.getContext("2d");let i=this._ctx.measureText("W");if(!("width"in i&&"fontBoundingBoxAscent"in i&&"fontBoundingBoxDescent"in i))throw new Error("Required font metrics not supported")}measure(){this._ctx.font=`${this._optionsService.rawOptions.fontSize}px ${this._optionsService.rawOptions.fontFamily}`;let e=this._ctx.measureText("W");return this._validateAndSet(e.width,e.fontBoundingBoxAscent+e.fontBoundingBoxDescent),this._result}},fre=class extends We{constructor(e,i,n){super(),this._textarea=e,this._window=i,this.mainDocument=n,this._isFocused=!1,this._cachedIsFocused=void 0,this._screenDprMonitor=this._register(new dre(this._window)),this._onDprChange=this._register(new me),this.onDprChange=this._onDprChange.event,this._onWindowChange=this._register(new me),this.onWindowChange=this._onWindowChange.event,this._register(this.onWindowChange(r=>this._screenDprMonitor.setWindow(r))),this._register(Gi.forward(this._screenDprMonitor.onDprChange,this._onDprChange)),this._register(Be(this._textarea,"focus",()=>this._isFocused=!0)),this._register(Be(this._textarea,"blur",()=>this._isFocused=!1))}get window(){return this._window}set window(e){this._window!==e&&(this._window=e,this._onWindowChange.fire(this._window))}get dpr(){return this.window.devicePixelRatio}get isFocused(){return this._cachedIsFocused===void 0&&(this._cachedIsFocused=this._isFocused&&this._textarea.ownerDocument.hasFocus(),queueMicrotask(()=>this._cachedIsFocused=void 0)),this._cachedIsFocused}},dre=class extends We{constructor(e){super(),this._parentWindow=e,this._windowResizeListener=this._register(new mh),this._onDprChange=this._register(new me),this.onDprChange=this._onDprChange.event,this._outerListener=()=>this._setDprAndFireIfDiffers(),this._currentDevicePixelRatio=this._parentWindow.devicePixelRatio,this._updateDpr(),this._setWindowResizeListener(),this._register(Bt(()=>this.clearListener()))}setWindow(e){this._parentWindow=e,this._setWindowResizeListener(),this._setDprAndFireIfDiffers()}_setWindowResizeListener(){this._windowResizeListener.value=Be(this._parentWindow,"resize",()=>this._setDprAndFireIfDiffers())}_setDprAndFireIfDiffers(){this._parentWindow.devicePixelRatio!==this._currentDevicePixelRatio&&this._onDprChange.fire(this._parentWindow.devicePixelRatio),this._updateDpr()}_updateDpr(){var e;this._outerListener&&((e=this._resolutionMediaMatchList)==null||e.removeListener(this._outerListener),this._currentDevicePixelRatio=this._parentWindow.devicePixelRatio,this._resolutionMediaMatchList=this._parentWindow.matchMedia(`screen and (resolution: ${this._parentWindow.devicePixelRatio}dppx)`),this._resolutionMediaMatchList.addListener(this._outerListener))}clearListener(){!this._resolutionMediaMatchList||!this._outerListener||(this._resolutionMediaMatchList.removeListener(this._outerListener),this._resolutionMediaMatchList=void 0,this._outerListener=void 0)}},pre=class extends We{constructor(){super(),this.linkProviders=[],this._register(Bt(()=>this.linkProviders.length=0))}registerLinkProvider(t){return this.linkProviders.push(t),{dispose:()=>{let e=this.linkProviders.indexOf(t);e!==-1&&this.linkProviders.splice(e,1)}}}};function $w(t,e,i){let n=i.getBoundingClientRect(),r=t.getComputedStyle(i),s=parseInt(r.getPropertyValue("padding-left")),o=parseInt(r.getPropertyValue("padding-top"));return[e.clientX-n.left-s,e.clientY-n.top-o]}function mre(t,e,i,n,r,s,o,l,c){if(!s)return;let u=$w(t,e,i);if(u)return u[0]=Math.ceil((u[0]+(c?o/2:0))/o),u[1]=Math.ceil(u[1]/l),u[0]=Math.min(Math.max(u[0],1),n+(c?1:0)),u[1]=Math.min(Math.max(u[1],1),r),u}var OS=class{constructor(e,i){this._renderService=e,this._charSizeService=i}getCoords(e,i,n,r,s){return mre(window,e,i,n,r,this._charSizeService.hasValidSize,this._renderService.dimensions.css.cell.width,this._renderService.dimensions.css.cell.height,s)}getMouseReportCoords(e,i){let n=$w(window,e,i);if(this._charSizeService.hasValidSize)return n[0]=Math.min(Math.max(n[0],0),this._renderService.dimensions.css.canvas.width-1),n[1]=Math.min(Math.max(n[1],0),this._renderService.dimensions.css.canvas.height-1),{col:Math.floor(n[0]/this._renderService.dimensions.css.cell.width),row:Math.floor(n[1]/this._renderService.dimensions.css.cell.height),x:Math.floor(n[0]),y:Math.floor(n[1])}}};OS=Ut([be(0,wo),be(1,TO)],OS);var gre=class{constructor(e,i){this._renderCallback=e,this._coreBrowserService=i,this._refreshCallbacks=[]}dispose(){this._animationFrame&&(this._coreBrowserService.window.cancelAnimationFrame(this._animationFrame),this._animationFrame=void 0)}addRefreshCallback(e){return this._refreshCallbacks.push(e),this._animationFrame||(this._animationFrame=this._coreBrowserService.window.requestAnimationFrame(()=>this._innerRefresh())),this._animationFrame}refresh(e,i,n){this._rowCount=n,e=e!==void 0?e:0,i=i!==void 0?i:this._rowCount-1,this._rowStart=this._rowStart!==void 0?Math.min(this._rowStart,e):e,this._rowEnd=this._rowEnd!==void 0?Math.max(this._rowEnd,i):i,!this._animationFrame&&(this._animationFrame=this._coreBrowserService.window.requestAnimationFrame(()=>this._innerRefresh()))}_innerRefresh(){if(this._animationFrame=void 0,this._rowStart===void 0||this._rowEnd===void 0||this._rowCount===void 0){this._runRefreshCallbacks();return}let e=Math.max(this._rowStart,0),i=Math.min(this._rowEnd,this._rowCount-1);this._rowStart=void 0,this._rowEnd=void 0,this._renderCallback(e,i),this._runRefreshCallbacks()}_runRefreshCallbacks(){for(let e of this._refreshCallbacks)e(0);this._refreshCallbacks=[]}},J6={};kie(J6,{getSafariVersion:()=>vre,isChromeOS:()=>nz,isFirefox:()=>ez,isIpad:()=>_re,isIphone:()=>yre,isLegacyEdge:()=>Ore,isLinux:()=>zw,isMac:()=>eO,isNode:()=>AO,isSafari:()=>tz,isWindows:()=>iz});var AO=typeof process<"u"&&"title"in process,xd=AO?"node":navigator.userAgent,wd=AO?"node":navigator.platform,ez=xd.includes("Firefox"),Ore=xd.includes("Edge"),tz=/^((?!chrome|android).)*safari/i.test(xd);function vre(){if(!tz)return 0;let t=xd.match(/Version\/(\d+)/);return t===null||t.length<2?0:parseInt(t[1])}var eO=["Macintosh","MacIntel","MacPPC","Mac68K"].includes(wd),_re=wd==="iPad",yre=wd==="iPhone",iz=["Windows","Win16","Win32","WinCE"].includes(wd),zw=wd.indexOf("Linux")>=0,nz=/\bCrOS\b/.test(xd),rz=class{constructor(){this._tasks=[],this._i=0}enqueue(t){this._tasks.push(t),this._start()}flush(){for(;this._ir){n-e<-20&&console.warn(`task queue exceeded allotted deadline by ${Math.abs(Math.round(n-e))}ms`),this._start();return}n=r}this.clear()}},bre=class extends rz{_requestCallback(e){return setTimeout(()=>e(this._createDeadline(16)))}_cancelCallback(e){clearTimeout(e)}_createDeadline(e){let i=performance.now()+e;return{timeRemaining:()=>Math.max(0,i-performance.now())}}},Sre=class extends rz{_requestCallback(t){return requestIdleCallback(t)}_cancelCallback(t){cancelIdleCallback(t)}},tO=!AO&&"requestIdleCallback"in window?Sre:bre,xre=class{constructor(){this._queue=new tO}set(t){this._queue.clear(),this._queue.enqueue(t)}flush(){this._queue.flush()}},vS=class extends We{constructor(e,i,n,r,s,o,l,c,u){super(),this._rowCount=e,this._optionsService=n,this._charSizeService=r,this._coreService=s,this._coreBrowserService=c,this._renderer=this._register(new mh),this._pausedResizeTask=new xre,this._observerDisposable=this._register(new mh),this._isPaused=!1,this._needsFullRefresh=!1,this._isNextRenderRedrawOnly=!0,this._needsSelectionRefresh=!1,this._canvasWidth=0,this._canvasHeight=0,this._selectionState={start:void 0,end:void 0,columnSelectMode:!1},this._onDimensionsChange=this._register(new me),this.onDimensionsChange=this._onDimensionsChange.event,this._onRenderedViewportChange=this._register(new me),this.onRenderedViewportChange=this._onRenderedViewportChange.event,this._onRender=this._register(new me),this.onRender=this._onRender.event,this._onRefreshRequest=this._register(new me),this.onRefreshRequest=this._onRefreshRequest.event,this._renderDebouncer=new gre((d,p)=>this._renderRows(d,p),this._coreBrowserService),this._register(this._renderDebouncer),this._syncOutputHandler=new wre(this._coreBrowserService,this._coreService,()=>this._fullRefresh()),this._register(Bt(()=>this._syncOutputHandler.dispose())),this._register(this._coreBrowserService.onDprChange(()=>this.handleDevicePixelRatioChange())),this._register(l.onResize(()=>this._fullRefresh())),this._register(l.buffers.onBufferActivate(()=>{var d;return(d=this._renderer.value)==null?void 0:d.clear()})),this._register(this._optionsService.onOptionChange(()=>this._handleOptionsChanged())),this._register(this._charSizeService.onCharSizeChange(()=>this.handleCharSizeChanged())),this._register(o.onDecorationRegistered(()=>this._fullRefresh())),this._register(o.onDecorationRemoved(()=>this._fullRefresh())),this._register(this._optionsService.onMultipleOptionChange(["customGlyphs","drawBoldTextInBrightColors","letterSpacing","lineHeight","fontFamily","fontSize","fontWeight","fontWeightBold","minimumContrastRatio","rescaleOverlappingGlyphs"],()=>{this.clear(),this.handleResize(l.cols,l.rows),this._fullRefresh()})),this._register(this._optionsService.onMultipleOptionChange(["cursorBlink","cursorStyle"],()=>this.refreshRows(l.buffer.y,l.buffer.y,!0))),this._register(u.onChangeColors(()=>this._fullRefresh())),this._registerIntersectionObserver(this._coreBrowserService.window,i),this._register(this._coreBrowserService.onWindowChange(d=>this._registerIntersectionObserver(d,i)))}get dimensions(){return this._renderer.value.dimensions}_registerIntersectionObserver(e,i){if("IntersectionObserver"in e){let n=new e.IntersectionObserver(r=>this._handleIntersectionChange(r[r.length-1]),{threshold:0});n.observe(i),this._observerDisposable.value=Bt(()=>n.disconnect())}}_handleIntersectionChange(e){this._isPaused=e.isIntersecting===void 0?e.intersectionRatio===0:!e.isIntersecting,!this._isPaused&&!this._charSizeService.hasValidSize&&this._charSizeService.measure(),!this._isPaused&&this._needsFullRefresh&&(this._pausedResizeTask.flush(),this.refreshRows(0,this._rowCount-1),this._needsFullRefresh=!1)}refreshRows(e,i,n=!1){if(this._isPaused){this._needsFullRefresh=!0;return}if(this._coreService.decPrivateModes.synchronizedOutput){this._syncOutputHandler.bufferRows(e,i);return}let r=this._syncOutputHandler.flush();r&&(e=Math.min(e,r.start),i=Math.max(i,r.end)),n||(this._isNextRenderRedrawOnly=!1),this._renderDebouncer.refresh(e,i,this._rowCount)}_renderRows(e,i){if(this._renderer.value){if(this._coreService.decPrivateModes.synchronizedOutput){this._syncOutputHandler.bufferRows(e,i);return}e=Math.min(e,this._rowCount-1),i=Math.min(i,this._rowCount-1),this._renderer.value.renderRows(e,i),this._needsSelectionRefresh&&(this._renderer.value.handleSelectionChanged(this._selectionState.start,this._selectionState.end,this._selectionState.columnSelectMode),this._needsSelectionRefresh=!1),this._isNextRenderRedrawOnly||this._onRenderedViewportChange.fire({start:e,end:i}),this._onRender.fire({start:e,end:i}),this._isNextRenderRedrawOnly=!0}}resize(e,i){this._rowCount=i,this._fireOnCanvasResize()}_handleOptionsChanged(){this._renderer.value&&(this.refreshRows(0,this._rowCount-1),this._fireOnCanvasResize())}_fireOnCanvasResize(){this._renderer.value&&(this._renderer.value.dimensions.css.canvas.width===this._canvasWidth&&this._renderer.value.dimensions.css.canvas.height===this._canvasHeight||this._onDimensionsChange.fire(this._renderer.value.dimensions))}hasRenderer(){return!!this._renderer.value}setRenderer(e){this._renderer.value=e,this._renderer.value&&(this._renderer.value.onRequestRedraw(i=>this.refreshRows(i.start,i.end,!0)),this._needsSelectionRefresh=!0,this._fullRefresh())}addRefreshCallback(e){return this._renderDebouncer.addRefreshCallback(e)}_fullRefresh(){this._isPaused?this._needsFullRefresh=!0:this.refreshRows(0,this._rowCount-1)}clearTextureAtlas(){var e,i;this._renderer.value&&((i=(e=this._renderer.value).clearTextureAtlas)==null||i.call(e),this._fullRefresh())}handleDevicePixelRatioChange(){this._charSizeService.measure(),this._renderer.value&&(this._renderer.value.handleDevicePixelRatioChange(),this.refreshRows(0,this._rowCount-1))}handleResize(e,i){this._renderer.value&&(this._isPaused?this._pausedResizeTask.set(()=>{var n;return(n=this._renderer.value)==null?void 0:n.handleResize(e,i)}):this._renderer.value.handleResize(e,i),this._fullRefresh())}handleCharSizeChanged(){var e;(e=this._renderer.value)==null||e.handleCharSizeChanged()}handleBlur(){var e;(e=this._renderer.value)==null||e.handleBlur()}handleFocus(){var e;(e=this._renderer.value)==null||e.handleFocus()}handleSelectionChanged(e,i,n){var r;this._selectionState.start=e,this._selectionState.end=i,this._selectionState.columnSelectMode=n,(r=this._renderer.value)==null||r.handleSelectionChanged(e,i,n)}handleCursorMove(){var e;(e=this._renderer.value)==null||e.handleCursorMove()}clear(){var e;(e=this._renderer.value)==null||e.clear()}};vS=Ut([be(2,bn),be(3,TO),be(4,$l),be(5,Sd),be(6,yn),be(7,xo),be(8,Ch)],vS);var wre=class{constructor(t,e,i){this._coreBrowserService=t,this._coreService=e,this._onTimeout=i,this._start=0,this._end=0,this._isBuffering=!1}bufferRows(t,e){this._isBuffering?(this._start=Math.min(this._start,t),this._end=Math.max(this._end,e)):(this._start=t,this._end=e,this._isBuffering=!0),this._timeout===void 0&&(this._timeout=this._coreBrowserService.window.setTimeout(()=>{this._timeout=void 0,this._coreService.decPrivateModes.synchronizedOutput=!1,this._onTimeout()},1e3))}flush(){if(this._timeout!==void 0&&(this._coreBrowserService.window.clearTimeout(this._timeout),this._timeout=void 0),!this._isBuffering)return;let t={start:this._start,end:this._end};return this._isBuffering=!1,t}dispose(){this._timeout!==void 0&&(this._coreBrowserService.window.clearTimeout(this._timeout),this._timeout=void 0)}};function Cre(t,e,i,n){let r=i.buffer.x,s=i.buffer.y;if(!i.buffer.hasScrollback)return Are(r,s,t,e,i,n)+EO(s,e,i,n)+Ere(r,s,t,e,i,n);let o;if(s===e)return o=r>t?"D":"C",id(Math.abs(r-t),td(o,n));o=s>e?"D":"C";let l=Math.abs(s-e),c=Tre(s>e?t:r,i)+(l-1)*i.cols+1+kre(s>e?r:t);return id(c,td(o,n))}function kre(t,e){return t-1}function Tre(t,e){return e.cols-t}function Are(t,e,i,n,r,s){return EO(e,n,r,s).length===0?"":id(oz(t,e,t,e-Pl(e,r),!1,r).length,td("D",s))}function EO(t,e,i,n){let r=t-Pl(t,i),s=e-Pl(e,i),o=Math.abs(r-s)-Mre(t,e,i);return id(o,td(sz(t,e),n))}function Ere(t,e,i,n,r,s){let o;EO(e,n,r,s).length>0?o=n-Pl(n,r):o=e;let l=n,c=Pre(t,e,i,n,r,s);return id(oz(t,o,i,l,c==="C",r).length,td(c,s))}function Mre(t,e,i){var o;let n=0,r=t-Pl(t,i),s=e-Pl(e,i);for(let l=0;l=0&&t0?o=n-Pl(n,r):o=e,t=i&&oe?"A":"B"}function oz(t,e,i,n,r,s){let o=t,l=e,c="";for(;(o!==i||l!==n)&&l>=0&&ls.cols-1?(c+=s.buffer.translateBufferLineToString(l,!1,t,o),o=0,t=0,l++):!r&&o<0&&(c+=s.buffer.translateBufferLineToString(l,!1,0,t+1),o=s.cols-1,t=o,l--);return c+s.buffer.translateBufferLineToString(l,!1,t,o)}function td(t,e){let i=e?"O":"[";return ce.ESC+i+t}function id(t,e){t=Math.floor(t);let i="";for(let n=0;nthis._bufferService.cols?t%this._bufferService.cols===0?[this._bufferService.cols,this.selectionStart[1]+Math.floor(t/this._bufferService.cols)-1]:[t%this._bufferService.cols,this.selectionStart[1]+Math.floor(t/this._bufferService.cols)]:[t,this.selectionStart[1]]}if(this.selectionStartLength&&this.selectionEnd[1]===this.selectionStart[1]){let t=this.selectionStart[0]+this.selectionStartLength;return t>this._bufferService.cols?[t%this._bufferService.cols,this.selectionStart[1]+Math.floor(t/this._bufferService.cols)]:[Math.max(t,this.selectionEnd[0]),this.selectionEnd[1]]}return this.selectionEnd}}areSelectionValuesReversed(){let t=this.selectionStart,e=this.selectionEnd;return!t||!e?!1:t[1]>e[1]||t[1]===e[1]&&t[0]>e[0]}handleTrim(t){return this.selectionStart&&(this.selectionStart[1]-=t),this.selectionEnd&&(this.selectionEnd[1]-=t),this.selectionEnd&&this.selectionEnd[1]<0?(this.clearSelection(),!0):(this.selectionStart&&this.selectionStart[1]<0&&(this.selectionStart[1]=0),!1)}};function uR(t,e){if(t.start.y>t.end.y)throw new Error(`Buffer range end (${t.end.x}, ${t.end.y}) cannot be before start (${t.start.x}, ${t.start.y})`);return e*(t.end.y-t.start.y)+(t.end.x-t.start.x+1)}var Ny=50,Qre=15,Lre=50,Dre=500,Bre=" ",$re=new RegExp(Bre,"g"),_S=class extends We{constructor(e,i,n,r,s,o,l,c,u){super(),this._element=e,this._screenElement=i,this._linkifier=n,this._bufferService=r,this._coreService=s,this._mouseService=o,this._optionsService=l,this._renderService=c,this._coreBrowserService=u,this._dragScrollAmount=0,this._enabled=!0,this._workCell=new Rr,this._mouseDownTimeStamp=0,this._oldHasSelection=!1,this._oldSelectionStart=void 0,this._oldSelectionEnd=void 0,this._onLinuxMouseSelection=this._register(new me),this.onLinuxMouseSelection=this._onLinuxMouseSelection.event,this._onRedrawRequest=this._register(new me),this.onRequestRedraw=this._onRedrawRequest.event,this._onSelectionChange=this._register(new me),this.onSelectionChange=this._onSelectionChange.event,this._onRequestScrollLines=this._register(new me),this.onRequestScrollLines=this._onRequestScrollLines.event,this._mouseMoveListener=d=>this._handleMouseMove(d),this._mouseUpListener=d=>this._handleMouseUp(d),this._coreService.onUserInput(()=>{this.hasSelection&&this.clearSelection()}),this._trimListener=this._bufferService.buffer.lines.onTrim(d=>this._handleTrim(d)),this._register(this._bufferService.buffers.onBufferActivate(d=>this._handleBufferActivate(d))),this.enable(),this._model=new Rre(this._bufferService),this._activeSelectionMode=0,this._register(Bt(()=>{this._removeMouseDownListeners()})),this._register(this._bufferService.onResize(d=>{d.rowsChanged&&this.clearSelection()}))}reset(){this.clearSelection()}disable(){this.clearSelection(),this._enabled=!1}enable(){this._enabled=!0}get selectionStart(){return this._model.finalSelectionStart}get selectionEnd(){return this._model.finalSelectionEnd}get hasSelection(){let e=this._model.finalSelectionStart,i=this._model.finalSelectionEnd;return!e||!i?!1:e[0]!==i[0]||e[1]!==i[1]}get selectionText(){let e=this._model.finalSelectionStart,i=this._model.finalSelectionEnd;if(!e||!i)return"";let n=this._bufferService.buffer,r=[];if(this._activeSelectionMode===3){if(e[0]===i[0])return"";let s=e[0]s.replace($re," ")).join(iz?`\r +`))}},Jie=class extends Error{constructor(t,e){super(t),this.name="ListenerLeakError",this.stack=e}},ene=class extends Error{constructor(t,e){super(t),this.name="ListenerRefusalError",this.stack=e}},tne=0,Ly=class{constructor(e){this.value=e,this.id=tne++}},ine=2,nne,me=class{constructor(e){var i,n,s,r;this._size=0,this._options=e,this._leakageMon=(i=this._options)!=null&&i.leakWarningThreshold?new Gie((e==null?void 0:e.onListenerError)??Jm,((n=this._options)==null?void 0:n.leakWarningThreshold)??Fie):void 0,this._perfMon=(s=this._options)!=null&&s._profName?new Hie(this._options._profName):void 0,this._deliveryQueue=(r=this._options)==null?void 0:r.deliveryQueue}dispose(){var e,i,n,s;this._disposed||(this._disposed=!0,((e=this._deliveryQueue)==null?void 0:e.current)===this&&this._deliveryQueue.reset(),this._listeners&&(this._listeners=void 0,this._size=0),(n=(i=this._options)==null?void 0:i.onDidRemoveLastListener)==null||n.call(i),(s=this._leakageMon)==null||s.dispose())}get event(){return this._event??(this._event=(e,i,n)=>{var l,c,u,d,p;if(this._leakageMon&&this._size>this._leakageMon.threshold**2){let g=`[${this._leakageMon.name}] REFUSES to accept new listeners because it exceeded its threshold by far (${this._size} vs ${this._leakageMon.threshold})`;console.warn(g);let O=this._leakageMon.getMostFrequentStack()??["UNKNOWN stack",-1],_=new ene(`${g}. HINT: Stack shows most frequent listener (${O[1]}-times)`,O[0]);return(((l=this._options)==null?void 0:l.onListenerError)||Jm)(_),Ue.None}if(this._disposed)return Ue.None;i&&(e=e.bind(i));let s=new Ly(e),r;this._leakageMon&&this._size>=Math.ceil(this._leakageMon.threshold*.2)&&(s.stack=Kie.create(),r=this._leakageMon.check(s.stack,this._size+1)),this._listeners?this._listeners instanceof Ly?(this._deliveryQueue??(this._deliveryQueue=new sne),this._listeners=[this._listeners,s]):this._listeners.push(s):((u=(c=this._options)==null?void 0:c.onWillAddFirstListener)==null||u.call(c,this),this._listeners=s,(p=(d=this._options)==null?void 0:d.onDidAddFirstListener)==null||p.call(d,this)),this._size++;let o=Bt(()=>{r==null||r(),this._removeListener(s)});return n instanceof Sa?n.add(o):Array.isArray(n)&&n.push(o),o}),this._event}_removeListener(e){var r,o,l,c;if((o=(r=this._options)==null?void 0:r.onWillRemoveListener)==null||o.call(r,this),!this._listeners)return;if(this._size===1){this._listeners=void 0,(c=(l=this._options)==null?void 0:l.onDidRemoveLastListener)==null||c.call(l,this),this._size=0;return}let i=this._listeners,n=i.indexOf(e);if(n===-1)throw console.log("disposed?",this._disposed),console.log("size?",this._size),console.log("arr?",JSON.stringify(this._listeners)),new Error("Attempted to dispose unknown listener");this._size--,i[n]=void 0;let s=this._deliveryQueue.current===this;if(this._size*ine<=i.length){let u=0;for(let d=0;d0}},sne=class{constructor(){this.i=-1,this.end=0}enqueue(e,i,n){this.i=0,this.end=n,this.current=e,this.value=i}reset(){this.i=this.end,this.current=void 0,this.value=void 0}},nS=class{constructor(){this.mapWindowIdToZoomLevel=new Map,this._onDidChangeZoomLevel=new me,this.onDidChangeZoomLevel=this._onDidChangeZoomLevel.event,this.mapWindowIdToZoomFactor=new Map,this._onDidChangeFullscreen=new me,this.onDidChangeFullscreen=this._onDidChangeFullscreen.event,this.mapWindowIdToFullScreen=new Map}getZoomLevel(e){return this.mapWindowIdToZoomLevel.get(this.getWindowId(e))??0}setZoomLevel(e,i){if(this.getZoomLevel(i)===e)return;let n=this.getWindowId(i);this.mapWindowIdToZoomLevel.set(n,e),this._onDidChangeZoomLevel.fire(n)}getZoomFactor(e){return this.mapWindowIdToZoomFactor.get(this.getWindowId(e))??1}setZoomFactor(e,i){this.mapWindowIdToZoomFactor.set(this.getWindowId(i),e)}setFullscreen(e,i){if(this.isFullscreen(i)===e)return;let n=this.getWindowId(i);this.mapWindowIdToFullScreen.set(n,e),this._onDidChangeFullscreen.fire(n)}isFullscreen(e){return!!this.mapWindowIdToFullScreen.get(this.getWindowId(e))}getWindowId(e){return e.vscodeWindowId}};nS.INSTANCE=new nS;var Pw=nS;function rne(t,e,i){typeof e=="string"&&(e=t.matchMedia(e)),e.addEventListener("change",i)}Pw.INSTANCE.onDidChangeZoomLevel;function one(t){return Pw.INSTANCE.getZoomFactor(t)}Pw.INSTANCE.onDidChangeFullscreen;var kh=typeof navigator=="object"?navigator.userAgent:"",sS=kh.indexOf("Firefox")>=0,ane=kh.indexOf("AppleWebKit")>=0,Rw=kh.indexOf("Chrome")>=0,lne=!Rw&&kh.indexOf("Safari")>=0;kh.indexOf("Electron/")>=0;kh.indexOf("Android")>=0;var Dy=!1;if(typeof mo.matchMedia=="function"){let t=mo.matchMedia("(display-mode: standalone) or (display-mode: window-controls-overlay)"),e=mo.matchMedia("(display-mode: fullscreen)");Dy=t.matches,rne(mo,t,({matches:i})=>{Dy&&e.matches||(Dy=i)})}var Vc="en",rS=!1,oS=!1,eg=!1,X6=!1,Sm,tg=Vc,YP=Vc,cne,Is,wl=globalThis,Ui,FQ;typeof wl.vscode<"u"&&typeof wl.vscode.process<"u"?Ui=wl.vscode.process:typeof process<"u"&&typeof((FQ=process==null?void 0:process.versions)==null?void 0:FQ.node)=="string"&&(Ui=process);var GQ,hne=typeof((GQ=Ui==null?void 0:Ui.versions)==null?void 0:GQ.electron)=="string",une=hne&&(Ui==null?void 0:Ui.type)==="renderer",KQ;if(typeof Ui=="object"){rS=Ui.platform==="win32",oS=Ui.platform==="darwin",eg=Ui.platform==="linux",eg&&Ui.env.SNAP&&Ui.env.SNAP_REVISION,Ui.env.CI||Ui.env.BUILD_ARTIFACTSTAGINGDIRECTORY,Sm=Vc,tg=Vc;let t=Ui.env.VSCODE_NLS_CONFIG;if(t)try{let e=JSON.parse(t);Sm=e.userLocale,YP=e.osLocale,tg=e.resolvedLanguage||Vc,cne=(KQ=e.languagePack)==null?void 0:KQ.translationsConfigFile}catch{}X6=!0}else typeof navigator=="object"&&!une?(Is=navigator.userAgent,rS=Is.indexOf("Windows")>=0,oS=Is.indexOf("Macintosh")>=0,(Is.indexOf("Macintosh")>=0||Is.indexOf("iPad")>=0||Is.indexOf("iPhone")>=0)&&navigator.maxTouchPoints&&navigator.maxTouchPoints>0,eg=Is.indexOf("Linux")>=0,(Is==null?void 0:Is.indexOf("Mobi"))>=0,tg=globalThis._VSCODE_NLS_LANGUAGE||Vc,Sm=navigator.language.toLowerCase(),YP=Sm):console.error("Unable to resolve platform.");var Z6=rS,Tr=oS,fne=eg,HP=X6,Mr=Is,ra=tg,dne;(t=>{function e(){return ra}t.value=e;function i(){return ra.length===2?ra==="en":ra.length>=3?ra[0]==="e"&&ra[1]==="n"&&ra[2]==="-":!1}t.isDefaultVariant=i;function n(){return ra==="en"}t.isDefault=n})(dne||(dne={}));var pne=typeof wl.postMessage=="function"&&!wl.importScripts;(()=>{if(pne){let t=[];wl.addEventListener("message",i=>{if(i.data&&i.data.vscodeScheduleAsyncWork)for(let n=0,s=t.length;n{let n=++e;t.push({id:n,callback:i}),wl.postMessage({vscodeScheduleAsyncWork:n},"*")}}return t=>setTimeout(t)})();var mne=!!(Mr&&Mr.indexOf("Chrome")>=0);Mr&&Mr.indexOf("Firefox")>=0;!mne&&Mr&&Mr.indexOf("Safari")>=0;Mr&&Mr.indexOf("Edg/")>=0;Mr&&Mr.indexOf("Android")>=0;var wc=typeof navigator=="object"?navigator:{};HP||document.queryCommandSupported&&document.queryCommandSupported("copy")||wc&&wc.clipboard&&wc.clipboard.writeText,HP||wc&&wc.clipboard&&wc.clipboard.readText;var Qw=class{constructor(){this._keyCodeToStr=[],this._strToKeyCode=Object.create(null)}define(e,i){this._keyCodeToStr[e]=i,this._strToKeyCode[i.toLowerCase()]=e}keyCodeToStr(e){return this._keyCodeToStr[e]}strToKeyCode(e){return this._strToKeyCode[e.toLowerCase()]||0}},By=new Qw,FP=new Qw,GP=new Qw,gne=new Array(230),q6;(t=>{function e(l){return By.keyCodeToStr(l)}t.toString=e;function i(l){return By.strToKeyCode(l)}t.fromString=i;function n(l){return FP.keyCodeToStr(l)}t.toUserSettingsUS=n;function s(l){return GP.keyCodeToStr(l)}t.toUserSettingsGeneral=s;function r(l){return FP.strToKeyCode(l)||GP.strToKeyCode(l)}t.fromUserSettings=r;function o(l){if(l>=98&&l<=113)return null;switch(l){case 16:return"Up";case 18:return"Down";case 15:return"Left";case 17:return"Right"}return By.keyCodeToStr(l)}t.toElectronAccelerator=o})(q6||(q6={}));var One=class W6{constructor(e,i,n,s,r){this.ctrlKey=e,this.shiftKey=i,this.altKey=n,this.metaKey=s,this.keyCode=r}equals(e){return e instanceof W6&&this.ctrlKey===e.ctrlKey&&this.shiftKey===e.shiftKey&&this.altKey===e.altKey&&this.metaKey===e.metaKey&&this.keyCode===e.keyCode}getHashCode(){let e=this.ctrlKey?"1":"0",i=this.shiftKey?"1":"0",n=this.altKey?"1":"0",s=this.metaKey?"1":"0";return`K${e}${i}${n}${s}${this.keyCode}`}isModifierKey(){return this.keyCode===0||this.keyCode===5||this.keyCode===57||this.keyCode===6||this.keyCode===4}toKeybinding(){return new vne([this])}isDuplicateModifierCase(){return this.ctrlKey&&this.keyCode===5||this.shiftKey&&this.keyCode===4||this.altKey&&this.keyCode===6||this.metaKey&&this.keyCode===57}},vne=class{constructor(t){if(t.length===0)throw Xie("chords");this.chords=t}getHashCode(){let t="";for(let e=0,i=this.chords.length;e{function e(i){return i===t.None||i===t.Cancelled||i instanceof Tne?!0:!i||typeof i!="object"?!1:typeof i.isCancellationRequested=="boolean"&&typeof i.onCancellationRequested=="function"}t.isCancellationToken=e,t.None=Object.freeze({isCancellationRequested:!1,onCancellationRequested:Gi.None}),t.Cancelled=Object.freeze({isCancellationRequested:!0,onCancellationRequested:U6})})(kne||(kne={}));var Tne=class{constructor(){this._isCancelled=!1,this._emitter=null}cancel(){this._isCancelled||(this._isCancelled=!0,this._emitter&&(this._emitter.fire(void 0),this.dispose()))}get isCancellationRequested(){return this._isCancelled}get onCancellationRequested(){return this._isCancelled?U6:(this._emitter||(this._emitter=new me),this._emitter.event)}dispose(){this._emitter&&(this._emitter.dispose(),this._emitter=null)}},Lw=class{constructor(e,i){this._isDisposed=!1,this._token=-1,typeof e=="function"&&typeof i=="number"&&this.setIfNotSet(e,i)}dispose(){this.cancel(),this._isDisposed=!0}cancel(){this._token!==-1&&(clearTimeout(this._token),this._token=-1)}cancelAndSet(e,i){if(this._isDisposed)throw new Kb("Calling 'cancelAndSet' on a disposed TimeoutTimer");this.cancel(),this._token=setTimeout(()=>{this._token=-1,e()},i)}setIfNotSet(e,i){if(this._isDisposed)throw new Kb("Calling 'setIfNotSet' on a disposed TimeoutTimer");this._token===-1&&(this._token=setTimeout(()=>{this._token=-1,e()},i))}},Ane=class{constructor(){this.disposable=void 0,this.isDisposed=!1}cancel(){var e;(e=this.disposable)==null||e.dispose(),this.disposable=void 0}cancelAndSet(e,i,n=globalThis){if(this.isDisposed)throw new Kb("Calling 'cancelAndSet' on a disposed IntervalTimer");this.cancel();let s=n.setInterval(()=>{e()},i);this.disposable=Bt(()=>{n.clearInterval(s),this.disposable=void 0})}dispose(){this.cancel(),this.isDisposed=!0}},Ene;(t=>{async function e(n){let s,r=await Promise.all(n.map(o=>o.then(l=>l,l=>{s||(s=l)})));if(typeof s<"u")throw s;return r}t.settled=e;function i(n){return new Promise(async(s,r)=>{try{await n(s,r)}catch(o){r(o)}})}t.withAsyncBody=i})(Ene||(Ene={}));var tR=class _s{static fromArray(e){return new _s(i=>{i.emitMany(e)})}static fromPromise(e){return new _s(async i=>{i.emitMany(await e)})}static fromPromises(e){return new _s(async i=>{await Promise.all(e.map(async n=>i.emitOne(await n)))})}static merge(e){return new _s(async i=>{await Promise.all(e.map(async n=>{for await(let s of n)i.emitOne(s)}))})}constructor(e,i){this._state=0,this._results=[],this._error=null,this._onReturn=i,this._onStateChanged=new me,queueMicrotask(async()=>{let n={emitOne:s=>this.emitOne(s),emitMany:s=>this.emitMany(s),reject:s=>this.reject(s)};try{await Promise.resolve(e(n)),this.resolve()}catch(s){this.reject(s)}finally{n.emitOne=void 0,n.emitMany=void 0,n.reject=void 0}})}[Symbol.asyncIterator](){let e=0;return{next:async()=>{do{if(this._state===2)throw this._error;if(e{var i;return(i=this._onReturn)==null||i.call(this),{done:!0,value:void 0}}}}static map(e,i){return new _s(async n=>{for await(let s of e)n.emitOne(i(s))})}map(e){return _s.map(this,e)}static filter(e,i){return new _s(async n=>{for await(let s of e)i(s)&&n.emitOne(s)})}filter(e){return _s.filter(this,e)}static coalesce(e){return _s.filter(e,i=>!!i)}coalesce(){return _s.coalesce(this)}static async toPromise(e){let i=[];for await(let n of e)i.push(n);return i}toPromise(){return _s.toPromise(this)}emitOne(e){this._state===0&&(this._results.push(e),this._onStateChanged.fire())}emitMany(e){this._state===0&&(this._results=this._results.concat(e),this._onStateChanged.fire())}resolve(){this._state===0&&(this._state=1,this._onStateChanged.fire())}reject(e){this._state===0&&(this._state=2,this._error=e,this._onStateChanged.fire())}};tR.EMPTY=tR.fromArray([]);var{getWindow:xr,getWindowId:Mne,onDidRegisterWindow:Pne}=(function(){let t=new Map,e={window:mo,disposables:new Sa};t.set(mo.vscodeWindowId,e);let i=new me,n=new me,s=new me;function r(o,l){return(typeof o=="number"?t.get(o):void 0)??(l?e:void 0)}return{onDidRegisterWindow:i.event,onWillUnregisterWindow:s.event,onDidUnregisterWindow:n.event,registerWindow(o){if(t.has(o.vscodeWindowId))return Ue.None;let l=new Sa,c={window:o,disposables:l.add(new Sa)};return t.set(o.vscodeWindowId,c),l.add(Bt(()=>{t.delete(o.vscodeWindowId),n.fire(o)})),l.add(Be(o,wi.BEFORE_UNLOAD,()=>{s.fire(o)})),i.fire(c),l},getWindows(){return t.values()},getWindowsCount(){return t.size},getWindowId(o){return o.vscodeWindowId},hasWindow(o){return t.has(o)},getWindowById:r,getWindow(o){var u;let l=o;if((u=l==null?void 0:l.ownerDocument)!=null&&u.defaultView)return l.ownerDocument.defaultView.window;let c=o;return c!=null&&c.view?c.view.window:mo},getDocument(o){return xr(o).document}}})(),Rne=class{constructor(e,i,n,s){this._node=e,this._type=i,this._handler=n,this._options=s||!1,this._node.addEventListener(this._type,this._handler,this._options)}dispose(){this._handler&&(this._node.removeEventListener(this._type,this._handler,this._options),this._node=null,this._handler=null)}};function Be(t,e,i,n){return new Rne(t,e,i,n)}var iR=function(t,e,i,n){return Be(t,e,i,n)},Dw,Qne=class extends Ane{constructor(t){super(),this.defaultTarget=t&&xr(t)}cancelAndSet(t,e,i){return super.cancelAndSet(t,e,i??this.defaultTarget)}},nR=class{constructor(e,i=0){this._runner=e,this.priority=i,this._canceled=!1}dispose(){this._canceled=!0}execute(){if(!this._canceled)try{this._runner()}catch(e){Jm(e)}}static sort(e,i){return i.priority-e.priority}};(function(){let t=new Map,e=new Map,i=new Map,n=new Map,s=r=>{i.set(r,!1);let o=t.get(r)??[];for(e.set(r,o),t.set(r,[]),n.set(r,!0);o.length>0;)o.sort(nR.sort),o.shift().execute();n.set(r,!1)};Dw=(r,o,l=0)=>{let c=Mne(r),u=new nR(o,l),d=t.get(c);return d||(d=[],t.set(c,d)),d.push(u),i.get(c)||(i.set(c,!0),r.requestAnimationFrame(()=>s(c))),u}})();function Lne(t){let e=t.getBoundingClientRect(),i=xr(t);return{left:e.left+i.scrollX,top:e.top+i.scrollY,width:e.width,height:e.height}}var wi={CLICK:"click",MOUSE_DOWN:"mousedown",MOUSE_OVER:"mouseover",MOUSE_LEAVE:"mouseleave",MOUSE_WHEEL:"wheel",POINTER_UP:"pointerup",POINTER_DOWN:"pointerdown",POINTER_MOVE:"pointermove",KEY_DOWN:"keydown",KEY_UP:"keyup",BEFORE_UNLOAD:"beforeunload",CHANGE:"change",FOCUS:"focus",BLUR:"blur",INPUT:"input"},Dne=class{constructor(t){this.domNode=t,this._maxWidth="",this._width="",this._height="",this._top="",this._left="",this._bottom="",this._right="",this._paddingTop="",this._paddingLeft="",this._paddingBottom="",this._paddingRight="",this._fontFamily="",this._fontWeight="",this._fontSize="",this._fontStyle="",this._fontFeatureSettings="",this._fontVariationSettings="",this._textDecoration="",this._lineHeight="",this._letterSpacing="",this._className="",this._display="",this._position="",this._visibility="",this._color="",this._backgroundColor="",this._layerHint=!1,this._contain="none",this._boxShadow=""}setMaxWidth(t){let e=Mn(t);this._maxWidth!==e&&(this._maxWidth=e,this.domNode.style.maxWidth=this._maxWidth)}setWidth(t){let e=Mn(t);this._width!==e&&(this._width=e,this.domNode.style.width=this._width)}setHeight(t){let e=Mn(t);this._height!==e&&(this._height=e,this.domNode.style.height=this._height)}setTop(t){let e=Mn(t);this._top!==e&&(this._top=e,this.domNode.style.top=this._top)}setLeft(t){let e=Mn(t);this._left!==e&&(this._left=e,this.domNode.style.left=this._left)}setBottom(t){let e=Mn(t);this._bottom!==e&&(this._bottom=e,this.domNode.style.bottom=this._bottom)}setRight(t){let e=Mn(t);this._right!==e&&(this._right=e,this.domNode.style.right=this._right)}setPaddingTop(t){let e=Mn(t);this._paddingTop!==e&&(this._paddingTop=e,this.domNode.style.paddingTop=this._paddingTop)}setPaddingLeft(t){let e=Mn(t);this._paddingLeft!==e&&(this._paddingLeft=e,this.domNode.style.paddingLeft=this._paddingLeft)}setPaddingBottom(t){let e=Mn(t);this._paddingBottom!==e&&(this._paddingBottom=e,this.domNode.style.paddingBottom=this._paddingBottom)}setPaddingRight(t){let e=Mn(t);this._paddingRight!==e&&(this._paddingRight=e,this.domNode.style.paddingRight=this._paddingRight)}setFontFamily(t){this._fontFamily!==t&&(this._fontFamily=t,this.domNode.style.fontFamily=this._fontFamily)}setFontWeight(t){this._fontWeight!==t&&(this._fontWeight=t,this.domNode.style.fontWeight=this._fontWeight)}setFontSize(t){let e=Mn(t);this._fontSize!==e&&(this._fontSize=e,this.domNode.style.fontSize=this._fontSize)}setFontStyle(t){this._fontStyle!==t&&(this._fontStyle=t,this.domNode.style.fontStyle=this._fontStyle)}setFontFeatureSettings(t){this._fontFeatureSettings!==t&&(this._fontFeatureSettings=t,this.domNode.style.fontFeatureSettings=this._fontFeatureSettings)}setFontVariationSettings(t){this._fontVariationSettings!==t&&(this._fontVariationSettings=t,this.domNode.style.fontVariationSettings=this._fontVariationSettings)}setTextDecoration(t){this._textDecoration!==t&&(this._textDecoration=t,this.domNode.style.textDecoration=this._textDecoration)}setLineHeight(t){let e=Mn(t);this._lineHeight!==e&&(this._lineHeight=e,this.domNode.style.lineHeight=this._lineHeight)}setLetterSpacing(t){let e=Mn(t);this._letterSpacing!==e&&(this._letterSpacing=e,this.domNode.style.letterSpacing=this._letterSpacing)}setClassName(t){this._className!==t&&(this._className=t,this.domNode.className=this._className)}toggleClassName(t,e){this.domNode.classList.toggle(t,e),this._className=this.domNode.className}setDisplay(t){this._display!==t&&(this._display=t,this.domNode.style.display=this._display)}setPosition(t){this._position!==t&&(this._position=t,this.domNode.style.position=this._position)}setVisibility(t){this._visibility!==t&&(this._visibility=t,this.domNode.style.visibility=this._visibility)}setColor(t){this._color!==t&&(this._color=t,this.domNode.style.color=this._color)}setBackgroundColor(t){this._backgroundColor!==t&&(this._backgroundColor=t,this.domNode.style.backgroundColor=this._backgroundColor)}setLayerHinting(t){this._layerHint!==t&&(this._layerHint=t,this.domNode.style.transform=this._layerHint?"translate3d(0px, 0px, 0px)":"")}setBoxShadow(t){this._boxShadow!==t&&(this._boxShadow=t,this.domNode.style.boxShadow=t)}setContain(t){this._contain!==t&&(this._contain=t,this.domNode.style.contain=this._contain)}setAttribute(t,e){this.domNode.setAttribute(t,e)}removeAttribute(t){this.domNode.removeAttribute(t)}appendChild(t){this.domNode.appendChild(t.domNode)}removeChild(t){this.domNode.removeChild(t.domNode)}};function Mn(t){return typeof t=="number"?`${t}px`:t}function bf(t){return new Dne(t)}var Y6=class{constructor(){this._hooks=new Sa,this._pointerMoveCallback=null,this._onStopCallback=null}dispose(){this.stopMonitoring(!1),this._hooks.dispose()}stopMonitoring(e,i){if(!this.isMonitoring())return;this._hooks.clear(),this._pointerMoveCallback=null;let n=this._onStopCallback;this._onStopCallback=null,e&&n&&n(i)}isMonitoring(){return!!this._pointerMoveCallback}startMonitoring(e,i,n,s,r){this.isMonitoring()&&this.stopMonitoring(!1),this._pointerMoveCallback=s,this._onStopCallback=r;let o=e;try{e.setPointerCapture(i),this._hooks.add(Bt(()=>{try{e.releasePointerCapture(i)}catch{}}))}catch{o=xr(e)}this._hooks.add(Be(o,wi.POINTER_MOVE,l=>{if(l.buttons!==n){this.stopMonitoring(!0);return}l.preventDefault(),this._pointerMoveCallback(l)})),this._hooks.add(Be(o,wi.POINTER_UP,l=>this.stopMonitoring(!0)))}};function Bne(t,e,i){let n=null,s=null;if(typeof i.value=="function"?(n="value",s=i.value,s.length!==0&&console.warn("Memoize should only be used in functions with zero parameters")):typeof i.get=="function"&&(n="get",s=i.get),!s)throw new Error("not supported");let r=`$memoize$${e}`;i[n]=function(...o){return this.hasOwnProperty(r)||Object.defineProperty(this,r,{configurable:!1,enumerable:!1,writable:!1,value:s.apply(this,o)}),this[r]}}var fr;(t=>(t.Tap="-xterm-gesturetap",t.Change="-xterm-gesturechange",t.Start="-xterm-gesturestart",t.End="-xterm-gesturesend",t.Contextmenu="-xterm-gesturecontextmenu"))(fr||(fr={}));var tf=class en extends Ue{constructor(){super(),this.dispatched=!1,this.targets=new UP,this.ignoreTargets=new UP,this.activeTouches={},this.handle=null,this._lastSetTapCountTime=0,this._register(Gi.runAndSubscribe(Pne,({window:e,disposables:i})=>{i.add(Be(e.document,"touchstart",n=>this.onTouchStart(n),{passive:!1})),i.add(Be(e.document,"touchend",n=>this.onTouchEnd(e,n))),i.add(Be(e.document,"touchmove",n=>this.onTouchMove(n),{passive:!1}))},{window:mo,disposables:this._store}))}static addTarget(e){if(!en.isTouchDevice())return Ue.None;en.INSTANCE||(en.INSTANCE=new en);let i=en.INSTANCE.targets.push(e);return Bt(i)}static ignoreTarget(e){if(!en.isTouchDevice())return Ue.None;en.INSTANCE||(en.INSTANCE=new en);let i=en.INSTANCE.ignoreTargets.push(e);return Bt(i)}static isTouchDevice(){return"ontouchstart"in mo||navigator.maxTouchPoints>0}dispose(){this.handle&&(this.handle.dispose(),this.handle=null),super.dispose()}onTouchStart(e){let i=Date.now();this.handle&&(this.handle.dispose(),this.handle=null);for(let n=0,s=e.targetTouches.length;n=en.HOLD_DELAY&&Math.abs(c.initialPageX-Kn(c.rollingPageX))<30&&Math.abs(c.initialPageY-Kn(c.rollingPageY))<30){let d=this.newGestureEvent(fr.Contextmenu,c.initialTarget);d.pageX=Kn(c.rollingPageX),d.pageY=Kn(c.rollingPageY),this.dispatchEvent(d)}else if(s===1){let d=Kn(c.rollingPageX),p=Kn(c.rollingPageY),g=Kn(c.rollingTimestamps)-c.rollingTimestamps[0],O=d-c.rollingPageX[0],_=p-c.rollingPageY[0],b=[...this.targets].filter(x=>c.initialTarget instanceof Node&&x.contains(c.initialTarget));this.inertia(e,b,n,Math.abs(O)/g,O>0?1:-1,d,Math.abs(_)/g,_>0?1:-1,p)}this.dispatchEvent(this.newGestureEvent(fr.End,c.initialTarget)),delete this.activeTouches[l.identifier]}this.dispatched&&(i.preventDefault(),i.stopPropagation(),this.dispatched=!1)}newGestureEvent(e,i){let n=document.createEvent("CustomEvent");return n.initEvent(e,!1,!0),n.initialTarget=i,n.tapCount=0,n}dispatchEvent(e){if(e.type===fr.Tap){let i=new Date().getTime(),n=0;i-this._lastSetTapCountTime>en.CLEAR_TAP_COUNT_TIME?n=1:n=2,this._lastSetTapCountTime=i,e.tapCount=n}else(e.type===fr.Change||e.type===fr.Contextmenu)&&(this._lastSetTapCountTime=0);if(e.initialTarget instanceof Node){for(let n of this.ignoreTargets)if(n.contains(e.initialTarget))return;let i=[];for(let n of this.targets)if(n.contains(e.initialTarget)){let s=0,r=e.initialTarget;for(;r&&r!==n;)s++,r=r.parentElement;i.push([s,n])}i.sort((n,s)=>n[0]-s[0]);for(let[n,s]of i)s.dispatchEvent(e),this.dispatched=!0}}inertia(e,i,n,s,r,o,l,c,u){this.handle=Dw(e,()=>{let d=Date.now(),p=d-n,g=0,O=0,_=!0;s+=en.SCROLL_FRICTION*p,l+=en.SCROLL_FRICTION*p,s>0&&(_=!1,g=r*s*p),l>0&&(_=!1,O=c*l*p);let b=this.newGestureEvent(fr.Change);b.translationX=g,b.translationY=O,i.forEach(x=>x.dispatchEvent(b)),_||this.inertia(e,i,d,s,r,o+g,l,c,u+O)})}onTouchMove(e){let i=Date.now();for(let n=0,s=e.changedTouches.length;n3&&(o.rollingPageX.shift(),o.rollingPageY.shift(),o.rollingTimestamps.shift()),o.rollingPageX.push(r.pageX),o.rollingPageY.push(r.pageY),o.rollingTimestamps.push(i)}this.dispatched&&(e.preventDefault(),e.stopPropagation(),this.dispatched=!1)}};tf.SCROLL_FRICTION=-.005,tf.HOLD_DELAY=700,tf.CLEAR_TAP_COUNT_TIME=400,Ut([Bne],tf,"isTouchDevice",1);var $ne=tf,Bw=class extends Ue{onclick(e,i){this._register(Be(e,wi.CLICK,n=>i(new xm(xr(e),n))))}onmousedown(e,i){this._register(Be(e,wi.MOUSE_DOWN,n=>i(new xm(xr(e),n))))}onmouseover(e,i){this._register(Be(e,wi.MOUSE_OVER,n=>i(new xm(xr(e),n))))}onmouseleave(e,i){this._register(Be(e,wi.MOUSE_LEAVE,n=>i(new xm(xr(e),n))))}onkeydown(e,i){this._register(Be(e,wi.KEY_DOWN,n=>i(new KP(n))))}onkeyup(e,i){this._register(Be(e,wi.KEY_UP,n=>i(new KP(n))))}oninput(e,i){this._register(Be(e,wi.INPUT,i))}onblur(e,i){this._register(Be(e,wi.BLUR,i))}onfocus(e,i){this._register(Be(e,wi.FOCUS,i))}onchange(e,i){this._register(Be(e,wi.CHANGE,i))}ignoreGesture(e){return $ne.ignoreTarget(e)}},sR=11,Nne=class extends Bw{constructor(t){super(),this._onActivate=t.onActivate,this.bgDomNode=document.createElement("div"),this.bgDomNode.className="arrow-background",this.bgDomNode.style.position="absolute",this.bgDomNode.style.width=t.bgWidth+"px",this.bgDomNode.style.height=t.bgHeight+"px",typeof t.top<"u"&&(this.bgDomNode.style.top="0px"),typeof t.left<"u"&&(this.bgDomNode.style.left="0px"),typeof t.bottom<"u"&&(this.bgDomNode.style.bottom="0px"),typeof t.right<"u"&&(this.bgDomNode.style.right="0px"),this.domNode=document.createElement("div"),this.domNode.className=t.className,this.domNode.style.position="absolute",this.domNode.style.width=sR+"px",this.domNode.style.height=sR+"px",typeof t.top<"u"&&(this.domNode.style.top=t.top+"px"),typeof t.left<"u"&&(this.domNode.style.left=t.left+"px"),typeof t.bottom<"u"&&(this.domNode.style.bottom=t.bottom+"px"),typeof t.right<"u"&&(this.domNode.style.right=t.right+"px"),this._pointerMoveMonitor=this._register(new Y6),this._register(iR(this.bgDomNode,wi.POINTER_DOWN,e=>this._arrowPointerDown(e))),this._register(iR(this.domNode,wi.POINTER_DOWN,e=>this._arrowPointerDown(e))),this._pointerdownRepeatTimer=this._register(new Qne),this._pointerdownScheduleRepeatTimer=this._register(new Lw)}_arrowPointerDown(t){if(!t.target||!(t.target instanceof Element))return;let e=()=>{this._pointerdownRepeatTimer.cancelAndSet(()=>this._onActivate(),1e3/24,xr(t))};this._onActivate(),this._pointerdownRepeatTimer.cancel(),this._pointerdownScheduleRepeatTimer.cancelAndSet(e,200),this._pointerMoveMonitor.startMonitoring(t.target,t.pointerId,t.buttons,i=>{},()=>{this._pointerdownRepeatTimer.cancel(),this._pointerdownScheduleRepeatTimer.cancel()}),t.preventDefault()}},zne=class aS{constructor(e,i,n,s,r,o,l){this._forceIntegerValues=e,this._scrollStateBrand=void 0,this._forceIntegerValues&&(i=i|0,n=n|0,s=s|0,r=r|0,o=o|0,l=l|0),this.rawScrollLeft=s,this.rawScrollTop=l,i<0&&(i=0),s+i>n&&(s=n-i),s<0&&(s=0),r<0&&(r=0),l+r>o&&(l=o-r),l<0&&(l=0),this.width=i,this.scrollWidth=n,this.scrollLeft=s,this.height=r,this.scrollHeight=o,this.scrollTop=l}equals(e){return this.rawScrollLeft===e.rawScrollLeft&&this.rawScrollTop===e.rawScrollTop&&this.width===e.width&&this.scrollWidth===e.scrollWidth&&this.scrollLeft===e.scrollLeft&&this.height===e.height&&this.scrollHeight===e.scrollHeight&&this.scrollTop===e.scrollTop}withScrollDimensions(e,i){return new aS(this._forceIntegerValues,typeof e.width<"u"?e.width:this.width,typeof e.scrollWidth<"u"?e.scrollWidth:this.scrollWidth,i?this.rawScrollLeft:this.scrollLeft,typeof e.height<"u"?e.height:this.height,typeof e.scrollHeight<"u"?e.scrollHeight:this.scrollHeight,i?this.rawScrollTop:this.scrollTop)}withScrollPosition(e){return new aS(this._forceIntegerValues,this.width,this.scrollWidth,typeof e.scrollLeft<"u"?e.scrollLeft:this.rawScrollLeft,this.height,this.scrollHeight,typeof e.scrollTop<"u"?e.scrollTop:this.rawScrollTop)}createScrollEvent(e,i){let n=this.width!==e.width,s=this.scrollWidth!==e.scrollWidth,r=this.scrollLeft!==e.scrollLeft,o=this.height!==e.height,l=this.scrollHeight!==e.scrollHeight,c=this.scrollTop!==e.scrollTop;return{inSmoothScrolling:i,oldWidth:e.width,oldScrollWidth:e.scrollWidth,oldScrollLeft:e.scrollLeft,width:this.width,scrollWidth:this.scrollWidth,scrollLeft:this.scrollLeft,oldHeight:e.height,oldScrollHeight:e.scrollHeight,oldScrollTop:e.scrollTop,height:this.height,scrollHeight:this.scrollHeight,scrollTop:this.scrollTop,widthChanged:n,scrollWidthChanged:s,scrollLeftChanged:r,heightChanged:o,scrollHeightChanged:l,scrollTopChanged:c}}},jne=class extends Ue{constructor(t){super(),this._scrollableBrand=void 0,this._onScroll=this._register(new me),this.onScroll=this._onScroll.event,this._smoothScrollDuration=t.smoothScrollDuration,this._scheduleAtNextAnimationFrame=t.scheduleAtNextAnimationFrame,this._state=new zne(t.forceIntegerValues,0,0,0,0,0,0),this._smoothScrolling=null}dispose(){this._smoothScrolling&&(this._smoothScrolling.dispose(),this._smoothScrolling=null),super.dispose()}setSmoothScrollDuration(t){this._smoothScrollDuration=t}validateScrollPosition(t){return this._state.withScrollPosition(t)}getScrollDimensions(){return this._state}setScrollDimensions(t,e){var n;let i=this._state.withScrollDimensions(t,e);this._setState(i,!!this._smoothScrolling),(n=this._smoothScrolling)==null||n.acceptScrollDimensions(this._state)}getFutureScrollPosition(){return this._smoothScrolling?this._smoothScrolling.to:this._state}getCurrentScrollPosition(){return this._state}setScrollPositionNow(t){let e=this._state.withScrollPosition(t);this._smoothScrolling&&(this._smoothScrolling.dispose(),this._smoothScrolling=null),this._setState(e,!1)}setScrollPositionSmooth(t,e){if(this._smoothScrollDuration===0)return this.setScrollPositionNow(t);if(this._smoothScrolling){t={scrollLeft:typeof t.scrollLeft>"u"?this._smoothScrolling.to.scrollLeft:t.scrollLeft,scrollTop:typeof t.scrollTop>"u"?this._smoothScrolling.to.scrollTop:t.scrollTop};let i=this._state.withScrollPosition(t);if(this._smoothScrolling.to.scrollLeft===i.scrollLeft&&this._smoothScrolling.to.scrollTop===i.scrollTop)return;let n;e?n=new oR(this._smoothScrolling.from,i,this._smoothScrolling.startTime,this._smoothScrolling.duration):n=this._smoothScrolling.combine(this._state,i,this._smoothScrollDuration),this._smoothScrolling.dispose(),this._smoothScrolling=n}else{let i=this._state.withScrollPosition(t);this._smoothScrolling=oR.start(this._state,i,this._smoothScrollDuration)}this._smoothScrolling.animationFrameDisposable=this._scheduleAtNextAnimationFrame(()=>{this._smoothScrolling&&(this._smoothScrolling.animationFrameDisposable=null,this._performSmoothScrolling())})}hasPendingScrollAnimation(){return!!this._smoothScrolling}_performSmoothScrolling(){if(!this._smoothScrolling)return;let t=this._smoothScrolling.tick(),e=this._state.withScrollPosition(t);if(this._setState(e,!0),!!this._smoothScrolling){if(t.isDone){this._smoothScrolling.dispose(),this._smoothScrolling=null;return}this._smoothScrolling.animationFrameDisposable=this._scheduleAtNextAnimationFrame(()=>{this._smoothScrolling&&(this._smoothScrolling.animationFrameDisposable=null,this._performSmoothScrolling())})}}_setState(t,e){let i=this._state;i.equals(t)||(this._state=t,this._onScroll.fire(this._state.createScrollEvent(i,e)))}},rR=class{constructor(e,i,n){this.scrollLeft=e,this.scrollTop=i,this.isDone=n}};function $y(t,e){let i=e-t;return function(n){return t+i*Xne(n)}}function Ine(t,e,i){return function(n){return n2.5*n){let s,r;return e{var e;(e=this._domNode)==null||e.setClassName(this._visibleClassName)},0))}_hide(e){var i;this._revealTimer.cancel(),this._isVisible&&(this._isVisible=!1,(i=this._domNode)==null||i.setClassName(this._invisibleClassName+(e?" fade":"")))}},qne=140,H6=class extends Bw{constructor(e){super(),this._lazyRender=e.lazyRender,this._host=e.host,this._scrollable=e.scrollable,this._scrollByPage=e.scrollByPage,this._scrollbarState=e.scrollbarState,this._visibilityController=this._register(new Zne(e.visibility,"visible scrollbar "+e.extraScrollbarClassName,"invisible scrollbar "+e.extraScrollbarClassName)),this._visibilityController.setIsNeeded(this._scrollbarState.isNeeded()),this._pointerMoveMonitor=this._register(new Y6),this._shouldRender=!0,this.domNode=bf(document.createElement("div")),this.domNode.setAttribute("role","presentation"),this.domNode.setAttribute("aria-hidden","true"),this._visibilityController.setDomNode(this.domNode),this.domNode.setPosition("absolute"),this._register(Be(this.domNode.domNode,wi.POINTER_DOWN,i=>this._domNodePointerDown(i)))}_createArrow(e){let i=this._register(new Nne(e));this.domNode.domNode.appendChild(i.bgDomNode),this.domNode.domNode.appendChild(i.domNode)}_createSlider(e,i,n,s){this.slider=bf(document.createElement("div")),this.slider.setClassName("slider"),this.slider.setPosition("absolute"),this.slider.setTop(e),this.slider.setLeft(i),typeof n=="number"&&this.slider.setWidth(n),typeof s=="number"&&this.slider.setHeight(s),this.slider.setLayerHinting(!0),this.slider.setContain("strict"),this.domNode.domNode.appendChild(this.slider.domNode),this._register(Be(this.slider.domNode,wi.POINTER_DOWN,r=>{r.button===0&&(r.preventDefault(),this._sliderPointerDown(r))})),this.onclick(this.slider.domNode,r=>{r.leftButton&&r.stopPropagation()})}_onElementSize(e){return this._scrollbarState.setVisibleSize(e)&&(this._visibilityController.setIsNeeded(this._scrollbarState.isNeeded()),this._shouldRender=!0,this._lazyRender||this.render()),this._shouldRender}_onElementScrollSize(e){return this._scrollbarState.setScrollSize(e)&&(this._visibilityController.setIsNeeded(this._scrollbarState.isNeeded()),this._shouldRender=!0,this._lazyRender||this.render()),this._shouldRender}_onElementScrollPosition(e){return this._scrollbarState.setScrollPosition(e)&&(this._visibilityController.setIsNeeded(this._scrollbarState.isNeeded()),this._shouldRender=!0,this._lazyRender||this.render()),this._shouldRender}beginReveal(){this._visibilityController.setShouldBeVisible(!0)}beginHide(){this._visibilityController.setShouldBeVisible(!1)}render(){this._shouldRender&&(this._shouldRender=!1,this._renderDomNode(this._scrollbarState.getRectangleLargeSize(),this._scrollbarState.getRectangleSmallSize()),this._updateSlider(this._scrollbarState.getSliderSize(),this._scrollbarState.getArrowSize()+this._scrollbarState.getSliderPosition()))}_domNodePointerDown(e){e.target===this.domNode.domNode&&this._onPointerDown(e)}delegatePointerDown(e){let i=this.domNode.domNode.getClientRects()[0].top,n=i+this._scrollbarState.getSliderPosition(),s=i+this._scrollbarState.getSliderPosition()+this._scrollbarState.getSliderSize(),r=this._sliderPointerPosition(e);n<=r&&r<=s?e.button===0&&(e.preventDefault(),this._sliderPointerDown(e)):this._onPointerDown(e)}_onPointerDown(e){let i,n;if(e.target===this.domNode.domNode&&typeof e.offsetX=="number"&&typeof e.offsetY=="number")i=e.offsetX,n=e.offsetY;else{let r=Lne(this.domNode.domNode);i=e.pageX-r.left,n=e.pageY-r.top}let s=this._pointerDownRelativePosition(i,n);this._setDesiredScrollPositionNow(this._scrollByPage?this._scrollbarState.getDesiredScrollPositionFromOffsetPaged(s):this._scrollbarState.getDesiredScrollPositionFromOffset(s)),e.button===0&&(e.preventDefault(),this._sliderPointerDown(e))}_sliderPointerDown(e){if(!e.target||!(e.target instanceof Element))return;let i=this._sliderPointerPosition(e),n=this._sliderOrthogonalPointerPosition(e),s=this._scrollbarState.clone();this.slider.toggleClassName("active",!0),this._pointerMoveMonitor.startMonitoring(e.target,e.pointerId,e.buttons,r=>{let o=this._sliderOrthogonalPointerPosition(r),l=Math.abs(o-n);if(Z6&&l>qne){this._setDesiredScrollPositionNow(s.getScrollPosition());return}let c=this._sliderPointerPosition(r)-i;this._setDesiredScrollPositionNow(s.getDesiredScrollPositionFromDelta(c))},()=>{this.slider.toggleClassName("active",!1),this._host.onDragEnd()}),this._host.onDragStart()}_setDesiredScrollPositionNow(e){let i={};this.writeScrollPosition(i,e),this._scrollable.setScrollPositionNow(i)}updateScrollbarSize(e){this._updateScrollbarSize(e),this._scrollbarState.setScrollbarSize(e),this._shouldRender=!0,this._lazyRender||this.render()}isNeeded(){return this._scrollbarState.isNeeded()}},F6=class cS{constructor(e,i,n,s,r,o){this._scrollbarSize=Math.round(i),this._oppositeScrollbarSize=Math.round(n),this._arrowSize=Math.round(e),this._visibleSize=s,this._scrollSize=r,this._scrollPosition=o,this._computedAvailableSize=0,this._computedIsNeeded=!1,this._computedSliderSize=0,this._computedSliderRatio=0,this._computedSliderPosition=0,this._refreshComputedValues()}clone(){return new cS(this._arrowSize,this._scrollbarSize,this._oppositeScrollbarSize,this._visibleSize,this._scrollSize,this._scrollPosition)}setVisibleSize(e){let i=Math.round(e);return this._visibleSize!==i?(this._visibleSize=i,this._refreshComputedValues(),!0):!1}setScrollSize(e){let i=Math.round(e);return this._scrollSize!==i?(this._scrollSize=i,this._refreshComputedValues(),!0):!1}setScrollPosition(e){let i=Math.round(e);return this._scrollPosition!==i?(this._scrollPosition=i,this._refreshComputedValues(),!0):!1}setScrollbarSize(e){this._scrollbarSize=Math.round(e)}setOppositeScrollbarSize(e){this._oppositeScrollbarSize=Math.round(e)}static _computeValues(e,i,n,s,r){let o=Math.max(0,n-e),l=Math.max(0,o-2*i),c=s>0&&s>n;if(!c)return{computedAvailableSize:Math.round(o),computedIsNeeded:c,computedSliderSize:Math.round(l),computedSliderRatio:0,computedSliderPosition:0};let u=Math.round(Math.max(20,Math.floor(n*l/s))),d=(l-u)/(s-n),p=r*d;return{computedAvailableSize:Math.round(o),computedIsNeeded:c,computedSliderSize:Math.round(u),computedSliderRatio:d,computedSliderPosition:Math.round(p)}}_refreshComputedValues(){let e=cS._computeValues(this._oppositeScrollbarSize,this._arrowSize,this._visibleSize,this._scrollSize,this._scrollPosition);this._computedAvailableSize=e.computedAvailableSize,this._computedIsNeeded=e.computedIsNeeded,this._computedSliderSize=e.computedSliderSize,this._computedSliderRatio=e.computedSliderRatio,this._computedSliderPosition=e.computedSliderPosition}getArrowSize(){return this._arrowSize}getScrollPosition(){return this._scrollPosition}getRectangleLargeSize(){return this._computedAvailableSize}getRectangleSmallSize(){return this._scrollbarSize}isNeeded(){return this._computedIsNeeded}getSliderSize(){return this._computedSliderSize}getSliderPosition(){return this._computedSliderPosition}getDesiredScrollPositionFromOffset(e){if(!this._computedIsNeeded)return 0;let i=e-this._arrowSize-this._computedSliderSize/2;return Math.round(i/this._computedSliderRatio)}getDesiredScrollPositionFromOffsetPaged(e){if(!this._computedIsNeeded)return 0;let i=e-this._arrowSize,n=this._scrollPosition;return i0&&Math.abs(e.deltaY)>0)return 1;let n=.5;if((!this._isAlmostInt(e.deltaX)||!this._isAlmostInt(e.deltaY))&&(n+=.25),i){let s=Math.abs(e.deltaX),r=Math.abs(e.deltaY),o=Math.abs(i.deltaX),l=Math.abs(i.deltaY),c=Math.max(Math.min(s,o),1),u=Math.max(Math.min(r,l),1),d=Math.max(s,o),p=Math.max(r,l);d%c===0&&p%u===0&&(n-=.5)}return Math.min(Math.max(n,0),1)}_isAlmostInt(e){return Math.abs(Math.round(e)-e)<.01}};hS.INSTANCE=new hS;var Fne=hS,Gne=class extends Bw{constructor(t,e,i){super(),this._onScroll=this._register(new me),this.onScroll=this._onScroll.event,this._onWillScroll=this._register(new me),this.onWillScroll=this._onWillScroll.event,this._options=Jne(e),this._scrollable=i,this._register(this._scrollable.onScroll(s=>{this._onWillScroll.fire(s),this._onDidScroll(s),this._onScroll.fire(s)}));let n={onMouseWheel:s=>this._onMouseWheel(s),onDragStart:()=>this._onDragStart(),onDragEnd:()=>this._onDragEnd()};this._verticalScrollbar=this._register(new Une(this._scrollable,this._options,n)),this._horizontalScrollbar=this._register(new Wne(this._scrollable,this._options,n)),this._domNode=document.createElement("div"),this._domNode.className="xterm-scrollable-element "+this._options.className,this._domNode.setAttribute("role","presentation"),this._domNode.style.position="relative",this._domNode.appendChild(t),this._domNode.appendChild(this._horizontalScrollbar.domNode.domNode),this._domNode.appendChild(this._verticalScrollbar.domNode.domNode),this._options.useShadows?(this._leftShadowDomNode=bf(document.createElement("div")),this._leftShadowDomNode.setClassName("shadow"),this._domNode.appendChild(this._leftShadowDomNode.domNode),this._topShadowDomNode=bf(document.createElement("div")),this._topShadowDomNode.setClassName("shadow"),this._domNode.appendChild(this._topShadowDomNode.domNode),this._topLeftShadowDomNode=bf(document.createElement("div")),this._topLeftShadowDomNode.setClassName("shadow"),this._domNode.appendChild(this._topLeftShadowDomNode.domNode)):(this._leftShadowDomNode=null,this._topShadowDomNode=null,this._topLeftShadowDomNode=null),this._listenOnDomNode=this._options.listenOnDomNode||this._domNode,this._mouseWheelToDispose=[],this._setListeningToMouseWheel(this._options.handleMouseWheel),this.onmouseover(this._listenOnDomNode,s=>this._onMouseOver(s)),this.onmouseleave(this._listenOnDomNode,s=>this._onMouseLeave(s)),this._hideTimeout=this._register(new Lw),this._isDragging=!1,this._mouseIsOver=!1,this._shouldRender=!0,this._revealOnScroll=!0}get options(){return this._options}dispose(){this._mouseWheelToDispose=Pl(this._mouseWheelToDispose),super.dispose()}getDomNode(){return this._domNode}getOverviewRulerLayoutInfo(){return{parent:this._domNode,insertBefore:this._verticalScrollbar.domNode.domNode}}delegateVerticalScrollbarPointerDown(t){this._verticalScrollbar.delegatePointerDown(t)}getScrollDimensions(){return this._scrollable.getScrollDimensions()}setScrollDimensions(t){this._scrollable.setScrollDimensions(t,!1)}updateClassName(t){this._options.className=t,Tr&&(this._options.className+=" mac"),this._domNode.className="xterm-scrollable-element "+this._options.className}updateOptions(t){typeof t.handleMouseWheel<"u"&&(this._options.handleMouseWheel=t.handleMouseWheel,this._setListeningToMouseWheel(this._options.handleMouseWheel)),typeof t.mouseWheelScrollSensitivity<"u"&&(this._options.mouseWheelScrollSensitivity=t.mouseWheelScrollSensitivity),typeof t.fastScrollSensitivity<"u"&&(this._options.fastScrollSensitivity=t.fastScrollSensitivity),typeof t.scrollPredominantAxis<"u"&&(this._options.scrollPredominantAxis=t.scrollPredominantAxis),typeof t.horizontal<"u"&&(this._options.horizontal=t.horizontal),typeof t.vertical<"u"&&(this._options.vertical=t.vertical),typeof t.horizontalScrollbarSize<"u"&&(this._options.horizontalScrollbarSize=t.horizontalScrollbarSize),typeof t.verticalScrollbarSize<"u"&&(this._options.verticalScrollbarSize=t.verticalScrollbarSize),typeof t.scrollByPage<"u"&&(this._options.scrollByPage=t.scrollByPage),this._horizontalScrollbar.updateOptions(this._options),this._verticalScrollbar.updateOptions(this._options),this._options.lazyRender||this._render()}setRevealOnScroll(t){this._revealOnScroll=t}delegateScrollFromMouseWheelEvent(t){this._onMouseWheel(new eR(t))}_setListeningToMouseWheel(t){if(this._mouseWheelToDispose.length>0!==t&&(this._mouseWheelToDispose=Pl(this._mouseWheelToDispose),t)){let e=i=>{this._onMouseWheel(new eR(i))};this._mouseWheelToDispose.push(Be(this._listenOnDomNode,wi.MOUSE_WHEEL,e,{passive:!1}))}}_onMouseWheel(t){var s;if((s=t.browserEvent)!=null&&s.defaultPrevented)return;let e=Fne.INSTANCE;e.acceptStandardWheelEvent(t);let i=!1;if(t.deltaY||t.deltaX){let r=t.deltaY*this._options.mouseWheelScrollSensitivity,o=t.deltaX*this._options.mouseWheelScrollSensitivity;this._options.scrollPredominantAxis&&(this._options.scrollYToX&&o+r===0?o=r=0:Math.abs(r)>=Math.abs(o)?o=0:r=0),this._options.flipAxes&&([r,o]=[o,r]);let l=!Tr&&t.browserEvent&&t.browserEvent.shiftKey;(this._options.scrollYToX||l)&&!o&&(o=r,r=0),t.browserEvent&&t.browserEvent.altKey&&(o=o*this._options.fastScrollSensitivity,r=r*this._options.fastScrollSensitivity);let c=this._scrollable.getFutureScrollPosition(),u={};if(r){let d=aR*r,p=c.scrollTop-(d<0?Math.floor(d):Math.ceil(d));this._verticalScrollbar.writeScrollPosition(u,p)}if(o){let d=aR*o,p=c.scrollLeft-(d<0?Math.floor(d):Math.ceil(d));this._horizontalScrollbar.writeScrollPosition(u,p)}u=this._scrollable.validateScrollPosition(u),(c.scrollLeft!==u.scrollLeft||c.scrollTop!==u.scrollTop)&&(this._options.mouseWheelSmoothScroll&&e.isPhysicalMouseWheel()?this._scrollable.setScrollPositionSmooth(u):this._scrollable.setScrollPositionNow(u),i=!0)}let n=i;!n&&this._options.alwaysConsumeMouseWheel&&(n=!0),!n&&this._options.consumeMouseWheelIfScrollbarIsNeeded&&(this._verticalScrollbar.isNeeded()||this._horizontalScrollbar.isNeeded())&&(n=!0),n&&(t.preventDefault(),t.stopPropagation())}_onDidScroll(t){this._shouldRender=this._horizontalScrollbar.onDidScroll(t)||this._shouldRender,this._shouldRender=this._verticalScrollbar.onDidScroll(t)||this._shouldRender,this._options.useShadows&&(this._shouldRender=!0),this._revealOnScroll&&this._reveal(),this._options.lazyRender||this._render()}renderNow(){if(!this._options.lazyRender)throw new Error("Please use `lazyRender` together with `renderNow`!");this._render()}_render(){if(this._shouldRender&&(this._shouldRender=!1,this._horizontalScrollbar.render(),this._verticalScrollbar.render(),this._options.useShadows)){let t=this._scrollable.getCurrentScrollPosition(),e=t.scrollTop>0,i=t.scrollLeft>0,n=i?" left":"",s=e?" top":"",r=i||e?" top-left-corner":"";this._leftShadowDomNode.setClassName(`shadow${n}`),this._topShadowDomNode.setClassName(`shadow${s}`),this._topLeftShadowDomNode.setClassName(`shadow${r}${s}${n}`)}}_onDragStart(){this._isDragging=!0,this._reveal()}_onDragEnd(){this._isDragging=!1,this._hide()}_onMouseLeave(t){this._mouseIsOver=!1,this._hide()}_onMouseOver(t){this._mouseIsOver=!0,this._reveal()}_reveal(){this._verticalScrollbar.beginReveal(),this._horizontalScrollbar.beginReveal(),this._scheduleHide()}_hide(){!this._mouseIsOver&&!this._isDragging&&(this._verticalScrollbar.beginHide(),this._horizontalScrollbar.beginHide())}_scheduleHide(){!this._mouseIsOver&&!this._isDragging&&this._hideTimeout.cancelAndSet(()=>this._hide(),Yne)}},Kne=class extends Gne{constructor(e,i,n){super(e,i,n)}setScrollPosition(e){e.reuseAnimation?this._scrollable.setScrollPositionSmooth(e,e.reuseAnimation):this._scrollable.setScrollPositionNow(e)}getScrollPosition(){return this._scrollable.getCurrentScrollPosition()}};function Jne(t){let e={lazyRender:typeof t.lazyRender<"u"?t.lazyRender:!1,className:typeof t.className<"u"?t.className:"",useShadows:typeof t.useShadows<"u"?t.useShadows:!0,handleMouseWheel:typeof t.handleMouseWheel<"u"?t.handleMouseWheel:!0,flipAxes:typeof t.flipAxes<"u"?t.flipAxes:!1,consumeMouseWheelIfScrollbarIsNeeded:typeof t.consumeMouseWheelIfScrollbarIsNeeded<"u"?t.consumeMouseWheelIfScrollbarIsNeeded:!1,alwaysConsumeMouseWheel:typeof t.alwaysConsumeMouseWheel<"u"?t.alwaysConsumeMouseWheel:!1,scrollYToX:typeof t.scrollYToX<"u"?t.scrollYToX:!1,mouseWheelScrollSensitivity:typeof t.mouseWheelScrollSensitivity<"u"?t.mouseWheelScrollSensitivity:1,fastScrollSensitivity:typeof t.fastScrollSensitivity<"u"?t.fastScrollSensitivity:5,scrollPredominantAxis:typeof t.scrollPredominantAxis<"u"?t.scrollPredominantAxis:!0,mouseWheelSmoothScroll:typeof t.mouseWheelSmoothScroll<"u"?t.mouseWheelSmoothScroll:!0,arrowSize:typeof t.arrowSize<"u"?t.arrowSize:11,listenOnDomNode:typeof t.listenOnDomNode<"u"?t.listenOnDomNode:null,horizontal:typeof t.horizontal<"u"?t.horizontal:1,horizontalScrollbarSize:typeof t.horizontalScrollbarSize<"u"?t.horizontalScrollbarSize:10,horizontalSliderSize:typeof t.horizontalSliderSize<"u"?t.horizontalSliderSize:0,horizontalHasArrows:typeof t.horizontalHasArrows<"u"?t.horizontalHasArrows:!1,vertical:typeof t.vertical<"u"?t.vertical:1,verticalScrollbarSize:typeof t.verticalScrollbarSize<"u"?t.verticalScrollbarSize:10,verticalHasArrows:typeof t.verticalHasArrows<"u"?t.verticalHasArrows:!1,verticalSliderSize:typeof t.verticalSliderSize<"u"?t.verticalSliderSize:0,scrollByPage:typeof t.scrollByPage<"u"?t.scrollByPage:!1};return e.horizontalSliderSize=typeof t.horizontalSliderSize<"u"?t.horizontalSliderSize:e.horizontalScrollbarSize,e.verticalSliderSize=typeof t.verticalSliderSize<"u"?t.verticalSliderSize:e.verticalScrollbarSize,Tr&&(e.className+=" mac"),e}var uS=class extends Ue{constructor(e,i,n,s,r,o,l,c){super(),this._bufferService=n,this._optionsService=l,this._renderService=c,this._onRequestScrollLines=this._register(new me),this.onRequestScrollLines=this._onRequestScrollLines.event,this._isSyncing=!1,this._isHandlingScroll=!1,this._suppressOnScrollHandler=!1;let u=this._register(new jne({forceIntegerValues:!1,smoothScrollDuration:this._optionsService.rawOptions.smoothScrollDuration,scheduleAtNextAnimationFrame:d=>Dw(s.window,d)}));this._register(this._optionsService.onSpecificOptionChange("smoothScrollDuration",()=>{u.setSmoothScrollDuration(this._optionsService.rawOptions.smoothScrollDuration)})),this._scrollableElement=this._register(new Kne(i,{vertical:1,horizontal:2,useShadows:!1,mouseWheelSmoothScroll:!0,...this._getChangeOptions()},u)),this._register(this._optionsService.onMultipleOptionChange(["scrollSensitivity","fastScrollSensitivity","overviewRuler"],()=>this._scrollableElement.updateOptions(this._getChangeOptions()))),this._register(r.onProtocolChange(d=>{this._scrollableElement.updateOptions({handleMouseWheel:!(d&16)})})),this._scrollableElement.setScrollDimensions({height:0,scrollHeight:0}),this._register(Gi.runAndSubscribe(o.onChangeColors,()=>{this._scrollableElement.getDomNode().style.backgroundColor=o.colors.background.css})),e.appendChild(this._scrollableElement.getDomNode()),this._register(Bt(()=>this._scrollableElement.getDomNode().remove())),this._styleElement=s.mainDocument.createElement("style"),i.appendChild(this._styleElement),this._register(Bt(()=>this._styleElement.remove())),this._register(Gi.runAndSubscribe(o.onChangeColors,()=>{this._styleElement.textContent=[".xterm .xterm-scrollable-element > .scrollbar > .slider {",` background: ${o.colors.scrollbarSliderBackground.css};`,"}",".xterm .xterm-scrollable-element > .scrollbar > .slider:hover {",` background: ${o.colors.scrollbarSliderHoverBackground.css};`,"}",".xterm .xterm-scrollable-element > .scrollbar > .slider.active {",` background: ${o.colors.scrollbarSliderActiveBackground.css};`,"}"].join(` +`)})),this._register(this._bufferService.onResize(()=>this.queueSync())),this._register(this._bufferService.buffers.onBufferActivate(()=>{this._latestYDisp=void 0,this.queueSync()})),this._register(this._bufferService.onScroll(()=>this._sync())),this._register(this._scrollableElement.onScroll(d=>this._handleScroll(d)))}scrollLines(e){let i=this._scrollableElement.getScrollPosition();this._scrollableElement.setScrollPosition({reuseAnimation:!0,scrollTop:i.scrollTop+e*this._renderService.dimensions.css.cell.height})}scrollToLine(e,i){i&&(this._latestYDisp=e),this._scrollableElement.setScrollPosition({reuseAnimation:!i,scrollTop:e*this._renderService.dimensions.css.cell.height})}_getChangeOptions(){var e;return{mouseWheelScrollSensitivity:this._optionsService.rawOptions.scrollSensitivity,fastScrollSensitivity:this._optionsService.rawOptions.fastScrollSensitivity,verticalScrollbarSize:((e=this._optionsService.rawOptions.overviewRuler)==null?void 0:e.width)||14}}queueSync(e){e!==void 0&&(this._latestYDisp=e),this._queuedAnimationFrame===void 0&&(this._queuedAnimationFrame=this._renderService.addRefreshCallback(()=>{this._queuedAnimationFrame=void 0,this._sync(this._latestYDisp)}))}_sync(e=this._bufferService.buffer.ydisp){!this._renderService||this._isSyncing||(this._isSyncing=!0,this._suppressOnScrollHandler=!0,this._scrollableElement.setScrollDimensions({height:this._renderService.dimensions.css.canvas.height,scrollHeight:this._renderService.dimensions.css.cell.height*this._bufferService.buffer.lines.length}),this._suppressOnScrollHandler=!1,e!==this._latestYDisp&&this._scrollableElement.setScrollPosition({scrollTop:e*this._renderService.dimensions.css.cell.height}),this._isSyncing=!1)}_handleScroll(e){if(!this._renderService||this._isHandlingScroll||this._suppressOnScrollHandler)return;this._isHandlingScroll=!0;let i=Math.round(e.scrollTop/this._renderService.dimensions.css.cell.height),n=i-this._bufferService.buffer.ydisp;n!==0&&(this._latestYDisp=i,this._onRequestScrollLines.fire(n)),this._isHandlingScroll=!1}};uS=Ut([be(2,yn),be(3,Co),be(4,M6),be(5,Ch),be(6,bn),be(7,ko)],uS);var fS=class extends Ue{constructor(e,i,n,s,r){super(),this._screenElement=e,this._bufferService=i,this._coreBrowserService=n,this._decorationService=s,this._renderService=r,this._decorationElements=new Map,this._altBufferIsActive=!1,this._dimensionsChanged=!1,this._container=document.createElement("div"),this._container.classList.add("xterm-decoration-container"),this._screenElement.appendChild(this._container),this._register(this._renderService.onRenderedViewportChange(()=>this._doRefreshDecorations())),this._register(this._renderService.onDimensionsChange(()=>{this._dimensionsChanged=!0,this._queueRefresh()})),this._register(this._coreBrowserService.onDprChange(()=>this._queueRefresh())),this._register(this._bufferService.buffers.onBufferActivate(()=>{this._altBufferIsActive=this._bufferService.buffer===this._bufferService.buffers.alt})),this._register(this._decorationService.onDecorationRegistered(()=>this._queueRefresh())),this._register(this._decorationService.onDecorationRemoved(o=>this._removeDecoration(o))),this._register(Bt(()=>{this._container.remove(),this._decorationElements.clear()}))}_queueRefresh(){this._animationFrame===void 0&&(this._animationFrame=this._renderService.addRefreshCallback(()=>{this._doRefreshDecorations(),this._animationFrame=void 0}))}_doRefreshDecorations(){for(let e of this._decorationService.decorations)this._renderDecoration(e);this._dimensionsChanged=!1}_renderDecoration(e){this._refreshStyle(e),this._dimensionsChanged&&this._refreshXPosition(e)}_createElement(e){var s;let i=this._coreBrowserService.mainDocument.createElement("div");i.classList.add("xterm-decoration"),i.classList.toggle("xterm-decoration-top-layer",((s=e==null?void 0:e.options)==null?void 0:s.layer)==="top"),i.style.width=`${Math.round((e.options.width||1)*this._renderService.dimensions.css.cell.width)}px`,i.style.height=`${(e.options.height||1)*this._renderService.dimensions.css.cell.height}px`,i.style.top=`${(e.marker.line-this._bufferService.buffers.active.ydisp)*this._renderService.dimensions.css.cell.height}px`,i.style.lineHeight=`${this._renderService.dimensions.css.cell.height}px`;let n=e.options.x??0;return n&&n>this._bufferService.cols&&(i.style.display="none"),this._refreshXPosition(e,i),i}_refreshStyle(e){let i=e.marker.line-this._bufferService.buffers.active.ydisp;if(i<0||i>=this._bufferService.rows)e.element&&(e.element.style.display="none",e.onRenderEmitter.fire(e.element));else{let n=this._decorationElements.get(e);n||(n=this._createElement(e),e.element=n,this._decorationElements.set(e,n),this._container.appendChild(n),e.onDispose(()=>{this._decorationElements.delete(e),n.remove()})),n.style.display=this._altBufferIsActive?"none":"block",this._altBufferIsActive||(n.style.width=`${Math.round((e.options.width||1)*this._renderService.dimensions.css.cell.width)}px`,n.style.height=`${(e.options.height||1)*this._renderService.dimensions.css.cell.height}px`,n.style.top=`${i*this._renderService.dimensions.css.cell.height}px`,n.style.lineHeight=`${this._renderService.dimensions.css.cell.height}px`),e.onRenderEmitter.fire(n)}}_refreshXPosition(e,i=e.element){if(!i)return;let n=e.options.x??0;(e.options.anchor||"left")==="right"?i.style.right=n?`${n*this._renderService.dimensions.css.cell.width}px`:"":i.style.left=n?`${n*this._renderService.dimensions.css.cell.width}px`:""}_removeDecoration(e){var i;(i=this._decorationElements.get(e))==null||i.remove(),this._decorationElements.delete(e),e.dispose()}};fS=Ut([be(1,yn),be(2,Co),be(3,Sd),be(4,ko)],fS);var ese=class{constructor(){this._zones=[],this._zonePool=[],this._zonePoolIndex=0,this._linePadding={full:0,left:0,center:0,right:0}}get zones(){return this._zonePool.length=Math.min(this._zonePool.length,this._zones.length),this._zones}clear(){this._zones.length=0,this._zonePoolIndex=0}addDecoration(e){if(e.options.overviewRulerOptions){for(let i of this._zones)if(i.color===e.options.overviewRulerOptions.color&&i.position===e.options.overviewRulerOptions.position){if(this._lineIntersectsZone(i,e.marker.line))return;if(this._lineAdjacentToZone(i,e.marker.line,e.options.overviewRulerOptions.position)){this._addLineToZone(i,e.marker.line);return}}if(this._zonePoolIndex=e.startBufferLine&&i<=e.endBufferLine}_lineAdjacentToZone(e,i,n){return i>=e.startBufferLine-this._linePadding[n||"full"]&&i<=e.endBufferLine+this._linePadding[n||"full"]}_addLineToZone(e,i){e.startBufferLine=Math.min(e.startBufferLine,i),e.endBufferLine=Math.max(e.endBufferLine,i)}},lr={full:0,left:0,center:0,right:0},oa={full:0,left:0,center:0,right:0},Du={full:0,left:0,center:0,right:0},Kg=class extends Ue{constructor(e,i,n,s,r,o,l,c){var d;super(),this._viewportElement=e,this._screenElement=i,this._bufferService=n,this._decorationService=s,this._renderService=r,this._optionsService=o,this._themeService=l,this._coreBrowserService=c,this._colorZoneStore=new ese,this._shouldUpdateDimensions=!0,this._shouldUpdateAnchor=!0,this._lastKnownBufferLength=0,this._canvas=this._coreBrowserService.mainDocument.createElement("canvas"),this._canvas.classList.add("xterm-decoration-overview-ruler"),this._refreshCanvasDimensions(),(d=this._viewportElement.parentElement)==null||d.insertBefore(this._canvas,this._viewportElement),this._register(Bt(()=>{var p;return(p=this._canvas)==null?void 0:p.remove()}));let u=this._canvas.getContext("2d");if(u)this._ctx=u;else throw new Error("Ctx cannot be null");this._register(this._decorationService.onDecorationRegistered(()=>this._queueRefresh(void 0,!0))),this._register(this._decorationService.onDecorationRemoved(()=>this._queueRefresh(void 0,!0))),this._register(this._renderService.onRenderedViewportChange(()=>this._queueRefresh())),this._register(this._bufferService.buffers.onBufferActivate(()=>{this._canvas.style.display=this._bufferService.buffer===this._bufferService.buffers.alt?"none":"block"})),this._register(this._bufferService.onScroll(()=>{this._lastKnownBufferLength!==this._bufferService.buffers.normal.lines.length&&(this._refreshDrawHeightConstants(),this._refreshColorZonePadding())})),this._register(this._renderService.onRender(()=>{(!this._containerHeight||this._containerHeight!==this._screenElement.clientHeight)&&(this._queueRefresh(!0),this._containerHeight=this._screenElement.clientHeight)})),this._register(this._coreBrowserService.onDprChange(()=>this._queueRefresh(!0))),this._register(this._optionsService.onSpecificOptionChange("overviewRuler",()=>this._queueRefresh(!0))),this._register(this._themeService.onChangeColors(()=>this._queueRefresh())),this._queueRefresh(!0)}get _width(){var e;return((e=this._optionsService.options.overviewRuler)==null?void 0:e.width)||0}_refreshDrawConstants(){let e=Math.floor((this._canvas.width-1)/3),i=Math.ceil((this._canvas.width-1)/3);oa.full=this._canvas.width,oa.left=e,oa.center=i,oa.right=e,this._refreshDrawHeightConstants(),Du.full=1,Du.left=1,Du.center=1+oa.left,Du.right=1+oa.left+oa.center}_refreshDrawHeightConstants(){lr.full=Math.round(2*this._coreBrowserService.dpr);let e=this._canvas.height/this._bufferService.buffer.lines.length,i=Math.round(Math.max(Math.min(e,12),6)*this._coreBrowserService.dpr);lr.left=i,lr.center=i,lr.right=i}_refreshColorZonePadding(){this._colorZoneStore.setPadding({full:Math.floor(this._bufferService.buffers.active.lines.length/(this._canvas.height-1)*lr.full),left:Math.floor(this._bufferService.buffers.active.lines.length/(this._canvas.height-1)*lr.left),center:Math.floor(this._bufferService.buffers.active.lines.length/(this._canvas.height-1)*lr.center),right:Math.floor(this._bufferService.buffers.active.lines.length/(this._canvas.height-1)*lr.right)}),this._lastKnownBufferLength=this._bufferService.buffers.normal.lines.length}_refreshCanvasDimensions(){this._canvas.style.width=`${this._width}px`,this._canvas.width=Math.round(this._width*this._coreBrowserService.dpr),this._canvas.style.height=`${this._screenElement.clientHeight}px`,this._canvas.height=Math.round(this._screenElement.clientHeight*this._coreBrowserService.dpr),this._refreshDrawConstants(),this._refreshColorZonePadding()}_refreshDecorations(){this._shouldUpdateDimensions&&this._refreshCanvasDimensions(),this._ctx.clearRect(0,0,this._canvas.width,this._canvas.height),this._colorZoneStore.clear();for(let i of this._decorationService.decorations)this._colorZoneStore.addDecoration(i);this._ctx.lineWidth=1,this._renderRulerOutline();let e=this._colorZoneStore.zones;for(let i of e)i.position!=="full"&&this._renderColorZone(i);for(let i of e)i.position==="full"&&this._renderColorZone(i);this._shouldUpdateDimensions=!1,this._shouldUpdateAnchor=!1}_renderRulerOutline(){this._ctx.fillStyle=this._themeService.colors.overviewRulerBorder.css,this._ctx.fillRect(0,0,1,this._canvas.height),this._optionsService.rawOptions.overviewRuler.showTopBorder&&this._ctx.fillRect(1,0,this._canvas.width-1,1),this._optionsService.rawOptions.overviewRuler.showBottomBorder&&this._ctx.fillRect(1,this._canvas.height-1,this._canvas.width-1,this._canvas.height)}_renderColorZone(e){this._ctx.fillStyle=e.color,this._ctx.fillRect(Du[e.position||"full"],Math.round((this._canvas.height-1)*(e.startBufferLine/this._bufferService.buffers.active.lines.length)-lr[e.position||"full"]/2),oa[e.position||"full"],Math.round((this._canvas.height-1)*((e.endBufferLine-e.startBufferLine)/this._bufferService.buffers.active.lines.length)+lr[e.position||"full"]))}_queueRefresh(e,i){this._shouldUpdateDimensions=e||this._shouldUpdateDimensions,this._shouldUpdateAnchor=i||this._shouldUpdateAnchor,this._animationFrame===void 0&&(this._animationFrame=this._coreBrowserService.window.requestAnimationFrame(()=>{this._refreshDecorations(),this._animationFrame=void 0}))}};Kg=Ut([be(2,yn),be(3,Sd),be(4,ko),be(5,bn),be(6,Ch),be(7,Co)],Kg);var ce;(t=>(t.NUL="\0",t.SOH="",t.STX="",t.ETX="",t.EOT="",t.ENQ="",t.ACK="",t.BEL="\x07",t.BS="\b",t.HT=" ",t.LF=` +`,t.VT="\v",t.FF="\f",t.CR="\r",t.SO="",t.SI="",t.DLE="",t.DC1="",t.DC2="",t.DC3="",t.DC4="",t.NAK="",t.SYN="",t.ETB="",t.CAN="",t.EM="",t.SUB="",t.ESC="\x1B",t.FS="",t.GS="",t.RS="",t.US="",t.SP=" ",t.DEL=""))(ce||(ce={}));var ig;(t=>(t.PAD="€",t.HOP="",t.BPH="‚",t.NBH="ƒ",t.IND="„",t.NEL="…",t.SSA="†",t.ESA="‡",t.HTS="ˆ",t.HTJ="‰",t.VTS="Š",t.PLD="‹",t.PLU="Œ",t.RI="",t.SS2="Ž",t.SS3="",t.DCS="",t.PU1="‘",t.PU2="’",t.STS="“",t.CCH="”",t.MW="•",t.SPA="–",t.EPA="—",t.SOS="˜",t.SGCI="™",t.SCI="š",t.CSI="›",t.ST="œ",t.OSC="",t.PM="ž",t.APC="Ÿ"))(ig||(ig={}));var G6;(t=>t.ST=`${ce.ESC}\\`)(G6||(G6={}));var dS=class{constructor(e,i,n,s,r,o){this._textarea=e,this._compositionView=i,this._bufferService=n,this._optionsService=s,this._coreService=r,this._renderService=o,this._isComposing=!1,this._isSendingComposition=!1,this._compositionPosition={start:0,end:0},this._dataAlreadySent=""}get isComposing(){return this._isComposing}compositionstart(){this._isComposing=!0,this._compositionPosition.start=this._textarea.value.length,this._compositionView.textContent="",this._dataAlreadySent="",this._compositionView.classList.add("active")}compositionupdate(e){this._compositionView.textContent=e.data,this.updateCompositionElements(),setTimeout(()=>{this._compositionPosition.end=this._textarea.value.length},0)}compositionend(){this._finalizeComposition(!0)}keydown(e){if(this._isComposing||this._isSendingComposition){if(e.keyCode===20||e.keyCode===229||e.keyCode===16||e.keyCode===17||e.keyCode===18)return!1;this._finalizeComposition(!1)}return e.keyCode===229?(this._handleAnyTextareaChanges(),!1):!0}_finalizeComposition(e){if(this._compositionView.classList.remove("active"),this._isComposing=!1,e){let i={start:this._compositionPosition.start,end:this._compositionPosition.end};this._isSendingComposition=!0,setTimeout(()=>{if(this._isSendingComposition){this._isSendingComposition=!1;let n;i.start+=this._dataAlreadySent.length,this._isComposing?n=this._textarea.value.substring(i.start,this._compositionPosition.start):n=this._textarea.value.substring(i.start),n.length>0&&this._coreService.triggerDataEvent(n,!0)}},0)}else{this._isSendingComposition=!1;let i=this._textarea.value.substring(this._compositionPosition.start,this._compositionPosition.end);this._coreService.triggerDataEvent(i,!0)}}_handleAnyTextareaChanges(){let e=this._textarea.value;setTimeout(()=>{if(!this._isComposing){let i=this._textarea.value,n=i.replace(e,"");this._dataAlreadySent=n,i.length>e.length?this._coreService.triggerDataEvent(n,!0):i.lengththis.updateCompositionElements(!0),0)}}};dS=Ut([be(2,yn),be(3,bn),be(4,$l),be(5,ko)],dS);var Ci=0,ki=0,Ti=0,Zt=0,lR={css:"#00000000",rgba:0},ci;(t=>{function e(s,r,o,l){return l!==void 0?`#${nl(s)}${nl(r)}${nl(o)}${nl(l)}`:`#${nl(s)}${nl(r)}${nl(o)}`}t.toCss=e;function i(s,r,o,l=255){return(s<<24|r<<16|o<<8|l)>>>0}t.toRgba=i;function n(s,r,o,l){return{css:t.toCss(s,r,o,l),rgba:t.toRgba(s,r,o,l)}}t.toColor=n})(ci||(ci={}));var Pt;(t=>{function e(c,u){if(Zt=(u.rgba&255)/255,Zt===1)return{css:u.css,rgba:u.rgba};let d=u.rgba>>24&255,p=u.rgba>>16&255,g=u.rgba>>8&255,O=c.rgba>>24&255,_=c.rgba>>16&255,b=c.rgba>>8&255;Ci=O+Math.round((d-O)*Zt),ki=_+Math.round((p-_)*Zt),Ti=b+Math.round((g-b)*Zt);let x=ci.toCss(Ci,ki,Ti),w=ci.toRgba(Ci,ki,Ti);return{css:x,rgba:w}}t.blend=e;function i(c){return(c.rgba&255)===255}t.isOpaque=i;function n(c,u,d){let p=ng.ensureContrastRatio(c.rgba,u.rgba,d);if(p)return ci.toColor(p>>24&255,p>>16&255,p>>8&255)}t.ensureContrastRatio=n;function s(c){let u=(c.rgba|255)>>>0;return[Ci,ki,Ti]=ng.toChannels(u),{css:ci.toCss(Ci,ki,Ti),rgba:u}}t.opaque=s;function r(c,u){return Zt=Math.round(u*255),[Ci,ki,Ti]=ng.toChannels(c.rgba),{css:ci.toCss(Ci,ki,Ti,Zt),rgba:ci.toRgba(Ci,ki,Ti,Zt)}}t.opacity=r;function o(c,u){return Zt=c.rgba&255,r(c,Zt*u/255)}t.multiplyOpacity=o;function l(c){return[c.rgba>>24&255,c.rgba>>16&255,c.rgba>>8&255]}t.toColorRGB=l})(Pt||(Pt={}));var Nt;(t=>{let e,i;try{let s=document.createElement("canvas");s.width=1,s.height=1;let r=s.getContext("2d",{willReadFrequently:!0});r&&(e=r,e.globalCompositeOperation="copy",i=e.createLinearGradient(0,0,1,1))}catch{}function n(s){if(s.match(/#[\da-f]{3,8}/i))switch(s.length){case 4:return Ci=parseInt(s.slice(1,2).repeat(2),16),ki=parseInt(s.slice(2,3).repeat(2),16),Ti=parseInt(s.slice(3,4).repeat(2),16),ci.toColor(Ci,ki,Ti);case 5:return Ci=parseInt(s.slice(1,2).repeat(2),16),ki=parseInt(s.slice(2,3).repeat(2),16),Ti=parseInt(s.slice(3,4).repeat(2),16),Zt=parseInt(s.slice(4,5).repeat(2),16),ci.toColor(Ci,ki,Ti,Zt);case 7:return{css:s,rgba:(parseInt(s.slice(1),16)<<8|255)>>>0};case 9:return{css:s,rgba:parseInt(s.slice(1),16)>>>0}}let r=s.match(/rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(,\s*(0|1|\d?\.(\d+))\s*)?\)/);if(r)return Ci=parseInt(r[1]),ki=parseInt(r[2]),Ti=parseInt(r[3]),Zt=Math.round((r[5]===void 0?1:parseFloat(r[5]))*255),ci.toColor(Ci,ki,Ti,Zt);if(!e||!i)throw new Error("css.toColor: Unsupported css format");if(e.fillStyle=i,e.fillStyle=s,typeof e.fillStyle!="string")throw new Error("css.toColor: Unsupported css format");if(e.fillRect(0,0,1,1),[Ci,ki,Ti,Zt]=e.getImageData(0,0,1,1).data,Zt!==255)throw new Error("css.toColor: Unsupported css format");return{rgba:ci.toRgba(Ci,ki,Ti,Zt),css:s}}t.toColor=n})(Nt||(Nt={}));var fn;(t=>{function e(n){return i(n>>16&255,n>>8&255,n&255)}t.relativeLuminance=e;function i(n,s,r){let o=n/255,l=s/255,c=r/255,u=o<=.03928?o/12.92:Math.pow((o+.055)/1.055,2.4),d=l<=.03928?l/12.92:Math.pow((l+.055)/1.055,2.4),p=c<=.03928?c/12.92:Math.pow((c+.055)/1.055,2.4);return u*.2126+d*.7152+p*.0722}t.relativeLuminance2=i})(fn||(fn={}));var ng;(t=>{function e(o,l){if(Zt=(l&255)/255,Zt===1)return l;let c=l>>24&255,u=l>>16&255,d=l>>8&255,p=o>>24&255,g=o>>16&255,O=o>>8&255;return Ci=p+Math.round((c-p)*Zt),ki=g+Math.round((u-g)*Zt),Ti=O+Math.round((d-O)*Zt),ci.toRgba(Ci,ki,Ti)}t.blend=e;function i(o,l,c){let u=fn.relativeLuminance(o>>8),d=fn.relativeLuminance(l>>8);if(ro(u,d)>8));if(_>8));return _>x?O:b}return O}let p=s(o,l,c),g=ro(u,fn.relativeLuminance(p>>8));if(g>8));return g>_?p:O}return p}}t.ensureContrastRatio=i;function n(o,l,c){let u=o>>24&255,d=o>>16&255,p=o>>8&255,g=l>>24&255,O=l>>16&255,_=l>>8&255,b=ro(fn.relativeLuminance2(g,O,_),fn.relativeLuminance2(u,d,p));for(;b0||O>0||_>0);)g-=Math.max(0,Math.ceil(g*.1)),O-=Math.max(0,Math.ceil(O*.1)),_-=Math.max(0,Math.ceil(_*.1)),b=ro(fn.relativeLuminance2(g,O,_),fn.relativeLuminance2(u,d,p));return(g<<24|O<<16|_<<8|255)>>>0}t.reduceLuminance=n;function s(o,l,c){let u=o>>24&255,d=o>>16&255,p=o>>8&255,g=l>>24&255,O=l>>16&255,_=l>>8&255,b=ro(fn.relativeLuminance2(g,O,_),fn.relativeLuminance2(u,d,p));for(;b>>0}t.increaseLuminance=s;function r(o){return[o>>24&255,o>>16&255,o>>8&255,o&255]}t.toChannels=r})(ng||(ng={}));function nl(t){let e=t.toString(16);return e.length<2?"0"+e:e}function ro(t,e){return t1){let d=this._getJoinedRanges(n,o,r,e,s);for(let p=0;p1){let u=this._getJoinedRanges(n,o,r,e,s);for(let d=0;d=U,H=j,F=this._workCell;if(O.length>0&&j===O[0][0]&&Z){let Le=O.shift(),as=this._isCellInSelection(Le[0],i);for(T=Le[0]+1;T=Le[1]),Z?(D=!0,F=new tse(this._workCell,e.translateToString(!0,Le[0],Le[1]),Le[1]-Le[0]),H=Le[1]-1,$=F.getWidth()):U=Le[1]}let M=this._isCellInSelection(j,i),I=n&&j===o,K=B&&j>=d&&j<=p,L=!1;this._decorationService.forEachDecorationAtCell(j,i,void 0,Le=>{L=!0});let ue=F.getChars()||ya;if(ue===" "&&(F.isUnderline()||F.isOverline())&&(ue=" "),J=$*c-u.get(ue,F.isBold(),F.isItalic()),!x)x=this._document.createElement("span");else if(w&&(M&&q||!M&&!q&&F.bg===A)&&(M&&q&&_.selectionForeground||F.fg===Q)&&F.extended.ext===E&&K===N&&J===z&&!I&&!D&&!L&&Z){F.isInvisible()?k+=ya:k+=ue,w++;continue}else w&&(x.textContent=k),x=this._document.createElement("span"),w=0,k="";if(A=F.bg,Q=F.fg,E=F.extended.ext,N=K,z=J,q=M,D&&o>=j&&o<=H&&(o=j),!this._coreService.isCursorHidden&&I&&this._coreService.isCursorInitialized){if(R.push("xterm-cursor"),this._coreBrowserService.isFocused)l&&R.push("xterm-cursor-blink"),R.push(s==="bar"?"xterm-cursor-bar":s==="underline"?"xterm-cursor-underline":"xterm-cursor-block");else if(r)switch(r){case"outline":R.push("xterm-cursor-outline");break;case"block":R.push("xterm-cursor-block");break;case"bar":R.push("xterm-cursor-bar");break;case"underline":R.push("xterm-cursor-underline");break}}if(F.isBold()&&R.push("xterm-bold"),F.isItalic()&&R.push("xterm-italic"),F.isDim()&&R.push("xterm-dim"),F.isInvisible()?k=ya:k=F.getChars()||ya,F.isUnderline()&&(R.push(`xterm-underline-${F.extended.underlineStyle}`),k===" "&&(k=" "),!F.isUnderlineColorDefault()))if(F.isUnderlineColorRGB())x.style.textDecorationColor=`rgb(${bd.toColorRGB(F.getUnderlineColor()).join(",")})`;else{let Le=F.getUnderlineColor();this._optionsService.rawOptions.drawBoldTextInBrightColors&&F.isBold()&&Le<8&&(Le+=8),x.style.textDecorationColor=_.ansi[Le].css}F.isOverline()&&(R.push("xterm-overline"),k===" "&&(k=" ")),F.isStrikethrough()&&R.push("xterm-strikethrough"),K&&(x.style.textDecoration="underline");let he=F.getFgColor(),fe=F.getFgColorMode(),Oe=F.getBgColor(),Ce=F.getBgColorMode(),ye=!!F.isInverse();if(ye){let Le=he;he=Oe,Oe=Le;let as=fe;fe=Ce,Ce=as}let nt,Qt,Yt=!1;this._decorationService.forEachDecorationAtCell(j,i,void 0,Le=>{Le.options.layer!=="top"&&Yt||(Le.backgroundColorRGB&&(Ce=50331648,Oe=Le.backgroundColorRGB.rgba>>8&16777215,nt=Le.backgroundColorRGB),Le.foregroundColorRGB&&(fe=50331648,he=Le.foregroundColorRGB.rgba>>8&16777215,Qt=Le.foregroundColorRGB),Yt=Le.options.layer==="top")}),!Yt&&M&&(nt=this._coreBrowserService.isFocused?_.selectionBackgroundOpaque:_.selectionInactiveBackgroundOpaque,Oe=nt.rgba>>8&16777215,Ce=50331648,Yt=!0,_.selectionForeground&&(fe=50331648,he=_.selectionForeground.rgba>>8&16777215,Qt=_.selectionForeground)),Yt&&R.push("xterm-decoration-top");let ei;switch(Ce){case 16777216:case 33554432:ei=_.ansi[Oe],R.push(`xterm-bg-${Oe}`);break;case 50331648:ei=ci.toColor(Oe>>16,Oe>>8&255,Oe&255),this._addStyle(x,`background-color:#${cR((Oe>>>0).toString(16),"0",6)}`);break;case 0:default:ye?(ei=_.foreground,R.push("xterm-bg-257")):ei=_.background}switch(nt||F.isDim()&&(nt=Pt.multiplyOpacity(ei,.5)),fe){case 16777216:case 33554432:F.isBold()&&he<8&&this._optionsService.rawOptions.drawBoldTextInBrightColors&&(he+=8),this._applyMinimumContrast(x,ei,_.ansi[he],F,nt,void 0)||R.push(`xterm-fg-${he}`);break;case 50331648:let Le=ci.toColor(he>>16&255,he>>8&255,he&255);this._applyMinimumContrast(x,ei,Le,F,nt,Qt)||this._addStyle(x,`color:#${cR(he.toString(16),"0",6)}`);break;case 0:default:this._applyMinimumContrast(x,ei,_.foreground,F,nt,Qt)||ye&&R.push("xterm-fg-257")}R.length&&(x.className=R.join(" "),R.length=0),!I&&!D&&!L&&Z?w++:x.textContent=k,J!==this.defaultSpacing&&(x.style.letterSpacing=`${J}px`),g.push(x),j=H}return x&&w&&(x.textContent=k),g}_applyMinimumContrast(e,i,n,s,r,o){if(this._optionsService.rawOptions.minimumContrastRatio===1||sse(s.getCode()))return!1;let l=this._getContrastCache(s),c;if(!r&&!o&&(c=l.getColor(i.rgba,n.rgba)),c===void 0){let u=this._optionsService.rawOptions.minimumContrastRatio/(s.isDim()?2:1);c=Pt.ensureContrastRatio(r||i,o||n,u),l.setColor((r||i).rgba,(o||n).rgba,c??null)}return c?(this._addStyle(e,`color:${c.css}`),!0):!1}_getContrastCache(e){return e.isDim()?this._themeService.colors.halfContrastCache:this._themeService.colors.contrastCache}_addStyle(e,i){e.setAttribute("style",`${e.getAttribute("style")||""}${i};`)}_isCellInSelection(e,i){let n=this._selectionStart,s=this._selectionEnd;return!n||!s?!1:this._columnSelectMode?n[0]<=s[0]?e>=n[0]&&i>=n[1]&&e=n[1]&&e>=s[0]&&i<=s[1]:i>n[1]&&i=n[0]&&e=n[0]}};pS=Ut([be(1,Q6),be(2,bn),be(3,Co),be(4,$l),be(5,Sd),be(6,Ch)],pS);function cR(t,e,i){for(;t.length0&&(this._flat[s]=l),l}let r=e;i&&(r+="B"),n&&(r+="I");let o=this._holey.get(r);if(o===void 0){let l=0;i&&(l|=1),n&&(l|=2),o=this._measure(e,l),o>0&&this._holey.set(r,o)}return o}_measure(e,i){let n=this._measureElements[i];return n.textContent=e.repeat(32),n.offsetWidth/32}},ase=class{constructor(){this.clear()}clear(){this.hasSelection=!1,this.columnSelectMode=!1,this.viewportStartRow=0,this.viewportEndRow=0,this.viewportCappedStartRow=0,this.viewportCappedEndRow=0,this.startCol=0,this.endCol=0,this.selectionStart=void 0,this.selectionEnd=void 0}update(e,i,n,s=!1){if(this.selectionStart=i,this.selectionEnd=n,!i||!n||i[0]===n[0]&&i[1]===n[1]){this.clear();return}let r=e.buffers.active.ydisp,o=i[1]-r,l=n[1]-r,c=Math.max(o,0),u=Math.min(l,e.rows-1);if(c>=e.rows||u<0){this.clear();return}this.hasSelection=!0,this.columnSelectMode=s,this.viewportStartRow=o,this.viewportEndRow=l,this.viewportCappedStartRow=c,this.viewportCappedEndRow=u,this.startCol=i[0],this.endCol=n[0]}isCellSelected(e,i,n){return this.hasSelection?(n-=e.buffer.active.viewportY,this.columnSelectMode?this.startCol<=this.endCol?i>=this.startCol&&n>=this.viewportCappedStartRow&&i=this.viewportCappedStartRow&&i>=this.endCol&&n<=this.viewportCappedEndRow:n>this.viewportStartRow&&n=this.startCol&&i=this.startCol):!1}};function lse(){return new ase}var Ny="xterm-dom-renderer-owner-",vs="xterm-rows",Cm="xterm-fg-",hR="xterm-bg-",Bu="xterm-focus",km="xterm-selection",cse=1,mS=class extends Ue{constructor(e,i,n,s,r,o,l,c,u,d,p,g,O,_){super(),this._terminal=e,this._document=i,this._element=n,this._screenElement=s,this._viewportElement=r,this._helperContainer=o,this._linkifier2=l,this._charSizeService=u,this._optionsService=d,this._bufferService=p,this._coreService=g,this._coreBrowserService=O,this._themeService=_,this._terminalClass=cse++,this._rowElements=[],this._selectionRenderModel=lse(),this.onRequestRedraw=this._register(new me).event,this._rowContainer=this._document.createElement("div"),this._rowContainer.classList.add(vs),this._rowContainer.style.lineHeight="normal",this._rowContainer.setAttribute("aria-hidden","true"),this._refreshRowElements(this._bufferService.cols,this._bufferService.rows),this._selectionContainer=this._document.createElement("div"),this._selectionContainer.classList.add(km),this._selectionContainer.setAttribute("aria-hidden","true"),this.dimensions=rse(),this._updateDimensions(),this._register(this._optionsService.onOptionChange(()=>this._handleOptionsChanged())),this._register(this._themeService.onChangeColors(b=>this._injectCss(b))),this._injectCss(this._themeService.colors),this._rowFactory=c.createInstance(pS,document),this._element.classList.add(Ny+this._terminalClass),this._screenElement.appendChild(this._rowContainer),this._screenElement.appendChild(this._selectionContainer),this._register(this._linkifier2.onShowLinkUnderline(b=>this._handleLinkHover(b))),this._register(this._linkifier2.onHideLinkUnderline(b=>this._handleLinkLeave(b))),this._register(Bt(()=>{this._element.classList.remove(Ny+this._terminalClass),this._rowContainer.remove(),this._selectionContainer.remove(),this._widthCache.dispose(),this._themeStyleElement.remove(),this._dimensionsStyleElement.remove()})),this._widthCache=new ose(this._document,this._helperContainer),this._widthCache.setFont(this._optionsService.rawOptions.fontFamily,this._optionsService.rawOptions.fontSize,this._optionsService.rawOptions.fontWeight,this._optionsService.rawOptions.fontWeightBold),this._setDefaultSpacing()}_updateDimensions(){let e=this._coreBrowserService.dpr;this.dimensions.device.char.width=this._charSizeService.width*e,this.dimensions.device.char.height=Math.ceil(this._charSizeService.height*e),this.dimensions.device.cell.width=this.dimensions.device.char.width+Math.round(this._optionsService.rawOptions.letterSpacing),this.dimensions.device.cell.height=Math.floor(this.dimensions.device.char.height*this._optionsService.rawOptions.lineHeight),this.dimensions.device.char.left=0,this.dimensions.device.char.top=0,this.dimensions.device.canvas.width=this.dimensions.device.cell.width*this._bufferService.cols,this.dimensions.device.canvas.height=this.dimensions.device.cell.height*this._bufferService.rows,this.dimensions.css.canvas.width=Math.round(this.dimensions.device.canvas.width/e),this.dimensions.css.canvas.height=Math.round(this.dimensions.device.canvas.height/e),this.dimensions.css.cell.width=this.dimensions.css.canvas.width/this._bufferService.cols,this.dimensions.css.cell.height=this.dimensions.css.canvas.height/this._bufferService.rows;for(let n of this._rowElements)n.style.width=`${this.dimensions.css.canvas.width}px`,n.style.height=`${this.dimensions.css.cell.height}px`,n.style.lineHeight=`${this.dimensions.css.cell.height}px`,n.style.overflow="hidden";this._dimensionsStyleElement||(this._dimensionsStyleElement=this._document.createElement("style"),this._screenElement.appendChild(this._dimensionsStyleElement));let i=`${this._terminalSelector} .${vs} span { display: inline-block; height: 100%; vertical-align: top;}`;this._dimensionsStyleElement.textContent=i,this._selectionContainer.style.height=this._viewportElement.style.height,this._screenElement.style.width=`${this.dimensions.css.canvas.width}px`,this._screenElement.style.height=`${this.dimensions.css.canvas.height}px`}_injectCss(e){this._themeStyleElement||(this._themeStyleElement=this._document.createElement("style"),this._screenElement.appendChild(this._themeStyleElement));let i=`${this._terminalSelector} .${vs} { pointer-events: none; color: ${e.foreground.css}; font-family: ${this._optionsService.rawOptions.fontFamily}; font-size: ${this._optionsService.rawOptions.fontSize}px; font-kerning: none; white-space: pre}`;i+=`${this._terminalSelector} .${vs} .xterm-dim { color: ${Pt.multiplyOpacity(e.foreground,.5).css};}`,i+=`${this._terminalSelector} span:not(.xterm-bold) { font-weight: ${this._optionsService.rawOptions.fontWeight};}${this._terminalSelector} span.xterm-bold { font-weight: ${this._optionsService.rawOptions.fontWeightBold};}${this._terminalSelector} span.xterm-italic { font-style: italic;}`;let n=`blink_underline_${this._terminalClass}`,s=`blink_bar_${this._terminalClass}`,r=`blink_block_${this._terminalClass}`;i+=`@keyframes ${n} { 50% { border-bottom-style: hidden; }}`,i+=`@keyframes ${s} { 50% { box-shadow: none; }}`,i+=`@keyframes ${r} { 0% { background-color: ${e.cursor.css}; color: ${e.cursorAccent.css}; } 50% { background-color: inherit; color: ${e.cursor.css}; }}`,i+=`${this._terminalSelector} .${vs}.${Bu} .xterm-cursor.xterm-cursor-blink.xterm-cursor-underline { animation: ${n} 1s step-end infinite;}${this._terminalSelector} .${vs}.${Bu} .xterm-cursor.xterm-cursor-blink.xterm-cursor-bar { animation: ${s} 1s step-end infinite;}${this._terminalSelector} .${vs}.${Bu} .xterm-cursor.xterm-cursor-blink.xterm-cursor-block { animation: ${r} 1s step-end infinite;}${this._terminalSelector} .${vs} .xterm-cursor.xterm-cursor-block { background-color: ${e.cursor.css}; color: ${e.cursorAccent.css};}${this._terminalSelector} .${vs} .xterm-cursor.xterm-cursor-block:not(.xterm-cursor-blink) { background-color: ${e.cursor.css} !important; color: ${e.cursorAccent.css} !important;}${this._terminalSelector} .${vs} .xterm-cursor.xterm-cursor-outline { outline: 1px solid ${e.cursor.css}; outline-offset: -1px;}${this._terminalSelector} .${vs} .xterm-cursor.xterm-cursor-bar { box-shadow: ${this._optionsService.rawOptions.cursorWidth}px 0 0 ${e.cursor.css} inset;}${this._terminalSelector} .${vs} .xterm-cursor.xterm-cursor-underline { border-bottom: 1px ${e.cursor.css}; border-bottom-style: solid; height: calc(100% - 1px);}`,i+=`${this._terminalSelector} .${km} { position: absolute; top: 0; left: 0; z-index: 1; pointer-events: none;}${this._terminalSelector}.focus .${km} div { position: absolute; background-color: ${e.selectionBackgroundOpaque.css};}${this._terminalSelector} .${km} div { position: absolute; background-color: ${e.selectionInactiveBackgroundOpaque.css};}`;for(let[o,l]of e.ansi.entries())i+=`${this._terminalSelector} .${Cm}${o} { color: ${l.css}; }${this._terminalSelector} .${Cm}${o}.xterm-dim { color: ${Pt.multiplyOpacity(l,.5).css}; }${this._terminalSelector} .${hR}${o} { background-color: ${l.css}; }`;i+=`${this._terminalSelector} .${Cm}257 { color: ${Pt.opaque(e.background).css}; }${this._terminalSelector} .${Cm}257.xterm-dim { color: ${Pt.multiplyOpacity(Pt.opaque(e.background),.5).css}; }${this._terminalSelector} .${hR}257 { background-color: ${e.foreground.css}; }`,this._themeStyleElement.textContent=i}_setDefaultSpacing(){let e=this.dimensions.css.cell.width-this._widthCache.get("W",!1,!1);this._rowContainer.style.letterSpacing=`${e}px`,this._rowFactory.defaultSpacing=e}handleDevicePixelRatioChange(){this._updateDimensions(),this._widthCache.clear(),this._setDefaultSpacing()}_refreshRowElements(e,i){for(let n=this._rowElements.length;n<=i;n++){let s=this._document.createElement("div");this._rowContainer.appendChild(s),this._rowElements.push(s)}for(;this._rowElements.length>i;)this._rowContainer.removeChild(this._rowElements.pop())}handleResize(e,i){this._refreshRowElements(e,i),this._updateDimensions(),this.handleSelectionChanged(this._selectionRenderModel.selectionStart,this._selectionRenderModel.selectionEnd,this._selectionRenderModel.columnSelectMode)}handleCharSizeChanged(){this._updateDimensions(),this._widthCache.clear(),this._setDefaultSpacing()}handleBlur(){this._rowContainer.classList.remove(Bu),this.renderRows(0,this._bufferService.rows-1)}handleFocus(){this._rowContainer.classList.add(Bu),this.renderRows(this._bufferService.buffer.y,this._bufferService.buffer.y)}handleSelectionChanged(e,i,n){if(this._selectionContainer.replaceChildren(),this._rowFactory.handleSelectionChanged(e,i,n),this.renderRows(0,this._bufferService.rows-1),!e||!i||(this._selectionRenderModel.update(this._terminal,e,i,n),!this._selectionRenderModel.hasSelection))return;let s=this._selectionRenderModel.viewportStartRow,r=this._selectionRenderModel.viewportEndRow,o=this._selectionRenderModel.viewportCappedStartRow,l=this._selectionRenderModel.viewportCappedEndRow,c=this._document.createDocumentFragment();if(n){let u=e[0]>i[0];c.appendChild(this._createSelectionElement(o,u?i[0]:e[0],u?e[0]:i[0],l-o+1))}else{let u=s===o?e[0]:0,d=o===r?i[0]:this._bufferService.cols;c.appendChild(this._createSelectionElement(o,u,d));let p=l-o-1;if(c.appendChild(this._createSelectionElement(o+1,0,this._bufferService.cols,p)),o!==l){let g=r===l?i[0]:this._bufferService.cols;c.appendChild(this._createSelectionElement(l,0,g))}}this._selectionContainer.appendChild(c)}_createSelectionElement(e,i,n,s=1){let r=this._document.createElement("div"),o=i*this.dimensions.css.cell.width,l=this.dimensions.css.cell.width*(n-i);return o+l>this.dimensions.css.canvas.width&&(l=this.dimensions.css.canvas.width-o),r.style.height=`${s*this.dimensions.css.cell.height}px`,r.style.top=`${e*this.dimensions.css.cell.height}px`,r.style.left=`${o}px`,r.style.width=`${l}px`,r}handleCursorMove(){}_handleOptionsChanged(){this._updateDimensions(),this._injectCss(this._themeService.colors),this._widthCache.setFont(this._optionsService.rawOptions.fontFamily,this._optionsService.rawOptions.fontSize,this._optionsService.rawOptions.fontWeight,this._optionsService.rawOptions.fontWeightBold),this._setDefaultSpacing()}clear(){for(let e of this._rowElements)e.replaceChildren()}renderRows(e,i){let n=this._bufferService.buffer,s=n.ybase+n.y,r=Math.min(n.x,this._bufferService.cols-1),o=this._coreService.decPrivateModes.cursorBlink??this._optionsService.rawOptions.cursorBlink,l=this._coreService.decPrivateModes.cursorStyle??this._optionsService.rawOptions.cursorStyle,c=this._optionsService.rawOptions.cursorInactiveStyle;for(let u=e;u<=i;u++){let d=u+n.ydisp,p=this._rowElements[u],g=n.lines.get(d);if(!p||!g)break;p.replaceChildren(...this._rowFactory.createRow(g,d,d===s,l,c,r,o,this.dimensions.css.cell.width,this._widthCache,-1,-1))}}get _terminalSelector(){return`.${Ny}${this._terminalClass}`}_handleLinkHover(e){this._setCellUnderline(e.x1,e.x2,e.y1,e.y2,e.cols,!0)}_handleLinkLeave(e){this._setCellUnderline(e.x1,e.x2,e.y1,e.y2,e.cols,!1)}_setCellUnderline(e,i,n,s,r,o){n<0&&(e=0),s<0&&(i=0);let l=this._bufferService.rows-1;n=Math.max(Math.min(n,l),0),s=Math.max(Math.min(s,l),0),r=Math.min(r,this._bufferService.cols);let c=this._bufferService.buffer,u=c.ybase+c.y,d=Math.min(c.x,r-1),p=this._optionsService.rawOptions.cursorBlink,g=this._optionsService.rawOptions.cursorStyle,O=this._optionsService.rawOptions.cursorInactiveStyle;for(let _=n;_<=s;++_){let b=_+c.ydisp,x=this._rowElements[_],w=c.lines.get(b);if(!x||!w)break;x.replaceChildren(...this._rowFactory.createRow(w,b,b===u,g,O,d,p,this.dimensions.css.cell.width,this._widthCache,o?_===n?e:0:-1,o?(_===s?i:r)-1:-1))}}};mS=Ut([be(7,Ew),be(8,TO),be(9,bn),be(10,yn),be(11,$l),be(12,Co),be(13,Ch)],mS);var gS=class extends Ue{constructor(e,i,n){super(),this._optionsService=n,this.width=0,this.height=0,this._onCharSizeChange=this._register(new me),this.onCharSizeChange=this._onCharSizeChange.event;try{this._measureStrategy=this._register(new use(this._optionsService))}catch{this._measureStrategy=this._register(new hse(e,i,this._optionsService))}this._register(this._optionsService.onMultipleOptionChange(["fontFamily","fontSize"],()=>this.measure()))}get hasValidSize(){return this.width>0&&this.height>0}measure(){let e=this._measureStrategy.measure();(e.width!==this.width||e.height!==this.height)&&(this.width=e.width,this.height=e.height,this._onCharSizeChange.fire())}};gS=Ut([be(2,bn)],gS);var K6=class extends Ue{constructor(){super(...arguments),this._result={width:0,height:0}}_validateAndSet(t,e){t!==void 0&&t>0&&e!==void 0&&e>0&&(this._result.width=t,this._result.height=e)}},hse=class extends K6{constructor(t,e,i){super(),this._document=t,this._parentElement=e,this._optionsService=i,this._measureElement=this._document.createElement("span"),this._measureElement.classList.add("xterm-char-measure-element"),this._measureElement.textContent="W".repeat(32),this._measureElement.setAttribute("aria-hidden","true"),this._measureElement.style.whiteSpace="pre",this._measureElement.style.fontKerning="none",this._parentElement.appendChild(this._measureElement)}measure(){return this._measureElement.style.fontFamily=this._optionsService.rawOptions.fontFamily,this._measureElement.style.fontSize=`${this._optionsService.rawOptions.fontSize}px`,this._validateAndSet(Number(this._measureElement.offsetWidth)/32,Number(this._measureElement.offsetHeight)),this._result}},use=class extends K6{constructor(e){super(),this._optionsService=e,this._canvas=new OffscreenCanvas(100,100),this._ctx=this._canvas.getContext("2d");let i=this._ctx.measureText("W");if(!("width"in i&&"fontBoundingBoxAscent"in i&&"fontBoundingBoxDescent"in i))throw new Error("Required font metrics not supported")}measure(){this._ctx.font=`${this._optionsService.rawOptions.fontSize}px ${this._optionsService.rawOptions.fontFamily}`;let e=this._ctx.measureText("W");return this._validateAndSet(e.width,e.fontBoundingBoxAscent+e.fontBoundingBoxDescent),this._result}},fse=class extends Ue{constructor(e,i,n){super(),this._textarea=e,this._window=i,this.mainDocument=n,this._isFocused=!1,this._cachedIsFocused=void 0,this._screenDprMonitor=this._register(new dse(this._window)),this._onDprChange=this._register(new me),this.onDprChange=this._onDprChange.event,this._onWindowChange=this._register(new me),this.onWindowChange=this._onWindowChange.event,this._register(this.onWindowChange(s=>this._screenDprMonitor.setWindow(s))),this._register(Gi.forward(this._screenDprMonitor.onDprChange,this._onDprChange)),this._register(Be(this._textarea,"focus",()=>this._isFocused=!0)),this._register(Be(this._textarea,"blur",()=>this._isFocused=!1))}get window(){return this._window}set window(e){this._window!==e&&(this._window=e,this._onWindowChange.fire(this._window))}get dpr(){return this.window.devicePixelRatio}get isFocused(){return this._cachedIsFocused===void 0&&(this._cachedIsFocused=this._isFocused&&this._textarea.ownerDocument.hasFocus(),queueMicrotask(()=>this._cachedIsFocused=void 0)),this._cachedIsFocused}},dse=class extends Ue{constructor(e){super(),this._parentWindow=e,this._windowResizeListener=this._register(new mh),this._onDprChange=this._register(new me),this.onDprChange=this._onDprChange.event,this._outerListener=()=>this._setDprAndFireIfDiffers(),this._currentDevicePixelRatio=this._parentWindow.devicePixelRatio,this._updateDpr(),this._setWindowResizeListener(),this._register(Bt(()=>this.clearListener()))}setWindow(e){this._parentWindow=e,this._setWindowResizeListener(),this._setDprAndFireIfDiffers()}_setWindowResizeListener(){this._windowResizeListener.value=Be(this._parentWindow,"resize",()=>this._setDprAndFireIfDiffers())}_setDprAndFireIfDiffers(){this._parentWindow.devicePixelRatio!==this._currentDevicePixelRatio&&this._onDprChange.fire(this._parentWindow.devicePixelRatio),this._updateDpr()}_updateDpr(){var e;this._outerListener&&((e=this._resolutionMediaMatchList)==null||e.removeListener(this._outerListener),this._currentDevicePixelRatio=this._parentWindow.devicePixelRatio,this._resolutionMediaMatchList=this._parentWindow.matchMedia(`screen and (resolution: ${this._parentWindow.devicePixelRatio}dppx)`),this._resolutionMediaMatchList.addListener(this._outerListener))}clearListener(){!this._resolutionMediaMatchList||!this._outerListener||(this._resolutionMediaMatchList.removeListener(this._outerListener),this._resolutionMediaMatchList=void 0,this._outerListener=void 0)}},pse=class extends Ue{constructor(){super(),this.linkProviders=[],this._register(Bt(()=>this.linkProviders.length=0))}registerLinkProvider(t){return this.linkProviders.push(t),{dispose:()=>{let e=this.linkProviders.indexOf(t);e!==-1&&this.linkProviders.splice(e,1)}}}};function $w(t,e,i){let n=i.getBoundingClientRect(),s=t.getComputedStyle(i),r=parseInt(s.getPropertyValue("padding-left")),o=parseInt(s.getPropertyValue("padding-top"));return[e.clientX-n.left-r,e.clientY-n.top-o]}function mse(t,e,i,n,s,r,o,l,c){if(!r)return;let u=$w(t,e,i);if(u)return u[0]=Math.ceil((u[0]+(c?o/2:0))/o),u[1]=Math.ceil(u[1]/l),u[0]=Math.min(Math.max(u[0],1),n+(c?1:0)),u[1]=Math.min(Math.max(u[1],1),s),u}var OS=class{constructor(e,i){this._renderService=e,this._charSizeService=i}getCoords(e,i,n,s,r){return mse(window,e,i,n,s,this._charSizeService.hasValidSize,this._renderService.dimensions.css.cell.width,this._renderService.dimensions.css.cell.height,r)}getMouseReportCoords(e,i){let n=$w(window,e,i);if(this._charSizeService.hasValidSize)return n[0]=Math.min(Math.max(n[0],0),this._renderService.dimensions.css.canvas.width-1),n[1]=Math.min(Math.max(n[1],0),this._renderService.dimensions.css.canvas.height-1),{col:Math.floor(n[0]/this._renderService.dimensions.css.cell.width),row:Math.floor(n[1]/this._renderService.dimensions.css.cell.height),x:Math.floor(n[0]),y:Math.floor(n[1])}}};OS=Ut([be(0,ko),be(1,TO)],OS);var gse=class{constructor(e,i){this._renderCallback=e,this._coreBrowserService=i,this._refreshCallbacks=[]}dispose(){this._animationFrame&&(this._coreBrowserService.window.cancelAnimationFrame(this._animationFrame),this._animationFrame=void 0)}addRefreshCallback(e){return this._refreshCallbacks.push(e),this._animationFrame||(this._animationFrame=this._coreBrowserService.window.requestAnimationFrame(()=>this._innerRefresh())),this._animationFrame}refresh(e,i,n){this._rowCount=n,e=e!==void 0?e:0,i=i!==void 0?i:this._rowCount-1,this._rowStart=this._rowStart!==void 0?Math.min(this._rowStart,e):e,this._rowEnd=this._rowEnd!==void 0?Math.max(this._rowEnd,i):i,!this._animationFrame&&(this._animationFrame=this._coreBrowserService.window.requestAnimationFrame(()=>this._innerRefresh()))}_innerRefresh(){if(this._animationFrame=void 0,this._rowStart===void 0||this._rowEnd===void 0||this._rowCount===void 0){this._runRefreshCallbacks();return}let e=Math.max(this._rowStart,0),i=Math.min(this._rowEnd,this._rowCount-1);this._rowStart=void 0,this._rowEnd=void 0,this._renderCallback(e,i),this._runRefreshCallbacks()}_runRefreshCallbacks(){for(let e of this._refreshCallbacks)e(0);this._refreshCallbacks=[]}},J6={};kie(J6,{getSafariVersion:()=>vse,isChromeOS:()=>nN,isFirefox:()=>eN,isIpad:()=>_se,isIphone:()=>yse,isLegacyEdge:()=>Ose,isLinux:()=>Nw,isMac:()=>eO,isNode:()=>AO,isSafari:()=>tN,isWindows:()=>iN});var AO=typeof process<"u"&&"title"in process,xd=AO?"node":navigator.userAgent,wd=AO?"node":navigator.platform,eN=xd.includes("Firefox"),Ose=xd.includes("Edge"),tN=/^((?!chrome|android).)*safari/i.test(xd);function vse(){if(!tN)return 0;let t=xd.match(/Version\/(\d+)/);return t===null||t.length<2?0:parseInt(t[1])}var eO=["Macintosh","MacIntel","MacPPC","Mac68K"].includes(wd),_se=wd==="iPad",yse=wd==="iPhone",iN=["Windows","Win16","Win32","WinCE"].includes(wd),Nw=wd.indexOf("Linux")>=0,nN=/\bCrOS\b/.test(xd),sN=class{constructor(){this._tasks=[],this._i=0}enqueue(t){this._tasks.push(t),this._start()}flush(){for(;this._is){n-e<-20&&console.warn(`task queue exceeded allotted deadline by ${Math.abs(Math.round(n-e))}ms`),this._start();return}n=s}this.clear()}},bse=class extends sN{_requestCallback(e){return setTimeout(()=>e(this._createDeadline(16)))}_cancelCallback(e){clearTimeout(e)}_createDeadline(e){let i=performance.now()+e;return{timeRemaining:()=>Math.max(0,i-performance.now())}}},Sse=class extends sN{_requestCallback(t){return requestIdleCallback(t)}_cancelCallback(t){cancelIdleCallback(t)}},tO=!AO&&"requestIdleCallback"in window?Sse:bse,xse=class{constructor(){this._queue=new tO}set(t){this._queue.clear(),this._queue.enqueue(t)}flush(){this._queue.flush()}},vS=class extends Ue{constructor(e,i,n,s,r,o,l,c,u){super(),this._rowCount=e,this._optionsService=n,this._charSizeService=s,this._coreService=r,this._coreBrowserService=c,this._renderer=this._register(new mh),this._pausedResizeTask=new xse,this._observerDisposable=this._register(new mh),this._isPaused=!1,this._needsFullRefresh=!1,this._isNextRenderRedrawOnly=!0,this._needsSelectionRefresh=!1,this._canvasWidth=0,this._canvasHeight=0,this._selectionState={start:void 0,end:void 0,columnSelectMode:!1},this._onDimensionsChange=this._register(new me),this.onDimensionsChange=this._onDimensionsChange.event,this._onRenderedViewportChange=this._register(new me),this.onRenderedViewportChange=this._onRenderedViewportChange.event,this._onRender=this._register(new me),this.onRender=this._onRender.event,this._onRefreshRequest=this._register(new me),this.onRefreshRequest=this._onRefreshRequest.event,this._renderDebouncer=new gse((d,p)=>this._renderRows(d,p),this._coreBrowserService),this._register(this._renderDebouncer),this._syncOutputHandler=new wse(this._coreBrowserService,this._coreService,()=>this._fullRefresh()),this._register(Bt(()=>this._syncOutputHandler.dispose())),this._register(this._coreBrowserService.onDprChange(()=>this.handleDevicePixelRatioChange())),this._register(l.onResize(()=>this._fullRefresh())),this._register(l.buffers.onBufferActivate(()=>{var d;return(d=this._renderer.value)==null?void 0:d.clear()})),this._register(this._optionsService.onOptionChange(()=>this._handleOptionsChanged())),this._register(this._charSizeService.onCharSizeChange(()=>this.handleCharSizeChanged())),this._register(o.onDecorationRegistered(()=>this._fullRefresh())),this._register(o.onDecorationRemoved(()=>this._fullRefresh())),this._register(this._optionsService.onMultipleOptionChange(["customGlyphs","drawBoldTextInBrightColors","letterSpacing","lineHeight","fontFamily","fontSize","fontWeight","fontWeightBold","minimumContrastRatio","rescaleOverlappingGlyphs"],()=>{this.clear(),this.handleResize(l.cols,l.rows),this._fullRefresh()})),this._register(this._optionsService.onMultipleOptionChange(["cursorBlink","cursorStyle"],()=>this.refreshRows(l.buffer.y,l.buffer.y,!0))),this._register(u.onChangeColors(()=>this._fullRefresh())),this._registerIntersectionObserver(this._coreBrowserService.window,i),this._register(this._coreBrowserService.onWindowChange(d=>this._registerIntersectionObserver(d,i)))}get dimensions(){return this._renderer.value.dimensions}_registerIntersectionObserver(e,i){if("IntersectionObserver"in e){let n=new e.IntersectionObserver(s=>this._handleIntersectionChange(s[s.length-1]),{threshold:0});n.observe(i),this._observerDisposable.value=Bt(()=>n.disconnect())}}_handleIntersectionChange(e){this._isPaused=e.isIntersecting===void 0?e.intersectionRatio===0:!e.isIntersecting,!this._isPaused&&!this._charSizeService.hasValidSize&&this._charSizeService.measure(),!this._isPaused&&this._needsFullRefresh&&(this._pausedResizeTask.flush(),this.refreshRows(0,this._rowCount-1),this._needsFullRefresh=!1)}refreshRows(e,i,n=!1){if(this._isPaused){this._needsFullRefresh=!0;return}if(this._coreService.decPrivateModes.synchronizedOutput){this._syncOutputHandler.bufferRows(e,i);return}let s=this._syncOutputHandler.flush();s&&(e=Math.min(e,s.start),i=Math.max(i,s.end)),n||(this._isNextRenderRedrawOnly=!1),this._renderDebouncer.refresh(e,i,this._rowCount)}_renderRows(e,i){if(this._renderer.value){if(this._coreService.decPrivateModes.synchronizedOutput){this._syncOutputHandler.bufferRows(e,i);return}e=Math.min(e,this._rowCount-1),i=Math.min(i,this._rowCount-1),this._renderer.value.renderRows(e,i),this._needsSelectionRefresh&&(this._renderer.value.handleSelectionChanged(this._selectionState.start,this._selectionState.end,this._selectionState.columnSelectMode),this._needsSelectionRefresh=!1),this._isNextRenderRedrawOnly||this._onRenderedViewportChange.fire({start:e,end:i}),this._onRender.fire({start:e,end:i}),this._isNextRenderRedrawOnly=!0}}resize(e,i){this._rowCount=i,this._fireOnCanvasResize()}_handleOptionsChanged(){this._renderer.value&&(this.refreshRows(0,this._rowCount-1),this._fireOnCanvasResize())}_fireOnCanvasResize(){this._renderer.value&&(this._renderer.value.dimensions.css.canvas.width===this._canvasWidth&&this._renderer.value.dimensions.css.canvas.height===this._canvasHeight||this._onDimensionsChange.fire(this._renderer.value.dimensions))}hasRenderer(){return!!this._renderer.value}setRenderer(e){this._renderer.value=e,this._renderer.value&&(this._renderer.value.onRequestRedraw(i=>this.refreshRows(i.start,i.end,!0)),this._needsSelectionRefresh=!0,this._fullRefresh())}addRefreshCallback(e){return this._renderDebouncer.addRefreshCallback(e)}_fullRefresh(){this._isPaused?this._needsFullRefresh=!0:this.refreshRows(0,this._rowCount-1)}clearTextureAtlas(){var e,i;this._renderer.value&&((i=(e=this._renderer.value).clearTextureAtlas)==null||i.call(e),this._fullRefresh())}handleDevicePixelRatioChange(){this._charSizeService.measure(),this._renderer.value&&(this._renderer.value.handleDevicePixelRatioChange(),this.refreshRows(0,this._rowCount-1))}handleResize(e,i){this._renderer.value&&(this._isPaused?this._pausedResizeTask.set(()=>{var n;return(n=this._renderer.value)==null?void 0:n.handleResize(e,i)}):this._renderer.value.handleResize(e,i),this._fullRefresh())}handleCharSizeChanged(){var e;(e=this._renderer.value)==null||e.handleCharSizeChanged()}handleBlur(){var e;(e=this._renderer.value)==null||e.handleBlur()}handleFocus(){var e;(e=this._renderer.value)==null||e.handleFocus()}handleSelectionChanged(e,i,n){var s;this._selectionState.start=e,this._selectionState.end=i,this._selectionState.columnSelectMode=n,(s=this._renderer.value)==null||s.handleSelectionChanged(e,i,n)}handleCursorMove(){var e;(e=this._renderer.value)==null||e.handleCursorMove()}clear(){var e;(e=this._renderer.value)==null||e.clear()}};vS=Ut([be(2,bn),be(3,TO),be(4,$l),be(5,Sd),be(6,yn),be(7,Co),be(8,Ch)],vS);var wse=class{constructor(t,e,i){this._coreBrowserService=t,this._coreService=e,this._onTimeout=i,this._start=0,this._end=0,this._isBuffering=!1}bufferRows(t,e){this._isBuffering?(this._start=Math.min(this._start,t),this._end=Math.max(this._end,e)):(this._start=t,this._end=e,this._isBuffering=!0),this._timeout===void 0&&(this._timeout=this._coreBrowserService.window.setTimeout(()=>{this._timeout=void 0,this._coreService.decPrivateModes.synchronizedOutput=!1,this._onTimeout()},1e3))}flush(){if(this._timeout!==void 0&&(this._coreBrowserService.window.clearTimeout(this._timeout),this._timeout=void 0),!this._isBuffering)return;let t={start:this._start,end:this._end};return this._isBuffering=!1,t}dispose(){this._timeout!==void 0&&(this._coreBrowserService.window.clearTimeout(this._timeout),this._timeout=void 0)}};function Cse(t,e,i,n){let s=i.buffer.x,r=i.buffer.y;if(!i.buffer.hasScrollback)return Ase(s,r,t,e,i,n)+EO(r,e,i,n)+Ese(s,r,t,e,i,n);let o;if(r===e)return o=s>t?"D":"C",id(Math.abs(s-t),td(o,n));o=r>e?"D":"C";let l=Math.abs(r-e),c=Tse(r>e?t:s,i)+(l-1)*i.cols+1+kse(r>e?s:t);return id(c,td(o,n))}function kse(t,e){return t-1}function Tse(t,e){return e.cols-t}function Ase(t,e,i,n,s,r){return EO(e,n,s,r).length===0?"":id(oN(t,e,t,e-Rl(e,s),!1,s).length,td("D",r))}function EO(t,e,i,n){let s=t-Rl(t,i),r=e-Rl(e,i),o=Math.abs(s-r)-Mse(t,e,i);return id(o,td(rN(t,e),n))}function Ese(t,e,i,n,s,r){let o;EO(e,n,s,r).length>0?o=n-Rl(n,s):o=e;let l=n,c=Pse(t,e,i,n,s,r);return id(oN(t,o,i,l,c==="C",s).length,td(c,r))}function Mse(t,e,i){var o;let n=0,s=t-Rl(t,i),r=e-Rl(e,i);for(let l=0;l=0&&t0?o=n-Rl(n,s):o=e,t=i&&oe?"A":"B"}function oN(t,e,i,n,s,r){let o=t,l=e,c="";for(;(o!==i||l!==n)&&l>=0&&lr.cols-1?(c+=r.buffer.translateBufferLineToString(l,!1,t,o),o=0,t=0,l++):!s&&o<0&&(c+=r.buffer.translateBufferLineToString(l,!1,0,t+1),o=r.cols-1,t=o,l--);return c+r.buffer.translateBufferLineToString(l,!1,t,o)}function td(t,e){let i=e?"O":"[";return ce.ESC+i+t}function id(t,e){t=Math.floor(t);let i="";for(let n=0;nthis._bufferService.cols?t%this._bufferService.cols===0?[this._bufferService.cols,this.selectionStart[1]+Math.floor(t/this._bufferService.cols)-1]:[t%this._bufferService.cols,this.selectionStart[1]+Math.floor(t/this._bufferService.cols)]:[t,this.selectionStart[1]]}if(this.selectionStartLength&&this.selectionEnd[1]===this.selectionStart[1]){let t=this.selectionStart[0]+this.selectionStartLength;return t>this._bufferService.cols?[t%this._bufferService.cols,this.selectionStart[1]+Math.floor(t/this._bufferService.cols)]:[Math.max(t,this.selectionEnd[0]),this.selectionEnd[1]]}return this.selectionEnd}}areSelectionValuesReversed(){let t=this.selectionStart,e=this.selectionEnd;return!t||!e?!1:t[1]>e[1]||t[1]===e[1]&&t[0]>e[0]}handleTrim(t){return this.selectionStart&&(this.selectionStart[1]-=t),this.selectionEnd&&(this.selectionEnd[1]-=t),this.selectionEnd&&this.selectionEnd[1]<0?(this.clearSelection(),!0):(this.selectionStart&&this.selectionStart[1]<0&&(this.selectionStart[1]=0),!1)}};function uR(t,e){if(t.start.y>t.end.y)throw new Error(`Buffer range end (${t.end.x}, ${t.end.y}) cannot be before start (${t.start.x}, ${t.start.y})`);return e*(t.end.y-t.start.y)+(t.end.x-t.start.x+1)}var zy=50,Qse=15,Lse=50,Dse=500,Bse=" ",$se=new RegExp(Bse,"g"),_S=class extends Ue{constructor(e,i,n,s,r,o,l,c,u){super(),this._element=e,this._screenElement=i,this._linkifier=n,this._bufferService=s,this._coreService=r,this._mouseService=o,this._optionsService=l,this._renderService=c,this._coreBrowserService=u,this._dragScrollAmount=0,this._enabled=!0,this._workCell=new Rs,this._mouseDownTimeStamp=0,this._oldHasSelection=!1,this._oldSelectionStart=void 0,this._oldSelectionEnd=void 0,this._onLinuxMouseSelection=this._register(new me),this.onLinuxMouseSelection=this._onLinuxMouseSelection.event,this._onRedrawRequest=this._register(new me),this.onRequestRedraw=this._onRedrawRequest.event,this._onSelectionChange=this._register(new me),this.onSelectionChange=this._onSelectionChange.event,this._onRequestScrollLines=this._register(new me),this.onRequestScrollLines=this._onRequestScrollLines.event,this._mouseMoveListener=d=>this._handleMouseMove(d),this._mouseUpListener=d=>this._handleMouseUp(d),this._coreService.onUserInput(()=>{this.hasSelection&&this.clearSelection()}),this._trimListener=this._bufferService.buffer.lines.onTrim(d=>this._handleTrim(d)),this._register(this._bufferService.buffers.onBufferActivate(d=>this._handleBufferActivate(d))),this.enable(),this._model=new Rse(this._bufferService),this._activeSelectionMode=0,this._register(Bt(()=>{this._removeMouseDownListeners()})),this._register(this._bufferService.onResize(d=>{d.rowsChanged&&this.clearSelection()}))}reset(){this.clearSelection()}disable(){this.clearSelection(),this._enabled=!1}enable(){this._enabled=!0}get selectionStart(){return this._model.finalSelectionStart}get selectionEnd(){return this._model.finalSelectionEnd}get hasSelection(){let e=this._model.finalSelectionStart,i=this._model.finalSelectionEnd;return!e||!i?!1:e[0]!==i[0]||e[1]!==i[1]}get selectionText(){let e=this._model.finalSelectionStart,i=this._model.finalSelectionEnd;if(!e||!i)return"";let n=this._bufferService.buffer,s=[];if(this._activeSelectionMode===3){if(e[0]===i[0])return"";let r=e[0]r.replace($se," ")).join(iN?`\r `:` -`)}clearSelection(){this._model.clearSelection(),this._removeMouseDownListeners(),this.refresh(),this._onSelectionChange.fire()}refresh(e){this._refreshAnimationFrame||(this._refreshAnimationFrame=this._coreBrowserService.window.requestAnimationFrame(()=>this._refresh())),zw&&e&&this.selectionText.length&&this._onLinuxMouseSelection.fire(this.selectionText)}_refresh(){this._refreshAnimationFrame=void 0,this._onRedrawRequest.fire({start:this._model.finalSelectionStart,end:this._model.finalSelectionEnd,columnSelectMode:this._activeSelectionMode===3})}_isClickInSelection(e){let i=this._getMouseBufferCoords(e),n=this._model.finalSelectionStart,r=this._model.finalSelectionEnd;return!n||!r||!i?!1:this._areCoordsInSelection(i,n,r)}isCellInSelection(e,i){let n=this._model.finalSelectionStart,r=this._model.finalSelectionEnd;return!n||!r?!1:this._areCoordsInSelection([e,i],n,r)}_areCoordsInSelection(e,i,n){return e[1]>i[1]&&e[1]=i[0]&&e[0]=i[0]}_selectWordAtCursor(e,i){var s,o;let n=(o=(s=this._linkifier.currentLink)==null?void 0:s.link)==null?void 0:o.range;if(n)return this._model.selectionStart=[n.start.x-1,n.start.y-1],this._model.selectionStartLength=uR(n,this._bufferService.cols),this._model.selectionEnd=void 0,!0;let r=this._getMouseBufferCoords(e);return r?(this._selectWordAt(r,i),this._model.selectionEnd=void 0,!0):!1}selectAll(){this._model.isSelectAllActive=!0,this.refresh(),this._onSelectionChange.fire()}selectLines(e,i){this._model.clearSelection(),e=Math.max(e,0),i=Math.min(i,this._bufferService.buffer.lines.length-1),this._model.selectionStart=[0,e],this._model.selectionEnd=[this._bufferService.cols,i],this.refresh(),this._onSelectionChange.fire()}_handleTrim(e){this._model.handleTrim(e)&&this.refresh()}_getMouseBufferCoords(e){let i=this._mouseService.getCoords(e,this._screenElement,this._bufferService.cols,this._bufferService.rows,!0);if(i)return i[0]--,i[1]--,i[1]+=this._bufferService.buffer.ydisp,i}_getMouseEventScrollAmount(e){let i=$w(this._coreBrowserService.window,e,this._screenElement)[1],n=this._renderService.dimensions.css.canvas.height;return i>=0&&i<=n?0:(i>n&&(i-=n),i=Math.min(Math.max(i,-Ny),Ny),i/=Ny,i/Math.abs(i)+Math.round(i*(Qre-1)))}shouldForceSelection(e){return eO?e.altKey&&this._optionsService.rawOptions.macOptionClickForcesSelection:e.shiftKey}handleMouseDown(e){if(this._mouseDownTimeStamp=e.timeStamp,!(e.button===2&&this.hasSelection)&&e.button===0){if(!this._enabled){if(!this.shouldForceSelection(e))return;e.stopPropagation()}e.preventDefault(),this._dragScrollAmount=0,this._enabled&&e.shiftKey?this._handleIncrementalClick(e):e.detail===1?this._handleSingleClick(e):e.detail===2?this._handleDoubleClick(e):e.detail===3&&this._handleTripleClick(e),this._addMouseDownListeners(),this.refresh(!0)}}_addMouseDownListeners(){this._screenElement.ownerDocument&&(this._screenElement.ownerDocument.addEventListener("mousemove",this._mouseMoveListener),this._screenElement.ownerDocument.addEventListener("mouseup",this._mouseUpListener)),this._dragScrollIntervalTimer=this._coreBrowserService.window.setInterval(()=>this._dragScroll(),Lre)}_removeMouseDownListeners(){this._screenElement.ownerDocument&&(this._screenElement.ownerDocument.removeEventListener("mousemove",this._mouseMoveListener),this._screenElement.ownerDocument.removeEventListener("mouseup",this._mouseUpListener)),this._coreBrowserService.window.clearInterval(this._dragScrollIntervalTimer),this._dragScrollIntervalTimer=void 0}_handleIncrementalClick(e){this._model.selectionStart&&(this._model.selectionEnd=this._getMouseBufferCoords(e))}_handleSingleClick(e){if(this._model.selectionStartLength=0,this._model.isSelectAllActive=!1,this._activeSelectionMode=this.shouldColumnSelect(e)?3:0,this._model.selectionStart=this._getMouseBufferCoords(e),!this._model.selectionStart)return;this._model.selectionEnd=void 0;let i=this._bufferService.buffer.lines.get(this._model.selectionStart[1]);i&&i.length!==this._model.selectionStart[0]&&i.hasWidth(this._model.selectionStart[0])===0&&this._model.selectionStart[0]++}_handleDoubleClick(e){this._selectWordAtCursor(e,!0)&&(this._activeSelectionMode=1)}_handleTripleClick(e){let i=this._getMouseBufferCoords(e);i&&(this._activeSelectionMode=2,this._selectLineAt(i[1]))}shouldColumnSelect(e){return e.altKey&&!(eO&&this._optionsService.rawOptions.macOptionClickForcesSelection)}_handleMouseMove(e){if(e.stopImmediatePropagation(),!this._model.selectionStart)return;let i=this._model.selectionEnd?[this._model.selectionEnd[0],this._model.selectionEnd[1]]:null;if(this._model.selectionEnd=this._getMouseBufferCoords(e),!this._model.selectionEnd){this.refresh(!0);return}this._activeSelectionMode===2?this._model.selectionEnd[1]0?this._model.selectionEnd[0]=this._bufferService.cols:this._dragScrollAmount<0&&(this._model.selectionEnd[0]=0));let n=this._bufferService.buffer;if(this._model.selectionEnd[1]0?(this._activeSelectionMode!==3&&(this._model.selectionEnd[0]=this._bufferService.cols),this._model.selectionEnd[1]=Math.min(e.ydisp+this._bufferService.rows,e.lines.length-1)):(this._activeSelectionMode!==3&&(this._model.selectionEnd[0]=0),this._model.selectionEnd[1]=e.ydisp),this.refresh()}}_handleMouseUp(e){let i=e.timeStamp-this._mouseDownTimeStamp;if(this._removeMouseDownListeners(),this.selectionText.length<=1&&ithis._handleTrim(i))}_convertViewportColToCharacterIndex(e,i){let n=i;for(let r=0;i>=r;r++){let s=e.loadCell(r,this._workCell).getChars().length;this._workCell.getWidth()===0?n--:s>1&&i!==r&&(n+=s-1)}return n}setSelection(e,i,n){this._model.clearSelection(),this._removeMouseDownListeners(),this._model.selectionStart=[e,i],this._model.selectionStartLength=n,this.refresh(),this._fireEventIfSelectionChanged()}rightClickSelect(e){this._isClickInSelection(e)||(this._selectWordAtCursor(e,!1)&&this.refresh(!0),this._fireEventIfSelectionChanged())}_getWordAt(e,i,n=!0,r=!0){if(e[0]>=this._bufferService.cols)return;let s=this._bufferService.buffer,o=s.lines.get(e[1]);if(!o)return;let l=s.translateBufferLineToString(e[1],!1),c=this._convertViewportColToCharacterIndex(o,e[0]),u=c,d=e[0]-c,p=0,g=0,O=0,_=0;if(l.charAt(c)===" "){for(;c>0&&l.charAt(c-1)===" ";)c--;for(;u1&&(_+=T-1,u+=T-1);w>0&&c>0&&!this._isCharWordSeparator(o.loadCell(w-1,this._workCell));){o.loadCell(w-1,this._workCell);let A=this._workCell.getChars().length;this._workCell.getWidth()===0?(p++,w--):A>1&&(O+=A-1,c-=A-1),c--,w--}for(;k1&&(_+=A-1,u+=A-1),u++,k++}}u++;let b=c+d-p+O,x=Math.min(this._bufferService.cols,u-c+p+g-O-_);if(!(!i&&l.slice(c,u).trim()==="")){if(n&&b===0&&o.getCodePoint(0)!==32){let w=s.lines.get(e[1]-1);if(w&&o.isWrapped&&w.getCodePoint(this._bufferService.cols-1)!==32){let k=this._getWordAt([this._bufferService.cols-1,e[1]-1],!1,!0,!1);if(k){let T=this._bufferService.cols-k.start;b-=T,x+=T}}}if(r&&b+x===this._bufferService.cols&&o.getCodePoint(this._bufferService.cols-1)!==32){let w=s.lines.get(e[1]+1);if(w!=null&&w.isWrapped&&w.getCodePoint(0)!==32){let k=this._getWordAt([0,e[1]+1],!1,!1,!0);k&&(x+=k.length)}}return{start:b,length:x}}}_selectWordAt(e,i){let n=this._getWordAt(e,i);if(n){for(;n.start<0;)n.start+=this._bufferService.cols,e[1]--;this._model.selectionStart=[n.start,e[1]],this._model.selectionStartLength=n.length}}_selectToWordAt(e){let i=this._getWordAt(e,!0);if(i){let n=e[1];for(;i.start<0;)i.start+=this._bufferService.cols,n--;if(!this._model.areSelectionValuesReversed())for(;i.start+i.length>this._bufferService.cols;)i.length-=this._bufferService.cols,n++;this._model.selectionEnd=[this._model.areSelectionValuesReversed()?i.start:i.start+i.length,n]}}_isCharWordSeparator(e){return e.getWidth()===0?!1:this._optionsService.rawOptions.wordSeparator.indexOf(e.getChars())>=0}_selectLineAt(e){let i=this._bufferService.buffer.getWrappedRangeForLine(e),n={start:{x:0,y:i.first},end:{x:this._bufferService.cols-1,y:i.last}};this._model.selectionStart=[0,i.first],this._model.selectionEnd=void 0,this._model.selectionStartLength=uR(n,this._bufferService.cols)}};_S=Ut([be(3,yn),be(4,$l),be(5,Mw),be(6,bn),be(7,wo),be(8,xo)],_S);var fR=class{constructor(){this._data={}}set(e,i,n){this._data[e]||(this._data[e]={}),this._data[e][i]=n}get(e,i){return this._data[e]?this._data[e][i]:void 0}clear(){this._data={}}},dR=class{constructor(){this._color=new fR,this._css=new fR}setCss(e,i,n){this._css.set(e,i,n)}getCss(e,i){return this._css.get(e,i)}setColor(e,i,n){this._color.set(e,i,n)}getColor(e,i){return this._color.get(e,i)}clear(){this._color.clear(),this._css.clear()}},mi=Object.freeze((()=>{let t=[zt.toColor("#2e3436"),zt.toColor("#cc0000"),zt.toColor("#4e9a06"),zt.toColor("#c4a000"),zt.toColor("#3465a4"),zt.toColor("#75507b"),zt.toColor("#06989a"),zt.toColor("#d3d7cf"),zt.toColor("#555753"),zt.toColor("#ef2929"),zt.toColor("#8ae234"),zt.toColor("#fce94f"),zt.toColor("#729fcf"),zt.toColor("#ad7fa8"),zt.toColor("#34e2e2"),zt.toColor("#eeeeec")],e=[0,95,135,175,215,255];for(let i=0;i<216;i++){let n=e[i/36%6|0],r=e[i/6%6|0],s=e[i%6];t.push({css:ci.toCss(n,r,s),rgba:ci.toRgba(n,r,s)})}for(let i=0;i<24;i++){let n=8+i*10;t.push({css:ci.toCss(n,n,n),rgba:ci.toRgba(n,n,n)})}return t})()),ll=zt.toColor("#ffffff"),nf=zt.toColor("#000000"),pR=zt.toColor("#ffffff"),mR=nf,$u={css:"rgba(255, 255, 255, 0.3)",rgba:4294967117},zre=ll,yS=class extends We{constructor(e){super(),this._optionsService=e,this._contrastCache=new dR,this._halfContrastCache=new dR,this._onChangeColors=this._register(new me),this.onChangeColors=this._onChangeColors.event,this._colors={foreground:ll,background:nf,cursor:pR,cursorAccent:mR,selectionForeground:void 0,selectionBackgroundTransparent:$u,selectionBackgroundOpaque:Pt.blend(nf,$u),selectionInactiveBackgroundTransparent:$u,selectionInactiveBackgroundOpaque:Pt.blend(nf,$u),scrollbarSliderBackground:Pt.opacity(ll,.2),scrollbarSliderHoverBackground:Pt.opacity(ll,.4),scrollbarSliderActiveBackground:Pt.opacity(ll,.5),overviewRulerBorder:ll,ansi:mi.slice(),contrastCache:this._contrastCache,halfContrastCache:this._halfContrastCache},this._updateRestoreColors(),this._setTheme(this._optionsService.rawOptions.theme),this._register(this._optionsService.onSpecificOptionChange("minimumContrastRatio",()=>this._contrastCache.clear())),this._register(this._optionsService.onSpecificOptionChange("theme",()=>this._setTheme(this._optionsService.rawOptions.theme)))}get colors(){return this._colors}_setTheme(e={}){let i=this._colors;if(i.foreground=Ot(e.foreground,ll),i.background=Ot(e.background,nf),i.cursor=Pt.blend(i.background,Ot(e.cursor,pR)),i.cursorAccent=Pt.blend(i.background,Ot(e.cursorAccent,mR)),i.selectionBackgroundTransparent=Ot(e.selectionBackground,$u),i.selectionBackgroundOpaque=Pt.blend(i.background,i.selectionBackgroundTransparent),i.selectionInactiveBackgroundTransparent=Ot(e.selectionInactiveBackground,i.selectionBackgroundTransparent),i.selectionInactiveBackgroundOpaque=Pt.blend(i.background,i.selectionInactiveBackgroundTransparent),i.selectionForeground=e.selectionForeground?Ot(e.selectionForeground,lR):void 0,i.selectionForeground===lR&&(i.selectionForeground=void 0),Pt.isOpaque(i.selectionBackgroundTransparent)&&(i.selectionBackgroundTransparent=Pt.opacity(i.selectionBackgroundTransparent,.3)),Pt.isOpaque(i.selectionInactiveBackgroundTransparent)&&(i.selectionInactiveBackgroundTransparent=Pt.opacity(i.selectionInactiveBackgroundTransparent,.3)),i.scrollbarSliderBackground=Ot(e.scrollbarSliderBackground,Pt.opacity(i.foreground,.2)),i.scrollbarSliderHoverBackground=Ot(e.scrollbarSliderHoverBackground,Pt.opacity(i.foreground,.4)),i.scrollbarSliderActiveBackground=Ot(e.scrollbarSliderActiveBackground,Pt.opacity(i.foreground,.5)),i.overviewRulerBorder=Ot(e.overviewRulerBorder,zre),i.ansi=mi.slice(),i.ansi[0]=Ot(e.black,mi[0]),i.ansi[1]=Ot(e.red,mi[1]),i.ansi[2]=Ot(e.green,mi[2]),i.ansi[3]=Ot(e.yellow,mi[3]),i.ansi[4]=Ot(e.blue,mi[4]),i.ansi[5]=Ot(e.magenta,mi[5]),i.ansi[6]=Ot(e.cyan,mi[6]),i.ansi[7]=Ot(e.white,mi[7]),i.ansi[8]=Ot(e.brightBlack,mi[8]),i.ansi[9]=Ot(e.brightRed,mi[9]),i.ansi[10]=Ot(e.brightGreen,mi[10]),i.ansi[11]=Ot(e.brightYellow,mi[11]),i.ansi[12]=Ot(e.brightBlue,mi[12]),i.ansi[13]=Ot(e.brightMagenta,mi[13]),i.ansi[14]=Ot(e.brightCyan,mi[14]),i.ansi[15]=Ot(e.brightWhite,mi[15]),e.extendedAnsi){let n=Math.min(i.ansi.length-16,e.extendedAnsi.length);for(let r=0;rs.index-o.index),n=[];for(let s of i){let o=this._services.get(s.id);if(!o)throw new Error(`[createInstance] ${t.name} depends on UNKNOWN service ${s.id._id}.`);n.push(o)}let r=i.length>0?i[0].index:e.length;if(e.length!==r)throw new Error(`[createInstance] First service dependency of ${t.name} at position ${r+1} conflicts with ${e.length} static arguments`);return new t(...e,...n)}},Ire={trace:0,debug:1,info:2,warn:3,error:4,off:5},Vre="xterm.js: ",bS=class extends We{constructor(e){super(),this._optionsService=e,this._logLevel=5,this._updateLogLevel(),this._register(this._optionsService.onSpecificOptionChange("logLevel",()=>this._updateLogLevel()))}get logLevel(){return this._logLevel}_updateLogLevel(){this._logLevel=Ire[this._optionsService.rawOptions.logLevel]}_evalLazyOptionalParams(e){for(let i=0;ithis._length)for(let i=this._length;i=e;r--)this._array[this._getCyclicIndex(r+n.length)]=this._array[this._getCyclicIndex(r)];for(let r=0;rthis._maxLength){let r=this._length+n.length-this._maxLength;this._startIndex+=r,this._length=this._maxLength,this.onTrimEmitter.fire(r)}else this._length+=n.length}trimStart(e){e>this._length&&(e=this._length),this._startIndex+=e,this._length-=e,this.onTrimEmitter.fire(e)}shiftElements(e,i,n){if(!(i<=0)){if(e<0||e>=this._length)throw new Error("start argument out of range");if(e+n<0)throw new Error("Cannot shift elements in list beyond index 0");if(n>0){for(let s=i-1;s>=0;s--)this.set(e+s+n,this.get(e+s));let r=e+i+n-this._length;if(r>0)for(this._length+=r;this._length>this._maxLength;)this._length--,this._startIndex++,this.onTrimEmitter.fire(1)}else for(let r=0;r>22,i&2097152?this._combined[e].charCodeAt(this._combined[e].length-1):n]}set(e,i){this._data[e*Ze+1]=i[0],i[1].length>1?(this._combined[e]=i[1],this._data[e*Ze+0]=e|2097152|i[2]<<22):this._data[e*Ze+0]=i[1].charCodeAt(0)|i[2]<<22}getWidth(e){return this._data[e*Ze+0]>>22}hasWidth(e){return this._data[e*Ze+0]&12582912}getFg(e){return this._data[e*Ze+1]}getBg(e){return this._data[e*Ze+2]}hasContent(e){return this._data[e*Ze+0]&4194303}getCodePoint(e){let i=this._data[e*Ze+0];return i&2097152?this._combined[e].charCodeAt(this._combined[e].length-1):i&2097151}isCombined(e){return this._data[e*Ze+0]&2097152}getString(e){let i=this._data[e*Ze+0];return i&2097152?this._combined[e]:i&2097151?pa(i&2097151):""}isProtected(e){return this._data[e*Ze+2]&536870912}loadCell(e,i){return Tm=e*Ze,i.content=this._data[Tm+0],i.fg=this._data[Tm+1],i.bg=this._data[Tm+2],i.content&2097152&&(i.combinedData=this._combined[e]),i.bg&268435456&&(i.extended=this._extendedAttrs[e]),i}setCell(e,i){i.content&2097152&&(this._combined[e]=i.combinedData),i.bg&268435456&&(this._extendedAttrs[e]=i.extended),this._data[e*Ze+0]=i.content,this._data[e*Ze+1]=i.fg,this._data[e*Ze+2]=i.bg}setCellFromCodepoint(e,i,n,r){r.bg&268435456&&(this._extendedAttrs[e]=r.extended),this._data[e*Ze+0]=i|n<<22,this._data[e*Ze+1]=r.fg,this._data[e*Ze+2]=r.bg}addCodepointToCell(e,i,n){let r=this._data[e*Ze+0];r&2097152?this._combined[e]+=pa(i):r&2097151?(this._combined[e]=pa(r&2097151)+pa(i),r&=-2097152,r|=2097152):r=i|1<<22,n&&(r&=-12582913,r|=n<<22),this._data[e*Ze+0]=r}insertCells(e,i,n){if(e%=this.length,e&&this.getWidth(e-1)===2&&this.setCellFromCodepoint(e-1,0,1,n),i=0;--s)this.setCell(e+i+s,this.loadCell(e+s,r));for(let s=0;sthis.length){if(this._data.buffer.byteLength>=n*4)this._data=new Uint32Array(this._data.buffer,0,n);else{let r=new Uint32Array(n);r.set(this._data),this._data=r}for(let r=this.length;r=e&&delete this._combined[l]}let s=Object.keys(this._extendedAttrs);for(let o=0;o=e&&delete this._extendedAttrs[l]}}return this.length=e,n*4*jy=0;--e)if(this._data[e*Ze+0]&4194303)return e+(this._data[e*Ze+0]>>22);return 0}getNoBgTrimmedLength(){for(let e=this.length-1;e>=0;--e)if(this._data[e*Ze+0]&4194303||this._data[e*Ze+2]&50331648)return e+(this._data[e*Ze+0]>>22);return 0}copyCellsFrom(e,i,n,r,s){let o=e._data;if(s)for(let c=r-1;c>=0;c--){for(let u=0;u=i&&(this._combined[u-i+n]=e._combined[u])}}translateToString(e,i,n,r){i=i??0,n=n??this.length,e&&(n=Math.min(n,this.getTrimmedLength())),r&&(r.length=0);let s="";for(;i>22||1}return r&&r.push(i),s}};function Xre(t,e,i,n,r,s){let o=[];for(let l=0;l=l&&n0&&(x>p||d[x].getTrimmedLength()===0);x--)b++;b>0&&(o.push(l+d.length-b),o.push(b)),l+=d.length-1}return o}function Zre(t,e){let i=[],n=0,r=e[n],s=0;for(let o=0;ond(t,u,e)).reduce((c,u)=>c+u),s=0,o=0,l=0;for(;lc&&(s-=c,o++);let u=t[o].getWidth(s-1)===2;u&&s--;let d=u?i-1:i;n.push(d),l+=d}return n}function nd(t,e,i){if(e===t.length-1)return t[e].getTrimmedLength();let n=!t[e].hasContent(i-1)&&t[e].getWidth(i-1)===1,r=t[e+1].getWidth(0)===2;return n&&r?i-1:i}var lz=class cz{constructor(e){this.line=e,this.isDisposed=!1,this._disposables=[],this._id=cz._nextId++,this._onDispose=this.register(new me),this.onDispose=this._onDispose.event}get id(){return this._id}dispose(){this.isDisposed||(this.isDisposed=!0,this.line=-1,this._onDispose.fire(),Ml(this._disposables),this._disposables.length=0)}register(e){return this._disposables.push(e),e}};lz._nextId=1;var Ure=lz,yi={},cl=yi.B;yi[0]={"`":"◆",a:"▒",b:"␉",c:"␌",d:"␍",e:"␊",f:"°",g:"±",h:"␤",i:"␋",j:"┘",k:"┐",l:"┌",m:"└",n:"┼",o:"⎺",p:"⎻",q:"─",r:"⎼",s:"⎽",t:"├",u:"┤",v:"┴",w:"┬",x:"│",y:"≤",z:"≥","{":"π","|":"≠","}":"£","~":"·"};yi.A={"#":"£"};yi.B=void 0;yi[4]={"#":"£","@":"¾","[":"ij","\\":"½","]":"|","{":"¨","|":"f","}":"¼","~":"´"};yi.C=yi[5]={"[":"Ä","\\":"Ö","]":"Å","^":"Ü","`":"é","{":"ä","|":"ö","}":"å","~":"ü"};yi.R={"#":"£","@":"à","[":"°","\\":"ç","]":"§","{":"é","|":"ù","}":"è","~":"¨"};yi.Q={"@":"à","[":"â","\\":"ç","]":"ê","^":"î","`":"ô","{":"é","|":"ù","}":"è","~":"û"};yi.K={"@":"§","[":"Ä","\\":"Ö","]":"Ü","{":"ä","|":"ö","}":"ü","~":"ß"};yi.Y={"#":"£","@":"§","[":"°","\\":"ç","]":"é","`":"ù","{":"à","|":"ò","}":"è","~":"ì"};yi.E=yi[6]={"@":"Ä","[":"Æ","\\":"Ø","]":"Å","^":"Ü","`":"ä","{":"æ","|":"ø","}":"å","~":"ü"};yi.Z={"#":"£","@":"§","[":"¡","\\":"Ñ","]":"¿","{":"°","|":"ñ","}":"ç"};yi.H=yi[7]={"@":"É","[":"Ä","\\":"Ö","]":"Å","^":"Ü","`":"é","{":"ä","|":"ö","}":"å","~":"ü"};yi["="]={"#":"ù","@":"à","[":"é","\\":"ç","]":"ê","^":"î",_:"è","`":"ô","{":"ä","|":"ö","}":"ü","~":"û"};var OR=4294967295,vR=class{constructor(t,e,i){this._hasScrollback=t,this._optionsService=e,this._bufferService=i,this.ydisp=0,this.ybase=0,this.y=0,this.x=0,this.tabs={},this.savedY=0,this.savedX=0,this.savedCurAttrData=oi.clone(),this.savedCharset=cl,this.markers=[],this._nullCell=Rr.fromCharData([0,k6,1,0]),this._whitespaceCell=Rr.fromCharData([0,va,1,32]),this._isClearing=!1,this._memoryCleanupQueue=new tO,this._memoryCleanupPosition=0,this._cols=this._bufferService.cols,this._rows=this._bufferService.rows,this.lines=new gR(this._getCorrectBufferLength(this._rows)),this.scrollTop=0,this.scrollBottom=this._rows-1,this.setupTabStops()}getNullCell(t){return t?(this._nullCell.fg=t.fg,this._nullCell.bg=t.bg,this._nullCell.extended=t.extended):(this._nullCell.fg=0,this._nullCell.bg=0,this._nullCell.extended=new Gg),this._nullCell}getWhitespaceCell(t){return t?(this._whitespaceCell.fg=t.fg,this._whitespaceCell.bg=t.bg,this._whitespaceCell.extended=t.extended):(this._whitespaceCell.fg=0,this._whitespaceCell.bg=0,this._whitespaceCell.extended=new Gg),this._whitespaceCell}getBlankLine(t,e){return new rf(this._bufferService.cols,this.getNullCell(t),e)}get hasScrollback(){return this._hasScrollback&&this.lines.maxLength>this._rows}get isCursorInViewport(){let t=this.ybase+this.y-this.ydisp;return t>=0&&tOR?OR:e}fillViewportRows(t){if(this.lines.length===0){t===void 0&&(t=oi);let e=this._rows;for(;e--;)this.lines.push(this.getBlankLine(t))}}clear(){this.ydisp=0,this.ybase=0,this.y=0,this.x=0,this.lines=new gR(this._getCorrectBufferLength(this._rows)),this.scrollTop=0,this.scrollBottom=this._rows-1,this.setupTabStops()}resize(t,e){let i=this.getNullCell(oi),n=0,r=this._getCorrectBufferLength(e);if(r>this.lines.maxLength&&(this.lines.maxLength=r),this.lines.length>0){if(this._cols0&&this.lines.length<=this.ybase+this.y+s+1?(this.ybase--,s++,this.ydisp>0&&this.ydisp--):this.lines.push(new rf(t,i)));else for(let o=this._rows;o>e;o--)this.lines.length>e+this.ybase&&(this.lines.length>this.ybase+this.y+1?this.lines.pop():(this.ybase++,this.ydisp++));if(r0&&(this.lines.trimStart(o),this.ybase=Math.max(this.ybase-o,0),this.ydisp=Math.max(this.ydisp-o,0),this.savedY=Math.max(this.savedY-o,0)),this.lines.maxLength=r}this.x=Math.min(this.x,t-1),this.y=Math.min(this.y,e-1),s&&(this.y+=s),this.savedX=Math.min(this.savedX,t-1),this.scrollTop=0}if(this.scrollBottom=e-1,this._isReflowEnabled&&(this._reflow(t,e),this._cols>t))for(let s=0;s.1*this.lines.length&&(this._memoryCleanupPosition=0,this._memoryCleanupQueue.enqueue(()=>this._batchedMemoryCleanup()))}_batchedMemoryCleanup(){let t=!0;this._memoryCleanupPosition>=this.lines.length&&(this._memoryCleanupPosition=0,t=!1);let e=0;for(;this._memoryCleanupPosition100)return!0;return t}get _isReflowEnabled(){let t=this._optionsService.rawOptions.windowsPty;return t&&t.buildNumber?this._hasScrollback&&t.backend==="conpty"&&t.buildNumber>=21376:this._hasScrollback&&!this._optionsService.rawOptions.windowsMode}_reflow(t,e){this._cols!==t&&(t>this._cols?this._reflowLarger(t,e):this._reflowSmaller(t,e))}_reflowLarger(t,e){let i=this._optionsService.rawOptions.reflowCursorLine,n=Xre(this.lines,this._cols,t,this.ybase+this.y,this.getNullCell(oi),i);if(n.length>0){let r=Zre(this.lines,n);qre(this.lines,r.layout),this._reflowLargerAdjustViewport(t,e,r.countRemoved)}}_reflowLargerAdjustViewport(t,e,i){let n=this.getNullCell(oi),r=i;for(;r-- >0;)this.ybase===0?(this.y>0&&this.y--,this.lines.length=0;o--){let l=this.lines.get(o);if(!l||!l.isWrapped&&l.getTrimmedLength()<=t)continue;let c=[l];for(;l.isWrapped&&o>0;)l=this.lines.get(--o),c.unshift(l);if(!i){let T=this.ybase+this.y;if(T>=o&&T0&&(r.push({start:o+c.length+s,newLines:O}),s+=O.length),c.push(...O);let _=d.length-1,b=d[_];b===0&&(_--,b=d[_]);let x=c.length-p-1,w=u;for(;x>=0;){let T=Math.min(w,b);if(c[_]===void 0)break;if(c[_].copyCellsFrom(c[x],w-T,b-T,T,!0),b-=T,b===0&&(_--,b=d[_]),w-=T,w===0){x--;let A=Math.max(x,0);w=nd(c,A,this._cols)}}for(let T=0;T0;)this.ybase===0?this.y0){let o=[],l=[];for(let b=0;b=0;b--)if(p&&p.start>u+g){for(let x=p.newLines.length-1;x>=0;x--)this.lines.set(b--,p.newLines[x]);b++,o.push({index:u+1,amount:p.newLines.length}),g+=p.newLines.length,p=r[++d]}else this.lines.set(b,l[u--]);let O=0;for(let b=o.length-1;b>=0;b--)o[b].index+=O,this.lines.onInsertEmitter.fire(o[b]),O+=o[b].amount;let _=Math.max(0,c+s-this.lines.maxLength);_>0&&this.lines.onTrimEmitter.fire(_)}}translateBufferLineToString(t,e,i=0,n){let r=this.lines.get(t);return r?r.translateToString(e,i,n):""}getWrappedRangeForLine(t){let e=t,i=t;for(;e>0&&this.lines.get(e).isWrapped;)e--;for(;i+10;);return t>=this._cols?this._cols-1:t<0?0:t}nextStop(t){for(t==null&&(t=this.x);!this.tabs[++t]&&t=this._cols?this._cols-1:t<0?0:t}clearMarkers(t){this._isClearing=!0;for(let e=0;e{e.line-=i,e.line<0&&e.dispose()})),e.register(this.lines.onInsert(i=>{e.line>=i.index&&(e.line+=i.amount)})),e.register(this.lines.onDelete(i=>{e.line>=i.index&&e.linei.index&&(e.line-=i.amount)})),e.register(e.onDispose(()=>this._removeMarker(e))),e}_removeMarker(t){this._isClearing||this.markers.splice(this.markers.indexOf(t),1)}},Yre=class extends We{constructor(e,i){super(),this._optionsService=e,this._bufferService=i,this._onBufferActivate=this._register(new me),this.onBufferActivate=this._onBufferActivate.event,this.reset(),this._register(this._optionsService.onSpecificOptionChange("scrollback",()=>this.resize(this._bufferService.cols,this._bufferService.rows))),this._register(this._optionsService.onSpecificOptionChange("tabStopWidth",()=>this.setupTabStops()))}reset(){this._normal=new vR(!0,this._optionsService,this._bufferService),this._normal.fillViewportRows(),this._alt=new vR(!1,this._optionsService,this._bufferService),this._activeBuffer=this._normal,this._onBufferActivate.fire({activeBuffer:this._normal,inactiveBuffer:this._alt}),this.setupTabStops()}get alt(){return this._alt}get active(){return this._activeBuffer}get normal(){return this._normal}activateNormalBuffer(){this._activeBuffer!==this._normal&&(this._normal.x=this._alt.x,this._normal.y=this._alt.y,this._alt.clearAllMarkers(),this._alt.clear(),this._activeBuffer=this._normal,this._onBufferActivate.fire({activeBuffer:this._normal,inactiveBuffer:this._alt}))}activateAltBuffer(e){this._activeBuffer!==this._alt&&(this._alt.fillViewportRows(e),this._alt.x=this._normal.x,this._alt.y=this._normal.y,this._activeBuffer=this._alt,this._onBufferActivate.fire({activeBuffer:this._alt,inactiveBuffer:this._normal}))}resize(e,i){this._normal.resize(e,i),this._alt.resize(e,i),this.setupTabStops(e)}setupTabStops(e){this._normal.setupTabStops(e),this._alt.setupTabStops(e)}},hz=2,uz=1,SS=class extends We{constructor(t){super(),this.isUserScrolling=!1,this._onResize=this._register(new me),this.onResize=this._onResize.event,this._onScroll=this._register(new me),this.onScroll=this._onScroll.event,this.cols=Math.max(t.rawOptions.cols||0,hz),this.rows=Math.max(t.rawOptions.rows||0,uz),this.buffers=this._register(new Yre(t,this)),this._register(this.buffers.onBufferActivate(e=>{this._onScroll.fire(e.activeBuffer.ydisp)}))}get buffer(){return this.buffers.active}resize(t,e){let i=this.cols!==t,n=this.rows!==e;this.cols=t,this.rows=e,this.buffers.resize(t,e),this._onResize.fire({cols:t,rows:e,colsChanged:i,rowsChanged:n})}reset(){this.buffers.reset(),this.isUserScrolling=!1}scroll(t,e=!1){let i=this.buffer,n;n=this._cachedBlankLine,(!n||n.length!==this.cols||n.getFg(0)!==t.fg||n.getBg(0)!==t.bg)&&(n=i.getBlankLine(t,e),this._cachedBlankLine=n),n.isWrapped=e;let r=i.ybase+i.scrollTop,s=i.ybase+i.scrollBottom;if(i.scrollTop===0){let o=i.lines.isFull;s===i.lines.length-1?o?i.lines.recycle().copyFrom(n):i.lines.push(n.clone()):i.lines.splice(s+1,0,n.clone()),o?this.isUserScrolling&&(i.ydisp=Math.max(i.ydisp-1,0)):(i.ybase++,this.isUserScrolling||i.ydisp++)}else{let o=s-r+1;i.lines.shiftElements(r+1,o-1,-1),i.lines.set(s,n.clone())}this.isUserScrolling||(i.ydisp=i.ybase),this._onScroll.fire(i.ydisp)}scrollLines(t,e){let i=this.buffer;if(t<0){if(i.ydisp===0)return;this.isUserScrolling=!0}else t+i.ydisp>=i.ybase&&(this.isUserScrolling=!1);let n=i.ydisp;i.ydisp=Math.max(Math.min(i.ydisp+t,i.ybase),0),n!==i.ydisp&&(e||this._onScroll.fire(i.ydisp))}};SS=Ut([be(0,bn)],SS);var Cc={cols:80,rows:24,cursorBlink:!1,cursorStyle:"block",cursorWidth:1,cursorInactiveStyle:"outline",customGlyphs:!0,drawBoldTextInBrightColors:!0,documentOverride:null,fastScrollModifier:"alt",fastScrollSensitivity:5,fontFamily:"monospace",fontSize:15,fontWeight:"normal",fontWeightBold:"bold",ignoreBracketedPasteMode:!1,lineHeight:1,letterSpacing:0,linkHandler:null,logLevel:"info",logger:null,scrollback:1e3,scrollOnEraseInDisplay:!1,scrollOnUserInput:!0,scrollSensitivity:1,screenReaderMode:!1,smoothScrollDuration:0,macOptionIsMeta:!1,macOptionClickForcesSelection:!1,minimumContrastRatio:1,disableStdin:!1,allowProposedApi:!1,allowTransparency:!1,tabStopWidth:8,theme:{},reflowCursorLine:!1,rescaleOverlappingGlyphs:!1,rightClickSelectsWord:eO,windowOptions:{},windowsMode:!1,windowsPty:{},wordSeparator:" ()[]{}',\"`",altClickMovesCursor:!0,convertEol:!1,termName:"xterm",cancelEvents:!1,overviewRuler:{}},Hre=["normal","bold","100","200","300","400","500","600","700","800","900"],Fre=class extends We{constructor(e){super(),this._onOptionChange=this._register(new me),this.onOptionChange=this._onOptionChange.event;let i={...Cc};for(let n in e)if(n in i)try{let r=e[n];i[n]=this._sanitizeAndValidateOption(n,r)}catch(r){console.error(r)}this.rawOptions=i,this.options={...i},this._setupOptions(),this._register(Bt(()=>{this.rawOptions.linkHandler=null,this.rawOptions.documentOverride=null}))}onSpecificOptionChange(e,i){return this.onOptionChange(n=>{n===e&&i(this.rawOptions[e])})}onMultipleOptionChange(e,i){return this.onOptionChange(n=>{e.indexOf(n)!==-1&&i()})}_setupOptions(){let e=n=>{if(!(n in Cc))throw new Error(`No option with key "${n}"`);return this.rawOptions[n]},i=(n,r)=>{if(!(n in Cc))throw new Error(`No option with key "${n}"`);r=this._sanitizeAndValidateOption(n,r),this.rawOptions[n]!==r&&(this.rawOptions[n]=r,this._onOptionChange.fire(n))};for(let n in this.rawOptions){let r={get:e.bind(this,n),set:i.bind(this,n)};Object.defineProperty(this.options,n,r)}}_sanitizeAndValidateOption(e,i){switch(e){case"cursorStyle":if(i||(i=Cc[e]),!Gre(i))throw new Error(`"${i}" is not a valid value for ${e}`);break;case"wordSeparator":i||(i=Cc[e]);break;case"fontWeight":case"fontWeightBold":if(typeof i=="number"&&1<=i&&i<=1e3)break;i=Hre.includes(i)?i:Cc[e];break;case"cursorWidth":i=Math.floor(i);case"lineHeight":case"tabStopWidth":if(i<1)throw new Error(`${e} cannot be less than 1, value: ${i}`);break;case"minimumContrastRatio":i=Math.max(1,Math.min(21,Math.round(i*10)/10));break;case"scrollback":if(i=Math.min(i,4294967295),i<0)throw new Error(`${e} cannot be less than 0, value: ${i}`);break;case"fastScrollSensitivity":case"scrollSensitivity":if(i<=0)throw new Error(`${e} cannot be less than or equal to 0, value: ${i}`);break;case"rows":case"cols":if(!i&&i!==0)throw new Error(`${e} must be numeric, value: ${i}`);break;case"windowsPty":i=i??{};break}return i}};function Gre(t){return t==="block"||t==="underline"||t==="bar"}function sf(t,e=5){if(typeof t!="object")return t;let i=Array.isArray(t)?[]:{};for(let n in t)i[n]=e<=1?t[n]:t[n]&&sf(t[n],e-1);return i}var _R=Object.freeze({insertMode:!1}),yR=Object.freeze({applicationCursorKeys:!1,applicationKeypad:!1,bracketedPasteMode:!1,cursorBlink:void 0,cursorStyle:void 0,origin:!1,reverseWraparound:!1,sendFocus:!1,synchronizedOutput:!1,wraparound:!0}),xS=class extends We{constructor(e,i,n){super(),this._bufferService=e,this._logService=i,this._optionsService=n,this.isCursorInitialized=!1,this.isCursorHidden=!1,this._onData=this._register(new me),this.onData=this._onData.event,this._onUserInput=this._register(new me),this.onUserInput=this._onUserInput.event,this._onBinary=this._register(new me),this.onBinary=this._onBinary.event,this._onRequestScrollToBottom=this._register(new me),this.onRequestScrollToBottom=this._onRequestScrollToBottom.event,this.modes=sf(_R),this.decPrivateModes=sf(yR)}reset(){this.modes=sf(_R),this.decPrivateModes=sf(yR)}triggerDataEvent(e,i=!1){if(this._optionsService.rawOptions.disableStdin)return;let n=this._bufferService.buffer;i&&this._optionsService.rawOptions.scrollOnUserInput&&n.ybase!==n.ydisp&&this._onRequestScrollToBottom.fire(),i&&this._onUserInput.fire(),this._logService.debug(`sending data "${e}"`),this._logService.trace("sending data (codes)",()=>e.split("").map(r=>r.charCodeAt(0))),this._onData.fire(e)}triggerBinaryEvent(e){this._optionsService.rawOptions.disableStdin||(this._logService.debug(`sending binary "${e}"`),this._logService.trace("sending binary (codes)",()=>e.split("").map(i=>i.charCodeAt(0))),this._onBinary.fire(e))}};xS=Ut([be(0,yn),be(1,P6),be(2,bn)],xS);var bR={NONE:{events:0,restrict:()=>!1},X10:{events:1,restrict:t=>t.button===4||t.action!==1?!1:(t.ctrl=!1,t.alt=!1,t.shift=!1,!0)},VT200:{events:19,restrict:t=>t.action!==32},DRAG:{events:23,restrict:t=>!(t.action===32&&t.button===3)},ANY:{events:31,restrict:t=>!0}};function Iy(t,e){let i=(t.ctrl?16:0)|(t.shift?4:0)|(t.alt?8:0);return t.button===4?(i|=64,i|=t.action):(i|=t.button&3,t.button&4&&(i|=64),t.button&8&&(i|=128),t.action===32?i|=32:t.action===0&&!e&&(i|=3)),i}var Vy=String.fromCharCode,SR={DEFAULT:t=>{let e=[Iy(t,!1)+32,t.col+32,t.row+32];return e[0]>255||e[1]>255||e[2]>255?"":`\x1B[M${Vy(e[0])}${Vy(e[1])}${Vy(e[2])}`},SGR:t=>{let e=t.action===0&&t.button!==4?"m":"M";return`\x1B[<${Iy(t,!0)};${t.col};${t.row}${e}`},SGR_PIXELS:t=>{let e=t.action===0&&t.button!==4?"m":"M";return`\x1B[<${Iy(t,!0)};${t.x};${t.y}${e}`}},wS=class extends We{constructor(t,e,i){super(),this._bufferService=t,this._coreService=e,this._optionsService=i,this._protocols={},this._encodings={},this._activeProtocol="",this._activeEncoding="",this._lastEvent=null,this._wheelPartialScroll=0,this._onProtocolChange=this._register(new me),this.onProtocolChange=this._onProtocolChange.event;for(let n of Object.keys(bR))this.addProtocol(n,bR[n]);for(let n of Object.keys(SR))this.addEncoding(n,SR[n]);this.reset()}addProtocol(t,e){this._protocols[t]=e}addEncoding(t,e){this._encodings[t]=e}get activeProtocol(){return this._activeProtocol}get areMouseEventsActive(){return this._protocols[this._activeProtocol].events!==0}set activeProtocol(t){if(!this._protocols[t])throw new Error(`unknown protocol "${t}"`);this._activeProtocol=t,this._onProtocolChange.fire(this._protocols[t].events)}get activeEncoding(){return this._activeEncoding}set activeEncoding(t){if(!this._encodings[t])throw new Error(`unknown encoding "${t}"`);this._activeEncoding=t}reset(){this.activeProtocol="NONE",this.activeEncoding="DEFAULT",this._lastEvent=null,this._wheelPartialScroll=0}consumeWheelEvent(t,e,i){if(t.deltaY===0||t.shiftKey||e===void 0||i===void 0)return 0;let n=e/i,r=this._applyScrollModifier(t.deltaY,t);return t.deltaMode===WheelEvent.DOM_DELTA_PIXEL?(r/=n+0,Math.abs(t.deltaY)<50&&(r*=.3),this._wheelPartialScroll+=r,r=Math.floor(Math.abs(this._wheelPartialScroll))*(this._wheelPartialScroll>0?1:-1),this._wheelPartialScroll%=1):t.deltaMode===WheelEvent.DOM_DELTA_PAGE&&(r*=this._bufferService.rows),r}_applyScrollModifier(t,e){return e.altKey||e.ctrlKey||e.shiftKey?t*this._optionsService.rawOptions.fastScrollSensitivity*this._optionsService.rawOptions.scrollSensitivity:t*this._optionsService.rawOptions.scrollSensitivity}triggerMouseEvent(t){if(t.col<0||t.col>=this._bufferService.cols||t.row<0||t.row>=this._bufferService.rows||t.button===4&&t.action===32||t.button===3&&t.action!==32||t.button!==4&&(t.action===2||t.action===3)||(t.col++,t.row++,t.action===32&&this._lastEvent&&this._equalEvents(this._lastEvent,t,this._activeEncoding==="SGR_PIXELS"))||!this._protocols[this._activeProtocol].restrict(t))return!1;let e=this._encodings[this._activeEncoding](t);return e&&(this._activeEncoding==="DEFAULT"?this._coreService.triggerBinaryEvent(e):this._coreService.triggerDataEvent(e,!0)),this._lastEvent=t,!0}explainEvents(t){return{down:!!(t&1),up:!!(t&2),drag:!!(t&4),move:!!(t&8),wheel:!!(t&16)}}_equalEvents(t,e,i){if(i){if(t.x!==e.x||t.y!==e.y)return!1}else if(t.col!==e.col||t.row!==e.row)return!1;return!(t.button!==e.button||t.action!==e.action||t.ctrl!==e.ctrl||t.alt!==e.alt||t.shift!==e.shift)}};wS=Ut([be(0,yn),be(1,$l),be(2,bn)],wS);var Xy=[[768,879],[1155,1158],[1160,1161],[1425,1469],[1471,1471],[1473,1474],[1476,1477],[1479,1479],[1536,1539],[1552,1557],[1611,1630],[1648,1648],[1750,1764],[1767,1768],[1770,1773],[1807,1807],[1809,1809],[1840,1866],[1958,1968],[2027,2035],[2305,2306],[2364,2364],[2369,2376],[2381,2381],[2385,2388],[2402,2403],[2433,2433],[2492,2492],[2497,2500],[2509,2509],[2530,2531],[2561,2562],[2620,2620],[2625,2626],[2631,2632],[2635,2637],[2672,2673],[2689,2690],[2748,2748],[2753,2757],[2759,2760],[2765,2765],[2786,2787],[2817,2817],[2876,2876],[2879,2879],[2881,2883],[2893,2893],[2902,2902],[2946,2946],[3008,3008],[3021,3021],[3134,3136],[3142,3144],[3146,3149],[3157,3158],[3260,3260],[3263,3263],[3270,3270],[3276,3277],[3298,3299],[3393,3395],[3405,3405],[3530,3530],[3538,3540],[3542,3542],[3633,3633],[3636,3642],[3655,3662],[3761,3761],[3764,3769],[3771,3772],[3784,3789],[3864,3865],[3893,3893],[3895,3895],[3897,3897],[3953,3966],[3968,3972],[3974,3975],[3984,3991],[3993,4028],[4038,4038],[4141,4144],[4146,4146],[4150,4151],[4153,4153],[4184,4185],[4448,4607],[4959,4959],[5906,5908],[5938,5940],[5970,5971],[6002,6003],[6068,6069],[6071,6077],[6086,6086],[6089,6099],[6109,6109],[6155,6157],[6313,6313],[6432,6434],[6439,6440],[6450,6450],[6457,6459],[6679,6680],[6912,6915],[6964,6964],[6966,6970],[6972,6972],[6978,6978],[7019,7027],[7616,7626],[7678,7679],[8203,8207],[8234,8238],[8288,8291],[8298,8303],[8400,8431],[12330,12335],[12441,12442],[43014,43014],[43019,43019],[43045,43046],[64286,64286],[65024,65039],[65056,65059],[65279,65279],[65529,65531]],Kre=[[68097,68099],[68101,68102],[68108,68111],[68152,68154],[68159,68159],[119143,119145],[119155,119170],[119173,119179],[119210,119213],[119362,119364],[917505,917505],[917536,917631],[917760,917999]],gi;function Jre(t,e){let i=0,n=e.length-1,r;if(te[n][1])return!1;for(;n>=i;)if(r=i+n>>1,t>e[r][1])i=r+1;else if(t=131072&&e<=196605||e>=196608&&e<=262141?2:1}charProperties(e,i){let n=this.wcwidth(e),r=n===0&&i!==0;if(r){let s=_l.extractWidth(i);s===0?r=!1:s>n&&(n=s)}return _l.createPropertyValue(0,n,r)}},_l=class rg{constructor(){this._providers=Object.create(null),this._active="",this._onChange=new me,this.onChange=this._onChange.event;let e=new ese;this.register(e),this._active=e.version,this._activeProvider=e}static extractShouldJoin(e){return(e&1)!==0}static extractWidth(e){return e>>1&3}static extractCharKind(e){return e>>3}static createPropertyValue(e,i,n=!1){return(e&16777215)<<3|(i&3)<<1|(n?1:0)}dispose(){this._onChange.dispose()}get versions(){return Object.keys(this._providers)}get activeVersion(){return this._active}set activeVersion(e){if(!this._providers[e])throw new Error(`unknown Unicode version "${e}"`);this._active=e,this._activeProvider=this._providers[e],this._onChange.fire(e)}register(e){this._providers[e.version]=e}wcwidth(e){return this._activeProvider.wcwidth(e)}getStringCellWidth(e){let i=0,n=0,r=e.length;for(let s=0;s=r)return i+this.wcwidth(o);let u=e.charCodeAt(s);56320<=u&&u<=57343?o=(o-55296)*1024+u-56320+65536:i+=this.wcwidth(u)}let l=this.charProperties(o,n),c=rg.extractWidth(l);rg.extractShouldJoin(l)&&(c-=rg.extractWidth(n)),i+=c,n=l}return i}charProperties(e,i){return this._activeProvider.charProperties(e,i)}},tse=class{constructor(){this.glevel=0,this._charsets=[]}reset(){this.charset=void 0,this._charsets=[],this.glevel=0}setgLevel(e){this.glevel=e,this.charset=this._charsets[e]}setgCharset(e,i){this._charsets[e]=i,this.glevel===e&&(this.charset=i)}};function xR(t){var n;let e=(n=t.buffer.lines.get(t.buffer.ybase+t.buffer.y-1))==null?void 0:n.get(t.cols-1),i=t.buffer.lines.get(t.buffer.ybase+t.buffer.y);i&&e&&(i.isWrapped=e[3]!==0&&e[3]!==32)}var zu=2147483647,ise=256,fz=class CS{constructor(e=32,i=32){if(this.maxLength=e,this.maxSubParamsLength=i,i>ise)throw new Error("maxSubParamsLength must not be greater than 256");this.params=new Int32Array(e),this.length=0,this._subParams=new Int32Array(i),this._subParamsLength=0,this._subParamsIdx=new Uint16Array(e),this._rejectDigits=!1,this._rejectSubDigits=!1,this._digitIsSub=!1}static fromArray(e){let i=new CS;if(!e.length)return i;for(let n=Array.isArray(e[0])?1:0;n>8,r=this._subParamsIdx[i]&255;r-n>0&&e.push(Array.prototype.slice.call(this._subParams,n,r))}return e}reset(){this.length=0,this._subParamsLength=0,this._rejectDigits=!1,this._rejectSubDigits=!1,this._digitIsSub=!1}addParam(e){if(this._digitIsSub=!1,this.length>=this.maxLength){this._rejectDigits=!0;return}if(e<-1)throw new Error("values lesser than -1 are not allowed");this._subParamsIdx[this.length]=this._subParamsLength<<8|this._subParamsLength,this.params[this.length++]=e>zu?zu:e}addSubParam(e){if(this._digitIsSub=!0,!!this.length){if(this._rejectDigits||this._subParamsLength>=this.maxSubParamsLength){this._rejectSubDigits=!0;return}if(e<-1)throw new Error("values lesser than -1 are not allowed");this._subParams[this._subParamsLength++]=e>zu?zu:e,this._subParamsIdx[this.length-1]++}}hasSubParams(e){return(this._subParamsIdx[e]&255)-(this._subParamsIdx[e]>>8)>0}getSubParams(e){let i=this._subParamsIdx[e]>>8,n=this._subParamsIdx[e]&255;return n-i>0?this._subParams.subarray(i,n):null}getSubParamsAll(){let e={};for(let i=0;i>8,r=this._subParamsIdx[i]&255;r-n>0&&(e[i]=this._subParams.slice(n,r))}return e}addDigit(e){let i;if(this._rejectDigits||!(i=this._digitIsSub?this._subParamsLength:this.length)||this._digitIsSub&&this._rejectSubDigits)return;let n=this._digitIsSub?this._subParams:this.params,r=n[i-1];n[i-1]=~r?Math.min(r*10+e,zu):e}},Nu=[],nse=class{constructor(){this._state=0,this._active=Nu,this._id=-1,this._handlers=Object.create(null),this._handlerFb=()=>{},this._stack={paused:!1,loopPosition:0,fallThrough:!1}}registerHandler(e,i){this._handlers[e]===void 0&&(this._handlers[e]=[]);let n=this._handlers[e];return n.push(i),{dispose:()=>{let r=n.indexOf(i);r!==-1&&n.splice(r,1)}}}clearHandler(e){this._handlers[e]&&delete this._handlers[e]}setHandlerFallback(e){this._handlerFb=e}dispose(){this._handlers=Object.create(null),this._handlerFb=()=>{},this._active=Nu}reset(){if(this._state===2)for(let e=this._stack.paused?this._stack.loopPosition-1:this._active.length-1;e>=0;--e)this._active[e].end(!1);this._stack.paused=!1,this._active=Nu,this._id=-1,this._state=0}_start(){if(this._active=this._handlers[this._id]||Nu,!this._active.length)this._handlerFb(this._id,"START");else for(let e=this._active.length-1;e>=0;e--)this._active[e].start()}_put(e,i,n){if(!this._active.length)this._handlerFb(this._id,"PUT",kO(e,i,n));else for(let r=this._active.length-1;r>=0;r--)this._active[r].put(e,i,n)}start(){this.reset(),this._state=1}put(e,i,n){if(this._state!==3){if(this._state===1)for(;i0&&this._put(e,i,n)}}end(e,i=!0){if(this._state!==0){if(this._state!==3)if(this._state===1&&this._start(),!this._active.length)this._handlerFb(this._id,"END",e);else{let n=!1,r=this._active.length-1,s=!1;if(this._stack.paused&&(r=this._stack.loopPosition-1,n=i,s=this._stack.fallThrough,this._stack.paused=!1),!s&&n===!1){for(;r>=0&&(n=this._active[r].end(e),n!==!0);r--)if(n instanceof Promise)return this._stack.paused=!0,this._stack.loopPosition=r,this._stack.fallThrough=!1,n;r--}for(;r>=0;r--)if(n=this._active[r].end(!1),n instanceof Promise)return this._stack.paused=!0,this._stack.loopPosition=r,this._stack.fallThrough=!0,n}this._active=Nu,this._id=-1,this._state=0}}},Jn=class{constructor(e){this._handler=e,this._data="",this._hitLimit=!1}start(){this._data="",this._hitLimit=!1}put(e,i,n){this._hitLimit||(this._data+=kO(e,i,n),this._data.length>1e7&&(this._data="",this._hitLimit=!0))}end(e){let i=!1;if(this._hitLimit)i=!1;else if(e&&(i=this._handler(this._data),i instanceof Promise))return i.then(n=>(this._data="",this._hitLimit=!1,n));return this._data="",this._hitLimit=!1,i}},ju=[],rse=class{constructor(){this._handlers=Object.create(null),this._active=ju,this._ident=0,this._handlerFb=()=>{},this._stack={paused:!1,loopPosition:0,fallThrough:!1}}dispose(){this._handlers=Object.create(null),this._handlerFb=()=>{},this._active=ju}registerHandler(e,i){this._handlers[e]===void 0&&(this._handlers[e]=[]);let n=this._handlers[e];return n.push(i),{dispose:()=>{let r=n.indexOf(i);r!==-1&&n.splice(r,1)}}}clearHandler(e){this._handlers[e]&&delete this._handlers[e]}setHandlerFallback(e){this._handlerFb=e}reset(){if(this._active.length)for(let e=this._stack.paused?this._stack.loopPosition-1:this._active.length-1;e>=0;--e)this._active[e].unhook(!1);this._stack.paused=!1,this._active=ju,this._ident=0}hook(e,i){if(this.reset(),this._ident=e,this._active=this._handlers[e]||ju,!this._active.length)this._handlerFb(this._ident,"HOOK",i);else for(let n=this._active.length-1;n>=0;n--)this._active[n].hook(i)}put(e,i,n){if(!this._active.length)this._handlerFb(this._ident,"PUT",kO(e,i,n));else for(let r=this._active.length-1;r>=0;r--)this._active[r].put(e,i,n)}unhook(e,i=!0){if(!this._active.length)this._handlerFb(this._ident,"UNHOOK",e);else{let n=!1,r=this._active.length-1,s=!1;if(this._stack.paused&&(r=this._stack.loopPosition-1,n=i,s=this._stack.fallThrough,this._stack.paused=!1),!s&&n===!1){for(;r>=0&&(n=this._active[r].unhook(e),n!==!0);r--)if(n instanceof Promise)return this._stack.paused=!0,this._stack.loopPosition=r,this._stack.fallThrough=!1,n;r--}for(;r>=0;r--)if(n=this._active[r].unhook(!1),n instanceof Promise)return this._stack.paused=!0,this._stack.loopPosition=r,this._stack.fallThrough=!0,n}this._active=ju,this._ident=0}},of=new fz;of.addParam(0);var wR=class{constructor(t){this._handler=t,this._data="",this._params=of,this._hitLimit=!1}hook(t){this._params=t.length>1||t.params[0]?t.clone():of,this._data="",this._hitLimit=!1}put(t,e,i){this._hitLimit||(this._data+=kO(t,e,i),this._data.length>1e7&&(this._data="",this._hitLimit=!0))}unhook(t){let e=!1;if(this._hitLimit)e=!1;else if(t&&(e=this._handler(this._data,this._params),e instanceof Promise))return e.then(i=>(this._params=of,this._data="",this._hitLimit=!1,i));return this._params=of,this._data="",this._hitLimit=!1,e}},sse=class{constructor(e){this.table=new Uint8Array(e)}setDefault(e,i){this.table.fill(e<<4|i)}add(e,i,n,r){this.table[i<<8|e]=n<<4|r}addMany(e,i,n,r){for(let s=0;sc),i=(l,c)=>e.slice(l,c),n=i(32,127),r=i(0,24);r.push(25),r.push.apply(r,i(28,32));let s=i(0,14),o;t.setDefault(1,0),t.addMany(n,0,2,0);for(o in s)t.addMany([24,26,153,154],o,3,0),t.addMany(i(128,144),o,3,0),t.addMany(i(144,152),o,3,0),t.add(156,o,0,0),t.add(27,o,11,1),t.add(157,o,4,8),t.addMany([152,158,159],o,0,7),t.add(155,o,11,3),t.add(144,o,11,9);return t.addMany(r,0,3,0),t.addMany(r,1,3,1),t.add(127,1,0,1),t.addMany(r,8,0,8),t.addMany(r,3,3,3),t.add(127,3,0,3),t.addMany(r,4,3,4),t.add(127,4,0,4),t.addMany(r,6,3,6),t.addMany(r,5,3,5),t.add(127,5,0,5),t.addMany(r,2,3,2),t.add(127,2,0,2),t.add(93,1,4,8),t.addMany(n,8,5,8),t.add(127,8,5,8),t.addMany([156,27,24,26,7],8,6,0),t.addMany(i(28,32),8,0,8),t.addMany([88,94,95],1,0,7),t.addMany(n,7,0,7),t.addMany(r,7,0,7),t.add(156,7,0,0),t.add(127,7,0,7),t.add(91,1,11,3),t.addMany(i(64,127),3,7,0),t.addMany(i(48,60),3,8,4),t.addMany([60,61,62,63],3,9,4),t.addMany(i(48,60),4,8,4),t.addMany(i(64,127),4,7,0),t.addMany([60,61,62,63],4,0,6),t.addMany(i(32,64),6,0,6),t.add(127,6,0,6),t.addMany(i(64,127),6,0,0),t.addMany(i(32,48),3,9,5),t.addMany(i(32,48),5,9,5),t.addMany(i(48,64),5,0,6),t.addMany(i(64,127),5,7,0),t.addMany(i(32,48),4,9,5),t.addMany(i(32,48),1,9,2),t.addMany(i(32,48),2,9,2),t.addMany(i(48,127),2,10,0),t.addMany(i(48,80),1,10,0),t.addMany(i(81,88),1,10,0),t.addMany([89,90,92],1,10,0),t.addMany(i(96,127),1,10,0),t.add(80,1,11,9),t.addMany(r,9,0,9),t.add(127,9,0,9),t.addMany(i(28,32),9,0,9),t.addMany(i(32,48),9,9,12),t.addMany(i(48,60),9,8,10),t.addMany([60,61,62,63],9,9,10),t.addMany(r,11,0,11),t.addMany(i(32,128),11,0,11),t.addMany(i(28,32),11,0,11),t.addMany(r,10,0,10),t.add(127,10,0,10),t.addMany(i(28,32),10,0,10),t.addMany(i(48,60),10,8,10),t.addMany([60,61,62,63],10,0,11),t.addMany(i(32,48),10,9,12),t.addMany(r,12,0,12),t.add(127,12,0,12),t.addMany(i(28,32),12,0,12),t.addMany(i(32,48),12,9,12),t.addMany(i(48,64),12,0,11),t.addMany(i(64,127),12,12,13),t.addMany(i(64,127),10,12,13),t.addMany(i(64,127),9,12,13),t.addMany(r,13,13,13),t.addMany(n,13,13,13),t.add(127,13,0,13),t.addMany([27,156,24,26],13,14,0),t.add(Sr,0,2,0),t.add(Sr,8,5,8),t.add(Sr,6,0,6),t.add(Sr,11,0,11),t.add(Sr,13,13,13),t})(),ase=class extends We{constructor(e=ose){super(),this._transitions=e,this._parseStack={state:0,handlers:[],handlerPos:0,transition:0,chunkPos:0},this.initialState=0,this.currentState=this.initialState,this._params=new fz,this._params.addParam(0),this._collect=0,this.precedingJoinState=0,this._printHandlerFb=(i,n,r)=>{},this._executeHandlerFb=i=>{},this._csiHandlerFb=(i,n)=>{},this._escHandlerFb=i=>{},this._errorHandlerFb=i=>i,this._printHandler=this._printHandlerFb,this._executeHandlers=Object.create(null),this._csiHandlers=Object.create(null),this._escHandlers=Object.create(null),this._register(Bt(()=>{this._csiHandlers=Object.create(null),this._executeHandlers=Object.create(null),this._escHandlers=Object.create(null)})),this._oscParser=this._register(new nse),this._dcsParser=this._register(new rse),this._errorHandler=this._errorHandlerFb,this.registerEscHandler({final:"\\"},()=>!0)}_identifier(e,i=[64,126]){let n=0;if(e.prefix){if(e.prefix.length>1)throw new Error("only one byte as prefix supported");if(n=e.prefix.charCodeAt(0),n&&60>n||n>63)throw new Error("prefix must be in range 0x3c .. 0x3f")}if(e.intermediates){if(e.intermediates.length>2)throw new Error("only two bytes as intermediates are supported");for(let s=0;so||o>47)throw new Error("intermediate must be in range 0x20 .. 0x2f");n<<=8,n|=o}}if(e.final.length!==1)throw new Error("final must be a single byte");let r=e.final.charCodeAt(0);if(i[0]>r||r>i[1])throw new Error(`final must be in range ${i[0]} .. ${i[1]}`);return n<<=8,n|=r,n}identToString(e){let i=[];for(;e;)i.push(String.fromCharCode(e&255)),e>>=8;return i.reverse().join("")}setPrintHandler(e){this._printHandler=e}clearPrintHandler(){this._printHandler=this._printHandlerFb}registerEscHandler(e,i){let n=this._identifier(e,[48,126]);this._escHandlers[n]===void 0&&(this._escHandlers[n]=[]);let r=this._escHandlers[n];return r.push(i),{dispose:()=>{let s=r.indexOf(i);s!==-1&&r.splice(s,1)}}}clearEscHandler(e){this._escHandlers[this._identifier(e,[48,126])]&&delete this._escHandlers[this._identifier(e,[48,126])]}setEscHandlerFallback(e){this._escHandlerFb=e}setExecuteHandler(e,i){this._executeHandlers[e.charCodeAt(0)]=i}clearExecuteHandler(e){this._executeHandlers[e.charCodeAt(0)]&&delete this._executeHandlers[e.charCodeAt(0)]}setExecuteHandlerFallback(e){this._executeHandlerFb=e}registerCsiHandler(e,i){let n=this._identifier(e);this._csiHandlers[n]===void 0&&(this._csiHandlers[n]=[]);let r=this._csiHandlers[n];return r.push(i),{dispose:()=>{let s=r.indexOf(i);s!==-1&&r.splice(s,1)}}}clearCsiHandler(e){this._csiHandlers[this._identifier(e)]&&delete this._csiHandlers[this._identifier(e)]}setCsiHandlerFallback(e){this._csiHandlerFb=e}registerDcsHandler(e,i){return this._dcsParser.registerHandler(this._identifier(e),i)}clearDcsHandler(e){this._dcsParser.clearHandler(this._identifier(e))}setDcsHandlerFallback(e){this._dcsParser.setHandlerFallback(e)}registerOscHandler(e,i){return this._oscParser.registerHandler(e,i)}clearOscHandler(e){this._oscParser.clearHandler(e)}setOscHandlerFallback(e){this._oscParser.setHandlerFallback(e)}setErrorHandler(e){this._errorHandler=e}clearErrorHandler(){this._errorHandler=this._errorHandlerFb}reset(){this.currentState=this.initialState,this._oscParser.reset(),this._dcsParser.reset(),this._params.reset(),this._params.addParam(0),this._collect=0,this.precedingJoinState=0,this._parseStack.state!==0&&(this._parseStack.state=2,this._parseStack.handlers=[])}_preserveStack(e,i,n,r,s){this._parseStack.state=e,this._parseStack.handlers=i,this._parseStack.handlerPos=n,this._parseStack.transition=r,this._parseStack.chunkPos=s}parse(e,i,n){let r=0,s=0,o=0,l;if(this._parseStack.state)if(this._parseStack.state===2)this._parseStack.state=0,o=this._parseStack.chunkPos+1;else{if(n===void 0||this._parseStack.state===1)throw this._parseStack.state=1,new Error("improper continuation due to previous async handler, giving up parsing");let c=this._parseStack.handlers,u=this._parseStack.handlerPos-1;switch(this._parseStack.state){case 3:if(n===!1&&u>-1){for(;u>=0&&(l=c[u](this._params),l!==!0);u--)if(l instanceof Promise)return this._parseStack.handlerPos=u,l}this._parseStack.handlers=[];break;case 4:if(n===!1&&u>-1){for(;u>=0&&(l=c[u](),l!==!0);u--)if(l instanceof Promise)return this._parseStack.handlerPos=u,l}this._parseStack.handlers=[];break;case 6:if(r=e[this._parseStack.chunkPos],l=this._dcsParser.unhook(r!==24&&r!==26,n),l)return l;r===27&&(this._parseStack.transition|=1),this._params.reset(),this._params.addParam(0),this._collect=0;break;case 5:if(r=e[this._parseStack.chunkPos],l=this._oscParser.end(r!==24&&r!==26,n),l)return l;r===27&&(this._parseStack.transition|=1),this._params.reset(),this._params.addParam(0),this._collect=0;break}this._parseStack.state=0,o=this._parseStack.chunkPos+1,this.precedingJoinState=0,this.currentState=this._parseStack.transition&15}for(let c=o;c>4){case 2:for(let O=c+1;;++O){if(O>=i||(r=e[O])<32||r>126&&r=i||(r=e[O])<32||r>126&&r=i||(r=e[O])<32||r>126&&r=i||(r=e[O])<32||r>126&&r=0&&(l=u[d](this._params),l!==!0);d--)if(l instanceof Promise)return this._preserveStack(3,u,d,s,c),l;d<0&&this._csiHandlerFb(this._collect<<8|r,this._params),this.precedingJoinState=0;break;case 8:do switch(r){case 59:this._params.addParam(0);break;case 58:this._params.addSubParam(-1);break;default:this._params.addDigit(r-48)}while(++c47&&r<60);c--;break;case 9:this._collect<<=8,this._collect|=r;break;case 10:let p=this._escHandlers[this._collect<<8|r],g=p?p.length-1:-1;for(;g>=0&&(l=p[g](),l!==!0);g--)if(l instanceof Promise)return this._preserveStack(4,p,g,s,c),l;g<0&&this._escHandlerFb(this._collect<<8|r),this.precedingJoinState=0;break;case 11:this._params.reset(),this._params.addParam(0),this._collect=0;break;case 12:this._dcsParser.hook(this._collect<<8|r,this._params);break;case 13:for(let O=c+1;;++O)if(O>=i||(r=e[O])===24||r===26||r===27||r>127&&r=i||(r=e[O])<32||r>127&&r>4:s>>8}return n}}function Zy(t,e){let i=t.toString(16),n=i.length<2?"0"+i:i;switch(e){case 4:return i[0];case 8:return n;case 12:return(n+n).slice(0,3);default:return n+n}}function hse(t,e=16){let[i,n,r]=t;return`rgb:${Zy(i,e)}/${Zy(n,e)}/${Zy(r,e)}`}var use={"(":0,")":1,"*":2,"+":3,"-":1,".":2},sa=131072,kR=10;function TR(t,e){if(t>24)return e.setWinLines||!1;switch(t){case 1:return!!e.restoreWin;case 2:return!!e.minimizeWin;case 3:return!!e.setWinPosition;case 4:return!!e.setWinSizePixels;case 5:return!!e.raiseWin;case 6:return!!e.lowerWin;case 7:return!!e.refreshWin;case 8:return!!e.setWinSizeChars;case 9:return!!e.maximizeWin;case 10:return!!e.fullscreenWin;case 11:return!!e.getWinState;case 13:return!!e.getWinPosition;case 14:return!!e.getWinSizePixels;case 15:return!!e.getScreenSizePixels;case 16:return!!e.getCellSizePixels;case 18:return!!e.getWinSizeChars;case 19:return!!e.getScreenSizeChars;case 20:return!!e.getIconTitle;case 21:return!!e.getWinTitle;case 22:return!!e.pushTitle;case 23:return!!e.popTitle;case 24:return!!e.setWinLines}return!1}var AR=5e3,ER=0,fse=class extends We{constructor(t,e,i,n,r,s,o,l,c=new ase){super(),this._bufferService=t,this._charsetService=e,this._coreService=i,this._logService=n,this._optionsService=r,this._oscLinkService=s,this._coreMouseService=o,this._unicodeService=l,this._parser=c,this._parseBuffer=new Uint32Array(4096),this._stringDecoder=new Pie,this._utf8Decoder=new Rie,this._windowTitle="",this._iconName="",this._windowTitleStack=[],this._iconNameStack=[],this._curAttrData=oi.clone(),this._eraseAttrDataInternal=oi.clone(),this._onRequestBell=this._register(new me),this.onRequestBell=this._onRequestBell.event,this._onRequestRefreshRows=this._register(new me),this.onRequestRefreshRows=this._onRequestRefreshRows.event,this._onRequestReset=this._register(new me),this.onRequestReset=this._onRequestReset.event,this._onRequestSendFocus=this._register(new me),this.onRequestSendFocus=this._onRequestSendFocus.event,this._onRequestSyncScrollBar=this._register(new me),this.onRequestSyncScrollBar=this._onRequestSyncScrollBar.event,this._onRequestWindowsOptionsReport=this._register(new me),this.onRequestWindowsOptionsReport=this._onRequestWindowsOptionsReport.event,this._onA11yChar=this._register(new me),this.onA11yChar=this._onA11yChar.event,this._onA11yTab=this._register(new me),this.onA11yTab=this._onA11yTab.event,this._onCursorMove=this._register(new me),this.onCursorMove=this._onCursorMove.event,this._onLineFeed=this._register(new me),this.onLineFeed=this._onLineFeed.event,this._onScroll=this._register(new me),this.onScroll=this._onScroll.event,this._onTitleChange=this._register(new me),this.onTitleChange=this._onTitleChange.event,this._onColor=this._register(new me),this.onColor=this._onColor.event,this._parseStack={paused:!1,cursorStartX:0,cursorStartY:0,decodedLength:0,position:0},this._specialColors=[256,257,258],this._register(this._parser),this._dirtyRowTracker=new kS(this._bufferService),this._activeBuffer=this._bufferService.buffer,this._register(this._bufferService.buffers.onBufferActivate(u=>this._activeBuffer=u.activeBuffer)),this._parser.setCsiHandlerFallback((u,d)=>{this._logService.debug("Unknown CSI code: ",{identifier:this._parser.identToString(u),params:d.toArray()})}),this._parser.setEscHandlerFallback(u=>{this._logService.debug("Unknown ESC code: ",{identifier:this._parser.identToString(u)})}),this._parser.setExecuteHandlerFallback(u=>{this._logService.debug("Unknown EXECUTE code: ",{code:u})}),this._parser.setOscHandlerFallback((u,d,p)=>{this._logService.debug("Unknown OSC code: ",{identifier:u,action:d,data:p})}),this._parser.setDcsHandlerFallback((u,d,p)=>{d==="HOOK"&&(p=p.toArray()),this._logService.debug("Unknown DCS code: ",{identifier:this._parser.identToString(u),action:d,payload:p})}),this._parser.setPrintHandler((u,d,p)=>this.print(u,d,p)),this._parser.registerCsiHandler({final:"@"},u=>this.insertChars(u)),this._parser.registerCsiHandler({intermediates:" ",final:"@"},u=>this.scrollLeft(u)),this._parser.registerCsiHandler({final:"A"},u=>this.cursorUp(u)),this._parser.registerCsiHandler({intermediates:" ",final:"A"},u=>this.scrollRight(u)),this._parser.registerCsiHandler({final:"B"},u=>this.cursorDown(u)),this._parser.registerCsiHandler({final:"C"},u=>this.cursorForward(u)),this._parser.registerCsiHandler({final:"D"},u=>this.cursorBackward(u)),this._parser.registerCsiHandler({final:"E"},u=>this.cursorNextLine(u)),this._parser.registerCsiHandler({final:"F"},u=>this.cursorPrecedingLine(u)),this._parser.registerCsiHandler({final:"G"},u=>this.cursorCharAbsolute(u)),this._parser.registerCsiHandler({final:"H"},u=>this.cursorPosition(u)),this._parser.registerCsiHandler({final:"I"},u=>this.cursorForwardTab(u)),this._parser.registerCsiHandler({final:"J"},u=>this.eraseInDisplay(u,!1)),this._parser.registerCsiHandler({prefix:"?",final:"J"},u=>this.eraseInDisplay(u,!0)),this._parser.registerCsiHandler({final:"K"},u=>this.eraseInLine(u,!1)),this._parser.registerCsiHandler({prefix:"?",final:"K"},u=>this.eraseInLine(u,!0)),this._parser.registerCsiHandler({final:"L"},u=>this.insertLines(u)),this._parser.registerCsiHandler({final:"M"},u=>this.deleteLines(u)),this._parser.registerCsiHandler({final:"P"},u=>this.deleteChars(u)),this._parser.registerCsiHandler({final:"S"},u=>this.scrollUp(u)),this._parser.registerCsiHandler({final:"T"},u=>this.scrollDown(u)),this._parser.registerCsiHandler({final:"X"},u=>this.eraseChars(u)),this._parser.registerCsiHandler({final:"Z"},u=>this.cursorBackwardTab(u)),this._parser.registerCsiHandler({final:"`"},u=>this.charPosAbsolute(u)),this._parser.registerCsiHandler({final:"a"},u=>this.hPositionRelative(u)),this._parser.registerCsiHandler({final:"b"},u=>this.repeatPrecedingCharacter(u)),this._parser.registerCsiHandler({final:"c"},u=>this.sendDeviceAttributesPrimary(u)),this._parser.registerCsiHandler({prefix:">",final:"c"},u=>this.sendDeviceAttributesSecondary(u)),this._parser.registerCsiHandler({final:"d"},u=>this.linePosAbsolute(u)),this._parser.registerCsiHandler({final:"e"},u=>this.vPositionRelative(u)),this._parser.registerCsiHandler({final:"f"},u=>this.hVPosition(u)),this._parser.registerCsiHandler({final:"g"},u=>this.tabClear(u)),this._parser.registerCsiHandler({final:"h"},u=>this.setMode(u)),this._parser.registerCsiHandler({prefix:"?",final:"h"},u=>this.setModePrivate(u)),this._parser.registerCsiHandler({final:"l"},u=>this.resetMode(u)),this._parser.registerCsiHandler({prefix:"?",final:"l"},u=>this.resetModePrivate(u)),this._parser.registerCsiHandler({final:"m"},u=>this.charAttributes(u)),this._parser.registerCsiHandler({final:"n"},u=>this.deviceStatus(u)),this._parser.registerCsiHandler({prefix:"?",final:"n"},u=>this.deviceStatusPrivate(u)),this._parser.registerCsiHandler({intermediates:"!",final:"p"},u=>this.softReset(u)),this._parser.registerCsiHandler({intermediates:" ",final:"q"},u=>this.setCursorStyle(u)),this._parser.registerCsiHandler({final:"r"},u=>this.setScrollRegion(u)),this._parser.registerCsiHandler({final:"s"},u=>this.saveCursor(u)),this._parser.registerCsiHandler({final:"t"},u=>this.windowOptions(u)),this._parser.registerCsiHandler({final:"u"},u=>this.restoreCursor(u)),this._parser.registerCsiHandler({intermediates:"'",final:"}"},u=>this.insertColumns(u)),this._parser.registerCsiHandler({intermediates:"'",final:"~"},u=>this.deleteColumns(u)),this._parser.registerCsiHandler({intermediates:'"',final:"q"},u=>this.selectProtected(u)),this._parser.registerCsiHandler({intermediates:"$",final:"p"},u=>this.requestMode(u,!0)),this._parser.registerCsiHandler({prefix:"?",intermediates:"$",final:"p"},u=>this.requestMode(u,!1)),this._parser.setExecuteHandler(ce.BEL,()=>this.bell()),this._parser.setExecuteHandler(ce.LF,()=>this.lineFeed()),this._parser.setExecuteHandler(ce.VT,()=>this.lineFeed()),this._parser.setExecuteHandler(ce.FF,()=>this.lineFeed()),this._parser.setExecuteHandler(ce.CR,()=>this.carriageReturn()),this._parser.setExecuteHandler(ce.BS,()=>this.backspace()),this._parser.setExecuteHandler(ce.HT,()=>this.tab()),this._parser.setExecuteHandler(ce.SO,()=>this.shiftOut()),this._parser.setExecuteHandler(ce.SI,()=>this.shiftIn()),this._parser.setExecuteHandler(ig.IND,()=>this.index()),this._parser.setExecuteHandler(ig.NEL,()=>this.nextLine()),this._parser.setExecuteHandler(ig.HTS,()=>this.tabSet()),this._parser.registerOscHandler(0,new Jn(u=>(this.setTitle(u),this.setIconName(u),!0))),this._parser.registerOscHandler(1,new Jn(u=>this.setIconName(u))),this._parser.registerOscHandler(2,new Jn(u=>this.setTitle(u))),this._parser.registerOscHandler(4,new Jn(u=>this.setOrReportIndexedColor(u))),this._parser.registerOscHandler(8,new Jn(u=>this.setHyperlink(u))),this._parser.registerOscHandler(10,new Jn(u=>this.setOrReportFgColor(u))),this._parser.registerOscHandler(11,new Jn(u=>this.setOrReportBgColor(u))),this._parser.registerOscHandler(12,new Jn(u=>this.setOrReportCursorColor(u))),this._parser.registerOscHandler(104,new Jn(u=>this.restoreIndexedColor(u))),this._parser.registerOscHandler(110,new Jn(u=>this.restoreFgColor(u))),this._parser.registerOscHandler(111,new Jn(u=>this.restoreBgColor(u))),this._parser.registerOscHandler(112,new Jn(u=>this.restoreCursorColor(u))),this._parser.registerEscHandler({final:"7"},()=>this.saveCursor()),this._parser.registerEscHandler({final:"8"},()=>this.restoreCursor()),this._parser.registerEscHandler({final:"D"},()=>this.index()),this._parser.registerEscHandler({final:"E"},()=>this.nextLine()),this._parser.registerEscHandler({final:"H"},()=>this.tabSet()),this._parser.registerEscHandler({final:"M"},()=>this.reverseIndex()),this._parser.registerEscHandler({final:"="},()=>this.keypadApplicationMode()),this._parser.registerEscHandler({final:">"},()=>this.keypadNumericMode()),this._parser.registerEscHandler({final:"c"},()=>this.fullReset()),this._parser.registerEscHandler({final:"n"},()=>this.setgLevel(2)),this._parser.registerEscHandler({final:"o"},()=>this.setgLevel(3)),this._parser.registerEscHandler({final:"|"},()=>this.setgLevel(3)),this._parser.registerEscHandler({final:"}"},()=>this.setgLevel(2)),this._parser.registerEscHandler({final:"~"},()=>this.setgLevel(1)),this._parser.registerEscHandler({intermediates:"%",final:"@"},()=>this.selectDefaultCharset()),this._parser.registerEscHandler({intermediates:"%",final:"G"},()=>this.selectDefaultCharset());for(let u in yi)this._parser.registerEscHandler({intermediates:"(",final:u},()=>this.selectCharset("("+u)),this._parser.registerEscHandler({intermediates:")",final:u},()=>this.selectCharset(")"+u)),this._parser.registerEscHandler({intermediates:"*",final:u},()=>this.selectCharset("*"+u)),this._parser.registerEscHandler({intermediates:"+",final:u},()=>this.selectCharset("+"+u)),this._parser.registerEscHandler({intermediates:"-",final:u},()=>this.selectCharset("-"+u)),this._parser.registerEscHandler({intermediates:".",final:u},()=>this.selectCharset("."+u)),this._parser.registerEscHandler({intermediates:"/",final:u},()=>this.selectCharset("/"+u));this._parser.registerEscHandler({intermediates:"#",final:"8"},()=>this.screenAlignmentPattern()),this._parser.setErrorHandler(u=>(this._logService.error("Parsing error: ",u),u)),this._parser.registerDcsHandler({intermediates:"$",final:"q"},new wR((u,d)=>this.requestStatusString(u,d)))}getAttrData(){return this._curAttrData}_preserveStack(t,e,i,n){this._parseStack.paused=!0,this._parseStack.cursorStartX=t,this._parseStack.cursorStartY=e,this._parseStack.decodedLength=i,this._parseStack.position=n}_logSlowResolvingAsync(t){this._logService.logLevel<=3&&Promise.race([t,new Promise((e,i)=>setTimeout(()=>i("#SLOW_TIMEOUT"),AR))]).catch(e=>{if(e!=="#SLOW_TIMEOUT")throw e;console.warn(`async parser handler taking longer than ${AR} ms`)})}_getCurrentLinkId(){return this._curAttrData.extended.urlId}parse(t,e){let i,n=this._activeBuffer.x,r=this._activeBuffer.y,s=0,o=this._parseStack.paused;if(o){if(i=this._parser.parse(this._parseBuffer,this._parseStack.decodedLength,e))return this._logSlowResolvingAsync(i),i;n=this._parseStack.cursorStartX,r=this._parseStack.cursorStartY,this._parseStack.paused=!1,t.length>sa&&(s=this._parseStack.position+sa)}if(this._logService.logLevel<=1&&this._logService.debug(`parsing data ${typeof t=="string"?` "${t}"`:` "${Array.prototype.map.call(t,u=>String.fromCharCode(u)).join("")}"`}`),this._logService.logLevel===0&&this._logService.trace("parsing data (codes)",typeof t=="string"?t.split("").map(u=>u.charCodeAt(0)):t),this._parseBuffer.lengthsa)for(let u=s;u0&&p.getWidth(this._activeBuffer.x-1)===2&&p.setCellFromCodepoint(this._activeBuffer.x-1,0,1,d);let g=this._parser.precedingJoinState;for(let O=e;Ol){if(c){let w=p,k=this._activeBuffer.x-x;for(this._activeBuffer.x=x,this._activeBuffer.y++,this._activeBuffer.y===this._activeBuffer.scrollBottom+1?(this._activeBuffer.y--,this._bufferService.scroll(this._eraseAttrData(),!0)):(this._activeBuffer.y>=this._bufferService.rows&&(this._activeBuffer.y=this._bufferService.rows-1),this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y).isWrapped=!0),p=this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y),x>0&&p instanceof rf&&p.copyCellsFrom(w,k,0,x,!1);k=0;)p.setCellFromCodepoint(this._activeBuffer.x++,0,0,d);continue}if(u&&(p.insertCells(this._activeBuffer.x,r-x,this._activeBuffer.getNullCell(d)),p.getWidth(l-1)===2&&p.setCellFromCodepoint(l-1,0,1,d)),p.setCellFromCodepoint(this._activeBuffer.x++,n,r,d),r>0)for(;--r;)p.setCellFromCodepoint(this._activeBuffer.x++,0,0,d)}this._parser.precedingJoinState=g,this._activeBuffer.x0&&p.getWidth(this._activeBuffer.x)===0&&!p.hasContent(this._activeBuffer.x)&&p.setCellFromCodepoint(this._activeBuffer.x,0,1,d),this._dirtyRowTracker.markDirty(this._activeBuffer.y)}registerCsiHandler(t,e){return t.final==="t"&&!t.prefix&&!t.intermediates?this._parser.registerCsiHandler(t,i=>TR(i.params[0],this._optionsService.rawOptions.windowOptions)?e(i):!0):this._parser.registerCsiHandler(t,e)}registerDcsHandler(t,e){return this._parser.registerDcsHandler(t,new wR(e))}registerEscHandler(t,e){return this._parser.registerEscHandler(t,e)}registerOscHandler(t,e){return this._parser.registerOscHandler(t,new Jn(e))}bell(){return this._onRequestBell.fire(),!0}lineFeed(){return this._dirtyRowTracker.markDirty(this._activeBuffer.y),this._optionsService.rawOptions.convertEol&&(this._activeBuffer.x=0),this._activeBuffer.y++,this._activeBuffer.y===this._activeBuffer.scrollBottom+1?(this._activeBuffer.y--,this._bufferService.scroll(this._eraseAttrData())):this._activeBuffer.y>=this._bufferService.rows?this._activeBuffer.y=this._bufferService.rows-1:this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y).isWrapped=!1,this._activeBuffer.x>=this._bufferService.cols&&this._activeBuffer.x--,this._dirtyRowTracker.markDirty(this._activeBuffer.y),this._onLineFeed.fire(),!0}carriageReturn(){return this._activeBuffer.x=0,!0}backspace(){var t;if(!this._coreService.decPrivateModes.reverseWraparound)return this._restrictCursor(),this._activeBuffer.x>0&&this._activeBuffer.x--,!0;if(this._restrictCursor(this._bufferService.cols),this._activeBuffer.x>0)this._activeBuffer.x--;else if(this._activeBuffer.x===0&&this._activeBuffer.y>this._activeBuffer.scrollTop&&this._activeBuffer.y<=this._activeBuffer.scrollBottom&&((t=this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y))!=null&&t.isWrapped)){this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y).isWrapped=!1,this._activeBuffer.y--,this._activeBuffer.x=this._bufferService.cols-1;let e=this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y);e.hasWidth(this._activeBuffer.x)&&!e.hasContent(this._activeBuffer.x)&&this._activeBuffer.x--}return this._restrictCursor(),!0}tab(){if(this._activeBuffer.x>=this._bufferService.cols)return!0;let t=this._activeBuffer.x;return this._activeBuffer.x=this._activeBuffer.nextStop(),this._optionsService.rawOptions.screenReaderMode&&this._onA11yTab.fire(this._activeBuffer.x-t),!0}shiftOut(){return this._charsetService.setgLevel(1),!0}shiftIn(){return this._charsetService.setgLevel(0),!0}_restrictCursor(t=this._bufferService.cols-1){this._activeBuffer.x=Math.min(t,Math.max(0,this._activeBuffer.x)),this._activeBuffer.y=this._coreService.decPrivateModes.origin?Math.min(this._activeBuffer.scrollBottom,Math.max(this._activeBuffer.scrollTop,this._activeBuffer.y)):Math.min(this._bufferService.rows-1,Math.max(0,this._activeBuffer.y)),this._dirtyRowTracker.markDirty(this._activeBuffer.y)}_setCursor(t,e){this._dirtyRowTracker.markDirty(this._activeBuffer.y),this._coreService.decPrivateModes.origin?(this._activeBuffer.x=t,this._activeBuffer.y=this._activeBuffer.scrollTop+e):(this._activeBuffer.x=t,this._activeBuffer.y=e),this._restrictCursor(),this._dirtyRowTracker.markDirty(this._activeBuffer.y)}_moveCursor(t,e){this._restrictCursor(),this._setCursor(this._activeBuffer.x+t,this._activeBuffer.y+e)}cursorUp(t){let e=this._activeBuffer.y-this._activeBuffer.scrollTop;return e>=0?this._moveCursor(0,-Math.min(e,t.params[0]||1)):this._moveCursor(0,-(t.params[0]||1)),!0}cursorDown(t){let e=this._activeBuffer.scrollBottom-this._activeBuffer.y;return e>=0?this._moveCursor(0,Math.min(e,t.params[0]||1)):this._moveCursor(0,t.params[0]||1),!0}cursorForward(t){return this._moveCursor(t.params[0]||1,0),!0}cursorBackward(t){return this._moveCursor(-(t.params[0]||1),0),!0}cursorNextLine(t){return this.cursorDown(t),this._activeBuffer.x=0,!0}cursorPrecedingLine(t){return this.cursorUp(t),this._activeBuffer.x=0,!0}cursorCharAbsolute(t){return this._setCursor((t.params[0]||1)-1,this._activeBuffer.y),!0}cursorPosition(t){return this._setCursor(t.length>=2?(t.params[1]||1)-1:0,(t.params[0]||1)-1),!0}charPosAbsolute(t){return this._setCursor((t.params[0]||1)-1,this._activeBuffer.y),!0}hPositionRelative(t){return this._moveCursor(t.params[0]||1,0),!0}linePosAbsolute(t){return this._setCursor(this._activeBuffer.x,(t.params[0]||1)-1),!0}vPositionRelative(t){return this._moveCursor(0,t.params[0]||1),!0}hVPosition(t){return this.cursorPosition(t),!0}tabClear(t){let e=t.params[0];return e===0?delete this._activeBuffer.tabs[this._activeBuffer.x]:e===3&&(this._activeBuffer.tabs={}),!0}cursorForwardTab(t){if(this._activeBuffer.x>=this._bufferService.cols)return!0;let e=t.params[0]||1;for(;e--;)this._activeBuffer.x=this._activeBuffer.nextStop();return!0}cursorBackwardTab(t){if(this._activeBuffer.x>=this._bufferService.cols)return!0;let e=t.params[0]||1;for(;e--;)this._activeBuffer.x=this._activeBuffer.prevStop();return!0}selectProtected(t){let e=t.params[0];return e===1&&(this._curAttrData.bg|=536870912),(e===2||e===0)&&(this._curAttrData.bg&=-536870913),!0}_eraseInBufferLine(t,e,i,n=!1,r=!1){let s=this._activeBuffer.lines.get(this._activeBuffer.ybase+t);s.replaceCells(e,i,this._activeBuffer.getNullCell(this._eraseAttrData()),r),n&&(s.isWrapped=!1)}_resetBufferLine(t,e=!1){let i=this._activeBuffer.lines.get(this._activeBuffer.ybase+t);i&&(i.fill(this._activeBuffer.getNullCell(this._eraseAttrData()),e),this._bufferService.buffer.clearMarkers(this._activeBuffer.ybase+t),i.isWrapped=!1)}eraseInDisplay(t,e=!1){var n;this._restrictCursor(this._bufferService.cols);let i;switch(t.params[0]){case 0:for(i=this._activeBuffer.y,this._dirtyRowTracker.markDirty(i),this._eraseInBufferLine(i++,this._activeBuffer.x,this._bufferService.cols,this._activeBuffer.x===0,e);i=this._bufferService.cols&&(this._activeBuffer.lines.get(i+1).isWrapped=!1);i--;)this._resetBufferLine(i,e);this._dirtyRowTracker.markDirty(0);break;case 2:if(this._optionsService.rawOptions.scrollOnEraseInDisplay){for(i=this._bufferService.rows,this._dirtyRowTracker.markRangeDirty(0,i-1);i--&&!((n=this._activeBuffer.lines.get(this._activeBuffer.ybase+i))!=null&&n.getTrimmedLength()););for(;i>=0;i--)this._bufferService.scroll(this._eraseAttrData())}else{for(i=this._bufferService.rows,this._dirtyRowTracker.markDirty(i-1);i--;)this._resetBufferLine(i,e);this._dirtyRowTracker.markDirty(0)}break;case 3:let r=this._activeBuffer.lines.length-this._bufferService.rows;r>0&&(this._activeBuffer.lines.trimStart(r),this._activeBuffer.ybase=Math.max(this._activeBuffer.ybase-r,0),this._activeBuffer.ydisp=Math.max(this._activeBuffer.ydisp-r,0),this._onScroll.fire(0));break}return!0}eraseInLine(t,e=!1){switch(this._restrictCursor(this._bufferService.cols),t.params[0]){case 0:this._eraseInBufferLine(this._activeBuffer.y,this._activeBuffer.x,this._bufferService.cols,this._activeBuffer.x===0,e);break;case 1:this._eraseInBufferLine(this._activeBuffer.y,0,this._activeBuffer.x+1,!1,e);break;case 2:this._eraseInBufferLine(this._activeBuffer.y,0,this._bufferService.cols,!0,e);break}return this._dirtyRowTracker.markDirty(this._activeBuffer.y),!0}insertLines(t){this._restrictCursor();let e=t.params[0]||1;if(this._activeBuffer.y>this._activeBuffer.scrollBottom||this._activeBuffer.ythis._activeBuffer.scrollBottom||this._activeBuffer.ythis._activeBuffer.scrollBottom||this._activeBuffer.ythis._activeBuffer.scrollBottom||this._activeBuffer.ythis._activeBuffer.scrollBottom||this._activeBuffer.ythis._activeBuffer.scrollBottom||this._activeBuffer.y65535?2:1}let c=l;for(let u=1;u0||(this._is("xterm")||this._is("rxvt-unicode")||this._is("screen")?this._coreService.triggerDataEvent(ce.ESC+"[?1;2c"):this._is("linux")&&this._coreService.triggerDataEvent(ce.ESC+"[?6c")),!0}sendDeviceAttributesSecondary(t){return t.params[0]>0||(this._is("xterm")?this._coreService.triggerDataEvent(ce.ESC+"[>0;276;0c"):this._is("rxvt-unicode")?this._coreService.triggerDataEvent(ce.ESC+"[>85;95;0c"):this._is("linux")?this._coreService.triggerDataEvent(t.params[0]+"c"):this._is("screen")&&this._coreService.triggerDataEvent(ce.ESC+"[>83;40003;0c")),!0}_is(t){return(this._optionsService.rawOptions.termName+"").indexOf(t)===0}setMode(t){for(let e=0;e(b[b.NOT_RECOGNIZED=0]="NOT_RECOGNIZED",b[b.SET=1]="SET",b[b.RESET=2]="RESET",b[b.PERMANENTLY_SET=3]="PERMANENTLY_SET",b[b.PERMANENTLY_RESET=4]="PERMANENTLY_RESET"))(void 0||(i={}));let n=this._coreService.decPrivateModes,{activeProtocol:r,activeEncoding:s}=this._coreMouseService,o=this._coreService,{buffers:l,cols:c}=this._bufferService,{active:u,alt:d}=l,p=this._optionsService.rawOptions,g=(b,x)=>(o.triggerDataEvent(`${ce.ESC}[${e?"":"?"}${b};${x}$y`),!0),O=b=>b?1:2,_=t.params[0];return e?_===2?g(_,4):_===4?g(_,O(o.modes.insertMode)):_===12?g(_,3):_===20?g(_,O(p.convertEol)):g(_,0):_===1?g(_,O(n.applicationCursorKeys)):_===3?g(_,p.windowOptions.setWinLines?c===80?2:c===132?1:0:0):_===6?g(_,O(n.origin)):_===7?g(_,O(n.wraparound)):_===8?g(_,3):_===9?g(_,O(r==="X10")):_===12?g(_,O(p.cursorBlink)):_===25?g(_,O(!o.isCursorHidden)):_===45?g(_,O(n.reverseWraparound)):_===66?g(_,O(n.applicationKeypad)):_===67?g(_,4):_===1e3?g(_,O(r==="VT200")):_===1002?g(_,O(r==="DRAG")):_===1003?g(_,O(r==="ANY")):_===1004?g(_,O(n.sendFocus)):_===1005?g(_,4):_===1006?g(_,O(s==="SGR")):_===1015?g(_,4):_===1016?g(_,O(s==="SGR_PIXELS")):_===1048?g(_,1):_===47||_===1047||_===1049?g(_,O(u===d)):_===2004?g(_,O(n.bracketedPasteMode)):_===2026?g(_,O(n.synchronizedOutput)):g(_,0)}_updateAttrColor(t,e,i,n,r){return e===2?(t|=50331648,t&=-16777216,t|=bd.fromColorRGB([i,n,r])):e===5&&(t&=-50331904,t|=33554432|i&255),t}_extractColor(t,e,i){let n=[0,0,-1,0,0,0],r=0,s=0;do{if(n[s+r]=t.params[e+s],t.hasSubParams(e+s)){let o=t.getSubParams(e+s),l=0;do n[1]===5&&(r=1),n[s+l+1+r]=o[l];while(++l=2||n[1]===2&&s+r>=5)break;n[1]&&(r=1)}while(++s+e5)&&(t=1),e.extended.underlineStyle=t,e.fg|=268435456,t===0&&(e.fg&=-268435457),e.updateExtended()}_processSGR0(t){t.fg=oi.fg,t.bg=oi.bg,t.extended=t.extended.clone(),t.extended.underlineStyle=0,t.extended.underlineColor&=-67108864,t.updateExtended()}charAttributes(t){if(t.length===1&&t.params[0]===0)return this._processSGR0(this._curAttrData),!0;let e=t.length,i,n=this._curAttrData;for(let r=0;r=30&&i<=37?(n.fg&=-50331904,n.fg|=16777216|i-30):i>=40&&i<=47?(n.bg&=-50331904,n.bg|=16777216|i-40):i>=90&&i<=97?(n.fg&=-50331904,n.fg|=16777216|i-90|8):i>=100&&i<=107?(n.bg&=-50331904,n.bg|=16777216|i-100|8):i===0?this._processSGR0(n):i===1?n.fg|=134217728:i===3?n.bg|=67108864:i===4?(n.fg|=268435456,this._processUnderline(t.hasSubParams(r)?t.getSubParams(r)[0]:1,n)):i===5?n.fg|=536870912:i===7?n.fg|=67108864:i===8?n.fg|=1073741824:i===9?n.fg|=2147483648:i===2?n.bg|=134217728:i===21?this._processUnderline(2,n):i===22?(n.fg&=-134217729,n.bg&=-134217729):i===23?n.bg&=-67108865:i===24?(n.fg&=-268435457,this._processUnderline(0,n)):i===25?n.fg&=-536870913:i===27?n.fg&=-67108865:i===28?n.fg&=-1073741825:i===29?n.fg&=2147483647:i===39?(n.fg&=-67108864,n.fg|=oi.fg&16777215):i===49?(n.bg&=-67108864,n.bg|=oi.bg&16777215):i===38||i===48||i===58?r+=this._extractColor(t,r,n):i===53?n.bg|=1073741824:i===55?n.bg&=-1073741825:i===59?(n.extended=n.extended.clone(),n.extended.underlineColor=-1,n.updateExtended()):i===100?(n.fg&=-67108864,n.fg|=oi.fg&16777215,n.bg&=-67108864,n.bg|=oi.bg&16777215):this._logService.debug("Unknown SGR attribute: %d.",i);return!0}deviceStatus(t){switch(t.params[0]){case 5:this._coreService.triggerDataEvent(`${ce.ESC}[0n`);break;case 6:let e=this._activeBuffer.y+1,i=this._activeBuffer.x+1;this._coreService.triggerDataEvent(`${ce.ESC}[${e};${i}R`);break}return!0}deviceStatusPrivate(t){switch(t.params[0]){case 6:let e=this._activeBuffer.y+1,i=this._activeBuffer.x+1;this._coreService.triggerDataEvent(`${ce.ESC}[?${e};${i}R`);break}return!0}softReset(t){return this._coreService.isCursorHidden=!1,this._onRequestSyncScrollBar.fire(),this._activeBuffer.scrollTop=0,this._activeBuffer.scrollBottom=this._bufferService.rows-1,this._curAttrData=oi.clone(),this._coreService.reset(),this._charsetService.reset(),this._activeBuffer.savedX=0,this._activeBuffer.savedY=this._activeBuffer.ybase,this._activeBuffer.savedCurAttrData.fg=this._curAttrData.fg,this._activeBuffer.savedCurAttrData.bg=this._curAttrData.bg,this._activeBuffer.savedCharset=this._charsetService.charset,this._coreService.decPrivateModes.origin=!1,!0}setCursorStyle(t){let e=t.length===0?1:t.params[0];if(e===0)this._coreService.decPrivateModes.cursorStyle=void 0,this._coreService.decPrivateModes.cursorBlink=void 0;else{switch(e){case 1:case 2:this._coreService.decPrivateModes.cursorStyle="block";break;case 3:case 4:this._coreService.decPrivateModes.cursorStyle="underline";break;case 5:case 6:this._coreService.decPrivateModes.cursorStyle="bar";break}let i=e%2===1;this._coreService.decPrivateModes.cursorBlink=i}return!0}setScrollRegion(t){let e=t.params[0]||1,i;return(t.length<2||(i=t.params[1])>this._bufferService.rows||i===0)&&(i=this._bufferService.rows),i>e&&(this._activeBuffer.scrollTop=e-1,this._activeBuffer.scrollBottom=i-1,this._setCursor(0,0)),!0}windowOptions(t){if(!TR(t.params[0],this._optionsService.rawOptions.windowOptions))return!0;let e=t.length>1?t.params[1]:0;switch(t.params[0]){case 14:e!==2&&this._onRequestWindowsOptionsReport.fire(0);break;case 16:this._onRequestWindowsOptionsReport.fire(1);break;case 18:this._bufferService&&this._coreService.triggerDataEvent(`${ce.ESC}[8;${this._bufferService.rows};${this._bufferService.cols}t`);break;case 22:(e===0||e===2)&&(this._windowTitleStack.push(this._windowTitle),this._windowTitleStack.length>kR&&this._windowTitleStack.shift()),(e===0||e===1)&&(this._iconNameStack.push(this._iconName),this._iconNameStack.length>kR&&this._iconNameStack.shift());break;case 23:(e===0||e===2)&&this._windowTitleStack.length&&this.setTitle(this._windowTitleStack.pop()),(e===0||e===1)&&this._iconNameStack.length&&this.setIconName(this._iconNameStack.pop());break}return!0}saveCursor(t){return this._activeBuffer.savedX=this._activeBuffer.x,this._activeBuffer.savedY=this._activeBuffer.ybase+this._activeBuffer.y,this._activeBuffer.savedCurAttrData.fg=this._curAttrData.fg,this._activeBuffer.savedCurAttrData.bg=this._curAttrData.bg,this._activeBuffer.savedCharset=this._charsetService.charset,!0}restoreCursor(t){return this._activeBuffer.x=this._activeBuffer.savedX||0,this._activeBuffer.y=Math.max(this._activeBuffer.savedY-this._activeBuffer.ybase,0),this._curAttrData.fg=this._activeBuffer.savedCurAttrData.fg,this._curAttrData.bg=this._activeBuffer.savedCurAttrData.bg,this._charsetService.charset=this._savedCharset,this._activeBuffer.savedCharset&&(this._charsetService.charset=this._activeBuffer.savedCharset),this._restrictCursor(),!0}setTitle(t){return this._windowTitle=t,this._onTitleChange.fire(t),!0}setIconName(t){return this._iconName=t,!0}setOrReportIndexedColor(t){let e=[],i=t.split(";");for(;i.length>1;){let n=i.shift(),r=i.shift();if(/^\d+$/.exec(n)){let s=parseInt(n);if(MR(s))if(r==="?")e.push({type:0,index:s});else{let o=CR(r);o&&e.push({type:1,index:s,color:o})}}}return e.length&&this._onColor.fire(e),!0}setHyperlink(t){let e=t.indexOf(";");if(e===-1)return!0;let i=t.slice(0,e).trim(),n=t.slice(e+1);return n?this._createHyperlink(i,n):i.trim()?!1:this._finishHyperlink()}_createHyperlink(t,e){this._getCurrentLinkId()&&this._finishHyperlink();let i=t.split(":"),n,r=i.findIndex(s=>s.startsWith("id="));return r!==-1&&(n=i[r].slice(3)||void 0),this._curAttrData.extended=this._curAttrData.extended.clone(),this._curAttrData.extended.urlId=this._oscLinkService.registerLink({id:n,uri:e}),this._curAttrData.updateExtended(),!0}_finishHyperlink(){return this._curAttrData.extended=this._curAttrData.extended.clone(),this._curAttrData.extended.urlId=0,this._curAttrData.updateExtended(),!0}_setOrReportSpecialColor(t,e){let i=t.split(";");for(let n=0;n=this._specialColors.length);++n,++e)if(i[n]==="?")this._onColor.fire([{type:0,index:this._specialColors[e]}]);else{let r=CR(i[n]);r&&this._onColor.fire([{type:1,index:this._specialColors[e],color:r}])}return!0}setOrReportFgColor(t){return this._setOrReportSpecialColor(t,0)}setOrReportBgColor(t){return this._setOrReportSpecialColor(t,1)}setOrReportCursorColor(t){return this._setOrReportSpecialColor(t,2)}restoreIndexedColor(t){if(!t)return this._onColor.fire([{type:2}]),!0;let e=[],i=t.split(";");for(let n=0;n=this._bufferService.rows&&(this._activeBuffer.y=this._bufferService.rows-1),this._restrictCursor(),!0}tabSet(){return this._activeBuffer.tabs[this._activeBuffer.x]=!0,!0}reverseIndex(){if(this._restrictCursor(),this._activeBuffer.y===this._activeBuffer.scrollTop){let t=this._activeBuffer.scrollBottom-this._activeBuffer.scrollTop;this._activeBuffer.lines.shiftElements(this._activeBuffer.ybase+this._activeBuffer.y,t,1),this._activeBuffer.lines.set(this._activeBuffer.ybase+this._activeBuffer.y,this._activeBuffer.getBlankLine(this._eraseAttrData())),this._dirtyRowTracker.markRangeDirty(this._activeBuffer.scrollTop,this._activeBuffer.scrollBottom)}else this._activeBuffer.y--,this._restrictCursor();return!0}fullReset(){return this._parser.reset(),this._onRequestReset.fire(),!0}reset(){this._curAttrData=oi.clone(),this._eraseAttrDataInternal=oi.clone()}_eraseAttrData(){return this._eraseAttrDataInternal.bg&=-67108864,this._eraseAttrDataInternal.bg|=this._curAttrData.bg&67108863,this._eraseAttrDataInternal}setgLevel(t){return this._charsetService.setgLevel(t),!0}screenAlignmentPattern(){let t=new Rr;t.content=1<<22|69,t.fg=this._curAttrData.fg,t.bg=this._curAttrData.bg,this._setCursor(0,0);for(let e=0;e(this._coreService.triggerDataEvent(`${ce.ESC}${o}${ce.ESC}\\`),!0),n=this._bufferService.buffer,r=this._optionsService.rawOptions;return i(t==='"q'?`P1$r${this._curAttrData.isProtected()?1:0}"q`:t==='"p'?'P1$r61;1"p':t==="r"?`P1$r${n.scrollTop+1};${n.scrollBottom+1}r`:t==="m"?"P1$r0m":t===" q"?`P1$r${{block:2,underline:4,bar:6}[r.cursorStyle]-(r.cursorBlink?1:0)} q`:"P0$r")}markRangeDirty(t,e){this._dirtyRowTracker.markRangeDirty(t,e)}},kS=class{constructor(t){this._bufferService=t,this.clearRange()}clearRange(){this.start=this._bufferService.buffer.y,this.end=this._bufferService.buffer.y}markDirty(t){tthis.end&&(this.end=t)}markRangeDirty(t,e){t>e&&(ER=t,t=e,e=ER),tthis.end&&(this.end=e)}markAllDirty(){this.markRangeDirty(0,this._bufferService.rows-1)}};kS=Ut([be(0,yn)],kS);function MR(t){return 0<=t&&t<256}var dse=5e7,PR=12,pse=50,mse=class extends We{constructor(e){super(),this._action=e,this._writeBuffer=[],this._callbacks=[],this._pendingData=0,this._bufferOffset=0,this._isSyncWriting=!1,this._syncCalls=0,this._didUserInput=!1,this._onWriteParsed=this._register(new me),this.onWriteParsed=this._onWriteParsed.event}handleUserInput(){this._didUserInput=!0}writeSync(e,i){if(i!==void 0&&this._syncCalls>i){this._syncCalls=0;return}if(this._pendingData+=e.length,this._writeBuffer.push(e),this._callbacks.push(void 0),this._syncCalls++,this._isSyncWriting)return;this._isSyncWriting=!0;let n;for(;n=this._writeBuffer.shift();){this._action(n);let r=this._callbacks.shift();r&&r()}this._pendingData=0,this._bufferOffset=2147483647,this._isSyncWriting=!1,this._syncCalls=0}write(e,i){if(this._pendingData>dse)throw new Error("write data discarded, use flow control to avoid losing data");if(!this._writeBuffer.length){if(this._bufferOffset=0,this._didUserInput){this._didUserInput=!1,this._pendingData+=e.length,this._writeBuffer.push(e),this._callbacks.push(i),this._innerWrite();return}setTimeout(()=>this._innerWrite())}this._pendingData+=e.length,this._writeBuffer.push(e),this._callbacks.push(i)}_innerWrite(e=0,i=!0){let n=e||performance.now();for(;this._writeBuffer.length>this._bufferOffset;){let r=this._writeBuffer[this._bufferOffset],s=this._action(r,i);if(s){let l=c=>performance.now()-n>=PR?setTimeout(()=>this._innerWrite(0,c)):this._innerWrite(n,c);s.catch(c=>(queueMicrotask(()=>{throw c}),Promise.resolve(!1))).then(l);return}let o=this._callbacks[this._bufferOffset];if(o&&o(),this._bufferOffset++,this._pendingData-=r.length,performance.now()-n>=PR)break}this._writeBuffer.length>this._bufferOffset?(this._bufferOffset>pse&&(this._writeBuffer=this._writeBuffer.slice(this._bufferOffset),this._callbacks=this._callbacks.slice(this._bufferOffset),this._bufferOffset=0),setTimeout(()=>this._innerWrite())):(this._writeBuffer.length=0,this._callbacks.length=0,this._pendingData=0,this._bufferOffset=0),this._onWriteParsed.fire()}},TS=class{constructor(e){this._bufferService=e,this._nextId=1,this._entriesWithId=new Map,this._dataByLinkId=new Map}registerLink(e){let i=this._bufferService.buffer;if(e.id===void 0){let c=i.addMarker(i.ybase+i.y),u={data:e,id:this._nextId++,lines:[c]};return c.onDispose(()=>this._removeMarkerFromLink(u,c)),this._dataByLinkId.set(u.id,u),u.id}let n=e,r=this._getEntryIdKey(n),s=this._entriesWithId.get(r);if(s)return this.addLineToLink(s.id,i.ybase+i.y),s.id;let o=i.addMarker(i.ybase+i.y),l={id:this._nextId++,key:this._getEntryIdKey(n),data:n,lines:[o]};return o.onDispose(()=>this._removeMarkerFromLink(l,o)),this._entriesWithId.set(l.key,l),this._dataByLinkId.set(l.id,l),l.id}addLineToLink(e,i){let n=this._dataByLinkId.get(e);if(n&&n.lines.every(r=>r.line!==i)){let r=this._bufferService.buffer.addMarker(i);n.lines.push(r),r.onDispose(()=>this._removeMarkerFromLink(n,r))}}getLinkData(e){var i;return(i=this._dataByLinkId.get(e))==null?void 0:i.data}_getEntryIdKey(e){return`${e.id};;${e.uri}`}_removeMarkerFromLink(e,i){let n=e.lines.indexOf(i);n!==-1&&(e.lines.splice(n,1),e.lines.length===0&&(e.data.id!==void 0&&this._entriesWithId.delete(e.key),this._dataByLinkId.delete(e.id)))}};TS=Ut([be(0,yn)],TS);var RR=!1,gse=class extends We{constructor(e){super(),this._windowsWrappingHeuristics=this._register(new mh),this._onBinary=this._register(new me),this.onBinary=this._onBinary.event,this._onData=this._register(new me),this.onData=this._onData.event,this._onLineFeed=this._register(new me),this.onLineFeed=this._onLineFeed.event,this._onResize=this._register(new me),this.onResize=this._onResize.event,this._onWriteParsed=this._register(new me),this.onWriteParsed=this._onWriteParsed.event,this._onScroll=this._register(new me),this._instantiationService=new jre,this.optionsService=this._register(new Fre(e)),this._instantiationService.setService(bn,this.optionsService),this._bufferService=this._register(this._instantiationService.createInstance(SS)),this._instantiationService.setService(yn,this._bufferService),this._logService=this._register(this._instantiationService.createInstance(bS)),this._instantiationService.setService(P6,this._logService),this.coreService=this._register(this._instantiationService.createInstance(xS)),this._instantiationService.setService($l,this.coreService),this.coreMouseService=this._register(this._instantiationService.createInstance(wS)),this._instantiationService.setService(M6,this.coreMouseService),this.unicodeService=this._register(this._instantiationService.createInstance(_l)),this._instantiationService.setService(Bie,this.unicodeService),this._charsetService=this._instantiationService.createInstance(tse),this._instantiationService.setService(Die,this._charsetService),this._oscLinkService=this._instantiationService.createInstance(TS),this._instantiationService.setService(R6,this._oscLinkService),this._inputHandler=this._register(new fse(this._bufferService,this._charsetService,this.coreService,this._logService,this.optionsService,this._oscLinkService,this.coreMouseService,this.unicodeService)),this._register(Gi.forward(this._inputHandler.onLineFeed,this._onLineFeed)),this._register(this._inputHandler),this._register(Gi.forward(this._bufferService.onResize,this._onResize)),this._register(Gi.forward(this.coreService.onData,this._onData)),this._register(Gi.forward(this.coreService.onBinary,this._onBinary)),this._register(this.coreService.onRequestScrollToBottom(()=>this.scrollToBottom(!0))),this._register(this.coreService.onUserInput(()=>this._writeBuffer.handleUserInput())),this._register(this.optionsService.onMultipleOptionChange(["windowsMode","windowsPty"],()=>this._handleWindowsPtyOptionChange())),this._register(this._bufferService.onScroll(()=>{this._onScroll.fire({position:this._bufferService.buffer.ydisp}),this._inputHandler.markRangeDirty(this._bufferService.buffer.scrollTop,this._bufferService.buffer.scrollBottom)})),this._writeBuffer=this._register(new mse((i,n)=>this._inputHandler.parse(i,n))),this._register(Gi.forward(this._writeBuffer.onWriteParsed,this._onWriteParsed))}get onScroll(){return this._onScrollApi||(this._onScrollApi=this._register(new me),this._onScroll.event(e=>{var i;(i=this._onScrollApi)==null||i.fire(e.position)})),this._onScrollApi.event}get cols(){return this._bufferService.cols}get rows(){return this._bufferService.rows}get buffers(){return this._bufferService.buffers}get options(){return this.optionsService.options}set options(e){for(let i in e)this.optionsService.options[i]=e[i]}write(e,i){this._writeBuffer.write(e,i)}writeSync(e,i){this._logService.logLevel<=3&&!RR&&(this._logService.warn("writeSync is unreliable and will be removed soon."),RR=!0),this._writeBuffer.writeSync(e,i)}input(e,i=!0){this.coreService.triggerDataEvent(e,i)}resize(e,i){isNaN(e)||isNaN(i)||(e=Math.max(e,hz),i=Math.max(i,uz),this._bufferService.resize(e,i))}scroll(e,i=!1){this._bufferService.scroll(e,i)}scrollLines(e,i){this._bufferService.scrollLines(e,i)}scrollPages(e){this.scrollLines(e*(this.rows-1))}scrollToTop(){this.scrollLines(-this._bufferService.buffer.ydisp)}scrollToBottom(e){this.scrollLines(this._bufferService.buffer.ybase-this._bufferService.buffer.ydisp)}scrollToLine(e){let i=e-this._bufferService.buffer.ydisp;i!==0&&this.scrollLines(i)}registerEscHandler(e,i){return this._inputHandler.registerEscHandler(e,i)}registerDcsHandler(e,i){return this._inputHandler.registerDcsHandler(e,i)}registerCsiHandler(e,i){return this._inputHandler.registerCsiHandler(e,i)}registerOscHandler(e,i){return this._inputHandler.registerOscHandler(e,i)}_setup(){this._handleWindowsPtyOptionChange()}reset(){this._inputHandler.reset(),this._bufferService.reset(),this._charsetService.reset(),this.coreService.reset(),this.coreMouseService.reset()}_handleWindowsPtyOptionChange(){let e=!1,i=this.optionsService.rawOptions.windowsPty;i&&i.buildNumber!==void 0&&i.buildNumber!==void 0?e=i.backend==="conpty"&&i.buildNumber<21376:this.optionsService.rawOptions.windowsMode&&(e=!0),e?this._enableWindowsWrappingHeuristics():this._windowsWrappingHeuristics.clear()}_enableWindowsWrappingHeuristics(){if(!this._windowsWrappingHeuristics.value){let e=[];e.push(this.onLineFeed(xR.bind(null,this._bufferService))),e.push(this.registerCsiHandler({final:"H"},()=>(xR(this._bufferService),!1))),this._windowsWrappingHeuristics.value=Bt(()=>{for(let i of e)i.dispose()})}}},Ose={48:["0",")"],49:["1","!"],50:["2","@"],51:["3","#"],52:["4","$"],53:["5","%"],54:["6","^"],55:["7","&"],56:["8","*"],57:["9","("],186:[";",":"],187:["=","+"],188:[",","<"],189:["-","_"],190:[".",">"],191:["/","?"],192:["`","~"],219:["[","{"],220:["\\","|"],221:["]","}"],222:["'",'"']};function vse(t,e,i,n){var o;let r={type:0,cancel:!1,key:void 0},s=(t.shiftKey?1:0)|(t.altKey?2:0)|(t.ctrlKey?4:0)|(t.metaKey?8:0);switch(t.keyCode){case 0:t.key==="UIKeyInputUpArrow"?e?r.key=ce.ESC+"OA":r.key=ce.ESC+"[A":t.key==="UIKeyInputLeftArrow"?e?r.key=ce.ESC+"OD":r.key=ce.ESC+"[D":t.key==="UIKeyInputRightArrow"?e?r.key=ce.ESC+"OC":r.key=ce.ESC+"[C":t.key==="UIKeyInputDownArrow"&&(e?r.key=ce.ESC+"OB":r.key=ce.ESC+"[B");break;case 8:r.key=t.ctrlKey?"\b":ce.DEL,t.altKey&&(r.key=ce.ESC+r.key);break;case 9:if(t.shiftKey){r.key=ce.ESC+"[Z";break}r.key=ce.HT,r.cancel=!0;break;case 13:r.key=t.altKey?ce.ESC+ce.CR:ce.CR,r.cancel=!0;break;case 27:r.key=ce.ESC,t.altKey&&(r.key=ce.ESC+ce.ESC),r.cancel=!0;break;case 37:if(t.metaKey)break;s?r.key=ce.ESC+"[1;"+(s+1)+"D":e?r.key=ce.ESC+"OD":r.key=ce.ESC+"[D";break;case 39:if(t.metaKey)break;s?r.key=ce.ESC+"[1;"+(s+1)+"C":e?r.key=ce.ESC+"OC":r.key=ce.ESC+"[C";break;case 38:if(t.metaKey)break;s?r.key=ce.ESC+"[1;"+(s+1)+"A":e?r.key=ce.ESC+"OA":r.key=ce.ESC+"[A";break;case 40:if(t.metaKey)break;s?r.key=ce.ESC+"[1;"+(s+1)+"B":e?r.key=ce.ESC+"OB":r.key=ce.ESC+"[B";break;case 45:!t.shiftKey&&!t.ctrlKey&&(r.key=ce.ESC+"[2~");break;case 46:s?r.key=ce.ESC+"[3;"+(s+1)+"~":r.key=ce.ESC+"[3~";break;case 36:s?r.key=ce.ESC+"[1;"+(s+1)+"H":e?r.key=ce.ESC+"OH":r.key=ce.ESC+"[H";break;case 35:s?r.key=ce.ESC+"[1;"+(s+1)+"F":e?r.key=ce.ESC+"OF":r.key=ce.ESC+"[F";break;case 33:t.shiftKey?r.type=2:t.ctrlKey?r.key=ce.ESC+"[5;"+(s+1)+"~":r.key=ce.ESC+"[5~";break;case 34:t.shiftKey?r.type=3:t.ctrlKey?r.key=ce.ESC+"[6;"+(s+1)+"~":r.key=ce.ESC+"[6~";break;case 112:s?r.key=ce.ESC+"[1;"+(s+1)+"P":r.key=ce.ESC+"OP";break;case 113:s?r.key=ce.ESC+"[1;"+(s+1)+"Q":r.key=ce.ESC+"OQ";break;case 114:s?r.key=ce.ESC+"[1;"+(s+1)+"R":r.key=ce.ESC+"OR";break;case 115:s?r.key=ce.ESC+"[1;"+(s+1)+"S":r.key=ce.ESC+"OS";break;case 116:s?r.key=ce.ESC+"[15;"+(s+1)+"~":r.key=ce.ESC+"[15~";break;case 117:s?r.key=ce.ESC+"[17;"+(s+1)+"~":r.key=ce.ESC+"[17~";break;case 118:s?r.key=ce.ESC+"[18;"+(s+1)+"~":r.key=ce.ESC+"[18~";break;case 119:s?r.key=ce.ESC+"[19;"+(s+1)+"~":r.key=ce.ESC+"[19~";break;case 120:s?r.key=ce.ESC+"[20;"+(s+1)+"~":r.key=ce.ESC+"[20~";break;case 121:s?r.key=ce.ESC+"[21;"+(s+1)+"~":r.key=ce.ESC+"[21~";break;case 122:s?r.key=ce.ESC+"[23;"+(s+1)+"~":r.key=ce.ESC+"[23~";break;case 123:s?r.key=ce.ESC+"[24;"+(s+1)+"~":r.key=ce.ESC+"[24~";break;default:if(t.ctrlKey&&!t.shiftKey&&!t.altKey&&!t.metaKey)t.keyCode>=65&&t.keyCode<=90?r.key=String.fromCharCode(t.keyCode-64):t.keyCode===32?r.key=ce.NUL:t.keyCode>=51&&t.keyCode<=55?r.key=String.fromCharCode(t.keyCode-51+27):t.keyCode===56?r.key=ce.DEL:t.keyCode===219?r.key=ce.ESC:t.keyCode===220?r.key=ce.FS:t.keyCode===221&&(r.key=ce.GS);else if((!i||n)&&t.altKey&&!t.metaKey){let l=(o=Ose[t.keyCode])==null?void 0:o[t.shiftKey?1:0];if(l)r.key=ce.ESC+l;else if(t.keyCode>=65&&t.keyCode<=90){let c=t.ctrlKey?t.keyCode-64:t.keyCode+32,u=String.fromCharCode(c);t.shiftKey&&(u=u.toUpperCase()),r.key=ce.ESC+u}else if(t.keyCode===32)r.key=ce.ESC+(t.ctrlKey?ce.NUL:" ");else if(t.key==="Dead"&&t.code.startsWith("Key")){let c=t.code.slice(3,4);t.shiftKey||(c=c.toLowerCase()),r.key=ce.ESC+c,r.cancel=!0}}else i&&!t.altKey&&!t.ctrlKey&&!t.shiftKey&&t.metaKey?t.keyCode===65&&(r.type=1):t.key&&!t.ctrlKey&&!t.altKey&&!t.metaKey&&t.keyCode>=48&&t.key.length===1?r.key=t.key:t.key&&t.ctrlKey&&(t.key==="_"&&(r.key=ce.US),t.key==="@"&&(r.key=ce.NUL));break}return r}var Gt=0,_se=class{constructor(e){this._getKey=e,this._array=[],this._insertedValues=[],this._flushInsertedTask=new tO,this._isFlushingInserted=!1,this._deletedIndices=[],this._flushDeletedTask=new tO,this._isFlushingDeleted=!1}clear(){this._array.length=0,this._insertedValues.length=0,this._flushInsertedTask.clear(),this._isFlushingInserted=!1,this._deletedIndices.length=0,this._flushDeletedTask.clear(),this._isFlushingDeleted=!1}insert(e){this._flushCleanupDeleted(),this._insertedValues.length===0&&this._flushInsertedTask.enqueue(()=>this._flushInserted()),this._insertedValues.push(e)}_flushInserted(){let e=this._insertedValues.sort((s,o)=>this._getKey(s)-this._getKey(o)),i=0,n=0,r=new Array(this._array.length+this._insertedValues.length);for(let s=0;s=this._array.length||this._getKey(e[i])<=this._getKey(this._array[n])?(r[s]=e[i],i++):r[s]=this._array[n++];this._array=r,this._insertedValues.length=0}_flushCleanupInserted(){!this._isFlushingInserted&&this._insertedValues.length>0&&this._flushInsertedTask.flush()}delete(e){if(this._flushCleanupInserted(),this._array.length===0)return!1;let i=this._getKey(e);if(i===void 0||(Gt=this._search(i),Gt===-1)||this._getKey(this._array[Gt])!==i)return!1;do if(this._array[Gt]===e)return this._deletedIndices.length===0&&this._flushDeletedTask.enqueue(()=>this._flushDeleted()),this._deletedIndices.push(Gt),!0;while(++Gts-o),i=0,n=new Array(this._array.length-e.length),r=0;for(let s=0;s0&&this._flushDeletedTask.flush()}*getKeyIterator(e){if(this._flushCleanupInserted(),this._flushCleanupDeleted(),this._array.length!==0&&(Gt=this._search(e),!(Gt<0||Gt>=this._array.length)&&this._getKey(this._array[Gt])===e))do yield this._array[Gt];while(++Gt=this._array.length)&&this._getKey(this._array[Gt])===e))do i(this._array[Gt]);while(++Gt=i;){let r=i+n>>1,s=this._getKey(this._array[r]);if(s>e)n=r-1;else if(s0&&this._getKey(this._array[r-1])===e;)r--;return r}}return i}},qy=0,QR=0,yse=class extends We{constructor(){super(),this._decorations=new _se(t=>t==null?void 0:t.marker.line),this._onDecorationRegistered=this._register(new me),this.onDecorationRegistered=this._onDecorationRegistered.event,this._onDecorationRemoved=this._register(new me),this.onDecorationRemoved=this._onDecorationRemoved.event,this._register(Bt(()=>this.reset()))}get decorations(){return this._decorations.values()}registerDecoration(t){if(t.marker.isDisposed)return;let e=new bse(t);if(e){let i=e.marker.onDispose(()=>e.dispose()),n=e.onDispose(()=>{n.dispose(),e&&(this._decorations.delete(e)&&this._onDecorationRemoved.fire(e),i.dispose())});this._decorations.insert(e),this._onDecorationRegistered.fire(e)}return e}reset(){for(let t of this._decorations.values())t.dispose();this._decorations.clear()}*getDecorationsAtCell(t,e,i){let n=0,r=0;for(let s of this._decorations.getKeyIterator(e))n=s.options.x??0,r=n+(s.options.width??1),t>=n&&t{qy=r.options.x??0,QR=qy+(r.options.width??1),t>=qy&&t=this._debounceThresholdMS)this._lastRefreshMs=r,this._innerRefresh();else if(!this._additionalRefreshRequested){let s=r-this._lastRefreshMs,o=this._debounceThresholdMS-s;this._additionalRefreshRequested=!0,this._refreshTimeoutID=window.setTimeout(()=>{this._lastRefreshMs=performance.now(),this._innerRefresh(),this._additionalRefreshRequested=!1,this._refreshTimeoutID=void 0},o)}}_innerRefresh(){if(this._rowStart===void 0||this._rowEnd===void 0||this._rowCount===void 0)return;let e=Math.max(this._rowStart,0),i=Math.min(this._rowEnd,this._rowCount-1);this._rowStart=void 0,this._rowEnd=void 0,this._renderCallback(e,i)}},LR=20,iO=class extends We{constructor(t,e,i,n){super(),this._terminal=t,this._coreBrowserService=i,this._renderService=n,this._rowColumns=new WeakMap,this._liveRegionLineCount=0,this._charsToConsume=[],this._charsToAnnounce="";let r=this._coreBrowserService.mainDocument;this._accessibilityContainer=r.createElement("div"),this._accessibilityContainer.classList.add("xterm-accessibility"),this._rowContainer=r.createElement("div"),this._rowContainer.setAttribute("role","list"),this._rowContainer.classList.add("xterm-accessibility-tree"),this._rowElements=[];for(let s=0;sthis._handleBoundaryFocus(s,0),this._bottomBoundaryFocusListener=s=>this._handleBoundaryFocus(s,1),this._rowElements[0].addEventListener("focus",this._topBoundaryFocusListener),this._rowElements[this._rowElements.length-1].addEventListener("focus",this._bottomBoundaryFocusListener),this._accessibilityContainer.appendChild(this._rowContainer),this._liveRegion=r.createElement("div"),this._liveRegion.classList.add("live-region"),this._liveRegion.setAttribute("aria-live","assertive"),this._accessibilityContainer.appendChild(this._liveRegion),this._liveRegionDebouncer=this._register(new xse(this._renderRows.bind(this))),!this._terminal.element)throw new Error("Cannot enable accessibility before Terminal.open");this._terminal.element.insertAdjacentElement("afterbegin",this._accessibilityContainer),this._register(this._terminal.onResize(s=>this._handleResize(s.rows))),this._register(this._terminal.onRender(s=>this._refreshRows(s.start,s.end))),this._register(this._terminal.onScroll(()=>this._refreshRows())),this._register(this._terminal.onA11yChar(s=>this._handleChar(s))),this._register(this._terminal.onLineFeed(()=>this._handleChar(` -`))),this._register(this._terminal.onA11yTab(s=>this._handleTab(s))),this._register(this._terminal.onKey(s=>this._handleKey(s.key))),this._register(this._terminal.onBlur(()=>this._clearLiveRegion())),this._register(this._renderService.onDimensionsChange(()=>this._refreshRowsDimensions())),this._register(Be(r,"selectionchange",()=>this._handleSelectionChange())),this._register(this._coreBrowserService.onDprChange(()=>this._refreshRowsDimensions())),this._refreshRowsDimensions(),this._refreshRows(),this._register(Bt(()=>{this._accessibilityContainer.remove(),this._rowElements.length=0}))}_handleTab(t){for(let e=0;e0?this._charsToConsume.shift()!==t&&(this._charsToAnnounce+=t):this._charsToAnnounce+=t,t===` -`&&(this._liveRegionLineCount++,this._liveRegionLineCount===LR+1&&(this._liveRegion.textContent+=Ub.get())))}_clearLiveRegion(){this._liveRegion.textContent="",this._liveRegionLineCount=0}_handleKey(t){this._clearLiveRegion(),new RegExp("\\p{Control}","u").test(t)||this._charsToConsume.push(t)}_refreshRows(t,e){this._liveRegionDebouncer.refresh(t,e,this._terminal.rows)}_renderRows(t,e){let i=this._terminal.buffer,n=i.lines.length.toString();for(let r=t;r<=e;r++){let s=i.lines.get(i.ydisp+r),o=[],l=(s==null?void 0:s.translateToString(!0,void 0,void 0,o))||"",c=(i.ydisp+r+1).toString(),u=this._rowElements[r];u&&(l.length===0?(u.textContent=" ",this._rowColumns.set(u,[0,1])):(u.textContent=l,this._rowColumns.set(u,o)),u.setAttribute("aria-posinset",c),u.setAttribute("aria-setsize",n),this._alignRowWidth(u))}this._announceCharacters()}_announceCharacters(){this._charsToAnnounce.length!==0&&(this._liveRegion.textContent+=this._charsToAnnounce,this._charsToAnnounce="")}_handleBoundaryFocus(t,e){let i=t.target,n=this._rowElements[e===0?1:this._rowElements.length-2],r=i.getAttribute("aria-posinset"),s=e===0?"1":`${this._terminal.buffer.lines.length}`;if(r===s||t.relatedTarget!==n)return;let o,l;if(e===0?(o=i,l=this._rowElements.pop(),this._rowContainer.removeChild(l)):(o=this._rowElements.shift(),l=i,this._rowContainer.removeChild(o)),o.removeEventListener("focus",this._topBoundaryFocusListener),l.removeEventListener("focus",this._bottomBoundaryFocusListener),e===0){let c=this._createAccessibilityTreeNode();this._rowElements.unshift(c),this._rowContainer.insertAdjacentElement("afterbegin",c)}else{let c=this._createAccessibilityTreeNode();this._rowElements.push(c),this._rowContainer.appendChild(c)}this._rowElements[0].addEventListener("focus",this._topBoundaryFocusListener),this._rowElements[this._rowElements.length-1].addEventListener("focus",this._bottomBoundaryFocusListener),this._terminal.scrollLines(e===0?-1:1),this._rowElements[e===0?1:this._rowElements.length-2].focus(),t.preventDefault(),t.stopImmediatePropagation()}_handleSelectionChange(){var l;if(this._rowElements.length===0)return;let t=this._coreBrowserService.mainDocument.getSelection();if(!t)return;if(t.isCollapsed){this._rowContainer.contains(t.anchorNode)&&this._terminal.clearSelection();return}if(!t.anchorNode||!t.focusNode){console.error("anchorNode and/or focusNode are null");return}let e={node:t.anchorNode,offset:t.anchorOffset},i={node:t.focusNode,offset:t.focusOffset};if((e.node.compareDocumentPosition(i.node)&Node.DOCUMENT_POSITION_PRECEDING||e.node===i.node&&e.offset>i.offset)&&([e,i]=[i,e]),e.node.compareDocumentPosition(this._rowElements[0])&(Node.DOCUMENT_POSITION_CONTAINED_BY|Node.DOCUMENT_POSITION_FOLLOWING)&&(e={node:this._rowElements[0].childNodes[0],offset:0}),!this._rowContainer.contains(e.node))return;let n=this._rowElements.slice(-1)[0];if(i.node.compareDocumentPosition(n)&(Node.DOCUMENT_POSITION_CONTAINED_BY|Node.DOCUMENT_POSITION_PRECEDING)&&(i={node:n,offset:((l=n.textContent)==null?void 0:l.length)??0}),!this._rowContainer.contains(i.node))return;let r=({node:c,offset:u})=>{let d=c instanceof Text?c.parentNode:c,p=parseInt(d==null?void 0:d.getAttribute("aria-posinset"),10)-1;if(isNaN(p))return console.warn("row is invalid. Race condition?"),null;let g=this._rowColumns.get(d);if(!g)return console.warn("columns is null. Race condition?"),null;let O=u=this._terminal.cols&&(++p,O=0),{row:p,column:O}},s=r(e),o=r(i);if(!(!s||!o)){if(s.row>o.row||s.row===o.row&&s.column>=o.column)throw new Error("invalid range");this._terminal.select(s.column,s.row,(o.row-s.row)*this._terminal.cols-s.column+o.column)}}_handleResize(t){this._rowElements[this._rowElements.length-1].removeEventListener("focus",this._bottomBoundaryFocusListener);for(let e=this._rowContainer.children.length;et;)this._rowContainer.removeChild(this._rowElements.pop());this._rowElements[this._rowElements.length-1].addEventListener("focus",this._bottomBoundaryFocusListener),this._refreshRowsDimensions()}_createAccessibilityTreeNode(){let t=this._coreBrowserService.mainDocument.createElement("div");return t.setAttribute("role","listitem"),t.tabIndex=-1,this._refreshRowDimensions(t),t}_refreshRowsDimensions(){if(this._renderService.dimensions.css.cell.height){Object.assign(this._accessibilityContainer.style,{width:`${this._renderService.dimensions.css.canvas.width}px`,fontSize:`${this._terminal.options.fontSize}px`}),this._rowElements.length!==this._terminal.rows&&this._handleResize(this._terminal.rows);for(let t=0;t{var s;Ml(this._linkCacheDisposables),this._linkCacheDisposables.length=0,this._lastMouseEvent=void 0,(s=this._activeProviderReplies)==null||s.clear()})),this._register(this._bufferService.onResize(()=>{this._clearCurrentLink(),this._wasResized=!0})),this._register(Be(this._element,"mouseleave",()=>{this._isMouseOut=!0,this._clearCurrentLink()})),this._register(Be(this._element,"mousemove",this._handleMouseMove.bind(this))),this._register(Be(this._element,"mousedown",this._handleMouseDown.bind(this))),this._register(Be(this._element,"mouseup",this._handleMouseUp.bind(this)))}get currentLink(){return this._currentLink}_handleMouseMove(t){this._lastMouseEvent=t;let e=this._positionFromMouseEvent(t,this._element,this._mouseService);if(!e)return;this._isMouseOut=!1;let i=t.composedPath();for(let n=0;n{s==null||s.forEach(o=>{o.link.dispose&&o.link.dispose()})}),this._activeProviderReplies=new Map,this._activeLine=t.y);let i=!1;for(let[s,o]of this._linkProviderService.linkProviders.entries())e?(r=this._activeProviderReplies)!=null&&r.get(s)&&(i=this._checkLinkProviderResult(s,t,i)):o.provideLinks(t.y,l=>{var u,d;if(this._isMouseOut)return;let c=l==null?void 0:l.map(p=>({link:p}));(u=this._activeProviderReplies)==null||u.set(s,c),i=this._checkLinkProviderResult(s,t,i),((d=this._activeProviderReplies)==null?void 0:d.size)===this._linkProviderService.linkProviders.length&&this._removeIntersectingLinks(t.y,this._activeProviderReplies)})}_removeIntersectingLinks(t,e){let i=new Set;for(let n=0;nt?this._bufferService.cols:o.link.range.end.x;for(let u=l;u<=c;u++){if(i.has(u)){r.splice(s--,1);break}i.add(u)}}}}_checkLinkProviderResult(t,e,i){var s;if(!this._activeProviderReplies)return i;let n=this._activeProviderReplies.get(t),r=!1;for(let o=0;othis._linkAtPosition(l.link,e));o&&(i=!0,this._handleNewLink(o))}if(this._activeProviderReplies.size===this._linkProviderService.linkProviders.length&&!i)for(let o=0;othis._linkAtPosition(c.link,e));if(l){i=!0,this._handleNewLink(l);break}}return i}_handleMouseDown(){this._mouseDownLink=this._currentLink}_handleMouseUp(t){if(!this._currentLink)return;let e=this._positionFromMouseEvent(t,this._element,this._mouseService);e&&this._mouseDownLink&&wse(this._mouseDownLink.link,this._currentLink.link)&&this._linkAtPosition(this._currentLink.link,e)&&this._currentLink.link.activate(t,this._currentLink.link.text)}_clearCurrentLink(t,e){!this._currentLink||!this._lastMouseEvent||(!t||!e||this._currentLink.link.range.start.y>=t&&this._currentLink.link.range.end.y<=e)&&(this._linkLeave(this._element,this._currentLink.link,this._lastMouseEvent),this._currentLink=void 0,Ml(this._linkCacheDisposables),this._linkCacheDisposables.length=0)}_handleNewLink(t){if(!this._lastMouseEvent)return;let e=this._positionFromMouseEvent(this._lastMouseEvent,this._element,this._mouseService);e&&this._linkAtPosition(t.link,e)&&(this._currentLink=t,this._currentLink.state={decorations:{underline:t.link.decorations===void 0?!0:t.link.decorations.underline,pointerCursor:t.link.decorations===void 0?!0:t.link.decorations.pointerCursor},isHovered:!0},this._linkHover(this._element,t.link,this._lastMouseEvent),t.link.decorations={},Object.defineProperties(t.link.decorations,{pointerCursor:{get:()=>{var i,n;return(n=(i=this._currentLink)==null?void 0:i.state)==null?void 0:n.decorations.pointerCursor},set:i=>{var n;(n=this._currentLink)!=null&&n.state&&this._currentLink.state.decorations.pointerCursor!==i&&(this._currentLink.state.decorations.pointerCursor=i,this._currentLink.state.isHovered&&this._element.classList.toggle("xterm-cursor-pointer",i))}},underline:{get:()=>{var i,n;return(n=(i=this._currentLink)==null?void 0:i.state)==null?void 0:n.decorations.underline},set:i=>{var n,r,s;(n=this._currentLink)!=null&&n.state&&((s=(r=this._currentLink)==null?void 0:r.state)==null?void 0:s.decorations.underline)!==i&&(this._currentLink.state.decorations.underline=i,this._currentLink.state.isHovered&&this._fireUnderlineEvent(t.link,i))}}}),this._linkCacheDisposables.push(this._renderService.onRenderedViewportChange(i=>{if(!this._currentLink)return;let n=i.start===0?0:i.start+1+this._bufferService.buffer.ydisp,r=this._bufferService.buffer.ydisp+1+i.end;if(this._currentLink.link.range.start.y>=n&&this._currentLink.link.range.end.y<=r&&(this._clearCurrentLink(n,r),this._lastMouseEvent)){let s=this._positionFromMouseEvent(this._lastMouseEvent,this._element,this._mouseService);s&&this._askForLink(s,!1)}})))}_linkHover(t,e,i){var n;(n=this._currentLink)!=null&&n.state&&(this._currentLink.state.isHovered=!0,this._currentLink.state.decorations.underline&&this._fireUnderlineEvent(e,!0),this._currentLink.state.decorations.pointerCursor&&t.classList.add("xterm-cursor-pointer")),e.hover&&e.hover(i,e.text)}_fireUnderlineEvent(t,e){let i=t.range,n=this._bufferService.buffer.ydisp,r=this._createLinkUnderlineEvent(i.start.x-1,i.start.y-n-1,i.end.x,i.end.y-n-1,void 0);(e?this._onShowLinkUnderline:this._onHideLinkUnderline).fire(r)}_linkLeave(t,e,i){var n;(n=this._currentLink)!=null&&n.state&&(this._currentLink.state.isHovered=!1,this._currentLink.state.decorations.underline&&this._fireUnderlineEvent(e,!1),this._currentLink.state.decorations.pointerCursor&&t.classList.remove("xterm-cursor-pointer")),e.leave&&e.leave(i,e.text)}_linkAtPosition(t,e){let i=t.range.start.y*this._bufferService.cols+t.range.start.x,n=t.range.end.y*this._bufferService.cols+t.range.end.x,r=e.y*this._bufferService.cols+e.x;return i<=r&&r<=n}_positionFromMouseEvent(t,e,i){let n=i.getCoords(t,e,this._bufferService.cols,this._bufferService.rows);if(n)return{x:n[0],y:n[1]+this._bufferService.buffer.ydisp}}_createLinkUnderlineEvent(t,e,i,n,r){return{x1:t,y1:e,x2:i,y2:n,cols:this._bufferService.cols,fg:r}}};AS=Ut([be(1,Mw),be(2,wo),be(3,yn),be(4,L6)],AS);function wse(t,e){return t.text===e.text&&t.range.start.x===e.range.start.x&&t.range.start.y===e.range.start.y&&t.range.end.x===e.range.end.x&&t.range.end.y===e.range.end.y}var Cse=class extends gse{constructor(e={}){super(e),this._linkifier=this._register(new mh),this.browser=J6,this._keyDownHandled=!1,this._keyDownSeen=!1,this._keyPressHandled=!1,this._unprocessedDeadKey=!1,this._accessibilityManager=this._register(new mh),this._onCursorMove=this._register(new me),this.onCursorMove=this._onCursorMove.event,this._onKey=this._register(new me),this.onKey=this._onKey.event,this._onRender=this._register(new me),this.onRender=this._onRender.event,this._onSelectionChange=this._register(new me),this.onSelectionChange=this._onSelectionChange.event,this._onTitleChange=this._register(new me),this.onTitleChange=this._onTitleChange.event,this._onBell=this._register(new me),this.onBell=this._onBell.event,this._onFocus=this._register(new me),this._onBlur=this._register(new me),this._onA11yCharEmitter=this._register(new me),this._onA11yTabEmitter=this._register(new me),this._onWillOpen=this._register(new me),this._setup(),this._decorationService=this._instantiationService.createInstance(yse),this._instantiationService.setService(Sd,this._decorationService),this._linkProviderService=this._instantiationService.createInstance(pre),this._instantiationService.setService(L6,this._linkProviderService),this._linkProviderService.registerLinkProvider(this._instantiationService.createInstance(Hb)),this._register(this._inputHandler.onRequestBell(()=>this._onBell.fire())),this._register(this._inputHandler.onRequestRefreshRows(i=>this.refresh((i==null?void 0:i.start)??0,(i==null?void 0:i.end)??this.rows-1))),this._register(this._inputHandler.onRequestSendFocus(()=>this._reportFocus())),this._register(this._inputHandler.onRequestReset(()=>this.reset())),this._register(this._inputHandler.onRequestWindowsOptionsReport(i=>this._reportWindowsOptions(i))),this._register(this._inputHandler.onColor(i=>this._handleColorEvent(i))),this._register(Gi.forward(this._inputHandler.onCursorMove,this._onCursorMove)),this._register(Gi.forward(this._inputHandler.onTitleChange,this._onTitleChange)),this._register(Gi.forward(this._inputHandler.onA11yChar,this._onA11yCharEmitter)),this._register(Gi.forward(this._inputHandler.onA11yTab,this._onA11yTabEmitter)),this._register(this._bufferService.onResize(i=>this._afterResize(i.cols,i.rows))),this._register(Bt(()=>{var i,n;this._customKeyEventHandler=void 0,(n=(i=this.element)==null?void 0:i.parentNode)==null||n.removeChild(this.element)}))}get linkifier(){return this._linkifier.value}get onFocus(){return this._onFocus.event}get onBlur(){return this._onBlur.event}get onA11yChar(){return this._onA11yCharEmitter.event}get onA11yTab(){return this._onA11yTabEmitter.event}get onWillOpen(){return this._onWillOpen.event}_handleColorEvent(e){if(this._themeService)for(let i of e){let n,r="";switch(i.index){case 256:n="foreground",r="10";break;case 257:n="background",r="11";break;case 258:n="cursor",r="12";break;default:n="ansi",r="4;"+i.index}switch(i.type){case 0:let s=Pt.toColorRGB(n==="ansi"?this._themeService.colors.ansi[i.index]:this._themeService.colors[n]);this.coreService.triggerDataEvent(`${ce.ESC}]${r};${hse(s)}${G6.ST}`);break;case 1:if(n==="ansi")this._themeService.modifyColors(o=>o.ansi[i.index]=ci.toColor(...i.color));else{let o=n;this._themeService.modifyColors(l=>l[o]=ci.toColor(...i.color))}break;case 2:this._themeService.restoreColor(i.index);break}}}_setup(){super._setup(),this._customKeyEventHandler=void 0}get buffer(){return this.buffers.active}focus(){this.textarea&&this.textarea.focus({preventScroll:!0})}_handleScreenReaderModeOptionChange(e){e?!this._accessibilityManager.value&&this._renderService&&(this._accessibilityManager.value=this._instantiationService.createInstance(iO,this)):this._accessibilityManager.clear()}_handleTextAreaFocus(e){this.coreService.decPrivateModes.sendFocus&&this.coreService.triggerDataEvent(ce.ESC+"[I"),this.element.classList.add("focus"),this._showCursor(),this._onFocus.fire()}blur(){var e;return(e=this.textarea)==null?void 0:e.blur()}_handleTextAreaBlur(){this.textarea.value="",this.refresh(this.buffer.y,this.buffer.y),this.coreService.decPrivateModes.sendFocus&&this.coreService.triggerDataEvent(ce.ESC+"[O"),this.element.classList.remove("focus"),this._onBlur.fire()}_syncTextArea(){if(!this.textarea||!this.buffer.isCursorInViewport||this._compositionHelper.isComposing||!this._renderService)return;let e=this.buffer.ybase+this.buffer.y,i=this.buffer.lines.get(e);if(!i)return;let n=Math.min(this.buffer.x,this.cols-1),r=this._renderService.dimensions.css.cell.height,s=i.getWidth(n),o=this._renderService.dimensions.css.cell.width*s,l=this.buffer.y*this._renderService.dimensions.css.cell.height,c=n*this._renderService.dimensions.css.cell.width;this.textarea.style.left=c+"px",this.textarea.style.top=l+"px",this.textarea.style.width=o+"px",this.textarea.style.height=r+"px",this.textarea.style.lineHeight=r+"px",this.textarea.style.zIndex="-5"}_initGlobal(){this._bindKeys(),this._register(Be(this.element,"copy",i=>{this.hasSelection()&&Eie(i,this._selectionService)}));let e=i=>Mie(i,this.textarea,this.coreService,this.optionsService);this._register(Be(this.textarea,"paste",e)),this._register(Be(this.element,"paste",e)),ez?this._register(Be(this.element,"mousedown",i=>{i.button===2&&ZP(i,this.textarea,this.screenElement,this._selectionService,this.options.rightClickSelectsWord)})):this._register(Be(this.element,"contextmenu",i=>{ZP(i,this.textarea,this.screenElement,this._selectionService,this.options.rightClickSelectsWord)})),zw&&this._register(Be(this.element,"auxclick",i=>{i.button===1&&C6(i,this.textarea,this.screenElement)}))}_bindKeys(){this._register(Be(this.textarea,"keyup",e=>this._keyUp(e),!0)),this._register(Be(this.textarea,"keydown",e=>this._keyDown(e),!0)),this._register(Be(this.textarea,"keypress",e=>this._keyPress(e),!0)),this._register(Be(this.textarea,"compositionstart",()=>this._compositionHelper.compositionstart())),this._register(Be(this.textarea,"compositionupdate",e=>this._compositionHelper.compositionupdate(e))),this._register(Be(this.textarea,"compositionend",()=>this._compositionHelper.compositionend())),this._register(Be(this.textarea,"input",e=>this._inputEvent(e),!0)),this._register(this.onRender(()=>this._compositionHelper.updateCompositionElements()))}open(e){var s;if(!e)throw new Error("Terminal requires a parent element.");if(e.isConnected||this._logService.debug("Terminal.open was called on an element that was not attached to the DOM"),((s=this.element)==null?void 0:s.ownerDocument.defaultView)&&this._coreBrowserService){this.element.ownerDocument.defaultView!==this._coreBrowserService.window&&(this._coreBrowserService.window=this.element.ownerDocument.defaultView);return}this._document=e.ownerDocument,this.options.documentOverride&&this.options.documentOverride instanceof Document&&(this._document=this.optionsService.rawOptions.documentOverride),this.element=this._document.createElement("div"),this.element.dir="ltr",this.element.classList.add("terminal"),this.element.classList.add("xterm"),e.appendChild(this.element);let i=this._document.createDocumentFragment();this._viewportElement=this._document.createElement("div"),this._viewportElement.classList.add("xterm-viewport"),i.appendChild(this._viewportElement),this.screenElement=this._document.createElement("div"),this.screenElement.classList.add("xterm-screen"),this._register(Be(this.screenElement,"mousemove",o=>this.updateCursorStyle(o))),this._helperContainer=this._document.createElement("div"),this._helperContainer.classList.add("xterm-helpers"),this.screenElement.appendChild(this._helperContainer),i.appendChild(this.screenElement);let n=this.textarea=this._document.createElement("textarea");this.textarea.classList.add("xterm-helper-textarea"),this.textarea.setAttribute("aria-label",Wb.get()),nz||this.textarea.setAttribute("aria-multiline","false"),this.textarea.setAttribute("autocorrect","off"),this.textarea.setAttribute("autocapitalize","off"),this.textarea.setAttribute("spellcheck","false"),this.textarea.tabIndex=0,this._register(this.optionsService.onSpecificOptionChange("disableStdin",()=>n.readOnly=this.optionsService.rawOptions.disableStdin)),this.textarea.readOnly=this.optionsService.rawOptions.disableStdin,this._coreBrowserService=this._register(this._instantiationService.createInstance(fre,this.textarea,e.ownerDocument.defaultView??window,this._document??typeof window<"u"?window.document:null)),this._instantiationService.setService(xo,this._coreBrowserService),this._register(Be(this.textarea,"focus",o=>this._handleTextAreaFocus(o))),this._register(Be(this.textarea,"blur",()=>this._handleTextAreaBlur())),this._helperContainer.appendChild(this.textarea),this._charSizeService=this._instantiationService.createInstance(gS,this._document,this._helperContainer),this._instantiationService.setService(TO,this._charSizeService),this._themeService=this._instantiationService.createInstance(yS),this._instantiationService.setService(Ch,this._themeService),this._characterJoinerService=this._instantiationService.createInstance(Jg),this._instantiationService.setService(Q6,this._characterJoinerService),this._renderService=this._register(this._instantiationService.createInstance(vS,this.rows,this.screenElement)),this._instantiationService.setService(wo,this._renderService),this._register(this._renderService.onRenderedViewportChange(o=>this._onRender.fire(o))),this.onResize(o=>this._renderService.resize(o.cols,o.rows)),this._compositionView=this._document.createElement("div"),this._compositionView.classList.add("composition-view"),this._compositionHelper=this._instantiationService.createInstance(dS,this.textarea,this._compositionView),this._helperContainer.appendChild(this._compositionView),this._mouseService=this._instantiationService.createInstance(OS),this._instantiationService.setService(Mw,this._mouseService);let r=this._linkifier.value=this._register(this._instantiationService.createInstance(AS,this.screenElement));this.element.appendChild(i);try{this._onWillOpen.fire(this.element)}catch{}this._renderService.hasRenderer()||this._renderService.setRenderer(this._createRenderer()),this._register(this.onCursorMove(()=>{this._renderService.handleCursorMove(),this._syncTextArea()})),this._register(this.onResize(()=>this._renderService.handleResize(this.cols,this.rows))),this._register(this.onBlur(()=>this._renderService.handleBlur())),this._register(this.onFocus(()=>this._renderService.handleFocus())),this._viewport=this._register(this._instantiationService.createInstance(uS,this.element,this.screenElement)),this._register(this._viewport.onRequestScrollLines(o=>{super.scrollLines(o,!1),this.refresh(0,this.rows-1)})),this._selectionService=this._register(this._instantiationService.createInstance(_S,this.element,this.screenElement,r)),this._instantiationService.setService(zie,this._selectionService),this._register(this._selectionService.onRequestScrollLines(o=>this.scrollLines(o.amount,o.suppressScrollEvent))),this._register(this._selectionService.onSelectionChange(()=>this._onSelectionChange.fire())),this._register(this._selectionService.onRequestRedraw(o=>this._renderService.handleSelectionChanged(o.start,o.end,o.columnSelectMode))),this._register(this._selectionService.onLinuxMouseSelection(o=>{this.textarea.value=o,this.textarea.focus(),this.textarea.select()})),this._register(Gi.any(this._onScroll.event,this._inputHandler.onScroll)(()=>{var o;this._selectionService.refresh(),(o=this._viewport)==null||o.queueSync()})),this._register(this._instantiationService.createInstance(fS,this.screenElement)),this._register(Be(this.element,"mousedown",o=>this._selectionService.handleMouseDown(o))),this.coreMouseService.areMouseEventsActive?(this._selectionService.disable(),this.element.classList.add("enable-mouse-events")):this._selectionService.enable(),this.options.screenReaderMode&&(this._accessibilityManager.value=this._instantiationService.createInstance(iO,this)),this._register(this.optionsService.onSpecificOptionChange("screenReaderMode",o=>this._handleScreenReaderModeOptionChange(o))),this.options.overviewRuler.width&&(this._overviewRulerRenderer=this._register(this._instantiationService.createInstance(Kg,this._viewportElement,this.screenElement))),this.optionsService.onSpecificOptionChange("overviewRuler",o=>{!this._overviewRulerRenderer&&o&&this._viewportElement&&this.screenElement&&(this._overviewRulerRenderer=this._register(this._instantiationService.createInstance(Kg,this._viewportElement,this.screenElement)))}),this._charSizeService.measure(),this.refresh(0,this.rows-1),this._initGlobal(),this.bindMouse()}_createRenderer(){return this._instantiationService.createInstance(mS,this,this._document,this.element,this.screenElement,this._viewportElement,this._helperContainer,this.linkifier)}bindMouse(){let e=this,i=this.element;function n(o){var d,p,g,O,_;let l=e._mouseService.getMouseReportCoords(o,e.screenElement);if(!l)return!1;let c,u;switch(o.overrideType||o.type){case"mousemove":u=32,o.buttons===void 0?(c=3,o.button!==void 0&&(c=o.button<3?o.button:3)):c=o.buttons&1?0:o.buttons&4?1:o.buttons&2?2:3;break;case"mouseup":u=0,c=o.button<3?o.button:3;break;case"mousedown":u=1,c=o.button<3?o.button:3;break;case"wheel":if(e._customWheelEventHandler&&e._customWheelEventHandler(o)===!1)return!1;let b=o.deltaY;if(b===0||e.coreMouseService.consumeWheelEvent(o,(O=(g=(p=(d=e._renderService)==null?void 0:d.dimensions)==null?void 0:p.device)==null?void 0:g.cell)==null?void 0:O.height,(_=e._coreBrowserService)==null?void 0:_.dpr)===0)return!1;u=b<0?0:1,c=4;break;default:return!1}return u===void 0||c===void 0||c>4?!1:e.coreMouseService.triggerMouseEvent({col:l.col,row:l.row,x:l.x,y:l.y,button:c,action:u,ctrl:o.ctrlKey,alt:o.altKey,shift:o.shiftKey})}let r={mouseup:null,wheel:null,mousedrag:null,mousemove:null},s={mouseup:o=>(n(o),o.buttons||(this._document.removeEventListener("mouseup",r.mouseup),r.mousedrag&&this._document.removeEventListener("mousemove",r.mousedrag)),this.cancel(o)),wheel:o=>(n(o),this.cancel(o,!0)),mousedrag:o=>{o.buttons&&n(o)},mousemove:o=>{o.buttons||n(o)}};this._register(this.coreMouseService.onProtocolChange(o=>{o?(this.optionsService.rawOptions.logLevel==="debug"&&this._logService.debug("Binding to mouse events:",this.coreMouseService.explainEvents(o)),this.element.classList.add("enable-mouse-events"),this._selectionService.disable()):(this._logService.debug("Unbinding from mouse events."),this.element.classList.remove("enable-mouse-events"),this._selectionService.enable()),o&8?r.mousemove||(i.addEventListener("mousemove",s.mousemove),r.mousemove=s.mousemove):(i.removeEventListener("mousemove",r.mousemove),r.mousemove=null),o&16?r.wheel||(i.addEventListener("wheel",s.wheel,{passive:!1}),r.wheel=s.wheel):(i.removeEventListener("wheel",r.wheel),r.wheel=null),o&2?r.mouseup||(r.mouseup=s.mouseup):(this._document.removeEventListener("mouseup",r.mouseup),r.mouseup=null),o&4?r.mousedrag||(r.mousedrag=s.mousedrag):(this._document.removeEventListener("mousemove",r.mousedrag),r.mousedrag=null)})),this.coreMouseService.activeProtocol=this.coreMouseService.activeProtocol,this._register(Be(i,"mousedown",o=>{if(o.preventDefault(),this.focus(),!(!this.coreMouseService.areMouseEventsActive||this._selectionService.shouldForceSelection(o)))return n(o),r.mouseup&&this._document.addEventListener("mouseup",r.mouseup),r.mousedrag&&this._document.addEventListener("mousemove",r.mousedrag),this.cancel(o)})),this._register(Be(i,"wheel",o=>{var l,c,u,d,p;if(!r.wheel){if(this._customWheelEventHandler&&this._customWheelEventHandler(o)===!1)return!1;if(!this.buffer.hasScrollback){if(o.deltaY===0)return!1;if(e.coreMouseService.consumeWheelEvent(o,(d=(u=(c=(l=e._renderService)==null?void 0:l.dimensions)==null?void 0:c.device)==null?void 0:u.cell)==null?void 0:d.height,(p=e._coreBrowserService)==null?void 0:p.dpr)===0)return this.cancel(o,!0);let g=ce.ESC+(this.coreService.decPrivateModes.applicationCursorKeys?"O":"[")+(o.deltaY<0?"A":"B");return this.coreService.triggerDataEvent(g,!0),this.cancel(o,!0)}}},{passive:!1}))}refresh(e,i){var n;(n=this._renderService)==null||n.refreshRows(e,i)}updateCursorStyle(e){var i;(i=this._selectionService)!=null&&i.shouldColumnSelect(e)?this.element.classList.add("column-select"):this.element.classList.remove("column-select")}_showCursor(){this.coreService.isCursorInitialized||(this.coreService.isCursorInitialized=!0,this.refresh(this.buffer.y,this.buffer.y))}scrollLines(e,i){this._viewport?this._viewport.scrollLines(e):super.scrollLines(e,i),this.refresh(0,this.rows-1)}scrollPages(e){this.scrollLines(e*(this.rows-1))}scrollToTop(){this.scrollLines(-this._bufferService.buffer.ydisp)}scrollToBottom(e){e&&this._viewport?this._viewport.scrollToLine(this.buffer.ybase,!0):this.scrollLines(this._bufferService.buffer.ybase-this._bufferService.buffer.ydisp)}scrollToLine(e){let i=e-this._bufferService.buffer.ydisp;i!==0&&this.scrollLines(i)}paste(e){w6(e,this.textarea,this.coreService,this.optionsService)}attachCustomKeyEventHandler(e){this._customKeyEventHandler=e}attachCustomWheelEventHandler(e){this._customWheelEventHandler=e}registerLinkProvider(e){return this._linkProviderService.registerLinkProvider(e)}registerCharacterJoiner(e){if(!this._characterJoinerService)throw new Error("Terminal must be opened first");let i=this._characterJoinerService.register(e);return this.refresh(0,this.rows-1),i}deregisterCharacterJoiner(e){if(!this._characterJoinerService)throw new Error("Terminal must be opened first");this._characterJoinerService.deregister(e)&&this.refresh(0,this.rows-1)}get markers(){return this.buffer.markers}registerMarker(e){return this.buffer.addMarker(this.buffer.ybase+this.buffer.y+e)}registerDecoration(e){return this._decorationService.registerDecoration(e)}hasSelection(){return this._selectionService?this._selectionService.hasSelection:!1}select(e,i,n){this._selectionService.setSelection(e,i,n)}getSelection(){return this._selectionService?this._selectionService.selectionText:""}getSelectionPosition(){if(!(!this._selectionService||!this._selectionService.hasSelection))return{start:{x:this._selectionService.selectionStart[0],y:this._selectionService.selectionStart[1]},end:{x:this._selectionService.selectionEnd[0],y:this._selectionService.selectionEnd[1]}}}clearSelection(){var e;(e=this._selectionService)==null||e.clearSelection()}selectAll(){var e;(e=this._selectionService)==null||e.selectAll()}selectLines(e,i){var n;(n=this._selectionService)==null||n.selectLines(e,i)}_keyDown(e){if(this._keyDownHandled=!1,this._keyDownSeen=!0,this._customKeyEventHandler&&this._customKeyEventHandler(e)===!1)return!1;let i=this.browser.isMac&&this.options.macOptionIsMeta&&e.altKey;if(!i&&!this._compositionHelper.keydown(e))return this.options.scrollOnUserInput&&this.buffer.ybase!==this.buffer.ydisp&&this.scrollToBottom(!0),!1;!i&&(e.key==="Dead"||e.key==="AltGraph")&&(this._unprocessedDeadKey=!0);let n=vse(e,this.coreService.decPrivateModes.applicationCursorKeys,this.browser.isMac,this.options.macOptionIsMeta);if(this.updateCursorStyle(e),n.type===3||n.type===2){let r=this.rows-1;return this.scrollLines(n.type===2?-r:r),this.cancel(e,!0)}if(n.type===1&&this.selectAll(),this._isThirdLevelShift(this.browser,e)||(n.cancel&&this.cancel(e,!0),!n.key)||e.key&&!e.ctrlKey&&!e.altKey&&!e.metaKey&&e.key.length===1&&e.key.charCodeAt(0)>=65&&e.key.charCodeAt(0)<=90)return!0;if(this._unprocessedDeadKey)return this._unprocessedDeadKey=!1,!0;if((n.key===ce.ETX||n.key===ce.CR)&&(this.textarea.value=""),this._onKey.fire({key:n.key,domEvent:e}),this._showCursor(),this.coreService.triggerDataEvent(n.key,!0),!this.optionsService.rawOptions.screenReaderMode||e.altKey||e.ctrlKey)return this.cancel(e,!0);this._keyDownHandled=!0}_isThirdLevelShift(e,i){let n=e.isMac&&!this.options.macOptionIsMeta&&i.altKey&&!i.ctrlKey&&!i.metaKey||e.isWindows&&i.altKey&&i.ctrlKey&&!i.metaKey||e.isWindows&&i.getModifierState("AltGraph");return i.type==="keypress"?n:n&&(!i.keyCode||i.keyCode>47)}_keyUp(e){this._keyDownSeen=!1,!(this._customKeyEventHandler&&this._customKeyEventHandler(e)===!1)&&(kse(e)||this.focus(),this.updateCursorStyle(e),this._keyPressHandled=!1)}_keyPress(e){let i;if(this._keyPressHandled=!1,this._keyDownHandled||this._customKeyEventHandler&&this._customKeyEventHandler(e)===!1)return!1;if(this.cancel(e),e.charCode)i=e.charCode;else if(e.which===null||e.which===void 0)i=e.keyCode;else if(e.which!==0&&e.charCode!==0)i=e.which;else return!1;return!i||(e.altKey||e.ctrlKey||e.metaKey)&&!this._isThirdLevelShift(this.browser,e)?!1:(i=String.fromCharCode(i),this._onKey.fire({key:i,domEvent:e}),this._showCursor(),this.coreService.triggerDataEvent(i,!0),this._keyPressHandled=!0,this._unprocessedDeadKey=!1,!0)}_inputEvent(e){if(e.data&&e.inputType==="insertText"&&(!e.composed||!this._keyDownSeen)&&!this.optionsService.rawOptions.screenReaderMode){if(this._keyPressHandled)return!1;this._unprocessedDeadKey=!1;let i=e.data;return this.coreService.triggerDataEvent(i,!0),this.cancel(e),!0}return!1}resize(e,i){if(e===this.cols&&i===this.rows){this._charSizeService&&!this._charSizeService.hasValidSize&&this._charSizeService.measure();return}super.resize(e,i)}_afterResize(e,i){var n;(n=this._charSizeService)==null||n.measure()}clear(){if(!(this.buffer.ybase===0&&this.buffer.y===0)){this.buffer.clearAllMarkers(),this.buffer.lines.set(0,this.buffer.lines.get(this.buffer.ybase+this.buffer.y)),this.buffer.lines.length=1,this.buffer.ydisp=0,this.buffer.ybase=0,this.buffer.y=0;for(let e=1;e=0;e--)this._addons[e].instance.dispose()}loadAddon(e,i){let n={instance:i,dispose:i.dispose,isDisposed:!1};this._addons.push(n),i.dispose=()=>this._wrappedAddonDispose(n),i.activate(e)}_wrappedAddonDispose(e){if(e.isDisposed)return;let i=-1;for(let n=0;n=this._line.length))return i?(this._line.loadCell(e,i),i):this._line.loadCell(e,new Rr)}translateToString(e,i,n){return this._line.translateToString(e,i,n)}},DR=class{constructor(t,e){this._buffer=t,this.type=e}init(t){return this._buffer=t,this}get cursorY(){return this._buffer.y}get cursorX(){return this._buffer.x}get viewportY(){return this._buffer.ydisp}get baseY(){return this._buffer.ybase}get length(){return this._buffer.lines.length}getLine(t){let e=this._buffer.lines.get(t);if(e)return new Ase(e)}getNullCell(){return new Rr}},Ese=class extends We{constructor(t){super(),this._core=t,this._onBufferChange=this._register(new me),this.onBufferChange=this._onBufferChange.event,this._normal=new DR(this._core.buffers.normal,"normal"),this._alternate=new DR(this._core.buffers.alt,"alternate"),this._core.buffers.onBufferActivate(()=>this._onBufferChange.fire(this.active))}get active(){if(this._core.buffers.active===this._core.buffers.normal)return this.normal;if(this._core.buffers.active===this._core.buffers.alt)return this.alternate;throw new Error("Active buffer is neither normal nor alternate")}get normal(){return this._normal.init(this._core.buffers.normal)}get alternate(){return this._alternate.init(this._core.buffers.alt)}},Mse=class{constructor(t){this._core=t}registerCsiHandler(t,e){return this._core.registerCsiHandler(t,i=>e(i.toArray()))}addCsiHandler(t,e){return this.registerCsiHandler(t,e)}registerDcsHandler(t,e){return this._core.registerDcsHandler(t,(i,n)=>e(i,n.toArray()))}addDcsHandler(t,e){return this.registerDcsHandler(t,e)}registerEscHandler(t,e){return this._core.registerEscHandler(t,e)}addEscHandler(t,e){return this.registerEscHandler(t,e)}registerOscHandler(t,e){return this._core.registerOscHandler(t,e)}addOscHandler(t,e){return this.registerOscHandler(t,e)}},Pse=class{constructor(e){this._core=e}register(e){this._core.unicodeService.register(e)}get versions(){return this._core.unicodeService.versions}get activeVersion(){return this._core.unicodeService.activeVersion}set activeVersion(e){this._core.unicodeService.activeVersion=e}},Rse=["cols","rows"],cs=0,Qse=class extends We{constructor(t){super(),this._core=this._register(new Cse(t)),this._addonManager=this._register(new Tse),this._publicOptions={...this._core.options};let e=n=>this._core.options[n],i=(n,r)=>{this._checkReadonlyOptions(n),this._core.options[n]=r};for(let n in this._core.options){let r={get:e.bind(this,n),set:i.bind(this,n)};Object.defineProperty(this._publicOptions,n,r)}}_checkReadonlyOptions(t){if(Rse.includes(t))throw new Error(`Option "${t}" can only be set in the constructor`)}_checkProposedApi(){if(!this._core.optionsService.rawOptions.allowProposedApi)throw new Error("You must set the allowProposedApi option to true to use proposed API")}get onBell(){return this._core.onBell}get onBinary(){return this._core.onBinary}get onCursorMove(){return this._core.onCursorMove}get onData(){return this._core.onData}get onKey(){return this._core.onKey}get onLineFeed(){return this._core.onLineFeed}get onRender(){return this._core.onRender}get onResize(){return this._core.onResize}get onScroll(){return this._core.onScroll}get onSelectionChange(){return this._core.onSelectionChange}get onTitleChange(){return this._core.onTitleChange}get onWriteParsed(){return this._core.onWriteParsed}get element(){return this._core.element}get parser(){return this._parser||(this._parser=new Mse(this._core)),this._parser}get unicode(){return this._checkProposedApi(),new Pse(this._core)}get textarea(){return this._core.textarea}get rows(){return this._core.rows}get cols(){return this._core.cols}get buffer(){return this._buffer||(this._buffer=this._register(new Ese(this._core))),this._buffer}get markers(){return this._checkProposedApi(),this._core.markers}get modes(){let t=this._core.coreService.decPrivateModes,e="none";switch(this._core.coreMouseService.activeProtocol){case"X10":e="x10";break;case"VT200":e="vt200";break;case"DRAG":e="drag";break;case"ANY":e="any";break}return{applicationCursorKeysMode:t.applicationCursorKeys,applicationKeypadMode:t.applicationKeypad,bracketedPasteMode:t.bracketedPasteMode,insertMode:this._core.coreService.modes.insertMode,mouseTrackingMode:e,originMode:t.origin,reverseWraparoundMode:t.reverseWraparound,sendFocusMode:t.sendFocus,synchronizedOutputMode:t.synchronizedOutput,wraparoundMode:t.wraparound}}get options(){return this._publicOptions}set options(t){for(let e in t)this._publicOptions[e]=t[e]}blur(){this._core.blur()}focus(){this._core.focus()}input(t,e=!0){this._core.input(t,e)}resize(t,e){this._verifyIntegers(t,e),this._core.resize(t,e)}open(t){this._core.open(t)}attachCustomKeyEventHandler(t){this._core.attachCustomKeyEventHandler(t)}attachCustomWheelEventHandler(t){this._core.attachCustomWheelEventHandler(t)}registerLinkProvider(t){return this._core.registerLinkProvider(t)}registerCharacterJoiner(t){return this._checkProposedApi(),this._core.registerCharacterJoiner(t)}deregisterCharacterJoiner(t){this._checkProposedApi(),this._core.deregisterCharacterJoiner(t)}registerMarker(t=0){return this._verifyIntegers(t),this._core.registerMarker(t)}registerDecoration(t){return this._checkProposedApi(),this._verifyPositiveIntegers(t.x??0,t.width??0,t.height??0),this._core.registerDecoration(t)}hasSelection(){return this._core.hasSelection()}select(t,e,i){this._verifyIntegers(t,e,i),this._core.select(t,e,i)}getSelection(){return this._core.getSelection()}getSelectionPosition(){return this._core.getSelectionPosition()}clearSelection(){this._core.clearSelection()}selectAll(){this._core.selectAll()}selectLines(t,e){this._verifyIntegers(t,e),this._core.selectLines(t,e)}dispose(){super.dispose()}scrollLines(t){this._verifyIntegers(t),this._core.scrollLines(t)}scrollPages(t){this._verifyIntegers(t),this._core.scrollPages(t)}scrollToTop(){this._core.scrollToTop()}scrollToBottom(){this._core.scrollToBottom()}scrollToLine(t){this._verifyIntegers(t),this._core.scrollToLine(t)}clear(){this._core.clear()}write(t,e){this._core.write(t,e)}writeln(t,e){this._core.write(t),this._core.write(`\r -`,e)}paste(t){this._core.paste(t)}refresh(t,e){this._verifyIntegers(t,e),this._core.refresh(t,e)}reset(){this._core.reset()}clearTextureAtlas(){this._core.clearTextureAtlas()}loadAddon(t){this._addonManager.loadAddon(this,t)}static get strings(){return{get promptLabel(){return Wb.get()},set promptLabel(t){Wb.set(t)},get tooMuchOutput(){return Ub.get()},set tooMuchOutput(t){Ub.set(t)}}}_verifyIntegers(...t){for(cs of t)if(cs===1/0||isNaN(cs)||cs%1!==0)throw new Error("This API only accepts integers")}_verifyPositiveIntegers(...t){for(cs of t)if(cs&&(cs===1/0||isNaN(cs)||cs%1!==0||cs<0))throw new Error("This API only accepts positive integers")}};/** +`)}clearSelection(){this._model.clearSelection(),this._removeMouseDownListeners(),this.refresh(),this._onSelectionChange.fire()}refresh(e){this._refreshAnimationFrame||(this._refreshAnimationFrame=this._coreBrowserService.window.requestAnimationFrame(()=>this._refresh())),Nw&&e&&this.selectionText.length&&this._onLinuxMouseSelection.fire(this.selectionText)}_refresh(){this._refreshAnimationFrame=void 0,this._onRedrawRequest.fire({start:this._model.finalSelectionStart,end:this._model.finalSelectionEnd,columnSelectMode:this._activeSelectionMode===3})}_isClickInSelection(e){let i=this._getMouseBufferCoords(e),n=this._model.finalSelectionStart,s=this._model.finalSelectionEnd;return!n||!s||!i?!1:this._areCoordsInSelection(i,n,s)}isCellInSelection(e,i){let n=this._model.finalSelectionStart,s=this._model.finalSelectionEnd;return!n||!s?!1:this._areCoordsInSelection([e,i],n,s)}_areCoordsInSelection(e,i,n){return e[1]>i[1]&&e[1]=i[0]&&e[0]=i[0]}_selectWordAtCursor(e,i){var r,o;let n=(o=(r=this._linkifier.currentLink)==null?void 0:r.link)==null?void 0:o.range;if(n)return this._model.selectionStart=[n.start.x-1,n.start.y-1],this._model.selectionStartLength=uR(n,this._bufferService.cols),this._model.selectionEnd=void 0,!0;let s=this._getMouseBufferCoords(e);return s?(this._selectWordAt(s,i),this._model.selectionEnd=void 0,!0):!1}selectAll(){this._model.isSelectAllActive=!0,this.refresh(),this._onSelectionChange.fire()}selectLines(e,i){this._model.clearSelection(),e=Math.max(e,0),i=Math.min(i,this._bufferService.buffer.lines.length-1),this._model.selectionStart=[0,e],this._model.selectionEnd=[this._bufferService.cols,i],this.refresh(),this._onSelectionChange.fire()}_handleTrim(e){this._model.handleTrim(e)&&this.refresh()}_getMouseBufferCoords(e){let i=this._mouseService.getCoords(e,this._screenElement,this._bufferService.cols,this._bufferService.rows,!0);if(i)return i[0]--,i[1]--,i[1]+=this._bufferService.buffer.ydisp,i}_getMouseEventScrollAmount(e){let i=$w(this._coreBrowserService.window,e,this._screenElement)[1],n=this._renderService.dimensions.css.canvas.height;return i>=0&&i<=n?0:(i>n&&(i-=n),i=Math.min(Math.max(i,-zy),zy),i/=zy,i/Math.abs(i)+Math.round(i*(Qse-1)))}shouldForceSelection(e){return eO?e.altKey&&this._optionsService.rawOptions.macOptionClickForcesSelection:e.shiftKey}handleMouseDown(e){if(this._mouseDownTimeStamp=e.timeStamp,!(e.button===2&&this.hasSelection)&&e.button===0){if(!this._enabled){if(!this.shouldForceSelection(e))return;e.stopPropagation()}e.preventDefault(),this._dragScrollAmount=0,this._enabled&&e.shiftKey?this._handleIncrementalClick(e):e.detail===1?this._handleSingleClick(e):e.detail===2?this._handleDoubleClick(e):e.detail===3&&this._handleTripleClick(e),this._addMouseDownListeners(),this.refresh(!0)}}_addMouseDownListeners(){this._screenElement.ownerDocument&&(this._screenElement.ownerDocument.addEventListener("mousemove",this._mouseMoveListener),this._screenElement.ownerDocument.addEventListener("mouseup",this._mouseUpListener)),this._dragScrollIntervalTimer=this._coreBrowserService.window.setInterval(()=>this._dragScroll(),Lse)}_removeMouseDownListeners(){this._screenElement.ownerDocument&&(this._screenElement.ownerDocument.removeEventListener("mousemove",this._mouseMoveListener),this._screenElement.ownerDocument.removeEventListener("mouseup",this._mouseUpListener)),this._coreBrowserService.window.clearInterval(this._dragScrollIntervalTimer),this._dragScrollIntervalTimer=void 0}_handleIncrementalClick(e){this._model.selectionStart&&(this._model.selectionEnd=this._getMouseBufferCoords(e))}_handleSingleClick(e){if(this._model.selectionStartLength=0,this._model.isSelectAllActive=!1,this._activeSelectionMode=this.shouldColumnSelect(e)?3:0,this._model.selectionStart=this._getMouseBufferCoords(e),!this._model.selectionStart)return;this._model.selectionEnd=void 0;let i=this._bufferService.buffer.lines.get(this._model.selectionStart[1]);i&&i.length!==this._model.selectionStart[0]&&i.hasWidth(this._model.selectionStart[0])===0&&this._model.selectionStart[0]++}_handleDoubleClick(e){this._selectWordAtCursor(e,!0)&&(this._activeSelectionMode=1)}_handleTripleClick(e){let i=this._getMouseBufferCoords(e);i&&(this._activeSelectionMode=2,this._selectLineAt(i[1]))}shouldColumnSelect(e){return e.altKey&&!(eO&&this._optionsService.rawOptions.macOptionClickForcesSelection)}_handleMouseMove(e){if(e.stopImmediatePropagation(),!this._model.selectionStart)return;let i=this._model.selectionEnd?[this._model.selectionEnd[0],this._model.selectionEnd[1]]:null;if(this._model.selectionEnd=this._getMouseBufferCoords(e),!this._model.selectionEnd){this.refresh(!0);return}this._activeSelectionMode===2?this._model.selectionEnd[1]0?this._model.selectionEnd[0]=this._bufferService.cols:this._dragScrollAmount<0&&(this._model.selectionEnd[0]=0));let n=this._bufferService.buffer;if(this._model.selectionEnd[1]0?(this._activeSelectionMode!==3&&(this._model.selectionEnd[0]=this._bufferService.cols),this._model.selectionEnd[1]=Math.min(e.ydisp+this._bufferService.rows,e.lines.length-1)):(this._activeSelectionMode!==3&&(this._model.selectionEnd[0]=0),this._model.selectionEnd[1]=e.ydisp),this.refresh()}}_handleMouseUp(e){let i=e.timeStamp-this._mouseDownTimeStamp;if(this._removeMouseDownListeners(),this.selectionText.length<=1&&ithis._handleTrim(i))}_convertViewportColToCharacterIndex(e,i){let n=i;for(let s=0;i>=s;s++){let r=e.loadCell(s,this._workCell).getChars().length;this._workCell.getWidth()===0?n--:r>1&&i!==s&&(n+=r-1)}return n}setSelection(e,i,n){this._model.clearSelection(),this._removeMouseDownListeners(),this._model.selectionStart=[e,i],this._model.selectionStartLength=n,this.refresh(),this._fireEventIfSelectionChanged()}rightClickSelect(e){this._isClickInSelection(e)||(this._selectWordAtCursor(e,!1)&&this.refresh(!0),this._fireEventIfSelectionChanged())}_getWordAt(e,i,n=!0,s=!0){if(e[0]>=this._bufferService.cols)return;let r=this._bufferService.buffer,o=r.lines.get(e[1]);if(!o)return;let l=r.translateBufferLineToString(e[1],!1),c=this._convertViewportColToCharacterIndex(o,e[0]),u=c,d=e[0]-c,p=0,g=0,O=0,_=0;if(l.charAt(c)===" "){for(;c>0&&l.charAt(c-1)===" ";)c--;for(;u1&&(_+=T-1,u+=T-1);w>0&&c>0&&!this._isCharWordSeparator(o.loadCell(w-1,this._workCell));){o.loadCell(w-1,this._workCell);let A=this._workCell.getChars().length;this._workCell.getWidth()===0?(p++,w--):A>1&&(O+=A-1,c-=A-1),c--,w--}for(;k1&&(_+=A-1,u+=A-1),u++,k++}}u++;let b=c+d-p+O,x=Math.min(this._bufferService.cols,u-c+p+g-O-_);if(!(!i&&l.slice(c,u).trim()==="")){if(n&&b===0&&o.getCodePoint(0)!==32){let w=r.lines.get(e[1]-1);if(w&&o.isWrapped&&w.getCodePoint(this._bufferService.cols-1)!==32){let k=this._getWordAt([this._bufferService.cols-1,e[1]-1],!1,!0,!1);if(k){let T=this._bufferService.cols-k.start;b-=T,x+=T}}}if(s&&b+x===this._bufferService.cols&&o.getCodePoint(this._bufferService.cols-1)!==32){let w=r.lines.get(e[1]+1);if(w!=null&&w.isWrapped&&w.getCodePoint(0)!==32){let k=this._getWordAt([0,e[1]+1],!1,!1,!0);k&&(x+=k.length)}}return{start:b,length:x}}}_selectWordAt(e,i){let n=this._getWordAt(e,i);if(n){for(;n.start<0;)n.start+=this._bufferService.cols,e[1]--;this._model.selectionStart=[n.start,e[1]],this._model.selectionStartLength=n.length}}_selectToWordAt(e){let i=this._getWordAt(e,!0);if(i){let n=e[1];for(;i.start<0;)i.start+=this._bufferService.cols,n--;if(!this._model.areSelectionValuesReversed())for(;i.start+i.length>this._bufferService.cols;)i.length-=this._bufferService.cols,n++;this._model.selectionEnd=[this._model.areSelectionValuesReversed()?i.start:i.start+i.length,n]}}_isCharWordSeparator(e){return e.getWidth()===0?!1:this._optionsService.rawOptions.wordSeparator.indexOf(e.getChars())>=0}_selectLineAt(e){let i=this._bufferService.buffer.getWrappedRangeForLine(e),n={start:{x:0,y:i.first},end:{x:this._bufferService.cols-1,y:i.last}};this._model.selectionStart=[0,i.first],this._model.selectionEnd=void 0,this._model.selectionStartLength=uR(n,this._bufferService.cols)}};_S=Ut([be(3,yn),be(4,$l),be(5,Mw),be(6,bn),be(7,ko),be(8,Co)],_S);var fR=class{constructor(){this._data={}}set(e,i,n){this._data[e]||(this._data[e]={}),this._data[e][i]=n}get(e,i){return this._data[e]?this._data[e][i]:void 0}clear(){this._data={}}},dR=class{constructor(){this._color=new fR,this._css=new fR}setCss(e,i,n){this._css.set(e,i,n)}getCss(e,i){return this._css.get(e,i)}setColor(e,i,n){this._color.set(e,i,n)}getColor(e,i){return this._color.get(e,i)}clear(){this._color.clear(),this._css.clear()}},mi=Object.freeze((()=>{let t=[Nt.toColor("#2e3436"),Nt.toColor("#cc0000"),Nt.toColor("#4e9a06"),Nt.toColor("#c4a000"),Nt.toColor("#3465a4"),Nt.toColor("#75507b"),Nt.toColor("#06989a"),Nt.toColor("#d3d7cf"),Nt.toColor("#555753"),Nt.toColor("#ef2929"),Nt.toColor("#8ae234"),Nt.toColor("#fce94f"),Nt.toColor("#729fcf"),Nt.toColor("#ad7fa8"),Nt.toColor("#34e2e2"),Nt.toColor("#eeeeec")],e=[0,95,135,175,215,255];for(let i=0;i<216;i++){let n=e[i/36%6|0],s=e[i/6%6|0],r=e[i%6];t.push({css:ci.toCss(n,s,r),rgba:ci.toRgba(n,s,r)})}for(let i=0;i<24;i++){let n=8+i*10;t.push({css:ci.toCss(n,n,n),rgba:ci.toRgba(n,n,n)})}return t})()),cl=Nt.toColor("#ffffff"),nf=Nt.toColor("#000000"),pR=Nt.toColor("#ffffff"),mR=nf,$u={css:"rgba(255, 255, 255, 0.3)",rgba:4294967117},Nse=cl,yS=class extends Ue{constructor(e){super(),this._optionsService=e,this._contrastCache=new dR,this._halfContrastCache=new dR,this._onChangeColors=this._register(new me),this.onChangeColors=this._onChangeColors.event,this._colors={foreground:cl,background:nf,cursor:pR,cursorAccent:mR,selectionForeground:void 0,selectionBackgroundTransparent:$u,selectionBackgroundOpaque:Pt.blend(nf,$u),selectionInactiveBackgroundTransparent:$u,selectionInactiveBackgroundOpaque:Pt.blend(nf,$u),scrollbarSliderBackground:Pt.opacity(cl,.2),scrollbarSliderHoverBackground:Pt.opacity(cl,.4),scrollbarSliderActiveBackground:Pt.opacity(cl,.5),overviewRulerBorder:cl,ansi:mi.slice(),contrastCache:this._contrastCache,halfContrastCache:this._halfContrastCache},this._updateRestoreColors(),this._setTheme(this._optionsService.rawOptions.theme),this._register(this._optionsService.onSpecificOptionChange("minimumContrastRatio",()=>this._contrastCache.clear())),this._register(this._optionsService.onSpecificOptionChange("theme",()=>this._setTheme(this._optionsService.rawOptions.theme)))}get colors(){return this._colors}_setTheme(e={}){let i=this._colors;if(i.foreground=Ot(e.foreground,cl),i.background=Ot(e.background,nf),i.cursor=Pt.blend(i.background,Ot(e.cursor,pR)),i.cursorAccent=Pt.blend(i.background,Ot(e.cursorAccent,mR)),i.selectionBackgroundTransparent=Ot(e.selectionBackground,$u),i.selectionBackgroundOpaque=Pt.blend(i.background,i.selectionBackgroundTransparent),i.selectionInactiveBackgroundTransparent=Ot(e.selectionInactiveBackground,i.selectionBackgroundTransparent),i.selectionInactiveBackgroundOpaque=Pt.blend(i.background,i.selectionInactiveBackgroundTransparent),i.selectionForeground=e.selectionForeground?Ot(e.selectionForeground,lR):void 0,i.selectionForeground===lR&&(i.selectionForeground=void 0),Pt.isOpaque(i.selectionBackgroundTransparent)&&(i.selectionBackgroundTransparent=Pt.opacity(i.selectionBackgroundTransparent,.3)),Pt.isOpaque(i.selectionInactiveBackgroundTransparent)&&(i.selectionInactiveBackgroundTransparent=Pt.opacity(i.selectionInactiveBackgroundTransparent,.3)),i.scrollbarSliderBackground=Ot(e.scrollbarSliderBackground,Pt.opacity(i.foreground,.2)),i.scrollbarSliderHoverBackground=Ot(e.scrollbarSliderHoverBackground,Pt.opacity(i.foreground,.4)),i.scrollbarSliderActiveBackground=Ot(e.scrollbarSliderActiveBackground,Pt.opacity(i.foreground,.5)),i.overviewRulerBorder=Ot(e.overviewRulerBorder,Nse),i.ansi=mi.slice(),i.ansi[0]=Ot(e.black,mi[0]),i.ansi[1]=Ot(e.red,mi[1]),i.ansi[2]=Ot(e.green,mi[2]),i.ansi[3]=Ot(e.yellow,mi[3]),i.ansi[4]=Ot(e.blue,mi[4]),i.ansi[5]=Ot(e.magenta,mi[5]),i.ansi[6]=Ot(e.cyan,mi[6]),i.ansi[7]=Ot(e.white,mi[7]),i.ansi[8]=Ot(e.brightBlack,mi[8]),i.ansi[9]=Ot(e.brightRed,mi[9]),i.ansi[10]=Ot(e.brightGreen,mi[10]),i.ansi[11]=Ot(e.brightYellow,mi[11]),i.ansi[12]=Ot(e.brightBlue,mi[12]),i.ansi[13]=Ot(e.brightMagenta,mi[13]),i.ansi[14]=Ot(e.brightCyan,mi[14]),i.ansi[15]=Ot(e.brightWhite,mi[15]),e.extendedAnsi){let n=Math.min(i.ansi.length-16,e.extendedAnsi.length);for(let s=0;sr.index-o.index),n=[];for(let r of i){let o=this._services.get(r.id);if(!o)throw new Error(`[createInstance] ${t.name} depends on UNKNOWN service ${r.id._id}.`);n.push(o)}let s=i.length>0?i[0].index:e.length;if(e.length!==s)throw new Error(`[createInstance] First service dependency of ${t.name} at position ${s+1} conflicts with ${e.length} static arguments`);return new t(...e,...n)}},Ise={trace:0,debug:1,info:2,warn:3,error:4,off:5},Vse="xterm.js: ",bS=class extends Ue{constructor(e){super(),this._optionsService=e,this._logLevel=5,this._updateLogLevel(),this._register(this._optionsService.onSpecificOptionChange("logLevel",()=>this._updateLogLevel()))}get logLevel(){return this._logLevel}_updateLogLevel(){this._logLevel=Ise[this._optionsService.rawOptions.logLevel]}_evalLazyOptionalParams(e){for(let i=0;ithis._length)for(let i=this._length;i=e;s--)this._array[this._getCyclicIndex(s+n.length)]=this._array[this._getCyclicIndex(s)];for(let s=0;sthis._maxLength){let s=this._length+n.length-this._maxLength;this._startIndex+=s,this._length=this._maxLength,this.onTrimEmitter.fire(s)}else this._length+=n.length}trimStart(e){e>this._length&&(e=this._length),this._startIndex+=e,this._length-=e,this.onTrimEmitter.fire(e)}shiftElements(e,i,n){if(!(i<=0)){if(e<0||e>=this._length)throw new Error("start argument out of range");if(e+n<0)throw new Error("Cannot shift elements in list beyond index 0");if(n>0){for(let r=i-1;r>=0;r--)this.set(e+r+n,this.get(e+r));let s=e+i+n-this._length;if(s>0)for(this._length+=s;this._length>this._maxLength;)this._length--,this._startIndex++,this.onTrimEmitter.fire(1)}else for(let s=0;s>22,i&2097152?this._combined[e].charCodeAt(this._combined[e].length-1):n]}set(e,i){this._data[e*qe+1]=i[0],i[1].length>1?(this._combined[e]=i[1],this._data[e*qe+0]=e|2097152|i[2]<<22):this._data[e*qe+0]=i[1].charCodeAt(0)|i[2]<<22}getWidth(e){return this._data[e*qe+0]>>22}hasWidth(e){return this._data[e*qe+0]&12582912}getFg(e){return this._data[e*qe+1]}getBg(e){return this._data[e*qe+2]}hasContent(e){return this._data[e*qe+0]&4194303}getCodePoint(e){let i=this._data[e*qe+0];return i&2097152?this._combined[e].charCodeAt(this._combined[e].length-1):i&2097151}isCombined(e){return this._data[e*qe+0]&2097152}getString(e){let i=this._data[e*qe+0];return i&2097152?this._combined[e]:i&2097151?ga(i&2097151):""}isProtected(e){return this._data[e*qe+2]&536870912}loadCell(e,i){return Tm=e*qe,i.content=this._data[Tm+0],i.fg=this._data[Tm+1],i.bg=this._data[Tm+2],i.content&2097152&&(i.combinedData=this._combined[e]),i.bg&268435456&&(i.extended=this._extendedAttrs[e]),i}setCell(e,i){i.content&2097152&&(this._combined[e]=i.combinedData),i.bg&268435456&&(this._extendedAttrs[e]=i.extended),this._data[e*qe+0]=i.content,this._data[e*qe+1]=i.fg,this._data[e*qe+2]=i.bg}setCellFromCodepoint(e,i,n,s){s.bg&268435456&&(this._extendedAttrs[e]=s.extended),this._data[e*qe+0]=i|n<<22,this._data[e*qe+1]=s.fg,this._data[e*qe+2]=s.bg}addCodepointToCell(e,i,n){let s=this._data[e*qe+0];s&2097152?this._combined[e]+=ga(i):s&2097151?(this._combined[e]=ga(s&2097151)+ga(i),s&=-2097152,s|=2097152):s=i|1<<22,n&&(s&=-12582913,s|=n<<22),this._data[e*qe+0]=s}insertCells(e,i,n){if(e%=this.length,e&&this.getWidth(e-1)===2&&this.setCellFromCodepoint(e-1,0,1,n),i=0;--r)this.setCell(e+i+r,this.loadCell(e+r,s));for(let r=0;rthis.length){if(this._data.buffer.byteLength>=n*4)this._data=new Uint32Array(this._data.buffer,0,n);else{let s=new Uint32Array(n);s.set(this._data),this._data=s}for(let s=this.length;s=e&&delete this._combined[l]}let r=Object.keys(this._extendedAttrs);for(let o=0;o=e&&delete this._extendedAttrs[l]}}return this.length=e,n*4*jy=0;--e)if(this._data[e*qe+0]&4194303)return e+(this._data[e*qe+0]>>22);return 0}getNoBgTrimmedLength(){for(let e=this.length-1;e>=0;--e)if(this._data[e*qe+0]&4194303||this._data[e*qe+2]&50331648)return e+(this._data[e*qe+0]>>22);return 0}copyCellsFrom(e,i,n,s,r){let o=e._data;if(r)for(let c=s-1;c>=0;c--){for(let u=0;u=i&&(this._combined[u-i+n]=e._combined[u])}}translateToString(e,i,n,s){i=i??0,n=n??this.length,e&&(n=Math.min(n,this.getTrimmedLength())),s&&(s.length=0);let r="";for(;i>22||1}return s&&s.push(i),r}};function Xse(t,e,i,n,s,r){let o=[];for(let l=0;l=l&&n0&&(x>p||d[x].getTrimmedLength()===0);x--)b++;b>0&&(o.push(l+d.length-b),o.push(b)),l+=d.length-1}return o}function Zse(t,e){let i=[],n=0,s=e[n],r=0;for(let o=0;ond(t,u,e)).reduce((c,u)=>c+u),r=0,o=0,l=0;for(;lc&&(r-=c,o++);let u=t[o].getWidth(r-1)===2;u&&r--;let d=u?i-1:i;n.push(d),l+=d}return n}function nd(t,e,i){if(e===t.length-1)return t[e].getTrimmedLength();let n=!t[e].hasContent(i-1)&&t[e].getWidth(i-1)===1,s=t[e+1].getWidth(0)===2;return n&&s?i-1:i}var lN=class cN{constructor(e){this.line=e,this.isDisposed=!1,this._disposables=[],this._id=cN._nextId++,this._onDispose=this.register(new me),this.onDispose=this._onDispose.event}get id(){return this._id}dispose(){this.isDisposed||(this.isDisposed=!0,this.line=-1,this._onDispose.fire(),Pl(this._disposables),this._disposables.length=0)}register(e){return this._disposables.push(e),e}};lN._nextId=1;var Use=lN,yi={},hl=yi.B;yi[0]={"`":"◆",a:"▒",b:"␉",c:"␌",d:"␍",e:"␊",f:"°",g:"±",h:"␤",i:"␋",j:"┘",k:"┐",l:"┌",m:"└",n:"┼",o:"⎺",p:"⎻",q:"─",r:"⎼",s:"⎽",t:"├",u:"┤",v:"┴",w:"┬",x:"│",y:"≤",z:"≥","{":"π","|":"≠","}":"£","~":"·"};yi.A={"#":"£"};yi.B=void 0;yi[4]={"#":"£","@":"¾","[":"ij","\\":"½","]":"|","{":"¨","|":"f","}":"¼","~":"´"};yi.C=yi[5]={"[":"Ä","\\":"Ö","]":"Å","^":"Ü","`":"é","{":"ä","|":"ö","}":"å","~":"ü"};yi.R={"#":"£","@":"à","[":"°","\\":"ç","]":"§","{":"é","|":"ù","}":"è","~":"¨"};yi.Q={"@":"à","[":"â","\\":"ç","]":"ê","^":"î","`":"ô","{":"é","|":"ù","}":"è","~":"û"};yi.K={"@":"§","[":"Ä","\\":"Ö","]":"Ü","{":"ä","|":"ö","}":"ü","~":"ß"};yi.Y={"#":"£","@":"§","[":"°","\\":"ç","]":"é","`":"ù","{":"à","|":"ò","}":"è","~":"ì"};yi.E=yi[6]={"@":"Ä","[":"Æ","\\":"Ø","]":"Å","^":"Ü","`":"ä","{":"æ","|":"ø","}":"å","~":"ü"};yi.Z={"#":"£","@":"§","[":"¡","\\":"Ñ","]":"¿","{":"°","|":"ñ","}":"ç"};yi.H=yi[7]={"@":"É","[":"Ä","\\":"Ö","]":"Å","^":"Ü","`":"é","{":"ä","|":"ö","}":"å","~":"ü"};yi["="]={"#":"ù","@":"à","[":"é","\\":"ç","]":"ê","^":"î",_:"è","`":"ô","{":"ä","|":"ö","}":"ü","~":"û"};var OR=4294967295,vR=class{constructor(t,e,i){this._hasScrollback=t,this._optionsService=e,this._bufferService=i,this.ydisp=0,this.ybase=0,this.y=0,this.x=0,this.tabs={},this.savedY=0,this.savedX=0,this.savedCurAttrData=oi.clone(),this.savedCharset=hl,this.markers=[],this._nullCell=Rs.fromCharData([0,k6,1,0]),this._whitespaceCell=Rs.fromCharData([0,ya,1,32]),this._isClearing=!1,this._memoryCleanupQueue=new tO,this._memoryCleanupPosition=0,this._cols=this._bufferService.cols,this._rows=this._bufferService.rows,this.lines=new gR(this._getCorrectBufferLength(this._rows)),this.scrollTop=0,this.scrollBottom=this._rows-1,this.setupTabStops()}getNullCell(t){return t?(this._nullCell.fg=t.fg,this._nullCell.bg=t.bg,this._nullCell.extended=t.extended):(this._nullCell.fg=0,this._nullCell.bg=0,this._nullCell.extended=new Gg),this._nullCell}getWhitespaceCell(t){return t?(this._whitespaceCell.fg=t.fg,this._whitespaceCell.bg=t.bg,this._whitespaceCell.extended=t.extended):(this._whitespaceCell.fg=0,this._whitespaceCell.bg=0,this._whitespaceCell.extended=new Gg),this._whitespaceCell}getBlankLine(t,e){return new sf(this._bufferService.cols,this.getNullCell(t),e)}get hasScrollback(){return this._hasScrollback&&this.lines.maxLength>this._rows}get isCursorInViewport(){let t=this.ybase+this.y-this.ydisp;return t>=0&&tOR?OR:e}fillViewportRows(t){if(this.lines.length===0){t===void 0&&(t=oi);let e=this._rows;for(;e--;)this.lines.push(this.getBlankLine(t))}}clear(){this.ydisp=0,this.ybase=0,this.y=0,this.x=0,this.lines=new gR(this._getCorrectBufferLength(this._rows)),this.scrollTop=0,this.scrollBottom=this._rows-1,this.setupTabStops()}resize(t,e){let i=this.getNullCell(oi),n=0,s=this._getCorrectBufferLength(e);if(s>this.lines.maxLength&&(this.lines.maxLength=s),this.lines.length>0){if(this._cols0&&this.lines.length<=this.ybase+this.y+r+1?(this.ybase--,r++,this.ydisp>0&&this.ydisp--):this.lines.push(new sf(t,i)));else for(let o=this._rows;o>e;o--)this.lines.length>e+this.ybase&&(this.lines.length>this.ybase+this.y+1?this.lines.pop():(this.ybase++,this.ydisp++));if(s0&&(this.lines.trimStart(o),this.ybase=Math.max(this.ybase-o,0),this.ydisp=Math.max(this.ydisp-o,0),this.savedY=Math.max(this.savedY-o,0)),this.lines.maxLength=s}this.x=Math.min(this.x,t-1),this.y=Math.min(this.y,e-1),r&&(this.y+=r),this.savedX=Math.min(this.savedX,t-1),this.scrollTop=0}if(this.scrollBottom=e-1,this._isReflowEnabled&&(this._reflow(t,e),this._cols>t))for(let r=0;r.1*this.lines.length&&(this._memoryCleanupPosition=0,this._memoryCleanupQueue.enqueue(()=>this._batchedMemoryCleanup()))}_batchedMemoryCleanup(){let t=!0;this._memoryCleanupPosition>=this.lines.length&&(this._memoryCleanupPosition=0,t=!1);let e=0;for(;this._memoryCleanupPosition100)return!0;return t}get _isReflowEnabled(){let t=this._optionsService.rawOptions.windowsPty;return t&&t.buildNumber?this._hasScrollback&&t.backend==="conpty"&&t.buildNumber>=21376:this._hasScrollback&&!this._optionsService.rawOptions.windowsMode}_reflow(t,e){this._cols!==t&&(t>this._cols?this._reflowLarger(t,e):this._reflowSmaller(t,e))}_reflowLarger(t,e){let i=this._optionsService.rawOptions.reflowCursorLine,n=Xse(this.lines,this._cols,t,this.ybase+this.y,this.getNullCell(oi),i);if(n.length>0){let s=Zse(this.lines,n);qse(this.lines,s.layout),this._reflowLargerAdjustViewport(t,e,s.countRemoved)}}_reflowLargerAdjustViewport(t,e,i){let n=this.getNullCell(oi),s=i;for(;s-- >0;)this.ybase===0?(this.y>0&&this.y--,this.lines.length=0;o--){let l=this.lines.get(o);if(!l||!l.isWrapped&&l.getTrimmedLength()<=t)continue;let c=[l];for(;l.isWrapped&&o>0;)l=this.lines.get(--o),c.unshift(l);if(!i){let T=this.ybase+this.y;if(T>=o&&T0&&(s.push({start:o+c.length+r,newLines:O}),r+=O.length),c.push(...O);let _=d.length-1,b=d[_];b===0&&(_--,b=d[_]);let x=c.length-p-1,w=u;for(;x>=0;){let T=Math.min(w,b);if(c[_]===void 0)break;if(c[_].copyCellsFrom(c[x],w-T,b-T,T,!0),b-=T,b===0&&(_--,b=d[_]),w-=T,w===0){x--;let A=Math.max(x,0);w=nd(c,A,this._cols)}}for(let T=0;T0;)this.ybase===0?this.y0){let o=[],l=[];for(let b=0;b=0;b--)if(p&&p.start>u+g){for(let x=p.newLines.length-1;x>=0;x--)this.lines.set(b--,p.newLines[x]);b++,o.push({index:u+1,amount:p.newLines.length}),g+=p.newLines.length,p=s[++d]}else this.lines.set(b,l[u--]);let O=0;for(let b=o.length-1;b>=0;b--)o[b].index+=O,this.lines.onInsertEmitter.fire(o[b]),O+=o[b].amount;let _=Math.max(0,c+r-this.lines.maxLength);_>0&&this.lines.onTrimEmitter.fire(_)}}translateBufferLineToString(t,e,i=0,n){let s=this.lines.get(t);return s?s.translateToString(e,i,n):""}getWrappedRangeForLine(t){let e=t,i=t;for(;e>0&&this.lines.get(e).isWrapped;)e--;for(;i+10;);return t>=this._cols?this._cols-1:t<0?0:t}nextStop(t){for(t==null&&(t=this.x);!this.tabs[++t]&&t=this._cols?this._cols-1:t<0?0:t}clearMarkers(t){this._isClearing=!0;for(let e=0;e{e.line-=i,e.line<0&&e.dispose()})),e.register(this.lines.onInsert(i=>{e.line>=i.index&&(e.line+=i.amount)})),e.register(this.lines.onDelete(i=>{e.line>=i.index&&e.linei.index&&(e.line-=i.amount)})),e.register(e.onDispose(()=>this._removeMarker(e))),e}_removeMarker(t){this._isClearing||this.markers.splice(this.markers.indexOf(t),1)}},Yse=class extends Ue{constructor(e,i){super(),this._optionsService=e,this._bufferService=i,this._onBufferActivate=this._register(new me),this.onBufferActivate=this._onBufferActivate.event,this.reset(),this._register(this._optionsService.onSpecificOptionChange("scrollback",()=>this.resize(this._bufferService.cols,this._bufferService.rows))),this._register(this._optionsService.onSpecificOptionChange("tabStopWidth",()=>this.setupTabStops()))}reset(){this._normal=new vR(!0,this._optionsService,this._bufferService),this._normal.fillViewportRows(),this._alt=new vR(!1,this._optionsService,this._bufferService),this._activeBuffer=this._normal,this._onBufferActivate.fire({activeBuffer:this._normal,inactiveBuffer:this._alt}),this.setupTabStops()}get alt(){return this._alt}get active(){return this._activeBuffer}get normal(){return this._normal}activateNormalBuffer(){this._activeBuffer!==this._normal&&(this._normal.x=this._alt.x,this._normal.y=this._alt.y,this._alt.clearAllMarkers(),this._alt.clear(),this._activeBuffer=this._normal,this._onBufferActivate.fire({activeBuffer:this._normal,inactiveBuffer:this._alt}))}activateAltBuffer(e){this._activeBuffer!==this._alt&&(this._alt.fillViewportRows(e),this._alt.x=this._normal.x,this._alt.y=this._normal.y,this._activeBuffer=this._alt,this._onBufferActivate.fire({activeBuffer:this._alt,inactiveBuffer:this._normal}))}resize(e,i){this._normal.resize(e,i),this._alt.resize(e,i),this.setupTabStops(e)}setupTabStops(e){this._normal.setupTabStops(e),this._alt.setupTabStops(e)}},hN=2,uN=1,SS=class extends Ue{constructor(t){super(),this.isUserScrolling=!1,this._onResize=this._register(new me),this.onResize=this._onResize.event,this._onScroll=this._register(new me),this.onScroll=this._onScroll.event,this.cols=Math.max(t.rawOptions.cols||0,hN),this.rows=Math.max(t.rawOptions.rows||0,uN),this.buffers=this._register(new Yse(t,this)),this._register(this.buffers.onBufferActivate(e=>{this._onScroll.fire(e.activeBuffer.ydisp)}))}get buffer(){return this.buffers.active}resize(t,e){let i=this.cols!==t,n=this.rows!==e;this.cols=t,this.rows=e,this.buffers.resize(t,e),this._onResize.fire({cols:t,rows:e,colsChanged:i,rowsChanged:n})}reset(){this.buffers.reset(),this.isUserScrolling=!1}scroll(t,e=!1){let i=this.buffer,n;n=this._cachedBlankLine,(!n||n.length!==this.cols||n.getFg(0)!==t.fg||n.getBg(0)!==t.bg)&&(n=i.getBlankLine(t,e),this._cachedBlankLine=n),n.isWrapped=e;let s=i.ybase+i.scrollTop,r=i.ybase+i.scrollBottom;if(i.scrollTop===0){let o=i.lines.isFull;r===i.lines.length-1?o?i.lines.recycle().copyFrom(n):i.lines.push(n.clone()):i.lines.splice(r+1,0,n.clone()),o?this.isUserScrolling&&(i.ydisp=Math.max(i.ydisp-1,0)):(i.ybase++,this.isUserScrolling||i.ydisp++)}else{let o=r-s+1;i.lines.shiftElements(s+1,o-1,-1),i.lines.set(r,n.clone())}this.isUserScrolling||(i.ydisp=i.ybase),this._onScroll.fire(i.ydisp)}scrollLines(t,e){let i=this.buffer;if(t<0){if(i.ydisp===0)return;this.isUserScrolling=!0}else t+i.ydisp>=i.ybase&&(this.isUserScrolling=!1);let n=i.ydisp;i.ydisp=Math.max(Math.min(i.ydisp+t,i.ybase),0),n!==i.ydisp&&(e||this._onScroll.fire(i.ydisp))}};SS=Ut([be(0,bn)],SS);var Cc={cols:80,rows:24,cursorBlink:!1,cursorStyle:"block",cursorWidth:1,cursorInactiveStyle:"outline",customGlyphs:!0,drawBoldTextInBrightColors:!0,documentOverride:null,fastScrollModifier:"alt",fastScrollSensitivity:5,fontFamily:"monospace",fontSize:15,fontWeight:"normal",fontWeightBold:"bold",ignoreBracketedPasteMode:!1,lineHeight:1,letterSpacing:0,linkHandler:null,logLevel:"info",logger:null,scrollback:1e3,scrollOnEraseInDisplay:!1,scrollOnUserInput:!0,scrollSensitivity:1,screenReaderMode:!1,smoothScrollDuration:0,macOptionIsMeta:!1,macOptionClickForcesSelection:!1,minimumContrastRatio:1,disableStdin:!1,allowProposedApi:!1,allowTransparency:!1,tabStopWidth:8,theme:{},reflowCursorLine:!1,rescaleOverlappingGlyphs:!1,rightClickSelectsWord:eO,windowOptions:{},windowsMode:!1,windowsPty:{},wordSeparator:" ()[]{}',\"`",altClickMovesCursor:!0,convertEol:!1,termName:"xterm",cancelEvents:!1,overviewRuler:{}},Hse=["normal","bold","100","200","300","400","500","600","700","800","900"],Fse=class extends Ue{constructor(e){super(),this._onOptionChange=this._register(new me),this.onOptionChange=this._onOptionChange.event;let i={...Cc};for(let n in e)if(n in i)try{let s=e[n];i[n]=this._sanitizeAndValidateOption(n,s)}catch(s){console.error(s)}this.rawOptions=i,this.options={...i},this._setupOptions(),this._register(Bt(()=>{this.rawOptions.linkHandler=null,this.rawOptions.documentOverride=null}))}onSpecificOptionChange(e,i){return this.onOptionChange(n=>{n===e&&i(this.rawOptions[e])})}onMultipleOptionChange(e,i){return this.onOptionChange(n=>{e.indexOf(n)!==-1&&i()})}_setupOptions(){let e=n=>{if(!(n in Cc))throw new Error(`No option with key "${n}"`);return this.rawOptions[n]},i=(n,s)=>{if(!(n in Cc))throw new Error(`No option with key "${n}"`);s=this._sanitizeAndValidateOption(n,s),this.rawOptions[n]!==s&&(this.rawOptions[n]=s,this._onOptionChange.fire(n))};for(let n in this.rawOptions){let s={get:e.bind(this,n),set:i.bind(this,n)};Object.defineProperty(this.options,n,s)}}_sanitizeAndValidateOption(e,i){switch(e){case"cursorStyle":if(i||(i=Cc[e]),!Gse(i))throw new Error(`"${i}" is not a valid value for ${e}`);break;case"wordSeparator":i||(i=Cc[e]);break;case"fontWeight":case"fontWeightBold":if(typeof i=="number"&&1<=i&&i<=1e3)break;i=Hse.includes(i)?i:Cc[e];break;case"cursorWidth":i=Math.floor(i);case"lineHeight":case"tabStopWidth":if(i<1)throw new Error(`${e} cannot be less than 1, value: ${i}`);break;case"minimumContrastRatio":i=Math.max(1,Math.min(21,Math.round(i*10)/10));break;case"scrollback":if(i=Math.min(i,4294967295),i<0)throw new Error(`${e} cannot be less than 0, value: ${i}`);break;case"fastScrollSensitivity":case"scrollSensitivity":if(i<=0)throw new Error(`${e} cannot be less than or equal to 0, value: ${i}`);break;case"rows":case"cols":if(!i&&i!==0)throw new Error(`${e} must be numeric, value: ${i}`);break;case"windowsPty":i=i??{};break}return i}};function Gse(t){return t==="block"||t==="underline"||t==="bar"}function rf(t,e=5){if(typeof t!="object")return t;let i=Array.isArray(t)?[]:{};for(let n in t)i[n]=e<=1?t[n]:t[n]&&rf(t[n],e-1);return i}var _R=Object.freeze({insertMode:!1}),yR=Object.freeze({applicationCursorKeys:!1,applicationKeypad:!1,bracketedPasteMode:!1,cursorBlink:void 0,cursorStyle:void 0,origin:!1,reverseWraparound:!1,sendFocus:!1,synchronizedOutput:!1,wraparound:!0}),xS=class extends Ue{constructor(e,i,n){super(),this._bufferService=e,this._logService=i,this._optionsService=n,this.isCursorInitialized=!1,this.isCursorHidden=!1,this._onData=this._register(new me),this.onData=this._onData.event,this._onUserInput=this._register(new me),this.onUserInput=this._onUserInput.event,this._onBinary=this._register(new me),this.onBinary=this._onBinary.event,this._onRequestScrollToBottom=this._register(new me),this.onRequestScrollToBottom=this._onRequestScrollToBottom.event,this.modes=rf(_R),this.decPrivateModes=rf(yR)}reset(){this.modes=rf(_R),this.decPrivateModes=rf(yR)}triggerDataEvent(e,i=!1){if(this._optionsService.rawOptions.disableStdin)return;let n=this._bufferService.buffer;i&&this._optionsService.rawOptions.scrollOnUserInput&&n.ybase!==n.ydisp&&this._onRequestScrollToBottom.fire(),i&&this._onUserInput.fire(),this._logService.debug(`sending data "${e}"`),this._logService.trace("sending data (codes)",()=>e.split("").map(s=>s.charCodeAt(0))),this._onData.fire(e)}triggerBinaryEvent(e){this._optionsService.rawOptions.disableStdin||(this._logService.debug(`sending binary "${e}"`),this._logService.trace("sending binary (codes)",()=>e.split("").map(i=>i.charCodeAt(0))),this._onBinary.fire(e))}};xS=Ut([be(0,yn),be(1,P6),be(2,bn)],xS);var bR={NONE:{events:0,restrict:()=>!1},X10:{events:1,restrict:t=>t.button===4||t.action!==1?!1:(t.ctrl=!1,t.alt=!1,t.shift=!1,!0)},VT200:{events:19,restrict:t=>t.action!==32},DRAG:{events:23,restrict:t=>!(t.action===32&&t.button===3)},ANY:{events:31,restrict:t=>!0}};function Iy(t,e){let i=(t.ctrl?16:0)|(t.shift?4:0)|(t.alt?8:0);return t.button===4?(i|=64,i|=t.action):(i|=t.button&3,t.button&4&&(i|=64),t.button&8&&(i|=128),t.action===32?i|=32:t.action===0&&!e&&(i|=3)),i}var Vy=String.fromCharCode,SR={DEFAULT:t=>{let e=[Iy(t,!1)+32,t.col+32,t.row+32];return e[0]>255||e[1]>255||e[2]>255?"":`\x1B[M${Vy(e[0])}${Vy(e[1])}${Vy(e[2])}`},SGR:t=>{let e=t.action===0&&t.button!==4?"m":"M";return`\x1B[<${Iy(t,!0)};${t.col};${t.row}${e}`},SGR_PIXELS:t=>{let e=t.action===0&&t.button!==4?"m":"M";return`\x1B[<${Iy(t,!0)};${t.x};${t.y}${e}`}},wS=class extends Ue{constructor(t,e,i){super(),this._bufferService=t,this._coreService=e,this._optionsService=i,this._protocols={},this._encodings={},this._activeProtocol="",this._activeEncoding="",this._lastEvent=null,this._wheelPartialScroll=0,this._onProtocolChange=this._register(new me),this.onProtocolChange=this._onProtocolChange.event;for(let n of Object.keys(bR))this.addProtocol(n,bR[n]);for(let n of Object.keys(SR))this.addEncoding(n,SR[n]);this.reset()}addProtocol(t,e){this._protocols[t]=e}addEncoding(t,e){this._encodings[t]=e}get activeProtocol(){return this._activeProtocol}get areMouseEventsActive(){return this._protocols[this._activeProtocol].events!==0}set activeProtocol(t){if(!this._protocols[t])throw new Error(`unknown protocol "${t}"`);this._activeProtocol=t,this._onProtocolChange.fire(this._protocols[t].events)}get activeEncoding(){return this._activeEncoding}set activeEncoding(t){if(!this._encodings[t])throw new Error(`unknown encoding "${t}"`);this._activeEncoding=t}reset(){this.activeProtocol="NONE",this.activeEncoding="DEFAULT",this._lastEvent=null,this._wheelPartialScroll=0}consumeWheelEvent(t,e,i){if(t.deltaY===0||t.shiftKey||e===void 0||i===void 0)return 0;let n=e/i,s=this._applyScrollModifier(t.deltaY,t);return t.deltaMode===WheelEvent.DOM_DELTA_PIXEL?(s/=n+0,Math.abs(t.deltaY)<50&&(s*=.3),this._wheelPartialScroll+=s,s=Math.floor(Math.abs(this._wheelPartialScroll))*(this._wheelPartialScroll>0?1:-1),this._wheelPartialScroll%=1):t.deltaMode===WheelEvent.DOM_DELTA_PAGE&&(s*=this._bufferService.rows),s}_applyScrollModifier(t,e){return e.altKey||e.ctrlKey||e.shiftKey?t*this._optionsService.rawOptions.fastScrollSensitivity*this._optionsService.rawOptions.scrollSensitivity:t*this._optionsService.rawOptions.scrollSensitivity}triggerMouseEvent(t){if(t.col<0||t.col>=this._bufferService.cols||t.row<0||t.row>=this._bufferService.rows||t.button===4&&t.action===32||t.button===3&&t.action!==32||t.button!==4&&(t.action===2||t.action===3)||(t.col++,t.row++,t.action===32&&this._lastEvent&&this._equalEvents(this._lastEvent,t,this._activeEncoding==="SGR_PIXELS"))||!this._protocols[this._activeProtocol].restrict(t))return!1;let e=this._encodings[this._activeEncoding](t);return e&&(this._activeEncoding==="DEFAULT"?this._coreService.triggerBinaryEvent(e):this._coreService.triggerDataEvent(e,!0)),this._lastEvent=t,!0}explainEvents(t){return{down:!!(t&1),up:!!(t&2),drag:!!(t&4),move:!!(t&8),wheel:!!(t&16)}}_equalEvents(t,e,i){if(i){if(t.x!==e.x||t.y!==e.y)return!1}else if(t.col!==e.col||t.row!==e.row)return!1;return!(t.button!==e.button||t.action!==e.action||t.ctrl!==e.ctrl||t.alt!==e.alt||t.shift!==e.shift)}};wS=Ut([be(0,yn),be(1,$l),be(2,bn)],wS);var Xy=[[768,879],[1155,1158],[1160,1161],[1425,1469],[1471,1471],[1473,1474],[1476,1477],[1479,1479],[1536,1539],[1552,1557],[1611,1630],[1648,1648],[1750,1764],[1767,1768],[1770,1773],[1807,1807],[1809,1809],[1840,1866],[1958,1968],[2027,2035],[2305,2306],[2364,2364],[2369,2376],[2381,2381],[2385,2388],[2402,2403],[2433,2433],[2492,2492],[2497,2500],[2509,2509],[2530,2531],[2561,2562],[2620,2620],[2625,2626],[2631,2632],[2635,2637],[2672,2673],[2689,2690],[2748,2748],[2753,2757],[2759,2760],[2765,2765],[2786,2787],[2817,2817],[2876,2876],[2879,2879],[2881,2883],[2893,2893],[2902,2902],[2946,2946],[3008,3008],[3021,3021],[3134,3136],[3142,3144],[3146,3149],[3157,3158],[3260,3260],[3263,3263],[3270,3270],[3276,3277],[3298,3299],[3393,3395],[3405,3405],[3530,3530],[3538,3540],[3542,3542],[3633,3633],[3636,3642],[3655,3662],[3761,3761],[3764,3769],[3771,3772],[3784,3789],[3864,3865],[3893,3893],[3895,3895],[3897,3897],[3953,3966],[3968,3972],[3974,3975],[3984,3991],[3993,4028],[4038,4038],[4141,4144],[4146,4146],[4150,4151],[4153,4153],[4184,4185],[4448,4607],[4959,4959],[5906,5908],[5938,5940],[5970,5971],[6002,6003],[6068,6069],[6071,6077],[6086,6086],[6089,6099],[6109,6109],[6155,6157],[6313,6313],[6432,6434],[6439,6440],[6450,6450],[6457,6459],[6679,6680],[6912,6915],[6964,6964],[6966,6970],[6972,6972],[6978,6978],[7019,7027],[7616,7626],[7678,7679],[8203,8207],[8234,8238],[8288,8291],[8298,8303],[8400,8431],[12330,12335],[12441,12442],[43014,43014],[43019,43019],[43045,43046],[64286,64286],[65024,65039],[65056,65059],[65279,65279],[65529,65531]],Kse=[[68097,68099],[68101,68102],[68108,68111],[68152,68154],[68159,68159],[119143,119145],[119155,119170],[119173,119179],[119210,119213],[119362,119364],[917505,917505],[917536,917631],[917760,917999]],gi;function Jse(t,e){let i=0,n=e.length-1,s;if(te[n][1])return!1;for(;n>=i;)if(s=i+n>>1,t>e[s][1])i=s+1;else if(t=131072&&e<=196605||e>=196608&&e<=262141?2:1}charProperties(e,i){let n=this.wcwidth(e),s=n===0&&i!==0;if(s){let r=yl.extractWidth(i);r===0?s=!1:r>n&&(n=r)}return yl.createPropertyValue(0,n,s)}},yl=class sg{constructor(){this._providers=Object.create(null),this._active="",this._onChange=new me,this.onChange=this._onChange.event;let e=new ere;this.register(e),this._active=e.version,this._activeProvider=e}static extractShouldJoin(e){return(e&1)!==0}static extractWidth(e){return e>>1&3}static extractCharKind(e){return e>>3}static createPropertyValue(e,i,n=!1){return(e&16777215)<<3|(i&3)<<1|(n?1:0)}dispose(){this._onChange.dispose()}get versions(){return Object.keys(this._providers)}get activeVersion(){return this._active}set activeVersion(e){if(!this._providers[e])throw new Error(`unknown Unicode version "${e}"`);this._active=e,this._activeProvider=this._providers[e],this._onChange.fire(e)}register(e){this._providers[e.version]=e}wcwidth(e){return this._activeProvider.wcwidth(e)}getStringCellWidth(e){let i=0,n=0,s=e.length;for(let r=0;r=s)return i+this.wcwidth(o);let u=e.charCodeAt(r);56320<=u&&u<=57343?o=(o-55296)*1024+u-56320+65536:i+=this.wcwidth(u)}let l=this.charProperties(o,n),c=sg.extractWidth(l);sg.extractShouldJoin(l)&&(c-=sg.extractWidth(n)),i+=c,n=l}return i}charProperties(e,i){return this._activeProvider.charProperties(e,i)}},tre=class{constructor(){this.glevel=0,this._charsets=[]}reset(){this.charset=void 0,this._charsets=[],this.glevel=0}setgLevel(e){this.glevel=e,this.charset=this._charsets[e]}setgCharset(e,i){this._charsets[e]=i,this.glevel===e&&(this.charset=i)}};function xR(t){var n;let e=(n=t.buffer.lines.get(t.buffer.ybase+t.buffer.y-1))==null?void 0:n.get(t.cols-1),i=t.buffer.lines.get(t.buffer.ybase+t.buffer.y);i&&e&&(i.isWrapped=e[3]!==0&&e[3]!==32)}var Nu=2147483647,ire=256,fN=class CS{constructor(e=32,i=32){if(this.maxLength=e,this.maxSubParamsLength=i,i>ire)throw new Error("maxSubParamsLength must not be greater than 256");this.params=new Int32Array(e),this.length=0,this._subParams=new Int32Array(i),this._subParamsLength=0,this._subParamsIdx=new Uint16Array(e),this._rejectDigits=!1,this._rejectSubDigits=!1,this._digitIsSub=!1}static fromArray(e){let i=new CS;if(!e.length)return i;for(let n=Array.isArray(e[0])?1:0;n>8,s=this._subParamsIdx[i]&255;s-n>0&&e.push(Array.prototype.slice.call(this._subParams,n,s))}return e}reset(){this.length=0,this._subParamsLength=0,this._rejectDigits=!1,this._rejectSubDigits=!1,this._digitIsSub=!1}addParam(e){if(this._digitIsSub=!1,this.length>=this.maxLength){this._rejectDigits=!0;return}if(e<-1)throw new Error("values lesser than -1 are not allowed");this._subParamsIdx[this.length]=this._subParamsLength<<8|this._subParamsLength,this.params[this.length++]=e>Nu?Nu:e}addSubParam(e){if(this._digitIsSub=!0,!!this.length){if(this._rejectDigits||this._subParamsLength>=this.maxSubParamsLength){this._rejectSubDigits=!0;return}if(e<-1)throw new Error("values lesser than -1 are not allowed");this._subParams[this._subParamsLength++]=e>Nu?Nu:e,this._subParamsIdx[this.length-1]++}}hasSubParams(e){return(this._subParamsIdx[e]&255)-(this._subParamsIdx[e]>>8)>0}getSubParams(e){let i=this._subParamsIdx[e]>>8,n=this._subParamsIdx[e]&255;return n-i>0?this._subParams.subarray(i,n):null}getSubParamsAll(){let e={};for(let i=0;i>8,s=this._subParamsIdx[i]&255;s-n>0&&(e[i]=this._subParams.slice(n,s))}return e}addDigit(e){let i;if(this._rejectDigits||!(i=this._digitIsSub?this._subParamsLength:this.length)||this._digitIsSub&&this._rejectSubDigits)return;let n=this._digitIsSub?this._subParams:this.params,s=n[i-1];n[i-1]=~s?Math.min(s*10+e,Nu):e}},zu=[],nre=class{constructor(){this._state=0,this._active=zu,this._id=-1,this._handlers=Object.create(null),this._handlerFb=()=>{},this._stack={paused:!1,loopPosition:0,fallThrough:!1}}registerHandler(e,i){this._handlers[e]===void 0&&(this._handlers[e]=[]);let n=this._handlers[e];return n.push(i),{dispose:()=>{let s=n.indexOf(i);s!==-1&&n.splice(s,1)}}}clearHandler(e){this._handlers[e]&&delete this._handlers[e]}setHandlerFallback(e){this._handlerFb=e}dispose(){this._handlers=Object.create(null),this._handlerFb=()=>{},this._active=zu}reset(){if(this._state===2)for(let e=this._stack.paused?this._stack.loopPosition-1:this._active.length-1;e>=0;--e)this._active[e].end(!1);this._stack.paused=!1,this._active=zu,this._id=-1,this._state=0}_start(){if(this._active=this._handlers[this._id]||zu,!this._active.length)this._handlerFb(this._id,"START");else for(let e=this._active.length-1;e>=0;e--)this._active[e].start()}_put(e,i,n){if(!this._active.length)this._handlerFb(this._id,"PUT",kO(e,i,n));else for(let s=this._active.length-1;s>=0;s--)this._active[s].put(e,i,n)}start(){this.reset(),this._state=1}put(e,i,n){if(this._state!==3){if(this._state===1)for(;i0&&this._put(e,i,n)}}end(e,i=!0){if(this._state!==0){if(this._state!==3)if(this._state===1&&this._start(),!this._active.length)this._handlerFb(this._id,"END",e);else{let n=!1,s=this._active.length-1,r=!1;if(this._stack.paused&&(s=this._stack.loopPosition-1,n=i,r=this._stack.fallThrough,this._stack.paused=!1),!r&&n===!1){for(;s>=0&&(n=this._active[s].end(e),n!==!0);s--)if(n instanceof Promise)return this._stack.paused=!0,this._stack.loopPosition=s,this._stack.fallThrough=!1,n;s--}for(;s>=0;s--)if(n=this._active[s].end(!1),n instanceof Promise)return this._stack.paused=!0,this._stack.loopPosition=s,this._stack.fallThrough=!0,n}this._active=zu,this._id=-1,this._state=0}}},Jn=class{constructor(e){this._handler=e,this._data="",this._hitLimit=!1}start(){this._data="",this._hitLimit=!1}put(e,i,n){this._hitLimit||(this._data+=kO(e,i,n),this._data.length>1e7&&(this._data="",this._hitLimit=!0))}end(e){let i=!1;if(this._hitLimit)i=!1;else if(e&&(i=this._handler(this._data),i instanceof Promise))return i.then(n=>(this._data="",this._hitLimit=!1,n));return this._data="",this._hitLimit=!1,i}},ju=[],sre=class{constructor(){this._handlers=Object.create(null),this._active=ju,this._ident=0,this._handlerFb=()=>{},this._stack={paused:!1,loopPosition:0,fallThrough:!1}}dispose(){this._handlers=Object.create(null),this._handlerFb=()=>{},this._active=ju}registerHandler(e,i){this._handlers[e]===void 0&&(this._handlers[e]=[]);let n=this._handlers[e];return n.push(i),{dispose:()=>{let s=n.indexOf(i);s!==-1&&n.splice(s,1)}}}clearHandler(e){this._handlers[e]&&delete this._handlers[e]}setHandlerFallback(e){this._handlerFb=e}reset(){if(this._active.length)for(let e=this._stack.paused?this._stack.loopPosition-1:this._active.length-1;e>=0;--e)this._active[e].unhook(!1);this._stack.paused=!1,this._active=ju,this._ident=0}hook(e,i){if(this.reset(),this._ident=e,this._active=this._handlers[e]||ju,!this._active.length)this._handlerFb(this._ident,"HOOK",i);else for(let n=this._active.length-1;n>=0;n--)this._active[n].hook(i)}put(e,i,n){if(!this._active.length)this._handlerFb(this._ident,"PUT",kO(e,i,n));else for(let s=this._active.length-1;s>=0;s--)this._active[s].put(e,i,n)}unhook(e,i=!0){if(!this._active.length)this._handlerFb(this._ident,"UNHOOK",e);else{let n=!1,s=this._active.length-1,r=!1;if(this._stack.paused&&(s=this._stack.loopPosition-1,n=i,r=this._stack.fallThrough,this._stack.paused=!1),!r&&n===!1){for(;s>=0&&(n=this._active[s].unhook(e),n!==!0);s--)if(n instanceof Promise)return this._stack.paused=!0,this._stack.loopPosition=s,this._stack.fallThrough=!1,n;s--}for(;s>=0;s--)if(n=this._active[s].unhook(!1),n instanceof Promise)return this._stack.paused=!0,this._stack.loopPosition=s,this._stack.fallThrough=!0,n}this._active=ju,this._ident=0}},of=new fN;of.addParam(0);var wR=class{constructor(t){this._handler=t,this._data="",this._params=of,this._hitLimit=!1}hook(t){this._params=t.length>1||t.params[0]?t.clone():of,this._data="",this._hitLimit=!1}put(t,e,i){this._hitLimit||(this._data+=kO(t,e,i),this._data.length>1e7&&(this._data="",this._hitLimit=!0))}unhook(t){let e=!1;if(this._hitLimit)e=!1;else if(t&&(e=this._handler(this._data,this._params),e instanceof Promise))return e.then(i=>(this._params=of,this._data="",this._hitLimit=!1,i));return this._params=of,this._data="",this._hitLimit=!1,e}},rre=class{constructor(e){this.table=new Uint8Array(e)}setDefault(e,i){this.table.fill(e<<4|i)}add(e,i,n,s){this.table[i<<8|e]=n<<4|s}addMany(e,i,n,s){for(let r=0;rc),i=(l,c)=>e.slice(l,c),n=i(32,127),s=i(0,24);s.push(25),s.push.apply(s,i(28,32));let r=i(0,14),o;t.setDefault(1,0),t.addMany(n,0,2,0);for(o in r)t.addMany([24,26,153,154],o,3,0),t.addMany(i(128,144),o,3,0),t.addMany(i(144,152),o,3,0),t.add(156,o,0,0),t.add(27,o,11,1),t.add(157,o,4,8),t.addMany([152,158,159],o,0,7),t.add(155,o,11,3),t.add(144,o,11,9);return t.addMany(s,0,3,0),t.addMany(s,1,3,1),t.add(127,1,0,1),t.addMany(s,8,0,8),t.addMany(s,3,3,3),t.add(127,3,0,3),t.addMany(s,4,3,4),t.add(127,4,0,4),t.addMany(s,6,3,6),t.addMany(s,5,3,5),t.add(127,5,0,5),t.addMany(s,2,3,2),t.add(127,2,0,2),t.add(93,1,4,8),t.addMany(n,8,5,8),t.add(127,8,5,8),t.addMany([156,27,24,26,7],8,6,0),t.addMany(i(28,32),8,0,8),t.addMany([88,94,95],1,0,7),t.addMany(n,7,0,7),t.addMany(s,7,0,7),t.add(156,7,0,0),t.add(127,7,0,7),t.add(91,1,11,3),t.addMany(i(64,127),3,7,0),t.addMany(i(48,60),3,8,4),t.addMany([60,61,62,63],3,9,4),t.addMany(i(48,60),4,8,4),t.addMany(i(64,127),4,7,0),t.addMany([60,61,62,63],4,0,6),t.addMany(i(32,64),6,0,6),t.add(127,6,0,6),t.addMany(i(64,127),6,0,0),t.addMany(i(32,48),3,9,5),t.addMany(i(32,48),5,9,5),t.addMany(i(48,64),5,0,6),t.addMany(i(64,127),5,7,0),t.addMany(i(32,48),4,9,5),t.addMany(i(32,48),1,9,2),t.addMany(i(32,48),2,9,2),t.addMany(i(48,127),2,10,0),t.addMany(i(48,80),1,10,0),t.addMany(i(81,88),1,10,0),t.addMany([89,90,92],1,10,0),t.addMany(i(96,127),1,10,0),t.add(80,1,11,9),t.addMany(s,9,0,9),t.add(127,9,0,9),t.addMany(i(28,32),9,0,9),t.addMany(i(32,48),9,9,12),t.addMany(i(48,60),9,8,10),t.addMany([60,61,62,63],9,9,10),t.addMany(s,11,0,11),t.addMany(i(32,128),11,0,11),t.addMany(i(28,32),11,0,11),t.addMany(s,10,0,10),t.add(127,10,0,10),t.addMany(i(28,32),10,0,10),t.addMany(i(48,60),10,8,10),t.addMany([60,61,62,63],10,0,11),t.addMany(i(32,48),10,9,12),t.addMany(s,12,0,12),t.add(127,12,0,12),t.addMany(i(28,32),12,0,12),t.addMany(i(32,48),12,9,12),t.addMany(i(48,64),12,0,11),t.addMany(i(64,127),12,12,13),t.addMany(i(64,127),10,12,13),t.addMany(i(64,127),9,12,13),t.addMany(s,13,13,13),t.addMany(n,13,13,13),t.add(127,13,0,13),t.addMany([27,156,24,26],13,14,0),t.add(Ss,0,2,0),t.add(Ss,8,5,8),t.add(Ss,6,0,6),t.add(Ss,11,0,11),t.add(Ss,13,13,13),t})(),are=class extends Ue{constructor(e=ore){super(),this._transitions=e,this._parseStack={state:0,handlers:[],handlerPos:0,transition:0,chunkPos:0},this.initialState=0,this.currentState=this.initialState,this._params=new fN,this._params.addParam(0),this._collect=0,this.precedingJoinState=0,this._printHandlerFb=(i,n,s)=>{},this._executeHandlerFb=i=>{},this._csiHandlerFb=(i,n)=>{},this._escHandlerFb=i=>{},this._errorHandlerFb=i=>i,this._printHandler=this._printHandlerFb,this._executeHandlers=Object.create(null),this._csiHandlers=Object.create(null),this._escHandlers=Object.create(null),this._register(Bt(()=>{this._csiHandlers=Object.create(null),this._executeHandlers=Object.create(null),this._escHandlers=Object.create(null)})),this._oscParser=this._register(new nre),this._dcsParser=this._register(new sre),this._errorHandler=this._errorHandlerFb,this.registerEscHandler({final:"\\"},()=>!0)}_identifier(e,i=[64,126]){let n=0;if(e.prefix){if(e.prefix.length>1)throw new Error("only one byte as prefix supported");if(n=e.prefix.charCodeAt(0),n&&60>n||n>63)throw new Error("prefix must be in range 0x3c .. 0x3f")}if(e.intermediates){if(e.intermediates.length>2)throw new Error("only two bytes as intermediates are supported");for(let r=0;ro||o>47)throw new Error("intermediate must be in range 0x20 .. 0x2f");n<<=8,n|=o}}if(e.final.length!==1)throw new Error("final must be a single byte");let s=e.final.charCodeAt(0);if(i[0]>s||s>i[1])throw new Error(`final must be in range ${i[0]} .. ${i[1]}`);return n<<=8,n|=s,n}identToString(e){let i=[];for(;e;)i.push(String.fromCharCode(e&255)),e>>=8;return i.reverse().join("")}setPrintHandler(e){this._printHandler=e}clearPrintHandler(){this._printHandler=this._printHandlerFb}registerEscHandler(e,i){let n=this._identifier(e,[48,126]);this._escHandlers[n]===void 0&&(this._escHandlers[n]=[]);let s=this._escHandlers[n];return s.push(i),{dispose:()=>{let r=s.indexOf(i);r!==-1&&s.splice(r,1)}}}clearEscHandler(e){this._escHandlers[this._identifier(e,[48,126])]&&delete this._escHandlers[this._identifier(e,[48,126])]}setEscHandlerFallback(e){this._escHandlerFb=e}setExecuteHandler(e,i){this._executeHandlers[e.charCodeAt(0)]=i}clearExecuteHandler(e){this._executeHandlers[e.charCodeAt(0)]&&delete this._executeHandlers[e.charCodeAt(0)]}setExecuteHandlerFallback(e){this._executeHandlerFb=e}registerCsiHandler(e,i){let n=this._identifier(e);this._csiHandlers[n]===void 0&&(this._csiHandlers[n]=[]);let s=this._csiHandlers[n];return s.push(i),{dispose:()=>{let r=s.indexOf(i);r!==-1&&s.splice(r,1)}}}clearCsiHandler(e){this._csiHandlers[this._identifier(e)]&&delete this._csiHandlers[this._identifier(e)]}setCsiHandlerFallback(e){this._csiHandlerFb=e}registerDcsHandler(e,i){return this._dcsParser.registerHandler(this._identifier(e),i)}clearDcsHandler(e){this._dcsParser.clearHandler(this._identifier(e))}setDcsHandlerFallback(e){this._dcsParser.setHandlerFallback(e)}registerOscHandler(e,i){return this._oscParser.registerHandler(e,i)}clearOscHandler(e){this._oscParser.clearHandler(e)}setOscHandlerFallback(e){this._oscParser.setHandlerFallback(e)}setErrorHandler(e){this._errorHandler=e}clearErrorHandler(){this._errorHandler=this._errorHandlerFb}reset(){this.currentState=this.initialState,this._oscParser.reset(),this._dcsParser.reset(),this._params.reset(),this._params.addParam(0),this._collect=0,this.precedingJoinState=0,this._parseStack.state!==0&&(this._parseStack.state=2,this._parseStack.handlers=[])}_preserveStack(e,i,n,s,r){this._parseStack.state=e,this._parseStack.handlers=i,this._parseStack.handlerPos=n,this._parseStack.transition=s,this._parseStack.chunkPos=r}parse(e,i,n){let s=0,r=0,o=0,l;if(this._parseStack.state)if(this._parseStack.state===2)this._parseStack.state=0,o=this._parseStack.chunkPos+1;else{if(n===void 0||this._parseStack.state===1)throw this._parseStack.state=1,new Error("improper continuation due to previous async handler, giving up parsing");let c=this._parseStack.handlers,u=this._parseStack.handlerPos-1;switch(this._parseStack.state){case 3:if(n===!1&&u>-1){for(;u>=0&&(l=c[u](this._params),l!==!0);u--)if(l instanceof Promise)return this._parseStack.handlerPos=u,l}this._parseStack.handlers=[];break;case 4:if(n===!1&&u>-1){for(;u>=0&&(l=c[u](),l!==!0);u--)if(l instanceof Promise)return this._parseStack.handlerPos=u,l}this._parseStack.handlers=[];break;case 6:if(s=e[this._parseStack.chunkPos],l=this._dcsParser.unhook(s!==24&&s!==26,n),l)return l;s===27&&(this._parseStack.transition|=1),this._params.reset(),this._params.addParam(0),this._collect=0;break;case 5:if(s=e[this._parseStack.chunkPos],l=this._oscParser.end(s!==24&&s!==26,n),l)return l;s===27&&(this._parseStack.transition|=1),this._params.reset(),this._params.addParam(0),this._collect=0;break}this._parseStack.state=0,o=this._parseStack.chunkPos+1,this.precedingJoinState=0,this.currentState=this._parseStack.transition&15}for(let c=o;c>4){case 2:for(let O=c+1;;++O){if(O>=i||(s=e[O])<32||s>126&&s=i||(s=e[O])<32||s>126&&s=i||(s=e[O])<32||s>126&&s=i||(s=e[O])<32||s>126&&s=0&&(l=u[d](this._params),l!==!0);d--)if(l instanceof Promise)return this._preserveStack(3,u,d,r,c),l;d<0&&this._csiHandlerFb(this._collect<<8|s,this._params),this.precedingJoinState=0;break;case 8:do switch(s){case 59:this._params.addParam(0);break;case 58:this._params.addSubParam(-1);break;default:this._params.addDigit(s-48)}while(++c47&&s<60);c--;break;case 9:this._collect<<=8,this._collect|=s;break;case 10:let p=this._escHandlers[this._collect<<8|s],g=p?p.length-1:-1;for(;g>=0&&(l=p[g](),l!==!0);g--)if(l instanceof Promise)return this._preserveStack(4,p,g,r,c),l;g<0&&this._escHandlerFb(this._collect<<8|s),this.precedingJoinState=0;break;case 11:this._params.reset(),this._params.addParam(0),this._collect=0;break;case 12:this._dcsParser.hook(this._collect<<8|s,this._params);break;case 13:for(let O=c+1;;++O)if(O>=i||(s=e[O])===24||s===26||s===27||s>127&&s=i||(s=e[O])<32||s>127&&s>4:r>>8}return n}}function Zy(t,e){let i=t.toString(16),n=i.length<2?"0"+i:i;switch(e){case 4:return i[0];case 8:return n;case 12:return(n+n).slice(0,3);default:return n+n}}function hre(t,e=16){let[i,n,s]=t;return`rgb:${Zy(i,e)}/${Zy(n,e)}/${Zy(s,e)}`}var ure={"(":0,")":1,"*":2,"+":3,"-":1,".":2},aa=131072,kR=10;function TR(t,e){if(t>24)return e.setWinLines||!1;switch(t){case 1:return!!e.restoreWin;case 2:return!!e.minimizeWin;case 3:return!!e.setWinPosition;case 4:return!!e.setWinSizePixels;case 5:return!!e.raiseWin;case 6:return!!e.lowerWin;case 7:return!!e.refreshWin;case 8:return!!e.setWinSizeChars;case 9:return!!e.maximizeWin;case 10:return!!e.fullscreenWin;case 11:return!!e.getWinState;case 13:return!!e.getWinPosition;case 14:return!!e.getWinSizePixels;case 15:return!!e.getScreenSizePixels;case 16:return!!e.getCellSizePixels;case 18:return!!e.getWinSizeChars;case 19:return!!e.getScreenSizeChars;case 20:return!!e.getIconTitle;case 21:return!!e.getWinTitle;case 22:return!!e.pushTitle;case 23:return!!e.popTitle;case 24:return!!e.setWinLines}return!1}var AR=5e3,ER=0,fre=class extends Ue{constructor(t,e,i,n,s,r,o,l,c=new are){super(),this._bufferService=t,this._charsetService=e,this._coreService=i,this._logService=n,this._optionsService=s,this._oscLinkService=r,this._coreMouseService=o,this._unicodeService=l,this._parser=c,this._parseBuffer=new Uint32Array(4096),this._stringDecoder=new Pie,this._utf8Decoder=new Rie,this._windowTitle="",this._iconName="",this._windowTitleStack=[],this._iconNameStack=[],this._curAttrData=oi.clone(),this._eraseAttrDataInternal=oi.clone(),this._onRequestBell=this._register(new me),this.onRequestBell=this._onRequestBell.event,this._onRequestRefreshRows=this._register(new me),this.onRequestRefreshRows=this._onRequestRefreshRows.event,this._onRequestReset=this._register(new me),this.onRequestReset=this._onRequestReset.event,this._onRequestSendFocus=this._register(new me),this.onRequestSendFocus=this._onRequestSendFocus.event,this._onRequestSyncScrollBar=this._register(new me),this.onRequestSyncScrollBar=this._onRequestSyncScrollBar.event,this._onRequestWindowsOptionsReport=this._register(new me),this.onRequestWindowsOptionsReport=this._onRequestWindowsOptionsReport.event,this._onA11yChar=this._register(new me),this.onA11yChar=this._onA11yChar.event,this._onA11yTab=this._register(new me),this.onA11yTab=this._onA11yTab.event,this._onCursorMove=this._register(new me),this.onCursorMove=this._onCursorMove.event,this._onLineFeed=this._register(new me),this.onLineFeed=this._onLineFeed.event,this._onScroll=this._register(new me),this.onScroll=this._onScroll.event,this._onTitleChange=this._register(new me),this.onTitleChange=this._onTitleChange.event,this._onColor=this._register(new me),this.onColor=this._onColor.event,this._parseStack={paused:!1,cursorStartX:0,cursorStartY:0,decodedLength:0,position:0},this._specialColors=[256,257,258],this._register(this._parser),this._dirtyRowTracker=new kS(this._bufferService),this._activeBuffer=this._bufferService.buffer,this._register(this._bufferService.buffers.onBufferActivate(u=>this._activeBuffer=u.activeBuffer)),this._parser.setCsiHandlerFallback((u,d)=>{this._logService.debug("Unknown CSI code: ",{identifier:this._parser.identToString(u),params:d.toArray()})}),this._parser.setEscHandlerFallback(u=>{this._logService.debug("Unknown ESC code: ",{identifier:this._parser.identToString(u)})}),this._parser.setExecuteHandlerFallback(u=>{this._logService.debug("Unknown EXECUTE code: ",{code:u})}),this._parser.setOscHandlerFallback((u,d,p)=>{this._logService.debug("Unknown OSC code: ",{identifier:u,action:d,data:p})}),this._parser.setDcsHandlerFallback((u,d,p)=>{d==="HOOK"&&(p=p.toArray()),this._logService.debug("Unknown DCS code: ",{identifier:this._parser.identToString(u),action:d,payload:p})}),this._parser.setPrintHandler((u,d,p)=>this.print(u,d,p)),this._parser.registerCsiHandler({final:"@"},u=>this.insertChars(u)),this._parser.registerCsiHandler({intermediates:" ",final:"@"},u=>this.scrollLeft(u)),this._parser.registerCsiHandler({final:"A"},u=>this.cursorUp(u)),this._parser.registerCsiHandler({intermediates:" ",final:"A"},u=>this.scrollRight(u)),this._parser.registerCsiHandler({final:"B"},u=>this.cursorDown(u)),this._parser.registerCsiHandler({final:"C"},u=>this.cursorForward(u)),this._parser.registerCsiHandler({final:"D"},u=>this.cursorBackward(u)),this._parser.registerCsiHandler({final:"E"},u=>this.cursorNextLine(u)),this._parser.registerCsiHandler({final:"F"},u=>this.cursorPrecedingLine(u)),this._parser.registerCsiHandler({final:"G"},u=>this.cursorCharAbsolute(u)),this._parser.registerCsiHandler({final:"H"},u=>this.cursorPosition(u)),this._parser.registerCsiHandler({final:"I"},u=>this.cursorForwardTab(u)),this._parser.registerCsiHandler({final:"J"},u=>this.eraseInDisplay(u,!1)),this._parser.registerCsiHandler({prefix:"?",final:"J"},u=>this.eraseInDisplay(u,!0)),this._parser.registerCsiHandler({final:"K"},u=>this.eraseInLine(u,!1)),this._parser.registerCsiHandler({prefix:"?",final:"K"},u=>this.eraseInLine(u,!0)),this._parser.registerCsiHandler({final:"L"},u=>this.insertLines(u)),this._parser.registerCsiHandler({final:"M"},u=>this.deleteLines(u)),this._parser.registerCsiHandler({final:"P"},u=>this.deleteChars(u)),this._parser.registerCsiHandler({final:"S"},u=>this.scrollUp(u)),this._parser.registerCsiHandler({final:"T"},u=>this.scrollDown(u)),this._parser.registerCsiHandler({final:"X"},u=>this.eraseChars(u)),this._parser.registerCsiHandler({final:"Z"},u=>this.cursorBackwardTab(u)),this._parser.registerCsiHandler({final:"`"},u=>this.charPosAbsolute(u)),this._parser.registerCsiHandler({final:"a"},u=>this.hPositionRelative(u)),this._parser.registerCsiHandler({final:"b"},u=>this.repeatPrecedingCharacter(u)),this._parser.registerCsiHandler({final:"c"},u=>this.sendDeviceAttributesPrimary(u)),this._parser.registerCsiHandler({prefix:">",final:"c"},u=>this.sendDeviceAttributesSecondary(u)),this._parser.registerCsiHandler({final:"d"},u=>this.linePosAbsolute(u)),this._parser.registerCsiHandler({final:"e"},u=>this.vPositionRelative(u)),this._parser.registerCsiHandler({final:"f"},u=>this.hVPosition(u)),this._parser.registerCsiHandler({final:"g"},u=>this.tabClear(u)),this._parser.registerCsiHandler({final:"h"},u=>this.setMode(u)),this._parser.registerCsiHandler({prefix:"?",final:"h"},u=>this.setModePrivate(u)),this._parser.registerCsiHandler({final:"l"},u=>this.resetMode(u)),this._parser.registerCsiHandler({prefix:"?",final:"l"},u=>this.resetModePrivate(u)),this._parser.registerCsiHandler({final:"m"},u=>this.charAttributes(u)),this._parser.registerCsiHandler({final:"n"},u=>this.deviceStatus(u)),this._parser.registerCsiHandler({prefix:"?",final:"n"},u=>this.deviceStatusPrivate(u)),this._parser.registerCsiHandler({intermediates:"!",final:"p"},u=>this.softReset(u)),this._parser.registerCsiHandler({intermediates:" ",final:"q"},u=>this.setCursorStyle(u)),this._parser.registerCsiHandler({final:"r"},u=>this.setScrollRegion(u)),this._parser.registerCsiHandler({final:"s"},u=>this.saveCursor(u)),this._parser.registerCsiHandler({final:"t"},u=>this.windowOptions(u)),this._parser.registerCsiHandler({final:"u"},u=>this.restoreCursor(u)),this._parser.registerCsiHandler({intermediates:"'",final:"}"},u=>this.insertColumns(u)),this._parser.registerCsiHandler({intermediates:"'",final:"~"},u=>this.deleteColumns(u)),this._parser.registerCsiHandler({intermediates:'"',final:"q"},u=>this.selectProtected(u)),this._parser.registerCsiHandler({intermediates:"$",final:"p"},u=>this.requestMode(u,!0)),this._parser.registerCsiHandler({prefix:"?",intermediates:"$",final:"p"},u=>this.requestMode(u,!1)),this._parser.setExecuteHandler(ce.BEL,()=>this.bell()),this._parser.setExecuteHandler(ce.LF,()=>this.lineFeed()),this._parser.setExecuteHandler(ce.VT,()=>this.lineFeed()),this._parser.setExecuteHandler(ce.FF,()=>this.lineFeed()),this._parser.setExecuteHandler(ce.CR,()=>this.carriageReturn()),this._parser.setExecuteHandler(ce.BS,()=>this.backspace()),this._parser.setExecuteHandler(ce.HT,()=>this.tab()),this._parser.setExecuteHandler(ce.SO,()=>this.shiftOut()),this._parser.setExecuteHandler(ce.SI,()=>this.shiftIn()),this._parser.setExecuteHandler(ig.IND,()=>this.index()),this._parser.setExecuteHandler(ig.NEL,()=>this.nextLine()),this._parser.setExecuteHandler(ig.HTS,()=>this.tabSet()),this._parser.registerOscHandler(0,new Jn(u=>(this.setTitle(u),this.setIconName(u),!0))),this._parser.registerOscHandler(1,new Jn(u=>this.setIconName(u))),this._parser.registerOscHandler(2,new Jn(u=>this.setTitle(u))),this._parser.registerOscHandler(4,new Jn(u=>this.setOrReportIndexedColor(u))),this._parser.registerOscHandler(8,new Jn(u=>this.setHyperlink(u))),this._parser.registerOscHandler(10,new Jn(u=>this.setOrReportFgColor(u))),this._parser.registerOscHandler(11,new Jn(u=>this.setOrReportBgColor(u))),this._parser.registerOscHandler(12,new Jn(u=>this.setOrReportCursorColor(u))),this._parser.registerOscHandler(104,new Jn(u=>this.restoreIndexedColor(u))),this._parser.registerOscHandler(110,new Jn(u=>this.restoreFgColor(u))),this._parser.registerOscHandler(111,new Jn(u=>this.restoreBgColor(u))),this._parser.registerOscHandler(112,new Jn(u=>this.restoreCursorColor(u))),this._parser.registerEscHandler({final:"7"},()=>this.saveCursor()),this._parser.registerEscHandler({final:"8"},()=>this.restoreCursor()),this._parser.registerEscHandler({final:"D"},()=>this.index()),this._parser.registerEscHandler({final:"E"},()=>this.nextLine()),this._parser.registerEscHandler({final:"H"},()=>this.tabSet()),this._parser.registerEscHandler({final:"M"},()=>this.reverseIndex()),this._parser.registerEscHandler({final:"="},()=>this.keypadApplicationMode()),this._parser.registerEscHandler({final:">"},()=>this.keypadNumericMode()),this._parser.registerEscHandler({final:"c"},()=>this.fullReset()),this._parser.registerEscHandler({final:"n"},()=>this.setgLevel(2)),this._parser.registerEscHandler({final:"o"},()=>this.setgLevel(3)),this._parser.registerEscHandler({final:"|"},()=>this.setgLevel(3)),this._parser.registerEscHandler({final:"}"},()=>this.setgLevel(2)),this._parser.registerEscHandler({final:"~"},()=>this.setgLevel(1)),this._parser.registerEscHandler({intermediates:"%",final:"@"},()=>this.selectDefaultCharset()),this._parser.registerEscHandler({intermediates:"%",final:"G"},()=>this.selectDefaultCharset());for(let u in yi)this._parser.registerEscHandler({intermediates:"(",final:u},()=>this.selectCharset("("+u)),this._parser.registerEscHandler({intermediates:")",final:u},()=>this.selectCharset(")"+u)),this._parser.registerEscHandler({intermediates:"*",final:u},()=>this.selectCharset("*"+u)),this._parser.registerEscHandler({intermediates:"+",final:u},()=>this.selectCharset("+"+u)),this._parser.registerEscHandler({intermediates:"-",final:u},()=>this.selectCharset("-"+u)),this._parser.registerEscHandler({intermediates:".",final:u},()=>this.selectCharset("."+u)),this._parser.registerEscHandler({intermediates:"/",final:u},()=>this.selectCharset("/"+u));this._parser.registerEscHandler({intermediates:"#",final:"8"},()=>this.screenAlignmentPattern()),this._parser.setErrorHandler(u=>(this._logService.error("Parsing error: ",u),u)),this._parser.registerDcsHandler({intermediates:"$",final:"q"},new wR((u,d)=>this.requestStatusString(u,d)))}getAttrData(){return this._curAttrData}_preserveStack(t,e,i,n){this._parseStack.paused=!0,this._parseStack.cursorStartX=t,this._parseStack.cursorStartY=e,this._parseStack.decodedLength=i,this._parseStack.position=n}_logSlowResolvingAsync(t){this._logService.logLevel<=3&&Promise.race([t,new Promise((e,i)=>setTimeout(()=>i("#SLOW_TIMEOUT"),AR))]).catch(e=>{if(e!=="#SLOW_TIMEOUT")throw e;console.warn(`async parser handler taking longer than ${AR} ms`)})}_getCurrentLinkId(){return this._curAttrData.extended.urlId}parse(t,e){let i,n=this._activeBuffer.x,s=this._activeBuffer.y,r=0,o=this._parseStack.paused;if(o){if(i=this._parser.parse(this._parseBuffer,this._parseStack.decodedLength,e))return this._logSlowResolvingAsync(i),i;n=this._parseStack.cursorStartX,s=this._parseStack.cursorStartY,this._parseStack.paused=!1,t.length>aa&&(r=this._parseStack.position+aa)}if(this._logService.logLevel<=1&&this._logService.debug(`parsing data ${typeof t=="string"?` "${t}"`:` "${Array.prototype.map.call(t,u=>String.fromCharCode(u)).join("")}"`}`),this._logService.logLevel===0&&this._logService.trace("parsing data (codes)",typeof t=="string"?t.split("").map(u=>u.charCodeAt(0)):t),this._parseBuffer.lengthaa)for(let u=r;u0&&p.getWidth(this._activeBuffer.x-1)===2&&p.setCellFromCodepoint(this._activeBuffer.x-1,0,1,d);let g=this._parser.precedingJoinState;for(let O=e;Ol){if(c){let w=p,k=this._activeBuffer.x-x;for(this._activeBuffer.x=x,this._activeBuffer.y++,this._activeBuffer.y===this._activeBuffer.scrollBottom+1?(this._activeBuffer.y--,this._bufferService.scroll(this._eraseAttrData(),!0)):(this._activeBuffer.y>=this._bufferService.rows&&(this._activeBuffer.y=this._bufferService.rows-1),this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y).isWrapped=!0),p=this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y),x>0&&p instanceof sf&&p.copyCellsFrom(w,k,0,x,!1);k=0;)p.setCellFromCodepoint(this._activeBuffer.x++,0,0,d);continue}if(u&&(p.insertCells(this._activeBuffer.x,s-x,this._activeBuffer.getNullCell(d)),p.getWidth(l-1)===2&&p.setCellFromCodepoint(l-1,0,1,d)),p.setCellFromCodepoint(this._activeBuffer.x++,n,s,d),s>0)for(;--s;)p.setCellFromCodepoint(this._activeBuffer.x++,0,0,d)}this._parser.precedingJoinState=g,this._activeBuffer.x0&&p.getWidth(this._activeBuffer.x)===0&&!p.hasContent(this._activeBuffer.x)&&p.setCellFromCodepoint(this._activeBuffer.x,0,1,d),this._dirtyRowTracker.markDirty(this._activeBuffer.y)}registerCsiHandler(t,e){return t.final==="t"&&!t.prefix&&!t.intermediates?this._parser.registerCsiHandler(t,i=>TR(i.params[0],this._optionsService.rawOptions.windowOptions)?e(i):!0):this._parser.registerCsiHandler(t,e)}registerDcsHandler(t,e){return this._parser.registerDcsHandler(t,new wR(e))}registerEscHandler(t,e){return this._parser.registerEscHandler(t,e)}registerOscHandler(t,e){return this._parser.registerOscHandler(t,new Jn(e))}bell(){return this._onRequestBell.fire(),!0}lineFeed(){return this._dirtyRowTracker.markDirty(this._activeBuffer.y),this._optionsService.rawOptions.convertEol&&(this._activeBuffer.x=0),this._activeBuffer.y++,this._activeBuffer.y===this._activeBuffer.scrollBottom+1?(this._activeBuffer.y--,this._bufferService.scroll(this._eraseAttrData())):this._activeBuffer.y>=this._bufferService.rows?this._activeBuffer.y=this._bufferService.rows-1:this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y).isWrapped=!1,this._activeBuffer.x>=this._bufferService.cols&&this._activeBuffer.x--,this._dirtyRowTracker.markDirty(this._activeBuffer.y),this._onLineFeed.fire(),!0}carriageReturn(){return this._activeBuffer.x=0,!0}backspace(){var t;if(!this._coreService.decPrivateModes.reverseWraparound)return this._restrictCursor(),this._activeBuffer.x>0&&this._activeBuffer.x--,!0;if(this._restrictCursor(this._bufferService.cols),this._activeBuffer.x>0)this._activeBuffer.x--;else if(this._activeBuffer.x===0&&this._activeBuffer.y>this._activeBuffer.scrollTop&&this._activeBuffer.y<=this._activeBuffer.scrollBottom&&((t=this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y))!=null&&t.isWrapped)){this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y).isWrapped=!1,this._activeBuffer.y--,this._activeBuffer.x=this._bufferService.cols-1;let e=this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y);e.hasWidth(this._activeBuffer.x)&&!e.hasContent(this._activeBuffer.x)&&this._activeBuffer.x--}return this._restrictCursor(),!0}tab(){if(this._activeBuffer.x>=this._bufferService.cols)return!0;let t=this._activeBuffer.x;return this._activeBuffer.x=this._activeBuffer.nextStop(),this._optionsService.rawOptions.screenReaderMode&&this._onA11yTab.fire(this._activeBuffer.x-t),!0}shiftOut(){return this._charsetService.setgLevel(1),!0}shiftIn(){return this._charsetService.setgLevel(0),!0}_restrictCursor(t=this._bufferService.cols-1){this._activeBuffer.x=Math.min(t,Math.max(0,this._activeBuffer.x)),this._activeBuffer.y=this._coreService.decPrivateModes.origin?Math.min(this._activeBuffer.scrollBottom,Math.max(this._activeBuffer.scrollTop,this._activeBuffer.y)):Math.min(this._bufferService.rows-1,Math.max(0,this._activeBuffer.y)),this._dirtyRowTracker.markDirty(this._activeBuffer.y)}_setCursor(t,e){this._dirtyRowTracker.markDirty(this._activeBuffer.y),this._coreService.decPrivateModes.origin?(this._activeBuffer.x=t,this._activeBuffer.y=this._activeBuffer.scrollTop+e):(this._activeBuffer.x=t,this._activeBuffer.y=e),this._restrictCursor(),this._dirtyRowTracker.markDirty(this._activeBuffer.y)}_moveCursor(t,e){this._restrictCursor(),this._setCursor(this._activeBuffer.x+t,this._activeBuffer.y+e)}cursorUp(t){let e=this._activeBuffer.y-this._activeBuffer.scrollTop;return e>=0?this._moveCursor(0,-Math.min(e,t.params[0]||1)):this._moveCursor(0,-(t.params[0]||1)),!0}cursorDown(t){let e=this._activeBuffer.scrollBottom-this._activeBuffer.y;return e>=0?this._moveCursor(0,Math.min(e,t.params[0]||1)):this._moveCursor(0,t.params[0]||1),!0}cursorForward(t){return this._moveCursor(t.params[0]||1,0),!0}cursorBackward(t){return this._moveCursor(-(t.params[0]||1),0),!0}cursorNextLine(t){return this.cursorDown(t),this._activeBuffer.x=0,!0}cursorPrecedingLine(t){return this.cursorUp(t),this._activeBuffer.x=0,!0}cursorCharAbsolute(t){return this._setCursor((t.params[0]||1)-1,this._activeBuffer.y),!0}cursorPosition(t){return this._setCursor(t.length>=2?(t.params[1]||1)-1:0,(t.params[0]||1)-1),!0}charPosAbsolute(t){return this._setCursor((t.params[0]||1)-1,this._activeBuffer.y),!0}hPositionRelative(t){return this._moveCursor(t.params[0]||1,0),!0}linePosAbsolute(t){return this._setCursor(this._activeBuffer.x,(t.params[0]||1)-1),!0}vPositionRelative(t){return this._moveCursor(0,t.params[0]||1),!0}hVPosition(t){return this.cursorPosition(t),!0}tabClear(t){let e=t.params[0];return e===0?delete this._activeBuffer.tabs[this._activeBuffer.x]:e===3&&(this._activeBuffer.tabs={}),!0}cursorForwardTab(t){if(this._activeBuffer.x>=this._bufferService.cols)return!0;let e=t.params[0]||1;for(;e--;)this._activeBuffer.x=this._activeBuffer.nextStop();return!0}cursorBackwardTab(t){if(this._activeBuffer.x>=this._bufferService.cols)return!0;let e=t.params[0]||1;for(;e--;)this._activeBuffer.x=this._activeBuffer.prevStop();return!0}selectProtected(t){let e=t.params[0];return e===1&&(this._curAttrData.bg|=536870912),(e===2||e===0)&&(this._curAttrData.bg&=-536870913),!0}_eraseInBufferLine(t,e,i,n=!1,s=!1){let r=this._activeBuffer.lines.get(this._activeBuffer.ybase+t);r.replaceCells(e,i,this._activeBuffer.getNullCell(this._eraseAttrData()),s),n&&(r.isWrapped=!1)}_resetBufferLine(t,e=!1){let i=this._activeBuffer.lines.get(this._activeBuffer.ybase+t);i&&(i.fill(this._activeBuffer.getNullCell(this._eraseAttrData()),e),this._bufferService.buffer.clearMarkers(this._activeBuffer.ybase+t),i.isWrapped=!1)}eraseInDisplay(t,e=!1){var n;this._restrictCursor(this._bufferService.cols);let i;switch(t.params[0]){case 0:for(i=this._activeBuffer.y,this._dirtyRowTracker.markDirty(i),this._eraseInBufferLine(i++,this._activeBuffer.x,this._bufferService.cols,this._activeBuffer.x===0,e);i=this._bufferService.cols&&(this._activeBuffer.lines.get(i+1).isWrapped=!1);i--;)this._resetBufferLine(i,e);this._dirtyRowTracker.markDirty(0);break;case 2:if(this._optionsService.rawOptions.scrollOnEraseInDisplay){for(i=this._bufferService.rows,this._dirtyRowTracker.markRangeDirty(0,i-1);i--&&!((n=this._activeBuffer.lines.get(this._activeBuffer.ybase+i))!=null&&n.getTrimmedLength()););for(;i>=0;i--)this._bufferService.scroll(this._eraseAttrData())}else{for(i=this._bufferService.rows,this._dirtyRowTracker.markDirty(i-1);i--;)this._resetBufferLine(i,e);this._dirtyRowTracker.markDirty(0)}break;case 3:let s=this._activeBuffer.lines.length-this._bufferService.rows;s>0&&(this._activeBuffer.lines.trimStart(s),this._activeBuffer.ybase=Math.max(this._activeBuffer.ybase-s,0),this._activeBuffer.ydisp=Math.max(this._activeBuffer.ydisp-s,0),this._onScroll.fire(0));break}return!0}eraseInLine(t,e=!1){switch(this._restrictCursor(this._bufferService.cols),t.params[0]){case 0:this._eraseInBufferLine(this._activeBuffer.y,this._activeBuffer.x,this._bufferService.cols,this._activeBuffer.x===0,e);break;case 1:this._eraseInBufferLine(this._activeBuffer.y,0,this._activeBuffer.x+1,!1,e);break;case 2:this._eraseInBufferLine(this._activeBuffer.y,0,this._bufferService.cols,!0,e);break}return this._dirtyRowTracker.markDirty(this._activeBuffer.y),!0}insertLines(t){this._restrictCursor();let e=t.params[0]||1;if(this._activeBuffer.y>this._activeBuffer.scrollBottom||this._activeBuffer.ythis._activeBuffer.scrollBottom||this._activeBuffer.ythis._activeBuffer.scrollBottom||this._activeBuffer.ythis._activeBuffer.scrollBottom||this._activeBuffer.ythis._activeBuffer.scrollBottom||this._activeBuffer.ythis._activeBuffer.scrollBottom||this._activeBuffer.y65535?2:1}let c=l;for(let u=1;u0||(this._is("xterm")||this._is("rxvt-unicode")||this._is("screen")?this._coreService.triggerDataEvent(ce.ESC+"[?1;2c"):this._is("linux")&&this._coreService.triggerDataEvent(ce.ESC+"[?6c")),!0}sendDeviceAttributesSecondary(t){return t.params[0]>0||(this._is("xterm")?this._coreService.triggerDataEvent(ce.ESC+"[>0;276;0c"):this._is("rxvt-unicode")?this._coreService.triggerDataEvent(ce.ESC+"[>85;95;0c"):this._is("linux")?this._coreService.triggerDataEvent(t.params[0]+"c"):this._is("screen")&&this._coreService.triggerDataEvent(ce.ESC+"[>83;40003;0c")),!0}_is(t){return(this._optionsService.rawOptions.termName+"").indexOf(t)===0}setMode(t){for(let e=0;e(b[b.NOT_RECOGNIZED=0]="NOT_RECOGNIZED",b[b.SET=1]="SET",b[b.RESET=2]="RESET",b[b.PERMANENTLY_SET=3]="PERMANENTLY_SET",b[b.PERMANENTLY_RESET=4]="PERMANENTLY_RESET"))(void 0||(i={}));let n=this._coreService.decPrivateModes,{activeProtocol:s,activeEncoding:r}=this._coreMouseService,o=this._coreService,{buffers:l,cols:c}=this._bufferService,{active:u,alt:d}=l,p=this._optionsService.rawOptions,g=(b,x)=>(o.triggerDataEvent(`${ce.ESC}[${e?"":"?"}${b};${x}$y`),!0),O=b=>b?1:2,_=t.params[0];return e?_===2?g(_,4):_===4?g(_,O(o.modes.insertMode)):_===12?g(_,3):_===20?g(_,O(p.convertEol)):g(_,0):_===1?g(_,O(n.applicationCursorKeys)):_===3?g(_,p.windowOptions.setWinLines?c===80?2:c===132?1:0:0):_===6?g(_,O(n.origin)):_===7?g(_,O(n.wraparound)):_===8?g(_,3):_===9?g(_,O(s==="X10")):_===12?g(_,O(p.cursorBlink)):_===25?g(_,O(!o.isCursorHidden)):_===45?g(_,O(n.reverseWraparound)):_===66?g(_,O(n.applicationKeypad)):_===67?g(_,4):_===1e3?g(_,O(s==="VT200")):_===1002?g(_,O(s==="DRAG")):_===1003?g(_,O(s==="ANY")):_===1004?g(_,O(n.sendFocus)):_===1005?g(_,4):_===1006?g(_,O(r==="SGR")):_===1015?g(_,4):_===1016?g(_,O(r==="SGR_PIXELS")):_===1048?g(_,1):_===47||_===1047||_===1049?g(_,O(u===d)):_===2004?g(_,O(n.bracketedPasteMode)):_===2026?g(_,O(n.synchronizedOutput)):g(_,0)}_updateAttrColor(t,e,i,n,s){return e===2?(t|=50331648,t&=-16777216,t|=bd.fromColorRGB([i,n,s])):e===5&&(t&=-50331904,t|=33554432|i&255),t}_extractColor(t,e,i){let n=[0,0,-1,0,0,0],s=0,r=0;do{if(n[r+s]=t.params[e+r],t.hasSubParams(e+r)){let o=t.getSubParams(e+r),l=0;do n[1]===5&&(s=1),n[r+l+1+s]=o[l];while(++l=2||n[1]===2&&r+s>=5)break;n[1]&&(s=1)}while(++r+e5)&&(t=1),e.extended.underlineStyle=t,e.fg|=268435456,t===0&&(e.fg&=-268435457),e.updateExtended()}_processSGR0(t){t.fg=oi.fg,t.bg=oi.bg,t.extended=t.extended.clone(),t.extended.underlineStyle=0,t.extended.underlineColor&=-67108864,t.updateExtended()}charAttributes(t){if(t.length===1&&t.params[0]===0)return this._processSGR0(this._curAttrData),!0;let e=t.length,i,n=this._curAttrData;for(let s=0;s=30&&i<=37?(n.fg&=-50331904,n.fg|=16777216|i-30):i>=40&&i<=47?(n.bg&=-50331904,n.bg|=16777216|i-40):i>=90&&i<=97?(n.fg&=-50331904,n.fg|=16777216|i-90|8):i>=100&&i<=107?(n.bg&=-50331904,n.bg|=16777216|i-100|8):i===0?this._processSGR0(n):i===1?n.fg|=134217728:i===3?n.bg|=67108864:i===4?(n.fg|=268435456,this._processUnderline(t.hasSubParams(s)?t.getSubParams(s)[0]:1,n)):i===5?n.fg|=536870912:i===7?n.fg|=67108864:i===8?n.fg|=1073741824:i===9?n.fg|=2147483648:i===2?n.bg|=134217728:i===21?this._processUnderline(2,n):i===22?(n.fg&=-134217729,n.bg&=-134217729):i===23?n.bg&=-67108865:i===24?(n.fg&=-268435457,this._processUnderline(0,n)):i===25?n.fg&=-536870913:i===27?n.fg&=-67108865:i===28?n.fg&=-1073741825:i===29?n.fg&=2147483647:i===39?(n.fg&=-67108864,n.fg|=oi.fg&16777215):i===49?(n.bg&=-67108864,n.bg|=oi.bg&16777215):i===38||i===48||i===58?s+=this._extractColor(t,s,n):i===53?n.bg|=1073741824:i===55?n.bg&=-1073741825:i===59?(n.extended=n.extended.clone(),n.extended.underlineColor=-1,n.updateExtended()):i===100?(n.fg&=-67108864,n.fg|=oi.fg&16777215,n.bg&=-67108864,n.bg|=oi.bg&16777215):this._logService.debug("Unknown SGR attribute: %d.",i);return!0}deviceStatus(t){switch(t.params[0]){case 5:this._coreService.triggerDataEvent(`${ce.ESC}[0n`);break;case 6:let e=this._activeBuffer.y+1,i=this._activeBuffer.x+1;this._coreService.triggerDataEvent(`${ce.ESC}[${e};${i}R`);break}return!0}deviceStatusPrivate(t){switch(t.params[0]){case 6:let e=this._activeBuffer.y+1,i=this._activeBuffer.x+1;this._coreService.triggerDataEvent(`${ce.ESC}[?${e};${i}R`);break}return!0}softReset(t){return this._coreService.isCursorHidden=!1,this._onRequestSyncScrollBar.fire(),this._activeBuffer.scrollTop=0,this._activeBuffer.scrollBottom=this._bufferService.rows-1,this._curAttrData=oi.clone(),this._coreService.reset(),this._charsetService.reset(),this._activeBuffer.savedX=0,this._activeBuffer.savedY=this._activeBuffer.ybase,this._activeBuffer.savedCurAttrData.fg=this._curAttrData.fg,this._activeBuffer.savedCurAttrData.bg=this._curAttrData.bg,this._activeBuffer.savedCharset=this._charsetService.charset,this._coreService.decPrivateModes.origin=!1,!0}setCursorStyle(t){let e=t.length===0?1:t.params[0];if(e===0)this._coreService.decPrivateModes.cursorStyle=void 0,this._coreService.decPrivateModes.cursorBlink=void 0;else{switch(e){case 1:case 2:this._coreService.decPrivateModes.cursorStyle="block";break;case 3:case 4:this._coreService.decPrivateModes.cursorStyle="underline";break;case 5:case 6:this._coreService.decPrivateModes.cursorStyle="bar";break}let i=e%2===1;this._coreService.decPrivateModes.cursorBlink=i}return!0}setScrollRegion(t){let e=t.params[0]||1,i;return(t.length<2||(i=t.params[1])>this._bufferService.rows||i===0)&&(i=this._bufferService.rows),i>e&&(this._activeBuffer.scrollTop=e-1,this._activeBuffer.scrollBottom=i-1,this._setCursor(0,0)),!0}windowOptions(t){if(!TR(t.params[0],this._optionsService.rawOptions.windowOptions))return!0;let e=t.length>1?t.params[1]:0;switch(t.params[0]){case 14:e!==2&&this._onRequestWindowsOptionsReport.fire(0);break;case 16:this._onRequestWindowsOptionsReport.fire(1);break;case 18:this._bufferService&&this._coreService.triggerDataEvent(`${ce.ESC}[8;${this._bufferService.rows};${this._bufferService.cols}t`);break;case 22:(e===0||e===2)&&(this._windowTitleStack.push(this._windowTitle),this._windowTitleStack.length>kR&&this._windowTitleStack.shift()),(e===0||e===1)&&(this._iconNameStack.push(this._iconName),this._iconNameStack.length>kR&&this._iconNameStack.shift());break;case 23:(e===0||e===2)&&this._windowTitleStack.length&&this.setTitle(this._windowTitleStack.pop()),(e===0||e===1)&&this._iconNameStack.length&&this.setIconName(this._iconNameStack.pop());break}return!0}saveCursor(t){return this._activeBuffer.savedX=this._activeBuffer.x,this._activeBuffer.savedY=this._activeBuffer.ybase+this._activeBuffer.y,this._activeBuffer.savedCurAttrData.fg=this._curAttrData.fg,this._activeBuffer.savedCurAttrData.bg=this._curAttrData.bg,this._activeBuffer.savedCharset=this._charsetService.charset,!0}restoreCursor(t){return this._activeBuffer.x=this._activeBuffer.savedX||0,this._activeBuffer.y=Math.max(this._activeBuffer.savedY-this._activeBuffer.ybase,0),this._curAttrData.fg=this._activeBuffer.savedCurAttrData.fg,this._curAttrData.bg=this._activeBuffer.savedCurAttrData.bg,this._charsetService.charset=this._savedCharset,this._activeBuffer.savedCharset&&(this._charsetService.charset=this._activeBuffer.savedCharset),this._restrictCursor(),!0}setTitle(t){return this._windowTitle=t,this._onTitleChange.fire(t),!0}setIconName(t){return this._iconName=t,!0}setOrReportIndexedColor(t){let e=[],i=t.split(";");for(;i.length>1;){let n=i.shift(),s=i.shift();if(/^\d+$/.exec(n)){let r=parseInt(n);if(MR(r))if(s==="?")e.push({type:0,index:r});else{let o=CR(s);o&&e.push({type:1,index:r,color:o})}}}return e.length&&this._onColor.fire(e),!0}setHyperlink(t){let e=t.indexOf(";");if(e===-1)return!0;let i=t.slice(0,e).trim(),n=t.slice(e+1);return n?this._createHyperlink(i,n):i.trim()?!1:this._finishHyperlink()}_createHyperlink(t,e){this._getCurrentLinkId()&&this._finishHyperlink();let i=t.split(":"),n,s=i.findIndex(r=>r.startsWith("id="));return s!==-1&&(n=i[s].slice(3)||void 0),this._curAttrData.extended=this._curAttrData.extended.clone(),this._curAttrData.extended.urlId=this._oscLinkService.registerLink({id:n,uri:e}),this._curAttrData.updateExtended(),!0}_finishHyperlink(){return this._curAttrData.extended=this._curAttrData.extended.clone(),this._curAttrData.extended.urlId=0,this._curAttrData.updateExtended(),!0}_setOrReportSpecialColor(t,e){let i=t.split(";");for(let n=0;n=this._specialColors.length);++n,++e)if(i[n]==="?")this._onColor.fire([{type:0,index:this._specialColors[e]}]);else{let s=CR(i[n]);s&&this._onColor.fire([{type:1,index:this._specialColors[e],color:s}])}return!0}setOrReportFgColor(t){return this._setOrReportSpecialColor(t,0)}setOrReportBgColor(t){return this._setOrReportSpecialColor(t,1)}setOrReportCursorColor(t){return this._setOrReportSpecialColor(t,2)}restoreIndexedColor(t){if(!t)return this._onColor.fire([{type:2}]),!0;let e=[],i=t.split(";");for(let n=0;n=this._bufferService.rows&&(this._activeBuffer.y=this._bufferService.rows-1),this._restrictCursor(),!0}tabSet(){return this._activeBuffer.tabs[this._activeBuffer.x]=!0,!0}reverseIndex(){if(this._restrictCursor(),this._activeBuffer.y===this._activeBuffer.scrollTop){let t=this._activeBuffer.scrollBottom-this._activeBuffer.scrollTop;this._activeBuffer.lines.shiftElements(this._activeBuffer.ybase+this._activeBuffer.y,t,1),this._activeBuffer.lines.set(this._activeBuffer.ybase+this._activeBuffer.y,this._activeBuffer.getBlankLine(this._eraseAttrData())),this._dirtyRowTracker.markRangeDirty(this._activeBuffer.scrollTop,this._activeBuffer.scrollBottom)}else this._activeBuffer.y--,this._restrictCursor();return!0}fullReset(){return this._parser.reset(),this._onRequestReset.fire(),!0}reset(){this._curAttrData=oi.clone(),this._eraseAttrDataInternal=oi.clone()}_eraseAttrData(){return this._eraseAttrDataInternal.bg&=-67108864,this._eraseAttrDataInternal.bg|=this._curAttrData.bg&67108863,this._eraseAttrDataInternal}setgLevel(t){return this._charsetService.setgLevel(t),!0}screenAlignmentPattern(){let t=new Rs;t.content=1<<22|69,t.fg=this._curAttrData.fg,t.bg=this._curAttrData.bg,this._setCursor(0,0);for(let e=0;e(this._coreService.triggerDataEvent(`${ce.ESC}${o}${ce.ESC}\\`),!0),n=this._bufferService.buffer,s=this._optionsService.rawOptions;return i(t==='"q'?`P1$r${this._curAttrData.isProtected()?1:0}"q`:t==='"p'?'P1$r61;1"p':t==="r"?`P1$r${n.scrollTop+1};${n.scrollBottom+1}r`:t==="m"?"P1$r0m":t===" q"?`P1$r${{block:2,underline:4,bar:6}[s.cursorStyle]-(s.cursorBlink?1:0)} q`:"P0$r")}markRangeDirty(t,e){this._dirtyRowTracker.markRangeDirty(t,e)}},kS=class{constructor(t){this._bufferService=t,this.clearRange()}clearRange(){this.start=this._bufferService.buffer.y,this.end=this._bufferService.buffer.y}markDirty(t){tthis.end&&(this.end=t)}markRangeDirty(t,e){t>e&&(ER=t,t=e,e=ER),tthis.end&&(this.end=e)}markAllDirty(){this.markRangeDirty(0,this._bufferService.rows-1)}};kS=Ut([be(0,yn)],kS);function MR(t){return 0<=t&&t<256}var dre=5e7,PR=12,pre=50,mre=class extends Ue{constructor(e){super(),this._action=e,this._writeBuffer=[],this._callbacks=[],this._pendingData=0,this._bufferOffset=0,this._isSyncWriting=!1,this._syncCalls=0,this._didUserInput=!1,this._onWriteParsed=this._register(new me),this.onWriteParsed=this._onWriteParsed.event}handleUserInput(){this._didUserInput=!0}writeSync(e,i){if(i!==void 0&&this._syncCalls>i){this._syncCalls=0;return}if(this._pendingData+=e.length,this._writeBuffer.push(e),this._callbacks.push(void 0),this._syncCalls++,this._isSyncWriting)return;this._isSyncWriting=!0;let n;for(;n=this._writeBuffer.shift();){this._action(n);let s=this._callbacks.shift();s&&s()}this._pendingData=0,this._bufferOffset=2147483647,this._isSyncWriting=!1,this._syncCalls=0}write(e,i){if(this._pendingData>dre)throw new Error("write data discarded, use flow control to avoid losing data");if(!this._writeBuffer.length){if(this._bufferOffset=0,this._didUserInput){this._didUserInput=!1,this._pendingData+=e.length,this._writeBuffer.push(e),this._callbacks.push(i),this._innerWrite();return}setTimeout(()=>this._innerWrite())}this._pendingData+=e.length,this._writeBuffer.push(e),this._callbacks.push(i)}_innerWrite(e=0,i=!0){let n=e||performance.now();for(;this._writeBuffer.length>this._bufferOffset;){let s=this._writeBuffer[this._bufferOffset],r=this._action(s,i);if(r){let l=c=>performance.now()-n>=PR?setTimeout(()=>this._innerWrite(0,c)):this._innerWrite(n,c);r.catch(c=>(queueMicrotask(()=>{throw c}),Promise.resolve(!1))).then(l);return}let o=this._callbacks[this._bufferOffset];if(o&&o(),this._bufferOffset++,this._pendingData-=s.length,performance.now()-n>=PR)break}this._writeBuffer.length>this._bufferOffset?(this._bufferOffset>pre&&(this._writeBuffer=this._writeBuffer.slice(this._bufferOffset),this._callbacks=this._callbacks.slice(this._bufferOffset),this._bufferOffset=0),setTimeout(()=>this._innerWrite())):(this._writeBuffer.length=0,this._callbacks.length=0,this._pendingData=0,this._bufferOffset=0),this._onWriteParsed.fire()}},TS=class{constructor(e){this._bufferService=e,this._nextId=1,this._entriesWithId=new Map,this._dataByLinkId=new Map}registerLink(e){let i=this._bufferService.buffer;if(e.id===void 0){let c=i.addMarker(i.ybase+i.y),u={data:e,id:this._nextId++,lines:[c]};return c.onDispose(()=>this._removeMarkerFromLink(u,c)),this._dataByLinkId.set(u.id,u),u.id}let n=e,s=this._getEntryIdKey(n),r=this._entriesWithId.get(s);if(r)return this.addLineToLink(r.id,i.ybase+i.y),r.id;let o=i.addMarker(i.ybase+i.y),l={id:this._nextId++,key:this._getEntryIdKey(n),data:n,lines:[o]};return o.onDispose(()=>this._removeMarkerFromLink(l,o)),this._entriesWithId.set(l.key,l),this._dataByLinkId.set(l.id,l),l.id}addLineToLink(e,i){let n=this._dataByLinkId.get(e);if(n&&n.lines.every(s=>s.line!==i)){let s=this._bufferService.buffer.addMarker(i);n.lines.push(s),s.onDispose(()=>this._removeMarkerFromLink(n,s))}}getLinkData(e){var i;return(i=this._dataByLinkId.get(e))==null?void 0:i.data}_getEntryIdKey(e){return`${e.id};;${e.uri}`}_removeMarkerFromLink(e,i){let n=e.lines.indexOf(i);n!==-1&&(e.lines.splice(n,1),e.lines.length===0&&(e.data.id!==void 0&&this._entriesWithId.delete(e.key),this._dataByLinkId.delete(e.id)))}};TS=Ut([be(0,yn)],TS);var RR=!1,gre=class extends Ue{constructor(e){super(),this._windowsWrappingHeuristics=this._register(new mh),this._onBinary=this._register(new me),this.onBinary=this._onBinary.event,this._onData=this._register(new me),this.onData=this._onData.event,this._onLineFeed=this._register(new me),this.onLineFeed=this._onLineFeed.event,this._onResize=this._register(new me),this.onResize=this._onResize.event,this._onWriteParsed=this._register(new me),this.onWriteParsed=this._onWriteParsed.event,this._onScroll=this._register(new me),this._instantiationService=new jse,this.optionsService=this._register(new Fse(e)),this._instantiationService.setService(bn,this.optionsService),this._bufferService=this._register(this._instantiationService.createInstance(SS)),this._instantiationService.setService(yn,this._bufferService),this._logService=this._register(this._instantiationService.createInstance(bS)),this._instantiationService.setService(P6,this._logService),this.coreService=this._register(this._instantiationService.createInstance(xS)),this._instantiationService.setService($l,this.coreService),this.coreMouseService=this._register(this._instantiationService.createInstance(wS)),this._instantiationService.setService(M6,this.coreMouseService),this.unicodeService=this._register(this._instantiationService.createInstance(yl)),this._instantiationService.setService(Bie,this.unicodeService),this._charsetService=this._instantiationService.createInstance(tre),this._instantiationService.setService(Die,this._charsetService),this._oscLinkService=this._instantiationService.createInstance(TS),this._instantiationService.setService(R6,this._oscLinkService),this._inputHandler=this._register(new fre(this._bufferService,this._charsetService,this.coreService,this._logService,this.optionsService,this._oscLinkService,this.coreMouseService,this.unicodeService)),this._register(Gi.forward(this._inputHandler.onLineFeed,this._onLineFeed)),this._register(this._inputHandler),this._register(Gi.forward(this._bufferService.onResize,this._onResize)),this._register(Gi.forward(this.coreService.onData,this._onData)),this._register(Gi.forward(this.coreService.onBinary,this._onBinary)),this._register(this.coreService.onRequestScrollToBottom(()=>this.scrollToBottom(!0))),this._register(this.coreService.onUserInput(()=>this._writeBuffer.handleUserInput())),this._register(this.optionsService.onMultipleOptionChange(["windowsMode","windowsPty"],()=>this._handleWindowsPtyOptionChange())),this._register(this._bufferService.onScroll(()=>{this._onScroll.fire({position:this._bufferService.buffer.ydisp}),this._inputHandler.markRangeDirty(this._bufferService.buffer.scrollTop,this._bufferService.buffer.scrollBottom)})),this._writeBuffer=this._register(new mre((i,n)=>this._inputHandler.parse(i,n))),this._register(Gi.forward(this._writeBuffer.onWriteParsed,this._onWriteParsed))}get onScroll(){return this._onScrollApi||(this._onScrollApi=this._register(new me),this._onScroll.event(e=>{var i;(i=this._onScrollApi)==null||i.fire(e.position)})),this._onScrollApi.event}get cols(){return this._bufferService.cols}get rows(){return this._bufferService.rows}get buffers(){return this._bufferService.buffers}get options(){return this.optionsService.options}set options(e){for(let i in e)this.optionsService.options[i]=e[i]}write(e,i){this._writeBuffer.write(e,i)}writeSync(e,i){this._logService.logLevel<=3&&!RR&&(this._logService.warn("writeSync is unreliable and will be removed soon."),RR=!0),this._writeBuffer.writeSync(e,i)}input(e,i=!0){this.coreService.triggerDataEvent(e,i)}resize(e,i){isNaN(e)||isNaN(i)||(e=Math.max(e,hN),i=Math.max(i,uN),this._bufferService.resize(e,i))}scroll(e,i=!1){this._bufferService.scroll(e,i)}scrollLines(e,i){this._bufferService.scrollLines(e,i)}scrollPages(e){this.scrollLines(e*(this.rows-1))}scrollToTop(){this.scrollLines(-this._bufferService.buffer.ydisp)}scrollToBottom(e){this.scrollLines(this._bufferService.buffer.ybase-this._bufferService.buffer.ydisp)}scrollToLine(e){let i=e-this._bufferService.buffer.ydisp;i!==0&&this.scrollLines(i)}registerEscHandler(e,i){return this._inputHandler.registerEscHandler(e,i)}registerDcsHandler(e,i){return this._inputHandler.registerDcsHandler(e,i)}registerCsiHandler(e,i){return this._inputHandler.registerCsiHandler(e,i)}registerOscHandler(e,i){return this._inputHandler.registerOscHandler(e,i)}_setup(){this._handleWindowsPtyOptionChange()}reset(){this._inputHandler.reset(),this._bufferService.reset(),this._charsetService.reset(),this.coreService.reset(),this.coreMouseService.reset()}_handleWindowsPtyOptionChange(){let e=!1,i=this.optionsService.rawOptions.windowsPty;i&&i.buildNumber!==void 0&&i.buildNumber!==void 0?e=i.backend==="conpty"&&i.buildNumber<21376:this.optionsService.rawOptions.windowsMode&&(e=!0),e?this._enableWindowsWrappingHeuristics():this._windowsWrappingHeuristics.clear()}_enableWindowsWrappingHeuristics(){if(!this._windowsWrappingHeuristics.value){let e=[];e.push(this.onLineFeed(xR.bind(null,this._bufferService))),e.push(this.registerCsiHandler({final:"H"},()=>(xR(this._bufferService),!1))),this._windowsWrappingHeuristics.value=Bt(()=>{for(let i of e)i.dispose()})}}},Ore={48:["0",")"],49:["1","!"],50:["2","@"],51:["3","#"],52:["4","$"],53:["5","%"],54:["6","^"],55:["7","&"],56:["8","*"],57:["9","("],186:[";",":"],187:["=","+"],188:[",","<"],189:["-","_"],190:[".",">"],191:["/","?"],192:["`","~"],219:["[","{"],220:["\\","|"],221:["]","}"],222:["'",'"']};function vre(t,e,i,n){var o;let s={type:0,cancel:!1,key:void 0},r=(t.shiftKey?1:0)|(t.altKey?2:0)|(t.ctrlKey?4:0)|(t.metaKey?8:0);switch(t.keyCode){case 0:t.key==="UIKeyInputUpArrow"?e?s.key=ce.ESC+"OA":s.key=ce.ESC+"[A":t.key==="UIKeyInputLeftArrow"?e?s.key=ce.ESC+"OD":s.key=ce.ESC+"[D":t.key==="UIKeyInputRightArrow"?e?s.key=ce.ESC+"OC":s.key=ce.ESC+"[C":t.key==="UIKeyInputDownArrow"&&(e?s.key=ce.ESC+"OB":s.key=ce.ESC+"[B");break;case 8:s.key=t.ctrlKey?"\b":ce.DEL,t.altKey&&(s.key=ce.ESC+s.key);break;case 9:if(t.shiftKey){s.key=ce.ESC+"[Z";break}s.key=ce.HT,s.cancel=!0;break;case 13:s.key=t.altKey?ce.ESC+ce.CR:ce.CR,s.cancel=!0;break;case 27:s.key=ce.ESC,t.altKey&&(s.key=ce.ESC+ce.ESC),s.cancel=!0;break;case 37:if(t.metaKey)break;r?s.key=ce.ESC+"[1;"+(r+1)+"D":e?s.key=ce.ESC+"OD":s.key=ce.ESC+"[D";break;case 39:if(t.metaKey)break;r?s.key=ce.ESC+"[1;"+(r+1)+"C":e?s.key=ce.ESC+"OC":s.key=ce.ESC+"[C";break;case 38:if(t.metaKey)break;r?s.key=ce.ESC+"[1;"+(r+1)+"A":e?s.key=ce.ESC+"OA":s.key=ce.ESC+"[A";break;case 40:if(t.metaKey)break;r?s.key=ce.ESC+"[1;"+(r+1)+"B":e?s.key=ce.ESC+"OB":s.key=ce.ESC+"[B";break;case 45:!t.shiftKey&&!t.ctrlKey&&(s.key=ce.ESC+"[2~");break;case 46:r?s.key=ce.ESC+"[3;"+(r+1)+"~":s.key=ce.ESC+"[3~";break;case 36:r?s.key=ce.ESC+"[1;"+(r+1)+"H":e?s.key=ce.ESC+"OH":s.key=ce.ESC+"[H";break;case 35:r?s.key=ce.ESC+"[1;"+(r+1)+"F":e?s.key=ce.ESC+"OF":s.key=ce.ESC+"[F";break;case 33:t.shiftKey?s.type=2:t.ctrlKey?s.key=ce.ESC+"[5;"+(r+1)+"~":s.key=ce.ESC+"[5~";break;case 34:t.shiftKey?s.type=3:t.ctrlKey?s.key=ce.ESC+"[6;"+(r+1)+"~":s.key=ce.ESC+"[6~";break;case 112:r?s.key=ce.ESC+"[1;"+(r+1)+"P":s.key=ce.ESC+"OP";break;case 113:r?s.key=ce.ESC+"[1;"+(r+1)+"Q":s.key=ce.ESC+"OQ";break;case 114:r?s.key=ce.ESC+"[1;"+(r+1)+"R":s.key=ce.ESC+"OR";break;case 115:r?s.key=ce.ESC+"[1;"+(r+1)+"S":s.key=ce.ESC+"OS";break;case 116:r?s.key=ce.ESC+"[15;"+(r+1)+"~":s.key=ce.ESC+"[15~";break;case 117:r?s.key=ce.ESC+"[17;"+(r+1)+"~":s.key=ce.ESC+"[17~";break;case 118:r?s.key=ce.ESC+"[18;"+(r+1)+"~":s.key=ce.ESC+"[18~";break;case 119:r?s.key=ce.ESC+"[19;"+(r+1)+"~":s.key=ce.ESC+"[19~";break;case 120:r?s.key=ce.ESC+"[20;"+(r+1)+"~":s.key=ce.ESC+"[20~";break;case 121:r?s.key=ce.ESC+"[21;"+(r+1)+"~":s.key=ce.ESC+"[21~";break;case 122:r?s.key=ce.ESC+"[23;"+(r+1)+"~":s.key=ce.ESC+"[23~";break;case 123:r?s.key=ce.ESC+"[24;"+(r+1)+"~":s.key=ce.ESC+"[24~";break;default:if(t.ctrlKey&&!t.shiftKey&&!t.altKey&&!t.metaKey)t.keyCode>=65&&t.keyCode<=90?s.key=String.fromCharCode(t.keyCode-64):t.keyCode===32?s.key=ce.NUL:t.keyCode>=51&&t.keyCode<=55?s.key=String.fromCharCode(t.keyCode-51+27):t.keyCode===56?s.key=ce.DEL:t.keyCode===219?s.key=ce.ESC:t.keyCode===220?s.key=ce.FS:t.keyCode===221&&(s.key=ce.GS);else if((!i||n)&&t.altKey&&!t.metaKey){let l=(o=Ore[t.keyCode])==null?void 0:o[t.shiftKey?1:0];if(l)s.key=ce.ESC+l;else if(t.keyCode>=65&&t.keyCode<=90){let c=t.ctrlKey?t.keyCode-64:t.keyCode+32,u=String.fromCharCode(c);t.shiftKey&&(u=u.toUpperCase()),s.key=ce.ESC+u}else if(t.keyCode===32)s.key=ce.ESC+(t.ctrlKey?ce.NUL:" ");else if(t.key==="Dead"&&t.code.startsWith("Key")){let c=t.code.slice(3,4);t.shiftKey||(c=c.toLowerCase()),s.key=ce.ESC+c,s.cancel=!0}}else i&&!t.altKey&&!t.ctrlKey&&!t.shiftKey&&t.metaKey?t.keyCode===65&&(s.type=1):t.key&&!t.ctrlKey&&!t.altKey&&!t.metaKey&&t.keyCode>=48&&t.key.length===1?s.key=t.key:t.key&&t.ctrlKey&&(t.key==="_"&&(s.key=ce.US),t.key==="@"&&(s.key=ce.NUL));break}return s}var Gt=0,_re=class{constructor(e){this._getKey=e,this._array=[],this._insertedValues=[],this._flushInsertedTask=new tO,this._isFlushingInserted=!1,this._deletedIndices=[],this._flushDeletedTask=new tO,this._isFlushingDeleted=!1}clear(){this._array.length=0,this._insertedValues.length=0,this._flushInsertedTask.clear(),this._isFlushingInserted=!1,this._deletedIndices.length=0,this._flushDeletedTask.clear(),this._isFlushingDeleted=!1}insert(e){this._flushCleanupDeleted(),this._insertedValues.length===0&&this._flushInsertedTask.enqueue(()=>this._flushInserted()),this._insertedValues.push(e)}_flushInserted(){let e=this._insertedValues.sort((r,o)=>this._getKey(r)-this._getKey(o)),i=0,n=0,s=new Array(this._array.length+this._insertedValues.length);for(let r=0;r=this._array.length||this._getKey(e[i])<=this._getKey(this._array[n])?(s[r]=e[i],i++):s[r]=this._array[n++];this._array=s,this._insertedValues.length=0}_flushCleanupInserted(){!this._isFlushingInserted&&this._insertedValues.length>0&&this._flushInsertedTask.flush()}delete(e){if(this._flushCleanupInserted(),this._array.length===0)return!1;let i=this._getKey(e);if(i===void 0||(Gt=this._search(i),Gt===-1)||this._getKey(this._array[Gt])!==i)return!1;do if(this._array[Gt]===e)return this._deletedIndices.length===0&&this._flushDeletedTask.enqueue(()=>this._flushDeleted()),this._deletedIndices.push(Gt),!0;while(++Gtr-o),i=0,n=new Array(this._array.length-e.length),s=0;for(let r=0;r0&&this._flushDeletedTask.flush()}*getKeyIterator(e){if(this._flushCleanupInserted(),this._flushCleanupDeleted(),this._array.length!==0&&(Gt=this._search(e),!(Gt<0||Gt>=this._array.length)&&this._getKey(this._array[Gt])===e))do yield this._array[Gt];while(++Gt=this._array.length)&&this._getKey(this._array[Gt])===e))do i(this._array[Gt]);while(++Gt=i;){let s=i+n>>1,r=this._getKey(this._array[s]);if(r>e)n=s-1;else if(r0&&this._getKey(this._array[s-1])===e;)s--;return s}}return i}},qy=0,QR=0,yre=class extends Ue{constructor(){super(),this._decorations=new _re(t=>t==null?void 0:t.marker.line),this._onDecorationRegistered=this._register(new me),this.onDecorationRegistered=this._onDecorationRegistered.event,this._onDecorationRemoved=this._register(new me),this.onDecorationRemoved=this._onDecorationRemoved.event,this._register(Bt(()=>this.reset()))}get decorations(){return this._decorations.values()}registerDecoration(t){if(t.marker.isDisposed)return;let e=new bre(t);if(e){let i=e.marker.onDispose(()=>e.dispose()),n=e.onDispose(()=>{n.dispose(),e&&(this._decorations.delete(e)&&this._onDecorationRemoved.fire(e),i.dispose())});this._decorations.insert(e),this._onDecorationRegistered.fire(e)}return e}reset(){for(let t of this._decorations.values())t.dispose();this._decorations.clear()}*getDecorationsAtCell(t,e,i){let n=0,s=0;for(let r of this._decorations.getKeyIterator(e))n=r.options.x??0,s=n+(r.options.width??1),t>=n&&t{qy=s.options.x??0,QR=qy+(s.options.width??1),t>=qy&&t=this._debounceThresholdMS)this._lastRefreshMs=s,this._innerRefresh();else if(!this._additionalRefreshRequested){let r=s-this._lastRefreshMs,o=this._debounceThresholdMS-r;this._additionalRefreshRequested=!0,this._refreshTimeoutID=window.setTimeout(()=>{this._lastRefreshMs=performance.now(),this._innerRefresh(),this._additionalRefreshRequested=!1,this._refreshTimeoutID=void 0},o)}}_innerRefresh(){if(this._rowStart===void 0||this._rowEnd===void 0||this._rowCount===void 0)return;let e=Math.max(this._rowStart,0),i=Math.min(this._rowEnd,this._rowCount-1);this._rowStart=void 0,this._rowEnd=void 0,this._renderCallback(e,i)}},LR=20,iO=class extends Ue{constructor(t,e,i,n){super(),this._terminal=t,this._coreBrowserService=i,this._renderService=n,this._rowColumns=new WeakMap,this._liveRegionLineCount=0,this._charsToConsume=[],this._charsToAnnounce="";let s=this._coreBrowserService.mainDocument;this._accessibilityContainer=s.createElement("div"),this._accessibilityContainer.classList.add("xterm-accessibility"),this._rowContainer=s.createElement("div"),this._rowContainer.setAttribute("role","list"),this._rowContainer.classList.add("xterm-accessibility-tree"),this._rowElements=[];for(let r=0;rthis._handleBoundaryFocus(r,0),this._bottomBoundaryFocusListener=r=>this._handleBoundaryFocus(r,1),this._rowElements[0].addEventListener("focus",this._topBoundaryFocusListener),this._rowElements[this._rowElements.length-1].addEventListener("focus",this._bottomBoundaryFocusListener),this._accessibilityContainer.appendChild(this._rowContainer),this._liveRegion=s.createElement("div"),this._liveRegion.classList.add("live-region"),this._liveRegion.setAttribute("aria-live","assertive"),this._accessibilityContainer.appendChild(this._liveRegion),this._liveRegionDebouncer=this._register(new xre(this._renderRows.bind(this))),!this._terminal.element)throw new Error("Cannot enable accessibility before Terminal.open");this._terminal.element.insertAdjacentElement("afterbegin",this._accessibilityContainer),this._register(this._terminal.onResize(r=>this._handleResize(r.rows))),this._register(this._terminal.onRender(r=>this._refreshRows(r.start,r.end))),this._register(this._terminal.onScroll(()=>this._refreshRows())),this._register(this._terminal.onA11yChar(r=>this._handleChar(r))),this._register(this._terminal.onLineFeed(()=>this._handleChar(` +`))),this._register(this._terminal.onA11yTab(r=>this._handleTab(r))),this._register(this._terminal.onKey(r=>this._handleKey(r.key))),this._register(this._terminal.onBlur(()=>this._clearLiveRegion())),this._register(this._renderService.onDimensionsChange(()=>this._refreshRowsDimensions())),this._register(Be(s,"selectionchange",()=>this._handleSelectionChange())),this._register(this._coreBrowserService.onDprChange(()=>this._refreshRowsDimensions())),this._refreshRowsDimensions(),this._refreshRows(),this._register(Bt(()=>{this._accessibilityContainer.remove(),this._rowElements.length=0}))}_handleTab(t){for(let e=0;e0?this._charsToConsume.shift()!==t&&(this._charsToAnnounce+=t):this._charsToAnnounce+=t,t===` +`&&(this._liveRegionLineCount++,this._liveRegionLineCount===LR+1&&(this._liveRegion.textContent+=Ub.get())))}_clearLiveRegion(){this._liveRegion.textContent="",this._liveRegionLineCount=0}_handleKey(t){this._clearLiveRegion(),new RegExp("\\p{Control}","u").test(t)||this._charsToConsume.push(t)}_refreshRows(t,e){this._liveRegionDebouncer.refresh(t,e,this._terminal.rows)}_renderRows(t,e){let i=this._terminal.buffer,n=i.lines.length.toString();for(let s=t;s<=e;s++){let r=i.lines.get(i.ydisp+s),o=[],l=(r==null?void 0:r.translateToString(!0,void 0,void 0,o))||"",c=(i.ydisp+s+1).toString(),u=this._rowElements[s];u&&(l.length===0?(u.textContent=" ",this._rowColumns.set(u,[0,1])):(u.textContent=l,this._rowColumns.set(u,o)),u.setAttribute("aria-posinset",c),u.setAttribute("aria-setsize",n),this._alignRowWidth(u))}this._announceCharacters()}_announceCharacters(){this._charsToAnnounce.length!==0&&(this._liveRegion.textContent+=this._charsToAnnounce,this._charsToAnnounce="")}_handleBoundaryFocus(t,e){let i=t.target,n=this._rowElements[e===0?1:this._rowElements.length-2],s=i.getAttribute("aria-posinset"),r=e===0?"1":`${this._terminal.buffer.lines.length}`;if(s===r||t.relatedTarget!==n)return;let o,l;if(e===0?(o=i,l=this._rowElements.pop(),this._rowContainer.removeChild(l)):(o=this._rowElements.shift(),l=i,this._rowContainer.removeChild(o)),o.removeEventListener("focus",this._topBoundaryFocusListener),l.removeEventListener("focus",this._bottomBoundaryFocusListener),e===0){let c=this._createAccessibilityTreeNode();this._rowElements.unshift(c),this._rowContainer.insertAdjacentElement("afterbegin",c)}else{let c=this._createAccessibilityTreeNode();this._rowElements.push(c),this._rowContainer.appendChild(c)}this._rowElements[0].addEventListener("focus",this._topBoundaryFocusListener),this._rowElements[this._rowElements.length-1].addEventListener("focus",this._bottomBoundaryFocusListener),this._terminal.scrollLines(e===0?-1:1),this._rowElements[e===0?1:this._rowElements.length-2].focus(),t.preventDefault(),t.stopImmediatePropagation()}_handleSelectionChange(){var l;if(this._rowElements.length===0)return;let t=this._coreBrowserService.mainDocument.getSelection();if(!t)return;if(t.isCollapsed){this._rowContainer.contains(t.anchorNode)&&this._terminal.clearSelection();return}if(!t.anchorNode||!t.focusNode){console.error("anchorNode and/or focusNode are null");return}let e={node:t.anchorNode,offset:t.anchorOffset},i={node:t.focusNode,offset:t.focusOffset};if((e.node.compareDocumentPosition(i.node)&Node.DOCUMENT_POSITION_PRECEDING||e.node===i.node&&e.offset>i.offset)&&([e,i]=[i,e]),e.node.compareDocumentPosition(this._rowElements[0])&(Node.DOCUMENT_POSITION_CONTAINED_BY|Node.DOCUMENT_POSITION_FOLLOWING)&&(e={node:this._rowElements[0].childNodes[0],offset:0}),!this._rowContainer.contains(e.node))return;let n=this._rowElements.slice(-1)[0];if(i.node.compareDocumentPosition(n)&(Node.DOCUMENT_POSITION_CONTAINED_BY|Node.DOCUMENT_POSITION_PRECEDING)&&(i={node:n,offset:((l=n.textContent)==null?void 0:l.length)??0}),!this._rowContainer.contains(i.node))return;let s=({node:c,offset:u})=>{let d=c instanceof Text?c.parentNode:c,p=parseInt(d==null?void 0:d.getAttribute("aria-posinset"),10)-1;if(isNaN(p))return console.warn("row is invalid. Race condition?"),null;let g=this._rowColumns.get(d);if(!g)return console.warn("columns is null. Race condition?"),null;let O=u=this._terminal.cols&&(++p,O=0),{row:p,column:O}},r=s(e),o=s(i);if(!(!r||!o)){if(r.row>o.row||r.row===o.row&&r.column>=o.column)throw new Error("invalid range");this._terminal.select(r.column,r.row,(o.row-r.row)*this._terminal.cols-r.column+o.column)}}_handleResize(t){this._rowElements[this._rowElements.length-1].removeEventListener("focus",this._bottomBoundaryFocusListener);for(let e=this._rowContainer.children.length;et;)this._rowContainer.removeChild(this._rowElements.pop());this._rowElements[this._rowElements.length-1].addEventListener("focus",this._bottomBoundaryFocusListener),this._refreshRowsDimensions()}_createAccessibilityTreeNode(){let t=this._coreBrowserService.mainDocument.createElement("div");return t.setAttribute("role","listitem"),t.tabIndex=-1,this._refreshRowDimensions(t),t}_refreshRowsDimensions(){if(this._renderService.dimensions.css.cell.height){Object.assign(this._accessibilityContainer.style,{width:`${this._renderService.dimensions.css.canvas.width}px`,fontSize:`${this._terminal.options.fontSize}px`}),this._rowElements.length!==this._terminal.rows&&this._handleResize(this._terminal.rows);for(let t=0;t{var r;Pl(this._linkCacheDisposables),this._linkCacheDisposables.length=0,this._lastMouseEvent=void 0,(r=this._activeProviderReplies)==null||r.clear()})),this._register(this._bufferService.onResize(()=>{this._clearCurrentLink(),this._wasResized=!0})),this._register(Be(this._element,"mouseleave",()=>{this._isMouseOut=!0,this._clearCurrentLink()})),this._register(Be(this._element,"mousemove",this._handleMouseMove.bind(this))),this._register(Be(this._element,"mousedown",this._handleMouseDown.bind(this))),this._register(Be(this._element,"mouseup",this._handleMouseUp.bind(this)))}get currentLink(){return this._currentLink}_handleMouseMove(t){this._lastMouseEvent=t;let e=this._positionFromMouseEvent(t,this._element,this._mouseService);if(!e)return;this._isMouseOut=!1;let i=t.composedPath();for(let n=0;n{r==null||r.forEach(o=>{o.link.dispose&&o.link.dispose()})}),this._activeProviderReplies=new Map,this._activeLine=t.y);let i=!1;for(let[r,o]of this._linkProviderService.linkProviders.entries())e?(s=this._activeProviderReplies)!=null&&s.get(r)&&(i=this._checkLinkProviderResult(r,t,i)):o.provideLinks(t.y,l=>{var u,d;if(this._isMouseOut)return;let c=l==null?void 0:l.map(p=>({link:p}));(u=this._activeProviderReplies)==null||u.set(r,c),i=this._checkLinkProviderResult(r,t,i),((d=this._activeProviderReplies)==null?void 0:d.size)===this._linkProviderService.linkProviders.length&&this._removeIntersectingLinks(t.y,this._activeProviderReplies)})}_removeIntersectingLinks(t,e){let i=new Set;for(let n=0;nt?this._bufferService.cols:o.link.range.end.x;for(let u=l;u<=c;u++){if(i.has(u)){s.splice(r--,1);break}i.add(u)}}}}_checkLinkProviderResult(t,e,i){var r;if(!this._activeProviderReplies)return i;let n=this._activeProviderReplies.get(t),s=!1;for(let o=0;othis._linkAtPosition(l.link,e));o&&(i=!0,this._handleNewLink(o))}if(this._activeProviderReplies.size===this._linkProviderService.linkProviders.length&&!i)for(let o=0;othis._linkAtPosition(c.link,e));if(l){i=!0,this._handleNewLink(l);break}}return i}_handleMouseDown(){this._mouseDownLink=this._currentLink}_handleMouseUp(t){if(!this._currentLink)return;let e=this._positionFromMouseEvent(t,this._element,this._mouseService);e&&this._mouseDownLink&&wre(this._mouseDownLink.link,this._currentLink.link)&&this._linkAtPosition(this._currentLink.link,e)&&this._currentLink.link.activate(t,this._currentLink.link.text)}_clearCurrentLink(t,e){!this._currentLink||!this._lastMouseEvent||(!t||!e||this._currentLink.link.range.start.y>=t&&this._currentLink.link.range.end.y<=e)&&(this._linkLeave(this._element,this._currentLink.link,this._lastMouseEvent),this._currentLink=void 0,Pl(this._linkCacheDisposables),this._linkCacheDisposables.length=0)}_handleNewLink(t){if(!this._lastMouseEvent)return;let e=this._positionFromMouseEvent(this._lastMouseEvent,this._element,this._mouseService);e&&this._linkAtPosition(t.link,e)&&(this._currentLink=t,this._currentLink.state={decorations:{underline:t.link.decorations===void 0?!0:t.link.decorations.underline,pointerCursor:t.link.decorations===void 0?!0:t.link.decorations.pointerCursor},isHovered:!0},this._linkHover(this._element,t.link,this._lastMouseEvent),t.link.decorations={},Object.defineProperties(t.link.decorations,{pointerCursor:{get:()=>{var i,n;return(n=(i=this._currentLink)==null?void 0:i.state)==null?void 0:n.decorations.pointerCursor},set:i=>{var n;(n=this._currentLink)!=null&&n.state&&this._currentLink.state.decorations.pointerCursor!==i&&(this._currentLink.state.decorations.pointerCursor=i,this._currentLink.state.isHovered&&this._element.classList.toggle("xterm-cursor-pointer",i))}},underline:{get:()=>{var i,n;return(n=(i=this._currentLink)==null?void 0:i.state)==null?void 0:n.decorations.underline},set:i=>{var n,s,r;(n=this._currentLink)!=null&&n.state&&((r=(s=this._currentLink)==null?void 0:s.state)==null?void 0:r.decorations.underline)!==i&&(this._currentLink.state.decorations.underline=i,this._currentLink.state.isHovered&&this._fireUnderlineEvent(t.link,i))}}}),this._linkCacheDisposables.push(this._renderService.onRenderedViewportChange(i=>{if(!this._currentLink)return;let n=i.start===0?0:i.start+1+this._bufferService.buffer.ydisp,s=this._bufferService.buffer.ydisp+1+i.end;if(this._currentLink.link.range.start.y>=n&&this._currentLink.link.range.end.y<=s&&(this._clearCurrentLink(n,s),this._lastMouseEvent)){let r=this._positionFromMouseEvent(this._lastMouseEvent,this._element,this._mouseService);r&&this._askForLink(r,!1)}})))}_linkHover(t,e,i){var n;(n=this._currentLink)!=null&&n.state&&(this._currentLink.state.isHovered=!0,this._currentLink.state.decorations.underline&&this._fireUnderlineEvent(e,!0),this._currentLink.state.decorations.pointerCursor&&t.classList.add("xterm-cursor-pointer")),e.hover&&e.hover(i,e.text)}_fireUnderlineEvent(t,e){let i=t.range,n=this._bufferService.buffer.ydisp,s=this._createLinkUnderlineEvent(i.start.x-1,i.start.y-n-1,i.end.x,i.end.y-n-1,void 0);(e?this._onShowLinkUnderline:this._onHideLinkUnderline).fire(s)}_linkLeave(t,e,i){var n;(n=this._currentLink)!=null&&n.state&&(this._currentLink.state.isHovered=!1,this._currentLink.state.decorations.underline&&this._fireUnderlineEvent(e,!1),this._currentLink.state.decorations.pointerCursor&&t.classList.remove("xterm-cursor-pointer")),e.leave&&e.leave(i,e.text)}_linkAtPosition(t,e){let i=t.range.start.y*this._bufferService.cols+t.range.start.x,n=t.range.end.y*this._bufferService.cols+t.range.end.x,s=e.y*this._bufferService.cols+e.x;return i<=s&&s<=n}_positionFromMouseEvent(t,e,i){let n=i.getCoords(t,e,this._bufferService.cols,this._bufferService.rows);if(n)return{x:n[0],y:n[1]+this._bufferService.buffer.ydisp}}_createLinkUnderlineEvent(t,e,i,n,s){return{x1:t,y1:e,x2:i,y2:n,cols:this._bufferService.cols,fg:s}}};AS=Ut([be(1,Mw),be(2,ko),be(3,yn),be(4,L6)],AS);function wre(t,e){return t.text===e.text&&t.range.start.x===e.range.start.x&&t.range.start.y===e.range.start.y&&t.range.end.x===e.range.end.x&&t.range.end.y===e.range.end.y}var Cre=class extends gre{constructor(e={}){super(e),this._linkifier=this._register(new mh),this.browser=J6,this._keyDownHandled=!1,this._keyDownSeen=!1,this._keyPressHandled=!1,this._unprocessedDeadKey=!1,this._accessibilityManager=this._register(new mh),this._onCursorMove=this._register(new me),this.onCursorMove=this._onCursorMove.event,this._onKey=this._register(new me),this.onKey=this._onKey.event,this._onRender=this._register(new me),this.onRender=this._onRender.event,this._onSelectionChange=this._register(new me),this.onSelectionChange=this._onSelectionChange.event,this._onTitleChange=this._register(new me),this.onTitleChange=this._onTitleChange.event,this._onBell=this._register(new me),this.onBell=this._onBell.event,this._onFocus=this._register(new me),this._onBlur=this._register(new me),this._onA11yCharEmitter=this._register(new me),this._onA11yTabEmitter=this._register(new me),this._onWillOpen=this._register(new me),this._setup(),this._decorationService=this._instantiationService.createInstance(yre),this._instantiationService.setService(Sd,this._decorationService),this._linkProviderService=this._instantiationService.createInstance(pse),this._instantiationService.setService(L6,this._linkProviderService),this._linkProviderService.registerLinkProvider(this._instantiationService.createInstance(Hb)),this._register(this._inputHandler.onRequestBell(()=>this._onBell.fire())),this._register(this._inputHandler.onRequestRefreshRows(i=>this.refresh((i==null?void 0:i.start)??0,(i==null?void 0:i.end)??this.rows-1))),this._register(this._inputHandler.onRequestSendFocus(()=>this._reportFocus())),this._register(this._inputHandler.onRequestReset(()=>this.reset())),this._register(this._inputHandler.onRequestWindowsOptionsReport(i=>this._reportWindowsOptions(i))),this._register(this._inputHandler.onColor(i=>this._handleColorEvent(i))),this._register(Gi.forward(this._inputHandler.onCursorMove,this._onCursorMove)),this._register(Gi.forward(this._inputHandler.onTitleChange,this._onTitleChange)),this._register(Gi.forward(this._inputHandler.onA11yChar,this._onA11yCharEmitter)),this._register(Gi.forward(this._inputHandler.onA11yTab,this._onA11yTabEmitter)),this._register(this._bufferService.onResize(i=>this._afterResize(i.cols,i.rows))),this._register(Bt(()=>{var i,n;this._customKeyEventHandler=void 0,(n=(i=this.element)==null?void 0:i.parentNode)==null||n.removeChild(this.element)}))}get linkifier(){return this._linkifier.value}get onFocus(){return this._onFocus.event}get onBlur(){return this._onBlur.event}get onA11yChar(){return this._onA11yCharEmitter.event}get onA11yTab(){return this._onA11yTabEmitter.event}get onWillOpen(){return this._onWillOpen.event}_handleColorEvent(e){if(this._themeService)for(let i of e){let n,s="";switch(i.index){case 256:n="foreground",s="10";break;case 257:n="background",s="11";break;case 258:n="cursor",s="12";break;default:n="ansi",s="4;"+i.index}switch(i.type){case 0:let r=Pt.toColorRGB(n==="ansi"?this._themeService.colors.ansi[i.index]:this._themeService.colors[n]);this.coreService.triggerDataEvent(`${ce.ESC}]${s};${hre(r)}${G6.ST}`);break;case 1:if(n==="ansi")this._themeService.modifyColors(o=>o.ansi[i.index]=ci.toColor(...i.color));else{let o=n;this._themeService.modifyColors(l=>l[o]=ci.toColor(...i.color))}break;case 2:this._themeService.restoreColor(i.index);break}}}_setup(){super._setup(),this._customKeyEventHandler=void 0}get buffer(){return this.buffers.active}focus(){this.textarea&&this.textarea.focus({preventScroll:!0})}_handleScreenReaderModeOptionChange(e){e?!this._accessibilityManager.value&&this._renderService&&(this._accessibilityManager.value=this._instantiationService.createInstance(iO,this)):this._accessibilityManager.clear()}_handleTextAreaFocus(e){this.coreService.decPrivateModes.sendFocus&&this.coreService.triggerDataEvent(ce.ESC+"[I"),this.element.classList.add("focus"),this._showCursor(),this._onFocus.fire()}blur(){var e;return(e=this.textarea)==null?void 0:e.blur()}_handleTextAreaBlur(){this.textarea.value="",this.refresh(this.buffer.y,this.buffer.y),this.coreService.decPrivateModes.sendFocus&&this.coreService.triggerDataEvent(ce.ESC+"[O"),this.element.classList.remove("focus"),this._onBlur.fire()}_syncTextArea(){if(!this.textarea||!this.buffer.isCursorInViewport||this._compositionHelper.isComposing||!this._renderService)return;let e=this.buffer.ybase+this.buffer.y,i=this.buffer.lines.get(e);if(!i)return;let n=Math.min(this.buffer.x,this.cols-1),s=this._renderService.dimensions.css.cell.height,r=i.getWidth(n),o=this._renderService.dimensions.css.cell.width*r,l=this.buffer.y*this._renderService.dimensions.css.cell.height,c=n*this._renderService.dimensions.css.cell.width;this.textarea.style.left=c+"px",this.textarea.style.top=l+"px",this.textarea.style.width=o+"px",this.textarea.style.height=s+"px",this.textarea.style.lineHeight=s+"px",this.textarea.style.zIndex="-5"}_initGlobal(){this._bindKeys(),this._register(Be(this.element,"copy",i=>{this.hasSelection()&&Eie(i,this._selectionService)}));let e=i=>Mie(i,this.textarea,this.coreService,this.optionsService);this._register(Be(this.textarea,"paste",e)),this._register(Be(this.element,"paste",e)),eN?this._register(Be(this.element,"mousedown",i=>{i.button===2&&ZP(i,this.textarea,this.screenElement,this._selectionService,this.options.rightClickSelectsWord)})):this._register(Be(this.element,"contextmenu",i=>{ZP(i,this.textarea,this.screenElement,this._selectionService,this.options.rightClickSelectsWord)})),Nw&&this._register(Be(this.element,"auxclick",i=>{i.button===1&&C6(i,this.textarea,this.screenElement)}))}_bindKeys(){this._register(Be(this.textarea,"keyup",e=>this._keyUp(e),!0)),this._register(Be(this.textarea,"keydown",e=>this._keyDown(e),!0)),this._register(Be(this.textarea,"keypress",e=>this._keyPress(e),!0)),this._register(Be(this.textarea,"compositionstart",()=>this._compositionHelper.compositionstart())),this._register(Be(this.textarea,"compositionupdate",e=>this._compositionHelper.compositionupdate(e))),this._register(Be(this.textarea,"compositionend",()=>this._compositionHelper.compositionend())),this._register(Be(this.textarea,"input",e=>this._inputEvent(e),!0)),this._register(this.onRender(()=>this._compositionHelper.updateCompositionElements()))}open(e){var r;if(!e)throw new Error("Terminal requires a parent element.");if(e.isConnected||this._logService.debug("Terminal.open was called on an element that was not attached to the DOM"),((r=this.element)==null?void 0:r.ownerDocument.defaultView)&&this._coreBrowserService){this.element.ownerDocument.defaultView!==this._coreBrowserService.window&&(this._coreBrowserService.window=this.element.ownerDocument.defaultView);return}this._document=e.ownerDocument,this.options.documentOverride&&this.options.documentOverride instanceof Document&&(this._document=this.optionsService.rawOptions.documentOverride),this.element=this._document.createElement("div"),this.element.dir="ltr",this.element.classList.add("terminal"),this.element.classList.add("xterm"),e.appendChild(this.element);let i=this._document.createDocumentFragment();this._viewportElement=this._document.createElement("div"),this._viewportElement.classList.add("xterm-viewport"),i.appendChild(this._viewportElement),this.screenElement=this._document.createElement("div"),this.screenElement.classList.add("xterm-screen"),this._register(Be(this.screenElement,"mousemove",o=>this.updateCursorStyle(o))),this._helperContainer=this._document.createElement("div"),this._helperContainer.classList.add("xterm-helpers"),this.screenElement.appendChild(this._helperContainer),i.appendChild(this.screenElement);let n=this.textarea=this._document.createElement("textarea");this.textarea.classList.add("xterm-helper-textarea"),this.textarea.setAttribute("aria-label",Wb.get()),nN||this.textarea.setAttribute("aria-multiline","false"),this.textarea.setAttribute("autocorrect","off"),this.textarea.setAttribute("autocapitalize","off"),this.textarea.setAttribute("spellcheck","false"),this.textarea.tabIndex=0,this._register(this.optionsService.onSpecificOptionChange("disableStdin",()=>n.readOnly=this.optionsService.rawOptions.disableStdin)),this.textarea.readOnly=this.optionsService.rawOptions.disableStdin,this._coreBrowserService=this._register(this._instantiationService.createInstance(fse,this.textarea,e.ownerDocument.defaultView??window,this._document??typeof window<"u"?window.document:null)),this._instantiationService.setService(Co,this._coreBrowserService),this._register(Be(this.textarea,"focus",o=>this._handleTextAreaFocus(o))),this._register(Be(this.textarea,"blur",()=>this._handleTextAreaBlur())),this._helperContainer.appendChild(this.textarea),this._charSizeService=this._instantiationService.createInstance(gS,this._document,this._helperContainer),this._instantiationService.setService(TO,this._charSizeService),this._themeService=this._instantiationService.createInstance(yS),this._instantiationService.setService(Ch,this._themeService),this._characterJoinerService=this._instantiationService.createInstance(Jg),this._instantiationService.setService(Q6,this._characterJoinerService),this._renderService=this._register(this._instantiationService.createInstance(vS,this.rows,this.screenElement)),this._instantiationService.setService(ko,this._renderService),this._register(this._renderService.onRenderedViewportChange(o=>this._onRender.fire(o))),this.onResize(o=>this._renderService.resize(o.cols,o.rows)),this._compositionView=this._document.createElement("div"),this._compositionView.classList.add("composition-view"),this._compositionHelper=this._instantiationService.createInstance(dS,this.textarea,this._compositionView),this._helperContainer.appendChild(this._compositionView),this._mouseService=this._instantiationService.createInstance(OS),this._instantiationService.setService(Mw,this._mouseService);let s=this._linkifier.value=this._register(this._instantiationService.createInstance(AS,this.screenElement));this.element.appendChild(i);try{this._onWillOpen.fire(this.element)}catch{}this._renderService.hasRenderer()||this._renderService.setRenderer(this._createRenderer()),this._register(this.onCursorMove(()=>{this._renderService.handleCursorMove(),this._syncTextArea()})),this._register(this.onResize(()=>this._renderService.handleResize(this.cols,this.rows))),this._register(this.onBlur(()=>this._renderService.handleBlur())),this._register(this.onFocus(()=>this._renderService.handleFocus())),this._viewport=this._register(this._instantiationService.createInstance(uS,this.element,this.screenElement)),this._register(this._viewport.onRequestScrollLines(o=>{super.scrollLines(o,!1),this.refresh(0,this.rows-1)})),this._selectionService=this._register(this._instantiationService.createInstance(_S,this.element,this.screenElement,s)),this._instantiationService.setService(Nie,this._selectionService),this._register(this._selectionService.onRequestScrollLines(o=>this.scrollLines(o.amount,o.suppressScrollEvent))),this._register(this._selectionService.onSelectionChange(()=>this._onSelectionChange.fire())),this._register(this._selectionService.onRequestRedraw(o=>this._renderService.handleSelectionChanged(o.start,o.end,o.columnSelectMode))),this._register(this._selectionService.onLinuxMouseSelection(o=>{this.textarea.value=o,this.textarea.focus(),this.textarea.select()})),this._register(Gi.any(this._onScroll.event,this._inputHandler.onScroll)(()=>{var o;this._selectionService.refresh(),(o=this._viewport)==null||o.queueSync()})),this._register(this._instantiationService.createInstance(fS,this.screenElement)),this._register(Be(this.element,"mousedown",o=>this._selectionService.handleMouseDown(o))),this.coreMouseService.areMouseEventsActive?(this._selectionService.disable(),this.element.classList.add("enable-mouse-events")):this._selectionService.enable(),this.options.screenReaderMode&&(this._accessibilityManager.value=this._instantiationService.createInstance(iO,this)),this._register(this.optionsService.onSpecificOptionChange("screenReaderMode",o=>this._handleScreenReaderModeOptionChange(o))),this.options.overviewRuler.width&&(this._overviewRulerRenderer=this._register(this._instantiationService.createInstance(Kg,this._viewportElement,this.screenElement))),this.optionsService.onSpecificOptionChange("overviewRuler",o=>{!this._overviewRulerRenderer&&o&&this._viewportElement&&this.screenElement&&(this._overviewRulerRenderer=this._register(this._instantiationService.createInstance(Kg,this._viewportElement,this.screenElement)))}),this._charSizeService.measure(),this.refresh(0,this.rows-1),this._initGlobal(),this.bindMouse()}_createRenderer(){return this._instantiationService.createInstance(mS,this,this._document,this.element,this.screenElement,this._viewportElement,this._helperContainer,this.linkifier)}bindMouse(){let e=this,i=this.element;function n(o){var d,p,g,O,_;let l=e._mouseService.getMouseReportCoords(o,e.screenElement);if(!l)return!1;let c,u;switch(o.overrideType||o.type){case"mousemove":u=32,o.buttons===void 0?(c=3,o.button!==void 0&&(c=o.button<3?o.button:3)):c=o.buttons&1?0:o.buttons&4?1:o.buttons&2?2:3;break;case"mouseup":u=0,c=o.button<3?o.button:3;break;case"mousedown":u=1,c=o.button<3?o.button:3;break;case"wheel":if(e._customWheelEventHandler&&e._customWheelEventHandler(o)===!1)return!1;let b=o.deltaY;if(b===0||e.coreMouseService.consumeWheelEvent(o,(O=(g=(p=(d=e._renderService)==null?void 0:d.dimensions)==null?void 0:p.device)==null?void 0:g.cell)==null?void 0:O.height,(_=e._coreBrowserService)==null?void 0:_.dpr)===0)return!1;u=b<0?0:1,c=4;break;default:return!1}return u===void 0||c===void 0||c>4?!1:e.coreMouseService.triggerMouseEvent({col:l.col,row:l.row,x:l.x,y:l.y,button:c,action:u,ctrl:o.ctrlKey,alt:o.altKey,shift:o.shiftKey})}let s={mouseup:null,wheel:null,mousedrag:null,mousemove:null},r={mouseup:o=>(n(o),o.buttons||(this._document.removeEventListener("mouseup",s.mouseup),s.mousedrag&&this._document.removeEventListener("mousemove",s.mousedrag)),this.cancel(o)),wheel:o=>(n(o),this.cancel(o,!0)),mousedrag:o=>{o.buttons&&n(o)},mousemove:o=>{o.buttons||n(o)}};this._register(this.coreMouseService.onProtocolChange(o=>{o?(this.optionsService.rawOptions.logLevel==="debug"&&this._logService.debug("Binding to mouse events:",this.coreMouseService.explainEvents(o)),this.element.classList.add("enable-mouse-events"),this._selectionService.disable()):(this._logService.debug("Unbinding from mouse events."),this.element.classList.remove("enable-mouse-events"),this._selectionService.enable()),o&8?s.mousemove||(i.addEventListener("mousemove",r.mousemove),s.mousemove=r.mousemove):(i.removeEventListener("mousemove",s.mousemove),s.mousemove=null),o&16?s.wheel||(i.addEventListener("wheel",r.wheel,{passive:!1}),s.wheel=r.wheel):(i.removeEventListener("wheel",s.wheel),s.wheel=null),o&2?s.mouseup||(s.mouseup=r.mouseup):(this._document.removeEventListener("mouseup",s.mouseup),s.mouseup=null),o&4?s.mousedrag||(s.mousedrag=r.mousedrag):(this._document.removeEventListener("mousemove",s.mousedrag),s.mousedrag=null)})),this.coreMouseService.activeProtocol=this.coreMouseService.activeProtocol,this._register(Be(i,"mousedown",o=>{if(o.preventDefault(),this.focus(),!(!this.coreMouseService.areMouseEventsActive||this._selectionService.shouldForceSelection(o)))return n(o),s.mouseup&&this._document.addEventListener("mouseup",s.mouseup),s.mousedrag&&this._document.addEventListener("mousemove",s.mousedrag),this.cancel(o)})),this._register(Be(i,"wheel",o=>{var l,c,u,d,p;if(!s.wheel){if(this._customWheelEventHandler&&this._customWheelEventHandler(o)===!1)return!1;if(!this.buffer.hasScrollback){if(o.deltaY===0)return!1;if(e.coreMouseService.consumeWheelEvent(o,(d=(u=(c=(l=e._renderService)==null?void 0:l.dimensions)==null?void 0:c.device)==null?void 0:u.cell)==null?void 0:d.height,(p=e._coreBrowserService)==null?void 0:p.dpr)===0)return this.cancel(o,!0);let g=ce.ESC+(this.coreService.decPrivateModes.applicationCursorKeys?"O":"[")+(o.deltaY<0?"A":"B");return this.coreService.triggerDataEvent(g,!0),this.cancel(o,!0)}}},{passive:!1}))}refresh(e,i){var n;(n=this._renderService)==null||n.refreshRows(e,i)}updateCursorStyle(e){var i;(i=this._selectionService)!=null&&i.shouldColumnSelect(e)?this.element.classList.add("column-select"):this.element.classList.remove("column-select")}_showCursor(){this.coreService.isCursorInitialized||(this.coreService.isCursorInitialized=!0,this.refresh(this.buffer.y,this.buffer.y))}scrollLines(e,i){this._viewport?this._viewport.scrollLines(e):super.scrollLines(e,i),this.refresh(0,this.rows-1)}scrollPages(e){this.scrollLines(e*(this.rows-1))}scrollToTop(){this.scrollLines(-this._bufferService.buffer.ydisp)}scrollToBottom(e){e&&this._viewport?this._viewport.scrollToLine(this.buffer.ybase,!0):this.scrollLines(this._bufferService.buffer.ybase-this._bufferService.buffer.ydisp)}scrollToLine(e){let i=e-this._bufferService.buffer.ydisp;i!==0&&this.scrollLines(i)}paste(e){w6(e,this.textarea,this.coreService,this.optionsService)}attachCustomKeyEventHandler(e){this._customKeyEventHandler=e}attachCustomWheelEventHandler(e){this._customWheelEventHandler=e}registerLinkProvider(e){return this._linkProviderService.registerLinkProvider(e)}registerCharacterJoiner(e){if(!this._characterJoinerService)throw new Error("Terminal must be opened first");let i=this._characterJoinerService.register(e);return this.refresh(0,this.rows-1),i}deregisterCharacterJoiner(e){if(!this._characterJoinerService)throw new Error("Terminal must be opened first");this._characterJoinerService.deregister(e)&&this.refresh(0,this.rows-1)}get markers(){return this.buffer.markers}registerMarker(e){return this.buffer.addMarker(this.buffer.ybase+this.buffer.y+e)}registerDecoration(e){return this._decorationService.registerDecoration(e)}hasSelection(){return this._selectionService?this._selectionService.hasSelection:!1}select(e,i,n){this._selectionService.setSelection(e,i,n)}getSelection(){return this._selectionService?this._selectionService.selectionText:""}getSelectionPosition(){if(!(!this._selectionService||!this._selectionService.hasSelection))return{start:{x:this._selectionService.selectionStart[0],y:this._selectionService.selectionStart[1]},end:{x:this._selectionService.selectionEnd[0],y:this._selectionService.selectionEnd[1]}}}clearSelection(){var e;(e=this._selectionService)==null||e.clearSelection()}selectAll(){var e;(e=this._selectionService)==null||e.selectAll()}selectLines(e,i){var n;(n=this._selectionService)==null||n.selectLines(e,i)}_keyDown(e){if(this._keyDownHandled=!1,this._keyDownSeen=!0,this._customKeyEventHandler&&this._customKeyEventHandler(e)===!1)return!1;let i=this.browser.isMac&&this.options.macOptionIsMeta&&e.altKey;if(!i&&!this._compositionHelper.keydown(e))return this.options.scrollOnUserInput&&this.buffer.ybase!==this.buffer.ydisp&&this.scrollToBottom(!0),!1;!i&&(e.key==="Dead"||e.key==="AltGraph")&&(this._unprocessedDeadKey=!0);let n=vre(e,this.coreService.decPrivateModes.applicationCursorKeys,this.browser.isMac,this.options.macOptionIsMeta);if(this.updateCursorStyle(e),n.type===3||n.type===2){let s=this.rows-1;return this.scrollLines(n.type===2?-s:s),this.cancel(e,!0)}if(n.type===1&&this.selectAll(),this._isThirdLevelShift(this.browser,e)||(n.cancel&&this.cancel(e,!0),!n.key)||e.key&&!e.ctrlKey&&!e.altKey&&!e.metaKey&&e.key.length===1&&e.key.charCodeAt(0)>=65&&e.key.charCodeAt(0)<=90)return!0;if(this._unprocessedDeadKey)return this._unprocessedDeadKey=!1,!0;if((n.key===ce.ETX||n.key===ce.CR)&&(this.textarea.value=""),this._onKey.fire({key:n.key,domEvent:e}),this._showCursor(),this.coreService.triggerDataEvent(n.key,!0),!this.optionsService.rawOptions.screenReaderMode||e.altKey||e.ctrlKey)return this.cancel(e,!0);this._keyDownHandled=!0}_isThirdLevelShift(e,i){let n=e.isMac&&!this.options.macOptionIsMeta&&i.altKey&&!i.ctrlKey&&!i.metaKey||e.isWindows&&i.altKey&&i.ctrlKey&&!i.metaKey||e.isWindows&&i.getModifierState("AltGraph");return i.type==="keypress"?n:n&&(!i.keyCode||i.keyCode>47)}_keyUp(e){this._keyDownSeen=!1,!(this._customKeyEventHandler&&this._customKeyEventHandler(e)===!1)&&(kre(e)||this.focus(),this.updateCursorStyle(e),this._keyPressHandled=!1)}_keyPress(e){let i;if(this._keyPressHandled=!1,this._keyDownHandled||this._customKeyEventHandler&&this._customKeyEventHandler(e)===!1)return!1;if(this.cancel(e),e.charCode)i=e.charCode;else if(e.which===null||e.which===void 0)i=e.keyCode;else if(e.which!==0&&e.charCode!==0)i=e.which;else return!1;return!i||(e.altKey||e.ctrlKey||e.metaKey)&&!this._isThirdLevelShift(this.browser,e)?!1:(i=String.fromCharCode(i),this._onKey.fire({key:i,domEvent:e}),this._showCursor(),this.coreService.triggerDataEvent(i,!0),this._keyPressHandled=!0,this._unprocessedDeadKey=!1,!0)}_inputEvent(e){if(e.data&&e.inputType==="insertText"&&(!e.composed||!this._keyDownSeen)&&!this.optionsService.rawOptions.screenReaderMode){if(this._keyPressHandled)return!1;this._unprocessedDeadKey=!1;let i=e.data;return this.coreService.triggerDataEvent(i,!0),this.cancel(e),!0}return!1}resize(e,i){if(e===this.cols&&i===this.rows){this._charSizeService&&!this._charSizeService.hasValidSize&&this._charSizeService.measure();return}super.resize(e,i)}_afterResize(e,i){var n;(n=this._charSizeService)==null||n.measure()}clear(){if(!(this.buffer.ybase===0&&this.buffer.y===0)){this.buffer.clearAllMarkers(),this.buffer.lines.set(0,this.buffer.lines.get(this.buffer.ybase+this.buffer.y)),this.buffer.lines.length=1,this.buffer.ydisp=0,this.buffer.ybase=0,this.buffer.y=0;for(let e=1;e=0;e--)this._addons[e].instance.dispose()}loadAddon(e,i){let n={instance:i,dispose:i.dispose,isDisposed:!1};this._addons.push(n),i.dispose=()=>this._wrappedAddonDispose(n),i.activate(e)}_wrappedAddonDispose(e){if(e.isDisposed)return;let i=-1;for(let n=0;n=this._line.length))return i?(this._line.loadCell(e,i),i):this._line.loadCell(e,new Rs)}translateToString(e,i,n){return this._line.translateToString(e,i,n)}},DR=class{constructor(t,e){this._buffer=t,this.type=e}init(t){return this._buffer=t,this}get cursorY(){return this._buffer.y}get cursorX(){return this._buffer.x}get viewportY(){return this._buffer.ydisp}get baseY(){return this._buffer.ybase}get length(){return this._buffer.lines.length}getLine(t){let e=this._buffer.lines.get(t);if(e)return new Are(e)}getNullCell(){return new Rs}},Ere=class extends Ue{constructor(t){super(),this._core=t,this._onBufferChange=this._register(new me),this.onBufferChange=this._onBufferChange.event,this._normal=new DR(this._core.buffers.normal,"normal"),this._alternate=new DR(this._core.buffers.alt,"alternate"),this._core.buffers.onBufferActivate(()=>this._onBufferChange.fire(this.active))}get active(){if(this._core.buffers.active===this._core.buffers.normal)return this.normal;if(this._core.buffers.active===this._core.buffers.alt)return this.alternate;throw new Error("Active buffer is neither normal nor alternate")}get normal(){return this._normal.init(this._core.buffers.normal)}get alternate(){return this._alternate.init(this._core.buffers.alt)}},Mre=class{constructor(t){this._core=t}registerCsiHandler(t,e){return this._core.registerCsiHandler(t,i=>e(i.toArray()))}addCsiHandler(t,e){return this.registerCsiHandler(t,e)}registerDcsHandler(t,e){return this._core.registerDcsHandler(t,(i,n)=>e(i,n.toArray()))}addDcsHandler(t,e){return this.registerDcsHandler(t,e)}registerEscHandler(t,e){return this._core.registerEscHandler(t,e)}addEscHandler(t,e){return this.registerEscHandler(t,e)}registerOscHandler(t,e){return this._core.registerOscHandler(t,e)}addOscHandler(t,e){return this.registerOscHandler(t,e)}},Pre=class{constructor(e){this._core=e}register(e){this._core.unicodeService.register(e)}get versions(){return this._core.unicodeService.versions}get activeVersion(){return this._core.unicodeService.activeVersion}set activeVersion(e){this._core.unicodeService.activeVersion=e}},Rre=["cols","rows"],cr=0,Qre=class extends Ue{constructor(t){super(),this._core=this._register(new Cre(t)),this._addonManager=this._register(new Tre),this._publicOptions={...this._core.options};let e=n=>this._core.options[n],i=(n,s)=>{this._checkReadonlyOptions(n),this._core.options[n]=s};for(let n in this._core.options){let s={get:e.bind(this,n),set:i.bind(this,n)};Object.defineProperty(this._publicOptions,n,s)}}_checkReadonlyOptions(t){if(Rre.includes(t))throw new Error(`Option "${t}" can only be set in the constructor`)}_checkProposedApi(){if(!this._core.optionsService.rawOptions.allowProposedApi)throw new Error("You must set the allowProposedApi option to true to use proposed API")}get onBell(){return this._core.onBell}get onBinary(){return this._core.onBinary}get onCursorMove(){return this._core.onCursorMove}get onData(){return this._core.onData}get onKey(){return this._core.onKey}get onLineFeed(){return this._core.onLineFeed}get onRender(){return this._core.onRender}get onResize(){return this._core.onResize}get onScroll(){return this._core.onScroll}get onSelectionChange(){return this._core.onSelectionChange}get onTitleChange(){return this._core.onTitleChange}get onWriteParsed(){return this._core.onWriteParsed}get element(){return this._core.element}get parser(){return this._parser||(this._parser=new Mre(this._core)),this._parser}get unicode(){return this._checkProposedApi(),new Pre(this._core)}get textarea(){return this._core.textarea}get rows(){return this._core.rows}get cols(){return this._core.cols}get buffer(){return this._buffer||(this._buffer=this._register(new Ere(this._core))),this._buffer}get markers(){return this._checkProposedApi(),this._core.markers}get modes(){let t=this._core.coreService.decPrivateModes,e="none";switch(this._core.coreMouseService.activeProtocol){case"X10":e="x10";break;case"VT200":e="vt200";break;case"DRAG":e="drag";break;case"ANY":e="any";break}return{applicationCursorKeysMode:t.applicationCursorKeys,applicationKeypadMode:t.applicationKeypad,bracketedPasteMode:t.bracketedPasteMode,insertMode:this._core.coreService.modes.insertMode,mouseTrackingMode:e,originMode:t.origin,reverseWraparoundMode:t.reverseWraparound,sendFocusMode:t.sendFocus,synchronizedOutputMode:t.synchronizedOutput,wraparoundMode:t.wraparound}}get options(){return this._publicOptions}set options(t){for(let e in t)this._publicOptions[e]=t[e]}blur(){this._core.blur()}focus(){this._core.focus()}input(t,e=!0){this._core.input(t,e)}resize(t,e){this._verifyIntegers(t,e),this._core.resize(t,e)}open(t){this._core.open(t)}attachCustomKeyEventHandler(t){this._core.attachCustomKeyEventHandler(t)}attachCustomWheelEventHandler(t){this._core.attachCustomWheelEventHandler(t)}registerLinkProvider(t){return this._core.registerLinkProvider(t)}registerCharacterJoiner(t){return this._checkProposedApi(),this._core.registerCharacterJoiner(t)}deregisterCharacterJoiner(t){this._checkProposedApi(),this._core.deregisterCharacterJoiner(t)}registerMarker(t=0){return this._verifyIntegers(t),this._core.registerMarker(t)}registerDecoration(t){return this._checkProposedApi(),this._verifyPositiveIntegers(t.x??0,t.width??0,t.height??0),this._core.registerDecoration(t)}hasSelection(){return this._core.hasSelection()}select(t,e,i){this._verifyIntegers(t,e,i),this._core.select(t,e,i)}getSelection(){return this._core.getSelection()}getSelectionPosition(){return this._core.getSelectionPosition()}clearSelection(){this._core.clearSelection()}selectAll(){this._core.selectAll()}selectLines(t,e){this._verifyIntegers(t,e),this._core.selectLines(t,e)}dispose(){super.dispose()}scrollLines(t){this._verifyIntegers(t),this._core.scrollLines(t)}scrollPages(t){this._verifyIntegers(t),this._core.scrollPages(t)}scrollToTop(){this._core.scrollToTop()}scrollToBottom(){this._core.scrollToBottom()}scrollToLine(t){this._verifyIntegers(t),this._core.scrollToLine(t)}clear(){this._core.clear()}write(t,e){this._core.write(t,e)}writeln(t,e){this._core.write(t),this._core.write(`\r +`,e)}paste(t){this._core.paste(t)}refresh(t,e){this._verifyIntegers(t,e),this._core.refresh(t,e)}reset(){this._core.reset()}clearTextureAtlas(){this._core.clearTextureAtlas()}loadAddon(t){this._addonManager.loadAddon(this,t)}static get strings(){return{get promptLabel(){return Wb.get()},set promptLabel(t){Wb.set(t)},get tooMuchOutput(){return Ub.get()},set tooMuchOutput(t){Ub.set(t)}}}_verifyIntegers(...t){for(cr of t)if(cr===1/0||isNaN(cr)||cr%1!==0)throw new Error("This API only accepts integers")}_verifyPositiveIntegers(...t){for(cr of t)if(cr&&(cr===1/0||isNaN(cr)||cr%1!==0||cr<0))throw new Error("This API only accepts positive integers")}};/** * Copyright (c) 2014-2024 The xterm.js authors. All rights reserved. * @license MIT * @@ -127,7 +127,7 @@ WARNING: This link could potentially be dangerous`)){let i=window.open();if(i){t * Fabrice Bellard's javascript vt100 for jslinux: * http://bellard.org/jslinux/ * Copyright (c) 2011 Fabrice Bellard - */var Lse=2,Dse=1,Bse=class{activate(t){this._terminal=t}dispose(){}fit(){let t=this.proposeDimensions();if(!t||!this._terminal||isNaN(t.cols)||isNaN(t.rows))return;let e=this._terminal._core;(this._terminal.rows!==t.rows||this._terminal.cols!==t.cols)&&(e._renderService.clear(),this._terminal.resize(t.cols,t.rows))}proposeDimensions(){var p;if(!this._terminal||!this._terminal.element||!this._terminal.element.parentElement)return;let t=this._terminal._core._renderService.dimensions;if(t.css.cell.width===0||t.css.cell.height===0)return;let e=this._terminal.options.scrollback===0?0:((p=this._terminal.options.overviewRuler)==null?void 0:p.width)||14,i=window.getComputedStyle(this._terminal.element.parentElement),n=parseInt(i.getPropertyValue("height")),r=Math.max(0,parseInt(i.getPropertyValue("width"))),s=window.getComputedStyle(this._terminal.element),o={top:parseInt(s.getPropertyValue("padding-top")),bottom:parseInt(s.getPropertyValue("padding-bottom")),right:parseInt(s.getPropertyValue("padding-right")),left:parseInt(s.getPropertyValue("padding-left"))},l=o.top+o.bottom,c=o.right+o.left,u=n-l,d=r-c-e;return{cols:Math.max(Lse,Math.floor(d/t.css.cell.width)),rows:Math.max(Dse,Math.floor(u/t.css.cell.height))}}};/** + */var Lre=2,Dre=1,Bre=class{activate(t){this._terminal=t}dispose(){}fit(){let t=this.proposeDimensions();if(!t||!this._terminal||isNaN(t.cols)||isNaN(t.rows))return;let e=this._terminal._core;(this._terminal.rows!==t.rows||this._terminal.cols!==t.cols)&&(e._renderService.clear(),this._terminal.resize(t.cols,t.rows))}proposeDimensions(){var p;if(!this._terminal||!this._terminal.element||!this._terminal.element.parentElement)return;let t=this._terminal._core._renderService.dimensions;if(t.css.cell.width===0||t.css.cell.height===0)return;let e=this._terminal.options.scrollback===0?0:((p=this._terminal.options.overviewRuler)==null?void 0:p.width)||14,i=window.getComputedStyle(this._terminal.element.parentElement),n=parseInt(i.getPropertyValue("height")),s=Math.max(0,parseInt(i.getPropertyValue("width"))),r=window.getComputedStyle(this._terminal.element),o={top:parseInt(r.getPropertyValue("padding-top")),bottom:parseInt(r.getPropertyValue("padding-bottom")),right:parseInt(r.getPropertyValue("padding-right")),left:parseInt(r.getPropertyValue("padding-left"))},l=o.top+o.bottom,c=o.right+o.left,u=n-l,d=s-c-e;return{cols:Math.max(Lre,Math.floor(d/t.css.cell.width)),rows:Math.max(Dre,Math.floor(u/t.css.cell.height))}}};/** * Copyright (c) 2014-2024 The xterm.js authors. All rights reserved. * @license MIT * @@ -138,13 +138,13 @@ WARNING: This link could potentially be dangerous`)){let i=window.open();if(i){t * Fabrice Bellard's javascript vt100 for jslinux: * http://bellard.org/jslinux/ * Copyright (c) 2011 Fabrice Bellard - */var $se=(t,e,i,n)=>{for(var r=e,s=t.length-1,o;s>=0;s--)(o=t[s])&&(r=o(r)||r);return r},zse=(t,e)=>(i,n)=>e(i,n,t),Nse=class{constructor(){this.listeners=[],this.unexpectedErrorHandler=function(t){setTimeout(()=>{throw t.stack?BR.isErrorNoTelemetry(t)?new BR(t.message+` + */var $re=(t,e,i,n)=>{for(var s=e,r=t.length-1,o;r>=0;r--)(o=t[r])&&(s=o(s)||s);return s},Nre=(t,e)=>(i,n)=>e(i,n,t),zre=class{constructor(){this.listeners=[],this.unexpectedErrorHandler=function(t){setTimeout(()=>{throw t.stack?BR.isErrorNoTelemetry(t)?new BR(t.message+` `+t.stack):new Error(t.message+` -`+t.stack):t},0)}}addListener(t){return this.listeners.push(t),()=>{this._removeListener(t)}}emit(t){this.listeners.forEach(e=>{e(t)})}_removeListener(t){this.listeners.splice(this.listeners.indexOf(t),1)}setUnexpectedErrorHandler(t){this.unexpectedErrorHandler=t}getUnexpectedErrorHandler(){return this.unexpectedErrorHandler}onUnexpectedError(t){this.unexpectedErrorHandler(t),this.emit(t)}onUnexpectedExternalError(t){this.unexpectedErrorHandler(t)}},jse=new Nse;function Wy(t){Ise(t)||jse.onUnexpectedError(t)}var ES="Canceled";function Ise(t){return t instanceof Vse?!0:t instanceof Error&&t.name===ES&&t.message===ES}var Vse=class extends Error{constructor(){super(ES),this.name=this.message}},BR=class MS extends Error{constructor(e){super(e),this.name="CodeExpectedError"}static fromError(e){if(e instanceof MS)return e;let i=new MS;return i.message=e.message,i.stack=e.stack,i}static isErrorNoTelemetry(e){return e.name==="CodeExpectedError"}},Xse;(t=>{function e(s){return s<0}t.isLessThan=e;function i(s){return s<=0}t.isLessThanOrEqual=i;function n(s){return s>0}t.isGreaterThan=n;function r(s){return s===0}t.isNeitherLessOrGreaterThan=r,t.greaterThan=1,t.lessThan=-1,t.neitherLessOrGreaterThan=0})(Xse||(Xse={}));function Zse(t,e){let i=this,n=!1,r;return function(){return n||(n=!0,e||(r=t.apply(i,arguments))),r}}var dz;(t=>{function e(A){return A&&typeof A=="object"&&typeof A[Symbol.iterator]=="function"}t.is=e;let i=Object.freeze([]);function n(){return i}t.empty=n;function*r(A){yield A}t.single=r;function s(A){return e(A)?A:r(A)}t.wrap=s;function o(A){return A||i}t.from=o;function*l(A){for(let Q=A.length-1;Q>=0;Q--)yield A[Q]}t.reverse=l;function c(A){return!A||A[Symbol.iterator]().next().done===!0}t.isEmpty=c;function u(A){return A[Symbol.iterator]().next().value}t.first=u;function d(A,Q){let E=0;for(let z of A)if(Q(z,E++))return!0;return!1}t.some=d;function p(A,Q){for(let E of A)if(Q(E))return E}t.find=p;function*g(A,Q){for(let E of A)Q(E)&&(yield E)}t.filter=g;function*O(A,Q){let E=0;for(let z of A)yield Q(z,E++)}t.map=O;function*_(A,Q){let E=0;for(let z of A)yield*Q(z,E++)}t.flatMap=_;function*b(...A){for(let Q of A)yield*Q}t.concat=b;function x(A,Q,E){let z=E;for(let N of A)z=Q(z,N);return z}t.reduce=x;function*w(A,Q,E=A.length){for(Q<0&&(Q+=A.length),E<0?E+=A.length:E>A.length&&(E=A.length);Q1)throw new AggregateError(e,"Encountered errors while disposing of store");return Array.isArray(t)?[]:t}else if(t)return t.dispose(),t}function mz(...t){return rn(()=>pz(t))}function rn(t){return{dispose:Zse(()=>{t()})}}var gz=class Oz{constructor(){this._toDispose=new Set,this._isDisposed=!1}dispose(){this._isDisposed||(this._isDisposed=!0,this.clear())}get isDisposed(){return this._isDisposed}clear(){if(this._toDispose.size!==0)try{pz(this._toDispose)}finally{this._toDispose.clear()}}add(e){if(!e)return e;if(e===this)throw new Error("Cannot register a disposable on itself!");return this._isDisposed?Oz.DISABLE_DISPOSED_WARNING||console.warn(new Error("Trying to add a disposable to a DisposableStore that has already been disposed of. The added object will be leaked!").stack):this._toDispose.add(e),e}delete(e){if(e){if(e===this)throw new Error("Cannot dispose a disposable on itself!");this._toDispose.delete(e),e.dispose()}}deleteAndLeak(e){e&&this._toDispose.has(e)&&(this._toDispose.delete(e),void 0)}};gz.DISABLE_DISPOSED_WARNING=!1;var eh=gz,Fr=class{constructor(){this._store=new eh,this._store}dispose(){this._store.dispose()}_register(e){if(e===this)throw new Error("Cannot register a disposable on itself!");return this._store.add(e)}};Fr.None=Object.freeze({dispose(){}});var Iu=class{constructor(){this._isDisposed=!1}get value(){return this._isDisposed?void 0:this._value}set value(t){var e;this._isDisposed||t===this._value||((e=this._value)==null||e.dispose(),this._value=t)}clear(){this.value=void 0}dispose(){var t;this._isDisposed=!0,(t=this._value)==null||t.dispose(),this._value=void 0}clearAndLeak(){let t=this._value;return this._value=void 0,t}},Nw=typeof process<"u"&&"title"in process,MO=Nw?"node":navigator.userAgent,qse=Nw?"node":navigator.platform,Wse=MO.includes("Firefox"),Use=MO.includes("Edge"),vz=/^((?!chrome|android).)*safari/i.test(MO);function Yse(){if(!vz)return 0;let t=MO.match(/Version\/(\d+)/);return t===null||t.length<2?0:parseInt(t[1])}qse.indexOf("Linux")>=0;var Hse="",Ai=0,Ei=0,Mi=0,qt=0,yr={css:"#00000000",rgba:0},gn;(t=>{function e(r,s,o,l){return l!==void 0?`#${nl(r)}${nl(s)}${nl(o)}${nl(l)}`:`#${nl(r)}${nl(s)}${nl(o)}`}t.toCss=e;function i(r,s,o,l=255){return(r<<24|s<<16|o<<8|l)>>>0}t.toRgba=i;function n(r,s,o,l){return{css:t.toCss(r,s,o,l),rgba:t.toRgba(r,s,o,l)}}t.toColor=n})(gn||(gn={}));var af;(t=>{function e(c,u){if(qt=(u.rgba&255)/255,qt===1)return{css:u.css,rgba:u.rgba};let d=u.rgba>>24&255,p=u.rgba>>16&255,g=u.rgba>>8&255,O=c.rgba>>24&255,_=c.rgba>>16&255,b=c.rgba>>8&255;Ai=O+Math.round((d-O)*qt),Ei=_+Math.round((p-_)*qt),Mi=b+Math.round((g-b)*qt);let x=gn.toCss(Ai,Ei,Mi),w=gn.toRgba(Ai,Ei,Mi);return{css:x,rgba:w}}t.blend=e;function i(c){return(c.rgba&255)===255}t.isOpaque=i;function n(c,u,d){let p=wl.ensureContrastRatio(c.rgba,u.rgba,d);if(p)return gn.toColor(p>>24&255,p>>16&255,p>>8&255)}t.ensureContrastRatio=n;function r(c){let u=(c.rgba|255)>>>0;return[Ai,Ei,Mi]=wl.toChannels(u),{css:gn.toCss(Ai,Ei,Mi),rgba:u}}t.opaque=r;function s(c,u){return qt=Math.round(u*255),[Ai,Ei,Mi]=wl.toChannels(c.rgba),{css:gn.toCss(Ai,Ei,Mi,qt),rgba:gn.toRgba(Ai,Ei,Mi,qt)}}t.opacity=s;function o(c,u){return qt=c.rgba&255,s(c,qt*u/255)}t.multiplyOpacity=o;function l(c){return[c.rgba>>24&255,c.rgba>>16&255,c.rgba>>8&255]}t.toColorRGB=l})(af||(af={}));var Fse;(t=>{let e,i;try{let r=document.createElement("canvas");r.width=1,r.height=1;let s=r.getContext("2d",{willReadFrequently:!0});s&&(e=s,e.globalCompositeOperation="copy",i=e.createLinearGradient(0,0,1,1))}catch{}function n(r){if(r.match(/#[\da-f]{3,8}/i))switch(r.length){case 4:return Ai=parseInt(r.slice(1,2).repeat(2),16),Ei=parseInt(r.slice(2,3).repeat(2),16),Mi=parseInt(r.slice(3,4).repeat(2),16),gn.toColor(Ai,Ei,Mi);case 5:return Ai=parseInt(r.slice(1,2).repeat(2),16),Ei=parseInt(r.slice(2,3).repeat(2),16),Mi=parseInt(r.slice(3,4).repeat(2),16),qt=parseInt(r.slice(4,5).repeat(2),16),gn.toColor(Ai,Ei,Mi,qt);case 7:return{css:r,rgba:(parseInt(r.slice(1),16)<<8|255)>>>0};case 9:return{css:r,rgba:parseInt(r.slice(1),16)>>>0}}let s=r.match(/rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(,\s*(0|1|\d?\.(\d+))\s*)?\)/);if(s)return Ai=parseInt(s[1]),Ei=parseInt(s[2]),Mi=parseInt(s[3]),qt=Math.round((s[5]===void 0?1:parseFloat(s[5]))*255),gn.toColor(Ai,Ei,Mi,qt);if(!e||!i)throw new Error("css.toColor: Unsupported css format");if(e.fillStyle=i,e.fillStyle=r,typeof e.fillStyle!="string")throw new Error("css.toColor: Unsupported css format");if(e.fillRect(0,0,1,1),[Ai,Ei,Mi,qt]=e.getImageData(0,0,1,1).data,qt!==255)throw new Error("css.toColor: Unsupported css format");return{rgba:gn.toRgba(Ai,Ei,Mi,qt),css:r}}t.toColor=n})(Fse||(Fse={}));var dn;(t=>{function e(n){return i(n>>16&255,n>>8&255,n&255)}t.relativeLuminance=e;function i(n,r,s){let o=n/255,l=r/255,c=s/255,u=o<=.03928?o/12.92:Math.pow((o+.055)/1.055,2.4),d=l<=.03928?l/12.92:Math.pow((l+.055)/1.055,2.4),p=c<=.03928?c/12.92:Math.pow((c+.055)/1.055,2.4);return u*.2126+d*.7152+p*.0722}t.relativeLuminance2=i})(dn||(dn={}));var wl;(t=>{function e(o,l){if(qt=(l&255)/255,qt===1)return l;let c=l>>24&255,u=l>>16&255,d=l>>8&255,p=o>>24&255,g=o>>16&255,O=o>>8&255;return Ai=p+Math.round((c-p)*qt),Ei=g+Math.round((u-g)*qt),Mi=O+Math.round((d-O)*qt),gn.toRgba(Ai,Ei,Mi)}t.blend=e;function i(o,l,c){let u=dn.relativeLuminance(o>>8),d=dn.relativeLuminance(l>>8);if(ro(u,d)>8));if(_>8));return _>x?O:b}return O}let p=r(o,l,c),g=ro(u,dn.relativeLuminance(p>>8));if(g>8));return g>_?p:O}return p}}t.ensureContrastRatio=i;function n(o,l,c){let u=o>>24&255,d=o>>16&255,p=o>>8&255,g=l>>24&255,O=l>>16&255,_=l>>8&255,b=ro(dn.relativeLuminance2(g,O,_),dn.relativeLuminance2(u,d,p));for(;b0||O>0||_>0);)g-=Math.max(0,Math.ceil(g*.1)),O-=Math.max(0,Math.ceil(O*.1)),_-=Math.max(0,Math.ceil(_*.1)),b=ro(dn.relativeLuminance2(g,O,_),dn.relativeLuminance2(u,d,p));return(g<<24|O<<16|_<<8|255)>>>0}t.reduceLuminance=n;function r(o,l,c){let u=o>>24&255,d=o>>16&255,p=o>>8&255,g=l>>24&255,O=l>>16&255,_=l>>8&255,b=ro(dn.relativeLuminance2(g,O,_),dn.relativeLuminance2(u,d,p));for(;b>>0}t.increaseLuminance=r;function s(o){return[o>>24&255,o>>16&255,o>>8&255,o&255]}t.toChannels=s})(wl||(wl={}));function nl(t){let e=t.toString(16);return e.length<2?"0"+e:e}function ro(t,e){return t=128512&&t<=128591||t>=127744&&t<=128511||t>=128640&&t<=128767||t>=9728&&t<=9983||t>=9984&&t<=10175||t>=65024&&t<=65039||t>=129280&&t<=129535||t>=127462&&t<=127487}function toe(t,e,i,n){return e===1&&i>Math.ceil(n*1.5)&&t!==void 0&&t>255&&!eoe(t)&&!jw(t)&&!Kse(t)}function _z(t){return jw(t)||Jse(t)}function ioe(){return{css:{canvas:Am(),cell:Am()},device:{canvas:Am(),cell:Am(),char:{width:0,height:0,left:0,top:0}}}}function Am(){return{width:0,height:0}}function noe(t,e,i=0){return(t-(Math.round(e)*2-i))%(Math.round(e)*2)}var Xi=0,xi=0,hs=!1,so=!1,Em=!1,Pn,Uy=0,roe=class{constructor(t,e,i,n,r,s){this._terminal=t,this._optionService=e,this._selectionRenderModel=i,this._decorationService=n,this._coreBrowserService=r,this._themeService=s,this.result={fg:0,bg:0,ext:0}}resolve(t,e,i,n){if(this.result.bg=t.bg,this.result.fg=t.fg,this.result.ext=t.bg&268435456?t.extended.ext:0,xi=0,Xi=0,so=!1,hs=!1,Em=!1,Pn=this._themeService.colors,Uy=0,t.getCode()!==0&&t.extended.underlineStyle===4){let r=Math.max(1,Math.floor(this._optionService.rawOptions.fontSize*this._coreBrowserService.dpr/15));Uy=e*n%(Math.round(r)*2)}if(this._decorationService.forEachDecorationAtCell(e,i,"bottom",r=>{r.backgroundColorRGB&&(xi=r.backgroundColorRGB.rgba>>8&16777215,so=!0),r.foregroundColorRGB&&(Xi=r.foregroundColorRGB.rgba>>8&16777215,hs=!0)}),Em=this._selectionRenderModel.isCellSelected(this._terminal,e,i),Em){if(this.result.fg&67108864||(this.result.bg&50331648)!==0){if(this.result.fg&67108864)switch(this.result.fg&50331648){case 16777216:case 33554432:xi=this._themeService.colors.ansi[this.result.fg&255].rgba;break;case 50331648:xi=(this.result.fg&16777215)<<8|255;break;case 0:default:xi=this._themeService.colors.foreground.rgba}else switch(this.result.bg&50331648){case 16777216:case 33554432:xi=this._themeService.colors.ansi[this.result.bg&255].rgba;break;case 50331648:xi=(this.result.bg&16777215)<<8|255;break}xi=wl.blend(xi,(this._coreBrowserService.isFocused?Pn.selectionBackgroundOpaque:Pn.selectionInactiveBackgroundOpaque).rgba&4294967040|128)>>8&16777215}else xi=(this._coreBrowserService.isFocused?Pn.selectionBackgroundOpaque:Pn.selectionInactiveBackgroundOpaque).rgba>>8&16777215;if(so=!0,Pn.selectionForeground&&(Xi=Pn.selectionForeground.rgba>>8&16777215,hs=!0),_z(t.getCode())){if(this.result.fg&67108864&&(this.result.bg&50331648)===0)Xi=(this._coreBrowserService.isFocused?Pn.selectionBackgroundOpaque:Pn.selectionInactiveBackgroundOpaque).rgba>>8&16777215;else{if(this.result.fg&67108864)switch(this.result.bg&50331648){case 16777216:case 33554432:Xi=this._themeService.colors.ansi[this.result.bg&255].rgba;break;case 50331648:Xi=(this.result.bg&16777215)<<8|255;break}else switch(this.result.fg&50331648){case 16777216:case 33554432:Xi=this._themeService.colors.ansi[this.result.fg&255].rgba;break;case 50331648:Xi=(this.result.fg&16777215)<<8|255;break;case 0:default:Xi=this._themeService.colors.foreground.rgba}Xi=wl.blend(Xi,(this._coreBrowserService.isFocused?Pn.selectionBackgroundOpaque:Pn.selectionInactiveBackgroundOpaque).rgba&4294967040|128)>>8&16777215}hs=!0}}this._decorationService.forEachDecorationAtCell(e,i,"top",r=>{r.backgroundColorRGB&&(xi=r.backgroundColorRGB.rgba>>8&16777215,so=!0),r.foregroundColorRGB&&(Xi=r.foregroundColorRGB.rgba>>8&16777215,hs=!0)}),so&&(Em?xi=t.bg&-16777216&-134217729|xi|50331648:xi=t.bg&-16777216|xi|50331648),hs&&(Xi=t.fg&-16777216&-67108865|Xi|50331648),this.result.fg&67108864&&(so&&!hs&&((this.result.bg&50331648)===0?Xi=this.result.fg&-134217728|Pn.background.rgba>>8&16777215&16777215|50331648:Xi=this.result.fg&-134217728|this.result.bg&67108863,hs=!0),!so&&hs&&((this.result.fg&50331648)===0?xi=this.result.bg&-67108864|Pn.foreground.rgba>>8&16777215&16777215|50331648:xi=this.result.bg&-67108864|this.result.fg&67108863,so=!0)),Pn=void 0,this.result.bg=so?xi:this.result.bg,this.result.fg=hs?Xi:this.result.fg,this.result.ext&=536870911,this.result.ext|=Uy<<29&3758096384}},soe=.5,yz=Wse||Use?"bottom":"ideographic",ooe={"▀":[{x:0,y:0,w:8,h:4}],"▁":[{x:0,y:7,w:8,h:1}],"▂":[{x:0,y:6,w:8,h:2}],"▃":[{x:0,y:5,w:8,h:3}],"▄":[{x:0,y:4,w:8,h:4}],"▅":[{x:0,y:3,w:8,h:5}],"▆":[{x:0,y:2,w:8,h:6}],"▇":[{x:0,y:1,w:8,h:7}],"█":[{x:0,y:0,w:8,h:8}],"▉":[{x:0,y:0,w:7,h:8}],"▊":[{x:0,y:0,w:6,h:8}],"▋":[{x:0,y:0,w:5,h:8}],"▌":[{x:0,y:0,w:4,h:8}],"▍":[{x:0,y:0,w:3,h:8}],"▎":[{x:0,y:0,w:2,h:8}],"▏":[{x:0,y:0,w:1,h:8}],"▐":[{x:4,y:0,w:4,h:8}],"▔":[{x:0,y:0,w:8,h:1}],"▕":[{x:7,y:0,w:1,h:8}],"▖":[{x:0,y:4,w:4,h:4}],"▗":[{x:4,y:4,w:4,h:4}],"▘":[{x:0,y:0,w:4,h:4}],"▙":[{x:0,y:0,w:4,h:8},{x:0,y:4,w:8,h:4}],"▚":[{x:0,y:0,w:4,h:4},{x:4,y:4,w:4,h:4}],"▛":[{x:0,y:0,w:4,h:8},{x:4,y:0,w:4,h:4}],"▜":[{x:0,y:0,w:8,h:4},{x:4,y:0,w:4,h:8}],"▝":[{x:4,y:0,w:4,h:4}],"▞":[{x:4,y:0,w:4,h:4},{x:0,y:4,w:4,h:4}],"▟":[{x:4,y:0,w:4,h:8},{x:0,y:4,w:8,h:4}],"🭰":[{x:1,y:0,w:1,h:8}],"🭱":[{x:2,y:0,w:1,h:8}],"🭲":[{x:3,y:0,w:1,h:8}],"🭳":[{x:4,y:0,w:1,h:8}],"🭴":[{x:5,y:0,w:1,h:8}],"🭵":[{x:6,y:0,w:1,h:8}],"🭶":[{x:0,y:1,w:8,h:1}],"🭷":[{x:0,y:2,w:8,h:1}],"🭸":[{x:0,y:3,w:8,h:1}],"🭹":[{x:0,y:4,w:8,h:1}],"🭺":[{x:0,y:5,w:8,h:1}],"🭻":[{x:0,y:6,w:8,h:1}],"🭼":[{x:0,y:0,w:1,h:8},{x:0,y:7,w:8,h:1}],"🭽":[{x:0,y:0,w:1,h:8},{x:0,y:0,w:8,h:1}],"🭾":[{x:7,y:0,w:1,h:8},{x:0,y:0,w:8,h:1}],"🭿":[{x:7,y:0,w:1,h:8},{x:0,y:7,w:8,h:1}],"🮀":[{x:0,y:0,w:8,h:1},{x:0,y:7,w:8,h:1}],"🮁":[{x:0,y:0,w:8,h:1},{x:0,y:2,w:8,h:1},{x:0,y:4,w:8,h:1},{x:0,y:7,w:8,h:1}],"🮂":[{x:0,y:0,w:8,h:2}],"🮃":[{x:0,y:0,w:8,h:3}],"🮄":[{x:0,y:0,w:8,h:5}],"🮅":[{x:0,y:0,w:8,h:6}],"🮆":[{x:0,y:0,w:8,h:7}],"🮇":[{x:6,y:0,w:2,h:8}],"🮈":[{x:5,y:0,w:3,h:8}],"🮉":[{x:3,y:0,w:5,h:8}],"🮊":[{x:2,y:0,w:6,h:8}],"🮋":[{x:1,y:0,w:7,h:8}],"🮕":[{x:0,y:0,w:2,h:2},{x:4,y:0,w:2,h:2},{x:2,y:2,w:2,h:2},{x:6,y:2,w:2,h:2},{x:0,y:4,w:2,h:2},{x:4,y:4,w:2,h:2},{x:2,y:6,w:2,h:2},{x:6,y:6,w:2,h:2}],"🮖":[{x:2,y:0,w:2,h:2},{x:6,y:0,w:2,h:2},{x:0,y:2,w:2,h:2},{x:4,y:2,w:2,h:2},{x:2,y:4,w:2,h:2},{x:6,y:4,w:2,h:2},{x:0,y:6,w:2,h:2},{x:4,y:6,w:2,h:2}],"🮗":[{x:0,y:2,w:8,h:2},{x:0,y:6,w:8,h:2}]},aoe={"░":[[1,0,0,0],[0,0,0,0],[0,0,1,0],[0,0,0,0]],"▒":[[1,0],[0,0],[0,1],[0,0]],"▓":[[0,1],[1,1],[1,0],[1,1]]},loe={"─":{1:"M0,.5 L1,.5"},"━":{3:"M0,.5 L1,.5"},"│":{1:"M.5,0 L.5,1"},"┃":{3:"M.5,0 L.5,1"},"┌":{1:"M0.5,1 L.5,.5 L1,.5"},"┏":{3:"M0.5,1 L.5,.5 L1,.5"},"┐":{1:"M0,.5 L.5,.5 L.5,1"},"┓":{3:"M0,.5 L.5,.5 L.5,1"},"└":{1:"M.5,0 L.5,.5 L1,.5"},"┗":{3:"M.5,0 L.5,.5 L1,.5"},"┘":{1:"M.5,0 L.5,.5 L0,.5"},"┛":{3:"M.5,0 L.5,.5 L0,.5"},"├":{1:"M.5,0 L.5,1 M.5,.5 L1,.5"},"┣":{3:"M.5,0 L.5,1 M.5,.5 L1,.5"},"┤":{1:"M.5,0 L.5,1 M.5,.5 L0,.5"},"┫":{3:"M.5,0 L.5,1 M.5,.5 L0,.5"},"┬":{1:"M0,.5 L1,.5 M.5,.5 L.5,1"},"┳":{3:"M0,.5 L1,.5 M.5,.5 L.5,1"},"┴":{1:"M0,.5 L1,.5 M.5,.5 L.5,0"},"┻":{3:"M0,.5 L1,.5 M.5,.5 L.5,0"},"┼":{1:"M0,.5 L1,.5 M.5,0 L.5,1"},"╋":{3:"M0,.5 L1,.5 M.5,0 L.5,1"},"╴":{1:"M.5,.5 L0,.5"},"╸":{3:"M.5,.5 L0,.5"},"╵":{1:"M.5,.5 L.5,0"},"╹":{3:"M.5,.5 L.5,0"},"╶":{1:"M.5,.5 L1,.5"},"╺":{3:"M.5,.5 L1,.5"},"╷":{1:"M.5,.5 L.5,1"},"╻":{3:"M.5,.5 L.5,1"},"═":{1:(t,e)=>`M0,${.5-e} L1,${.5-e} M0,${.5+e} L1,${.5+e}`},"║":{1:(t,e)=>`M${.5-t},0 L${.5-t},1 M${.5+t},0 L${.5+t},1`},"╒":{1:(t,e)=>`M.5,1 L.5,${.5-e} L1,${.5-e} M.5,${.5+e} L1,${.5+e}`},"╓":{1:(t,e)=>`M${.5-t},1 L${.5-t},.5 L1,.5 M${.5+t},.5 L${.5+t},1`},"╔":{1:(t,e)=>`M1,${.5-e} L${.5-t},${.5-e} L${.5-t},1 M1,${.5+e} L${.5+t},${.5+e} L${.5+t},1`},"╕":{1:(t,e)=>`M0,${.5-e} L.5,${.5-e} L.5,1 M0,${.5+e} L.5,${.5+e}`},"╖":{1:(t,e)=>`M${.5+t},1 L${.5+t},.5 L0,.5 M${.5-t},.5 L${.5-t},1`},"╗":{1:(t,e)=>`M0,${.5+e} L${.5-t},${.5+e} L${.5-t},1 M0,${.5-e} L${.5+t},${.5-e} L${.5+t},1`},"╘":{1:(t,e)=>`M.5,0 L.5,${.5+e} L1,${.5+e} M.5,${.5-e} L1,${.5-e}`},"╙":{1:(t,e)=>`M1,.5 L${.5-t},.5 L${.5-t},0 M${.5+t},.5 L${.5+t},0`},"╚":{1:(t,e)=>`M1,${.5-e} L${.5+t},${.5-e} L${.5+t},0 M1,${.5+e} L${.5-t},${.5+e} L${.5-t},0`},"╛":{1:(t,e)=>`M0,${.5+e} L.5,${.5+e} L.5,0 M0,${.5-e} L.5,${.5-e}`},"╜":{1:(t,e)=>`M0,.5 L${.5+t},.5 L${.5+t},0 M${.5-t},.5 L${.5-t},0`},"╝":{1:(t,e)=>`M0,${.5-e} L${.5-t},${.5-e} L${.5-t},0 M0,${.5+e} L${.5+t},${.5+e} L${.5+t},0`},"╞":{1:(t,e)=>`M.5,0 L.5,1 M.5,${.5-e} L1,${.5-e} M.5,${.5+e} L1,${.5+e}`},"╟":{1:(t,e)=>`M${.5-t},0 L${.5-t},1 M${.5+t},0 L${.5+t},1 M${.5+t},.5 L1,.5`},"╠":{1:(t,e)=>`M${.5-t},0 L${.5-t},1 M1,${.5+e} L${.5+t},${.5+e} L${.5+t},1 M1,${.5-e} L${.5+t},${.5-e} L${.5+t},0`},"╡":{1:(t,e)=>`M.5,0 L.5,1 M0,${.5-e} L.5,${.5-e} M0,${.5+e} L.5,${.5+e}`},"╢":{1:(t,e)=>`M0,.5 L${.5-t},.5 M${.5-t},0 L${.5-t},1 M${.5+t},0 L${.5+t},1`},"╣":{1:(t,e)=>`M${.5+t},0 L${.5+t},1 M0,${.5+e} L${.5-t},${.5+e} L${.5-t},1 M0,${.5-e} L${.5-t},${.5-e} L${.5-t},0`},"╤":{1:(t,e)=>`M0,${.5-e} L1,${.5-e} M0,${.5+e} L1,${.5+e} M.5,${.5+e} L.5,1`},"╥":{1:(t,e)=>`M0,.5 L1,.5 M${.5-t},.5 L${.5-t},1 M${.5+t},.5 L${.5+t},1`},"╦":{1:(t,e)=>`M0,${.5-e} L1,${.5-e} M0,${.5+e} L${.5-t},${.5+e} L${.5-t},1 M1,${.5+e} L${.5+t},${.5+e} L${.5+t},1`},"╧":{1:(t,e)=>`M.5,0 L.5,${.5-e} M0,${.5-e} L1,${.5-e} M0,${.5+e} L1,${.5+e}`},"╨":{1:(t,e)=>`M0,.5 L1,.5 M${.5-t},.5 L${.5-t},0 M${.5+t},.5 L${.5+t},0`},"╩":{1:(t,e)=>`M0,${.5+e} L1,${.5+e} M0,${.5-e} L${.5-t},${.5-e} L${.5-t},0 M1,${.5-e} L${.5+t},${.5-e} L${.5+t},0`},"╪":{1:(t,e)=>`M.5,0 L.5,1 M0,${.5-e} L1,${.5-e} M0,${.5+e} L1,${.5+e}`},"╫":{1:(t,e)=>`M0,.5 L1,.5 M${.5-t},0 L${.5-t},1 M${.5+t},0 L${.5+t},1`},"╬":{1:(t,e)=>`M0,${.5+e} L${.5-t},${.5+e} L${.5-t},1 M1,${.5+e} L${.5+t},${.5+e} L${.5+t},1 M0,${.5-e} L${.5-t},${.5-e} L${.5-t},0 M1,${.5-e} L${.5+t},${.5-e} L${.5+t},0`},"╱":{1:"M1,0 L0,1"},"╲":{1:"M0,0 L1,1"},"╳":{1:"M1,0 L0,1 M0,0 L1,1"},"╼":{1:"M.5,.5 L0,.5",3:"M.5,.5 L1,.5"},"╽":{1:"M.5,.5 L.5,0",3:"M.5,.5 L.5,1"},"╾":{1:"M.5,.5 L1,.5",3:"M.5,.5 L0,.5"},"╿":{1:"M.5,.5 L.5,1",3:"M.5,.5 L.5,0"},"┍":{1:"M.5,.5 L.5,1",3:"M.5,.5 L1,.5"},"┎":{1:"M.5,.5 L1,.5",3:"M.5,.5 L.5,1"},"┑":{1:"M.5,.5 L.5,1",3:"M.5,.5 L0,.5"},"┒":{1:"M.5,.5 L0,.5",3:"M.5,.5 L.5,1"},"┕":{1:"M.5,.5 L.5,0",3:"M.5,.5 L1,.5"},"┖":{1:"M.5,.5 L1,.5",3:"M.5,.5 L.5,0"},"┙":{1:"M.5,.5 L.5,0",3:"M.5,.5 L0,.5"},"┚":{1:"M.5,.5 L0,.5",3:"M.5,.5 L.5,0"},"┝":{1:"M.5,0 L.5,1",3:"M.5,.5 L1,.5"},"┞":{1:"M0.5,1 L.5,.5 L1,.5",3:"M.5,.5 L.5,0"},"┟":{1:"M.5,0 L.5,.5 L1,.5",3:"M.5,.5 L.5,1"},"┠":{1:"M.5,.5 L1,.5",3:"M.5,0 L.5,1"},"┡":{1:"M.5,.5 L.5,1",3:"M.5,0 L.5,.5 L1,.5"},"┢":{1:"M.5,.5 L.5,0",3:"M0.5,1 L.5,.5 L1,.5"},"┥":{1:"M.5,0 L.5,1",3:"M.5,.5 L0,.5"},"┦":{1:"M0,.5 L.5,.5 L.5,1",3:"M.5,.5 L.5,0"},"┧":{1:"M.5,0 L.5,.5 L0,.5",3:"M.5,.5 L.5,1"},"┨":{1:"M.5,.5 L0,.5",3:"M.5,0 L.5,1"},"┩":{1:"M.5,.5 L.5,1",3:"M.5,0 L.5,.5 L0,.5"},"┪":{1:"M.5,.5 L.5,0",3:"M0,.5 L.5,.5 L.5,1"},"┭":{1:"M0.5,1 L.5,.5 L1,.5",3:"M.5,.5 L0,.5"},"┮":{1:"M0,.5 L.5,.5 L.5,1",3:"M.5,.5 L1,.5"},"┯":{1:"M.5,.5 L.5,1",3:"M0,.5 L1,.5"},"┰":{1:"M0,.5 L1,.5",3:"M.5,.5 L.5,1"},"┱":{1:"M.5,.5 L1,.5",3:"M0,.5 L.5,.5 L.5,1"},"┲":{1:"M.5,.5 L0,.5",3:"M0.5,1 L.5,.5 L1,.5"},"┵":{1:"M.5,0 L.5,.5 L1,.5",3:"M.5,.5 L0,.5"},"┶":{1:"M.5,0 L.5,.5 L0,.5",3:"M.5,.5 L1,.5"},"┷":{1:"M.5,.5 L.5,0",3:"M0,.5 L1,.5"},"┸":{1:"M0,.5 L1,.5",3:"M.5,.5 L.5,0"},"┹":{1:"M.5,.5 L1,.5",3:"M.5,0 L.5,.5 L0,.5"},"┺":{1:"M.5,.5 L0,.5",3:"M.5,0 L.5,.5 L1,.5"},"┽":{1:"M.5,0 L.5,1 M.5,.5 L1,.5",3:"M.5,.5 L0,.5"},"┾":{1:"M.5,0 L.5,1 M.5,.5 L0,.5",3:"M.5,.5 L1,.5"},"┿":{1:"M.5,0 L.5,1",3:"M0,.5 L1,.5"},"╀":{1:"M0,.5 L1,.5 M.5,.5 L.5,1",3:"M.5,.5 L.5,0"},"╁":{1:"M.5,.5 L.5,0 M0,.5 L1,.5",3:"M.5,.5 L.5,1"},"╂":{1:"M0,.5 L1,.5",3:"M.5,0 L.5,1"},"╃":{1:"M0.5,1 L.5,.5 L1,.5",3:"M.5,0 L.5,.5 L0,.5"},"╄":{1:"M0,.5 L.5,.5 L.5,1",3:"M.5,0 L.5,.5 L1,.5"},"╅":{1:"M.5,0 L.5,.5 L1,.5",3:"M0,.5 L.5,.5 L.5,1"},"╆":{1:"M.5,0 L.5,.5 L0,.5",3:"M0.5,1 L.5,.5 L1,.5"},"╇":{1:"M.5,.5 L.5,1",3:"M.5,.5 L.5,0 M0,.5 L1,.5"},"╈":{1:"M.5,.5 L.5,0",3:"M0,.5 L1,.5 M.5,.5 L.5,1"},"╉":{1:"M.5,.5 L1,.5",3:"M.5,0 L.5,1 M.5,.5 L0,.5"},"╊":{1:"M.5,.5 L0,.5",3:"M.5,0 L.5,1 M.5,.5 L1,.5"},"╌":{1:"M.1,.5 L.4,.5 M.6,.5 L.9,.5"},"╍":{3:"M.1,.5 L.4,.5 M.6,.5 L.9,.5"},"┄":{1:"M.0667,.5 L.2667,.5 M.4,.5 L.6,.5 M.7333,.5 L.9333,.5"},"┅":{3:"M.0667,.5 L.2667,.5 M.4,.5 L.6,.5 M.7333,.5 L.9333,.5"},"┈":{1:"M.05,.5 L.2,.5 M.3,.5 L.45,.5 M.55,.5 L.7,.5 M.8,.5 L.95,.5"},"┉":{3:"M.05,.5 L.2,.5 M.3,.5 L.45,.5 M.55,.5 L.7,.5 M.8,.5 L.95,.5"},"╎":{1:"M.5,.1 L.5,.4 M.5,.6 L.5,.9"},"╏":{3:"M.5,.1 L.5,.4 M.5,.6 L.5,.9"},"┆":{1:"M.5,.0667 L.5,.2667 M.5,.4 L.5,.6 M.5,.7333 L.5,.9333"},"┇":{3:"M.5,.0667 L.5,.2667 M.5,.4 L.5,.6 M.5,.7333 L.5,.9333"},"┊":{1:"M.5,.05 L.5,.2 M.5,.3 L.5,.45 L.5,.55 M.5,.7 L.5,.95"},"┋":{3:"M.5,.05 L.5,.2 M.5,.3 L.5,.45 L.5,.55 M.5,.7 L.5,.95"},"╭":{1:(t,e)=>`M.5,1 L.5,${.5+e/.15*.5} C.5,${.5+e/.15*.5},.5,.5,1,.5`},"╮":{1:(t,e)=>`M.5,1 L.5,${.5+e/.15*.5} C.5,${.5+e/.15*.5},.5,.5,0,.5`},"╯":{1:(t,e)=>`M.5,0 L.5,${.5-e/.15*.5} C.5,${.5-e/.15*.5},.5,.5,0,.5`},"╰":{1:(t,e)=>`M.5,0 L.5,${.5-e/.15*.5} C.5,${.5-e/.15*.5},.5,.5,1,.5`}},rd={"":{d:"M.3,1 L.03,1 L.03,.88 C.03,.82,.06,.78,.11,.73 C.15,.7,.2,.68,.28,.65 L.43,.6 C.49,.58,.53,.56,.56,.53 C.59,.5,.6,.47,.6,.43 L.6,.27 L.4,.27 L.69,.1 L.98,.27 L.78,.27 L.78,.46 C.78,.52,.76,.56,.72,.61 C.68,.66,.63,.67,.56,.7 L.48,.72 C.42,.74,.38,.76,.35,.78 C.32,.8,.31,.84,.31,.88 L.31,1 M.3,.5 L.03,.59 L.03,.09 L.3,.09 L.3,.655",type:0},"":{d:"M.7,.4 L.7,.47 L.2,.47 L.2,.03 L.355,.03 L.355,.4 L.705,.4 M.7,.5 L.86,.5 L.86,.95 L.69,.95 L.44,.66 L.46,.86 L.46,.95 L.3,.95 L.3,.49 L.46,.49 L.71,.78 L.69,.565 L.69,.5",type:0},"":{d:"M.25,.94 C.16,.94,.11,.92,.11,.87 L.11,.53 C.11,.48,.15,.455,.23,.45 L.23,.3 C.23,.25,.26,.22,.31,.19 C.36,.16,.43,.15,.51,.15 C.59,.15,.66,.16,.71,.19 C.77,.22,.79,.26,.79,.3 L.79,.45 C.87,.45,.91,.48,.91,.53 L.91,.87 C.91,.92,.86,.94,.77,.94 L.24,.94 M.53,.2 C.49,.2,.45,.21,.42,.23 C.39,.25,.38,.27,.38,.3 L.38,.45 L.68,.45 L.68,.3 C.68,.27,.67,.25,.64,.23 C.61,.21,.58,.2,.53,.2 M.58,.82 L.58,.66 C.63,.65,.65,.63,.65,.6 C.65,.58,.64,.57,.61,.56 C.58,.55,.56,.54,.52,.54 C.48,.54,.46,.55,.43,.56 C.4,.57,.39,.59,.39,.6 C.39,.63,.41,.64,.46,.66 L.46,.82 L.57,.82",type:0},"":{d:"M0,0 L1,.5 L0,1",type:0,rightPadding:2},"":{d:"M-1,-.5 L1,.5 L-1,1.5",type:1,leftPadding:1,rightPadding:1},"":{d:"M1,0 L0,.5 L1,1",type:0,leftPadding:2},"":{d:"M2,-.5 L0,.5 L2,1.5",type:1,leftPadding:1,rightPadding:1},"":{d:"M0,0 L0,1 C0.552,1,1,0.776,1,.5 C1,0.224,0.552,0,0,0",type:0,rightPadding:1},"":{d:"M.2,1 C.422,1,.8,.826,.78,.5 C.8,.174,0.422,0,.2,0",type:1,rightPadding:1},"":{d:"M1,0 L1,1 C0.448,1,0,0.776,0,.5 C0,0.224,0.448,0,1,0",type:0,leftPadding:1},"":{d:"M.8,1 C0.578,1,0.2,.826,.22,.5 C0.2,0.174,0.578,0,0.8,0",type:1,leftPadding:1},"":{d:"M-.5,-.5 L1.5,1.5 L-.5,1.5",type:0},"":{d:"M-.5,-.5 L1.5,1.5",type:1,leftPadding:1,rightPadding:1},"":{d:"M1.5,-.5 L-.5,1.5 L1.5,1.5",type:0},"":{d:"M1.5,-.5 L-.5,1.5 L-.5,-.5",type:0},"":{d:"M1.5,-.5 L-.5,1.5",type:1,leftPadding:1,rightPadding:1},"":{d:"M-.5,-.5 L1.5,1.5 L1.5,-.5",type:0}};rd[""]=rd[""];rd[""]=rd[""];function coe(t,e,i,n,r,s,o,l){let c=ooe[e];if(c)return hoe(t,c,i,n,r,s),!0;let u=aoe[e];if(u)return uoe(t,u,i,n,r,s),!0;let d=loe[e];if(d)return foe(t,d,i,n,r,s,l),!0;let p=rd[e];return p?(doe(t,p,i,n,r,s,o,l),!0):!1}function hoe(t,e,i,n,r,s){for(let o=0;o7&&parseInt(l.slice(7,9),16)||1;else if(l.startsWith("rgba"))[_,b,x,w]=l.substring(5,l.length-1).split(",").map(k=>parseFloat(k));else throw new Error(`Unexpected fillStyle color format "${l}" when drawing pattern glyph`);for(let k=0;kt.bezierCurveTo(e[0],e[1],e[2],e[3],e[4],e[5]),L:(t,e)=>t.lineTo(e[0],e[1]),M:(t,e)=>t.moveTo(e[0],e[1])};function Sz(t,e,i,n,r,s,o,l=0,c=0){let u=t.map(d=>parseFloat(d)||parseInt(d));if(u.length<2)throw new Error("Too few arguments for instruction");for(let d=0;dr){n-e<-20&&console.warn(`task queue exceeded allotted deadline by ${Math.abs(Math.round(n-e))}ms`),this._start();return}n=r}this.clear()}},poe=class extends xz{_requestCallback(t){return setTimeout(()=>t(this._createDeadline(16)))}_cancelCallback(t){clearTimeout(t)}_createDeadline(t){let e=performance.now()+t;return{timeRemaining:()=>Math.max(0,e-performance.now())}}},moe=class extends xz{_requestCallback(t){return requestIdleCallback(t)}_cancelCallback(t){cancelIdleCallback(t)}},goe=!Nw&&"requestIdleCallback"in window?moe:poe,Xc=class wz{constructor(){this.fg=0,this.bg=0,this.extended=new Cz}static toColorRGB(e){return[e>>>16&255,e>>>8&255,e&255]}static fromColorRGB(e){return(e[0]&255)<<16|(e[1]&255)<<8|e[2]&255}clone(){let e=new wz;return e.fg=this.fg,e.bg=this.bg,e.extended=this.extended.clone(),e}isInverse(){return this.fg&67108864}isBold(){return this.fg&134217728}isUnderline(){return this.hasExtendedAttrs()&&this.extended.underlineStyle!==0?1:this.fg&268435456}isBlink(){return this.fg&536870912}isInvisible(){return this.fg&1073741824}isItalic(){return this.bg&67108864}isDim(){return this.bg&134217728}isStrikethrough(){return this.fg&2147483648}isProtected(){return this.bg&536870912}isOverline(){return this.bg&1073741824}getFgColorMode(){return this.fg&50331648}getBgColorMode(){return this.bg&50331648}isFgRGB(){return(this.fg&50331648)===50331648}isBgRGB(){return(this.bg&50331648)===50331648}isFgPalette(){return(this.fg&50331648)===16777216||(this.fg&50331648)===33554432}isBgPalette(){return(this.bg&50331648)===16777216||(this.bg&50331648)===33554432}isFgDefault(){return(this.fg&50331648)===0}isBgDefault(){return(this.bg&50331648)===0}isAttributeDefault(){return this.fg===0&&this.bg===0}getFgColor(){switch(this.fg&50331648){case 16777216:case 33554432:return this.fg&255;case 50331648:return this.fg&16777215;default:return-1}}getBgColor(){switch(this.bg&50331648){case 16777216:case 33554432:return this.bg&255;case 50331648:return this.bg&16777215;default:return-1}}hasExtendedAttrs(){return this.bg&268435456}updateExtended(){this.extended.isEmpty()?this.bg&=-268435457:this.bg|=268435456}getUnderlineColor(){if(this.bg&268435456&&~this.extended.underlineColor)switch(this.extended.underlineColor&50331648){case 16777216:case 33554432:return this.extended.underlineColor&255;case 50331648:return this.extended.underlineColor&16777215;default:return this.getFgColor()}return this.getFgColor()}getUnderlineColorMode(){return this.bg&268435456&&~this.extended.underlineColor?this.extended.underlineColor&50331648:this.getFgColorMode()}isUnderlineColorRGB(){return this.bg&268435456&&~this.extended.underlineColor?(this.extended.underlineColor&50331648)===50331648:this.isFgRGB()}isUnderlineColorPalette(){return this.bg&268435456&&~this.extended.underlineColor?(this.extended.underlineColor&50331648)===16777216||(this.extended.underlineColor&50331648)===33554432:this.isFgPalette()}isUnderlineColorDefault(){return this.bg&268435456&&~this.extended.underlineColor?(this.extended.underlineColor&50331648)===0:this.isFgDefault()}getUnderlineStyle(){return this.fg&268435456?this.bg&268435456?this.extended.underlineStyle:1:0}getUnderlineVariantOffset(){return this.extended.underlineVariantOffset}},Cz=class kz{constructor(e=0,i=0){this._ext=0,this._urlId=0,this._ext=e,this._urlId=i}get ext(){return this._urlId?this._ext&-469762049|this.underlineStyle<<26:this._ext}set ext(e){this._ext=e}get underlineStyle(){return this._urlId?5:(this._ext&469762048)>>26}set underlineStyle(e){this._ext&=-469762049,this._ext|=e<<26&469762048}get underlineColor(){return this._ext&67108863}set underlineColor(e){this._ext&=-67108864,this._ext|=e&67108863}get urlId(){return this._urlId}set urlId(e){this._urlId=e}get underlineVariantOffset(){let e=(this._ext&3758096384)>>29;return e<0?e^4294967288:e}set underlineVariantOffset(e){this._ext&=536870911,this._ext|=e<<29&3758096384}clone(){return new kz(this._ext,this._urlId)}isEmpty(){return this.underlineStyle===0&&this._urlId===0}},Ooe=globalThis.performance&&typeof globalThis.performance.now=="function",voe=class Tz{static create(e){return new Tz(e)}constructor(e){this._now=Ooe&&e===!1?Date.now:globalThis.performance.now.bind(globalThis.performance),this._startTime=this._now(),this._stopTime=-1}stop(){this._stopTime=this._now()}reset(){this._startTime=this._now(),this._stopTime=-1}elapsed(){return this._stopTime!==-1?this._stopTime-this._startTime:this._now()-this._startTime}},po;(t=>{t.None=()=>Fr.None;function e(R,B){return p(R,()=>{},0,void 0,!0,void 0,B)}t.defer=e;function i(R){return(B,j=null,$)=>{let D=!1,X;return X=R(H=>{if(!D)return X?X.dispose():D=!0,B.call(j,H)},null,$),D&&X.dispose(),X}}t.once=i;function n(R,B,j){return u(($,D=null,X)=>R(H=>$.call(D,B(H)),null,X),j)}t.map=n;function r(R,B,j){return u(($,D=null,X)=>R(H=>{B(H),$.call(D,H)},null,X),j)}t.forEach=r;function s(R,B,j){return u(($,D=null,X)=>R(H=>B(H)&&$.call(D,H),null,X),j)}t.filter=s;function o(R){return R}t.signal=o;function l(...R){return(B,j=null,$)=>{let D=mz(...R.map(X=>X(H=>B.call(j,H))));return d(D,$)}}t.any=l;function c(R,B,j,$){let D=j;return n(R,X=>(D=B(D,X),D),$)}t.reduce=c;function u(R,B){let j,$={onWillAddFirstListener(){j=R(D.fire,D)},onDidRemoveLastListener(){j==null||j.dispose()}},D=new Rt($);return B==null||B.add(D),D.event}function d(R,B){return B instanceof Array?B.push(R):B&&B.add(R),R}function p(R,B,j=100,$=!1,D=!1,X,H){let F,M,I,K=0,L,ue={leakWarningThreshold:X,onWillAddFirstListener(){F=R(fe=>{K++,M=B(M,fe),$&&!I&&(he.fire(M),M=void 0),L=()=>{let Oe=M;M=void 0,I=void 0,(!$||K>1)&&he.fire(Oe),K=0},typeof j=="number"?(clearTimeout(I),I=setTimeout(L,j)):I===void 0&&(I=0,queueMicrotask(L))})},onWillRemoveListener(){D&&K>0&&(L==null||L())},onDidRemoveLastListener(){L=void 0,F.dispose()}},he=new Rt(ue);return H==null||H.add(he),he.event}t.debounce=p;function g(R,B=0,j){return t.debounce(R,($,D)=>$?($.push(D),$):[D],B,void 0,!0,void 0,j)}t.accumulate=g;function O(R,B=($,D)=>$===D,j){let $=!0,D;return s(R,X=>{let H=$||!B(X,D);return $=!1,D=X,H},j)}t.latch=O;function _(R,B,j){return[t.filter(R,B,j),t.filter(R,$=>!B($),j)]}t.split=_;function b(R,B=!1,j=[],$){let D=j.slice(),X=R(M=>{D?D.push(M):F.fire(M)});$&&$.add(X);let H=()=>{D==null||D.forEach(M=>F.fire(M)),D=null},F=new Rt({onWillAddFirstListener(){X||(X=R(M=>F.fire(M)),$&&$.add(X))},onDidAddFirstListener(){D&&(B?setTimeout(H):H())},onDidRemoveLastListener(){X&&X.dispose(),X=null}});return $&&$.add(F),F.event}t.buffer=b;function x(R,B){return(j,$,D)=>{let X=B(new k);return R(function(H){let F=X.evaluate(H);F!==w&&j.call($,F)},void 0,D)}}t.chain=x;let w=Symbol("HaltChainable");class k{constructor(){this.steps=[]}map(B){return this.steps.push(B),this}forEach(B){return this.steps.push(j=>(B(j),j)),this}filter(B){return this.steps.push(j=>B(j)?j:w),this}reduce(B,j){let $=j;return this.steps.push(D=>($=B($,D),$)),this}latch(B=(j,$)=>j===$){let j=!0,$;return this.steps.push(D=>{let X=j||!B(D,$);return j=!1,$=D,X?D:w}),this}evaluate(B){for(let j of this.steps)if(B=j(B),B===w)break;return B}}function T(R,B,j=$=>$){let $=(...F)=>H.fire(j(...F)),D=()=>R.on(B,$),X=()=>R.removeListener(B,$),H=new Rt({onWillAddFirstListener:D,onDidRemoveLastListener:X});return H.event}t.fromNodeEventEmitter=T;function A(R,B,j=$=>$){let $=(...F)=>H.fire(j(...F)),D=()=>R.addEventListener(B,$),X=()=>R.removeEventListener(B,$),H=new Rt({onWillAddFirstListener:D,onDidRemoveLastListener:X});return H.event}t.fromDOMEventEmitter=A;function Q(R){return new Promise(B=>i(R)(B))}t.toPromise=Q;function E(R){let B=new Rt;return R.then(j=>{B.fire(j)},()=>{B.fire(void 0)}).finally(()=>{B.dispose()}),B.event}t.fromPromise=E;function z(R,B){return R(j=>B.fire(j))}t.forward=z;function N(R,B,j){return B(j),R($=>B($))}t.runAndSubscribe=N;class q{constructor(B,j){this._observable=B,this._counter=0,this._hasChanged=!1;let $={onWillAddFirstListener:()=>{B.addObserver(this)},onDidRemoveLastListener:()=>{B.removeObserver(this)}};this.emitter=new Rt($),j&&j.add(this.emitter)}beginUpdate(B){this._counter++}handlePossibleChange(B){}handleChange(B,j){this._hasChanged=!0}endUpdate(B){this._counter--,this._counter===0&&(this._observable.reportChanges(),this._hasChanged&&(this._hasChanged=!1,this.emitter.fire(this._observable.get())))}}function J(R,B){return new q(R,B).emitter.event}t.fromObservable=J;function U(R){return(B,j,$)=>{let D=0,X=!1,H={beginUpdate(){D++},endUpdate(){D--,D===0&&(R.reportChanges(),X&&(X=!1,B.call(j)))},handlePossibleChange(){},handleChange(){X=!0}};R.addObserver(H),R.reportChanges();let F={dispose(){R.removeObserver(H)}};return $ instanceof eh?$.add(F):Array.isArray($)&&$.push(F),F}}t.fromObservableLight=U})(po||(po={}));var PS=class RS{constructor(e){this.listenerCount=0,this.invocationCount=0,this.elapsedOverall=0,this.durations=[],this.name=`${e}_${RS._idPool++}`,RS.all.add(this)}start(e){this._stopWatch=new voe,this.listenerCount=e}stop(){if(this._stopWatch){let e=this._stopWatch.elapsed();this.durations.push(e),this.elapsedOverall+=e,this.invocationCount+=1,this._stopWatch=void 0}}};PS.all=new Set,PS._idPool=0;var _oe=PS,yoe=-1,Az=class Ez{constructor(e,i,n=(Ez._idPool++).toString(16).padStart(3,"0")){this._errorHandler=e,this.threshold=i,this.name=n,this._warnCountdown=0}dispose(){var e;(e=this._stacks)==null||e.clear()}check(e,i){let n=this.threshold;if(n<=0||i{let s=this._stacks.get(e.value)||0;this._stacks.set(e.value,s-1)}}getMostFrequentStack(){if(!this._stacks)return;let e,i=0;for(let[n,r]of this._stacks)(!e||i{this._removeListener(t)}}emit(t){this.listeners.forEach(e=>{e(t)})}_removeListener(t){this.listeners.splice(this.listeners.indexOf(t),1)}setUnexpectedErrorHandler(t){this.unexpectedErrorHandler=t}getUnexpectedErrorHandler(){return this.unexpectedErrorHandler}onUnexpectedError(t){this.unexpectedErrorHandler(t),this.emit(t)}onUnexpectedExternalError(t){this.unexpectedErrorHandler(t)}},jre=new zre;function Wy(t){Ire(t)||jre.onUnexpectedError(t)}var ES="Canceled";function Ire(t){return t instanceof Vre?!0:t instanceof Error&&t.name===ES&&t.message===ES}var Vre=class extends Error{constructor(){super(ES),this.name=this.message}},BR=class MS extends Error{constructor(e){super(e),this.name="CodeExpectedError"}static fromError(e){if(e instanceof MS)return e;let i=new MS;return i.message=e.message,i.stack=e.stack,i}static isErrorNoTelemetry(e){return e.name==="CodeExpectedError"}},Xre;(t=>{function e(r){return r<0}t.isLessThan=e;function i(r){return r<=0}t.isLessThanOrEqual=i;function n(r){return r>0}t.isGreaterThan=n;function s(r){return r===0}t.isNeitherLessOrGreaterThan=s,t.greaterThan=1,t.lessThan=-1,t.neitherLessOrGreaterThan=0})(Xre||(Xre={}));function Zre(t,e){let i=this,n=!1,s;return function(){return n||(n=!0,e||(s=t.apply(i,arguments))),s}}var dN;(t=>{function e(A){return A&&typeof A=="object"&&typeof A[Symbol.iterator]=="function"}t.is=e;let i=Object.freeze([]);function n(){return i}t.empty=n;function*s(A){yield A}t.single=s;function r(A){return e(A)?A:s(A)}t.wrap=r;function o(A){return A||i}t.from=o;function*l(A){for(let Q=A.length-1;Q>=0;Q--)yield A[Q]}t.reverse=l;function c(A){return!A||A[Symbol.iterator]().next().done===!0}t.isEmpty=c;function u(A){return A[Symbol.iterator]().next().value}t.first=u;function d(A,Q){let E=0;for(let N of A)if(Q(N,E++))return!0;return!1}t.some=d;function p(A,Q){for(let E of A)if(Q(E))return E}t.find=p;function*g(A,Q){for(let E of A)Q(E)&&(yield E)}t.filter=g;function*O(A,Q){let E=0;for(let N of A)yield Q(N,E++)}t.map=O;function*_(A,Q){let E=0;for(let N of A)yield*Q(N,E++)}t.flatMap=_;function*b(...A){for(let Q of A)yield*Q}t.concat=b;function x(A,Q,E){let N=E;for(let z of A)N=Q(N,z);return N}t.reduce=x;function*w(A,Q,E=A.length){for(Q<0&&(Q+=A.length),E<0?E+=A.length:E>A.length&&(E=A.length);Q1)throw new AggregateError(e,"Encountered errors while disposing of store");return Array.isArray(t)?[]:t}else if(t)return t.dispose(),t}function mN(...t){return sn(()=>pN(t))}function sn(t){return{dispose:Zre(()=>{t()})}}var gN=class ON{constructor(){this._toDispose=new Set,this._isDisposed=!1}dispose(){this._isDisposed||(this._isDisposed=!0,this.clear())}get isDisposed(){return this._isDisposed}clear(){if(this._toDispose.size!==0)try{pN(this._toDispose)}finally{this._toDispose.clear()}}add(e){if(!e)return e;if(e===this)throw new Error("Cannot register a disposable on itself!");return this._isDisposed?ON.DISABLE_DISPOSED_WARNING||console.warn(new Error("Trying to add a disposable to a DisposableStore that has already been disposed of. The added object will be leaked!").stack):this._toDispose.add(e),e}delete(e){if(e){if(e===this)throw new Error("Cannot dispose a disposable on itself!");this._toDispose.delete(e),e.dispose()}}deleteAndLeak(e){e&&this._toDispose.has(e)&&(this._toDispose.delete(e),void 0)}};gN.DISABLE_DISPOSED_WARNING=!1;var eh=gN,Fs=class{constructor(){this._store=new eh,this._store}dispose(){this._store.dispose()}_register(e){if(e===this)throw new Error("Cannot register a disposable on itself!");return this._store.add(e)}};Fs.None=Object.freeze({dispose(){}});var Iu=class{constructor(){this._isDisposed=!1}get value(){return this._isDisposed?void 0:this._value}set value(t){var e;this._isDisposed||t===this._value||((e=this._value)==null||e.dispose(),this._value=t)}clear(){this.value=void 0}dispose(){var t;this._isDisposed=!0,(t=this._value)==null||t.dispose(),this._value=void 0}clearAndLeak(){let t=this._value;return this._value=void 0,t}},zw=typeof process<"u"&&"title"in process,MO=zw?"node":navigator.userAgent,qre=zw?"node":navigator.platform,Wre=MO.includes("Firefox"),Ure=MO.includes("Edge"),vN=/^((?!chrome|android).)*safari/i.test(MO);function Yre(){if(!vN)return 0;let t=MO.match(/Version\/(\d+)/);return t===null||t.length<2?0:parseInt(t[1])}qre.indexOf("Linux")>=0;var Hre="",Ai=0,Ei=0,Mi=0,qt=0,ys={css:"#00000000",rgba:0},gn;(t=>{function e(s,r,o,l){return l!==void 0?`#${sl(s)}${sl(r)}${sl(o)}${sl(l)}`:`#${sl(s)}${sl(r)}${sl(o)}`}t.toCss=e;function i(s,r,o,l=255){return(s<<24|r<<16|o<<8|l)>>>0}t.toRgba=i;function n(s,r,o,l){return{css:t.toCss(s,r,o,l),rgba:t.toRgba(s,r,o,l)}}t.toColor=n})(gn||(gn={}));var af;(t=>{function e(c,u){if(qt=(u.rgba&255)/255,qt===1)return{css:u.css,rgba:u.rgba};let d=u.rgba>>24&255,p=u.rgba>>16&255,g=u.rgba>>8&255,O=c.rgba>>24&255,_=c.rgba>>16&255,b=c.rgba>>8&255;Ai=O+Math.round((d-O)*qt),Ei=_+Math.round((p-_)*qt),Mi=b+Math.round((g-b)*qt);let x=gn.toCss(Ai,Ei,Mi),w=gn.toRgba(Ai,Ei,Mi);return{css:x,rgba:w}}t.blend=e;function i(c){return(c.rgba&255)===255}t.isOpaque=i;function n(c,u,d){let p=Cl.ensureContrastRatio(c.rgba,u.rgba,d);if(p)return gn.toColor(p>>24&255,p>>16&255,p>>8&255)}t.ensureContrastRatio=n;function s(c){let u=(c.rgba|255)>>>0;return[Ai,Ei,Mi]=Cl.toChannels(u),{css:gn.toCss(Ai,Ei,Mi),rgba:u}}t.opaque=s;function r(c,u){return qt=Math.round(u*255),[Ai,Ei,Mi]=Cl.toChannels(c.rgba),{css:gn.toCss(Ai,Ei,Mi,qt),rgba:gn.toRgba(Ai,Ei,Mi,qt)}}t.opacity=r;function o(c,u){return qt=c.rgba&255,r(c,qt*u/255)}t.multiplyOpacity=o;function l(c){return[c.rgba>>24&255,c.rgba>>16&255,c.rgba>>8&255]}t.toColorRGB=l})(af||(af={}));var Fre;(t=>{let e,i;try{let s=document.createElement("canvas");s.width=1,s.height=1;let r=s.getContext("2d",{willReadFrequently:!0});r&&(e=r,e.globalCompositeOperation="copy",i=e.createLinearGradient(0,0,1,1))}catch{}function n(s){if(s.match(/#[\da-f]{3,8}/i))switch(s.length){case 4:return Ai=parseInt(s.slice(1,2).repeat(2),16),Ei=parseInt(s.slice(2,3).repeat(2),16),Mi=parseInt(s.slice(3,4).repeat(2),16),gn.toColor(Ai,Ei,Mi);case 5:return Ai=parseInt(s.slice(1,2).repeat(2),16),Ei=parseInt(s.slice(2,3).repeat(2),16),Mi=parseInt(s.slice(3,4).repeat(2),16),qt=parseInt(s.slice(4,5).repeat(2),16),gn.toColor(Ai,Ei,Mi,qt);case 7:return{css:s,rgba:(parseInt(s.slice(1),16)<<8|255)>>>0};case 9:return{css:s,rgba:parseInt(s.slice(1),16)>>>0}}let r=s.match(/rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(,\s*(0|1|\d?\.(\d+))\s*)?\)/);if(r)return Ai=parseInt(r[1]),Ei=parseInt(r[2]),Mi=parseInt(r[3]),qt=Math.round((r[5]===void 0?1:parseFloat(r[5]))*255),gn.toColor(Ai,Ei,Mi,qt);if(!e||!i)throw new Error("css.toColor: Unsupported css format");if(e.fillStyle=i,e.fillStyle=s,typeof e.fillStyle!="string")throw new Error("css.toColor: Unsupported css format");if(e.fillRect(0,0,1,1),[Ai,Ei,Mi,qt]=e.getImageData(0,0,1,1).data,qt!==255)throw new Error("css.toColor: Unsupported css format");return{rgba:gn.toRgba(Ai,Ei,Mi,qt),css:s}}t.toColor=n})(Fre||(Fre={}));var dn;(t=>{function e(n){return i(n>>16&255,n>>8&255,n&255)}t.relativeLuminance=e;function i(n,s,r){let o=n/255,l=s/255,c=r/255,u=o<=.03928?o/12.92:Math.pow((o+.055)/1.055,2.4),d=l<=.03928?l/12.92:Math.pow((l+.055)/1.055,2.4),p=c<=.03928?c/12.92:Math.pow((c+.055)/1.055,2.4);return u*.2126+d*.7152+p*.0722}t.relativeLuminance2=i})(dn||(dn={}));var Cl;(t=>{function e(o,l){if(qt=(l&255)/255,qt===1)return l;let c=l>>24&255,u=l>>16&255,d=l>>8&255,p=o>>24&255,g=o>>16&255,O=o>>8&255;return Ai=p+Math.round((c-p)*qt),Ei=g+Math.round((u-g)*qt),Mi=O+Math.round((d-O)*qt),gn.toRgba(Ai,Ei,Mi)}t.blend=e;function i(o,l,c){let u=dn.relativeLuminance(o>>8),d=dn.relativeLuminance(l>>8);if(oo(u,d)>8));if(_>8));return _>x?O:b}return O}let p=s(o,l,c),g=oo(u,dn.relativeLuminance(p>>8));if(g>8));return g>_?p:O}return p}}t.ensureContrastRatio=i;function n(o,l,c){let u=o>>24&255,d=o>>16&255,p=o>>8&255,g=l>>24&255,O=l>>16&255,_=l>>8&255,b=oo(dn.relativeLuminance2(g,O,_),dn.relativeLuminance2(u,d,p));for(;b0||O>0||_>0);)g-=Math.max(0,Math.ceil(g*.1)),O-=Math.max(0,Math.ceil(O*.1)),_-=Math.max(0,Math.ceil(_*.1)),b=oo(dn.relativeLuminance2(g,O,_),dn.relativeLuminance2(u,d,p));return(g<<24|O<<16|_<<8|255)>>>0}t.reduceLuminance=n;function s(o,l,c){let u=o>>24&255,d=o>>16&255,p=o>>8&255,g=l>>24&255,O=l>>16&255,_=l>>8&255,b=oo(dn.relativeLuminance2(g,O,_),dn.relativeLuminance2(u,d,p));for(;b>>0}t.increaseLuminance=s;function r(o){return[o>>24&255,o>>16&255,o>>8&255,o&255]}t.toChannels=r})(Cl||(Cl={}));function sl(t){let e=t.toString(16);return e.length<2?"0"+e:e}function oo(t,e){return t=128512&&t<=128591||t>=127744&&t<=128511||t>=128640&&t<=128767||t>=9728&&t<=9983||t>=9984&&t<=10175||t>=65024&&t<=65039||t>=129280&&t<=129535||t>=127462&&t<=127487}function toe(t,e,i,n){return e===1&&i>Math.ceil(n*1.5)&&t!==void 0&&t>255&&!eoe(t)&&!jw(t)&&!Kre(t)}function _N(t){return jw(t)||Jre(t)}function ioe(){return{css:{canvas:Am(),cell:Am()},device:{canvas:Am(),cell:Am(),char:{width:0,height:0,left:0,top:0}}}}function Am(){return{width:0,height:0}}function noe(t,e,i=0){return(t-(Math.round(e)*2-i))%(Math.round(e)*2)}var Xi=0,xi=0,hr=!1,ao=!1,Em=!1,Pn,Uy=0,soe=class{constructor(t,e,i,n,s,r){this._terminal=t,this._optionService=e,this._selectionRenderModel=i,this._decorationService=n,this._coreBrowserService=s,this._themeService=r,this.result={fg:0,bg:0,ext:0}}resolve(t,e,i,n){if(this.result.bg=t.bg,this.result.fg=t.fg,this.result.ext=t.bg&268435456?t.extended.ext:0,xi=0,Xi=0,ao=!1,hr=!1,Em=!1,Pn=this._themeService.colors,Uy=0,t.getCode()!==0&&t.extended.underlineStyle===4){let s=Math.max(1,Math.floor(this._optionService.rawOptions.fontSize*this._coreBrowserService.dpr/15));Uy=e*n%(Math.round(s)*2)}if(this._decorationService.forEachDecorationAtCell(e,i,"bottom",s=>{s.backgroundColorRGB&&(xi=s.backgroundColorRGB.rgba>>8&16777215,ao=!0),s.foregroundColorRGB&&(Xi=s.foregroundColorRGB.rgba>>8&16777215,hr=!0)}),Em=this._selectionRenderModel.isCellSelected(this._terminal,e,i),Em){if(this.result.fg&67108864||(this.result.bg&50331648)!==0){if(this.result.fg&67108864)switch(this.result.fg&50331648){case 16777216:case 33554432:xi=this._themeService.colors.ansi[this.result.fg&255].rgba;break;case 50331648:xi=(this.result.fg&16777215)<<8|255;break;case 0:default:xi=this._themeService.colors.foreground.rgba}else switch(this.result.bg&50331648){case 16777216:case 33554432:xi=this._themeService.colors.ansi[this.result.bg&255].rgba;break;case 50331648:xi=(this.result.bg&16777215)<<8|255;break}xi=Cl.blend(xi,(this._coreBrowserService.isFocused?Pn.selectionBackgroundOpaque:Pn.selectionInactiveBackgroundOpaque).rgba&4294967040|128)>>8&16777215}else xi=(this._coreBrowserService.isFocused?Pn.selectionBackgroundOpaque:Pn.selectionInactiveBackgroundOpaque).rgba>>8&16777215;if(ao=!0,Pn.selectionForeground&&(Xi=Pn.selectionForeground.rgba>>8&16777215,hr=!0),_N(t.getCode())){if(this.result.fg&67108864&&(this.result.bg&50331648)===0)Xi=(this._coreBrowserService.isFocused?Pn.selectionBackgroundOpaque:Pn.selectionInactiveBackgroundOpaque).rgba>>8&16777215;else{if(this.result.fg&67108864)switch(this.result.bg&50331648){case 16777216:case 33554432:Xi=this._themeService.colors.ansi[this.result.bg&255].rgba;break;case 50331648:Xi=(this.result.bg&16777215)<<8|255;break}else switch(this.result.fg&50331648){case 16777216:case 33554432:Xi=this._themeService.colors.ansi[this.result.fg&255].rgba;break;case 50331648:Xi=(this.result.fg&16777215)<<8|255;break;case 0:default:Xi=this._themeService.colors.foreground.rgba}Xi=Cl.blend(Xi,(this._coreBrowserService.isFocused?Pn.selectionBackgroundOpaque:Pn.selectionInactiveBackgroundOpaque).rgba&4294967040|128)>>8&16777215}hr=!0}}this._decorationService.forEachDecorationAtCell(e,i,"top",s=>{s.backgroundColorRGB&&(xi=s.backgroundColorRGB.rgba>>8&16777215,ao=!0),s.foregroundColorRGB&&(Xi=s.foregroundColorRGB.rgba>>8&16777215,hr=!0)}),ao&&(Em?xi=t.bg&-16777216&-134217729|xi|50331648:xi=t.bg&-16777216|xi|50331648),hr&&(Xi=t.fg&-16777216&-67108865|Xi|50331648),this.result.fg&67108864&&(ao&&!hr&&((this.result.bg&50331648)===0?Xi=this.result.fg&-134217728|Pn.background.rgba>>8&16777215&16777215|50331648:Xi=this.result.fg&-134217728|this.result.bg&67108863,hr=!0),!ao&&hr&&((this.result.fg&50331648)===0?xi=this.result.bg&-67108864|Pn.foreground.rgba>>8&16777215&16777215|50331648:xi=this.result.bg&-67108864|this.result.fg&67108863,ao=!0)),Pn=void 0,this.result.bg=ao?xi:this.result.bg,this.result.fg=hr?Xi:this.result.fg,this.result.ext&=536870911,this.result.ext|=Uy<<29&3758096384}},roe=.5,yN=Wre||Ure?"bottom":"ideographic",ooe={"▀":[{x:0,y:0,w:8,h:4}],"▁":[{x:0,y:7,w:8,h:1}],"▂":[{x:0,y:6,w:8,h:2}],"▃":[{x:0,y:5,w:8,h:3}],"▄":[{x:0,y:4,w:8,h:4}],"▅":[{x:0,y:3,w:8,h:5}],"▆":[{x:0,y:2,w:8,h:6}],"▇":[{x:0,y:1,w:8,h:7}],"█":[{x:0,y:0,w:8,h:8}],"▉":[{x:0,y:0,w:7,h:8}],"▊":[{x:0,y:0,w:6,h:8}],"▋":[{x:0,y:0,w:5,h:8}],"▌":[{x:0,y:0,w:4,h:8}],"▍":[{x:0,y:0,w:3,h:8}],"▎":[{x:0,y:0,w:2,h:8}],"▏":[{x:0,y:0,w:1,h:8}],"▐":[{x:4,y:0,w:4,h:8}],"▔":[{x:0,y:0,w:8,h:1}],"▕":[{x:7,y:0,w:1,h:8}],"▖":[{x:0,y:4,w:4,h:4}],"▗":[{x:4,y:4,w:4,h:4}],"▘":[{x:0,y:0,w:4,h:4}],"▙":[{x:0,y:0,w:4,h:8},{x:0,y:4,w:8,h:4}],"▚":[{x:0,y:0,w:4,h:4},{x:4,y:4,w:4,h:4}],"▛":[{x:0,y:0,w:4,h:8},{x:4,y:0,w:4,h:4}],"▜":[{x:0,y:0,w:8,h:4},{x:4,y:0,w:4,h:8}],"▝":[{x:4,y:0,w:4,h:4}],"▞":[{x:4,y:0,w:4,h:4},{x:0,y:4,w:4,h:4}],"▟":[{x:4,y:0,w:4,h:8},{x:0,y:4,w:8,h:4}],"🭰":[{x:1,y:0,w:1,h:8}],"🭱":[{x:2,y:0,w:1,h:8}],"🭲":[{x:3,y:0,w:1,h:8}],"🭳":[{x:4,y:0,w:1,h:8}],"🭴":[{x:5,y:0,w:1,h:8}],"🭵":[{x:6,y:0,w:1,h:8}],"🭶":[{x:0,y:1,w:8,h:1}],"🭷":[{x:0,y:2,w:8,h:1}],"🭸":[{x:0,y:3,w:8,h:1}],"🭹":[{x:0,y:4,w:8,h:1}],"🭺":[{x:0,y:5,w:8,h:1}],"🭻":[{x:0,y:6,w:8,h:1}],"🭼":[{x:0,y:0,w:1,h:8},{x:0,y:7,w:8,h:1}],"🭽":[{x:0,y:0,w:1,h:8},{x:0,y:0,w:8,h:1}],"🭾":[{x:7,y:0,w:1,h:8},{x:0,y:0,w:8,h:1}],"🭿":[{x:7,y:0,w:1,h:8},{x:0,y:7,w:8,h:1}],"🮀":[{x:0,y:0,w:8,h:1},{x:0,y:7,w:8,h:1}],"🮁":[{x:0,y:0,w:8,h:1},{x:0,y:2,w:8,h:1},{x:0,y:4,w:8,h:1},{x:0,y:7,w:8,h:1}],"🮂":[{x:0,y:0,w:8,h:2}],"🮃":[{x:0,y:0,w:8,h:3}],"🮄":[{x:0,y:0,w:8,h:5}],"🮅":[{x:0,y:0,w:8,h:6}],"🮆":[{x:0,y:0,w:8,h:7}],"🮇":[{x:6,y:0,w:2,h:8}],"🮈":[{x:5,y:0,w:3,h:8}],"🮉":[{x:3,y:0,w:5,h:8}],"🮊":[{x:2,y:0,w:6,h:8}],"🮋":[{x:1,y:0,w:7,h:8}],"🮕":[{x:0,y:0,w:2,h:2},{x:4,y:0,w:2,h:2},{x:2,y:2,w:2,h:2},{x:6,y:2,w:2,h:2},{x:0,y:4,w:2,h:2},{x:4,y:4,w:2,h:2},{x:2,y:6,w:2,h:2},{x:6,y:6,w:2,h:2}],"🮖":[{x:2,y:0,w:2,h:2},{x:6,y:0,w:2,h:2},{x:0,y:2,w:2,h:2},{x:4,y:2,w:2,h:2},{x:2,y:4,w:2,h:2},{x:6,y:4,w:2,h:2},{x:0,y:6,w:2,h:2},{x:4,y:6,w:2,h:2}],"🮗":[{x:0,y:2,w:8,h:2},{x:0,y:6,w:8,h:2}]},aoe={"░":[[1,0,0,0],[0,0,0,0],[0,0,1,0],[0,0,0,0]],"▒":[[1,0],[0,0],[0,1],[0,0]],"▓":[[0,1],[1,1],[1,0],[1,1]]},loe={"─":{1:"M0,.5 L1,.5"},"━":{3:"M0,.5 L1,.5"},"│":{1:"M.5,0 L.5,1"},"┃":{3:"M.5,0 L.5,1"},"┌":{1:"M0.5,1 L.5,.5 L1,.5"},"┏":{3:"M0.5,1 L.5,.5 L1,.5"},"┐":{1:"M0,.5 L.5,.5 L.5,1"},"┓":{3:"M0,.5 L.5,.5 L.5,1"},"└":{1:"M.5,0 L.5,.5 L1,.5"},"┗":{3:"M.5,0 L.5,.5 L1,.5"},"┘":{1:"M.5,0 L.5,.5 L0,.5"},"┛":{3:"M.5,0 L.5,.5 L0,.5"},"├":{1:"M.5,0 L.5,1 M.5,.5 L1,.5"},"┣":{3:"M.5,0 L.5,1 M.5,.5 L1,.5"},"┤":{1:"M.5,0 L.5,1 M.5,.5 L0,.5"},"┫":{3:"M.5,0 L.5,1 M.5,.5 L0,.5"},"┬":{1:"M0,.5 L1,.5 M.5,.5 L.5,1"},"┳":{3:"M0,.5 L1,.5 M.5,.5 L.5,1"},"┴":{1:"M0,.5 L1,.5 M.5,.5 L.5,0"},"┻":{3:"M0,.5 L1,.5 M.5,.5 L.5,0"},"┼":{1:"M0,.5 L1,.5 M.5,0 L.5,1"},"╋":{3:"M0,.5 L1,.5 M.5,0 L.5,1"},"╴":{1:"M.5,.5 L0,.5"},"╸":{3:"M.5,.5 L0,.5"},"╵":{1:"M.5,.5 L.5,0"},"╹":{3:"M.5,.5 L.5,0"},"╶":{1:"M.5,.5 L1,.5"},"╺":{3:"M.5,.5 L1,.5"},"╷":{1:"M.5,.5 L.5,1"},"╻":{3:"M.5,.5 L.5,1"},"═":{1:(t,e)=>`M0,${.5-e} L1,${.5-e} M0,${.5+e} L1,${.5+e}`},"║":{1:(t,e)=>`M${.5-t},0 L${.5-t},1 M${.5+t},0 L${.5+t},1`},"╒":{1:(t,e)=>`M.5,1 L.5,${.5-e} L1,${.5-e} M.5,${.5+e} L1,${.5+e}`},"╓":{1:(t,e)=>`M${.5-t},1 L${.5-t},.5 L1,.5 M${.5+t},.5 L${.5+t},1`},"╔":{1:(t,e)=>`M1,${.5-e} L${.5-t},${.5-e} L${.5-t},1 M1,${.5+e} L${.5+t},${.5+e} L${.5+t},1`},"╕":{1:(t,e)=>`M0,${.5-e} L.5,${.5-e} L.5,1 M0,${.5+e} L.5,${.5+e}`},"╖":{1:(t,e)=>`M${.5+t},1 L${.5+t},.5 L0,.5 M${.5-t},.5 L${.5-t},1`},"╗":{1:(t,e)=>`M0,${.5+e} L${.5-t},${.5+e} L${.5-t},1 M0,${.5-e} L${.5+t},${.5-e} L${.5+t},1`},"╘":{1:(t,e)=>`M.5,0 L.5,${.5+e} L1,${.5+e} M.5,${.5-e} L1,${.5-e}`},"╙":{1:(t,e)=>`M1,.5 L${.5-t},.5 L${.5-t},0 M${.5+t},.5 L${.5+t},0`},"╚":{1:(t,e)=>`M1,${.5-e} L${.5+t},${.5-e} L${.5+t},0 M1,${.5+e} L${.5-t},${.5+e} L${.5-t},0`},"╛":{1:(t,e)=>`M0,${.5+e} L.5,${.5+e} L.5,0 M0,${.5-e} L.5,${.5-e}`},"╜":{1:(t,e)=>`M0,.5 L${.5+t},.5 L${.5+t},0 M${.5-t},.5 L${.5-t},0`},"╝":{1:(t,e)=>`M0,${.5-e} L${.5-t},${.5-e} L${.5-t},0 M0,${.5+e} L${.5+t},${.5+e} L${.5+t},0`},"╞":{1:(t,e)=>`M.5,0 L.5,1 M.5,${.5-e} L1,${.5-e} M.5,${.5+e} L1,${.5+e}`},"╟":{1:(t,e)=>`M${.5-t},0 L${.5-t},1 M${.5+t},0 L${.5+t},1 M${.5+t},.5 L1,.5`},"╠":{1:(t,e)=>`M${.5-t},0 L${.5-t},1 M1,${.5+e} L${.5+t},${.5+e} L${.5+t},1 M1,${.5-e} L${.5+t},${.5-e} L${.5+t},0`},"╡":{1:(t,e)=>`M.5,0 L.5,1 M0,${.5-e} L.5,${.5-e} M0,${.5+e} L.5,${.5+e}`},"╢":{1:(t,e)=>`M0,.5 L${.5-t},.5 M${.5-t},0 L${.5-t},1 M${.5+t},0 L${.5+t},1`},"╣":{1:(t,e)=>`M${.5+t},0 L${.5+t},1 M0,${.5+e} L${.5-t},${.5+e} L${.5-t},1 M0,${.5-e} L${.5-t},${.5-e} L${.5-t},0`},"╤":{1:(t,e)=>`M0,${.5-e} L1,${.5-e} M0,${.5+e} L1,${.5+e} M.5,${.5+e} L.5,1`},"╥":{1:(t,e)=>`M0,.5 L1,.5 M${.5-t},.5 L${.5-t},1 M${.5+t},.5 L${.5+t},1`},"╦":{1:(t,e)=>`M0,${.5-e} L1,${.5-e} M0,${.5+e} L${.5-t},${.5+e} L${.5-t},1 M1,${.5+e} L${.5+t},${.5+e} L${.5+t},1`},"╧":{1:(t,e)=>`M.5,0 L.5,${.5-e} M0,${.5-e} L1,${.5-e} M0,${.5+e} L1,${.5+e}`},"╨":{1:(t,e)=>`M0,.5 L1,.5 M${.5-t},.5 L${.5-t},0 M${.5+t},.5 L${.5+t},0`},"╩":{1:(t,e)=>`M0,${.5+e} L1,${.5+e} M0,${.5-e} L${.5-t},${.5-e} L${.5-t},0 M1,${.5-e} L${.5+t},${.5-e} L${.5+t},0`},"╪":{1:(t,e)=>`M.5,0 L.5,1 M0,${.5-e} L1,${.5-e} M0,${.5+e} L1,${.5+e}`},"╫":{1:(t,e)=>`M0,.5 L1,.5 M${.5-t},0 L${.5-t},1 M${.5+t},0 L${.5+t},1`},"╬":{1:(t,e)=>`M0,${.5+e} L${.5-t},${.5+e} L${.5-t},1 M1,${.5+e} L${.5+t},${.5+e} L${.5+t},1 M0,${.5-e} L${.5-t},${.5-e} L${.5-t},0 M1,${.5-e} L${.5+t},${.5-e} L${.5+t},0`},"╱":{1:"M1,0 L0,1"},"╲":{1:"M0,0 L1,1"},"╳":{1:"M1,0 L0,1 M0,0 L1,1"},"╼":{1:"M.5,.5 L0,.5",3:"M.5,.5 L1,.5"},"╽":{1:"M.5,.5 L.5,0",3:"M.5,.5 L.5,1"},"╾":{1:"M.5,.5 L1,.5",3:"M.5,.5 L0,.5"},"╿":{1:"M.5,.5 L.5,1",3:"M.5,.5 L.5,0"},"┍":{1:"M.5,.5 L.5,1",3:"M.5,.5 L1,.5"},"┎":{1:"M.5,.5 L1,.5",3:"M.5,.5 L.5,1"},"┑":{1:"M.5,.5 L.5,1",3:"M.5,.5 L0,.5"},"┒":{1:"M.5,.5 L0,.5",3:"M.5,.5 L.5,1"},"┕":{1:"M.5,.5 L.5,0",3:"M.5,.5 L1,.5"},"┖":{1:"M.5,.5 L1,.5",3:"M.5,.5 L.5,0"},"┙":{1:"M.5,.5 L.5,0",3:"M.5,.5 L0,.5"},"┚":{1:"M.5,.5 L0,.5",3:"M.5,.5 L.5,0"},"┝":{1:"M.5,0 L.5,1",3:"M.5,.5 L1,.5"},"┞":{1:"M0.5,1 L.5,.5 L1,.5",3:"M.5,.5 L.5,0"},"┟":{1:"M.5,0 L.5,.5 L1,.5",3:"M.5,.5 L.5,1"},"┠":{1:"M.5,.5 L1,.5",3:"M.5,0 L.5,1"},"┡":{1:"M.5,.5 L.5,1",3:"M.5,0 L.5,.5 L1,.5"},"┢":{1:"M.5,.5 L.5,0",3:"M0.5,1 L.5,.5 L1,.5"},"┥":{1:"M.5,0 L.5,1",3:"M.5,.5 L0,.5"},"┦":{1:"M0,.5 L.5,.5 L.5,1",3:"M.5,.5 L.5,0"},"┧":{1:"M.5,0 L.5,.5 L0,.5",3:"M.5,.5 L.5,1"},"┨":{1:"M.5,.5 L0,.5",3:"M.5,0 L.5,1"},"┩":{1:"M.5,.5 L.5,1",3:"M.5,0 L.5,.5 L0,.5"},"┪":{1:"M.5,.5 L.5,0",3:"M0,.5 L.5,.5 L.5,1"},"┭":{1:"M0.5,1 L.5,.5 L1,.5",3:"M.5,.5 L0,.5"},"┮":{1:"M0,.5 L.5,.5 L.5,1",3:"M.5,.5 L1,.5"},"┯":{1:"M.5,.5 L.5,1",3:"M0,.5 L1,.5"},"┰":{1:"M0,.5 L1,.5",3:"M.5,.5 L.5,1"},"┱":{1:"M.5,.5 L1,.5",3:"M0,.5 L.5,.5 L.5,1"},"┲":{1:"M.5,.5 L0,.5",3:"M0.5,1 L.5,.5 L1,.5"},"┵":{1:"M.5,0 L.5,.5 L1,.5",3:"M.5,.5 L0,.5"},"┶":{1:"M.5,0 L.5,.5 L0,.5",3:"M.5,.5 L1,.5"},"┷":{1:"M.5,.5 L.5,0",3:"M0,.5 L1,.5"},"┸":{1:"M0,.5 L1,.5",3:"M.5,.5 L.5,0"},"┹":{1:"M.5,.5 L1,.5",3:"M.5,0 L.5,.5 L0,.5"},"┺":{1:"M.5,.5 L0,.5",3:"M.5,0 L.5,.5 L1,.5"},"┽":{1:"M.5,0 L.5,1 M.5,.5 L1,.5",3:"M.5,.5 L0,.5"},"┾":{1:"M.5,0 L.5,1 M.5,.5 L0,.5",3:"M.5,.5 L1,.5"},"┿":{1:"M.5,0 L.5,1",3:"M0,.5 L1,.5"},"╀":{1:"M0,.5 L1,.5 M.5,.5 L.5,1",3:"M.5,.5 L.5,0"},"╁":{1:"M.5,.5 L.5,0 M0,.5 L1,.5",3:"M.5,.5 L.5,1"},"╂":{1:"M0,.5 L1,.5",3:"M.5,0 L.5,1"},"╃":{1:"M0.5,1 L.5,.5 L1,.5",3:"M.5,0 L.5,.5 L0,.5"},"╄":{1:"M0,.5 L.5,.5 L.5,1",3:"M.5,0 L.5,.5 L1,.5"},"╅":{1:"M.5,0 L.5,.5 L1,.5",3:"M0,.5 L.5,.5 L.5,1"},"╆":{1:"M.5,0 L.5,.5 L0,.5",3:"M0.5,1 L.5,.5 L1,.5"},"╇":{1:"M.5,.5 L.5,1",3:"M.5,.5 L.5,0 M0,.5 L1,.5"},"╈":{1:"M.5,.5 L.5,0",3:"M0,.5 L1,.5 M.5,.5 L.5,1"},"╉":{1:"M.5,.5 L1,.5",3:"M.5,0 L.5,1 M.5,.5 L0,.5"},"╊":{1:"M.5,.5 L0,.5",3:"M.5,0 L.5,1 M.5,.5 L1,.5"},"╌":{1:"M.1,.5 L.4,.5 M.6,.5 L.9,.5"},"╍":{3:"M.1,.5 L.4,.5 M.6,.5 L.9,.5"},"┄":{1:"M.0667,.5 L.2667,.5 M.4,.5 L.6,.5 M.7333,.5 L.9333,.5"},"┅":{3:"M.0667,.5 L.2667,.5 M.4,.5 L.6,.5 M.7333,.5 L.9333,.5"},"┈":{1:"M.05,.5 L.2,.5 M.3,.5 L.45,.5 M.55,.5 L.7,.5 M.8,.5 L.95,.5"},"┉":{3:"M.05,.5 L.2,.5 M.3,.5 L.45,.5 M.55,.5 L.7,.5 M.8,.5 L.95,.5"},"╎":{1:"M.5,.1 L.5,.4 M.5,.6 L.5,.9"},"╏":{3:"M.5,.1 L.5,.4 M.5,.6 L.5,.9"},"┆":{1:"M.5,.0667 L.5,.2667 M.5,.4 L.5,.6 M.5,.7333 L.5,.9333"},"┇":{3:"M.5,.0667 L.5,.2667 M.5,.4 L.5,.6 M.5,.7333 L.5,.9333"},"┊":{1:"M.5,.05 L.5,.2 M.5,.3 L.5,.45 L.5,.55 M.5,.7 L.5,.95"},"┋":{3:"M.5,.05 L.5,.2 M.5,.3 L.5,.45 L.5,.55 M.5,.7 L.5,.95"},"╭":{1:(t,e)=>`M.5,1 L.5,${.5+e/.15*.5} C.5,${.5+e/.15*.5},.5,.5,1,.5`},"╮":{1:(t,e)=>`M.5,1 L.5,${.5+e/.15*.5} C.5,${.5+e/.15*.5},.5,.5,0,.5`},"╯":{1:(t,e)=>`M.5,0 L.5,${.5-e/.15*.5} C.5,${.5-e/.15*.5},.5,.5,0,.5`},"╰":{1:(t,e)=>`M.5,0 L.5,${.5-e/.15*.5} C.5,${.5-e/.15*.5},.5,.5,1,.5`}},sd={"":{d:"M.3,1 L.03,1 L.03,.88 C.03,.82,.06,.78,.11,.73 C.15,.7,.2,.68,.28,.65 L.43,.6 C.49,.58,.53,.56,.56,.53 C.59,.5,.6,.47,.6,.43 L.6,.27 L.4,.27 L.69,.1 L.98,.27 L.78,.27 L.78,.46 C.78,.52,.76,.56,.72,.61 C.68,.66,.63,.67,.56,.7 L.48,.72 C.42,.74,.38,.76,.35,.78 C.32,.8,.31,.84,.31,.88 L.31,1 M.3,.5 L.03,.59 L.03,.09 L.3,.09 L.3,.655",type:0},"":{d:"M.7,.4 L.7,.47 L.2,.47 L.2,.03 L.355,.03 L.355,.4 L.705,.4 M.7,.5 L.86,.5 L.86,.95 L.69,.95 L.44,.66 L.46,.86 L.46,.95 L.3,.95 L.3,.49 L.46,.49 L.71,.78 L.69,.565 L.69,.5",type:0},"":{d:"M.25,.94 C.16,.94,.11,.92,.11,.87 L.11,.53 C.11,.48,.15,.455,.23,.45 L.23,.3 C.23,.25,.26,.22,.31,.19 C.36,.16,.43,.15,.51,.15 C.59,.15,.66,.16,.71,.19 C.77,.22,.79,.26,.79,.3 L.79,.45 C.87,.45,.91,.48,.91,.53 L.91,.87 C.91,.92,.86,.94,.77,.94 L.24,.94 M.53,.2 C.49,.2,.45,.21,.42,.23 C.39,.25,.38,.27,.38,.3 L.38,.45 L.68,.45 L.68,.3 C.68,.27,.67,.25,.64,.23 C.61,.21,.58,.2,.53,.2 M.58,.82 L.58,.66 C.63,.65,.65,.63,.65,.6 C.65,.58,.64,.57,.61,.56 C.58,.55,.56,.54,.52,.54 C.48,.54,.46,.55,.43,.56 C.4,.57,.39,.59,.39,.6 C.39,.63,.41,.64,.46,.66 L.46,.82 L.57,.82",type:0},"":{d:"M0,0 L1,.5 L0,1",type:0,rightPadding:2},"":{d:"M-1,-.5 L1,.5 L-1,1.5",type:1,leftPadding:1,rightPadding:1},"":{d:"M1,0 L0,.5 L1,1",type:0,leftPadding:2},"":{d:"M2,-.5 L0,.5 L2,1.5",type:1,leftPadding:1,rightPadding:1},"":{d:"M0,0 L0,1 C0.552,1,1,0.776,1,.5 C1,0.224,0.552,0,0,0",type:0,rightPadding:1},"":{d:"M.2,1 C.422,1,.8,.826,.78,.5 C.8,.174,0.422,0,.2,0",type:1,rightPadding:1},"":{d:"M1,0 L1,1 C0.448,1,0,0.776,0,.5 C0,0.224,0.448,0,1,0",type:0,leftPadding:1},"":{d:"M.8,1 C0.578,1,0.2,.826,.22,.5 C0.2,0.174,0.578,0,0.8,0",type:1,leftPadding:1},"":{d:"M-.5,-.5 L1.5,1.5 L-.5,1.5",type:0},"":{d:"M-.5,-.5 L1.5,1.5",type:1,leftPadding:1,rightPadding:1},"":{d:"M1.5,-.5 L-.5,1.5 L1.5,1.5",type:0},"":{d:"M1.5,-.5 L-.5,1.5 L-.5,-.5",type:0},"":{d:"M1.5,-.5 L-.5,1.5",type:1,leftPadding:1,rightPadding:1},"":{d:"M-.5,-.5 L1.5,1.5 L1.5,-.5",type:0}};sd[""]=sd[""];sd[""]=sd[""];function coe(t,e,i,n,s,r,o,l){let c=ooe[e];if(c)return hoe(t,c,i,n,s,r),!0;let u=aoe[e];if(u)return uoe(t,u,i,n,s,r),!0;let d=loe[e];if(d)return foe(t,d,i,n,s,r,l),!0;let p=sd[e];return p?(doe(t,p,i,n,s,r,o,l),!0):!1}function hoe(t,e,i,n,s,r){for(let o=0;o7&&parseInt(l.slice(7,9),16)||1;else if(l.startsWith("rgba"))[_,b,x,w]=l.substring(5,l.length-1).split(",").map(k=>parseFloat(k));else throw new Error(`Unexpected fillStyle color format "${l}" when drawing pattern glyph`);for(let k=0;kt.bezierCurveTo(e[0],e[1],e[2],e[3],e[4],e[5]),L:(t,e)=>t.lineTo(e[0],e[1]),M:(t,e)=>t.moveTo(e[0],e[1])};function SN(t,e,i,n,s,r,o,l=0,c=0){let u=t.map(d=>parseFloat(d)||parseInt(d));if(u.length<2)throw new Error("Too few arguments for instruction");for(let d=0;ds){n-e<-20&&console.warn(`task queue exceeded allotted deadline by ${Math.abs(Math.round(n-e))}ms`),this._start();return}n=s}this.clear()}},poe=class extends xN{_requestCallback(t){return setTimeout(()=>t(this._createDeadline(16)))}_cancelCallback(t){clearTimeout(t)}_createDeadline(t){let e=performance.now()+t;return{timeRemaining:()=>Math.max(0,e-performance.now())}}},moe=class extends xN{_requestCallback(t){return requestIdleCallback(t)}_cancelCallback(t){cancelIdleCallback(t)}},goe=!zw&&"requestIdleCallback"in window?moe:poe,Xc=class wN{constructor(){this.fg=0,this.bg=0,this.extended=new CN}static toColorRGB(e){return[e>>>16&255,e>>>8&255,e&255]}static fromColorRGB(e){return(e[0]&255)<<16|(e[1]&255)<<8|e[2]&255}clone(){let e=new wN;return e.fg=this.fg,e.bg=this.bg,e.extended=this.extended.clone(),e}isInverse(){return this.fg&67108864}isBold(){return this.fg&134217728}isUnderline(){return this.hasExtendedAttrs()&&this.extended.underlineStyle!==0?1:this.fg&268435456}isBlink(){return this.fg&536870912}isInvisible(){return this.fg&1073741824}isItalic(){return this.bg&67108864}isDim(){return this.bg&134217728}isStrikethrough(){return this.fg&2147483648}isProtected(){return this.bg&536870912}isOverline(){return this.bg&1073741824}getFgColorMode(){return this.fg&50331648}getBgColorMode(){return this.bg&50331648}isFgRGB(){return(this.fg&50331648)===50331648}isBgRGB(){return(this.bg&50331648)===50331648}isFgPalette(){return(this.fg&50331648)===16777216||(this.fg&50331648)===33554432}isBgPalette(){return(this.bg&50331648)===16777216||(this.bg&50331648)===33554432}isFgDefault(){return(this.fg&50331648)===0}isBgDefault(){return(this.bg&50331648)===0}isAttributeDefault(){return this.fg===0&&this.bg===0}getFgColor(){switch(this.fg&50331648){case 16777216:case 33554432:return this.fg&255;case 50331648:return this.fg&16777215;default:return-1}}getBgColor(){switch(this.bg&50331648){case 16777216:case 33554432:return this.bg&255;case 50331648:return this.bg&16777215;default:return-1}}hasExtendedAttrs(){return this.bg&268435456}updateExtended(){this.extended.isEmpty()?this.bg&=-268435457:this.bg|=268435456}getUnderlineColor(){if(this.bg&268435456&&~this.extended.underlineColor)switch(this.extended.underlineColor&50331648){case 16777216:case 33554432:return this.extended.underlineColor&255;case 50331648:return this.extended.underlineColor&16777215;default:return this.getFgColor()}return this.getFgColor()}getUnderlineColorMode(){return this.bg&268435456&&~this.extended.underlineColor?this.extended.underlineColor&50331648:this.getFgColorMode()}isUnderlineColorRGB(){return this.bg&268435456&&~this.extended.underlineColor?(this.extended.underlineColor&50331648)===50331648:this.isFgRGB()}isUnderlineColorPalette(){return this.bg&268435456&&~this.extended.underlineColor?(this.extended.underlineColor&50331648)===16777216||(this.extended.underlineColor&50331648)===33554432:this.isFgPalette()}isUnderlineColorDefault(){return this.bg&268435456&&~this.extended.underlineColor?(this.extended.underlineColor&50331648)===0:this.isFgDefault()}getUnderlineStyle(){return this.fg&268435456?this.bg&268435456?this.extended.underlineStyle:1:0}getUnderlineVariantOffset(){return this.extended.underlineVariantOffset}},CN=class kN{constructor(e=0,i=0){this._ext=0,this._urlId=0,this._ext=e,this._urlId=i}get ext(){return this._urlId?this._ext&-469762049|this.underlineStyle<<26:this._ext}set ext(e){this._ext=e}get underlineStyle(){return this._urlId?5:(this._ext&469762048)>>26}set underlineStyle(e){this._ext&=-469762049,this._ext|=e<<26&469762048}get underlineColor(){return this._ext&67108863}set underlineColor(e){this._ext&=-67108864,this._ext|=e&67108863}get urlId(){return this._urlId}set urlId(e){this._urlId=e}get underlineVariantOffset(){let e=(this._ext&3758096384)>>29;return e<0?e^4294967288:e}set underlineVariantOffset(e){this._ext&=536870911,this._ext|=e<<29&3758096384}clone(){return new kN(this._ext,this._urlId)}isEmpty(){return this.underlineStyle===0&&this._urlId===0}},Ooe=globalThis.performance&&typeof globalThis.performance.now=="function",voe=class TN{static create(e){return new TN(e)}constructor(e){this._now=Ooe&&e===!1?Date.now:globalThis.performance.now.bind(globalThis.performance),this._startTime=this._now(),this._stopTime=-1}stop(){this._stopTime=this._now()}reset(){this._startTime=this._now(),this._stopTime=-1}elapsed(){return this._stopTime!==-1?this._stopTime-this._startTime:this._now()-this._startTime}},go;(t=>{t.None=()=>Fs.None;function e(R,B){return p(R,()=>{},0,void 0,!0,void 0,B)}t.defer=e;function i(R){return(B,j=null,$)=>{let D=!1,Z;return Z=R(H=>{if(!D)return Z?Z.dispose():D=!0,B.call(j,H)},null,$),D&&Z.dispose(),Z}}t.once=i;function n(R,B,j){return u(($,D=null,Z)=>R(H=>$.call(D,B(H)),null,Z),j)}t.map=n;function s(R,B,j){return u(($,D=null,Z)=>R(H=>{B(H),$.call(D,H)},null,Z),j)}t.forEach=s;function r(R,B,j){return u(($,D=null,Z)=>R(H=>B(H)&&$.call(D,H),null,Z),j)}t.filter=r;function o(R){return R}t.signal=o;function l(...R){return(B,j=null,$)=>{let D=mN(...R.map(Z=>Z(H=>B.call(j,H))));return d(D,$)}}t.any=l;function c(R,B,j,$){let D=j;return n(R,Z=>(D=B(D,Z),D),$)}t.reduce=c;function u(R,B){let j,$={onWillAddFirstListener(){j=R(D.fire,D)},onDidRemoveLastListener(){j==null||j.dispose()}},D=new Rt($);return B==null||B.add(D),D.event}function d(R,B){return B instanceof Array?B.push(R):B&&B.add(R),R}function p(R,B,j=100,$=!1,D=!1,Z,H){let F,M,I,K=0,L,ue={leakWarningThreshold:Z,onWillAddFirstListener(){F=R(fe=>{K++,M=B(M,fe),$&&!I&&(he.fire(M),M=void 0),L=()=>{let Oe=M;M=void 0,I=void 0,(!$||K>1)&&he.fire(Oe),K=0},typeof j=="number"?(clearTimeout(I),I=setTimeout(L,j)):I===void 0&&(I=0,queueMicrotask(L))})},onWillRemoveListener(){D&&K>0&&(L==null||L())},onDidRemoveLastListener(){L=void 0,F.dispose()}},he=new Rt(ue);return H==null||H.add(he),he.event}t.debounce=p;function g(R,B=0,j){return t.debounce(R,($,D)=>$?($.push(D),$):[D],B,void 0,!0,void 0,j)}t.accumulate=g;function O(R,B=($,D)=>$===D,j){let $=!0,D;return r(R,Z=>{let H=$||!B(Z,D);return $=!1,D=Z,H},j)}t.latch=O;function _(R,B,j){return[t.filter(R,B,j),t.filter(R,$=>!B($),j)]}t.split=_;function b(R,B=!1,j=[],$){let D=j.slice(),Z=R(M=>{D?D.push(M):F.fire(M)});$&&$.add(Z);let H=()=>{D==null||D.forEach(M=>F.fire(M)),D=null},F=new Rt({onWillAddFirstListener(){Z||(Z=R(M=>F.fire(M)),$&&$.add(Z))},onDidAddFirstListener(){D&&(B?setTimeout(H):H())},onDidRemoveLastListener(){Z&&Z.dispose(),Z=null}});return $&&$.add(F),F.event}t.buffer=b;function x(R,B){return(j,$,D)=>{let Z=B(new k);return R(function(H){let F=Z.evaluate(H);F!==w&&j.call($,F)},void 0,D)}}t.chain=x;let w=Symbol("HaltChainable");class k{constructor(){this.steps=[]}map(B){return this.steps.push(B),this}forEach(B){return this.steps.push(j=>(B(j),j)),this}filter(B){return this.steps.push(j=>B(j)?j:w),this}reduce(B,j){let $=j;return this.steps.push(D=>($=B($,D),$)),this}latch(B=(j,$)=>j===$){let j=!0,$;return this.steps.push(D=>{let Z=j||!B(D,$);return j=!1,$=D,Z?D:w}),this}evaluate(B){for(let j of this.steps)if(B=j(B),B===w)break;return B}}function T(R,B,j=$=>$){let $=(...F)=>H.fire(j(...F)),D=()=>R.on(B,$),Z=()=>R.removeListener(B,$),H=new Rt({onWillAddFirstListener:D,onDidRemoveLastListener:Z});return H.event}t.fromNodeEventEmitter=T;function A(R,B,j=$=>$){let $=(...F)=>H.fire(j(...F)),D=()=>R.addEventListener(B,$),Z=()=>R.removeEventListener(B,$),H=new Rt({onWillAddFirstListener:D,onDidRemoveLastListener:Z});return H.event}t.fromDOMEventEmitter=A;function Q(R){return new Promise(B=>i(R)(B))}t.toPromise=Q;function E(R){let B=new Rt;return R.then(j=>{B.fire(j)},()=>{B.fire(void 0)}).finally(()=>{B.dispose()}),B.event}t.fromPromise=E;function N(R,B){return R(j=>B.fire(j))}t.forward=N;function z(R,B,j){return B(j),R($=>B($))}t.runAndSubscribe=z;class q{constructor(B,j){this._observable=B,this._counter=0,this._hasChanged=!1;let $={onWillAddFirstListener:()=>{B.addObserver(this)},onDidRemoveLastListener:()=>{B.removeObserver(this)}};this.emitter=new Rt($),j&&j.add(this.emitter)}beginUpdate(B){this._counter++}handlePossibleChange(B){}handleChange(B,j){this._hasChanged=!0}endUpdate(B){this._counter--,this._counter===0&&(this._observable.reportChanges(),this._hasChanged&&(this._hasChanged=!1,this.emitter.fire(this._observable.get())))}}function J(R,B){return new q(R,B).emitter.event}t.fromObservable=J;function U(R){return(B,j,$)=>{let D=0,Z=!1,H={beginUpdate(){D++},endUpdate(){D--,D===0&&(R.reportChanges(),Z&&(Z=!1,B.call(j)))},handlePossibleChange(){},handleChange(){Z=!0}};R.addObserver(H),R.reportChanges();let F={dispose(){R.removeObserver(H)}};return $ instanceof eh?$.add(F):Array.isArray($)&&$.push(F),F}}t.fromObservableLight=U})(go||(go={}));var PS=class RS{constructor(e){this.listenerCount=0,this.invocationCount=0,this.elapsedOverall=0,this.durations=[],this.name=`${e}_${RS._idPool++}`,RS.all.add(this)}start(e){this._stopWatch=new voe,this.listenerCount=e}stop(){if(this._stopWatch){let e=this._stopWatch.elapsed();this.durations.push(e),this.elapsedOverall+=e,this.invocationCount+=1,this._stopWatch=void 0}}};PS.all=new Set,PS._idPool=0;var _oe=PS,yoe=-1,AN=class EN{constructor(e,i,n=(EN._idPool++).toString(16).padStart(3,"0")){this._errorHandler=e,this.threshold=i,this.name=n,this._warnCountdown=0}dispose(){var e;(e=this._stacks)==null||e.clear()}check(e,i){let n=this.threshold;if(n<=0||i{let r=this._stacks.get(e.value)||0;this._stacks.set(e.value,r-1)}}getMostFrequentStack(){if(!this._stacks)return;let e,i=0;for(let[n,s]of this._stacks)(!e||i{var l,c,u,d,p;if(this._leakageMon&&this._size>this._leakageMon.threshold**2){let g=`[${this._leakageMon.name}] REFUSES to accept new listeners because it exceeded its threshold by far (${this._size} vs ${this._leakageMon.threshold})`;console.warn(g);let O=this._leakageMon.getMostFrequentStack()??["UNKNOWN stack",-1],_=new woe(`${g}. HINT: Stack shows most frequent listener (${O[1]}-times)`,O[0]);return(((l=this._options)==null?void 0:l.onListenerError)||Wy)(_),Fr.None}if(this._disposed)return Fr.None;i&&(e=e.bind(i));let r=new Yy(e),s;this._leakageMon&&this._size>=Math.ceil(this._leakageMon.threshold*.2)&&(r.stack=Soe.create(),s=this._leakageMon.check(r.stack,this._size+1)),this._listeners?this._listeners instanceof Yy?(this._deliveryQueue??(this._deliveryQueue=new Aoe),this._listeners=[this._listeners,r]):this._listeners.push(r):((u=(c=this._options)==null?void 0:c.onWillAddFirstListener)==null||u.call(c,this),this._listeners=r,(p=(d=this._options)==null?void 0:d.onDidAddFirstListener)==null||p.call(d,this)),this._size++;let o=rn(()=>{s==null||s(),this._removeListener(r)});return n instanceof eh?n.add(o):Array.isArray(n)&&n.push(o),o}),this._event}_removeListener(e){var s,o,l,c;if((o=(s=this._options)==null?void 0:s.onWillRemoveListener)==null||o.call(s,this),!this._listeners)return;if(this._size===1){this._listeners=void 0,(c=(l=this._options)==null?void 0:l.onDidRemoveLastListener)==null||c.call(l,this),this._size=0;return}let i=this._listeners,n=i.indexOf(e);if(n===-1)throw console.log("disposed?",this._disposed),console.log("size?",this._size),console.log("arr?",JSON.stringify(this._listeners)),new Error("Attempted to dispose unknown listener");this._size--,i[n]=void 0;let r=this._deliveryQueue.current===this;if(this._size*koe<=i.length){let u=0;for(let d=0;d0}},Aoe=class{constructor(){this.i=-1,this.end=0}enqueue(t,e,i){this.i=0,this.end=i,this.current=t,this.value=e}reset(){this.i=this.end,this.current=void 0,this.value=void 0}},IR={texturePage:0,texturePosition:{x:0,y:0},texturePositionClipSpace:{x:0,y:0},offset:{x:0,y:0},size:{x:0,y:0},sizeClipSpace:{x:0,y:0}},Vu=2,Xu,ha=class Qc{constructor(e,i,n){this._document=e,this._config=i,this._unicodeService=n,this._didWarmUp=!1,this._cacheMap=new jR,this._cacheMapCombined=new jR,this._pages=[],this._activePages=[],this._workBoundingBox={top:0,left:0,bottom:0,right:0},this._workAttributeData=new Xc,this._textureSize=512,this._onAddTextureAtlasCanvas=new Rt,this.onAddTextureAtlasCanvas=this._onAddTextureAtlasCanvas.event,this._onRemoveTextureAtlasCanvas=new Rt,this.onRemoveTextureAtlasCanvas=this._onRemoveTextureAtlasCanvas.event,this._requestClearModel=!1,this._createNewPage(),this._tmpCanvas=Pz(e,this._config.deviceCellWidth*4+Vu*2,this._config.deviceCellHeight+Vu*2),this._tmpCtx=li(this._tmpCanvas.getContext("2d",{alpha:this._config.allowTransparency,willReadFrequently:!0}))}get pages(){return this._pages}dispose(){this._tmpCanvas.remove();for(let e of this.pages)e.canvas.remove();this._onAddTextureAtlasCanvas.dispose()}warmUp(){this._didWarmUp||(this._doWarmUp(),this._didWarmUp=!0)}_doWarmUp(){let e=new goe;for(let i=33;i<126;i++)e.enqueue(()=>{if(!this._cacheMap.get(i,0,0,0)){let n=this._drawToCache(i,0,0,0,!1,void 0);this._cacheMap.set(i,0,0,0,n)}})}beginFrame(){return this._requestClearModel}clearTexture(){if(!(this._pages[0].currentRow.x===0&&this._pages[0].currentRow.y===0)){for(let e of this._pages)e.clear();this._cacheMap.clear(),this._cacheMapCombined.clear(),this._didWarmUp=!1}}_createNewPage(){if(Qc.maxAtlasPages&&this._pages.length>=Math.max(4,Qc.maxAtlasPages)){let i=this._pages.filter(u=>u.canvas.width*2<=(Qc.maxTextureSize||4096)).sort((u,d)=>d.canvas.width!==u.canvas.width?d.canvas.width-u.canvas.width:d.percentageUsed-u.percentageUsed),n=-1,r=0;for(let u=0;uu.glyphs[0].texturePage).sort((u,d)=>u>d?1:-1),l=this.pages.length-s.length,c=this._mergePages(s,l);c.version++;for(let u=o.length-1;u>=0;u--)this._deletePage(o[u]);this.pages.push(c),this._requestClearModel=!0,this._onAddTextureAtlasCanvas.fire(c.canvas)}let e=new Hy(this._document,this._textureSize);return this._pages.push(e),this._activePages.push(e),this._onAddTextureAtlasCanvas.fire(e.canvas),e}_mergePages(e,i){let n=e[0].canvas.width*2,r=new Hy(this._document,n,e);for(let[s,o]of e.entries()){let l=s*o.canvas.width%n,c=Math.floor(s/2)*o.canvas.height;r.ctx.drawImage(o.canvas,l,c);for(let d of o.glyphs)d.texturePage=i,d.sizeClipSpace.x=d.size.x/n,d.sizeClipSpace.y=d.size.y/n,d.texturePosition.x+=l,d.texturePosition.y+=c,d.texturePositionClipSpace.x=d.texturePosition.x/n,d.texturePositionClipSpace.y=d.texturePosition.y/n;this._onRemoveTextureAtlasCanvas.fire(o.canvas);let u=this._activePages.indexOf(o);u!==-1&&this._activePages.splice(u,1)}return r}_deletePage(e){this._pages.splice(e,1);for(let i=e;i=this._config.colors.ansi.length)throw new Error("No color found for idx "+e);return this._config.colors.ansi[e]}_getBackgroundColor(e,i,n,r){if(this._config.allowTransparency)return yr;let s;switch(e){case 16777216:case 33554432:s=this._getColorFromAnsiIndex(i);break;case 50331648:let o=Xc.toColorRGB(i);s=gn.toColor(o[0],o[1],o[2]);break;case 0:default:n?s=af.opaque(this._config.colors.foreground):s=this._config.colors.background;break}return this._config.allowTransparency||(s=af.opaque(s)),s}_getForegroundColor(e,i,n,r,s,o,l,c,u,d){let p=this._getMinimumContrastColor(e,i,n,r,s,o,l,u,c,d);if(p)return p;let g;switch(s){case 16777216:case 33554432:this._config.drawBoldTextInBrightColors&&u&&o<8&&(o+=8),g=this._getColorFromAnsiIndex(o);break;case 50331648:let O=Xc.toColorRGB(o);g=gn.toColor(O[0],O[1],O[2]);break;case 0:default:l?g=this._config.colors.background:g=this._config.colors.foreground}return this._config.allowTransparency&&(g=af.opaque(g)),c&&(g=af.multiplyOpacity(g,soe)),g}_resolveBackgroundRgba(e,i,n){switch(e){case 16777216:case 33554432:return this._getColorFromAnsiIndex(i).rgba;case 50331648:return i<<8;case 0:default:return n?this._config.colors.foreground.rgba:this._config.colors.background.rgba}}_resolveForegroundRgba(e,i,n,r){switch(e){case 16777216:case 33554432:return this._config.drawBoldTextInBrightColors&&r&&i<8&&(i+=8),this._getColorFromAnsiIndex(i).rgba;case 50331648:return i<<8;case 0:default:return n?this._config.colors.background.rgba:this._config.colors.foreground.rgba}}_getMinimumContrastColor(e,i,n,r,s,o,l,c,u,d){if(this._config.minimumContrastRatio===1||d)return;let p=this._getContrastCache(u),g=p.getColor(e,r);if(g!==void 0)return g||void 0;let O=this._resolveBackgroundRgba(i,n,l),_=this._resolveForegroundRgba(s,o,l,c),b=wl.ensureContrastRatio(O,_,this._config.minimumContrastRatio/(u?2:1));if(!b){p.setColor(e,r,null);return}let x=gn.toColor(b>>24&255,b>>16&255,b>>8&255);return p.setColor(e,r,x),x}_getContrastCache(e){return e?this._config.colors.halfContrastCache:this._config.colors.contrastCache}_drawToCache(e,i,n,r,s,o){let l=typeof e=="number"?String.fromCharCode(e):e;o&&this._tmpCanvas.parentElement!==o&&(this._tmpCanvas.style.display="none",o.append(this._tmpCanvas));let c=Math.min(this._config.deviceCellWidth*Math.max(l.length,2)+Vu*2,this._config.deviceMaxTextureSize);this._tmpCanvas.width=M?M*2-fe:M-fe;fe>=M||Le===0?(this._tmpCtx.setLineDash([Math.round(M),Math.round(M)]),this._tmpCtx.moveTo(Ce+Le,L),this._tmpCtx.lineTo(ye,L)):(this._tmpCtx.setLineDash([Math.round(M),Math.round(M)]),this._tmpCtx.moveTo(Ce,L),this._tmpCtx.lineTo(Ce+Le,L),this._tmpCtx.moveTo(Ce+Le+M,L),this._tmpCtx.lineTo(ye,L)),fe=noe(ye-Ce,M,fe);break;case 5:let ar=.6,Co=.3,ko=ye-Ce,La=Math.floor(ar*ko),Ds=Math.floor(Co*ko),To=ko-La-Ds;this._tmpCtx.setLineDash([La,Ds,To]),this._tmpCtx.moveTo(Ce,L),this._tmpCtx.lineTo(ye,L);break;case 1:default:this._tmpCtx.moveTo(Ce,L),this._tmpCtx.lineTo(ye,L);break}this._tmpCtx.stroke(),this._tmpCtx.restore()}if(this._tmpCtx.restore(),!R&&this._config.fontSize>=12&&!this._config.allowTransparency&&l!==" "){this._tmpCtx.save(),this._tmpCtx.textBaseline="alphabetic";let Oe=this._tmpCtx.measureText(l);if(this._tmpCtx.restore(),"actualBoundingBoxDescent"in Oe&&Oe.actualBoundingBoxDescent>0){this._tmpCtx.save();let Ce=new Path2D;Ce.rect(K,L-Math.ceil(M/2),this._config.deviceCellWidth*j,he-L+Math.ceil(M/2)),this._tmpCtx.clip(Ce),this._tmpCtx.lineWidth=this._config.devicePixelRatio*3,this._tmpCtx.strokeStyle=Q.css,this._tmpCtx.strokeText(l,U,U+this._config.deviceCharHeight),this._tmpCtx.restore()}}}if(x){let M=Math.max(1,Math.floor(this._config.fontSize*this._config.devicePixelRatio/15)),I=M%2===1?.5:0;this._tmpCtx.lineWidth=M,this._tmpCtx.strokeStyle=this._tmpCtx.fillStyle,this._tmpCtx.beginPath(),this._tmpCtx.moveTo(U,U+I),this._tmpCtx.lineTo(U+this._config.deviceCharWidth*j,U+I),this._tmpCtx.stroke()}if(R||this._tmpCtx.fillText(l,U,U+this._config.deviceCharHeight),l==="_"&&!this._config.allowTransparency){let M=Fy(this._tmpCtx.getImageData(U,U,this._config.deviceCellWidth,this._config.deviceCellHeight),Q,J,B);if(M)for(let I=1;I<=5&&(this._tmpCtx.save(),this._tmpCtx.fillStyle=Q.css,this._tmpCtx.fillRect(0,0,this._tmpCanvas.width,this._tmpCanvas.height),this._tmpCtx.restore(),this._tmpCtx.fillText(l,U,U+this._config.deviceCharHeight-I),M=Fy(this._tmpCtx.getImageData(U,U,this._config.deviceCellWidth,this._config.deviceCellHeight),Q,J,B),!!M);I++);}if(b){let M=Math.max(1,Math.floor(this._config.fontSize*this._config.devicePixelRatio/10)),I=this._tmpCtx.lineWidth%2===1?.5:0;this._tmpCtx.lineWidth=M,this._tmpCtx.strokeStyle=this._tmpCtx.fillStyle,this._tmpCtx.beginPath(),this._tmpCtx.moveTo(U,U+Math.floor(this._config.deviceCharHeight/2)-I),this._tmpCtx.lineTo(U+this._config.deviceCharWidth*j,U+Math.floor(this._config.deviceCharHeight/2)-I),this._tmpCtx.stroke()}this._tmpCtx.restore();let $=this._tmpCtx.getImageData(0,0,this._tmpCanvas.width,this._tmpCanvas.height),D;if(this._config.allowTransparency?D=Eoe($):D=Fy($,Q,J,B),D)return IR;let X=this._findGlyphBoundingBox($,this._workBoundingBox,c,q,R,U),H,F;for(;;){if(this._activePages.length===0){let M=this._createNewPage();H=M,F=M.currentRow,F.height=X.size.y;break}H=this._activePages[this._activePages.length-1],F=H.currentRow;for(let M of this._activePages)X.size.y<=M.currentRow.height&&(H=M,F=M.currentRow);for(let M=this._activePages.length-1;M>=0;M--)for(let I of this._activePages[M].fixedRows)I.height<=F.height&&X.size.y<=I.height&&(H=this._activePages[M],F=I);if(X.size.x>this._textureSize){this._overflowSizePage||(this._overflowSizePage=new Hy(this._document,this._config.deviceMaxTextureSize),this.pages.push(this._overflowSizePage),this._requestClearModel=!0,this._onAddTextureAtlasCanvas.fire(this._overflowSizePage.canvas)),H=this._overflowSizePage,F=this._overflowSizePage.currentRow,F.x+X.size.x>=H.canvas.width&&(F.x=0,F.y+=F.height,F.height=0);break}if(F.y+X.size.y>=H.canvas.height||F.height>X.size.y+2){let M=!1;if(H.currentRow.y+H.currentRow.height+X.size.y>=H.canvas.height){let I;for(let K of this._activePages)if(K.currentRow.y+K.currentRow.height+X.size.y=Qc.maxAtlasPages&&F.y+X.size.y<=H.canvas.height&&F.height>=X.size.y&&F.x+X.size.x<=H.canvas.width)M=!0;else{let K=this._createNewPage();H=K,F=K.currentRow,F.height=X.size.y,M=!0}}M||(H.currentRow.height>0&&H.fixedRows.push(H.currentRow),F={x:0,y:H.currentRow.y+H.currentRow.height,height:X.size.y},H.fixedRows.push(F),H.currentRow={x:0,y:F.y+F.height,height:0})}if(F.x+X.size.x<=H.canvas.width)break;F===H.currentRow?(F.x=0,F.y+=F.height,F.height=0):H.fixedRows.splice(H.fixedRows.indexOf(F),1)}return X.texturePage=this._pages.indexOf(H),X.texturePosition.x=F.x,X.texturePosition.y=F.y,X.texturePositionClipSpace.x=F.x/H.canvas.width,X.texturePositionClipSpace.y=F.y/H.canvas.height,X.sizeClipSpace.x/=H.canvas.width,X.sizeClipSpace.y/=H.canvas.height,F.height=Math.max(F.height,X.size.y),F.x+=X.size.x,H.ctx.putImageData($,X.texturePosition.x-this._workBoundingBox.left,X.texturePosition.y-this._workBoundingBox.top,this._workBoundingBox.left,this._workBoundingBox.top,X.size.x,X.size.y),H.addGlyph(X),H.version++,X}_findGlyphBoundingBox(e,i,n,r,s,o){i.top=0;let l=r?this._config.deviceCellHeight:this._tmpCanvas.height,c=r?this._config.deviceCellWidth:n,u=!1;for(let d=0;d=o;d--){for(let p=0;p=0;d--){for(let p=0;p>>24,s=e.rgba>>>16&255,o=e.rgba>>>8&255,l=i.rgba>>>24,c=i.rgba>>>16&255,u=i.rgba>>>8&255,d=Math.floor((Math.abs(r-l)+Math.abs(s-c)+Math.abs(o-u))/12),p=!0;for(let g=0;g0)return!1;return!0}function Pz(t,e,i){let n=t.createElement("canvas");return n.width=e,n.height=i,n}function Moe(t,e,i,n,r,s,o,l){let c={foreground:s.foreground,background:s.background,cursor:yr,cursorAccent:yr,selectionForeground:yr,selectionBackgroundTransparent:yr,selectionBackgroundOpaque:yr,selectionInactiveBackgroundTransparent:yr,selectionInactiveBackgroundOpaque:yr,overviewRulerBorder:yr,scrollbarSliderBackground:yr,scrollbarSliderHoverBackground:yr,scrollbarSliderActiveBackground:yr,ansi:s.ansi.slice(),contrastCache:s.contrastCache,halfContrastCache:s.halfContrastCache};return{customGlyphs:r.customGlyphs,devicePixelRatio:o,deviceMaxTextureSize:l,letterSpacing:r.letterSpacing,lineHeight:r.lineHeight,deviceCellWidth:t,deviceCellHeight:e,deviceCharWidth:i,deviceCharHeight:n,fontFamily:r.fontFamily,fontSize:r.fontSize,fontWeight:r.fontWeight,fontWeightBold:r.fontWeightBold,allowTransparency:r.allowTransparency,drawBoldTextInBrightColors:r.drawBoldTextInBrightColors,minimumContrastRatio:r.minimumContrastRatio,colors:c}}function VR(t,e){for(let i=0;i=0){if(VR(O.config,u))return O.atlas;O.ownedBy.length===1?(O.atlas.dispose(),xr.splice(g,1)):O.ownedBy.splice(_,1);break}}for(let g=0;g{this._renderCallback(),this._animationFrame=void 0})))}_restartInterval(t=Mm){this._blinkInterval&&(this._coreBrowserService.window.clearInterval(this._blinkInterval),this._blinkInterval=void 0),this._blinkStartTimeout=this._coreBrowserService.window.setTimeout(()=>{if(this._animationTimeRestarted){let e=Mm-(Date.now()-this._animationTimeRestarted);if(this._animationTimeRestarted=void 0,e>0){this._restartInterval(e);return}}this.isCursorVisible=!1,this._animationFrame=this._coreBrowserService.window.requestAnimationFrame(()=>{this._renderCallback(),this._animationFrame=void 0}),this._blinkInterval=this._coreBrowserService.window.setInterval(()=>{if(this._animationTimeRestarted){let e=Mm-(Date.now()-this._animationTimeRestarted);this._animationTimeRestarted=void 0,this._restartInterval(e);return}this.isCursorVisible=!this.isCursorVisible,this._animationFrame=this._coreBrowserService.window.requestAnimationFrame(()=>{this._renderCallback(),this._animationFrame=void 0})},Mm)},t)}pause(){this.isCursorVisible=!0,this._blinkInterval&&(this._coreBrowserService.window.clearInterval(this._blinkInterval),this._blinkInterval=void 0),this._blinkStartTimeout&&(this._coreBrowserService.window.clearTimeout(this._blinkStartTimeout),this._blinkStartTimeout=void 0),this._animationFrame&&(this._coreBrowserService.window.cancelAnimationFrame(this._animationFrame),this._animationFrame=void 0)}resume(){this.pause(),this._animationTimeRestarted=void 0,this._restartInterval(),this.restartBlinkAnimation()}};function ZR(t,e,i){let n=new e.ResizeObserver(r=>{let s=r.find(c=>c.target===t);if(!s)return;if(!("devicePixelContentBoxSize"in s)){n==null||n.disconnect(),n=void 0;return}let o=s.devicePixelContentBoxSize[0].inlineSize,l=s.devicePixelContentBoxSize[0].blockSize;o>0&&l>0&&i(o,l)});try{n.observe(t,{box:["device-pixel-content-box"]})}catch{n.disconnect(),n=void 0}return rn(()=>n==null?void 0:n.disconnect())}function Qoe(t){return t>65535?(t-=65536,String.fromCharCode((t>>10)+55296)+String.fromCharCode(t%1024+56320)):String.fromCharCode(t)}var qR=class Qz extends Xc{constructor(){super(...arguments),this.content=0,this.fg=0,this.bg=0,this.extended=new Cz,this.combinedData=""}static fromCharData(e){let i=new Qz;return i.setFromCharData(e),i}isCombined(){return this.content&2097152}getWidth(){return this.content>>22}getChars(){return this.content&2097152?this.combinedData:this.content&2097151?Qoe(this.content&2097151):""}getCode(){return this.isCombined()?this.combinedData.charCodeAt(this.combinedData.length-1):this.content&2097151}setFromCharData(e){this.fg=e[0],this.bg=0;let i=!1;if(e[1].length>2)i=!0;else if(e[1].length===2){let n=e[1].charCodeAt(0);if(55296<=n&&n<=56319){let r=e[1].charCodeAt(1);56320<=r&&r<=57343?this.content=(n-55296)*1024+r-56320+65536|e[2]<<22:i=!0}else i=!0}else this.content=e[1].charCodeAt(0)|e[2]<<22;i&&(this.combinedData=e[1],this.content=2097152|e[2]<<22)}getAsCharData(){return[this.fg,this.getChars(),this.getWidth(),this.getCode()]}},Lz=new Float32Array([2,0,0,0,0,-2,0,0,0,0,1,0,-1,1,0,1]);function Dz(t,e,i){let n=li(t.createProgram());if(t.attachShader(n,li(WR(t,t.VERTEX_SHADER,e))),t.attachShader(n,li(WR(t,t.FRAGMENT_SHADER,i))),t.linkProgram(n),t.getProgramParameter(n,t.LINK_STATUS))return n;console.error(t.getProgramInfoLog(n)),t.deleteProgram(n)}function WR(t,e,i){let n=li(t.createShader(e));if(t.shaderSource(n,i),t.compileShader(n),t.getShaderParameter(n,t.COMPILE_STATUS))return n;console.error(t.getShaderInfoLog(n)),t.deleteShader(n)}function Loe(t,e){let i=Math.min(t.length*2,e),n=new Float32Array(i);for(let r=0;r{var l,c,u,d,p;if(this._leakageMon&&this._size>this._leakageMon.threshold**2){let g=`[${this._leakageMon.name}] REFUSES to accept new listeners because it exceeded its threshold by far (${this._size} vs ${this._leakageMon.threshold})`;console.warn(g);let O=this._leakageMon.getMostFrequentStack()??["UNKNOWN stack",-1],_=new woe(`${g}. HINT: Stack shows most frequent listener (${O[1]}-times)`,O[0]);return(((l=this._options)==null?void 0:l.onListenerError)||Wy)(_),Fs.None}if(this._disposed)return Fs.None;i&&(e=e.bind(i));let s=new Yy(e),r;this._leakageMon&&this._size>=Math.ceil(this._leakageMon.threshold*.2)&&(s.stack=Soe.create(),r=this._leakageMon.check(s.stack,this._size+1)),this._listeners?this._listeners instanceof Yy?(this._deliveryQueue??(this._deliveryQueue=new Aoe),this._listeners=[this._listeners,s]):this._listeners.push(s):((u=(c=this._options)==null?void 0:c.onWillAddFirstListener)==null||u.call(c,this),this._listeners=s,(p=(d=this._options)==null?void 0:d.onDidAddFirstListener)==null||p.call(d,this)),this._size++;let o=sn(()=>{r==null||r(),this._removeListener(s)});return n instanceof eh?n.add(o):Array.isArray(n)&&n.push(o),o}),this._event}_removeListener(e){var r,o,l,c;if((o=(r=this._options)==null?void 0:r.onWillRemoveListener)==null||o.call(r,this),!this._listeners)return;if(this._size===1){this._listeners=void 0,(c=(l=this._options)==null?void 0:l.onDidRemoveLastListener)==null||c.call(l,this),this._size=0;return}let i=this._listeners,n=i.indexOf(e);if(n===-1)throw console.log("disposed?",this._disposed),console.log("size?",this._size),console.log("arr?",JSON.stringify(this._listeners)),new Error("Attempted to dispose unknown listener");this._size--,i[n]=void 0;let s=this._deliveryQueue.current===this;if(this._size*koe<=i.length){let u=0;for(let d=0;d0}},Aoe=class{constructor(){this.i=-1,this.end=0}enqueue(t,e,i){this.i=0,this.end=i,this.current=t,this.value=e}reset(){this.i=this.end,this.current=void 0,this.value=void 0}},IR={texturePage:0,texturePosition:{x:0,y:0},texturePositionClipSpace:{x:0,y:0},offset:{x:0,y:0},size:{x:0,y:0},sizeClipSpace:{x:0,y:0}},Vu=2,Xu,fa=class Qc{constructor(e,i,n){this._document=e,this._config=i,this._unicodeService=n,this._didWarmUp=!1,this._cacheMap=new jR,this._cacheMapCombined=new jR,this._pages=[],this._activePages=[],this._workBoundingBox={top:0,left:0,bottom:0,right:0},this._workAttributeData=new Xc,this._textureSize=512,this._onAddTextureAtlasCanvas=new Rt,this.onAddTextureAtlasCanvas=this._onAddTextureAtlasCanvas.event,this._onRemoveTextureAtlasCanvas=new Rt,this.onRemoveTextureAtlasCanvas=this._onRemoveTextureAtlasCanvas.event,this._requestClearModel=!1,this._createNewPage(),this._tmpCanvas=PN(e,this._config.deviceCellWidth*4+Vu*2,this._config.deviceCellHeight+Vu*2),this._tmpCtx=li(this._tmpCanvas.getContext("2d",{alpha:this._config.allowTransparency,willReadFrequently:!0}))}get pages(){return this._pages}dispose(){this._tmpCanvas.remove();for(let e of this.pages)e.canvas.remove();this._onAddTextureAtlasCanvas.dispose()}warmUp(){this._didWarmUp||(this._doWarmUp(),this._didWarmUp=!0)}_doWarmUp(){let e=new goe;for(let i=33;i<126;i++)e.enqueue(()=>{if(!this._cacheMap.get(i,0,0,0)){let n=this._drawToCache(i,0,0,0,!1,void 0);this._cacheMap.set(i,0,0,0,n)}})}beginFrame(){return this._requestClearModel}clearTexture(){if(!(this._pages[0].currentRow.x===0&&this._pages[0].currentRow.y===0)){for(let e of this._pages)e.clear();this._cacheMap.clear(),this._cacheMapCombined.clear(),this._didWarmUp=!1}}_createNewPage(){if(Qc.maxAtlasPages&&this._pages.length>=Math.max(4,Qc.maxAtlasPages)){let i=this._pages.filter(u=>u.canvas.width*2<=(Qc.maxTextureSize||4096)).sort((u,d)=>d.canvas.width!==u.canvas.width?d.canvas.width-u.canvas.width:d.percentageUsed-u.percentageUsed),n=-1,s=0;for(let u=0;uu.glyphs[0].texturePage).sort((u,d)=>u>d?1:-1),l=this.pages.length-r.length,c=this._mergePages(r,l);c.version++;for(let u=o.length-1;u>=0;u--)this._deletePage(o[u]);this.pages.push(c),this._requestClearModel=!0,this._onAddTextureAtlasCanvas.fire(c.canvas)}let e=new Hy(this._document,this._textureSize);return this._pages.push(e),this._activePages.push(e),this._onAddTextureAtlasCanvas.fire(e.canvas),e}_mergePages(e,i){let n=e[0].canvas.width*2,s=new Hy(this._document,n,e);for(let[r,o]of e.entries()){let l=r*o.canvas.width%n,c=Math.floor(r/2)*o.canvas.height;s.ctx.drawImage(o.canvas,l,c);for(let d of o.glyphs)d.texturePage=i,d.sizeClipSpace.x=d.size.x/n,d.sizeClipSpace.y=d.size.y/n,d.texturePosition.x+=l,d.texturePosition.y+=c,d.texturePositionClipSpace.x=d.texturePosition.x/n,d.texturePositionClipSpace.y=d.texturePosition.y/n;this._onRemoveTextureAtlasCanvas.fire(o.canvas);let u=this._activePages.indexOf(o);u!==-1&&this._activePages.splice(u,1)}return s}_deletePage(e){this._pages.splice(e,1);for(let i=e;i=this._config.colors.ansi.length)throw new Error("No color found for idx "+e);return this._config.colors.ansi[e]}_getBackgroundColor(e,i,n,s){if(this._config.allowTransparency)return ys;let r;switch(e){case 16777216:case 33554432:r=this._getColorFromAnsiIndex(i);break;case 50331648:let o=Xc.toColorRGB(i);r=gn.toColor(o[0],o[1],o[2]);break;case 0:default:n?r=af.opaque(this._config.colors.foreground):r=this._config.colors.background;break}return this._config.allowTransparency||(r=af.opaque(r)),r}_getForegroundColor(e,i,n,s,r,o,l,c,u,d){let p=this._getMinimumContrastColor(e,i,n,s,r,o,l,u,c,d);if(p)return p;let g;switch(r){case 16777216:case 33554432:this._config.drawBoldTextInBrightColors&&u&&o<8&&(o+=8),g=this._getColorFromAnsiIndex(o);break;case 50331648:let O=Xc.toColorRGB(o);g=gn.toColor(O[0],O[1],O[2]);break;case 0:default:l?g=this._config.colors.background:g=this._config.colors.foreground}return this._config.allowTransparency&&(g=af.opaque(g)),c&&(g=af.multiplyOpacity(g,roe)),g}_resolveBackgroundRgba(e,i,n){switch(e){case 16777216:case 33554432:return this._getColorFromAnsiIndex(i).rgba;case 50331648:return i<<8;case 0:default:return n?this._config.colors.foreground.rgba:this._config.colors.background.rgba}}_resolveForegroundRgba(e,i,n,s){switch(e){case 16777216:case 33554432:return this._config.drawBoldTextInBrightColors&&s&&i<8&&(i+=8),this._getColorFromAnsiIndex(i).rgba;case 50331648:return i<<8;case 0:default:return n?this._config.colors.background.rgba:this._config.colors.foreground.rgba}}_getMinimumContrastColor(e,i,n,s,r,o,l,c,u,d){if(this._config.minimumContrastRatio===1||d)return;let p=this._getContrastCache(u),g=p.getColor(e,s);if(g!==void 0)return g||void 0;let O=this._resolveBackgroundRgba(i,n,l),_=this._resolveForegroundRgba(r,o,l,c),b=Cl.ensureContrastRatio(O,_,this._config.minimumContrastRatio/(u?2:1));if(!b){p.setColor(e,s,null);return}let x=gn.toColor(b>>24&255,b>>16&255,b>>8&255);return p.setColor(e,s,x),x}_getContrastCache(e){return e?this._config.colors.halfContrastCache:this._config.colors.contrastCache}_drawToCache(e,i,n,s,r,o){let l=typeof e=="number"?String.fromCharCode(e):e;o&&this._tmpCanvas.parentElement!==o&&(this._tmpCanvas.style.display="none",o.append(this._tmpCanvas));let c=Math.min(this._config.deviceCellWidth*Math.max(l.length,2)+Vu*2,this._config.deviceMaxTextureSize);this._tmpCanvas.width=M?M*2-fe:M-fe;fe>=M||Le===0?(this._tmpCtx.setLineDash([Math.round(M),Math.round(M)]),this._tmpCtx.moveTo(Ce+Le,L),this._tmpCtx.lineTo(ye,L)):(this._tmpCtx.setLineDash([Math.round(M),Math.round(M)]),this._tmpCtx.moveTo(Ce,L),this._tmpCtx.lineTo(Ce+Le,L),this._tmpCtx.moveTo(Ce+Le+M,L),this._tmpCtx.lineTo(ye,L)),fe=noe(ye-Ce,M,fe);break;case 5:let as=.6,To=.3,Ao=ye-Ce,Da=Math.floor(as*Ao),$r=Math.floor(To*Ao),Eo=Ao-Da-$r;this._tmpCtx.setLineDash([Da,$r,Eo]),this._tmpCtx.moveTo(Ce,L),this._tmpCtx.lineTo(ye,L);break;case 1:default:this._tmpCtx.moveTo(Ce,L),this._tmpCtx.lineTo(ye,L);break}this._tmpCtx.stroke(),this._tmpCtx.restore()}if(this._tmpCtx.restore(),!R&&this._config.fontSize>=12&&!this._config.allowTransparency&&l!==" "){this._tmpCtx.save(),this._tmpCtx.textBaseline="alphabetic";let Oe=this._tmpCtx.measureText(l);if(this._tmpCtx.restore(),"actualBoundingBoxDescent"in Oe&&Oe.actualBoundingBoxDescent>0){this._tmpCtx.save();let Ce=new Path2D;Ce.rect(K,L-Math.ceil(M/2),this._config.deviceCellWidth*j,he-L+Math.ceil(M/2)),this._tmpCtx.clip(Ce),this._tmpCtx.lineWidth=this._config.devicePixelRatio*3,this._tmpCtx.strokeStyle=Q.css,this._tmpCtx.strokeText(l,U,U+this._config.deviceCharHeight),this._tmpCtx.restore()}}}if(x){let M=Math.max(1,Math.floor(this._config.fontSize*this._config.devicePixelRatio/15)),I=M%2===1?.5:0;this._tmpCtx.lineWidth=M,this._tmpCtx.strokeStyle=this._tmpCtx.fillStyle,this._tmpCtx.beginPath(),this._tmpCtx.moveTo(U,U+I),this._tmpCtx.lineTo(U+this._config.deviceCharWidth*j,U+I),this._tmpCtx.stroke()}if(R||this._tmpCtx.fillText(l,U,U+this._config.deviceCharHeight),l==="_"&&!this._config.allowTransparency){let M=Fy(this._tmpCtx.getImageData(U,U,this._config.deviceCellWidth,this._config.deviceCellHeight),Q,J,B);if(M)for(let I=1;I<=5&&(this._tmpCtx.save(),this._tmpCtx.fillStyle=Q.css,this._tmpCtx.fillRect(0,0,this._tmpCanvas.width,this._tmpCanvas.height),this._tmpCtx.restore(),this._tmpCtx.fillText(l,U,U+this._config.deviceCharHeight-I),M=Fy(this._tmpCtx.getImageData(U,U,this._config.deviceCellWidth,this._config.deviceCellHeight),Q,J,B),!!M);I++);}if(b){let M=Math.max(1,Math.floor(this._config.fontSize*this._config.devicePixelRatio/10)),I=this._tmpCtx.lineWidth%2===1?.5:0;this._tmpCtx.lineWidth=M,this._tmpCtx.strokeStyle=this._tmpCtx.fillStyle,this._tmpCtx.beginPath(),this._tmpCtx.moveTo(U,U+Math.floor(this._config.deviceCharHeight/2)-I),this._tmpCtx.lineTo(U+this._config.deviceCharWidth*j,U+Math.floor(this._config.deviceCharHeight/2)-I),this._tmpCtx.stroke()}this._tmpCtx.restore();let $=this._tmpCtx.getImageData(0,0,this._tmpCanvas.width,this._tmpCanvas.height),D;if(this._config.allowTransparency?D=Eoe($):D=Fy($,Q,J,B),D)return IR;let Z=this._findGlyphBoundingBox($,this._workBoundingBox,c,q,R,U),H,F;for(;;){if(this._activePages.length===0){let M=this._createNewPage();H=M,F=M.currentRow,F.height=Z.size.y;break}H=this._activePages[this._activePages.length-1],F=H.currentRow;for(let M of this._activePages)Z.size.y<=M.currentRow.height&&(H=M,F=M.currentRow);for(let M=this._activePages.length-1;M>=0;M--)for(let I of this._activePages[M].fixedRows)I.height<=F.height&&Z.size.y<=I.height&&(H=this._activePages[M],F=I);if(Z.size.x>this._textureSize){this._overflowSizePage||(this._overflowSizePage=new Hy(this._document,this._config.deviceMaxTextureSize),this.pages.push(this._overflowSizePage),this._requestClearModel=!0,this._onAddTextureAtlasCanvas.fire(this._overflowSizePage.canvas)),H=this._overflowSizePage,F=this._overflowSizePage.currentRow,F.x+Z.size.x>=H.canvas.width&&(F.x=0,F.y+=F.height,F.height=0);break}if(F.y+Z.size.y>=H.canvas.height||F.height>Z.size.y+2){let M=!1;if(H.currentRow.y+H.currentRow.height+Z.size.y>=H.canvas.height){let I;for(let K of this._activePages)if(K.currentRow.y+K.currentRow.height+Z.size.y=Qc.maxAtlasPages&&F.y+Z.size.y<=H.canvas.height&&F.height>=Z.size.y&&F.x+Z.size.x<=H.canvas.width)M=!0;else{let K=this._createNewPage();H=K,F=K.currentRow,F.height=Z.size.y,M=!0}}M||(H.currentRow.height>0&&H.fixedRows.push(H.currentRow),F={x:0,y:H.currentRow.y+H.currentRow.height,height:Z.size.y},H.fixedRows.push(F),H.currentRow={x:0,y:F.y+F.height,height:0})}if(F.x+Z.size.x<=H.canvas.width)break;F===H.currentRow?(F.x=0,F.y+=F.height,F.height=0):H.fixedRows.splice(H.fixedRows.indexOf(F),1)}return Z.texturePage=this._pages.indexOf(H),Z.texturePosition.x=F.x,Z.texturePosition.y=F.y,Z.texturePositionClipSpace.x=F.x/H.canvas.width,Z.texturePositionClipSpace.y=F.y/H.canvas.height,Z.sizeClipSpace.x/=H.canvas.width,Z.sizeClipSpace.y/=H.canvas.height,F.height=Math.max(F.height,Z.size.y),F.x+=Z.size.x,H.ctx.putImageData($,Z.texturePosition.x-this._workBoundingBox.left,Z.texturePosition.y-this._workBoundingBox.top,this._workBoundingBox.left,this._workBoundingBox.top,Z.size.x,Z.size.y),H.addGlyph(Z),H.version++,Z}_findGlyphBoundingBox(e,i,n,s,r,o){i.top=0;let l=s?this._config.deviceCellHeight:this._tmpCanvas.height,c=s?this._config.deviceCellWidth:n,u=!1;for(let d=0;d=o;d--){for(let p=0;p=0;d--){for(let p=0;p>>24,r=e.rgba>>>16&255,o=e.rgba>>>8&255,l=i.rgba>>>24,c=i.rgba>>>16&255,u=i.rgba>>>8&255,d=Math.floor((Math.abs(s-l)+Math.abs(r-c)+Math.abs(o-u))/12),p=!0;for(let g=0;g0)return!1;return!0}function PN(t,e,i){let n=t.createElement("canvas");return n.width=e,n.height=i,n}function Moe(t,e,i,n,s,r,o,l){let c={foreground:r.foreground,background:r.background,cursor:ys,cursorAccent:ys,selectionForeground:ys,selectionBackgroundTransparent:ys,selectionBackgroundOpaque:ys,selectionInactiveBackgroundTransparent:ys,selectionInactiveBackgroundOpaque:ys,overviewRulerBorder:ys,scrollbarSliderBackground:ys,scrollbarSliderHoverBackground:ys,scrollbarSliderActiveBackground:ys,ansi:r.ansi.slice(),contrastCache:r.contrastCache,halfContrastCache:r.halfContrastCache};return{customGlyphs:s.customGlyphs,devicePixelRatio:o,deviceMaxTextureSize:l,letterSpacing:s.letterSpacing,lineHeight:s.lineHeight,deviceCellWidth:t,deviceCellHeight:e,deviceCharWidth:i,deviceCharHeight:n,fontFamily:s.fontFamily,fontSize:s.fontSize,fontWeight:s.fontWeight,fontWeightBold:s.fontWeightBold,allowTransparency:s.allowTransparency,drawBoldTextInBrightColors:s.drawBoldTextInBrightColors,minimumContrastRatio:s.minimumContrastRatio,colors:c}}function VR(t,e){for(let i=0;i=0){if(VR(O.config,u))return O.atlas;O.ownedBy.length===1?(O.atlas.dispose(),xs.splice(g,1)):O.ownedBy.splice(_,1);break}}for(let g=0;g{this._renderCallback(),this._animationFrame=void 0})))}_restartInterval(t=Mm){this._blinkInterval&&(this._coreBrowserService.window.clearInterval(this._blinkInterval),this._blinkInterval=void 0),this._blinkStartTimeout=this._coreBrowserService.window.setTimeout(()=>{if(this._animationTimeRestarted){let e=Mm-(Date.now()-this._animationTimeRestarted);if(this._animationTimeRestarted=void 0,e>0){this._restartInterval(e);return}}this.isCursorVisible=!1,this._animationFrame=this._coreBrowserService.window.requestAnimationFrame(()=>{this._renderCallback(),this._animationFrame=void 0}),this._blinkInterval=this._coreBrowserService.window.setInterval(()=>{if(this._animationTimeRestarted){let e=Mm-(Date.now()-this._animationTimeRestarted);this._animationTimeRestarted=void 0,this._restartInterval(e);return}this.isCursorVisible=!this.isCursorVisible,this._animationFrame=this._coreBrowserService.window.requestAnimationFrame(()=>{this._renderCallback(),this._animationFrame=void 0})},Mm)},t)}pause(){this.isCursorVisible=!0,this._blinkInterval&&(this._coreBrowserService.window.clearInterval(this._blinkInterval),this._blinkInterval=void 0),this._blinkStartTimeout&&(this._coreBrowserService.window.clearTimeout(this._blinkStartTimeout),this._blinkStartTimeout=void 0),this._animationFrame&&(this._coreBrowserService.window.cancelAnimationFrame(this._animationFrame),this._animationFrame=void 0)}resume(){this.pause(),this._animationTimeRestarted=void 0,this._restartInterval(),this.restartBlinkAnimation()}};function ZR(t,e,i){let n=new e.ResizeObserver(s=>{let r=s.find(c=>c.target===t);if(!r)return;if(!("devicePixelContentBoxSize"in r)){n==null||n.disconnect(),n=void 0;return}let o=r.devicePixelContentBoxSize[0].inlineSize,l=r.devicePixelContentBoxSize[0].blockSize;o>0&&l>0&&i(o,l)});try{n.observe(t,{box:["device-pixel-content-box"]})}catch{n.disconnect(),n=void 0}return sn(()=>n==null?void 0:n.disconnect())}function Qoe(t){return t>65535?(t-=65536,String.fromCharCode((t>>10)+55296)+String.fromCharCode(t%1024+56320)):String.fromCharCode(t)}var qR=class QN extends Xc{constructor(){super(...arguments),this.content=0,this.fg=0,this.bg=0,this.extended=new CN,this.combinedData=""}static fromCharData(e){let i=new QN;return i.setFromCharData(e),i}isCombined(){return this.content&2097152}getWidth(){return this.content>>22}getChars(){return this.content&2097152?this.combinedData:this.content&2097151?Qoe(this.content&2097151):""}getCode(){return this.isCombined()?this.combinedData.charCodeAt(this.combinedData.length-1):this.content&2097151}setFromCharData(e){this.fg=e[0],this.bg=0;let i=!1;if(e[1].length>2)i=!0;else if(e[1].length===2){let n=e[1].charCodeAt(0);if(55296<=n&&n<=56319){let s=e[1].charCodeAt(1);56320<=s&&s<=57343?this.content=(n-55296)*1024+s-56320+65536|e[2]<<22:i=!0}else i=!0}else this.content=e[1].charCodeAt(0)|e[2]<<22;i&&(this.combinedData=e[1],this.content=2097152|e[2]<<22)}getAsCharData(){return[this.fg,this.getChars(),this.getWidth(),this.getCode()]}},LN=new Float32Array([2,0,0,0,0,-2,0,0,0,0,1,0,-1,1,0,1]);function DN(t,e,i){let n=li(t.createProgram());if(t.attachShader(n,li(WR(t,t.VERTEX_SHADER,e))),t.attachShader(n,li(WR(t,t.FRAGMENT_SHADER,i))),t.linkProgram(n),t.getProgramParameter(n,t.LINK_STATUS))return n;console.error(t.getProgramInfoLog(n)),t.deleteProgram(n)}function WR(t,e,i){let n=li(t.createShader(e));if(t.shaderSource(n,i),t.compileShader(n),t.getShaderParameter(n,t.COMPILE_STATUS))return n;console.error(t.getShaderInfoLog(n)),t.deleteShader(n)}function Loe(t,e){let i=Math.min(t.length*2,e),n=new Float32Array(i);for(let s=0;sr.deleteProgram(this._program))),this._projectionLocation=li(r.getUniformLocation(this._program,"u_projection")),this._resolutionLocation=li(r.getUniformLocation(this._program,"u_resolution")),this._textureLocation=li(r.getUniformLocation(this._program,"u_texture")),this._vertexArrayObject=r.createVertexArray(),r.bindVertexArray(this._vertexArrayObject);let s=new Float32Array([0,0,1,0,0,1,1,1]),o=r.createBuffer();this._register(rn(()=>r.deleteBuffer(o))),r.bindBuffer(r.ARRAY_BUFFER,o),r.bufferData(r.ARRAY_BUFFER,s,r.STATIC_DRAW),r.enableVertexAttribArray(0),r.vertexAttribPointer(0,2,this._gl.FLOAT,!1,0,0);let l=new Uint8Array([0,1,2,3]),c=r.createBuffer();this._register(rn(()=>r.deleteBuffer(c))),r.bindBuffer(r.ELEMENT_ARRAY_BUFFER,c),r.bufferData(r.ELEMENT_ARRAY_BUFFER,l,r.STATIC_DRAW),this._attributesBuffer=li(r.createBuffer()),this._register(rn(()=>r.deleteBuffer(this._attributesBuffer))),r.bindBuffer(r.ARRAY_BUFFER,this._attributesBuffer),r.enableVertexAttribArray(2),r.vertexAttribPointer(2,2,r.FLOAT,!1,kc,0),r.vertexAttribDivisor(2,1),r.enableVertexAttribArray(3),r.vertexAttribPointer(3,2,r.FLOAT,!1,kc,2*Float32Array.BYTES_PER_ELEMENT),r.vertexAttribDivisor(3,1),r.enableVertexAttribArray(4),r.vertexAttribPointer(4,1,r.FLOAT,!1,kc,4*Float32Array.BYTES_PER_ELEMENT),r.vertexAttribDivisor(4,1),r.enableVertexAttribArray(5),r.vertexAttribPointer(5,2,r.FLOAT,!1,kc,5*Float32Array.BYTES_PER_ELEMENT),r.vertexAttribDivisor(5,1),r.enableVertexAttribArray(6),r.vertexAttribPointer(6,2,r.FLOAT,!1,kc,7*Float32Array.BYTES_PER_ELEMENT),r.vertexAttribDivisor(6,1),r.enableVertexAttribArray(1),r.vertexAttribPointer(1,2,r.FLOAT,!1,kc,9*Float32Array.BYTES_PER_ELEMENT),r.vertexAttribDivisor(1,1),r.useProgram(this._program);let u=new Int32Array(ha.maxAtlasPages);for(let d=0;dr.deleteTexture(p.texture))),r.activeTexture(r.TEXTURE0+d),r.bindTexture(r.TEXTURE_2D,p.texture),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_WRAP_S,r.CLAMP_TO_EDGE),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_WRAP_T,r.CLAMP_TO_EDGE),r.texImage2D(r.TEXTURE_2D,0,r.RGBA,1,1,0,r.RGBA,r.UNSIGNED_BYTE,new Uint8Array([255,0,0,255])),this._atlasTextures[d]=p}r.enable(r.BLEND),r.blendFunc(r.SRC_ALPHA,r.ONE_MINUS_SRC_ALPHA),this.handleResize()}beginFrame(){return this._atlas?this._atlas.beginFrame():!0}updateCell(t,e,i,n,r,s,o,l,c){this._updateCell(this._vertices.attributes,t,e,i,n,r,s,o,l,c)}_updateCell(t,e,i,n,r,s,o,l,c,u){if(Vt=(i*this._terminal.cols+e)*ua,n===0||n===void 0){t.fill(0,Vt,Vt+ua-1-zoe);return}this._atlas&&(l&&l.length>1?Mt=this._atlas.getRasterizedGlyphCombinedChar(l,r,s,o,!1,this._terminal.element):Mt=this._atlas.getRasterizedGlyph(n,r,s,o,!1,this._terminal.element),Gy=Math.floor((this._dimensions.device.cell.width-this._dimensions.device.char.width)/2),r!==u&&Mt.offset.x>Gy?(Zu=Mt.offset.x-Gy,t[Vt]=-(Mt.offset.x-Zu)+this._dimensions.device.char.left,t[Vt+1]=-Mt.offset.y+this._dimensions.device.char.top,t[Vt+2]=(Mt.size.x-Zu)/this._dimensions.device.canvas.width,t[Vt+3]=Mt.size.y/this._dimensions.device.canvas.height,t[Vt+4]=Mt.texturePage,t[Vt+5]=Mt.texturePositionClipSpace.x+Zu/this._atlas.pages[Mt.texturePage].canvas.width,t[Vt+6]=Mt.texturePositionClipSpace.y,t[Vt+7]=Mt.sizeClipSpace.x-Zu/this._atlas.pages[Mt.texturePage].canvas.width,t[Vt+8]=Mt.sizeClipSpace.y):(t[Vt]=-Mt.offset.x+this._dimensions.device.char.left,t[Vt+1]=-Mt.offset.y+this._dimensions.device.char.top,t[Vt+2]=Mt.size.x/this._dimensions.device.canvas.width,t[Vt+3]=Mt.size.y/this._dimensions.device.canvas.height,t[Vt+4]=Mt.texturePage,t[Vt+5]=Mt.texturePositionClipSpace.x,t[Vt+6]=Mt.texturePositionClipSpace.y,t[Vt+7]=Mt.sizeClipSpace.x,t[Vt+8]=Mt.sizeClipSpace.y),this._optionsService.rawOptions.rescaleOverlappingGlyphs&&toe(n,c,Mt.size.x,this._dimensions.device.cell.width)&&(t[Vt+2]=(this._dimensions.device.cell.width-1)/this._dimensions.device.canvas.width))}clear(){let t=this._terminal,e=t.cols*t.rows*ua;this._vertices.count!==e?this._vertices.attributes=new Float32Array(e):this._vertices.attributes.fill(0);let i=0;for(;i=t.rows||c<0){this.clear();return}this.hasSelection=!0,this.columnSelectMode=n,this.viewportStartRow=s,this.viewportEndRow=o,this.viewportCappedStartRow=l,this.viewportCappedEndRow=c,this.startCol=e[0],this.endCol=i[0]}isCellSelected(t,e,i){return this.hasSelection?(i-=t.buffer.active.viewportY,this.columnSelectMode?this.startCol<=this.endCol?e>=this.startCol&&i>=this.viewportCappedStartRow&&e=this.viewportCappedStartRow&&e>=this.endCol&&i<=this.viewportCappedEndRow:i>this.viewportStartRow&&i=this.startCol&&e=this.startCol):!1}};function Ioe(){return new joe}var nO=4,sg=1,og=2,Ky=3,Voe=2147483648,Xoe=class{constructor(){this.cells=new Uint32Array(0),this.lineLengths=new Uint32Array(0),this.selection=Ioe()}resize(t,e){let i=t*e*nO;i!==this.cells.length&&(this.cells=new Uint32Array(i),this.lineLengths=new Uint32Array(e))}clear(){this.cells.fill(0,0),this.lineLengths.fill(0,0)}},Zoe=`#version 300 es +}`}var da=11,kc=da*Float32Array.BYTES_PER_ELEMENT,Noe=2,Vt=0,Mt,Gy=0,Zu=0,zoe=class extends Fs{constructor(t,e,i,n){super(),this._terminal=t,this._gl=e,this._dimensions=i,this._optionsService=n,this._activeBuffer=0,this._vertices={count:0,attributes:new Float32Array(0),attributesBuffers:[new Float32Array(0),new Float32Array(0)]};let s=this._gl;fa.maxAtlasPages===void 0&&(fa.maxAtlasPages=Math.min(32,li(s.getParameter(s.MAX_TEXTURE_IMAGE_UNITS))),fa.maxTextureSize=li(s.getParameter(s.MAX_TEXTURE_SIZE))),this._program=li(DN(s,Boe,$oe(fa.maxAtlasPages))),this._register(sn(()=>s.deleteProgram(this._program))),this._projectionLocation=li(s.getUniformLocation(this._program,"u_projection")),this._resolutionLocation=li(s.getUniformLocation(this._program,"u_resolution")),this._textureLocation=li(s.getUniformLocation(this._program,"u_texture")),this._vertexArrayObject=s.createVertexArray(),s.bindVertexArray(this._vertexArrayObject);let r=new Float32Array([0,0,1,0,0,1,1,1]),o=s.createBuffer();this._register(sn(()=>s.deleteBuffer(o))),s.bindBuffer(s.ARRAY_BUFFER,o),s.bufferData(s.ARRAY_BUFFER,r,s.STATIC_DRAW),s.enableVertexAttribArray(0),s.vertexAttribPointer(0,2,this._gl.FLOAT,!1,0,0);let l=new Uint8Array([0,1,2,3]),c=s.createBuffer();this._register(sn(()=>s.deleteBuffer(c))),s.bindBuffer(s.ELEMENT_ARRAY_BUFFER,c),s.bufferData(s.ELEMENT_ARRAY_BUFFER,l,s.STATIC_DRAW),this._attributesBuffer=li(s.createBuffer()),this._register(sn(()=>s.deleteBuffer(this._attributesBuffer))),s.bindBuffer(s.ARRAY_BUFFER,this._attributesBuffer),s.enableVertexAttribArray(2),s.vertexAttribPointer(2,2,s.FLOAT,!1,kc,0),s.vertexAttribDivisor(2,1),s.enableVertexAttribArray(3),s.vertexAttribPointer(3,2,s.FLOAT,!1,kc,2*Float32Array.BYTES_PER_ELEMENT),s.vertexAttribDivisor(3,1),s.enableVertexAttribArray(4),s.vertexAttribPointer(4,1,s.FLOAT,!1,kc,4*Float32Array.BYTES_PER_ELEMENT),s.vertexAttribDivisor(4,1),s.enableVertexAttribArray(5),s.vertexAttribPointer(5,2,s.FLOAT,!1,kc,5*Float32Array.BYTES_PER_ELEMENT),s.vertexAttribDivisor(5,1),s.enableVertexAttribArray(6),s.vertexAttribPointer(6,2,s.FLOAT,!1,kc,7*Float32Array.BYTES_PER_ELEMENT),s.vertexAttribDivisor(6,1),s.enableVertexAttribArray(1),s.vertexAttribPointer(1,2,s.FLOAT,!1,kc,9*Float32Array.BYTES_PER_ELEMENT),s.vertexAttribDivisor(1,1),s.useProgram(this._program);let u=new Int32Array(fa.maxAtlasPages);for(let d=0;ds.deleteTexture(p.texture))),s.activeTexture(s.TEXTURE0+d),s.bindTexture(s.TEXTURE_2D,p.texture),s.texParameteri(s.TEXTURE_2D,s.TEXTURE_WRAP_S,s.CLAMP_TO_EDGE),s.texParameteri(s.TEXTURE_2D,s.TEXTURE_WRAP_T,s.CLAMP_TO_EDGE),s.texImage2D(s.TEXTURE_2D,0,s.RGBA,1,1,0,s.RGBA,s.UNSIGNED_BYTE,new Uint8Array([255,0,0,255])),this._atlasTextures[d]=p}s.enable(s.BLEND),s.blendFunc(s.SRC_ALPHA,s.ONE_MINUS_SRC_ALPHA),this.handleResize()}beginFrame(){return this._atlas?this._atlas.beginFrame():!0}updateCell(t,e,i,n,s,r,o,l,c){this._updateCell(this._vertices.attributes,t,e,i,n,s,r,o,l,c)}_updateCell(t,e,i,n,s,r,o,l,c,u){if(Vt=(i*this._terminal.cols+e)*da,n===0||n===void 0){t.fill(0,Vt,Vt+da-1-Noe);return}this._atlas&&(l&&l.length>1?Mt=this._atlas.getRasterizedGlyphCombinedChar(l,s,r,o,!1,this._terminal.element):Mt=this._atlas.getRasterizedGlyph(n,s,r,o,!1,this._terminal.element),Gy=Math.floor((this._dimensions.device.cell.width-this._dimensions.device.char.width)/2),s!==u&&Mt.offset.x>Gy?(Zu=Mt.offset.x-Gy,t[Vt]=-(Mt.offset.x-Zu)+this._dimensions.device.char.left,t[Vt+1]=-Mt.offset.y+this._dimensions.device.char.top,t[Vt+2]=(Mt.size.x-Zu)/this._dimensions.device.canvas.width,t[Vt+3]=Mt.size.y/this._dimensions.device.canvas.height,t[Vt+4]=Mt.texturePage,t[Vt+5]=Mt.texturePositionClipSpace.x+Zu/this._atlas.pages[Mt.texturePage].canvas.width,t[Vt+6]=Mt.texturePositionClipSpace.y,t[Vt+7]=Mt.sizeClipSpace.x-Zu/this._atlas.pages[Mt.texturePage].canvas.width,t[Vt+8]=Mt.sizeClipSpace.y):(t[Vt]=-Mt.offset.x+this._dimensions.device.char.left,t[Vt+1]=-Mt.offset.y+this._dimensions.device.char.top,t[Vt+2]=Mt.size.x/this._dimensions.device.canvas.width,t[Vt+3]=Mt.size.y/this._dimensions.device.canvas.height,t[Vt+4]=Mt.texturePage,t[Vt+5]=Mt.texturePositionClipSpace.x,t[Vt+6]=Mt.texturePositionClipSpace.y,t[Vt+7]=Mt.sizeClipSpace.x,t[Vt+8]=Mt.sizeClipSpace.y),this._optionsService.rawOptions.rescaleOverlappingGlyphs&&toe(n,c,Mt.size.x,this._dimensions.device.cell.width)&&(t[Vt+2]=(this._dimensions.device.cell.width-1)/this._dimensions.device.canvas.width))}clear(){let t=this._terminal,e=t.cols*t.rows*da;this._vertices.count!==e?this._vertices.attributes=new Float32Array(e):this._vertices.attributes.fill(0);let i=0;for(;i=t.rows||c<0){this.clear();return}this.hasSelection=!0,this.columnSelectMode=n,this.viewportStartRow=r,this.viewportEndRow=o,this.viewportCappedStartRow=l,this.viewportCappedEndRow=c,this.startCol=e[0],this.endCol=i[0]}isCellSelected(t,e,i){return this.hasSelection?(i-=t.buffer.active.viewportY,this.columnSelectMode?this.startCol<=this.endCol?e>=this.startCol&&i>=this.viewportCappedStartRow&&e=this.viewportCappedStartRow&&e>=this.endCol&&i<=this.viewportCappedEndRow:i>this.viewportStartRow&&i=this.startCol&&e=this.startCol):!1}};function Ioe(){return new joe}var nO=4,rg=1,og=2,Ky=3,Voe=2147483648,Xoe=class{constructor(){this.cells=new Uint32Array(0),this.lineLengths=new Uint32Array(0),this.selection=Ioe()}resize(t,e){let i=t*e*nO;i!==this.cells.length&&(this.cells=new Uint32Array(i),this.lineLengths=new Uint32Array(e))}clear(){this.cells.fill(0,0),this.lineLengths.fill(0,0)}},Zoe=`#version 300 es layout (location = 0) in vec2 a_position; layout (location = 1) in vec2 a_size; layout (location = 2) in vec4 a_color; @@ -201,7 +201,7 @@ out vec4 outColor; void main() { outColor = v_color; -}`,co=8,Jy=co*Float32Array.BYTES_PER_ELEMENT,Woe=20*co,UR=class{constructor(){this.attributes=new Float32Array(Woe),this.count=0}},oo=0,YR=0,HR=0,FR=0,GR=0,KR=0,JR=0,Uoe=class extends Fr{constructor(t,e,i,n){super(),this._terminal=t,this._gl=e,this._dimensions=i,this._themeService=n,this._vertices=new UR,this._verticesCursor=new UR;let r=this._gl;this._program=li(Dz(r,Zoe,qoe)),this._register(rn(()=>r.deleteProgram(this._program))),this._projectionLocation=li(r.getUniformLocation(this._program,"u_projection")),this._vertexArrayObject=r.createVertexArray(),r.bindVertexArray(this._vertexArrayObject);let s=new Float32Array([0,0,1,0,0,1,1,1]),o=r.createBuffer();this._register(rn(()=>r.deleteBuffer(o))),r.bindBuffer(r.ARRAY_BUFFER,o),r.bufferData(r.ARRAY_BUFFER,s,r.STATIC_DRAW),r.enableVertexAttribArray(3),r.vertexAttribPointer(3,2,this._gl.FLOAT,!1,0,0);let l=new Uint8Array([0,1,2,3]),c=r.createBuffer();this._register(rn(()=>r.deleteBuffer(c))),r.bindBuffer(r.ELEMENT_ARRAY_BUFFER,c),r.bufferData(r.ELEMENT_ARRAY_BUFFER,l,r.STATIC_DRAW),this._attributesBuffer=li(r.createBuffer()),this._register(rn(()=>r.deleteBuffer(this._attributesBuffer))),r.bindBuffer(r.ARRAY_BUFFER,this._attributesBuffer),r.enableVertexAttribArray(0),r.vertexAttribPointer(0,2,r.FLOAT,!1,Jy,0),r.vertexAttribDivisor(0,1),r.enableVertexAttribArray(1),r.vertexAttribPointer(1,2,r.FLOAT,!1,Jy,2*Float32Array.BYTES_PER_ELEMENT),r.vertexAttribDivisor(1,1),r.enableVertexAttribArray(2),r.vertexAttribPointer(2,4,r.FLOAT,!1,Jy,4*Float32Array.BYTES_PER_ELEMENT),r.vertexAttribDivisor(2,1),this._updateCachedColors(n.colors),this._register(this._themeService.onChangeColors(u=>{this._updateCachedColors(u),this._updateViewportRectangle()}))}renderBackgrounds(){this._renderVertices(this._vertices)}renderCursor(){this._renderVertices(this._verticesCursor)}_renderVertices(t){let e=this._gl;e.useProgram(this._program),e.bindVertexArray(this._vertexArrayObject),e.uniformMatrix4fv(this._projectionLocation,!1,Lz),e.bindBuffer(e.ARRAY_BUFFER,this._attributesBuffer),e.bufferData(e.ARRAY_BUFFER,t.attributes,e.DYNAMIC_DRAW),e.drawElementsInstanced(this._gl.TRIANGLE_STRIP,4,e.UNSIGNED_BYTE,0,t.count)}handleResize(){this._updateViewportRectangle()}setDimensions(t){this._dimensions=t}_updateCachedColors(t){this._bgFloat=this._colorToFloat32Array(t.background),this._cursorFloat=this._colorToFloat32Array(t.cursor)}_updateViewportRectangle(){this._addRectangleFloat(this._vertices.attributes,0,0,0,this._terminal.cols*this._dimensions.device.cell.width,this._terminal.rows*this._dimensions.device.cell.height,this._bgFloat)}updateBackgrounds(t){let e=this._terminal,i=this._vertices,n=1,r,s,o,l,c,u,d,p,g,O,_;for(r=0;r>24&255)/255,GR=(oo>>16&255)/255,KR=(oo>>8&255)/255,JR=1,this._addRectangle(t.attributes,e,YR,HR,(s-r)*this._dimensions.device.cell.width,this._dimensions.device.cell.height,FR,GR,KR,JR)}_addRectangle(t,e,i,n,r,s,o,l,c,u){t[e]=i/this._dimensions.device.canvas.width,t[e+1]=n/this._dimensions.device.canvas.height,t[e+2]=r/this._dimensions.device.canvas.width,t[e+3]=s/this._dimensions.device.canvas.height,t[e+4]=o,t[e+5]=l,t[e+6]=c,t[e+7]=u}_addRectangleFloat(t,e,i,n,r,s,o){t[e]=i/this._dimensions.device.canvas.width,t[e+1]=n/this._dimensions.device.canvas.height,t[e+2]=r/this._dimensions.device.canvas.width,t[e+3]=s/this._dimensions.device.canvas.height,t[e+4]=o[0],t[e+5]=o[1],t[e+6]=o[2],t[e+7]=o[3]}_colorToFloat32Array(t){return new Float32Array([(t.rgba>>24&255)/255,(t.rgba>>16&255)/255,(t.rgba>>8&255)/255,(t.rgba&255)/255])}},Yoe=class extends Fr{constructor(t,e,i,n,r,s,o,l){super(),this._container=e,this._alpha=r,this._coreBrowserService=s,this._optionsService=o,this._themeService=l,this._deviceCharWidth=0,this._deviceCharHeight=0,this._deviceCellWidth=0,this._deviceCellHeight=0,this._deviceCharLeft=0,this._deviceCharTop=0,this._canvas=this._coreBrowserService.mainDocument.createElement("canvas"),this._canvas.classList.add(`xterm-${i}-layer`),this._canvas.style.zIndex=n.toString(),this._initCanvas(),this._container.appendChild(this._canvas),this._register(this._themeService.onChangeColors(c=>{this._refreshCharAtlas(t,c),this.reset(t)})),this._register(rn(()=>{this._canvas.remove()}))}_initCanvas(){this._ctx=li(this._canvas.getContext("2d",{alpha:this._alpha})),this._alpha||this._clearAll()}handleBlur(t){}handleFocus(t){}handleCursorMove(t){}handleGridChanged(t,e,i){}handleSelectionChanged(t,e,i,n=!1){}_setTransparency(t,e){if(e===this._alpha)return;let i=this._canvas;this._alpha=e,this._canvas=this._canvas.cloneNode(),this._initCanvas(),this._container.replaceChild(this._canvas,i),this._refreshCharAtlas(t,this._themeService.colors),this.handleGridChanged(t,0,t.rows-1)}_refreshCharAtlas(t,e){this._deviceCharWidth<=0&&this._deviceCharHeight<=0||(this._charAtlas=Rz(t,this._optionsService.rawOptions,e,this._deviceCellWidth,this._deviceCellHeight,this._deviceCharWidth,this._deviceCharHeight,this._coreBrowserService.dpr,2048),this._charAtlas.warmUp())}resize(t,e){this._deviceCellWidth=e.device.cell.width,this._deviceCellHeight=e.device.cell.height,this._deviceCharWidth=e.device.char.width,this._deviceCharHeight=e.device.char.height,this._deviceCharLeft=e.device.char.left,this._deviceCharTop=e.device.char.top,this._canvas.width=e.device.canvas.width,this._canvas.height=e.device.canvas.height,this._canvas.style.width=`${e.css.canvas.width}px`,this._canvas.style.height=`${e.css.canvas.height}px`,this._alpha||this._clearAll(),this._refreshCharAtlas(t,this._themeService.colors)}_fillBottomLineAtCells(t,e,i=1){this._ctx.fillRect(t*this._deviceCellWidth,(e+1)*this._deviceCellHeight-this._coreBrowserService.dpr-1,i*this._deviceCellWidth,this._coreBrowserService.dpr)}_clearAll(){this._alpha?this._ctx.clearRect(0,0,this._canvas.width,this._canvas.height):(this._ctx.fillStyle=this._themeService.colors.background.css,this._ctx.fillRect(0,0,this._canvas.width,this._canvas.height))}_clearCells(t,e,i,n){this._alpha?this._ctx.clearRect(t*this._deviceCellWidth,e*this._deviceCellHeight,i*this._deviceCellWidth,n*this._deviceCellHeight):(this._ctx.fillStyle=this._themeService.colors.background.css,this._ctx.fillRect(t*this._deviceCellWidth,e*this._deviceCellHeight,i*this._deviceCellWidth,n*this._deviceCellHeight))}_fillCharTrueColor(t,e,i,n){this._ctx.font=this._getFont(t,!1,!1),this._ctx.textBaseline=yz,this._clipCell(i,n,e.getWidth()),this._ctx.fillText(e.getChars(),i*this._deviceCellWidth+this._deviceCharLeft,n*this._deviceCellHeight+this._deviceCharTop+this._deviceCharHeight)}_clipCell(t,e,i){this._ctx.beginPath(),this._ctx.rect(t*this._deviceCellWidth,e*this._deviceCellHeight,i*this._deviceCellWidth,this._deviceCellHeight),this._ctx.clip()}_getFont(t,e,i){let n=e?t.options.fontWeightBold:t.options.fontWeight;return`${i?"italic":""} ${n} ${t.options.fontSize*this._coreBrowserService.dpr}px ${t.options.fontFamily}`}},Hoe=class extends Yoe{constructor(t,e,i,n,r,s,o){super(i,t,"link",e,!0,r,s,o),this._register(n.onShowLinkUnderline(l=>this._handleShowLinkUnderline(l))),this._register(n.onHideLinkUnderline(l=>this._handleHideLinkUnderline(l)))}resize(t,e){super.resize(t,e),this._state=void 0}reset(t){this._clearCurrentLink()}_clearCurrentLink(){if(this._state){this._clearCells(this._state.x1,this._state.y1,this._state.cols-this._state.x1,1);let t=this._state.y2-this._state.y1-1;t>0&&this._clearCells(0,this._state.y1+1,this._state.cols,t),this._clearCells(0,this._state.y2,this._state.x2,1),this._state=void 0}}_handleShowLinkUnderline(t){if(t.fg===257?this._ctx.fillStyle=this._themeService.colors.background.css:t.fg!==void 0&&Poe(t.fg)?this._ctx.fillStyle=this._themeService.colors.ansi[t.fg].css:this._ctx.fillStyle=this._themeService.colors.foreground.css,t.y1===t.y2)this._fillBottomLineAtCells(t.x1,t.y1,t.x2-t.x1);else{this._fillBottomLineAtCells(t.x1,t.y1,t.cols-t.x1);for(let e=t.y1+1;e=0;Th.indexOf("AppleWebKit")>=0;var Goe=Th.indexOf("Chrome")>=0;!Goe&&Th.indexOf("Safari")>=0;Th.indexOf("Electron/")>=0;Th.indexOf("Android")>=0;var e1=!1;if(typeof yl.matchMedia=="function"){let t=yl.matchMedia("(display-mode: standalone) or (display-mode: window-controls-overlay)"),e=yl.matchMedia("(display-mode: fullscreen)");e1=t.matches,Foe(yl,t,({matches:i})=>{e1&&e.matches||(e1=i)})}var Zc="en",t1=!1,$z=!1,Pm,ag=Zc,eQ=Zc,Koe,Vr,Cl=globalThis,Yi,JQ;typeof Cl.vscode<"u"&&typeof Cl.vscode.process<"u"?Yi=Cl.vscode.process:typeof process<"u"&&typeof((JQ=process==null?void 0:process.versions)==null?void 0:JQ.node)=="string"&&(Yi=process);var eL,Joe=typeof((eL=Yi==null?void 0:Yi.versions)==null?void 0:eL.electron)=="string",eae=Joe&&(Yi==null?void 0:Yi.type)==="renderer",tL;if(typeof Yi=="object"){Yi.platform,Yi.platform,t1=Yi.platform==="linux",t1&&Yi.env.SNAP&&Yi.env.SNAP_REVISION,Yi.env.CI||Yi.env.BUILD_ARTIFACTSTAGINGDIRECTORY,Pm=Zc,ag=Zc;let t=Yi.env.VSCODE_NLS_CONFIG;if(t)try{let e=JSON.parse(t);Pm=e.userLocale,eQ=e.osLocale,ag=e.resolvedLanguage||Zc,Koe=(tL=e.languagePack)==null?void 0:tL.translationsConfigFile}catch{}$z=!0}else typeof navigator=="object"&&!eae?(Vr=navigator.userAgent,Vr.indexOf("Windows")>=0,Vr.indexOf("Macintosh")>=0,(Vr.indexOf("Macintosh")>=0||Vr.indexOf("iPad")>=0||Vr.indexOf("iPhone")>=0)&&navigator.maxTouchPoints&&navigator.maxTouchPoints>0,t1=Vr.indexOf("Linux")>=0,(Vr==null?void 0:Vr.indexOf("Mobi"))>=0,ag=globalThis._VSCODE_NLS_LANGUAGE||Zc,Pm=navigator.language.toLowerCase(),eQ=Pm):console.error("Unable to resolve platform.");var tQ=$z,Ms=Vr,oa=ag,tae;(t=>{function e(){return oa}t.value=e;function i(){return oa.length===2?oa==="en":oa.length>=3?oa[0]==="e"&&oa[1]==="n"&&oa[2]==="-":!1}t.isDefaultVariant=i;function n(){return oa==="en"}t.isDefault=n})(tae||(tae={}));var iae=typeof Cl.postMessage=="function"&&!Cl.importScripts;(()=>{if(iae){let t=[];Cl.addEventListener("message",i=>{if(i.data&&i.data.vscodeScheduleAsyncWork)for(let n=0,r=t.length;n{let n=++e;t.push({id:n,callback:i}),Cl.postMessage({vscodeScheduleAsyncWork:n},"*")}}return t=>setTimeout(t)})();var nae=!!(Ms&&Ms.indexOf("Chrome")>=0);Ms&&Ms.indexOf("Firefox")>=0;!nae&&Ms&&Ms.indexOf("Safari")>=0;Ms&&Ms.indexOf("Edg/")>=0;Ms&&Ms.indexOf("Android")>=0;var Tc=typeof navigator=="object"?navigator:{};tQ||document.queryCommandSupported&&document.queryCommandSupported("copy")||Tc&&Tc.clipboard&&Tc.clipboard.writeText,tQ||Tc&&Tc.clipboard&&Tc.clipboard.readText;var Iw=class{constructor(){this._keyCodeToStr=[],this._strToKeyCode=Object.create(null)}define(t,e){this._keyCodeToStr[t]=e,this._strToKeyCode[e.toLowerCase()]=t}keyCodeToStr(t){return this._keyCodeToStr[t]}strToKeyCode(t){return this._strToKeyCode[t.toLowerCase()]||0}},i1=new Iw,iQ=new Iw,nQ=new Iw;new Array(230);var rae;(t=>{function e(l){return i1.keyCodeToStr(l)}t.toString=e;function i(l){return i1.strToKeyCode(l)}t.fromString=i;function n(l){return iQ.keyCodeToStr(l)}t.toUserSettingsUS=n;function r(l){return nQ.keyCodeToStr(l)}t.toUserSettingsGeneral=r;function s(l){return iQ.strToKeyCode(l)||nQ.strToKeyCode(l)}t.fromUserSettings=s;function o(l){if(l>=98&&l<=113)return null;switch(l){case 16:return"Up";case 18:return"Down";case 15:return"Left";case 17:return"Right"}return i1.keyCodeToStr(l)}t.toElectronAccelerator=o})(rae||(rae={}));var zz=Object.freeze(function(t,e){let i=setTimeout(t.bind(e),0);return{dispose(){clearTimeout(i)}}}),sae;(t=>{function e(i){return i===t.None||i===t.Cancelled||i instanceof oae?!0:!i||typeof i!="object"?!1:typeof i.isCancellationRequested=="boolean"&&typeof i.onCancellationRequested=="function"}t.isCancellationToken=e,t.None=Object.freeze({isCancellationRequested:!1,onCancellationRequested:po.None}),t.Cancelled=Object.freeze({isCancellationRequested:!0,onCancellationRequested:zz})})(sae||(sae={}));var oae=class{constructor(){this._isCancelled=!1,this._emitter=null}cancel(){this._isCancelled||(this._isCancelled=!0,this._emitter&&(this._emitter.fire(void 0),this.dispose()))}get isCancellationRequested(){return this._isCancelled}get onCancellationRequested(){return this._isCancelled?zz:(this._emitter||(this._emitter=new Rt),this._emitter.event)}dispose(){this._emitter&&(this._emitter.dispose(),this._emitter=null)}},aae;(t=>{async function e(n){let r,s=await Promise.all(n.map(o=>o.then(l=>l,l=>{r||(r=l)})));if(typeof r<"u")throw r;return s}t.settled=e;function i(n){return new Promise(async(r,s)=>{try{await n(r,s)}catch(o){s(o)}})}t.withAsyncBody=i})(aae||(aae={}));var rQ=class br{static fromArray(e){return new br(i=>{i.emitMany(e)})}static fromPromise(e){return new br(async i=>{i.emitMany(await e)})}static fromPromises(e){return new br(async i=>{await Promise.all(e.map(async n=>i.emitOne(await n)))})}static merge(e){return new br(async i=>{await Promise.all(e.map(async n=>{for await(let r of n)i.emitOne(r)}))})}constructor(e,i){this._state=0,this._results=[],this._error=null,this._onReturn=i,this._onStateChanged=new Rt,queueMicrotask(async()=>{let n={emitOne:r=>this.emitOne(r),emitMany:r=>this.emitMany(r),reject:r=>this.reject(r)};try{await Promise.resolve(e(n)),this.resolve()}catch(r){this.reject(r)}finally{n.emitOne=void 0,n.emitMany=void 0,n.reject=void 0}})}[Symbol.asyncIterator](){let e=0;return{next:async()=>{do{if(this._state===2)throw this._error;if(e{var i;return(i=this._onReturn)==null||i.call(this),{done:!0,value:void 0}}}}static map(e,i){return new br(async n=>{for await(let r of e)n.emitOne(i(r))})}map(e){return br.map(this,e)}static filter(e,i){return new br(async n=>{for await(let r of e)i(r)&&n.emitOne(r)})}filter(e){return br.filter(this,e)}static coalesce(e){return br.filter(e,i=>!!i)}coalesce(){return br.coalesce(this)}static async toPromise(e){let i=[];for await(let n of e)i.push(n);return i}toPromise(){return br.toPromise(this)}emitOne(e){this._state===0&&(this._results.push(e),this._onStateChanged.fire())}emitMany(e){this._state===0&&(this._results=this._results.concat(e),this._onStateChanged.fire())}resolve(){this._state===0&&(this._state=1,this._onStateChanged.fire())}reject(e){this._state===0&&(this._state=2,this._error=e,this._onStateChanged.fire())}};rQ.EMPTY=rQ.fromArray([]);var{getWindow:lae}=(function(){let t=new Map,e={window:yl,disposables:new eh};t.set(yl.vscodeWindowId,e);let i=new Rt,n=new Rt,r=new Rt;function s(o,l){return(typeof o=="number"?t.get(o):void 0)??(l?e:void 0)}return{onDidRegisterWindow:i.event,onWillUnregisterWindow:r.event,onDidUnregisterWindow:n.event,registerWindow(o){if(t.has(o.vscodeWindowId))return Fr.None;let l=new eh,c={window:o,disposables:l.add(new eh)};return t.set(o.vscodeWindowId,c),l.add(rn(()=>{t.delete(o.vscodeWindowId),n.fire(o)})),l.add(LS(o,hae.BEFORE_UNLOAD,()=>{r.fire(o)})),i.fire(c),l},getWindows(){return t.values()},getWindowsCount(){return t.size},getWindowId(o){return o.vscodeWindowId},hasWindow(o){return t.has(o)},getWindowById:s,getWindow(o){var u;let l=o;if((u=l==null?void 0:l.ownerDocument)!=null&&u.defaultView)return l.ownerDocument.defaultView.window;let c=o;return c!=null&&c.view?c.view.window:yl},getDocument(o){return lae(o).document}}})(),cae=class{constructor(t,e,i,n){this._node=t,this._type=e,this._handler=i,this._options=n||!1,this._node.addEventListener(this._type,this._handler,this._options)}dispose(){this._handler&&(this._node.removeEventListener(this._type,this._handler,this._options),this._node=null,this._handler=null)}};function LS(t,e,i,n){return new cae(t,e,i,n)}var hae={BEFORE_UNLOAD:"beforeunload"},uae=class extends Fr{constructor(t,e,i,n,r,s,o,l,c){super(),this._terminal=t,this._characterJoinerService=e,this._charSizeService=i,this._coreBrowserService=n,this._coreService=r,this._decorationService=s,this._optionsService=o,this._themeService=l,this._cursorBlinkStateManager=new Iu,this._charAtlasDisposable=this._register(new Iu),this._observerDisposable=this._register(new Iu),this._model=new Xoe,this._workCell=new qR,this._workCell2=new qR,this._rectangleRenderer=this._register(new Iu),this._glyphRenderer=this._register(new Iu),this._onChangeTextureAtlas=this._register(new Rt),this.onChangeTextureAtlas=this._onChangeTextureAtlas.event,this._onAddTextureAtlasCanvas=this._register(new Rt),this.onAddTextureAtlasCanvas=this._onAddTextureAtlasCanvas.event,this._onRemoveTextureAtlasCanvas=this._register(new Rt),this.onRemoveTextureAtlasCanvas=this._onRemoveTextureAtlasCanvas.event,this._onRequestRedraw=this._register(new Rt),this.onRequestRedraw=this._onRequestRedraw.event,this._onContextLoss=this._register(new Rt),this.onContextLoss=this._onContextLoss.event,this._canvas=this._coreBrowserService.mainDocument.createElement("canvas");let u={antialias:!1,depth:!1,preserveDrawingBuffer:c};if(this._gl=this._canvas.getContext("webgl2",u),!this._gl)throw new Error("WebGL2 not supported "+this._gl);this._register(this._themeService.onChangeColors(()=>this._handleColorChange())),this._cellColorResolver=new roe(this._terminal,this._optionsService,this._model.selection,this._decorationService,this._coreBrowserService,this._themeService),this._core=this._terminal._core,this._renderLayers=[new Hoe(this._core.screenElement,2,this._terminal,this._core.linkifier,this._coreBrowserService,o,this._themeService)],this.dimensions=ioe(),this._devicePixelRatio=this._coreBrowserService.dpr,this._updateDimensions(),this._updateCursorBlink(),this._register(o.onOptionChange(()=>this._handleOptionsChanged())),this._deviceMaxTextureSize=this._gl.getParameter(this._gl.MAX_TEXTURE_SIZE),this._register(LS(this._canvas,"webglcontextlost",d=>{console.log("webglcontextlost event received"),d.preventDefault(),this._contextRestorationTimeout=setTimeout(()=>{this._contextRestorationTimeout=void 0,console.warn("webgl context not restored; firing onContextLoss"),this._onContextLoss.fire(d)},3e3)})),this._register(LS(this._canvas,"webglcontextrestored",d=>{console.warn("webglcontextrestored event received"),clearTimeout(this._contextRestorationTimeout),this._contextRestorationTimeout=void 0,XR(this._terminal),this._initializeWebGLState(),this._requestRedrawViewport()})),this._observerDisposable.value=ZR(this._canvas,this._coreBrowserService.window,(d,p)=>this._setCanvasDevicePixelDimensions(d,p)),this._register(this._coreBrowserService.onWindowChange(d=>{this._observerDisposable.value=ZR(this._canvas,d,(p,g)=>this._setCanvasDevicePixelDimensions(p,g))})),this._core.screenElement.appendChild(this._canvas),[this._rectangleRenderer.value,this._glyphRenderer.value]=this._initializeWebGLState(),this._isAttached=this._core.screenElement.isConnected,this._register(rn(()=>{var d;for(let p of this._renderLayers)p.dispose();(d=this._canvas.parentElement)==null||d.removeChild(this._canvas),XR(this._terminal)}))}get textureAtlas(){var t;return(t=this._charAtlas)==null?void 0:t.pages[0].canvas}_handleColorChange(){this._refreshCharAtlas(),this._clearModel(!0)}handleDevicePixelRatioChange(){this._devicePixelRatio!==this._coreBrowserService.dpr&&(this._devicePixelRatio=this._coreBrowserService.dpr,this.handleResize(this._terminal.cols,this._terminal.rows))}handleResize(t,e){var i,n,r,s;this._updateDimensions(),this._model.resize(this._terminal.cols,this._terminal.rows);for(let o of this._renderLayers)o.resize(this._terminal,this.dimensions);this._canvas.width=this.dimensions.device.canvas.width,this._canvas.height=this.dimensions.device.canvas.height,this._canvas.style.width=`${this.dimensions.css.canvas.width}px`,this._canvas.style.height=`${this.dimensions.css.canvas.height}px`,this._core.screenElement.style.width=`${this.dimensions.css.canvas.width}px`,this._core.screenElement.style.height=`${this.dimensions.css.canvas.height}px`,(i=this._rectangleRenderer.value)==null||i.setDimensions(this.dimensions),(n=this._rectangleRenderer.value)==null||n.handleResize(),(r=this._glyphRenderer.value)==null||r.setDimensions(this.dimensions),(s=this._glyphRenderer.value)==null||s.handleResize(),this._refreshCharAtlas(),this._clearModel(!1)}handleCharSizeChanged(){this.handleResize(this._terminal.cols,this._terminal.rows)}handleBlur(){var t;for(let e of this._renderLayers)e.handleBlur(this._terminal);(t=this._cursorBlinkStateManager.value)==null||t.pause(),this._requestRedrawViewport()}handleFocus(){var t;for(let e of this._renderLayers)e.handleFocus(this._terminal);(t=this._cursorBlinkStateManager.value)==null||t.resume(),this._requestRedrawViewport()}handleSelectionChanged(t,e,i){for(let n of this._renderLayers)n.handleSelectionChanged(this._terminal,t,e,i);this._model.selection.update(this._core,t,e,i),this._requestRedrawViewport()}handleCursorMove(){var t;for(let e of this._renderLayers)e.handleCursorMove(this._terminal);(t=this._cursorBlinkStateManager.value)==null||t.restartBlinkAnimation()}_handleOptionsChanged(){this._updateDimensions(),this._refreshCharAtlas(),this._updateCursorBlink()}_initializeWebGLState(){return this._rectangleRenderer.value=new Uoe(this._terminal,this._gl,this.dimensions,this._themeService),this._glyphRenderer.value=new Noe(this._terminal,this._gl,this.dimensions,this._optionsService),this.handleCharSizeChanged(),[this._rectangleRenderer.value,this._glyphRenderer.value]}_refreshCharAtlas(){var e;if(this.dimensions.device.char.width<=0&&this.dimensions.device.char.height<=0){this._isAttached=!1;return}let t=Rz(this._terminal,this._optionsService.rawOptions,this._themeService.colors,this.dimensions.device.cell.width,this.dimensions.device.cell.height,this.dimensions.device.char.width,this.dimensions.device.char.height,this._coreBrowserService.dpr,this._deviceMaxTextureSize);this._charAtlas!==t&&(this._onChangeTextureAtlas.fire(t.pages[0].canvas),this._charAtlasDisposable.value=mz(po.forward(t.onAddTextureAtlasCanvas,this._onAddTextureAtlasCanvas),po.forward(t.onRemoveTextureAtlasCanvas,this._onRemoveTextureAtlasCanvas))),this._charAtlas=t,this._charAtlas.warmUp(),(e=this._glyphRenderer.value)==null||e.setAtlas(this._charAtlas)}_clearModel(t){var e;this._model.clear(),t&&((e=this._glyphRenderer.value)==null||e.clear())}clearTextureAtlas(){var t;(t=this._charAtlas)==null||t.clearTexture(),this._clearModel(!0),this._requestRedrawViewport()}clear(){var t;this._clearModel(!0);for(let e of this._renderLayers)e.reset(this._terminal);(t=this._cursorBlinkStateManager.value)==null||t.restartBlinkAnimation(),this._updateCursorBlink()}renderRows(t,e){var i;if(!this._isAttached)if((i=this._core.screenElement)!=null&&i.isConnected&&this._charSizeService.width&&this._charSizeService.height)this._updateDimensions(),this._refreshCharAtlas(),this._isAttached=!0;else return;for(let n of this._renderLayers)n.handleGridChanged(this._terminal,t,e);!this._glyphRenderer.value||!this._rectangleRenderer.value||(this._glyphRenderer.value.beginFrame()?(this._clearModel(!0),this._updateModel(0,this._terminal.rows-1)):this._updateModel(t,e),this._rectangleRenderer.value.renderBackgrounds(),this._glyphRenderer.value.render(this._model),(!this._cursorBlinkStateManager.value||this._cursorBlinkStateManager.value.isCursorVisible)&&this._rectangleRenderer.value.renderCursor())}_updateCursorBlink(){this._coreService.decPrivateModes.cursorBlink??this._terminal.options.cursorBlink?this._cursorBlinkStateManager.value=new Roe(()=>{this._requestRedrawCursor()},this._coreBrowserService):this._cursorBlinkStateManager.clear(),this._requestRedrawCursor()}_updateModel(t,e){let i=this._core,n=this._workCell,r,s,o,l,c,u,d=0,p=!0,g,O,_,b,x,w,k,T,A;t=sQ(t,i.rows-1,0),e=sQ(e,i.rows-1,0);let Q=this._coreService.decPrivateModes.cursorStyle??i.options.cursorStyle??"block",E=this._terminal.buffer.active.baseY+this._terminal.buffer.active.cursorY,z=E-i.buffer.ydisp,N=Math.min(this._terminal.buffer.active.cursorX,i.cols-1),q=-1,J=this._coreService.isCursorInitialized&&!this._coreService.isCursorHidden&&(!this._cursorBlinkStateManager.value||this._cursorBlinkStateManager.value.isCursorVisible);this._model.cursor=void 0;let U=!1;for(s=t;s<=e;s++)for(o=s+i.buffer.ydisp,l=i.buffer.lines.get(o),this._model.lineLengths[s]=0,_=E===o,d=0,c=this._characterJoinerService.getJoinedCharacters(o),T=0;T=d,g=T,c.length>0&&T===c[0][0]&&p){O=c.shift();let R=this._model.selection.isCellSelected(this._terminal,O[0],o);for(k=O[0]+1;k=O[1]),p?(u=!0,n=new fae(n,l.translateToString(!0,O[0],O[1]),O[1]-O[0]),g=O[1]-1):d=O[1]}if(b=n.getChars(),x=n.getCode(),k=(s*i.cols+T)*nO,this._cellColorResolver.resolve(n,T,o,this.dimensions.device.cell.width),J&&o===E&&(T===N&&(this._model.cursor={x:N,y:z,width:n.getWidth(),style:this._coreBrowserService.isFocused?Q:i.options.cursorInactiveStyle,cursorWidth:i.options.cursorWidth,dpr:this._devicePixelRatio},q=N+n.getWidth()-1),T>=N&&T<=q&&(this._coreBrowserService.isFocused&&Q==="block"||this._coreBrowserService.isFocused===!1&&i.options.cursorInactiveStyle==="block")&&(this._cellColorResolver.result.fg=50331648|this._themeService.colors.cursorAccent.rgba>>8&16777215,this._cellColorResolver.result.bg=50331648|this._themeService.colors.cursor.rgba>>8&16777215)),x!==0&&(this._model.lineLengths[s]=T+1),!(this._model.cells[k]===x&&this._model.cells[k+sg]===this._cellColorResolver.result.bg&&this._model.cells[k+og]===this._cellColorResolver.result.fg&&this._model.cells[k+Ky]===this._cellColorResolver.result.ext)&&(U=!0,b.length>1&&(x|=Voe),this._model.cells[k]=x,this._model.cells[k+sg]=this._cellColorResolver.result.bg,this._model.cells[k+og]=this._cellColorResolver.result.fg,this._model.cells[k+Ky]=this._cellColorResolver.result.ext,w=n.getWidth(),this._glyphRenderer.value.updateCell(T,s,x,this._cellColorResolver.result.bg,this._cellColorResolver.result.fg,this._cellColorResolver.result.ext,b,w,r),u)){for(n=this._workCell,T++;T<=g;T++)A=(s*i.cols+T)*nO,this._glyphRenderer.value.updateCell(T,s,0,0,0,0,Hse,0,0),this._model.cells[A]=0,this._model.cells[A+sg]=this._cellColorResolver.result.bg,this._model.cells[A+og]=this._cellColorResolver.result.fg,this._model.cells[A+Ky]=this._cellColorResolver.result.ext;T--}}U&&this._rectangleRenderer.value.updateBackgrounds(this._model),this._rectangleRenderer.value.updateCursor(this._model)}_updateDimensions(){!this._charSizeService.width||!this._charSizeService.height||(this.dimensions.device.char.width=Math.floor(this._charSizeService.width*this._devicePixelRatio),this.dimensions.device.char.height=Math.ceil(this._charSizeService.height*this._devicePixelRatio),this.dimensions.device.cell.height=Math.floor(this.dimensions.device.char.height*this._optionsService.rawOptions.lineHeight),this.dimensions.device.char.top=this._optionsService.rawOptions.lineHeight===1?0:Math.round((this.dimensions.device.cell.height-this.dimensions.device.char.height)/2),this.dimensions.device.cell.width=this.dimensions.device.char.width+Math.round(this._optionsService.rawOptions.letterSpacing),this.dimensions.device.char.left=Math.floor(this._optionsService.rawOptions.letterSpacing/2),this.dimensions.device.canvas.height=this._terminal.rows*this.dimensions.device.cell.height,this.dimensions.device.canvas.width=this._terminal.cols*this.dimensions.device.cell.width,this.dimensions.css.canvas.height=Math.round(this.dimensions.device.canvas.height/this._devicePixelRatio),this.dimensions.css.canvas.width=Math.round(this.dimensions.device.canvas.width/this._devicePixelRatio),this.dimensions.css.cell.height=this.dimensions.device.cell.height/this._devicePixelRatio,this.dimensions.css.cell.width=this.dimensions.device.cell.width/this._devicePixelRatio)}_setCanvasDevicePixelDimensions(t,e){this._canvas.width===t&&this._canvas.height===e||(this._canvas.width=t,this._canvas.height=e,this._requestRedrawViewport())}_requestRedrawViewport(){this._onRequestRedraw.fire({start:0,end:this._terminal.rows-1})}_requestRedrawCursor(){let t=this._terminal.buffer.active.cursorY;this._onRequestRedraw.fire({start:t,end:t})}},fae=class extends Xc{constructor(t,e,i){super(),this.content=0,this.combinedData="",this.fg=t.fg,this.bg=t.bg,this.combinedData=e,this._width=i}isCombined(){return 2097152}getWidth(){return this._width}getChars(){return this.combinedData}getCode(){return 2097151}setFromCharData(t){throw new Error("not implemented")}getAsCharData(){return[this.fg,this.getChars(),this.getWidth(),this.getCode()]}};function sQ(t,e,i=0){return Math.max(Math.min(t,e),i)}var oQ="di$target",aQ="di$dependencies",n1=new Map;function Ls(t){if(n1.has(t))return n1.get(t);let e=function(i,n,r){if(arguments.length!==3)throw new Error("@IServiceName-decorator can only be used to decorate a parameter");dae(e,i,r)};return e._id=t,n1.set(t,e),e}function dae(t,e,i){e[oQ]===e?e[aQ].push({id:t,index:i}):(e[aQ]=[{id:t,index:i}],e[oQ]=e)}Ls("BufferService");Ls("CoreMouseService");Ls("CoreService");Ls("CharsetService");Ls("InstantiationService");Ls("LogService");var pae=Ls("OptionsService");Ls("OscLinkService");Ls("UnicodeService");Ls("DecorationService");var mae={trace:0,debug:1,info:2,warn:3,error:4,off:5},gae="xterm.js: ",lQ=class extends Fr{constructor(t){super(),this._optionsService=t,this._logLevel=5,this._updateLogLevel(),this._register(this._optionsService.onSpecificOptionChange("logLevel",()=>this._updateLogLevel()))}get logLevel(){return this._logLevel}_updateLogLevel(){this._logLevel=mae[this._optionsService.rawOptions.logLevel]}_evalLazyOptionalParams(t){for(let e=0;ethis.activate(t)));return}this._terminal=t;let i=e.coreService,n=e.optionsService,r=e,s=r._renderService,o=r._characterJoinerService,l=r._charSizeService,c=r._coreBrowserService,u=r._decorationService;r._logService;let d=r._themeService;this._renderer=this._register(new uae(t,o,l,c,i,u,n,d,this._preserveDrawingBuffer)),this._register(po.forward(this._renderer.onContextLoss,this._onContextLoss)),this._register(po.forward(this._renderer.onChangeTextureAtlas,this._onChangeTextureAtlas)),this._register(po.forward(this._renderer.onAddTextureAtlasCanvas,this._onAddTextureAtlasCanvas)),this._register(po.forward(this._renderer.onRemoveTextureAtlasCanvas,this._onRemoveTextureAtlasCanvas)),s.setRenderer(this._renderer),this._register(rn(()=>{if(this._terminal._core._store._isDisposed)return;let p=this._terminal._core._renderService;p.setRenderer(this._terminal._core._createRenderer()),p.handleResize(t.cols,t.rows)}))}get textureAtlas(){var t;return(t=this._renderer)==null?void 0:t.textureAtlas}clearTextureAtlas(){var t;(t=this._renderer)==null||t.clearTextureAtlas()}};/** +}`,uo=8,Jy=uo*Float32Array.BYTES_PER_ELEMENT,Woe=20*uo,UR=class{constructor(){this.attributes=new Float32Array(Woe),this.count=0}},lo=0,YR=0,HR=0,FR=0,GR=0,KR=0,JR=0,Uoe=class extends Fs{constructor(t,e,i,n){super(),this._terminal=t,this._gl=e,this._dimensions=i,this._themeService=n,this._vertices=new UR,this._verticesCursor=new UR;let s=this._gl;this._program=li(DN(s,Zoe,qoe)),this._register(sn(()=>s.deleteProgram(this._program))),this._projectionLocation=li(s.getUniformLocation(this._program,"u_projection")),this._vertexArrayObject=s.createVertexArray(),s.bindVertexArray(this._vertexArrayObject);let r=new Float32Array([0,0,1,0,0,1,1,1]),o=s.createBuffer();this._register(sn(()=>s.deleteBuffer(o))),s.bindBuffer(s.ARRAY_BUFFER,o),s.bufferData(s.ARRAY_BUFFER,r,s.STATIC_DRAW),s.enableVertexAttribArray(3),s.vertexAttribPointer(3,2,this._gl.FLOAT,!1,0,0);let l=new Uint8Array([0,1,2,3]),c=s.createBuffer();this._register(sn(()=>s.deleteBuffer(c))),s.bindBuffer(s.ELEMENT_ARRAY_BUFFER,c),s.bufferData(s.ELEMENT_ARRAY_BUFFER,l,s.STATIC_DRAW),this._attributesBuffer=li(s.createBuffer()),this._register(sn(()=>s.deleteBuffer(this._attributesBuffer))),s.bindBuffer(s.ARRAY_BUFFER,this._attributesBuffer),s.enableVertexAttribArray(0),s.vertexAttribPointer(0,2,s.FLOAT,!1,Jy,0),s.vertexAttribDivisor(0,1),s.enableVertexAttribArray(1),s.vertexAttribPointer(1,2,s.FLOAT,!1,Jy,2*Float32Array.BYTES_PER_ELEMENT),s.vertexAttribDivisor(1,1),s.enableVertexAttribArray(2),s.vertexAttribPointer(2,4,s.FLOAT,!1,Jy,4*Float32Array.BYTES_PER_ELEMENT),s.vertexAttribDivisor(2,1),this._updateCachedColors(n.colors),this._register(this._themeService.onChangeColors(u=>{this._updateCachedColors(u),this._updateViewportRectangle()}))}renderBackgrounds(){this._renderVertices(this._vertices)}renderCursor(){this._renderVertices(this._verticesCursor)}_renderVertices(t){let e=this._gl;e.useProgram(this._program),e.bindVertexArray(this._vertexArrayObject),e.uniformMatrix4fv(this._projectionLocation,!1,LN),e.bindBuffer(e.ARRAY_BUFFER,this._attributesBuffer),e.bufferData(e.ARRAY_BUFFER,t.attributes,e.DYNAMIC_DRAW),e.drawElementsInstanced(this._gl.TRIANGLE_STRIP,4,e.UNSIGNED_BYTE,0,t.count)}handleResize(){this._updateViewportRectangle()}setDimensions(t){this._dimensions=t}_updateCachedColors(t){this._bgFloat=this._colorToFloat32Array(t.background),this._cursorFloat=this._colorToFloat32Array(t.cursor)}_updateViewportRectangle(){this._addRectangleFloat(this._vertices.attributes,0,0,0,this._terminal.cols*this._dimensions.device.cell.width,this._terminal.rows*this._dimensions.device.cell.height,this._bgFloat)}updateBackgrounds(t){let e=this._terminal,i=this._vertices,n=1,s,r,o,l,c,u,d,p,g,O,_;for(s=0;s>24&255)/255,GR=(lo>>16&255)/255,KR=(lo>>8&255)/255,JR=1,this._addRectangle(t.attributes,e,YR,HR,(r-s)*this._dimensions.device.cell.width,this._dimensions.device.cell.height,FR,GR,KR,JR)}_addRectangle(t,e,i,n,s,r,o,l,c,u){t[e]=i/this._dimensions.device.canvas.width,t[e+1]=n/this._dimensions.device.canvas.height,t[e+2]=s/this._dimensions.device.canvas.width,t[e+3]=r/this._dimensions.device.canvas.height,t[e+4]=o,t[e+5]=l,t[e+6]=c,t[e+7]=u}_addRectangleFloat(t,e,i,n,s,r,o){t[e]=i/this._dimensions.device.canvas.width,t[e+1]=n/this._dimensions.device.canvas.height,t[e+2]=s/this._dimensions.device.canvas.width,t[e+3]=r/this._dimensions.device.canvas.height,t[e+4]=o[0],t[e+5]=o[1],t[e+6]=o[2],t[e+7]=o[3]}_colorToFloat32Array(t){return new Float32Array([(t.rgba>>24&255)/255,(t.rgba>>16&255)/255,(t.rgba>>8&255)/255,(t.rgba&255)/255])}},Yoe=class extends Fs{constructor(t,e,i,n,s,r,o,l){super(),this._container=e,this._alpha=s,this._coreBrowserService=r,this._optionsService=o,this._themeService=l,this._deviceCharWidth=0,this._deviceCharHeight=0,this._deviceCellWidth=0,this._deviceCellHeight=0,this._deviceCharLeft=0,this._deviceCharTop=0,this._canvas=this._coreBrowserService.mainDocument.createElement("canvas"),this._canvas.classList.add(`xterm-${i}-layer`),this._canvas.style.zIndex=n.toString(),this._initCanvas(),this._container.appendChild(this._canvas),this._register(this._themeService.onChangeColors(c=>{this._refreshCharAtlas(t,c),this.reset(t)})),this._register(sn(()=>{this._canvas.remove()}))}_initCanvas(){this._ctx=li(this._canvas.getContext("2d",{alpha:this._alpha})),this._alpha||this._clearAll()}handleBlur(t){}handleFocus(t){}handleCursorMove(t){}handleGridChanged(t,e,i){}handleSelectionChanged(t,e,i,n=!1){}_setTransparency(t,e){if(e===this._alpha)return;let i=this._canvas;this._alpha=e,this._canvas=this._canvas.cloneNode(),this._initCanvas(),this._container.replaceChild(this._canvas,i),this._refreshCharAtlas(t,this._themeService.colors),this.handleGridChanged(t,0,t.rows-1)}_refreshCharAtlas(t,e){this._deviceCharWidth<=0&&this._deviceCharHeight<=0||(this._charAtlas=RN(t,this._optionsService.rawOptions,e,this._deviceCellWidth,this._deviceCellHeight,this._deviceCharWidth,this._deviceCharHeight,this._coreBrowserService.dpr,2048),this._charAtlas.warmUp())}resize(t,e){this._deviceCellWidth=e.device.cell.width,this._deviceCellHeight=e.device.cell.height,this._deviceCharWidth=e.device.char.width,this._deviceCharHeight=e.device.char.height,this._deviceCharLeft=e.device.char.left,this._deviceCharTop=e.device.char.top,this._canvas.width=e.device.canvas.width,this._canvas.height=e.device.canvas.height,this._canvas.style.width=`${e.css.canvas.width}px`,this._canvas.style.height=`${e.css.canvas.height}px`,this._alpha||this._clearAll(),this._refreshCharAtlas(t,this._themeService.colors)}_fillBottomLineAtCells(t,e,i=1){this._ctx.fillRect(t*this._deviceCellWidth,(e+1)*this._deviceCellHeight-this._coreBrowserService.dpr-1,i*this._deviceCellWidth,this._coreBrowserService.dpr)}_clearAll(){this._alpha?this._ctx.clearRect(0,0,this._canvas.width,this._canvas.height):(this._ctx.fillStyle=this._themeService.colors.background.css,this._ctx.fillRect(0,0,this._canvas.width,this._canvas.height))}_clearCells(t,e,i,n){this._alpha?this._ctx.clearRect(t*this._deviceCellWidth,e*this._deviceCellHeight,i*this._deviceCellWidth,n*this._deviceCellHeight):(this._ctx.fillStyle=this._themeService.colors.background.css,this._ctx.fillRect(t*this._deviceCellWidth,e*this._deviceCellHeight,i*this._deviceCellWidth,n*this._deviceCellHeight))}_fillCharTrueColor(t,e,i,n){this._ctx.font=this._getFont(t,!1,!1),this._ctx.textBaseline=yN,this._clipCell(i,n,e.getWidth()),this._ctx.fillText(e.getChars(),i*this._deviceCellWidth+this._deviceCharLeft,n*this._deviceCellHeight+this._deviceCharTop+this._deviceCharHeight)}_clipCell(t,e,i){this._ctx.beginPath(),this._ctx.rect(t*this._deviceCellWidth,e*this._deviceCellHeight,i*this._deviceCellWidth,this._deviceCellHeight),this._ctx.clip()}_getFont(t,e,i){let n=e?t.options.fontWeightBold:t.options.fontWeight;return`${i?"italic":""} ${n} ${t.options.fontSize*this._coreBrowserService.dpr}px ${t.options.fontFamily}`}},Hoe=class extends Yoe{constructor(t,e,i,n,s,r,o){super(i,t,"link",e,!0,s,r,o),this._register(n.onShowLinkUnderline(l=>this._handleShowLinkUnderline(l))),this._register(n.onHideLinkUnderline(l=>this._handleHideLinkUnderline(l)))}resize(t,e){super.resize(t,e),this._state=void 0}reset(t){this._clearCurrentLink()}_clearCurrentLink(){if(this._state){this._clearCells(this._state.x1,this._state.y1,this._state.cols-this._state.x1,1);let t=this._state.y2-this._state.y1-1;t>0&&this._clearCells(0,this._state.y1+1,this._state.cols,t),this._clearCells(0,this._state.y2,this._state.x2,1),this._state=void 0}}_handleShowLinkUnderline(t){if(t.fg===257?this._ctx.fillStyle=this._themeService.colors.background.css:t.fg!==void 0&&Poe(t.fg)?this._ctx.fillStyle=this._themeService.colors.ansi[t.fg].css:this._ctx.fillStyle=this._themeService.colors.foreground.css,t.y1===t.y2)this._fillBottomLineAtCells(t.x1,t.y1,t.x2-t.x1);else{this._fillBottomLineAtCells(t.x1,t.y1,t.cols-t.x1);for(let e=t.y1+1;e=0;Th.indexOf("AppleWebKit")>=0;var Goe=Th.indexOf("Chrome")>=0;!Goe&&Th.indexOf("Safari")>=0;Th.indexOf("Electron/")>=0;Th.indexOf("Android")>=0;var e1=!1;if(typeof bl.matchMedia=="function"){let t=bl.matchMedia("(display-mode: standalone) or (display-mode: window-controls-overlay)"),e=bl.matchMedia("(display-mode: fullscreen)");e1=t.matches,Foe(bl,t,({matches:i})=>{e1&&e.matches||(e1=i)})}var Zc="en",t1=!1,$N=!1,Pm,ag=Zc,eQ=Zc,Koe,Vs,kl=globalThis,Yi,JQ;typeof kl.vscode<"u"&&typeof kl.vscode.process<"u"?Yi=kl.vscode.process:typeof process<"u"&&typeof((JQ=process==null?void 0:process.versions)==null?void 0:JQ.node)=="string"&&(Yi=process);var eL,Joe=typeof((eL=Yi==null?void 0:Yi.versions)==null?void 0:eL.electron)=="string",eae=Joe&&(Yi==null?void 0:Yi.type)==="renderer",tL;if(typeof Yi=="object"){Yi.platform,Yi.platform,t1=Yi.platform==="linux",t1&&Yi.env.SNAP&&Yi.env.SNAP_REVISION,Yi.env.CI||Yi.env.BUILD_ARTIFACTSTAGINGDIRECTORY,Pm=Zc,ag=Zc;let t=Yi.env.VSCODE_NLS_CONFIG;if(t)try{let e=JSON.parse(t);Pm=e.userLocale,eQ=e.osLocale,ag=e.resolvedLanguage||Zc,Koe=(tL=e.languagePack)==null?void 0:tL.translationsConfigFile}catch{}$N=!0}else typeof navigator=="object"&&!eae?(Vs=navigator.userAgent,Vs.indexOf("Windows")>=0,Vs.indexOf("Macintosh")>=0,(Vs.indexOf("Macintosh")>=0||Vs.indexOf("iPad")>=0||Vs.indexOf("iPhone")>=0)&&navigator.maxTouchPoints&&navigator.maxTouchPoints>0,t1=Vs.indexOf("Linux")>=0,(Vs==null?void 0:Vs.indexOf("Mobi"))>=0,ag=globalThis._VSCODE_NLS_LANGUAGE||Zc,Pm=navigator.language.toLowerCase(),eQ=Pm):console.error("Unable to resolve platform.");var tQ=$N,Pr=Vs,la=ag,tae;(t=>{function e(){return la}t.value=e;function i(){return la.length===2?la==="en":la.length>=3?la[0]==="e"&&la[1]==="n"&&la[2]==="-":!1}t.isDefaultVariant=i;function n(){return la==="en"}t.isDefault=n})(tae||(tae={}));var iae=typeof kl.postMessage=="function"&&!kl.importScripts;(()=>{if(iae){let t=[];kl.addEventListener("message",i=>{if(i.data&&i.data.vscodeScheduleAsyncWork)for(let n=0,s=t.length;n{let n=++e;t.push({id:n,callback:i}),kl.postMessage({vscodeScheduleAsyncWork:n},"*")}}return t=>setTimeout(t)})();var nae=!!(Pr&&Pr.indexOf("Chrome")>=0);Pr&&Pr.indexOf("Firefox")>=0;!nae&&Pr&&Pr.indexOf("Safari")>=0;Pr&&Pr.indexOf("Edg/")>=0;Pr&&Pr.indexOf("Android")>=0;var Tc=typeof navigator=="object"?navigator:{};tQ||document.queryCommandSupported&&document.queryCommandSupported("copy")||Tc&&Tc.clipboard&&Tc.clipboard.writeText,tQ||Tc&&Tc.clipboard&&Tc.clipboard.readText;var Iw=class{constructor(){this._keyCodeToStr=[],this._strToKeyCode=Object.create(null)}define(t,e){this._keyCodeToStr[t]=e,this._strToKeyCode[e.toLowerCase()]=t}keyCodeToStr(t){return this._keyCodeToStr[t]}strToKeyCode(t){return this._strToKeyCode[t.toLowerCase()]||0}},i1=new Iw,iQ=new Iw,nQ=new Iw;new Array(230);var sae;(t=>{function e(l){return i1.keyCodeToStr(l)}t.toString=e;function i(l){return i1.strToKeyCode(l)}t.fromString=i;function n(l){return iQ.keyCodeToStr(l)}t.toUserSettingsUS=n;function s(l){return nQ.keyCodeToStr(l)}t.toUserSettingsGeneral=s;function r(l){return iQ.strToKeyCode(l)||nQ.strToKeyCode(l)}t.fromUserSettings=r;function o(l){if(l>=98&&l<=113)return null;switch(l){case 16:return"Up";case 18:return"Down";case 15:return"Left";case 17:return"Right"}return i1.keyCodeToStr(l)}t.toElectronAccelerator=o})(sae||(sae={}));var NN=Object.freeze(function(t,e){let i=setTimeout(t.bind(e),0);return{dispose(){clearTimeout(i)}}}),rae;(t=>{function e(i){return i===t.None||i===t.Cancelled||i instanceof oae?!0:!i||typeof i!="object"?!1:typeof i.isCancellationRequested=="boolean"&&typeof i.onCancellationRequested=="function"}t.isCancellationToken=e,t.None=Object.freeze({isCancellationRequested:!1,onCancellationRequested:go.None}),t.Cancelled=Object.freeze({isCancellationRequested:!0,onCancellationRequested:NN})})(rae||(rae={}));var oae=class{constructor(){this._isCancelled=!1,this._emitter=null}cancel(){this._isCancelled||(this._isCancelled=!0,this._emitter&&(this._emitter.fire(void 0),this.dispose()))}get isCancellationRequested(){return this._isCancelled}get onCancellationRequested(){return this._isCancelled?NN:(this._emitter||(this._emitter=new Rt),this._emitter.event)}dispose(){this._emitter&&(this._emitter.dispose(),this._emitter=null)}},aae;(t=>{async function e(n){let s,r=await Promise.all(n.map(o=>o.then(l=>l,l=>{s||(s=l)})));if(typeof s<"u")throw s;return r}t.settled=e;function i(n){return new Promise(async(s,r)=>{try{await n(s,r)}catch(o){r(o)}})}t.withAsyncBody=i})(aae||(aae={}));var sQ=class bs{static fromArray(e){return new bs(i=>{i.emitMany(e)})}static fromPromise(e){return new bs(async i=>{i.emitMany(await e)})}static fromPromises(e){return new bs(async i=>{await Promise.all(e.map(async n=>i.emitOne(await n)))})}static merge(e){return new bs(async i=>{await Promise.all(e.map(async n=>{for await(let s of n)i.emitOne(s)}))})}constructor(e,i){this._state=0,this._results=[],this._error=null,this._onReturn=i,this._onStateChanged=new Rt,queueMicrotask(async()=>{let n={emitOne:s=>this.emitOne(s),emitMany:s=>this.emitMany(s),reject:s=>this.reject(s)};try{await Promise.resolve(e(n)),this.resolve()}catch(s){this.reject(s)}finally{n.emitOne=void 0,n.emitMany=void 0,n.reject=void 0}})}[Symbol.asyncIterator](){let e=0;return{next:async()=>{do{if(this._state===2)throw this._error;if(e{var i;return(i=this._onReturn)==null||i.call(this),{done:!0,value:void 0}}}}static map(e,i){return new bs(async n=>{for await(let s of e)n.emitOne(i(s))})}map(e){return bs.map(this,e)}static filter(e,i){return new bs(async n=>{for await(let s of e)i(s)&&n.emitOne(s)})}filter(e){return bs.filter(this,e)}static coalesce(e){return bs.filter(e,i=>!!i)}coalesce(){return bs.coalesce(this)}static async toPromise(e){let i=[];for await(let n of e)i.push(n);return i}toPromise(){return bs.toPromise(this)}emitOne(e){this._state===0&&(this._results.push(e),this._onStateChanged.fire())}emitMany(e){this._state===0&&(this._results=this._results.concat(e),this._onStateChanged.fire())}resolve(){this._state===0&&(this._state=1,this._onStateChanged.fire())}reject(e){this._state===0&&(this._state=2,this._error=e,this._onStateChanged.fire())}};sQ.EMPTY=sQ.fromArray([]);var{getWindow:lae}=(function(){let t=new Map,e={window:bl,disposables:new eh};t.set(bl.vscodeWindowId,e);let i=new Rt,n=new Rt,s=new Rt;function r(o,l){return(typeof o=="number"?t.get(o):void 0)??(l?e:void 0)}return{onDidRegisterWindow:i.event,onWillUnregisterWindow:s.event,onDidUnregisterWindow:n.event,registerWindow(o){if(t.has(o.vscodeWindowId))return Fs.None;let l=new eh,c={window:o,disposables:l.add(new eh)};return t.set(o.vscodeWindowId,c),l.add(sn(()=>{t.delete(o.vscodeWindowId),n.fire(o)})),l.add(LS(o,hae.BEFORE_UNLOAD,()=>{s.fire(o)})),i.fire(c),l},getWindows(){return t.values()},getWindowsCount(){return t.size},getWindowId(o){return o.vscodeWindowId},hasWindow(o){return t.has(o)},getWindowById:r,getWindow(o){var u;let l=o;if((u=l==null?void 0:l.ownerDocument)!=null&&u.defaultView)return l.ownerDocument.defaultView.window;let c=o;return c!=null&&c.view?c.view.window:bl},getDocument(o){return lae(o).document}}})(),cae=class{constructor(t,e,i,n){this._node=t,this._type=e,this._handler=i,this._options=n||!1,this._node.addEventListener(this._type,this._handler,this._options)}dispose(){this._handler&&(this._node.removeEventListener(this._type,this._handler,this._options),this._node=null,this._handler=null)}};function LS(t,e,i,n){return new cae(t,e,i,n)}var hae={BEFORE_UNLOAD:"beforeunload"},uae=class extends Fs{constructor(t,e,i,n,s,r,o,l,c){super(),this._terminal=t,this._characterJoinerService=e,this._charSizeService=i,this._coreBrowserService=n,this._coreService=s,this._decorationService=r,this._optionsService=o,this._themeService=l,this._cursorBlinkStateManager=new Iu,this._charAtlasDisposable=this._register(new Iu),this._observerDisposable=this._register(new Iu),this._model=new Xoe,this._workCell=new qR,this._workCell2=new qR,this._rectangleRenderer=this._register(new Iu),this._glyphRenderer=this._register(new Iu),this._onChangeTextureAtlas=this._register(new Rt),this.onChangeTextureAtlas=this._onChangeTextureAtlas.event,this._onAddTextureAtlasCanvas=this._register(new Rt),this.onAddTextureAtlasCanvas=this._onAddTextureAtlasCanvas.event,this._onRemoveTextureAtlasCanvas=this._register(new Rt),this.onRemoveTextureAtlasCanvas=this._onRemoveTextureAtlasCanvas.event,this._onRequestRedraw=this._register(new Rt),this.onRequestRedraw=this._onRequestRedraw.event,this._onContextLoss=this._register(new Rt),this.onContextLoss=this._onContextLoss.event,this._canvas=this._coreBrowserService.mainDocument.createElement("canvas");let u={antialias:!1,depth:!1,preserveDrawingBuffer:c};if(this._gl=this._canvas.getContext("webgl2",u),!this._gl)throw new Error("WebGL2 not supported "+this._gl);this._register(this._themeService.onChangeColors(()=>this._handleColorChange())),this._cellColorResolver=new soe(this._terminal,this._optionsService,this._model.selection,this._decorationService,this._coreBrowserService,this._themeService),this._core=this._terminal._core,this._renderLayers=[new Hoe(this._core.screenElement,2,this._terminal,this._core.linkifier,this._coreBrowserService,o,this._themeService)],this.dimensions=ioe(),this._devicePixelRatio=this._coreBrowserService.dpr,this._updateDimensions(),this._updateCursorBlink(),this._register(o.onOptionChange(()=>this._handleOptionsChanged())),this._deviceMaxTextureSize=this._gl.getParameter(this._gl.MAX_TEXTURE_SIZE),this._register(LS(this._canvas,"webglcontextlost",d=>{console.log("webglcontextlost event received"),d.preventDefault(),this._contextRestorationTimeout=setTimeout(()=>{this._contextRestorationTimeout=void 0,console.warn("webgl context not restored; firing onContextLoss"),this._onContextLoss.fire(d)},3e3)})),this._register(LS(this._canvas,"webglcontextrestored",d=>{console.warn("webglcontextrestored event received"),clearTimeout(this._contextRestorationTimeout),this._contextRestorationTimeout=void 0,XR(this._terminal),this._initializeWebGLState(),this._requestRedrawViewport()})),this._observerDisposable.value=ZR(this._canvas,this._coreBrowserService.window,(d,p)=>this._setCanvasDevicePixelDimensions(d,p)),this._register(this._coreBrowserService.onWindowChange(d=>{this._observerDisposable.value=ZR(this._canvas,d,(p,g)=>this._setCanvasDevicePixelDimensions(p,g))})),this._core.screenElement.appendChild(this._canvas),[this._rectangleRenderer.value,this._glyphRenderer.value]=this._initializeWebGLState(),this._isAttached=this._core.screenElement.isConnected,this._register(sn(()=>{var d;for(let p of this._renderLayers)p.dispose();(d=this._canvas.parentElement)==null||d.removeChild(this._canvas),XR(this._terminal)}))}get textureAtlas(){var t;return(t=this._charAtlas)==null?void 0:t.pages[0].canvas}_handleColorChange(){this._refreshCharAtlas(),this._clearModel(!0)}handleDevicePixelRatioChange(){this._devicePixelRatio!==this._coreBrowserService.dpr&&(this._devicePixelRatio=this._coreBrowserService.dpr,this.handleResize(this._terminal.cols,this._terminal.rows))}handleResize(t,e){var i,n,s,r;this._updateDimensions(),this._model.resize(this._terminal.cols,this._terminal.rows);for(let o of this._renderLayers)o.resize(this._terminal,this.dimensions);this._canvas.width=this.dimensions.device.canvas.width,this._canvas.height=this.dimensions.device.canvas.height,this._canvas.style.width=`${this.dimensions.css.canvas.width}px`,this._canvas.style.height=`${this.dimensions.css.canvas.height}px`,this._core.screenElement.style.width=`${this.dimensions.css.canvas.width}px`,this._core.screenElement.style.height=`${this.dimensions.css.canvas.height}px`,(i=this._rectangleRenderer.value)==null||i.setDimensions(this.dimensions),(n=this._rectangleRenderer.value)==null||n.handleResize(),(s=this._glyphRenderer.value)==null||s.setDimensions(this.dimensions),(r=this._glyphRenderer.value)==null||r.handleResize(),this._refreshCharAtlas(),this._clearModel(!1)}handleCharSizeChanged(){this.handleResize(this._terminal.cols,this._terminal.rows)}handleBlur(){var t;for(let e of this._renderLayers)e.handleBlur(this._terminal);(t=this._cursorBlinkStateManager.value)==null||t.pause(),this._requestRedrawViewport()}handleFocus(){var t;for(let e of this._renderLayers)e.handleFocus(this._terminal);(t=this._cursorBlinkStateManager.value)==null||t.resume(),this._requestRedrawViewport()}handleSelectionChanged(t,e,i){for(let n of this._renderLayers)n.handleSelectionChanged(this._terminal,t,e,i);this._model.selection.update(this._core,t,e,i),this._requestRedrawViewport()}handleCursorMove(){var t;for(let e of this._renderLayers)e.handleCursorMove(this._terminal);(t=this._cursorBlinkStateManager.value)==null||t.restartBlinkAnimation()}_handleOptionsChanged(){this._updateDimensions(),this._refreshCharAtlas(),this._updateCursorBlink()}_initializeWebGLState(){return this._rectangleRenderer.value=new Uoe(this._terminal,this._gl,this.dimensions,this._themeService),this._glyphRenderer.value=new zoe(this._terminal,this._gl,this.dimensions,this._optionsService),this.handleCharSizeChanged(),[this._rectangleRenderer.value,this._glyphRenderer.value]}_refreshCharAtlas(){var e;if(this.dimensions.device.char.width<=0&&this.dimensions.device.char.height<=0){this._isAttached=!1;return}let t=RN(this._terminal,this._optionsService.rawOptions,this._themeService.colors,this.dimensions.device.cell.width,this.dimensions.device.cell.height,this.dimensions.device.char.width,this.dimensions.device.char.height,this._coreBrowserService.dpr,this._deviceMaxTextureSize);this._charAtlas!==t&&(this._onChangeTextureAtlas.fire(t.pages[0].canvas),this._charAtlasDisposable.value=mN(go.forward(t.onAddTextureAtlasCanvas,this._onAddTextureAtlasCanvas),go.forward(t.onRemoveTextureAtlasCanvas,this._onRemoveTextureAtlasCanvas))),this._charAtlas=t,this._charAtlas.warmUp(),(e=this._glyphRenderer.value)==null||e.setAtlas(this._charAtlas)}_clearModel(t){var e;this._model.clear(),t&&((e=this._glyphRenderer.value)==null||e.clear())}clearTextureAtlas(){var t;(t=this._charAtlas)==null||t.clearTexture(),this._clearModel(!0),this._requestRedrawViewport()}clear(){var t;this._clearModel(!0);for(let e of this._renderLayers)e.reset(this._terminal);(t=this._cursorBlinkStateManager.value)==null||t.restartBlinkAnimation(),this._updateCursorBlink()}renderRows(t,e){var i;if(!this._isAttached)if((i=this._core.screenElement)!=null&&i.isConnected&&this._charSizeService.width&&this._charSizeService.height)this._updateDimensions(),this._refreshCharAtlas(),this._isAttached=!0;else return;for(let n of this._renderLayers)n.handleGridChanged(this._terminal,t,e);!this._glyphRenderer.value||!this._rectangleRenderer.value||(this._glyphRenderer.value.beginFrame()?(this._clearModel(!0),this._updateModel(0,this._terminal.rows-1)):this._updateModel(t,e),this._rectangleRenderer.value.renderBackgrounds(),this._glyphRenderer.value.render(this._model),(!this._cursorBlinkStateManager.value||this._cursorBlinkStateManager.value.isCursorVisible)&&this._rectangleRenderer.value.renderCursor())}_updateCursorBlink(){this._coreService.decPrivateModes.cursorBlink??this._terminal.options.cursorBlink?this._cursorBlinkStateManager.value=new Roe(()=>{this._requestRedrawCursor()},this._coreBrowserService):this._cursorBlinkStateManager.clear(),this._requestRedrawCursor()}_updateModel(t,e){let i=this._core,n=this._workCell,s,r,o,l,c,u,d=0,p=!0,g,O,_,b,x,w,k,T,A;t=rQ(t,i.rows-1,0),e=rQ(e,i.rows-1,0);let Q=this._coreService.decPrivateModes.cursorStyle??i.options.cursorStyle??"block",E=this._terminal.buffer.active.baseY+this._terminal.buffer.active.cursorY,N=E-i.buffer.ydisp,z=Math.min(this._terminal.buffer.active.cursorX,i.cols-1),q=-1,J=this._coreService.isCursorInitialized&&!this._coreService.isCursorHidden&&(!this._cursorBlinkStateManager.value||this._cursorBlinkStateManager.value.isCursorVisible);this._model.cursor=void 0;let U=!1;for(r=t;r<=e;r++)for(o=r+i.buffer.ydisp,l=i.buffer.lines.get(o),this._model.lineLengths[r]=0,_=E===o,d=0,c=this._characterJoinerService.getJoinedCharacters(o),T=0;T=d,g=T,c.length>0&&T===c[0][0]&&p){O=c.shift();let R=this._model.selection.isCellSelected(this._terminal,O[0],o);for(k=O[0]+1;k=O[1]),p?(u=!0,n=new fae(n,l.translateToString(!0,O[0],O[1]),O[1]-O[0]),g=O[1]-1):d=O[1]}if(b=n.getChars(),x=n.getCode(),k=(r*i.cols+T)*nO,this._cellColorResolver.resolve(n,T,o,this.dimensions.device.cell.width),J&&o===E&&(T===z&&(this._model.cursor={x:z,y:N,width:n.getWidth(),style:this._coreBrowserService.isFocused?Q:i.options.cursorInactiveStyle,cursorWidth:i.options.cursorWidth,dpr:this._devicePixelRatio},q=z+n.getWidth()-1),T>=z&&T<=q&&(this._coreBrowserService.isFocused&&Q==="block"||this._coreBrowserService.isFocused===!1&&i.options.cursorInactiveStyle==="block")&&(this._cellColorResolver.result.fg=50331648|this._themeService.colors.cursorAccent.rgba>>8&16777215,this._cellColorResolver.result.bg=50331648|this._themeService.colors.cursor.rgba>>8&16777215)),x!==0&&(this._model.lineLengths[r]=T+1),!(this._model.cells[k]===x&&this._model.cells[k+rg]===this._cellColorResolver.result.bg&&this._model.cells[k+og]===this._cellColorResolver.result.fg&&this._model.cells[k+Ky]===this._cellColorResolver.result.ext)&&(U=!0,b.length>1&&(x|=Voe),this._model.cells[k]=x,this._model.cells[k+rg]=this._cellColorResolver.result.bg,this._model.cells[k+og]=this._cellColorResolver.result.fg,this._model.cells[k+Ky]=this._cellColorResolver.result.ext,w=n.getWidth(),this._glyphRenderer.value.updateCell(T,r,x,this._cellColorResolver.result.bg,this._cellColorResolver.result.fg,this._cellColorResolver.result.ext,b,w,s),u)){for(n=this._workCell,T++;T<=g;T++)A=(r*i.cols+T)*nO,this._glyphRenderer.value.updateCell(T,r,0,0,0,0,Hre,0,0),this._model.cells[A]=0,this._model.cells[A+rg]=this._cellColorResolver.result.bg,this._model.cells[A+og]=this._cellColorResolver.result.fg,this._model.cells[A+Ky]=this._cellColorResolver.result.ext;T--}}U&&this._rectangleRenderer.value.updateBackgrounds(this._model),this._rectangleRenderer.value.updateCursor(this._model)}_updateDimensions(){!this._charSizeService.width||!this._charSizeService.height||(this.dimensions.device.char.width=Math.floor(this._charSizeService.width*this._devicePixelRatio),this.dimensions.device.char.height=Math.ceil(this._charSizeService.height*this._devicePixelRatio),this.dimensions.device.cell.height=Math.floor(this.dimensions.device.char.height*this._optionsService.rawOptions.lineHeight),this.dimensions.device.char.top=this._optionsService.rawOptions.lineHeight===1?0:Math.round((this.dimensions.device.cell.height-this.dimensions.device.char.height)/2),this.dimensions.device.cell.width=this.dimensions.device.char.width+Math.round(this._optionsService.rawOptions.letterSpacing),this.dimensions.device.char.left=Math.floor(this._optionsService.rawOptions.letterSpacing/2),this.dimensions.device.canvas.height=this._terminal.rows*this.dimensions.device.cell.height,this.dimensions.device.canvas.width=this._terminal.cols*this.dimensions.device.cell.width,this.dimensions.css.canvas.height=Math.round(this.dimensions.device.canvas.height/this._devicePixelRatio),this.dimensions.css.canvas.width=Math.round(this.dimensions.device.canvas.width/this._devicePixelRatio),this.dimensions.css.cell.height=this.dimensions.device.cell.height/this._devicePixelRatio,this.dimensions.css.cell.width=this.dimensions.device.cell.width/this._devicePixelRatio)}_setCanvasDevicePixelDimensions(t,e){this._canvas.width===t&&this._canvas.height===e||(this._canvas.width=t,this._canvas.height=e,this._requestRedrawViewport())}_requestRedrawViewport(){this._onRequestRedraw.fire({start:0,end:this._terminal.rows-1})}_requestRedrawCursor(){let t=this._terminal.buffer.active.cursorY;this._onRequestRedraw.fire({start:t,end:t})}},fae=class extends Xc{constructor(t,e,i){super(),this.content=0,this.combinedData="",this.fg=t.fg,this.bg=t.bg,this.combinedData=e,this._width=i}isCombined(){return 2097152}getWidth(){return this._width}getChars(){return this.combinedData}getCode(){return 2097151}setFromCharData(t){throw new Error("not implemented")}getAsCharData(){return[this.fg,this.getChars(),this.getWidth(),this.getCode()]}};function rQ(t,e,i=0){return Math.max(Math.min(t,e),i)}var oQ="di$target",aQ="di$dependencies",n1=new Map;function Br(t){if(n1.has(t))return n1.get(t);let e=function(i,n,s){if(arguments.length!==3)throw new Error("@IServiceName-decorator can only be used to decorate a parameter");dae(e,i,s)};return e._id=t,n1.set(t,e),e}function dae(t,e,i){e[oQ]===e?e[aQ].push({id:t,index:i}):(e[aQ]=[{id:t,index:i}],e[oQ]=e)}Br("BufferService");Br("CoreMouseService");Br("CoreService");Br("CharsetService");Br("InstantiationService");Br("LogService");var pae=Br("OptionsService");Br("OscLinkService");Br("UnicodeService");Br("DecorationService");var mae={trace:0,debug:1,info:2,warn:3,error:4,off:5},gae="xterm.js: ",lQ=class extends Fs{constructor(t){super(),this._optionsService=t,this._logLevel=5,this._updateLogLevel(),this._register(this._optionsService.onSpecificOptionChange("logLevel",()=>this._updateLogLevel()))}get logLevel(){return this._logLevel}_updateLogLevel(){this._logLevel=mae[this._optionsService.rawOptions.logLevel]}_evalLazyOptionalParams(t){for(let e=0;ethis.activate(t)));return}this._terminal=t;let i=e.coreService,n=e.optionsService,s=e,r=s._renderService,o=s._characterJoinerService,l=s._charSizeService,c=s._coreBrowserService,u=s._decorationService;s._logService;let d=s._themeService;this._renderer=this._register(new uae(t,o,l,c,i,u,n,d,this._preserveDrawingBuffer)),this._register(go.forward(this._renderer.onContextLoss,this._onContextLoss)),this._register(go.forward(this._renderer.onChangeTextureAtlas,this._onChangeTextureAtlas)),this._register(go.forward(this._renderer.onAddTextureAtlasCanvas,this._onAddTextureAtlasCanvas)),this._register(go.forward(this._renderer.onRemoveTextureAtlasCanvas,this._onRemoveTextureAtlasCanvas)),r.setRenderer(this._renderer),this._register(sn(()=>{if(this._terminal._core._store._isDisposed)return;let p=this._terminal._core._renderService;p.setRenderer(this._terminal._core._createRenderer()),p.handleResize(t.cols,t.rows)}))}get textureAtlas(){var t;return(t=this._renderer)==null?void 0:t.textureAtlas}clearTextureAtlas(){var t;(t=this._renderer)==null||t.clearTextureAtlas()}};/** * Copyright (c) 2014-2024 The xterm.js authors. All rights reserved. * @license MIT * @@ -212,20 +212,20 @@ void main() { * Fabrice Bellard's javascript vt100 for jslinux: * http://bellard.org/jslinux/ * Copyright (c) 2011 Fabrice Bellard - */var Pi=0,Ri=0,Qi=0,Wt=0,nn;(t=>{function e(r,s,o,l){return l!==void 0?`#${rl(r)}${rl(s)}${rl(o)}${rl(l)}`:`#${rl(r)}${rl(s)}${rl(o)}`}t.toCss=e;function i(r,s,o,l=255){return(r<<24|s<<16|o<<8|l)>>>0}t.toRgba=i;function n(r,s,o,l){return{css:t.toCss(r,s,o,l),rgba:t.toRgba(r,s,o,l)}}t.toColor=n})(nn||(nn={}));var vae;(t=>{function e(c,u){if(Wt=(u.rgba&255)/255,Wt===1)return{css:u.css,rgba:u.rgba};let d=u.rgba>>24&255,p=u.rgba>>16&255,g=u.rgba>>8&255,O=c.rgba>>24&255,_=c.rgba>>16&255,b=c.rgba>>8&255;Pi=O+Math.round((d-O)*Wt),Ri=_+Math.round((p-_)*Wt),Qi=b+Math.round((g-b)*Wt);let x=nn.toCss(Pi,Ri,Qi),w=nn.toRgba(Pi,Ri,Qi);return{css:x,rgba:w}}t.blend=e;function i(c){return(c.rgba&255)===255}t.isOpaque=i;function n(c,u,d){let p=lg.ensureContrastRatio(c.rgba,u.rgba,d);if(p)return nn.toColor(p>>24&255,p>>16&255,p>>8&255)}t.ensureContrastRatio=n;function r(c){let u=(c.rgba|255)>>>0;return[Pi,Ri,Qi]=lg.toChannels(u),{css:nn.toCss(Pi,Ri,Qi),rgba:u}}t.opaque=r;function s(c,u){return Wt=Math.round(u*255),[Pi,Ri,Qi]=lg.toChannels(c.rgba),{css:nn.toCss(Pi,Ri,Qi,Wt),rgba:nn.toRgba(Pi,Ri,Qi,Wt)}}t.opacity=s;function o(c,u){return Wt=c.rgba&255,s(c,Wt*u/255)}t.multiplyOpacity=o;function l(c){return[c.rgba>>24&255,c.rgba>>16&255,c.rgba>>8&255]}t.toColorRGB=l})(vae||(vae={}));var Zi;(t=>{let e,i;try{let r=document.createElement("canvas");r.width=1,r.height=1;let s=r.getContext("2d",{willReadFrequently:!0});s&&(e=s,e.globalCompositeOperation="copy",i=e.createLinearGradient(0,0,1,1))}catch{}function n(r){if(r.match(/#[\da-f]{3,8}/i))switch(r.length){case 4:return Pi=parseInt(r.slice(1,2).repeat(2),16),Ri=parseInt(r.slice(2,3).repeat(2),16),Qi=parseInt(r.slice(3,4).repeat(2),16),nn.toColor(Pi,Ri,Qi);case 5:return Pi=parseInt(r.slice(1,2).repeat(2),16),Ri=parseInt(r.slice(2,3).repeat(2),16),Qi=parseInt(r.slice(3,4).repeat(2),16),Wt=parseInt(r.slice(4,5).repeat(2),16),nn.toColor(Pi,Ri,Qi,Wt);case 7:return{css:r,rgba:(parseInt(r.slice(1),16)<<8|255)>>>0};case 9:return{css:r,rgba:parseInt(r.slice(1),16)>>>0}}let s=r.match(/rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(,\s*(0|1|\d?\.(\d+))\s*)?\)/);if(s)return Pi=parseInt(s[1]),Ri=parseInt(s[2]),Qi=parseInt(s[3]),Wt=Math.round((s[5]===void 0?1:parseFloat(s[5]))*255),nn.toColor(Pi,Ri,Qi,Wt);if(!e||!i)throw new Error("css.toColor: Unsupported css format");if(e.fillStyle=i,e.fillStyle=r,typeof e.fillStyle!="string")throw new Error("css.toColor: Unsupported css format");if(e.fillRect(0,0,1,1),[Pi,Ri,Qi,Wt]=e.getImageData(0,0,1,1).data,Wt!==255)throw new Error("css.toColor: Unsupported css format");return{rgba:nn.toRgba(Pi,Ri,Qi,Wt),css:r}}t.toColor=n})(Zi||(Zi={}));var pn;(t=>{function e(n){return i(n>>16&255,n>>8&255,n&255)}t.relativeLuminance=e;function i(n,r,s){let o=n/255,l=r/255,c=s/255,u=o<=.03928?o/12.92:Math.pow((o+.055)/1.055,2.4),d=l<=.03928?l/12.92:Math.pow((l+.055)/1.055,2.4),p=c<=.03928?c/12.92:Math.pow((c+.055)/1.055,2.4);return u*.2126+d*.7152+p*.0722}t.relativeLuminance2=i})(pn||(pn={}));var lg;(t=>{function e(o,l){if(Wt=(l&255)/255,Wt===1)return l;let c=l>>24&255,u=l>>16&255,d=l>>8&255,p=o>>24&255,g=o>>16&255,O=o>>8&255;return Pi=p+Math.round((c-p)*Wt),Ri=g+Math.round((u-g)*Wt),Qi=O+Math.round((d-O)*Wt),nn.toRgba(Pi,Ri,Qi)}t.blend=e;function i(o,l,c){let u=pn.relativeLuminance(o>>8),d=pn.relativeLuminance(l>>8);if(ao(u,d)>8));if(_>8));return _>x?O:b}return O}let p=r(o,l,c),g=ao(u,pn.relativeLuminance(p>>8));if(g>8));return g>_?p:O}return p}}t.ensureContrastRatio=i;function n(o,l,c){let u=o>>24&255,d=o>>16&255,p=o>>8&255,g=l>>24&255,O=l>>16&255,_=l>>8&255,b=ao(pn.relativeLuminance2(g,O,_),pn.relativeLuminance2(u,d,p));for(;b0||O>0||_>0);)g-=Math.max(0,Math.ceil(g*.1)),O-=Math.max(0,Math.ceil(O*.1)),_-=Math.max(0,Math.ceil(_*.1)),b=ao(pn.relativeLuminance2(g,O,_),pn.relativeLuminance2(u,d,p));return(g<<24|O<<16|_<<8|255)>>>0}t.reduceLuminance=n;function r(o,l,c){let u=o>>24&255,d=o>>16&255,p=o>>8&255,g=l>>24&255,O=l>>16&255,_=l>>8&255,b=ao(pn.relativeLuminance2(g,O,_),pn.relativeLuminance2(u,d,p));for(;b>>0}t.increaseLuminance=r;function s(o){return[o>>24&255,o>>16&255,o>>8&255,o&255]}t.toChannels=s})(lg||(lg={}));function rl(t){let e=t.toString(16);return e.length<2?"0"+e:e}function ao(t,e){return t{let t=[Zi.toColor("#2e3436"),Zi.toColor("#cc0000"),Zi.toColor("#4e9a06"),Zi.toColor("#c4a000"),Zi.toColor("#3465a4"),Zi.toColor("#75507b"),Zi.toColor("#06989a"),Zi.toColor("#d3d7cf"),Zi.toColor("#555753"),Zi.toColor("#ef2929"),Zi.toColor("#8ae234"),Zi.toColor("#fce94f"),Zi.toColor("#729fcf"),Zi.toColor("#ad7fa8"),Zi.toColor("#34e2e2"),Zi.toColor("#eeeeec")],e=[0,95,135,175,215,255];for(let i=0;i<216;i++){let n=e[i/36%6|0],r=e[i/6%6|0],s=e[i%6];t.push({css:nn.toCss(n,r,s),rgba:nn.toRgba(n,r,s)})}for(let i=0;i<24;i++){let n=8+i*10;t.push({css:nn.toCss(n,n,n),rgba:nn.toRgba(n,n,n)})}return t})());function cQ(t,e,i){return Math.max(e,Math.min(t,i))}function yae(t){switch(t){case"&":return"&";case"<":return"<"}return t}var Nz=class{constructor(t){this._buffer=t}serialize(t,e){let i=this._buffer.getNullCell(),n=this._buffer.getNullCell(),r=i,s=t.start.y,o=t.end.y,l=t.start.x,c=t.end.x;this._beforeSerialize(o-s,s,o);for(let u=s;u<=o;u++){let d=this._buffer.getLine(u);if(d){let p=u===t.start.y?l:0,g=u===t.end.y?c:d.length;for(let O=p;O0&&!lo(this._cursorStyle,this._backgroundCell)&&(this._currentRow+=`\x1B[${this._nullCellCount}X`);let i="";if(!e){t-this._firstRow>=this._terminal.rows&&((n=this._buffer.getLine(this._cursorStyleRow))==null||n.getCell(this._cursorStyleCol,this._backgroundCell));let r=this._buffer.getLine(t),s=this._buffer.getLine(t+1);if(!s.isWrapped)i=`\r -`,this._lastCursorRow=t+1,this._lastCursorCol=0;else{i="";let o=r.getCell(r.length-1,this._thisRowLastChar),l=r.getCell(r.length-2,this._thisRowLastSecondChar),c=s.getCell(0,this._nextRowFirstChar),u=c.getWidth()>1,d=!1;(c.getChars()&&u?this._nullCellCount<=1:this._nullCellCount<=0)&&((o.getChars()||o.getWidth()===0)&&lo(o,c)&&(d=!0),u&&(l.getChars()||l.getWidth()===0)&&lo(o,c)&&lo(l,c)&&(d=!0)),d||(i="-".repeat(this._nullCellCount+1),i+="\x1B[1D\x1B[1X",this._nullCellCount>0&&(i+="\x1B[A",i+=`\x1B[${r.length-this._nullCellCount}C`,i+=`\x1B[${this._nullCellCount}X`,i+=`\x1B[${r.length-this._nullCellCount}D`,i+="\x1B[B"),this._lastContentCursorRow=t+1,this._lastContentCursorCol=0,this._lastCursorRow=t+1,this._lastCursorCol=0)}}this._allRows[this._rowIndex]=this._currentRow,this._allRowSeparators[this._rowIndex++]=i,this._currentRow="",this._nullCellCount=0}_diffStyle(t,e){let i=[],n=!jz(t,e),r=!lo(t,e),s=!Iz(t,e);if(n||r||s)if(t.isAttributeDefault())e.isAttributeDefault()||i.push(0);else{if(n){let o=t.getFgColor();t.isFgRGB()?i.push(38,2,o>>>16&255,o>>>8&255,o&255):t.isFgPalette()?o>=16?i.push(38,5,o):i.push(o&8?90+(o&7):30+(o&7)):i.push(39)}if(r){let o=t.getBgColor();t.isBgRGB()?i.push(48,2,o>>>16&255,o>>>8&255,o&255):t.isBgPalette()?o>=16?i.push(48,5,o):i.push(o&8?100+(o&7):40+(o&7)):i.push(49)}s&&(t.isInverse()!==e.isInverse()&&i.push(t.isInverse()?7:27),t.isBold()!==e.isBold()&&i.push(t.isBold()?1:22),t.isUnderline()!==e.isUnderline()&&i.push(t.isUnderline()?4:24),t.isOverline()!==e.isOverline()&&i.push(t.isOverline()?53:55),t.isBlink()!==e.isBlink()&&i.push(t.isBlink()?5:25),t.isInvisible()!==e.isInvisible()&&i.push(t.isInvisible()?8:28),t.isItalic()!==e.isItalic()&&i.push(t.isItalic()?3:23),t.isDim()!==e.isDim()&&i.push(t.isDim()?2:22),t.isStrikethrough()!==e.isStrikethrough()&&i.push(t.isStrikethrough()?9:29))}return i}_nextCell(t,e,i,n){if(t.getWidth()===0)return;let r=t.getChars()==="",s=this._diffStyle(t,this._cursorStyle);if(r?!lo(this._cursorStyle,t):s.length>0){this._nullCellCount>0&&(lo(this._cursorStyle,this._backgroundCell)||(this._currentRow+=`\x1B[${this._nullCellCount}X`),this._currentRow+=`\x1B[${this._nullCellCount}C`,this._nullCellCount=0),this._lastContentCursorRow=this._lastCursorRow=i,this._lastContentCursorCol=this._lastCursorCol=n,this._currentRow+=`\x1B[${s.join(";")}m`;let o=this._buffer.getLine(i);o!==void 0&&(o.getCell(n,this._cursorStyle),this._cursorStyleRow=i,this._cursorStyleCol=n)}r?this._nullCellCount+=t.getWidth():(this._nullCellCount>0&&(lo(this._cursorStyle,this._backgroundCell)?this._currentRow+=`\x1B[${this._nullCellCount}C`:(this._currentRow+=`\x1B[${this._nullCellCount}X`,this._currentRow+=`\x1B[${this._nullCellCount}C`),this._nullCellCount=0),this._currentRow+=t.getChars(),this._lastContentCursorRow=this._lastCursorRow=i,this._lastContentCursorCol=this._lastCursorCol=n+t.getWidth())}_serializeString(t){let e=this._allRows.length;this._buffer.length-this._firstRow<=this._terminal.rows&&(e=this._lastContentCursorRow+1-this._firstRow,this._lastCursorCol=this._lastContentCursorCol,this._lastCursorRow=this._lastContentCursorRow);let i="";for(let s=0;s{u>0?i+=`\x1B[${u}C`:u<0&&(i+=`\x1B[${-u}D`)};l&&((u=>{u>0?i+=`\x1B[${u}B`:u<0&&(i+=`\x1B[${-u}A`)})(s-this._lastCursorRow),c(o-this._lastCursorCol))}let n=this._terminal._core._inputHandler._curAttrData,r=this._diffStyle(n,this._cursorStyle);return r.length>0&&(i+=`\x1B[${r.join(";")}m`),i}},Sae=class{activate(t){this._terminal=t}_serializeBufferByScrollback(t,e,i){let n=e.length,r=i===void 0?n:cQ(i+t.rows,0,n);return this._serializeBufferByRange(t,e,{start:n-r,end:n-1},!1)}_serializeBufferByRange(t,e,i,n){return new bae(e,t).serialize({start:{x:0,y:typeof i.start=="number"?i.start:i.start.line},end:{x:t.cols,y:typeof i.end=="number"?i.end:i.end.line}},n)}_serializeBufferAsHTML(t,e){var l;let i=t.buffer.active,n=new xae(i,t,e),r=e.onlySelection??!1,s=e.range;if(s)return n.serialize({start:{x:s.startCol,y:(s.startLine,s.startLine)},end:{x:t.cols,y:(s.endLine,s.endLine)}});if(!r){let c=i.length,u=e.scrollback,d=u===void 0?c:cQ(u+t.rows,0,c);return n.serialize({start:{x:0,y:c-d},end:{x:t.cols,y:c-1}})}let o=(l=this._terminal)==null?void 0:l.getSelectionPosition();return o!==void 0?n.serialize({start:{x:o.start.x,y:o.start.y},end:{x:o.end.x,y:o.end.y}}):""}_serializeModes(t){let e="",i=t.modes;if(i.applicationCursorKeysMode&&(e+="\x1B[?1h"),i.applicationKeypadMode&&(e+="\x1B[?66h"),i.bracketedPasteMode&&(e+="\x1B[?2004h"),i.insertMode&&(e+="\x1B[4h"),i.originMode&&(e+="\x1B[?6h"),i.reverseWraparoundMode&&(e+="\x1B[?45h"),i.sendFocusMode&&(e+="\x1B[?1004h"),i.wraparoundMode===!1&&(e+="\x1B[?7l"),i.mouseTrackingMode!=="none")switch(i.mouseTrackingMode){case"x10":e+="\x1B[?9h";break;case"vt200":e+="\x1B[?1000h";break;case"drag":e+="\x1B[?1002h";break;case"any":e+="\x1B[?1003h";break}return e}serialize(t){if(!this._terminal)throw new Error("Cannot use addon until it has been loaded");let e=t!=null&&t.range?this._serializeBufferByRange(this._terminal,this._terminal.buffer.normal,t.range,!0):this._serializeBufferByScrollback(this._terminal,this._terminal.buffer.normal,t==null?void 0:t.scrollback);if(!(t!=null&&t.excludeAltBuffer)&&this._terminal.buffer.active.type==="alternate"){let i=this._serializeBufferByScrollback(this._terminal,this._terminal.buffer.alternate,void 0);e+=`\x1B[?1049h\x1B[H${i}`}return t!=null&&t.excludeModes||(e+=this._serializeModes(this._terminal)),e}serializeAsHTML(t){if(!this._terminal)throw new Error("Cannot use addon until it has been loaded");return this._serializeBufferAsHTML(this._terminal,t||{})}dispose(){}},xae=class extends Nz{constructor(t,e,i){super(t),this._terminal=e,this._options=i,this._currentRow="",this._htmlContent="",e._core._themeService?this._ansiColors=e._core._themeService.colors.ansi:this._ansiColors=_ae}_padStart(t,e,i){return e=e>>0,i=i??" ",t.length>e?t:(e-=t.length,e>i.length&&(i+=i.repeat(e/i.length)),i.slice(0,e)+t)}_beforeSerialize(t,e,i){var o,l;this._htmlContent+="
";let n="#000000",r="#ffffff";(this._options.includeGlobalBackground??!1)&&(n=((o=this._terminal.options.theme)==null?void 0:o.foreground)??"#ffffff",r=((l=this._terminal.options.theme)==null?void 0:l.background)??"#000000");let s=[];s.push("color: "+n+";"),s.push("background-color: "+r+";"),s.push("font-family: "+this._terminal.options.fontFamily+";"),s.push("font-size: "+this._terminal.options.fontSize+"px;"),this._htmlContent+="
"}_afterSerialize(){this._htmlContent+="
",this._htmlContent+="
"}_rowEnd(t,e){this._htmlContent+="
"+this._currentRow+"
",this._currentRow=""}_getHexColor(t,e){let i=e?t.getFgColor():t.getBgColor();if(e?t.isFgRGB():t.isBgRGB())return"#"+[i>>16&255,i>>8&255,i&255].map(n=>this._padStart(n.toString(16),2,"0")).join("");if(e?t.isFgPalette():t.isBgPalette())return this._ansiColors[i].css}_diffStyle(t,e){let i=[],n=!jz(t,e),r=!lo(t,e),s=!Iz(t,e);if(n||r||s){let o=this._getHexColor(t,!0);o&&i.push("color: "+o+";");let l=this._getHexColor(t,!1);return l&&i.push("background-color: "+l+";"),t.isInverse()&&i.push("color: #000000; background-color: #BFBFBF;"),t.isBold()&&i.push("font-weight: bold;"),t.isUnderline()&&t.isOverline()?i.push("text-decoration: overline underline;"):t.isUnderline()?i.push("text-decoration: underline;"):t.isOverline()&&i.push("text-decoration: overline;"),t.isBlink()&&i.push("text-decoration: blink;"),t.isInvisible()&&i.push("visibility: hidden;"),t.isItalic()&&i.push("font-style: italic;"),t.isDim()&&i.push("opacity: 0.5;"),t.isStrikethrough()&&i.push("text-decoration: line-through;"),i}}_nextCell(t,e,i,n){if(t.getWidth()===0)return;let r=t.getChars()==="",s=this._diffStyle(t,e);s&&(this._currentRow+=s.length===0?"":""),r?this._currentRow+=" ":this._currentRow+=yae(t.getChars())}_serializeString(){return this._htmlContent}};const wae=10,Cae=2e3;function kae(t={}){const{autoSpawn:e=!1,skipPermissions:i=!1}=t,[n,r]=Z.useState(!1),[s,o]=Z.useState(!1),[l,c]=Z.useState(null),[u,d]=Z.useState(null),p=Z.useRef(null),g=Z.useRef(0),O=Z.useRef(null),_=Z.useRef(!0),b=Z.useRef(null),x=Z.useRef(null),w=Z.useRef(e),k=Z.useRef(i);w.current=e,k.current=i;const T=Z.useCallback(N=>{const q=p.current;q&&q.readyState===WebSocket.OPEN&&q.send(JSON.stringify(N))},[]),A=Z.useCallback(N=>{T({type:"spawn",skipPermissions:N})},[T]),Q=Z.useCallback(()=>{T({type:"kill"})},[T]),E=Z.useCallback((N,q)=>{T({type:"resize",cols:N,rows:q})},[T]),z=Z.useCallback(N=>{T({type:"input",data:N})},[T]);return Z.useEffect(()=>{_.current=!0;function N(){if(!_.current)return;const J=`${window.location.protocol==="https:"?"wss:":"ws:"}//${window.location.host}/ws/terminal`,U=new WebSocket(J);p.current=U,U.onopen=()=>{_.current&&(r(!0),g.current=0,w.current&&U.send(JSON.stringify({type:"spawn",skipPermissions:k.current})))},U.onclose=()=>{_.current&&(r(!1),p.current=null,g.current{var B,j;if(_.current)try{const $=JSON.parse(R.data);switch($.type){case"output":(B=b.current)==null||B.call(b,$.data);break;case"scrollback":(j=x.current)==null||j.call(x,$.data);break;case"status":c({pid:$.pid,uptime:$.uptime,cwd:$.cwd,memoryMB:$.memoryMB,isActive:$.isActive,skipPermissions:$.skipPermissions,alive:$.alive});break;case"exit":d($.code??1);break;case"started":d(null);break;case"unavailable":o(!0);break}}catch{}},U.onerror=()=>{}}return N(),()=>{_.current=!1,O.current!==null&&(clearTimeout(O.current),O.current=null),p.current&&(p.current.onclose=null,p.current.close(),p.current=null)}},[]),{connected:n,unavailable:s,status:l,exitCode:u,send:T,spawn:A,kill:Q,resize:E,writeInput:z,onOutput:b,onScrollback:x}}function Tae(t){const e=Math.floor(t/60),i=t%60;return`${e}m ${i}s`}function Aae(t){const e=t.replace(/\\/g,"/").split("/").filter(Boolean);return e.length<=2?t:".../"+e.slice(-2).join("/")}function Eae({status:t,connected:e,exitCode:i,skipPermissions:n,onToggleSkipPermissions:r,onStop:s,onRestart:o}){const l=e&&(t==null?void 0:t.alive),c=e?l?"bg-green-500":"bg-yellow-500":"bg-red-500",u=e?l?`Running (PID ${(t==null?void 0:t.pid)??"?"})`:"Stopped":"Disconnected";return S.jsxs("div",{className:"flex items-center justify-between border-t border-border bg-card px-3 py-1.5 font-mono text-xs text-muted-foreground",children:[S.jsxs("div",{className:"flex items-center gap-3",children:[S.jsx("span",{className:Fe("inline-block h-2 w-2 rounded-full",c),title:u}),S.jsx("span",{children:u}),t&&l&&S.jsxs(S.Fragment,{children:[S.jsx("span",{className:"text-border",children:"|"}),S.jsx("span",{children:Tae(t.uptime)}),S.jsx("span",{className:"text-border",children:"|"}),S.jsx("span",{title:t.cwd,children:Aae(t.cwd)}),S.jsx("span",{className:"text-border",children:"|"}),S.jsxs("span",{children:[t.memoryMB," MB"]})]})]}),S.jsxs("div",{className:"flex items-center gap-3",children:[S.jsxs("label",{className:"flex cursor-pointer items-center gap-1.5",children:[S.jsx("input",{type:"checkbox",checked:n,onChange:r,className:"h-3 w-3 accent-accent"}),S.jsx("span",{children:"Skip Perms"})]}),l&&S.jsx("button",{type:"button",onClick:s,className:"rounded-sm px-2 py-0.5 text-red-400 transition-colors hover:bg-red-500/20",children:"Stop"}),S.jsx("button",{type:"button",onClick:o,className:"rounded-sm px-2 py-0.5 transition-colors hover:bg-accent/20",children:"Restart"})]})]})}const Mae=[{label:"Progress",command:"/maxsim:progress"},{label:"New Project",command:"/maxsim:new-project"},{label:"Discuss",command:"/maxsim:discuss-phase N"},{label:"Plan",command:"/maxsim:plan-phase N"},{label:"Execute",command:"/maxsim:execute-phase N"},{label:"Roadmap",command:"/maxsim:roadmap"},{label:"Verify",command:"/maxsim:verify-work"},{label:"Resume",command:"/maxsim:resume-work"}],Vz="maxsim-quick-commands",Pae=3e4;function Rae(){try{const t=localStorage.getItem(Vz);if(t)return JSON.parse(t)}catch{}return Mae}function Qae(t){localStorage.setItem(Vz,JSON.stringify(t))}function Lae({onSendCommand:t,isActive:e,isAlive:i,unavailable:n=!1}){const[r,s]=Z.useState(!1),[o,l]=Z.useState(Rae),[c,u]=Z.useState(!1),[d,p]=Z.useState(null),g=Z.useRef(null),O=Z.useCallback(async E=>{if(!E.includes(" N"))return E;const z=g.current;if(z&&Date.now()-z.ts{if(_)return;const z=await O(E.command);p({label:E.label,resolved:z})},[_,O]),x=Z.useCallback(()=>{d&&(t(d.resolved+`\r -`),p(null))},[d,t]),w=Z.useCallback(()=>{p(null)},[]);Z.useEffect(()=>{if(!d)return;const E=z=>{z.key==="Enter"?(z.preventDefault(),x()):z.key==="Escape"&&w()};return window.addEventListener("keydown",E),()=>window.removeEventListener("keydown",E)},[d,x,w]);const[k,T]=Z.useState([]),A=Z.useCallback(()=>{T([...o]),u(!0)},[o]),Q=Z.useCallback(()=>{const E=k.filter(z=>z.label.trim()&&z.command.trim());l(E),Qae(E),u(!1)},[k]);return r?S.jsx("div",{className:"absolute bottom-2 right-2 z-20",children:S.jsx("button",{type:"button",onClick:()=>s(!1),className:"rounded-md bg-card/80 p-1.5 text-xs text-muted-foreground shadow-lg backdrop-blur-sm border border-border hover:text-foreground transition-colors",title:"Show quick actions",children:S.jsx("svg",{className:"h-3.5 w-3.5",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:S.jsx("path",{d:"M18 15l-6-6-6 6"})})})}):S.jsxs("div",{className:"absolute bottom-2 right-2 z-20 flex flex-col items-end gap-1",children:[d&&S.jsxs("div",{className:"rounded-lg bg-card border border-border shadow-lg p-2 text-xs mb-1 backdrop-blur-sm",children:[S.jsxs("p",{className:"text-muted-foreground mb-1.5",children:["Send"," ",S.jsx("span",{className:"font-mono text-foreground",children:d.resolved}),"?"]}),S.jsxs("div",{className:"flex gap-1.5",children:[S.jsx("button",{type:"button",onClick:x,className:"rounded-sm bg-accent px-2 py-0.5 text-foreground hover:bg-accent-glow transition-colors",children:"Confirm"}),S.jsx("button",{type:"button",onClick:w,className:"rounded-sm bg-muted px-2 py-0.5 text-muted-foreground hover:text-foreground transition-colors",children:"Cancel"})]})]}),c&&S.jsxs("div",{className:"rounded-lg bg-card border border-border shadow-lg p-3 text-xs mb-1 backdrop-blur-sm w-72 max-h-64 overflow-y-auto",children:[S.jsx("p",{className:"text-muted-foreground font-medium mb-2",children:"Quick Commands"}),k.map((E,z)=>S.jsxs("div",{className:"flex gap-1 mb-1",children:[S.jsx("input",{className:"flex-[1] rounded-sm border border-border bg-muted px-1.5 py-0.5 text-xs text-foreground",value:E.label,onChange:N=>{const q=[...k];q[z]={...q[z],label:N.target.value},T(q)},placeholder:"Label"}),S.jsx("input",{className:"flex-[2] rounded-sm border border-border bg-muted px-1.5 py-0.5 text-xs font-mono text-foreground",value:E.command,onChange:N=>{const q=[...k];q[z]={...q[z],command:N.target.value},T(q)},placeholder:"Command"}),S.jsx("button",{type:"button",onClick:()=>T(k.filter((N,q)=>q!==z)),className:"text-muted-foreground hover:text-destructive transition-colors px-0.5",title:"Remove",children:"x"})]},z)),S.jsxs("div",{className:"flex justify-between mt-2",children:[S.jsx("button",{type:"button",onClick:()=>T([...k,{label:"",command:""}]),className:"text-muted-foreground hover:text-foreground transition-colors",children:"+ Add"}),S.jsxs("div",{className:"flex gap-1.5",children:[S.jsx("button",{type:"button",onClick:()=>u(!1),className:"rounded-sm bg-muted px-2 py-0.5 text-muted-foreground hover:text-foreground transition-colors",children:"Cancel"}),S.jsx("button",{type:"button",onClick:Q,className:"rounded-sm bg-accent px-2 py-0.5 text-foreground hover:bg-accent-glow transition-colors",children:"Save"})]})]})]}),S.jsxs("div",{className:"flex items-center gap-1 rounded-lg bg-card/80 border border-border shadow-lg p-1.5 backdrop-blur-sm",children:[o.map(E=>S.jsx("button",{type:"button",onClick:()=>b(E),disabled:_,className:"rounded-md px-2 py-0.5 text-xs text-muted-foreground transition-colors hover:bg-muted hover:text-foreground disabled:opacity-40 disabled:cursor-not-allowed",title:n?"Terminal unavailable — node-pty not installed":E.command,children:E.label},E.label)),S.jsx("button",{type:"button",onClick:A,className:"rounded-md px-1 py-0.5 text-xs text-muted-foreground hover:text-foreground transition-colors ml-0.5",title:"Settings",children:S.jsxs("svg",{className:"h-3.5 w-3.5",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:[S.jsx("circle",{cx:"12",cy:"12",r:"3"}),S.jsx("path",{d:"M19.4 15a1.65 1.65 0 00.33 1.82l.06.06a2 2 0 010 2.83 2 2 0 01-2.83 0l-.06-.06a1.65 1.65 0 00-1.82-.33 1.65 1.65 0 00-1 1.51V21a2 2 0 01-4 0v-.09A1.65 1.65 0 009 19.4a1.65 1.65 0 00-1.82.33l-.06.06a2 2 0 01-2.83-2.83l.06-.06A1.65 1.65 0 004.68 15a1.65 1.65 0 00-1.51-1H3a2 2 0 010-4h.09A1.65 1.65 0 004.6 9a1.65 1.65 0 00-.33-1.82l-.06-.06a2 2 0 012.83-2.83l.06.06A1.65 1.65 0 009 4.68a1.65 1.65 0 001-1.51V3a2 2 0 014 0v.09a1.65 1.65 0 001 1.51 1.65 1.65 0 001.82-.33l.06-.06a2 2 0 012.83 2.83l-.06.06A1.65 1.65 0 0019.32 9a1.65 1.65 0 001.51 1H21a2 2 0 010 4h-.09a1.65 1.65 0 00-1.51 1z"})]})}),S.jsx("button",{type:"button",onClick:()=>s(!0),className:"rounded-md px-1 py-0.5 text-xs text-muted-foreground hover:text-foreground transition-colors",title:"Minimize",children:S.jsx("svg",{className:"h-3.5 w-3.5",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:S.jsx("path",{d:"M6 9l6 6 6-6"})})})]})]})}function Dae({onReady:t,writeInputRef:e}){const i=Z.useRef(null),n=Z.useRef(null),r=Z.useRef(null),s=Z.useRef(null),o=Z.useRef(null),[l,c]=Z.useState(!0),{connected:u,unavailable:d,status:p,exitCode:g,writeInput:O,resize:_,spawn:b,kill:x,onOutput:w,onScrollback:k}=kae({autoSpawn:!0,skipPermissions:l});Z.useEffect(()=>(e&&(e.current=O),()=>{e&&(e.current=null)}),[O,e]);const T=Z.useCallback(N=>{var q;(q=n.current)==null||q.write(N)},[]),A=Z.useCallback(N=>{var q;(q=n.current)==null||q.write(N)},[]);Z.useEffect(()=>(w.current=T,k.current=A,()=>{w.current=null,k.current=null}),[T,A,w,k]),Z.useEffect(()=>{if(!i.current)return;const N=new Qse({cursorBlink:!0,fontSize:14,lineHeight:1.2,theme:{background:"#0a0a0a",foreground:"#e0e0e0",cursor:"#e0e0e0"}}),q=new Bse,J=new Sae;N.loadAddon(q),N.loadAddon(J);try{N.loadAddon(new Oae)}catch{}N.open(i.current),q.fit(),n.current=N,r.current=q;const U=N.onData(B=>{O(B)}),R=new ResizeObserver(()=>{o.current&&clearTimeout(o.current),o.current=setTimeout(()=>{r.current&&n.current&&(r.current.fit(),_(n.current.cols,n.current.rows))},100)});return R.observe(i.current),s.current=R,t==null||t(N),()=>{U.dispose(),R.disconnect(),o.current&&clearTimeout(o.current),N.dispose(),n.current=null,r.current=null,s.current=null}},[]);const Q=Z.useCallback(()=>{b(l),setTimeout(()=>{var N;return(N=n.current)==null?void 0:N.focus()},100)},[b,l]),E=Z.useCallback(()=>{x()},[x]),z=Z.useCallback(()=>{c(N=>!N)},[]);return S.jsxs("div",{className:"flex h-full w-full flex-col",onWheel:N=>N.stopPropagation(),children:[S.jsxs("div",{className:"relative min-h-0 flex-1 overflow-hidden",children:[S.jsx("div",{ref:i,className:"h-full w-full"}),S.jsx(Lae,{onSendCommand:O,isActive:(p==null?void 0:p.isActive)??!1,isAlive:(p==null?void 0:p.alive)??!1,unavailable:d}),d&&S.jsx("div",{className:"absolute inset-0 z-20 flex items-center justify-center bg-card",children:S.jsxs("div",{className:"max-w-sm text-center",children:[S.jsx("h2",{className:"text-lg font-semibold text-foreground mb-2",children:"Terminal unavailable"}),S.jsxs("p",{className:"text-sm text-muted-foreground",children:["node-pty is not installed. Run ",S.jsx("code",{className:"rounded bg-muted px-1.5 py-0.5 font-mono text-xs",children:"npm install node-pty"})," in the dashboard directory."]})]})}),!u&&g===null&&S.jsx("div",{className:"absolute inset-0 z-10 flex items-center justify-center bg-black/60",children:S.jsxs("div",{className:"flex items-center gap-3 font-mono text-sm text-muted-foreground",children:[S.jsxs("svg",{className:"h-5 w-5 animate-spin",viewBox:"0 0 24 24",fill:"none",children:[S.jsx("circle",{className:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor",strokeWidth:"4"}),S.jsx("path",{className:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4z"})]}),"Reconnecting..."]})}),g!==null&&S.jsxs("div",{className:"absolute inset-x-0 bottom-0 z-10 flex items-center justify-between bg-card/90 px-4 py-2 font-mono text-sm backdrop-blur-sm",children:[S.jsxs("span",{className:"text-muted-foreground",children:["Process exited (code ",g,")"]}),S.jsx("button",{type:"button",onClick:Q,className:"rounded-sm bg-accent px-3 py-1 text-xs text-foreground transition-colors hover:bg-accent-glow",children:"Restart"})]})]}),S.jsx(Eae,{status:p,connected:u,exitCode:g,skipPermissions:l,onToggleSkipPermissions:z,onStop:E,onRestart:Q})]})}function Bae(){const[t,e]=Z.useState(!1),i=Z.useCallback(()=>e(n=>!n),[]);return{splitMode:t,toggleSplit:i}}function $ae({splitMode:t,onToggle:e}){return S.jsx("button",{type:"button",onClick:e,title:t?"Full-height mode":"Split-panel mode",className:"absolute right-3 top-2 z-20 flex h-7 w-7 items-center justify-center rounded-sm border border-border bg-card text-muted-foreground transition-colors hover:bg-card-hover hover:text-foreground",children:t?S.jsx("svg",{width:"14",height:"14",viewBox:"0 0 14 14",fill:"none",children:S.jsx("rect",{x:"1",y:"1",width:"12",height:"12",rx:"1",stroke:"currentColor",strokeWidth:"1.5"})}):S.jsxs("svg",{width:"14",height:"14",viewBox:"0 0 14 14",fill:"none",children:[S.jsx("rect",{x:"1",y:"1",width:"12",height:"12",rx:"1",stroke:"currentColor",strokeWidth:"1.5"}),S.jsx("line",{x1:"1",y1:"7",x2:"13",y2:"7",stroke:"currentColor",strokeWidth:"1.5"})]})})}function zae({mode:t,onToggle:e}){const[i,n]=Z.useState(!1);function r(){n(!0),e(),setTimeout(()=>n(!1),420)}const s=t==="simple",o=s?"Switch to Advanced Mode":"Switch to Simple Mode";return S.jsx("button",{type:"button",onClick:r,title:o,"aria-label":o,className:"flex h-8 w-8 items-center justify-center text-muted-foreground transition-colors hover:text-foreground",children:S.jsx(vo.span,{animate:{rotate:i?360:0},transition:{duration:.4,ease:"easeInOut"},style:{display:"flex",alignItems:"center",justifyContent:"center"},children:s?S.jsxs("svg",{className:"h-4 w-4",viewBox:"0 0 16 16",fill:"none",stroke:"currentColor",strokeWidth:"1.5","aria-hidden":"true",children:[S.jsx("circle",{cx:"8",cy:"8",r:"6"}),S.jsx("ellipse",{cx:"8",cy:"8",rx:"2.5",ry:"6"}),S.jsx("path",{d:"M2 8h12M3.5 5h9M3.5 11h9",strokeLinecap:"round"})]}):S.jsxs("svg",{className:"h-4 w-4",viewBox:"0 0 16 16",fill:"none",stroke:"currentColor",strokeWidth:"1.5","aria-hidden":"true",children:[S.jsx("rect",{x:"1.5",y:"2.5",width:"13",height:"11",rx:"1"}),S.jsx("path",{d:"M4 6l2.5 2L4 10M8 10h4",strokeLinecap:"round",strokeLinejoin:"round"})]})})})}function Nae({onChoose:t}){return S.jsxs("div",{className:"absolute inset-0 z-50 flex items-center justify-center",children:[S.jsx("div",{className:"absolute inset-0 backdrop-blur-sm bg-background/60"}),S.jsxs("div",{className:"relative z-10 border border-border bg-card p-8 max-w-lg w-full mx-4",children:[S.jsx("h2",{className:"font-bold text-lg tracking-tight text-foreground mb-1",children:"Choose Your Dashboard Mode"}),S.jsx("p",{className:"text-sm text-muted-foreground mb-6",children:"You can switch between modes at any time from the header toggle."}),S.jsxs("div",{className:"flex gap-4",children:[S.jsxs("div",{className:"flex-1 border border-border p-4 flex flex-col gap-3",children:[S.jsxs("svg",{viewBox:"0 0 120 70",className:"w-full h-auto border border-border/40 bg-muted/20","aria-hidden":"true",children:[S.jsx("rect",{x:"0",y:"0",width:"120",height:"12",fill:"currentColor",fillOpacity:"0.08"}),S.jsx("rect",{x:"8",y:"3",width:"30",height:"6",rx:"1",fill:"#14b8a6",fillOpacity:"0.6"}),S.jsx("rect",{x:"8",y:"18",width:"104",height:"8",rx:"1",fill:"currentColor",fillOpacity:"0.12"}),S.jsx("rect",{x:"8",y:"32",width:"50",height:"30",rx:"1",fill:"currentColor",fillOpacity:"0.08"}),S.jsx("rect",{x:"62",y:"32",width:"50",height:"30",rx:"1",fill:"currentColor",fillOpacity:"0.08"})]}),S.jsxs("div",{children:[S.jsx("p",{className:"text-sm font-medium text-foreground",children:"Simple Mode"}),S.jsx("p",{className:"text-xs text-muted-foreground mt-0.5",children:"Clean action cards. No terminal required."})]}),S.jsx("button",{type:"button",onClick:()=>t("simple"),className:"border border-simple-accent bg-simple-accent/10 px-3 py-1.5 text-xs font-mono uppercase tracking-widest text-simple-accent transition-colors hover:bg-simple-accent hover:text-background",children:"Use Simple Mode"})]}),S.jsxs("div",{className:"flex-1 border border-border p-4 flex flex-col gap-3",children:[S.jsxs("svg",{viewBox:"0 0 120 70",className:"w-full h-auto border border-border/40 bg-muted/20","aria-hidden":"true",children:[S.jsx("rect",{x:"0",y:"0",width:"120",height:"70",fill:"currentColor",fillOpacity:"0.03"}),S.jsx("rect",{x:"0",y:"0",width:"28",height:"70",fill:"currentColor",fillOpacity:"0.08"}),S.jsx("rect",{x:"3",y:"3",width:"22",height:"5",rx:"1",fill:"currentColor",fillOpacity:"0.2"}),S.jsx("rect",{x:"3",y:"12",width:"22",height:"3",rx:"0.5",fill:"currentColor",fillOpacity:"0.12"}),S.jsx("rect",{x:"3",y:"18",width:"22",height:"3",rx:"0.5",fill:"currentColor",fillOpacity:"0.12"}),S.jsx("rect",{x:"30",y:"4",width:"86",height:"28",rx:"1",fill:"currentColor",fillOpacity:"0.08"}),S.jsx("rect",{x:"30",y:"36",width:"86",height:"28",rx:"1",fill:"#3b82f6",fillOpacity:"0.1"}),S.jsx("rect",{x:"33",y:"39",width:"12",height:"2",rx:"0.5",fill:"#3b82f6",fillOpacity:"0.5"})]}),S.jsxs("div",{children:[S.jsx("p",{className:"text-sm font-medium text-foreground",children:"Advanced Mode"}),S.jsx("p",{className:"text-xs text-muted-foreground mt-0.5",children:"Full dashboard with terminal and phase viewer."})]}),S.jsx("button",{type:"button",onClick:()=>t("advanced"),className:"border border-accent bg-accent/10 px-3 py-1.5 text-xs font-mono uppercase tracking-widest text-accent transition-colors hover:bg-accent hover:text-foreground",children:"Use Advanced Mode"})]})]})]})]})}function sl(t){var e;return(((e=t==null?void 0:t.phases)==null?void 0:e.length)??0)>0}function hQ(t){var e;return((e=t==null?void 0:t.phases)==null?void 0:e.some(i=>i.disk_status==="partial"||i.disk_status==="planned"||i.disk_status==="discussed"||i.disk_status==="researched"))??!1}const DS=[{id:"plan-new-phase",tab:"plan",title:"Plan New Phase",description:"Create a detailed execution plan for the next phase",icon:S.jsxs("svg",{className:"h-5 w-5 shrink-0",viewBox:"0 0 20 20",fill:"none",stroke:"currentColor",strokeWidth:"1.5","aria-hidden":"true",children:[S.jsx("rect",{x:"3",y:"4",width:"14",height:"13",rx:"1"}),S.jsx("path",{d:"M7 8h6M7 11h4M10 2v4",strokeLinecap:"round"})]}),requiresInput:!0,command:"/maxsim:plan-phase",isAvailable:t=>sl(t),unavailableReason:"No phases found in ROADMAP.md — create a project first"},{id:"add-phase",tab:"plan",title:"Add Phase",description:"Insert a new phase into the roadmap",icon:S.jsxs("svg",{className:"h-5 w-5 shrink-0",viewBox:"0 0 20 20",fill:"none",stroke:"currentColor",strokeWidth:"1.5","aria-hidden":"true",children:[S.jsx("rect",{x:"3",y:"4",width:"14",height:"13",rx:"1"}),S.jsx("path",{d:"M10 8v6M7 11h6",strokeLinecap:"round"})]}),requiresInput:!0,command:"/maxsim:add-phase",isAvailable:t=>sl(t),unavailableReason:"No project loaded — create a project first"},{id:"discuss-phase",tab:"plan",title:"Discuss Phase",description:"Answer planning questions to define requirements for a phase",icon:S.jsx("svg",{className:"h-5 w-5 shrink-0",viewBox:"0 0 20 20",fill:"none",stroke:"currentColor",strokeWidth:"1.5","aria-hidden":"true",children:S.jsx("path",{d:"M3 6a1 1 0 011-1h12a1 1 0 011 1v7a1 1 0 01-1 1H7l-4 3V6z",strokeLinejoin:"round"})}),requiresInput:!1,command:"/maxsim:discuss-phase",isAvailable:t=>hQ(t),unavailableReason:"No active phase to discuss — plan a phase first"},{id:"init-existing",tab:"plan",title:"Init Existing",description:"Set up MAXSIM planning for an existing project",icon:S.jsxs("svg",{className:"h-5 w-5 shrink-0",viewBox:"0 0 20 20",fill:"none",stroke:"currentColor",strokeWidth:"1.5","aria-hidden":"true",children:[S.jsx("path",{d:"M10 3v10M10 13l-3-3M10 13l3-3",strokeLinecap:"round",strokeLinejoin:"round"}),S.jsx("path",{d:"M4 17h12",strokeLinecap:"round"})]}),requiresInput:!1,command:"/maxsim:init-existing",isAvailable:()=>!0,unavailableReason:""},{id:"new-project",tab:"plan",title:"New Project",description:"Start a brand new MAXSIM project from scratch",icon:S.jsx("svg",{className:"h-5 w-5 shrink-0",viewBox:"0 0 20 20",fill:"none",stroke:"currentColor",strokeWidth:"1.5","aria-hidden":"true",children:S.jsx("path",{d:"M10 4v12M4 10h12",strokeLinecap:"round"})}),requiresInput:!1,command:"/maxsim:new-project",isAvailable:()=>!0,unavailableReason:""},{id:"execute-phase",tab:"execute",title:"Execute Phase",description:"Run the current phase plan and implement the changes",icon:S.jsx("svg",{className:"h-5 w-5 shrink-0",viewBox:"0 0 20 20",fill:"none",stroke:"currentColor",strokeWidth:"1.5","aria-hidden":"true",children:S.jsx("path",{d:"M6 4l10 6-10 6V4z",strokeLinejoin:"round"})}),requiresInput:!1,command:"/maxsim:execute-phase",isAvailable:t=>hQ(t),unavailableReason:"No phase is currently planned — plan a phase first"},{id:"verify-work",tab:"execute",title:"Verify Work",description:"Check that completed phase work meets all acceptance criteria",icon:S.jsx("svg",{className:"h-5 w-5 shrink-0",viewBox:"0 0 20 20",fill:"none",stroke:"currentColor",strokeWidth:"1.5","aria-hidden":"true",children:S.jsx("path",{d:"M4 10l4 4 8-8",strokeLinecap:"round",strokeLinejoin:"round"})}),requiresInput:!1,command:"/maxsim:verify-work",isAvailable:t=>sl(t),unavailableReason:"No phases to verify — complete a phase first"},{id:"audit-milestone",tab:"execute",title:"Audit Milestone",description:"Review and archive a completed milestone",icon:S.jsxs("svg",{className:"h-5 w-5 shrink-0",viewBox:"0 0 20 20",fill:"none",stroke:"currentColor",strokeWidth:"1.5","aria-hidden":"true",children:[S.jsx("path",{d:"M4 5h12M4 10h8M4 15h10",strokeLinecap:"round"}),S.jsx("circle",{cx:"16",cy:"14",r:"2.5"}),S.jsx("path",{d:"M18 16l1.5 1.5",strokeLinecap:"round"})]}),requiresInput:!1,command:"/maxsim:audit-milestone",isAvailable:t=>sl(t),unavailableReason:"No milestone to audit — complete some phases first"},{id:"fix-gaps",tab:"execute",title:"Fix Gaps",description:"Create plans to close verification failures",icon:S.jsxs("svg",{className:"h-5 w-5 shrink-0",viewBox:"0 0 20 20",fill:"none",stroke:"currentColor",strokeWidth:"1.5","aria-hidden":"true",children:[S.jsx("path",{d:"M10 4v6h6",strokeLinecap:"round",strokeLinejoin:"round"}),S.jsx("path",{d:"M4 10a6 6 0 1012 0",strokeLinecap:"round"})]}),requiresInput:!1,command:"/maxsim:plan-phase --gaps",isAvailable:t=>sl(t),unavailableReason:"No phases to fix — complete a verification first"},{id:"find-gaps",tab:"execute",title:"Find Gaps",description:"Identify missing requirements or unverified work",icon:S.jsxs("svg",{className:"h-5 w-5 shrink-0",viewBox:"0 0 20 20",fill:"none",stroke:"currentColor",strokeWidth:"1.5","aria-hidden":"true",children:[S.jsx("circle",{cx:"9",cy:"9",r:"5"}),S.jsx("path",{d:"M16 16l-3-3",strokeLinecap:"round"}),S.jsx("path",{d:"M9 7v2M9 11h.01",strokeLinecap:"round"})]}),requiresInput:!1,command:"/maxsim:verify-work --find-gaps",isAvailable:t=>sl(t),unavailableReason:"No phases to analyze — create some phases first"},{id:"view-roadmap",tab:"execute",title:"View Roadmap",description:"See all phases and their status inline",icon:S.jsx("svg",{className:"h-5 w-5 shrink-0",viewBox:"0 0 20 20",fill:"none",stroke:"currentColor",strokeWidth:"1.5","aria-hidden":"true",children:S.jsx("path",{d:"M3 5h14M3 10h14M3 15h8",strokeLinecap:"round"})}),requiresInput:!1,command:"",isAvailable:t=>sl(t),unavailableReason:"No roadmap to display"}];function jae(){var c,u;const{roadmap:t}=Rl(),{setTab:e,setExpanded:i}=oO(),n=(c=t==null?void 0:t.phases)==null?void 0:c.find(d=>d.number===(t==null?void 0:t.current_phase));let r=null;if(n){const d=n.disk_status;d==="empty"||d==="no_directory"||d==="discussed"||d==="researched"?r="plan-new-phase":d==="planned"||d==="partial"?r="execute-phase":d==="complete"&&(r="verify-work")}else(((u=t==null?void 0:t.phases)==null?void 0:u.length)??0)===0&&(r="new-project");if(!r)return null;const s=DS.find(d=>d.id===r);if(!s)return null;const o=n?`Phase ${n.number}: ${n.name}`:"your project";function l(){const d=s.tab;e(d),i(s.id)}return S.jsxs("div",{className:"border border-simple-accent/40 bg-simple-accent/5 p-4 flex items-center justify-between gap-4 mb-4",children:[S.jsxs("div",{className:"min-w-0",children:[S.jsx("p",{className:"text-xs uppercase tracking-widest text-simple-accent font-mono mb-1",children:"Recommended"}),S.jsxs("p",{className:"text-sm text-foreground",children:[S.jsx("span",{className:"font-medium",children:o})," is ready to"," ",S.jsx("span",{className:"text-simple-accent",children:s.title.toLowerCase()})]})]}),S.jsx("button",{type:"button",onClick:l,className:"shrink-0 border border-simple-accent bg-simple-accent/10 px-3 py-1.5 text-xs font-mono uppercase tracking-widest text-simple-accent transition-colors hover:bg-simple-accent hover:text-background",children:s.title})]})}function Iae({action:t,onExecute:e}){const{inputValues:i,setInput:n,reset:r}=oO(),{roadmap:s}=Rl(),o=Z.useRef(null),[l,c]=Z.useState(!1),[u,d]=Z.useState(!1),p=(()=>{var Q;if(!t.requiresInput)return"";const A=(Q=s==null?void 0:s.phases)==null?void 0:Q.find(E=>!E.roadmap_complete&&(E.disk_status==="empty"||E.disk_status==="no_directory"));return A?`Phase ${A.number}: ${A.name}`:""})(),g=i[t.id]??p;Z.useEffect(()=>{const A=o.current;A&&(A.style.height="auto",A.style.height=`${A.scrollHeight}px`)},[g]);function O(){const A=o.current;A&&(A.style.height="auto",A.style.height=`${A.scrollHeight}px`)}function _(A){n(t.id,A)}function b(A){A.key==="Enter"&&!A.shiftKey&&(A.preventDefault(),w())}function x(){const A=g.trim();return t.command===""?"":A?`${t.command} "${A}"`:t.command}function w(){if(t.requiresInput&&!g.trim()||t.id==="view-roadmap")return;const A=x();A&&e(A)}function k(){u?(r(),d(!1),c(!1)):(d(!0),setTimeout(()=>d(!1),3e3))}const T=t.requiresInput&&!g.trim();return S.jsxs("div",{className:"flex flex-col gap-3 relative",children:[S.jsx("p",{className:"text-xs text-muted-foreground",children:t.requiresInput?"Describe what this phase should accomplish.":"Add optional context (or leave blank to use defaults)."}),S.jsx("div",{className:"border border-border bg-muted/10 px-3 py-2 flex gap-2 items-start",children:S.jsx("textarea",{ref:o,value:g,onChange:A=>{_(A.target.value),O()},onKeyDown:b,placeholder:t.requiresInput?"e.g. Phase 31: Simple Mode UI Shell":"Additional context (optional)",rows:1,className:"w-full resize-none overflow-hidden bg-transparent font-mono text-xs text-foreground placeholder:text-muted-foreground outline-none leading-relaxed"})}),S.jsxs("div",{className:"flex items-center gap-2",children:[S.jsxs("button",{type:"button",onClick:w,disabled:T,className:Fe("flex items-center gap-1.5 border px-3 py-1.5 text-xs font-mono uppercase tracking-widest transition-colors",T?"border-border text-muted-foreground cursor-not-allowed":"border-simple-accent bg-simple-accent/10 text-simple-accent hover:bg-simple-accent hover:text-background"),children:[S.jsx("svg",{className:"h-3 w-3",viewBox:"0 0 12 12",fill:"currentColor","aria-hidden":"true",children:S.jsx("path",{d:"M2 2l8 4-8 4V2z"})}),"Run in Terminal"]}),S.jsxs("div",{className:"relative ml-auto",children:[S.jsx("button",{type:"button",onClick:()=>c(A=>!A),"aria-label":"More options",className:"flex h-6 w-6 items-center justify-center text-muted-foreground hover:text-foreground",children:S.jsxs("svg",{className:"h-3.5 w-3.5",viewBox:"0 0 16 16",fill:"currentColor","aria-hidden":"true",children:[S.jsx("circle",{cx:"4",cy:"8",r:"1.2"}),S.jsx("circle",{cx:"8",cy:"8",r:"1.2"}),S.jsx("circle",{cx:"12",cy:"8",r:"1.2"})]})}),l&&S.jsx("div",{className:"absolute right-0 bottom-8 z-20 border border-border bg-card shadow-lg min-w-max",children:S.jsx("button",{type:"button",onClick:k,className:Fe("flex w-full items-center gap-2 px-4 py-2.5 text-xs text-left transition-colors",u?"text-danger hover:bg-danger/10":"text-muted-foreground hover:text-foreground hover:bg-card-hover"),children:u?"Click again to confirm reset":"Reset Simple Mode"})})]})]})]})}function Vae({action:t,roadmap:e,onExecute:i}){var g,O;const{expandedCardId:n,setExpanded:r}=oO(),{roadmap:s}=Rl(),o=n===t.id,l=!t.isAvailable(e),c=(g=s==null?void 0:s.phases)==null?void 0:g.find(_=>_.number===(s==null?void 0:s.current_phase));let u=null;if(c){const _=c.disk_status;_==="empty"||_==="no_directory"||_==="discussed"||_==="researched"?u="plan-new-phase":_==="planned"||_==="partial"?u="execute-phase":_==="complete"&&(u="verify-work")}else(((O=s==null?void 0:s.phases)==null?void 0:O.length)??0)===0&&(u="new-project");const d=t.id===u;function p(){l||r(o?null:t.id)}return S.jsxs("div",{className:Fe("bg-card border-0 transition-all duration-200",l?"opacity-50":"cursor-pointer hover:shadow-md hover:-translate-y-px",o&&"ring-1 ring-simple-accent/40"),title:l?t.unavailableReason:void 0,children:[S.jsxs("button",{type:"button",disabled:l,onClick:p,className:"flex w-full items-start gap-3 p-4 text-left","aria-expanded":o,children:[S.jsx("span",{className:Fe("mt-0.5 shrink-0",l?"text-muted-foreground":"text-simple-accent"),children:t.icon}),S.jsxs("div",{className:"flex-1 min-w-0",children:[S.jsx("p",{className:"text-sm font-medium text-foreground leading-tight",children:t.title}),S.jsx("p",{className:"text-xs text-muted-foreground mt-0.5 leading-snug",children:t.description}),d&&!l&&S.jsx("span",{className:"mt-1 inline-block bg-simple-accent/20 border border-simple-accent/40 px-1.5 py-0.5 text-[10px] font-mono uppercase tracking-wider text-simple-accent",children:"Recommended"})]}),S.jsx("svg",{className:Fe("mt-1 h-3.5 w-3.5 shrink-0 text-muted-foreground transition-transform duration-200",o&&"rotate-180"),viewBox:"0 0 12 12",fill:"none",stroke:"currentColor",strokeWidth:"1.5","aria-hidden":"true",children:S.jsx("path",{d:"M2 4l4 4 4-4",strokeLinecap:"round",strokeLinejoin:"round"})})]}),S.jsx(xx,{initial:!1,children:o&&S.jsx(vo.div,{initial:{height:0,opacity:0},animate:{height:"auto",opacity:1},exit:{height:0,opacity:0},transition:{duration:.2,ease:"easeInOut"},className:"overflow-hidden border-t border-border/60",children:S.jsx("div",{className:"p-4",children:S.jsx(Iae,{action:t,onExecute:i})})},"expanded")})]})}const r1=6;function Xae({onExecute:t}){var T;const{roadmap:e}=Rl(),{activeTab:i,setTab:n}=oO(),r=Z.useRef(i),[s,o]=Z.useState({plan:!1,execute:!1}),l=e??null,c=DS.filter(A=>A.tab==="plan"),u=DS.filter(A=>A.tab==="execute"),d=(((T=e==null?void 0:e.phases)==null?void 0:T.length)??0)===0,p=d?c.filter(A=>A.id==="new-project"||A.id==="init-existing"):c,g=d?[]:u,O=i==="plan"?p:g,_=s[i],b=_?O:O.slice(0,r1),x=O.length>r1&&!_;function w(A){r.current=i,n(A)}const k=i==="plan"&&r.current==="execute"?-1:1;return S.jsxs("div",{className:"flex flex-col gap-0",children:[S.jsx("div",{className:"flex border-b border-border",children:["plan","execute"].map(A=>{const Q=A==="plan"?p.length:g.length,E=A==="plan"?"Plan & Discuss":"Execute & Verify";return S.jsxs("button",{type:"button",onClick:()=>w(A),className:Fe("flex-1 py-2.5 text-xs font-mono uppercase tracking-widest transition-colors duration-200 border-b-2",i===A?"border-b-simple-accent text-simple-accent":"border-b-transparent text-muted-foreground hover:text-foreground"),children:[E," (",Q,")"]},A)})}),S.jsx("div",{className:"overflow-hidden",children:S.jsx(xx,{mode:"wait",initial:!1,children:S.jsx(vo.div,{initial:{x:k*20,opacity:0},animate:{x:0,opacity:1},exit:{x:k*-20,opacity:0},transition:{duration:.15},children:O.length===0?S.jsx("div",{className:"py-12 text-center",children:S.jsx("p",{className:"text-sm text-muted-foreground",children:"No actions available in this tab."})}):S.jsxs(S.Fragment,{children:[S.jsx("div",{className:"grid grid-cols-2 gap-px bg-border lg:grid-cols-3",children:b.map(A=>S.jsx(Vae,{action:A,roadmap:l,onExecute:t},A.id))}),x&&S.jsxs("button",{type:"button",onClick:()=>o(A=>({...A,[i]:!0})),className:"w-full border-t border-border py-2.5 text-xs font-mono uppercase tracking-widest text-muted-foreground transition-colors hover:text-foreground hover:bg-card-hover",children:["Show more (",O.length-r1," more)"]})]})},i)})})]})}function Zae(t,e){const i={};return(t[t.length-1]===""?[...t,""]:t).join((i.padRight?" ":"")+","+(i.padLeft===!1?"":" ")).trim()}const qae=/^[$_\p{ID_Start}][$_\u{200C}\u{200D}\p{ID_Continue}]*$/u,Wae=/^[$_\p{ID_Start}][-$_\u{200C}\u{200D}\p{ID_Continue}]*$/u,Uae={};function uQ(t,e){return(Uae.jsx?Wae:qae).test(t)}const Yae=/[ \t\n\f\r]/g;function Hae(t){return typeof t=="object"?t.type==="text"?fQ(t.value):!1:fQ(t)}function fQ(t){return t.replace(Yae,"")===""}class Cd{constructor(e,i,n){this.normal=i,this.property=e,n&&(this.space=n)}}Cd.prototype.normal={};Cd.prototype.property={};Cd.prototype.space=void 0;function Xz(t,e){const i={},n={};for(const r of t)Object.assign(i,r.property),Object.assign(n,r.normal);return new Cd(i,n,e)}function BS(t){return t.toLowerCase()}class jn{constructor(e,i){this.attribute=i,this.property=e}}jn.prototype.attribute="";jn.prototype.booleanish=!1;jn.prototype.boolean=!1;jn.prototype.commaOrSpaceSeparated=!1;jn.prototype.commaSeparated=!1;jn.prototype.defined=!1;jn.prototype.mustUseProperty=!1;jn.prototype.number=!1;jn.prototype.overloadedBoolean=!1;jn.prototype.property="";jn.prototype.spaceSeparated=!1;jn.prototype.space=void 0;let Fae=0;const Xe=zl(),si=zl(),$S=zl(),de=zl(),wt=zl(),th=zl(),er=zl();function zl(){return 2**++Fae}const zS=Object.freeze(Object.defineProperty({__proto__:null,boolean:Xe,booleanish:si,commaOrSpaceSeparated:er,commaSeparated:th,number:de,overloadedBoolean:$S,spaceSeparated:wt},Symbol.toStringTag,{value:"Module"})),s1=Object.keys(zS);class Vw extends jn{constructor(e,i,n,r){let s=-1;if(super(e,i),dQ(this,"space",r),typeof n=="number")for(;++s4&&i.slice(0,4)==="data"&&tle.test(e)){if(e.charAt(4)==="-"){const s=e.slice(5).replace(pQ,rle);n="data"+s.charAt(0).toUpperCase()+s.slice(1)}else{const s=e.slice(4);if(!pQ.test(s)){let o=s.replace(ele,nle);o.charAt(0)!=="-"&&(o="-"+o),e="data"+o}}r=Vw}return new r(n,e)}function nle(t){return"-"+t.toLowerCase()}function rle(t){return t.charAt(1).toUpperCase()}const sle=Xz([Zz,Gae,Uz,Yz,Hz],"html"),Xw=Xz([Zz,Kae,Uz,Yz,Hz],"svg");function ole(t){return t.join(" ").trim()}var Ac={},o1,mQ;function ale(){if(mQ)return o1;mQ=1;var t=/\/\*[^*]*\*+([^/*][^*]*\*+)*\//g,e=/\n/g,i=/^\s*/,n=/^(\*?[-#/*\\\w]+(\[[0-9a-z_-]+\])?)\s*/,r=/^:\s*/,s=/^((?:'(?:\\'|.)*?'|"(?:\\"|.)*?"|\([^)]*?\)|[^};])+)/,o=/^[;\s]*/,l=/^\s+|\s+$/g,c=` -`,u="/",d="*",p="",g="comment",O="declaration";function _(x,w){if(typeof x!="string")throw new TypeError("First argument must be a string");if(!x)return[];w=w||{};var k=1,T=1;function A(j){var $=j.match(e);$&&(k+=$.length);var D=j.lastIndexOf(c);T=~D?j.length-D:T+j.length}function Q(){var j={line:k,column:T};return function($){return $.position=new E(j),q(),$}}function E(j){this.start=j,this.end={line:k,column:T},this.source=w.source}E.prototype.content=x;function z(j){var $=new Error(w.source+":"+k+":"+T+": "+j);if($.reason=j,$.filename=w.source,$.line=k,$.column=T,$.source=x,!w.silent)throw $}function N(j){var $=j.exec(x);if($){var D=$[0];return A(D),x=x.slice(D.length),$}}function q(){N(i)}function J(j){var $;for(j=j||[];$=U();)$!==!1&&j.push($);return j}function U(){var j=Q();if(!(u!=x.charAt(0)||d!=x.charAt(1))){for(var $=2;p!=x.charAt($)&&(d!=x.charAt($)||u!=x.charAt($+1));)++$;if($+=2,p===x.charAt($-1))return z("End of comment missing");var D=x.slice(2,$-2);return T+=2,A(D),x=x.slice($),T+=2,j({type:g,comment:D})}}function R(){var j=Q(),$=N(n);if($){if(U(),!N(r))return z("property missing ':'");var D=N(s),X=j({type:O,property:b($[0].replace(t,p)),value:D?b(D[0].replace(t,p)):p});return N(o),X}}function B(){var j=[];J(j);for(var $;$=R();)$!==!1&&(j.push($),J(j));return j}return q(),B()}function b(x){return x?x.replace(l,p):p}return o1=_,o1}var gQ;function lle(){if(gQ)return Ac;gQ=1;var t=Ac&&Ac.__importDefault||function(n){return n&&n.__esModule?n:{default:n}};Object.defineProperty(Ac,"__esModule",{value:!0}),Ac.default=i;const e=t(ale());function i(n,r){let s=null;if(!n||typeof n!="string")return s;const o=(0,e.default)(n),l=typeof r=="function";return o.forEach(c=>{if(c.type!=="declaration")return;const{property:u,value:d}=c;l?r(u,d,c):d&&(s=s||{},s[u]=d)}),s}return Ac}var qu={},OQ;function cle(){if(OQ)return qu;OQ=1,Object.defineProperty(qu,"__esModule",{value:!0}),qu.camelCase=void 0;var t=/^--[a-zA-Z0-9_-]+$/,e=/-([a-z])/g,i=/^[^-]+$/,n=/^-(webkit|moz|ms|o|khtml)-/,r=/^-(ms)-/,s=function(u){return!u||i.test(u)||t.test(u)},o=function(u,d){return d.toUpperCase()},l=function(u,d){return"".concat(d,"-")},c=function(u,d){return d===void 0&&(d={}),s(u)?u:(u=u.toLowerCase(),d.reactCompat?u=u.replace(r,l):u=u.replace(n,l),u.replace(e,o))};return qu.camelCase=c,qu}var Wu,vQ;function hle(){if(vQ)return Wu;vQ=1;var t=Wu&&Wu.__importDefault||function(r){return r&&r.__esModule?r:{default:r}},e=t(lle()),i=cle();function n(r,s){var o={};return!r||typeof r!="string"||(0,e.default)(r,function(l,c){l&&c&&(o[(0,i.camelCase)(l,s)]=c)}),o}return n.default=n,Wu=n,Wu}var ule=hle();const fle=WS(ule),Fz=Gz("end"),Zw=Gz("start");function Gz(t){return e;function e(i){const n=i&&i.position&&i.position[t]||{};if(typeof n.line=="number"&&n.line>0&&typeof n.column=="number"&&n.column>0)return{line:n.line,column:n.column,offset:typeof n.offset=="number"&&n.offset>-1?n.offset:void 0}}}function dle(t){const e=Zw(t),i=Fz(t);if(e&&i)return{start:e,end:i}}function Sf(t){return!t||typeof t!="object"?"":"position"in t||"type"in t?_Q(t.position):"start"in t||"end"in t?_Q(t):"line"in t||"column"in t?NS(t):""}function NS(t){return yQ(t&&t.line)+":"+yQ(t&&t.column)}function _Q(t){return NS(t&&t.start)+"-"+NS(t&&t.end)}function yQ(t){return t&&typeof t=="number"?t:1}class ln extends Error{constructor(e,i,n){super(),typeof i=="string"&&(n=i,i=void 0);let r="",s={},o=!1;if(i&&("line"in i&&"column"in i?s={place:i}:"start"in i&&"end"in i?s={place:i}:"type"in i?s={ancestors:[i],place:i.position}:s={...i}),typeof e=="string"?r=e:!s.cause&&e&&(o=!0,r=e.message,s.cause=e),!s.ruleId&&!s.source&&typeof n=="string"){const c=n.indexOf(":");c===-1?s.ruleId=n:(s.source=n.slice(0,c),s.ruleId=n.slice(c+1))}if(!s.place&&s.ancestors&&s.ancestors){const c=s.ancestors[s.ancestors.length-1];c&&(s.place=c.position)}const l=s.place&&"start"in s.place?s.place.start:s.place;this.ancestors=s.ancestors||void 0,this.cause=s.cause||void 0,this.column=l?l.column:void 0,this.fatal=void 0,this.file="",this.message=r,this.line=l?l.line:void 0,this.name=Sf(s.place)||"1:1",this.place=s.place||void 0,this.reason=this.message,this.ruleId=s.ruleId||void 0,this.source=s.source||void 0,this.stack=o&&s.cause&&typeof s.cause.stack=="string"?s.cause.stack:"",this.actual=void 0,this.expected=void 0,this.note=void 0,this.url=void 0}}ln.prototype.file="";ln.prototype.name="";ln.prototype.reason="";ln.prototype.message="";ln.prototype.stack="";ln.prototype.column=void 0;ln.prototype.line=void 0;ln.prototype.ancestors=void 0;ln.prototype.cause=void 0;ln.prototype.fatal=void 0;ln.prototype.place=void 0;ln.prototype.ruleId=void 0;ln.prototype.source=void 0;const qw={}.hasOwnProperty,ple=new Map,mle=/[A-Z]/g,gle=new Set(["table","tbody","thead","tfoot","tr"]),Ole=new Set(["td","th"]),Kz="https://github.com/syntax-tree/hast-util-to-jsx-runtime";function vle(t,e){if(!e||e.Fragment===void 0)throw new TypeError("Expected `Fragment` in options");const i=e.filePath||void 0;let n;if(e.development){if(typeof e.jsxDEV!="function")throw new TypeError("Expected `jsxDEV` in options when `development: true`");n=kle(i,e.jsxDEV)}else{if(typeof e.jsx!="function")throw new TypeError("Expected `jsx` in production options");if(typeof e.jsxs!="function")throw new TypeError("Expected `jsxs` in production options");n=Cle(i,e.jsx,e.jsxs)}const r={Fragment:e.Fragment,ancestors:[],components:e.components||{},create:n,elementAttributeNameCase:e.elementAttributeNameCase||"react",evaluater:e.createEvaluater?e.createEvaluater():void 0,filePath:i,ignoreInvalidStyle:e.ignoreInvalidStyle||!1,passKeys:e.passKeys!==!1,passNode:e.passNode||!1,schema:e.space==="svg"?Xw:sle,stylePropertyNameCase:e.stylePropertyNameCase||"dom",tableCellAlignToStyle:e.tableCellAlignToStyle!==!1},s=Jz(r,t,void 0);return s&&typeof s!="string"?s:r.create(t,r.Fragment,{children:s||void 0},void 0)}function Jz(t,e,i){if(e.type==="element")return _le(t,e,i);if(e.type==="mdxFlowExpression"||e.type==="mdxTextExpression")return yle(t,e);if(e.type==="mdxJsxFlowElement"||e.type==="mdxJsxTextElement")return Sle(t,e,i);if(e.type==="mdxjsEsm")return ble(t,e);if(e.type==="root")return xle(t,e,i);if(e.type==="text")return wle(t,e)}function _le(t,e,i){const n=t.schema;let r=n;e.tagName.toLowerCase()==="svg"&&n.space==="html"&&(r=Xw,t.schema=r),t.ancestors.push(e);const s=tN(t,e.tagName,!1),o=Tle(t,e);let l=Uw(t,e);return gle.has(e.tagName)&&(l=l.filter(function(c){return typeof c=="string"?!Hae(c):!0})),eN(t,o,s,e),Ww(o,l),t.ancestors.pop(),t.schema=n,t.create(e,s,o,i)}function yle(t,e){if(e.data&&e.data.estree&&t.evaluater){const n=e.data.estree.body[0];return n.type,t.evaluater.evaluateExpression(n.expression)}sd(t,e.position)}function ble(t,e){if(e.data&&e.data.estree&&t.evaluater)return t.evaluater.evaluateProgram(e.data.estree);sd(t,e.position)}function Sle(t,e,i){const n=t.schema;let r=n;e.name==="svg"&&n.space==="html"&&(r=Xw,t.schema=r),t.ancestors.push(e);const s=e.name===null?t.Fragment:tN(t,e.name,!0),o=Ale(t,e),l=Uw(t,e);return eN(t,o,s,e),Ww(o,l),t.ancestors.pop(),t.schema=n,t.create(e,s,o,i)}function xle(t,e,i){const n={};return Ww(n,Uw(t,e)),t.create(e,t.Fragment,n,i)}function wle(t,e){return e.value}function eN(t,e,i,n){typeof i!="string"&&i!==t.Fragment&&t.passNode&&(e.node=n)}function Ww(t,e){if(e.length>0){const i=e.length>1?e:e[0];i&&(t.children=i)}}function Cle(t,e,i){return n;function n(r,s,o,l){const u=Array.isArray(o.children)?i:e;return l?u(s,o,l):u(s,o)}}function kle(t,e){return i;function i(n,r,s,o){const l=Array.isArray(s.children),c=Zw(n);return e(r,s,o,l,{columnNumber:c?c.column-1:void 0,fileName:t,lineNumber:c?c.line:void 0},void 0)}}function Tle(t,e){const i={};let n,r;for(r in e.properties)if(r!=="children"&&qw.call(e.properties,r)){const s=Ele(t,r,e.properties[r]);if(s){const[o,l]=s;t.tableCellAlignToStyle&&o==="align"&&typeof l=="string"&&Ole.has(e.tagName)?n=l:i[o]=l}}if(n){const s=i.style||(i.style={});s[t.stylePropertyNameCase==="css"?"text-align":"textAlign"]=n}return i}function Ale(t,e){const i={};for(const n of e.attributes)if(n.type==="mdxJsxExpressionAttribute")if(n.data&&n.data.estree&&t.evaluater){const s=n.data.estree.body[0];s.type;const o=s.expression;o.type;const l=o.properties[0];l.type,Object.assign(i,t.evaluater.evaluateExpression(l.argument))}else sd(t,e.position);else{const r=n.name;let s;if(n.value&&typeof n.value=="object")if(n.value.data&&n.value.data.estree&&t.evaluater){const l=n.value.data.estree.body[0];l.type,s=t.evaluater.evaluateExpression(l.expression)}else sd(t,e.position);else s=n.value===null?!0:n.value;i[r]=s}return i}function Uw(t,e){const i=[];let n=-1;const r=t.passKeys?new Map:ple;for(;++nr?0:r+e:e=e>r?r:e,i=i>0?i:0,n.length<1e4)o=Array.from(n),o.unshift(e,i),t.splice(...o);else for(i&&t.splice(e,i);s0?(Ps(t,t.length,0,e),t):e}const xQ={}.hasOwnProperty;function $le(t){const e={};let i=-1;for(;++i13&&i<32||i>126&&i<160||i>55295&&i<57344||i>64975&&i<65008||(i&65535)===65535||(i&65535)===65534||i>1114111?"�":String.fromCodePoint(i)}function ih(t){return t.replace(/[\t\n\r ]+/g," ").replace(/^ | $/g,"").toLowerCase().toUpperCase()}const vs=Qa(/[A-Za-z]/),sr=Qa(/[\dA-Za-z]/),jle=Qa(/[#-'*+\--9=?A-Z^-~]/);function jS(t){return t!==null&&(t<32||t===127)}const IS=Qa(/\d/),Ile=Qa(/[\dA-Fa-f]/),Vle=Qa(/[!-/:-@[-`{-~]/);function $e(t){return t!==null&&t<-2}function Nn(t){return t!==null&&(t<0||t===32)}function lt(t){return t===-2||t===-1||t===32}const Xle=Qa(new RegExp("\\p{P}|\\p{S}","u")),Zle=Qa(/\s/);function Qa(t){return e;function e(i){return i!==null&&i>-1&&t.test(String.fromCharCode(i))}}function Eh(t){const e=[];let i=-1,n=0,r=0;for(;++i55295&&s<57344){const l=t.charCodeAt(i+1);s<56320&&l>56319&&l<57344?(o=String.fromCharCode(s,l),r=1):o="�"}else o=String.fromCharCode(s);o&&(e.push(t.slice(n,i),encodeURIComponent(o)),n=i+r+1,o=""),r&&(i+=r,r=0)}return e.join("")+t.slice(n)}function kt(t,e,i,n){const r=n?n-1:Number.POSITIVE_INFINITY;let s=0;return o;function o(c){return lt(c)?(t.enter(i),l(c)):e(c)}function l(c){return lt(c)&&s++o))return;const z=e.events.length;let N=z,q,J;for(;N--;)if(e.events[N][0]==="exit"&&e.events[N][1].type==="chunkFlow"){if(q){J=e.events[N][1].end;break}q=!0}for(w(n),E=z;ET;){const Q=i[A];e.containerState=Q[1],Q[0].exit.call(e,t)}i.length=T}function k(){r.write([null]),s=void 0,r=void 0,e.containerState._closeFlow=void 0}}function Hle(t,e,i){return kt(t,t.attempt(this.parser.constructs.document,e,i),"linePrefix",this.parser.constructs.disable.null.includes("codeIndented")?void 0:4)}function CQ(t){if(t===null||Nn(t)||Zle(t))return 1;if(Xle(t))return 2}function Hw(t,e,i){const n=[];let r=-1;for(;++r1&&t[i][1].end.offset-t[i][1].start.offset>1?2:1;const p={...t[n][1].end},g={...t[i][1].start};kQ(p,-c),kQ(g,c),o={type:c>1?"strongSequence":"emphasisSequence",start:p,end:{...t[n][1].end}},l={type:c>1?"strongSequence":"emphasisSequence",start:{...t[i][1].start},end:g},s={type:c>1?"strongText":"emphasisText",start:{...t[n][1].end},end:{...t[i][1].start}},r={type:c>1?"strong":"emphasis",start:{...o.start},end:{...l.end}},t[n][1].end={...o.start},t[i][1].start={...l.end},u=[],t[n][1].end.offset-t[n][1].start.offset&&(u=wr(u,[["enter",t[n][1],e],["exit",t[n][1],e]])),u=wr(u,[["enter",r,e],["enter",o,e],["exit",o,e],["enter",s,e]]),u=wr(u,Hw(e.parser.constructs.insideSpan.null,t.slice(n+1,i),e)),u=wr(u,[["exit",s,e],["enter",l,e],["exit",l,e],["exit",r,e]]),t[i][1].end.offset-t[i][1].start.offset?(d=2,u=wr(u,[["enter",t[i][1],e],["exit",t[i][1],e]])):d=0,Ps(t,n-1,i-n+3,u),i=n+u.length-d-2;break}}for(i=-1;++i0&<(E)?kt(t,k,"linePrefix",s+1)(E):k(E)}function k(E){return E===null||$e(E)?t.check(TQ,b,A)(E):(t.enter("codeFlowValue"),T(E))}function T(E){return E===null||$e(E)?(t.exit("codeFlowValue"),k(E)):(t.consume(E),T)}function A(E){return t.exit("codeFenced"),e(E)}function Q(E,z,N){let q=0;return J;function J($){return E.enter("lineEnding"),E.consume($),E.exit("lineEnding"),U}function U($){return E.enter("codeFencedFence"),lt($)?kt(E,R,"linePrefix",n.parser.constructs.disable.null.includes("codeIndented")?void 0:4)($):R($)}function R($){return $===l?(E.enter("codeFencedFenceSequence"),B($)):N($)}function B($){return $===l?(q++,E.consume($),B):q>=o?(E.exit("codeFencedFenceSequence"),lt($)?kt(E,j,"whitespace")($):j($)):N($)}function j($){return $===null||$e($)?(E.exit("codeFencedFence"),z($)):N($)}}}function ace(t,e,i){const n=this;return r;function r(o){return o===null?i(o):(t.enter("lineEnding"),t.consume(o),t.exit("lineEnding"),s)}function s(o){return n.parser.lazy[n.now().line]?i(o):e(o)}}const l1={name:"codeIndented",tokenize:cce},lce={partial:!0,tokenize:hce};function cce(t,e,i){const n=this;return r;function r(u){return t.enter("codeIndented"),kt(t,s,"linePrefix",5)(u)}function s(u){const d=n.events[n.events.length-1];return d&&d[1].type==="linePrefix"&&d[2].sliceSerialize(d[1],!0).length>=4?o(u):i(u)}function o(u){return u===null?c(u):$e(u)?t.attempt(lce,o,c)(u):(t.enter("codeFlowValue"),l(u))}function l(u){return u===null||$e(u)?(t.exit("codeFlowValue"),o(u)):(t.consume(u),l)}function c(u){return t.exit("codeIndented"),e(u)}}function hce(t,e,i){const n=this;return r;function r(o){return n.parser.lazy[n.now().line]?i(o):$e(o)?(t.enter("lineEnding"),t.consume(o),t.exit("lineEnding"),r):kt(t,s,"linePrefix",5)(o)}function s(o){const l=n.events[n.events.length-1];return l&&l[1].type==="linePrefix"&&l[2].sliceSerialize(l[1],!0).length>=4?e(o):$e(o)?r(o):i(o)}}const uce={name:"codeText",previous:dce,resolve:fce,tokenize:pce};function fce(t){let e=t.length-4,i=3,n,r;if((t[i][1].type==="lineEnding"||t[i][1].type==="space")&&(t[e][1].type==="lineEnding"||t[e][1].type==="space")){for(n=i;++n=this.left.length+this.right.length)throw new RangeError("Cannot access index `"+e+"` in a splice buffer of size `"+(this.left.length+this.right.length)+"`");return ethis.left.length?this.right.slice(this.right.length-n+this.left.length,this.right.length-e+this.left.length).reverse():this.left.slice(e).concat(this.right.slice(this.right.length-n+this.left.length).reverse())}splice(e,i,n){const r=i||0;this.setCursor(Math.trunc(e));const s=this.right.splice(this.right.length-r,Number.POSITIVE_INFINITY);return n&&Uu(this.left,n),s.reverse()}pop(){return this.setCursor(Number.POSITIVE_INFINITY),this.left.pop()}push(e){this.setCursor(Number.POSITIVE_INFINITY),this.left.push(e)}pushMany(e){this.setCursor(Number.POSITIVE_INFINITY),Uu(this.left,e)}unshift(e){this.setCursor(0),this.right.push(e)}unshiftMany(e){this.setCursor(0),Uu(this.right,e.reverse())}setCursor(e){if(!(e===this.left.length||e>this.left.length&&this.right.length===0||e<0&&this.left.length===0))if(e=4?e(o):t.interrupt(n.parser.constructs.flow,i,e)(o)}}function lN(t,e,i,n,r,s,o,l,c){const u=c||Number.POSITIVE_INFINITY;let d=0;return p;function p(w){return w===60?(t.enter(n),t.enter(r),t.enter(s),t.consume(w),t.exit(s),g):w===null||w===32||w===41||jS(w)?i(w):(t.enter(n),t.enter(o),t.enter(l),t.enter("chunkString",{contentType:"string"}),b(w))}function g(w){return w===62?(t.enter(s),t.consume(w),t.exit(s),t.exit(r),t.exit(n),e):(t.enter(l),t.enter("chunkString",{contentType:"string"}),O(w))}function O(w){return w===62?(t.exit("chunkString"),t.exit(l),g(w)):w===null||w===60||$e(w)?i(w):(t.consume(w),w===92?_:O)}function _(w){return w===60||w===62||w===92?(t.consume(w),O):O(w)}function b(w){return!d&&(w===null||w===41||Nn(w))?(t.exit("chunkString"),t.exit(l),t.exit(o),t.exit(n),e(w)):d999||O===null||O===91||O===93&&!c||O===94&&!l&&"_hiddenFootnoteSupport"in o.parser.constructs?i(O):O===93?(t.exit(s),t.enter(r),t.consume(O),t.exit(r),t.exit(n),e):$e(O)?(t.enter("lineEnding"),t.consume(O),t.exit("lineEnding"),d):(t.enter("chunkString",{contentType:"string"}),p(O))}function p(O){return O===null||O===91||O===93||$e(O)||l++>999?(t.exit("chunkString"),d(O)):(t.consume(O),c||(c=!lt(O)),O===92?g:p)}function g(O){return O===91||O===92||O===93?(t.consume(O),l++,p):p(O)}}function hN(t,e,i,n,r,s){let o;return l;function l(g){return g===34||g===39||g===40?(t.enter(n),t.enter(r),t.consume(g),t.exit(r),o=g===40?41:g,c):i(g)}function c(g){return g===o?(t.enter(r),t.consume(g),t.exit(r),t.exit(n),e):(t.enter(s),u(g))}function u(g){return g===o?(t.exit(s),c(o)):g===null?i(g):$e(g)?(t.enter("lineEnding"),t.consume(g),t.exit("lineEnding"),kt(t,u,"linePrefix")):(t.enter("chunkString",{contentType:"string"}),d(g))}function d(g){return g===o||g===null||$e(g)?(t.exit("chunkString"),u(g)):(t.consume(g),g===92?p:d)}function p(g){return g===o||g===92?(t.consume(g),d):d(g)}}function xf(t,e){let i;return n;function n(r){return $e(r)?(t.enter("lineEnding"),t.consume(r),t.exit("lineEnding"),i=!0,n):lt(r)?kt(t,n,i?"linePrefix":"lineSuffix")(r):e(r)}}const Sce={name:"definition",tokenize:wce},xce={partial:!0,tokenize:Cce};function wce(t,e,i){const n=this;let r;return s;function s(O){return t.enter("definition"),o(O)}function o(O){return cN.call(n,t,l,i,"definitionLabel","definitionLabelMarker","definitionLabelString")(O)}function l(O){return r=ih(n.sliceSerialize(n.events[n.events.length-1][1]).slice(1,-1)),O===58?(t.enter("definitionMarker"),t.consume(O),t.exit("definitionMarker"),c):i(O)}function c(O){return Nn(O)?xf(t,u)(O):u(O)}function u(O){return lN(t,d,i,"definitionDestination","definitionDestinationLiteral","definitionDestinationLiteralMarker","definitionDestinationRaw","definitionDestinationString")(O)}function d(O){return t.attempt(xce,p,p)(O)}function p(O){return lt(O)?kt(t,g,"whitespace")(O):g(O)}function g(O){return O===null||$e(O)?(t.exit("definition"),n.parser.defined.push(r),e(O)):i(O)}}function Cce(t,e,i){return n;function n(l){return Nn(l)?xf(t,r)(l):i(l)}function r(l){return hN(t,s,i,"definitionTitle","definitionTitleMarker","definitionTitleString")(l)}function s(l){return lt(l)?kt(t,o,"whitespace")(l):o(l)}function o(l){return l===null||$e(l)?e(l):i(l)}}const kce={name:"hardBreakEscape",tokenize:Tce};function Tce(t,e,i){return n;function n(s){return t.enter("hardBreakEscape"),t.consume(s),r}function r(s){return $e(s)?(t.exit("hardBreakEscape"),e(s)):i(s)}}const Ace={name:"headingAtx",resolve:Ece,tokenize:Mce};function Ece(t,e){let i=t.length-2,n=3,r,s;return t[n][1].type==="whitespace"&&(n+=2),i-2>n&&t[i][1].type==="whitespace"&&(i-=2),t[i][1].type==="atxHeadingSequence"&&(n===i-1||i-4>n&&t[i-2][1].type==="whitespace")&&(i-=n+1===i?2:4),i>n&&(r={type:"atxHeadingText",start:t[n][1].start,end:t[i][1].end},s={type:"chunkText",start:t[n][1].start,end:t[i][1].end,contentType:"text"},Ps(t,n,i-n+1,[["enter",r,e],["enter",s,e],["exit",s,e],["exit",r,e]])),t}function Mce(t,e,i){let n=0;return r;function r(d){return t.enter("atxHeading"),s(d)}function s(d){return t.enter("atxHeadingSequence"),o(d)}function o(d){return d===35&&n++<6?(t.consume(d),o):d===null||Nn(d)?(t.exit("atxHeadingSequence"),l(d)):i(d)}function l(d){return d===35?(t.enter("atxHeadingSequence"),c(d)):d===null||$e(d)?(t.exit("atxHeading"),e(d)):lt(d)?kt(t,l,"whitespace")(d):(t.enter("atxHeadingText"),u(d))}function c(d){return d===35?(t.consume(d),c):(t.exit("atxHeadingSequence"),l(d))}function u(d){return d===null||d===35||Nn(d)?(t.exit("atxHeadingText"),l(d)):(t.consume(d),u)}}const Pce=["address","article","aside","base","basefont","blockquote","body","caption","center","col","colgroup","dd","details","dialog","dir","div","dl","dt","fieldset","figcaption","figure","footer","form","frame","frameset","h1","h2","h3","h4","h5","h6","head","header","hr","html","iframe","legend","li","link","main","menu","menuitem","nav","noframes","ol","optgroup","option","p","param","search","section","summary","table","tbody","td","tfoot","th","thead","title","tr","track","ul"],EQ=["pre","script","style","textarea"],Rce={concrete:!0,name:"htmlFlow",resolveTo:Dce,tokenize:Bce},Qce={partial:!0,tokenize:zce},Lce={partial:!0,tokenize:$ce};function Dce(t){let e=t.length;for(;e--&&!(t[e][0]==="enter"&&t[e][1].type==="htmlFlow"););return e>1&&t[e-2][1].type==="linePrefix"&&(t[e][1].start=t[e-2][1].start,t[e+1][1].start=t[e-2][1].start,t.splice(e-2,2)),t}function Bce(t,e,i){const n=this;let r,s,o,l,c;return u;function u(L){return d(L)}function d(L){return t.enter("htmlFlow"),t.enter("htmlFlowData"),t.consume(L),p}function p(L){return L===33?(t.consume(L),g):L===47?(t.consume(L),s=!0,b):L===63?(t.consume(L),r=3,n.interrupt?e:M):vs(L)?(t.consume(L),o=String.fromCharCode(L),x):i(L)}function g(L){return L===45?(t.consume(L),r=2,O):L===91?(t.consume(L),r=5,l=0,_):vs(L)?(t.consume(L),r=4,n.interrupt?e:M):i(L)}function O(L){return L===45?(t.consume(L),n.interrupt?e:M):i(L)}function _(L){const ue="CDATA[";return L===ue.charCodeAt(l++)?(t.consume(L),l===ue.length?n.interrupt?e:R:_):i(L)}function b(L){return vs(L)?(t.consume(L),o=String.fromCharCode(L),x):i(L)}function x(L){if(L===null||L===47||L===62||Nn(L)){const ue=L===47,he=o.toLowerCase();return!ue&&!s&&EQ.includes(he)?(r=1,n.interrupt?e(L):R(L)):Pce.includes(o.toLowerCase())?(r=6,ue?(t.consume(L),w):n.interrupt?e(L):R(L)):(r=7,n.interrupt&&!n.parser.lazy[n.now().line]?i(L):s?k(L):T(L))}return L===45||sr(L)?(t.consume(L),o+=String.fromCharCode(L),x):i(L)}function w(L){return L===62?(t.consume(L),n.interrupt?e:R):i(L)}function k(L){return lt(L)?(t.consume(L),k):J(L)}function T(L){return L===47?(t.consume(L),J):L===58||L===95||vs(L)?(t.consume(L),A):lt(L)?(t.consume(L),T):J(L)}function A(L){return L===45||L===46||L===58||L===95||sr(L)?(t.consume(L),A):Q(L)}function Q(L){return L===61?(t.consume(L),E):lt(L)?(t.consume(L),Q):T(L)}function E(L){return L===null||L===60||L===61||L===62||L===96?i(L):L===34||L===39?(t.consume(L),c=L,z):lt(L)?(t.consume(L),E):N(L)}function z(L){return L===c?(t.consume(L),c=null,q):L===null||$e(L)?i(L):(t.consume(L),z)}function N(L){return L===null||L===34||L===39||L===47||L===60||L===61||L===62||L===96||Nn(L)?Q(L):(t.consume(L),N)}function q(L){return L===47||L===62||lt(L)?T(L):i(L)}function J(L){return L===62?(t.consume(L),U):i(L)}function U(L){return L===null||$e(L)?R(L):lt(L)?(t.consume(L),U):i(L)}function R(L){return L===45&&r===2?(t.consume(L),D):L===60&&r===1?(t.consume(L),X):L===62&&r===4?(t.consume(L),I):L===63&&r===3?(t.consume(L),M):L===93&&r===5?(t.consume(L),F):$e(L)&&(r===6||r===7)?(t.exit("htmlFlowData"),t.check(Qce,K,B)(L)):L===null||$e(L)?(t.exit("htmlFlowData"),B(L)):(t.consume(L),R)}function B(L){return t.check(Lce,j,K)(L)}function j(L){return t.enter("lineEnding"),t.consume(L),t.exit("lineEnding"),$}function $(L){return L===null||$e(L)?B(L):(t.enter("htmlFlowData"),R(L))}function D(L){return L===45?(t.consume(L),M):R(L)}function X(L){return L===47?(t.consume(L),o="",H):R(L)}function H(L){if(L===62){const ue=o.toLowerCase();return EQ.includes(ue)?(t.consume(L),I):R(L)}return vs(L)&&o.length<8?(t.consume(L),o+=String.fromCharCode(L),H):R(L)}function F(L){return L===93?(t.consume(L),M):R(L)}function M(L){return L===62?(t.consume(L),I):L===45&&r===2?(t.consume(L),M):R(L)}function I(L){return L===null||$e(L)?(t.exit("htmlFlowData"),K(L)):(t.consume(L),I)}function K(L){return t.exit("htmlFlow"),e(L)}}function $ce(t,e,i){const n=this;return r;function r(o){return $e(o)?(t.enter("lineEnding"),t.consume(o),t.exit("lineEnding"),s):i(o)}function s(o){return n.parser.lazy[n.now().line]?i(o):e(o)}}function zce(t,e,i){return n;function n(r){return t.enter("lineEnding"),t.consume(r),t.exit("lineEnding"),t.attempt(PO,e,i)}}const Nce={name:"htmlText",tokenize:jce};function jce(t,e,i){const n=this;let r,s,o;return l;function l(M){return t.enter("htmlText"),t.enter("htmlTextData"),t.consume(M),c}function c(M){return M===33?(t.consume(M),u):M===47?(t.consume(M),Q):M===63?(t.consume(M),T):vs(M)?(t.consume(M),N):i(M)}function u(M){return M===45?(t.consume(M),d):M===91?(t.consume(M),s=0,_):vs(M)?(t.consume(M),k):i(M)}function d(M){return M===45?(t.consume(M),O):i(M)}function p(M){return M===null?i(M):M===45?(t.consume(M),g):$e(M)?(o=p,X(M)):(t.consume(M),p)}function g(M){return M===45?(t.consume(M),O):p(M)}function O(M){return M===62?D(M):M===45?g(M):p(M)}function _(M){const I="CDATA[";return M===I.charCodeAt(s++)?(t.consume(M),s===I.length?b:_):i(M)}function b(M){return M===null?i(M):M===93?(t.consume(M),x):$e(M)?(o=b,X(M)):(t.consume(M),b)}function x(M){return M===93?(t.consume(M),w):b(M)}function w(M){return M===62?D(M):M===93?(t.consume(M),w):b(M)}function k(M){return M===null||M===62?D(M):$e(M)?(o=k,X(M)):(t.consume(M),k)}function T(M){return M===null?i(M):M===63?(t.consume(M),A):$e(M)?(o=T,X(M)):(t.consume(M),T)}function A(M){return M===62?D(M):T(M)}function Q(M){return vs(M)?(t.consume(M),E):i(M)}function E(M){return M===45||sr(M)?(t.consume(M),E):z(M)}function z(M){return $e(M)?(o=z,X(M)):lt(M)?(t.consume(M),z):D(M)}function N(M){return M===45||sr(M)?(t.consume(M),N):M===47||M===62||Nn(M)?q(M):i(M)}function q(M){return M===47?(t.consume(M),D):M===58||M===95||vs(M)?(t.consume(M),J):$e(M)?(o=q,X(M)):lt(M)?(t.consume(M),q):D(M)}function J(M){return M===45||M===46||M===58||M===95||sr(M)?(t.consume(M),J):U(M)}function U(M){return M===61?(t.consume(M),R):$e(M)?(o=U,X(M)):lt(M)?(t.consume(M),U):q(M)}function R(M){return M===null||M===60||M===61||M===62||M===96?i(M):M===34||M===39?(t.consume(M),r=M,B):$e(M)?(o=R,X(M)):lt(M)?(t.consume(M),R):(t.consume(M),j)}function B(M){return M===r?(t.consume(M),r=void 0,$):M===null?i(M):$e(M)?(o=B,X(M)):(t.consume(M),B)}function j(M){return M===null||M===34||M===39||M===60||M===61||M===96?i(M):M===47||M===62||Nn(M)?q(M):(t.consume(M),j)}function $(M){return M===47||M===62||Nn(M)?q(M):i(M)}function D(M){return M===62?(t.consume(M),t.exit("htmlTextData"),t.exit("htmlText"),e):i(M)}function X(M){return t.exit("htmlTextData"),t.enter("lineEnding"),t.consume(M),t.exit("lineEnding"),H}function H(M){return lt(M)?kt(t,F,"linePrefix",n.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(M):F(M)}function F(M){return t.enter("htmlTextData"),o(M)}}const Fw={name:"labelEnd",resolveAll:Zce,resolveTo:qce,tokenize:Wce},Ice={tokenize:Uce},Vce={tokenize:Yce},Xce={tokenize:Hce};function Zce(t){let e=-1;const i=[];for(;++e=3&&(u===null||$e(u))?(t.exit("thematicBreak"),e(u)):i(u)}function c(u){return u===r?(t.consume(u),n++,c):(t.exit("thematicBreakSequence"),lt(u)?kt(t,l,"whitespace")(u):l(u))}}const Rn={continuation:{tokenize:she},exit:ahe,name:"list",tokenize:rhe},ihe={partial:!0,tokenize:lhe},nhe={partial:!0,tokenize:ohe};function rhe(t,e,i){const n=this,r=n.events[n.events.length-1];let s=r&&r[1].type==="linePrefix"?r[2].sliceSerialize(r[1],!0).length:0,o=0;return l;function l(O){const _=n.containerState.type||(O===42||O===43||O===45?"listUnordered":"listOrdered");if(_==="listUnordered"?!n.containerState.marker||O===n.containerState.marker:IS(O)){if(n.containerState.type||(n.containerState.type=_,t.enter(_,{_container:!0})),_==="listUnordered")return t.enter("listItemPrefix"),O===42||O===45?t.check(cg,i,u)(O):u(O);if(!n.interrupt||O===49)return t.enter("listItemPrefix"),t.enter("listItemValue"),c(O)}return i(O)}function c(O){return IS(O)&&++o<10?(t.consume(O),c):(!n.interrupt||o<2)&&(n.containerState.marker?O===n.containerState.marker:O===41||O===46)?(t.exit("listItemValue"),u(O)):i(O)}function u(O){return t.enter("listItemMarker"),t.consume(O),t.exit("listItemMarker"),n.containerState.marker=n.containerState.marker||O,t.check(PO,n.interrupt?i:d,t.attempt(ihe,g,p))}function d(O){return n.containerState.initialBlankLine=!0,s++,g(O)}function p(O){return lt(O)?(t.enter("listItemPrefixWhitespace"),t.consume(O),t.exit("listItemPrefixWhitespace"),g):i(O)}function g(O){return n.containerState.size=s+n.sliceSerialize(t.exit("listItemPrefix"),!0).length,e(O)}}function she(t,e,i){const n=this;return n.containerState._closeFlow=void 0,t.check(PO,r,s);function r(l){return n.containerState.furtherBlankLines=n.containerState.furtherBlankLines||n.containerState.initialBlankLine,kt(t,e,"listItemIndent",n.containerState.size+1)(l)}function s(l){return n.containerState.furtherBlankLines||!lt(l)?(n.containerState.furtherBlankLines=void 0,n.containerState.initialBlankLine=void 0,o(l)):(n.containerState.furtherBlankLines=void 0,n.containerState.initialBlankLine=void 0,t.attempt(nhe,e,o)(l))}function o(l){return n.containerState._closeFlow=!0,n.interrupt=void 0,kt(t,t.attempt(Rn,e,i),"linePrefix",n.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(l)}}function ohe(t,e,i){const n=this;return kt(t,r,"listItemIndent",n.containerState.size+1);function r(s){const o=n.events[n.events.length-1];return o&&o[1].type==="listItemIndent"&&o[2].sliceSerialize(o[1],!0).length===n.containerState.size?e(s):i(s)}}function ahe(t){t.exit(this.containerState.type)}function lhe(t,e,i){const n=this;return kt(t,r,"listItemPrefixWhitespace",n.parser.constructs.disable.null.includes("codeIndented")?void 0:5);function r(s){const o=n.events[n.events.length-1];return!lt(s)&&o&&o[1].type==="listItemPrefixWhitespace"?e(s):i(s)}}const MQ={name:"setextUnderline",resolveTo:che,tokenize:hhe};function che(t,e){let i=t.length,n,r,s;for(;i--;)if(t[i][0]==="enter"){if(t[i][1].type==="content"){n=i;break}t[i][1].type==="paragraph"&&(r=i)}else t[i][1].type==="content"&&t.splice(i,1),!s&&t[i][1].type==="definition"&&(s=i);const o={type:"setextHeading",start:{...t[n][1].start},end:{...t[t.length-1][1].end}};return t[r][1].type="setextHeadingText",s?(t.splice(r,0,["enter",o,e]),t.splice(s+1,0,["exit",t[n][1],e]),t[n][1].end={...t[s][1].end}):t[n][1]=o,t.push(["exit",o,e]),t}function hhe(t,e,i){const n=this;let r;return s;function s(u){let d=n.events.length,p;for(;d--;)if(n.events[d][1].type!=="lineEnding"&&n.events[d][1].type!=="linePrefix"&&n.events[d][1].type!=="content"){p=n.events[d][1].type==="paragraph";break}return!n.parser.lazy[n.now().line]&&(n.interrupt||p)?(t.enter("setextHeadingLine"),r=u,o(u)):i(u)}function o(u){return t.enter("setextHeadingLineSequence"),l(u)}function l(u){return u===r?(t.consume(u),l):(t.exit("setextHeadingLineSequence"),lt(u)?kt(t,c,"lineSuffix")(u):c(u))}function c(u){return u===null||$e(u)?(t.exit("setextHeadingLine"),e(u)):i(u)}}const uhe={tokenize:fhe};function fhe(t){const e=this,i=t.attempt(PO,n,t.attempt(this.parser.constructs.flowInitial,r,kt(t,t.attempt(this.parser.constructs.flow,r,t.attempt(Oce,r)),"linePrefix")));return i;function n(s){if(s===null){t.consume(s);return}return t.enter("lineEndingBlank"),t.consume(s),t.exit("lineEndingBlank"),e.currentConstruct=void 0,i}function r(s){if(s===null){t.consume(s);return}return t.enter("lineEnding"),t.consume(s),t.exit("lineEnding"),e.currentConstruct=void 0,i}}const dhe={resolveAll:fN()},phe=uN("string"),mhe=uN("text");function uN(t){return{resolveAll:fN(t==="text"?ghe:void 0),tokenize:e};function e(i){const n=this,r=this.parser.constructs[t],s=i.attempt(r,o,l);return o;function o(d){return u(d)?s(d):l(d)}function l(d){if(d===null){i.consume(d);return}return i.enter("data"),i.consume(d),c}function c(d){return u(d)?(i.exit("data"),s(d)):(i.consume(d),c)}function u(d){if(d===null)return!0;const p=r[d];let g=-1;if(p)for(;++g-1){const l=o[0];typeof l=="string"?o[0]=l.slice(n):o.shift()}s>0&&o.push(t[r].slice(0,s))}return o}function Ehe(t,e){let i=-1;const n=[];let r;for(;++i{function e(s,r,o,l){return l!==void 0?`#${rl(s)}${rl(r)}${rl(o)}${rl(l)}`:`#${rl(s)}${rl(r)}${rl(o)}`}t.toCss=e;function i(s,r,o,l=255){return(s<<24|r<<16|o<<8|l)>>>0}t.toRgba=i;function n(s,r,o,l){return{css:t.toCss(s,r,o,l),rgba:t.toRgba(s,r,o,l)}}t.toColor=n})(nn||(nn={}));var vae;(t=>{function e(c,u){if(Wt=(u.rgba&255)/255,Wt===1)return{css:u.css,rgba:u.rgba};let d=u.rgba>>24&255,p=u.rgba>>16&255,g=u.rgba>>8&255,O=c.rgba>>24&255,_=c.rgba>>16&255,b=c.rgba>>8&255;Pi=O+Math.round((d-O)*Wt),Ri=_+Math.round((p-_)*Wt),Qi=b+Math.round((g-b)*Wt);let x=nn.toCss(Pi,Ri,Qi),w=nn.toRgba(Pi,Ri,Qi);return{css:x,rgba:w}}t.blend=e;function i(c){return(c.rgba&255)===255}t.isOpaque=i;function n(c,u,d){let p=lg.ensureContrastRatio(c.rgba,u.rgba,d);if(p)return nn.toColor(p>>24&255,p>>16&255,p>>8&255)}t.ensureContrastRatio=n;function s(c){let u=(c.rgba|255)>>>0;return[Pi,Ri,Qi]=lg.toChannels(u),{css:nn.toCss(Pi,Ri,Qi),rgba:u}}t.opaque=s;function r(c,u){return Wt=Math.round(u*255),[Pi,Ri,Qi]=lg.toChannels(c.rgba),{css:nn.toCss(Pi,Ri,Qi,Wt),rgba:nn.toRgba(Pi,Ri,Qi,Wt)}}t.opacity=r;function o(c,u){return Wt=c.rgba&255,r(c,Wt*u/255)}t.multiplyOpacity=o;function l(c){return[c.rgba>>24&255,c.rgba>>16&255,c.rgba>>8&255]}t.toColorRGB=l})(vae||(vae={}));var Zi;(t=>{let e,i;try{let s=document.createElement("canvas");s.width=1,s.height=1;let r=s.getContext("2d",{willReadFrequently:!0});r&&(e=r,e.globalCompositeOperation="copy",i=e.createLinearGradient(0,0,1,1))}catch{}function n(s){if(s.match(/#[\da-f]{3,8}/i))switch(s.length){case 4:return Pi=parseInt(s.slice(1,2).repeat(2),16),Ri=parseInt(s.slice(2,3).repeat(2),16),Qi=parseInt(s.slice(3,4).repeat(2),16),nn.toColor(Pi,Ri,Qi);case 5:return Pi=parseInt(s.slice(1,2).repeat(2),16),Ri=parseInt(s.slice(2,3).repeat(2),16),Qi=parseInt(s.slice(3,4).repeat(2),16),Wt=parseInt(s.slice(4,5).repeat(2),16),nn.toColor(Pi,Ri,Qi,Wt);case 7:return{css:s,rgba:(parseInt(s.slice(1),16)<<8|255)>>>0};case 9:return{css:s,rgba:parseInt(s.slice(1),16)>>>0}}let r=s.match(/rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(,\s*(0|1|\d?\.(\d+))\s*)?\)/);if(r)return Pi=parseInt(r[1]),Ri=parseInt(r[2]),Qi=parseInt(r[3]),Wt=Math.round((r[5]===void 0?1:parseFloat(r[5]))*255),nn.toColor(Pi,Ri,Qi,Wt);if(!e||!i)throw new Error("css.toColor: Unsupported css format");if(e.fillStyle=i,e.fillStyle=s,typeof e.fillStyle!="string")throw new Error("css.toColor: Unsupported css format");if(e.fillRect(0,0,1,1),[Pi,Ri,Qi,Wt]=e.getImageData(0,0,1,1).data,Wt!==255)throw new Error("css.toColor: Unsupported css format");return{rgba:nn.toRgba(Pi,Ri,Qi,Wt),css:s}}t.toColor=n})(Zi||(Zi={}));var pn;(t=>{function e(n){return i(n>>16&255,n>>8&255,n&255)}t.relativeLuminance=e;function i(n,s,r){let o=n/255,l=s/255,c=r/255,u=o<=.03928?o/12.92:Math.pow((o+.055)/1.055,2.4),d=l<=.03928?l/12.92:Math.pow((l+.055)/1.055,2.4),p=c<=.03928?c/12.92:Math.pow((c+.055)/1.055,2.4);return u*.2126+d*.7152+p*.0722}t.relativeLuminance2=i})(pn||(pn={}));var lg;(t=>{function e(o,l){if(Wt=(l&255)/255,Wt===1)return l;let c=l>>24&255,u=l>>16&255,d=l>>8&255,p=o>>24&255,g=o>>16&255,O=o>>8&255;return Pi=p+Math.round((c-p)*Wt),Ri=g+Math.round((u-g)*Wt),Qi=O+Math.round((d-O)*Wt),nn.toRgba(Pi,Ri,Qi)}t.blend=e;function i(o,l,c){let u=pn.relativeLuminance(o>>8),d=pn.relativeLuminance(l>>8);if(co(u,d)>8));if(_>8));return _>x?O:b}return O}let p=s(o,l,c),g=co(u,pn.relativeLuminance(p>>8));if(g>8));return g>_?p:O}return p}}t.ensureContrastRatio=i;function n(o,l,c){let u=o>>24&255,d=o>>16&255,p=o>>8&255,g=l>>24&255,O=l>>16&255,_=l>>8&255,b=co(pn.relativeLuminance2(g,O,_),pn.relativeLuminance2(u,d,p));for(;b0||O>0||_>0);)g-=Math.max(0,Math.ceil(g*.1)),O-=Math.max(0,Math.ceil(O*.1)),_-=Math.max(0,Math.ceil(_*.1)),b=co(pn.relativeLuminance2(g,O,_),pn.relativeLuminance2(u,d,p));return(g<<24|O<<16|_<<8|255)>>>0}t.reduceLuminance=n;function s(o,l,c){let u=o>>24&255,d=o>>16&255,p=o>>8&255,g=l>>24&255,O=l>>16&255,_=l>>8&255,b=co(pn.relativeLuminance2(g,O,_),pn.relativeLuminance2(u,d,p));for(;b>>0}t.increaseLuminance=s;function r(o){return[o>>24&255,o>>16&255,o>>8&255,o&255]}t.toChannels=r})(lg||(lg={}));function rl(t){let e=t.toString(16);return e.length<2?"0"+e:e}function co(t,e){return t{let t=[Zi.toColor("#2e3436"),Zi.toColor("#cc0000"),Zi.toColor("#4e9a06"),Zi.toColor("#c4a000"),Zi.toColor("#3465a4"),Zi.toColor("#75507b"),Zi.toColor("#06989a"),Zi.toColor("#d3d7cf"),Zi.toColor("#555753"),Zi.toColor("#ef2929"),Zi.toColor("#8ae234"),Zi.toColor("#fce94f"),Zi.toColor("#729fcf"),Zi.toColor("#ad7fa8"),Zi.toColor("#34e2e2"),Zi.toColor("#eeeeec")],e=[0,95,135,175,215,255];for(let i=0;i<216;i++){let n=e[i/36%6|0],s=e[i/6%6|0],r=e[i%6];t.push({css:nn.toCss(n,s,r),rgba:nn.toRgba(n,s,r)})}for(let i=0;i<24;i++){let n=8+i*10;t.push({css:nn.toCss(n,n,n),rgba:nn.toRgba(n,n,n)})}return t})());function cQ(t,e,i){return Math.max(e,Math.min(t,i))}function yae(t){switch(t){case"&":return"&";case"<":return"<"}return t}var zN=class{constructor(t){this._buffer=t}serialize(t,e){let i=this._buffer.getNullCell(),n=this._buffer.getNullCell(),s=i,r=t.start.y,o=t.end.y,l=t.start.x,c=t.end.x;this._beforeSerialize(o-r,r,o);for(let u=r;u<=o;u++){let d=this._buffer.getLine(u);if(d){let p=u===t.start.y?l:0,g=u===t.end.y?c:d.length;for(let O=p;O0&&!ho(this._cursorStyle,this._backgroundCell)&&(this._currentRow+=`\x1B[${this._nullCellCount}X`);let i="";if(!e){t-this._firstRow>=this._terminal.rows&&((n=this._buffer.getLine(this._cursorStyleRow))==null||n.getCell(this._cursorStyleCol,this._backgroundCell));let s=this._buffer.getLine(t),r=this._buffer.getLine(t+1);if(!r.isWrapped)i=`\r +`,this._lastCursorRow=t+1,this._lastCursorCol=0;else{i="";let o=s.getCell(s.length-1,this._thisRowLastChar),l=s.getCell(s.length-2,this._thisRowLastSecondChar),c=r.getCell(0,this._nextRowFirstChar),u=c.getWidth()>1,d=!1;(c.getChars()&&u?this._nullCellCount<=1:this._nullCellCount<=0)&&((o.getChars()||o.getWidth()===0)&&ho(o,c)&&(d=!0),u&&(l.getChars()||l.getWidth()===0)&&ho(o,c)&&ho(l,c)&&(d=!0)),d||(i="-".repeat(this._nullCellCount+1),i+="\x1B[1D\x1B[1X",this._nullCellCount>0&&(i+="\x1B[A",i+=`\x1B[${s.length-this._nullCellCount}C`,i+=`\x1B[${this._nullCellCount}X`,i+=`\x1B[${s.length-this._nullCellCount}D`,i+="\x1B[B"),this._lastContentCursorRow=t+1,this._lastContentCursorCol=0,this._lastCursorRow=t+1,this._lastCursorCol=0)}}this._allRows[this._rowIndex]=this._currentRow,this._allRowSeparators[this._rowIndex++]=i,this._currentRow="",this._nullCellCount=0}_diffStyle(t,e){let i=[],n=!jN(t,e),s=!ho(t,e),r=!IN(t,e);if(n||s||r)if(t.isAttributeDefault())e.isAttributeDefault()||i.push(0);else{if(n){let o=t.getFgColor();t.isFgRGB()?i.push(38,2,o>>>16&255,o>>>8&255,o&255):t.isFgPalette()?o>=16?i.push(38,5,o):i.push(o&8?90+(o&7):30+(o&7)):i.push(39)}if(s){let o=t.getBgColor();t.isBgRGB()?i.push(48,2,o>>>16&255,o>>>8&255,o&255):t.isBgPalette()?o>=16?i.push(48,5,o):i.push(o&8?100+(o&7):40+(o&7)):i.push(49)}r&&(t.isInverse()!==e.isInverse()&&i.push(t.isInverse()?7:27),t.isBold()!==e.isBold()&&i.push(t.isBold()?1:22),t.isUnderline()!==e.isUnderline()&&i.push(t.isUnderline()?4:24),t.isOverline()!==e.isOverline()&&i.push(t.isOverline()?53:55),t.isBlink()!==e.isBlink()&&i.push(t.isBlink()?5:25),t.isInvisible()!==e.isInvisible()&&i.push(t.isInvisible()?8:28),t.isItalic()!==e.isItalic()&&i.push(t.isItalic()?3:23),t.isDim()!==e.isDim()&&i.push(t.isDim()?2:22),t.isStrikethrough()!==e.isStrikethrough()&&i.push(t.isStrikethrough()?9:29))}return i}_nextCell(t,e,i,n){if(t.getWidth()===0)return;let s=t.getChars()==="",r=this._diffStyle(t,this._cursorStyle);if(s?!ho(this._cursorStyle,t):r.length>0){this._nullCellCount>0&&(ho(this._cursorStyle,this._backgroundCell)||(this._currentRow+=`\x1B[${this._nullCellCount}X`),this._currentRow+=`\x1B[${this._nullCellCount}C`,this._nullCellCount=0),this._lastContentCursorRow=this._lastCursorRow=i,this._lastContentCursorCol=this._lastCursorCol=n,this._currentRow+=`\x1B[${r.join(";")}m`;let o=this._buffer.getLine(i);o!==void 0&&(o.getCell(n,this._cursorStyle),this._cursorStyleRow=i,this._cursorStyleCol=n)}s?this._nullCellCount+=t.getWidth():(this._nullCellCount>0&&(ho(this._cursorStyle,this._backgroundCell)?this._currentRow+=`\x1B[${this._nullCellCount}C`:(this._currentRow+=`\x1B[${this._nullCellCount}X`,this._currentRow+=`\x1B[${this._nullCellCount}C`),this._nullCellCount=0),this._currentRow+=t.getChars(),this._lastContentCursorRow=this._lastCursorRow=i,this._lastContentCursorCol=this._lastCursorCol=n+t.getWidth())}_serializeString(t){let e=this._allRows.length;this._buffer.length-this._firstRow<=this._terminal.rows&&(e=this._lastContentCursorRow+1-this._firstRow,this._lastCursorCol=this._lastContentCursorCol,this._lastCursorRow=this._lastContentCursorRow);let i="";for(let r=0;r{u>0?i+=`\x1B[${u}C`:u<0&&(i+=`\x1B[${-u}D`)};l&&((u=>{u>0?i+=`\x1B[${u}B`:u<0&&(i+=`\x1B[${-u}A`)})(r-this._lastCursorRow),c(o-this._lastCursorCol))}let n=this._terminal._core._inputHandler._curAttrData,s=this._diffStyle(n,this._cursorStyle);return s.length>0&&(i+=`\x1B[${s.join(";")}m`),i}},Sae=class{activate(t){this._terminal=t}_serializeBufferByScrollback(t,e,i){let n=e.length,s=i===void 0?n:cQ(i+t.rows,0,n);return this._serializeBufferByRange(t,e,{start:n-s,end:n-1},!1)}_serializeBufferByRange(t,e,i,n){return new bae(e,t).serialize({start:{x:0,y:typeof i.start=="number"?i.start:i.start.line},end:{x:t.cols,y:typeof i.end=="number"?i.end:i.end.line}},n)}_serializeBufferAsHTML(t,e){var l;let i=t.buffer.active,n=new xae(i,t,e),s=e.onlySelection??!1,r=e.range;if(r)return n.serialize({start:{x:r.startCol,y:(r.startLine,r.startLine)},end:{x:t.cols,y:(r.endLine,r.endLine)}});if(!s){let c=i.length,u=e.scrollback,d=u===void 0?c:cQ(u+t.rows,0,c);return n.serialize({start:{x:0,y:c-d},end:{x:t.cols,y:c-1}})}let o=(l=this._terminal)==null?void 0:l.getSelectionPosition();return o!==void 0?n.serialize({start:{x:o.start.x,y:o.start.y},end:{x:o.end.x,y:o.end.y}}):""}_serializeModes(t){let e="",i=t.modes;if(i.applicationCursorKeysMode&&(e+="\x1B[?1h"),i.applicationKeypadMode&&(e+="\x1B[?66h"),i.bracketedPasteMode&&(e+="\x1B[?2004h"),i.insertMode&&(e+="\x1B[4h"),i.originMode&&(e+="\x1B[?6h"),i.reverseWraparoundMode&&(e+="\x1B[?45h"),i.sendFocusMode&&(e+="\x1B[?1004h"),i.wraparoundMode===!1&&(e+="\x1B[?7l"),i.mouseTrackingMode!=="none")switch(i.mouseTrackingMode){case"x10":e+="\x1B[?9h";break;case"vt200":e+="\x1B[?1000h";break;case"drag":e+="\x1B[?1002h";break;case"any":e+="\x1B[?1003h";break}return e}serialize(t){if(!this._terminal)throw new Error("Cannot use addon until it has been loaded");let e=t!=null&&t.range?this._serializeBufferByRange(this._terminal,this._terminal.buffer.normal,t.range,!0):this._serializeBufferByScrollback(this._terminal,this._terminal.buffer.normal,t==null?void 0:t.scrollback);if(!(t!=null&&t.excludeAltBuffer)&&this._terminal.buffer.active.type==="alternate"){let i=this._serializeBufferByScrollback(this._terminal,this._terminal.buffer.alternate,void 0);e+=`\x1B[?1049h\x1B[H${i}`}return t!=null&&t.excludeModes||(e+=this._serializeModes(this._terminal)),e}serializeAsHTML(t){if(!this._terminal)throw new Error("Cannot use addon until it has been loaded");return this._serializeBufferAsHTML(this._terminal,t||{})}dispose(){}},xae=class extends zN{constructor(t,e,i){super(t),this._terminal=e,this._options=i,this._currentRow="",this._htmlContent="",e._core._themeService?this._ansiColors=e._core._themeService.colors.ansi:this._ansiColors=_ae}_padStart(t,e,i){return e=e>>0,i=i??" ",t.length>e?t:(e-=t.length,e>i.length&&(i+=i.repeat(e/i.length)),i.slice(0,e)+t)}_beforeSerialize(t,e,i){var o,l;this._htmlContent+="
";let n="#000000",s="#ffffff";(this._options.includeGlobalBackground??!1)&&(n=((o=this._terminal.options.theme)==null?void 0:o.foreground)??"#ffffff",s=((l=this._terminal.options.theme)==null?void 0:l.background)??"#000000");let r=[];r.push("color: "+n+";"),r.push("background-color: "+s+";"),r.push("font-family: "+this._terminal.options.fontFamily+";"),r.push("font-size: "+this._terminal.options.fontSize+"px;"),this._htmlContent+="
"}_afterSerialize(){this._htmlContent+="
",this._htmlContent+="
"}_rowEnd(t,e){this._htmlContent+="
"+this._currentRow+"
",this._currentRow=""}_getHexColor(t,e){let i=e?t.getFgColor():t.getBgColor();if(e?t.isFgRGB():t.isBgRGB())return"#"+[i>>16&255,i>>8&255,i&255].map(n=>this._padStart(n.toString(16),2,"0")).join("");if(e?t.isFgPalette():t.isBgPalette())return this._ansiColors[i].css}_diffStyle(t,e){let i=[],n=!jN(t,e),s=!ho(t,e),r=!IN(t,e);if(n||s||r){let o=this._getHexColor(t,!0);o&&i.push("color: "+o+";");let l=this._getHexColor(t,!1);return l&&i.push("background-color: "+l+";"),t.isInverse()&&i.push("color: #000000; background-color: #BFBFBF;"),t.isBold()&&i.push("font-weight: bold;"),t.isUnderline()&&t.isOverline()?i.push("text-decoration: overline underline;"):t.isUnderline()?i.push("text-decoration: underline;"):t.isOverline()&&i.push("text-decoration: overline;"),t.isBlink()&&i.push("text-decoration: blink;"),t.isInvisible()&&i.push("visibility: hidden;"),t.isItalic()&&i.push("font-style: italic;"),t.isDim()&&i.push("opacity: 0.5;"),t.isStrikethrough()&&i.push("text-decoration: line-through;"),i}}_nextCell(t,e,i,n){if(t.getWidth()===0)return;let s=t.getChars()==="",r=this._diffStyle(t,e);r&&(this._currentRow+=r.length===0?"
":""),s?this._currentRow+=" ":this._currentRow+=yae(t.getChars())}_serializeString(){return this._htmlContent}};const wae=10,Cae=2e3;function kae(t={}){const{autoSpawn:e=!1,skipPermissions:i=!1}=t,[n,s]=X.useState(!1),[r,o]=X.useState(!1),[l,c]=X.useState(null),[u,d]=X.useState(null),p=X.useRef(null),g=X.useRef(0),O=X.useRef(null),_=X.useRef(!0),b=X.useRef(null),x=X.useRef(null),w=X.useRef(e),k=X.useRef(i);w.current=e,k.current=i;const T=X.useCallback(z=>{const q=p.current;q&&q.readyState===WebSocket.OPEN&&q.send(JSON.stringify(z))},[]),A=X.useCallback(z=>{T({type:"spawn",skipPermissions:z})},[T]),Q=X.useCallback(()=>{T({type:"kill"})},[T]),E=X.useCallback((z,q)=>{T({type:"resize",cols:z,rows:q})},[T]),N=X.useCallback(z=>{T({type:"input",data:z})},[T]);return X.useEffect(()=>{_.current=!0;function z(){if(!_.current)return;const J=`${window.location.protocol==="https:"?"wss:":"ws:"}//${window.location.host}/ws/terminal`,U=new WebSocket(J);p.current=U,U.onopen=()=>{_.current&&(s(!0),g.current=0,w.current&&U.send(JSON.stringify({type:"spawn",skipPermissions:k.current})))},U.onclose=()=>{_.current&&(s(!1),p.current=null,g.current{var B,j;if(_.current)try{const $=JSON.parse(R.data);switch($.type){case"output":(B=b.current)==null||B.call(b,$.data);break;case"scrollback":(j=x.current)==null||j.call(x,$.data);break;case"status":c({pid:$.pid,uptime:$.uptime,cwd:$.cwd,memoryMB:$.memoryMB,isActive:$.isActive,skipPermissions:$.skipPermissions,alive:$.alive});break;case"exit":d($.code??1);break;case"started":d(null);break;case"unavailable":o(!0);break}}catch{}},U.onerror=()=>{}}return z(),()=>{_.current=!1,O.current!==null&&(clearTimeout(O.current),O.current=null),p.current&&(p.current.onclose=null,p.current.close(),p.current=null)}},[]),{connected:n,unavailable:r,status:l,exitCode:u,send:T,spawn:A,kill:Q,resize:E,writeInput:N,onOutput:b,onScrollback:x}}function Tae(t){const e=Math.floor(t/60),i=t%60;return`${e}m ${i}s`}function Aae(t){const e=t.replace(/\\/g,"/").split("/").filter(Boolean);return e.length<=2?t:".../"+e.slice(-2).join("/")}function Eae({status:t,connected:e,exitCode:i,skipPermissions:n,onToggleSkipPermissions:s,onStop:r,onRestart:o}){const l=e&&(t==null?void 0:t.alive),c=e?l?"bg-green-500":"bg-yellow-500":"bg-red-500",u=e?l?`Running (PID ${(t==null?void 0:t.pid)??"?"})`:"Stopped":"Disconnected";return S.jsxs("div",{className:"flex items-center justify-between border-t border-border bg-card px-3 py-1.5 font-mono text-xs text-muted-foreground",children:[S.jsxs("div",{className:"flex items-center gap-3",children:[S.jsx("span",{className:Ze("inline-block h-2 w-2 rounded-full",c),title:u}),S.jsx("span",{children:u}),t&&l&&S.jsxs(S.Fragment,{children:[S.jsx("span",{className:"text-border",children:"|"}),S.jsx("span",{children:Tae(t.uptime)}),S.jsx("span",{className:"text-border",children:"|"}),S.jsx("span",{title:t.cwd,children:Aae(t.cwd)}),S.jsx("span",{className:"text-border",children:"|"}),S.jsxs("span",{children:[t.memoryMB," MB"]})]})]}),S.jsxs("div",{className:"flex items-center gap-3",children:[S.jsxs("label",{className:"flex cursor-pointer items-center gap-1.5",children:[S.jsx("input",{type:"checkbox",checked:n,onChange:s,className:"h-3 w-3 accent-accent"}),S.jsx("span",{children:"Skip Perms"})]}),l&&S.jsx("button",{type:"button",onClick:r,className:"rounded-sm px-2 py-0.5 text-red-400 transition-colors hover:bg-red-500/20",children:"Stop"}),S.jsx("button",{type:"button",onClick:o,className:"rounded-sm px-2 py-0.5 transition-colors hover:bg-accent/20",children:"Restart"})]})]})}const Mae=[{label:"Progress",command:"/maxsim:progress"},{label:"New Project",command:"/maxsim:new-project"},{label:"Discuss",command:"/maxsim:discuss-phase N"},{label:"Plan",command:"/maxsim:plan-phase N"},{label:"Execute",command:"/maxsim:execute-phase N"},{label:"Roadmap",command:"/maxsim:roadmap"},{label:"Verify",command:"/maxsim:verify-work"},{label:"Resume",command:"/maxsim:resume-work"}],VN="maxsim-quick-commands",Pae=3e4;function Rae(){try{const t=localStorage.getItem(VN);if(t)return JSON.parse(t)}catch{}return Mae}function Qae(t){localStorage.setItem(VN,JSON.stringify(t))}function Lae({onSendCommand:t,isActive:e,isAlive:i,unavailable:n=!1}){const[s,r]=X.useState(!1),[o,l]=X.useState(Rae),[c,u]=X.useState(!1),[d,p]=X.useState(null),g=X.useRef(null),O=X.useCallback(async E=>{if(!E.includes(" N"))return E;const N=g.current;if(N&&Date.now()-N.ts{if(_)return;const N=await O(E.command);p({label:E.label,resolved:N})},[_,O]),x=X.useCallback(()=>{d&&(t(d.resolved+`\r +`),p(null))},[d,t]),w=X.useCallback(()=>{p(null)},[]);X.useEffect(()=>{if(!d)return;const E=N=>{N.key==="Enter"?(N.preventDefault(),x()):N.key==="Escape"&&w()};return window.addEventListener("keydown",E),()=>window.removeEventListener("keydown",E)},[d,x,w]);const[k,T]=X.useState([]),A=X.useCallback(()=>{T([...o]),u(!0)},[o]),Q=X.useCallback(()=>{const E=k.filter(N=>N.label.trim()&&N.command.trim());l(E),Qae(E),u(!1)},[k]);return s?S.jsx("div",{className:"absolute bottom-2 right-2 z-20",children:S.jsx("button",{type:"button",onClick:()=>r(!1),className:"rounded-md bg-card/80 p-1.5 text-xs text-muted-foreground shadow-lg backdrop-blur-sm border border-border hover:text-foreground transition-colors",title:"Show quick actions",children:S.jsx("svg",{className:"h-3.5 w-3.5",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:S.jsx("path",{d:"M18 15l-6-6-6 6"})})})}):S.jsxs("div",{className:"absolute bottom-2 right-2 z-20 flex flex-col items-end gap-1",children:[d&&S.jsxs("div",{className:"rounded-lg bg-card border border-border shadow-lg p-2 text-xs mb-1 backdrop-blur-sm",children:[S.jsxs("p",{className:"text-muted-foreground mb-1.5",children:["Send"," ",S.jsx("span",{className:"font-mono text-foreground",children:d.resolved}),"?"]}),S.jsxs("div",{className:"flex gap-1.5",children:[S.jsx("button",{type:"button",onClick:x,className:"rounded-sm bg-accent px-2 py-0.5 text-foreground hover:bg-accent-glow transition-colors",children:"Confirm"}),S.jsx("button",{type:"button",onClick:w,className:"rounded-sm bg-muted px-2 py-0.5 text-muted-foreground hover:text-foreground transition-colors",children:"Cancel"})]})]}),c&&S.jsxs("div",{className:"rounded-lg bg-card border border-border shadow-lg p-3 text-xs mb-1 backdrop-blur-sm w-72 max-h-64 overflow-y-auto",children:[S.jsx("p",{className:"text-muted-foreground font-medium mb-2",children:"Quick Commands"}),k.map((E,N)=>S.jsxs("div",{className:"flex gap-1 mb-1",children:[S.jsx("input",{className:"flex-[1] rounded-sm border border-border bg-muted px-1.5 py-0.5 text-xs text-foreground",value:E.label,onChange:z=>{const q=[...k];q[N]={...q[N],label:z.target.value},T(q)},placeholder:"Label"}),S.jsx("input",{className:"flex-[2] rounded-sm border border-border bg-muted px-1.5 py-0.5 text-xs font-mono text-foreground",value:E.command,onChange:z=>{const q=[...k];q[N]={...q[N],command:z.target.value},T(q)},placeholder:"Command"}),S.jsx("button",{type:"button",onClick:()=>T(k.filter((z,q)=>q!==N)),className:"text-muted-foreground hover:text-destructive transition-colors px-0.5",title:"Remove",children:"x"})]},N)),S.jsxs("div",{className:"flex justify-between mt-2",children:[S.jsx("button",{type:"button",onClick:()=>T([...k,{label:"",command:""}]),className:"text-muted-foreground hover:text-foreground transition-colors",children:"+ Add"}),S.jsxs("div",{className:"flex gap-1.5",children:[S.jsx("button",{type:"button",onClick:()=>u(!1),className:"rounded-sm bg-muted px-2 py-0.5 text-muted-foreground hover:text-foreground transition-colors",children:"Cancel"}),S.jsx("button",{type:"button",onClick:Q,className:"rounded-sm bg-accent px-2 py-0.5 text-foreground hover:bg-accent-glow transition-colors",children:"Save"})]})]})]}),S.jsxs("div",{className:"flex items-center gap-1 rounded-lg bg-card/80 border border-border shadow-lg p-1.5 backdrop-blur-sm",children:[o.map(E=>S.jsx("button",{type:"button",onClick:()=>b(E),disabled:_,className:"rounded-md px-2 py-0.5 text-xs text-muted-foreground transition-colors hover:bg-muted hover:text-foreground disabled:opacity-40 disabled:cursor-not-allowed",title:n?"Terminal unavailable — node-pty not installed":E.command,children:E.label},E.label)),S.jsx("button",{type:"button",onClick:A,className:"rounded-md px-1 py-0.5 text-xs text-muted-foreground hover:text-foreground transition-colors ml-0.5",title:"Settings",children:S.jsxs("svg",{className:"h-3.5 w-3.5",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:[S.jsx("circle",{cx:"12",cy:"12",r:"3"}),S.jsx("path",{d:"M19.4 15a1.65 1.65 0 00.33 1.82l.06.06a2 2 0 010 2.83 2 2 0 01-2.83 0l-.06-.06a1.65 1.65 0 00-1.82-.33 1.65 1.65 0 00-1 1.51V21a2 2 0 01-4 0v-.09A1.65 1.65 0 009 19.4a1.65 1.65 0 00-1.82.33l-.06.06a2 2 0 01-2.83-2.83l.06-.06A1.65 1.65 0 004.68 15a1.65 1.65 0 00-1.51-1H3a2 2 0 010-4h.09A1.65 1.65 0 004.6 9a1.65 1.65 0 00-.33-1.82l-.06-.06a2 2 0 012.83-2.83l.06.06A1.65 1.65 0 009 4.68a1.65 1.65 0 001-1.51V3a2 2 0 014 0v.09a1.65 1.65 0 001 1.51 1.65 1.65 0 001.82-.33l.06-.06a2 2 0 012.83 2.83l-.06.06A1.65 1.65 0 0019.32 9a1.65 1.65 0 001.51 1H21a2 2 0 010 4h-.09a1.65 1.65 0 00-1.51 1z"})]})}),S.jsx("button",{type:"button",onClick:()=>r(!0),className:"rounded-md px-1 py-0.5 text-xs text-muted-foreground hover:text-foreground transition-colors",title:"Minimize",children:S.jsx("svg",{className:"h-3.5 w-3.5",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:S.jsx("path",{d:"M6 9l6 6 6-6"})})})]})]})}function Dae({onReady:t,writeInputRef:e}){const i=X.useRef(null),n=X.useRef(null),s=X.useRef(null),r=X.useRef(null),o=X.useRef(null),[l,c]=X.useState(!0),{connected:u,unavailable:d,status:p,exitCode:g,writeInput:O,resize:_,spawn:b,kill:x,onOutput:w,onScrollback:k}=kae({autoSpawn:!0,skipPermissions:l});X.useEffect(()=>(e&&(e.current=O),()=>{e&&(e.current=null)}),[O,e]);const T=X.useCallback(z=>{var q;(q=n.current)==null||q.write(z)},[]),A=X.useCallback(z=>{var q;(q=n.current)==null||q.write(z)},[]);X.useEffect(()=>(w.current=T,k.current=A,()=>{w.current=null,k.current=null}),[T,A,w,k]),X.useEffect(()=>{if(!i.current)return;const z=new Qre({cursorBlink:!0,fontSize:14,lineHeight:1.2,theme:{background:"#0a0a0a",foreground:"#e0e0e0",cursor:"#e0e0e0"}}),q=new Bre,J=new Sae;z.loadAddon(q),z.loadAddon(J);try{z.loadAddon(new Oae)}catch{}z.open(i.current),q.fit(),n.current=z,s.current=q;const U=z.onData(B=>{O(B)}),R=new ResizeObserver(()=>{o.current&&clearTimeout(o.current),o.current=setTimeout(()=>{s.current&&n.current&&(s.current.fit(),_(n.current.cols,n.current.rows))},100)});return R.observe(i.current),r.current=R,t==null||t(z),()=>{U.dispose(),R.disconnect(),o.current&&clearTimeout(o.current),z.dispose(),n.current=null,s.current=null,r.current=null}},[]);const Q=X.useCallback(()=>{b(l),setTimeout(()=>{var z;return(z=n.current)==null?void 0:z.focus()},100)},[b,l]),E=X.useCallback(()=>{x()},[x]),N=X.useCallback(()=>{c(z=>!z)},[]);return S.jsxs("div",{className:"flex h-full w-full flex-col",onWheel:z=>z.stopPropagation(),children:[S.jsxs("div",{className:"relative min-h-0 flex-1 overflow-hidden",children:[S.jsx("div",{ref:i,className:"h-full w-full"}),S.jsx(Lae,{onSendCommand:O,isActive:(p==null?void 0:p.isActive)??!1,isAlive:(p==null?void 0:p.alive)??!1,unavailable:d}),d&&S.jsx("div",{className:"absolute inset-0 z-20 flex items-center justify-center bg-card",children:S.jsxs("div",{className:"max-w-sm text-center",children:[S.jsx("h2",{className:"text-lg font-semibold text-foreground mb-2",children:"Terminal unavailable"}),S.jsxs("p",{className:"text-sm text-muted-foreground",children:["node-pty is not installed. Run ",S.jsx("code",{className:"rounded bg-muted px-1.5 py-0.5 font-mono text-xs",children:"npm install node-pty"})," in the dashboard directory."]})]})}),!u&&g===null&&S.jsx("div",{className:"absolute inset-0 z-10 flex items-center justify-center bg-black/60",children:S.jsxs("div",{className:"flex items-center gap-3 font-mono text-sm text-muted-foreground",children:[S.jsxs("svg",{className:"h-5 w-5 animate-spin",viewBox:"0 0 24 24",fill:"none",children:[S.jsx("circle",{className:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor",strokeWidth:"4"}),S.jsx("path",{className:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4z"})]}),"Reconnecting..."]})}),g!==null&&S.jsxs("div",{className:"absolute inset-x-0 bottom-0 z-10 flex items-center justify-between bg-card/90 px-4 py-2 font-mono text-sm backdrop-blur-sm",children:[S.jsxs("span",{className:"text-muted-foreground",children:["Process exited (code ",g,")"]}),S.jsx("button",{type:"button",onClick:Q,className:"rounded-sm bg-accent px-3 py-1 text-xs text-foreground transition-colors hover:bg-accent-glow",children:"Restart"})]})]}),S.jsx(Eae,{status:p,connected:u,exitCode:g,skipPermissions:l,onToggleSkipPermissions:N,onStop:E,onRestart:Q})]})}function Bae(){const[t,e]=X.useState(!1),i=X.useCallback(()=>e(n=>!n),[]);return{splitMode:t,toggleSplit:i}}function $ae({splitMode:t,onToggle:e}){return S.jsx("button",{type:"button",onClick:e,title:t?"Full-height mode":"Split-panel mode",className:"absolute right-3 top-2 z-20 flex h-7 w-7 items-center justify-center rounded-sm border border-border bg-card text-muted-foreground transition-colors hover:bg-card-hover hover:text-foreground",children:t?S.jsx("svg",{width:"14",height:"14",viewBox:"0 0 14 14",fill:"none",children:S.jsx("rect",{x:"1",y:"1",width:"12",height:"12",rx:"1",stroke:"currentColor",strokeWidth:"1.5"})}):S.jsxs("svg",{width:"14",height:"14",viewBox:"0 0 14 14",fill:"none",children:[S.jsx("rect",{x:"1",y:"1",width:"12",height:"12",rx:"1",stroke:"currentColor",strokeWidth:"1.5"}),S.jsx("line",{x1:"1",y1:"7",x2:"13",y2:"7",stroke:"currentColor",strokeWidth:"1.5"})]})})}function Nae({mode:t,onToggle:e}){const[i,n]=X.useState(!1);function s(){n(!0),e(),setTimeout(()=>n(!1),420)}const r=t==="simple",o=r?"Switch to Advanced Mode":"Switch to Simple Mode";return S.jsx("button",{type:"button",onClick:s,title:o,"aria-label":o,className:"flex h-8 w-8 items-center justify-center text-muted-foreground transition-colors hover:text-foreground",children:S.jsx(Er.span,{animate:{rotate:i?360:0},transition:{duration:.4,ease:"easeInOut"},style:{display:"flex",alignItems:"center",justifyContent:"center"},children:r?S.jsxs("svg",{className:"h-4 w-4",viewBox:"0 0 16 16",fill:"none",stroke:"currentColor",strokeWidth:"1.5","aria-hidden":"true",children:[S.jsx("circle",{cx:"8",cy:"8",r:"6"}),S.jsx("ellipse",{cx:"8",cy:"8",rx:"2.5",ry:"6"}),S.jsx("path",{d:"M2 8h12M3.5 5h9M3.5 11h9",strokeLinecap:"round"})]}):S.jsxs("svg",{className:"h-4 w-4",viewBox:"0 0 16 16",fill:"none",stroke:"currentColor",strokeWidth:"1.5","aria-hidden":"true",children:[S.jsx("rect",{x:"1.5",y:"2.5",width:"13",height:"11",rx:"1"}),S.jsx("path",{d:"M4 6l2.5 2L4 10M8 10h4",strokeLinecap:"round",strokeLinejoin:"round"})]})})})}function zae({onChoose:t}){return S.jsxs("div",{className:"absolute inset-0 z-50 flex items-center justify-center",children:[S.jsx("div",{className:"absolute inset-0 backdrop-blur-sm bg-background/60"}),S.jsxs("div",{className:"relative z-10 border border-border bg-card p-8 max-w-lg w-full mx-4",children:[S.jsx("h2",{className:"font-bold text-lg tracking-tight text-foreground mb-1",children:"Choose Your Dashboard Mode"}),S.jsx("p",{className:"text-sm text-muted-foreground mb-6",children:"You can switch between modes at any time from the header toggle."}),S.jsxs("div",{className:"flex gap-4",children:[S.jsxs("div",{className:"flex-1 border border-border p-4 flex flex-col gap-3",children:[S.jsxs("svg",{viewBox:"0 0 120 70",className:"w-full h-auto border border-border/40 bg-muted/20","aria-hidden":"true",children:[S.jsx("rect",{x:"0",y:"0",width:"120",height:"12",fill:"currentColor",fillOpacity:"0.08"}),S.jsx("rect",{x:"8",y:"3",width:"30",height:"6",rx:"1",fill:"#14b8a6",fillOpacity:"0.6"}),S.jsx("rect",{x:"8",y:"18",width:"104",height:"8",rx:"1",fill:"currentColor",fillOpacity:"0.12"}),S.jsx("rect",{x:"8",y:"32",width:"50",height:"30",rx:"1",fill:"currentColor",fillOpacity:"0.08"}),S.jsx("rect",{x:"62",y:"32",width:"50",height:"30",rx:"1",fill:"currentColor",fillOpacity:"0.08"})]}),S.jsxs("div",{children:[S.jsx("p",{className:"text-sm font-medium text-foreground",children:"Simple Mode"}),S.jsx("p",{className:"text-xs text-muted-foreground mt-0.5",children:"Clean action cards. No terminal required."})]}),S.jsx("button",{type:"button",onClick:()=>t("simple"),className:"border border-simple-accent bg-simple-accent/10 px-3 py-1.5 text-xs font-mono uppercase tracking-widest text-simple-accent transition-colors hover:bg-simple-accent hover:text-background",children:"Use Simple Mode"})]}),S.jsxs("div",{className:"flex-1 border border-border p-4 flex flex-col gap-3",children:[S.jsxs("svg",{viewBox:"0 0 120 70",className:"w-full h-auto border border-border/40 bg-muted/20","aria-hidden":"true",children:[S.jsx("rect",{x:"0",y:"0",width:"120",height:"70",fill:"currentColor",fillOpacity:"0.03"}),S.jsx("rect",{x:"0",y:"0",width:"28",height:"70",fill:"currentColor",fillOpacity:"0.08"}),S.jsx("rect",{x:"3",y:"3",width:"22",height:"5",rx:"1",fill:"currentColor",fillOpacity:"0.2"}),S.jsx("rect",{x:"3",y:"12",width:"22",height:"3",rx:"0.5",fill:"currentColor",fillOpacity:"0.12"}),S.jsx("rect",{x:"3",y:"18",width:"22",height:"3",rx:"0.5",fill:"currentColor",fillOpacity:"0.12"}),S.jsx("rect",{x:"30",y:"4",width:"86",height:"28",rx:"1",fill:"currentColor",fillOpacity:"0.08"}),S.jsx("rect",{x:"30",y:"36",width:"86",height:"28",rx:"1",fill:"#3b82f6",fillOpacity:"0.1"}),S.jsx("rect",{x:"33",y:"39",width:"12",height:"2",rx:"0.5",fill:"#3b82f6",fillOpacity:"0.5"})]}),S.jsxs("div",{children:[S.jsx("p",{className:"text-sm font-medium text-foreground",children:"Advanced Mode"}),S.jsx("p",{className:"text-xs text-muted-foreground mt-0.5",children:"Full dashboard with terminal and phase viewer."})]}),S.jsx("button",{type:"button",onClick:()=>t("advanced"),className:"border border-accent bg-accent/10 px-3 py-1.5 text-xs font-mono uppercase tracking-widest text-accent transition-colors hover:bg-accent hover:text-foreground",children:"Use Advanced Mode"})]})]})]})]})}function ol(t){var e;return(((e=t==null?void 0:t.phases)==null?void 0:e.length)??0)>0}function hQ(t){var e;return((e=t==null?void 0:t.phases)==null?void 0:e.some(i=>i.disk_status==="partial"||i.disk_status==="planned"||i.disk_status==="discussed"||i.disk_status==="researched"))??!1}const DS=[{id:"plan-new-phase",tab:"plan",title:"Plan New Phase",description:"Create a detailed execution plan for the next phase",icon:S.jsxs("svg",{className:"h-5 w-5 shrink-0",viewBox:"0 0 20 20",fill:"none",stroke:"currentColor",strokeWidth:"1.5","aria-hidden":"true",children:[S.jsx("rect",{x:"3",y:"4",width:"14",height:"13",rx:"1"}),S.jsx("path",{d:"M7 8h6M7 11h4M10 2v4",strokeLinecap:"round"})]}),requiresInput:!0,command:"/maxsim:plan-phase",isAvailable:t=>ol(t),unavailableReason:"No phases found in ROADMAP.md — create a project first"},{id:"add-phase",tab:"plan",title:"Add Phase",description:"Insert a new phase into the roadmap",icon:S.jsxs("svg",{className:"h-5 w-5 shrink-0",viewBox:"0 0 20 20",fill:"none",stroke:"currentColor",strokeWidth:"1.5","aria-hidden":"true",children:[S.jsx("rect",{x:"3",y:"4",width:"14",height:"13",rx:"1"}),S.jsx("path",{d:"M10 8v6M7 11h6",strokeLinecap:"round"})]}),requiresInput:!0,command:"/maxsim:add-phase",isAvailable:t=>ol(t),unavailableReason:"No project loaded — create a project first"},{id:"discuss-phase",tab:"plan",title:"Discuss Phase",description:"Answer planning questions to define requirements for a phase",icon:S.jsx("svg",{className:"h-5 w-5 shrink-0",viewBox:"0 0 20 20",fill:"none",stroke:"currentColor",strokeWidth:"1.5","aria-hidden":"true",children:S.jsx("path",{d:"M3 6a1 1 0 011-1h12a1 1 0 011 1v7a1 1 0 01-1 1H7l-4 3V6z",strokeLinejoin:"round"})}),requiresInput:!1,command:"/maxsim:discuss-phase",isAvailable:t=>hQ(t),unavailableReason:"No active phase to discuss — plan a phase first"},{id:"init-existing",tab:"plan",title:"Init Existing",description:"Set up MAXSIM planning for an existing project",icon:S.jsxs("svg",{className:"h-5 w-5 shrink-0",viewBox:"0 0 20 20",fill:"none",stroke:"currentColor",strokeWidth:"1.5","aria-hidden":"true",children:[S.jsx("path",{d:"M10 3v10M10 13l-3-3M10 13l3-3",strokeLinecap:"round",strokeLinejoin:"round"}),S.jsx("path",{d:"M4 17h12",strokeLinecap:"round"})]}),requiresInput:!1,command:"/maxsim:init-existing",isAvailable:()=>!0,unavailableReason:""},{id:"new-project",tab:"plan",title:"New Project",description:"Start a brand new MAXSIM project from scratch",icon:S.jsx("svg",{className:"h-5 w-5 shrink-0",viewBox:"0 0 20 20",fill:"none",stroke:"currentColor",strokeWidth:"1.5","aria-hidden":"true",children:S.jsx("path",{d:"M10 4v12M4 10h12",strokeLinecap:"round"})}),requiresInput:!1,command:"/maxsim:new-project",isAvailable:()=>!0,unavailableReason:""},{id:"execute-phase",tab:"execute",title:"Execute Phase",description:"Run the current phase plan and implement the changes",icon:S.jsx("svg",{className:"h-5 w-5 shrink-0",viewBox:"0 0 20 20",fill:"none",stroke:"currentColor",strokeWidth:"1.5","aria-hidden":"true",children:S.jsx("path",{d:"M6 4l10 6-10 6V4z",strokeLinejoin:"round"})}),requiresInput:!1,command:"/maxsim:execute-phase",isAvailable:t=>hQ(t),unavailableReason:"No phase is currently planned — plan a phase first"},{id:"verify-work",tab:"execute",title:"Verify Work",description:"Check that completed phase work meets all acceptance criteria",icon:S.jsx("svg",{className:"h-5 w-5 shrink-0",viewBox:"0 0 20 20",fill:"none",stroke:"currentColor",strokeWidth:"1.5","aria-hidden":"true",children:S.jsx("path",{d:"M4 10l4 4 8-8",strokeLinecap:"round",strokeLinejoin:"round"})}),requiresInput:!1,command:"/maxsim:verify-work",isAvailable:t=>ol(t),unavailableReason:"No phases to verify — complete a phase first"},{id:"audit-milestone",tab:"execute",title:"Audit Milestone",description:"Review and archive a completed milestone",icon:S.jsxs("svg",{className:"h-5 w-5 shrink-0",viewBox:"0 0 20 20",fill:"none",stroke:"currentColor",strokeWidth:"1.5","aria-hidden":"true",children:[S.jsx("path",{d:"M4 5h12M4 10h8M4 15h10",strokeLinecap:"round"}),S.jsx("circle",{cx:"16",cy:"14",r:"2.5"}),S.jsx("path",{d:"M18 16l1.5 1.5",strokeLinecap:"round"})]}),requiresInput:!1,command:"/maxsim:audit-milestone",isAvailable:t=>ol(t),unavailableReason:"No milestone to audit — complete some phases first"},{id:"fix-gaps",tab:"execute",title:"Fix Gaps",description:"Create plans to close verification failures",icon:S.jsxs("svg",{className:"h-5 w-5 shrink-0",viewBox:"0 0 20 20",fill:"none",stroke:"currentColor",strokeWidth:"1.5","aria-hidden":"true",children:[S.jsx("path",{d:"M10 4v6h6",strokeLinecap:"round",strokeLinejoin:"round"}),S.jsx("path",{d:"M4 10a6 6 0 1012 0",strokeLinecap:"round"})]}),requiresInput:!1,command:"/maxsim:plan-phase --gaps",isAvailable:t=>ol(t),unavailableReason:"No phases to fix — complete a verification first"},{id:"find-gaps",tab:"execute",title:"Find Gaps",description:"Identify missing requirements or unverified work",icon:S.jsxs("svg",{className:"h-5 w-5 shrink-0",viewBox:"0 0 20 20",fill:"none",stroke:"currentColor",strokeWidth:"1.5","aria-hidden":"true",children:[S.jsx("circle",{cx:"9",cy:"9",r:"5"}),S.jsx("path",{d:"M16 16l-3-3",strokeLinecap:"round"}),S.jsx("path",{d:"M9 7v2M9 11h.01",strokeLinecap:"round"})]}),requiresInput:!1,command:"/maxsim:verify-work --find-gaps",isAvailable:t=>ol(t),unavailableReason:"No phases to analyze — create some phases first"},{id:"view-roadmap",tab:"execute",title:"View Roadmap",description:"See all phases and their status inline",icon:S.jsx("svg",{className:"h-5 w-5 shrink-0",viewBox:"0 0 20 20",fill:"none",stroke:"currentColor",strokeWidth:"1.5","aria-hidden":"true",children:S.jsx("path",{d:"M3 5h14M3 10h14M3 15h8",strokeLinecap:"round"})}),requiresInput:!1,command:"",isAvailable:t=>ol(t),unavailableReason:"No roadmap to display"}];function jae(){var c,u;const{roadmap:t}=xo(),{setTab:e,setExpanded:i}=oO(),n=(c=t==null?void 0:t.phases)==null?void 0:c.find(d=>d.number===(t==null?void 0:t.current_phase));let s=null;if(n){const d=n.disk_status;d==="empty"||d==="no_directory"||d==="discussed"||d==="researched"?s="plan-new-phase":d==="planned"||d==="partial"?s="execute-phase":d==="complete"&&(s="verify-work")}else(((u=t==null?void 0:t.phases)==null?void 0:u.length)??0)===0&&(s="new-project");if(!s)return null;const r=DS.find(d=>d.id===s);if(!r)return null;const o=n?`Phase ${n.number}: ${n.name}`:"your project";function l(){const d=r.tab;e(d),i(r.id)}return S.jsxs("div",{className:"border border-simple-accent/40 bg-simple-accent/5 p-4 flex items-center justify-between gap-4 mb-4",children:[S.jsxs("div",{className:"min-w-0",children:[S.jsx("p",{className:"text-xs uppercase tracking-widest text-simple-accent font-mono mb-1",children:"Recommended"}),S.jsxs("p",{className:"text-sm text-foreground",children:[S.jsx("span",{className:"font-medium",children:o})," is ready to"," ",S.jsx("span",{className:"text-simple-accent",children:r.title.toLowerCase()})]})]}),S.jsx("button",{type:"button",onClick:l,className:"shrink-0 border border-simple-accent bg-simple-accent/10 px-3 py-1.5 text-xs font-mono uppercase tracking-widest text-simple-accent transition-colors hover:bg-simple-accent hover:text-background",children:r.title})]})}function Iae({action:t,onExecute:e}){const{inputValues:i,setInput:n,reset:s}=oO(),{roadmap:r}=xo(),o=X.useRef(null),[l,c]=X.useState(!1),[u,d]=X.useState(!1),p=(()=>{var Q;if(!t.requiresInput)return"";const A=(Q=r==null?void 0:r.phases)==null?void 0:Q.find(E=>!E.roadmap_complete&&(E.disk_status==="empty"||E.disk_status==="no_directory"));return A?`Phase ${A.number}: ${A.name}`:""})(),g=i[t.id]??p;X.useEffect(()=>{const A=o.current;A&&(A.style.height="auto",A.style.height=`${A.scrollHeight}px`)},[g]);function O(){const A=o.current;A&&(A.style.height="auto",A.style.height=`${A.scrollHeight}px`)}function _(A){n(t.id,A)}function b(A){A.key==="Enter"&&!A.shiftKey&&(A.preventDefault(),w())}function x(){const A=g.trim();return t.command===""?"":A?`${t.command} "${A}"`:t.command}function w(){if(t.requiresInput&&!g.trim()||t.id==="view-roadmap")return;const A=x();A&&e(A)}function k(){u?(s(),d(!1),c(!1)):(d(!0),setTimeout(()=>d(!1),3e3))}const T=t.requiresInput&&!g.trim();return S.jsxs("div",{className:"flex flex-col gap-3 relative",children:[S.jsx("p",{className:"text-xs text-muted-foreground",children:t.requiresInput?"Describe what this phase should accomplish.":"Add optional context (or leave blank to use defaults)."}),S.jsx("div",{className:"border border-border bg-muted/10 px-3 py-2 flex gap-2 items-start",children:S.jsx("textarea",{ref:o,value:g,onChange:A=>{_(A.target.value),O()},onKeyDown:b,placeholder:t.requiresInput?"e.g. Phase 31: Simple Mode UI Shell":"Additional context (optional)",rows:1,className:"w-full resize-none overflow-hidden bg-transparent font-mono text-xs text-foreground placeholder:text-muted-foreground outline-none leading-relaxed"})}),S.jsxs("div",{className:"flex items-center gap-2",children:[S.jsxs("button",{type:"button",onClick:w,disabled:T,className:Ze("flex items-center gap-1.5 border px-3 py-1.5 text-xs font-mono uppercase tracking-widest transition-colors",T?"border-border text-muted-foreground cursor-not-allowed":"border-simple-accent bg-simple-accent/10 text-simple-accent hover:bg-simple-accent hover:text-background"),children:[S.jsx("svg",{className:"h-3 w-3",viewBox:"0 0 12 12",fill:"currentColor","aria-hidden":"true",children:S.jsx("path",{d:"M2 2l8 4-8 4V2z"})}),"Run in Terminal"]}),S.jsxs("div",{className:"relative ml-auto",children:[S.jsx("button",{type:"button",onClick:()=>c(A=>!A),"aria-label":"More options",className:"flex h-6 w-6 items-center justify-center text-muted-foreground hover:text-foreground",children:S.jsxs("svg",{className:"h-3.5 w-3.5",viewBox:"0 0 16 16",fill:"currentColor","aria-hidden":"true",children:[S.jsx("circle",{cx:"4",cy:"8",r:"1.2"}),S.jsx("circle",{cx:"8",cy:"8",r:"1.2"}),S.jsx("circle",{cx:"12",cy:"8",r:"1.2"})]})}),l&&S.jsx("div",{className:"absolute right-0 bottom-8 z-20 border border-border bg-card shadow-lg min-w-max",children:S.jsx("button",{type:"button",onClick:k,className:Ze("flex w-full items-center gap-2 px-4 py-2.5 text-xs text-left transition-colors",u?"text-danger hover:bg-danger/10":"text-muted-foreground hover:text-foreground hover:bg-card-hover"),children:u?"Click again to confirm reset":"Reset Simple Mode"})})]})]})]})}function Vae({action:t,roadmap:e,onExecute:i}){var g,O;const{expandedCardId:n,setExpanded:s}=oO(),{roadmap:r}=xo(),o=n===t.id,l=!t.isAvailable(e),c=(g=r==null?void 0:r.phases)==null?void 0:g.find(_=>_.number===(r==null?void 0:r.current_phase));let u=null;if(c){const _=c.disk_status;_==="empty"||_==="no_directory"||_==="discussed"||_==="researched"?u="plan-new-phase":_==="planned"||_==="partial"?u="execute-phase":_==="complete"&&(u="verify-work")}else(((O=r==null?void 0:r.phases)==null?void 0:O.length)??0)===0&&(u="new-project");const d=t.id===u;function p(){l||s(o?null:t.id)}return S.jsxs("div",{className:Ze("bg-card border-0 transition-all duration-200",l?"opacity-50":"cursor-pointer hover:shadow-md hover:-translate-y-px",o&&"ring-1 ring-simple-accent/40"),title:l?t.unavailableReason:void 0,children:[S.jsxs("button",{type:"button",disabled:l,onClick:p,className:"flex w-full items-start gap-3 p-4 text-left","aria-expanded":o,children:[S.jsx("span",{className:Ze("mt-0.5 shrink-0",l?"text-muted-foreground":"text-simple-accent"),children:t.icon}),S.jsxs("div",{className:"flex-1 min-w-0",children:[S.jsx("p",{className:"text-sm font-medium text-foreground leading-tight",children:t.title}),S.jsx("p",{className:"text-xs text-muted-foreground mt-0.5 leading-snug",children:t.description}),d&&!l&&S.jsx("span",{className:"mt-1 inline-block bg-simple-accent/20 border border-simple-accent/40 px-1.5 py-0.5 text-[10px] font-mono uppercase tracking-wider text-simple-accent",children:"Recommended"})]}),S.jsx("svg",{className:Ze("mt-1 h-3.5 w-3.5 shrink-0 text-muted-foreground transition-transform duration-200",o&&"rotate-180"),viewBox:"0 0 12 12",fill:"none",stroke:"currentColor",strokeWidth:"1.5","aria-hidden":"true",children:S.jsx("path",{d:"M2 4l4 4 4-4",strokeLinecap:"round",strokeLinejoin:"round"})})]}),S.jsx(xx,{initial:!1,children:o&&S.jsx(Er.div,{initial:{height:0,opacity:0},animate:{height:"auto",opacity:1},exit:{height:0,opacity:0},transition:{duration:.2,ease:"easeInOut"},className:"overflow-hidden border-t border-border/60",children:S.jsx("div",{className:"p-4",children:S.jsx(Iae,{action:t,onExecute:i})})},"expanded")})]})}const s1=6;function Xae({onExecute:t}){var T;const{roadmap:e}=xo(),{activeTab:i,setTab:n}=oO(),s=X.useRef(i),[r,o]=X.useState({plan:!1,execute:!1}),l=e??null,c=DS.filter(A=>A.tab==="plan"),u=DS.filter(A=>A.tab==="execute"),d=(((T=e==null?void 0:e.phases)==null?void 0:T.length)??0)===0,p=d?c.filter(A=>A.id==="new-project"||A.id==="init-existing"):c,g=d?[]:u,O=i==="plan"?p:g,_=r[i],b=_?O:O.slice(0,s1),x=O.length>s1&&!_;function w(A){s.current=i,n(A)}const k=i==="plan"&&s.current==="execute"?-1:1;return S.jsxs("div",{className:"flex flex-col gap-0",children:[S.jsx("div",{className:"flex border-b border-border",children:["plan","execute"].map(A=>{const Q=A==="plan"?p.length:g.length,E=A==="plan"?"Plan & Discuss":"Execute & Verify";return S.jsxs("button",{type:"button",onClick:()=>w(A),className:Ze("flex-1 py-2.5 text-xs font-mono uppercase tracking-widest transition-colors duration-200 border-b-2",i===A?"border-b-simple-accent text-simple-accent":"border-b-transparent text-muted-foreground hover:text-foreground"),children:[E," (",Q,")"]},A)})}),S.jsx("div",{className:"overflow-hidden",children:S.jsx(xx,{mode:"wait",initial:!1,children:S.jsx(Er.div,{initial:{x:k*20,opacity:0},animate:{x:0,opacity:1},exit:{x:k*-20,opacity:0},transition:{duration:.15},children:O.length===0?S.jsx("div",{className:"py-12 text-center",children:S.jsx("p",{className:"text-sm text-muted-foreground",children:"No actions available in this tab."})}):S.jsxs(S.Fragment,{children:[S.jsx("div",{className:"grid grid-cols-2 gap-px bg-border lg:grid-cols-3",children:b.map(A=>S.jsx(Vae,{action:A,roadmap:l,onExecute:t},A.id))}),x&&S.jsxs("button",{type:"button",onClick:()=>o(A=>({...A,[i]:!0})),className:"w-full border-t border-border py-2.5 text-xs font-mono uppercase tracking-widest text-muted-foreground transition-colors hover:text-foreground hover:bg-card-hover",children:["Show more (",O.length-s1," more)"]})]})},i)})})]})}function Zae(){var d;const{roadmap:t,state:e}=xo(),i=(t==null?void 0:t.current_phase)??(e==null?void 0:e.currentPhase)??null,n=(d=t==null?void 0:t.phases)==null?void 0:d.find(p=>p.number===i),s=(t==null?void 0:t.progress_percent)??0,r=(t==null?void 0:t.completed_phases)??0,o=(t==null?void 0:t.phase_count)??0;if(!n&&o===0)return null;const l=n?`${n.number} - ${n.name}`:"No active phase",c=(n==null?void 0:n.disk_status)??"empty",u=c==="complete"?"Complete":c==="partial"?"In Progress":c==="planned"?"Planned":c==="discussed"?"Discussed":c==="researched"?"Researched":"Not Started";return S.jsxs("div",{className:"border border-border bg-card p-4",children:[S.jsxs("div",{className:"flex items-center justify-between mb-3",children:[S.jsx("span",{className:"text-xs font-mono uppercase tracking-widest text-muted-foreground",children:"Current Phase"}),S.jsxs("span",{className:"text-xs font-mono text-muted-foreground tabular-nums",children:[r,"/",o," phases"]})]}),S.jsxs("div",{className:"flex items-baseline gap-3 mb-3",children:[S.jsxs("span",{className:"font-mono text-2xl font-bold tabular-nums text-foreground leading-none",children:[s,"%"]}),S.jsx("span",{className:"text-sm text-foreground/80 truncate",children:l})]}),S.jsx("div",{className:"h-1 w-full bg-muted mb-2",children:S.jsx(Er.div,{className:"h-full bg-simple-accent",initial:{width:0},animate:{width:`${s}%`},transition:{duration:.6,ease:"easeOut"}})}),S.jsxs("div",{className:"flex items-center justify-between",children:[S.jsx("span",{className:"text-[10px] font-mono uppercase tracking-wider text-muted-foreground",children:u}),n&&n.plan_count>0&&S.jsxs("span",{className:"text-[10px] font-mono text-muted-foreground tabular-nums",children:[n.summary_count,"/",n.plan_count," plans"]})]})]})}function qae(){const{lastChange:t}=Qr(),[e,i]=X.useState([]),[n,s]=X.useState(!0),r=X.useCallback(async()=>{try{const l=await fetch("/api/todos");if(!l.ok)return;const c=await l.json();i(c.pending)}catch{}finally{s(!1)}},[]);X.useEffect(()=>{r()},[r]),X.useEffect(()=>{t>0&&r()},[t,r]);const o=X.useCallback(async l=>{try{await fetch("/api/todos",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({file:l,completed:!0})}),await r()}catch{}},[r]);return n?S.jsxs("div",{className:"border border-border bg-card p-4",children:[S.jsx("div",{className:"h-3 w-20 animate-pulse bg-muted mb-3"}),S.jsxs("div",{className:"space-y-2",children:[S.jsx("div",{className:"h-3 w-full animate-pulse bg-muted"}),S.jsx("div",{className:"h-3 w-3/4 animate-pulse bg-muted"})]})]}):S.jsxs("div",{className:"border border-border bg-card p-4",children:[S.jsxs("div",{className:"flex items-center justify-between mb-3",children:[S.jsx("span",{className:"text-xs font-mono uppercase tracking-widest text-muted-foreground",children:"Todos"}),S.jsxs("span",{className:Ze("text-xs font-mono tabular-nums",e.length>0?"text-warning":"text-muted-foreground"),children:[e.length," pending"]})]}),e.length===0?S.jsx("p",{className:"text-xs text-muted-foreground",children:"No pending todos"}):S.jsxs("div",{className:"space-y-0.5 max-h-40 overflow-y-auto",children:[e.slice(0,8).map(l=>S.jsxs("button",{type:"button",onClick:()=>o(l.file),className:"group flex w-full items-center gap-2.5 py-1.5 text-left transition-colors hover:bg-card-hover",children:[S.jsx("span",{className:"inline-flex h-3 w-3 shrink-0 items-center justify-center border border-muted-foreground/60 transition-colors group-hover:border-simple-accent"}),S.jsx("span",{className:"text-xs text-foreground/90 truncate",children:l.text})]},l.file)),e.length>8&&S.jsxs("p",{className:"text-[10px] text-muted-foreground pt-1",children:["+",e.length-8," more"]})]})]})}function Wae(t,e){return e||t==="complete"?{color:"bg-success",label:"Complete"}:t==="partial"?{color:"bg-simple-accent",label:"In Progress"}:t==="planned"?{color:"bg-blue-400",label:"Planned"}:t==="discussed"||t==="researched"?{color:"bg-yellow-500",label:t==="discussed"?"Discussed":"Researched"}:{color:"bg-muted-foreground/40",label:"Not Started"}}function Uae(){const{roadmap:t}=xo(),e=(t==null?void 0:t.phases)??[],i=(t==null?void 0:t.current_phase)??null;return e.length===0?null:S.jsxs("div",{className:"border border-border bg-card p-4",children:[S.jsxs("div",{className:"flex items-center justify-between mb-3",children:[S.jsx("span",{className:"text-xs font-mono uppercase tracking-widest text-muted-foreground",children:"Roadmap"}),S.jsxs("span",{className:"text-xs font-mono text-muted-foreground tabular-nums",children:[e.length," phases"]})]}),S.jsx("div",{className:"space-y-0.5 max-h-52 overflow-y-auto",children:e.map(n=>{const s=n.number===i,{color:r,label:o}=Wae(n.disk_status,n.roadmap_complete);return S.jsxs("div",{className:Ze("flex items-center gap-2.5 py-1.5 px-1",s&&"bg-simple-accent/5 border-l-2 border-l-simple-accent -ml-1 pl-2"),children:[S.jsx("span",{className:Ze("inline-block h-1.5 w-1.5 shrink-0 rounded-full",r),title:o}),S.jsx("span",{className:Ze("font-mono text-[10px] font-bold tabular-nums shrink-0",s?"text-simple-accent":"text-muted-foreground"),children:n.number}),S.jsx("span",{className:"text-xs text-foreground/80 truncate",children:n.name}),s&&S.jsx("span",{className:"ml-auto text-[9px] font-mono uppercase tracking-wider text-simple-accent shrink-0",children:"current"})]},n.number)})})]})}function Yae(t,e){const i={};return(t[t.length-1]===""?[...t,""]:t).join((i.padRight?" ":"")+","+(i.padLeft===!1?"":" ")).trim()}const Hae=/^[$_\p{ID_Start}][$_\u{200C}\u{200D}\p{ID_Continue}]*$/u,Fae=/^[$_\p{ID_Start}][-$_\u{200C}\u{200D}\p{ID_Continue}]*$/u,Gae={};function uQ(t,e){return(Gae.jsx?Fae:Hae).test(t)}const Kae=/[ \t\n\f\r]/g;function Jae(t){return typeof t=="object"?t.type==="text"?fQ(t.value):!1:fQ(t)}function fQ(t){return t.replace(Kae,"")===""}class Cd{constructor(e,i,n){this.normal=i,this.property=e,n&&(this.space=n)}}Cd.prototype.normal={};Cd.prototype.property={};Cd.prototype.space=void 0;function XN(t,e){const i={},n={};for(const s of t)Object.assign(i,s.property),Object.assign(n,s.normal);return new Cd(i,n,e)}function BS(t){return t.toLowerCase()}class jn{constructor(e,i){this.attribute=i,this.property=e}}jn.prototype.attribute="";jn.prototype.booleanish=!1;jn.prototype.boolean=!1;jn.prototype.commaOrSpaceSeparated=!1;jn.prototype.commaSeparated=!1;jn.prototype.defined=!1;jn.prototype.mustUseProperty=!1;jn.prototype.number=!1;jn.prototype.overloadedBoolean=!1;jn.prototype.property="";jn.prototype.spaceSeparated=!1;jn.prototype.space=void 0;let ele=0;const Xe=Nl(),ri=Nl(),$S=Nl(),de=Nl(),wt=Nl(),th=Nl(),es=Nl();function Nl(){return 2**++ele}const NS=Object.freeze(Object.defineProperty({__proto__:null,boolean:Xe,booleanish:ri,commaOrSpaceSeparated:es,commaSeparated:th,number:de,overloadedBoolean:$S,spaceSeparated:wt},Symbol.toStringTag,{value:"Module"})),r1=Object.keys(NS);class Vw extends jn{constructor(e,i,n,s){let r=-1;if(super(e,i),dQ(this,"space",s),typeof n=="number")for(;++r4&&i.slice(0,4)==="data"&&rle.test(e)){if(e.charAt(4)==="-"){const r=e.slice(5).replace(pQ,lle);n="data"+r.charAt(0).toUpperCase()+r.slice(1)}else{const r=e.slice(4);if(!pQ.test(r)){let o=r.replace(sle,ale);o.charAt(0)!=="-"&&(o="-"+o),e="data"+o}}s=Vw}return new s(n,e)}function ale(t){return"-"+t.toLowerCase()}function lle(t){return t.charAt(1).toUpperCase()}const cle=XN([ZN,tle,UN,YN,HN],"html"),Xw=XN([ZN,ile,UN,YN,HN],"svg");function hle(t){return t.join(" ").trim()}var Ac={},o1,mQ;function ule(){if(mQ)return o1;mQ=1;var t=/\/\*[^*]*\*+([^/*][^*]*\*+)*\//g,e=/\n/g,i=/^\s*/,n=/^(\*?[-#/*\\\w]+(\[[0-9a-z_-]+\])?)\s*/,s=/^:\s*/,r=/^((?:'(?:\\'|.)*?'|"(?:\\"|.)*?"|\([^)]*?\)|[^};])+)/,o=/^[;\s]*/,l=/^\s+|\s+$/g,c=` +`,u="/",d="*",p="",g="comment",O="declaration";function _(x,w){if(typeof x!="string")throw new TypeError("First argument must be a string");if(!x)return[];w=w||{};var k=1,T=1;function A(j){var $=j.match(e);$&&(k+=$.length);var D=j.lastIndexOf(c);T=~D?j.length-D:T+j.length}function Q(){var j={line:k,column:T};return function($){return $.position=new E(j),q(),$}}function E(j){this.start=j,this.end={line:k,column:T},this.source=w.source}E.prototype.content=x;function N(j){var $=new Error(w.source+":"+k+":"+T+": "+j);if($.reason=j,$.filename=w.source,$.line=k,$.column=T,$.source=x,!w.silent)throw $}function z(j){var $=j.exec(x);if($){var D=$[0];return A(D),x=x.slice(D.length),$}}function q(){z(i)}function J(j){var $;for(j=j||[];$=U();)$!==!1&&j.push($);return j}function U(){var j=Q();if(!(u!=x.charAt(0)||d!=x.charAt(1))){for(var $=2;p!=x.charAt($)&&(d!=x.charAt($)||u!=x.charAt($+1));)++$;if($+=2,p===x.charAt($-1))return N("End of comment missing");var D=x.slice(2,$-2);return T+=2,A(D),x=x.slice($),T+=2,j({type:g,comment:D})}}function R(){var j=Q(),$=z(n);if($){if(U(),!z(s))return N("property missing ':'");var D=z(r),Z=j({type:O,property:b($[0].replace(t,p)),value:D?b(D[0].replace(t,p)):p});return z(o),Z}}function B(){var j=[];J(j);for(var $;$=R();)$!==!1&&(j.push($),J(j));return j}return q(),B()}function b(x){return x?x.replace(l,p):p}return o1=_,o1}var gQ;function fle(){if(gQ)return Ac;gQ=1;var t=Ac&&Ac.__importDefault||function(n){return n&&n.__esModule?n:{default:n}};Object.defineProperty(Ac,"__esModule",{value:!0}),Ac.default=i;const e=t(ule());function i(n,s){let r=null;if(!n||typeof n!="string")return r;const o=(0,e.default)(n),l=typeof s=="function";return o.forEach(c=>{if(c.type!=="declaration")return;const{property:u,value:d}=c;l?s(u,d,c):d&&(r=r||{},r[u]=d)}),r}return Ac}var qu={},OQ;function dle(){if(OQ)return qu;OQ=1,Object.defineProperty(qu,"__esModule",{value:!0}),qu.camelCase=void 0;var t=/^--[a-zA-Z0-9_-]+$/,e=/-([a-z])/g,i=/^[^-]+$/,n=/^-(webkit|moz|ms|o|khtml)-/,s=/^-(ms)-/,r=function(u){return!u||i.test(u)||t.test(u)},o=function(u,d){return d.toUpperCase()},l=function(u,d){return"".concat(d,"-")},c=function(u,d){return d===void 0&&(d={}),r(u)?u:(u=u.toLowerCase(),d.reactCompat?u=u.replace(s,l):u=u.replace(n,l),u.replace(e,o))};return qu.camelCase=c,qu}var Wu,vQ;function ple(){if(vQ)return Wu;vQ=1;var t=Wu&&Wu.__importDefault||function(s){return s&&s.__esModule?s:{default:s}},e=t(fle()),i=dle();function n(s,r){var o={};return!s||typeof s!="string"||(0,e.default)(s,function(l,c){l&&c&&(o[(0,i.camelCase)(l,r)]=c)}),o}return n.default=n,Wu=n,Wu}var mle=ple();const gle=WS(mle),FN=GN("end"),Zw=GN("start");function GN(t){return e;function e(i){const n=i&&i.position&&i.position[t]||{};if(typeof n.line=="number"&&n.line>0&&typeof n.column=="number"&&n.column>0)return{line:n.line,column:n.column,offset:typeof n.offset=="number"&&n.offset>-1?n.offset:void 0}}}function Ole(t){const e=Zw(t),i=FN(t);if(e&&i)return{start:e,end:i}}function Sf(t){return!t||typeof t!="object"?"":"position"in t||"type"in t?_Q(t.position):"start"in t||"end"in t?_Q(t):"line"in t||"column"in t?zS(t):""}function zS(t){return yQ(t&&t.line)+":"+yQ(t&&t.column)}function _Q(t){return zS(t&&t.start)+"-"+zS(t&&t.end)}function yQ(t){return t&&typeof t=="number"?t:1}class ln extends Error{constructor(e,i,n){super(),typeof i=="string"&&(n=i,i=void 0);let s="",r={},o=!1;if(i&&("line"in i&&"column"in i?r={place:i}:"start"in i&&"end"in i?r={place:i}:"type"in i?r={ancestors:[i],place:i.position}:r={...i}),typeof e=="string"?s=e:!r.cause&&e&&(o=!0,s=e.message,r.cause=e),!r.ruleId&&!r.source&&typeof n=="string"){const c=n.indexOf(":");c===-1?r.ruleId=n:(r.source=n.slice(0,c),r.ruleId=n.slice(c+1))}if(!r.place&&r.ancestors&&r.ancestors){const c=r.ancestors[r.ancestors.length-1];c&&(r.place=c.position)}const l=r.place&&"start"in r.place?r.place.start:r.place;this.ancestors=r.ancestors||void 0,this.cause=r.cause||void 0,this.column=l?l.column:void 0,this.fatal=void 0,this.file="",this.message=s,this.line=l?l.line:void 0,this.name=Sf(r.place)||"1:1",this.place=r.place||void 0,this.reason=this.message,this.ruleId=r.ruleId||void 0,this.source=r.source||void 0,this.stack=o&&r.cause&&typeof r.cause.stack=="string"?r.cause.stack:"",this.actual=void 0,this.expected=void 0,this.note=void 0,this.url=void 0}}ln.prototype.file="";ln.prototype.name="";ln.prototype.reason="";ln.prototype.message="";ln.prototype.stack="";ln.prototype.column=void 0;ln.prototype.line=void 0;ln.prototype.ancestors=void 0;ln.prototype.cause=void 0;ln.prototype.fatal=void 0;ln.prototype.place=void 0;ln.prototype.ruleId=void 0;ln.prototype.source=void 0;const qw={}.hasOwnProperty,vle=new Map,_le=/[A-Z]/g,yle=new Set(["table","tbody","thead","tfoot","tr"]),ble=new Set(["td","th"]),KN="https://github.com/syntax-tree/hast-util-to-jsx-runtime";function Sle(t,e){if(!e||e.Fragment===void 0)throw new TypeError("Expected `Fragment` in options");const i=e.filePath||void 0;let n;if(e.development){if(typeof e.jsxDEV!="function")throw new TypeError("Expected `jsxDEV` in options when `development: true`");n=Mle(i,e.jsxDEV)}else{if(typeof e.jsx!="function")throw new TypeError("Expected `jsx` in production options");if(typeof e.jsxs!="function")throw new TypeError("Expected `jsxs` in production options");n=Ele(i,e.jsx,e.jsxs)}const s={Fragment:e.Fragment,ancestors:[],components:e.components||{},create:n,elementAttributeNameCase:e.elementAttributeNameCase||"react",evaluater:e.createEvaluater?e.createEvaluater():void 0,filePath:i,ignoreInvalidStyle:e.ignoreInvalidStyle||!1,passKeys:e.passKeys!==!1,passNode:e.passNode||!1,schema:e.space==="svg"?Xw:cle,stylePropertyNameCase:e.stylePropertyNameCase||"dom",tableCellAlignToStyle:e.tableCellAlignToStyle!==!1},r=JN(s,t,void 0);return r&&typeof r!="string"?r:s.create(t,s.Fragment,{children:r||void 0},void 0)}function JN(t,e,i){if(e.type==="element")return xle(t,e,i);if(e.type==="mdxFlowExpression"||e.type==="mdxTextExpression")return wle(t,e);if(e.type==="mdxJsxFlowElement"||e.type==="mdxJsxTextElement")return kle(t,e,i);if(e.type==="mdxjsEsm")return Cle(t,e);if(e.type==="root")return Tle(t,e,i);if(e.type==="text")return Ale(t,e)}function xle(t,e,i){const n=t.schema;let s=n;e.tagName.toLowerCase()==="svg"&&n.space==="html"&&(s=Xw,t.schema=s),t.ancestors.push(e);const r=tz(t,e.tagName,!1),o=Ple(t,e);let l=Uw(t,e);return yle.has(e.tagName)&&(l=l.filter(function(c){return typeof c=="string"?!Jae(c):!0})),ez(t,o,r,e),Ww(o,l),t.ancestors.pop(),t.schema=n,t.create(e,r,o,i)}function wle(t,e){if(e.data&&e.data.estree&&t.evaluater){const n=e.data.estree.body[0];return n.type,t.evaluater.evaluateExpression(n.expression)}rd(t,e.position)}function Cle(t,e){if(e.data&&e.data.estree&&t.evaluater)return t.evaluater.evaluateProgram(e.data.estree);rd(t,e.position)}function kle(t,e,i){const n=t.schema;let s=n;e.name==="svg"&&n.space==="html"&&(s=Xw,t.schema=s),t.ancestors.push(e);const r=e.name===null?t.Fragment:tz(t,e.name,!0),o=Rle(t,e),l=Uw(t,e);return ez(t,o,r,e),Ww(o,l),t.ancestors.pop(),t.schema=n,t.create(e,r,o,i)}function Tle(t,e,i){const n={};return Ww(n,Uw(t,e)),t.create(e,t.Fragment,n,i)}function Ale(t,e){return e.value}function ez(t,e,i,n){typeof i!="string"&&i!==t.Fragment&&t.passNode&&(e.node=n)}function Ww(t,e){if(e.length>0){const i=e.length>1?e:e[0];i&&(t.children=i)}}function Ele(t,e,i){return n;function n(s,r,o,l){const u=Array.isArray(o.children)?i:e;return l?u(r,o,l):u(r,o)}}function Mle(t,e){return i;function i(n,s,r,o){const l=Array.isArray(r.children),c=Zw(n);return e(s,r,o,l,{columnNumber:c?c.column-1:void 0,fileName:t,lineNumber:c?c.line:void 0},void 0)}}function Ple(t,e){const i={};let n,s;for(s in e.properties)if(s!=="children"&&qw.call(e.properties,s)){const r=Qle(t,s,e.properties[s]);if(r){const[o,l]=r;t.tableCellAlignToStyle&&o==="align"&&typeof l=="string"&&ble.has(e.tagName)?n=l:i[o]=l}}if(n){const r=i.style||(i.style={});r[t.stylePropertyNameCase==="css"?"text-align":"textAlign"]=n}return i}function Rle(t,e){const i={};for(const n of e.attributes)if(n.type==="mdxJsxExpressionAttribute")if(n.data&&n.data.estree&&t.evaluater){const r=n.data.estree.body[0];r.type;const o=r.expression;o.type;const l=o.properties[0];l.type,Object.assign(i,t.evaluater.evaluateExpression(l.argument))}else rd(t,e.position);else{const s=n.name;let r;if(n.value&&typeof n.value=="object")if(n.value.data&&n.value.data.estree&&t.evaluater){const l=n.value.data.estree.body[0];l.type,r=t.evaluater.evaluateExpression(l.expression)}else rd(t,e.position);else r=n.value===null?!0:n.value;i[s]=r}return i}function Uw(t,e){const i=[];let n=-1;const s=t.passKeys?new Map:vle;for(;++ns?0:s+e:e=e>s?s:e,i=i>0?i:0,n.length<1e4)o=Array.from(n),o.unshift(e,i),t.splice(...o);else for(i&&t.splice(e,i);r0?(Rr(t,t.length,0,e),t):e}const xQ={}.hasOwnProperty;function Ile(t){const e={};let i=-1;for(;++i13&&i<32||i>126&&i<160||i>55295&&i<57344||i>64975&&i<65008||(i&65535)===65535||(i&65535)===65534||i>1114111?"�":String.fromCodePoint(i)}function ih(t){return t.replace(/[\t\n\r ]+/g," ").replace(/^ | $/g,"").toLowerCase().toUpperCase()}const vr=La(/[A-Za-z]/),rs=La(/[\dA-Za-z]/),Zle=La(/[#-'*+\--9=?A-Z^-~]/);function jS(t){return t!==null&&(t<32||t===127)}const IS=La(/\d/),qle=La(/[\dA-Fa-f]/),Wle=La(/[!-/:-@[-`{-~]/);function $e(t){return t!==null&&t<-2}function zn(t){return t!==null&&(t<0||t===32)}function lt(t){return t===-2||t===-1||t===32}const Ule=La(new RegExp("\\p{P}|\\p{S}","u")),Yle=La(/\s/);function La(t){return e;function e(i){return i!==null&&i>-1&&t.test(String.fromCharCode(i))}}function Eh(t){const e=[];let i=-1,n=0,s=0;for(;++i55295&&r<57344){const l=t.charCodeAt(i+1);r<56320&&l>56319&&l<57344?(o=String.fromCharCode(r,l),s=1):o="�"}else o=String.fromCharCode(r);o&&(e.push(t.slice(n,i),encodeURIComponent(o)),n=i+s+1,o=""),s&&(i+=s,s=0)}return e.join("")+t.slice(n)}function kt(t,e,i,n){const s=n?n-1:Number.POSITIVE_INFINITY;let r=0;return o;function o(c){return lt(c)?(t.enter(i),l(c)):e(c)}function l(c){return lt(c)&&r++o))return;const N=e.events.length;let z=N,q,J;for(;z--;)if(e.events[z][0]==="exit"&&e.events[z][1].type==="chunkFlow"){if(q){J=e.events[z][1].end;break}q=!0}for(w(n),E=N;ET;){const Q=i[A];e.containerState=Q[1],Q[0].exit.call(e,t)}i.length=T}function k(){s.write([null]),r=void 0,s=void 0,e.containerState._closeFlow=void 0}}function Jle(t,e,i){return kt(t,t.attempt(this.parser.constructs.document,e,i),"linePrefix",this.parser.constructs.disable.null.includes("codeIndented")?void 0:4)}function CQ(t){if(t===null||zn(t)||Yle(t))return 1;if(Ule(t))return 2}function Hw(t,e,i){const n=[];let s=-1;for(;++s1&&t[i][1].end.offset-t[i][1].start.offset>1?2:1;const p={...t[n][1].end},g={...t[i][1].start};kQ(p,-c),kQ(g,c),o={type:c>1?"strongSequence":"emphasisSequence",start:p,end:{...t[n][1].end}},l={type:c>1?"strongSequence":"emphasisSequence",start:{...t[i][1].start},end:g},r={type:c>1?"strongText":"emphasisText",start:{...t[n][1].end},end:{...t[i][1].start}},s={type:c>1?"strong":"emphasis",start:{...o.start},end:{...l.end}},t[n][1].end={...o.start},t[i][1].start={...l.end},u=[],t[n][1].end.offset-t[n][1].start.offset&&(u=ws(u,[["enter",t[n][1],e],["exit",t[n][1],e]])),u=ws(u,[["enter",s,e],["enter",o,e],["exit",o,e],["enter",r,e]]),u=ws(u,Hw(e.parser.constructs.insideSpan.null,t.slice(n+1,i),e)),u=ws(u,[["exit",r,e],["enter",l,e],["exit",l,e],["exit",s,e]]),t[i][1].end.offset-t[i][1].start.offset?(d=2,u=ws(u,[["enter",t[i][1],e],["exit",t[i][1],e]])):d=0,Rr(t,n-1,i-n+3,u),i=n+u.length-d-2;break}}for(i=-1;++i0&<(E)?kt(t,k,"linePrefix",r+1)(E):k(E)}function k(E){return E===null||$e(E)?t.check(TQ,b,A)(E):(t.enter("codeFlowValue"),T(E))}function T(E){return E===null||$e(E)?(t.exit("codeFlowValue"),k(E)):(t.consume(E),T)}function A(E){return t.exit("codeFenced"),e(E)}function Q(E,N,z){let q=0;return J;function J($){return E.enter("lineEnding"),E.consume($),E.exit("lineEnding"),U}function U($){return E.enter("codeFencedFence"),lt($)?kt(E,R,"linePrefix",n.parser.constructs.disable.null.includes("codeIndented")?void 0:4)($):R($)}function R($){return $===l?(E.enter("codeFencedFenceSequence"),B($)):z($)}function B($){return $===l?(q++,E.consume($),B):q>=o?(E.exit("codeFencedFenceSequence"),lt($)?kt(E,j,"whitespace")($):j($)):z($)}function j($){return $===null||$e($)?(E.exit("codeFencedFence"),N($)):z($)}}}function uce(t,e,i){const n=this;return s;function s(o){return o===null?i(o):(t.enter("lineEnding"),t.consume(o),t.exit("lineEnding"),r)}function r(o){return n.parser.lazy[n.now().line]?i(o):e(o)}}const l1={name:"codeIndented",tokenize:dce},fce={partial:!0,tokenize:pce};function dce(t,e,i){const n=this;return s;function s(u){return t.enter("codeIndented"),kt(t,r,"linePrefix",5)(u)}function r(u){const d=n.events[n.events.length-1];return d&&d[1].type==="linePrefix"&&d[2].sliceSerialize(d[1],!0).length>=4?o(u):i(u)}function o(u){return u===null?c(u):$e(u)?t.attempt(fce,o,c)(u):(t.enter("codeFlowValue"),l(u))}function l(u){return u===null||$e(u)?(t.exit("codeFlowValue"),o(u)):(t.consume(u),l)}function c(u){return t.exit("codeIndented"),e(u)}}function pce(t,e,i){const n=this;return s;function s(o){return n.parser.lazy[n.now().line]?i(o):$e(o)?(t.enter("lineEnding"),t.consume(o),t.exit("lineEnding"),s):kt(t,r,"linePrefix",5)(o)}function r(o){const l=n.events[n.events.length-1];return l&&l[1].type==="linePrefix"&&l[2].sliceSerialize(l[1],!0).length>=4?e(o):$e(o)?s(o):i(o)}}const mce={name:"codeText",previous:Oce,resolve:gce,tokenize:vce};function gce(t){let e=t.length-4,i=3,n,s;if((t[i][1].type==="lineEnding"||t[i][1].type==="space")&&(t[e][1].type==="lineEnding"||t[e][1].type==="space")){for(n=i;++n=this.left.length+this.right.length)throw new RangeError("Cannot access index `"+e+"` in a splice buffer of size `"+(this.left.length+this.right.length)+"`");return ethis.left.length?this.right.slice(this.right.length-n+this.left.length,this.right.length-e+this.left.length).reverse():this.left.slice(e).concat(this.right.slice(this.right.length-n+this.left.length).reverse())}splice(e,i,n){const s=i||0;this.setCursor(Math.trunc(e));const r=this.right.splice(this.right.length-s,Number.POSITIVE_INFINITY);return n&&Uu(this.left,n),r.reverse()}pop(){return this.setCursor(Number.POSITIVE_INFINITY),this.left.pop()}push(e){this.setCursor(Number.POSITIVE_INFINITY),this.left.push(e)}pushMany(e){this.setCursor(Number.POSITIVE_INFINITY),Uu(this.left,e)}unshift(e){this.setCursor(0),this.right.push(e)}unshiftMany(e){this.setCursor(0),Uu(this.right,e.reverse())}setCursor(e){if(!(e===this.left.length||e>this.left.length&&this.right.length===0||e<0&&this.left.length===0))if(e=4?e(o):t.interrupt(n.parser.constructs.flow,i,e)(o)}}function lz(t,e,i,n,s,r,o,l,c){const u=c||Number.POSITIVE_INFINITY;let d=0;return p;function p(w){return w===60?(t.enter(n),t.enter(s),t.enter(r),t.consume(w),t.exit(r),g):w===null||w===32||w===41||jS(w)?i(w):(t.enter(n),t.enter(o),t.enter(l),t.enter("chunkString",{contentType:"string"}),b(w))}function g(w){return w===62?(t.enter(r),t.consume(w),t.exit(r),t.exit(s),t.exit(n),e):(t.enter(l),t.enter("chunkString",{contentType:"string"}),O(w))}function O(w){return w===62?(t.exit("chunkString"),t.exit(l),g(w)):w===null||w===60||$e(w)?i(w):(t.consume(w),w===92?_:O)}function _(w){return w===60||w===62||w===92?(t.consume(w),O):O(w)}function b(w){return!d&&(w===null||w===41||zn(w))?(t.exit("chunkString"),t.exit(l),t.exit(o),t.exit(n),e(w)):d999||O===null||O===91||O===93&&!c||O===94&&!l&&"_hiddenFootnoteSupport"in o.parser.constructs?i(O):O===93?(t.exit(r),t.enter(s),t.consume(O),t.exit(s),t.exit(n),e):$e(O)?(t.enter("lineEnding"),t.consume(O),t.exit("lineEnding"),d):(t.enter("chunkString",{contentType:"string"}),p(O))}function p(O){return O===null||O===91||O===93||$e(O)||l++>999?(t.exit("chunkString"),d(O)):(t.consume(O),c||(c=!lt(O)),O===92?g:p)}function g(O){return O===91||O===92||O===93?(t.consume(O),l++,p):p(O)}}function hz(t,e,i,n,s,r){let o;return l;function l(g){return g===34||g===39||g===40?(t.enter(n),t.enter(s),t.consume(g),t.exit(s),o=g===40?41:g,c):i(g)}function c(g){return g===o?(t.enter(s),t.consume(g),t.exit(s),t.exit(n),e):(t.enter(r),u(g))}function u(g){return g===o?(t.exit(r),c(o)):g===null?i(g):$e(g)?(t.enter("lineEnding"),t.consume(g),t.exit("lineEnding"),kt(t,u,"linePrefix")):(t.enter("chunkString",{contentType:"string"}),d(g))}function d(g){return g===o||g===null||$e(g)?(t.exit("chunkString"),u(g)):(t.consume(g),g===92?p:d)}function p(g){return g===o||g===92?(t.consume(g),d):d(g)}}function xf(t,e){let i;return n;function n(s){return $e(s)?(t.enter("lineEnding"),t.consume(s),t.exit("lineEnding"),i=!0,n):lt(s)?kt(t,n,i?"linePrefix":"lineSuffix")(s):e(s)}}const kce={name:"definition",tokenize:Ace},Tce={partial:!0,tokenize:Ece};function Ace(t,e,i){const n=this;let s;return r;function r(O){return t.enter("definition"),o(O)}function o(O){return cz.call(n,t,l,i,"definitionLabel","definitionLabelMarker","definitionLabelString")(O)}function l(O){return s=ih(n.sliceSerialize(n.events[n.events.length-1][1]).slice(1,-1)),O===58?(t.enter("definitionMarker"),t.consume(O),t.exit("definitionMarker"),c):i(O)}function c(O){return zn(O)?xf(t,u)(O):u(O)}function u(O){return lz(t,d,i,"definitionDestination","definitionDestinationLiteral","definitionDestinationLiteralMarker","definitionDestinationRaw","definitionDestinationString")(O)}function d(O){return t.attempt(Tce,p,p)(O)}function p(O){return lt(O)?kt(t,g,"whitespace")(O):g(O)}function g(O){return O===null||$e(O)?(t.exit("definition"),n.parser.defined.push(s),e(O)):i(O)}}function Ece(t,e,i){return n;function n(l){return zn(l)?xf(t,s)(l):i(l)}function s(l){return hz(t,r,i,"definitionTitle","definitionTitleMarker","definitionTitleString")(l)}function r(l){return lt(l)?kt(t,o,"whitespace")(l):o(l)}function o(l){return l===null||$e(l)?e(l):i(l)}}const Mce={name:"hardBreakEscape",tokenize:Pce};function Pce(t,e,i){return n;function n(r){return t.enter("hardBreakEscape"),t.consume(r),s}function s(r){return $e(r)?(t.exit("hardBreakEscape"),e(r)):i(r)}}const Rce={name:"headingAtx",resolve:Qce,tokenize:Lce};function Qce(t,e){let i=t.length-2,n=3,s,r;return t[n][1].type==="whitespace"&&(n+=2),i-2>n&&t[i][1].type==="whitespace"&&(i-=2),t[i][1].type==="atxHeadingSequence"&&(n===i-1||i-4>n&&t[i-2][1].type==="whitespace")&&(i-=n+1===i?2:4),i>n&&(s={type:"atxHeadingText",start:t[n][1].start,end:t[i][1].end},r={type:"chunkText",start:t[n][1].start,end:t[i][1].end,contentType:"text"},Rr(t,n,i-n+1,[["enter",s,e],["enter",r,e],["exit",r,e],["exit",s,e]])),t}function Lce(t,e,i){let n=0;return s;function s(d){return t.enter("atxHeading"),r(d)}function r(d){return t.enter("atxHeadingSequence"),o(d)}function o(d){return d===35&&n++<6?(t.consume(d),o):d===null||zn(d)?(t.exit("atxHeadingSequence"),l(d)):i(d)}function l(d){return d===35?(t.enter("atxHeadingSequence"),c(d)):d===null||$e(d)?(t.exit("atxHeading"),e(d)):lt(d)?kt(t,l,"whitespace")(d):(t.enter("atxHeadingText"),u(d))}function c(d){return d===35?(t.consume(d),c):(t.exit("atxHeadingSequence"),l(d))}function u(d){return d===null||d===35||zn(d)?(t.exit("atxHeadingText"),l(d)):(t.consume(d),u)}}const Dce=["address","article","aside","base","basefont","blockquote","body","caption","center","col","colgroup","dd","details","dialog","dir","div","dl","dt","fieldset","figcaption","figure","footer","form","frame","frameset","h1","h2","h3","h4","h5","h6","head","header","hr","html","iframe","legend","li","link","main","menu","menuitem","nav","noframes","ol","optgroup","option","p","param","search","section","summary","table","tbody","td","tfoot","th","thead","title","tr","track","ul"],EQ=["pre","script","style","textarea"],Bce={concrete:!0,name:"htmlFlow",resolveTo:zce,tokenize:jce},$ce={partial:!0,tokenize:Vce},Nce={partial:!0,tokenize:Ice};function zce(t){let e=t.length;for(;e--&&!(t[e][0]==="enter"&&t[e][1].type==="htmlFlow"););return e>1&&t[e-2][1].type==="linePrefix"&&(t[e][1].start=t[e-2][1].start,t[e+1][1].start=t[e-2][1].start,t.splice(e-2,2)),t}function jce(t,e,i){const n=this;let s,r,o,l,c;return u;function u(L){return d(L)}function d(L){return t.enter("htmlFlow"),t.enter("htmlFlowData"),t.consume(L),p}function p(L){return L===33?(t.consume(L),g):L===47?(t.consume(L),r=!0,b):L===63?(t.consume(L),s=3,n.interrupt?e:M):vr(L)?(t.consume(L),o=String.fromCharCode(L),x):i(L)}function g(L){return L===45?(t.consume(L),s=2,O):L===91?(t.consume(L),s=5,l=0,_):vr(L)?(t.consume(L),s=4,n.interrupt?e:M):i(L)}function O(L){return L===45?(t.consume(L),n.interrupt?e:M):i(L)}function _(L){const ue="CDATA[";return L===ue.charCodeAt(l++)?(t.consume(L),l===ue.length?n.interrupt?e:R:_):i(L)}function b(L){return vr(L)?(t.consume(L),o=String.fromCharCode(L),x):i(L)}function x(L){if(L===null||L===47||L===62||zn(L)){const ue=L===47,he=o.toLowerCase();return!ue&&!r&&EQ.includes(he)?(s=1,n.interrupt?e(L):R(L)):Dce.includes(o.toLowerCase())?(s=6,ue?(t.consume(L),w):n.interrupt?e(L):R(L)):(s=7,n.interrupt&&!n.parser.lazy[n.now().line]?i(L):r?k(L):T(L))}return L===45||rs(L)?(t.consume(L),o+=String.fromCharCode(L),x):i(L)}function w(L){return L===62?(t.consume(L),n.interrupt?e:R):i(L)}function k(L){return lt(L)?(t.consume(L),k):J(L)}function T(L){return L===47?(t.consume(L),J):L===58||L===95||vr(L)?(t.consume(L),A):lt(L)?(t.consume(L),T):J(L)}function A(L){return L===45||L===46||L===58||L===95||rs(L)?(t.consume(L),A):Q(L)}function Q(L){return L===61?(t.consume(L),E):lt(L)?(t.consume(L),Q):T(L)}function E(L){return L===null||L===60||L===61||L===62||L===96?i(L):L===34||L===39?(t.consume(L),c=L,N):lt(L)?(t.consume(L),E):z(L)}function N(L){return L===c?(t.consume(L),c=null,q):L===null||$e(L)?i(L):(t.consume(L),N)}function z(L){return L===null||L===34||L===39||L===47||L===60||L===61||L===62||L===96||zn(L)?Q(L):(t.consume(L),z)}function q(L){return L===47||L===62||lt(L)?T(L):i(L)}function J(L){return L===62?(t.consume(L),U):i(L)}function U(L){return L===null||$e(L)?R(L):lt(L)?(t.consume(L),U):i(L)}function R(L){return L===45&&s===2?(t.consume(L),D):L===60&&s===1?(t.consume(L),Z):L===62&&s===4?(t.consume(L),I):L===63&&s===3?(t.consume(L),M):L===93&&s===5?(t.consume(L),F):$e(L)&&(s===6||s===7)?(t.exit("htmlFlowData"),t.check($ce,K,B)(L)):L===null||$e(L)?(t.exit("htmlFlowData"),B(L)):(t.consume(L),R)}function B(L){return t.check(Nce,j,K)(L)}function j(L){return t.enter("lineEnding"),t.consume(L),t.exit("lineEnding"),$}function $(L){return L===null||$e(L)?B(L):(t.enter("htmlFlowData"),R(L))}function D(L){return L===45?(t.consume(L),M):R(L)}function Z(L){return L===47?(t.consume(L),o="",H):R(L)}function H(L){if(L===62){const ue=o.toLowerCase();return EQ.includes(ue)?(t.consume(L),I):R(L)}return vr(L)&&o.length<8?(t.consume(L),o+=String.fromCharCode(L),H):R(L)}function F(L){return L===93?(t.consume(L),M):R(L)}function M(L){return L===62?(t.consume(L),I):L===45&&s===2?(t.consume(L),M):R(L)}function I(L){return L===null||$e(L)?(t.exit("htmlFlowData"),K(L)):(t.consume(L),I)}function K(L){return t.exit("htmlFlow"),e(L)}}function Ice(t,e,i){const n=this;return s;function s(o){return $e(o)?(t.enter("lineEnding"),t.consume(o),t.exit("lineEnding"),r):i(o)}function r(o){return n.parser.lazy[n.now().line]?i(o):e(o)}}function Vce(t,e,i){return n;function n(s){return t.enter("lineEnding"),t.consume(s),t.exit("lineEnding"),t.attempt(PO,e,i)}}const Xce={name:"htmlText",tokenize:Zce};function Zce(t,e,i){const n=this;let s,r,o;return l;function l(M){return t.enter("htmlText"),t.enter("htmlTextData"),t.consume(M),c}function c(M){return M===33?(t.consume(M),u):M===47?(t.consume(M),Q):M===63?(t.consume(M),T):vr(M)?(t.consume(M),z):i(M)}function u(M){return M===45?(t.consume(M),d):M===91?(t.consume(M),r=0,_):vr(M)?(t.consume(M),k):i(M)}function d(M){return M===45?(t.consume(M),O):i(M)}function p(M){return M===null?i(M):M===45?(t.consume(M),g):$e(M)?(o=p,Z(M)):(t.consume(M),p)}function g(M){return M===45?(t.consume(M),O):p(M)}function O(M){return M===62?D(M):M===45?g(M):p(M)}function _(M){const I="CDATA[";return M===I.charCodeAt(r++)?(t.consume(M),r===I.length?b:_):i(M)}function b(M){return M===null?i(M):M===93?(t.consume(M),x):$e(M)?(o=b,Z(M)):(t.consume(M),b)}function x(M){return M===93?(t.consume(M),w):b(M)}function w(M){return M===62?D(M):M===93?(t.consume(M),w):b(M)}function k(M){return M===null||M===62?D(M):$e(M)?(o=k,Z(M)):(t.consume(M),k)}function T(M){return M===null?i(M):M===63?(t.consume(M),A):$e(M)?(o=T,Z(M)):(t.consume(M),T)}function A(M){return M===62?D(M):T(M)}function Q(M){return vr(M)?(t.consume(M),E):i(M)}function E(M){return M===45||rs(M)?(t.consume(M),E):N(M)}function N(M){return $e(M)?(o=N,Z(M)):lt(M)?(t.consume(M),N):D(M)}function z(M){return M===45||rs(M)?(t.consume(M),z):M===47||M===62||zn(M)?q(M):i(M)}function q(M){return M===47?(t.consume(M),D):M===58||M===95||vr(M)?(t.consume(M),J):$e(M)?(o=q,Z(M)):lt(M)?(t.consume(M),q):D(M)}function J(M){return M===45||M===46||M===58||M===95||rs(M)?(t.consume(M),J):U(M)}function U(M){return M===61?(t.consume(M),R):$e(M)?(o=U,Z(M)):lt(M)?(t.consume(M),U):q(M)}function R(M){return M===null||M===60||M===61||M===62||M===96?i(M):M===34||M===39?(t.consume(M),s=M,B):$e(M)?(o=R,Z(M)):lt(M)?(t.consume(M),R):(t.consume(M),j)}function B(M){return M===s?(t.consume(M),s=void 0,$):M===null?i(M):$e(M)?(o=B,Z(M)):(t.consume(M),B)}function j(M){return M===null||M===34||M===39||M===60||M===61||M===96?i(M):M===47||M===62||zn(M)?q(M):(t.consume(M),j)}function $(M){return M===47||M===62||zn(M)?q(M):i(M)}function D(M){return M===62?(t.consume(M),t.exit("htmlTextData"),t.exit("htmlText"),e):i(M)}function Z(M){return t.exit("htmlTextData"),t.enter("lineEnding"),t.consume(M),t.exit("lineEnding"),H}function H(M){return lt(M)?kt(t,F,"linePrefix",n.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(M):F(M)}function F(M){return t.enter("htmlTextData"),o(M)}}const Fw={name:"labelEnd",resolveAll:Yce,resolveTo:Hce,tokenize:Fce},qce={tokenize:Gce},Wce={tokenize:Kce},Uce={tokenize:Jce};function Yce(t){let e=-1;const i=[];for(;++e=3&&(u===null||$e(u))?(t.exit("thematicBreak"),e(u)):i(u)}function c(u){return u===s?(t.consume(u),n++,c):(t.exit("thematicBreakSequence"),lt(u)?kt(t,l,"whitespace")(u):l(u))}}const Rn={continuation:{tokenize:che},exit:uhe,name:"list",tokenize:lhe},ohe={partial:!0,tokenize:fhe},ahe={partial:!0,tokenize:hhe};function lhe(t,e,i){const n=this,s=n.events[n.events.length-1];let r=s&&s[1].type==="linePrefix"?s[2].sliceSerialize(s[1],!0).length:0,o=0;return l;function l(O){const _=n.containerState.type||(O===42||O===43||O===45?"listUnordered":"listOrdered");if(_==="listUnordered"?!n.containerState.marker||O===n.containerState.marker:IS(O)){if(n.containerState.type||(n.containerState.type=_,t.enter(_,{_container:!0})),_==="listUnordered")return t.enter("listItemPrefix"),O===42||O===45?t.check(cg,i,u)(O):u(O);if(!n.interrupt||O===49)return t.enter("listItemPrefix"),t.enter("listItemValue"),c(O)}return i(O)}function c(O){return IS(O)&&++o<10?(t.consume(O),c):(!n.interrupt||o<2)&&(n.containerState.marker?O===n.containerState.marker:O===41||O===46)?(t.exit("listItemValue"),u(O)):i(O)}function u(O){return t.enter("listItemMarker"),t.consume(O),t.exit("listItemMarker"),n.containerState.marker=n.containerState.marker||O,t.check(PO,n.interrupt?i:d,t.attempt(ohe,g,p))}function d(O){return n.containerState.initialBlankLine=!0,r++,g(O)}function p(O){return lt(O)?(t.enter("listItemPrefixWhitespace"),t.consume(O),t.exit("listItemPrefixWhitespace"),g):i(O)}function g(O){return n.containerState.size=r+n.sliceSerialize(t.exit("listItemPrefix"),!0).length,e(O)}}function che(t,e,i){const n=this;return n.containerState._closeFlow=void 0,t.check(PO,s,r);function s(l){return n.containerState.furtherBlankLines=n.containerState.furtherBlankLines||n.containerState.initialBlankLine,kt(t,e,"listItemIndent",n.containerState.size+1)(l)}function r(l){return n.containerState.furtherBlankLines||!lt(l)?(n.containerState.furtherBlankLines=void 0,n.containerState.initialBlankLine=void 0,o(l)):(n.containerState.furtherBlankLines=void 0,n.containerState.initialBlankLine=void 0,t.attempt(ahe,e,o)(l))}function o(l){return n.containerState._closeFlow=!0,n.interrupt=void 0,kt(t,t.attempt(Rn,e,i),"linePrefix",n.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(l)}}function hhe(t,e,i){const n=this;return kt(t,s,"listItemIndent",n.containerState.size+1);function s(r){const o=n.events[n.events.length-1];return o&&o[1].type==="listItemIndent"&&o[2].sliceSerialize(o[1],!0).length===n.containerState.size?e(r):i(r)}}function uhe(t){t.exit(this.containerState.type)}function fhe(t,e,i){const n=this;return kt(t,s,"listItemPrefixWhitespace",n.parser.constructs.disable.null.includes("codeIndented")?void 0:5);function s(r){const o=n.events[n.events.length-1];return!lt(r)&&o&&o[1].type==="listItemPrefixWhitespace"?e(r):i(r)}}const MQ={name:"setextUnderline",resolveTo:dhe,tokenize:phe};function dhe(t,e){let i=t.length,n,s,r;for(;i--;)if(t[i][0]==="enter"){if(t[i][1].type==="content"){n=i;break}t[i][1].type==="paragraph"&&(s=i)}else t[i][1].type==="content"&&t.splice(i,1),!r&&t[i][1].type==="definition"&&(r=i);const o={type:"setextHeading",start:{...t[n][1].start},end:{...t[t.length-1][1].end}};return t[s][1].type="setextHeadingText",r?(t.splice(s,0,["enter",o,e]),t.splice(r+1,0,["exit",t[n][1],e]),t[n][1].end={...t[r][1].end}):t[n][1]=o,t.push(["exit",o,e]),t}function phe(t,e,i){const n=this;let s;return r;function r(u){let d=n.events.length,p;for(;d--;)if(n.events[d][1].type!=="lineEnding"&&n.events[d][1].type!=="linePrefix"&&n.events[d][1].type!=="content"){p=n.events[d][1].type==="paragraph";break}return!n.parser.lazy[n.now().line]&&(n.interrupt||p)?(t.enter("setextHeadingLine"),s=u,o(u)):i(u)}function o(u){return t.enter("setextHeadingLineSequence"),l(u)}function l(u){return u===s?(t.consume(u),l):(t.exit("setextHeadingLineSequence"),lt(u)?kt(t,c,"lineSuffix")(u):c(u))}function c(u){return u===null||$e(u)?(t.exit("setextHeadingLine"),e(u)):i(u)}}const mhe={tokenize:ghe};function ghe(t){const e=this,i=t.attempt(PO,n,t.attempt(this.parser.constructs.flowInitial,s,kt(t,t.attempt(this.parser.constructs.flow,s,t.attempt(bce,s)),"linePrefix")));return i;function n(r){if(r===null){t.consume(r);return}return t.enter("lineEndingBlank"),t.consume(r),t.exit("lineEndingBlank"),e.currentConstruct=void 0,i}function s(r){if(r===null){t.consume(r);return}return t.enter("lineEnding"),t.consume(r),t.exit("lineEnding"),e.currentConstruct=void 0,i}}const Ohe={resolveAll:fz()},vhe=uz("string"),_he=uz("text");function uz(t){return{resolveAll:fz(t==="text"?yhe:void 0),tokenize:e};function e(i){const n=this,s=this.parser.constructs[t],r=i.attempt(s,o,l);return o;function o(d){return u(d)?r(d):l(d)}function l(d){if(d===null){i.consume(d);return}return i.enter("data"),i.consume(d),c}function c(d){return u(d)?(i.exit("data"),r(d)):(i.consume(d),c)}function u(d){if(d===null)return!0;const p=s[d];let g=-1;if(p)for(;++g-1){const l=o[0];typeof l=="string"?o[0]=l.slice(n):o.shift()}r>0&&o.push(t[s].slice(0,r))}return o}function Qhe(t,e){let i=-1;const n=[];let s;for(;++i0){const In=De.tokenStack[De.tokenStack.length-1];(In[1]||RQ).call(De,void 0,In[0])}for(ge.position={start:aa(oe.length>0?oe[0][1].start:{line:1,column:1,offset:0}),end:aa(oe.length>0?oe[oe.length-2][1].end:{line:1,column:1,offset:0})},ht=-1;++ht0&&(n.className=["language-"+r[0]]);let s={type:"element",tagName:"code",properties:n,children:[{type:"text",value:i}]};return e.meta&&(s.data={meta:e.meta}),t.patch(e,s),s=t.applyData(e,s),s={type:"element",tagName:"pre",properties:{},children:[s]},t.patch(e,s),s}function Xhe(t,e){const i={type:"element",tagName:"del",properties:{},children:t.all(e)};return t.patch(e,i),t.applyData(e,i)}function Zhe(t,e){const i={type:"element",tagName:"em",properties:{},children:t.all(e)};return t.patch(e,i),t.applyData(e,i)}function qhe(t,e){const i=typeof t.options.clobberPrefix=="string"?t.options.clobberPrefix:"user-content-",n=String(e.identifier).toUpperCase(),r=Eh(n.toLowerCase()),s=t.footnoteOrder.indexOf(n);let o,l=t.footnoteCounts.get(n);l===void 0?(l=0,t.footnoteOrder.push(n),o=t.footnoteOrder.length):o=s+1,l+=1,t.footnoteCounts.set(n,l);const c={type:"element",tagName:"a",properties:{href:"#"+i+"fn-"+r,id:i+"fnref-"+r+(l>1?"-"+l:""),dataFootnoteRef:!0,ariaDescribedBy:["footnote-label"]},children:[{type:"text",value:String(o)}]};t.patch(e,c);const u={type:"element",tagName:"sup",properties:{},children:[c]};return t.patch(e,u),t.applyData(e,u)}function Whe(t,e){const i={type:"element",tagName:"h"+e.depth,properties:{},children:t.all(e)};return t.patch(e,i),t.applyData(e,i)}function Uhe(t,e){if(t.options.allowDangerousHtml){const i={type:"raw",value:e.value};return t.patch(e,i),t.applyData(e,i)}}function mN(t,e){const i=e.referenceType;let n="]";if(i==="collapsed"?n+="[]":i==="full"&&(n+="["+(e.label||e.identifier)+"]"),e.type==="imageReference")return[{type:"text",value:"!["+e.alt+n}];const r=t.all(e),s=r[0];s&&s.type==="text"?s.value="["+s.value:r.unshift({type:"text",value:"["});const o=r[r.length-1];return o&&o.type==="text"?o.value+=n:r.push({type:"text",value:n}),r}function Yhe(t,e){const i=String(e.identifier).toUpperCase(),n=t.definitionById.get(i);if(!n)return mN(t,e);const r={src:Eh(n.url||""),alt:e.alt};n.title!==null&&n.title!==void 0&&(r.title=n.title);const s={type:"element",tagName:"img",properties:r,children:[]};return t.patch(e,s),t.applyData(e,s)}function Hhe(t,e){const i={src:Eh(e.url)};e.alt!==null&&e.alt!==void 0&&(i.alt=e.alt),e.title!==null&&e.title!==void 0&&(i.title=e.title);const n={type:"element",tagName:"img",properties:i,children:[]};return t.patch(e,n),t.applyData(e,n)}function Fhe(t,e){const i={type:"text",value:e.value.replace(/\r?\n|\r/g," ")};t.patch(e,i);const n={type:"element",tagName:"code",properties:{},children:[i]};return t.patch(e,n),t.applyData(e,n)}function Ghe(t,e){const i=String(e.identifier).toUpperCase(),n=t.definitionById.get(i);if(!n)return mN(t,e);const r={href:Eh(n.url||"")};n.title!==null&&n.title!==void 0&&(r.title=n.title);const s={type:"element",tagName:"a",properties:r,children:t.all(e)};return t.patch(e,s),t.applyData(e,s)}function Khe(t,e){const i={href:Eh(e.url)};e.title!==null&&e.title!==void 0&&(i.title=e.title);const n={type:"element",tagName:"a",properties:i,children:t.all(e)};return t.patch(e,n),t.applyData(e,n)}function Jhe(t,e,i){const n=t.all(e),r=i?eue(i):gN(e),s={},o=[];if(typeof e.checked=="boolean"){const d=n[0];let p;d&&d.type==="element"&&d.tagName==="p"?p=d:(p={type:"element",tagName:"p",properties:{},children:[]},n.unshift(p)),p.children.length>0&&p.children.unshift({type:"text",value:" "}),p.children.unshift({type:"element",tagName:"input",properties:{type:"checkbox",checked:e.checked,disabled:!0},children:[]}),s.className=["task-list-item"]}let l=-1;for(;++l1}function tue(t,e){const i={},n=t.all(e);let r=-1;for(typeof e.start=="number"&&e.start!==1&&(i.start=e.start);++r0){const o={type:"element",tagName:"tbody",properties:{},children:t.wrap(i,!0)},l=Zw(e.children[1]),c=Fz(e.children[e.children.length-1]);l&&c&&(o.position={start:l,end:c}),r.push(o)}const s={type:"element",tagName:"table",properties:{},children:t.wrap(r,!0)};return t.patch(e,s),t.applyData(e,s)}function oue(t,e,i){const n=i?i.children:void 0,s=(n?n.indexOf(e):1)===0?"th":"td",o=i&&i.type==="table"?i.align:void 0,l=o?o.length:e.children.length;let c=-1;const u=[];for(;++c0,!0),n[0]),r=n.index+n[0].length,n=i.exec(e);return s.push(DQ(e.slice(r),r>0,!1)),s.join("")}function DQ(t,e,i){let n=0,r=t.length;if(e){let s=t.codePointAt(n);for(;s===QQ||s===LQ;)n++,s=t.codePointAt(n)}if(i){let s=t.codePointAt(r-1);for(;s===QQ||s===LQ;)r--,s=t.codePointAt(r-1)}return r>n?t.slice(n,r):""}function cue(t,e){const i={type:"text",value:lue(String(e.value))};return t.patch(e,i),t.applyData(e,i)}function hue(t,e){const i={type:"element",tagName:"hr",properties:{},children:[]};return t.patch(e,i),t.applyData(e,i)}const uue={blockquote:jhe,break:Ihe,code:Vhe,delete:Xhe,emphasis:Zhe,footnoteReference:qhe,heading:Whe,html:Uhe,imageReference:Yhe,image:Hhe,inlineCode:Fhe,linkReference:Ghe,link:Khe,listItem:Jhe,list:tue,paragraph:iue,root:nue,strong:rue,table:sue,tableCell:aue,tableRow:oue,text:cue,thematicBreak:hue,toml:Rm,yaml:Rm,definition:Rm,footnoteDefinition:Rm};function Rm(){}const ON=-1,RO=0,wf=1,rO=2,Gw=3,Kw=4,Jw=5,eC=6,vN=7,_N=8,BQ=typeof self=="object"?self:globalThis,fue=(t,e)=>{const i=(r,s)=>(t.set(s,r),r),n=r=>{if(t.has(r))return t.get(r);const[s,o]=e[r];switch(s){case RO:case ON:return i(o,r);case wf:{const l=i([],r);for(const c of o)l.push(n(c));return l}case rO:{const l=i({},r);for(const[c,u]of o)l[n(c)]=n(u);return l}case Gw:return i(new Date(o),r);case Kw:{const{source:l,flags:c}=o;return i(new RegExp(l,c),r)}case Jw:{const l=i(new Map,r);for(const[c,u]of o)l.set(n(c),n(u));return l}case eC:{const l=i(new Set,r);for(const c of o)l.add(n(c));return l}case vN:{const{name:l,message:c}=o;return i(new BQ[l](c),r)}case _N:return i(BigInt(o),r);case"BigInt":return i(Object(BigInt(o)),r);case"ArrayBuffer":return i(new Uint8Array(o).buffer,o);case"DataView":{const{buffer:l}=new Uint8Array(o);return i(new DataView(l),o)}}return i(new BQ[s](o),r)};return n},$Q=t=>fue(new Map,t)(0),Ec="",{toString:due}={},{keys:pue}=Object,Yu=t=>{const e=typeof t;if(e!=="object"||!t)return[RO,e];const i=due.call(t).slice(8,-1);switch(i){case"Array":return[wf,Ec];case"Object":return[rO,Ec];case"Date":return[Gw,Ec];case"RegExp":return[Kw,Ec];case"Map":return[Jw,Ec];case"Set":return[eC,Ec];case"DataView":return[wf,i]}return i.includes("Array")?[wf,i]:i.includes("Error")?[vN,i]:[rO,i]},Qm=([t,e])=>t===RO&&(e==="function"||e==="symbol"),mue=(t,e,i,n)=>{const r=(o,l)=>{const c=n.push(o)-1;return i.set(l,c),c},s=o=>{if(i.has(o))return i.get(o);let[l,c]=Yu(o);switch(l){case RO:{let d=o;switch(c){case"bigint":l=_N,d=o.toString();break;case"function":case"symbol":if(t)throw new TypeError("unable to serialize "+c);d=null;break;case"undefined":return r([ON],o)}return r([l,d],o)}case wf:{if(c){let g=o;return c==="DataView"?g=new Uint8Array(o.buffer):c==="ArrayBuffer"&&(g=new Uint8Array(o)),r([c,[...g]],o)}const d=[],p=r([l,d],o);for(const g of o)d.push(s(g));return p}case rO:{if(c)switch(c){case"BigInt":return r([c,o.toString()],o);case"Boolean":case"Number":case"String":return r([c,o.valueOf()],o)}if(e&&"toJSON"in o)return s(o.toJSON());const d=[],p=r([l,d],o);for(const g of pue(o))(t||!Qm(Yu(o[g])))&&d.push([s(g),s(o[g])]);return p}case Gw:return r([l,o.toISOString()],o);case Kw:{const{source:d,flags:p}=o;return r([l,{source:d,flags:p}],o)}case Jw:{const d=[],p=r([l,d],o);for(const[g,O]of o)(t||!(Qm(Yu(g))||Qm(Yu(O))))&&d.push([s(g),s(O)]);return p}case eC:{const d=[],p=r([l,d],o);for(const g of o)(t||!Qm(Yu(g)))&&d.push(s(g));return p}}const{message:u}=o;return r([l,{name:c,message:u}],o)};return s},zQ=(t,{json:e,lossy:i}={})=>{const n=[];return mue(!(e||i),!!e,new Map,n)(t),n},sO=typeof structuredClone=="function"?(t,e)=>e&&("json"in e||"lossy"in e)?$Q(zQ(t,e)):structuredClone(t):(t,e)=>$Q(zQ(t,e));function gue(t,e){const i=[{type:"text",value:"↩"}];return e>1&&i.push({type:"element",tagName:"sup",properties:{},children:[{type:"text",value:String(e)}]}),i}function Oue(t,e){return"Back to reference "+(t+1)+(e>1?"-"+e:"")}function vue(t){const e=typeof t.options.clobberPrefix=="string"?t.options.clobberPrefix:"user-content-",i=t.options.footnoteBackContent||gue,n=t.options.footnoteBackLabel||Oue,r=t.options.footnoteLabel||"Footnotes",s=t.options.footnoteLabelTagName||"h2",o=t.options.footnoteLabelProperties||{className:["sr-only"]},l=[];let c=-1;for(;++c0&&_.push({type:"text",value:" "});let k=typeof i=="string"?i:i(c,O);typeof k=="string"&&(k={type:"text",value:k}),_.push({type:"element",tagName:"a",properties:{href:"#"+e+"fnref-"+g+(O>1?"-"+O:""),dataFootnoteBackref:"",ariaLabel:typeof n=="string"?n:n(c,O),className:["data-footnote-backref"]},children:Array.isArray(k)?k:[k]})}const x=d[d.length-1];if(x&&x.type==="element"&&x.tagName==="p"){const k=x.children[x.children.length-1];k&&k.type==="text"?k.value+=" ":x.children.push({type:"text",value:" "}),x.children.push(..._)}else d.push(..._);const w={type:"element",tagName:"li",properties:{id:e+"fn-"+g},children:t.wrap(d,!0)};t.patch(u,w),l.push(w)}if(l.length!==0)return{type:"element",tagName:"section",properties:{dataFootnotes:!0,className:["footnotes"]},children:[{type:"element",tagName:s,properties:{...sO(o),id:"footnote-label"},children:[{type:"text",value:r}]},{type:"text",value:` +`;break}case-2:{o=e?" ":" ";break}case-1:{if(!e&&s)continue;o=" ";break}default:o=String.fromCharCode(r)}s=r===-2,n.push(o)}return n.join("")}function Lhe(t){const n={constructs:Ile([Mhe,...(t||{}).extensions||[]]),content:s(Hle),defined:[],document:s(Gle),flow:s(mhe),lazy:{},string:s(vhe),text:s(_he)};return n;function s(r){return o;function o(l){return Phe(n,r,l)}}}function Dhe(t){for(;!az(t););return t}const PQ=/[\0\t\n\r]/g;function Bhe(){let t=1,e="",i=!0,n;return s;function s(r,o,l){const c=[];let u,d,p,g,O;for(r=e+(typeof r=="string"?r.toString():new TextDecoder(o||void 0).decode(r)),p=0,e="",i&&(r.charCodeAt(0)===65279&&p++,i=void 0);p0){const In=De.tokenStack[De.tokenStack.length-1];(In[1]||RQ).call(De,void 0,In[0])}for(ge.position={start:ca(oe.length>0?oe[0][1].start:{line:1,column:1,offset:0}),end:ca(oe.length>0?oe[oe.length-2][1].end:{line:1,column:1,offset:0})},ht=-1;++ht0&&(n.className=["language-"+s[0]]);let r={type:"element",tagName:"code",properties:n,children:[{type:"text",value:i}]};return e.meta&&(r.data={meta:e.meta}),t.patch(e,r),r=t.applyData(e,r),r={type:"element",tagName:"pre",properties:{},children:[r]},t.patch(e,r),r}function Uhe(t,e){const i={type:"element",tagName:"del",properties:{},children:t.all(e)};return t.patch(e,i),t.applyData(e,i)}function Yhe(t,e){const i={type:"element",tagName:"em",properties:{},children:t.all(e)};return t.patch(e,i),t.applyData(e,i)}function Hhe(t,e){const i=typeof t.options.clobberPrefix=="string"?t.options.clobberPrefix:"user-content-",n=String(e.identifier).toUpperCase(),s=Eh(n.toLowerCase()),r=t.footnoteOrder.indexOf(n);let o,l=t.footnoteCounts.get(n);l===void 0?(l=0,t.footnoteOrder.push(n),o=t.footnoteOrder.length):o=r+1,l+=1,t.footnoteCounts.set(n,l);const c={type:"element",tagName:"a",properties:{href:"#"+i+"fn-"+s,id:i+"fnref-"+s+(l>1?"-"+l:""),dataFootnoteRef:!0,ariaDescribedBy:["footnote-label"]},children:[{type:"text",value:String(o)}]};t.patch(e,c);const u={type:"element",tagName:"sup",properties:{},children:[c]};return t.patch(e,u),t.applyData(e,u)}function Fhe(t,e){const i={type:"element",tagName:"h"+e.depth,properties:{},children:t.all(e)};return t.patch(e,i),t.applyData(e,i)}function Ghe(t,e){if(t.options.allowDangerousHtml){const i={type:"raw",value:e.value};return t.patch(e,i),t.applyData(e,i)}}function mz(t,e){const i=e.referenceType;let n="]";if(i==="collapsed"?n+="[]":i==="full"&&(n+="["+(e.label||e.identifier)+"]"),e.type==="imageReference")return[{type:"text",value:"!["+e.alt+n}];const s=t.all(e),r=s[0];r&&r.type==="text"?r.value="["+r.value:s.unshift({type:"text",value:"["});const o=s[s.length-1];return o&&o.type==="text"?o.value+=n:s.push({type:"text",value:n}),s}function Khe(t,e){const i=String(e.identifier).toUpperCase(),n=t.definitionById.get(i);if(!n)return mz(t,e);const s={src:Eh(n.url||""),alt:e.alt};n.title!==null&&n.title!==void 0&&(s.title=n.title);const r={type:"element",tagName:"img",properties:s,children:[]};return t.patch(e,r),t.applyData(e,r)}function Jhe(t,e){const i={src:Eh(e.url)};e.alt!==null&&e.alt!==void 0&&(i.alt=e.alt),e.title!==null&&e.title!==void 0&&(i.title=e.title);const n={type:"element",tagName:"img",properties:i,children:[]};return t.patch(e,n),t.applyData(e,n)}function eue(t,e){const i={type:"text",value:e.value.replace(/\r?\n|\r/g," ")};t.patch(e,i);const n={type:"element",tagName:"code",properties:{},children:[i]};return t.patch(e,n),t.applyData(e,n)}function tue(t,e){const i=String(e.identifier).toUpperCase(),n=t.definitionById.get(i);if(!n)return mz(t,e);const s={href:Eh(n.url||"")};n.title!==null&&n.title!==void 0&&(s.title=n.title);const r={type:"element",tagName:"a",properties:s,children:t.all(e)};return t.patch(e,r),t.applyData(e,r)}function iue(t,e){const i={href:Eh(e.url)};e.title!==null&&e.title!==void 0&&(i.title=e.title);const n={type:"element",tagName:"a",properties:i,children:t.all(e)};return t.patch(e,n),t.applyData(e,n)}function nue(t,e,i){const n=t.all(e),s=i?sue(i):gz(e),r={},o=[];if(typeof e.checked=="boolean"){const d=n[0];let p;d&&d.type==="element"&&d.tagName==="p"?p=d:(p={type:"element",tagName:"p",properties:{},children:[]},n.unshift(p)),p.children.length>0&&p.children.unshift({type:"text",value:" "}),p.children.unshift({type:"element",tagName:"input",properties:{type:"checkbox",checked:e.checked,disabled:!0},children:[]}),r.className=["task-list-item"]}let l=-1;for(;++l1}function rue(t,e){const i={},n=t.all(e);let s=-1;for(typeof e.start=="number"&&e.start!==1&&(i.start=e.start);++s0){const o={type:"element",tagName:"tbody",properties:{},children:t.wrap(i,!0)},l=Zw(e.children[1]),c=FN(e.children[e.children.length-1]);l&&c&&(o.position={start:l,end:c}),s.push(o)}const r={type:"element",tagName:"table",properties:{},children:t.wrap(s,!0)};return t.patch(e,r),t.applyData(e,r)}function hue(t,e,i){const n=i?i.children:void 0,r=(n?n.indexOf(e):1)===0?"th":"td",o=i&&i.type==="table"?i.align:void 0,l=o?o.length:e.children.length;let c=-1;const u=[];for(;++c0,!0),n[0]),s=n.index+n[0].length,n=i.exec(e);return r.push(DQ(e.slice(s),s>0,!1)),r.join("")}function DQ(t,e,i){let n=0,s=t.length;if(e){let r=t.codePointAt(n);for(;r===QQ||r===LQ;)n++,r=t.codePointAt(n)}if(i){let r=t.codePointAt(s-1);for(;r===QQ||r===LQ;)s--,r=t.codePointAt(s-1)}return s>n?t.slice(n,s):""}function due(t,e){const i={type:"text",value:fue(String(e.value))};return t.patch(e,i),t.applyData(e,i)}function pue(t,e){const i={type:"element",tagName:"hr",properties:{},children:[]};return t.patch(e,i),t.applyData(e,i)}const mue={blockquote:Zhe,break:qhe,code:Whe,delete:Uhe,emphasis:Yhe,footnoteReference:Hhe,heading:Fhe,html:Ghe,imageReference:Khe,image:Jhe,inlineCode:eue,linkReference:tue,link:iue,listItem:nue,list:rue,paragraph:oue,root:aue,strong:lue,table:cue,tableCell:uue,tableRow:hue,text:due,thematicBreak:pue,toml:Rm,yaml:Rm,definition:Rm,footnoteDefinition:Rm};function Rm(){}const Oz=-1,RO=0,wf=1,sO=2,Gw=3,Kw=4,Jw=5,eC=6,vz=7,_z=8,BQ=typeof self=="object"?self:globalThis,gue=(t,e)=>{const i=(s,r)=>(t.set(r,s),s),n=s=>{if(t.has(s))return t.get(s);const[r,o]=e[s];switch(r){case RO:case Oz:return i(o,s);case wf:{const l=i([],s);for(const c of o)l.push(n(c));return l}case sO:{const l=i({},s);for(const[c,u]of o)l[n(c)]=n(u);return l}case Gw:return i(new Date(o),s);case Kw:{const{source:l,flags:c}=o;return i(new RegExp(l,c),s)}case Jw:{const l=i(new Map,s);for(const[c,u]of o)l.set(n(c),n(u));return l}case eC:{const l=i(new Set,s);for(const c of o)l.add(n(c));return l}case vz:{const{name:l,message:c}=o;return i(new BQ[l](c),s)}case _z:return i(BigInt(o),s);case"BigInt":return i(Object(BigInt(o)),s);case"ArrayBuffer":return i(new Uint8Array(o).buffer,o);case"DataView":{const{buffer:l}=new Uint8Array(o);return i(new DataView(l),o)}}return i(new BQ[r](o),s)};return n},$Q=t=>gue(new Map,t)(0),Ec="",{toString:Oue}={},{keys:vue}=Object,Yu=t=>{const e=typeof t;if(e!=="object"||!t)return[RO,e];const i=Oue.call(t).slice(8,-1);switch(i){case"Array":return[wf,Ec];case"Object":return[sO,Ec];case"Date":return[Gw,Ec];case"RegExp":return[Kw,Ec];case"Map":return[Jw,Ec];case"Set":return[eC,Ec];case"DataView":return[wf,i]}return i.includes("Array")?[wf,i]:i.includes("Error")?[vz,i]:[sO,i]},Qm=([t,e])=>t===RO&&(e==="function"||e==="symbol"),_ue=(t,e,i,n)=>{const s=(o,l)=>{const c=n.push(o)-1;return i.set(l,c),c},r=o=>{if(i.has(o))return i.get(o);let[l,c]=Yu(o);switch(l){case RO:{let d=o;switch(c){case"bigint":l=_z,d=o.toString();break;case"function":case"symbol":if(t)throw new TypeError("unable to serialize "+c);d=null;break;case"undefined":return s([Oz],o)}return s([l,d],o)}case wf:{if(c){let g=o;return c==="DataView"?g=new Uint8Array(o.buffer):c==="ArrayBuffer"&&(g=new Uint8Array(o)),s([c,[...g]],o)}const d=[],p=s([l,d],o);for(const g of o)d.push(r(g));return p}case sO:{if(c)switch(c){case"BigInt":return s([c,o.toString()],o);case"Boolean":case"Number":case"String":return s([c,o.valueOf()],o)}if(e&&"toJSON"in o)return r(o.toJSON());const d=[],p=s([l,d],o);for(const g of vue(o))(t||!Qm(Yu(o[g])))&&d.push([r(g),r(o[g])]);return p}case Gw:return s([l,o.toISOString()],o);case Kw:{const{source:d,flags:p}=o;return s([l,{source:d,flags:p}],o)}case Jw:{const d=[],p=s([l,d],o);for(const[g,O]of o)(t||!(Qm(Yu(g))||Qm(Yu(O))))&&d.push([r(g),r(O)]);return p}case eC:{const d=[],p=s([l,d],o);for(const g of o)(t||!Qm(Yu(g)))&&d.push(r(g));return p}}const{message:u}=o;return s([l,{name:c,message:u}],o)};return r},NQ=(t,{json:e,lossy:i}={})=>{const n=[];return _ue(!(e||i),!!e,new Map,n)(t),n},rO=typeof structuredClone=="function"?(t,e)=>e&&("json"in e||"lossy"in e)?$Q(NQ(t,e)):structuredClone(t):(t,e)=>$Q(NQ(t,e));function yue(t,e){const i=[{type:"text",value:"↩"}];return e>1&&i.push({type:"element",tagName:"sup",properties:{},children:[{type:"text",value:String(e)}]}),i}function bue(t,e){return"Back to reference "+(t+1)+(e>1?"-"+e:"")}function Sue(t){const e=typeof t.options.clobberPrefix=="string"?t.options.clobberPrefix:"user-content-",i=t.options.footnoteBackContent||yue,n=t.options.footnoteBackLabel||bue,s=t.options.footnoteLabel||"Footnotes",r=t.options.footnoteLabelTagName||"h2",o=t.options.footnoteLabelProperties||{className:["sr-only"]},l=[];let c=-1;for(;++c0&&_.push({type:"text",value:" "});let k=typeof i=="string"?i:i(c,O);typeof k=="string"&&(k={type:"text",value:k}),_.push({type:"element",tagName:"a",properties:{href:"#"+e+"fnref-"+g+(O>1?"-"+O:""),dataFootnoteBackref:"",ariaLabel:typeof n=="string"?n:n(c,O),className:["data-footnote-backref"]},children:Array.isArray(k)?k:[k]})}const x=d[d.length-1];if(x&&x.type==="element"&&x.tagName==="p"){const k=x.children[x.children.length-1];k&&k.type==="text"?k.value+=" ":x.children.push({type:"text",value:" "}),x.children.push(..._)}else d.push(..._);const w={type:"element",tagName:"li",properties:{id:e+"fn-"+g},children:t.wrap(d,!0)};t.patch(u,w),l.push(w)}if(l.length!==0)return{type:"element",tagName:"section",properties:{dataFootnotes:!0,className:["footnotes"]},children:[{type:"element",tagName:r,properties:{...rO(o),id:"footnote-label"},children:[{type:"text",value:s}]},{type:"text",value:` `},{type:"element",tagName:"ol",properties:{},children:t.wrap(l,!0)},{type:"text",value:` -`}]}}const yN=(function(t){if(t==null)return Sue;if(typeof t=="function")return QO(t);if(typeof t=="object")return Array.isArray(t)?_ue(t):yue(t);if(typeof t=="string")return bue(t);throw new Error("Expected function, string, or object as test")});function _ue(t){const e=[];let i=-1;for(;++i":""))+")"})}return g;function g(){let O=bN,_,b,x;if((!e||s(c,u,d[d.length-1]||void 0))&&(O=Tue(i(c,d)),O[0]===NQ))return O;if("children"in c&&c.children){const w=c;if(w.children&&O[0]!==Cue)for(b=(n?w.children.length:-1)+o,x=d.concat(w);b>-1&&b":""))+")"})}return g;function g(){let O=bz,_,b,x;if((!e||r(c,u,d[d.length-1]||void 0))&&(O=Pue(i(c,d)),O[0]===zQ))return O;if("children"in c&&c.children){const w=c;if(w.children&&O[0]!==Eue)for(b=(n?w.children.length:-1)+o,x=d.concat(w);b>-1&&b0&&i.push({type:"text",value:` -`}),i}function jQ(t){let e=0,i=t.charCodeAt(e);for(;i===9||i===32;)e++,i=t.charCodeAt(e);return t.slice(e)}function IQ(t,e){const i=Eue(t,e),n=i.one(t,void 0),r=vue(i),s=Array.isArray(n)?{type:"root",children:n}:n||{type:"root",children:[]};return r&&s.children.push({type:"text",value:` -`},r),s}function Lue(t,e){return t&&"run"in t?async function(i,n){const r=IQ(i,{file:n,...e});await t.run(r,n)}:function(i,n){return IQ(i,{file:n,...t||e})}}function VQ(t){if(t)throw t}var h1,XQ;function Due(){if(XQ)return h1;XQ=1;var t=Object.prototype.hasOwnProperty,e=Object.prototype.toString,i=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=function(u){return typeof Array.isArray=="function"?Array.isArray(u):e.call(u)==="[object Array]"},s=function(u){if(!u||e.call(u)!=="[object Object]")return!1;var d=t.call(u,"constructor"),p=u.constructor&&u.constructor.prototype&&t.call(u.constructor.prototype,"isPrototypeOf");if(u.constructor&&!d&&!p)return!1;var g;for(g in u);return typeof g>"u"||t.call(u,g)},o=function(u,d){i&&d.name==="__proto__"?i(u,d.name,{enumerable:!0,configurable:!0,value:d.newValue,writable:!0}):u[d.name]=d.newValue},l=function(u,d){if(d==="__proto__")if(t.call(u,d)){if(n)return n(u,d).value}else return;return u[d]};return h1=function c(){var u,d,p,g,O,_,b=arguments[0],x=1,w=arguments.length,k=!1;for(typeof b=="boolean"&&(k=b,b=arguments[1]||{},x=2),(b==null||typeof b!="object"&&typeof b!="function")&&(b={});xo.length;let c;l&&o.push(r);try{c=t.apply(this,o)}catch(u){const d=u;if(l&&i)throw d;return r(d)}l||(c&&c.then&&typeof c.then=="function"?c.then(s,r):c instanceof Error?r(c):s(c))}function r(o,...l){i||(i=!0,e(o,...l))}function s(o){r(null,o)}}const ps={basename:Nue,dirname:jue,extname:Iue,join:Vue,sep:"/"};function Nue(t,e){if(e!==void 0&&typeof e!="string")throw new TypeError('"ext" argument must be a string');kd(t);let i=0,n=-1,r=t.length,s;if(e===void 0||e.length===0||e.length>t.length){for(;r--;)if(t.codePointAt(r)===47){if(s){i=r+1;break}}else n<0&&(s=!0,n=r+1);return n<0?"":t.slice(i,n)}if(e===t)return"";let o=-1,l=e.length-1;for(;r--;)if(t.codePointAt(r)===47){if(s){i=r+1;break}}else o<0&&(s=!0,o=r+1),l>-1&&(t.codePointAt(r)===e.codePointAt(l--)?l<0&&(n=r):(l=-1,n=o));return i===n?n=o:n<0&&(n=t.length),t.slice(i,n)}function jue(t){if(kd(t),t.length===0)return".";let e=-1,i=t.length,n;for(;--i;)if(t.codePointAt(i)===47){if(n){e=i;break}}else n||(n=!0);return e<0?t.codePointAt(0)===47?"/":".":e===1&&t.codePointAt(0)===47?"//":t.slice(0,e)}function Iue(t){kd(t);let e=t.length,i=-1,n=0,r=-1,s=0,o;for(;e--;){const l=t.codePointAt(e);if(l===47){if(o){n=e+1;break}continue}i<0&&(o=!0,i=e+1),l===46?r<0?r=e:s!==1&&(s=1):r>-1&&(s=-1)}return r<0||i<0||s===0||s===1&&r===i-1&&r===n+1?"":t.slice(r,i)}function Vue(...t){let e=-1,i;for(;++e0&&t.codePointAt(t.length-1)===47&&(i+="/"),e?"/"+i:i}function Zue(t,e){let i="",n=0,r=-1,s=0,o=-1,l,c;for(;++o<=t.length;){if(o2){if(c=i.lastIndexOf("/"),c!==i.length-1){c<0?(i="",n=0):(i=i.slice(0,c),n=i.length-1-i.lastIndexOf("/")),r=o,s=0;continue}}else if(i.length>0){i="",n=0,r=o,s=0;continue}}e&&(i=i.length>0?i+"/..":"..",n=2)}else i.length>0?i+="/"+t.slice(r+1,o):i=t.slice(r+1,o),n=o-r-1;r=o,s=0}else l===46&&s>-1?s++:s=-1}return i}function kd(t){if(typeof t!="string")throw new TypeError("Path must be a string. Received "+JSON.stringify(t))}const que={cwd:Wue};function Wue(){return"/"}function qS(t){return!!(t!==null&&typeof t=="object"&&"href"in t&&t.href&&"protocol"in t&&t.protocol&&t.auth===void 0)}function Uue(t){if(typeof t=="string")t=new URL(t);else if(!qS(t)){const e=new TypeError('The "path" argument must be of type string or an instance of URL. Received `'+t+"`");throw e.code="ERR_INVALID_ARG_TYPE",e}if(t.protocol!=="file:"){const e=new TypeError("The URL must be of scheme file");throw e.code="ERR_INVALID_URL_SCHEME",e}return Yue(t)}function Yue(t){if(t.hostname!==""){const n=new TypeError('File URL host must be "localhost" or empty on darwin');throw n.code="ERR_INVALID_FILE_URL_HOST",n}const e=t.pathname;let i=-1;for(;++i0){let[O,..._]=d;const b=n[g][1];ZS(b)&&ZS(O)&&(O=u1(!0,b,O)),n[g]=[u,O,..._]}}}}const Kue=new tC().freeze();function m1(t,e){if(typeof e!="function")throw new TypeError("Cannot `"+t+"` without `parser`")}function g1(t,e){if(typeof e!="function")throw new TypeError("Cannot `"+t+"` without `compiler`")}function O1(t,e){if(e)throw new Error("Cannot call `"+t+"` on a frozen processor.\nCreate a new processor first, by calling it: use `processor()` instead of `processor`.")}function qQ(t){if(!ZS(t)||typeof t.type!="string")throw new TypeError("Expected node, got `"+t+"`")}function WQ(t,e,i){if(!i)throw new Error("`"+t+"` finished async. Use `"+e+"` instead")}function Lm(t){return Jue(t)?t:new xN(t)}function Jue(t){return!!(t&&typeof t=="object"&&"message"in t&&"messages"in t)}function efe(t){return typeof t=="string"||tfe(t)}function tfe(t){return!!(t&&typeof t=="object"&&"byteLength"in t&&"byteOffset"in t)}const ife="https://github.com/remarkjs/react-markdown/blob/main/changelog.md",UQ=[],YQ={allowDangerousHtml:!0},nfe=/^(https?|ircs?|mailto|xmpp)$/i,rfe=[{from:"astPlugins",id:"remove-buggy-html-in-markdown-parser"},{from:"allowDangerousHtml",id:"remove-buggy-html-in-markdown-parser"},{from:"allowNode",id:"replace-allownode-allowedtypes-and-disallowedtypes",to:"allowElement"},{from:"allowedTypes",id:"replace-allownode-allowedtypes-and-disallowedtypes",to:"allowedElements"},{from:"className",id:"remove-classname"},{from:"disallowedTypes",id:"replace-allownode-allowedtypes-and-disallowedtypes",to:"disallowedElements"},{from:"escapeHtml",id:"remove-buggy-html-in-markdown-parser"},{from:"includeElementIndex",id:"#remove-includeelementindex"},{from:"includeNodeIndex",id:"change-includenodeindex-to-includeelementindex"},{from:"linkTarget",id:"remove-linktarget"},{from:"plugins",id:"change-plugins-to-remarkplugins",to:"remarkPlugins"},{from:"rawSourcePos",id:"#remove-rawsourcepos"},{from:"renderers",id:"change-renderers-to-components",to:"components"},{from:"source",id:"change-source-to-children",to:"children"},{from:"sourcePos",id:"#remove-sourcepos"},{from:"transformImageUri",id:"#add-urltransform",to:"urlTransform"},{from:"transformLinkUri",id:"#add-urltransform",to:"urlTransform"}];function wN(t){const e=sfe(t),i=ofe(t);return afe(e.runSync(e.parse(i),i),t)}function sfe(t){const e=t.rehypePlugins||UQ,i=t.remarkPlugins||UQ,n=t.remarkRehypeOptions?{...t.remarkRehypeOptions,...YQ}:YQ;return Kue().use(Nhe).use(i).use(Lue,n).use(e)}function ofe(t){const e=t.children||"",i=new xN;return typeof e=="string"&&(i.value=e),i}function afe(t,e){const i=e.allowedElements,n=e.allowElement,r=e.components,s=e.disallowedElements,o=e.skipHtml,l=e.unwrapDisallowed,c=e.urlTransform||lfe;for(const d of rfe)Object.hasOwn(e,d.from)&&(""+d.from+(d.to?"use `"+d.to+"` instead":"remove it")+ife+d.id,void 0);return SN(t,u),vle(t,{Fragment:S.Fragment,components:r,ignoreInvalidStyle:!0,jsx:S.jsx,jsxs:S.jsxs,passKeys:!0,passNode:!0});function u(d,p,g){if(d.type==="raw"&&g&&typeof p=="number")return o?g.children.splice(p,1):g.children[p]={type:"text",value:d.value},p;if(d.type==="element"){let O;for(O in a1)if(Object.hasOwn(a1,O)&&Object.hasOwn(d.properties,O)){const _=d.properties[O],b=a1[O];(b===null||b.includes(d.tagName))&&(d.properties[O]=c(String(_||""),O,d))}}if(d.type==="element"){let O=i?!i.includes(d.tagName):s?s.includes(d.tagName):!1;if(!O&&n&&typeof p=="number"&&(O=!n(d,p,g)),O&&g&&typeof p=="number")return l&&d.children?g.children.splice(p,1,...d.children):g.children.splice(p,1),p}}}function lfe(t){const e=t.indexOf(":"),i=t.indexOf("?"),n=t.indexOf("#"),r=t.indexOf("/");return e===-1||r!==-1&&e>r||i!==-1&&e>i||n!==-1&&e>n||nfe.test(t.slice(0,e))?t:""}function cfe({option:t,selected:e,variant:i,onSelect:n,onFocus:r,onBlur:s}){var p;const[o,l]=Z.useState(!1),c=t.description.split(` -`),u=c.length>1||t.description.length>120,d=o?t.description:((p=c[0])==null?void 0:p.slice(0,120))??"";return S.jsxs("button",{type:"button",onClick:n,onMouseEnter:r,onMouseLeave:s,onFocus:r,onBlur:s,className:Fe("flex items-start gap-3 border p-3 text-left transition-colors w-full",e?"border-simple-accent bg-simple-accent/10":"border-border bg-card hover:border-muted-foreground/40"),children:[S.jsx("span",{className:"mt-0.5 shrink-0",children:i==="radio"?S.jsx("span",{className:Fe("flex h-4 w-4 items-center justify-center border",e?"border-simple-accent":"border-muted-foreground"),style:{borderRadius:"50%"},children:e&&S.jsx("span",{className:"h-2 w-2 bg-simple-accent",style:{borderRadius:"50%"}})}):S.jsx("span",{className:Fe("flex h-4 w-4 items-center justify-center border",e?"border-simple-accent bg-simple-accent/20":"border-muted-foreground"),children:e&&S.jsx("svg",{className:"h-3 w-3 text-simple-accent",viewBox:"0 0 12 12",fill:"none",stroke:"currentColor",strokeWidth:"2","aria-hidden":"true",children:S.jsx("path",{d:"M2 6l3 3 5-5",strokeLinecap:"round",strokeLinejoin:"round"})})})}),S.jsxs("div",{className:"flex-1 min-w-0",children:[S.jsx("p",{className:"text-sm font-medium text-foreground leading-tight",children:t.label}),S.jsxs("p",{className:"text-xs text-muted-foreground mt-0.5 leading-snug",children:[d,!o&&u&&"..."]}),u&&S.jsx("span",{role:"button",tabIndex:0,onClick:g=>{g.stopPropagation(),l(O=>!O)},onKeyDown:g=>{(g.key==="Enter"||g.key===" ")&&(g.stopPropagation(),g.preventDefault(),l(O=>!O))},className:"text-[10px] text-simple-accent mt-1 inline-block cursor-pointer hover:underline",children:o?"Show less":"Show more"})]})]})}function hfe({markdown:t,visible:e}){return e?S.jsx("div",{className:"border border-border bg-card p-4 text-xs font-mono text-foreground/80 leading-relaxed overflow-auto max-h-64 lg:absolute lg:right-0 lg:top-0 lg:w-80 lg:translate-x-[calc(100%+0.75rem)] lg:z-10 lg:shadow-lg mt-2 lg:mt-0",children:S.jsx(wN,{children:t})}):null}function ufe({question:t,onSubmit:e}){const[i,n]=Z.useState(null),[r,s]=Z.useState(new Set),[o,l]=Z.useState(""),[c,u]=Z.useState(null),d=Z.useRef(null);Z.useEffect(()=>{const k=d.current;k&&(k.style.height="auto",k.style.height=`${k.scrollHeight}px`)},[o]),Z.useEffect(()=>{n(null),s(new Set),l(""),u(null)},[t.id]);function p(k){t.multiSelect?s(T=>{const A=new Set(T);return A.has(k)?A.delete(k):A.add(k),A}):n(k)}function g(k){l(k),!t.multiSelect&&k.length>0&&n(null)}function O(k){k.key==="Enter"&&!k.shiftKey&&(k.preventDefault(),_())}function _(){if(b)if(t.multiSelect){const k=t.options.filter(T=>r.has(T.id)).map(T=>T.label);e({questionId:t.id,header:t.header,selectedOptionIds:Array.from(r),selectedLabels:k,freeText:o.trim()})}else if(i){const k=t.options.find(T=>T.id===i);e({questionId:t.id,header:t.header,selectedOptionIds:[i],selectedLabels:k?[k.label]:[],freeText:""})}else e({questionId:t.id,header:t.header,selectedOptionIds:[],selectedLabels:[],freeText:o.trim()})}const b=t.multiSelect?r.size>0||o.trim().length>0:i!==null||o.trim().length>0,x=c?t.options.find(k=>k.id===c):null,w=(x==null?void 0:x.markdown)??"";return S.jsxs("div",{className:"border border-border bg-card p-4 relative",children:[S.jsx("span",{className:"inline-block bg-simple-accent/20 border border-simple-accent/40 px-2 py-0.5 text-[10px] font-mono uppercase tracking-wider text-simple-accent mb-2",children:t.header}),S.jsx("div",{className:"text-sm text-foreground leading-relaxed mb-4 prose prose-invert prose-sm max-w-none [&_a]:text-simple-accent [&_code]:bg-muted [&_code]:px-1 [&_code]:py-0.5 [&_code]:text-xs",children:S.jsx(wN,{children:t.question})}),t.options.length>0&&S.jsxs("div",{className:"relative",children:[S.jsx("div",{className:"grid gap-2 mb-3",children:t.options.map(k=>{const T=t.multiSelect?r.has(k.id):i===k.id;return S.jsx(cfe,{option:k,selected:T,variant:t.multiSelect?"checkbox":"radio",onSelect:()=>p(k.id),onFocus:()=>u(k.id),onBlur:()=>u(null)},k.id)})}),S.jsx(hfe,{markdown:w,visible:!!w})]}),S.jsx("div",{className:"border border-border bg-muted/10 px-3 py-2 mb-3",children:S.jsx("textarea",{ref:d,value:o,onChange:k=>g(k.target.value),onKeyDown:O,rows:1,className:"w-full resize-none overflow-hidden bg-transparent font-mono text-xs text-foreground outline-none leading-relaxed"})}),S.jsx("button",{type:"button",onClick:_,disabled:!b,className:Fe("flex items-center gap-1.5 border px-3 py-1.5 text-xs font-mono uppercase tracking-widest transition-colors",b?"border-simple-accent bg-simple-accent/10 text-simple-accent hover:bg-simple-accent hover:text-background":"border-border text-muted-foreground cursor-not-allowed"),children:"Submit"})]})}function ffe({answer:t}){const e=t.selectedLabels.length>0?t.selectedLabels.join(", "):t.freeText.slice(0,80)+(t.freeText.length>80?"...":"");return S.jsx(vo.div,{initial:{opacity:0,height:0},animate:{opacity:1,height:"auto"},transition:{duration:.2,ease:"easeInOut"},className:"overflow-hidden",children:S.jsxs("div",{className:"flex items-center gap-2 px-4 py-2 border-b border-border/40 text-xs text-muted-foreground",children:[S.jsx("svg",{className:"h-3.5 w-3.5 text-success shrink-0",viewBox:"0 0 16 16",fill:"currentColor","aria-hidden":"true",children:S.jsx("path",{d:"M6.5 12.5l-4-4 1.4-1.4L6.5 9.7l5.6-5.6 1.4 1.4z"})}),S.jsx("span",{className:"font-mono text-simple-accent shrink-0",children:t.header}),S.jsx("span",{className:"text-foreground/70 truncate",children:e})]})})}function dfe(){return S.jsxs("div",{className:"border border-border bg-card p-4 animate-pulse",children:[S.jsx("div",{className:"h-3 w-16 bg-muted mb-3"}),S.jsx("div",{className:"h-4 w-3/4 bg-muted mb-2"}),S.jsx("div",{className:"h-4 w-1/2 bg-muted mb-4"}),S.jsxs("div",{className:"flex gap-2",children:[S.jsx("div",{className:"h-10 flex-1 bg-muted"}),S.jsx("div",{className:"h-10 flex-1 bg-muted"})]}),S.jsxs("div",{className:"flex items-center gap-2 mt-3",children:[S.jsx("svg",{className:"h-3.5 w-3.5 text-simple-accent animate-spin",viewBox:"0 0 16 16",fill:"none",stroke:"currentColor",strokeWidth:"2","aria-hidden":"true",children:S.jsx("circle",{cx:"8",cy:"8",r:"6",strokeDasharray:"28",strokeDashoffset:"8"})}),S.jsx("span",{className:"text-[10px] text-muted-foreground",children:"Loading question..."})]})]})}function pfe({onAskMore:t,onDoneExecute:e,disabled:i}){return S.jsxs("div",{className:"sticky bottom-0 z-10 flex items-center justify-end gap-3 border-t border-border bg-background/95 backdrop-blur px-4 py-3",children:[S.jsx("button",{type:"button",onClick:t,disabled:i,className:"border border-simple-accent/50 px-4 py-2 text-xs font-mono uppercase tracking-widest text-simple-accent transition-colors hover:bg-simple-accent/10 disabled:opacity-50",children:"Ask me more"}),S.jsx("button",{type:"button",onClick:e,disabled:i,className:"bg-simple-accent/15 border border-simple-accent px-4 py-2 text-xs font-mono uppercase tracking-widest text-simple-accent transition-colors hover:bg-simple-accent hover:text-background disabled:opacity-50",children:"Done, execute"})]})}function mfe({open:t,onConfirm:e,onCancel:i}){return S.jsx(xx,{children:t&&S.jsx(vo.div,{initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},transition:{duration:.15},className:"fixed inset-0 z-50 flex items-center justify-center bg-black/50 backdrop-blur-sm",onClick:i,children:S.jsxs(vo.div,{initial:{opacity:0,scale:.95},animate:{opacity:1,scale:1},exit:{opacity:0,scale:.95},transition:{duration:.15},className:"mx-4 w-full max-w-sm border border-border bg-card p-6",onClick:n=>n.stopPropagation(),children:[S.jsx("p",{className:"text-sm text-foreground leading-relaxed mb-6",children:"This will end discussion and start execution. Continue?"}),S.jsxs("div",{className:"flex items-center justify-end gap-3",children:[S.jsx("button",{type:"button",onClick:i,className:"border border-border px-4 py-2 text-xs font-mono uppercase tracking-widest text-muted-foreground transition-colors hover:border-muted-foreground hover:text-foreground",children:"Cancel"}),S.jsx("button",{type:"button",onClick:e,className:"bg-simple-accent/15 border border-simple-accent px-4 py-2 text-xs font-mono uppercase tracking-widest text-simple-accent transition-colors hover:bg-simple-accent hover:text-background",children:"Confirm"})]})]})})})}function gfe({answerCount:t}){return S.jsxs(vo.div,{initial:{opacity:0,y:8},animate:{opacity:1,y:0},transition:{duration:.25,ease:"easeOut"},className:"border border-border bg-card p-6 text-center",children:[S.jsx("div",{className:"flex justify-center mb-3",children:S.jsxs("svg",{className:"h-8 w-8 text-success",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2","aria-hidden":"true",children:[S.jsx("circle",{cx:"12",cy:"12",r:"10"}),S.jsx("path",{d:"M8 12l3 3 5-5",strokeLinecap:"round",strokeLinejoin:"round"})]})}),S.jsx("h3",{className:"text-sm font-medium text-foreground mb-1",children:"Discussion Complete"}),S.jsxs("p",{className:"text-xs text-muted-foreground mb-4",children:[t," ",t===1?"question":"questions"," answered"]}),S.jsxs("div",{className:"flex items-center justify-center gap-2",children:[S.jsx("svg",{className:"h-3.5 w-3.5 text-simple-accent animate-spin",viewBox:"0 0 16 16",fill:"none",stroke:"currentColor",strokeWidth:"2","aria-hidden":"true",children:S.jsx("circle",{cx:"8",cy:"8",r:"6",strokeDasharray:"28",strokeDashoffset:"8"})}),S.jsx("span",{className:"text-[10px] font-mono text-muted-foreground uppercase tracking-wider",children:"Execution queued..."})]})]})}function Ofe(){const{phase:t,currentQuestion:e,answeredQuestions:i,answerCount:n,submitAnswer:r,askMore:s,doneExecute:o,receiveQuestions:l}=oL(),{onQuestionReceivedRef:c}=Ea();Z.useEffect(()=>(c.current=x=>{l(x)},()=>{c.current=null}),[l,c]);const[u,d]=Z.useState(!1),p=Z.useRef(null);Z.useEffect(()=>{t==="active"&&p.current&&p.current.scrollIntoView({behavior:"smooth",block:"start"})},[t,e==null?void 0:e.id]);function g(){d(!0)}function O(){d(!1),o()}function _(){d(!1)}const b=t==="submitting"||t==="complete";return S.jsxs("div",{className:"flex flex-col h-full",children:[S.jsx("div",{className:"flex items-center gap-2 px-4 py-3 border-b border-border",children:S.jsxs("span",{className:"text-xs font-mono uppercase tracking-wider text-muted-foreground",children:["Discussion (",n,"/?)"]})}),S.jsx("div",{className:"flex-1 overflow-y-auto pb-20",children:S.jsxs("div",{className:"mx-auto max-w-3xl p-4 flex flex-col gap-2",children:[i.map(x=>S.jsx(ffe,{answer:x},x.questionId)),t==="active"&&e&&S.jsx("div",{ref:p,children:S.jsx(ufe,{question:e,onSubmit:r})}),t==="loading"&&S.jsx(dfe,{}),t==="complete"&&S.jsx(gfe,{answerCount:n})]})}),t!=="complete"&&S.jsx(pfe,{onAskMore:s,onDoneExecute:g,disabled:b}),S.jsx(mfe,{open:u,onConfirm:O,onCancel:_})]})}function HQ(){var i;const{lifecycleEvent:t,pendingQuestionCount:e}=Ea();return!t&&e===0?null:S.jsxs("div",{className:"flex items-center justify-between px-4 py-1.5 bg-muted/50 border-b border-border text-xs font-mono text-muted-foreground",children:[t&&S.jsxs("span",{children:["Phase ",t.phase_number,": ",t.phase_name," — ",(i=t.event_type)==null?void 0:i.replace(/-/g," "),t.step&&t.total_steps?` (Step ${t.step}/${t.total_steps})`:""]}),e>0&&S.jsxs("span",{className:"inline-flex items-center gap-1 px-1.5 py-0.5 rounded-full bg-teal-500/20 text-teal-400 text-[10px] font-semibold",children:[e," pending"]})]})}function vfe({onExecute:t}){const{phase:e,startDiscussion:i,resetDiscussion:n}=oL(),{pendingQuestionCount:r}=Ea(),s=e!=="idle";function o(l){if(l.startsWith("/maxsim:discuss-phase")){i();return}t(l)}return s?S.jsxs("div",{className:"flex flex-col gap-0 h-full",children:[S.jsx(HQ,{}),S.jsxs("div",{className:"px-4 pt-3 sm:px-6 flex items-center gap-2",children:[S.jsxs("button",{type:"button",onClick:n,className:"flex items-center gap-1.5 text-xs font-mono text-muted-foreground hover:text-foreground transition-colors",children:[S.jsx("svg",{className:"h-3 w-3",viewBox:"0 0 12 12",fill:"none",stroke:"currentColor",strokeWidth:"1.5","aria-hidden":"true",children:S.jsx("path",{d:"M8 1L3 6l5 5",strokeLinecap:"round",strokeLinejoin:"round"})}),"Back to actions"]}),r>0&&S.jsx("span",{className:"inline-flex items-center gap-1 px-1.5 py-0.5 rounded-full bg-teal-500/20 text-teal-400 text-[10px] font-semibold",children:r})]}),S.jsx("div",{className:"flex-1 min-h-0",children:S.jsx(Ofe,{})})]}):S.jsxs("div",{className:"flex flex-col gap-0 h-full",children:[S.jsx(HQ,{}),S.jsx("div",{className:"flex-1 overflow-y-auto p-4 sm:p-6",children:S.jsxs("div",{className:"mx-auto max-w-3xl flex flex-col gap-4",children:[S.jsx(jae,{}),S.jsx(Xae,{onExecute:o})]})})]})}function _fe(){return S.jsxs("div",{className:"flex flex-col gap-6",children:[S.jsxs("div",{className:"flex flex-col gap-4 border-b border-border pb-6",children:[S.jsx("div",{className:"h-2 w-32 animate-pulse bg-muted"}),S.jsx("div",{className:"h-px w-full animate-pulse bg-muted"}),S.jsxs("div",{className:"flex gap-10",children:[S.jsx("div",{className:"h-8 w-16 animate-pulse bg-muted"}),S.jsx("div",{className:"h-8 w-40 animate-pulse bg-muted"}),S.jsxs("div",{className:"ml-auto flex gap-8",children:[S.jsx("div",{className:"h-6 w-12 animate-pulse bg-muted"}),S.jsx("div",{className:"h-6 w-12 animate-pulse bg-muted"})]})]})]}),S.jsxs("div",{className:"flex flex-col",children:[S.jsxs("div",{className:"flex justify-between px-4 pb-3",children:[S.jsx("div",{className:"h-2 w-12 animate-pulse bg-muted"}),S.jsx("div",{className:"h-2 w-4 animate-pulse bg-muted"})]}),Array.from({length:6}).map((t,e)=>S.jsxs("div",{className:"border-b border-border",children:[S.jsxs("div",{className:"flex items-center gap-3 px-4 py-3",children:[S.jsx("div",{className:"h-1.5 w-1.5 animate-pulse bg-muted"}),S.jsx("div",{className:"h-3 w-6 animate-pulse bg-muted"}),S.jsx("div",{className:"h-3 w-36 animate-pulse bg-muted"})]}),S.jsx("div",{className:"h-px w-full animate-pulse bg-muted"})]},e))]})]})}function yfe({message:t,onRetry:e}){return S.jsxs("div",{className:"flex min-h-[50vh] flex-col items-center justify-center gap-4",children:[S.jsx("p",{className:"font-mono text-sm text-danger",children:t}),S.jsx("button",{type:"button",onClick:e,className:"border border-accent bg-accent/10 px-4 py-2 font-mono text-xs uppercase tracking-widest text-accent transition-colors hover:bg-accent hover:text-foreground",children:"Retry"})]})}function bfe(){const{roadmap:t,state:e,todos:i,loading:n,error:r}=Rl(),{mode:s,setMode:o,initialized:l}=r7(),[c,u]=Z.useState("overview"),[d,p]=Z.useState(null),[g,O]=Z.useState(!1),{splitMode:_,toggleSplit:b}=Bae(),x=Z.useRef(null),w=Z.useCallback(()=>{o(s==="simple"?"advanced":"simple")},[s,o]),k=l?S.jsx(zae,{mode:s,onToggle:w}):null,T=Z.useRef({view:"overview",phaseId:null}),A=Z.useCallback(($,D)=>{$!=="terminal"&&(T.current={view:$,phaseId:$==="phase"&&D?D:null}),u($),$==="phase"&&D&&p(D),O(!1)},[]),Q=Z.useRef(null),E=Z.useCallback($=>{x.current?x.current($+"\r"):Q.current=$,A("terminal")},[A]);Z.useEffect(()=>{const $=setInterval(()=>{Q.current&&x.current&&(x.current(Q.current+"\r"),Q.current=null,clearInterval($))},100);return()=>clearInterval($)},[]);const z=Z.useCallback($=>{u("phase"),p($)},[]),N=Z.useCallback(()=>{u("overview"),p(null)},[]),q=Z.useCallback(async($,D)=>{try{const X=await fetch("/api/roadmap",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({phaseNumber:$,checked:D})});X.ok||console.error("[toggle-phase]",await X.text())}catch(X){console.error("[toggle-phase]",X)}},[]),J=((t==null?void 0:t.phases)??[]).map($=>({number:$.number,name:$.name,goal:$.goal??"",dependsOn:$.depends_on?[$.depends_on]:[],planCount:$.plan_count,summaryCount:$.summary_count,diskStatus:$.disk_status,roadmapComplete:$.roadmap_complete,hasContext:$.has_context,hasResearch:$.has_research})),U=(t==null?void 0:t.current_phase)??null;function R(){if(n)return S.jsx(_fe,{});if(r)return S.jsx(yfe,{message:r,onRetry:()=>window.location.reload()});switch(c){case"overview":return S.jsxs("div",{className:"mx-auto flex max-w-4xl flex-col gap-6",children:[S.jsx(K9,{roadmap:t,state:e,todos:i}),S.jsx(iZ,{phases:J,currentPhase:U,onPhaseClick:z,onToggleComplete:q})]});case"phase":return d?S.jsx("div",{className:"mx-auto max-w-4xl",children:S.jsx(Ute,{phaseId:d,onBack:N})}):null;case"todos":return S.jsx("div",{className:"mx-auto max-w-3xl",children:S.jsx(Yte,{})});case"blockers":return S.jsx("div",{className:"mx-auto max-w-3xl",children:S.jsx(Gte,{})});case"terminal":return null;default:return null}}const B=c==="terminal",j=s==="simple";return S.jsxs(Kte,{mobileMenuOpen:g,onMobileMenuToggle:()=>O($=>!$),onMobileMenuClose:()=>O(!1),headerRight:k,simpleMode:j,sidebar:S.jsx("div",{style:{display:j?"none":"contents"},children:S.jsx(wie,{activeView:c,activePhaseId:d,onNavigate:A,logoAction:k})}),children:[l&&s===null&&S.jsx(Nae,{onChoose:o}),j&&l&&S.jsx("div",{className:"flex flex-col flex-1 min-h-0",children:S.jsx(vfe,{onExecute:E})}),S.jsxs("div",{style:{display:j?"none":"contents"},children:[S.jsx("div",{style:{display:B&&!_?"none":"block"},className:B&&_?"h-1/2 min-h-0 overflow-auto border-b border-border p-4 sm:p-6":"flex-1 overflow-y-auto p-4 sm:p-6",children:R()}),S.jsxs("div",{style:{display:B?"flex":"none"},className:`relative min-h-0 flex-col overflow-hidden ${B&&_?"h-1/2":"flex-1"}`,children:[S.jsx($ae,{splitMode:_,onToggle:b}),S.jsx(Dae,{writeInputRef:x})]})]})]})}function Sfe(){return S.jsx(Kj,{children:S.jsx(t7,{children:S.jsx(n7,{children:S.jsx(bfe,{})})})})}const CN=document.getElementById("root");if(!CN)throw new Error("Root element not found");Hj.createRoot(CN).render(S.jsx(Z.StrictMode,{children:S.jsx(Sfe,{})})); +`}),i}function jQ(t){let e=0,i=t.charCodeAt(e);for(;i===9||i===32;)e++,i=t.charCodeAt(e);return t.slice(e)}function IQ(t,e){const i=Que(t,e),n=i.one(t,void 0),s=Sue(i),r=Array.isArray(n)?{type:"root",children:n}:n||{type:"root",children:[]};return s&&r.children.push({type:"text",value:` +`},s),r}function Nue(t,e){return t&&"run"in t?async function(i,n){const s=IQ(i,{file:n,...e});await t.run(s,n)}:function(i,n){return IQ(i,{file:n,...t||e})}}function VQ(t){if(t)throw t}var h1,XQ;function zue(){if(XQ)return h1;XQ=1;var t=Object.prototype.hasOwnProperty,e=Object.prototype.toString,i=Object.defineProperty,n=Object.getOwnPropertyDescriptor,s=function(u){return typeof Array.isArray=="function"?Array.isArray(u):e.call(u)==="[object Array]"},r=function(u){if(!u||e.call(u)!=="[object Object]")return!1;var d=t.call(u,"constructor"),p=u.constructor&&u.constructor.prototype&&t.call(u.constructor.prototype,"isPrototypeOf");if(u.constructor&&!d&&!p)return!1;var g;for(g in u);return typeof g>"u"||t.call(u,g)},o=function(u,d){i&&d.name==="__proto__"?i(u,d.name,{enumerable:!0,configurable:!0,value:d.newValue,writable:!0}):u[d.name]=d.newValue},l=function(u,d){if(d==="__proto__")if(t.call(u,d)){if(n)return n(u,d).value}else return;return u[d]};return h1=function c(){var u,d,p,g,O,_,b=arguments[0],x=1,w=arguments.length,k=!1;for(typeof b=="boolean"&&(k=b,b=arguments[1]||{},x=2),(b==null||typeof b!="object"&&typeof b!="function")&&(b={});xo.length;let c;l&&o.push(s);try{c=t.apply(this,o)}catch(u){const d=u;if(l&&i)throw d;return s(d)}l||(c&&c.then&&typeof c.then=="function"?c.then(r,s):c instanceof Error?s(c):r(c))}function s(o,...l){i||(i=!0,e(o,...l))}function r(o){s(null,o)}}const pr={basename:Xue,dirname:Zue,extname:que,join:Wue,sep:"/"};function Xue(t,e){if(e!==void 0&&typeof e!="string")throw new TypeError('"ext" argument must be a string');kd(t);let i=0,n=-1,s=t.length,r;if(e===void 0||e.length===0||e.length>t.length){for(;s--;)if(t.codePointAt(s)===47){if(r){i=s+1;break}}else n<0&&(r=!0,n=s+1);return n<0?"":t.slice(i,n)}if(e===t)return"";let o=-1,l=e.length-1;for(;s--;)if(t.codePointAt(s)===47){if(r){i=s+1;break}}else o<0&&(r=!0,o=s+1),l>-1&&(t.codePointAt(s)===e.codePointAt(l--)?l<0&&(n=s):(l=-1,n=o));return i===n?n=o:n<0&&(n=t.length),t.slice(i,n)}function Zue(t){if(kd(t),t.length===0)return".";let e=-1,i=t.length,n;for(;--i;)if(t.codePointAt(i)===47){if(n){e=i;break}}else n||(n=!0);return e<0?t.codePointAt(0)===47?"/":".":e===1&&t.codePointAt(0)===47?"//":t.slice(0,e)}function que(t){kd(t);let e=t.length,i=-1,n=0,s=-1,r=0,o;for(;e--;){const l=t.codePointAt(e);if(l===47){if(o){n=e+1;break}continue}i<0&&(o=!0,i=e+1),l===46?s<0?s=e:r!==1&&(r=1):s>-1&&(r=-1)}return s<0||i<0||r===0||r===1&&s===i-1&&s===n+1?"":t.slice(s,i)}function Wue(...t){let e=-1,i;for(;++e0&&t.codePointAt(t.length-1)===47&&(i+="/"),e?"/"+i:i}function Yue(t,e){let i="",n=0,s=-1,r=0,o=-1,l,c;for(;++o<=t.length;){if(o2){if(c=i.lastIndexOf("/"),c!==i.length-1){c<0?(i="",n=0):(i=i.slice(0,c),n=i.length-1-i.lastIndexOf("/")),s=o,r=0;continue}}else if(i.length>0){i="",n=0,s=o,r=0;continue}}e&&(i=i.length>0?i+"/..":"..",n=2)}else i.length>0?i+="/"+t.slice(s+1,o):i=t.slice(s+1,o),n=o-s-1;s=o,r=0}else l===46&&r>-1?r++:r=-1}return i}function kd(t){if(typeof t!="string")throw new TypeError("Path must be a string. Received "+JSON.stringify(t))}const Hue={cwd:Fue};function Fue(){return"/"}function qS(t){return!!(t!==null&&typeof t=="object"&&"href"in t&&t.href&&"protocol"in t&&t.protocol&&t.auth===void 0)}function Gue(t){if(typeof t=="string")t=new URL(t);else if(!qS(t)){const e=new TypeError('The "path" argument must be of type string or an instance of URL. Received `'+t+"`");throw e.code="ERR_INVALID_ARG_TYPE",e}if(t.protocol!=="file:"){const e=new TypeError("The URL must be of scheme file");throw e.code="ERR_INVALID_URL_SCHEME",e}return Kue(t)}function Kue(t){if(t.hostname!==""){const n=new TypeError('File URL host must be "localhost" or empty on darwin');throw n.code="ERR_INVALID_FILE_URL_HOST",n}const e=t.pathname;let i=-1;for(;++i0){let[O,..._]=d;const b=n[g][1];ZS(b)&&ZS(O)&&(O=u1(!0,b,O)),n[g]=[u,O,..._]}}}}const ife=new tC().freeze();function m1(t,e){if(typeof e!="function")throw new TypeError("Cannot `"+t+"` without `parser`")}function g1(t,e){if(typeof e!="function")throw new TypeError("Cannot `"+t+"` without `compiler`")}function O1(t,e){if(e)throw new Error("Cannot call `"+t+"` on a frozen processor.\nCreate a new processor first, by calling it: use `processor()` instead of `processor`.")}function qQ(t){if(!ZS(t)||typeof t.type!="string")throw new TypeError("Expected node, got `"+t+"`")}function WQ(t,e,i){if(!i)throw new Error("`"+t+"` finished async. Use `"+e+"` instead")}function Lm(t){return nfe(t)?t:new xz(t)}function nfe(t){return!!(t&&typeof t=="object"&&"message"in t&&"messages"in t)}function sfe(t){return typeof t=="string"||rfe(t)}function rfe(t){return!!(t&&typeof t=="object"&&"byteLength"in t&&"byteOffset"in t)}const ofe="https://github.com/remarkjs/react-markdown/blob/main/changelog.md",UQ=[],YQ={allowDangerousHtml:!0},afe=/^(https?|ircs?|mailto|xmpp)$/i,lfe=[{from:"astPlugins",id:"remove-buggy-html-in-markdown-parser"},{from:"allowDangerousHtml",id:"remove-buggy-html-in-markdown-parser"},{from:"allowNode",id:"replace-allownode-allowedtypes-and-disallowedtypes",to:"allowElement"},{from:"allowedTypes",id:"replace-allownode-allowedtypes-and-disallowedtypes",to:"allowedElements"},{from:"className",id:"remove-classname"},{from:"disallowedTypes",id:"replace-allownode-allowedtypes-and-disallowedtypes",to:"disallowedElements"},{from:"escapeHtml",id:"remove-buggy-html-in-markdown-parser"},{from:"includeElementIndex",id:"#remove-includeelementindex"},{from:"includeNodeIndex",id:"change-includenodeindex-to-includeelementindex"},{from:"linkTarget",id:"remove-linktarget"},{from:"plugins",id:"change-plugins-to-remarkplugins",to:"remarkPlugins"},{from:"rawSourcePos",id:"#remove-rawsourcepos"},{from:"renderers",id:"change-renderers-to-components",to:"components"},{from:"source",id:"change-source-to-children",to:"children"},{from:"sourcePos",id:"#remove-sourcepos"},{from:"transformImageUri",id:"#add-urltransform",to:"urlTransform"},{from:"transformLinkUri",id:"#add-urltransform",to:"urlTransform"}];function wz(t){const e=cfe(t),i=hfe(t);return ufe(e.runSync(e.parse(i),i),t)}function cfe(t){const e=t.rehypePlugins||UQ,i=t.remarkPlugins||UQ,n=t.remarkRehypeOptions?{...t.remarkRehypeOptions,...YQ}:YQ;return ife().use(Xhe).use(i).use(Nue,n).use(e)}function hfe(t){const e=t.children||"",i=new xz;return typeof e=="string"&&(i.value=e),i}function ufe(t,e){const i=e.allowedElements,n=e.allowElement,s=e.components,r=e.disallowedElements,o=e.skipHtml,l=e.unwrapDisallowed,c=e.urlTransform||ffe;for(const d of lfe)Object.hasOwn(e,d.from)&&(""+d.from+(d.to?"use `"+d.to+"` instead":"remove it")+ofe+d.id,void 0);return Sz(t,u),Sle(t,{Fragment:S.Fragment,components:s,ignoreInvalidStyle:!0,jsx:S.jsx,jsxs:S.jsxs,passKeys:!0,passNode:!0});function u(d,p,g){if(d.type==="raw"&&g&&typeof p=="number")return o?g.children.splice(p,1):g.children[p]={type:"text",value:d.value},p;if(d.type==="element"){let O;for(O in a1)if(Object.hasOwn(a1,O)&&Object.hasOwn(d.properties,O)){const _=d.properties[O],b=a1[O];(b===null||b.includes(d.tagName))&&(d.properties[O]=c(String(_||""),O,d))}}if(d.type==="element"){let O=i?!i.includes(d.tagName):r?r.includes(d.tagName):!1;if(!O&&n&&typeof p=="number"&&(O=!n(d,p,g)),O&&g&&typeof p=="number")return l&&d.children?g.children.splice(p,1,...d.children):g.children.splice(p,1),p}}}function ffe(t){const e=t.indexOf(":"),i=t.indexOf("?"),n=t.indexOf("#"),s=t.indexOf("/");return e===-1||s!==-1&&e>s||i!==-1&&e>i||n!==-1&&e>n||afe.test(t.slice(0,e))?t:""}function dfe({option:t,selected:e,variant:i,onSelect:n,onFocus:s,onBlur:r}){var p;const[o,l]=X.useState(!1),c=t.description.split(` +`),u=c.length>1||t.description.length>120,d=o?t.description:((p=c[0])==null?void 0:p.slice(0,120))??"";return S.jsxs("button",{type:"button",onClick:n,onMouseEnter:s,onMouseLeave:r,onFocus:s,onBlur:r,className:Ze("flex items-start gap-3 border p-3 text-left transition-colors w-full",e?"border-simple-accent bg-simple-accent/10":"border-border bg-card hover:border-muted-foreground/40"),children:[S.jsx("span",{className:"mt-0.5 shrink-0",children:i==="radio"?S.jsx("span",{className:Ze("flex h-4 w-4 items-center justify-center border",e?"border-simple-accent":"border-muted-foreground"),style:{borderRadius:"50%"},children:e&&S.jsx("span",{className:"h-2 w-2 bg-simple-accent",style:{borderRadius:"50%"}})}):S.jsx("span",{className:Ze("flex h-4 w-4 items-center justify-center border",e?"border-simple-accent bg-simple-accent/20":"border-muted-foreground"),children:e&&S.jsx("svg",{className:"h-3 w-3 text-simple-accent",viewBox:"0 0 12 12",fill:"none",stroke:"currentColor",strokeWidth:"2","aria-hidden":"true",children:S.jsx("path",{d:"M2 6l3 3 5-5",strokeLinecap:"round",strokeLinejoin:"round"})})})}),S.jsxs("div",{className:"flex-1 min-w-0",children:[S.jsx("p",{className:"text-sm font-medium text-foreground leading-tight",children:t.label}),S.jsxs("p",{className:"text-xs text-muted-foreground mt-0.5 leading-snug",children:[d,!o&&u&&"..."]}),u&&S.jsx("span",{role:"button",tabIndex:0,onClick:g=>{g.stopPropagation(),l(O=>!O)},onKeyDown:g=>{(g.key==="Enter"||g.key===" ")&&(g.stopPropagation(),g.preventDefault(),l(O=>!O))},className:"text-[10px] text-simple-accent mt-1 inline-block cursor-pointer hover:underline",children:o?"Show less":"Show more"})]})]})}function pfe({markdown:t,visible:e}){return e?S.jsx("div",{className:"border border-border bg-card p-4 text-xs font-mono text-foreground/80 leading-relaxed overflow-auto max-h-64 lg:absolute lg:right-0 lg:top-0 lg:w-80 lg:translate-x-[calc(100%+0.75rem)] lg:z-10 lg:shadow-lg mt-2 lg:mt-0",children:S.jsx(wz,{children:t})}):null}function mfe({question:t,onSubmit:e}){const[i,n]=X.useState(null),[s,r]=X.useState(new Set),[o,l]=X.useState(""),[c,u]=X.useState(null),d=X.useRef(null);X.useEffect(()=>{const k=d.current;k&&(k.style.height="auto",k.style.height=`${k.scrollHeight}px`)},[o]),X.useEffect(()=>{n(null),r(new Set),l(""),u(null)},[t.id]);function p(k){t.multiSelect?r(T=>{const A=new Set(T);return A.has(k)?A.delete(k):A.add(k),A}):n(k)}function g(k){l(k),!t.multiSelect&&k.length>0&&n(null)}function O(k){k.key==="Enter"&&!k.shiftKey&&(k.preventDefault(),_())}function _(){if(b)if(t.multiSelect){const k=t.options.filter(T=>s.has(T.id)).map(T=>T.label);e({questionId:t.id,header:t.header,selectedOptionIds:Array.from(s),selectedLabels:k,freeText:o.trim()})}else if(i){const k=t.options.find(T=>T.id===i);e({questionId:t.id,header:t.header,selectedOptionIds:[i],selectedLabels:k?[k.label]:[],freeText:""})}else e({questionId:t.id,header:t.header,selectedOptionIds:[],selectedLabels:[],freeText:o.trim()})}const b=t.multiSelect?s.size>0||o.trim().length>0:i!==null||o.trim().length>0,x=c?t.options.find(k=>k.id===c):null,w=(x==null?void 0:x.markdown)??"";return S.jsxs("div",{className:"border border-border bg-card p-4 relative",children:[S.jsx("span",{className:"inline-block bg-simple-accent/20 border border-simple-accent/40 px-2 py-0.5 text-[10px] font-mono uppercase tracking-wider text-simple-accent mb-2",children:t.header}),S.jsx("div",{className:"text-sm text-foreground leading-relaxed mb-4 prose prose-invert prose-sm max-w-none [&_a]:text-simple-accent [&_code]:bg-muted [&_code]:px-1 [&_code]:py-0.5 [&_code]:text-xs",children:S.jsx(wz,{children:t.question})}),t.options.length>0&&S.jsxs("div",{className:"relative",children:[S.jsx("div",{className:"grid gap-2 mb-3",children:t.options.map(k=>{const T=t.multiSelect?s.has(k.id):i===k.id;return S.jsx(dfe,{option:k,selected:T,variant:t.multiSelect?"checkbox":"radio",onSelect:()=>p(k.id),onFocus:()=>u(k.id),onBlur:()=>u(null)},k.id)})}),S.jsx(pfe,{markdown:w,visible:!!w})]}),S.jsx("div",{className:"border border-border bg-muted/10 px-3 py-2 mb-3",children:S.jsx("textarea",{ref:d,value:o,onChange:k=>g(k.target.value),onKeyDown:O,rows:1,className:"w-full resize-none overflow-hidden bg-transparent font-mono text-xs text-foreground outline-none leading-relaxed"})}),S.jsx("button",{type:"button",onClick:_,disabled:!b,className:Ze("flex items-center gap-1.5 border px-3 py-1.5 text-xs font-mono uppercase tracking-widest transition-colors",b?"border-simple-accent bg-simple-accent/10 text-simple-accent hover:bg-simple-accent hover:text-background":"border-border text-muted-foreground cursor-not-allowed"),children:"Submit"})]})}function gfe({answer:t}){const e=t.selectedLabels.length>0?t.selectedLabels.join(", "):t.freeText.slice(0,80)+(t.freeText.length>80?"...":"");return S.jsx(Er.div,{initial:{opacity:0,height:0},animate:{opacity:1,height:"auto"},transition:{duration:.2,ease:"easeInOut"},className:"overflow-hidden",children:S.jsxs("div",{className:"flex items-center gap-2 px-4 py-2 border-b border-border/40 text-xs text-muted-foreground",children:[S.jsx("svg",{className:"h-3.5 w-3.5 text-success shrink-0",viewBox:"0 0 16 16",fill:"currentColor","aria-hidden":"true",children:S.jsx("path",{d:"M6.5 12.5l-4-4 1.4-1.4L6.5 9.7l5.6-5.6 1.4 1.4z"})}),S.jsx("span",{className:"font-mono text-simple-accent shrink-0",children:t.header}),S.jsx("span",{className:"text-foreground/70 truncate",children:e})]})})}function Ofe(){return S.jsxs("div",{className:"border border-border bg-card p-4 animate-pulse",children:[S.jsx("div",{className:"h-3 w-16 bg-muted mb-3"}),S.jsx("div",{className:"h-4 w-3/4 bg-muted mb-2"}),S.jsx("div",{className:"h-4 w-1/2 bg-muted mb-4"}),S.jsxs("div",{className:"flex gap-2",children:[S.jsx("div",{className:"h-10 flex-1 bg-muted"}),S.jsx("div",{className:"h-10 flex-1 bg-muted"})]}),S.jsxs("div",{className:"flex items-center gap-2 mt-3",children:[S.jsx("svg",{className:"h-3.5 w-3.5 text-simple-accent animate-spin",viewBox:"0 0 16 16",fill:"none",stroke:"currentColor",strokeWidth:"2","aria-hidden":"true",children:S.jsx("circle",{cx:"8",cy:"8",r:"6",strokeDasharray:"28",strokeDashoffset:"8"})}),S.jsx("span",{className:"text-[10px] text-muted-foreground",children:"Loading question..."})]})]})}function vfe({onAskMore:t,onDoneExecute:e,disabled:i}){return S.jsxs("div",{className:"sticky bottom-0 z-10 flex items-center justify-end gap-3 border-t border-border bg-background/95 backdrop-blur px-4 py-3",children:[S.jsx("button",{type:"button",onClick:t,disabled:i,className:"border border-simple-accent/50 px-4 py-2 text-xs font-mono uppercase tracking-widest text-simple-accent transition-colors hover:bg-simple-accent/10 disabled:opacity-50",children:"Ask me more"}),S.jsx("button",{type:"button",onClick:e,disabled:i,className:"bg-simple-accent/15 border border-simple-accent px-4 py-2 text-xs font-mono uppercase tracking-widest text-simple-accent transition-colors hover:bg-simple-accent hover:text-background disabled:opacity-50",children:"Done, execute"})]})}function _fe({open:t,onConfirm:e,onCancel:i}){return S.jsx(xx,{children:t&&S.jsx(Er.div,{initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},transition:{duration:.15},className:"fixed inset-0 z-50 flex items-center justify-center bg-black/50 backdrop-blur-sm",onClick:i,children:S.jsxs(Er.div,{initial:{opacity:0,scale:.95},animate:{opacity:1,scale:1},exit:{opacity:0,scale:.95},transition:{duration:.15},className:"mx-4 w-full max-w-sm border border-border bg-card p-6",onClick:n=>n.stopPropagation(),children:[S.jsx("p",{className:"text-sm text-foreground leading-relaxed mb-6",children:"This will end discussion and start execution. Continue?"}),S.jsxs("div",{className:"flex items-center justify-end gap-3",children:[S.jsx("button",{type:"button",onClick:i,className:"border border-border px-4 py-2 text-xs font-mono uppercase tracking-widest text-muted-foreground transition-colors hover:border-muted-foreground hover:text-foreground",children:"Cancel"}),S.jsx("button",{type:"button",onClick:e,className:"bg-simple-accent/15 border border-simple-accent px-4 py-2 text-xs font-mono uppercase tracking-widest text-simple-accent transition-colors hover:bg-simple-accent hover:text-background",children:"Confirm"})]})]})})})}function yfe({answerCount:t}){return S.jsxs(Er.div,{initial:{opacity:0,y:8},animate:{opacity:1,y:0},transition:{duration:.25,ease:"easeOut"},className:"border border-border bg-card p-6 text-center",children:[S.jsx("div",{className:"flex justify-center mb-3",children:S.jsxs("svg",{className:"h-8 w-8 text-success",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2","aria-hidden":"true",children:[S.jsx("circle",{cx:"12",cy:"12",r:"10"}),S.jsx("path",{d:"M8 12l3 3 5-5",strokeLinecap:"round",strokeLinejoin:"round"})]})}),S.jsx("h3",{className:"text-sm font-medium text-foreground mb-1",children:"Discussion Complete"}),S.jsxs("p",{className:"text-xs text-muted-foreground mb-4",children:[t," ",t===1?"question":"questions"," answered"]}),S.jsxs("div",{className:"flex items-center justify-center gap-2",children:[S.jsx("svg",{className:"h-3.5 w-3.5 text-simple-accent animate-spin",viewBox:"0 0 16 16",fill:"none",stroke:"currentColor",strokeWidth:"2","aria-hidden":"true",children:S.jsx("circle",{cx:"8",cy:"8",r:"6",strokeDasharray:"28",strokeDashoffset:"8"})}),S.jsx("span",{className:"text-[10px] font-mono text-muted-foreground uppercase tracking-wider",children:"Execution queued..."})]})]})}function bfe(){const{phase:t,currentQuestion:e,answeredQuestions:i,answerCount:n,submitAnswer:s,askMore:r,doneExecute:o,receiveQuestions:l}=oL(),{onQuestionReceivedRef:c}=Qr();X.useEffect(()=>(c.current=x=>{l(x)},()=>{c.current=null}),[l,c]);const[u,d]=X.useState(!1),p=X.useRef(null);X.useEffect(()=>{t==="active"&&p.current&&p.current.scrollIntoView({behavior:"smooth",block:"start"})},[t,e==null?void 0:e.id]);function g(){d(!0)}function O(){d(!1),o()}function _(){d(!1)}const b=t==="submitting"||t==="complete";return S.jsxs("div",{className:"flex flex-col h-full",children:[S.jsx("div",{className:"flex items-center gap-2 px-4 py-3 border-b border-border",children:S.jsxs("span",{className:"text-xs font-mono uppercase tracking-wider text-muted-foreground",children:["Discussion (",n,"/?)"]})}),S.jsx("div",{className:"flex-1 overflow-y-auto pb-20",children:S.jsxs("div",{className:"mx-auto max-w-3xl p-4 flex flex-col gap-2",children:[i.map(x=>S.jsx(gfe,{answer:x},x.questionId)),t==="active"&&e&&S.jsx("div",{ref:p,children:S.jsx(mfe,{question:e,onSubmit:s})}),t==="loading"&&S.jsx(Ofe,{}),t==="complete"&&S.jsx(yfe,{answerCount:n})]})}),t!=="complete"&&S.jsx(vfe,{onAskMore:r,onDoneExecute:g,disabled:b}),S.jsx(_fe,{open:u,onConfirm:O,onCancel:_})]})}function HQ(){var i;const{lifecycleEvent:t,pendingQuestionCount:e}=Qr();return!t&&e===0?null:S.jsxs("div",{className:"flex items-center justify-between px-4 py-1.5 bg-muted/50 border-b border-border text-xs font-mono text-muted-foreground",children:[t&&S.jsxs("span",{children:["Phase ",t.phase_number,": ",t.phase_name," — ",(i=t.event_type)==null?void 0:i.replace(/-/g," "),t.step&&t.total_steps?` (Step ${t.step}/${t.total_steps})`:""]}),e>0&&S.jsxs("span",{className:"inline-flex items-center gap-1 px-1.5 py-0.5 rounded-full bg-teal-500/20 text-teal-400 text-[10px] font-semibold",children:[e," pending"]})]})}function Sfe({onExecute:t}){const{phase:e,startDiscussion:i,resetDiscussion:n}=oL(),{pendingQuestionCount:s}=Qr(),r=e!=="idle";function o(l){if(l.startsWith("/maxsim:discuss-phase")){i();return}t(l)}return r?S.jsxs("div",{className:"flex flex-col gap-0 h-full",children:[S.jsx(HQ,{}),S.jsxs("div",{className:"px-4 pt-3 sm:px-6 flex items-center gap-2",children:[S.jsxs("button",{type:"button",onClick:n,className:"flex items-center gap-1.5 text-xs font-mono text-muted-foreground hover:text-foreground transition-colors",children:[S.jsx("svg",{className:"h-3 w-3",viewBox:"0 0 12 12",fill:"none",stroke:"currentColor",strokeWidth:"1.5","aria-hidden":"true",children:S.jsx("path",{d:"M8 1L3 6l5 5",strokeLinecap:"round",strokeLinejoin:"round"})}),"Back to actions"]}),s>0&&S.jsx("span",{className:"inline-flex items-center gap-1 px-1.5 py-0.5 rounded-full bg-teal-500/20 text-teal-400 text-[10px] font-semibold",children:s})]}),S.jsx("div",{className:"flex-1 min-h-0",children:S.jsx(bfe,{})})]}):S.jsxs("div",{className:"flex flex-col gap-0 h-full",children:[S.jsx(HQ,{}),S.jsx("div",{className:"flex-1 overflow-y-auto p-4 sm:p-6",children:S.jsxs("div",{className:"mx-auto max-w-3xl flex flex-col gap-4",children:[S.jsx(Zae,{}),S.jsx(jae,{}),S.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:[S.jsx(qae,{}),S.jsx(Uae,{})]}),S.jsx(Xae,{onExecute:o})]})})]})}function xfe(){const{connected:t}=Qr(),[e,i]=X.useState(!0),[n,s]=X.useState(!1),[r,o]=X.useState(!1);X.useEffect(()=>{if(t){o(!1),i(!0);return}const c=setTimeout(()=>o(!0),3e3);return()=>clearTimeout(c)},[t]);const l=X.useCallback(async()=>{s(!0);try{const c=await fetch("/api/health",{signal:AbortSignal.timeout(5e3)});i(c.ok),c.ok&&window.location.reload()}catch{i(!1)}finally{s(!1)}},[]);return r?S.jsxs("div",{className:"shrink-0 flex items-center justify-between gap-3 border-b border-danger/30 bg-danger/5 px-4 py-2",children:[S.jsxs("div",{className:"flex items-center gap-2",children:[S.jsx("span",{className:"inline-block h-2 w-2 rounded-full bg-danger animate-pulse"}),S.jsx("span",{className:"font-mono text-xs text-danger",children:e?"WebSocket disconnected. Reconnecting...":"Dashboard server unreachable"})]}),S.jsx("button",{type:"button",disabled:n,onClick:l,className:"shrink-0 border border-danger/40 px-3 py-1 font-mono text-[10px] uppercase tracking-widest text-danger transition-colors hover:bg-danger/10 disabled:opacity-50",children:n?"Checking...":"Retry"})]}):null}function wfe(){return S.jsxs("div",{className:"flex flex-col gap-6",children:[S.jsxs("div",{className:"flex flex-col gap-4 border-b border-border pb-6",children:[S.jsx("div",{className:"h-2 w-32 animate-pulse bg-muted"}),S.jsx("div",{className:"h-px w-full animate-pulse bg-muted"}),S.jsxs("div",{className:"flex gap-10",children:[S.jsx("div",{className:"h-8 w-16 animate-pulse bg-muted"}),S.jsx("div",{className:"h-8 w-40 animate-pulse bg-muted"}),S.jsxs("div",{className:"ml-auto flex gap-8",children:[S.jsx("div",{className:"h-6 w-12 animate-pulse bg-muted"}),S.jsx("div",{className:"h-6 w-12 animate-pulse bg-muted"})]})]})]}),S.jsxs("div",{className:"flex flex-col",children:[S.jsxs("div",{className:"flex justify-between px-4 pb-3",children:[S.jsx("div",{className:"h-2 w-12 animate-pulse bg-muted"}),S.jsx("div",{className:"h-2 w-4 animate-pulse bg-muted"})]}),Array.from({length:6}).map((t,e)=>S.jsxs("div",{className:"border-b border-border",children:[S.jsxs("div",{className:"flex items-center gap-3 px-4 py-3",children:[S.jsx("div",{className:"h-1.5 w-1.5 animate-pulse bg-muted"}),S.jsx("div",{className:"h-3 w-6 animate-pulse bg-muted"}),S.jsx("div",{className:"h-3 w-36 animate-pulse bg-muted"})]}),S.jsx("div",{className:"h-px w-full animate-pulse bg-muted"})]},e))]})]})}function Cfe({message:t,onRetry:e}){return S.jsxs("div",{className:"flex min-h-[50vh] flex-col items-center justify-center gap-4",children:[S.jsx("p",{className:"font-mono text-sm text-danger",children:t}),S.jsx("button",{type:"button",onClick:e,className:"border border-accent bg-accent/10 px-4 py-2 font-mono text-xs uppercase tracking-widest text-accent transition-colors hover:bg-accent hover:text-foreground",children:"Retry"})]})}function kfe(){const{roadmap:t,state:e,todos:i,loading:n,error:s}=xo(),{mode:r,setMode:o,initialized:l}=s7(),[c,u]=X.useState("overview"),[d,p]=X.useState(null),[g,O]=X.useState(!1),{splitMode:_,toggleSplit:b}=Bae(),x=X.useRef(null),w=X.useCallback(()=>{o(r==="simple"?"advanced":"simple")},[r,o]),k=l?S.jsx(Nae,{mode:r,onToggle:w}):null,T=X.useRef({view:"overview",phaseId:null}),A=X.useCallback(($,D)=>{$!=="terminal"&&(T.current={view:$,phaseId:$==="phase"&&D?D:null}),u($),$==="phase"&&D&&p(D),O(!1)},[]),Q=X.useRef(null),E=X.useCallback($=>{x.current?x.current($+"\r"):Q.current=$,A("terminal")},[A]);X.useEffect(()=>{const $=setInterval(()=>{Q.current&&x.current&&(x.current(Q.current+"\r"),Q.current=null,clearInterval($))},100);return()=>clearInterval($)},[]);const N=X.useCallback($=>{u("phase"),p($)},[]),z=X.useCallback(()=>{u("overview"),p(null)},[]),q=X.useCallback(async($,D)=>{try{const Z=await fetch("/api/roadmap",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({phaseNumber:$,checked:D})});Z.ok||console.error("[toggle-phase]",await Z.text())}catch(Z){console.error("[toggle-phase]",Z)}},[]),J=((t==null?void 0:t.phases)??[]).map($=>({number:$.number,name:$.name,goal:$.goal??"",dependsOn:$.depends_on?[$.depends_on]:[],planCount:$.plan_count,summaryCount:$.summary_count,diskStatus:$.disk_status,roadmapComplete:$.roadmap_complete,hasContext:$.has_context,hasResearch:$.has_research})),U=(t==null?void 0:t.current_phase)??null;function R(){if(n)return S.jsx(wfe,{});if(s)return S.jsx(Cfe,{message:s,onRetry:()=>window.location.reload()});switch(c){case"overview":return S.jsxs("div",{className:"mx-auto flex max-w-4xl flex-col gap-6",children:[S.jsx(K9,{roadmap:t,state:e,todos:i}),S.jsx(iZ,{phases:J,currentPhase:U,onPhaseClick:N,onToggleComplete:q})]});case"phase":return d?S.jsx("div",{className:"mx-auto max-w-4xl",children:S.jsx(Ute,{phaseId:d,onBack:z})}):null;case"todos":return S.jsx("div",{className:"mx-auto max-w-3xl",children:S.jsx(Yte,{})});case"blockers":return S.jsx("div",{className:"mx-auto max-w-3xl",children:S.jsx(Gte,{})});case"terminal":return null;default:return null}}const B=c==="terminal",j=r==="simple";return S.jsxs(Kte,{mobileMenuOpen:g,onMobileMenuToggle:()=>O($=>!$),onMobileMenuClose:()=>O(!1),headerRight:k,simpleMode:j,sidebar:S.jsx("div",{style:{display:j?"none":"contents"},children:S.jsx(wie,{activeView:c,activePhaseId:d,onNavigate:A,logoAction:k})}),children:[S.jsx(xfe,{}),l&&r===null&&S.jsx(zae,{onChoose:o}),j&&l&&S.jsx("div",{className:"flex flex-col flex-1 min-h-0",children:S.jsx(Sfe,{onExecute:E})}),S.jsxs("div",{style:{display:j?"none":"contents"},children:[S.jsx("div",{style:{display:B&&!_?"none":"block"},className:B&&_?"h-1/2 min-h-0 overflow-auto border-b border-border p-4 sm:p-6":"flex-1 overflow-y-auto p-4 sm:p-6",children:R()}),S.jsxs("div",{style:{display:B?"flex":"none"},className:`relative min-h-0 flex-col overflow-hidden ${B&&_?"h-1/2":"flex-1"}`,children:[S.jsx($ae,{splitMode:_,onToggle:b}),S.jsx(Dae,{writeInputRef:x})]})]})]})}function Tfe(){return S.jsx(Kj,{children:S.jsx(t7,{children:S.jsx(n7,{children:S.jsx(kfe,{})})})})}const Cz=document.getElementById("root");if(!Cz)throw new Error("Root element not found");Hj.createRoot(Cz).render(S.jsx(X.StrictMode,{children:S.jsx(Tfe,{})})); diff --git a/packages/dashboard/dist/client/index.html b/packages/dashboard/dist/client/index.html index a271c3b..75e1f51 100644 --- a/packages/dashboard/dist/client/index.html +++ b/packages/dashboard/dist/client/index.html @@ -10,8 +10,8 @@ href="https://fonts.googleapis.com/css2?family=Geist:wght@400;500;600;700;800;900&family=Geist+Mono:wght@400;500;600;700&display=swap" rel="stylesheet" /> - - + +
diff --git a/packages/dashboard/dist/server.js b/packages/dashboard/dist/server.js index 9b46a65..6ba2983 100644 --- a/packages/dashboard/dist/server.js +++ b/packages/dashboard/dist/server.js @@ -59,7 +59,7 @@ let child_process = require("child_process"); let fs_promises = require("fs/promises"); let node_stream = require("node:stream"); -//#region ../../node_modules/depd/index.js +//#region ../../../../../node_modules/depd/index.js var require_depd = /* @__PURE__ */ __commonJSMin(((exports, module) => { /*! * depd @@ -370,7 +370,7 @@ var require_depd = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/bytes/index.js +//#region ../../../../../node_modules/bytes/index.js /*! * bytes * Copyright(c) 2012-2014 TJ Holowaychuk @@ -486,7 +486,7 @@ var require_bytes = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/content-type/index.js +//#region ../../../../../node_modules/content-type/index.js /*! * content-type * Copyright(c) 2015 Douglas Christopher Wilson @@ -632,7 +632,7 @@ var require_content_type = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/setprototypeof/index.js +//#region ../../../../../node_modules/setprototypeof/index.js var require_setprototypeof = /* @__PURE__ */ __commonJSMin(((exports, module) => { module.exports = Object.setPrototypeOf || ({ __proto__: [] } instanceof Array ? setProtoOf : mixinProperties); function setProtoOf(obj, proto) { @@ -646,7 +646,7 @@ var require_setprototypeof = /* @__PURE__ */ __commonJSMin(((exports, module) => })); //#endregion -//#region ../../node_modules/statuses/codes.json +//#region ../../../../../node_modules/statuses/codes.json var require_codes = /* @__PURE__ */ __commonJSMin(((exports, module) => { module.exports = { "100": "Continue", @@ -716,7 +716,7 @@ var require_codes = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/statuses/index.js +//#region ../../../../../node_modules/statuses/index.js /*! * statuses * Copyright(c) 2014 Jonathan Ong @@ -818,7 +818,7 @@ var require_statuses = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/inherits/inherits_browser.js +//#region ../../../../../node_modules/inherits/inherits_browser.js var require_inherits_browser = /* @__PURE__ */ __commonJSMin(((exports, module) => { if (typeof Object.create === "function") module.exports = function inherits(ctor, superCtor) { if (superCtor) { @@ -843,7 +843,7 @@ var require_inherits_browser = /* @__PURE__ */ __commonJSMin(((exports, module) })); //#endregion -//#region ../../node_modules/inherits/inherits.js +//#region ../../../../../node_modules/inherits/inherits.js var require_inherits = /* @__PURE__ */ __commonJSMin(((exports, module) => { try { var util$7 = require("util"); @@ -857,7 +857,7 @@ var require_inherits = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/toidentifier/index.js +//#region ../../../../../node_modules/toidentifier/index.js /*! * toidentifier * Copyright(c) 2016 Douglas Christopher Wilson @@ -884,7 +884,7 @@ var require_toidentifier = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/http-errors/index.js +//#region ../../../../../node_modules/http-errors/index.js /*! * http-errors * Copyright(c) 2014 Jonathan Ong @@ -1084,7 +1084,7 @@ var require_http_errors = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/body-parser/node_modules/ms/index.js +//#region ../../../../../node_modules/body-parser/node_modules/ms/index.js var require_ms$4 = /* @__PURE__ */ __commonJSMin(((exports, module) => { /** * Helpers. @@ -1194,7 +1194,7 @@ var require_ms$4 = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/body-parser/node_modules/debug/src/debug.js +//#region ../../../../../node_modules/body-parser/node_modules/debug/src/debug.js var require_debug$3 = /* @__PURE__ */ __commonJSMin(((exports, module) => { /** * This is the common logic for both the Node.js and web browser @@ -1335,7 +1335,7 @@ var require_debug$3 = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/body-parser/node_modules/debug/src/browser.js +//#region ../../../../../node_modules/body-parser/node_modules/debug/src/browser.js var require_browser$4 = /* @__PURE__ */ __commonJSMin(((exports, module) => { /** * This is the web browser implementation of `debug()`. @@ -1458,7 +1458,7 @@ var require_browser$4 = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/body-parser/node_modules/debug/src/node.js +//#region ../../../../../node_modules/body-parser/node_modules/debug/src/node.js var require_node$4 = /* @__PURE__ */ __commonJSMin(((exports, module) => { /** * Module dependencies. @@ -1631,7 +1631,7 @@ var require_node$4 = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/body-parser/node_modules/debug/src/index.js +//#region ../../../../../node_modules/body-parser/node_modules/debug/src/index.js var require_src$5 = /* @__PURE__ */ __commonJSMin(((exports, module) => { /** * Detect Electron renderer process, which is node, but we should @@ -1642,7 +1642,7 @@ var require_src$5 = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/destroy/index.js +//#region ../../../../../node_modules/destroy/index.js /*! * destroy * Copyright(c) 2014 Jonathan Ong @@ -1792,7 +1792,7 @@ var require_destroy = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/safer-buffer/safer.js +//#region ../../../../../node_modules/safer-buffer/safer.js var require_safer = /* @__PURE__ */ __commonJSMin(((exports, module) => { var buffer$2 = require("buffer"); var Buffer = buffer$2.Buffer; @@ -1835,7 +1835,7 @@ var require_safer = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/raw-body/node_modules/iconv-lite/lib/bom-handling.js +//#region ../../../../../node_modules/raw-body/node_modules/iconv-lite/lib/bom-handling.js var require_bom_handling$1 = /* @__PURE__ */ __commonJSMin(((exports) => { var BOMChar = ""; exports.PrependBOM = PrependBOMWrapper; @@ -1875,7 +1875,7 @@ var require_bom_handling$1 = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/raw-body/node_modules/iconv-lite/encodings/internal.js +//#region ../../../../../node_modules/raw-body/node_modules/iconv-lite/encodings/internal.js var require_internal$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => { var Buffer = require_safer().Buffer; module.exports = { @@ -2004,7 +2004,7 @@ var require_internal$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/raw-body/node_modules/iconv-lite/encodings/utf16.js +//#region ../../../../../node_modules/raw-body/node_modules/iconv-lite/encodings/utf16.js var require_utf16$1 = /* @__PURE__ */ __commonJSMin(((exports) => { var Buffer = require_safer().Buffer; exports.utf16be = Utf16BECodec; @@ -2105,7 +2105,7 @@ var require_utf16$1 = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/raw-body/node_modules/iconv-lite/encodings/utf7.js +//#region ../../../../../node_modules/raw-body/node_modules/iconv-lite/encodings/utf7.js var require_utf7$1 = /* @__PURE__ */ __commonJSMin(((exports) => { var Buffer = require_safer().Buffer; exports.utf7 = Utf7Codec; @@ -2282,7 +2282,7 @@ var require_utf7$1 = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/raw-body/node_modules/iconv-lite/encodings/sbcs-codec.js +//#region ../../../../../node_modules/raw-body/node_modules/iconv-lite/encodings/sbcs-codec.js var require_sbcs_codec$1 = /* @__PURE__ */ __commonJSMin(((exports) => { var Buffer = require_safer().Buffer; exports._sbcs = SBCSCodec; @@ -2329,7 +2329,7 @@ var require_sbcs_codec$1 = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/raw-body/node_modules/iconv-lite/encodings/sbcs-data.js +//#region ../../../../../node_modules/raw-body/node_modules/iconv-lite/encodings/sbcs-data.js var require_sbcs_data$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => { module.exports = { "10029": "maccenteuro", @@ -2474,7 +2474,7 @@ var require_sbcs_data$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/raw-body/node_modules/iconv-lite/encodings/sbcs-data-generated.js +//#region ../../../../../node_modules/raw-body/node_modules/iconv-lite/encodings/sbcs-data-generated.js var require_sbcs_data_generated$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => { module.exports = { "437": "cp437", @@ -2927,7 +2927,7 @@ var require_sbcs_data_generated$1 = /* @__PURE__ */ __commonJSMin(((exports, mod })); //#endregion -//#region ../../node_modules/raw-body/node_modules/iconv-lite/encodings/dbcs-codec.js +//#region ../../../../../node_modules/raw-body/node_modules/iconv-lite/encodings/dbcs-codec.js var require_dbcs_codec$1 = /* @__PURE__ */ __commonJSMin(((exports) => { var Buffer = require_safer().Buffer; exports._dbcs = DBCSCodec; @@ -3242,7 +3242,7 @@ var require_dbcs_codec$1 = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/raw-body/node_modules/iconv-lite/encodings/tables/shiftjis.json +//#region ../../../../../node_modules/raw-body/node_modules/iconv-lite/encodings/tables/shiftjis.json var require_shiftjis$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => { module.exports = [ [ @@ -3532,7 +3532,7 @@ var require_shiftjis$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/raw-body/node_modules/iconv-lite/encodings/tables/eucjp.json +//#region ../../../../../node_modules/raw-body/node_modules/iconv-lite/encodings/tables/eucjp.json var require_eucjp$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => { module.exports = [ [ @@ -3955,7 +3955,7 @@ var require_eucjp$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/raw-body/node_modules/iconv-lite/encodings/tables/cp936.json +//#region ../../../../../node_modules/raw-body/node_modules/iconv-lite/encodings/tables/cp936.json var require_cp936$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => { module.exports = [ [ @@ -6537,7 +6537,7 @@ var require_cp936$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/raw-body/node_modules/iconv-lite/encodings/tables/gbk-added.json +//#region ../../../../../node_modules/raw-body/node_modules/iconv-lite/encodings/tables/gbk-added.json var require_gbk_added$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => { module.exports = [ [ @@ -6764,7 +6764,7 @@ var require_gbk_added$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/raw-body/node_modules/iconv-lite/encodings/tables/gb18030-ranges.json +//#region ../../../../../node_modules/raw-body/node_modules/iconv-lite/encodings/tables/gb18030-ranges.json var require_gb18030_ranges$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => { module.exports = { "uChars": [ @@ -7189,7 +7189,7 @@ var require_gb18030_ranges$1 = /* @__PURE__ */ __commonJSMin(((exports, module) })); //#endregion -//#region ../../node_modules/raw-body/node_modules/iconv-lite/encodings/tables/cp949.json +//#region ../../../../../node_modules/raw-body/node_modules/iconv-lite/encodings/tables/cp949.json var require_cp949$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => { module.exports = [ [ @@ -9407,7 +9407,7 @@ var require_cp949$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/raw-body/node_modules/iconv-lite/encodings/tables/cp950.json +//#region ../../../../../node_modules/raw-body/node_modules/iconv-lite/encodings/tables/cp950.json var require_cp950$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => { module.exports = [ [ @@ -9632,7 +9632,7 @@ var require_cp950$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/raw-body/node_modules/iconv-lite/encodings/tables/big5-added.json +//#region ../../../../../node_modules/raw-body/node_modules/iconv-lite/encodings/tables/big5-added.json var require_big5_added$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => { module.exports = [ ["8740", "䏰䰲䘃䖦䕸𧉧䵷䖳𧲱䳢𧳅㮕䜶䝄䱇䱀𤊿𣘗𧍒𦺋𧃒䱗𪍑䝏䗚䲅𧱬䴇䪤䚡𦬣爥𥩔𡩣𣸆𣽡晍囻"], @@ -9799,7 +9799,7 @@ var require_big5_added$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/raw-body/node_modules/iconv-lite/encodings/dbcs-data.js +//#region ../../../../../node_modules/raw-body/node_modules/iconv-lite/encodings/dbcs-data.js var require_dbcs_data$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => { module.exports = { "shiftjis": { @@ -9912,7 +9912,7 @@ var require_dbcs_data$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/raw-body/node_modules/iconv-lite/encodings/index.js +//#region ../../../../../node_modules/raw-body/node_modules/iconv-lite/encodings/index.js var require_encodings$1 = /* @__PURE__ */ __commonJSMin(((exports) => { var modules = [ require_internal$1(), @@ -9931,7 +9931,7 @@ var require_encodings$1 = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/raw-body/node_modules/iconv-lite/lib/streams.js +//#region ../../../../../node_modules/raw-body/node_modules/iconv-lite/lib/streams.js var require_streams$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => { var Buffer$5 = require("buffer").Buffer, Transform$1 = require("stream").Transform; module.exports = function(iconv) { @@ -10023,7 +10023,7 @@ var require_streams$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/raw-body/node_modules/iconv-lite/lib/extend-node.js +//#region ../../../../../node_modules/raw-body/node_modules/iconv-lite/lib/extend-node.js var require_extend_node$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => { var Buffer$4 = require("buffer").Buffer; module.exports = function(iconv) { @@ -10168,7 +10168,7 @@ var require_extend_node$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => })); //#endregion -//#region ../../node_modules/raw-body/node_modules/iconv-lite/lib/index.js +//#region ../../../../../node_modules/raw-body/node_modules/iconv-lite/lib/index.js var require_lib$2 = /* @__PURE__ */ __commonJSMin(((exports, module) => { var Buffer = require_safer().Buffer; var bomHandling = require_bom_handling$1(), iconv = module.exports; @@ -10254,7 +10254,7 @@ var require_lib$2 = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/unpipe/index.js +//#region ../../../../../node_modules/unpipe/index.js /*! * unpipe * Copyright(c) 2015 Douglas Christopher Wilson @@ -10299,7 +10299,7 @@ var require_unpipe = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/raw-body/index.js +//#region ../../../../../node_modules/raw-body/index.js /*! * raw-body * Copyright(c) 2013-2014 Jonathan Ong @@ -10499,7 +10499,7 @@ var require_raw_body = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/body-parser/node_modules/iconv-lite/lib/bom-handling.js +//#region ../../../../../node_modules/body-parser/node_modules/iconv-lite/lib/bom-handling.js var require_bom_handling = /* @__PURE__ */ __commonJSMin(((exports) => { var BOMChar = ""; exports.PrependBOM = PrependBOMWrapper; @@ -10539,7 +10539,7 @@ var require_bom_handling = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/body-parser/node_modules/iconv-lite/encodings/internal.js +//#region ../../../../../node_modules/body-parser/node_modules/iconv-lite/encodings/internal.js var require_internal = /* @__PURE__ */ __commonJSMin(((exports, module) => { var Buffer = require_safer().Buffer; module.exports = { @@ -10668,7 +10668,7 @@ var require_internal = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/body-parser/node_modules/iconv-lite/encodings/utf16.js +//#region ../../../../../node_modules/body-parser/node_modules/iconv-lite/encodings/utf16.js var require_utf16 = /* @__PURE__ */ __commonJSMin(((exports) => { var Buffer = require_safer().Buffer; exports.utf16be = Utf16BECodec; @@ -10769,7 +10769,7 @@ var require_utf16 = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/body-parser/node_modules/iconv-lite/encodings/utf7.js +//#region ../../../../../node_modules/body-parser/node_modules/iconv-lite/encodings/utf7.js var require_utf7 = /* @__PURE__ */ __commonJSMin(((exports) => { var Buffer = require_safer().Buffer; exports.utf7 = Utf7Codec; @@ -10946,7 +10946,7 @@ var require_utf7 = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/body-parser/node_modules/iconv-lite/encodings/sbcs-codec.js +//#region ../../../../../node_modules/body-parser/node_modules/iconv-lite/encodings/sbcs-codec.js var require_sbcs_codec = /* @__PURE__ */ __commonJSMin(((exports) => { var Buffer = require_safer().Buffer; exports._sbcs = SBCSCodec; @@ -10993,7 +10993,7 @@ var require_sbcs_codec = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/body-parser/node_modules/iconv-lite/encodings/sbcs-data.js +//#region ../../../../../node_modules/body-parser/node_modules/iconv-lite/encodings/sbcs-data.js var require_sbcs_data = /* @__PURE__ */ __commonJSMin(((exports, module) => { module.exports = { "10029": "maccenteuro", @@ -11138,7 +11138,7 @@ var require_sbcs_data = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/body-parser/node_modules/iconv-lite/encodings/sbcs-data-generated.js +//#region ../../../../../node_modules/body-parser/node_modules/iconv-lite/encodings/sbcs-data-generated.js var require_sbcs_data_generated = /* @__PURE__ */ __commonJSMin(((exports, module) => { module.exports = { "437": "cp437", @@ -11591,7 +11591,7 @@ var require_sbcs_data_generated = /* @__PURE__ */ __commonJSMin(((exports, modul })); //#endregion -//#region ../../node_modules/body-parser/node_modules/iconv-lite/encodings/dbcs-codec.js +//#region ../../../../../node_modules/body-parser/node_modules/iconv-lite/encodings/dbcs-codec.js var require_dbcs_codec = /* @__PURE__ */ __commonJSMin(((exports) => { var Buffer = require_safer().Buffer; exports._dbcs = DBCSCodec; @@ -11906,7 +11906,7 @@ var require_dbcs_codec = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/body-parser/node_modules/iconv-lite/encodings/tables/shiftjis.json +//#region ../../../../../node_modules/body-parser/node_modules/iconv-lite/encodings/tables/shiftjis.json var require_shiftjis = /* @__PURE__ */ __commonJSMin(((exports, module) => { module.exports = [ [ @@ -12196,7 +12196,7 @@ var require_shiftjis = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/body-parser/node_modules/iconv-lite/encodings/tables/eucjp.json +//#region ../../../../../node_modules/body-parser/node_modules/iconv-lite/encodings/tables/eucjp.json var require_eucjp = /* @__PURE__ */ __commonJSMin(((exports, module) => { module.exports = [ [ @@ -12619,7 +12619,7 @@ var require_eucjp = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/body-parser/node_modules/iconv-lite/encodings/tables/cp936.json +//#region ../../../../../node_modules/body-parser/node_modules/iconv-lite/encodings/tables/cp936.json var require_cp936 = /* @__PURE__ */ __commonJSMin(((exports, module) => { module.exports = [ [ @@ -15201,7 +15201,7 @@ var require_cp936 = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/body-parser/node_modules/iconv-lite/encodings/tables/gbk-added.json +//#region ../../../../../node_modules/body-parser/node_modules/iconv-lite/encodings/tables/gbk-added.json var require_gbk_added = /* @__PURE__ */ __commonJSMin(((exports, module) => { module.exports = [ [ @@ -15428,7 +15428,7 @@ var require_gbk_added = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/body-parser/node_modules/iconv-lite/encodings/tables/gb18030-ranges.json +//#region ../../../../../node_modules/body-parser/node_modules/iconv-lite/encodings/tables/gb18030-ranges.json var require_gb18030_ranges = /* @__PURE__ */ __commonJSMin(((exports, module) => { module.exports = { "uChars": [ @@ -15853,7 +15853,7 @@ var require_gb18030_ranges = /* @__PURE__ */ __commonJSMin(((exports, module) => })); //#endregion -//#region ../../node_modules/body-parser/node_modules/iconv-lite/encodings/tables/cp949.json +//#region ../../../../../node_modules/body-parser/node_modules/iconv-lite/encodings/tables/cp949.json var require_cp949 = /* @__PURE__ */ __commonJSMin(((exports, module) => { module.exports = [ [ @@ -18071,7 +18071,7 @@ var require_cp949 = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/body-parser/node_modules/iconv-lite/encodings/tables/cp950.json +//#region ../../../../../node_modules/body-parser/node_modules/iconv-lite/encodings/tables/cp950.json var require_cp950 = /* @__PURE__ */ __commonJSMin(((exports, module) => { module.exports = [ [ @@ -18296,7 +18296,7 @@ var require_cp950 = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/body-parser/node_modules/iconv-lite/encodings/tables/big5-added.json +//#region ../../../../../node_modules/body-parser/node_modules/iconv-lite/encodings/tables/big5-added.json var require_big5_added = /* @__PURE__ */ __commonJSMin(((exports, module) => { module.exports = [ ["8740", "䏰䰲䘃䖦䕸𧉧䵷䖳𧲱䳢𧳅㮕䜶䝄䱇䱀𤊿𣘗𧍒𦺋𧃒䱗𪍑䝏䗚䲅𧱬䴇䪤䚡𦬣爥𥩔𡩣𣸆𣽡晍囻"], @@ -18463,7 +18463,7 @@ var require_big5_added = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/body-parser/node_modules/iconv-lite/encodings/dbcs-data.js +//#region ../../../../../node_modules/body-parser/node_modules/iconv-lite/encodings/dbcs-data.js var require_dbcs_data = /* @__PURE__ */ __commonJSMin(((exports, module) => { module.exports = { "shiftjis": { @@ -18576,7 +18576,7 @@ var require_dbcs_data = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/body-parser/node_modules/iconv-lite/encodings/index.js +//#region ../../../../../node_modules/body-parser/node_modules/iconv-lite/encodings/index.js var require_encodings = /* @__PURE__ */ __commonJSMin(((exports) => { var modules = [ require_internal(), @@ -18595,7 +18595,7 @@ var require_encodings = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/body-parser/node_modules/iconv-lite/lib/streams.js +//#region ../../../../../node_modules/body-parser/node_modules/iconv-lite/lib/streams.js var require_streams = /* @__PURE__ */ __commonJSMin(((exports, module) => { var Buffer$3 = require("buffer").Buffer, Transform = require("stream").Transform; module.exports = function(iconv) { @@ -18687,7 +18687,7 @@ var require_streams = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/body-parser/node_modules/iconv-lite/lib/extend-node.js +//#region ../../../../../node_modules/body-parser/node_modules/iconv-lite/lib/extend-node.js var require_extend_node = /* @__PURE__ */ __commonJSMin(((exports, module) => { var Buffer$2 = require("buffer").Buffer; module.exports = function(iconv) { @@ -18832,7 +18832,7 @@ var require_extend_node = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/body-parser/node_modules/iconv-lite/lib/index.js +//#region ../../../../../node_modules/body-parser/node_modules/iconv-lite/lib/index.js var require_lib$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => { var Buffer = require_safer().Buffer; var bomHandling = require_bom_handling(), iconv = module.exports; @@ -18918,7 +18918,7 @@ var require_lib$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/ee-first/index.js +//#region ../../../../../node_modules/ee-first/index.js /*! * ee-first * Copyright(c) 2014 Jonathan Ong @@ -18988,7 +18988,7 @@ var require_ee_first = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/on-finished/index.js +//#region ../../../../../node_modules/on-finished/index.js /*! * on-finished * Copyright(c) 2013 Jonathan Ong @@ -19160,7 +19160,7 @@ var require_on_finished = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/body-parser/lib/read.js +//#region ../../../../../node_modules/body-parser/lib/read.js /*! * body-parser * Copyright(c) 2014-2015 Douglas Christopher Wilson @@ -19313,7 +19313,7 @@ var require_read = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/media-typer/index.js +//#region ../../../../../node_modules/media-typer/index.js var require_media_typer = /* @__PURE__ */ __commonJSMin(((exports) => { /*! * media-typer @@ -19494,7 +19494,7 @@ var require_media_typer = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/mime-db/db.json +//#region ../../../../../node_modules/mime-db/db.json var require_db = /* @__PURE__ */ __commonJSMin(((exports, module) => { module.exports = { "application/1d-interleaved-parityfec": { "source": "iana" }, @@ -26540,7 +26540,7 @@ var require_db = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/mime-db/index.js +//#region ../../../../../node_modules/mime-db/index.js var require_mime_db = /* @__PURE__ */ __commonJSMin(((exports, module) => { /*! * mime-db @@ -26555,7 +26555,7 @@ var require_mime_db = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/mime-types/index.js +//#region ../../../../../node_modules/mime-types/index.js /*! * mime-types * Copyright(c) 2014 Jonathan Ong @@ -26636,9 +26636,9 @@ var require_mime_types = /* @__PURE__ */ __commonJSMin(((exports) => { * @param {string} path * @return {boolean|string} */ - function lookup(path$70) { - if (!path$70 || typeof path$70 !== "string") return false; - var extension = extname("x." + path$70).toLowerCase().substr(1); + function lookup(path$71) { + if (!path$71 || typeof path$71 !== "string") return false; + var extension = extname("x." + path$71).toLowerCase().substr(1); if (!extension) return false; return exports.types[extension] || false; } @@ -26672,7 +26672,7 @@ var require_mime_types = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/type-is/index.js +//#region ../../../../../node_modules/type-is/index.js /*! * type-is * Copyright(c) 2014 Jonathan Ong @@ -26844,7 +26844,7 @@ var require_type_is = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/body-parser/lib/types/json.js +//#region ../../../../../node_modules/body-parser/lib/types/json.js /*! * body-parser * Copyright(c) 2014 Jonathan Ong @@ -27033,7 +27033,7 @@ var require_json = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/body-parser/lib/types/raw.js +//#region ../../../../../node_modules/body-parser/lib/types/raw.js /*! * body-parser * Copyright(c) 2014-2015 Douglas Christopher Wilson @@ -27109,7 +27109,7 @@ var require_raw = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/body-parser/lib/types/text.js +//#region ../../../../../node_modules/body-parser/lib/types/text.js /*! * body-parser * Copyright(c) 2014-2015 Douglas Christopher Wilson @@ -27200,20 +27200,20 @@ var require_text = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/es-errors/type.js +//#region ../../../../../node_modules/es-errors/type.js var require_type = /* @__PURE__ */ __commonJSMin(((exports, module) => { /** @type {import('./type')} */ module.exports = TypeError; })); //#endregion -//#region ../../node_modules/object-inspect/util.inspect.js +//#region ../../../../../node_modules/object-inspect/util.inspect.js var require_util_inspect = /* @__PURE__ */ __commonJSMin(((exports, module) => { module.exports = require("util").inspect; })); //#endregion -//#region ../../node_modules/object-inspect/index.js +//#region ../../../../../node_modules/object-inspect/index.js var require_object_inspect = /* @__PURE__ */ __commonJSMin(((exports, module) => { var hasMap = typeof Map === "function" && Map.prototype; var mapSizeDescriptor = Object.getOwnPropertyDescriptor && hasMap ? Object.getOwnPropertyDescriptor(Map.prototype, "size") : null; @@ -27596,7 +27596,7 @@ var require_object_inspect = /* @__PURE__ */ __commonJSMin(((exports, module) => })); //#endregion -//#region ../../node_modules/side-channel-list/index.js +//#region ../../../../../node_modules/side-channel-list/index.js var require_side_channel_list = /* @__PURE__ */ __commonJSMin(((exports, module) => { var inspect = require_object_inspect(); var $TypeError = require_type(); @@ -27673,98 +27673,98 @@ var require_side_channel_list = /* @__PURE__ */ __commonJSMin(((exports, module) })); //#endregion -//#region ../../node_modules/es-object-atoms/index.js +//#region ../../../../../node_modules/es-object-atoms/index.js var require_es_object_atoms = /* @__PURE__ */ __commonJSMin(((exports, module) => { /** @type {import('.')} */ module.exports = Object; })); //#endregion -//#region ../../node_modules/es-errors/index.js +//#region ../../../../../node_modules/es-errors/index.js var require_es_errors = /* @__PURE__ */ __commonJSMin(((exports, module) => { /** @type {import('.')} */ module.exports = Error; })); //#endregion -//#region ../../node_modules/es-errors/eval.js +//#region ../../../../../node_modules/es-errors/eval.js var require_eval = /* @__PURE__ */ __commonJSMin(((exports, module) => { /** @type {import('./eval')} */ module.exports = EvalError; })); //#endregion -//#region ../../node_modules/es-errors/range.js +//#region ../../../../../node_modules/es-errors/range.js var require_range = /* @__PURE__ */ __commonJSMin(((exports, module) => { /** @type {import('./range')} */ module.exports = RangeError; })); //#endregion -//#region ../../node_modules/es-errors/ref.js +//#region ../../../../../node_modules/es-errors/ref.js var require_ref$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => { /** @type {import('./ref')} */ module.exports = ReferenceError; })); //#endregion -//#region ../../node_modules/es-errors/syntax.js +//#region ../../../../../node_modules/es-errors/syntax.js var require_syntax = /* @__PURE__ */ __commonJSMin(((exports, module) => { /** @type {import('./syntax')} */ module.exports = SyntaxError; })); //#endregion -//#region ../../node_modules/es-errors/uri.js +//#region ../../../../../node_modules/es-errors/uri.js var require_uri$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => { /** @type {import('./uri')} */ module.exports = URIError; })); //#endregion -//#region ../../node_modules/math-intrinsics/abs.js +//#region ../../../../../node_modules/math-intrinsics/abs.js var require_abs = /* @__PURE__ */ __commonJSMin(((exports, module) => { /** @type {import('./abs')} */ module.exports = Math.abs; })); //#endregion -//#region ../../node_modules/math-intrinsics/floor.js +//#region ../../../../../node_modules/math-intrinsics/floor.js var require_floor = /* @__PURE__ */ __commonJSMin(((exports, module) => { /** @type {import('./floor')} */ module.exports = Math.floor; })); //#endregion -//#region ../../node_modules/math-intrinsics/max.js +//#region ../../../../../node_modules/math-intrinsics/max.js var require_max = /* @__PURE__ */ __commonJSMin(((exports, module) => { /** @type {import('./max')} */ module.exports = Math.max; })); //#endregion -//#region ../../node_modules/math-intrinsics/min.js +//#region ../../../../../node_modules/math-intrinsics/min.js var require_min = /* @__PURE__ */ __commonJSMin(((exports, module) => { /** @type {import('./min')} */ module.exports = Math.min; })); //#endregion -//#region ../../node_modules/math-intrinsics/pow.js +//#region ../../../../../node_modules/math-intrinsics/pow.js var require_pow = /* @__PURE__ */ __commonJSMin(((exports, module) => { /** @type {import('./pow')} */ module.exports = Math.pow; })); //#endregion -//#region ../../node_modules/math-intrinsics/round.js +//#region ../../../../../node_modules/math-intrinsics/round.js var require_round = /* @__PURE__ */ __commonJSMin(((exports, module) => { /** @type {import('./round')} */ module.exports = Math.round; })); //#endregion -//#region ../../node_modules/math-intrinsics/isNaN.js +//#region ../../../../../node_modules/math-intrinsics/isNaN.js var require_isNaN = /* @__PURE__ */ __commonJSMin(((exports, module) => { /** @type {import('./isNaN')} */ module.exports = Number.isNaN || function isNaN(a) { @@ -27773,7 +27773,7 @@ var require_isNaN = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/math-intrinsics/sign.js +//#region ../../../../../node_modules/math-intrinsics/sign.js var require_sign = /* @__PURE__ */ __commonJSMin(((exports, module) => { var $isNaN = require_isNaN(); /** @type {import('./sign')} */ @@ -27784,14 +27784,14 @@ var require_sign = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/gopd/gOPD.js +//#region ../../../../../node_modules/gopd/gOPD.js var require_gOPD = /* @__PURE__ */ __commonJSMin(((exports, module) => { /** @type {import('./gOPD')} */ module.exports = Object.getOwnPropertyDescriptor; })); //#endregion -//#region ../../node_modules/gopd/index.js +//#region ../../../../../node_modules/gopd/index.js var require_gopd = /* @__PURE__ */ __commonJSMin(((exports, module) => { /** @type {import('.')} */ var $gOPD = require_gOPD(); @@ -27804,7 +27804,7 @@ var require_gopd = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/es-define-property/index.js +//#region ../../../../../node_modules/es-define-property/index.js var require_es_define_property = /* @__PURE__ */ __commonJSMin(((exports, module) => { /** @type {import('.')} */ var $defineProperty = Object.defineProperty || false; @@ -27817,7 +27817,7 @@ var require_es_define_property = /* @__PURE__ */ __commonJSMin(((exports, module })); //#endregion -//#region ../../node_modules/has-symbols/shams.js +//#region ../../../../../node_modules/has-symbols/shams.js var require_shams = /* @__PURE__ */ __commonJSMin(((exports, module) => { /** @type {import('./shams')} */ module.exports = function hasSymbols() { @@ -27847,7 +27847,7 @@ var require_shams = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/has-symbols/index.js +//#region ../../../../../node_modules/has-symbols/index.js var require_has_symbols = /* @__PURE__ */ __commonJSMin(((exports, module) => { var origSymbol = typeof Symbol !== "undefined" && Symbol; var hasSymbolSham = require_shams(); @@ -27862,14 +27862,14 @@ var require_has_symbols = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/get-proto/Reflect.getPrototypeOf.js +//#region ../../../../../node_modules/get-proto/Reflect.getPrototypeOf.js var require_Reflect_getPrototypeOf = /* @__PURE__ */ __commonJSMin(((exports, module) => { /** @type {import('./Reflect.getPrototypeOf')} */ module.exports = typeof Reflect !== "undefined" && Reflect.getPrototypeOf || null; })); //#endregion -//#region ../../node_modules/get-proto/Object.getPrototypeOf.js +//#region ../../../../../node_modules/get-proto/Object.getPrototypeOf.js var require_Object_getPrototypeOf = /* @__PURE__ */ __commonJSMin(((exports, module) => { var $Object = require_es_object_atoms(); /** @type {import('./Object.getPrototypeOf')} */ @@ -27877,7 +27877,7 @@ var require_Object_getPrototypeOf = /* @__PURE__ */ __commonJSMin(((exports, mod })); //#endregion -//#region ../../node_modules/function-bind/implementation.js +//#region ../../../../../node_modules/function-bind/implementation.js var require_implementation = /* @__PURE__ */ __commonJSMin(((exports, module) => { var ERROR_MESSAGE = "Function.prototype.bind called on incompatible "; var toStr = Object.prototype.toString; @@ -27930,35 +27930,35 @@ var require_implementation = /* @__PURE__ */ __commonJSMin(((exports, module) => })); //#endregion -//#region ../../node_modules/function-bind/index.js +//#region ../../../../../node_modules/function-bind/index.js var require_function_bind = /* @__PURE__ */ __commonJSMin(((exports, module) => { var implementation = require_implementation(); module.exports = Function.prototype.bind || implementation; })); //#endregion -//#region ../../node_modules/call-bind-apply-helpers/functionCall.js +//#region ../../../../../node_modules/call-bind-apply-helpers/functionCall.js var require_functionCall = /* @__PURE__ */ __commonJSMin(((exports, module) => { /** @type {import('./functionCall')} */ module.exports = Function.prototype.call; })); //#endregion -//#region ../../node_modules/call-bind-apply-helpers/functionApply.js +//#region ../../../../../node_modules/call-bind-apply-helpers/functionApply.js var require_functionApply = /* @__PURE__ */ __commonJSMin(((exports, module) => { /** @type {import('./functionApply')} */ module.exports = Function.prototype.apply; })); //#endregion -//#region ../../node_modules/call-bind-apply-helpers/reflectApply.js +//#region ../../../../../node_modules/call-bind-apply-helpers/reflectApply.js var require_reflectApply = /* @__PURE__ */ __commonJSMin(((exports, module) => { /** @type {import('./reflectApply')} */ module.exports = typeof Reflect !== "undefined" && Reflect && Reflect.apply; })); //#endregion -//#region ../../node_modules/call-bind-apply-helpers/actualApply.js +//#region ../../../../../node_modules/call-bind-apply-helpers/actualApply.js var require_actualApply = /* @__PURE__ */ __commonJSMin(((exports, module) => { var bind = require_function_bind(); var $apply = require_functionApply(); @@ -27969,7 +27969,7 @@ var require_actualApply = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/call-bind-apply-helpers/index.js +//#region ../../../../../node_modules/call-bind-apply-helpers/index.js var require_call_bind_apply_helpers = /* @__PURE__ */ __commonJSMin(((exports, module) => { var bind = require_function_bind(); var $TypeError = require_type(); @@ -27983,7 +27983,7 @@ var require_call_bind_apply_helpers = /* @__PURE__ */ __commonJSMin(((exports, m })); //#endregion -//#region ../../node_modules/dunder-proto/get.js +//#region ../../../../../node_modules/dunder-proto/get.js var require_get = /* @__PURE__ */ __commonJSMin(((exports, module) => { var callBind = require_call_bind_apply_helpers(); var gOPD = require_gopd(); @@ -28003,7 +28003,7 @@ var require_get = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/get-proto/index.js +//#region ../../../../../node_modules/get-proto/index.js var require_get_proto = /* @__PURE__ */ __commonJSMin(((exports, module) => { var reflectGetProto = require_Reflect_getPrototypeOf(); var originalGetProto = require_Object_getPrototypeOf(); @@ -28020,7 +28020,7 @@ var require_get_proto = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/hasown/index.js +//#region ../../../../../node_modules/hasown/index.js var require_hasown = /* @__PURE__ */ __commonJSMin(((exports, module) => { var call = Function.prototype.call; var $hasOwn = Object.prototype.hasOwnProperty; @@ -28030,7 +28030,7 @@ var require_hasown = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/get-intrinsic/index.js +//#region ../../../../../node_modules/get-intrinsic/index.js var require_get_intrinsic = /* @__PURE__ */ __commonJSMin(((exports, module) => { var undefined; var $Object = require_es_object_atoms(); @@ -28357,7 +28357,7 @@ var require_get_intrinsic = /* @__PURE__ */ __commonJSMin(((exports, module) => })); //#endregion -//#region ../../node_modules/call-bound/index.js +//#region ../../../../../node_modules/call-bound/index.js var require_call_bound = /* @__PURE__ */ __commonJSMin(((exports, module) => { var GetIntrinsic = require_get_intrinsic(); var callBindBasic = require_call_bind_apply_helpers(); @@ -28372,7 +28372,7 @@ var require_call_bound = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/side-channel-map/index.js +//#region ../../../../../node_modules/side-channel-map/index.js var require_side_channel_map = /* @__PURE__ */ __commonJSMin(((exports, module) => { var GetIntrinsic = require_get_intrinsic(); var callBound = require_call_bound(); @@ -28425,7 +28425,7 @@ var require_side_channel_map = /* @__PURE__ */ __commonJSMin(((exports, module) })); //#endregion -//#region ../../node_modules/side-channel-weakmap/index.js +//#region ../../../../../node_modules/side-channel-weakmap/index.js var require_side_channel_weakmap = /* @__PURE__ */ __commonJSMin(((exports, module) => { var GetIntrinsic = require_get_intrinsic(); var callBound = require_call_bound(); @@ -28488,7 +28488,7 @@ var require_side_channel_weakmap = /* @__PURE__ */ __commonJSMin(((exports, modu })); //#endregion -//#region ../../node_modules/side-channel/index.js +//#region ../../../../../node_modules/side-channel/index.js var require_side_channel = /* @__PURE__ */ __commonJSMin(((exports, module) => { var $TypeError = require_type(); var inspect = require_object_inspect(); @@ -28523,7 +28523,7 @@ var require_side_channel = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/qs/lib/formats.js +//#region ../../../../../node_modules/qs/lib/formats.js var require_formats$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => { var replace = String.prototype.replace; var percentTwenties = /%20/g; @@ -28547,7 +28547,7 @@ var require_formats$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/qs/lib/utils.js +//#region ../../../../../node_modules/qs/lib/utils.js var require_utils$2 = /* @__PURE__ */ __commonJSMin(((exports, module) => { var formats = require_formats$1(); var getSideChannel = require_side_channel(); @@ -28767,7 +28767,7 @@ var require_utils$2 = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/qs/lib/stringify.js +//#region ../../../../../node_modules/qs/lib/stringify.js var require_stringify$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => { var getSideChannel = require_side_channel(); var utils = require_utils$2(); @@ -28949,7 +28949,7 @@ var require_stringify$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/qs/lib/parse.js +//#region ../../../../../node_modules/qs/lib/parse.js var require_parse = /* @__PURE__ */ __commonJSMin(((exports, module) => { var utils = require_utils$2(); var has = Object.prototype.hasOwnProperty; @@ -29160,7 +29160,7 @@ var require_parse = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/qs/lib/index.js +//#region ../../../../../node_modules/qs/lib/index.js var require_lib = /* @__PURE__ */ __commonJSMin(((exports, module) => { var stringify = require_stringify$1(); var parse = require_parse(); @@ -29173,7 +29173,7 @@ var require_lib = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/body-parser/lib/types/urlencoded.js +//#region ../../../../../node_modules/body-parser/lib/types/urlencoded.js /*! * body-parser * Copyright(c) 2014 Jonathan Ong @@ -29375,7 +29375,7 @@ var require_urlencoded = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/body-parser/index.js +//#region ../../../../../node_modules/body-parser/index.js /*! * body-parser * Copyright(c) 2014-2015 Douglas Christopher Wilson @@ -29500,7 +29500,7 @@ var require_body_parser = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/merge-descriptors/index.js +//#region ../../../../../node_modules/merge-descriptors/index.js /*! * merge-descriptors * Copyright(c) 2014 Jonathan Ong @@ -29541,7 +29541,7 @@ var require_merge_descriptors = /* @__PURE__ */ __commonJSMin(((exports, module) })); //#endregion -//#region ../../node_modules/finalhandler/node_modules/ms/index.js +//#region ../../../../../node_modules/finalhandler/node_modules/ms/index.js var require_ms$3 = /* @__PURE__ */ __commonJSMin(((exports, module) => { /** * Helpers. @@ -29651,7 +29651,7 @@ var require_ms$3 = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/finalhandler/node_modules/debug/src/debug.js +//#region ../../../../../node_modules/finalhandler/node_modules/debug/src/debug.js var require_debug$2 = /* @__PURE__ */ __commonJSMin(((exports, module) => { /** * This is the common logic for both the Node.js and web browser @@ -29792,7 +29792,7 @@ var require_debug$2 = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/finalhandler/node_modules/debug/src/browser.js +//#region ../../../../../node_modules/finalhandler/node_modules/debug/src/browser.js var require_browser$3 = /* @__PURE__ */ __commonJSMin(((exports, module) => { /** * This is the web browser implementation of `debug()`. @@ -29915,7 +29915,7 @@ var require_browser$3 = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/finalhandler/node_modules/debug/src/node.js +//#region ../../../../../node_modules/finalhandler/node_modules/debug/src/node.js var require_node$3 = /* @__PURE__ */ __commonJSMin(((exports, module) => { /** * Module dependencies. @@ -30088,7 +30088,7 @@ var require_node$3 = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/finalhandler/node_modules/debug/src/index.js +//#region ../../../../../node_modules/finalhandler/node_modules/debug/src/index.js var require_src$4 = /* @__PURE__ */ __commonJSMin(((exports, module) => { /** * Detect Electron renderer process, which is node, but we should @@ -30099,7 +30099,7 @@ var require_src$4 = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/encodeurl/index.js +//#region ../../../../../node_modules/encodeurl/index.js /*! * encodeurl * Copyright(c) 2016 Douglas Christopher Wilson @@ -30150,7 +30150,7 @@ var require_encodeurl = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/escape-html/index.js +//#region ../../../../../node_modules/escape-html/index.js /*! * escape-html * Copyright(c) 2012-2013 TJ Holowaychuk @@ -30212,7 +30212,7 @@ var require_escape_html = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/parseurl/index.js +//#region ../../../../../node_modules/parseurl/index.js /*! * parseurl * Copyright(c) 2014 Jonathan Ong @@ -30318,7 +30318,7 @@ var require_parseurl = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/finalhandler/index.js +//#region ../../../../../node_modules/finalhandler/index.js /*! * finalhandler * Copyright(c) 2014-2022 Douglas Christopher Wilson @@ -30540,7 +30540,7 @@ var require_finalhandler = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/express/node_modules/ms/index.js +//#region ../../../../../node_modules/express/node_modules/ms/index.js var require_ms$2 = /* @__PURE__ */ __commonJSMin(((exports, module) => { /** * Helpers. @@ -30650,7 +30650,7 @@ var require_ms$2 = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/express/node_modules/debug/src/debug.js +//#region ../../../../../node_modules/express/node_modules/debug/src/debug.js var require_debug$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => { /** * This is the common logic for both the Node.js and web browser @@ -30791,7 +30791,7 @@ var require_debug$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/express/node_modules/debug/src/browser.js +//#region ../../../../../node_modules/express/node_modules/debug/src/browser.js var require_browser$2 = /* @__PURE__ */ __commonJSMin(((exports, module) => { /** * This is the web browser implementation of `debug()`. @@ -30914,7 +30914,7 @@ var require_browser$2 = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/express/node_modules/debug/src/node.js +//#region ../../../../../node_modules/express/node_modules/debug/src/node.js var require_node$2 = /* @__PURE__ */ __commonJSMin(((exports, module) => { /** * Module dependencies. @@ -31087,7 +31087,7 @@ var require_node$2 = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/express/node_modules/debug/src/index.js +//#region ../../../../../node_modules/express/node_modules/debug/src/index.js var require_src$3 = /* @__PURE__ */ __commonJSMin(((exports, module) => { /** * Detect Electron renderer process, which is node, but we should @@ -31098,7 +31098,7 @@ var require_src$3 = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/array-flatten/array-flatten.js +//#region ../../../../../node_modules/array-flatten/array-flatten.js var require_array_flatten = /* @__PURE__ */ __commonJSMin(((exports, module) => { /** * Expose `arrayFlatten`. @@ -31149,7 +31149,7 @@ var require_array_flatten = /* @__PURE__ */ __commonJSMin(((exports, module) => })); //#endregion -//#region ../../node_modules/path-to-regexp/index.js +//#region ../../../../../node_modules/path-to-regexp/index.js var require_path_to_regexp = /* @__PURE__ */ __commonJSMin(((exports, module) => { /** * Expose `pathToRegexp`. @@ -31262,7 +31262,7 @@ var require_path_to_regexp = /* @__PURE__ */ __commonJSMin(((exports, module) => })); //#endregion -//#region ../../node_modules/express/lib/router/layer.js +//#region ../../../../../node_modules/express/lib/router/layer.js /*! * express * Copyright(c) 2009-2013 TJ Holowaychuk @@ -31395,7 +31395,7 @@ var require_layer = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/methods/index.js +//#region ../../../../../node_modules/methods/index.js /*! * methods * Copyright(c) 2013-2014 TJ Holowaychuk @@ -31459,7 +31459,7 @@ var require_methods = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/express/lib/router/route.js +//#region ../../../../../node_modules/express/lib/router/route.js /*! * express * Copyright(c) 2009-2013 TJ Holowaychuk @@ -31608,7 +31608,7 @@ var require_route = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/utils-merge/index.js +//#region ../../../../../node_modules/utils-merge/index.js var require_utils_merge = /* @__PURE__ */ __commonJSMin(((exports, module) => { /** * Merge object b with object a. @@ -31631,7 +31631,7 @@ var require_utils_merge = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/express/lib/router/index.js +//#region ../../../../../node_modules/express/lib/router/index.js /*! * express * Copyright(c) 2009-2013 TJ Holowaychuk @@ -32041,7 +32041,7 @@ var require_router = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/express/lib/middleware/init.js +//#region ../../../../../node_modules/express/lib/middleware/init.js /*! * express * Copyright(c) 2009-2013 TJ Holowaychuk @@ -32079,7 +32079,7 @@ var require_init = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/express/lib/middleware/query.js +//#region ../../../../../node_modules/express/lib/middleware/query.js /*! * express * Copyright(c) 2009-2013 TJ Holowaychuk @@ -32118,7 +32118,7 @@ var require_query = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/express/lib/view.js +//#region ../../../../../node_modules/express/lib/view.js /*! * express * Copyright(c) 2009-2013 TJ Holowaychuk @@ -32132,17 +32132,17 @@ var require_view = /* @__PURE__ */ __commonJSMin(((exports, module) => { * @private */ var debug = require_src$3()("express:view"); - var path$15 = require("path"); - var fs$20 = require("fs"); + var path$16 = require("path"); + var fs$21 = require("fs"); /** * Module variables. * @private */ - var dirname = path$15.dirname; - var basename = path$15.basename; - var extname = path$15.extname; - var join = path$15.join; - var resolve = path$15.resolve; + var dirname = path$16.dirname; + var basename = path$16.basename; + var extname = path$16.extname; + var join = path$16.join; + var resolve = path$16.resolve; /** * Module exports. * @public @@ -32190,17 +32190,17 @@ var require_view = /* @__PURE__ */ __commonJSMin(((exports, module) => { * @private */ View.prototype.lookup = function lookup(name) { - var path$67; + var path$68; var roots = [].concat(this.root); debug("lookup \"%s\"", name); - for (var i = 0; i < roots.length && !path$67; i++) { + for (var i = 0; i < roots.length && !path$68; i++) { var root = roots[i]; var loc = resolve(root, name); var dir = dirname(loc); var file = basename(loc); - path$67 = this.resolve(dir, file); + path$68 = this.resolve(dir, file); } - return path$67; + return path$68; }; /** * Render with the given options. @@ -32222,12 +32222,12 @@ var require_view = /* @__PURE__ */ __commonJSMin(((exports, module) => { */ View.prototype.resolve = function resolve(dir, file) { var ext = this.ext; - var path$68 = join(dir, file); - var stat = tryStat(path$68); - if (stat && stat.isFile()) return path$68; - path$68 = join(dir, basename(file, ext), "index" + ext); - stat = tryStat(path$68); - if (stat && stat.isFile()) return path$68; + var path$69 = join(dir, file); + var stat = tryStat(path$69); + if (stat && stat.isFile()) return path$69; + path$69 = join(dir, basename(file, ext), "index" + ext); + stat = tryStat(path$69); + if (stat && stat.isFile()) return path$69; }; /** * Return a stat, maybe. @@ -32236,10 +32236,10 @@ var require_view = /* @__PURE__ */ __commonJSMin(((exports, module) => { * @return {fs.Stats} * @private */ - function tryStat(path$69) { - debug("stat \"%s\"", path$69); + function tryStat(path$70) { + debug("stat \"%s\"", path$70); try { - return fs$20.statSync(path$69); + return fs$21.statSync(path$70); } catch (e) { return; } @@ -32247,7 +32247,7 @@ var require_view = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/express/node_modules/safe-buffer/index.js +//#region ../../../../../node_modules/express/node_modules/safe-buffer/index.js var require_safe_buffer$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => { /*! safe-buffer. MIT License. Feross Aboukhadijeh */ var buffer$1 = require("buffer"); @@ -32288,7 +32288,7 @@ var require_safe_buffer$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => })); //#endregion -//#region ../../node_modules/content-disposition/node_modules/safe-buffer/index.js +//#region ../../../../../node_modules/content-disposition/node_modules/safe-buffer/index.js var require_safe_buffer = /* @__PURE__ */ __commonJSMin(((exports, module) => { /*! safe-buffer. MIT License. Feross Aboukhadijeh */ var buffer = require("buffer"); @@ -32329,7 +32329,7 @@ var require_safe_buffer = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/content-disposition/index.js +//#region ../../../../../node_modules/content-disposition/index.js /*! * content-disposition * Copyright(c) 2014-2017 Douglas Christopher Wilson @@ -32632,7 +32632,7 @@ var require_content_disposition = /* @__PURE__ */ __commonJSMin(((exports, modul })); //#endregion -//#region ../../node_modules/send/node_modules/debug/node_modules/ms/index.js +//#region ../../../../../node_modules/send/node_modules/debug/node_modules/ms/index.js var require_ms$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => { /** * Helpers. @@ -32742,7 +32742,7 @@ var require_ms$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/send/node_modules/debug/src/debug.js +//#region ../../../../../node_modules/send/node_modules/debug/src/debug.js var require_debug = /* @__PURE__ */ __commonJSMin(((exports, module) => { /** * This is the common logic for both the Node.js and web browser @@ -32883,7 +32883,7 @@ var require_debug = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/send/node_modules/debug/src/browser.js +//#region ../../../../../node_modules/send/node_modules/debug/src/browser.js var require_browser$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => { /** * This is the web browser implementation of `debug()`. @@ -33006,7 +33006,7 @@ var require_browser$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/send/node_modules/debug/src/node.js +//#region ../../../../../node_modules/send/node_modules/debug/src/node.js var require_node$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => { /** * Module dependencies. @@ -33179,7 +33179,7 @@ var require_node$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/send/node_modules/debug/src/index.js +//#region ../../../../../node_modules/send/node_modules/debug/src/index.js var require_src$2 = /* @__PURE__ */ __commonJSMin(((exports, module) => { /** * Detect Electron renderer process, which is node, but we should @@ -33190,7 +33190,7 @@ var require_src$2 = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/etag/index.js +//#region ../../../../../node_modules/etag/index.js /*! * etag * Copyright(c) 2014-2016 Douglas Christopher Wilson @@ -33267,7 +33267,7 @@ var require_etag = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/fresh/index.js +//#region ../../../../../node_modules/fresh/index.js /*! * fresh * Copyright(c) 2012 TJ Holowaychuk @@ -33358,7 +33358,7 @@ var require_fresh = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/send/node_modules/mime/types.json +//#region ../../../../../node_modules/send/node_modules/mime/types.json var require_types$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => { module.exports = { "application/andrew-inset": ["ez"], @@ -34457,10 +34457,10 @@ var require_types$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/send/node_modules/mime/mime.js +//#region ../../../../../node_modules/send/node_modules/mime/mime.js var require_mime = /* @__PURE__ */ __commonJSMin(((exports, module) => { require("path"); - var fs$19 = require("fs"); + var fs$20 = require("fs"); function Mime() { this.types = Object.create(null); this.extensions = Object.create(null); @@ -34495,7 +34495,7 @@ var require_mime = /* @__PURE__ */ __commonJSMin(((exports, module) => { Mime.prototype.load = function(file) { this._loading = file; var map = {}; - fs$19.readFileSync(file, "ascii").split(/[\r\n]+/).forEach(function(line) { + fs$20.readFileSync(file, "ascii").split(/[\r\n]+/).forEach(function(line) { var fields = line.replace(/\s*#.*|^\s*|\s*$/g, "").split(/\s+/); map[fields.shift()] = fields; }); @@ -34505,8 +34505,8 @@ var require_mime = /* @__PURE__ */ __commonJSMin(((exports, module) => { /** * Lookup a mime type based on extension */ - Mime.prototype.lookup = function(path$66, fallback) { - var ext = path$66.replace(/^.*[\.\/\\]/, "").toLowerCase(); + Mime.prototype.lookup = function(path$67, fallback) { + var ext = path$67.replace(/^.*[\.\/\\]/, "").toLowerCase(); return this.types[ext] || fallback || this.default_type; }; /** @@ -34530,7 +34530,7 @@ var require_mime = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/ms/index.js +//#region ../../../../../node_modules/ms/index.js var require_ms = /* @__PURE__ */ __commonJSMin(((exports, module) => { /** * Helpers. @@ -34649,7 +34649,7 @@ var require_ms = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/range-parser/index.js +//#region ../../../../../node_modules/range-parser/index.js /*! * range-parser * Copyright(c) 2012-2014 TJ Holowaychuk @@ -34754,7 +34754,7 @@ var require_range_parser = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/send/index.js +//#region ../../../../../node_modules/send/index.js /*! * send * Copyright(c) 2012 TJ Holowaychuk @@ -34774,12 +34774,12 @@ var require_send = /* @__PURE__ */ __commonJSMin(((exports, module) => { var escapeHtml = require_escape_html(); var etag = require_etag(); var fresh = require_fresh(); - var fs$18 = require("fs"); + var fs$19 = require("fs"); var mime = require_mime(); var ms = require_ms(); var onFinished = require_on_finished(); var parseRange = require_range_parser(); - var path$14 = require("path"); + var path$15 = require("path"); var statuses = require_statuses(); var Stream = require("stream"); var util$2 = require("util"); @@ -34787,11 +34787,11 @@ var require_send = /* @__PURE__ */ __commonJSMin(((exports, module) => { * Path function references. * @private */ - var extname = path$14.extname; - var join = path$14.join; - var normalize = path$14.normalize; - var resolve = path$14.resolve; - var sep = path$14.sep; + var extname = path$15.extname; + var join = path$15.join; + var normalize = path$15.normalize; + var resolve = path$15.resolve; + var sep = path$15.sep; /** * Regular expression for identifying a bytes Range header. * @private @@ -34822,8 +34822,8 @@ var require_send = /* @__PURE__ */ __commonJSMin(((exports, module) => { * @return {SendStream} * @public */ - function send(req, path$54, options) { - return new SendStream(req, path$54, options); + function send(req, path$55, options) { + return new SendStream(req, path$55, options); } /** * Initialize a `SendStream` with the given `path`. @@ -34833,11 +34833,11 @@ var require_send = /* @__PURE__ */ __commonJSMin(((exports, module) => { * @param {object} [options] * @private */ - function SendStream(req, path$55, options) { + function SendStream(req, path$56, options) { Stream.call(this); var opts = options || {}; this.options = opts; - this.path = path$55; + this.path = path$56; this.req = req; this._acceptRanges = opts.acceptRanges !== void 0 ? Boolean(opts.acceptRanges) : true; this._cacheControl = opts.cacheControl !== void 0 ? Boolean(opts.cacheControl) : true; @@ -34907,8 +34907,8 @@ var require_send = /* @__PURE__ */ __commonJSMin(((exports, module) => { * @return {SendStream} * @api public */ - SendStream.prototype.root = function root(path$56) { - this._root = resolve(String(path$56)); + SendStream.prototype.root = function root(path$57) { + this._root = resolve(String(path$57)); debug("root %s", this._root); return this; }; @@ -35085,10 +35085,10 @@ var require_send = /* @__PURE__ */ __commonJSMin(((exports, module) => { * @param {string} path * @private */ - SendStream.prototype.redirect = function redirect(path$57) { + SendStream.prototype.redirect = function redirect(path$58) { var res = this.res; if (hasListeners(this, "directory")) { - this.emit("directory", res, path$57); + this.emit("directory", res, path$58); return; } if (this.hasTrailingSlash()) { @@ -35115,38 +35115,38 @@ var require_send = /* @__PURE__ */ __commonJSMin(((exports, module) => { SendStream.prototype.pipe = function pipe(res) { var root = this._root; this.res = res; - var path$58 = decode(this.path); - if (path$58 === -1) { + var path$59 = decode(this.path); + if (path$59 === -1) { this.error(400); return res; } - if (~path$58.indexOf("\0")) { + if (~path$59.indexOf("\0")) { this.error(400); return res; } var parts; if (root !== null) { - if (path$58) path$58 = normalize("." + sep + path$58); - if (UP_PATH_REGEXP.test(path$58)) { - debug("malicious path \"%s\"", path$58); + if (path$59) path$59 = normalize("." + sep + path$59); + if (UP_PATH_REGEXP.test(path$59)) { + debug("malicious path \"%s\"", path$59); this.error(403); return res; } - parts = path$58.split(sep); - path$58 = normalize(join(root, path$58)); + parts = path$59.split(sep); + path$59 = normalize(join(root, path$59)); } else { - if (UP_PATH_REGEXP.test(path$58)) { - debug("malicious path \"%s\"", path$58); + if (UP_PATH_REGEXP.test(path$59)) { + debug("malicious path \"%s\"", path$59); this.error(403); return res; } - parts = normalize(path$58).split(sep); - path$58 = resolve(path$58); + parts = normalize(path$59).split(sep); + path$59 = resolve(path$59); } if (containsDotFile(parts)) { var access = this._dotfiles; if (access === void 0) access = parts[parts.length - 1][0] === "." ? this._hidden ? "allow" : "ignore" : "allow"; - debug("%s dotfile \"%s\"", access, path$58); + debug("%s dotfile \"%s\"", access, path$59); switch (access) { case "allow": break; case "deny": @@ -35158,10 +35158,10 @@ var require_send = /* @__PURE__ */ __commonJSMin(((exports, module) => { } } if (this._index.length && this.hasTrailingSlash()) { - this.sendIndex(path$58); + this.sendIndex(path$59); return res; } - this.sendFile(path$58); + this.sendFile(path$59); return res; }; /** @@ -35170,7 +35170,7 @@ var require_send = /* @__PURE__ */ __commonJSMin(((exports, module) => { * @param {String} path * @api public */ - SendStream.prototype.send = function send(path$59, stat) { + SendStream.prototype.send = function send(path$60, stat) { var len = stat.size; var options = this.options; var opts = {}; @@ -35182,9 +35182,9 @@ var require_send = /* @__PURE__ */ __commonJSMin(((exports, module) => { this.headersAlreadySent(); return; } - debug("pipe \"%s\"", path$59); - this.setHeader(path$59, stat); - this.type(path$59); + debug("pipe \"%s\"", path$60); + this.setHeader(path$60, stat); + this.type(path$60); if (this.isConditionalGET()) { if (this.isPreconditionFailure()) { this.error(412); @@ -35227,7 +35227,7 @@ var require_send = /* @__PURE__ */ __commonJSMin(((exports, module) => { res.end(); return; } - this.stream(path$59, opts); + this.stream(path$60, opts); }; /** * Transfer file for `path`. @@ -35235,22 +35235,22 @@ var require_send = /* @__PURE__ */ __commonJSMin(((exports, module) => { * @param {String} path * @api private */ - SendStream.prototype.sendFile = function sendFile(path$60) { + SendStream.prototype.sendFile = function sendFile(path$61) { var i = 0; var self = this; - debug("stat \"%s\"", path$60); - fs$18.stat(path$60, function onstat(err, stat) { - if (err && err.code === "ENOENT" && !extname(path$60) && path$60[path$60.length - 1] !== sep) return next(err); + debug("stat \"%s\"", path$61); + fs$19.stat(path$61, function onstat(err, stat) { + if (err && err.code === "ENOENT" && !extname(path$61) && path$61[path$61.length - 1] !== sep) return next(err); if (err) return self.onStatError(err); - if (stat.isDirectory()) return self.redirect(path$60); - self.emit("file", path$60, stat); - self.send(path$60, stat); + if (stat.isDirectory()) return self.redirect(path$61); + self.emit("file", path$61, stat); + self.send(path$61, stat); }); function next(err) { if (self._extensions.length <= i) return err ? self.onStatError(err) : self.error(404); - var p = path$60 + "." + self._extensions[i++]; + var p = path$61 + "." + self._extensions[i++]; debug("stat \"%s\"", p); - fs$18.stat(p, function(err, stat) { + fs$19.stat(p, function(err, stat) { if (err) return next(err); if (stat.isDirectory()) return next(); self.emit("file", p, stat); @@ -35264,7 +35264,7 @@ var require_send = /* @__PURE__ */ __commonJSMin(((exports, module) => { * @param {String} path * @api private */ - SendStream.prototype.sendIndex = function sendIndex(path$61) { + SendStream.prototype.sendIndex = function sendIndex(path$62) { var i = -1; var self = this; function next(err) { @@ -35272,9 +35272,9 @@ var require_send = /* @__PURE__ */ __commonJSMin(((exports, module) => { if (err) return self.onStatError(err); return self.error(404); } - var p = join(path$61, self._index[i]); + var p = join(path$62, self._index[i]); debug("stat \"%s\"", p); - fs$18.stat(p, function(err, stat) { + fs$19.stat(p, function(err, stat) { if (err) return next(err); if (stat.isDirectory()) return next(); self.emit("file", p, stat); @@ -35290,10 +35290,10 @@ var require_send = /* @__PURE__ */ __commonJSMin(((exports, module) => { * @param {Object} options * @api private */ - SendStream.prototype.stream = function stream(path$62, options) { + SendStream.prototype.stream = function stream(path$63, options) { var self = this; var res = this.res; - var stream$5 = fs$18.createReadStream(path$62, options); + var stream$5 = fs$19.createReadStream(path$63, options); this.emit("stream", stream$5); stream$5.pipe(res); function cleanup() { @@ -35315,10 +35315,10 @@ var require_send = /* @__PURE__ */ __commonJSMin(((exports, module) => { * @param {String} path * @api private */ - SendStream.prototype.type = function type(path$63) { + SendStream.prototype.type = function type(path$64) { var res = this.res; if (res.getHeader("Content-Type")) return; - var type = mime.lookup(path$63); + var type = mime.lookup(path$64); if (!type) { debug("no content-type"); return; @@ -35335,9 +35335,9 @@ var require_send = /* @__PURE__ */ __commonJSMin(((exports, module) => { * @param {Object} stat * @api private */ - SendStream.prototype.setHeader = function setHeader(path$64, stat) { + SendStream.prototype.setHeader = function setHeader(path$65, stat) { var res = this.res; - this.emit("headers", res, path$64, stat); + this.emit("headers", res, path$65, stat); if (this._acceptRanges && !res.getHeader("Accept-Ranges")) { debug("accept ranges"); res.setHeader("Accept-Ranges", "bytes"); @@ -35431,9 +35431,9 @@ var require_send = /* @__PURE__ */ __commonJSMin(((exports, module) => { * @param {String} path * @api private */ - function decode(path$65) { + function decode(path$66) { try { - return decodeURIComponent(path$65); + return decodeURIComponent(path$66); } catch (err) { return -1; } @@ -35536,7 +35536,7 @@ var require_send = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/forwarded/index.js +//#region ../../../../../node_modules/forwarded/index.js /*! * forwarded * Copyright(c) 2014-2017 Douglas Christopher Wilson @@ -35598,7 +35598,7 @@ var require_forwarded = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/ipaddr.js/lib/ipaddr.js +//#region ../../../../../node_modules/ipaddr.js/lib/ipaddr.js var require_ipaddr = /* @__PURE__ */ __commonJSMin(((exports, module) => { (function() { var expandIPv6, ipaddr = {}, ipv4Part, ipv4Regexes, ipv6Part, ipv6Regexes, matchCIDR, root = this, zoneIndex; @@ -36270,7 +36270,7 @@ var require_ipaddr = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/proxy-addr/index.js +//#region ../../../../../node_modules/proxy-addr/index.js /*! * proxy-addr * Copyright(c) 2014-2016 Douglas Christopher Wilson @@ -36475,7 +36475,7 @@ var require_proxy_addr = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/express/lib/utils.js +//#region ../../../../../node_modules/express/lib/utils.js /*! * express * Copyright(c) 2009-2013 TJ Holowaychuk @@ -36708,7 +36708,7 @@ var require_utils$1 = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/express/lib/application.js +//#region ../../../../../node_modules/express/lib/application.js /*! * express * Copyright(c) 2009-2013 TJ Holowaychuk @@ -36855,13 +36855,13 @@ var require_application = /* @__PURE__ */ __commonJSMin(((exports, module) => { */ app.use = function use(fn) { var offset = 0; - var path$49 = "/"; + var path$50 = "/"; if (typeof fn !== "function") { var arg = fn; while (Array.isArray(arg) && arg.length !== 0) arg = arg[0]; if (typeof arg !== "function") { offset = 1; - path$49 = fn; + path$50 = fn; } } var fns = flatten(slice.call(arguments, offset)); @@ -36869,11 +36869,11 @@ var require_application = /* @__PURE__ */ __commonJSMin(((exports, module) => { this.lazyrouter(); var router = this._router; fns.forEach(function(fn) { - if (!fn || !fn.handle || !fn.set) return router.use(path$49, fn); - debug(".use app under %s", path$49); - fn.mountpath = path$49; + if (!fn || !fn.handle || !fn.set) return router.use(path$50, fn); + debug(".use app under %s", path$50); + fn.mountpath = path$50; fn.parent = this; - router.use(path$49, function mounted_app(req, res, next) { + router.use(path$50, function mounted_app(req, res, next) { var orig = req.app; fn.handle(req, res, function(err) { setPrototypeOf(req, orig.request); @@ -36894,9 +36894,9 @@ var require_application = /* @__PURE__ */ __commonJSMin(((exports, module) => { * * @public */ - app.route = function route(path$50) { + app.route = function route(path$51) { this.lazyrouter(); - return this._router.route(path$50); + return this._router.route(path$51); }; /** * Register the given template engine callback `fn` @@ -37012,7 +37012,7 @@ var require_application = /* @__PURE__ */ __commonJSMin(((exports, module) => { * @return {String} * @private */ - app.path = function path$51() { + app.path = function path$52() { return this.parent ? this.parent.path() + this.mountpath : ""; }; /** @@ -37073,10 +37073,10 @@ var require_application = /* @__PURE__ */ __commonJSMin(((exports, module) => { * Delegate `.VERB(...)` calls to `router.VERB(...)`. */ methods.forEach(function(method) { - app[method] = function(path$52) { - if (method === "get" && arguments.length === 1) return this.set(path$52); + app[method] = function(path$53) { + if (method === "get" && arguments.length === 1) return this.set(path$53); this.lazyrouter(); - var route = this._router.route(path$52); + var route = this._router.route(path$53); route[method].apply(route, slice.call(arguments, 1)); return this; }; @@ -37090,9 +37090,9 @@ var require_application = /* @__PURE__ */ __commonJSMin(((exports, module) => { * @return {app} for chaining * @public */ - app.all = function all(path$53) { + app.all = function all(path$54) { this.lazyrouter(); - var route = this._router.route(path$53); + var route = this._router.route(path$54); var args = slice.call(arguments, 1); for (var i = 0; i < methods.length; i++) route[methods[i]].apply(route, args); return this; @@ -37194,7 +37194,7 @@ var require_application = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/negotiator/lib/charset.js +//#region ../../../../../node_modules/negotiator/lib/charset.js /** * negotiator * Copyright(c) 2012 Isaac Z. Schlueter @@ -37321,7 +37321,7 @@ var require_charset = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/negotiator/lib/encoding.js +//#region ../../../../../node_modules/negotiator/lib/encoding.js /** * negotiator * Copyright(c) 2012 Isaac Z. Schlueter @@ -37459,7 +37459,7 @@ var require_encoding = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/negotiator/lib/language.js +//#region ../../../../../node_modules/negotiator/lib/language.js /** * negotiator * Copyright(c) 2012 Isaac Z. Schlueter @@ -37592,7 +37592,7 @@ var require_language = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/negotiator/lib/mediaType.js +//#region ../../../../../node_modules/negotiator/lib/mediaType.js /** * negotiator * Copyright(c) 2012 Isaac Z. Schlueter @@ -37787,7 +37787,7 @@ var require_mediaType = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/negotiator/index.js +//#region ../../../../../node_modules/negotiator/index.js /*! * negotiator * Copyright(c) 2012 Federico Romero @@ -37854,7 +37854,7 @@ var require_negotiator = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/accepts/index.js +//#region ../../../../../node_modules/accepts/index.js /*! * accepts * Copyright(c) 2014 Jonathan Ong @@ -38022,7 +38022,7 @@ var require_accepts = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/express/lib/request.js +//#region ../../../../../node_modules/express/lib/request.js /*! * express * Copyright(c) 2009-2013 TJ Holowaychuk @@ -38432,7 +38432,7 @@ var require_request = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/cookie-signature/index.js +//#region ../../../../../node_modules/cookie-signature/index.js var require_cookie_signature = /* @__PURE__ */ __commonJSMin(((exports) => { /** * Module dependencies. @@ -38475,7 +38475,7 @@ var require_cookie_signature = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/cookie/index.js +//#region ../../../../../node_modules/cookie/index.js /*! * cookie * Copyright(c) 2012-2014 Roman Shtylman @@ -38716,7 +38716,7 @@ var require_cookie = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/vary/index.js +//#region ../../../../../node_modules/vary/index.js /*! * vary * Copyright(c) 2014-2017 Douglas Christopher Wilson @@ -38806,7 +38806,7 @@ var require_vary = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/express/lib/response.js +//#region ../../../../../node_modules/express/lib/response.js /*! * express * Copyright(c) 2009-2013 TJ Holowaychuk @@ -38827,7 +38827,7 @@ var require_response = /* @__PURE__ */ __commonJSMin(((exports, module) => { var http$3 = require("http"); var isAbsolute = require_utils$1().isAbsolute; var onFinished = require_on_finished(); - var path$13 = require("path"); + var path$14 = require("path"); var statuses = require_statuses(); var merge = require_utils_merge(); var sign = require_cookie_signature().sign; @@ -38836,9 +38836,9 @@ var require_response = /* @__PURE__ */ __commonJSMin(((exports, module) => { var setCharset = require_utils$1().setCharset; var cookie = require_cookie(); var send = require_send(); - var extname = path$13.extname; + var extname = path$14.extname; var mime = send.mime; - var resolve = path$13.resolve; + var resolve = path$14.resolve; var vary = require_vary(); /** * Response prototype. @@ -39102,20 +39102,20 @@ var require_response = /* @__PURE__ */ __commonJSMin(((exports, module) => { * * @public */ - res.sendFile = function sendFile(path$46, options, callback) { + res.sendFile = function sendFile(path$47, options, callback) { var done = callback; var req = this.req; var res = this; var next = req.next; var opts = options || {}; - if (!path$46) throw new TypeError("path argument is required to res.sendFile"); - if (typeof path$46 !== "string") throw new TypeError("path must be a string to res.sendFile"); + if (!path$47) throw new TypeError("path argument is required to res.sendFile"); + if (typeof path$47 !== "string") throw new TypeError("path must be a string to res.sendFile"); if (typeof options === "function") { done = options; opts = {}; } - if (!opts.root && !isAbsolute(path$46)) throw new TypeError("path must be absolute or specify root to res.sendFile"); - sendfile(res, send(req, encodeURI(path$46), opts), opts, function(err) { + if (!opts.root && !isAbsolute(path$47)) throw new TypeError("path must be absolute or specify root to res.sendFile"); + sendfile(res, send(req, encodeURI(path$47), opts), opts, function(err) { if (done) return done(err); if (err && err.code === "EISDIR") return next(); if (err && err.code !== "ECONNABORTED" && err.syscall !== "write") next(err); @@ -39161,7 +39161,7 @@ var require_response = /* @__PURE__ */ __commonJSMin(((exports, module) => { * * @public */ - res.sendfile = function(path$47, options, callback) { + res.sendfile = function(path$48, options, callback) { var done = callback; var req = this.req; var res = this; @@ -39171,7 +39171,7 @@ var require_response = /* @__PURE__ */ __commonJSMin(((exports, module) => { done = options; opts = {}; } - sendfile(res, send(req, path$47, opts), opts, function(err) { + sendfile(res, send(req, path$48, opts), opts, function(err) { if (done) return done(err); if (err && err.code === "EISDIR") return next(); if (err && err.code !== "ECONNABORTED" && err.syscall !== "write") next(err); @@ -39195,7 +39195,7 @@ var require_response = /* @__PURE__ */ __commonJSMin(((exports, module) => { * * @public */ - res.download = function download(path$48, filename, options, callback) { + res.download = function download(path$49, filename, options, callback) { var done = callback; var name = filename; var opts = options || null; @@ -39211,7 +39211,7 @@ var require_response = /* @__PURE__ */ __commonJSMin(((exports, module) => { name = null; opts = filename; } - var headers = { "Content-Disposition": contentDisposition(name || path$48) }; + var headers = { "Content-Disposition": contentDisposition(name || path$49) }; if (opts && opts.headers) { var keys = Object.keys(opts.headers); for (var i = 0; i < keys.length; i++) { @@ -39221,7 +39221,7 @@ var require_response = /* @__PURE__ */ __commonJSMin(((exports, module) => { } opts = Object.create(opts); opts.headers = headers; - var fullPath = !opts.root ? resolve(path$48) : path$48; + var fullPath = !opts.root ? resolve(path$49) : path$49; return this.sendFile(fullPath, opts, done); }; /** @@ -39654,7 +39654,7 @@ var require_response = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/serve-static/index.js +//#region ../../../../../node_modules/serve-static/index.js /*! * serve-static * Copyright(c) 2010 Sencha Inc. @@ -39707,9 +39707,9 @@ var require_serve_static = /* @__PURE__ */ __commonJSMin(((exports, module) => { } var forwardError = !fallthrough; var originalUrl = parseUrl.original(req); - var path$45 = parseUrl(req).pathname; - if (path$45 === "/" && originalUrl.pathname.substr(-1) !== "/") path$45 = ""; - var stream = send(req, path$45, opts); + var path$46 = parseUrl(req).pathname; + if (path$46 === "/" && originalUrl.pathname.substr(-1) !== "/") path$46 = ""; + var stream = send(req, path$46, opts); stream.on("directory", onDirectory); if (setHeaders) stream.on("headers", setHeaders); if (fallthrough) stream.on("file", function onFile() { @@ -39779,7 +39779,7 @@ var require_serve_static = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/express/lib/express.js +//#region ../../../../../node_modules/express/lib/express.js /*! * express * Copyright(c) 2009-2013 TJ Holowaychuk @@ -39879,7 +39879,7 @@ var require_express$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/express/index.js +//#region ../../../../../node_modules/express/index.js /*! * express * Copyright(c) 2009-2013 TJ Holowaychuk @@ -39892,7 +39892,7 @@ var require_express = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/totalist/sync/index.mjs +//#region ../../../../../node_modules/totalist/sync/index.mjs var import_express = /* @__PURE__ */ __toESM(require_express()); function totalist(dir, callback, pre = "") { dir = (0, path.resolve)(".", dir); @@ -39906,7 +39906,7 @@ function totalist(dir, callback, pre = "") { } //#endregion -//#region ../../node_modules/@polka/url/build.mjs +//#region ../../../../../node_modules/@polka/url/build.mjs /** * @typedef ParsedURL * @type {import('.').ParsedURL} @@ -39949,7 +39949,7 @@ function parse$2(req) { } //#endregion -//#region ../../node_modules/mrmime/index.mjs +//#region ../../../../../node_modules/mrmime/index.mjs const mimes = { "3g2": "video/3gpp2", "3gp": "video/3gpp", @@ -40397,7 +40397,7 @@ function lookup(extn) { } //#endregion -//#region ../../node_modules/sirv/build.mjs +//#region ../../../../../node_modules/sirv/build.mjs const noop = () => {}; function isMatch(uri, arr) { for (let i = 0; i < arr.length; i++) if (arr[i].test(uri)) return true; @@ -40542,7 +40542,7 @@ function build_default(dir, opts = {}) { } //#endregion -//#region ../../node_modules/ws/lib/constants.js +//#region ../../../../../node_modules/ws/lib/constants.js var require_constants = /* @__PURE__ */ __commonJSMin(((exports, module) => { const BINARY_TYPES = [ "nodebuffer", @@ -40566,7 +40566,7 @@ var require_constants = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/ws/lib/buffer-util.js +//#region ../../../../../node_modules/ws/lib/buffer-util.js var require_buffer_util = /* @__PURE__ */ __commonJSMin(((exports, module) => { const { EMPTY_BUFFER } = require_constants(); const FastBuffer = Buffer[Symbol.species]; @@ -40667,7 +40667,7 @@ var require_buffer_util = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/ws/lib/limiter.js +//#region ../../../../../node_modules/ws/lib/limiter.js var require_limiter = /* @__PURE__ */ __commonJSMin(((exports, module) => { const kDone = Symbol("kDone"); const kRun = Symbol("kRun"); @@ -40719,7 +40719,7 @@ var require_limiter = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/ws/lib/permessage-deflate.js +//#region ../../../../../node_modules/ws/lib/permessage-deflate.js var require_permessage_deflate = /* @__PURE__ */ __commonJSMin(((exports, module) => { const zlib = require("zlib"); const bufferUtil = require_buffer_util(); @@ -41053,7 +41053,7 @@ var require_permessage_deflate = /* @__PURE__ */ __commonJSMin(((exports, module })); //#endregion -//#region ../../node_modules/ws/lib/validation.js +//#region ../../../../../node_modules/ws/lib/validation.js var require_validation$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => { const { isUtf8 } = require("buffer"); const { hasBlob } = require_constants(); @@ -41250,7 +41250,7 @@ var require_validation$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/ws/lib/receiver.js +//#region ../../../../../node_modules/ws/lib/receiver.js var require_receiver = /* @__PURE__ */ __commonJSMin(((exports, module) => { const { Writable } = require("stream"); const PerMessageDeflate = require_permessage_deflate(); @@ -41698,7 +41698,7 @@ var require_receiver = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/ws/lib/sender.js +//#region ../../../../../node_modules/ws/lib/sender.js var require_sender = /* @__PURE__ */ __commonJSMin(((exports, module) => { const { Duplex: Duplex$3 } = require("stream"); const { randomFillSync } = require("crypto"); @@ -42194,7 +42194,7 @@ var require_sender = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/ws/lib/event-target.js +//#region ../../../../../node_modules/ws/lib/event-target.js var require_event_target = /* @__PURE__ */ __commonJSMin(((exports, module) => { const { kForOnEventAttribute, kListener } = require_constants(); const kCode = Symbol("kCode"); @@ -42414,7 +42414,7 @@ var require_event_target = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/ws/lib/extension.js +//#region ../../../../../node_modules/ws/lib/extension.js var require_extension = /* @__PURE__ */ __commonJSMin(((exports, module) => { const { tokenChars } = require_validation$1(); /** @@ -42558,7 +42558,7 @@ var require_extension = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/ws/lib/websocket.js +//#region ../../../../../node_modules/ws/lib/websocket.js var require_websocket = /* @__PURE__ */ __commonJSMin(((exports, module) => { const EventEmitter$3 = require("events"); const https = require("https"); @@ -43530,7 +43530,7 @@ var require_websocket = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/ws/lib/stream.js +//#region ../../../../../node_modules/ws/lib/stream.js var require_stream = /* @__PURE__ */ __commonJSMin(((exports, module) => { require_websocket(); const { Duplex: Duplex$1 } = require("stream"); @@ -43647,7 +43647,7 @@ var require_stream = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/ws/lib/subprotocol.js +//#region ../../../../../node_modules/ws/lib/subprotocol.js var require_subprotocol = /* @__PURE__ */ __commonJSMin(((exports, module) => { const { tokenChars } = require_validation$1(); /** @@ -43687,7 +43687,7 @@ var require_subprotocol = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/ws/lib/websocket-server.js +//#region ../../../../../node_modules/ws/lib/websocket-server.js var require_websocket_server = /* @__PURE__ */ __commonJSMin(((exports, module) => { const EventEmitter$2 = require("events"); const http$1 = require("http"); @@ -44062,7 +44062,7 @@ var require_websocket_server = /* @__PURE__ */ __commonJSMin(((exports, module) })); //#endregion -//#region ../../node_modules/ws/wrapper.mjs +//#region ../../../../../node_modules/ws/wrapper.mjs var import_stream = /* @__PURE__ */ __toESM(require_stream(), 1); var import_receiver = /* @__PURE__ */ __toESM(require_receiver(), 1); var import_sender = /* @__PURE__ */ __toESM(require_sender(), 1); @@ -44070,7 +44070,7 @@ var import_websocket = /* @__PURE__ */ __toESM(require_websocket(), 1); var import_websocket_server = /* @__PURE__ */ __toESM(require_websocket_server(), 1); //#endregion -//#region ../../node_modules/@hono/node-server/dist/index.mjs +//#region ../../../../../node_modules/@hono/node-server/dist/index.mjs var RequestError = class extends Error { constructor(message, options) { super(message, options); @@ -44483,7 +44483,7 @@ var getRequestListener = (fetchCallback, options = {}) => { }; //#endregion -//#region ../../node_modules/zod/v4/core/core.js +//#region ../../../../../node_modules/zod/v4/core/core.js /** A special constant with type `never` */ const NEVER = Object.freeze({ status: "aborted" }); function $constructor(name, initializer, params) { @@ -44543,7 +44543,7 @@ function config(newConfig) { } //#endregion -//#region ../../node_modules/zod/v4/core/util.js +//#region ../../../../../node_modules/zod/v4/core/util.js function getEnumValues(entries) { const numericValues = Object.values(entries).filter((v) => typeof v === "number"); return Object.entries(entries).filter(([k, _]) => numericValues.indexOf(+k) === -1).map(([_, v]) => v); @@ -44857,7 +44857,7 @@ function issue(...args) { } //#endregion -//#region ../../node_modules/zod/v4/core/errors.js +//#region ../../../../../node_modules/zod/v4/core/errors.js const initializer$1 = (inst, def) => { inst.name = "$ZodError"; Object.defineProperty(inst, "_zod", { @@ -44915,7 +44915,7 @@ function formatError(error, mapper = (issue) => issue.message) { } //#endregion -//#region ../../node_modules/zod/v4/core/parse.js +//#region ../../../../../node_modules/zod/v4/core/parse.js const _parse = (_Err) => (schema, value, _ctx, _params) => { const ctx = _ctx ? Object.assign(_ctx, { async: false }) : { async: false }; const result = schema._zod.run({ @@ -45019,7 +45019,7 @@ const _safeDecodeAsync = (_Err) => async (schema, value, _ctx) => { const safeDecodeAsync$1 = /* @__PURE__ */ _safeDecodeAsync($ZodRealError); //#endregion -//#region ../../node_modules/zod/v4/core/regexes.js +//#region ../../../../../node_modules/zod/v4/core/regexes.js const cuid = /^[cC][^\s-]{8,}$/; const cuid2 = /^[0-9a-z]+$/; const ulid = /^[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$/; @@ -45079,7 +45079,7 @@ const lowercase = /^[^A-Z]*$/; const uppercase = /^[^a-z]*$/; //#endregion -//#region ../../node_modules/zod/v4/core/checks.js +//#region ../../../../../node_modules/zod/v4/core/checks.js const $ZodCheck = /* @__PURE__ */ $constructor("$ZodCheck", (inst, def) => { var _a; inst._zod ?? (inst._zod = {}); @@ -45438,7 +45438,7 @@ const $ZodCheckOverwrite = /* @__PURE__ */ $constructor("$ZodCheckOverwrite", (i }); //#endregion -//#region ../../node_modules/zod/v4/core/doc.js +//#region ../../../../../node_modules/zod/v4/core/doc.js var Doc = class { constructor(args = []) { this.content = []; @@ -45470,7 +45470,7 @@ var Doc = class { }; //#endregion -//#region ../../node_modules/zod/v4/core/versions.js +//#region ../../../../../node_modules/zod/v4/core/versions.js const version = { major: 4, minor: 3, @@ -45478,7 +45478,7 @@ const version = { }; //#endregion -//#region ../../node_modules/zod/v4/core/schemas.js +//#region ../../../../../node_modules/zod/v4/core/schemas.js const $ZodType = /* @__PURE__ */ $constructor("$ZodType", (inst, def) => { var _a; inst ?? (inst = {}); @@ -46696,7 +46696,7 @@ function handleRefineResult(result, payload, input, inst) { } //#endregion -//#region ../../node_modules/zod/v4/core/registries.js +//#region ../../../../../node_modules/zod/v4/core/registries.js var _a$1; var $ZodRegistry = class { constructor() { @@ -46744,7 +46744,7 @@ function registry() { const globalRegistry = globalThis.__zod_globalRegistry; //#endregion -//#region ../../node_modules/zod/v4/core/api.js +//#region ../../../../../node_modules/zod/v4/core/api.js /* @__NO_SIDE_EFFECTS__ */ function _string(Class, params) { return new Class({ @@ -47289,7 +47289,7 @@ function meta$2(metadata) { } //#endregion -//#region ../../node_modules/zod/v4/core/to-json-schema.js +//#region ../../../../../node_modules/zod/v4/core/to-json-schema.js function initializeContext(params) { let target = params?.target ?? "draft-2020-12"; if (target === "draft-4") target = "draft-04"; @@ -47575,7 +47575,7 @@ const createStandardJSONSchemaMethod = (schema, io, processors = {}) => (params) }; //#endregion -//#region ../../node_modules/zod/v4/core/json-schema-processors.js +//#region ../../../../../node_modules/zod/v4/core/json-schema-processors.js const formatMap = { guid: "uuid", url: "uri", @@ -48032,7 +48032,7 @@ function toJSONSchema(input, params) { } //#endregion -//#region ../../node_modules/zod/v4/classic/iso.js +//#region ../../../../../node_modules/zod/v4/classic/iso.js const ZodISODateTime = /* @__PURE__ */ $constructor("ZodISODateTime", (inst, def) => { $ZodISODateTime.init(inst, def); ZodStringFormat.init(inst, def); @@ -48063,7 +48063,7 @@ function duration(params) { } //#endregion -//#region ../../node_modules/zod/v4/classic/errors.js +//#region ../../../../../node_modules/zod/v4/classic/errors.js const initializer = (inst, issues) => { $ZodError.init(inst, issues); inst.name = "ZodError"; @@ -48087,7 +48087,7 @@ const ZodError$1 = $constructor("ZodError", initializer); const ZodRealError = $constructor("ZodError", initializer, { Parent: Error }); //#endregion -//#region ../../node_modules/zod/v4/classic/parse.js +//#region ../../../../../node_modules/zod/v4/classic/parse.js const parse = /* @__PURE__ */ _parse(ZodRealError); const parseAsync = /* @__PURE__ */ _parseAsync(ZodRealError); const safeParse$1 = /* @__PURE__ */ _safeParse(ZodRealError); @@ -48102,7 +48102,7 @@ const safeEncodeAsync = /* @__PURE__ */ _safeEncodeAsync(ZodRealError); const safeDecodeAsync = /* @__PURE__ */ _safeDecodeAsync(ZodRealError); //#endregion -//#region ../../node_modules/zod/v4/classic/schemas.js +//#region ../../../../../node_modules/zod/v4/classic/schemas.js const ZodType$1 = /* @__PURE__ */ $constructor("ZodType", (inst, def) => { $ZodType.init(inst, def); Object.assign(inst["~standard"], { jsonSchema: { @@ -48734,7 +48734,7 @@ function preprocess(fn, schema) { } //#endregion -//#region ../../node_modules/@modelcontextprotocol/sdk/dist/esm/types.js +//#region ../../../../../node_modules/@modelcontextprotocol/sdk/dist/esm/types.js const LATEST_PROTOCOL_VERSION = "2025-11-25"; const DEFAULT_NEGOTIATED_PROTOCOL_VERSION = "2025-03-26"; const SUPPORTED_PROTOCOL_VERSIONS = [ @@ -49993,7 +49993,7 @@ var UrlElicitationRequiredError = class extends McpError { }; //#endregion -//#region ../../node_modules/@modelcontextprotocol/sdk/dist/esm/server/webStandardStreamableHttp.js +//#region ../../../../../node_modules/@modelcontextprotocol/sdk/dist/esm/server/webStandardStreamableHttp.js /** * Web Standards Streamable HTTP Server Transport * @@ -50551,7 +50551,7 @@ var WebStandardStreamableHTTPServerTransport = class { }; //#endregion -//#region ../../node_modules/@modelcontextprotocol/sdk/dist/esm/server/streamableHttp.js +//#region ../../../../../node_modules/@modelcontextprotocol/sdk/dist/esm/server/streamableHttp.js /** * Node.js HTTP Streamable HTTP Server Transport * @@ -50698,7 +50698,7 @@ var StreamableHTTPServerTransport = class { }; //#endregion -//#region ../../node_modules/zod/v3/helpers/util.js +//#region ../../../../../node_modules/zod/v3/helpers/util.js var util$1; (function(util) { util.assertEqual = (_) => {}; @@ -50795,7 +50795,7 @@ const getParsedType = (data) => { }; //#endregion -//#region ../../node_modules/zod/v3/ZodError.js +//#region ../../../../../node_modules/zod/v3/ZodError.js const ZodIssueCode = util$1.arrayToEnum([ "invalid_type", "invalid_literal", @@ -50895,7 +50895,7 @@ ZodError.create = (issues) => { }; //#endregion -//#region ../../node_modules/zod/v3/locales/en.js +//#region ../../../../../node_modules/zod/v3/locales/en.js const errorMap = (issue, _ctx) => { let message; switch (issue.code) { @@ -50973,14 +50973,14 @@ const errorMap = (issue, _ctx) => { }; //#endregion -//#region ../../node_modules/zod/v3/errors.js +//#region ../../../../../node_modules/zod/v3/errors.js let overrideErrorMap = errorMap; function getErrorMap() { return overrideErrorMap; } //#endregion -//#region ../../node_modules/zod/v3/helpers/parseUtil.js +//#region ../../../../../node_modules/zod/v3/helpers/parseUtil.js const makeIssue = (params) => { const { data, path, errorMaps, issueData } = params; const fullPath = [...path, ...issueData.path || []]; @@ -51085,7 +51085,7 @@ const isValid = (x) => x.status === "valid"; const isAsync = (x) => typeof Promise !== "undefined" && x instanceof Promise; //#endregion -//#region ../../node_modules/zod/v3/helpers/errorUtil.js +//#region ../../../../../node_modules/zod/v3/helpers/errorUtil.js var errorUtil; (function(errorUtil) { errorUtil.errToObj = (message) => typeof message === "string" ? { message } : message || {}; @@ -51093,7 +51093,7 @@ var errorUtil; })(errorUtil || (errorUtil = {})); //#endregion -//#region ../../node_modules/zod/v3/types.js +//#region ../../../../../node_modules/zod/v3/types.js var ParseInputLazyPath = class { constructor(parent, value, path, key) { this._cachedPath = []; @@ -54244,7 +54244,7 @@ const preprocessType = ZodEffects.createWithPreprocess; const pipelineType = ZodPipeline.create; //#endregion -//#region ../../node_modules/zod/v4/mini/schemas.js +//#region ../../../../../node_modules/zod/v4/mini/schemas.js const ZodMiniType = /* @__PURE__ */ $constructor("ZodMiniType", (inst, def) => { if (!inst._zod) throw new Error("Uninitialized schema in ZodMiniType."); $ZodType.init(inst, def); @@ -54290,7 +54290,7 @@ const describe = describe$2; const meta = meta$2; //#endregion -//#region ../../node_modules/@modelcontextprotocol/sdk/dist/esm/server/zod-compat.js +//#region ../../../../../node_modules/@modelcontextprotocol/sdk/dist/esm/server/zod-compat.js function isZ4Schema(s) { return !!s._zod; } @@ -54406,7 +54406,7 @@ function getLiteralValue(schema) { } //#endregion -//#region ../../node_modules/@modelcontextprotocol/sdk/dist/esm/experimental/tasks/interfaces.js +//#region ../../../../../node_modules/@modelcontextprotocol/sdk/dist/esm/experimental/tasks/interfaces.js /** * Experimental task interfaces for MCP SDK. * WARNING: These APIs are experimental and may change without notice. @@ -54424,7 +54424,7 @@ function isTerminal(status) { } //#endregion -//#region ../../node_modules/zod-to-json-schema/dist/esm/Options.js +//#region ../../../../../node_modules/zod-to-json-schema/dist/esm/Options.js const ignoreOverride = Symbol("Let zodToJsonSchema decide on which parser to use"); const defaultOptions$2 = { name: void 0, @@ -54459,7 +54459,7 @@ const getDefaultOptions = (options) => typeof options === "string" ? { }; //#endregion -//#region ../../node_modules/zod-to-json-schema/dist/esm/Refs.js +//#region ../../../../../node_modules/zod-to-json-schema/dist/esm/Refs.js const getRefs = (options) => { const _options = getDefaultOptions(options); const currentPath = _options.name !== void 0 ? [ @@ -54485,7 +54485,7 @@ const getRefs = (options) => { }; //#endregion -//#region ../../node_modules/zod-to-json-schema/dist/esm/errorMessages.js +//#region ../../../../../node_modules/zod-to-json-schema/dist/esm/errorMessages.js function addErrorMessage(res, key, errorMessage, refs) { if (!refs?.errorMessages) return; if (errorMessage) res.errorMessage = { @@ -54499,7 +54499,7 @@ function setResponseValueAndErrors(res, key, value, errorMessage, refs) { } //#endregion -//#region ../../node_modules/zod-to-json-schema/dist/esm/getRelativePath.js +//#region ../../../../../node_modules/zod-to-json-schema/dist/esm/getRelativePath.js const getRelativePath = (pathA, pathB) => { let i = 0; for (; i < pathA.length && i < pathB.length; i++) if (pathA[i] !== pathB[i]) break; @@ -54507,7 +54507,7 @@ const getRelativePath = (pathA, pathB) => { }; //#endregion -//#region ../../node_modules/zod-to-json-schema/dist/esm/parsers/any.js +//#region ../../../../../node_modules/zod-to-json-schema/dist/esm/parsers/any.js function parseAnyDef(refs) { if (refs.target !== "openAi") return {}; const anyDefinitionPath = [ @@ -54520,7 +54520,7 @@ function parseAnyDef(refs) { } //#endregion -//#region ../../node_modules/zod-to-json-schema/dist/esm/parsers/array.js +//#region ../../../../../node_modules/zod-to-json-schema/dist/esm/parsers/array.js function parseArrayDef(def, refs) { const res = { type: "array" }; if (def.type?._def && def.type?._def?.typeName !== ZodFirstPartyTypeKind.ZodAny) res.items = parseDef(def.type._def, { @@ -54537,7 +54537,7 @@ function parseArrayDef(def, refs) { } //#endregion -//#region ../../node_modules/zod-to-json-schema/dist/esm/parsers/bigint.js +//#region ../../../../../node_modules/zod-to-json-schema/dist/esm/parsers/bigint.js function parseBigintDef(def, refs) { const res = { type: "integer", @@ -54569,25 +54569,25 @@ function parseBigintDef(def, refs) { } //#endregion -//#region ../../node_modules/zod-to-json-schema/dist/esm/parsers/boolean.js +//#region ../../../../../node_modules/zod-to-json-schema/dist/esm/parsers/boolean.js function parseBooleanDef() { return { type: "boolean" }; } //#endregion -//#region ../../node_modules/zod-to-json-schema/dist/esm/parsers/branded.js +//#region ../../../../../node_modules/zod-to-json-schema/dist/esm/parsers/branded.js function parseBrandedDef(_def, refs) { return parseDef(_def.type._def, refs); } //#endregion -//#region ../../node_modules/zod-to-json-schema/dist/esm/parsers/catch.js +//#region ../../../../../node_modules/zod-to-json-schema/dist/esm/parsers/catch.js const parseCatchDef = (def, refs) => { return parseDef(def.innerType._def, refs); }; //#endregion -//#region ../../node_modules/zod-to-json-schema/dist/esm/parsers/date.js +//#region ../../../../../node_modules/zod-to-json-schema/dist/esm/parsers/date.js function parseDateDef(def, refs, overrideDateStrategy) { const strategy = overrideDateStrategy ?? refs.dateStrategy; if (Array.isArray(strategy)) return { anyOf: strategy.map((item, i) => parseDateDef(def, refs, item)) }; @@ -54622,7 +54622,7 @@ const integerDateParser = (def, refs) => { }; //#endregion -//#region ../../node_modules/zod-to-json-schema/dist/esm/parsers/default.js +//#region ../../../../../node_modules/zod-to-json-schema/dist/esm/parsers/default.js function parseDefaultDef(_def, refs) { return { ...parseDef(_def.innerType._def, refs), @@ -54631,13 +54631,13 @@ function parseDefaultDef(_def, refs) { } //#endregion -//#region ../../node_modules/zod-to-json-schema/dist/esm/parsers/effects.js +//#region ../../../../../node_modules/zod-to-json-schema/dist/esm/parsers/effects.js function parseEffectsDef(_def, refs) { return refs.effectStrategy === "input" ? parseDef(_def.schema._def, refs) : parseAnyDef(refs); } //#endregion -//#region ../../node_modules/zod-to-json-schema/dist/esm/parsers/enum.js +//#region ../../../../../node_modules/zod-to-json-schema/dist/esm/parsers/enum.js function parseEnumDef(def) { return { type: "string", @@ -54646,7 +54646,7 @@ function parseEnumDef(def) { } //#endregion -//#region ../../node_modules/zod-to-json-schema/dist/esm/parsers/intersection.js +//#region ../../../../../node_modules/zod-to-json-schema/dist/esm/parsers/intersection.js const isJsonSchema7AllOfType = (type) => { if ("type" in type && type.type === "string") return false; return "allOf" in type; @@ -54689,7 +54689,7 @@ function parseIntersectionDef(def, refs) { } //#endregion -//#region ../../node_modules/zod-to-json-schema/dist/esm/parsers/literal.js +//#region ../../../../../node_modules/zod-to-json-schema/dist/esm/parsers/literal.js function parseLiteralDef(def, refs) { const parsedType = typeof def.value; if (parsedType !== "bigint" && parsedType !== "number" && parsedType !== "boolean" && parsedType !== "string") return { type: Array.isArray(def.value) ? "array" : "object" }; @@ -54704,7 +54704,7 @@ function parseLiteralDef(def, refs) { } //#endregion -//#region ../../node_modules/zod-to-json-schema/dist/esm/parsers/string.js +//#region ../../../../../node_modules/zod-to-json-schema/dist/esm/parsers/string.js let emojiRegex = void 0; /** * Generated from the regular expressions found here as of 2024-05-22: @@ -54950,7 +54950,7 @@ function stringifyRegExpWithFlags(regex, refs) { } //#endregion -//#region ../../node_modules/zod-to-json-schema/dist/esm/parsers/record.js +//#region ../../../../../node_modules/zod-to-json-schema/dist/esm/parsers/record.js function parseRecordDef(def, refs) { if (refs.target === "openAi") console.warn("Warning: OpenAI may not support records in schemas! Try an array of key-value pairs instead."); if (refs.target === "openApi3" && def.keyType?._def.typeName === ZodFirstPartyTypeKind.ZodEnum) return { @@ -54998,7 +54998,7 @@ function parseRecordDef(def, refs) { } //#endregion -//#region ../../node_modules/zod-to-json-schema/dist/esm/parsers/map.js +//#region ../../../../../node_modules/zod-to-json-schema/dist/esm/parsers/map.js function parseMapDef(def, refs) { if (refs.mapStrategy === "record") return parseRecordDef(def, refs); return { @@ -55030,7 +55030,7 @@ function parseMapDef(def, refs) { } //#endregion -//#region ../../node_modules/zod-to-json-schema/dist/esm/parsers/nativeEnum.js +//#region ../../../../../node_modules/zod-to-json-schema/dist/esm/parsers/nativeEnum.js function parseNativeEnumDef(def) { const object = def.values; const actualValues = Object.keys(def.values).filter((key) => { @@ -55044,7 +55044,7 @@ function parseNativeEnumDef(def) { } //#endregion -//#region ../../node_modules/zod-to-json-schema/dist/esm/parsers/never.js +//#region ../../../../../node_modules/zod-to-json-schema/dist/esm/parsers/never.js function parseNeverDef(refs) { return refs.target === "openAi" ? void 0 : { not: parseAnyDef({ ...refs, @@ -55053,7 +55053,7 @@ function parseNeverDef(refs) { } //#endregion -//#region ../../node_modules/zod-to-json-schema/dist/esm/parsers/null.js +//#region ../../../../../node_modules/zod-to-json-schema/dist/esm/parsers/null.js function parseNullDef(refs) { return refs.target === "openApi3" ? { enum: ["null"], @@ -55062,7 +55062,7 @@ function parseNullDef(refs) { } //#endregion -//#region ../../node_modules/zod-to-json-schema/dist/esm/parsers/union.js +//#region ../../../../../node_modules/zod-to-json-schema/dist/esm/parsers/union.js const primitiveMappings = { ZodString: "string", ZodNumber: "number", @@ -55119,7 +55119,7 @@ const asAnyOf = (def, refs) => { }; //#endregion -//#region ../../node_modules/zod-to-json-schema/dist/esm/parsers/nullable.js +//#region ../../../../../node_modules/zod-to-json-schema/dist/esm/parsers/nullable.js function parseNullableDef(def, refs) { if ([ "ZodString", @@ -55160,7 +55160,7 @@ function parseNullableDef(def, refs) { } //#endregion -//#region ../../node_modules/zod-to-json-schema/dist/esm/parsers/number.js +//#region ../../../../../node_modules/zod-to-json-schema/dist/esm/parsers/number.js function parseNumberDef(def, refs) { const res = { type: "number" }; if (!def.checks) return res; @@ -55193,7 +55193,7 @@ function parseNumberDef(def, refs) { } //#endregion -//#region ../../node_modules/zod-to-json-schema/dist/esm/parsers/object.js +//#region ../../../../../node_modules/zod-to-json-schema/dist/esm/parsers/object.js function parseObjectDef(def, refs) { const forceOptionalIntoNullable = refs.target === "openAi"; const result = { @@ -55253,7 +55253,7 @@ function safeIsOptional(schema) { } //#endregion -//#region ../../node_modules/zod-to-json-schema/dist/esm/parsers/optional.js +//#region ../../../../../node_modules/zod-to-json-schema/dist/esm/parsers/optional.js const parseOptionalDef = (def, refs) => { if (refs.currentPath.toString() === refs.propertyPath?.toString()) return parseDef(def.innerType._def, refs); const innerSchema = parseDef(def.innerType._def, { @@ -55268,7 +55268,7 @@ const parseOptionalDef = (def, refs) => { }; //#endregion -//#region ../../node_modules/zod-to-json-schema/dist/esm/parsers/pipeline.js +//#region ../../../../../node_modules/zod-to-json-schema/dist/esm/parsers/pipeline.js const parsePipelineDef = (def, refs) => { if (refs.pipeStrategy === "input") return parseDef(def.in._def, refs); else if (refs.pipeStrategy === "output") return parseDef(def.out._def, refs); @@ -55291,13 +55291,13 @@ const parsePipelineDef = (def, refs) => { }; //#endregion -//#region ../../node_modules/zod-to-json-schema/dist/esm/parsers/promise.js +//#region ../../../../../node_modules/zod-to-json-schema/dist/esm/parsers/promise.js function parsePromiseDef(def, refs) { return parseDef(def.type._def, refs); } //#endregion -//#region ../../node_modules/zod-to-json-schema/dist/esm/parsers/set.js +//#region ../../../../../node_modules/zod-to-json-schema/dist/esm/parsers/set.js function parseSetDef(def, refs) { const schema = { type: "array", @@ -55313,7 +55313,7 @@ function parseSetDef(def, refs) { } //#endregion -//#region ../../node_modules/zod-to-json-schema/dist/esm/parsers/tuple.js +//#region ../../../../../node_modules/zod-to-json-schema/dist/esm/parsers/tuple.js function parseTupleDef(def, refs) { if (def.rest) return { type: "array", @@ -55347,25 +55347,25 @@ function parseTupleDef(def, refs) { } //#endregion -//#region ../../node_modules/zod-to-json-schema/dist/esm/parsers/undefined.js +//#region ../../../../../node_modules/zod-to-json-schema/dist/esm/parsers/undefined.js function parseUndefinedDef(refs) { return { not: parseAnyDef(refs) }; } //#endregion -//#region ../../node_modules/zod-to-json-schema/dist/esm/parsers/unknown.js +//#region ../../../../../node_modules/zod-to-json-schema/dist/esm/parsers/unknown.js function parseUnknownDef(refs) { return parseAnyDef(refs); } //#endregion -//#region ../../node_modules/zod-to-json-schema/dist/esm/parsers/readonly.js +//#region ../../../../../node_modules/zod-to-json-schema/dist/esm/parsers/readonly.js const parseReadonlyDef = (def, refs) => { return parseDef(def.innerType._def, refs); }; //#endregion -//#region ../../node_modules/zod-to-json-schema/dist/esm/selectParser.js +//#region ../../../../../node_modules/zod-to-json-schema/dist/esm/selectParser.js const selectParser = (def, typeName, refs) => { switch (typeName) { case ZodFirstPartyTypeKind.ZodString: return parseStringDef(def, refs); @@ -55409,7 +55409,7 @@ const selectParser = (def, typeName, refs) => { }; //#endregion -//#region ../../node_modules/zod-to-json-schema/dist/esm/parseDef.js +//#region ../../../../../node_modules/zod-to-json-schema/dist/esm/parseDef.js function parseDef(def, refs, forceResolution = false) { const seenItem = refs.seen.get(def); if (refs.override) { @@ -55459,7 +55459,7 @@ const addMeta = (def, refs, jsonSchema) => { }; //#endregion -//#region ../../node_modules/zod-to-json-schema/dist/esm/zodToJsonSchema.js +//#region ../../../../../node_modules/zod-to-json-schema/dist/esm/zodToJsonSchema.js const zodToJsonSchema = (schema, options) => { const refs = getRefs(options); let definitions = typeof options === "object" && options.definitions ? Object.entries(options.definitions).reduce((acc, [name, schema]) => ({ @@ -55523,7 +55523,7 @@ const zodToJsonSchema = (schema, options) => { }; //#endregion -//#region ../../node_modules/@modelcontextprotocol/sdk/dist/esm/server/zod-json-schema-compat.js +//#region ../../../../../node_modules/@modelcontextprotocol/sdk/dist/esm/server/zod-json-schema-compat.js function mapMiniTarget(t) { if (!t) return "draft-7"; if (t === "jsonSchema7" || t === "draft-7") return "draft-7"; @@ -55554,7 +55554,7 @@ function parseWithCompat(schema, data) { } //#endregion -//#region ../../node_modules/@modelcontextprotocol/sdk/dist/esm/shared/protocol.js +//#region ../../../../../node_modules/@modelcontextprotocol/sdk/dist/esm/shared/protocol.js /** * The default request timeout, in miliseconds. */ @@ -56405,7 +56405,7 @@ function mergeCapabilities(base, additional) { } //#endregion -//#region ../../node_modules/ajv/dist/compile/codegen/code.js +//#region ../../../../../node_modules/ajv/dist/compile/codegen/code.js var require_code$1 = /* @__PURE__ */ __commonJSMin(((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); exports.regexpCode = exports.getEsmExportName = exports.getProperty = exports.safeStringify = exports.stringify = exports.strConcat = exports.addCodeArg = exports.str = exports._ = exports.nil = exports._Code = exports.Name = exports.IDENTIFIER = exports._CodeOrName = void 0; @@ -56541,7 +56541,7 @@ var require_code$1 = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/ajv/dist/compile/codegen/scope.js +//#region ../../../../../node_modules/ajv/dist/compile/codegen/scope.js var require_scope = /* @__PURE__ */ __commonJSMin(((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); exports.ValueScope = exports.ValueScopeName = exports.Scope = exports.varKinds = exports.UsedValueState = void 0; @@ -56679,7 +56679,7 @@ var require_scope = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/ajv/dist/compile/codegen/index.js +//#region ../../../../../node_modules/ajv/dist/compile/codegen/index.js var require_codegen = /* @__PURE__ */ __commonJSMin(((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); exports.or = exports.and = exports.not = exports.CodeGen = exports.operators = exports.varKinds = exports.ValueScopeName = exports.ValueScope = exports.Scope = exports.Name = exports.regexpCode = exports.stringify = exports.getProperty = exports.nil = exports.strConcat = exports.str = exports._ = void 0; @@ -57349,7 +57349,7 @@ var require_codegen = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/ajv/dist/compile/util.js +//#region ../../../../../node_modules/ajv/dist/compile/util.js var require_util = /* @__PURE__ */ __commonJSMin(((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); exports.checkStrictMode = exports.getErrorPath = exports.Type = exports.useFunc = exports.setEvaluated = exports.evaluatedPropsToName = exports.mergeEvaluated = exports.eachItem = exports.unescapeJsonPointer = exports.escapeJsonPointer = exports.escapeFragment = exports.unescapeFragment = exports.schemaRefOrVal = exports.schemaHasRulesButRef = exports.schemaHasRules = exports.checkUnknownRules = exports.alwaysValidSchema = exports.toHash = void 0; @@ -57491,7 +57491,7 @@ var require_util = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/ajv/dist/compile/names.js +//#region ../../../../../node_modules/ajv/dist/compile/names.js var require_names = /* @__PURE__ */ __commonJSMin(((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); const codegen_1 = require_codegen(); @@ -57517,7 +57517,7 @@ var require_names = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/ajv/dist/compile/errors.js +//#region ../../../../../node_modules/ajv/dist/compile/errors.js var require_errors$1 = /* @__PURE__ */ __commonJSMin(((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); exports.extendErrors = exports.resetErrorsCount = exports.reportExtraError = exports.reportError = exports.keyword$DataError = exports.keywordError = void 0; @@ -57614,7 +57614,7 @@ var require_errors$1 = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/ajv/dist/compile/validate/boolSchema.js +//#region ../../../../../node_modules/ajv/dist/compile/validate/boolSchema.js var require_boolSchema = /* @__PURE__ */ __commonJSMin(((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); exports.boolOrEmptySchema = exports.topBoolOrEmptySchema = void 0; @@ -57657,7 +57657,7 @@ var require_boolSchema = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/ajv/dist/compile/rules.js +//#region ../../../../../node_modules/ajv/dist/compile/rules.js var require_rules = /* @__PURE__ */ __commonJSMin(((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); exports.getRules = exports.isJSONType = void 0; @@ -57716,7 +57716,7 @@ var require_rules = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/ajv/dist/compile/validate/applicability.js +//#region ../../../../../node_modules/ajv/dist/compile/validate/applicability.js var require_applicability = /* @__PURE__ */ __commonJSMin(((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); exports.shouldUseRule = exports.shouldUseGroup = exports.schemaHasRulesForType = void 0; @@ -57737,7 +57737,7 @@ var require_applicability = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/ajv/dist/compile/validate/dataType.js +//#region ../../../../../node_modules/ajv/dist/compile/validate/dataType.js var require_dataType = /* @__PURE__ */ __commonJSMin(((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); exports.reportTypeError = exports.checkDataTypes = exports.checkDataType = exports.coerceAndCheckDataType = exports.getJSONTypes = exports.getSchemaTypes = exports.DataType = void 0; @@ -57902,7 +57902,7 @@ var require_dataType = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/ajv/dist/compile/validate/defaults.js +//#region ../../../../../node_modules/ajv/dist/compile/validate/defaults.js var require_defaults = /* @__PURE__ */ __commonJSMin(((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); exports.assignDefaults = void 0; @@ -57929,7 +57929,7 @@ var require_defaults = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/ajv/dist/vocabularies/code.js +//#region ../../../../../node_modules/ajv/dist/vocabularies/code.js var require_code = /* @__PURE__ */ __commonJSMin(((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); exports.validateUnion = exports.validateArray = exports.usePattern = exports.callValidateCode = exports.schemaProperties = exports.allSchemaProperties = exports.noPropertyInData = exports.propertyInData = exports.isOwnProperty = exports.hasPropFunc = exports.reportMissingProp = exports.checkMissingProp = exports.checkReportMissingProp = void 0; @@ -58054,7 +58054,7 @@ var require_code = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/ajv/dist/compile/validate/keyword.js +//#region ../../../../../node_modules/ajv/dist/compile/validate/keyword.js var require_keyword = /* @__PURE__ */ __commonJSMin(((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); exports.validateKeywordUsage = exports.validSchemaType = exports.funcKeywordCode = exports.macroKeywordCode = void 0; @@ -58161,7 +58161,7 @@ var require_keyword = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/ajv/dist/compile/validate/subschema.js +//#region ../../../../../node_modules/ajv/dist/compile/validate/subschema.js var require_subschema = /* @__PURE__ */ __commonJSMin(((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); exports.extendSubschemaMode = exports.extendSubschemaData = exports.getSubschema = void 0; @@ -58229,7 +58229,7 @@ var require_subschema = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/fast-deep-equal/index.js +//#region ../../../../../node_modules/fast-deep-equal/index.js var require_fast_deep_equal = /* @__PURE__ */ __commonJSMin(((exports, module) => { module.exports = function equal(a, b) { if (a === b) return true; @@ -58260,7 +58260,7 @@ var require_fast_deep_equal = /* @__PURE__ */ __commonJSMin(((exports, module) = })); //#endregion -//#region ../../node_modules/json-schema-traverse/index.js +//#region ../../../../../node_modules/json-schema-traverse/index.js var require_json_schema_traverse = /* @__PURE__ */ __commonJSMin(((exports, module) => { var traverse = module.exports = function(schema, opts, cb) { if (typeof opts == "function") { @@ -58336,7 +58336,7 @@ var require_json_schema_traverse = /* @__PURE__ */ __commonJSMin(((exports, modu })); //#endregion -//#region ../../node_modules/ajv/dist/compile/resolve.js +//#region ../../../../../node_modules/ajv/dist/compile/resolve.js var require_resolve = /* @__PURE__ */ __commonJSMin(((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); exports.getSchemaRefs = exports.resolveUrl = exports.normalizeId = exports._getFullPath = exports.getFullPath = exports.inlineRef = void 0; @@ -58464,7 +58464,7 @@ var require_resolve = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/ajv/dist/compile/validate/index.js +//#region ../../../../../node_modules/ajv/dist/compile/validate/index.js var require_validate = /* @__PURE__ */ __commonJSMin(((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); exports.getData = exports.KeywordCxt = exports.validateFunctionCode = void 0; @@ -58884,7 +58884,7 @@ var require_validate = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/ajv/dist/runtime/validation_error.js +//#region ../../../../../node_modules/ajv/dist/runtime/validation_error.js var require_validation_error = /* @__PURE__ */ __commonJSMin(((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); var ValidationError = class extends Error { @@ -58898,7 +58898,7 @@ var require_validation_error = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/ajv/dist/compile/ref_error.js +//#region ../../../../../node_modules/ajv/dist/compile/ref_error.js var require_ref_error = /* @__PURE__ */ __commonJSMin(((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); const resolve_1 = require_resolve(); @@ -58913,7 +58913,7 @@ var require_ref_error = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/ajv/dist/compile/index.js +//#region ../../../../../node_modules/ajv/dist/compile/index.js var require_compile = /* @__PURE__ */ __commonJSMin(((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); exports.resolveSchema = exports.getCompilingSchema = exports.resolveRef = exports.compileSchema = exports.SchemaEnv = void 0; @@ -59128,7 +59128,7 @@ var require_compile = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/ajv/dist/refs/data.json +//#region ../../../../../node_modules/ajv/dist/refs/data.json var require_data = /* @__PURE__ */ __commonJSMin(((exports, module) => { module.exports = { "$id": "https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#", @@ -59144,7 +59144,7 @@ var require_data = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/fast-uri/lib/utils.js +//#region ../../../../../node_modules/fast-uri/lib/utils.js var require_utils = /* @__PURE__ */ __commonJSMin(((exports, module) => { /** @type {(value: string) => boolean} */ const isUUID = RegExp.prototype.test.bind(/^[\da-f]{8}-[\da-f]{4}-[\da-f]{4}-[\da-f]{4}-[\da-f]{12}$/iu); @@ -59424,7 +59424,7 @@ var require_utils = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/fast-uri/lib/schemes.js +//#region ../../../../../node_modules/fast-uri/lib/schemes.js var require_schemes = /* @__PURE__ */ __commonJSMin(((exports, module) => { const { isUUID } = require_utils(); const URN_REG = /([\da-z][\d\-a-z]{0,31}):((?:[\w!$'()*+,\-.:;=@]|%[\da-f]{2})+)/iu; @@ -59611,7 +59611,7 @@ var require_schemes = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/fast-uri/index.js +//#region ../../../../../node_modules/fast-uri/index.js var require_fast_uri = /* @__PURE__ */ __commonJSMin(((exports, module) => { const { normalizeIPv6, removeDotSegments, recomposeAuthority, normalizeComponentEncoding, isIPv4, nonSimpleDomain } = require_utils(); const { SCHEMES, getSchemeHandler } = require_schemes(); @@ -59843,7 +59843,7 @@ var require_fast_uri = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/ajv/dist/runtime/uri.js +//#region ../../../../../node_modules/ajv/dist/runtime/uri.js var require_uri = /* @__PURE__ */ __commonJSMin(((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); const uri = require_fast_uri(); @@ -59852,7 +59852,7 @@ var require_uri = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/ajv/dist/core.js +//#region ../../../../../node_modules/ajv/dist/core.js var require_core$1 = /* @__PURE__ */ __commonJSMin(((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); exports.CodeGen = exports.Name = exports.nil = exports.stringify = exports.str = exports._ = exports.KeywordCxt = void 0; @@ -60422,7 +60422,7 @@ var require_core$1 = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/ajv/dist/vocabularies/core/id.js +//#region ../../../../../node_modules/ajv/dist/vocabularies/core/id.js var require_id = /* @__PURE__ */ __commonJSMin(((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); const def = { @@ -60435,7 +60435,7 @@ var require_id = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/ajv/dist/vocabularies/core/ref.js +//#region ../../../../../node_modules/ajv/dist/vocabularies/core/ref.js var require_ref = /* @__PURE__ */ __commonJSMin(((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); exports.callRef = exports.getValidate = void 0; @@ -60539,7 +60539,7 @@ var require_ref = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/ajv/dist/vocabularies/core/index.js +//#region ../../../../../node_modules/ajv/dist/vocabularies/core/index.js var require_core = /* @__PURE__ */ __commonJSMin(((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); const id_1 = require_id(); @@ -60558,7 +60558,7 @@ var require_core = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/ajv/dist/vocabularies/validation/limitNumber.js +//#region ../../../../../node_modules/ajv/dist/vocabularies/validation/limitNumber.js var require_limitNumber = /* @__PURE__ */ __commonJSMin(((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); const codegen_1 = require_codegen(); @@ -60603,7 +60603,7 @@ var require_limitNumber = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/ajv/dist/vocabularies/validation/multipleOf.js +//#region ../../../../../node_modules/ajv/dist/vocabularies/validation/multipleOf.js var require_multipleOf = /* @__PURE__ */ __commonJSMin(((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); const codegen_1 = require_codegen(); @@ -60628,7 +60628,7 @@ var require_multipleOf = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/ajv/dist/runtime/ucs2length.js +//#region ../../../../../node_modules/ajv/dist/runtime/ucs2length.js var require_ucs2length = /* @__PURE__ */ __commonJSMin(((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); function ucs2length(str) { @@ -60651,7 +60651,7 @@ var require_ucs2length = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/ajv/dist/vocabularies/validation/limitLength.js +//#region ../../../../../node_modules/ajv/dist/vocabularies/validation/limitLength.js var require_limitLength = /* @__PURE__ */ __commonJSMin(((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); const codegen_1 = require_codegen(); @@ -60680,7 +60680,7 @@ var require_limitLength = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/ajv/dist/vocabularies/validation/pattern.js +//#region ../../../../../node_modules/ajv/dist/vocabularies/validation/pattern.js var require_pattern = /* @__PURE__ */ __commonJSMin(((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); const code_1 = require_code(); @@ -60714,7 +60714,7 @@ var require_pattern = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/ajv/dist/vocabularies/validation/limitProperties.js +//#region ../../../../../node_modules/ajv/dist/vocabularies/validation/limitProperties.js var require_limitProperties = /* @__PURE__ */ __commonJSMin(((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); const codegen_1 = require_codegen(); @@ -60740,7 +60740,7 @@ var require_limitProperties = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/ajv/dist/vocabularies/validation/required.js +//#region ../../../../../node_modules/ajv/dist/vocabularies/validation/required.js var require_required = /* @__PURE__ */ __commonJSMin(((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); const code_1 = require_code(); @@ -60808,7 +60808,7 @@ var require_required = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/ajv/dist/vocabularies/validation/limitItems.js +//#region ../../../../../node_modules/ajv/dist/vocabularies/validation/limitItems.js var require_limitItems = /* @__PURE__ */ __commonJSMin(((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); const codegen_1 = require_codegen(); @@ -60834,7 +60834,7 @@ var require_limitItems = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/ajv/dist/runtime/equal.js +//#region ../../../../../node_modules/ajv/dist/runtime/equal.js var require_equal = /* @__PURE__ */ __commonJSMin(((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); const equal = require_fast_deep_equal(); @@ -60843,7 +60843,7 @@ var require_equal = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/ajv/dist/vocabularies/validation/uniqueItems.js +//#region ../../../../../node_modules/ajv/dist/vocabularies/validation/uniqueItems.js var require_uniqueItems = /* @__PURE__ */ __commonJSMin(((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); const dataType_1 = require_dataType(); @@ -60908,7 +60908,7 @@ var require_uniqueItems = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/ajv/dist/vocabularies/validation/const.js +//#region ../../../../../node_modules/ajv/dist/vocabularies/validation/const.js var require_const = /* @__PURE__ */ __commonJSMin(((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); const codegen_1 = require_codegen(); @@ -60931,7 +60931,7 @@ var require_const = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/ajv/dist/vocabularies/validation/enum.js +//#region ../../../../../node_modules/ajv/dist/vocabularies/validation/enum.js var require_enum = /* @__PURE__ */ __commonJSMin(((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); const codegen_1 = require_codegen(); @@ -60976,7 +60976,7 @@ var require_enum = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/ajv/dist/vocabularies/validation/index.js +//#region ../../../../../node_modules/ajv/dist/vocabularies/validation/index.js var require_validation = /* @__PURE__ */ __commonJSMin(((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); const limitNumber_1 = require_limitNumber(); @@ -61013,7 +61013,7 @@ var require_validation = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/ajv/dist/vocabularies/applicator/additionalItems.js +//#region ../../../../../node_modules/ajv/dist/vocabularies/applicator/additionalItems.js var require_additionalItems = /* @__PURE__ */ __commonJSMin(((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); exports.validateAdditionalItems = void 0; @@ -61066,7 +61066,7 @@ var require_additionalItems = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/ajv/dist/vocabularies/applicator/items.js +//#region ../../../../../node_modules/ajv/dist/vocabularies/applicator/items.js var require_items = /* @__PURE__ */ __commonJSMin(((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); exports.validateTuple = void 0; @@ -61120,7 +61120,7 @@ var require_items = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/ajv/dist/vocabularies/applicator/prefixItems.js +//#region ../../../../../node_modules/ajv/dist/vocabularies/applicator/prefixItems.js var require_prefixItems = /* @__PURE__ */ __commonJSMin(((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); const items_1 = require_items(); @@ -61135,7 +61135,7 @@ var require_prefixItems = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/ajv/dist/vocabularies/applicator/items2020.js +//#region ../../../../../node_modules/ajv/dist/vocabularies/applicator/items2020.js var require_items2020 = /* @__PURE__ */ __commonJSMin(((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); const codegen_1 = require_codegen(); @@ -61164,7 +61164,7 @@ var require_items2020 = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/ajv/dist/vocabularies/applicator/contains.js +//#region ../../../../../node_modules/ajv/dist/vocabularies/applicator/contains.js var require_contains = /* @__PURE__ */ __commonJSMin(((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); const codegen_1 = require_codegen(); @@ -61250,7 +61250,7 @@ var require_contains = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/ajv/dist/vocabularies/applicator/dependencies.js +//#region ../../../../../node_modules/ajv/dist/vocabularies/applicator/dependencies.js var require_dependencies = /* @__PURE__ */ __commonJSMin(((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); exports.validateSchemaDeps = exports.validatePropertyDeps = exports.error = void 0; @@ -61332,7 +61332,7 @@ var require_dependencies = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/ajv/dist/vocabularies/applicator/propertyNames.js +//#region ../../../../../node_modules/ajv/dist/vocabularies/applicator/propertyNames.js var require_propertyNames = /* @__PURE__ */ __commonJSMin(((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); const codegen_1 = require_codegen(); @@ -61370,7 +61370,7 @@ var require_propertyNames = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/ajv/dist/vocabularies/applicator/additionalProperties.js +//#region ../../../../../node_modules/ajv/dist/vocabularies/applicator/additionalProperties.js var require_additionalProperties = /* @__PURE__ */ __commonJSMin(((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); const code_1 = require_code(); @@ -61461,7 +61461,7 @@ var require_additionalProperties = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/ajv/dist/vocabularies/applicator/properties.js +//#region ../../../../../node_modules/ajv/dist/vocabularies/applicator/properties.js var require_properties = /* @__PURE__ */ __commonJSMin(((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); const validate_1 = require_validate(); @@ -61508,7 +61508,7 @@ var require_properties = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/ajv/dist/vocabularies/applicator/patternProperties.js +//#region ../../../../../node_modules/ajv/dist/vocabularies/applicator/patternProperties.js var require_patternProperties = /* @__PURE__ */ __commonJSMin(((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); const code_1 = require_code(); @@ -61565,7 +61565,7 @@ var require_patternProperties = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/ajv/dist/vocabularies/applicator/not.js +//#region ../../../../../node_modules/ajv/dist/vocabularies/applicator/not.js var require_not = /* @__PURE__ */ __commonJSMin(((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); const util_1 = require_util(); @@ -61594,7 +61594,7 @@ var require_not = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/ajv/dist/vocabularies/applicator/anyOf.js +//#region ../../../../../node_modules/ajv/dist/vocabularies/applicator/anyOf.js var require_anyOf = /* @__PURE__ */ __commonJSMin(((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); const def = { @@ -61608,7 +61608,7 @@ var require_anyOf = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/ajv/dist/vocabularies/applicator/oneOf.js +//#region ../../../../../node_modules/ajv/dist/vocabularies/applicator/oneOf.js var require_oneOf = /* @__PURE__ */ __commonJSMin(((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); const codegen_1 = require_codegen(); @@ -61656,7 +61656,7 @@ var require_oneOf = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/ajv/dist/vocabularies/applicator/allOf.js +//#region ../../../../../node_modules/ajv/dist/vocabularies/applicator/allOf.js var require_allOf = /* @__PURE__ */ __commonJSMin(((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); const util_1 = require_util(); @@ -61683,7 +61683,7 @@ var require_allOf = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/ajv/dist/vocabularies/applicator/if.js +//#region ../../../../../node_modules/ajv/dist/vocabularies/applicator/if.js var require_if = /* @__PURE__ */ __commonJSMin(((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); const codegen_1 = require_codegen(); @@ -61741,7 +61741,7 @@ var require_if = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/ajv/dist/vocabularies/applicator/thenElse.js +//#region ../../../../../node_modules/ajv/dist/vocabularies/applicator/thenElse.js var require_thenElse = /* @__PURE__ */ __commonJSMin(((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); const util_1 = require_util(); @@ -61756,7 +61756,7 @@ var require_thenElse = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/ajv/dist/vocabularies/applicator/index.js +//#region ../../../../../node_modules/ajv/dist/vocabularies/applicator/index.js var require_applicator = /* @__PURE__ */ __commonJSMin(((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); const additionalItems_1 = require_additionalItems(); @@ -61798,7 +61798,7 @@ var require_applicator = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/ajv/dist/vocabularies/format/format.js +//#region ../../../../../node_modules/ajv/dist/vocabularies/format/format.js var require_format$1 = /* @__PURE__ */ __commonJSMin(((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); const codegen_1 = require_codegen(); @@ -61888,7 +61888,7 @@ var require_format$1 = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/ajv/dist/vocabularies/format/index.js +//#region ../../../../../node_modules/ajv/dist/vocabularies/format/index.js var require_format = /* @__PURE__ */ __commonJSMin(((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); const format = [require_format$1().default]; @@ -61896,7 +61896,7 @@ var require_format = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/ajv/dist/vocabularies/metadata.js +//#region ../../../../../node_modules/ajv/dist/vocabularies/metadata.js var require_metadata = /* @__PURE__ */ __commonJSMin(((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); exports.contentVocabulary = exports.metadataVocabulary = void 0; @@ -61917,7 +61917,7 @@ var require_metadata = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/ajv/dist/vocabularies/draft7.js +//#region ../../../../../node_modules/ajv/dist/vocabularies/draft7.js var require_draft7 = /* @__PURE__ */ __commonJSMin(((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); const core_1 = require_core(); @@ -61937,7 +61937,7 @@ var require_draft7 = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/ajv/dist/vocabularies/discriminator/types.js +//#region ../../../../../node_modules/ajv/dist/vocabularies/discriminator/types.js var require_types = /* @__PURE__ */ __commonJSMin(((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); exports.DiscrError = void 0; @@ -61949,7 +61949,7 @@ var require_types = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/ajv/dist/vocabularies/discriminator/index.js +//#region ../../../../../node_modules/ajv/dist/vocabularies/discriminator/index.js var require_discriminator = /* @__PURE__ */ __commonJSMin(((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); const codegen_1 = require_codegen(); @@ -62044,7 +62044,7 @@ var require_discriminator = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/ajv/dist/refs/json-schema-draft-07.json +//#region ../../../../../node_modules/ajv/dist/refs/json-schema-draft-07.json var require_json_schema_draft_07 = /* @__PURE__ */ __commonJSMin(((exports, module) => { module.exports = { "$schema": "http://json-schema.org/draft-07/schema#", @@ -62183,7 +62183,7 @@ var require_json_schema_draft_07 = /* @__PURE__ */ __commonJSMin(((exports, modu })); //#endregion -//#region ../../node_modules/ajv/dist/ajv.js +//#region ../../../../../node_modules/ajv/dist/ajv.js var require_ajv = /* @__PURE__ */ __commonJSMin(((exports, module) => { Object.defineProperty(exports, "__esModule", { value: true }); exports.MissingRefError = exports.ValidationError = exports.CodeGen = exports.Name = exports.nil = exports.stringify = exports.str = exports._ = exports.KeywordCxt = exports.Ajv = void 0; @@ -62276,7 +62276,7 @@ var require_ajv = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/ajv-formats/dist/formats.js +//#region ../../../../../node_modules/ajv-formats/dist/formats.js var require_formats = /* @__PURE__ */ __commonJSMin(((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); exports.formatNames = exports.fastFormats = exports.fullFormats = void 0; @@ -62465,7 +62465,7 @@ var require_formats = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/ajv-formats/dist/limit.js +//#region ../../../../../node_modules/ajv-formats/dist/limit.js var require_limit = /* @__PURE__ */ __commonJSMin(((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); exports.formatLimitDefinition = void 0; @@ -62545,7 +62545,7 @@ var require_limit = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/ajv-formats/dist/index.js +//#region ../../../../../node_modules/ajv-formats/dist/index.js var require_dist$3 = /* @__PURE__ */ __commonJSMin(((exports, module) => { Object.defineProperty(exports, "__esModule", { value: true }); const formats_1 = require_formats(); @@ -62580,7 +62580,7 @@ var require_dist$3 = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/@modelcontextprotocol/sdk/dist/esm/validation/ajv-provider.js +//#region ../../../../../node_modules/@modelcontextprotocol/sdk/dist/esm/validation/ajv-provider.js var import_ajv = /* @__PURE__ */ __toESM(require_ajv(), 1); var import_dist$3 = /* @__PURE__ */ __toESM(require_dist$3(), 1); function createDefaultAjvInstance() { @@ -62657,7 +62657,7 @@ var AjvJsonSchemaValidator = class { }; //#endregion -//#region ../../node_modules/@modelcontextprotocol/sdk/dist/esm/experimental/tasks/server.js +//#region ../../../../../node_modules/@modelcontextprotocol/sdk/dist/esm/experimental/tasks/server.js /** * Experimental server task features for MCP SDK. * WARNING: These APIs are experimental and may change without notice. @@ -62878,7 +62878,7 @@ var ExperimentalServerTasks = class { }; //#endregion -//#region ../../node_modules/@modelcontextprotocol/sdk/dist/esm/experimental/tasks/helpers.js +//#region ../../../../../node_modules/@modelcontextprotocol/sdk/dist/esm/experimental/tasks/helpers.js /** * Experimental task capability assertion helpers. * WARNING: These APIs are experimental and may change without notice. @@ -62930,7 +62930,7 @@ function assertClientRequestTaskCapability(requests, method, entityName) { } //#endregion -//#region ../../node_modules/@modelcontextprotocol/sdk/dist/esm/server/index.js +//#region ../../../../../node_modules/@modelcontextprotocol/sdk/dist/esm/server/index.js /** * An MCP server on top of a pluggable transport. * @@ -63272,7 +63272,7 @@ var Server = class extends Protocol { }; //#endregion -//#region ../../node_modules/@modelcontextprotocol/sdk/dist/esm/server/completable.js +//#region ../../../../../node_modules/@modelcontextprotocol/sdk/dist/esm/server/completable.js const COMPLETABLE_SYMBOL = Symbol.for("mcp.completable"); /** * Checks if a schema is completable (has completion metadata). @@ -63292,7 +63292,7 @@ var McpZodTypeKind; })(McpZodTypeKind || (McpZodTypeKind = {})); //#endregion -//#region ../../node_modules/@modelcontextprotocol/sdk/dist/esm/shared/toolNameValidation.js +//#region ../../../../../node_modules/@modelcontextprotocol/sdk/dist/esm/shared/toolNameValidation.js /** * Tool name validation utilities according to SEP: Specify Format for Tool Names * @@ -63364,7 +63364,7 @@ function validateAndWarnToolName(name) { } //#endregion -//#region ../../node_modules/@modelcontextprotocol/sdk/dist/esm/experimental/tasks/mcp-server.js +//#region ../../../../../node_modules/@modelcontextprotocol/sdk/dist/esm/experimental/tasks/mcp-server.js /** * Experimental McpServer task features for MCP SDK. * WARNING: These APIs are experimental and may change without notice. @@ -63396,7 +63396,7 @@ var ExperimentalMcpServerTasks = class { }; //#endregion -//#region ../../node_modules/@modelcontextprotocol/sdk/dist/esm/server/mcp.js +//#region ../../../../../node_modules/@modelcontextprotocol/sdk/dist/esm/server/mcp.js /** * High-level MCP server that provides a simpler API for working with resources, tools, and prompts. * For advanced usage (like sending notifications or setting custom request handlers), use the underlying @@ -64113,7 +64113,7 @@ function createMcpServer(deps) { } //#endregion -//#region ../../node_modules/address/dist/esm/address.js +//#region ../../../../../node_modules/address/dist/esm/address.js function getDefaultInterfaceName() { let val = "eth"; const platform = node_os.default.platform(); @@ -64167,7 +64167,7 @@ function ip(interfaceName) { } //#endregion -//#region ../../node_modules/detect-port/dist/esm/detect-port.js +//#region ../../../../../node_modules/detect-port/dist/esm/detect-port.js const debug$2 = (0, node_util.debuglog)("detect-port"); var IPAddressNotAvailableError = class extends Error { constructor(options) { @@ -64258,15 +64258,15 @@ function listen(port, hostname) { } //#endregion -//#region ../../node_modules/detect-port/dist/esm/wait-port.js +//#region ../../../../../node_modules/detect-port/dist/esm/wait-port.js const debug$1 = (0, node_util.debuglog)("detect-port:wait-port"); //#endregion -//#region ../../node_modules/detect-port/dist/esm/index.js +//#region ../../../../../node_modules/detect-port/dist/esm/index.js var esm_default = detectPort; //#endregion -//#region ../../node_modules/is-docker/index.js +//#region ../../../../../node_modules/is-docker/index.js let isDockerCached; function hasDockerEnv() { try { @@ -64289,7 +64289,7 @@ function isDocker() { } //#endregion -//#region ../../node_modules/is-inside-container/index.js +//#region ../../../../../node_modules/is-inside-container/index.js let cachedResult; const hasContainerEnv = () => { try { @@ -64305,7 +64305,7 @@ function isInsideContainer() { } //#endregion -//#region ../../node_modules/is-wsl/index.js +//#region ../../../../../node_modules/is-wsl/index.js const isWsl = () => { if (node_process.default.platform !== "linux") return false; if (node_os.default.release().toLowerCase().includes("microsoft")) { @@ -64321,7 +64321,7 @@ const isWsl = () => { var is_wsl_default = node_process.default.env.__IS_WSL_TEST__ ? isWsl : isWsl(); //#endregion -//#region ../../node_modules/wsl-utils/index.js +//#region ../../../../../node_modules/wsl-utils/index.js const wslDrivesMountPoint = (() => { const defaultMountPoint = "/mnt/"; let mountPoint; @@ -64351,7 +64351,7 @@ const powerShellPath = async () => { }; //#endregion -//#region ../../node_modules/define-lazy-prop/index.js +//#region ../../../../../node_modules/define-lazy-prop/index.js function defineLazyProperty(object, propertyName, valueGetter) { const define = (value) => Object.defineProperty(object, propertyName, { value, @@ -64374,7 +64374,7 @@ function defineLazyProperty(object, propertyName, valueGetter) { } //#endregion -//#region ../../node_modules/default-browser-id/index.js +//#region ../../../../../node_modules/default-browser-id/index.js const execFileAsync$3 = (0, node_util.promisify)(node_child_process.execFile); async function defaultBrowserId() { if (node_process.default.platform !== "darwin") throw new Error("macOS only"); @@ -64389,7 +64389,7 @@ async function defaultBrowserId() { } //#endregion -//#region ../../node_modules/run-applescript/index.js +//#region ../../../../../node_modules/run-applescript/index.js const execFileAsync$2 = (0, node_util.promisify)(node_child_process.execFile); async function runAppleScript(script, { humanReadableOutput = true, signal } = {}) { if (node_process.default.platform !== "darwin") throw new Error("macOS only"); @@ -64405,13 +64405,13 @@ async function runAppleScript(script, { humanReadableOutput = true, signal } = { } //#endregion -//#region ../../node_modules/bundle-name/index.js +//#region ../../../../../node_modules/bundle-name/index.js async function bundleName(bundleId) { return runAppleScript(`tell application "Finder" to set app_path to application file id "${bundleId}" as string\ntell application "System Events" to get value of property list item "CFBundleName" of property list file (app_path & ":Contents:Info.plist")`); } //#endregion -//#region ../../node_modules/default-browser/windows.js +//#region ../../../../../node_modules/default-browser/windows.js const execFileAsync$1 = (0, node_util.promisify)(node_child_process.execFile); const windowsBrowserProgIds = { MSEdgeHTM: { @@ -64502,7 +64502,7 @@ async function defaultBrowser$1(_execFileAsync = execFileAsync$1) { } //#endregion -//#region ../../node_modules/default-browser/index.js +//#region ../../../../../node_modules/default-browser/index.js const execFileAsync = (0, node_util.promisify)(node_child_process.execFile); const titleize = (string) => string.toLowerCase().replaceAll(/(?:^|\s|-)\S/g, (x) => x.toUpperCase()); async function defaultBrowser() { @@ -64530,7 +64530,7 @@ async function defaultBrowser() { } //#endregion -//#region ../../node_modules/open/index.js +//#region ../../../../../node_modules/open/index.js const execFile = (0, node_util.promisify)(node_child_process.default.execFile); const __dirname$1 = node_path.default.dirname((0, node_url.fileURLToPath)(require("url").pathToFileURL(__filename).href)); const localXdgOpenPath = node_path.default.join(__dirname$1, "xdg-open"); @@ -64732,7 +64732,7 @@ defineLazyProperty(apps, "browser", () => "browser"); defineLazyProperty(apps, "browserPrivate", () => "browserPrivate"); //#endregion -//#region ../../node_modules/debug/src/common.js +//#region ../../../../../node_modules/debug/src/common.js var require_common = /* @__PURE__ */ __commonJSMin(((exports, module) => { /** * This is the common logic for both the Node.js and web browser @@ -64935,7 +64935,7 @@ var require_common = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/debug/src/browser.js +//#region ../../../../../node_modules/debug/src/browser.js var require_browser = /* @__PURE__ */ __commonJSMin(((exports, module) => { /** * This is the web browser implementation of `debug()`. @@ -65132,7 +65132,7 @@ var require_browser = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/has-flag/index.js +//#region ../../../../../node_modules/has-flag/index.js var require_has_flag = /* @__PURE__ */ __commonJSMin(((exports, module) => { module.exports = (flag, argv = process.argv) => { const prefix = flag.startsWith("-") ? "" : flag.length === 1 ? "-" : "--"; @@ -65143,7 +65143,7 @@ var require_has_flag = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/supports-color/index.js +//#region ../../../../../node_modules/supports-color/index.js var require_supports_color = /* @__PURE__ */ __commonJSMin(((exports, module) => { const os$4 = require("os"); const tty$1 = require("tty"); @@ -65212,7 +65212,7 @@ var require_supports_color = /* @__PURE__ */ __commonJSMin(((exports, module) => })); //#endregion -//#region ../../node_modules/debug/src/node.js +//#region ../../../../../node_modules/debug/src/node.js var require_node = /* @__PURE__ */ __commonJSMin(((exports, module) => { /** * Module dependencies. @@ -65420,7 +65420,7 @@ var require_node = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/debug/src/index.js +//#region ../../../../../node_modules/debug/src/index.js var require_src$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => { /** * Detect Electron renderer / nwjs process, which is node, but we should @@ -65431,7 +65431,7 @@ var require_src$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => { })); //#endregion -//#region ../../node_modules/@kwsites/file-exists/dist/src/index.js +//#region ../../../../../node_modules/@kwsites/file-exists/dist/src/index.js var require_src = /* @__PURE__ */ __commonJSMin(((exports) => { var __importDefault = exports && exports.__importDefault || function(mod) { return mod && mod.__esModule ? mod : { "default": mod }; @@ -65487,7 +65487,7 @@ var require_src = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/@kwsites/file-exists/dist/index.js +//#region ../../../../../node_modules/@kwsites/file-exists/dist/index.js var require_dist$2 = /* @__PURE__ */ __commonJSMin(((exports) => { function __export(m) { for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; @@ -65497,7 +65497,7 @@ var require_dist$2 = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/@kwsites/promise-deferred/dist/index.js +//#region ../../../../../node_modules/@kwsites/promise-deferred/dist/index.js var require_dist$1 = /* @__PURE__ */ __commonJSMin(((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); exports.createDeferred = exports.deferred = void 0; @@ -65550,7 +65550,7 @@ var require_dist$1 = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/simple-git/dist/esm/index.js +//#region ../../../../../node_modules/simple-git/dist/esm/index.js var import_dist$1 = require_dist$2(); var import_src = /* @__PURE__ */ __toESM(require_src$1(), 1); var import_dist$2 = require_dist$1(); @@ -68814,7 +68814,7 @@ var Git = require_git(); init_git_response_error(); //#endregion -//#region ../../node_modules/slugify/slugify.js +//#region ../../../../../node_modules/slugify/slugify.js var require_slugify = /* @__PURE__ */ __commonJSMin(((exports, module) => { (function(name, root, factory) { if (typeof exports === "object") { @@ -68903,7 +68903,7 @@ function getPhasePattern(escapedPhaseNum, flags = "gim") { } //#endregion -//#region ../../node_modules/yaml/dist/nodes/identity.js +//#region ../../../../../node_modules/yaml/dist/nodes/identity.js var require_identity = /* @__PURE__ */ __commonJSMin(((exports) => { const ALIAS = Symbol.for("yaml.alias"); const DOC = Symbol.for("yaml.document"); @@ -68954,7 +68954,7 @@ var require_identity = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/visit.js +//#region ../../../../../node_modules/yaml/dist/visit.js var require_visit = /* @__PURE__ */ __commonJSMin(((exports) => { var identity = require_identity(); const BREAK = Symbol("break visit"); @@ -69145,7 +69145,7 @@ var require_visit = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/doc/directives.js +//#region ../../../../../node_modules/yaml/dist/doc/directives.js var require_directives = /* @__PURE__ */ __commonJSMin(((exports) => { var identity = require_identity(); var visit = require_visit(); @@ -69311,7 +69311,7 @@ var require_directives = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/doc/anchors.js +//#region ../../../../../node_modules/yaml/dist/doc/anchors.js var require_anchors = /* @__PURE__ */ __commonJSMin(((exports) => { var identity = require_identity(); var visit = require_visit(); @@ -69374,7 +69374,7 @@ var require_anchors = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/doc/applyReviver.js +//#region ../../../../../node_modules/yaml/dist/doc/applyReviver.js var require_applyReviver = /* @__PURE__ */ __commonJSMin(((exports) => { /** * Applies the JSON.parse reviver algorithm as defined in the ECMA-262 spec, @@ -69415,7 +69415,7 @@ var require_applyReviver = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/nodes/toJS.js +//#region ../../../../../node_modules/yaml/dist/nodes/toJS.js var require_toJS = /* @__PURE__ */ __commonJSMin(((exports) => { var identity = require_identity(); /** @@ -69453,7 +69453,7 @@ var require_toJS = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/nodes/Node.js +//#region ../../../../../node_modules/yaml/dist/nodes/Node.js var require_Node = /* @__PURE__ */ __commonJSMin(((exports) => { var applyReviver = require_applyReviver(); var identity = require_identity(); @@ -69488,7 +69488,7 @@ var require_Node = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/nodes/Alias.js +//#region ../../../../../node_modules/yaml/dist/nodes/Alias.js var require_Alias = /* @__PURE__ */ __commonJSMin(((exports) => { var anchors = require_anchors(); var visit = require_visit(); @@ -69582,7 +69582,7 @@ var require_Alias = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/nodes/Scalar.js +//#region ../../../../../node_modules/yaml/dist/nodes/Scalar.js var require_Scalar = /* @__PURE__ */ __commonJSMin(((exports) => { var identity = require_identity(); var Node = require_Node(); @@ -69610,7 +69610,7 @@ var require_Scalar = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/doc/createNode.js +//#region ../../../../../node_modules/yaml/dist/doc/createNode.js var require_createNode = /* @__PURE__ */ __commonJSMin(((exports) => { var Alias = require_Alias(); var identity = require_identity(); @@ -69674,7 +69674,7 @@ var require_createNode = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/nodes/Collection.js +//#region ../../../../../node_modules/yaml/dist/nodes/Collection.js var require_Collection = /* @__PURE__ */ __commonJSMin(((exports) => { var createNode = require_createNode(); var identity = require_identity(); @@ -69796,7 +69796,7 @@ var require_Collection = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/stringify/stringifyComment.js +//#region ../../../../../node_modules/yaml/dist/stringify/stringifyComment.js var require_stringifyComment = /* @__PURE__ */ __commonJSMin(((exports) => { /** * Stringifies a comment. @@ -69817,7 +69817,7 @@ var require_stringifyComment = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/stringify/foldFlowLines.js +//#region ../../../../../node_modules/yaml/dist/stringify/foldFlowLines.js var require_foldFlowLines = /* @__PURE__ */ __commonJSMin(((exports) => { const FOLD_FLOW = "flow"; const FOLD_BLOCK = "block"; @@ -69934,7 +69934,7 @@ var require_foldFlowLines = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/stringify/stringifyString.js +//#region ../../../../../node_modules/yaml/dist/stringify/stringifyString.js var require_stringifyString = /* @__PURE__ */ __commonJSMin(((exports) => { var Scalar = require_Scalar(); var foldFlowLines = require_foldFlowLines(); @@ -70159,7 +70159,7 @@ var require_stringifyString = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/stringify/stringify.js +//#region ../../../../../node_modules/yaml/dist/stringify/stringify.js var require_stringify = /* @__PURE__ */ __commonJSMin(((exports) => { var anchors = require_anchors(); var identity = require_identity(); @@ -70267,7 +70267,7 @@ var require_stringify = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/stringify/stringifyPair.js +//#region ../../../../../node_modules/yaml/dist/stringify/stringifyPair.js var require_stringifyPair = /* @__PURE__ */ __commonJSMin(((exports) => { var identity = require_identity(); var Scalar = require_Scalar(); @@ -70365,7 +70365,7 @@ var require_stringifyPair = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/log.js +//#region ../../../../../node_modules/yaml/dist/log.js var require_log = /* @__PURE__ */ __commonJSMin(((exports) => { var node_process$3 = require("process"); function debug(logLevel, ...messages) { @@ -70380,7 +70380,7 @@ var require_log = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/schema/yaml-1.1/merge.js +//#region ../../../../../node_modules/yaml/dist/schema/yaml-1.1/merge.js var require_merge = /* @__PURE__ */ __commonJSMin(((exports) => { var identity = require_identity(); var Scalar = require_Scalar(); @@ -70421,7 +70421,7 @@ var require_merge = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/nodes/addPairToJSMap.js +//#region ../../../../../node_modules/yaml/dist/nodes/addPairToJSMap.js var require_addPairToJSMap = /* @__PURE__ */ __commonJSMin(((exports) => { var log = require_log(); var merge = require_merge(); @@ -70473,7 +70473,7 @@ var require_addPairToJSMap = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/nodes/Pair.js +//#region ../../../../../node_modules/yaml/dist/nodes/Pair.js var require_Pair = /* @__PURE__ */ __commonJSMin(((exports) => { var createNode = require_createNode(); var stringifyPair = require_stringifyPair(); @@ -70507,7 +70507,7 @@ var require_Pair = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/stringify/stringifyCollection.js +//#region ../../../../../node_modules/yaml/dist/stringify/stringifyCollection.js var require_stringifyCollection = /* @__PURE__ */ __commonJSMin(((exports) => { var identity = require_identity(); var stringify = require_stringify(); @@ -70622,7 +70622,7 @@ var require_stringifyCollection = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/nodes/YAMLMap.js +//#region ../../../../../node_modules/yaml/dist/nodes/YAMLMap.js var require_YAMLMap = /* @__PURE__ */ __commonJSMin(((exports) => { var stringifyCollection = require_stringifyCollection(); var addPairToJSMap = require_addPairToJSMap(); @@ -70732,7 +70732,7 @@ var require_YAMLMap = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/schema/common/map.js +//#region ../../../../../node_modules/yaml/dist/schema/common/map.js var require_map = /* @__PURE__ */ __commonJSMin(((exports) => { var identity = require_identity(); var YAMLMap = require_YAMLMap(); @@ -70751,7 +70751,7 @@ var require_map = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/nodes/YAMLSeq.js +//#region ../../../../../node_modules/yaml/dist/nodes/YAMLSeq.js var require_YAMLSeq = /* @__PURE__ */ __commonJSMin(((exports) => { var createNode = require_createNode(); var stringifyCollection = require_stringifyCollection(); @@ -70858,7 +70858,7 @@ var require_YAMLSeq = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/schema/common/seq.js +//#region ../../../../../node_modules/yaml/dist/schema/common/seq.js var require_seq = /* @__PURE__ */ __commonJSMin(((exports) => { var identity = require_identity(); var YAMLSeq = require_YAMLSeq(); @@ -70877,7 +70877,7 @@ var require_seq = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/schema/common/string.js +//#region ../../../../../node_modules/yaml/dist/schema/common/string.js var require_string = /* @__PURE__ */ __commonJSMin(((exports) => { var stringifyString = require_stringifyString(); const string = { @@ -70894,7 +70894,7 @@ var require_string = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/schema/common/null.js +//#region ../../../../../node_modules/yaml/dist/schema/common/null.js var require_null = /* @__PURE__ */ __commonJSMin(((exports) => { var Scalar = require_Scalar(); const nullTag = { @@ -70910,7 +70910,7 @@ var require_null = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/schema/core/bool.js +//#region ../../../../../node_modules/yaml/dist/schema/core/bool.js var require_bool$1 = /* @__PURE__ */ __commonJSMin(((exports) => { var Scalar = require_Scalar(); const boolTag = { @@ -70930,7 +70930,7 @@ var require_bool$1 = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/stringify/stringifyNumber.js +//#region ../../../../../node_modules/yaml/dist/stringify/stringifyNumber.js var require_stringifyNumber = /* @__PURE__ */ __commonJSMin(((exports) => { function stringifyNumber({ format, minFractionDigits, tag, value }) { if (typeof value === "bigint") return String(value); @@ -70952,7 +70952,7 @@ var require_stringifyNumber = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/schema/core/float.js +//#region ../../../../../node_modules/yaml/dist/schema/core/float.js var require_float$1 = /* @__PURE__ */ __commonJSMin(((exports) => { var Scalar = require_Scalar(); var stringifyNumber = require_stringifyNumber(); @@ -70995,7 +70995,7 @@ var require_float$1 = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/schema/core/int.js +//#region ../../../../../node_modules/yaml/dist/schema/core/int.js var require_int$1 = /* @__PURE__ */ __commonJSMin(((exports) => { var stringifyNumber = require_stringifyNumber(); const intIdentify = (value) => typeof value === "bigint" || Number.isInteger(value); @@ -71037,7 +71037,7 @@ var require_int$1 = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/schema/core/schema.js +//#region ../../../../../node_modules/yaml/dist/schema/core/schema.js var require_schema$2 = /* @__PURE__ */ __commonJSMin(((exports) => { var map = require_map(); var _null = require_null(); @@ -71063,7 +71063,7 @@ var require_schema$2 = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/schema/json/schema.js +//#region ../../../../../node_modules/yaml/dist/schema/json/schema.js var require_schema$1 = /* @__PURE__ */ __commonJSMin(((exports) => { var Scalar = require_Scalar(); var map = require_map(); @@ -71127,7 +71127,7 @@ var require_schema$1 = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/schema/yaml-1.1/binary.js +//#region ../../../../../node_modules/yaml/dist/schema/yaml-1.1/binary.js var require_binary = /* @__PURE__ */ __commonJSMin(((exports) => { var node_buffer$1 = require("buffer"); var Scalar = require_Scalar(); @@ -71177,7 +71177,7 @@ var require_binary = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/schema/yaml-1.1/pairs.js +//#region ../../../../../node_modules/yaml/dist/schema/yaml-1.1/pairs.js var require_pairs = /* @__PURE__ */ __commonJSMin(((exports) => { var identity = require_identity(); var Pair = require_Pair(); @@ -71238,7 +71238,7 @@ var require_pairs = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/schema/yaml-1.1/omap.js +//#region ../../../../../node_modules/yaml/dist/schema/yaml-1.1/omap.js var require_omap = /* @__PURE__ */ __commonJSMin(((exports) => { var identity = require_identity(); var toJS = require_toJS(); @@ -71302,7 +71302,7 @@ var require_omap = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/schema/yaml-1.1/bool.js +//#region ../../../../../node_modules/yaml/dist/schema/yaml-1.1/bool.js var require_bool = /* @__PURE__ */ __commonJSMin(((exports) => { var Scalar = require_Scalar(); function boolStringify({ value, source }, ctx) { @@ -71330,7 +71330,7 @@ var require_bool = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/schema/yaml-1.1/float.js +//#region ../../../../../node_modules/yaml/dist/schema/yaml-1.1/float.js var require_float = /* @__PURE__ */ __commonJSMin(((exports) => { var Scalar = require_Scalar(); var stringifyNumber = require_stringifyNumber(); @@ -71376,7 +71376,7 @@ var require_float = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/schema/yaml-1.1/int.js +//#region ../../../../../node_modules/yaml/dist/schema/yaml-1.1/int.js var require_int = /* @__PURE__ */ __commonJSMin(((exports) => { var stringifyNumber = require_stringifyNumber(); const intIdentify = (value) => typeof value === "bigint" || Number.isInteger(value); @@ -71452,7 +71452,7 @@ var require_int = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/schema/yaml-1.1/set.js +//#region ../../../../../node_modules/yaml/dist/schema/yaml-1.1/set.js var require_set = /* @__PURE__ */ __commonJSMin(((exports) => { var identity = require_identity(); var Pair = require_Pair(); @@ -71521,7 +71521,7 @@ var require_set = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/schema/yaml-1.1/timestamp.js +//#region ../../../../../node_modules/yaml/dist/schema/yaml-1.1/timestamp.js var require_timestamp = /* @__PURE__ */ __commonJSMin(((exports) => { var stringifyNumber = require_stringifyNumber(); /** Internal types handle bigint as number, because TS can't figure it out. */ @@ -71605,7 +71605,7 @@ var require_timestamp = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/schema/yaml-1.1/schema.js +//#region ../../../../../node_modules/yaml/dist/schema/yaml-1.1/schema.js var require_schema = /* @__PURE__ */ __commonJSMin(((exports) => { var map = require_map(); var _null = require_null(); @@ -71647,7 +71647,7 @@ var require_schema = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/schema/tags.js +//#region ../../../../../node_modules/yaml/dist/schema/tags.js var require_tags = /* @__PURE__ */ __commonJSMin(((exports) => { var map = require_map(); var _null = require_null(); @@ -71732,7 +71732,7 @@ var require_tags = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/schema/Schema.js +//#region ../../../../../node_modules/yaml/dist/schema/Schema.js var require_Schema = /* @__PURE__ */ __commonJSMin(((exports) => { var identity = require_identity(); var map = require_map(); @@ -71762,7 +71762,7 @@ var require_Schema = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/stringify/stringifyDocument.js +//#region ../../../../../node_modules/yaml/dist/stringify/stringifyDocument.js var require_stringifyDocument = /* @__PURE__ */ __commonJSMin(((exports) => { var identity = require_identity(); var stringify = require_stringify(); @@ -71824,7 +71824,7 @@ var require_stringifyDocument = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/doc/Document.js +//#region ../../../../../node_modules/yaml/dist/doc/Document.js var require_Document = /* @__PURE__ */ __commonJSMin(((exports) => { var Alias = require_Alias(); var Collection = require_Collection(); @@ -72106,7 +72106,7 @@ var require_Document = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/errors.js +//#region ../../../../../node_modules/yaml/dist/errors.js var require_errors = /* @__PURE__ */ __commonJSMin(((exports) => { var YAMLError = class extends Error { constructor(name, pos, code, message) { @@ -72160,7 +72160,7 @@ var require_errors = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/compose/resolve-props.js +//#region ../../../../../node_modules/yaml/dist/compose/resolve-props.js var require_resolve_props = /* @__PURE__ */ __commonJSMin(((exports) => { function resolveProps(tokens, { flow, indicator, next, offset, onError, parentIndent, startOnNewline }) { let spaceBefore = false; @@ -72268,7 +72268,7 @@ var require_resolve_props = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/compose/util-contains-newline.js +//#region ../../../../../node_modules/yaml/dist/compose/util-contains-newline.js var require_util_contains_newline = /* @__PURE__ */ __commonJSMin(((exports) => { function containsNewline(key) { if (!key) return null; @@ -72298,7 +72298,7 @@ var require_util_contains_newline = /* @__PURE__ */ __commonJSMin(((exports) => })); //#endregion -//#region ../../node_modules/yaml/dist/compose/util-flow-indent-check.js +//#region ../../../../../node_modules/yaml/dist/compose/util-flow-indent-check.js var require_util_flow_indent_check = /* @__PURE__ */ __commonJSMin(((exports) => { var utilContainsNewline = require_util_contains_newline(); function flowIndentCheck(indent, fc, onError) { @@ -72311,7 +72311,7 @@ var require_util_flow_indent_check = /* @__PURE__ */ __commonJSMin(((exports) => })); //#endregion -//#region ../../node_modules/yaml/dist/compose/util-map-includes.js +//#region ../../../../../node_modules/yaml/dist/compose/util-map-includes.js var require_util_map_includes = /* @__PURE__ */ __commonJSMin(((exports) => { var identity = require_identity(); function mapIncludes(ctx, items, search) { @@ -72324,7 +72324,7 @@ var require_util_map_includes = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/compose/resolve-block-map.js +//#region ../../../../../node_modules/yaml/dist/compose/resolve-block-map.js var require_resolve_block_map = /* @__PURE__ */ __commonJSMin(((exports) => { var Pair = require_Pair(); var YAMLMap = require_YAMLMap(); @@ -72409,7 +72409,7 @@ var require_resolve_block_map = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/compose/resolve-block-seq.js +//#region ../../../../../node_modules/yaml/dist/compose/resolve-block-seq.js var require_resolve_block_seq = /* @__PURE__ */ __commonJSMin(((exports) => { var YAMLSeq = require_YAMLSeq(); var resolveProps = require_resolve_props(); @@ -72452,7 +72452,7 @@ var require_resolve_block_seq = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/compose/resolve-end.js +//#region ../../../../../node_modules/yaml/dist/compose/resolve-end.js var require_resolve_end = /* @__PURE__ */ __commonJSMin(((exports) => { function resolveEnd(end, offset, reqSpace, onError) { let comment = ""; @@ -72491,7 +72491,7 @@ var require_resolve_end = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/compose/resolve-flow-collection.js +//#region ../../../../../node_modules/yaml/dist/compose/resolve-flow-collection.js var require_resolve_flow_collection = /* @__PURE__ */ __commonJSMin(((exports) => { var identity = require_identity(); var Pair = require_Pair(); @@ -72647,7 +72647,7 @@ var require_resolve_flow_collection = /* @__PURE__ */ __commonJSMin(((exports) = })); //#endregion -//#region ../../node_modules/yaml/dist/compose/compose-collection.js +//#region ../../../../../node_modules/yaml/dist/compose/compose-collection.js var require_compose_collection = /* @__PURE__ */ __commonJSMin(((exports) => { var identity = require_identity(); var Scalar = require_Scalar(); @@ -72700,7 +72700,7 @@ var require_compose_collection = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/compose/resolve-block-scalar.js +//#region ../../../../../node_modules/yaml/dist/compose/resolve-block-scalar.js var require_resolve_block_scalar = /* @__PURE__ */ __commonJSMin(((exports) => { var Scalar = require_Scalar(); function resolveBlockScalar(ctx, scalar, onError) { @@ -72876,7 +72876,7 @@ var require_resolve_block_scalar = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/compose/resolve-flow-scalar.js +//#region ../../../../../node_modules/yaml/dist/compose/resolve-flow-scalar.js var require_resolve_flow_scalar = /* @__PURE__ */ __commonJSMin(((exports) => { var Scalar = require_Scalar(); var resolveEnd = require_resolve_end(); @@ -73083,7 +73083,7 @@ var require_resolve_flow_scalar = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/compose/compose-scalar.js +//#region ../../../../../node_modules/yaml/dist/compose/compose-scalar.js var require_compose_scalar = /* @__PURE__ */ __commonJSMin(((exports) => { var identity = require_identity(); var Scalar = require_Scalar(); @@ -73143,7 +73143,7 @@ var require_compose_scalar = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/compose/util-empty-scalar-position.js +//#region ../../../../../node_modules/yaml/dist/compose/util-empty-scalar-position.js var require_util_empty_scalar_position = /* @__PURE__ */ __commonJSMin(((exports) => { function emptyScalarPosition(offset, before, pos) { if (before) { @@ -73171,7 +73171,7 @@ var require_util_empty_scalar_position = /* @__PURE__ */ __commonJSMin(((exports })); //#endregion -//#region ../../node_modules/yaml/dist/compose/compose-node.js +//#region ../../../../../node_modules/yaml/dist/compose/compose-node.js var require_compose_node = /* @__PURE__ */ __commonJSMin(((exports) => { var Alias = require_Alias(); var identity = require_identity(); @@ -73257,7 +73257,7 @@ var require_compose_node = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/compose/compose-doc.js +//#region ../../../../../node_modules/yaml/dist/compose/compose-doc.js var require_compose_doc = /* @__PURE__ */ __commonJSMin(((exports) => { var Document = require_Document(); var composeNode = require_compose_node(); @@ -73300,7 +73300,7 @@ var require_compose_doc = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/compose/composer.js +//#region ../../../../../node_modules/yaml/dist/compose/composer.js var require_composer = /* @__PURE__ */ __commonJSMin(((exports) => { var node_process$2 = require("process"); var directives = require_directives(); @@ -73499,7 +73499,7 @@ var require_composer = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/parse/cst-scalar.js +//#region ../../../../../node_modules/yaml/dist/parse/cst-scalar.js var require_cst_scalar = /* @__PURE__ */ __commonJSMin(((exports) => { var resolveBlockScalar = require_resolve_block_scalar(); var resolveFlowScalar = require_resolve_flow_scalar(); @@ -73767,7 +73767,7 @@ var require_cst_scalar = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/parse/cst-stringify.js +//#region ../../../../../node_modules/yaml/dist/parse/cst-stringify.js var require_cst_stringify = /* @__PURE__ */ __commonJSMin(((exports) => { /** * Stringify a CST document, token, or collection item @@ -73819,7 +73819,7 @@ var require_cst_stringify = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/parse/cst-visit.js +//#region ../../../../../node_modules/yaml/dist/parse/cst-visit.js var require_cst_visit = /* @__PURE__ */ __commonJSMin(((exports) => { const BREAK = Symbol("break visit"); const SKIP = Symbol("skip children"); @@ -73911,7 +73911,7 @@ var require_cst_visit = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/parse/cst.js +//#region ../../../../../node_modules/yaml/dist/parse/cst.js var require_cst = /* @__PURE__ */ __commonJSMin(((exports) => { var cstScalar = require_cst_scalar(); var cstStringify = require_cst_stringify(); @@ -73991,7 +73991,7 @@ var require_cst = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/parse/lexer.js +//#region ../../../../../node_modules/yaml/dist/parse/lexer.js var require_lexer = /* @__PURE__ */ __commonJSMin(((exports) => { var cst = require_cst(); function isEmpty(ch) { @@ -74511,7 +74511,7 @@ var require_lexer = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/parse/line-counter.js +//#region ../../../../../node_modules/yaml/dist/parse/line-counter.js var require_line_counter = /* @__PURE__ */ __commonJSMin(((exports) => { /** * Tracks newlines during parsing in order to provide an efficient API for @@ -74559,7 +74559,7 @@ var require_line_counter = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/parse/parser.js +//#region ../../../../../node_modules/yaml/dist/parse/parser.js var require_parser = /* @__PURE__ */ __commonJSMin(((exports) => { var node_process$1 = require("process"); var cst = require_cst(); @@ -75416,7 +75416,7 @@ var require_parser = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/public-api.js +//#region ../../../../../node_modules/yaml/dist/public-api.js var require_public_api = /* @__PURE__ */ __commonJSMin(((exports) => { var composer = require_composer(); var Document = require_Document(); @@ -75504,7 +75504,7 @@ var require_public_api = /* @__PURE__ */ __commonJSMin(((exports) => { })); //#endregion -//#region ../../node_modules/yaml/dist/index.js +//#region ../../../../../node_modules/yaml/dist/index.js var require_dist = /* @__PURE__ */ __commonJSMin(((exports) => { var composer = require_composer(); var Document = require_Document(); @@ -75583,7 +75583,7 @@ function extractFrontmatter(content) { */ //#endregion -//#region ../../node_modules/escape-string-regexp/index.js +//#region ../../../../../node_modules/escape-string-regexp/index.js function escapeStringRegexp(string) { if (typeof string !== "string") throw new TypeError("Expected a string"); return string.replace(/[|\\{}()[\]^$+*?.]/g, "\\$&").replace(/-/g, "\\x2d"); @@ -75656,6 +75656,12 @@ function stateReplaceField(content, fieldName, newValue) { * Ported from maxsim/bin/lib/template.cjs */ +//#endregion +//#region ../cli/src/core/skill-context.ts +/** +* Skill Context — Provides MAXSIM state to skills via a single CLI call +*/ + //#endregion //#region ../cli/src/core/init.ts /** @@ -75665,7 +75671,7 @@ function stateReplaceField(content, fieldName, newValue) { */ //#endregion -//#region ../../node_modules/readdirp/esm/index.js +//#region ../../../../../node_modules/readdirp/esm/index.js const EntryTypes = { FILE_TYPE: "files", DIR_TYPE: "directories", @@ -75883,7 +75889,7 @@ function readdirp(root, options = {}) { } //#endregion -//#region ../../node_modules/chokidar/esm/handler.js +//#region ../../../../../node_modules/chokidar/esm/handler.js const STR_DATA = "data"; const STR_END = "end"; const STR_CLOSE = "close"; @@ -76213,14 +76219,14 @@ const FsWatchInstances = /* @__PURE__ */ new Map(); * @param emitRaw emits raw event data * @returns {NativeFsWatcher} */ -function createFsWatchInstance(path$37, options, listener, errHandler, emitRaw) { +function createFsWatchInstance(path$38, options, listener, errHandler, emitRaw) { const handleEvent = (rawEvent, evPath) => { - listener(path$37); - emitRaw(rawEvent, evPath, { watchedPath: path$37 }); - if (evPath && path$37 !== evPath) fsWatchBroadcast(path.resolve(path$37, evPath), KEY_LISTENERS, path.join(path$37, evPath)); + listener(path$38); + emitRaw(rawEvent, evPath, { watchedPath: path$38 }); + if (evPath && path$38 !== evPath) fsWatchBroadcast(path.resolve(path$38, evPath), KEY_LISTENERS, path.join(path$38, evPath)); }; try { - return (0, fs.watch)(path$37, { persistent: options.persistent }, handleEvent); + return (0, fs.watch)(path$38, { persistent: options.persistent }, handleEvent); } catch (error) { errHandler(error); return; @@ -76245,12 +76251,12 @@ const fsWatchBroadcast = (fullPath, listenerType, val1, val2, val3) => { * @param options to be passed to fs_watch * @param handlers container for event listener functions */ -const setFsWatchListener = (path$41, fullPath, options, handlers) => { +const setFsWatchListener = (path$42, fullPath, options, handlers) => { const { listener, errHandler, rawEmitter } = handlers; let cont = FsWatchInstances.get(fullPath); let watcher; if (!options.persistent) { - watcher = createFsWatchInstance(path$41, options, listener, errHandler, rawEmitter); + watcher = createFsWatchInstance(path$42, options, listener, errHandler, rawEmitter); if (!watcher) return; return watcher.close.bind(watcher); } @@ -76259,13 +76265,13 @@ const setFsWatchListener = (path$41, fullPath, options, handlers) => { addAndConvert(cont, KEY_ERR, errHandler); addAndConvert(cont, KEY_RAW, rawEmitter); } else { - watcher = createFsWatchInstance(path$41, options, fsWatchBroadcast.bind(null, fullPath, KEY_LISTENERS), errHandler, fsWatchBroadcast.bind(null, fullPath, KEY_RAW)); + watcher = createFsWatchInstance(path$42, options, fsWatchBroadcast.bind(null, fullPath, KEY_LISTENERS), errHandler, fsWatchBroadcast.bind(null, fullPath, KEY_RAW)); if (!watcher) return; watcher.on(EV.ERROR, async (error) => { const broadcastErr = fsWatchBroadcast.bind(null, fullPath, KEY_ERR); if (cont) cont.watcherUnusable = true; if (isWindows && error.code === "EPERM") try { - await (await (0, fs_promises.open)(path$41, "r")).close(); + await (await (0, fs_promises.open)(path$42, "r")).close(); broadcastErr(error); } catch (err) {} else broadcastErr(error); @@ -76301,7 +76307,7 @@ const FsWatchFileInstances = /* @__PURE__ */ new Map(); * @param handlers container for event listener functions * @returns closer */ -const setFsWatchFileListener = (path$42, fullPath, options, handlers) => { +const setFsWatchFileListener = (path$43, fullPath, options, handlers) => { const { listener, rawEmitter } = handlers; let cont = FsWatchFileInstances.get(fullPath); const copts = cont && cont.options; @@ -76325,7 +76331,7 @@ const setFsWatchFileListener = (path$42, fullPath, options, handlers) => { }); }); const currmtime = curr.mtimeMs; - if (curr.size !== prev.size || currmtime > prev.mtimeMs || currmtime === 0) foreach(cont.listeners, (listener) => listener(path$42, curr)); + if (curr.size !== prev.size || currmtime > prev.mtimeMs || currmtime === 0) foreach(cont.listeners, (listener) => listener(path$43, curr)); }) }; FsWatchFileInstances.set(fullPath, cont); @@ -76355,22 +76361,22 @@ var NodeFsHandler = class { * @param listener on fs change * @returns closer for the watcher instance */ - _watchWithNodeFs(path$38, listener) { + _watchWithNodeFs(path$39, listener) { const opts = this.fsw.options; - const directory = path.dirname(path$38); - const basename = path.basename(path$38); + const directory = path.dirname(path$39); + const basename = path.basename(path$39); this.fsw._getWatchedDir(directory).add(basename); - const absolutePath = path.resolve(path$38); + const absolutePath = path.resolve(path$39); const options = { persistent: opts.persistent }; if (!listener) listener = EMPTY_FN; let closer; if (opts.usePolling) { options.interval = opts.interval !== opts.binaryInterval && isBinaryPath(basename) ? opts.binaryInterval : opts.interval; - closer = setFsWatchFileListener(path$38, absolutePath, options, { + closer = setFsWatchFileListener(path$39, absolutePath, options, { listener, rawEmitter: this.fsw._emitRaw }); - } else closer = setFsWatchListener(path$38, absolutePath, options, { + } else closer = setFsWatchListener(path$39, absolutePath, options, { listener, errHandler: this._boundHandleError, rawEmitter: this.fsw._emitRaw @@ -76388,7 +76394,7 @@ var NodeFsHandler = class { const parent = this.fsw._getWatchedDir(dirname); let prevStats = stats; if (parent.has(basename)) return; - const listener = async (path$43, newStats) => { + const listener = async (path$44, newStats) => { if (!this.fsw._throttle(THROTTLE_MODE_WATCH, file, 5)) return; if (!newStats || newStats.mtimeMs === 0) try { const newStats = await (0, fs_promises.stat)(file); @@ -76397,10 +76403,10 @@ var NodeFsHandler = class { const mt = newStats.mtimeMs; if (!at || at <= mt || mt !== prevStats.mtimeMs) this.fsw._emit(EV.CHANGE, file, newStats); if ((isMacos || isLinux || isFreeBSD) && prevStats.ino !== newStats.ino) { - this.fsw._closeFile(path$43); + this.fsw._closeFile(path$44); prevStats = newStats; const closer = this._watchWithNodeFs(file, listener); - if (closer) this.fsw._addPathCloser(path$43, closer); + if (closer) this.fsw._addPathCloser(path$44, closer); } else prevStats = newStats; } catch (error) { this.fsw._remove(dirname, basename); @@ -76427,7 +76433,7 @@ var NodeFsHandler = class { * @param item basename of this item * @returns true if no more processing is needed for this entry. */ - async _handleSymlink(entry, directory, path$44, item) { + async _handleSymlink(entry, directory, path$45, item) { if (this.fsw.closed) return; const full = entry.fullPath; const dir = this.fsw._getWatchedDir(directory); @@ -76435,7 +76441,7 @@ var NodeFsHandler = class { this.fsw._incrReadyCount(); let linkPath; try { - linkPath = await (0, fs_promises.realpath)(path$44); + linkPath = await (0, fs_promises.realpath)(path$45); } catch (e) { this.fsw._emitReady(); return true; @@ -76444,12 +76450,12 @@ var NodeFsHandler = class { if (dir.has(item)) { if (this.fsw._symlinkPaths.get(full) !== linkPath) { this.fsw._symlinkPaths.set(full, linkPath); - this.fsw._emit(EV.CHANGE, path$44, entry.stats); + this.fsw._emit(EV.CHANGE, path$45, entry.stats); } } else { dir.add(item); this.fsw._symlinkPaths.set(full, linkPath); - this.fsw._emit(EV.ADD, path$44, entry.stats); + this.fsw._emit(EV.ADD, path$45, entry.stats); } this.fsw._emitReady(); return true; @@ -76474,17 +76480,17 @@ var NodeFsHandler = class { return; } const item = entry.path; - let path$39 = path.join(directory, item); + let path$40 = path.join(directory, item); current.add(item); - if (entry.stats.isSymbolicLink() && await this._handleSymlink(entry, directory, path$39, item)) return; + if (entry.stats.isSymbolicLink() && await this._handleSymlink(entry, directory, path$40, item)) return; if (this.fsw.closed) { stream = void 0; return; } if (item === target || !target && !previous.has(item)) { this.fsw._incrReadyCount(); - path$39 = path.join(dir, path.relative(dir, path$39)); - this._addToNodeFs(path$39, initialAdd, wh, depth + 1); + path$40 = path.join(dir, path.relative(dir, path$40)); + this._addToNodeFs(path$40, initialAdd, wh, depth + 1); } }).on(EV.ERROR, this._boundHandleError); return new Promise((resolve, reject) => { @@ -76547,13 +76553,13 @@ var NodeFsHandler = class { * @param depth Child path actually targeted for watch * @param target Child path actually targeted for watch */ - async _addToNodeFs(path$40, initialAdd, priorWh, depth, target) { + async _addToNodeFs(path$41, initialAdd, priorWh, depth, target) { const ready = this.fsw._emitReady; - if (this.fsw._isIgnored(path$40) || this.fsw.closed) { + if (this.fsw._isIgnored(path$41) || this.fsw.closed) { ready(); return false; } - const wh = this.fsw._getWatchHelpers(path$40); + const wh = this.fsw._getWatchHelpers(path$41); if (priorWh) { wh.filterPath = (entry) => priorWh.filterPath(entry); wh.filterDir = (entry) => priorWh.filterDir(entry); @@ -76568,36 +76574,36 @@ var NodeFsHandler = class { const follow = this.fsw.options.followSymlinks; let closer; if (stats.isDirectory()) { - const absPath = path.resolve(path$40); - const targetPath = follow ? await (0, fs_promises.realpath)(path$40) : path$40; + const absPath = path.resolve(path$41); + const targetPath = follow ? await (0, fs_promises.realpath)(path$41) : path$41; if (this.fsw.closed) return; closer = await this._handleDir(wh.watchPath, stats, initialAdd, depth, target, wh, targetPath); if (this.fsw.closed) return; if (absPath !== targetPath && targetPath !== void 0) this.fsw._symlinkPaths.set(absPath, targetPath); } else if (stats.isSymbolicLink()) { - const targetPath = follow ? await (0, fs_promises.realpath)(path$40) : path$40; + const targetPath = follow ? await (0, fs_promises.realpath)(path$41) : path$41; if (this.fsw.closed) return; const parent = path.dirname(wh.watchPath); this.fsw._getWatchedDir(parent).add(wh.watchPath); this.fsw._emit(EV.ADD, wh.watchPath, stats); - closer = await this._handleDir(parent, stats, initialAdd, depth, path$40, wh, targetPath); + closer = await this._handleDir(parent, stats, initialAdd, depth, path$41, wh, targetPath); if (this.fsw.closed) return; - if (targetPath !== void 0) this.fsw._symlinkPaths.set(path.resolve(path$40), targetPath); + if (targetPath !== void 0) this.fsw._symlinkPaths.set(path.resolve(path$41), targetPath); } else closer = this._handleFile(wh.watchPath, stats, initialAdd); ready(); - if (closer) this.fsw._addPathCloser(path$40, closer); + if (closer) this.fsw._addPathCloser(path$41, closer); return false; } catch (error) { if (this.fsw._handleError(error)) { ready(); - return path$40; + return path$41; } } } }; //#endregion -//#region ../../node_modules/chokidar/esm/index.js +//#region ../../../../../node_modules/chokidar/esm/index.js /*! chokidar - MIT License (c) 2012 Paul Miller (paulmillr.com) */ const SLASH = "/"; const SLASH_SLASH = "//"; @@ -76627,22 +76633,22 @@ function createPattern(matcher) { }; return () => false; } -function normalizePath(path$16) { - if (typeof path$16 !== "string") throw new Error("string expected"); - path$16 = path.normalize(path$16); - path$16 = path$16.replace(/\\/g, "/"); +function normalizePath(path$17) { + if (typeof path$17 !== "string") throw new Error("string expected"); + path$17 = path.normalize(path$17); + path$17 = path$17.replace(/\\/g, "/"); let prepend = false; - if (path$16.startsWith("//")) prepend = true; + if (path$17.startsWith("//")) prepend = true; const DOUBLE_SLASH_RE = /\/\//; - while (path$16.match(DOUBLE_SLASH_RE)) path$16 = path$16.replace(DOUBLE_SLASH_RE, "/"); - if (prepend) path$16 = "/" + path$16; - return path$16; + while (path$17.match(DOUBLE_SLASH_RE)) path$17 = path$17.replace(DOUBLE_SLASH_RE, "/"); + if (prepend) path$17 = "/" + path$17; + return path$17; } function matchPatterns(patterns, testString, stats) { - const path$26 = normalizePath(testString); + const path$27 = normalizePath(testString); for (let index = 0; index < patterns.length; index++) { const pattern = patterns[index]; - if (pattern(path$26, stats)) return true; + if (pattern(path$27, stats)) return true; } return false; } @@ -76667,14 +76673,14 @@ const toUnix = (string) => { if (prepend) str = SLASH + str; return str; }; -const normalizePathToUnix = (path$17) => toUnix(path.normalize(toUnix(path$17))); -const normalizeIgnored = (cwd = "") => (path$18) => { - if (typeof path$18 === "string") return normalizePathToUnix(path.isAbsolute(path$18) ? path$18 : path.join(cwd, path$18)); - else return path$18; +const normalizePathToUnix = (path$18) => toUnix(path.normalize(toUnix(path$18))); +const normalizeIgnored = (cwd = "") => (path$19) => { + if (typeof path$19 === "string") return normalizePathToUnix(path.isAbsolute(path$19) ? path$19 : path.join(cwd, path$19)); + else return path$19; }; -const getAbsolutePath = (path$19, cwd) => { - if (path.isAbsolute(path$19)) return path$19; - return path.join(cwd, path$19); +const getAbsolutePath = (path$20, cwd) => { + if (path.isAbsolute(path$20)) return path$20; + return path.join(cwd, path$20); }; const EMPTY_SET = Object.freeze(/* @__PURE__ */ new Set()); /** @@ -76724,10 +76730,10 @@ var DirEntry = class { const STAT_METHOD_F = "stat"; const STAT_METHOD_L = "lstat"; var WatchHelper = class { - constructor(path$20, follow, fsw) { + constructor(path$21, follow, fsw) { this.fsw = fsw; - const watchPath = path$20; - this.path = path$20 = path$20.replace(REPLACER_RE, ""); + const watchPath = path$21; + this.path = path$21 = path$21.replace(REPLACER_RE, ""); this.watchPath = watchPath; this.fullWatchPath = path.resolve(watchPath); this.dirParts = []; @@ -76840,17 +76846,17 @@ var FSWatcher = class extends events.EventEmitter { this.closed = false; this._closePromise = void 0; let paths = unifyPaths(paths_); - if (cwd) paths = paths.map((path$27) => { - return getAbsolutePath(path$27, cwd); + if (cwd) paths = paths.map((path$28) => { + return getAbsolutePath(path$28, cwd); }); - paths.forEach((path$28) => { - this._removeIgnoredPath(path$28); + paths.forEach((path$29) => { + this._removeIgnoredPath(path$29); }); this._userIgnored = void 0; if (!this._readyCount) this._readyCount = 0; this._readyCount += paths.length; - Promise.all(paths.map(async (path$29) => { - const res = await this._nodeFsHandler._addToNodeFs(path$29, !_internal, void 0, 0, _origAdd); + Promise.all(paths.map(async (path$30) => { + const res = await this._nodeFsHandler._addToNodeFs(path$30, !_internal, void 0, 0, _origAdd); if (res) this._emitReady(); return res; })).then((results) => { @@ -76868,15 +76874,15 @@ var FSWatcher = class extends events.EventEmitter { if (this.closed) return this; const paths = unifyPaths(paths_); const { cwd } = this.options; - paths.forEach((path$21) => { - if (!path.isAbsolute(path$21) && !this._closers.has(path$21)) { - if (cwd) path$21 = path.join(cwd, path$21); - path$21 = path.resolve(path$21); - } - this._closePath(path$21); - this._addIgnoredPath(path$21); - if (this._watched.has(path$21)) this._addIgnoredPath({ - path: path$21, + paths.forEach((path$22) => { + if (!path.isAbsolute(path$22) && !this._closers.has(path$22)) { + if (cwd) path$22 = path.join(cwd, path$22); + path$22 = path.resolve(path$22); + } + this._closePath(path$22); + this._addIgnoredPath(path$22); + if (this._watched.has(path$22)) this._addIgnoredPath({ + path: path$22, recursive: true }); this._userIgnored = void 0; @@ -76932,34 +76938,34 @@ var FSWatcher = class extends events.EventEmitter { * @param stats arguments to be passed with event * @returns the error if defined, otherwise the value of the FSWatcher instance's `closed` flag */ - async _emit(event, path$22, stats) { + async _emit(event, path$23, stats) { if (this.closed) return; const opts = this.options; - if (isWindows) path$22 = path.normalize(path$22); - if (opts.cwd) path$22 = path.relative(opts.cwd, path$22); - const args = [path$22]; + if (isWindows) path$23 = path.normalize(path$23); + if (opts.cwd) path$23 = path.relative(opts.cwd, path$23); + const args = [path$23]; if (stats != null) args.push(stats); const awf = opts.awaitWriteFinish; let pw; - if (awf && (pw = this._pendingWrites.get(path$22))) { + if (awf && (pw = this._pendingWrites.get(path$23))) { pw.lastChange = /* @__PURE__ */ new Date(); return this; } if (opts.atomic) { if (event === EVENTS.UNLINK) { - this._pendingUnlinks.set(path$22, [event, ...args]); + this._pendingUnlinks.set(path$23, [event, ...args]); setTimeout(() => { - this._pendingUnlinks.forEach((entry, path$30) => { + this._pendingUnlinks.forEach((entry, path$31) => { this.emit(...entry); this.emit(EVENTS.ALL, ...entry); - this._pendingUnlinks.delete(path$30); + this._pendingUnlinks.delete(path$31); }); }, typeof opts.atomic === "number" ? opts.atomic : 100); return this; } - if (event === EVENTS.ADD && this._pendingUnlinks.has(path$22)) { + if (event === EVENTS.ADD && this._pendingUnlinks.has(path$23)) { event = EVENTS.CHANGE; - this._pendingUnlinks.delete(path$22); + this._pendingUnlinks.delete(path$23); } } if (awf && (event === EVENTS.ADD || event === EVENTS.CHANGE) && this._readyEmitted) { @@ -76974,14 +76980,14 @@ var FSWatcher = class extends events.EventEmitter { this.emitWithAll(event, args); } }; - this._awaitWriteFinish(path$22, awf.stabilityThreshold, event, awfEmit); + this._awaitWriteFinish(path$23, awf.stabilityThreshold, event, awfEmit); return this; } if (event === EVENTS.CHANGE) { - if (!this._throttle(EVENTS.CHANGE, path$22, 50)) return this; + if (!this._throttle(EVENTS.CHANGE, path$23, 50)) return this; } if (opts.alwaysStat && stats === void 0 && (event === EVENTS.ADD || event === EVENTS.ADD_DIR || event === EVENTS.CHANGE)) { - const fullPath = opts.cwd ? path.join(opts.cwd, path$22) : path$22; + const fullPath = opts.cwd ? path.join(opts.cwd, path$23) : path$23; let stats; try { stats = await (0, fs_promises.stat)(fullPath); @@ -77008,20 +77014,20 @@ var FSWatcher = class extends events.EventEmitter { * @param timeout duration of time to suppress duplicate actions * @returns tracking object or false if action should be suppressed */ - _throttle(actionType, path$31, timeout) { + _throttle(actionType, path$32, timeout) { if (!this._throttled.has(actionType)) this._throttled.set(actionType, /* @__PURE__ */ new Map()); const action = this._throttled.get(actionType); if (!action) throw new Error("invalid throttle"); - const actionPath = action.get(path$31); + const actionPath = action.get(path$32); if (actionPath) { actionPath.count++; return false; } let timeoutObject; const clear = () => { - const item = action.get(path$31); + const item = action.get(path$32); const count = item ? item.count : 0; - action.delete(path$31); + action.delete(path$32); clearTimeout(timeoutObject); if (item) clearTimeout(item.timeoutObject); return count; @@ -77032,7 +77038,7 @@ var FSWatcher = class extends events.EventEmitter { clear, count: 0 }; - action.set(path$31, thr); + action.set(path$32, thr); return thr; } _incrReadyCount() { @@ -77046,34 +77052,34 @@ var FSWatcher = class extends events.EventEmitter { * @param event * @param awfEmit Callback to be called when ready for event to be emitted. */ - _awaitWriteFinish(path$23, threshold, event, awfEmit) { + _awaitWriteFinish(path$24, threshold, event, awfEmit) { const awf = this.options.awaitWriteFinish; if (typeof awf !== "object") return; const pollInterval = awf.pollInterval; let timeoutHandler; - let fullPath = path$23; - if (this.options.cwd && !path.isAbsolute(path$23)) fullPath = path.join(this.options.cwd, path$23); + let fullPath = path$24; + if (this.options.cwd && !path.isAbsolute(path$24)) fullPath = path.join(this.options.cwd, path$24); const now = /* @__PURE__ */ new Date(); const writes = this._pendingWrites; function awaitWriteFinishFn(prevStat) { (0, fs.stat)(fullPath, (err, curStat) => { - if (err || !writes.has(path$23)) { + if (err || !writes.has(path$24)) { if (err && err.code !== "ENOENT") awfEmit(err); return; } const now = Number(/* @__PURE__ */ new Date()); - if (prevStat && curStat.size !== prevStat.size) writes.get(path$23).lastChange = now; - if (now - writes.get(path$23).lastChange >= threshold) { - writes.delete(path$23); + if (prevStat && curStat.size !== prevStat.size) writes.get(path$24).lastChange = now; + if (now - writes.get(path$24).lastChange >= threshold) { + writes.delete(path$24); awfEmit(void 0, curStat); } else timeoutHandler = setTimeout(awaitWriteFinishFn, pollInterval, curStat); }); } - if (!writes.has(path$23)) { - writes.set(path$23, { + if (!writes.has(path$24)) { + writes.set(path$24, { lastChange: now, cancelWait: () => { - writes.delete(path$23); + writes.delete(path$24); clearTimeout(timeoutHandler); return event; } @@ -77084,24 +77090,24 @@ var FSWatcher = class extends events.EventEmitter { /** * Determines whether user has asked to ignore this path. */ - _isIgnored(path$32, stats) { - if (this.options.atomic && DOT_RE.test(path$32)) return true; + _isIgnored(path$33, stats) { + if (this.options.atomic && DOT_RE.test(path$33)) return true; if (!this._userIgnored) { const { cwd } = this.options; const ignored = (this.options.ignored || []).map(normalizeIgnored(cwd)); this._userIgnored = anymatch([...[...this._ignoredPaths].map(normalizeIgnored(cwd)), ...ignored], void 0); } - return this._userIgnored(path$32, stats); + return this._userIgnored(path$33, stats); } - _isntIgnored(path$33, stat) { - return !this._isIgnored(path$33, stat); + _isntIgnored(path$34, stat) { + return !this._isIgnored(path$34, stat); } /** * Provides a set of common helpers and properties relating to symlink handling. * @param path file or directory pattern being watched */ - _getWatchHelpers(path$34) { - return new WatchHelper(path$34, this.options.followSymlinks, this); + _getWatchHelpers(path$35) { + return new WatchHelper(path$35, this.options.followSymlinks, this); } /** * Provides directory tracking objects @@ -77127,50 +77133,50 @@ var FSWatcher = class extends events.EventEmitter { * @param item base path of item/directory */ _remove(directory, item, isDirectory) { - const path$24 = path.join(directory, item); - const fullPath = path.resolve(path$24); - isDirectory = isDirectory != null ? isDirectory : this._watched.has(path$24) || this._watched.has(fullPath); - if (!this._throttle("remove", path$24, 100)) return; + const path$25 = path.join(directory, item); + const fullPath = path.resolve(path$25); + isDirectory = isDirectory != null ? isDirectory : this._watched.has(path$25) || this._watched.has(fullPath); + if (!this._throttle("remove", path$25, 100)) return; if (!isDirectory && this._watched.size === 1) this.add(directory, item, true); - this._getWatchedDir(path$24).getChildren().forEach((nested) => this._remove(path$24, nested)); + this._getWatchedDir(path$25).getChildren().forEach((nested) => this._remove(path$25, nested)); const parent = this._getWatchedDir(directory); const wasTracked = parent.has(item); parent.remove(item); if (this._symlinkPaths.has(fullPath)) this._symlinkPaths.delete(fullPath); - let relPath = path$24; - if (this.options.cwd) relPath = path.relative(this.options.cwd, path$24); + let relPath = path$25; + if (this.options.cwd) relPath = path.relative(this.options.cwd, path$25); if (this.options.awaitWriteFinish && this._pendingWrites.has(relPath)) { if (this._pendingWrites.get(relPath).cancelWait() === EVENTS.ADD) return; } - this._watched.delete(path$24); + this._watched.delete(path$25); this._watched.delete(fullPath); const eventName = isDirectory ? EVENTS.UNLINK_DIR : EVENTS.UNLINK; - if (wasTracked && !this._isIgnored(path$24)) this._emit(eventName, path$24); - this._closePath(path$24); + if (wasTracked && !this._isIgnored(path$25)) this._emit(eventName, path$25); + this._closePath(path$25); } /** * Closes all watchers for a path */ - _closePath(path$25) { - this._closeFile(path$25); - const dir = path.dirname(path$25); - this._getWatchedDir(dir).remove(path.basename(path$25)); + _closePath(path$26) { + this._closeFile(path$26); + const dir = path.dirname(path$26); + this._getWatchedDir(dir).remove(path.basename(path$26)); } /** * Closes only file-specific watchers */ - _closeFile(path$35) { - const closers = this._closers.get(path$35); + _closeFile(path$36) { + const closers = this._closers.get(path$36); if (!closers) return; closers.forEach((closer) => closer()); - this._closers.delete(path$35); + this._closers.delete(path$36); } - _addPathCloser(path$36, closer) { + _addPathCloser(path$37, closer) { if (!closer) return; - let list = this._closers.get(path$36); + let list = this._closers.get(path$37); if (!list) { list = []; - this._closers.set(path$36, list); + this._closers.set(path$37, list); } list.push(closer); } @@ -77212,7 +77218,7 @@ function watch(paths, options = {}) { } //#endregion -//#region ../../node_modules/lodash.debounce/index.js +//#region ../../../../../node_modules/lodash.debounce/index.js var require_lodash_debounce = /* @__PURE__ */ __commonJSMin(((exports, module) => { /** * lodash (Custom Build)