create-mn-app 0.0.6 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +193 -39
- package/dist/cli.js +20 -9
- package/dist/cli.js.map +1 -1
- package/dist/create-app.d.ts +3 -1
- package/dist/create-app.d.ts.map +1 -1
- package/dist/create-app.js +163 -30
- package/dist/create-app.js.map +1 -1
- package/dist/installers/package-installer.d.ts +1 -1
- package/dist/installers/package-installer.d.ts.map +1 -1
- package/dist/installers/package-installer.js.map +1 -1
- package/dist/utils/error-handler.d.ts +27 -0
- package/dist/utils/error-handler.d.ts.map +1 -0
- package/dist/utils/error-handler.js +116 -0
- package/dist/utils/error-handler.js.map +1 -0
- package/dist/utils/git-cloner.d.ts +11 -0
- package/dist/utils/git-cloner.d.ts.map +1 -0
- package/dist/utils/git-cloner.js +50 -0
- package/dist/utils/git-cloner.js.map +1 -0
- package/dist/utils/package-manager.d.ts +21 -0
- package/dist/utils/package-manager.d.ts.map +1 -0
- package/dist/utils/package-manager.js +108 -0
- package/dist/utils/package-manager.js.map +1 -0
- package/dist/utils/requirement-checker.d.ts +27 -0
- package/dist/utils/requirement-checker.d.ts.map +1 -0
- package/dist/utils/requirement-checker.js +110 -0
- package/dist/utils/requirement-checker.js.map +1 -0
- package/dist/utils/setup-guide.d.ts +22 -0
- package/dist/utils/setup-guide.d.ts.map +1 -0
- package/dist/utils/setup-guide.js +89 -0
- package/dist/utils/setup-guide.js.map +1 -0
- package/dist/utils/templates.d.ts +36 -0
- package/dist/utils/templates.d.ts.map +1 -0
- package/dist/utils/templates.js +79 -0
- package/dist/utils/templates.js.map +1 -0
- package/package.json +3 -3
- package/templates/hello-world/package.json.template +1 -0
- package/templates/hello-world/src/health-check.ts.template +127 -0
package/README.md
CHANGED
|
@@ -11,26 +11,47 @@ cd my-app
|
|
|
11
11
|
npm run setup
|
|
12
12
|
```
|
|
13
13
|
|
|
14
|
-
## Features
|
|
15
|
-
|
|
16
|
-
-
|
|
17
|
-
-
|
|
18
|
-
-
|
|
19
|
-
-
|
|
20
|
-
-
|
|
14
|
+
## ✨ Features
|
|
15
|
+
|
|
16
|
+
- 🎯 **Interactive Setup** - Guided project creation with template selection
|
|
17
|
+
- 📦 **Smart Package Manager** - Auto-detects your preferred package manager (npm/yarn/pnpm/bun)
|
|
18
|
+
- 🏥 **Health Checks** - Verify your environment is ready before development
|
|
19
|
+
- ⚡ **Zero Configuration** - Works out of the box with sensible defaults
|
|
20
|
+
- 🔧 **Modern Tooling** - TypeScript, hot reloading, auto-compilation
|
|
21
|
+
- 🛡️ **Best Practices** - Secure wallet generation, proper project structure
|
|
22
|
+
- 🚀 **Fast Setup** - From zero to working app in 60 seconds
|
|
23
|
+
- � **Helpful Errors** - Clear error messages with actionable solutions
|
|
21
24
|
- 📦 **ES Modules** - Modern JavaScript module system
|
|
22
|
-
- 🐳 **Docker
|
|
25
|
+
- 🐳 **Docker Integration** - Automated proof server setup
|
|
26
|
+
|
|
27
|
+
## 🚀 Quick Start
|
|
28
|
+
|
|
29
|
+
### Interactive Mode (Recommended)
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
npx create-mn-app
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
You'll be prompted to:
|
|
36
|
+
|
|
37
|
+
1. **Enter your project name** - Choose a descriptive name for your app
|
|
38
|
+
2. **Select a template** - Pick from available templates or see what's coming soon
|
|
39
|
+
3. **Choose configuration** - Package manager, git, and other options
|
|
23
40
|
|
|
24
|
-
|
|
41
|
+
### Command Line Mode
|
|
25
42
|
|
|
26
43
|
```bash
|
|
27
|
-
# Create
|
|
44
|
+
# Create with defaults
|
|
28
45
|
npx create-mn-app my-midnight-app
|
|
29
46
|
|
|
30
|
-
#
|
|
31
|
-
|
|
47
|
+
# Create with specific template
|
|
48
|
+
npx create-mn-app my-app --template hello-world
|
|
32
49
|
|
|
33
|
-
#
|
|
50
|
+
# Use specific package manager
|
|
51
|
+
npx create-mn-app my-app --use-pnpm
|
|
52
|
+
|
|
53
|
+
# Navigate and setup
|
|
54
|
+
cd my-app
|
|
34
55
|
npm run setup
|
|
35
56
|
```
|
|
36
57
|
|
|
@@ -46,7 +67,7 @@ Your generated project includes:
|
|
|
46
67
|
- 📋 **Environment Config** - `.env` file with network configuration
|
|
47
68
|
- 🔄 **Git Ready** - Initialized git repository with proper `.gitignore`
|
|
48
69
|
|
|
49
|
-
## Available Commands
|
|
70
|
+
## 📚 Available Commands
|
|
50
71
|
|
|
51
72
|
Once your project is created, you can run:
|
|
52
73
|
|
|
@@ -58,6 +79,19 @@ Complete setup pipeline:
|
|
|
58
79
|
2. Builds TypeScript to JavaScript
|
|
59
80
|
3. Deploys contracts to the network
|
|
60
81
|
|
|
82
|
+
### `npm run health-check`
|
|
83
|
+
|
|
84
|
+
🏥 Verify your development environment:
|
|
85
|
+
|
|
86
|
+
- ✓ Node.js version (18+)
|
|
87
|
+
- ✓ Docker availability
|
|
88
|
+
- ✓ Environment configuration
|
|
89
|
+
- ✓ Wallet setup
|
|
90
|
+
- ✓ Dependencies installed
|
|
91
|
+
- ✓ Project built correctly
|
|
92
|
+
|
|
93
|
+
Run this command before development to catch issues early!
|
|
94
|
+
|
|
61
95
|
### `npm run cli`
|
|
62
96
|
|
|
63
97
|
Opens an interactive command-line interface to:
|
|
@@ -67,6 +101,10 @@ Opens an interactive command-line interface to:
|
|
|
67
101
|
- Retrieve stored messages
|
|
68
102
|
- Test contract functionality
|
|
69
103
|
|
|
104
|
+
### `npm run check-balance`
|
|
105
|
+
|
|
106
|
+
Checks your wallet balance. Useful for verifying if test tokens from the faucet have arrived before deploying.
|
|
107
|
+
|
|
70
108
|
### `npm run compile`
|
|
71
109
|
|
|
72
110
|
Compiles your Compact smart contracts from `contracts/` to `contracts/managed/`
|
|
@@ -79,10 +117,6 @@ Builds your TypeScript source code to JavaScript in the `dist/` directory
|
|
|
79
117
|
|
|
80
118
|
Deploys your compiled contract to the Midnight testnet
|
|
81
119
|
|
|
82
|
-
### `npm run check-balance`
|
|
83
|
-
|
|
84
|
-
Checks your wallet balance. Useful for verifying if test tokens from the faucet have arrived before deploying.
|
|
85
|
-
|
|
86
120
|
## Project Structure
|
|
87
121
|
|
|
88
122
|
```
|
|
@@ -104,9 +138,13 @@ my-midnight-app/
|
|
|
104
138
|
└── nodemon.json
|
|
105
139
|
```
|
|
106
140
|
|
|
107
|
-
## Templates
|
|
141
|
+
## 🎨 Templates
|
|
142
|
+
|
|
143
|
+
Choose from various templates to kickstart your Midnight project:
|
|
108
144
|
|
|
109
|
-
###
|
|
145
|
+
### ✅ Available Now
|
|
146
|
+
|
|
147
|
+
#### **Hello World** (Default)
|
|
110
148
|
|
|
111
149
|
A simple message storage contract demonstrating:
|
|
112
150
|
|
|
@@ -115,42 +153,116 @@ A simple message storage contract demonstrating:
|
|
|
115
153
|
- Contract deployment
|
|
116
154
|
- Interactive testing
|
|
117
155
|
|
|
118
|
-
|
|
156
|
+
```bash
|
|
157
|
+
npx create-mn-app my-app --template hello-world
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
#### **Counter DApp**
|
|
161
|
+
|
|
162
|
+
Real-world example from midnightntwrk demonstrating:
|
|
163
|
+
|
|
164
|
+
- Increment/decrement state management
|
|
165
|
+
- Zero-knowledge proofs on testnet
|
|
166
|
+
- Compact compiler integration
|
|
167
|
+
- Full CLI interface
|
|
168
|
+
|
|
169
|
+
```bash
|
|
170
|
+
npx create-mn-app my-counter --template counter
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
_Automatically cloned from [midnightntwrk/example-counter](https://github.com/midnightntwrk/example-counter)_
|
|
174
|
+
|
|
175
|
+
**Requirements:** Node.js 22+, Docker, Compact compiler
|
|
176
|
+
|
|
177
|
+
### 🔜 Coming Soon
|
|
178
|
+
|
|
179
|
+
#### **Bulletin Board (Bboard)**
|
|
180
|
+
|
|
181
|
+
Bulletin board with multi-user interactions and privacy patterns
|
|
182
|
+
|
|
183
|
+
#### **Decentralized Exchange (DEX)**
|
|
184
|
+
|
|
185
|
+
Decentralized exchange using OpenZeppelin FungibleToken
|
|
186
|
+
|
|
187
|
+
#### **Midnight Kitties**
|
|
119
188
|
|
|
120
|
-
|
|
189
|
+
Full stack DApp using NFT smart contract library (Crypto Kitties on Midnight)
|
|
121
190
|
|
|
122
|
-
|
|
191
|
+
_These templates are under development. Star the repo to stay updated!_
|
|
192
|
+
|
|
193
|
+
## ⚙️ Requirements
|
|
194
|
+
|
|
195
|
+
- **Node.js** 22.0.0 or higher (required for all templates)
|
|
123
196
|
- **Docker** (for running the proof server)
|
|
124
|
-
- **npm**, **yarn**, or **
|
|
197
|
+
- **npm**, **yarn**, **pnpm**, or **bun** package manager
|
|
198
|
+
- **Compact Compiler** (required for Counter and future templates - CLI will guide installation)
|
|
199
|
+
|
|
200
|
+
> **Note:** The CLI automatically checks Node.js version on startup and will guide you if an upgrade is needed.
|
|
201
|
+
|
|
202
|
+
## 📦 Package Manager Options
|
|
203
|
+
|
|
204
|
+
The CLI automatically detects your preferred package manager! It checks:
|
|
125
205
|
|
|
126
|
-
|
|
206
|
+
1. Lock files in your directory (package-lock.json, yarn.lock, pnpm-lock.yaml, bun.lockb)
|
|
207
|
+
2. Environment variables set by your package manager
|
|
208
|
+
3. Available package managers on your system
|
|
127
209
|
|
|
128
|
-
You can
|
|
210
|
+
You can also explicitly specify:
|
|
129
211
|
|
|
130
212
|
```bash
|
|
131
|
-
# npm
|
|
132
|
-
npx create-mn-app my-app
|
|
213
|
+
# npm
|
|
214
|
+
npx create-mn-app my-app --use-npm
|
|
133
215
|
|
|
134
216
|
# Yarn
|
|
135
|
-
npx create-mn-app my-app --yarn
|
|
217
|
+
npx create-mn-app my-app --use-yarn
|
|
136
218
|
|
|
137
219
|
# pnpm
|
|
138
|
-
npx create-mn-app my-app --pnpm
|
|
220
|
+
npx create-mn-app my-app --use-pnpm
|
|
221
|
+
|
|
222
|
+
# Bun
|
|
223
|
+
npx create-mn-app my-app --use-bun
|
|
139
224
|
```
|
|
140
225
|
|
|
141
|
-
|
|
226
|
+
All commands in the success message will use your chosen package manager! 🎉
|
|
227
|
+
|
|
228
|
+
## ⚙️ CLI Options
|
|
142
229
|
|
|
143
230
|
```bash
|
|
144
231
|
npx create-mn-app [project-name] [options]
|
|
145
232
|
|
|
233
|
+
Arguments:
|
|
234
|
+
project-name Name of your project (interactive prompt if omitted)
|
|
235
|
+
|
|
146
236
|
Options:
|
|
147
|
-
--template <name>
|
|
148
|
-
--
|
|
149
|
-
--
|
|
150
|
-
--
|
|
151
|
-
--
|
|
152
|
-
--skip-
|
|
153
|
-
-
|
|
237
|
+
-t, --template <name> Template to use (hello-world, counter, bboard, dex, midnight-kitties)
|
|
238
|
+
--use-npm Use npm as package manager
|
|
239
|
+
--use-yarn Use Yarn as package manager
|
|
240
|
+
--use-pnpm Use pnpm as package manager
|
|
241
|
+
--use-bun Use bun as package manager
|
|
242
|
+
--skip-install Skip dependency installation
|
|
243
|
+
--skip-git Skip git initialization
|
|
244
|
+
--verbose Show detailed output including stack traces
|
|
245
|
+
-h, --help Display help information
|
|
246
|
+
-V, --version Display version number
|
|
247
|
+
```
|
|
248
|
+
|
|
249
|
+
### Examples
|
|
250
|
+
|
|
251
|
+
```bash
|
|
252
|
+
# Interactive mode (recommended)
|
|
253
|
+
npx create-mn-app
|
|
254
|
+
|
|
255
|
+
# With project name
|
|
256
|
+
npx create-mn-app my-midnight-dapp
|
|
257
|
+
|
|
258
|
+
# Specific template and package manager
|
|
259
|
+
npx create-mn-app my-dex --template dex --use-pnpm
|
|
260
|
+
|
|
261
|
+
# Skip installation (for CI/CD)
|
|
262
|
+
npx create-mn-app my-app --skip-install --skip-git
|
|
263
|
+
|
|
264
|
+
# Verbose output for debugging
|
|
265
|
+
npx create-mn-app my-app --verbose
|
|
154
266
|
```
|
|
155
267
|
|
|
156
268
|
## Environment Configuration
|
|
@@ -170,7 +282,34 @@ PROOF_SERVER_URL=http://localhost:6300
|
|
|
170
282
|
|
|
171
283
|
⚠️ **Important**: Never commit your `.env` file or share your wallet seed phrase!
|
|
172
284
|
|
|
173
|
-
## Troubleshooting
|
|
285
|
+
## 🔧 Troubleshooting
|
|
286
|
+
|
|
287
|
+
### Node.js version error
|
|
288
|
+
|
|
289
|
+
If you see "Node.js Version Error":
|
|
290
|
+
|
|
291
|
+
```bash
|
|
292
|
+
# Check your version
|
|
293
|
+
node --version
|
|
294
|
+
|
|
295
|
+
# Install Node.js 22+ from https://nodejs.org
|
|
296
|
+
# Or use nvm:
|
|
297
|
+
nvm install 22
|
|
298
|
+
nvm use 22
|
|
299
|
+
```
|
|
300
|
+
|
|
301
|
+
The CLI automatically checks for Node.js 22+ before running!
|
|
302
|
+
|
|
303
|
+
### Environment issues
|
|
304
|
+
|
|
305
|
+
Run the health check to diagnose problems:
|
|
306
|
+
|
|
307
|
+
```bash
|
|
308
|
+
cd my-app
|
|
309
|
+
npm run health-check
|
|
310
|
+
```
|
|
311
|
+
|
|
312
|
+
This will show you exactly what needs to be fixed. ✨
|
|
174
313
|
|
|
175
314
|
### Waiting for faucet funds
|
|
176
315
|
|
|
@@ -217,6 +356,21 @@ Ensure Docker Desktop is running before starting the development server:
|
|
|
217
356
|
|
|
218
357
|
```bash
|
|
219
358
|
docker --version
|
|
359
|
+
|
|
360
|
+
# If not installed, get it from:
|
|
361
|
+
# https://docker.com
|
|
362
|
+
```
|
|
363
|
+
|
|
364
|
+
### Permission errors
|
|
365
|
+
|
|
366
|
+
If you encounter EACCES errors:
|
|
367
|
+
|
|
368
|
+
```bash
|
|
369
|
+
# Fix npm permissions (recommended)
|
|
370
|
+
# See: https://docs.npmjs.com/resolving-eacces-permissions-errors
|
|
371
|
+
|
|
372
|
+
# Or use a version manager like nvm (better solution)
|
|
373
|
+
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash
|
|
220
374
|
```
|
|
221
375
|
|
|
222
376
|
## Learn More
|
package/dist/cli.js
CHANGED
|
@@ -5,28 +5,39 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
const commander_1 = require("commander");
|
|
7
7
|
const chalk_1 = __importDefault(require("chalk"));
|
|
8
|
-
const
|
|
8
|
+
const create_app_js_1 = require("./create-app.js");
|
|
9
|
+
const error_handler_js_1 = require("./utils/error-handler.js");
|
|
9
10
|
const program = new commander_1.Command();
|
|
11
|
+
// Check Node.js version before anything else (require 22+)
|
|
12
|
+
error_handler_js_1.ErrorHandler.checkNodeVersion(22);
|
|
10
13
|
program
|
|
11
14
|
.name("create-midnight-app")
|
|
12
15
|
.description("Create a new Midnight Network application")
|
|
13
|
-
.version("
|
|
16
|
+
.version("0.2.0")
|
|
14
17
|
.argument("[project-directory]", "Directory name for your project")
|
|
15
|
-
.option("-t, --template <name>", "Template to use
|
|
16
|
-
.option("--use-npm", "Use npm
|
|
17
|
-
.option("--use-
|
|
18
|
+
.option("-t, --template <name>", "Template to use (hello-world, counter, bboard, dex, midnight-kitties)")
|
|
19
|
+
.option("--use-npm", "Use npm explicitly")
|
|
20
|
+
.option("--use-yarn", "Use yarn explicitly")
|
|
21
|
+
.option("--use-pnpm", "Use pnpm explicitly")
|
|
22
|
+
.option("--use-bun", "Use bun explicitly")
|
|
18
23
|
.option("--skip-install", "Skip package installation")
|
|
19
24
|
.option("--skip-git", "Skip git repository initialization")
|
|
20
25
|
.option("--verbose", "Show detailed output")
|
|
21
26
|
.action(async (projectDirectory, options) => {
|
|
22
27
|
console.log(chalk_1.default.blue.bold("🌙 Create Midnight App\n"));
|
|
23
28
|
try {
|
|
24
|
-
await (0,
|
|
29
|
+
await (0, create_app_js_1.createApp)(projectDirectory, options);
|
|
25
30
|
}
|
|
26
31
|
catch (error) {
|
|
27
|
-
console.error(
|
|
28
|
-
|
|
29
|
-
|
|
32
|
+
console.error();
|
|
33
|
+
console.error(error_handler_js_1.ErrorHandler.formatError(error instanceof Error ? error : new Error(String(error)), "creating app"));
|
|
34
|
+
if (error instanceof Error) {
|
|
35
|
+
error_handler_js_1.ErrorHandler.suggestSolution(error);
|
|
36
|
+
if (options.verbose && error.stack) {
|
|
37
|
+
console.error(chalk_1.default.gray("Stack trace:"));
|
|
38
|
+
console.error(chalk_1.default.gray(error.stack));
|
|
39
|
+
console.error();
|
|
40
|
+
}
|
|
30
41
|
}
|
|
31
42
|
process.exit(1);
|
|
32
43
|
}
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;;;;AAAA,yCAAoC;AACpC,kDAA0B;AAC1B,
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;;;;AAAA,yCAAoC;AACpC,kDAA0B;AAC1B,mDAA4C;AAC5C,+DAAwD;AAExD,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,2DAA2D;AAC3D,+BAAY,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;AAElC,OAAO;KACJ,IAAI,CAAC,qBAAqB,CAAC;KAC3B,WAAW,CAAC,2CAA2C,CAAC;KACxD,OAAO,CAAC,OAAO,CAAC;KAChB,QAAQ,CAAC,qBAAqB,EAAE,iCAAiC,CAAC;KAClE,MAAM,CACL,uBAAuB,EACvB,uEAAuE,CACxE;KACA,MAAM,CAAC,WAAW,EAAE,oBAAoB,CAAC;KACzC,MAAM,CAAC,YAAY,EAAE,qBAAqB,CAAC;KAC3C,MAAM,CAAC,YAAY,EAAE,qBAAqB,CAAC;KAC3C,MAAM,CAAC,WAAW,EAAE,oBAAoB,CAAC;KACzC,MAAM,CAAC,gBAAgB,EAAE,2BAA2B,CAAC;KACrD,MAAM,CAAC,YAAY,EAAE,oCAAoC,CAAC;KAC1D,MAAM,CAAC,WAAW,EAAE,sBAAsB,CAAC;KAC3C,MAAM,CAAC,KAAK,EAAE,gBAAgB,EAAE,OAAO,EAAE,EAAE;IAC1C,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC,CAAC;IAEzD,IAAI,CAAC;QACH,MAAM,IAAA,yBAAS,EAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;IAC7C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,EAAE,CAAC;QAChB,OAAO,CAAC,KAAK,CACX,+BAAY,CAAC,WAAW,CACtB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EACzD,cAAc,CACf,CACF,CAAC;QAEF,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;YAC3B,+BAAY,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;YAEpC,IAAI,OAAO,CAAC,OAAO,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;gBACnC,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;gBAC1C,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;gBACvC,OAAO,CAAC,KAAK,EAAE,CAAC;YAClB,CAAC;QACH,CAAC;QAED,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO,CAAC,KAAK,EAAE,CAAC"}
|
package/dist/create-app.d.ts
CHANGED
package/dist/create-app.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-app.d.ts","sourceRoot":"","sources":["../src/create-app.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"create-app.d.ts","sourceRoot":"","sources":["../src/create-app.ts"],"names":[],"mappings":"AAyBA,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,wBAAsB,SAAS,CAC7B,gBAAgB,EAAE,MAAM,GAAG,SAAS,EACpC,OAAO,EAAE,gBAAgB,GACxB,OAAO,CAAC,IAAI,CAAC,CA0If"}
|