@intentfi/agent-sdk 0.1.0 → 0.1.1
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 +53 -0
- package/dist/cli.js +62 -2
- package/dist/client.d.ts +115 -5
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +652 -47
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/types.d.ts +117 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/x402Signing.d.ts +10 -0
- package/dist/x402Signing.d.ts.map +1 -0
- package/dist/x402Signing.js +107 -0
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -94,6 +94,59 @@ Agents authenticate by signing a SIWE (Sign-In with Ethereum) message with their
|
|
|
94
94
|
|
|
95
95
|
`Authorization: Bearer ifak_...` is also accepted.
|
|
96
96
|
|
|
97
|
+
## Payments (x402)
|
|
98
|
+
|
|
99
|
+
Some gateway routes may require payment via the x402 protocol. The SDK handles this automatically when you provide an `X402PaymentManager`:
|
|
100
|
+
|
|
101
|
+
```typescript
|
|
102
|
+
import { IntentFiClient, DefaultX402PaymentManager } from "@intentfi/agent-sdk";
|
|
103
|
+
|
|
104
|
+
const client = new IntentFiClient({
|
|
105
|
+
baseUrl: "https://agentic.intentfi.io",
|
|
106
|
+
apiKey: process.env.INTENTFI_API_KEY,
|
|
107
|
+
transport: "rest",
|
|
108
|
+
paymentManager: new DefaultX402PaymentManager({
|
|
109
|
+
schemes: {
|
|
110
|
+
exact: async ({ context }) => {
|
|
111
|
+
// Sign and return payment payload for context.requirement
|
|
112
|
+
return { /* signed payment fields */ };
|
|
113
|
+
},
|
|
114
|
+
},
|
|
115
|
+
approve: ({ context }) => {
|
|
116
|
+
// Optional gate: return false to reject a payment request
|
|
117
|
+
return true;
|
|
118
|
+
},
|
|
119
|
+
policy: {
|
|
120
|
+
maxAmountAtomic: 1000000n, // optional: max per-payment
|
|
121
|
+
allowedNetworks: ["base-sepolia"], // optional: restrict networks
|
|
122
|
+
},
|
|
123
|
+
}),
|
|
124
|
+
});
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
When configured:
|
|
128
|
+
- **REST:** the client catches `402` responses, signs payment, and retries with `PAYMENT-SIGNATURE` automatically.
|
|
129
|
+
- **MCP:** the client catches payment challenge tool results and retries with `_meta["x402/payment"]` automatically.
|
|
130
|
+
- **Settlement:** if your payment manager implements `onSettlement`, it receives confirmation with the on-chain transaction hash.
|
|
131
|
+
|
|
132
|
+
CLI note:
|
|
133
|
+
- For CLI x402 payment retries, configure `--x402-payer` and a signing key via `--x402-private-key` or `INTENTFI_X402_PRIVATE_KEY` (fallbacks: `INTENTFI_PRIVATE_KEY`, `AGENT_E2E_PRIVATE_KEY`).
|
|
134
|
+
|
|
135
|
+
If no `paymentManager` is set, payable routes that require payment will throw with `PAYMENT_REQUIRED`.
|
|
136
|
+
|
|
137
|
+
### x402 Types
|
|
138
|
+
|
|
139
|
+
The SDK exports these types for custom payment manager implementations:
|
|
140
|
+
|
|
141
|
+
- `X402PaymentManager` — interface: `buildPaymentPayload(...)`, `onSettlement?(...)`
|
|
142
|
+
- `X402PaymentRequired` — decoded payment challenge from the gateway
|
|
143
|
+
- `X402PaymentRequirement` — a single accepted payment option (scheme, network, amount, asset, payTo)
|
|
144
|
+
- `X402PaymentPayload` — signed payment sent back to the gateway
|
|
145
|
+
- `X402SettlementResponse` — settlement confirmation (success, transaction, payer)
|
|
146
|
+
- `X402PaymentApproval` — optional approval callback signature
|
|
147
|
+
- `X402PaymentPolicy` — optional policy constraints (maxAmountAtomic, allowedNetworks)
|
|
148
|
+
- `DefaultX402PaymentManager` — default implementation that delegates to per-scheme handlers
|
|
149
|
+
|
|
97
150
|
## SDK Methods
|
|
98
151
|
|
|
99
152
|
**Authentication:**
|
package/dist/cli.js
CHANGED
|
@@ -2,14 +2,18 @@
|
|
|
2
2
|
import { createPublicClient, createWalletClient, http, } from "viem";
|
|
3
3
|
import { privateKeyToAccount } from "viem/accounts";
|
|
4
4
|
import { arbitrum, base } from "viem/chains";
|
|
5
|
-
import { IntentFiClient } from "./client";
|
|
5
|
+
import { DefaultX402PaymentManager, IntentFiClient } from "./client";
|
|
6
|
+
import { createCliExactX402SchemeHandler } from "./x402Signing";
|
|
6
7
|
async function main() {
|
|
7
8
|
const args = parseArgs(process.argv.slice(2));
|
|
9
|
+
const apiKey = flagString(args.flags, "api-key");
|
|
10
|
+
const paymentManager = buildCliX402PaymentManager(args.flags, apiKey);
|
|
8
11
|
const client = new IntentFiClient({
|
|
9
12
|
baseUrl: flagString(args.flags, "base-url"),
|
|
10
|
-
apiKey
|
|
13
|
+
apiKey,
|
|
11
14
|
transport: (flagString(args.flags, "transport") ??
|
|
12
15
|
process.env.INTENTFI_TRANSPORT),
|
|
16
|
+
...(paymentManager ? { paymentManager } : {}),
|
|
13
17
|
});
|
|
14
18
|
if (!args.command) {
|
|
15
19
|
printUsage();
|
|
@@ -316,6 +320,61 @@ function resolveChainAndRpc(chainId, rpcOverride) {
|
|
|
316
320
|
}
|
|
317
321
|
throw new Error(`Unsupported chainId ${chainId}. Pass --rpc-url for custom chains.`);
|
|
318
322
|
}
|
|
323
|
+
function buildCliX402PaymentManager(flags, apiKey) {
|
|
324
|
+
const x402Enabled = parseBoolean(flagString(flags, "x402-enabled") ?? process.env.INTENTFI_X402_ENABLED, false);
|
|
325
|
+
const payer = flagString(flags, "x402-payer") ??
|
|
326
|
+
process.env.INTENTFI_X402_PAYER;
|
|
327
|
+
if (apiKey) {
|
|
328
|
+
if (!x402Enabled || !payer) {
|
|
329
|
+
return undefined;
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
else if (!x402Enabled && !payer) {
|
|
333
|
+
return undefined;
|
|
334
|
+
}
|
|
335
|
+
if (!payer) {
|
|
336
|
+
throw new Error("x402 payer address is required when x402 is enabled. Set --x402-payer or INTENTFI_X402_PAYER.");
|
|
337
|
+
}
|
|
338
|
+
const privateKeyRaw = flagString(flags, "x402-private-key")
|
|
339
|
+
?? process.env.INTENTFI_X402_PRIVATE_KEY
|
|
340
|
+
?? process.env.INTENTFI_PRIVATE_KEY
|
|
341
|
+
?? process.env.AGENT_E2E_PRIVATE_KEY;
|
|
342
|
+
if (!privateKeyRaw) {
|
|
343
|
+
throw new Error("x402 private key is required. Set --x402-private-key or INTENTFI_X402_PRIVATE_KEY.");
|
|
344
|
+
}
|
|
345
|
+
const normalizedPayer = payer.trim().toLowerCase();
|
|
346
|
+
if (!/^0x[0-9a-f]{40}$/.test(normalizedPayer)) {
|
|
347
|
+
throw new Error("x402 payer must be a lowercase 0x-prefixed EVM address.");
|
|
348
|
+
}
|
|
349
|
+
const allowedNetworks = (flagString(flags, "x402-allowed-networks") ??
|
|
350
|
+
process.env.INTENTFI_X402_ALLOWED_NETWORKS ??
|
|
351
|
+
"")
|
|
352
|
+
.split(",")
|
|
353
|
+
.map((value) => value.trim())
|
|
354
|
+
.filter((value) => value.length > 0);
|
|
355
|
+
const maxAmountAtomic = parseOptionalBigInt(flagString(flags, "x402-max-amount-atomic")
|
|
356
|
+
?? process.env.INTENTFI_X402_MAX_AMOUNT_ATOMIC);
|
|
357
|
+
const autoApprove = parseBoolean(flagString(flags, "x402-auto-approve") ?? process.env.INTENTFI_X402_AUTO_APPROVE, true);
|
|
358
|
+
const privateKey = asHexPrivateKey(privateKeyRaw);
|
|
359
|
+
const paymentManager = new DefaultX402PaymentManager({
|
|
360
|
+
policy: {
|
|
361
|
+
...(maxAmountAtomic !== undefined ? { maxAmountAtomic } : {}),
|
|
362
|
+
...(allowedNetworks.length > 0 ? { allowedNetworks } : {}),
|
|
363
|
+
},
|
|
364
|
+
approve: async ({ context }) => {
|
|
365
|
+
if (autoApprove) {
|
|
366
|
+
return true;
|
|
367
|
+
}
|
|
368
|
+
console.error(`x402 payment blocked by policy: operation=${context.operation} network=${context.requirement.network} amount=${context.requirement.amount}`);
|
|
369
|
+
return false;
|
|
370
|
+
},
|
|
371
|
+
});
|
|
372
|
+
paymentManager.registerScheme("exact", createCliExactX402SchemeHandler({
|
|
373
|
+
payer: normalizedPayer,
|
|
374
|
+
privateKey,
|
|
375
|
+
}));
|
|
376
|
+
return paymentManager;
|
|
377
|
+
}
|
|
319
378
|
function parseArgs(raw) {
|
|
320
379
|
const command = raw[0];
|
|
321
380
|
const maybeSubcommand = raw[1];
|
|
@@ -410,6 +469,7 @@ function printUsage() {
|
|
|
410
469
|
console.log("intentfi watch <workflowId> [--wait-ms 120000] [--min-delay-ms 500] [--max-delay-ms 30000] [--transport rest|mcp]");
|
|
411
470
|
console.log("intentfi execute <workflowId> [--wait-ms 120000] [--dry-run true|false] [--rpc-url <url>] [--transport rest|mcp]");
|
|
412
471
|
console.log("for signing flows, set INTENTFI_PRIVATE_KEY (preferred) or pass --private-key for local debugging.");
|
|
472
|
+
console.log("for x402 CLI signing, set INTENTFI_X402_PRIVATE_KEY (or --x402-private-key) and --x402-payer.");
|
|
413
473
|
}
|
|
414
474
|
main().catch((error) => {
|
|
415
475
|
console.error(error instanceof Error ? error.message : error);
|
package/dist/client.d.ts
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
import type { ActiveSubmissionContext, ExecutionArtifactInput, GatewayWalletType, PrepareActiveResult, SubmittedTransaction, TransportMode, WorkflowDetail } from "./types";
|
|
1
|
+
import type { ActiveOffchainContext, ActiveSubmissionContext, ExecutionArtifactInput, GatewayWalletType, OffchainSubmissionResult, OffchainTypedData, PrepareActiveResult, SubmittedTransaction, TransportMode, WorkflowDetail, X402PaymentApproval, X402PaymentManager, X402PaymentPayload, X402PaymentPolicy, X402PaymentRequired, X402PaymentSchemeHandler, X402SettlementResponse } from "./types";
|
|
2
2
|
type FetchLike = typeof fetch;
|
|
3
3
|
type ClientOptions = {
|
|
4
4
|
baseUrl?: string;
|
|
5
5
|
apiKey?: string;
|
|
6
6
|
transport?: TransportMode;
|
|
7
7
|
fetchImpl?: FetchLike;
|
|
8
|
+
paymentManager?: X402PaymentManager;
|
|
8
9
|
};
|
|
9
10
|
type MintKeyArgs = {
|
|
10
11
|
message: string;
|
|
@@ -14,11 +15,42 @@ type MintKeyArgs = {
|
|
|
14
15
|
label?: string;
|
|
15
16
|
expiresAtMs?: number;
|
|
16
17
|
};
|
|
18
|
+
type McpPaymentRetryOptions = {
|
|
19
|
+
stream?: boolean;
|
|
20
|
+
idempotencyKey?: string;
|
|
21
|
+
paymentPayload?: X402PaymentPayload;
|
|
22
|
+
};
|
|
23
|
+
type DefaultX402PaymentManagerOptions = {
|
|
24
|
+
policy?: X402PaymentPolicy;
|
|
25
|
+
approve?: X402PaymentApproval;
|
|
26
|
+
schemes?: Record<string, X402PaymentSchemeHandler>;
|
|
27
|
+
};
|
|
28
|
+
export declare class DefaultX402PaymentManager implements X402PaymentManager {
|
|
29
|
+
private readonly policy;
|
|
30
|
+
private readonly approve?;
|
|
31
|
+
private readonly schemes;
|
|
32
|
+
constructor(options?: DefaultX402PaymentManagerOptions);
|
|
33
|
+
registerScheme(scheme: string, handler: X402PaymentSchemeHandler): this;
|
|
34
|
+
buildPaymentPayload(args: {
|
|
35
|
+
transport: TransportMode;
|
|
36
|
+
operation: string;
|
|
37
|
+
idempotencyKey?: string;
|
|
38
|
+
paymentRequired: X402PaymentRequired;
|
|
39
|
+
}): Promise<X402PaymentPayload>;
|
|
40
|
+
onSettlement(args: {
|
|
41
|
+
transport: TransportMode;
|
|
42
|
+
operation: string;
|
|
43
|
+
settlement: X402SettlementResponse;
|
|
44
|
+
}): Promise<void>;
|
|
45
|
+
private selectRequirement;
|
|
46
|
+
private passesPolicy;
|
|
47
|
+
}
|
|
17
48
|
export declare class IntentFiClient {
|
|
18
49
|
readonly baseUrl: string;
|
|
19
50
|
private readonly apiKey?;
|
|
20
51
|
readonly transport: TransportMode;
|
|
21
52
|
private readonly fetchImpl;
|
|
53
|
+
private readonly paymentManager?;
|
|
22
54
|
private mcpSessionId?;
|
|
23
55
|
constructor(options?: ClientOptions);
|
|
24
56
|
requestSiweChallenge(args: {
|
|
@@ -41,6 +73,13 @@ export declare class IntentFiClient {
|
|
|
41
73
|
intent: string;
|
|
42
74
|
operationId: string;
|
|
43
75
|
chainId?: number;
|
|
76
|
+
discoveryHandoff?: {
|
|
77
|
+
runId: string;
|
|
78
|
+
cardId: string;
|
|
79
|
+
actionId: string;
|
|
80
|
+
amountUsd?: number;
|
|
81
|
+
fromTokenSymbol?: string;
|
|
82
|
+
};
|
|
44
83
|
}): Promise<{
|
|
45
84
|
workflowId: string;
|
|
46
85
|
}>;
|
|
@@ -60,9 +99,73 @@ export declare class IntentFiClient {
|
|
|
60
99
|
result: PrepareActiveResult;
|
|
61
100
|
status: number;
|
|
62
101
|
}>;
|
|
102
|
+
prepareOffchainActive(args: {
|
|
103
|
+
workflowId: string;
|
|
104
|
+
requestId: string;
|
|
105
|
+
waitMs?: number;
|
|
106
|
+
}): Promise<{
|
|
107
|
+
result: ActiveOffchainContext;
|
|
108
|
+
status: number;
|
|
109
|
+
}>;
|
|
63
110
|
getActiveSubmissionContext(args: {
|
|
64
111
|
workflowId: string;
|
|
65
112
|
}): Promise<ActiveSubmissionContext>;
|
|
113
|
+
submitOffchainActive(args: {
|
|
114
|
+
workflowId: string;
|
|
115
|
+
requestId: string;
|
|
116
|
+
operationId: string;
|
|
117
|
+
idempotencyKey: string;
|
|
118
|
+
typedData: OffchainTypedData;
|
|
119
|
+
signature: string;
|
|
120
|
+
waitMs?: number;
|
|
121
|
+
}): Promise<{
|
|
122
|
+
result: OffchainSubmissionResult;
|
|
123
|
+
status: number;
|
|
124
|
+
}>;
|
|
125
|
+
reportOffchainResultActive(args: {
|
|
126
|
+
workflowId: string;
|
|
127
|
+
requestId: string;
|
|
128
|
+
operationId: string;
|
|
129
|
+
idempotencyKey: string;
|
|
130
|
+
externalOrderId: string;
|
|
131
|
+
reportedStatus: string;
|
|
132
|
+
submitRequest?: unknown;
|
|
133
|
+
submitResponse?: unknown;
|
|
134
|
+
responseHash: string;
|
|
135
|
+
reporterAddressLower: string;
|
|
136
|
+
attestationSignature: string;
|
|
137
|
+
attestationExpiresAtMs: number;
|
|
138
|
+
hashSchemaVersion: string;
|
|
139
|
+
waitMs?: number;
|
|
140
|
+
}): Promise<{
|
|
141
|
+
result: OffchainSubmissionResult;
|
|
142
|
+
status: number;
|
|
143
|
+
}>;
|
|
144
|
+
reportOffchainFailureActive(args: {
|
|
145
|
+
workflowId: string;
|
|
146
|
+
requestId: string;
|
|
147
|
+
operationId: string;
|
|
148
|
+
idempotencyKey: string;
|
|
149
|
+
failureCode: string;
|
|
150
|
+
errorMessage: string;
|
|
151
|
+
retryable: boolean;
|
|
152
|
+
requestPayload?: unknown;
|
|
153
|
+
waitMs?: number;
|
|
154
|
+
}): Promise<{
|
|
155
|
+
result: OffchainSubmissionResult;
|
|
156
|
+
status: number;
|
|
157
|
+
}>;
|
|
158
|
+
cancelOffchainActive(args: {
|
|
159
|
+
workflowId: string;
|
|
160
|
+
requestId: string;
|
|
161
|
+
operationId: string;
|
|
162
|
+
idempotencyKey: string;
|
|
163
|
+
reason?: string;
|
|
164
|
+
waitMs?: number;
|
|
165
|
+
}): Promise<{
|
|
166
|
+
result: OffchainSubmissionResult;
|
|
167
|
+
status: number;
|
|
168
|
+
}>;
|
|
66
169
|
submitActiveTransactions(args: {
|
|
67
170
|
workflowId: string;
|
|
68
171
|
requestId: string;
|
|
@@ -89,16 +192,23 @@ export declare class IntentFiClient {
|
|
|
89
192
|
private createWorkflowRest;
|
|
90
193
|
private getWorkflowRest;
|
|
91
194
|
private prepareActiveRest;
|
|
195
|
+
private prepareOffchainActiveRest;
|
|
196
|
+
private submitOffchainActiveRest;
|
|
197
|
+
private reportOffchainResultActiveRest;
|
|
198
|
+
private reportOffchainFailureActiveRest;
|
|
199
|
+
private cancelOffchainActiveRest;
|
|
92
200
|
private submitActiveTransactionsRest;
|
|
93
201
|
private submitActiveSendCallsRest;
|
|
94
202
|
mcpInitialize(): Promise<void>;
|
|
95
|
-
mcpToolCall<T>(name: string, args: Record<string, unknown>, options?:
|
|
96
|
-
stream?: boolean;
|
|
97
|
-
}, attempt?: number): Promise<T>;
|
|
203
|
+
mcpToolCall<T>(name: string, args: Record<string, unknown>, options?: McpPaymentRetryOptions, attempt?: number, paymentAttempt?: number): Promise<T>;
|
|
98
204
|
private withApiKey;
|
|
99
|
-
private
|
|
205
|
+
private assertCredential;
|
|
206
|
+
private buildPaymentPayload;
|
|
207
|
+
private handleSettlement;
|
|
100
208
|
private fetchJson;
|
|
209
|
+
private fetchPaidEnvelope;
|
|
101
210
|
private fetchEnvelope;
|
|
211
|
+
private parseEnvelopeResponse;
|
|
102
212
|
}
|
|
103
213
|
export {};
|
|
104
214
|
//# sourceMappingURL=client.d.ts.map
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,uBAAuB,EACvB,sBAAsB,EAEtB,iBAAiB,EACjB,mBAAmB,EACnB,oBAAoB,EACpB,aAAa,EACb,cAAc,
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,qBAAqB,EACrB,uBAAuB,EACvB,sBAAsB,EAEtB,iBAAiB,EACjB,wBAAwB,EACxB,iBAAiB,EACjB,mBAAmB,EACnB,oBAAoB,EACpB,aAAa,EACb,cAAc,EACd,mBAAmB,EACnB,kBAAkB,EAClB,kBAAkB,EAClB,iBAAiB,EACjB,mBAAmB,EAGnB,wBAAwB,EACxB,sBAAsB,EACvB,MAAM,SAAS,CAAC;AAEjB,KAAK,SAAS,GAAG,OAAO,KAAK,CAAC;AAE9B,KAAK,aAAa,GAAG;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,aAAa,CAAC;IAC1B,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,cAAc,CAAC,EAAE,kBAAkB,CAAC;CACrC,CAAC;AAEF,KAAK,WAAW,GAAG;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,KAAK,GAAG,MAAM,GAAG,OAAO,CAAC;IACrC,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAyBF,KAAK,sBAAsB,GAAG;IAC5B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,kBAAkB,CAAC;CACrC,CAAC;AAEF,KAAK,gCAAgC,GAAG;IACtC,MAAM,CAAC,EAAE,iBAAiB,CAAC;IAC3B,OAAO,CAAC,EAAE,mBAAmB,CAAC;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,wBAAwB,CAAC,CAAC;CACpD,CAAC;AAEF,qBAAa,yBAA0B,YAAW,kBAAkB;IAClE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAoB;IAC3C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAsB;IAC/C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA+C;gBAE3D,OAAO,GAAE,gCAAqC;IAQ1D,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,wBAAwB,GAAG,IAAI;IAKjE,mBAAmB,CAAC,IAAI,EAAE;QAC9B,SAAS,EAAE,aAAa,CAAC;QACzB,SAAS,EAAE,MAAM,CAAC;QAClB,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,eAAe,EAAE,mBAAmB,CAAC;KACtC,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAqCzB,YAAY,CAAC,IAAI,EAAE;QACvB,SAAS,EAAE,aAAa,CAAC;QACzB,SAAS,EAAE,MAAM,CAAC;QAClB,UAAU,EAAE,sBAAsB,CAAC;KACpC,GAAG,OAAO,CAAC,IAAI,CAAC;IAIjB,OAAO,CAAC,iBAAiB;IAczB,OAAO,CAAC,YAAY;CAkBrB;AAED,qBAAa,cAAc;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAS;IACjC,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAC;IAClC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAY;IACtC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAqB;IACrD,OAAO,CAAC,YAAY,CAAC,CAAS;gBAElB,OAAO,GAAE,aAAkB;IAUjC,oBAAoB,CAAC,IAAI,EAAE;QAC/B,OAAO,EAAE,MAAM,CAAC;QAChB,UAAU,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,OAAO,CAAC;QACtC,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC;IAgB9D,kBAAkB,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE;YAAE,SAAS,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,CAAC;IAW7G,cAAc,CAAC,IAAI,EAAE;QACzB,MAAM,EAAE,MAAM,CAAC;QACf,WAAW,EAAE,MAAM,CAAC;QACpB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,gBAAgB,CAAC,EAAE;YACjB,KAAK,EAAE,MAAM,CAAC;YACd,MAAM,EAAE,MAAM,CAAC;YACf,QAAQ,EAAE,MAAM,CAAC;YACjB,SAAS,CAAC,EAAE,MAAM,CAAC;YACnB,eAAe,CAAC,EAAE,MAAM,CAAC;SAC1B,CAAC;KACH,GAAG,OAAO,CAAC;QAAE,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;IAY7B,WAAW,CAAC,IAAI,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC;QAAE,QAAQ,EAAE,cAAc,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAuBxI,aAAa,CAAC,IAAI,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,mBAAmB,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAmBzI,qBAAqB,CAAC,IAAI,EAAE;QAChC,UAAU,EAAE,MAAM,CAAC;QACnB,SAAS,EAAE,MAAM,CAAC;QAClB,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,qBAAqB,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAYxD,0BAA0B,CAAC,IAAI,EAAE;QACrC,UAAU,EAAE,MAAM,CAAC;KACpB,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAgB9B,oBAAoB,CAAC,IAAI,EAAE;QAC/B,UAAU,EAAE,MAAM,CAAC;QACnB,SAAS,EAAE,MAAM,CAAC;QAClB,WAAW,EAAE,MAAM,CAAC;QACpB,cAAc,EAAE,MAAM,CAAC;QACvB,SAAS,EAAE,iBAAiB,CAAC;QAC7B,SAAS,EAAE,MAAM,CAAC;QAClB,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,wBAAwB,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAiB3D,0BAA0B,CAAC,IAAI,EAAE;QACrC,UAAU,EAAE,MAAM,CAAC;QACnB,SAAS,EAAE,MAAM,CAAC;QAClB,WAAW,EAAE,MAAM,CAAC;QACpB,cAAc,EAAE,MAAM,CAAC;QACvB,eAAe,EAAE,MAAM,CAAC;QACxB,cAAc,EAAE,MAAM,CAAC;QACvB,aAAa,CAAC,EAAE,OAAO,CAAC;QACxB,cAAc,CAAC,EAAE,OAAO,CAAC;QACzB,YAAY,EAAE,MAAM,CAAC;QACrB,oBAAoB,EAAE,MAAM,CAAC;QAC7B,oBAAoB,EAAE,MAAM,CAAC;QAC7B,sBAAsB,EAAE,MAAM,CAAC;QAC/B,iBAAiB,EAAE,MAAM,CAAC;QAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,wBAAwB,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAiB3D,2BAA2B,CAAC,IAAI,EAAE;QACtC,UAAU,EAAE,MAAM,CAAC;QACnB,SAAS,EAAE,MAAM,CAAC;QAClB,WAAW,EAAE,MAAM,CAAC;QACpB,cAAc,EAAE,MAAM,CAAC;QACvB,WAAW,EAAE,MAAM,CAAC;QACpB,YAAY,EAAE,MAAM,CAAC;QACrB,SAAS,EAAE,OAAO,CAAC;QACnB,cAAc,CAAC,EAAE,OAAO,CAAC;QACzB,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,wBAAwB,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAiB3D,oBAAoB,CAAC,IAAI,EAAE;QAC/B,UAAU,EAAE,MAAM,CAAC;QACnB,SAAS,EAAE,MAAM,CAAC;QAClB,WAAW,EAAE,MAAM,CAAC;QACpB,cAAc,EAAE,MAAM,CAAC;QACvB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,wBAAwB,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAiB3D,wBAAwB,CAAC,IAAI,EAAE;QACnC,UAAU,EAAE,MAAM,CAAC;QACnB,SAAS,EAAE,MAAM,CAAC;QAClB,YAAY,EAAE,MAAM,CAAC;QACrB,YAAY,EAAE,oBAAoB,EAAE,CAAC;QACrC,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAiB1D,qBAAqB,CAAC,IAAI,EAAE;QAChC,UAAU,EAAE,MAAM,CAAC;QACnB,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,EAAE,MAAM,CAAC;QACjB,YAAY,EAAE,MAAM,CAAC;QACrB,UAAU,EAAE,iBAAiB,CAAC;QAC9B,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,iBAAiB,CAAC,EAAE,sBAAsB,CAAC;QAC3C,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;YAiBlD,kBAAkB;YA6BlB,eAAe;YAoBf,iBAAiB;YAuBjB,yBAAyB;YAmBzB,wBAAwB;YAqBxB,8BAA8B;YA4B9B,+BAA+B;YAuB/B,wBAAwB;YAoBxB,4BAA4B;YAmB5B,yBAAyB;IAsBjC,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAyC9B,WAAW,CAAC,CAAC,EACjB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,OAAO,CAAC,EAAE,sBAAsB,EAChC,OAAO,SAAI,EACX,cAAc,SAAI,GACjB,OAAO,CAAC,CAAC,CAAC;IA6Gb,OAAO,CAAC,UAAU;IAUlB,OAAO,CAAC,gBAAgB;YAsBV,mBAAmB;YAgBnB,gBAAgB;YAmBhB,SAAS;YAKT,iBAAiB;YA2DjB,aAAa;YAKb,qBAAqB;CAkBpC"}
|