@kya-os/create-mcpi-app 1.7.39-canary.2 → 1.7.39-canary.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.turbo/turbo-build.log +2 -2
- package/.turbo/turbo-test$colon$coverage.log +318 -200
- package/.turbo/turbo-test.log +37 -37
- package/README.md +57 -15
- package/dist/helpers/config-builder.d.ts +2 -1
- package/dist/helpers/config-builder.d.ts.map +1 -1
- package/dist/helpers/config-builder.js +3 -2
- package/dist/helpers/config-builder.js.map +1 -1
- package/dist/helpers/fetch-cloudflare-mcpi-template.d.ts.map +1 -1
- package/dist/helpers/fetch-cloudflare-mcpi-template.js +126 -61
- package/dist/helpers/fetch-cloudflare-mcpi-template.js.map +1 -1
- package/dist/index.js +7 -1
- package/dist/index.js.map +1 -1
- package/package.json +6 -7
package/.turbo/turbo-test.log
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
|
|
2
|
-
> @kya-os/create-mcpi-app@1.7.
|
|
2
|
+
> @kya-os/create-mcpi-app@1.7.39-canary.16 test /Users/dylanhobbs/Documents/@kya-os/xmcp-i/packages/create-mcpi-app
|
|
3
3
|
> vitest --run
|
|
4
4
|
|
|
5
5
|
▲ [WARNING] The condition "types" here will never be used as it comes after both "import" and "require" [package.json]
|
|
@@ -41,27 +41,37 @@
|
|
|
41
41
|
|
|
42
42
|
RUN v4.0.5 /Users/dylanhobbs/Documents/@kya-os/xmcp-i/packages/create-mcpi-app
|
|
43
43
|
|
|
44
|
-
✓ test-cloudflare/tests/delegation.test.ts (12 tests) 6ms
|
|
45
44
|
✓ test-cloudflare/tests/cache-invalidation.test.ts (18 tests) 5ms
|
|
46
45
|
✓ test-cloudflare/tests/cors-security.test.ts (29 tests) 4ms
|
|
47
46
|
stdout | test-cloudflare/tests/session-management.test.ts > Session Management > Session Security > should not expose session data in logs
|
|
48
47
|
[Session] Created session: secure-session
|
|
49
48
|
|
|
49
|
+
✓ test-cloudflare/tests/delegation.test.ts (12 tests) 4ms
|
|
50
|
+
✓ test-cloudflare/tests/session-management.test.ts (17 tests) 20ms
|
|
50
51
|
stderr | src/utils/__tests__/fetch-remote-config.test.ts > fetchRemoteConfig > Error handling > should return null if API request fails
|
|
51
52
|
[RemoteConfig] API returned 404: Not Found
|
|
52
53
|
|
|
53
|
-
|
|
54
|
+
stdout | src/__tests__/helpers/install.test.ts > install > Dependency installation > should install dependencies with npm
|
|
55
|
+
|
|
56
|
+
📦 Installing dependencies with npm...
|
|
54
57
|
stderr | src/utils/__tests__/fetch-remote-config.test.ts > fetchRemoteConfig > Error handling > should return null if API throws error
|
|
55
58
|
[RemoteConfig] Failed to fetch config: Error: Network error
|
|
59
|
+
✓ Lockfile created (package-lock.json) - remember to commit it
|
|
56
60
|
at /Users/dylanhobbs/Documents/@kya-os/xmcp-i/packages/create-mcpi-app/src/utils/__tests__/fetch-remote-config.test.ts:173:35
|
|
61
|
+
|
|
57
62
|
at file:///Users/dylanhobbs/Documents/@kya-os/xmcp-i/node_modules/.pnpm/@vitest+runner@4.0.5/node_modules/@vitest/runner/dist/index.js:157:11
|
|
58
63
|
at file:///Users/dylanhobbs/Documents/@kya-os/xmcp-i/node_modules/.pnpm/@vitest+runner@4.0.5/node_modules/@vitest/runner/dist/index.js:753:26
|
|
59
64
|
at file:///Users/dylanhobbs/Documents/@kya-os/xmcp-i/node_modules/.pnpm/@vitest+runner@4.0.5/node_modules/@vitest/runner/dist/index.js:1636:20
|
|
65
|
+
stdout | src/__tests__/helpers/install.test.ts > install > Dependency installation > should install dependencies with yarn
|
|
60
66
|
at new Promise (<anonymous>)
|
|
67
|
+
|
|
61
68
|
at runWithTimeout (file:///Users/dylanhobbs/Documents/@kya-os/xmcp-i/node_modules/.pnpm/@vitest+runner@4.0.5/node_modules/@vitest/runner/dist/index.js:1602:10)
|
|
69
|
+
📦 Installing dependencies with yarn...
|
|
62
70
|
at runTest (file:///Users/dylanhobbs/Documents/@kya-os/xmcp-i/node_modules/.pnpm/@vitest+runner@4.0.5/node_modules/@vitest/runner/dist/index.js:1309:12)
|
|
63
71
|
at processTicksAndRejections (node:internal/process/task_queues:103:5)
|
|
64
72
|
at runSuite (file:///Users/dylanhobbs/Documents/@kya-os/xmcp-i/node_modules/.pnpm/@vitest+runner@4.0.5/node_modules/@vitest/runner/dist/index.js:1468:8)
|
|
73
|
+
✓ Lockfile created (yarn.lock) - remember to commit it
|
|
74
|
+
|
|
65
75
|
at runSuite (file:///Users/dylanhobbs/Documents/@kya-os/xmcp-i/node_modules/.pnpm/@vitest+runner@4.0.5/node_modules/@vitest/runner/dist/index.js:1468:8)
|
|
66
76
|
|
|
67
77
|
stderr | src/utils/__tests__/fetch-remote-config.test.ts > fetchRemoteConfig > Error handling > should return null if neither projectId nor agentDid provided
|
|
@@ -80,23 +90,6 @@ stderr | src/utils/__tests__/fetch-remote-config.test.ts > fetchRemoteConfig > E
|
|
|
80
90
|
at runSuite (file:///Users/dylanhobbs/Documents/@kya-os/xmcp-i/node_modules/.pnpm/@vitest+runner@4.0.5/node_modules/@vitest/runner/dist/index.js:1468:8)
|
|
81
91
|
at runSuite (file:///Users/dylanhobbs/Documents/@kya-os/xmcp-i/node_modules/.pnpm/@vitest+runner@4.0.5/node_modules/@vitest/runner/dist/index.js:1468:8)
|
|
82
92
|
|
|
83
|
-
✓ src/utils/__tests__/fetch-remote-config.test.ts (9 tests) 8ms
|
|
84
|
-
stderr | src/helpers/__tests__/config-builder.spec.ts > buildConfigWithRemote > should fallback to local config when remote fetch fails
|
|
85
|
-
[RemoteConfig] Neither projectId nor agentDid provided
|
|
86
|
-
|
|
87
|
-
✓ src/helpers/__tests__/config-builder.spec.ts (12 tests) 5ms
|
|
88
|
-
stdout | src/__tests__/helpers/install.test.ts > install > Dependency installation > should install dependencies with npm
|
|
89
|
-
|
|
90
|
-
📦 Installing dependencies with npm...
|
|
91
|
-
✓ Lockfile created (package-lock.json) - remember to commit it
|
|
92
|
-
|
|
93
|
-
✓ src/__tests__/helpers/generate-identity.test.ts (24 tests) 29ms
|
|
94
|
-
✓ test-cloudflare/tests/do-routing.test.ts (14 tests) 63ms
|
|
95
|
-
stdout | src/__tests__/helpers/install.test.ts > install > Dependency installation > should install dependencies with yarn
|
|
96
|
-
|
|
97
|
-
📦 Installing dependencies with yarn...
|
|
98
|
-
✓ Lockfile created (yarn.lock) - remember to commit it
|
|
99
|
-
|
|
100
93
|
stdout | src/__tests__/helpers/install.test.ts > install > Dependency installation > should install dependencies with pnpm
|
|
101
94
|
|
|
102
95
|
📦 Installing dependencies with pnpm...
|
|
@@ -107,7 +100,6 @@ stdout | src/__tests__/helpers/install.test.ts > install > Dependency installati
|
|
|
107
100
|
📦 Installing dependencies with npm...
|
|
108
101
|
✓ Lockfile created (package-lock.json) - remember to commit it
|
|
109
102
|
|
|
110
|
-
✓ src/__tests__/helpers/generate-config.test.ts (25 tests) 49ms
|
|
111
103
|
stderr | src/__tests__/helpers/install.test.ts > install > Install progress reporting > should report correct package manager in log
|
|
112
104
|
⚠️ Warning: No lockfile generated (pnpm-lock.yaml)
|
|
113
105
|
|
|
@@ -116,49 +108,57 @@ stdout | src/__tests__/helpers/install.test.ts > install > Install progress repo
|
|
|
116
108
|
📦 Installing dependencies with npm...
|
|
117
109
|
✓ Lockfile created (package-lock.json) - remember to commit it
|
|
118
110
|
|
|
119
|
-
|
|
111
|
+
✓ src/utils/__tests__/fetch-remote-config.test.ts (9 tests) 25ms
|
|
120
112
|
stdout | src/__tests__/helpers/install.test.ts > install > Error handling > should throw error when installation fails
|
|
121
113
|
|
|
122
|
-
Failed to install dependencies with npm.
|
|
123
114
|
📦 Installing dependencies with npm...
|
|
124
115
|
|
|
125
|
-
|
|
126
116
|
stdout | src/__tests__/helpers/install.test.ts > install > Error handling > should handle network errors during installation
|
|
127
117
|
|
|
128
118
|
📦 Installing dependencies with npm...
|
|
129
119
|
|
|
120
|
+
stdout | src/__tests__/helpers/install.test.ts > install > Error handling > should handle permission errors during installation
|
|
121
|
+
stderr | src/__tests__/helpers/install.test.ts > install > Error handling > should throw error when installation fails
|
|
122
|
+
|
|
123
|
+
Failed to install dependencies with npm.
|
|
124
|
+
📦 Installing dependencies with npm...
|
|
125
|
+
|
|
130
126
|
stderr | src/__tests__/helpers/install.test.ts > install > Error handling > should handle network errors during installation
|
|
131
127
|
Failed to install dependencies with npm.
|
|
132
128
|
|
|
133
|
-
stdout | src/__tests__/helpers/install.test.ts > install > Error handling > should
|
|
129
|
+
stdout | src/__tests__/helpers/install.test.ts > install > Error handling > should log error message when installation fails
|
|
134
130
|
|
|
135
131
|
📦 Installing dependencies with npm...
|
|
136
132
|
|
|
133
|
+
|
|
137
134
|
stderr | src/__tests__/helpers/install.test.ts > install > Error handling > should handle permission errors during installation
|
|
138
135
|
Failed to install dependencies with npm.
|
|
139
136
|
|
|
140
|
-
|
|
137
|
+
✓ test-cloudflare/tests/do-routing.test.ts (14 tests) 154ms
|
|
138
|
+
stdout | src/__tests__/helpers/install.test.ts > install > Error handling > should handle invalid package manager gracefully
|
|
141
139
|
|
|
142
|
-
📦 Installing dependencies with
|
|
140
|
+
📦 Installing dependencies with unknown...
|
|
143
141
|
|
|
144
142
|
stderr | src/__tests__/helpers/install.test.ts > install > Error handling > should handle invalid package manager gracefully
|
|
145
143
|
⚠️ Warning: Unknown package manager "unknown", cannot check lockfile
|
|
146
|
-
stdout | src/__tests__/helpers/install.test.ts > install > Error handling > should handle invalid package manager gracefully
|
|
147
|
-
|
|
148
144
|
|
|
149
|
-
|
|
145
|
+
stderr | src/helpers/__tests__/config-builder.spec.ts > buildConfigWithRemote > should fallback to local config when remote fetch fails
|
|
146
|
+
[RemoteConfig] Neither projectId nor agentDid provided
|
|
150
147
|
|
|
148
|
+
✓ src/helpers/__tests__/config-builder.spec.ts (12 tests) 3ms
|
|
149
|
+
✓ src/__tests__/helpers/generate-identity.test.ts (24 tests) 186ms
|
|
150
|
+
✓ src/__tests__/helpers/generate-config.test.ts (25 tests) 58ms
|
|
151
151
|
stdout | src/__tests__/helpers/install.test.ts > install > Lockfile validation > should warn when lockfile not created
|
|
152
152
|
|
|
153
153
|
📦 Installing dependencies with npm...
|
|
154
154
|
|
|
155
|
-
✓ src/__tests__/helpers/install.test.ts (20 tests)
|
|
156
|
-
✓ src/__tests__/helpers/validate-project-structure.test.ts (23 tests)
|
|
157
|
-
✓ src/__tests__/
|
|
158
|
-
✓ src/__tests__/cloudflare-template.test.ts (
|
|
155
|
+
✓ src/__tests__/helpers/install.test.ts (20 tests) 264ms
|
|
156
|
+
✓ src/__tests__/helpers/validate-project-structure.test.ts (23 tests) 146ms
|
|
157
|
+
✓ src/__tests__/cloudflare-template.test.ts (24 tests) 429ms
|
|
158
|
+
✓ src/__tests__/helpers/fetch-cloudflare-mcpi-template.test.ts (21 tests) 506ms
|
|
159
159
|
|
|
160
160
|
Test Files 13 passed (13)
|
|
161
|
-
Tests
|
|
162
|
-
Start at
|
|
163
|
-
Duration
|
|
161
|
+
Tests 248 passed (248)
|
|
162
|
+
Start at 03:15:14
|
|
163
|
+
Duration 1.04s (transform 1.57s, setup 0ms, collect 2.36s, tests 1.80s, environment 1ms, prepare 57ms)
|
|
164
164
|
|
package/README.md
CHANGED
|
@@ -76,22 +76,20 @@ npx create-mcpi-app my-quick-agent --yes
|
|
|
76
76
|
```
|
|
77
77
|
my-agent/
|
|
78
78
|
├── src/
|
|
79
|
-
│ ├──
|
|
80
|
-
│
|
|
81
|
-
│
|
|
82
|
-
│ └──
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
├── package.json # Dependencies including xmcp-i
|
|
87
|
-
├── tsconfig.json # TypeScript configuration
|
|
88
|
-
├── .env.example # Environment variables for identity
|
|
89
|
-
├── .gitignore # Includes identity security rules
|
|
90
|
-
├── .eslintrc.json # Code quality configuration
|
|
91
|
-
└── README.md # Agent-specific documentation
|
|
79
|
+
│ ├── index.ts # Main agent server (~40 lines - super clean!)
|
|
80
|
+
│ ├── mcpi-runtime-config.ts # Runtime configuration (~50 lines)
|
|
81
|
+
│ └── tools/ # Your business logic only
|
|
82
|
+
│ └── greet.ts # Example tool
|
|
83
|
+
├── wrangler.toml # Cloudflare Workers config
|
|
84
|
+
├── package.json # Dependencies
|
|
85
|
+
└── README.md # Quick start guide
|
|
92
86
|
```
|
|
93
87
|
|
|
94
|
-
**
|
|
88
|
+
**Key Features:**
|
|
89
|
+
- **Next.js-Style Architecture**: All framework complexity hidden in `@kya-os/mcp-i-cloudflare`
|
|
90
|
+
- **Consent Pages**: Server-hosted consent flow with XSS prevention
|
|
91
|
+
- **Auto-Detection**: Server URL automatically detected from requests
|
|
92
|
+
- **Clean Code**: Only your business logic visible - no implementation details
|
|
95
93
|
|
|
96
94
|
## Platform-Specific Features
|
|
97
95
|
|
|
@@ -102,7 +100,51 @@ my-agent/
|
|
|
102
100
|
- **Durable Objects**: Built-in state management for MCP sessions
|
|
103
101
|
- **Zero Cold Starts**: Instant response times with Durable Objects
|
|
104
102
|
- **KV Storage**: Efficient nonce caching for security
|
|
105
|
-
- **
|
|
103
|
+
- **Consent Pages**: Server-hosted consent flow with auto-detection
|
|
104
|
+
- **XSS Prevention**: Secure consent page rendering with CSP headers
|
|
105
|
+
- **Proof Batching**: Automatic proof submission with cron-based flushing
|
|
106
|
+
|
|
107
|
+
#### Proof Batching & Cron Jobs
|
|
108
|
+
|
|
109
|
+
MCP-I automatically batches proofs for efficient submission to AgentShield. Proofs are:
|
|
110
|
+
|
|
111
|
+
1. **Batched within requests**: When multiple tools are called, proofs are collected and submitted together
|
|
112
|
+
2. **Auto-flush on batch size**: When 10 proofs accumulate, they're automatically flushed
|
|
113
|
+
3. **First proof immediate**: The first proof is submitted immediately (not batched) for dashboard setup detection
|
|
114
|
+
|
|
115
|
+
**Cron Configuration (Currently Disabled):**
|
|
116
|
+
|
|
117
|
+
⚠️ **Note**: Cloudflare Workers cron triggers are currently experiencing API parsing issues that prevent deployment. The cron trigger is commented out by default in the generated `wrangler.toml`.
|
|
118
|
+
|
|
119
|
+
Proofs work correctly without cron because:
|
|
120
|
+
- First proof submits immediately (ensures dashboard setup detection)
|
|
121
|
+
- Proofs auto-flush when batch size is reached (default: 10 proofs)
|
|
122
|
+
- Cron is only needed for flushing small batches that haven't reached the size limit
|
|
123
|
+
|
|
124
|
+
If you want to enable cron-based flushing in the future, uncomment the section in `wrangler.toml`:
|
|
125
|
+
|
|
126
|
+
```toml
|
|
127
|
+
[[triggers.crons]]
|
|
128
|
+
cron = "*/5 * * * *" # Every 5 minutes (recommended)
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
**Note**: If deployment fails with "Could not parse request body" when cron is enabled, this indicates a Cloudflare API issue. Keep cron commented out - proofs will still work correctly.
|
|
132
|
+
|
|
133
|
+
**Verifying Proof Submission:**
|
|
134
|
+
|
|
135
|
+
1. Check Cloudflare Worker logs for `[ProofService]` messages:
|
|
136
|
+
- `[ProofService] Initialized:` - Service started successfully
|
|
137
|
+
- `[ProofService] Enqueuing proof` - Proof added to batch queue
|
|
138
|
+
- `[ProofService] ✅ Proofs accepted` - Proofs submitted successfully
|
|
139
|
+
|
|
140
|
+
2. View proofs in AgentShield dashboard:
|
|
141
|
+
- Navigate to `/proofs` page for your project
|
|
142
|
+
- Proofs appear within 5 minutes of tool execution
|
|
143
|
+
|
|
144
|
+
3. Verify tool discovery:
|
|
145
|
+
- Navigate to `/tools` page
|
|
146
|
+
- Tools are automatically discovered from proof submissions
|
|
147
|
+
- Ensure `MCP_SERVER_URL` is set correctly (without `/mcp` suffix)
|
|
106
148
|
|
|
107
149
|
### Vercel - Edge Identity
|
|
108
150
|
|
|
@@ -9,7 +9,8 @@
|
|
|
9
9
|
* NOTE: buildBaseConfig has been moved to @kya-os/contracts/config for shared use.
|
|
10
10
|
* This module re-exports it for backward compatibility and adds remote fetching support.
|
|
11
11
|
*/
|
|
12
|
-
|
|
12
|
+
import { buildBaseConfig } from '@kya-os/contracts/config';
|
|
13
|
+
export { buildBaseConfig };
|
|
13
14
|
import type { MCPIConfig } from '@kya-os/contracts/config';
|
|
14
15
|
import { type RemoteConfigCache } from '../utils/fetch-remote-config.js';
|
|
15
16
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-builder.d.ts","sourceRoot":"","sources":["../../src/helpers/config-builder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAG3D,OAAO,KAAK,EACV,UAAU,EAQX,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAGL,KAAK,iBAAiB,EACvB,MAAM,iCAAiC,CAAC;AAEzC;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC;;;OAGG;IACH,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAEzB;;;;OAIG;IACH,aAAa,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;IAEzE;;;OAGG;IACH,KAAK,CAAC,EAAE,iBAAiB,CAAC;IAE1B;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;;;GASG;AACH,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,UAAU,CAAC,CAwBrB"}
|
|
1
|
+
{"version":3,"file":"config-builder.d.ts","sourceRoot":"","sources":["../../src/helpers/config-builder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAG3D,OAAO,EAAE,eAAe,EAAE,CAAC;AAE3B,OAAO,KAAK,EACV,UAAU,EAQX,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAGL,KAAK,iBAAiB,EACvB,MAAM,iCAAiC,CAAC;AAEzC;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC;;;OAGG;IACH,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAEzB;;;;OAIG;IACH,aAAa,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;IAEzE;;;OAGG;IACH,KAAK,CAAC,EAAE,iBAAiB,CAAC;IAE1B;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;;;GASG;AACH,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,UAAU,CAAC,CAwBrB"}
|
|
@@ -9,9 +9,10 @@
|
|
|
9
9
|
* NOTE: buildBaseConfig has been moved to @kya-os/contracts/config for shared use.
|
|
10
10
|
* This module re-exports it for backward compatibility and adds remote fetching support.
|
|
11
11
|
*/
|
|
12
|
-
//
|
|
13
|
-
export { buildBaseConfig } from '@kya-os/contracts/config';
|
|
12
|
+
// Import buildBaseConfig from contracts for local use and re-export
|
|
14
13
|
import { buildBaseConfig } from '@kya-os/contracts/config';
|
|
14
|
+
// Re-export buildBaseConfig for backward compatibility
|
|
15
|
+
export { buildBaseConfig };
|
|
15
16
|
import { fetchRemoteConfig } from '../utils/fetch-remote-config.js';
|
|
16
17
|
/**
|
|
17
18
|
* Build config with remote fetching support
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-builder.js","sourceRoot":"","sources":["../../src/helpers/config-builder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,oEAAoE;AACpE,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"config-builder.js","sourceRoot":"","sources":["../../src/helpers/config-builder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,oEAAoE;AACpE,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAE3D,uDAAuD;AACvD,OAAO,EAAE,eAAe,EAAE,CAAC;AAa3B,OAAO,EACL,iBAAiB,EAGlB,MAAM,iCAAiC,CAAC;AAgCzC;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,OAA6B;IAE7B,MAAM,EAAE,GAAG,EAAE,aAAa,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;IAExD,sEAAsE;IACtE,IAAI,GAAG,CAAC,mBAAmB,IAAI,aAAa,EAAE,CAAC;QAC7C,MAAM,MAAM,GAAG,MAAM,iBAAiB,CACpC;YACE,MAAM,EAAE,GAAG,CAAC,mBAAmB,IAAI,wBAAwB;YAC3D,MAAM,EAAE,GAAG,CAAC,mBAAmB;YAC/B,SAAS,EAAE,GAAG,CAAC,sBAAsB;YACrC,QAAQ;YACR,QAAQ,EAAE,MAAM,EAAE,YAAY;YAC9B,aAAa;SACd,EACD,KAAK,CACN,CAAC;QAEF,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,MAAM,CAAC;QAChB,CAAC;IACH,CAAC;IAED,4EAA4E;IAC5E,OAAO,eAAe,CAAC,GAAG,CAAC,CAAC;AAC9B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetch-cloudflare-mcpi-template.d.ts","sourceRoot":"","sources":["../../src/helpers/fetch-cloudflare-mcpi-template.ts"],"names":[],"mappings":"AAKA,UAAU,6BAA6B;IACrC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED;;;GAGG;AACH,wBAAsB,2BAA2B,CAC/C,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE,6BAAkC,GAC1C,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"fetch-cloudflare-mcpi-template.d.ts","sourceRoot":"","sources":["../../src/helpers/fetch-cloudflare-mcpi-template.ts"],"names":[],"mappings":"AAKA,UAAU,6BAA6B;IACrC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED;;;GAGG;AACH,wBAAsB,2BAA2B,CAC/C,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE,6BAAkC,GAC1C,OAAO,CAAC,IAAI,CAAC,CAwyCf"}
|
|
@@ -9,10 +9,24 @@ import { generateIdentity } from "./generate-identity.js";
|
|
|
9
9
|
export async function fetchCloudflareMcpiTemplate(projectPath, options = {}) {
|
|
10
10
|
const { packageManager = "npm", projectName = path.basename(projectPath), apikey, projectId, skipIdentity = false, } = options;
|
|
11
11
|
// Sanitize project name for class names
|
|
12
|
-
|
|
12
|
+
let className = projectName
|
|
13
13
|
.replace(/[^a-zA-Z0-9]/g, "")
|
|
14
14
|
.replace(/^[0-9]/, "_$&");
|
|
15
|
+
// Fallback to prevent empty class names
|
|
16
|
+
if (!className || className.length === 0) {
|
|
17
|
+
className = "Project";
|
|
18
|
+
}
|
|
15
19
|
const pascalClassName = className.charAt(0).toUpperCase() + className.slice(1);
|
|
20
|
+
// Sanitize project name for wrangler.toml (alphanumeric, lowercase, dashes only)
|
|
21
|
+
let wranglerName = projectName
|
|
22
|
+
.toLowerCase()
|
|
23
|
+
.replace(/[^a-z0-9-]/g, "-") // Replace invalid chars with dashes
|
|
24
|
+
.replace(/-+/g, "-") // Replace multiple dashes with single dash
|
|
25
|
+
.replace(/^-|-$/g, ""); // Remove leading/trailing dashes
|
|
26
|
+
// Fallback to prevent empty wrangler names
|
|
27
|
+
if (!wranglerName || wranglerName.length === 0) {
|
|
28
|
+
wranglerName = "worker";
|
|
29
|
+
}
|
|
16
30
|
try {
|
|
17
31
|
console.log(chalk.blue("📦 Setting up Cloudflare Worker MCP server..."));
|
|
18
32
|
// Create package.json
|
|
@@ -53,8 +67,8 @@ export async function fetchCloudflareMcpiTemplate(projectPath, options = {}) {
|
|
|
53
67
|
"test:coverage": "vitest run --coverage",
|
|
54
68
|
},
|
|
55
69
|
dependencies: {
|
|
56
|
-
"@kya-os/contracts": "^1.5.
|
|
57
|
-
"@kya-os/mcp-i-cloudflare": "
|
|
70
|
+
"@kya-os/contracts": "^1.5.2-canary.3",
|
|
71
|
+
"@kya-os/mcp-i-cloudflare": "1.4.1-canary.16",
|
|
58
72
|
"@modelcontextprotocol/sdk": "^1.19.1",
|
|
59
73
|
agents: "^0.2.8",
|
|
60
74
|
hono: "^4.9.10",
|
|
@@ -228,9 +242,38 @@ async function setup() {
|
|
|
228
242
|
|
|
229
243
|
log(\`Creating \${ns.name} (\${ns.purpose})...\`, colors.blue);
|
|
230
244
|
|
|
245
|
+
// First, check if namespace already exists
|
|
246
|
+
let existingNamespace = null;
|
|
231
247
|
try {
|
|
232
|
-
|
|
233
|
-
|
|
248
|
+
const listOutput = execSync('wrangler kv namespace list', { encoding: 'utf-8', stdio: ['pipe', 'pipe', 'pipe'] });
|
|
249
|
+
|
|
250
|
+
try {
|
|
251
|
+
const allNamespaces = JSON.parse(listOutput);
|
|
252
|
+
existingNamespace = allNamespaces.find(n => n.title === ns.binding);
|
|
253
|
+
} catch (parseError) {
|
|
254
|
+
// Fallback to regex if JSON parsing fails
|
|
255
|
+
const existingMatch = listOutput.match(new RegExp(\`"title":\\s*"\${ns.binding}"[^}]*"id":\\s*"([^"]+)"\`));
|
|
256
|
+
if (existingMatch && existingMatch[1]) {
|
|
257
|
+
existingNamespace = { id: existingMatch[1], title: ns.binding };
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
} catch (listError) {
|
|
261
|
+
// If we can't list namespaces, continue to try creating
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
if (existingNamespace && existingNamespace.id) {
|
|
265
|
+
kvIds[ns.binding] = existingNamespace.id;
|
|
266
|
+
log(\` ✅ Using existing namespace with ID: \${existingNamespace.id}\`, colors.green);
|
|
267
|
+
continue;
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
// Namespace doesn't exist, try to create it
|
|
271
|
+
try {
|
|
272
|
+
// Suppress stderr to avoid noisy error messages
|
|
273
|
+
const output = execSync(\`wrangler kv namespace create "\${ns.binding}"\`, {
|
|
274
|
+
encoding: 'utf-8',
|
|
275
|
+
stdio: ['pipe', 'pipe', 'pipe']
|
|
276
|
+
});
|
|
234
277
|
|
|
235
278
|
// Extract the ID from output
|
|
236
279
|
const idMatch = output.match(/id = "([^"]+)"/);
|
|
@@ -239,36 +282,26 @@ async function setup() {
|
|
|
239
282
|
kvIds[ns.binding] = idMatch[1];
|
|
240
283
|
log(\` ✅ Created with ID: \${idMatch[1]}\`, colors.green);
|
|
241
284
|
} else {
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
285
|
+
log(\` ⚠️ Created but could not extract ID. Checking existing namespaces...\`, colors.yellow);
|
|
286
|
+
// Fallback: try to find it in the list
|
|
287
|
+
const listOutput = execSync('wrangler kv namespace list', { encoding: 'utf-8', stdio: ['pipe', 'pipe', 'pipe'] });
|
|
245
288
|
try {
|
|
246
|
-
const
|
|
247
|
-
const
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
log(\` ⚠️ Namespace already exists with ID: \${existingNamespace.id}\`, colors.yellow);
|
|
252
|
-
} else {
|
|
253
|
-
log(\` ⚠️ Could not extract ID for \${ns.binding}. You may need to add it manually.\`, colors.yellow);
|
|
254
|
-
}
|
|
255
|
-
} catch (parseError) {
|
|
256
|
-
// Fallback to regex if JSON parsing fails
|
|
257
|
-
const existingMatch = listOutput.match(new RegExp(\`"title":\\s*"\${ns.binding}"[^}]*"id":\\s*"([^"]+)"\`));
|
|
258
|
-
|
|
259
|
-
if (existingMatch && existingMatch[1]) {
|
|
260
|
-
kvIds[ns.binding] = existingMatch[1];
|
|
261
|
-
log(\` ⚠️ Namespace already exists with ID: \${existingMatch[1]}\`, colors.yellow);
|
|
262
|
-
} else {
|
|
263
|
-
log(\` ⚠️ Could not extract ID for \${ns.binding}. You may need to add it manually.\`, colors.yellow);
|
|
289
|
+
const allNamespaces = JSON.parse(listOutput);
|
|
290
|
+
const found = allNamespaces.find(n => n.title === ns.binding);
|
|
291
|
+
if (found && found.id) {
|
|
292
|
+
kvIds[ns.binding] = found.id;
|
|
293
|
+
log(\` ✅ Found ID: \${found.id}\`, colors.green);
|
|
264
294
|
}
|
|
295
|
+
} catch {
|
|
296
|
+
// Ignore parse errors
|
|
265
297
|
}
|
|
266
298
|
}
|
|
267
299
|
} catch (error) {
|
|
268
300
|
const errorMessage = error.message || error.toString();
|
|
301
|
+
const errorOutput = error.stdout || error.stderr || '';
|
|
269
302
|
|
|
270
303
|
// Check if this is a multiple accounts error
|
|
271
|
-
if (errorMessage.includes('More than one account') || errorMessage.includes('multiple accounts')) {
|
|
304
|
+
if (errorMessage.includes('More than one account') || errorMessage.includes('multiple accounts') || errorOutput.includes('More than one account')) {
|
|
272
305
|
multipleAccountsDetected = true;
|
|
273
306
|
log('\\n⚠️ Multiple Cloudflare accounts detected!\\n', colors.yellow);
|
|
274
307
|
log('Wrangler cannot automatically select an account in non-interactive mode.\\n', colors.yellow);
|
|
@@ -286,37 +319,39 @@ async function setup() {
|
|
|
286
319
|
break;
|
|
287
320
|
}
|
|
288
321
|
|
|
289
|
-
// Check if namespace already exists
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
// Parse JSON output
|
|
322
|
+
// Check if namespace already exists (common case - suppress noisy error)
|
|
323
|
+
if (errorMessage.includes('already exists') || errorOutput.includes('already exists') || errorOutput.includes('code: 10014')) {
|
|
324
|
+
// Try to get the existing namespace ID
|
|
294
325
|
try {
|
|
295
|
-
const
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
326
|
+
const listOutput = execSync('wrangler kv namespace list', { encoding: 'utf-8', stdio: ['pipe', 'pipe', 'pipe'] });
|
|
327
|
+
|
|
328
|
+
try {
|
|
329
|
+
const allNamespaces = JSON.parse(listOutput);
|
|
330
|
+
const found = allNamespaces.find(n => n.title === ns.binding);
|
|
331
|
+
|
|
332
|
+
if (found && found.id) {
|
|
333
|
+
kvIds[ns.binding] = found.id;
|
|
334
|
+
log(\` ✅ Using existing namespace with ID: \${found.id}\`, colors.green);
|
|
335
|
+
} else {
|
|
336
|
+
log(\` ⚠️ Namespace exists but could not find ID. You may need to add it manually.\`, colors.yellow);
|
|
337
|
+
}
|
|
338
|
+
} catch (parseError) {
|
|
339
|
+
// Fallback to regex
|
|
340
|
+
const existingMatch = listOutput.match(new RegExp(\`"title":\\s*"\${ns.binding}"[^}]*"id":\\s*"([^"]+)"\`));
|
|
341
|
+
if (existingMatch && existingMatch[1]) {
|
|
342
|
+
kvIds[ns.binding] = existingMatch[1];
|
|
343
|
+
log(\` ✅ Using existing namespace with ID: \${existingMatch[1]}\`, colors.green);
|
|
344
|
+
} else {
|
|
345
|
+
log(\` ⚠️ Namespace exists but could not find ID. You may need to add it manually.\`, colors.yellow);
|
|
346
|
+
}
|
|
316
347
|
}
|
|
348
|
+
} catch (listError) {
|
|
349
|
+
log(\` ⚠️ Namespace may already exist. Run 'wrangler kv namespace list' to verify.\`, colors.yellow);
|
|
317
350
|
}
|
|
318
|
-
}
|
|
319
|
-
|
|
351
|
+
} else {
|
|
352
|
+
// Some other error occurred
|
|
353
|
+
log(\` ❌ Failed to create \${ns.binding}\`, colors.red);
|
|
354
|
+
log(\` Error: \${errorMessage}\`, colors.red);
|
|
320
355
|
}
|
|
321
356
|
}
|
|
322
357
|
}
|
|
@@ -486,10 +521,15 @@ import { defineConfig } from '@kya-os/mcp-i-cloudflare';
|
|
|
486
521
|
* or .env (Node.js). Configure them there:
|
|
487
522
|
* - AGENTSHIELD_API_URL: AgentShield API base URL
|
|
488
523
|
* - AGENTSHIELD_API_KEY: Your AgentShield API key
|
|
524
|
+
* - AGENTSHIELD_PROJECT_ID: Your AgentShield project ID (optional but recommended)
|
|
489
525
|
* - MCPI_ENV: "development" or "production"
|
|
490
526
|
*
|
|
491
|
-
*
|
|
492
|
-
*
|
|
527
|
+
* Tool Protection:
|
|
528
|
+
* - Automatically enabled if AGENTSHIELD_API_KEY and TOOL_PROTECTION_KV are set
|
|
529
|
+
* - Fetches tool protection config from AgentShield API by project ID
|
|
530
|
+
* - Caches config for 5 minutes to minimize API calls
|
|
531
|
+
* - Falls back to local config if API is unavailable
|
|
532
|
+
* - Configure delegation requirements in AgentShield dashboard
|
|
493
533
|
*/
|
|
494
534
|
export function getRuntimeConfig(env: CloudflareEnv): CloudflareRuntimeConfig {
|
|
495
535
|
return defineConfig({
|
|
@@ -499,6 +539,8 @@ export function getRuntimeConfig(env: CloudflareEnv): CloudflareRuntimeConfig {
|
|
|
499
539
|
AGENTSHIELD_API_KEY: env.AGENTSHIELD_API_KEY,
|
|
500
540
|
AGENTSHIELD_API_URL: env.AGENTSHIELD_API_URL,
|
|
501
541
|
},
|
|
542
|
+
// Tool protection is automatically enabled by defineConfig if AGENTSHIELD_API_KEY is present
|
|
543
|
+
// You can override by explicitly setting toolProtection here
|
|
502
544
|
// Optional: Enable admin endpoints
|
|
503
545
|
admin: {
|
|
504
546
|
enabled: false, // Set to true and provide ADMIN_API_KEY to enable
|
|
@@ -557,7 +599,7 @@ export default createMCPIApp({
|
|
|
557
599
|
`;
|
|
558
600
|
fs.writeFileSync(path.join(srcDir, "index.ts"), indexContent);
|
|
559
601
|
const wranglerContent = `#:schema node_modules/wrangler/config-schema.json
|
|
560
|
-
name = "${
|
|
602
|
+
name = "${wranglerName}"
|
|
561
603
|
main = "src/index.ts"
|
|
562
604
|
compatibility_date = "2025-06-18"
|
|
563
605
|
compatibility_flags = ["nodejs_compat"]
|
|
@@ -570,6 +612,27 @@ class_name = "${pascalClassName}MCP"
|
|
|
570
612
|
tag = "v1"
|
|
571
613
|
new_sqlite_classes = ["${pascalClassName}MCP"]
|
|
572
614
|
|
|
615
|
+
# Cron trigger for proof batch queue flushing (OPTIONAL - CURRENTLY DISABLED)
|
|
616
|
+
#
|
|
617
|
+
# NOTE: Cloudflare Workers cron triggers are currently experiencing API parsing issues
|
|
618
|
+
# that prevent deployment. This section is commented out by default.
|
|
619
|
+
#
|
|
620
|
+
# Proofs will still work correctly without cron because:
|
|
621
|
+
# 1. First proof submits immediately (for dashboard setup detection)
|
|
622
|
+
# 2. Proofs auto-flush when batch size is reached (default: 10 proofs)
|
|
623
|
+
#
|
|
624
|
+
# If you want to enable cron-based flushing in the future:
|
|
625
|
+
# 1. Uncomment the section below
|
|
626
|
+
# 2. Adjust the schedule as needed (cron format: minute hour day month weekday)
|
|
627
|
+
# 3. Try deploying - if it fails with "Could not parse request body", cron triggers
|
|
628
|
+
# may not be supported for your account/region yet
|
|
629
|
+
#
|
|
630
|
+
# [[triggers.crons]]
|
|
631
|
+
# cron = "*/5 * * * *" # Every 5 minutes
|
|
632
|
+
#
|
|
633
|
+
# Note: Proofs are also flushed immediately when batch size is reached (default: 10 proofs),
|
|
634
|
+
# so cron is mainly for flushing small batches that haven't reached the size limit yet.
|
|
635
|
+
|
|
573
636
|
# KV Namespace for nonce cache (REQUIRED for replay attack prevention)
|
|
574
637
|
#
|
|
575
638
|
# RECOMMENDED: Share a single NONCE_CACHE namespace across all MCP-I workers
|
|
@@ -654,9 +717,11 @@ MCPI_ENV = "development"
|
|
|
654
717
|
# $ wrangler secret put ADMIN_API_KEY
|
|
655
718
|
# Note: .dev.vars is git-ignored and contains actual secret values for local dev
|
|
656
719
|
|
|
657
|
-
# Optional: MCP Server URL for tool discovery
|
|
658
|
-
# Uncomment to explicitly set your MCP server URL (auto-detected if not set)
|
|
659
|
-
#
|
|
720
|
+
# Optional: MCP Server URL for tool discovery and consent page generation
|
|
721
|
+
# Uncomment to explicitly set your MCP server URL (auto-detected from request origin if not set)
|
|
722
|
+
# IMPORTANT: Use base URL WITHOUT /mcp suffix (e.g., "https://your-worker.workers.dev")
|
|
723
|
+
# The consent pages are at /consent, not /mcp/consent
|
|
724
|
+
# MCP_SERVER_URL = "https://your-worker.workers.dev"
|
|
660
725
|
`;
|
|
661
726
|
fs.writeFileSync(path.join(projectPath, "wrangler.toml"), wranglerContent);
|
|
662
727
|
// Generate persistent identity for Cloudflare Worker
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetch-cloudflare-mcpi-template.js","sourceRoot":"","sources":["../../src/helpers/fetch-cloudflare-mcpi-template.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"fetch-cloudflare-mcpi-template.js","sourceRoot":"","sources":["../../src/helpers/fetch-cloudflare-mcpi-template.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAU1D;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAC/C,WAAmB,EACnB,UAAyC,EAAE;IAE3C,MAAM,EACJ,cAAc,GAAG,KAAK,EACtB,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,EACxC,MAAM,EACN,SAAS,EACT,YAAY,GAAG,KAAK,GACrB,GAAG,OAAO,CAAC;IAEZ,wCAAwC;IACxC,IAAI,SAAS,GAAG,WAAW;SACxB,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC;SAC5B,OAAO,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IAE5B,wCAAwC;IACxC,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzC,SAAS,GAAG,SAAS,CAAC;IACxB,CAAC;IAED,MAAM,eAAe,GACnB,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAEzD,iFAAiF;IACjF,IAAI,YAAY,GAAG,WAAW;SAC3B,WAAW,EAAE;SACb,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC,oCAAoC;SAChE,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,2CAA2C;SAC/D,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,iCAAiC;IAE3D,2CAA2C;IAC3C,IAAI,CAAC,YAAY,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/C,YAAY,GAAG,QAAQ,CAAC;IAC1B,CAAC;IAED,IAAI,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAC,CAAC;QAEzE,sBAAsB;QACtB,MAAM,WAAW,GAAG;YAClB,IAAI,EAAE,WAAW;YACjB,OAAO,EAAE,OAAO;YAChB,OAAO,EAAE,IAAI;YACb,OAAO,EAAE;gBACP,KAAK,EAAE,uBAAuB;gBAC9B,WAAW,EAAE,eAAe;gBAC5B,MAAM,EAAE,iBAAiB;gBACzB,GAAG,EAAE,cAAc;gBACnB,KAAK,EAAE,cAAc;gBACrB,WAAW,EACT,uJAAuJ;gBACzJ,iBAAiB,EAAE,gCAAgC,SAAS,CAAC,WAAW,EAAE,cAAc;gBACxF,iBAAiB,EAAE,gCAAgC,SAAS,CAAC,WAAW,EAAE,gBAAgB;gBAC1F,oBAAoB,EAAE,gCAAgC,SAAS,CAAC,WAAW,EAAE,mBAAmB;gBAChG,sBAAsB,EAAE,gCAAgC,SAAS,CAAC,WAAW,EAAE,qBAAqB;gBACpG,2BAA2B,EAAE,gCAAgC,SAAS,CAAC,WAAW,EAAE,qBAAqB;gBACzG,SAAS,EACP,6HAA6H;gBAC/H,eAAe,EAAE,kCAAkC,SAAS,CAAC,WAAW,EAAE,cAAc;gBACxF,eAAe,EAAE,kCAAkC,SAAS,CAAC,WAAW,EAAE,gBAAgB;gBAC1F,kBAAkB,EAAE,kCAAkC,SAAS,CAAC,WAAW,EAAE,mBAAmB;gBAChG,oBAAoB,EAAE,kCAAkC,SAAS,CAAC,WAAW,EAAE,qBAAqB;gBACpG,yBAAyB,EAAE,kCAAkC,SAAS,CAAC,WAAW,EAAE,qBAAqB;gBACzG,iBAAiB,EAAE,0CAA0C,SAAS,CAAC,WAAW,EAAE,cAAc;gBAClG,iBAAiB,EAAE,0CAA0C,SAAS,CAAC,WAAW,EAAE,gBAAgB;gBACpG,oBAAoB,EAAE,0CAA0C,SAAS,CAAC,WAAW,EAAE,mBAAmB;gBAC1G,sBAAsB,EAAE,0CAA0C,SAAS,CAAC,WAAW,EAAE,qBAAqB;gBAC9G,2BAA2B,EAAE,0CAA0C,SAAS,CAAC,WAAW,EAAE,qBAAqB;gBACnH,WAAW,EACT,uJAAuJ;gBACzJ,UAAU,EAAE,wCAAwC;gBACpD,UAAU,EACR,2IAA2I;gBAC7I,YAAY,EAAE,gBAAgB;gBAC9B,YAAY,EAAE,cAAc;gBAC5B,IAAI,EAAE,QAAQ;gBACd,YAAY,EAAE,gBAAgB;gBAC9B,eAAe,EAAE,uBAAuB;aACzC;YACD,YAAY,EAAE;gBACZ,mBAAmB,EAAE,iBAAiB;gBACtC,0BAA0B,EAAE,iBAAiB;gBAC7C,2BAA2B,EAAE,SAAS;gBACtC,MAAM,EAAE,QAAQ;gBAChB,IAAI,EAAE,SAAS;gBACf,GAAG,EAAE,UAAU;aAChB;YACD,eAAe,EAAE;gBACf,2BAA2B,EAAE,eAAe;gBAC5C,yBAAyB,EAAE,SAAS;gBACpC,qBAAqB,EAAE,QAAQ;gBAC/B,SAAS,EAAE,QAAQ;gBACnB,UAAU,EAAE,QAAQ;gBACpB,MAAM,EAAE,QAAQ;gBAChB,QAAQ,EAAE,SAAS;aACpB;SACF,CAAC;QAEF,EAAE,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;QAC9B,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,EAAE,WAAW,EAAE;YACpE,MAAM,EAAE,CAAC;SACV,CAAC,CAAC;QAEH,iCAAiC;QACjC,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;QAC7C,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC5C,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QAE3B,2BAA2B;QAC3B,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;QACrD,EAAE,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;QAE7B,oCAAoC;QACpC,MAAM,kBAAkB,GAAG;;;gCAGC,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4CAgFC,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBA6CrC,SAAS,CAAC,WAAW,EAAE;kBACvB,SAAS,CAAC,WAAW,EAAE;kBACvB,SAAS,CAAC,WAAW,EAAE;kBACvB,SAAS,CAAC,WAAW,EAAE;kBACvB,SAAS,CAAC,WAAW,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+NxC,CAAC;QACE,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC,EAAE,kBAAkB,CAAC,CAAC;QAExE,+BAA+B;QAC/B,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;YACjC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC,EAAE,KAAK,CAAC,CAAC;QACzD,CAAC;QAED,kDAAkD;QAClD,0CAA0C;QAE1C,oBAAoB;QACpB,MAAM,gBAAgB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4C5B,CAAC;QACE,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,EAAE,gBAAgB,CAAC,CAAC;QAEpE,4DAA4D;QAC5D,MAAM,oBAAoB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyChC,CAAC;QACE,EAAE,CAAC,aAAa,CACd,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,wBAAwB,CAAC,EAC3C,oBAAoB,CACrB,CAAC;QAEF,kDAAkD;QAClD,MAAM,YAAY,GAAG;;;;;;;;IAQrB,SAAS,CAAC,WAAW,EAAE;IACvB,SAAS,CAAC,WAAW,EAAE;IACvB,SAAS,CAAC,WAAW,EAAE;IACvB,SAAS,CAAC,WAAW,EAAE;IACvB,SAAS,CAAC,WAAW,EAAE;;;;;;;eAOZ,eAAe;;;;;;;;;;;;;;;;;;;;gBAoBd,eAAe;gBACf,WAAW;;gBAEX,SAAS,CAAC,WAAW,EAAE;;;CAGtC,CAAC;QACE,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,EAAE,YAAY,CAAC,CAAC;QAC9D,MAAM,eAAe,GAAG;UAClB,YAAY;;;;;;;gBAON,eAAe;;;;yBAIN,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aA6B3B,SAAS,CAAC,WAAW,EAAE;;;;;;;;;;;;aAYvB,SAAS,CAAC,WAAW,EAAE;;;;;;;;;;aAUvB,SAAS,CAAC,WAAW,EAAE;;;;;;;;;;aAUvB,SAAS,CAAC,WAAW,EAAE;;;6CAGS,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU;;;;;;;;;;;;;;;;;;aAkB/D,SAAS,CAAC,WAAW,EAAE;;;;;;;;;;;;;;4BAcR,SAAS,IAAI,EAAE;;;;;;;;;;;;;;;;CAgB1C,CAAC;QACE,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,eAAe,CAAC,EAAE,eAAe,CAAC,CAAC;QAE3E,qDAAqD;QACrD,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC,CAAC;YAEhE,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,MAAM,gBAAgB,EAAE,CAAC;gBAE1C,8BAA8B;gBAC9B,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;gBAC7D,IAAI,mBAAmB,GAAG,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;gBAEhE,6DAA6D;gBAC7D,4EAA4E;gBAC5E,MAAM,SAAS,GAAG,mBAAmB,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;gBACxD,IAAI,SAAS,EAAE,CAAC;oBACd,MAAM,cAAc,GAAG,SAAS,CAAC,KAAM,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;oBAC9D,MAAM,YAAY,GAAG;;4BAEH,QAAQ,CAAC,GAAG;;;6BAGX,QAAQ,CAAC,SAAS;;;;;;;;;;;;;CAa9C,CAAC;oBAEQ,uEAAuE;oBACvE,4EAA4E;oBAC5E,mBAAmB,GAAG,mBAAmB,CAAC,OAAO,CAC/C,uCAAuC,EACvC,+FAA+F,CAChG,CAAC;oBACF,mBAAmB,GAAG,mBAAmB,CAAC,OAAO,CAC/C,kCAAkC,EAClC,0FAA0F,CAC3F,CAAC;oBACF,mBAAmB,GAAG,mBAAmB,CAAC,OAAO,CAC/C,4BAA4B,EAC5B,oFAAoF,CACrF,CAAC;oBAEF,0DAA0D;oBAC1D,IAAI,6BAA6B,CAAC,IAAI,CAAC,mBAAmB,CAAC,EAAE,CAAC;wBAC5D,mBAAmB,GAAG,mBAAmB,CAAC,OAAO,CAC/C,uCAAuC,EACvC,8BAA8B,QAAQ,CAAC,SAAS,GAAG,CACpD,CAAC;oBACJ,CAAC;oBAED,uEAAuE;oBACvE,wDAAwD;oBACxD,IACE,SAAS;wBACT,4BAA4B,CAAC,IAAI,CAAC,mBAAmB,CAAC,EACtD,CAAC;wBACD,mBAAmB,GAAG,mBAAmB,CAAC,OAAO,CAC/C,sCAAsC,EACtC,6BAA6B,SAAS,GAAG,CAC1C,CAAC;oBACJ,CAAC;oBAED,+DAA+D;oBAC/D,MAAM,cAAc,GAAG,4BAA4B,CAAC,IAAI,CACtD,mBAAmB,CACpB,CAAC;oBACF,MAAM,oBAAoB,GAAG,6BAA6B,CAAC,IAAI,CAC7D,mBAAmB,CACpB,CAAC;oBAEF,wDAAwD;oBACxD,MAAM,cAAc,GAAG,CAAC,cAAc,IAAI,CAAC,oBAAoB,CAAC;oBAEhE,IAAI,cAAc,EAAE,CAAC;wBACnB,mBAAmB;4BACjB,mBAAmB,CAAC,KAAK,CAAC,CAAC,EAAE,cAAc,CAAC;gCAC5C,YAAY;gCACZ,mBAAmB,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;oBAC9C,CAAC;oBAED,gDAAgD;oBAChD,EAAE,CAAC,aAAa,CAAC,YAAY,EAAE,mBAAmB,CAAC,CAAC;oBAEpD,4DAA4D;oBAC5D,yDAAyD;oBACzD,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;oBACxD,MAAM,cAAc,GAAG;;;;;;;;;;;4BAWL,QAAQ,CAAC,UAAU;;;uBAGxB,MAAM,IAAI,EAAE,IAAI,MAAM,CAAC,CAAC,CAAC,gCAAgC,CAAC,CAAC,CAAC,EAAE;;;iBAGpE,MAAM,IAAI,EAAE,IAAI,MAAM,CAAC,CAAC,CAAC,8CAA8C,CAAC,CAAC,CAAC,EAAE;CAC5F,CAAC;oBACQ,EAAE,CAAC,aAAa,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;oBAE9C,yCAAyC;oBACzC,MAAM,kBAAkB,GAAG,IAAI,CAAC,IAAI,CAClC,WAAW,EACX,mBAAmB,CACpB,CAAC;oBACF,MAAM,qBAAqB,GAAG;;;;;;;;;;;;;;CAcvC,CAAC;oBACQ,EAAE,CAAC,aAAa,CAAC,kBAAkB,EAAE,qBAAqB,CAAC,CAAC;oBAE5D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC,CAAC;oBAC5D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;oBAClD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC,CAAC;oBAC5D,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,GAAG,CAAC,mDAAmD,CAAC,CAC/D,CAAC;oBACF,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,GAAG,CAAC,8CAA8C,CAAC,CAC1D,CAAC;oBACF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC,CAAC;oBACrE,OAAO,CAAC,GAAG,EAAE,CAAC;oBACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,yBAAyB,CAAC,CAAC,CAAC;oBACrD,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,GAAG,CAAC,wDAAwD,CAAC,CACpE,CAAC;oBACF,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,GAAG,CAAC,gDAAgD,CAAC,CAC5D,CAAC;oBACF,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,IAAI,CAAC,sDAAsD,CAAC,CACnE,CAAC;oBACF,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAC9D,CAAC;oBACF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC,CAAC;oBACrE,OAAO,CAAC,GAAG,EAAE,CAAC;oBACd,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,GAAG,CAAC,kDAAkD,CAAC,CAC9D,CAAC;oBACF,OAAO,CAAC,GAAG,EAAE,CAAC;gBAChB,CAAC;YACH,CAAC;YAAC,OAAO,KAAU,EAAE,CAAC;gBACpB,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,MAAM,CAAC,kCAAkC,CAAC,EAChD,KAAK,CAAC,OAAO,CACd,CAAC;gBACF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC,CAAC;gBAC9D,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,IAAI,CAAC,sDAAsD,CAAC,CACnE,CAAC;gBACF,OAAO,CAAC,GAAG,EAAE,CAAC;YAChB,CAAC;QACH,CAAC;QAED,uBAAuB;QACvB,MAAM,eAAe,GAAG;YACtB,eAAe,EAAE;gBACf,MAAM,EAAE,QAAQ;gBAChB,MAAM,EAAE,QAAQ;gBAChB,GAAG,EAAE,CAAC,QAAQ,CAAC;gBACf,KAAK,EAAE,CAAC,2BAA2B,CAAC;gBACpC,gBAAgB,EAAE,SAAS;gBAC3B,iBAAiB,EAAE,IAAI;gBACvB,4BAA4B,EAAE,IAAI;gBAClC,eAAe,EAAE,IAAI;gBACrB,MAAM,EAAE,IAAI;gBACZ,YAAY,EAAE,IAAI;gBAClB,gCAAgC,EAAE,IAAI;aACvC;YACD,OAAO,EAAE,CAAC,UAAU,CAAC;SACtB,CAAC;QACF,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,eAAe,CAAC,EAAE,eAAe,EAAE;YACzE,MAAM,EAAE,CAAC;SACV,CAAC,CAAC;QAEH,oBAAoB;QACpB,MAAM,gBAAgB,GAAG;;;;;;;CAO5B,CAAC;QACE,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,EAAE,gBAAgB,CAAC,CAAC;QAEzE,0DAA0D;QAC1D,MAAM,YAAY,GAAG;;;;;CAKxB,CAAC;QACE,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,EAAE,YAAY,CAAC,CAAC;QAEjE,mBAAmB;QACnB,MAAM,aAAa,GAAG,KAAK,WAAW;;;;;;;;;;;;;;;;;;EAkBxC,cAAc;;;;;;;;EAQd,cAAc,KAAK,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAmCjD,cAAc,KAAK,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,cAAc;MACrD,cAAc,KAAK,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,cAAc;MACrD,cAAc,KAAK,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,cAAc;MACrD,cAAc,KAAK,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,cAAc;MACrD,cAAc,KAAK,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,cAAc;;;;;EAKzD,cAAc,KAAK,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,cAAc;;;;;;;;;;;;;;;;;;;;;;EAsBrD,cAAc,KAAK,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,cAAc;;;;;;;;;;OAUhD,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAuDhB,cAAc,KAAK,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA4DlD,cAAc,KAAK,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA+BrD,cAAc,KAAK,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,cAAc;;;;;;;;;;;;;;;;KAgBrD,cAAc,KAAK,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmCzD,CAAC;QACE,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,EAAE,aAAa,CAAC,CAAC;QAErE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAC,CAAC;QACnE,OAAO,CAAC,GAAG,EAAE,CAAC;QAEd,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,KAAK,CAAC,oDAAoD,CAAC,CAClE,CAAC;YACF,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,GAAG,CAAC,sDAAsD,CAAC,CAClE,CAAC;YACF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,iDAAiD,CAAC,CAAC,CAAC;YAC1E,OAAO,CAAC,GAAG,EAAE,CAAC;QAChB,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,qCAAqC,CAAC,CAAC,CAAC;YACjE,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,GAAG,CACP,uEAAuE,CACxE,CACF,CAAC;YACF,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,GAAG,CAAC,sDAAsD,CAAC,CAClE,CAAC;YACF,OAAO,CAAC,GAAG,EAAE,CAAC;QAChB,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC,CAAC;QAC3D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC,CAAC;QACrE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,iDAAiD,CAAC,CAAC,CAAC;QAC1E,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,mDAAmD,CAAC,CAAC,CAAC;QAC5E,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,mDAAmD,CAAC,CAAC,CAAC;QAC5E,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,GAAG,CAAC,2DAA2D,CAAC,CACvE,CAAC;QACF,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,IAAI,CAAC,qDAAqD,CAAC,CAClE,CAAC;QACF,OAAO,CAAC,GAAG,EAAE,CAAC;IAChB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CACX,KAAK,CAAC,GAAG,CAAC,gDAAgD,CAAC,EAC3D,KAAK,CACN,CAAC;QACF,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC"}
|