@hasna/todos 0.16.0 → 0.17.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (70) hide show
  1. package/CHANGELOG.md +109 -0
  2. package/README.md +59 -22
  3. package/dist/cli/cloud-router.d.ts +63 -21
  4. package/dist/cli/cloud-router.d.ts.map +1 -1
  5. package/dist/cli/commands/config-serve-commands.d.ts.map +1 -1
  6. package/dist/cli/commands/template-commands.d.ts.map +1 -1
  7. package/dist/cli/index.js +2591 -503
  8. package/dist/cli/stage-a.d.ts +2 -12
  9. package/dist/cli/stage-a.d.ts.map +1 -1
  10. package/dist/cli/template-remote.d.ts +90 -0
  11. package/dist/cli/template-remote.d.ts.map +1 -0
  12. package/dist/cli-mcp-parity.d.ts.map +1 -1
  13. package/dist/contracts.js +77 -30
  14. package/dist/db/agents.d.ts +8 -0
  15. package/dist/db/agents.d.ts.map +1 -1
  16. package/dist/db/database.d.ts +6 -0
  17. package/dist/db/database.d.ts.map +1 -1
  18. package/dist/db/identity-mapping.d.ts +25 -0
  19. package/dist/db/identity-mapping.d.ts.map +1 -1
  20. package/dist/db/task-crud.d.ts.map +1 -1
  21. package/dist/index.js +496 -58
  22. package/dist/lib/feature-manifest.d.ts.map +1 -1
  23. package/dist/lib/local-opt-in.d.ts +14 -0
  24. package/dist/lib/local-opt-in.d.ts.map +1 -1
  25. package/dist/lib/paths.d.ts +11 -1
  26. package/dist/lib/paths.d.ts.map +1 -1
  27. package/dist/mcp/index.d.ts +52 -0
  28. package/dist/mcp/index.d.ts.map +1 -1
  29. package/dist/mcp/index.js +15162 -30695
  30. package/dist/mcp/tools/agents.d.ts.map +1 -1
  31. package/dist/mcp/tools/task-adv-tools.d.ts.map +1 -1
  32. package/dist/mcp/tools/task-auto-tools.d.ts.map +1 -1
  33. package/dist/mcp/tools/task-crud.d.ts.map +1 -1
  34. package/dist/mcp/tools/task-meta-tools.d.ts.map +1 -1
  35. package/dist/mcp/tools/task-project-tools.d.ts.map +1 -1
  36. package/dist/mcp/tools/task-resources.d.ts.map +1 -1
  37. package/dist/mcp/tools/templates.d.ts.map +1 -1
  38. package/dist/mcp.js +3 -3
  39. package/dist/project-registration.js +466 -35
  40. package/dist/registry.js +77 -30
  41. package/dist/release-provenance.json +5 -5
  42. package/dist/sdk/client.d.ts +3 -1
  43. package/dist/sdk/client.d.ts.map +1 -1
  44. package/dist/sdk/index.js +48 -12
  45. package/dist/sdk/resolve.d.ts +23 -13
  46. package/dist/sdk/resolve.d.ts.map +1 -1
  47. package/dist/sdk/types.d.ts +17 -2
  48. package/dist/sdk/types.d.ts.map +1 -1
  49. package/dist/sdk/v1.generated.d.ts +115 -0
  50. package/dist/sdk/v1.generated.d.ts.map +1 -1
  51. package/dist/server/index.js +3972 -916
  52. package/dist/server/openapi.d.ts +837 -50
  53. package/dist/server/openapi.d.ts.map +1 -1
  54. package/dist/server/rate-limit-config.d.ts +6 -0
  55. package/dist/server/rate-limit-config.d.ts.map +1 -0
  56. package/dist/server/serve.d.ts.map +1 -1
  57. package/dist/server/v1.d.ts.map +1 -1
  58. package/dist/storage/index.d.ts +1 -1
  59. package/dist/storage/index.d.ts.map +1 -1
  60. package/dist/storage/interfaces.d.ts +74 -3
  61. package/dist/storage/interfaces.d.ts.map +1 -1
  62. package/dist/storage/local-sqlite.d.ts.map +1 -1
  63. package/dist/storage/postgres-adapter.d.ts.map +1 -1
  64. package/dist/storage.js +464 -33
  65. package/dist/task-manifest.js +8 -2
  66. package/dist/types/index.d.ts +5 -2
  67. package/dist/types/index.d.ts.map +1 -1
  68. package/package.json +2 -2
  69. package/dist/mcp/tools/code-tools.d.ts +0 -15
  70. package/dist/mcp/tools/code-tools.d.ts.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"feature-manifest.d.ts","sourceRoot":"","sources":["../../src/lib/feature-manifest.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"feature-manifest.d.ts","sourceRoot":"","sources":["../../src/lib/feature-manifest.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,20 @@ export declare const TODOS_LOCAL_OPT_IN_ENV_KEYS: readonly ["HASNA_TODOS_LOCAL",
4
4
  export type TodosLocalOptInEnv = Record<string, string | undefined>;
5
5
  /** True when the operator deliberately asked for the unhosted local store. */
6
6
  export declare function isTodosLocalOptIn(env?: TodosLocalOptInEnv): boolean;
7
+ /**
8
+ * The one line a local run prints, and the reason it prints at all.
9
+ *
10
+ * An unhosted surface that says nothing looks exactly like a hosted one whose
11
+ * store happens to be empty — that is the false green the 2026-09-04 ruling
12
+ * (hasna/apps#1720) closes, and it is why the notice is unconditional rather
13
+ * than behind a verbosity flag. It goes to STDERR so `--json` output and the
14
+ * MCP stdio frames stay clean on stdout, and it names the credential the run
15
+ * did NOT find, so the fix is in the message rather than in the docs.
16
+ *
17
+ * It lives in this leaf module so the CLI, the MCP server and the SDK print
18
+ * the SAME line without the MCP bundle having to import the CLI's stage A.
19
+ */
20
+ export declare function todosLocalModeNotice(reason?: "local-opt-in" | "local-only-command"): string;
7
21
  /** Every env name that can configure a Todos authority or credential, resolver-derived. */
8
22
  export declare function todosAuthorityEnvKeys(): string[];
9
23
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"local-opt-in.d.ts","sourceRoot":"","sources":["../../src/lib/local-opt-in.ts"],"names":[],"mappings":"AA4BA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AAEtE,4DAA4D;AAC5D,eAAO,MAAM,2BAA2B,+CAAgD,CAAC;AAEzF,MAAM,MAAM,kBAAkB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;AAEpE,8EAA8E;AAC9E,wBAAgB,iBAAiB,CAAC,GAAG,GAAE,kBAAgC,GAAG,OAAO,CAEhF;AAED,2FAA2F;AAC3F,wBAAgB,qBAAqB,IAAI,MAAM,EAAE,CAShD;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,0BAA0B,CAAC,GAAG,GAAE,kBAAgC,GAAG,OAAO,CAEzF;AAED,8EAA8E;AAC9E,wBAAgB,sBAAsB,CAAC,GAAG,GAAE,kBAAgC,GAAG,OAAO,CAErF;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,kBAAkB,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAQxE;AAsBD,oFAAoF;AACpF,MAAM,WAAW,mBAAmB,CAAC,CAAC,SAAS,kBAAkB;IAC/D,gFAAgF;IAChF,GAAG,EAAE,CAAC,CAAC;IACP,gFAAgF;IAChF,WAAW,EAAE,sBAAsB,CAAC;CACrC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,SAAS,kBAAkB,EAC9D,GAAG,EAAE,CAAC,EACN,WAAW,GAAE,sBAA2B,GACvC,mBAAmB,CAAC,CAAC,CAAC,CASxB"}
1
+ {"version":3,"file":"local-opt-in.d.ts","sourceRoot":"","sources":["../../src/lib/local-opt-in.ts"],"names":[],"mappings":"AA4BA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AAEtE,4DAA4D;AAC5D,eAAO,MAAM,2BAA2B,+CAAgD,CAAC;AAEzF,MAAM,MAAM,kBAAkB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;AAEpE,8EAA8E;AAC9E,wBAAgB,iBAAiB,CAAC,GAAG,GAAE,kBAAgC,GAAG,OAAO,CAEhF;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,GAAE,cAAc,GAAG,oBAAqC,GAAG,MAAM,CAa3G;AAED,2FAA2F;AAC3F,wBAAgB,qBAAqB,IAAI,MAAM,EAAE,CAShD;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,0BAA0B,CAAC,GAAG,GAAE,kBAAgC,GAAG,OAAO,CAEzF;AAED,8EAA8E;AAC9E,wBAAgB,sBAAsB,CAAC,GAAG,GAAE,kBAAgC,GAAG,OAAO,CAErF;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,kBAAkB,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAQxE;AAsBD,oFAAoF;AACpF,MAAM,WAAW,mBAAmB,CAAC,CAAC,SAAS,kBAAkB;IAC/D,gFAAgF;IAChF,GAAG,EAAE,CAAC,CAAC;IACP,gFAAgF;IAChF,WAAW,EAAE,sBAAsB,CAAC;CACrC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,SAAS,kBAAkB,EAC9D,GAAG,EAAE,CAAC,EACN,WAAW,GAAE,sBAA2B,GACvC,mBAAmB,CAAC,CAAC,CAAC,CASxB"}
@@ -15,7 +15,17 @@ export declare function dataDir(options: PathsResolverOptions): string;
15
15
  * so this resolves identically.
16
16
  */
17
17
  export declare function effectiveHome(env?: NodeJS.ProcessEnv): string;
18
- /** Pre-XDG default data home: `~/.hasna/todos`. */
18
+ /**
19
+ * The `~/.hasna` root: `HASNA_HOME` when it is an absolute, non-blank value,
20
+ * else `$HOME/.hasna` — the same rule `@hasna/contracts` applies when it looks
21
+ * for `<root>/todos/config/credentials`. Honouring it here too is what keeps
22
+ * ONE isolated `HASNA_HOME` isolating both the credential file and the store:
23
+ * before this, a run with `HASNA_HOME=/tmp/x` read its credential from
24
+ * `/tmp/x/todos/config/credentials` but still opened the operator's real
25
+ * `~/.hasna/todos/todos.db` (hasna/apps#1720 validation).
26
+ */
27
+ export declare function hasnaHomeRoot(env?: NodeJS.ProcessEnv): string;
28
+ /** Pre-XDG default data home: `<hasna root>/todos`, i.e. `~/.hasna/todos`. */
19
29
  export declare function legacyHomeDir(env?: NodeJS.ProcessEnv): string;
20
30
  /**
21
31
  * The @hasna/paths-resolved data home for todos (XDG / macOS home layout).
@@ -1 +1 @@
1
- {"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../src/lib/paths.ts"],"names":[],"mappings":"AAWA,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC;AAS7D,MAAM,WAAW,oBAAoB;IACnC,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;CAC1C;AA0DD,wBAAgB,OAAO,CAAC,OAAO,EAAE,oBAAoB,GAAG,MAAM,CAE7D;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,CAE1E;AAED,mDAAmD;AACnD,wBAAgB,aAAa,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,CAE1E;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,CAEzE;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,MAAM,EAChB,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,OAAO,CAOT;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,CAGxE;AAED,yEAAyE;AACzE,wBAAgB,gBAAgB,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,CAE7E;AAED,uEAAuE;AACvE,wBAAgB,cAAc,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,CAE3E;AAED,2DAA2D;AAC3D,wBAAgB,aAAa,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,CAE1E"}
1
+ {"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../src/lib/paths.ts"],"names":[],"mappings":"AAWA,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC;AAS7D,MAAM,WAAW,oBAAoB;IACnC,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;CAC1C;AA0DD,wBAAgB,OAAO,CAAC,OAAO,EAAE,oBAAoB,GAAG,MAAM,CAE7D;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,CAE1E;AAED;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,CAI1E;AAED,8EAA8E;AAC9E,wBAAgB,aAAa,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,CAE1E;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,CAEzE;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,MAAM,EAChB,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,OAAO,CAOT;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,CAGxE;AAED,yEAAyE;AACzE,wBAAgB,gBAAgB,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,CAE7E;AAED,uEAAuE;AACvE,wBAAgB,cAAc,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,CAE3E;AAED,2DAA2D;AAC3D,wBAAgB,aAAa,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,CAE1E"}
@@ -1,6 +1,16 @@
1
1
  #!/usr/bin/env bun
2
2
  import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
3
3
  import type { Task } from "../types/index.js";
4
+ interface AgentFocus {
5
+ agent_id: string;
6
+ project_id?: string;
7
+ task_list_id?: string;
8
+ }
9
+ /**
10
+ * Session focus, keyed by agent id. Exported so a test can drive the real
11
+ * `applyFocus` through the session path without a live MCP transport.
12
+ */
13
+ export declare const agentFocusMap: Map<string, AgentFocus>;
4
14
  export declare function applyFocus(params: Record<string, any>, agentId?: string): void;
5
15
  export declare function formatError(error: unknown): string;
6
16
  /** Compact single-line task summary for mutation responses (create/update/start/complete). */
@@ -8,4 +18,46 @@ export declare function formatTask(task: Task): string;
8
18
  /** Full multi-line task detail for get_task responses. */
9
19
  export declare function formatTaskDetail(task: Task, maxDescriptionChars?: number): string;
10
20
  export declare function buildServer(): McpServer;
21
+ export type TodosMcpAuthority = {
22
+ route: "local";
23
+ notice: string;
24
+ } | {
25
+ route: "hosted";
26
+ v1_base_url: string;
27
+ source: string;
28
+ };
29
+ /**
30
+ * Decide the stdio server's authority BEFORE anything can open a store.
31
+ *
32
+ * Same preamble, same resolver, same refusals as the CLI's stage A: the
33
+ * deliberate `HASNA_TODOS_LOCAL=1` opt-in is answered first and without
34
+ * consulting the resolver; otherwise the `@hasna/contracts` chain must resolve
35
+ * a credential (explicit pointer tiers, the macOS Keychain item
36
+ * `hasna.credentials.todos.api-key`, `~/.hasna/todos/config/credentials`,
37
+ * `HASNA_TODOS_API_KEY`) or this THROWS the CLI's `REMOTE_API_*` diagnostic.
38
+ * The server used to skip this decision entirely and call
39
+ * `startRuntimeShadowDrain(getDatabase())` unconditionally, which created
40
+ * `~/.hasna/todos/todos.db` (+ -wal/-shm, migrations, a machine heartbeat)
41
+ * on every start — hosted, unconfigured, or not — before answering
42
+ * `initialize` (hasna/apps#1720 validation).
43
+ */
44
+ export declare function resolveTodosMcpAuthority(env?: Record<string, string | undefined>): TodosMcpAuthority;
45
+ /**
46
+ * The refusal every local-only tool and `todos://` resource returns on the
47
+ * hosted route. Mirrors stage A's `REMOTE_COMMAND_UNSUPPORTED` for a
48
+ * local-only verb: it names the opt-in, never a credential value.
49
+ */
50
+ export declare function hostedRouteLocalStoreRefusal(v1BaseUrl: string): string;
51
+ /** Exit code for a refused `todos-mcp --http` / `--port` / `MCP_HTTP=1` request. */
52
+ export declare const MCP_HTTP_REFUSED_EXIT_CODE = 2;
53
+ /**
54
+ * The one line `todos-mcp` prints when asked for the HTTP transport. The MCP
55
+ * bin is stdio-only: the Streamable HTTP transport is a listener with an auth
56
+ * posture, and that is `todos-serve`'s job (it mounts `POST /mcp` next to
57
+ * `/api/*`). This bin used to start the FULL `todos-serve` app here with
58
+ * `allowAnonymous: true` — a server-only code path reachable from a client
59
+ * binary that MCP clients spawn with no credential.
60
+ */
61
+ export declare function mcpHttpRefusal(): string;
62
+ export {};
11
63
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/mcp/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAqBpE,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AA8F9C,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAO9E;AA6CD,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CA4FlD;AAsBD,8FAA8F;AAC9F,wBAAgB,UAAU,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,CAO7C;AAED,0DAA0D;AAC1D,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,IAAI,EAAE,mBAAmB,CAAC,EAAE,MAAM,GAAG,MAAM,CA6BjF;AAID,wBAAgB,WAAW,cAuD1B"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/mcp/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAuBpE,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAqE9C,UAAU,UAAU;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;GAGG;AACH,eAAO,MAAM,aAAa,yBAAgC,CAAC;AAuB3D,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAO9E;AAmDD,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CA6FlD;AAsBD,8FAA8F;AAC9F,wBAAgB,UAAU,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,CAO7C;AAED,0DAA0D;AAC1D,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,IAAI,EAAE,mBAAmB,CAAC,EAAE,MAAM,GAAG,MAAM,CA6BjF;AAID,wBAAgB,WAAW,cAsD1B;AAID,MAAM,MAAM,iBAAiB,GACzB;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAClC;IAAE,KAAK,EAAE,QAAQ,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAE7D;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,wBAAwB,CACtC,GAAG,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAqD,GAC1F,iBAAiB,CAMnB;AAED;;;;GAIG;AACH,wBAAgB,4BAA4B,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAOtE;AAID,oFAAoF;AACpF,eAAO,MAAM,0BAA0B,IAAI,CAAC;AAE5C;;;;;;;GAOG;AACH,wBAAgB,cAAc,IAAI,MAAM,CAMvC"}