@mnemopay/sdk 0.1.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/LICENSE +21 -0
- package/README.md +193 -0
- package/dist/index.d.ts +161 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +537 -0
- package/dist/index.js.map +1 -0
- package/dist/langgraph/tools.d.ts +84 -0
- package/dist/langgraph/tools.d.ts.map +1 -0
- package/dist/langgraph/tools.js +129 -0
- package/dist/langgraph/tools.js.map +1 -0
- package/dist/mcp/server.d.ts +21 -0
- package/dist/mcp/server.d.ts.map +1 -0
- package/dist/mcp/server.js +431 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/middleware/anthropic.d.ts +28 -0
- package/dist/middleware/anthropic.d.ts.map +1 -0
- package/dist/middleware/anthropic.js +95 -0
- package/dist/middleware/anthropic.js.map +1 -0
- package/dist/middleware/openai.d.ts +31 -0
- package/dist/middleware/openai.d.ts.map +1 -0
- package/dist/middleware/openai.js +96 -0
- package/dist/middleware/openai.js.map +1 -0
- package/dist/recall/engine.d.ts +109 -0
- package/dist/recall/engine.d.ts.map +1 -0
- package/dist/recall/engine.js +253 -0
- package/dist/recall/engine.js.map +1 -0
- package/package.json +109 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 J&B Enterprise LLC
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
# @mnemopay/sdk
|
|
2
|
+
|
|
3
|
+
**Give any AI agent memory and a wallet in 5 lines.**
|
|
4
|
+
|
|
5
|
+
MnemoPay unifies [Mnemosyne](https://github.com/t49qnsx7qt-kpanks/mnemosyne-engine) (cognitive memory) and [AgentPay](https://github.com/t49qnsx7qt-kpanks/agentpay-roa) (escrow economics) into a single SDK. The core innovation: **payment outcomes reinforce the memories that led to successful decisions**.
|
|
6
|
+
|
|
7
|
+
```typescript
|
|
8
|
+
import { MnemoPay } from "@mnemopay/sdk";
|
|
9
|
+
|
|
10
|
+
const agent = MnemoPay.quick("agent-001");
|
|
11
|
+
await agent.remember("User prefers TypeScript");
|
|
12
|
+
const memories = await agent.recall();
|
|
13
|
+
const tx = await agent.charge(5.00, "Built analytics dashboard");
|
|
14
|
+
await agent.settle(tx.id);
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
## Two Modes, One API
|
|
18
|
+
|
|
19
|
+
| Mode | Constructor | Dependencies | Persistence | Use Case |
|
|
20
|
+
|------|------------|-------------|-------------|----------|
|
|
21
|
+
| **Prototype** | `MnemoPay.quick("id")` | None | In-memory | Development, testing, demos |
|
|
22
|
+
| **Production** | `MnemoPay.create({...})` | Postgres + Redis | Durable | Deployed agents |
|
|
23
|
+
|
|
24
|
+
Switch by changing one line. No code rewrites.
|
|
25
|
+
|
|
26
|
+
## Install
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
npm install @mnemopay/sdk
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
Optional peer dependencies (install only what you use):
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
npm install openai # For OpenAI middleware
|
|
36
|
+
npm install @anthropic-ai/sdk # For Anthropic middleware
|
|
37
|
+
npm install @langchain/langgraph @langchain/core @langchain/openai # For LangGraph tools
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
## The Feedback Loop
|
|
41
|
+
|
|
42
|
+
This is the core differentiator — payment outcomes reinforce memories:
|
|
43
|
+
|
|
44
|
+
```
|
|
45
|
+
Agent recalls memories → Makes decision → Delivers value → Charges user
|
|
46
|
+
↓
|
|
47
|
+
Payment settles
|
|
48
|
+
↓
|
|
49
|
+
Memories accessed in the last hour get +0.05 importance
|
|
50
|
+
↓
|
|
51
|
+
Agent makes better decisions next time
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
Over time, memories that lead to successful transactions become dominant in recall, while memories associated with refunds decay faster.
|
|
55
|
+
|
|
56
|
+
## API Reference
|
|
57
|
+
|
|
58
|
+
### Memory Methods
|
|
59
|
+
|
|
60
|
+
| Method | Description |
|
|
61
|
+
|--------|-------------|
|
|
62
|
+
| `agent.remember(content, opts?)` | Store a memory. Auto-scored by importance if not specified. |
|
|
63
|
+
| `agent.recall(limit?)` | Recall top memories ranked by importance x recency x frequency. |
|
|
64
|
+
| `agent.forget(id)` | Delete a memory. |
|
|
65
|
+
| `agent.reinforce(id, boost?)` | Boost a memory's importance. |
|
|
66
|
+
| `agent.consolidate()` | Prune stale memories below score threshold. |
|
|
67
|
+
|
|
68
|
+
### Payment Methods
|
|
69
|
+
|
|
70
|
+
| Method | Description |
|
|
71
|
+
|--------|-------------|
|
|
72
|
+
| `agent.charge(amount, reason)` | Create an escrow transaction. Reputation-gated. |
|
|
73
|
+
| `agent.settle(txId)` | Finalize escrow. Moves funds, boosts reputation, reinforces memories. |
|
|
74
|
+
| `agent.refund(txId)` | Refund a transaction. Docks reputation by -0.05. |
|
|
75
|
+
| `agent.balance()` | Get wallet balance and reputation score. |
|
|
76
|
+
|
|
77
|
+
### Observability
|
|
78
|
+
|
|
79
|
+
| Method | Description |
|
|
80
|
+
|--------|-------------|
|
|
81
|
+
| `agent.profile()` | Full agent stats (reputation, wallet, memory count, tx count). |
|
|
82
|
+
| `agent.logs(limit?)` | Immutable audit trail of all actions. |
|
|
83
|
+
| `agent.history(limit?)` | Transaction history, most recent first. |
|
|
84
|
+
|
|
85
|
+
## Provider Middlewares
|
|
86
|
+
|
|
87
|
+
### OpenAI (invisible memory)
|
|
88
|
+
|
|
89
|
+
```typescript
|
|
90
|
+
import OpenAI from "openai";
|
|
91
|
+
import { MnemoPay } from "@mnemopay/sdk";
|
|
92
|
+
import { MnemoPayMiddleware } from "@mnemopay/sdk/middleware/openai";
|
|
93
|
+
|
|
94
|
+
const agent = MnemoPay.quick("assistant");
|
|
95
|
+
const ai = MnemoPayMiddleware.wrap(new OpenAI(), agent);
|
|
96
|
+
|
|
97
|
+
// Memory is now invisible — auto-injected and auto-stored
|
|
98
|
+
const res = await ai.chat.completions.create({
|
|
99
|
+
model: "gpt-4o",
|
|
100
|
+
messages: [{ role: "user", content: "What do you remember?" }],
|
|
101
|
+
});
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
### Anthropic (invisible memory)
|
|
105
|
+
|
|
106
|
+
```typescript
|
|
107
|
+
import Anthropic from "@anthropic-ai/sdk";
|
|
108
|
+
import { MnemoPay } from "@mnemopay/sdk";
|
|
109
|
+
import { AnthropicMiddleware } from "@mnemopay/sdk/middleware/anthropic";
|
|
110
|
+
|
|
111
|
+
const agent = MnemoPay.quick("claude-agent");
|
|
112
|
+
const ai = AnthropicMiddleware.wrap(new Anthropic(), agent);
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
## LangGraph Tools
|
|
116
|
+
|
|
117
|
+
```typescript
|
|
118
|
+
import { createReactAgent } from "@langchain/langgraph/prebuilt";
|
|
119
|
+
import { MnemoPay } from "@mnemopay/sdk";
|
|
120
|
+
import { mnemoTools, agentPayTools } from "@mnemopay/sdk/langgraph";
|
|
121
|
+
|
|
122
|
+
const agent = MnemoPay.quick("langgraph-agent");
|
|
123
|
+
const graph = createReactAgent({
|
|
124
|
+
llm,
|
|
125
|
+
tools: [...mnemoTools(agent), ...agentPayTools(agent)],
|
|
126
|
+
});
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
6 tools with full Zod schemas: `recall_memories`, `store_memory`, `reinforce_memory`, `charge_user`, `settle_payment`, `check_balance`.
|
|
130
|
+
|
|
131
|
+
## Agents Hiring Agents
|
|
132
|
+
|
|
133
|
+
```typescript
|
|
134
|
+
const manager = MnemoPay.quick("manager");
|
|
135
|
+
const coder = MnemoPay.quick("coder");
|
|
136
|
+
|
|
137
|
+
await manager.remember("coder delivered fast but had 2 bugs last time");
|
|
138
|
+
const memories = await manager.recall(); // Use memory to decide
|
|
139
|
+
|
|
140
|
+
const job = await manager.charge(5.00, "Code sorting algorithm");
|
|
141
|
+
await manager.settle(job.id);
|
|
142
|
+
await manager.remember("coder delivered clean code this time");
|
|
143
|
+
// Next round: manager makes better hiring decisions
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
## Production Mode
|
|
147
|
+
|
|
148
|
+
```bash
|
|
149
|
+
docker compose up -d # Starts Mnemosyne + AgentPay + Postgres + Redis
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
```typescript
|
|
153
|
+
const agent = MnemoPay.create({
|
|
154
|
+
agentId: "prod-agent",
|
|
155
|
+
mnemoUrl: "http://localhost:8100",
|
|
156
|
+
agentpayUrl: "http://localhost:3100",
|
|
157
|
+
debug: true,
|
|
158
|
+
});
|
|
159
|
+
|
|
160
|
+
// Same API — now backed by Hopfield networks, Bayesian trust, AIS fraud detection
|
|
161
|
+
await agent.remember("Production memory");
|
|
162
|
+
const tx = await agent.charge(10.00, "Premium service");
|
|
163
|
+
await agent.settle(tx.id);
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
## Architecture
|
|
167
|
+
|
|
168
|
+
```
|
|
169
|
+
Your code
|
|
170
|
+
↓
|
|
171
|
+
@mnemopay/sdk ←── Single import, 12 methods
|
|
172
|
+
↓ ↓
|
|
173
|
+
Mnemosyne API AgentPay API ←── Separate services (unchanged)
|
|
174
|
+
(12 models) (14 models)
|
|
175
|
+
↓ ↓
|
|
176
|
+
Redis Streams Bridge ←── Payment outcomes reinforce memories
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
The SDK is the developer-facing layer. The backends do the heavy lifting:
|
|
180
|
+
- **Mnemosyne**: Hopfield associative recall, FSRS spaced repetition, Merkle integrity, Dream consolidation
|
|
181
|
+
- **AgentPay**: Bayesian trust (Beta distributions), AIS fraud detection, behavioral economics, escrow
|
|
182
|
+
|
|
183
|
+
## Tests
|
|
184
|
+
|
|
185
|
+
```bash
|
|
186
|
+
npm test # 67 tests covering memory, payments, feedback loop, security, concurrency
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
## License
|
|
190
|
+
|
|
191
|
+
MIT
|
|
192
|
+
|
|
193
|
+
Built by [J&B Enterprise LLC](https://github.com/t49qnsx7qt-kpanks)
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @mnemopay/sdk — Give any AI agent memory and a wallet in 5 lines.
|
|
3
|
+
*
|
|
4
|
+
* MnemoPay unifies Mnemosyne (cognitive memory) and AgentPay (escrow economics)
|
|
5
|
+
* into a single SDK. The core innovation: payment outcomes reinforce the memories
|
|
6
|
+
* that led to successful decisions.
|
|
7
|
+
*
|
|
8
|
+
* Two modes, identical API:
|
|
9
|
+
* MnemoPay.quick("id") → zero infra, in-memory (dev/testing)
|
|
10
|
+
* MnemoPay.create({...}) → Postgres + Redis (production)
|
|
11
|
+
*/
|
|
12
|
+
import { EventEmitter } from "events";
|
|
13
|
+
import { type RecallStrategy, type EmbeddingProvider, type RecallEngineConfig } from "./recall/engine.js";
|
|
14
|
+
export interface MnemoPayConfig {
|
|
15
|
+
agentId: string;
|
|
16
|
+
/** Recall strategy: "score" (default), "vector", or "hybrid" */
|
|
17
|
+
recall?: RecallStrategy;
|
|
18
|
+
/** Embedding provider for vector/hybrid: "openai" or "local" (default) */
|
|
19
|
+
embeddings?: EmbeddingProvider;
|
|
20
|
+
/** OpenAI API key for embeddings (or set OPENAI_API_KEY env var) */
|
|
21
|
+
openaiApiKey?: string;
|
|
22
|
+
/** Weight for score component in hybrid mode (0-1, default: 0.4) */
|
|
23
|
+
scoreWeight?: number;
|
|
24
|
+
/** Weight for vector component in hybrid mode (0-1, default: 0.6) */
|
|
25
|
+
vectorWeight?: number;
|
|
26
|
+
/** Mnemosyne API base URL */
|
|
27
|
+
mnemoUrl?: string;
|
|
28
|
+
/** AgentPay API base URL */
|
|
29
|
+
agentpayUrl?: string;
|
|
30
|
+
/** Redis connection URL (for event bus) */
|
|
31
|
+
redis?: string;
|
|
32
|
+
/** Postgres connection URL (for durable storage) */
|
|
33
|
+
db?: string;
|
|
34
|
+
/** Memory decay rate λ (default 0.05, half-life ~14h) */
|
|
35
|
+
decay?: number;
|
|
36
|
+
/** Log internal operations */
|
|
37
|
+
debug?: boolean;
|
|
38
|
+
/** API key for Mnemosyne */
|
|
39
|
+
mnemoApiKey?: string;
|
|
40
|
+
/** API key for AgentPay */
|
|
41
|
+
agentpayApiKey?: string;
|
|
42
|
+
}
|
|
43
|
+
export interface Memory {
|
|
44
|
+
id: string;
|
|
45
|
+
agentId: string;
|
|
46
|
+
content: string;
|
|
47
|
+
importance: number;
|
|
48
|
+
score: number;
|
|
49
|
+
createdAt: Date;
|
|
50
|
+
lastAccessed: Date;
|
|
51
|
+
accessCount: number;
|
|
52
|
+
tags: string[];
|
|
53
|
+
}
|
|
54
|
+
export interface RememberOptions {
|
|
55
|
+
importance?: number;
|
|
56
|
+
tags?: string[];
|
|
57
|
+
}
|
|
58
|
+
export interface Transaction {
|
|
59
|
+
id: string;
|
|
60
|
+
agentId: string;
|
|
61
|
+
amount: number;
|
|
62
|
+
reason: string;
|
|
63
|
+
status: "pending" | "completed" | "refunded";
|
|
64
|
+
createdAt: Date;
|
|
65
|
+
completedAt?: Date;
|
|
66
|
+
}
|
|
67
|
+
export interface AgentProfile {
|
|
68
|
+
id: string;
|
|
69
|
+
reputation: number;
|
|
70
|
+
wallet: number;
|
|
71
|
+
memoriesCount: number;
|
|
72
|
+
transactionsCount: number;
|
|
73
|
+
}
|
|
74
|
+
export interface BalanceInfo {
|
|
75
|
+
wallet: number;
|
|
76
|
+
reputation: number;
|
|
77
|
+
}
|
|
78
|
+
export interface AuditEntry {
|
|
79
|
+
id: string;
|
|
80
|
+
agentId: string;
|
|
81
|
+
action: string;
|
|
82
|
+
details: Record<string, unknown>;
|
|
83
|
+
createdAt: Date;
|
|
84
|
+
}
|
|
85
|
+
declare function autoScore(content: string): number;
|
|
86
|
+
declare function computeScore(importance: number, lastAccessed: Date, accessCount: number, decay: number): number;
|
|
87
|
+
export declare class MnemoPayLite extends EventEmitter {
|
|
88
|
+
readonly agentId: string;
|
|
89
|
+
private decay;
|
|
90
|
+
private debugMode;
|
|
91
|
+
private memories;
|
|
92
|
+
private transactions;
|
|
93
|
+
private auditLog;
|
|
94
|
+
private _wallet;
|
|
95
|
+
private _reputation;
|
|
96
|
+
private recallEngine;
|
|
97
|
+
constructor(agentId: string, decay?: number, debug?: boolean, recallConfig?: Partial<RecallEngineConfig>);
|
|
98
|
+
private log;
|
|
99
|
+
private audit;
|
|
100
|
+
remember(content: string, opts?: RememberOptions): Promise<string>;
|
|
101
|
+
recall(limit?: number): Promise<Memory[]>;
|
|
102
|
+
recall(query: string, limit?: number): Promise<Memory[]>;
|
|
103
|
+
forget(id: string): Promise<boolean>;
|
|
104
|
+
reinforce(id: string, boost?: number): Promise<void>;
|
|
105
|
+
consolidate(): Promise<number>;
|
|
106
|
+
charge(amount: number, reason: string): Promise<Transaction>;
|
|
107
|
+
settle(txId: string): Promise<Transaction>;
|
|
108
|
+
refund(txId: string): Promise<Transaction>;
|
|
109
|
+
balance(): Promise<BalanceInfo>;
|
|
110
|
+
profile(): Promise<AgentProfile>;
|
|
111
|
+
logs(limit?: number): Promise<AuditEntry[]>;
|
|
112
|
+
history(limit?: number): Promise<Transaction[]>;
|
|
113
|
+
disconnect(): Promise<void>;
|
|
114
|
+
}
|
|
115
|
+
export declare class MnemoPay extends EventEmitter {
|
|
116
|
+
readonly agentId: string;
|
|
117
|
+
private config;
|
|
118
|
+
private headers;
|
|
119
|
+
constructor(config: MnemoPayConfig);
|
|
120
|
+
private init;
|
|
121
|
+
private log;
|
|
122
|
+
private mnemoFetch;
|
|
123
|
+
private agentpayFetch;
|
|
124
|
+
remember(content: string, opts?: RememberOptions): Promise<string>;
|
|
125
|
+
recall(limit?: number): Promise<Memory[]>;
|
|
126
|
+
recall(query: string, limit?: number): Promise<Memory[]>;
|
|
127
|
+
forget(id: string): Promise<boolean>;
|
|
128
|
+
reinforce(id: string, boost?: number): Promise<void>;
|
|
129
|
+
consolidate(): Promise<number>;
|
|
130
|
+
charge(amount: number, reason: string): Promise<Transaction>;
|
|
131
|
+
settle(txId: string): Promise<Transaction>;
|
|
132
|
+
refund(txId: string): Promise<Transaction>;
|
|
133
|
+
balance(): Promise<BalanceInfo>;
|
|
134
|
+
profile(): Promise<AgentProfile>;
|
|
135
|
+
logs(limit?: number): Promise<AuditEntry[]>;
|
|
136
|
+
history(limit?: number): Promise<Transaction[]>;
|
|
137
|
+
disconnect(): Promise<void>;
|
|
138
|
+
/**
|
|
139
|
+
* Zero-infrastructure mode. In-memory, no database, no Redis.
|
|
140
|
+
* Perfect for development, testing, and demos.
|
|
141
|
+
*/
|
|
142
|
+
static quick(agentId: string, opts?: {
|
|
143
|
+
decay?: number;
|
|
144
|
+
debug?: boolean;
|
|
145
|
+
recall?: RecallStrategy;
|
|
146
|
+
embeddings?: EmbeddingProvider;
|
|
147
|
+
openaiApiKey?: string;
|
|
148
|
+
scoreWeight?: number;
|
|
149
|
+
vectorWeight?: number;
|
|
150
|
+
}): MnemoPayLite;
|
|
151
|
+
/**
|
|
152
|
+
* Production mode. Connects to Mnemosyne + AgentPay backends.
|
|
153
|
+
* Requires running services (use docker-compose.yml).
|
|
154
|
+
*/
|
|
155
|
+
static create(config: MnemoPayConfig): MnemoPay;
|
|
156
|
+
}
|
|
157
|
+
export default MnemoPay;
|
|
158
|
+
export { autoScore, computeScore };
|
|
159
|
+
export { RecallEngine, cosineSimilarity, localEmbed, l2Normalize } from "./recall/engine.js";
|
|
160
|
+
export type { RecallStrategy, EmbeddingProvider, RecallEngineConfig, RecallResult } from "./recall/engine.js";
|
|
161
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAEtC,OAAO,EAAgB,KAAK,cAAc,EAAE,KAAK,iBAAiB,EAAE,KAAK,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAIxH,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,gEAAgE;IAChE,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB,0EAA0E;IAC1E,UAAU,CAAC,EAAE,iBAAiB,CAAC;IAC/B,oEAAoE;IACpE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,oEAAoE;IACpE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qEAAqE;IACrE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,6BAA6B;IAC7B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,4BAA4B;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,2CAA2C;IAC3C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,oDAAoD;IACpD,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,yDAAyD;IACzD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,8BAA8B;IAC9B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,4BAA4B;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,2BAA2B;IAC3B,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,MAAM;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,IAAI,CAAC;IAChB,YAAY,EAAE,IAAI,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AAED,MAAM,WAAW,eAAe;IAC9B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,SAAS,GAAG,WAAW,GAAG,UAAU,CAAC;IAC7C,SAAS,EAAE,IAAI,CAAC;IAChB,WAAW,CAAC,EAAE,IAAI,CAAC;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,SAAS,EAAE,IAAI,CAAC;CACjB;AAcD,iBAAS,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAO1C;AAID,iBAAS,YAAY,CACnB,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,IAAI,EAClB,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,MAAM,GACZ,MAAM,CAKR;AAID,qBAAa,YAAa,SAAQ,YAAY;IAC5C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,SAAS,CAAU;IAC3B,OAAO,CAAC,QAAQ,CAAkC;IAClD,OAAO,CAAC,YAAY,CAAuC;IAC3D,OAAO,CAAC,QAAQ,CAAoB;IACpC,OAAO,CAAC,OAAO,CAAa;IAC5B,OAAO,CAAC,WAAW,CAAe;IAClC,OAAO,CAAC,YAAY,CAAe;gBAEvB,OAAO,EAAE,MAAM,EAAE,KAAK,SAAO,EAAE,KAAK,UAAQ,EAAE,YAAY,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC;IAUpG,OAAO,CAAC,GAAG;IAIX,OAAO,CAAC,KAAK;IAaP,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC;IA2BlE,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IACzC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAsCxD,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAUpC,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,SAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IASjD,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC;IAqB9B,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAwB5D,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAgC1C,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAiB1C,OAAO,IAAI,OAAO,CAAC,WAAW,CAAC;IAM/B,OAAO,IAAI,OAAO,CAAC,YAAY,CAAC;IAUhC,IAAI,CAAC,KAAK,SAAK,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAIvC,OAAO,CAAC,KAAK,SAAK,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAO3C,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;CAGlC;AAID,qBAAa,QAAS,SAAQ,YAAY;IACxC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,OAAO,CAAC,MAAM,CAEwC;IACtD,OAAO,CAAC,OAAO,CAAyB;gBAE5B,MAAM,EAAE,cAAc;YAmBpB,IAAI;IAalB,OAAO,CAAC,GAAG;YAIG,UAAU;YAYV,aAAa;IAcrB,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC;IAmBlE,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IACzC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IA6BxD,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAUpC,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,SAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQjD,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC;IAY9B,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAwB5D,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAiB1C,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAgB1C,OAAO,IAAI,OAAO,CAAC,WAAW,CAAC;IAU/B,OAAO,IAAI,OAAO,CAAC,YAAY,CAAC;IAchC,IAAI,CAAC,KAAK,SAAK,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAWvC,OAAO,CAAC,KAAK,SAAK,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAa3C,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAMjC;;;OAGG;IACH,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;QACnC,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,KAAK,CAAC,EAAE,OAAO,CAAC;QAChB,MAAM,CAAC,EAAE,cAAc,CAAC;QACxB,UAAU,CAAC,EAAE,iBAAiB,CAAC;QAC/B,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB,GAAG,YAAY;IAahB;;;OAGG;IACH,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,cAAc,GAAG,QAAQ;CAGhD;AAID,eAAe,QAAQ,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,CAAC;AACnC,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAC7F,YAAY,EAAE,cAAc,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC"}
|