@easynet/agent-tool 1.0.46 → 1.0.47
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 +31 -105
- package/dist/api/extension/groupPrefix.d.ts.map +1 -1
- package/dist/api/main.cjs +19 -20
- package/dist/api/main.js +2 -3
- package/dist/api/runtimeFromConfig.d.ts.map +1 -1
- package/dist/{chunk-5GFSI7ZJ.js → chunk-2ZPDD7ZO.js} +722 -280
- package/dist/chunk-2ZPDD7ZO.js.map +1 -0
- package/dist/{chunk-SRTE2OUH.js → chunk-64ZQQV5C.js} +79 -75
- package/dist/chunk-64ZQQV5C.js.map +1 -0
- package/dist/{chunk-XC7KPJLZ.cjs → chunk-A5B6Q6EG.cjs} +710 -295
- package/dist/chunk-A5B6Q6EG.cjs.map +1 -0
- package/dist/{chunk-QW27JAFS.cjs → chunk-IAEVDXWS.cjs} +15 -16
- package/dist/chunk-IAEVDXWS.cjs.map +1 -0
- package/dist/{chunk-H66TKSG4.js → chunk-KYBIKD5R.js} +5 -5
- package/dist/chunk-KYBIKD5R.js.map +1 -0
- package/dist/{chunk-LG5K7WOK.cjs → chunk-MDPU7EIO.cjs} +83 -87
- package/dist/chunk-MDPU7EIO.cjs.map +1 -0
- package/dist/index.cjs +195 -413
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +16 -63
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +171 -281
- package/dist/index.js.map +1 -1
- package/dist/utils/cli/index.cjs +16 -17
- package/dist/utils/cli/index.cjs.map +1 -1
- package/dist/utils/cli/index.js +3 -4
- package/dist/utils/cli/index.js.map +1 -1
- package/package.json +1 -1
- package/dist/chunk-5GFSI7ZJ.js.map +0 -1
- package/dist/chunk-H66TKSG4.js.map +0 -1
- package/dist/chunk-LG5K7WOK.cjs.map +0 -1
- package/dist/chunk-O4XXNLNE.cjs +0 -480
- package/dist/chunk-O4XXNLNE.cjs.map +0 -1
- package/dist/chunk-QW27JAFS.cjs.map +0 -1
- package/dist/chunk-SRTE2OUH.js.map +0 -1
- package/dist/chunk-XC7KPJLZ.cjs.map +0 -1
- package/dist/chunk-YDYG4HF5.js +0 -474
- package/dist/chunk-YDYG4HF5.js.map +0 -1
package/README.md
CHANGED
|
@@ -1,127 +1,53 @@
|
|
|
1
1
|
# @easynet/agent-tool
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
工具运行时包。最小目标:从 `tool.yaml` 生成可给 LangChain 使用的 tools。
|
|
4
4
|
|
|
5
|
-
##
|
|
5
|
+
## 最小接口
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
| **Tool sources** | `@tool` functions | Annotated tool functions in TS/JS |
|
|
10
|
-
| | SKILL | Skills described in SKILL.md |
|
|
11
|
-
| | n8n workflows | Workflow nodes as tools |
|
|
12
|
-
| | MCP service | Remote tools via MCP protocol |
|
|
13
|
-
| | LangChain directory | LangChain-format tool directory |
|
|
14
|
-
| **Runtime** | PTCRuntime | Tool invocation execution |
|
|
15
|
-
| | Policy engine | Pre-execution policy checks |
|
|
16
|
-
| | Schema validation | Input/output validation |
|
|
17
|
-
| | Budget | Call quotas and limits |
|
|
18
|
-
| | Retry | Automatic retry for retryable errors |
|
|
19
|
-
| | Evidence | Call logging and audit |
|
|
20
|
-
| **Exposure** | LangChain tools | For createReactAgent / AgentExecutor |
|
|
21
|
-
| | MCP service (stdio) | For Cursor / Claude etc. MCP clients |
|
|
22
|
-
| | MCP service (Streamable HTTP) | HTTP + SSE, MCP Streamable HTTP (stateless) |
|
|
23
|
-
| | OpenAPI HTTP (GET /tools, POST /invoke) | REST API for any HTTP client |
|
|
24
|
-
|
|
25
|
-
## Install
|
|
26
|
-
|
|
27
|
-
```bash
|
|
28
|
-
npm i @easynet/agent-tool
|
|
29
|
-
```
|
|
30
|
-
|
|
31
|
-
## Usage
|
|
32
|
-
|
|
33
|
-
### 1. CLI
|
|
34
|
-
|
|
35
|
-
```bash
|
|
36
|
-
# List tools from current project config
|
|
37
|
-
npx agent-tool ls
|
|
38
|
-
|
|
39
|
-
# Show tool details
|
|
40
|
-
npx agent-tool describe <scope/name>
|
|
41
|
-
|
|
42
|
-
# Run a tool locally
|
|
43
|
-
npx agent-tool run <scope/name> '<{"key":"value"}>'
|
|
7
|
+
```ts
|
|
8
|
+
import { createAgentTools } from "@easynet/agent-tool/api";
|
|
44
9
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
npx agent-tool build --path . --out dist
|
|
48
|
-
npx agent-tool serve --path dist
|
|
10
|
+
const tools = createAgentTools({ configFilePath: "./tool.yaml", coreTools: {} });
|
|
11
|
+
console.log(tools.map((t) => t.name));
|
|
49
12
|
```
|
|
50
13
|
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
Place `tool.yaml` at project root to list tools (used by `createAgentTools` and `agent-tool ls`). You can set **sandbox** and **HTTP host security** under `tools`. Host rule: allow iff (host in `allowedHosts`) AND (host not in `blockedHosts`). Lists are merged with programmatic config (union).
|
|
54
|
-
|
|
55
|
-
**When nothing is set** (no allowedHosts/blockedHosts/sandboxedPath in tool.yaml and no `coreTools` passed in code), it is equivalent to: `allowedHosts: []`, `blockedHosts: []`, `sandboxRoot: process.cwd()`. That means **no HTTP access is allowed** (all HTTP tools will error), and FS tools use the current directory as sandbox. To enable HTTP tools, configure `allowedHosts` (e.g. `["*"]` or specific hostnames).
|
|
14
|
+
## 最小 `tool.yaml`
|
|
56
15
|
|
|
57
16
|
```yaml
|
|
58
17
|
tools:
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
blockedHosts: [] # optional; block these even if allowed (e.g. ["*.internal"])
|
|
62
|
-
blockedCidrs: [] # optional; CIDR blocklist for resolved IPs
|
|
63
|
-
list:
|
|
64
|
-
- npm:@easynet/agent-tool-builtin#fs.readText
|
|
65
|
-
- npm:@easynet/agent-tool-builtin#fs.writeText
|
|
66
|
-
# ...
|
|
67
|
-
```
|
|
18
|
+
# FS 工具沙箱根目录(相对路径按当前项目解析)
|
|
19
|
+
sandboxedPath: .
|
|
68
20
|
|
|
69
|
-
|
|
21
|
+
# HTTP 允许列表。先给空数组,表示默认禁用外网请求(更安全)
|
|
22
|
+
allowedHosts: []
|
|
23
|
+
blockedHosts: []
|
|
70
24
|
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
const tools = createAgentTools({ configFilePath: "tool.yaml", coreTools: {} });
|
|
75
|
-
// Use with createReactAgent / AgentExecutor
|
|
76
|
-
```
|
|
77
|
-
|
|
78
|
-
### 4. Programmatic: MCP service (stdio)
|
|
79
|
-
|
|
80
|
-
```ts
|
|
81
|
-
import { createMCPServer, createRuntimeFromConfigSync } from "@easynet/agent-tool/api";
|
|
82
|
-
|
|
83
|
-
const { runtime } = createRuntimeFromConfigSync({ coreTools: {} });
|
|
84
|
-
const server = createMCPServer(runtime);
|
|
85
|
-
// runMCPServerOverStdio(server) or attach to stdio
|
|
25
|
+
# 最小起步:直接加载内置工具包(全部工具)
|
|
26
|
+
list:
|
|
27
|
+
- npm:@easynet/agent-tool-buildin
|
|
86
28
|
```
|
|
87
29
|
|
|
88
|
-
|
|
30
|
+
## 最简单示例(带注释)
|
|
89
31
|
|
|
90
32
|
```ts
|
|
91
|
-
import {
|
|
92
|
-
|
|
93
|
-
const { runtime } = createRuntimeFromConfigSync({ coreTools: {} });
|
|
94
|
-
|
|
95
|
-
// Option A: handler only, mount on your HTTP server (use express.json() for body)
|
|
96
|
-
const handler = createMCPStreamableHttpHandler(runtime);
|
|
97
|
-
// app.use(express.json()); app.post("/mcp", handler);
|
|
33
|
+
import { createAgentTools } from "@easynet/agent-tool/api";
|
|
98
34
|
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
const
|
|
102
|
-
|
|
103
|
-
|
|
35
|
+
async function main() {
|
|
36
|
+
// 1) 从 tool.yaml 创建 LangChain tools
|
|
37
|
+
const tools = createAgentTools({
|
|
38
|
+
configFilePath: "./tool.yaml",
|
|
39
|
+
coreTools: {},
|
|
40
|
+
});
|
|
104
41
|
|
|
105
|
-
|
|
42
|
+
// 2) 打印工具名,确认加载成功
|
|
43
|
+
console.log("loaded tools:", tools.map((t) => t.name));
|
|
44
|
+
}
|
|
106
45
|
|
|
107
|
-
|
|
108
|
-
import { createOpenAPIServer, createRuntimeFromConfigSync } from "@easynet/agent-tool/api";
|
|
109
|
-
|
|
110
|
-
const { runtime } = createRuntimeFromConfigSync({ coreTools: {} });
|
|
111
|
-
const { app } = createOpenAPIServer(runtime, { basePath: "/api" });
|
|
112
|
-
// Express-compatible app: GET /api/tools, POST /api/invoke
|
|
46
|
+
main().catch(console.error);
|
|
113
47
|
```
|
|
114
48
|
|
|
115
|
-
##
|
|
116
|
-
|
|
117
|
-
| Entry | Purpose |
|
|
118
|
-
|-------|---------|
|
|
119
|
-
| `@easynet/agent-tool` | Core types, Runtime, Registry, discovery, MCP client, extensions |
|
|
120
|
-
| `@easynet/agent-tool/api` | createAgentTools, createMCPServer, createMCPStreamableHttpHandler, createMCPServerStreamableHttp, createOpenAPIServer, createRuntimeFromConfig |
|
|
121
|
-
| `@easynet/agent-tool/core` | PTCRuntime, PolicyEngine, SchemaValidator, ToolSpec, etc. |
|
|
122
|
-
| `@easynet/agent-tool/runtime` | Same as core runtime subpath |
|
|
123
|
-
|
|
124
|
-
## Requirements
|
|
49
|
+
## 进阶能力
|
|
125
50
|
|
|
126
|
-
-
|
|
127
|
-
-
|
|
51
|
+
- MCP 服务:`createMCPServer(...)`
|
|
52
|
+
- OpenAPI HTTP:`createOpenAPIServer(...)`
|
|
53
|
+
- 扩展开发:`createExtension(...)`、`generateManifest(...)`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"groupPrefix.d.ts","sourceRoot":"","sources":["../../../src/api/extension/groupPrefix.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,iEAAiE;IACjE,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,oEAAoE;IACpE,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,mFAAmF;IACnF,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACxC;AAED,MAAM,WAAW,wBAAwB;IACvC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,kBAAkB,GAAG,wBAAwB,
|
|
1
|
+
{"version":3,"file":"groupPrefix.d.ts","sourceRoot":"","sources":["../../../src/api/extension/groupPrefix.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,iEAAiE;IACjE,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,oEAAoE;IACpE,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,mFAAmF;IACnF,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACxC;AAED,MAAM,WAAW,wBAAwB;IACvC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,kBAAkB,GAAG,wBAAwB,CAW1F"}
|
package/dist/api/main.cjs
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
var
|
|
5
|
-
var chunkXC7KPJLZ_cjs = require('../chunk-XC7KPJLZ.cjs');
|
|
3
|
+
var chunkIAEVDXWS_cjs = require('../chunk-IAEVDXWS.cjs');
|
|
4
|
+
var chunkA5B6Q6EG_cjs = require('../chunk-A5B6Q6EG.cjs');
|
|
6
5
|
require('../chunk-TOSPHMYU.cjs');
|
|
7
6
|
require('../chunk-DYDNPIV2.cjs');
|
|
8
7
|
require('../chunk-UUNG3GL3.cjs');
|
|
@@ -11,47 +10,47 @@ require('../chunk-UUNG3GL3.cjs');
|
|
|
11
10
|
|
|
12
11
|
Object.defineProperty(exports, "createAgentTools", {
|
|
13
12
|
enumerable: true,
|
|
14
|
-
get: function () { return
|
|
13
|
+
get: function () { return chunkIAEVDXWS_cjs.createAgentTools; }
|
|
15
14
|
});
|
|
16
15
|
Object.defineProperty(exports, "createLangChainToolsAsync", {
|
|
17
16
|
enumerable: true,
|
|
18
|
-
get: function () { return
|
|
17
|
+
get: function () { return chunkIAEVDXWS_cjs.createLangChainToolsAsync; }
|
|
18
|
+
});
|
|
19
|
+
Object.defineProperty(exports, "PTCRuntime", {
|
|
20
|
+
enumerable: true,
|
|
21
|
+
get: function () { return chunkA5B6Q6EG_cjs.PTCRuntime; }
|
|
19
22
|
});
|
|
20
23
|
Object.defineProperty(exports, "createHttpService", {
|
|
21
24
|
enumerable: true,
|
|
22
|
-
get: function () { return
|
|
25
|
+
get: function () { return chunkA5B6Q6EG_cjs.createHttpService; }
|
|
23
26
|
});
|
|
24
27
|
Object.defineProperty(exports, "createMCPServer", {
|
|
25
28
|
enumerable: true,
|
|
26
|
-
get: function () { return
|
|
29
|
+
get: function () { return chunkA5B6Q6EG_cjs.createMCPServer; }
|
|
27
30
|
});
|
|
28
31
|
Object.defineProperty(exports, "createMCPServerStreamableHttp", {
|
|
29
32
|
enumerable: true,
|
|
30
|
-
get: function () { return
|
|
33
|
+
get: function () { return chunkA5B6Q6EG_cjs.createMCPServerStreamableHttp; }
|
|
31
34
|
});
|
|
32
35
|
Object.defineProperty(exports, "createMCPStreamableHttpHandler", {
|
|
33
36
|
enumerable: true,
|
|
34
|
-
get: function () { return
|
|
37
|
+
get: function () { return chunkA5B6Q6EG_cjs.createMCPStreamableHttpHandler; }
|
|
35
38
|
});
|
|
36
39
|
Object.defineProperty(exports, "createOpenAPIServer", {
|
|
37
40
|
enumerable: true,
|
|
38
|
-
get: function () { return
|
|
39
|
-
});
|
|
40
|
-
Object.defineProperty(exports, "runMCPServerOverStdio", {
|
|
41
|
-
enumerable: true,
|
|
42
|
-
get: function () { return chunkO4XXNLNE_cjs.runMCPServerOverStdio; }
|
|
43
|
-
});
|
|
44
|
-
Object.defineProperty(exports, "PTCRuntime", {
|
|
45
|
-
enumerable: true,
|
|
46
|
-
get: function () { return chunkXC7KPJLZ_cjs.PTCRuntime; }
|
|
41
|
+
get: function () { return chunkA5B6Q6EG_cjs.createHttpService; }
|
|
47
42
|
});
|
|
48
43
|
Object.defineProperty(exports, "createRuntimeFromConfig", {
|
|
49
44
|
enumerable: true,
|
|
50
|
-
get: function () { return
|
|
45
|
+
get: function () { return chunkA5B6Q6EG_cjs.createRuntimeFromConfig; }
|
|
51
46
|
});
|
|
52
47
|
Object.defineProperty(exports, "createRuntimeFromConfigSync", {
|
|
53
48
|
enumerable: true,
|
|
54
|
-
get: function () { return
|
|
49
|
+
get: function () { return chunkA5B6Q6EG_cjs.createRuntimeFromConfigSync; }
|
|
50
|
+
});
|
|
51
|
+
Object.defineProperty(exports, "runMCPServerOverStdio", {
|
|
52
|
+
enumerable: true,
|
|
53
|
+
get: function () { return chunkA5B6Q6EG_cjs.runMCPServerOverStdio; }
|
|
55
54
|
});
|
|
56
55
|
//# sourceMappingURL=main.cjs.map
|
|
57
56
|
//# sourceMappingURL=main.cjs.map
|
package/dist/api/main.js
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
export { createAgentTools, createLangChainToolsAsync } from '../chunk-
|
|
2
|
-
export { createHttpService, createMCPServer, createMCPServerStreamableHttp, createMCPStreamableHttpHandler, createHttpService as createOpenAPIServer, runMCPServerOverStdio } from '../chunk-
|
|
3
|
-
export { PTCRuntime, createRuntimeFromConfig, createRuntimeFromConfigSync } from '../chunk-5GFSI7ZJ.js';
|
|
1
|
+
export { createAgentTools, createLangChainToolsAsync } from '../chunk-KYBIKD5R.js';
|
|
2
|
+
export { PTCRuntime, createHttpService, createMCPServer, createMCPServerStreamableHttp, createMCPStreamableHttpHandler, createHttpService as createOpenAPIServer, createRuntimeFromConfig, createRuntimeFromConfigSync, runMCPServerOverStdio } from '../chunk-2ZPDD7ZO.js';
|
|
4
3
|
import '../chunk-ZRHPGW7W.js';
|
|
5
4
|
import '../chunk-KDB3MY2H.js';
|
|
6
5
|
import '../chunk-NTWOVFEY.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtimeFromConfig.d.ts","sourceRoot":"","sources":["../../src/api/runtimeFromConfig.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAKH,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAChE,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AA0B3D;;;;GAIG;AACH,eAAO,MAAM,0BAA0B,EAAE,MAAM,EAAO,CAAC;AAEvD,gEAAgE;AAChE,MAAM,WAAW,mBAAmB;IAClC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,wFAAwF;IACxF,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,+EAA+E;IAC/E,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,gEAAgE;IAChE,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,kFAAkF;IAClF,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,8PAA8P;IAC9P,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACxD,qKAAqK;IACrK,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAC1D,mFAAmF;IACnF,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,uDAAuD;AACvD,MAAM,WAAW,sBAAsB;IACrC,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,oBAAoB;IACnC,iFAAiF;IACjF,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,8EAA8E;IAC9E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,wEAAwE;IACxE,SAAS,CAAC,EAAE,mBAAmB,CAAC;IAChC,oEAAoE;IACpE,YAAY,CAAC,EAAE,sBAAsB,CAAC;IACtC,yEAAyE;IACzE,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACrC;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,UAAU,CAAC;IACpB,QAAQ,EAAE,YAAY,CAAC;CACxB;AAqFD,qKAAqK;AACrK,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAQjG;
|
|
1
|
+
{"version":3,"file":"runtimeFromConfig.d.ts","sourceRoot":"","sources":["../../src/api/runtimeFromConfig.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAKH,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAChE,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AA0B3D;;;;GAIG;AACH,eAAO,MAAM,0BAA0B,EAAE,MAAM,EAAO,CAAC;AAEvD,gEAAgE;AAChE,MAAM,WAAW,mBAAmB;IAClC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,wFAAwF;IACxF,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,+EAA+E;IAC/E,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,gEAAgE;IAChE,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,kFAAkF;IAClF,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,8PAA8P;IAC9P,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACxD,qKAAqK;IACrK,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAC1D,mFAAmF;IACnF,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,uDAAuD;AACvD,MAAM,WAAW,sBAAsB;IACrC,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,oBAAoB;IACnC,iFAAiF;IACjF,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,8EAA8E;IAC9E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,wEAAwE;IACxE,SAAS,CAAC,EAAE,mBAAmB,CAAC;IAChC,oEAAoE;IACpE,YAAY,CAAC,EAAE,sBAAsB,CAAC;IACtC,yEAAyE;IACzE,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACrC;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,UAAU,CAAC;IACpB,QAAQ,EAAE,YAAY,CAAC;CACxB;AAqFD,qKAAqK;AACrK,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAQjG;AAkMD;;;;GAIG;AACH,wBAAgB,2BAA2B,CAAC,OAAO,GAAE,oBAAyB,GAAG,mBAAmB,CA2CnG;AAED;;;;;GAKG;AACH,wBAAsB,uBAAuB,CAC3C,OAAO,GAAE,oBAAyB,GACjC,OAAO,CAAC,mBAAmB,CAAC,CAoB9B"}
|