@attocash/n8n-nodes-atto 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/README.md +130 -0
- package/dist/credentials/AttoApi.credentials.d.ts +9 -0
- package/dist/credentials/AttoApi.credentials.js +109 -0
- package/dist/credentials/AttoApi.credentials.js.map +1 -0
- package/dist/nodes/Atto/Atto.node.d.ts +5 -0
- package/dist/nodes/Atto/Atto.node.js +111107 -0
- package/dist/nodes/Atto/Atto.node.js.map +1 -0
- package/dist/nodes/Atto/Atto.node.json +18 -0
- package/dist/nodes/Atto/atto.svg +34 -0
- package/dist/nodes/Atto/operations.d.ts +35 -0
- package/dist/nodes/Atto/operations.js +593 -0
- package/dist/nodes/Atto/operations.js.map +1 -0
- package/dist/nodes/AttoTrigger/AttoTrigger.node.d.ts +5 -0
- package/dist/nodes/AttoTrigger/AttoTrigger.node.js +110716 -0
- package/dist/nodes/AttoTrigger/AttoTrigger.node.js.map +1 -0
- package/dist/nodes/AttoTrigger/AttoTrigger.node.json +18 -0
- package/dist/nodes/AttoTrigger/atto.svg +34 -0
- package/dist/package.json +90 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/examples/incoming-to-receive.json +60 -0
- package/examples/ping-pong-receivable.json +125 -0
- package/examples/receivable-trigger.json +25 -0
- package/examples/send-transaction.json +48 -0
- package/package.json +90 -0
|
@@ -0,0 +1,593 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.deriveAccountFromSecret = void 0;
|
|
4
|
+
exports.deriveAddressFromSecret = deriveAddressFromSecret;
|
|
5
|
+
exports.createNodeClient = createNodeClient;
|
|
6
|
+
exports.executeAttoOperation = executeAttoOperation;
|
|
7
|
+
exports.createAttoTriggerSubscription = createAttoTriggerSubscription;
|
|
8
|
+
const commons_core_1 = require("@attocash/commons-core");
|
|
9
|
+
const commons_node_1 = require("@attocash/commons-node");
|
|
10
|
+
const commons_node_remote_1 = require("@attocash/commons-node-remote");
|
|
11
|
+
const commons_wallet_1 = require("@attocash/commons-wallet");
|
|
12
|
+
const commons_worker_remote_1 = require("@attocash/commons-worker-remote");
|
|
13
|
+
const DEFAULT_STREAM_TIMEOUT_MS = 5000;
|
|
14
|
+
const DEFAULT_PUBLISH_TIMEOUT_MS = 60000;
|
|
15
|
+
function normalizeCredentials(credentials) {
|
|
16
|
+
return (credentials ?? {});
|
|
17
|
+
}
|
|
18
|
+
function text(value) {
|
|
19
|
+
return typeof value === 'string' ? value.trim() : '';
|
|
20
|
+
}
|
|
21
|
+
function optionalText(value) {
|
|
22
|
+
const normalized = text(value);
|
|
23
|
+
return normalized ? normalized : undefined;
|
|
24
|
+
}
|
|
25
|
+
function positiveInteger(value, fieldName) {
|
|
26
|
+
const numberValue = typeof value === 'number' ? value : Number(value);
|
|
27
|
+
if (!Number.isInteger(numberValue) || numberValue < 0) {
|
|
28
|
+
throw new Error(`${fieldName} must be a non-negative integer`);
|
|
29
|
+
}
|
|
30
|
+
return numberValue;
|
|
31
|
+
}
|
|
32
|
+
function positiveTimeout(value, fieldName) {
|
|
33
|
+
const timeoutMs = positiveInteger(value, fieldName);
|
|
34
|
+
if (timeoutMs < 1)
|
|
35
|
+
throw new Error(`${fieldName} must be greater than zero`);
|
|
36
|
+
return timeoutMs;
|
|
37
|
+
}
|
|
38
|
+
function parseReceivableSource(value) {
|
|
39
|
+
const source = text(value || 'input');
|
|
40
|
+
if (source === 'input' || source === 'wait')
|
|
41
|
+
return source;
|
|
42
|
+
throw new Error('Receivable Source must be input or wait');
|
|
43
|
+
}
|
|
44
|
+
function parseSecretType(value, fieldName) {
|
|
45
|
+
if (value === 'mnemonic' || value === 'privateKey')
|
|
46
|
+
return value;
|
|
47
|
+
throw new Error(`${fieldName} must be either mnemonic or privateKey`);
|
|
48
|
+
}
|
|
49
|
+
function secretInput(parameters, credentials) {
|
|
50
|
+
const source = text(parameters.secretSource || 'credentials');
|
|
51
|
+
if (source === 'node') {
|
|
52
|
+
const walletSecret = text(parameters.walletSecret);
|
|
53
|
+
if (!walletSecret)
|
|
54
|
+
throw new Error('Wallet Secret is required');
|
|
55
|
+
return {
|
|
56
|
+
secretType: parseSecretType(parameters.walletSecretType ?? 'mnemonic', 'Wallet Secret Type'),
|
|
57
|
+
walletSecret,
|
|
58
|
+
keyIndex: positiveInteger(parameters.keyIndex ?? 0, 'Key Index'),
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
const walletSecret = text(credentials.walletSecret);
|
|
62
|
+
if (!walletSecret)
|
|
63
|
+
throw new Error('Atto credentials must include a Wallet Secret');
|
|
64
|
+
return {
|
|
65
|
+
secretType: parseSecretType(credentials.walletMaterialType ?? 'mnemonic', 'Credential Wallet Secret Type'),
|
|
66
|
+
walletSecret,
|
|
67
|
+
keyIndex: positiveInteger(credentials.keyIndex ?? 0, 'Credential Key Index'),
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
async function deriveAddressFromSecret(parameters, credentials) {
|
|
71
|
+
const input = secretInput(parameters, normalizeCredentials(credentials));
|
|
72
|
+
const index = (0, commons_core_1.toAttoIndex)(input.keyIndex);
|
|
73
|
+
if (input.secretType === 'mnemonic') {
|
|
74
|
+
const mnemonic = commons_core_1.AttoMnemonic.fromPhrase(input.walletSecret);
|
|
75
|
+
const seed = await (0, commons_core_1.toSeedAsync)(mnemonic);
|
|
76
|
+
const privateKey = (0, commons_core_1.toPrivateKey)(seed, index);
|
|
77
|
+
const publicKey = (0, commons_core_1.toPublicKey)(privateKey);
|
|
78
|
+
const address = new commons_core_1.AttoAddress(commons_core_1.AttoAlgorithm.V1, publicKey);
|
|
79
|
+
return {
|
|
80
|
+
secretType: input.secretType,
|
|
81
|
+
keyIndex: input.keyIndex,
|
|
82
|
+
privateKey,
|
|
83
|
+
publicKey,
|
|
84
|
+
address,
|
|
85
|
+
seed,
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
const privateKey = commons_core_1.AttoPrivateKey.Companion.parse(input.walletSecret);
|
|
89
|
+
const publicKey = (0, commons_core_1.toPublicKey)(privateKey);
|
|
90
|
+
const address = new commons_core_1.AttoAddress(commons_core_1.AttoAlgorithm.V1, publicKey);
|
|
91
|
+
return {
|
|
92
|
+
secretType: input.secretType,
|
|
93
|
+
keyIndex: input.keyIndex,
|
|
94
|
+
privateKey,
|
|
95
|
+
publicKey,
|
|
96
|
+
address,
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
exports.deriveAccountFromSecret = deriveAddressFromSecret;
|
|
100
|
+
function requireNodeUrl(credentials) {
|
|
101
|
+
const nodeUrl = text(credentials.nodeUrl);
|
|
102
|
+
if (!nodeUrl)
|
|
103
|
+
throw new Error('Atto credentials must include a Node Base URL');
|
|
104
|
+
return nodeUrl.replace(/\/+$/, '');
|
|
105
|
+
}
|
|
106
|
+
function requireWorkerUrl(credentials) {
|
|
107
|
+
const workerUrl = text(credentials.workerUrl);
|
|
108
|
+
if (!workerUrl)
|
|
109
|
+
throw new Error('Atto credentials must include a Worker Base URL');
|
|
110
|
+
return workerUrl.replace(/\/+$/, '');
|
|
111
|
+
}
|
|
112
|
+
function applyHeaders(builder, credentials) {
|
|
113
|
+
const apiKey = text(credentials.apiKey);
|
|
114
|
+
if (!apiKey)
|
|
115
|
+
return builder;
|
|
116
|
+
const header = text(credentials.authHeaderName || 'Authorization');
|
|
117
|
+
if (!header)
|
|
118
|
+
throw new Error('API Key Header is required when API Key is set');
|
|
119
|
+
const prefix = text(credentials.authHeaderPrefix);
|
|
120
|
+
return builder.header(header, prefix ? `${prefix} ${apiKey}` : apiKey);
|
|
121
|
+
}
|
|
122
|
+
function createNodeClient(credentials) {
|
|
123
|
+
const attoCredentials = normalizeCredentials(credentials);
|
|
124
|
+
return applyHeaders(new commons_node_remote_1.AttoNodeClientAsyncBuilder(requireNodeUrl(attoCredentials)), attoCredentials).build();
|
|
125
|
+
}
|
|
126
|
+
async function createWalletRuntime(parameters, credentials) {
|
|
127
|
+
const derived = await deriveAddressFromSecret(parameters, credentials);
|
|
128
|
+
const node = createNodeClient(credentials);
|
|
129
|
+
const worker = applyHeaders(new commons_worker_remote_1.AttoWorkerAsyncBuilder(requireWorkerUrl(credentials)), credentials)
|
|
130
|
+
.cached(true)
|
|
131
|
+
.build();
|
|
132
|
+
const builder = new commons_wallet_1.AttoWalletAsyncBuilder(node, worker);
|
|
133
|
+
if (derived.seed) {
|
|
134
|
+
builder.signerProviderSeed(derived.seed);
|
|
135
|
+
}
|
|
136
|
+
else {
|
|
137
|
+
builder.signerProviderFunction({
|
|
138
|
+
get: async () => (0, commons_core_1.privateKeyToSigner)(derived.privateKey),
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
const wallet = builder.build();
|
|
142
|
+
await wallet.openAccount((0, commons_core_1.toAttoIndex)(derived.keyIndex));
|
|
143
|
+
return { node, derived, wallet };
|
|
144
|
+
}
|
|
145
|
+
function parseAddress(value, fieldName) {
|
|
146
|
+
const raw = text(value);
|
|
147
|
+
if (!raw)
|
|
148
|
+
throw new Error(`${fieldName} is required`);
|
|
149
|
+
try {
|
|
150
|
+
return commons_core_1.AttoAddress.parse(raw);
|
|
151
|
+
}
|
|
152
|
+
catch {
|
|
153
|
+
throw new Error(`${fieldName} must be a valid Atto address`);
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
function parseOptionalAddress(value, fieldName) {
|
|
157
|
+
const raw = optionalText(value);
|
|
158
|
+
return raw ? parseAddress(raw, fieldName) : undefined;
|
|
159
|
+
}
|
|
160
|
+
function parseAddressList(value, fieldName) {
|
|
161
|
+
const raw = typeof value === 'string'
|
|
162
|
+
? value
|
|
163
|
+
: Array.isArray(value)
|
|
164
|
+
? value.join('\n')
|
|
165
|
+
: '';
|
|
166
|
+
const addresses = raw
|
|
167
|
+
.split(/[\n,]+/)
|
|
168
|
+
.map((address) => address.trim())
|
|
169
|
+
.filter(Boolean)
|
|
170
|
+
.map((address) => parseAddress(address, fieldName));
|
|
171
|
+
if (addresses.length === 0)
|
|
172
|
+
throw new Error(`${fieldName} is required`);
|
|
173
|
+
return addresses;
|
|
174
|
+
}
|
|
175
|
+
function parseAddressSource(value, allowAll) {
|
|
176
|
+
const source = text(value || 'credentials');
|
|
177
|
+
if (source === 'credentials' || source === 'manual')
|
|
178
|
+
return source;
|
|
179
|
+
if (allowAll && source === 'all')
|
|
180
|
+
return source;
|
|
181
|
+
throw new Error('Address Source must be credentials, manual, or all');
|
|
182
|
+
}
|
|
183
|
+
function parseQueryMode(value) {
|
|
184
|
+
const mode = text(value || 'credentials');
|
|
185
|
+
if (mode === 'credentials' || mode === 'manual' || mode === 'all' || mode === 'hash')
|
|
186
|
+
return mode;
|
|
187
|
+
throw new Error('Query Mode must be credentials, manual, all, or hash');
|
|
188
|
+
}
|
|
189
|
+
async function addressesFromSource(parameters, credentials, allowAll = false) {
|
|
190
|
+
const source = parseAddressSource(parameters.addressSource, allowAll);
|
|
191
|
+
if (source === 'all')
|
|
192
|
+
return undefined;
|
|
193
|
+
if (source === 'manual')
|
|
194
|
+
return parseAddressList(parameters.addresses ?? parameters.address, 'Address');
|
|
195
|
+
const derived = await deriveAddressFromSecret({ secretSource: 'credentials' }, credentials);
|
|
196
|
+
return [derived.address];
|
|
197
|
+
}
|
|
198
|
+
async function addressForCredentials(credentials) {
|
|
199
|
+
const derived = await deriveAddressFromSecret({ secretSource: 'credentials' }, credentials);
|
|
200
|
+
return derived.address;
|
|
201
|
+
}
|
|
202
|
+
function parseAmount(amount, unit, fieldName) {
|
|
203
|
+
const raw = text(amount);
|
|
204
|
+
if (!raw)
|
|
205
|
+
throw new Error(`${fieldName} is required`);
|
|
206
|
+
try {
|
|
207
|
+
const amountValue = text(unit).toUpperCase() === 'RAW'
|
|
208
|
+
? commons_core_1.AttoAmount.from(commons_core_1.AttoUnit.RAW, raw)
|
|
209
|
+
: commons_core_1.AttoAmount.from(commons_core_1.AttoUnit.ATTO, raw);
|
|
210
|
+
if (amountValue.toString() === '0') {
|
|
211
|
+
throw new Error('zero');
|
|
212
|
+
}
|
|
213
|
+
return amountValue;
|
|
214
|
+
}
|
|
215
|
+
catch {
|
|
216
|
+
throw new Error(`${fieldName} must be a positive Atto amount`);
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
function parseOptionalAmount(amount, unit, fieldName) {
|
|
220
|
+
const raw = optionalText(amount);
|
|
221
|
+
return raw ? parseAmount(raw, unit, fieldName) : undefined;
|
|
222
|
+
}
|
|
223
|
+
function parseHash(value, fieldName) {
|
|
224
|
+
const raw = text(value);
|
|
225
|
+
if (!raw)
|
|
226
|
+
throw new Error(`${fieldName} is required`);
|
|
227
|
+
try {
|
|
228
|
+
return commons_core_1.AttoHash.Companion.parse(raw);
|
|
229
|
+
}
|
|
230
|
+
catch {
|
|
231
|
+
throw new Error(`${fieldName} must be a valid Atto hash`);
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
function parseOptionalHeight(value, fieldName) {
|
|
235
|
+
const raw = optionalText(value);
|
|
236
|
+
if (!raw)
|
|
237
|
+
return undefined;
|
|
238
|
+
try {
|
|
239
|
+
return (0, commons_core_1.toAttoHeight)(raw);
|
|
240
|
+
}
|
|
241
|
+
catch {
|
|
242
|
+
throw new Error(`${fieldName} must be a valid Atto height`);
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
function parseRequiredHeight(value, fieldName) {
|
|
246
|
+
return parseOptionalHeight(value, fieldName) ?? (0, commons_core_1.toAttoHeight)('1');
|
|
247
|
+
}
|
|
248
|
+
function assertSameAddress(expected, actual, fieldName) {
|
|
249
|
+
if (!expected.equals(actual)) {
|
|
250
|
+
throw new Error(`${fieldName} must match the address derived from the wallet secret`);
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
function assertOptionalSameAddress(expected, actual, fieldName) {
|
|
254
|
+
if (actual)
|
|
255
|
+
assertSameAddress(expected, actual, fieldName);
|
|
256
|
+
}
|
|
257
|
+
function parseJsonObject(value) {
|
|
258
|
+
return JSON.parse(value);
|
|
259
|
+
}
|
|
260
|
+
function amountOutput(amount) {
|
|
261
|
+
return {
|
|
262
|
+
raw: amount.toString(),
|
|
263
|
+
atto: amount.toFormattedString(commons_core_1.AttoUnit.ATTO),
|
|
264
|
+
};
|
|
265
|
+
}
|
|
266
|
+
function accountOutput(account) {
|
|
267
|
+
return {
|
|
268
|
+
found: true,
|
|
269
|
+
address: account.address.value,
|
|
270
|
+
publicKey: account.publicKey.toString(),
|
|
271
|
+
balance: amountOutput(account.balance),
|
|
272
|
+
representativeAddress: account.representativeAddress.value,
|
|
273
|
+
height: account.height.toString(),
|
|
274
|
+
frontier: account.lastTransactionHash.toString(),
|
|
275
|
+
account: parseJsonObject((0, commons_node_1.accountToJson)(account)),
|
|
276
|
+
};
|
|
277
|
+
}
|
|
278
|
+
function receivableOutput(receivable) {
|
|
279
|
+
return {
|
|
280
|
+
hash: receivable.hash.toString(),
|
|
281
|
+
address: receivable.receiverAddress.value,
|
|
282
|
+
fromAddress: receivable.address.value,
|
|
283
|
+
amount: amountOutput(receivable.amount),
|
|
284
|
+
receivable: parseJsonObject((0, commons_node_1.receivableToJson)(receivable)),
|
|
285
|
+
};
|
|
286
|
+
}
|
|
287
|
+
function transactionOutput(transaction, status) {
|
|
288
|
+
return {
|
|
289
|
+
...(status ? { status } : {}),
|
|
290
|
+
hash: transaction.hash.toString(),
|
|
291
|
+
address: transaction.address.value,
|
|
292
|
+
height: transaction.height.toString(),
|
|
293
|
+
transaction: parseJsonObject((0, commons_node_1.transactionToJson)(transaction)),
|
|
294
|
+
};
|
|
295
|
+
}
|
|
296
|
+
function accountEntryOutput(accountEntry) {
|
|
297
|
+
return {
|
|
298
|
+
hash: accountEntry.hash.toString(),
|
|
299
|
+
address: accountEntry.address.value,
|
|
300
|
+
subjectAddress: accountEntry.subjectAddress.value,
|
|
301
|
+
height: accountEntry.height.toString(),
|
|
302
|
+
blockType: accountEntry.blockType.name,
|
|
303
|
+
previousBalance: amountOutput(accountEntry.previousBalance),
|
|
304
|
+
balance: amountOutput(accountEntry.balance),
|
|
305
|
+
accountEntry: parseJsonObject((0, commons_node_1.accountEntryToJson)(accountEntry)),
|
|
306
|
+
};
|
|
307
|
+
}
|
|
308
|
+
function streamOptions(parameters) {
|
|
309
|
+
return {
|
|
310
|
+
maxItems: positiveInteger(parameters.maxItems ?? 25, 'Max Items') || 1,
|
|
311
|
+
timeoutMs: positiveTimeout(parameters.timeoutMs ?? DEFAULT_STREAM_TIMEOUT_MS, 'Timeout'),
|
|
312
|
+
};
|
|
313
|
+
}
|
|
314
|
+
function cancelJob(job) {
|
|
315
|
+
try {
|
|
316
|
+
job?.cancel?.();
|
|
317
|
+
job?.close?.();
|
|
318
|
+
}
|
|
319
|
+
catch {
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
function errorFromUnknown(error, fallback) {
|
|
323
|
+
if (!error)
|
|
324
|
+
return new Error(fallback);
|
|
325
|
+
if (error instanceof Error)
|
|
326
|
+
return error;
|
|
327
|
+
return new Error(String(error));
|
|
328
|
+
}
|
|
329
|
+
async function collectStream(start, options) {
|
|
330
|
+
return await new Promise((resolve, reject) => {
|
|
331
|
+
const items = [];
|
|
332
|
+
let settled = false;
|
|
333
|
+
const state = {};
|
|
334
|
+
const finish = (error) => {
|
|
335
|
+
if (settled)
|
|
336
|
+
return;
|
|
337
|
+
settled = true;
|
|
338
|
+
clearTimeout(timer);
|
|
339
|
+
cancelJob(state.job);
|
|
340
|
+
if (error) {
|
|
341
|
+
reject(error);
|
|
342
|
+
return;
|
|
343
|
+
}
|
|
344
|
+
resolve(items);
|
|
345
|
+
};
|
|
346
|
+
const timer = setTimeout(() => finish(), options.timeoutMs);
|
|
347
|
+
state.job = start((item) => {
|
|
348
|
+
if (settled)
|
|
349
|
+
return;
|
|
350
|
+
items.push(item);
|
|
351
|
+
if (items.length >= options.maxItems)
|
|
352
|
+
finish();
|
|
353
|
+
}, (error) => {
|
|
354
|
+
if (settled)
|
|
355
|
+
return;
|
|
356
|
+
finish(error ? errorFromUnknown(error, 'Atto stream stopped') : undefined);
|
|
357
|
+
});
|
|
358
|
+
});
|
|
359
|
+
}
|
|
360
|
+
async function firstReceivable(node, address, minAmount, timeoutMs) {
|
|
361
|
+
const [receivable] = await collectStream((onItem, onCancel) => node.onReceivableByAddresses([address], minAmount, onItem, onCancel), { maxItems: 1, timeoutMs });
|
|
362
|
+
if (!receivable)
|
|
363
|
+
throw new Error(`No receivable Atto transaction found within ${timeoutMs}ms`);
|
|
364
|
+
return receivable;
|
|
365
|
+
}
|
|
366
|
+
function inputItem(parameters) {
|
|
367
|
+
const item = parameters.inputItem;
|
|
368
|
+
if (!item || typeof item !== 'object' || Array.isArray(item)) {
|
|
369
|
+
throw new Error('Input item must contain a receivable object from Atto Trigger or Get Receivables');
|
|
370
|
+
}
|
|
371
|
+
return item;
|
|
372
|
+
}
|
|
373
|
+
function parseInputReceivable(parameters) {
|
|
374
|
+
const item = inputItem(parameters);
|
|
375
|
+
const value = item.receivable ?? item;
|
|
376
|
+
const json = typeof value === 'string' ? value : JSON.stringify(value);
|
|
377
|
+
try {
|
|
378
|
+
return (0, commons_node_1.receivableFromJson)(json);
|
|
379
|
+
}
|
|
380
|
+
catch {
|
|
381
|
+
throw new Error('Input item must contain a valid Atto receivable object');
|
|
382
|
+
}
|
|
383
|
+
}
|
|
384
|
+
function assertMinimumAmount(receivable, minAmount) {
|
|
385
|
+
if (BigInt(receivable.amount.toString()) < BigInt(minAmount.toString())) {
|
|
386
|
+
throw new Error('Input receivable amount is below Minimum Amount');
|
|
387
|
+
}
|
|
388
|
+
}
|
|
389
|
+
async function withTimeout(promise, timeoutMs, operationName) {
|
|
390
|
+
let timer;
|
|
391
|
+
try {
|
|
392
|
+
return await Promise.race([
|
|
393
|
+
promise,
|
|
394
|
+
new Promise((_resolve, reject) => {
|
|
395
|
+
timer = setTimeout(() => reject(new Error(`${operationName} timed out after ${timeoutMs}ms`)), timeoutMs);
|
|
396
|
+
}),
|
|
397
|
+
]);
|
|
398
|
+
}
|
|
399
|
+
finally {
|
|
400
|
+
if (timer)
|
|
401
|
+
clearTimeout(timer);
|
|
402
|
+
}
|
|
403
|
+
}
|
|
404
|
+
function heightSearch(addresses, parameters) {
|
|
405
|
+
const fromHeight = parseRequiredHeight(parameters.fromHeight, 'From Height');
|
|
406
|
+
const toHeight = parseOptionalHeight(parameters.toHeight, 'To Height');
|
|
407
|
+
const searches = addresses.map((address) => new commons_node_1.AccountHeightSearch(address, fromHeight, toHeight));
|
|
408
|
+
return commons_node_1.HeightSearch.Companion.fromArray(searches);
|
|
409
|
+
}
|
|
410
|
+
async function collectReceivables(node, parameters, credentials) {
|
|
411
|
+
const addresses = await addressesFromSource(parameters, credentials);
|
|
412
|
+
const minAmount = parseOptionalAmount(parameters.minAmount, parameters.minAmountUnit ?? 'RAW', 'Minimum Amount');
|
|
413
|
+
const options = streamOptions(parameters);
|
|
414
|
+
const receivables = await collectStream((onItem, onCancel) => node.onReceivableByAddresses(addresses, minAmount, onItem, onCancel), options);
|
|
415
|
+
return receivables.map(receivableOutput);
|
|
416
|
+
}
|
|
417
|
+
async function collectTransactionsForMode(node, parameters, credentials) {
|
|
418
|
+
const mode = parseQueryMode(parameters.queryMode);
|
|
419
|
+
if (mode === 'hash') {
|
|
420
|
+
const transaction = await node.transaction(parseHash(parameters.hash, 'Hash'));
|
|
421
|
+
return [transactionOutput(transaction)];
|
|
422
|
+
}
|
|
423
|
+
const addresses = mode === 'credentials' ? [await addressForCredentials(credentials)] : mode === 'manual' ? parseAddressList(parameters.addresses ?? parameters.address, 'Address') : undefined;
|
|
424
|
+
const fromHeight = parseOptionalHeight(parameters.fromHeight, 'From Height');
|
|
425
|
+
const toHeight = parseOptionalHeight(parameters.toHeight, 'To Height');
|
|
426
|
+
const options = streamOptions(parameters);
|
|
427
|
+
const transactions = await collectStream((onItem, onCancel) => subscribeToTransactionAddresses(node, addresses, fromHeight, toHeight, parameters, onItem, onCancel), options);
|
|
428
|
+
return transactions.map((transaction) => transactionOutput(transaction));
|
|
429
|
+
}
|
|
430
|
+
async function collectAccountEntries(node, parameters, credentials) {
|
|
431
|
+
const mode = parseQueryMode(parameters.queryMode);
|
|
432
|
+
if (mode === 'hash') {
|
|
433
|
+
const accountEntry = await node.accountEntry(parseHash(parameters.hash, 'Hash'));
|
|
434
|
+
return [accountEntryOutput(accountEntry)];
|
|
435
|
+
}
|
|
436
|
+
const addresses = mode === 'credentials' ? [await addressForCredentials(credentials)] : mode === 'manual' ? parseAddressList(parameters.addresses ?? parameters.address, 'Address') : undefined;
|
|
437
|
+
const fromHeight = parseOptionalHeight(parameters.fromHeight, 'From Height');
|
|
438
|
+
const toHeight = parseOptionalHeight(parameters.toHeight, 'To Height');
|
|
439
|
+
const options = streamOptions(parameters);
|
|
440
|
+
const accountEntries = await collectStream((onItem, onCancel) => subscribeToAccountEntryAddresses(node, addresses, fromHeight, toHeight, parameters, onItem, onCancel), options);
|
|
441
|
+
return accountEntries.map((accountEntry) => accountEntryOutput(accountEntry));
|
|
442
|
+
}
|
|
443
|
+
function subscribeToTransactionAddresses(node, addresses, fromHeight, toHeight, parameters, onItem, onCancel) {
|
|
444
|
+
if (!addresses)
|
|
445
|
+
return node.onTransactionAll(onItem, onCancel);
|
|
446
|
+
if (addresses.length === 1) {
|
|
447
|
+
return node.onTransactionByPublicKey(addresses[0].publicKey, fromHeight, toHeight, onItem, onCancel);
|
|
448
|
+
}
|
|
449
|
+
return node.onTransactionByHeightSearch(heightSearch(addresses, parameters), onItem, onCancel);
|
|
450
|
+
}
|
|
451
|
+
function subscribeToAccountEntryAddresses(node, addresses, fromHeight, toHeight, parameters, onItem, onCancel) {
|
|
452
|
+
if (!addresses)
|
|
453
|
+
return node.onAccountEntryAll(onItem, onCancel);
|
|
454
|
+
if (addresses.length === 1) {
|
|
455
|
+
return node.onAccountEntryByPublicKey(addresses[0].publicKey, fromHeight, toHeight, onItem, onCancel);
|
|
456
|
+
}
|
|
457
|
+
return node.onAccountEntryByHeightSearch(heightSearch(addresses, parameters), onItem, onCancel);
|
|
458
|
+
}
|
|
459
|
+
async function executeAttoOperation(operation, parameters, credentials) {
|
|
460
|
+
const attoCredentials = normalizeCredentials(credentials);
|
|
461
|
+
if (operation === 'deriveAddress' || operation === 'deriveAccount') {
|
|
462
|
+
const derived = await deriveAddressFromSecret(parameters, credentials);
|
|
463
|
+
return {
|
|
464
|
+
address: derived.address.value,
|
|
465
|
+
publicKey: derived.publicKey.toString(),
|
|
466
|
+
keyIndex: derived.keyIndex,
|
|
467
|
+
secretType: derived.secretType,
|
|
468
|
+
};
|
|
469
|
+
}
|
|
470
|
+
if (operation === 'getAccount') {
|
|
471
|
+
const node = createNodeClient(attoCredentials);
|
|
472
|
+
const address = parseAddress(parameters.address ?? parameters.lookupAddress, 'Address');
|
|
473
|
+
const account = await node.accountByPublicKey(address.publicKey);
|
|
474
|
+
if (!account) {
|
|
475
|
+
return {
|
|
476
|
+
found: false,
|
|
477
|
+
address: address.value,
|
|
478
|
+
};
|
|
479
|
+
}
|
|
480
|
+
return accountOutput(account);
|
|
481
|
+
}
|
|
482
|
+
if (operation === 'getReceivables') {
|
|
483
|
+
const node = createNodeClient(attoCredentials);
|
|
484
|
+
return await collectReceivables(node, parameters, attoCredentials);
|
|
485
|
+
}
|
|
486
|
+
if (operation === 'getTransactions') {
|
|
487
|
+
const node = createNodeClient(attoCredentials);
|
|
488
|
+
return await collectTransactionsForMode(node, parameters, attoCredentials);
|
|
489
|
+
}
|
|
490
|
+
if (operation === 'getAccountEntries') {
|
|
491
|
+
const node = createNodeClient(attoCredentials);
|
|
492
|
+
return await collectAccountEntries(node, parameters, attoCredentials);
|
|
493
|
+
}
|
|
494
|
+
if (operation === 'sendTransaction') {
|
|
495
|
+
const destinationAddress = parseAddress(parameters.destinationAddress, 'Destination Address');
|
|
496
|
+
const amount = parseAmount(parameters.amount, parameters.amountUnit, 'Amount');
|
|
497
|
+
const timeoutMs = positiveTimeout(parameters.timeoutMs ?? DEFAULT_PUBLISH_TIMEOUT_MS, 'Timeout');
|
|
498
|
+
const runtime = await createWalletRuntime(parameters, attoCredentials);
|
|
499
|
+
assertOptionalSameAddress(runtime.derived.address, parseOptionalAddress(parameters.fromAddress, 'From Address'), 'From Address');
|
|
500
|
+
const transaction = await withTimeout(Promise.resolve(runtime.wallet.sendByAddress(runtime.derived.address, destinationAddress, amount, null)), timeoutMs, 'Send transaction');
|
|
501
|
+
return {
|
|
502
|
+
...transactionOutput(transaction, 'published'),
|
|
503
|
+
fromAddress: runtime.derived.address.value,
|
|
504
|
+
destinationAddress: destinationAddress.value,
|
|
505
|
+
amount: amountOutput(amount),
|
|
506
|
+
};
|
|
507
|
+
}
|
|
508
|
+
if (operation === 'receivePending') {
|
|
509
|
+
const minAmount = parseAmount(parameters.minAmount ?? '1', parameters.minAmountUnit ?? 'RAW', 'Minimum Amount');
|
|
510
|
+
const timeoutMs = positiveTimeout(parameters.timeoutMs ?? DEFAULT_PUBLISH_TIMEOUT_MS, 'Timeout');
|
|
511
|
+
const receivableSource = parseReceivableSource(parameters.receivableSource);
|
|
512
|
+
const requestedRepresentative = parseOptionalAddress(parameters.receiveRepresentativeAddress ?? parameters.representativeAddress, 'Representative Address');
|
|
513
|
+
const runtime = await createWalletRuntime(parameters, attoCredentials);
|
|
514
|
+
assertOptionalSameAddress(runtime.derived.address, parseOptionalAddress(parameters.receiveAddress, 'Address'), 'Address');
|
|
515
|
+
const receivable = receivableSource === 'input'
|
|
516
|
+
? parseInputReceivable(parameters)
|
|
517
|
+
: await firstReceivable(runtime.node, runtime.derived.address, minAmount, timeoutMs);
|
|
518
|
+
assertSameAddress(runtime.derived.address, receivable.receiverAddress, 'Receivable Address');
|
|
519
|
+
assertMinimumAmount(receivable, minAmount);
|
|
520
|
+
const representative = requestedRepresentative ?? runtime.derived.address;
|
|
521
|
+
const transaction = await withTimeout(Promise.resolve(runtime.wallet.receive(receivable, representative, null)), timeoutMs, 'Receive transaction');
|
|
522
|
+
return {
|
|
523
|
+
...transactionOutput(transaction, 'received'),
|
|
524
|
+
address: runtime.derived.address.value,
|
|
525
|
+
representativeAddress: representative.value,
|
|
526
|
+
amount: amountOutput(receivable.amount),
|
|
527
|
+
receivable: parseJsonObject((0, commons_node_1.receivableToJson)(receivable)),
|
|
528
|
+
};
|
|
529
|
+
}
|
|
530
|
+
if (operation === 'changeRepresentative') {
|
|
531
|
+
const representativeAddress = parseAddress(parameters.representativeAddress, 'Representative Address');
|
|
532
|
+
const runtime = await createWalletRuntime(parameters, attoCredentials);
|
|
533
|
+
assertOptionalSameAddress(runtime.derived.address, parseOptionalAddress(parameters.changeAddress, 'Address'), 'Address');
|
|
534
|
+
const transaction = await runtime.wallet.change((0, commons_core_1.toAttoIndex)(runtime.derived.keyIndex), representativeAddress, null);
|
|
535
|
+
return {
|
|
536
|
+
...transactionOutput(transaction, 'representative_changed'),
|
|
537
|
+
address: runtime.derived.address.value,
|
|
538
|
+
representativeAddress: representativeAddress.value,
|
|
539
|
+
};
|
|
540
|
+
}
|
|
541
|
+
throw new Error(`Unsupported Atto operation: ${operation}`);
|
|
542
|
+
}
|
|
543
|
+
async function createAttoTriggerSubscription(event, parameters, credentials, emit, emitError) {
|
|
544
|
+
const attoCredentials = normalizeCredentials(credentials);
|
|
545
|
+
const node = createNodeClient(attoCredentials);
|
|
546
|
+
let closing = false;
|
|
547
|
+
const onCancel = (error) => {
|
|
548
|
+
if (closing || !error)
|
|
549
|
+
return;
|
|
550
|
+
emitError(errorFromUnknown(error, 'Atto trigger stream stopped'));
|
|
551
|
+
};
|
|
552
|
+
const closeJob = (job) => {
|
|
553
|
+
closing = true;
|
|
554
|
+
cancelJob(job);
|
|
555
|
+
};
|
|
556
|
+
if (event === 'receivable') {
|
|
557
|
+
const addresses = await addressesFromSource(parameters, attoCredentials);
|
|
558
|
+
const minAmount = parseOptionalAmount(parameters.minAmount, parameters.minAmountUnit ?? 'RAW', 'Minimum Amount');
|
|
559
|
+
const job = node.onReceivableByAddresses(addresses, minAmount, (receivable) => emit(receivableOutput(receivable)), onCancel);
|
|
560
|
+
return { close: () => closeJob(job) };
|
|
561
|
+
}
|
|
562
|
+
if (event === 'account') {
|
|
563
|
+
const addresses = await addressesFromSource(parameters, attoCredentials, true);
|
|
564
|
+
const job = addresses
|
|
565
|
+
? node.onAccountByAddresses(addresses, (account) => emit(accountOutput(account)), onCancel)
|
|
566
|
+
: node.onAccountAll((account) => emit(accountOutput(account)), onCancel);
|
|
567
|
+
return { close: () => closeJob(job) };
|
|
568
|
+
}
|
|
569
|
+
if (event === 'transaction') {
|
|
570
|
+
const mode = parseQueryMode(parameters.queryMode);
|
|
571
|
+
const hash = mode === 'hash' ? parseHash(parameters.hash, 'Hash') : undefined;
|
|
572
|
+
const addresses = mode === 'credentials' ? [await addressForCredentials(attoCredentials)] : mode === 'manual' ? parseAddressList(parameters.addresses ?? parameters.address, 'Address') : undefined;
|
|
573
|
+
const fromHeight = parseOptionalHeight(parameters.fromHeight, 'From Height');
|
|
574
|
+
const toHeight = parseOptionalHeight(parameters.toHeight, 'To Height');
|
|
575
|
+
const job = hash
|
|
576
|
+
? node.onTransactionByHash(hash, (transaction) => emit(transactionOutput(transaction)), onCancel)
|
|
577
|
+
: subscribeToTransactionAddresses(node, addresses, fromHeight, toHeight, parameters, (transaction) => emit(transactionOutput(transaction)), onCancel);
|
|
578
|
+
return { close: () => closeJob(job) };
|
|
579
|
+
}
|
|
580
|
+
if (event === 'accountEntry') {
|
|
581
|
+
const mode = parseQueryMode(parameters.queryMode);
|
|
582
|
+
const hash = mode === 'hash' ? parseHash(parameters.hash, 'Hash') : undefined;
|
|
583
|
+
const addresses = mode === 'credentials' ? [await addressForCredentials(attoCredentials)] : mode === 'manual' ? parseAddressList(parameters.addresses ?? parameters.address, 'Address') : undefined;
|
|
584
|
+
const fromHeight = parseOptionalHeight(parameters.fromHeight, 'From Height');
|
|
585
|
+
const toHeight = parseOptionalHeight(parameters.toHeight, 'To Height');
|
|
586
|
+
const job = hash
|
|
587
|
+
? node.onAccountEntryByHash(hash, (accountEntry) => emit(accountEntryOutput(accountEntry)), onCancel)
|
|
588
|
+
: subscribeToAccountEntryAddresses(node, addresses, fromHeight, toHeight, parameters, (accountEntry) => emit(accountEntryOutput(accountEntry)), onCancel);
|
|
589
|
+
return { close: () => closeJob(job) };
|
|
590
|
+
}
|
|
591
|
+
throw new Error(`Unsupported Atto trigger event: ${event}`);
|
|
592
|
+
}
|
|
593
|
+
//# sourceMappingURL=operations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"operations.js","sourceRoot":"","sources":["../../../nodes/Atto/operations.ts"],"names":[],"mappings":";;;AA+JA,0DAmCC;AA8BD,4CAGC;AA4cD,oDA8HC;AAED,sEAkGC;AA94BD,yDAmBgC;AAChC,yDAQgC;AAChC,uEAAqG;AACrG,6DAAkE;AAClE,2EAAyE;AAwBzE,MAAM,yBAAyB,GAAG,IAAI,CAAC;AACvC,MAAM,0BAA0B,GAAG,KAAK,CAAC;AAiCzC,SAAS,oBAAoB,CAAC,WAAuD;IACpF,OAAO,CAAC,WAAW,IAAI,EAAE,CAAoB,CAAC;AAC/C,CAAC;AAED,SAAS,IAAI,CAAC,KAAc;IAC3B,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AACtD,CAAC;AAED,SAAS,YAAY,CAAC,KAAc;IACnC,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;IAC/B,OAAO,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;AAC5C,CAAC;AAED,SAAS,eAAe,CAAC,KAAc,EAAE,SAAiB;IACzD,MAAM,WAAW,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAEtE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;QACvD,MAAM,IAAI,KAAK,CAAC,GAAG,SAAS,iCAAiC,CAAC,CAAC;IAChE,CAAC;IAED,OAAO,WAAW,CAAC;AACpB,CAAC;AAED,SAAS,eAAe,CAAC,KAAc,EAAE,SAAiB;IACzD,MAAM,SAAS,GAAG,eAAe,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IACpD,IAAI,SAAS,GAAG,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,GAAG,SAAS,4BAA4B,CAAC,CAAC;IAC7E,OAAO,SAAS,CAAC;AAClB,CAAC;AAED,SAAS,qBAAqB,CAAC,KAAc;IAC5C,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,IAAI,OAAO,CAAC,CAAC;IACtC,IAAI,MAAM,KAAK,OAAO,IAAI,MAAM,KAAK,MAAM;QAAE,OAAO,MAAM,CAAC;IAC3D,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;AAC5D,CAAC;AAED,SAAS,eAAe,CAAC,KAAc,EAAE,SAAiB;IACzD,IAAI,KAAK,KAAK,UAAU,IAAI,KAAK,KAAK,YAAY;QAAE,OAAO,KAAK,CAAC;IACjE,MAAM,IAAI,KAAK,CAAC,GAAG,SAAS,wCAAwC,CAAC,CAAC;AACvE,CAAC;AAED,SAAS,WAAW,CACnB,UAA0B,EAC1B,WAA4B;IAE5B,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,YAAY,IAAI,aAAa,CAAC,CAAC;IAE9D,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QACvB,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;QACnD,IAAI,CAAC,YAAY;YAAE,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;QAEhE,OAAO;YACN,UAAU,EAAE,eAAe,CAAC,UAAU,CAAC,gBAAgB,IAAI,UAAU,EAAE,oBAAoB,CAAC;YAC5F,YAAY;YACZ,QAAQ,EAAE,eAAe,CAAC,UAAU,CAAC,QAAQ,IAAI,CAAC,EAAE,WAAW,CAAC;SAChE,CAAC;IACH,CAAC;IAED,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;IACpD,IAAI,CAAC,YAAY;QAAE,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;IAEpF,OAAO;QACN,UAAU,EAAE,eAAe,CAAC,WAAW,CAAC,kBAAkB,IAAI,UAAU,EAAE,+BAA+B,CAAC;QAC1G,YAAY;QACZ,QAAQ,EAAE,eAAe,CAAC,WAAW,CAAC,QAAQ,IAAI,CAAC,EAAE,sBAAsB,CAAC;KAC5E,CAAC;AACH,CAAC;AAEM,KAAK,UAAU,uBAAuB,CAC5C,UAA0B,EAC1B,WAA4C;IAE5C,MAAM,KAAK,GAAG,WAAW,CAAC,UAAU,EAAE,oBAAoB,CAAC,WAAW,CAAC,CAAC,CAAC;IACzE,MAAM,KAAK,GAAG,IAAA,0BAAW,EAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAE1C,IAAI,KAAK,CAAC,UAAU,KAAK,UAAU,EAAE,CAAC;QACrC,MAAM,QAAQ,GAAG,2BAAY,CAAC,UAAU,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QAC7D,MAAM,IAAI,GAAG,MAAM,IAAA,0BAAW,EAAC,QAAQ,CAAC,CAAC;QACzC,MAAM,UAAU,GAAG,IAAA,2BAAY,EAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC7C,MAAM,SAAS,GAAG,IAAA,0BAAW,EAAC,UAAU,CAAC,CAAC;QAC1C,MAAM,OAAO,GAAG,IAAI,0BAAW,CAAC,4BAAa,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;QAE7D,OAAO;YACN,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,UAAU;YACV,SAAS;YACT,OAAO;YACP,IAAI;SACJ,CAAC;IACH,CAAC;IAED,MAAM,UAAU,GAAG,6BAAc,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IACtE,MAAM,SAAS,GAAG,IAAA,0BAAW,EAAC,UAAU,CAAC,CAAC;IAC1C,MAAM,OAAO,GAAG,IAAI,0BAAW,CAAC,4BAAa,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;IAE7D,OAAO;QACN,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,UAAU;QACV,SAAS;QACT,OAAO;KACP,CAAC;AACH,CAAC;AAEY,QAAA,uBAAuB,GAAG,uBAAuB,CAAC;AAE/D,SAAS,cAAc,CAAC,WAA4B;IACnD,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IAC1C,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;IAC/E,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AACpC,CAAC;AAED,SAAS,gBAAgB,CAAC,WAA4B;IACrD,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;IAC9C,IAAI,CAAC,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;IACnF,OAAO,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AACtC,CAAC;AAED,SAAS,YAAY,CACpB,OAAU,EACV,WAA4B;IAE5B,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IACxC,IAAI,CAAC,MAAM;QAAE,OAAO,OAAO,CAAC;IAE5B,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,cAAc,IAAI,eAAe,CAAC,CAAC;IACnE,IAAI,CAAC,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;IAE/E,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC;IAClD,OAAO,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,MAAM,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;AACxE,CAAC;AAED,SAAgB,gBAAgB,CAAC,WAAyE;IACzG,MAAM,eAAe,GAAG,oBAAoB,CAAC,WAAyD,CAAC,CAAC;IACxG,OAAO,YAAY,CAAC,IAAI,gDAA0B,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC,KAAK,EAAE,CAAC;AAC/G,CAAC;AAED,KAAK,UAAU,mBAAmB,CACjC,UAA0B,EAC1B,WAA4B;IAM5B,MAAM,OAAO,GAAG,MAAM,uBAAuB,CAAC,UAAU,EAAE,WAA6C,CAAC,CAAC;IACzG,MAAM,IAAI,GAAG,gBAAgB,CAAC,WAAW,CAAC,CAAC;IAC3C,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,8CAAsB,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC,EAAE,WAAW,CAAC;SACjG,MAAM,CAAC,IAAI,CAAC;SACZ,KAAK,EAAE,CAAC;IAEV,MAAM,OAAO,GAAG,IAAI,uCAAsB,CAAC,IAAa,EAAE,MAAe,CAAC,CAAC;IAC3E,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QAClB,OAAO,CAAC,kBAAkB,CAAC,OAAO,CAAC,IAAa,CAAC,CAAC;IACnD,CAAC;SAAM,CAAC;QACP,OAAO,CAAC,sBAAsB,CAAC;YAC9B,GAAG,EAAE,KAAK,IAAI,EAAE,CAAC,IAAA,iCAAkB,EAAC,OAAO,CAAC,UAAU,CAAU;SACvD,CAAC,CAAC;IACb,CAAC;IAED,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;IAC/B,MAAM,MAAM,CAAC,WAAW,CAAC,IAAA,0BAAW,EAAC,OAAO,CAAC,QAAQ,CAAU,CAAC,CAAC;IAEjE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;AAClC,CAAC;AAED,SAAS,YAAY,CAAC,KAAc,EAAE,SAAiB;IACtD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;IACxB,IAAI,CAAC,GAAG;QAAE,MAAM,IAAI,KAAK,CAAC,GAAG,SAAS,cAAc,CAAC,CAAC;IAEtD,IAAI,CAAC;QACJ,OAAO,0BAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC/B,CAAC;IAAC,MAAM,CAAC;QACR,MAAM,IAAI,KAAK,CAAC,GAAG,SAAS,+BAA+B,CAAC,CAAC;IAC9D,CAAC;AACF,CAAC;AAED,SAAS,oBAAoB,CAAC,KAAc,EAAE,SAAiB;IAC9D,MAAM,GAAG,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;IAChC,OAAO,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACvD,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAc,EAAE,SAAiB;IAC1D,MAAM,GAAG,GACR,OAAO,KAAK,KAAK,QAAQ;QACxB,CAAC,CAAC,KAAK;QACP,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;YACrB,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;YAClB,CAAC,CAAC,EAAE,CAAC;IACR,MAAM,SAAS,GAAG,GAAG;SACnB,KAAK,CAAC,QAAQ,CAAC;SACf,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;SAChC,MAAM,CAAC,OAAO,CAAC;SACf,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC;IAErD,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,GAAG,SAAS,cAAc,CAAC,CAAC;IACxE,OAAO,SAAS,CAAC;AAClB,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAc,EAAE,QAAiB;IAC5D,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,IAAI,aAAa,CAAC,CAAC;IAC5C,IAAI,MAAM,KAAK,aAAa,IAAI,MAAM,KAAK,QAAQ;QAAE,OAAO,MAAM,CAAC;IACnE,IAAI,QAAQ,IAAI,MAAM,KAAK,KAAK;QAAE,OAAO,MAAM,CAAC;IAChD,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;AACvE,CAAC;AAED,SAAS,cAAc,CAAC,KAAc;IACrC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,IAAI,aAAa,CAAC,CAAC;IAC1C,IAAI,IAAI,KAAK,aAAa,IAAI,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,MAAM;QAAE,OAAO,IAAI,CAAC;IAClG,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;AACzE,CAAC;AAED,KAAK,UAAU,mBAAmB,CACjC,UAA0B,EAC1B,WAA4B,EAC5B,QAAQ,GAAG,KAAK;IAEhB,MAAM,MAAM,GAAG,kBAAkB,CAAC,UAAU,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;IACtE,IAAI,MAAM,KAAK,KAAK;QAAE,OAAO,SAAS,CAAC;IACvC,IAAI,MAAM,KAAK,QAAQ;QAAE,OAAO,gBAAgB,CAAC,UAAU,CAAC,SAAS,IAAI,UAAU,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IAExG,MAAM,OAAO,GAAG,MAAM,uBAAuB,CAAC,EAAE,YAAY,EAAE,aAAa,EAAE,EAAE,WAA6C,CAAC,CAAC;IAC9H,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AAC1B,CAAC;AAED,KAAK,UAAU,qBAAqB,CAAC,WAA4B;IAChE,MAAM,OAAO,GAAG,MAAM,uBAAuB,CAAC,EAAE,YAAY,EAAE,aAAa,EAAE,EAAE,WAA6C,CAAC,CAAC;IAC9H,OAAO,OAAO,CAAC,OAAO,CAAC;AACxB,CAAC;AAED,SAAS,WAAW,CAAC,MAAe,EAAE,IAAa,EAAE,SAAiB;IACrE,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;IACzB,IAAI,CAAC,GAAG;QAAE,MAAM,IAAI,KAAK,CAAC,GAAG,SAAS,cAAc,CAAC,CAAC;IAEtD,IAAI,CAAC;QACJ,MAAM,WAAW,GAChB,IAAI,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,KAAK,KAAK;YACjC,CAAC,CAAC,yBAAU,CAAC,IAAI,CAAC,uBAAQ,CAAC,GAAG,EAAE,GAAG,CAAC;YACpC,CAAC,CAAC,yBAAU,CAAC,IAAI,CAAC,uBAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAExC,IAAI,WAAW,CAAC,QAAQ,EAAE,KAAK,GAAG,EAAE,CAAC;YACpC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC;QACzB,CAAC;QAED,OAAO,WAAW,CAAC;IACpB,CAAC;IAAC,MAAM,CAAC;QACR,MAAM,IAAI,KAAK,CAAC,GAAG,SAAS,iCAAiC,CAAC,CAAC;IAChE,CAAC;AACF,CAAC;AAED,SAAS,mBAAmB,CAAC,MAAe,EAAE,IAAa,EAAE,SAAiB;IAC7E,MAAM,GAAG,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;IACjC,OAAO,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAC5D,CAAC;AAED,SAAS,SAAS,CAAC,KAAc,EAAE,SAAiB;IACnD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;IACxB,IAAI,CAAC,GAAG;QAAE,MAAM,IAAI,KAAK,CAAC,GAAG,SAAS,cAAc,CAAC,CAAC;IAEtD,IAAI,CAAC;QACJ,OAAO,uBAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACtC,CAAC;IAAC,MAAM,CAAC;QACR,MAAM,IAAI,KAAK,CAAC,GAAG,SAAS,4BAA4B,CAAC,CAAC;IAC3D,CAAC;AACF,CAAC;AAED,SAAS,mBAAmB,CAAC,KAAc,EAAE,SAAiB;IAC7D,MAAM,GAAG,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;IAChC,IAAI,CAAC,GAAG;QAAE,OAAO,SAAS,CAAC;IAE3B,IAAI,CAAC;QACJ,OAAO,IAAA,2BAAY,EAAC,GAAG,CAAC,CAAC;IAC1B,CAAC;IAAC,MAAM,CAAC;QACR,MAAM,IAAI,KAAK,CAAC,GAAG,SAAS,8BAA8B,CAAC,CAAC;IAC7D,CAAC;AACF,CAAC;AAED,SAAS,mBAAmB,CAAC,KAAc,EAAE,SAAiB;IAC7D,OAAO,mBAAmB,CAAC,KAAK,EAAE,SAAS,CAAC,IAAI,IAAA,2BAAY,EAAC,GAAG,CAAC,CAAC;AACnE,CAAC;AAED,SAAS,iBAAiB,CAAC,QAAqB,EAAE,MAAmB,EAAE,SAAiB;IACvF,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,GAAG,SAAS,wDAAwD,CAAC,CAAC;IACvF,CAAC;AACF,CAAC;AAED,SAAS,yBAAyB,CAAC,QAAqB,EAAE,MAA+B,EAAE,SAAiB;IAC3G,IAAI,MAAM;QAAE,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;AAC5D,CAAC;AAED,SAAS,eAAe,CAAC,KAAa;IACrC,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAgB,CAAC;AACzC,CAAC;AAED,SAAS,YAAY,CAAC,MAAkB;IACvC,OAAO;QACN,GAAG,EAAE,MAAM,CAAC,QAAQ,EAAE;QACtB,IAAI,EAAE,MAAM,CAAC,iBAAiB,CAAC,uBAAQ,CAAC,IAAI,CAAC;KAC7C,CAAC;AACH,CAAC;AAED,SAAS,aAAa,CAAC,OAAoB;IAC1C,OAAO;QACN,KAAK,EAAE,IAAI;QACX,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK;QAC9B,SAAS,EAAE,OAAO,CAAC,SAAS,CAAC,QAAQ,EAAE;QACvC,OAAO,EAAE,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC;QACtC,qBAAqB,EAAE,OAAO,CAAC,qBAAqB,CAAC,KAAK;QAC1D,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE;QACjC,QAAQ,EAAE,OAAO,CAAC,mBAAmB,CAAC,QAAQ,EAAE;QAChD,OAAO,EAAE,eAAe,CAAC,IAAA,4BAAa,EAAC,OAAgB,CAAC,CAAC;KACzD,CAAC;AACH,CAAC;AAED,SAAS,gBAAgB,CAAC,UAA0B;IACnD,OAAO;QACN,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE;QAChC,OAAO,EAAE,UAAU,CAAC,eAAe,CAAC,KAAK;QACzC,WAAW,EAAE,UAAU,CAAC,OAAO,CAAC,KAAK;QACrC,MAAM,EAAE,YAAY,CAAC,UAAU,CAAC,MAAM,CAAC;QACvC,UAAU,EAAE,eAAe,CAAC,IAAA,+BAAgB,EAAC,UAAmB,CAAC,CAAC;KAClE,CAAC;AACH,CAAC;AAED,SAAS,iBAAiB,CAAC,WAA4B,EAAE,MAAe;IACvE,OAAO;QACN,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7B,IAAI,EAAE,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAE;QACjC,OAAO,EAAE,WAAW,CAAC,OAAO,CAAC,KAAK;QAClC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,QAAQ,EAAE;QACrC,WAAW,EAAE,eAAe,CAAC,IAAA,gCAAiB,EAAC,WAAoB,CAAC,CAAC;KACrE,CAAC;AACH,CAAC;AAED,SAAS,kBAAkB,CAAC,YAA8B;IACzD,OAAO;QACN,IAAI,EAAE,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE;QAClC,OAAO,EAAE,YAAY,CAAC,OAAO,CAAC,KAAK;QACnC,cAAc,EAAE,YAAY,CAAC,cAAc,CAAC,KAAK;QACjD,MAAM,EAAE,YAAY,CAAC,MAAM,CAAC,QAAQ,EAAE;QACtC,SAAS,EAAE,YAAY,CAAC,SAAS,CAAC,IAAI;QACtC,eAAe,EAAE,YAAY,CAAC,YAAY,CAAC,eAAe,CAAC;QAC3D,OAAO,EAAE,YAAY,CAAC,YAAY,CAAC,OAAO,CAAC;QAC3C,YAAY,EAAE,eAAe,CAAC,IAAA,iCAAkB,EAAC,YAAqB,CAAC,CAAC;KACxE,CAAC;AACH,CAAC;AAED,SAAS,aAAa,CAAC,UAA0B;IAChD,OAAO;QACN,QAAQ,EAAE,eAAe,CAAC,UAAU,CAAC,QAAQ,IAAI,EAAE,EAAE,WAAW,CAAC,IAAI,CAAC;QACtE,SAAS,EAAE,eAAe,CAAC,UAAU,CAAC,SAAS,IAAI,yBAAyB,EAAE,SAAS,CAAC;KACxF,CAAC;AACH,CAAC;AAED,SAAS,SAAS,CAAC,GAAwB;IAC1C,IAAI,CAAC;QACJ,GAAG,EAAE,MAAM,EAAE,EAAE,CAAC;QAChB,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC;IAChB,CAAC;IAAC,MAAM,CAAC;IAET,CAAC;AACF,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAc,EAAE,QAAgB;IACzD,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC;IACvC,IAAI,KAAK,YAAY,KAAK;QAAE,OAAO,KAAK,CAAC;IACzC,OAAO,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AACjC,CAAC;AAED,KAAK,UAAU,aAAa,CAAI,KAAuB,EAAE,OAAgD;IACxG,OAAO,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC5C,MAAM,KAAK,GAAQ,EAAE,CAAC;QACtB,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,MAAM,KAAK,GAAsB,EAAE,CAAC;QAEpC,MAAM,MAAM,GAAG,CAAC,KAAoB,EAAE,EAAE;YACvC,IAAI,OAAO;gBAAE,OAAO;YACpB,OAAO,GAAG,IAAI,CAAC;YACf,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAErB,IAAI,KAAK,EAAE,CAAC;gBACX,MAAM,CAAC,KAAK,CAAC,CAAC;gBACd,OAAO;YACR,CAAC;YAED,OAAO,CAAC,KAAK,CAAC,CAAC;QAChB,CAAC,CAAC;QAEF,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;QAE5D,KAAK,CAAC,GAAG,GAAG,KAAK,CAChB,CAAC,IAAI,EAAE,EAAE;YACR,IAAI,OAAO;gBAAE,OAAO;YACpB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACjB,IAAI,KAAK,CAAC,MAAM,IAAI,OAAO,CAAC,QAAQ;gBAAE,MAAM,EAAE,CAAC;QAChD,CAAC,EACD,CAAC,KAAK,EAAE,EAAE;YACT,IAAI,OAAO;gBAAE,OAAO;YACpB,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,gBAAgB,CAAC,KAAK,EAAE,qBAAqB,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAC5E,CAAC,CACD,CAAC;IACH,CAAC,CAAC,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,eAAe,CAC7B,IAAyB,EACzB,OAAoB,EACpB,SAAqB,EACrB,SAAiB;IAEjB,MAAM,CAAC,UAAU,CAAC,GAAG,MAAM,aAAa,CACvC,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,CACpB,IAAI,CAAC,uBAAuB,CAAC,CAAC,OAAO,CAAU,EAAE,SAAkB,EAAE,MAAe,EAAE,QAAiB,CAAY,EACpH,EAAE,QAAQ,EAAE,CAAC,EAAE,SAAS,EAAE,CAC1B,CAAC;IAEF,IAAI,CAAC,UAAU;QAAE,MAAM,IAAI,KAAK,CAAC,+CAA+C,SAAS,IAAI,CAAC,CAAC;IAC/F,OAAO,UAAU,CAAC;AACnB,CAAC;AAED,SAAS,SAAS,CAAC,UAA0B;IAC5C,MAAM,IAAI,GAAG,UAAU,CAAC,SAAS,CAAC;IAClC,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9D,MAAM,IAAI,KAAK,CAAC,kFAAkF,CAAC,CAAC;IACrG,CAAC;IAED,OAAO,IAAmB,CAAC;AAC5B,CAAC;AAED,SAAS,oBAAoB,CAAC,UAA0B;IACvD,MAAM,IAAI,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC;IACnC,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC;IACtC,MAAM,IAAI,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAEvE,IAAI,CAAC;QACJ,OAAO,IAAA,iCAAkB,EAAC,IAAI,CAAU,CAAC;IAC1C,CAAC;IAAC,MAAM,CAAC;QACR,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;IAC3E,CAAC;AACF,CAAC;AAED,SAAS,mBAAmB,CAAC,UAA0B,EAAE,SAAqB;IAC7E,IAAI,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC;QACzE,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;IACpE,CAAC;AACF,CAAC;AAED,KAAK,UAAU,WAAW,CAAI,OAAmB,EAAE,SAAiB,EAAE,aAAqB;IAC1F,IAAI,KAAgD,CAAC;IAErD,IAAI,CAAC;QACJ,OAAO,MAAM,OAAO,CAAC,IAAI,CAAC;YACzB,OAAO;YACP,IAAI,OAAO,CAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE;gBACvC,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,GAAG,aAAa,oBAAoB,SAAS,IAAI,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;YAC3G,CAAC,CAAC;SACF,CAAC,CAAC;IACJ,CAAC;YAAS,CAAC;QACV,IAAI,KAAK;YAAE,YAAY,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;AACF,CAAC;AAED,SAAS,YAAY,CAAC,SAAwB,EAAE,UAA0B;IACzE,MAAM,UAAU,GAAG,mBAAmB,CAAC,UAAU,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;IAC7E,MAAM,QAAQ,GAAG,mBAAmB,CAAC,UAAU,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;IACvE,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAG,CAC7B,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,kCAAmB,CAAC,OAAgB,EAAE,UAAmB,EAAE,QAAiB,CAAC,CAC9F,CAAC;IAEF,OAAO,2BAAY,CAAC,SAAS,CAAC,SAAS,CAAC,QAAiB,CAAC,CAAC;AAC5D,CAAC;AAED,KAAK,UAAU,kBAAkB,CAChC,IAAyB,EACzB,UAA0B,EAC1B,WAA4B;IAE5B,MAAM,SAAS,GAAG,MAAM,mBAAmB,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;IACrE,MAAM,SAAS,GAAG,mBAAmB,CAAC,UAAU,CAAC,SAAS,EAAE,UAAU,CAAC,aAAa,IAAI,KAAK,EAAE,gBAAgB,CAAC,CAAC;IACjH,MAAM,OAAO,GAAG,aAAa,CAAC,UAAU,CAAC,CAAC;IAC1C,MAAM,WAAW,GAAG,MAAM,aAAa,CACtC,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,CACpB,IAAI,CAAC,uBAAuB,CAAC,SAAkB,EAAE,SAAkB,EAAE,MAAe,EAAE,QAAiB,CAAY,EACpH,OAAO,CACP,CAAC;IAEF,OAAO,WAAW,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;AAC1C,CAAC;AAED,KAAK,UAAU,0BAA0B,CACxC,IAAyB,EACzB,UAA0B,EAC1B,WAA4B;IAE5B,MAAM,IAAI,GAAG,cAAc,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;IAElD,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;QACrB,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,CAAU,CAAC,CAAC;QACxF,OAAO,CAAC,iBAAiB,CAAC,WAAoB,CAAC,CAAC,CAAC;IAClD,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,KAAK,aAAa,CAAC,CAAC,CAAC,CAAC,MAAM,qBAAqB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,gBAAgB,CAAC,UAAU,CAAC,SAAS,IAAI,UAAU,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAChM,MAAM,UAAU,GAAG,mBAAmB,CAAC,UAAU,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;IAC7E,MAAM,QAAQ,GAAG,mBAAmB,CAAC,UAAU,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;IACvE,MAAM,OAAO,GAAG,aAAa,CAAC,UAAU,CAAC,CAAC;IAC1C,MAAM,YAAY,GAAG,MAAM,aAAa,CACvC,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,CACpB,+BAA+B,CAAC,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,CAAC,EACrG,OAAO,CACP,CAAC;IAEF,OAAO,YAAY,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC,CAAC;AAC1E,CAAC;AAED,KAAK,UAAU,qBAAqB,CACnC,IAAyB,EACzB,UAA0B,EAC1B,WAA4B;IAE5B,MAAM,IAAI,GAAG,cAAc,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;IAElD,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;QACrB,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,CAAU,CAAC,CAAC;QAC1F,OAAO,CAAC,kBAAkB,CAAC,YAAqB,CAAC,CAAC,CAAC;IACpD,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,KAAK,aAAa,CAAC,CAAC,CAAC,CAAC,MAAM,qBAAqB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,gBAAgB,CAAC,UAAU,CAAC,SAAS,IAAI,UAAU,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAChM,MAAM,UAAU,GAAG,mBAAmB,CAAC,UAAU,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;IAC7E,MAAM,QAAQ,GAAG,mBAAmB,CAAC,UAAU,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;IACvE,MAAM,OAAO,GAAG,aAAa,CAAC,UAAU,CAAC,CAAC;IAC1C,MAAM,cAAc,GAAG,MAAM,aAAa,CACzC,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,CACpB,gCAAgC,CAAC,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,CAAC,EACtG,OAAO,CACP,CAAC;IAEF,OAAO,cAAc,CAAC,GAAG,CAAC,CAAC,YAAY,EAAE,EAAE,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC,CAAC;AAC/E,CAAC;AAED,SAAS,+BAA+B,CACvC,IAAyB,EACzB,SAAoC,EACpC,UAAkC,EAClC,QAAgC,EAChC,UAA0B,EAC1B,MAAuC,EACvC,QAAwC;IAExC,IAAI,CAAC,SAAS;QAAE,OAAO,IAAI,CAAC,gBAAgB,CAAC,MAAe,EAAE,QAAiB,CAAY,CAAC;IAC5F,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO,IAAI,CAAC,wBAAwB,CACnC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAkB,EAC/B,UAAmB,EACnB,QAAiB,EACjB,MAAe,EACf,QAAiB,CACN,CAAC;IACd,CAAC;IAED,OAAO,IAAI,CAAC,2BAA2B,CACtC,YAAY,CAAC,SAAS,EAAE,UAAU,CAAU,EAC5C,MAAe,EACf,QAAiB,CACN,CAAC;AACd,CAAC;AAED,SAAS,gCAAgC,CACxC,IAAyB,EACzB,SAAoC,EACpC,UAAkC,EAClC,QAAgC,EAChC,UAA0B,EAC1B,MAAwC,EACxC,QAAwC;IAExC,IAAI,CAAC,SAAS;QAAE,OAAO,IAAI,CAAC,iBAAiB,CAAC,MAAe,EAAE,QAAiB,CAAY,CAAC;IAC7F,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO,IAAI,CAAC,yBAAyB,CACpC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAkB,EAC/B,UAAmB,EACnB,QAAiB,EACjB,MAAe,EACf,QAAiB,CACN,CAAC;IACd,CAAC;IAED,OAAO,IAAI,CAAC,4BAA4B,CACvC,YAAY,CAAC,SAAS,EAAE,UAAU,CAAU,EAC5C,MAAe,EACf,QAAiB,CACN,CAAC;AACd,CAAC;AAEM,KAAK,UAAU,oBAAoB,CACzC,SAAwB,EACxB,UAA0B,EAC1B,WAA4C;IAE5C,MAAM,eAAe,GAAG,oBAAoB,CAAC,WAAW,CAAC,CAAC;IAE1D,IAAI,SAAS,KAAK,eAAe,IAAI,SAAS,KAAK,eAAe,EAAE,CAAC;QACpE,MAAM,OAAO,GAAG,MAAM,uBAAuB,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;QACvE,OAAO;YACN,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK;YAC9B,SAAS,EAAE,OAAO,CAAC,SAAS,CAAC,QAAQ,EAAE;YACvC,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,UAAU,EAAE,OAAO,CAAC,UAAU;SAC9B,CAAC;IACH,CAAC;IAED,IAAI,SAAS,KAAK,YAAY,EAAE,CAAC;QAChC,MAAM,IAAI,GAAG,gBAAgB,CAAC,eAAe,CAAC,CAAC;QAC/C,MAAM,OAAO,GAAG,YAAY,CAAC,UAAU,CAAC,OAAO,IAAI,UAAU,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;QACxF,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,SAAkB,CAAC,CAAC;QAE1E,IAAI,CAAC,OAAO,EAAE,CAAC;YACd,OAAO;gBACN,KAAK,EAAE,KAAK;gBACZ,OAAO,EAAE,OAAO,CAAC,KAAK;aACtB,CAAC;QACH,CAAC;QAED,OAAO,aAAa,CAAC,OAAgB,CAAC,CAAC;IACxC,CAAC;IAED,IAAI,SAAS,KAAK,gBAAgB,EAAE,CAAC;QACpC,MAAM,IAAI,GAAG,gBAAgB,CAAC,eAAe,CAAC,CAAC;QAC/C,OAAO,MAAM,kBAAkB,CAAC,IAAI,EAAE,UAAU,EAAE,eAAe,CAAC,CAAC;IACpE,CAAC;IAED,IAAI,SAAS,KAAK,iBAAiB,EAAE,CAAC;QACrC,MAAM,IAAI,GAAG,gBAAgB,CAAC,eAAe,CAAC,CAAC;QAC/C,OAAO,MAAM,0BAA0B,CAAC,IAAI,EAAE,UAAU,EAAE,eAAe,CAAC,CAAC;IAC5E,CAAC;IAED,IAAI,SAAS,KAAK,mBAAmB,EAAE,CAAC;QACvC,MAAM,IAAI,GAAG,gBAAgB,CAAC,eAAe,CAAC,CAAC;QAC/C,OAAO,MAAM,qBAAqB,CAAC,IAAI,EAAE,UAAU,EAAE,eAAe,CAAC,CAAC;IACvE,CAAC;IAED,IAAI,SAAS,KAAK,iBAAiB,EAAE,CAAC;QACrC,MAAM,kBAAkB,GAAG,YAAY,CAAC,UAAU,CAAC,kBAAkB,EAAE,qBAAqB,CAAC,CAAC;QAC9F,MAAM,MAAM,GAAG,WAAW,CAAC,UAAU,CAAC,MAAM,EAAE,UAAU,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QAC/E,MAAM,SAAS,GAAG,eAAe,CAAC,UAAU,CAAC,SAAS,IAAI,0BAA0B,EAAE,SAAS,CAAC,CAAC;QACjG,MAAM,OAAO,GAAG,MAAM,mBAAmB,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC;QACvE,yBAAyB,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,oBAAoB,CAAC,UAAU,CAAC,WAAW,EAAE,cAAc,CAAC,EAAE,cAAc,CAAC,CAAC;QACjI,MAAM,WAAW,GAAG,MAAM,WAAW,CACpC,OAAO,CAAC,OAAO,CACd,OAAO,CAAC,MAAM,CAAC,aAAa,CAC3B,OAAO,CAAC,OAAO,CAAC,OAAgB,EAChC,kBAA2B,EAC3B,MAAe,EACf,IAAI,CACJ,CACD,EACD,SAAS,EACT,kBAAkB,CAClB,CAAC;QAEF,OAAO;YACN,GAAG,iBAAiB,CAAC,WAAoB,EAAE,WAAW,CAAC;YACvD,WAAW,EAAE,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK;YAC1C,kBAAkB,EAAE,kBAAkB,CAAC,KAAK;YAC5C,MAAM,EAAE,YAAY,CAAC,MAAM,CAAC;SAC5B,CAAC;IACH,CAAC;IAED,IAAI,SAAS,KAAK,gBAAgB,EAAE,CAAC;QACpC,MAAM,SAAS,GAAG,WAAW,CAAC,UAAU,CAAC,SAAS,IAAI,GAAG,EAAE,UAAU,CAAC,aAAa,IAAI,KAAK,EAAE,gBAAgB,CAAC,CAAC;QAChH,MAAM,SAAS,GAAG,eAAe,CAAC,UAAU,CAAC,SAAS,IAAI,0BAA0B,EAAE,SAAS,CAAC,CAAC;QACjG,MAAM,gBAAgB,GAAG,qBAAqB,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;QAC5E,MAAM,uBAAuB,GAAG,oBAAoB,CACnD,UAAU,CAAC,4BAA4B,IAAI,UAAU,CAAC,qBAAqB,EAC3E,wBAAwB,CACxB,CAAC;QACF,MAAM,OAAO,GAAG,MAAM,mBAAmB,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC;QACvE,yBAAyB,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,oBAAoB,CAAC,UAAU,CAAC,cAAc,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,CAAC;QAE1H,MAAM,UAAU,GACf,gBAAgB,KAAK,OAAO;YAC3B,CAAC,CAAC,oBAAoB,CAAC,UAAU,CAAC;YAClC,CAAC,CAAC,MAAM,eAAe,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;QACvF,iBAAiB,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,UAAU,CAAC,eAAe,EAAE,oBAAoB,CAAC,CAAC;QAC7F,mBAAmB,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;QAE3C,MAAM,cAAc,GAAG,uBAAuB,IAAI,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC;QAC1E,MAAM,WAAW,GAAG,MAAM,WAAW,CACpC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,UAAmB,EAAE,cAAuB,EAAE,IAAI,CAAC,CAAC,EAC3F,SAAS,EACT,qBAAqB,CACrB,CAAC;QAEF,OAAO;YACN,GAAG,iBAAiB,CAAC,WAAoB,EAAE,UAAU,CAAC;YACtD,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK;YACtC,qBAAqB,EAAE,cAAc,CAAC,KAAK;YAC3C,MAAM,EAAE,YAAY,CAAC,UAAU,CAAC,MAAM,CAAC;YACvC,UAAU,EAAE,eAAe,CAAC,IAAA,+BAAgB,EAAC,UAAmB,CAAC,CAAC;SAClE,CAAC;IACH,CAAC;IAED,IAAI,SAAS,KAAK,sBAAsB,EAAE,CAAC;QAC1C,MAAM,qBAAqB,GAAG,YAAY,CAAC,UAAU,CAAC,qBAAqB,EAAE,wBAAwB,CAAC,CAAC;QACvG,MAAM,OAAO,GAAG,MAAM,mBAAmB,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC;QACvE,yBAAyB,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,oBAAoB,CAAC,UAAU,CAAC,aAAa,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,CAAC;QACzH,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,MAAM,CAC9C,IAAA,0BAAW,EAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAU,EAC9C,qBAA8B,EAC9B,IAAI,CACJ,CAAC;QAEF,OAAO;YACN,GAAG,iBAAiB,CAAC,WAAoB,EAAE,wBAAwB,CAAC;YACpE,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK;YACtC,qBAAqB,EAAE,qBAAqB,CAAC,KAAK;SAClD,CAAC;IACH,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,+BAA+B,SAAS,EAAE,CAAC,CAAC;AAC7D,CAAC;AAEM,KAAK,UAAU,6BAA6B,CAClD,KAAuB,EACvB,UAA0B,EAC1B,WAAuD,EACvD,IAAiC,EACjC,SAAiC;IAEjC,MAAM,eAAe,GAAG,oBAAoB,CAAC,WAAW,CAAC,CAAC;IAC1D,MAAM,IAAI,GAAG,gBAAgB,CAAC,eAAe,CAAC,CAAC;IAC/C,IAAI,OAAO,GAAG,KAAK,CAAC;IAEpB,MAAM,QAAQ,GAAG,CAAC,KAAoB,EAAE,EAAE;QACzC,IAAI,OAAO,IAAI,CAAC,KAAK;YAAE,OAAO;QAC9B,SAAS,CAAC,gBAAgB,CAAC,KAAK,EAAE,6BAA6B,CAAC,CAAC,CAAC;IACnE,CAAC,CAAC;IAEF,MAAM,QAAQ,GAAG,CAAC,GAAY,EAAE,EAAE;QACjC,OAAO,GAAG,IAAI,CAAC;QACf,SAAS,CAAC,GAAG,CAAC,CAAC;IAChB,CAAC,CAAC;IAEF,IAAI,KAAK,KAAK,YAAY,EAAE,CAAC;QAC5B,MAAM,SAAS,GAAG,MAAM,mBAAmB,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC;QACzE,MAAM,SAAS,GAAG,mBAAmB,CAAC,UAAU,CAAC,SAAS,EAAE,UAAU,CAAC,aAAa,IAAI,KAAK,EAAE,gBAAgB,CAAC,CAAC;QACjH,MAAM,GAAG,GAAG,IAAI,CAAC,uBAAuB,CACvC,SAAkB,EAClB,SAAkB,EAClB,CAAC,UAAU,EAAE,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,UAAmB,CAAC,CAAC,EAC3D,QAAiB,CACN,CAAC;QAEb,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;IACvC,CAAC;IAED,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACzB,MAAM,SAAS,GAAG,MAAM,mBAAmB,CAAC,UAAU,EAAE,eAAe,EAAE,IAAI,CAAC,CAAC;QAC/E,MAAM,GAAG,GAAG,SAAS;YACpB,CAAC,CAAC,IAAI,CAAC,oBAAoB,CACzB,SAAkB,EAClB,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,OAAgB,CAAC,CAAC,EAClD,QAAiB,CACjB;YACF,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,OAAgB,CAAC,CAAC,EAAE,QAAiB,CAAC,CAAC;QAE5F,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,GAAc,CAAC,EAAE,CAAC;IAClD,CAAC;IAED,IAAI,KAAK,KAAK,aAAa,EAAE,CAAC;QAC7B,MAAM,IAAI,GAAG,cAAc,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QAClD,MAAM,IAAI,GAAG,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC9E,MAAM,SAAS,GAAG,IAAI,KAAK,aAAa,CAAC,CAAC,CAAC,CAAC,MAAM,qBAAqB,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,gBAAgB,CAAC,UAAU,CAAC,SAAS,IAAI,UAAU,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACpM,MAAM,UAAU,GAAG,mBAAmB,CAAC,UAAU,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;QAC7E,MAAM,QAAQ,GAAG,mBAAmB,CAAC,UAAU,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;QACvE,MAAM,GAAG,GAAG,IAAI;YACf,CAAC,CAAC,IAAI,CAAC,mBAAmB,CACxB,IAAa,EACb,CAAC,WAAW,EAAE,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,WAAoB,CAAC,CAAC,EAC9D,QAAiB,CACjB;YACF,CAAC,CAAC,+BAA+B,CAC/B,IAAI,EACJ,SAAS,EACT,UAAU,EACV,QAAQ,EACR,UAAU,EACV,CAAC,WAAW,EAAE,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC,EACrD,QAAQ,CACR,CAAC;QAEJ,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,GAAc,CAAC,EAAE,CAAC;IAClD,CAAC;IAED,IAAI,KAAK,KAAK,cAAc,EAAE,CAAC;QAC9B,MAAM,IAAI,GAAG,cAAc,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QAClD,MAAM,IAAI,GAAG,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC9E,MAAM,SAAS,GAAG,IAAI,KAAK,aAAa,CAAC,CAAC,CAAC,CAAC,MAAM,qBAAqB,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,gBAAgB,CAAC,UAAU,CAAC,SAAS,IAAI,UAAU,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACpM,MAAM,UAAU,GAAG,mBAAmB,CAAC,UAAU,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;QAC7E,MAAM,QAAQ,GAAG,mBAAmB,CAAC,UAAU,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;QACvE,MAAM,GAAG,GAAG,IAAI;YACf,CAAC,CAAC,IAAI,CAAC,oBAAoB,CACzB,IAAa,EACb,CAAC,YAAY,EAAE,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,YAAqB,CAAC,CAAC,EACjE,QAAiB,CACjB;YACF,CAAC,CAAC,gCAAgC,CAChC,IAAI,EACJ,SAAS,EACT,UAAU,EACV,QAAQ,EACR,UAAU,EACV,CAAC,YAAY,EAAE,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC,EACxD,QAAQ,CACR,CAAC;QAEJ,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,GAAc,CAAC,EAAE,CAAC;IAClD,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,mCAAmC,KAAK,EAAE,CAAC,CAAC;AAC7D,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { type INodeType, type INodeTypeDescription, type ITriggerFunctions, type ITriggerResponse } from 'n8n-workflow';
|
|
2
|
+
export declare class AttoTrigger implements INodeType {
|
|
3
|
+
description: INodeTypeDescription;
|
|
4
|
+
trigger(this: ITriggerFunctions): Promise<ITriggerResponse | undefined>;
|
|
5
|
+
}
|