genius-intents 0.1.4
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/CHANGELOG.md +45 -0
- package/LICENSE +21 -0
- package/README.md +376 -0
- package/dist/src/index.d.ts +27 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +62 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/intents-protocols.d.ts +69 -0
- package/dist/src/intents-protocols.d.ts.map +1 -0
- package/dist/src/intents-protocols.js +371 -0
- package/dist/src/intents-protocols.js.map +1 -0
- package/dist/src/interfaces/intent-protocol.d.ts +21 -0
- package/dist/src/interfaces/intent-protocol.d.ts.map +1 -0
- package/dist/src/interfaces/intent-protocol.js +3 -0
- package/dist/src/interfaces/intent-protocol.js.map +1 -0
- package/dist/src/protocols/aftermath/aftermath.service.d.ts +28 -0
- package/dist/src/protocols/aftermath/aftermath.service.d.ts.map +1 -0
- package/dist/src/protocols/aftermath/aftermath.service.js +162 -0
- package/dist/src/protocols/aftermath/aftermath.service.js.map +1 -0
- package/dist/src/protocols/aftermath/aftermath.types.d.ts +100 -0
- package/dist/src/protocols/aftermath/aftermath.types.d.ts.map +1 -0
- package/dist/src/protocols/aftermath/aftermath.types.js +3 -0
- package/dist/src/protocols/aftermath/aftermath.types.js.map +1 -0
- package/dist/src/protocols/aftermath/index.d.ts +3 -0
- package/dist/src/protocols/aftermath/index.d.ts.map +1 -0
- package/dist/src/protocols/aftermath/index.js +7 -0
- package/dist/src/protocols/aftermath/index.js.map +1 -0
- package/dist/src/protocols/debridge/debridge.service.d.ts +157 -0
- package/dist/src/protocols/debridge/debridge.service.d.ts.map +1 -0
- package/dist/src/protocols/debridge/debridge.service.js +462 -0
- package/dist/src/protocols/debridge/debridge.service.js.map +1 -0
- package/dist/src/protocols/debridge/debridge.types.d.ts +82 -0
- package/dist/src/protocols/debridge/debridge.types.d.ts.map +1 -0
- package/dist/src/protocols/debridge/debridge.types.js +3 -0
- package/dist/src/protocols/debridge/debridge.types.js.map +1 -0
- package/dist/src/protocols/debridge/index.d.ts +3 -0
- package/dist/src/protocols/debridge/index.d.ts.map +1 -0
- package/dist/src/protocols/debridge/index.js +7 -0
- package/dist/src/protocols/debridge/index.js.map +1 -0
- package/dist/src/protocols/genius-bridge/genius-bridge.service.d.ts +36 -0
- package/dist/src/protocols/genius-bridge/genius-bridge.service.d.ts.map +1 -0
- package/dist/src/protocols/genius-bridge/genius-bridge.service.js +312 -0
- package/dist/src/protocols/genius-bridge/genius-bridge.service.js.map +1 -0
- package/dist/src/protocols/genius-bridge/genius-bridge.types.d.ts +100 -0
- package/dist/src/protocols/genius-bridge/genius-bridge.types.d.ts.map +1 -0
- package/dist/src/protocols/genius-bridge/genius-bridge.types.js +3 -0
- package/dist/src/protocols/genius-bridge/genius-bridge.types.js.map +1 -0
- package/dist/src/protocols/genius-bridge/index.d.ts +3 -0
- package/dist/src/protocols/genius-bridge/index.d.ts.map +1 -0
- package/dist/src/protocols/genius-bridge/index.js +7 -0
- package/dist/src/protocols/genius-bridge/index.js.map +1 -0
- package/dist/src/protocols/jupiter/index.d.ts +3 -0
- package/dist/src/protocols/jupiter/index.d.ts.map +1 -0
- package/dist/src/protocols/jupiter/index.js +7 -0
- package/dist/src/protocols/jupiter/index.js.map +1 -0
- package/dist/src/protocols/jupiter/jupiter.service.d.ts +37 -0
- package/dist/src/protocols/jupiter/jupiter.service.d.ts.map +1 -0
- package/dist/src/protocols/jupiter/jupiter.service.js +188 -0
- package/dist/src/protocols/jupiter/jupiter.service.js.map +1 -0
- package/dist/src/protocols/jupiter/jupiter.types.d.ts +272 -0
- package/dist/src/protocols/jupiter/jupiter.types.d.ts.map +1 -0
- package/dist/src/protocols/jupiter/jupiter.types.js +3 -0
- package/dist/src/protocols/jupiter/jupiter.types.js.map +1 -0
- package/dist/src/protocols/kyberswap/index.d.ts +3 -0
- package/dist/src/protocols/kyberswap/index.d.ts.map +1 -0
- package/dist/src/protocols/kyberswap/index.js +7 -0
- package/dist/src/protocols/kyberswap/index.js.map +1 -0
- package/dist/src/protocols/kyberswap/kyberswap.service.d.ts +34 -0
- package/dist/src/protocols/kyberswap/kyberswap.service.d.ts.map +1 -0
- package/dist/src/protocols/kyberswap/kyberswap.service.js +218 -0
- package/dist/src/protocols/kyberswap/kyberswap.service.js.map +1 -0
- package/dist/src/protocols/kyberswap/kyberswap.types.d.ts +114 -0
- package/dist/src/protocols/kyberswap/kyberswap.types.d.ts.map +1 -0
- package/dist/src/protocols/kyberswap/kyberswap.types.js +3 -0
- package/dist/src/protocols/kyberswap/kyberswap.types.js.map +1 -0
- package/dist/src/protocols/odos/index.d.ts +3 -0
- package/dist/src/protocols/odos/index.d.ts.map +1 -0
- package/dist/src/protocols/odos/index.js +7 -0
- package/dist/src/protocols/odos/index.js.map +1 -0
- package/dist/src/protocols/odos/odos.service.d.ts +39 -0
- package/dist/src/protocols/odos/odos.service.d.ts.map +1 -0
- package/dist/src/protocols/odos/odos.service.js +207 -0
- package/dist/src/protocols/odos/odos.service.js.map +1 -0
- package/dist/src/protocols/odos/odos.types.d.ts +114 -0
- package/dist/src/protocols/odos/odos.types.d.ts.map +1 -0
- package/dist/src/protocols/odos/odos.types.js +3 -0
- package/dist/src/protocols/odos/odos.types.js.map +1 -0
- package/dist/src/protocols/okx/index.d.ts +3 -0
- package/dist/src/protocols/okx/index.d.ts.map +1 -0
- package/dist/src/protocols/okx/index.js +7 -0
- package/dist/src/protocols/okx/index.js.map +1 -0
- package/dist/src/protocols/okx/okx.service.d.ts +36 -0
- package/dist/src/protocols/okx/okx.service.d.ts.map +1 -0
- package/dist/src/protocols/okx/okx.service.js +281 -0
- package/dist/src/protocols/okx/okx.service.js.map +1 -0
- package/dist/src/protocols/okx/okx.types.d.ts +119 -0
- package/dist/src/protocols/okx/okx.types.d.ts.map +1 -0
- package/dist/src/protocols/okx/okx.types.js +4 -0
- package/dist/src/protocols/okx/okx.types.js.map +1 -0
- package/dist/src/protocols/okx-bridge/okx-bridge.service.d.ts +1 -0
- package/dist/src/protocols/okx-bridge/okx-bridge.service.d.ts.map +1 -0
- package/dist/src/protocols/okx-bridge/okx-bridge.service.js +2 -0
- package/dist/src/protocols/okx-bridge/okx-bridge.service.js.map +1 -0
- package/dist/src/protocols/okx-bridge/okx-bridge.types.d.ts +1 -0
- package/dist/src/protocols/okx-bridge/okx-bridge.types.d.ts.map +1 -0
- package/dist/src/protocols/okx-bridge/okx-bridge.types.js +2 -0
- package/dist/src/protocols/okx-bridge/okx-bridge.types.js.map +1 -0
- package/dist/src/protocols/openocean/index.d.ts +3 -0
- package/dist/src/protocols/openocean/index.d.ts.map +1 -0
- package/dist/src/protocols/openocean/index.js +7 -0
- package/dist/src/protocols/openocean/index.js.map +1 -0
- package/dist/src/protocols/openocean/openocean.service.d.ts +29 -0
- package/dist/src/protocols/openocean/openocean.service.d.ts.map +1 -0
- package/dist/src/protocols/openocean/openocean.service.js +181 -0
- package/dist/src/protocols/openocean/openocean.service.js.map +1 -0
- package/dist/src/protocols/openocean/openocean.types.d.ts +68 -0
- package/dist/src/protocols/openocean/openocean.types.d.ts.map +1 -0
- package/dist/src/protocols/openocean/openocean.types.js +3 -0
- package/dist/src/protocols/openocean/openocean.types.js.map +1 -0
- package/dist/src/protocols/pumpfun/index.d.ts +3 -0
- package/dist/src/protocols/pumpfun/index.d.ts.map +1 -0
- package/dist/src/protocols/pumpfun/index.js +7 -0
- package/dist/src/protocols/pumpfun/index.js.map +1 -0
- package/dist/src/protocols/pumpfun/pumpfun.service.d.ts +45 -0
- package/dist/src/protocols/pumpfun/pumpfun.service.d.ts.map +1 -0
- package/dist/src/protocols/pumpfun/pumpfun.service.js +217 -0
- package/dist/src/protocols/pumpfun/pumpfun.service.js.map +1 -0
- package/dist/src/protocols/pumpfun/pumpfun.types.d.ts +14 -0
- package/dist/src/protocols/pumpfun/pumpfun.types.d.ts.map +1 -0
- package/dist/src/protocols/pumpfun/pumpfun.types.js +3 -0
- package/dist/src/protocols/pumpfun/pumpfun.types.js.map +1 -0
- package/dist/src/protocols/raydium/index.d.ts +3 -0
- package/dist/src/protocols/raydium/index.d.ts.map +1 -0
- package/dist/src/protocols/raydium/index.js +7 -0
- package/dist/src/protocols/raydium/index.js.map +1 -0
- package/dist/src/protocols/raydium/raydium-v2.service.d.ts +35 -0
- package/dist/src/protocols/raydium/raydium-v2.service.d.ts.map +1 -0
- package/dist/src/protocols/raydium/raydium-v2.service.js +301 -0
- package/dist/src/protocols/raydium/raydium-v2.service.js.map +1 -0
- package/dist/src/protocols/raydium/raydium-v2.types.d.ts +96 -0
- package/dist/src/protocols/raydium/raydium-v2.types.d.ts.map +1 -0
- package/dist/src/protocols/raydium/raydium-v2.types.js +3 -0
- package/dist/src/protocols/raydium/raydium-v2.types.js.map +1 -0
- package/dist/src/protocols/zeroX/index.d.ts +3 -0
- package/dist/src/protocols/zeroX/index.d.ts.map +1 -0
- package/dist/src/protocols/zeroX/index.js +7 -0
- package/dist/src/protocols/zeroX/index.js.map +1 -0
- package/dist/src/protocols/zeroX/zeroX.service.d.ts +37 -0
- package/dist/src/protocols/zeroX/zeroX.service.d.ts.map +1 -0
- package/dist/src/protocols/zeroX/zeroX.service.js +209 -0
- package/dist/src/protocols/zeroX/zeroX.service.js.map +1 -0
- package/dist/src/protocols/zeroX/zeroX.types.d.ts +120 -0
- package/dist/src/protocols/zeroX/zeroX.types.d.ts.map +1 -0
- package/dist/src/protocols/zeroX/zeroX.types.js +3 -0
- package/dist/src/protocols/zeroX/zeroX.types.js.map +1 -0
- package/dist/src/types/enums.d.ts +42 -0
- package/dist/src/types/enums.d.ts.map +1 -0
- package/dist/src/types/enums.js +49 -0
- package/dist/src/types/enums.js.map +1 -0
- package/dist/src/types/intents-protocols.d.ts +89 -0
- package/dist/src/types/intents-protocols.d.ts.map +1 -0
- package/dist/src/types/intents-protocols.js +3 -0
- package/dist/src/types/intents-protocols.js.map +1 -0
- package/dist/src/types/price-response.d.ts +26 -0
- package/dist/src/types/price-response.d.ts.map +1 -0
- package/dist/src/types/price-response.js +3 -0
- package/dist/src/types/price-response.js.map +1 -0
- package/dist/src/types/quote-response.d.ts +31 -0
- package/dist/src/types/quote-response.d.ts.map +1 -0
- package/dist/src/types/quote-response.js +3 -0
- package/dist/src/types/quote-response.js.map +1 -0
- package/dist/src/utils/address-validation.d.ts +9 -0
- package/dist/src/utils/address-validation.d.ts.map +1 -0
- package/dist/src/utils/address-validation.js +42 -0
- package/dist/src/utils/address-validation.js.map +1 -0
- package/dist/src/utils/address.d.ts +9 -0
- package/dist/src/utils/address.d.ts.map +1 -0
- package/dist/src/utils/address.js +74 -0
- package/dist/src/utils/address.js.map +1 -0
- package/dist/src/utils/base64-to-base58.d.ts +2 -0
- package/dist/src/utils/base64-to-base58.d.ts.map +1 -0
- package/dist/src/utils/base64-to-base58.js +22 -0
- package/dist/src/utils/base64-to-base58.js.map +1 -0
- package/dist/src/utils/chain-id-name.d.ts +3 -0
- package/dist/src/utils/chain-id-name.d.ts.map +1 -0
- package/dist/src/utils/chain-id-name.js +23 -0
- package/dist/src/utils/chain-id-name.js.map +1 -0
- package/dist/src/utils/check-vm.d.ts +8 -0
- package/dist/src/utils/check-vm.d.ts.map +1 -0
- package/dist/src/utils/check-vm.js +39 -0
- package/dist/src/utils/check-vm.js.map +1 -0
- package/dist/src/utils/constants.d.ts +7 -0
- package/dist/src/utils/constants.d.ts.map +1 -0
- package/dist/src/utils/constants.js +10 -0
- package/dist/src/utils/constants.js.map +1 -0
- package/dist/src/utils/create-error-message.d.ts +5 -0
- package/dist/src/utils/create-error-message.d.ts.map +1 -0
- package/dist/src/utils/create-error-message.js +42 -0
- package/dist/src/utils/create-error-message.js.map +1 -0
- package/dist/src/utils/fetch-spl-metadata.d.ts +4 -0
- package/dist/src/utils/fetch-spl-metadata.d.ts.map +1 -0
- package/dist/src/utils/fetch-spl-metadata.js +108 -0
- package/dist/src/utils/fetch-spl-metadata.js.map +1 -0
- package/dist/src/utils/is-native.d.ts +2 -0
- package/dist/src/utils/is-native.d.ts.map +1 -0
- package/dist/src/utils/is-native.js +23 -0
- package/dist/src/utils/is-native.js.map +1 -0
- package/dist/src/utils/logger.d.ts +56 -0
- package/dist/src/utils/logger.d.ts.map +1 -0
- package/dist/src/utils/logger.js +108 -0
- package/dist/src/utils/logger.js.map +1 -0
- package/dist/src/utils/throw-error.d.ts +3 -0
- package/dist/src/utils/throw-error.d.ts.map +1 -0
- package/dist/src/utils/throw-error.js +8 -0
- package/dist/src/utils/throw-error.js.map +1 -0
- package/dist/tests/core/intent-protocol-suite.test.d.ts +2 -0
- package/dist/tests/core/intent-protocol-suite.test.d.ts.map +1 -0
- package/dist/tests/core/intent-protocol-suite.test.js +485 -0
- package/dist/tests/core/intent-protocol-suite.test.js.map +1 -0
- package/dist/tests/core/intents-protocols.test.d.ts +2 -0
- package/dist/tests/core/intents-protocols.test.d.ts.map +1 -0
- package/dist/tests/core/intents-protocols.test.js +307 -0
- package/dist/tests/core/intents-protocols.test.js.map +1 -0
- package/dist/tests/core/protocol-test-runner.d.ts +62 -0
- package/dist/tests/core/protocol-test-runner.d.ts.map +1 -0
- package/dist/tests/core/protocol-test-runner.js +260 -0
- package/dist/tests/core/protocol-test-runner.js.map +1 -0
- package/dist/tests/core/setup.test.d.ts +1 -0
- package/dist/tests/core/setup.test.d.ts.map +1 -0
- package/dist/tests/core/setup.test.js +13 -0
- package/dist/tests/core/setup.test.js.map +1 -0
- package/dist/tests/fixtures/test-data.d.ts +84 -0
- package/dist/tests/fixtures/test-data.d.ts.map +1 -0
- package/dist/tests/fixtures/test-data.js +142 -0
- package/dist/tests/fixtures/test-data.js.map +1 -0
- package/dist/tests/integration/cross-chain.test.d.ts +2 -0
- package/dist/tests/integration/cross-chain.test.d.ts.map +1 -0
- package/dist/tests/integration/cross-chain.test.js +44 -0
- package/dist/tests/integration/cross-chain.test.js.map +1 -0
- package/dist/tests/protocols/simple-protocol.test.d.ts +2 -0
- package/dist/tests/protocols/simple-protocol.test.d.ts.map +1 -0
- package/dist/tests/protocols/simple-protocol.test.js +77 -0
- package/dist/tests/protocols/simple-protocol.test.js.map +1 -0
- package/dist/tests/setup.d.ts +24 -0
- package/dist/tests/setup.d.ts.map +1 -0
- package/dist/tests/setup.js +48 -0
- package/dist/tests/setup.js.map +1 -0
- package/dist/tests/utils/test-generator.d.ts +30 -0
- package/dist/tests/utils/test-generator.d.ts.map +1 -0
- package/dist/tests/utils/test-generator.js +153 -0
- package/dist/tests/utils/test-generator.js.map +1 -0
- package/package.json +102 -0
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.logger = exports.LoggerFactory = exports.PinoLogger = exports.WinstonLogger = exports.ConsoleLogger = exports.NoOpLogger = exports.LogLevelEnum = void 0;
|
|
5
|
+
var LogLevelEnum;
|
|
6
|
+
(function (LogLevelEnum) {
|
|
7
|
+
LogLevelEnum[LogLevelEnum["NONE"] = 0] = "NONE";
|
|
8
|
+
LogLevelEnum[LogLevelEnum["ERROR"] = 1] = "ERROR";
|
|
9
|
+
LogLevelEnum[LogLevelEnum["WARN"] = 2] = "WARN";
|
|
10
|
+
LogLevelEnum[LogLevelEnum["INFO"] = 3] = "INFO";
|
|
11
|
+
LogLevelEnum[LogLevelEnum["DEBUG"] = 4] = "DEBUG";
|
|
12
|
+
})(LogLevelEnum || (exports.LogLevelEnum = LogLevelEnum = {}));
|
|
13
|
+
// Default no-op logger (silent)
|
|
14
|
+
class NoOpLogger {
|
|
15
|
+
debug() { }
|
|
16
|
+
info() { }
|
|
17
|
+
warn() { }
|
|
18
|
+
error() { }
|
|
19
|
+
}
|
|
20
|
+
exports.NoOpLogger = NoOpLogger;
|
|
21
|
+
// Simple console logger for debugging
|
|
22
|
+
class ConsoleLogger {
|
|
23
|
+
constructor(options = {}) {
|
|
24
|
+
this._level = options.level ?? LogLevelEnum.NONE;
|
|
25
|
+
}
|
|
26
|
+
debug(message, meta) {
|
|
27
|
+
if (this._level >= LogLevelEnum.DEBUG) {
|
|
28
|
+
console.debug(`[DEBUG] ${message}`, meta);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
info(message, meta) {
|
|
32
|
+
if (this._level >= LogLevelEnum.INFO) {
|
|
33
|
+
console.info(`[INFO] ${message}`, meta);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
warn(message, meta) {
|
|
37
|
+
if (this._level >= LogLevelEnum.WARN) {
|
|
38
|
+
console.warn(`[WARN] ${message}`, meta);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
error(message, error, meta) {
|
|
42
|
+
if (this._level >= LogLevelEnum.ERROR) {
|
|
43
|
+
console.error(`[ERROR] ${message}`, error, meta);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
exports.ConsoleLogger = ConsoleLogger;
|
|
48
|
+
// Winston adapter
|
|
49
|
+
class WinstonLogger {
|
|
50
|
+
constructor(winstonInstance) {
|
|
51
|
+
this._logger = winstonInstance;
|
|
52
|
+
}
|
|
53
|
+
debug(message, meta) {
|
|
54
|
+
this._logger.debug(message, meta);
|
|
55
|
+
}
|
|
56
|
+
info(message, meta) {
|
|
57
|
+
this._logger.info(message, meta);
|
|
58
|
+
}
|
|
59
|
+
warn(message, meta) {
|
|
60
|
+
this._logger.warn(message, meta);
|
|
61
|
+
}
|
|
62
|
+
error(message, error, meta) {
|
|
63
|
+
this._logger.error(message, { error, ...meta });
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
exports.WinstonLogger = WinstonLogger;
|
|
67
|
+
// Pino adapter
|
|
68
|
+
class PinoLogger {
|
|
69
|
+
constructor(pinoInstance) {
|
|
70
|
+
this._logger = pinoInstance;
|
|
71
|
+
}
|
|
72
|
+
debug(message, meta) {
|
|
73
|
+
this._logger.debug(meta, message);
|
|
74
|
+
}
|
|
75
|
+
info(message, meta) {
|
|
76
|
+
this._logger.info(meta, message);
|
|
77
|
+
}
|
|
78
|
+
warn(message, meta) {
|
|
79
|
+
this._logger.warn(meta, message);
|
|
80
|
+
}
|
|
81
|
+
error(message, error, meta) {
|
|
82
|
+
this._logger.error({ err: error, ...meta }, message);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
exports.PinoLogger = PinoLogger;
|
|
86
|
+
// SDK logging configuration
|
|
87
|
+
class LoggerFactory {
|
|
88
|
+
static getLogger() {
|
|
89
|
+
return LoggerFactory._instance;
|
|
90
|
+
}
|
|
91
|
+
static configure(logger) {
|
|
92
|
+
LoggerFactory._instance = logger;
|
|
93
|
+
}
|
|
94
|
+
static createConsoleLogger(options) {
|
|
95
|
+
return new ConsoleLogger(options);
|
|
96
|
+
}
|
|
97
|
+
static createWinstonLogger(winston) {
|
|
98
|
+
return new WinstonLogger(winston);
|
|
99
|
+
}
|
|
100
|
+
static createPinoLogger(pino) {
|
|
101
|
+
return new PinoLogger(pino);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
exports.LoggerFactory = LoggerFactory;
|
|
105
|
+
LoggerFactory._instance = new NoOpLogger();
|
|
106
|
+
// Export a default logger instance (no-op by default)
|
|
107
|
+
exports.logger = LoggerFactory.getLogger();
|
|
108
|
+
//# sourceMappingURL=logger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../../src/utils/logger.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"throw-error.d.ts","sourceRoot":"","sources":["../../../src/utils/throw-error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,eAAO,MAAM,QAAQ,GAAI,WAAW,YAAY,EAAE,SAAS,MAAM,KAAG,KAEnE,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.sdkError = void 0;
|
|
4
|
+
const sdkError = (errorType, message) => {
|
|
5
|
+
return new Error(`${errorType}: ${message}`);
|
|
6
|
+
};
|
|
7
|
+
exports.sdkError = sdkError;
|
|
8
|
+
//# sourceMappingURL=throw-error.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"throw-error.js","sourceRoot":"","sources":["../../../src/utils/throw-error.ts"],"names":[],"mappings":";;;AAEO,MAAM,QAAQ,GAAG,CAAC,SAAuB,EAAE,OAAe,EAAS,EAAE;IAC1E,OAAO,IAAI,KAAK,CAAC,GAAG,SAAS,KAAK,OAAO,EAAE,CAAC,CAAC;AAC/C,CAAC,CAAC;AAFW,QAAA,QAAQ,YAEnB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"intent-protocol-suite.test.d.ts","sourceRoot":"","sources":["../../../tests/core/intent-protocol-suite.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,485 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const enums_1 = require("../../src/types/enums");
|
|
4
|
+
const test_data_1 = require("../fixtures/test-data");
|
|
5
|
+
// Helper to safely create protocol instances
|
|
6
|
+
function createProtocolInstance(name, createFn) {
|
|
7
|
+
try {
|
|
8
|
+
return createFn();
|
|
9
|
+
}
|
|
10
|
+
catch (error) {
|
|
11
|
+
console.warn(`Failed to create ${name} instance for testing:`, error instanceof Error ? error.message : 'Unknown error');
|
|
12
|
+
return null;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
// Create test configurations for protocols that need them
|
|
16
|
+
const TEST_CONFIGS = {
|
|
17
|
+
pumpfun: {
|
|
18
|
+
solanaRpcUrl: 'https://api.mainnet-beta.solana.com',
|
|
19
|
+
},
|
|
20
|
+
aftermath: {
|
|
21
|
+
suiRpcUrl: 'https://fullnode.mainnet.sui.io:443',
|
|
22
|
+
},
|
|
23
|
+
okx: {
|
|
24
|
+
okxCredentials: {
|
|
25
|
+
apiKey: 'test-api-key',
|
|
26
|
+
secretKey: 'test-secret-key',
|
|
27
|
+
passphrase: 'test-passphrase',
|
|
28
|
+
projectId: 'test-project-id',
|
|
29
|
+
},
|
|
30
|
+
},
|
|
31
|
+
zeroX: {
|
|
32
|
+
apiKey: 'test-api-key',
|
|
33
|
+
},
|
|
34
|
+
kyberswap: {
|
|
35
|
+
clientId: 'test-client-id',
|
|
36
|
+
},
|
|
37
|
+
};
|
|
38
|
+
// Attempt to load all protocol implementations
|
|
39
|
+
const PROTOCOL_CANDIDATES = [
|
|
40
|
+
{
|
|
41
|
+
name: 'Jupiter',
|
|
42
|
+
createFn: () => {
|
|
43
|
+
const { JupiterService } = require('../../src/protocols/jupiter/jupiter.service');
|
|
44
|
+
return new JupiterService();
|
|
45
|
+
},
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
name: 'Odos',
|
|
49
|
+
createFn: () => {
|
|
50
|
+
const { OdosService } = require('../../src/protocols/odos/odos.service');
|
|
51
|
+
return new OdosService();
|
|
52
|
+
},
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
name: 'Raydium V2',
|
|
56
|
+
createFn: () => {
|
|
57
|
+
const { RaydiumV2Service } = require('../../src/protocols/raydium/raydium-v2.service');
|
|
58
|
+
return new RaydiumV2Service();
|
|
59
|
+
},
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
name: 'PumpFun',
|
|
63
|
+
createFn: () => {
|
|
64
|
+
const { PumpFunService } = require('../../src/protocols/pumpfun/pumpfun.service');
|
|
65
|
+
return new PumpFunService(TEST_CONFIGS.pumpfun);
|
|
66
|
+
},
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
name: 'OpenOcean',
|
|
70
|
+
createFn: () => {
|
|
71
|
+
const { OpenOceanService } = require('../../src/protocols/openocean/openocean.service');
|
|
72
|
+
return new OpenOceanService();
|
|
73
|
+
},
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
name: 'Kyberswap',
|
|
77
|
+
createFn: () => {
|
|
78
|
+
const { KyberswapService } = require('../../src/protocols/kyberswap/kyberswap.service');
|
|
79
|
+
return new KyberswapService(TEST_CONFIGS.kyberswap);
|
|
80
|
+
},
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
name: 'ZeroX',
|
|
84
|
+
createFn: () => {
|
|
85
|
+
const { ZeroXService } = require('../../src/protocols/zeroX/zeroX.service');
|
|
86
|
+
return new ZeroXService(TEST_CONFIGS.zeroX);
|
|
87
|
+
},
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
name: 'Aftermath',
|
|
91
|
+
createFn: () => {
|
|
92
|
+
const { AftermathService } = require('../../src/protocols/aftermath/aftermath.service');
|
|
93
|
+
return new AftermathService(TEST_CONFIGS.aftermath);
|
|
94
|
+
},
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
name: 'OKX',
|
|
98
|
+
createFn: () => {
|
|
99
|
+
const { OkxService } = require('../../src/protocols/okx/okx.service');
|
|
100
|
+
return new OkxService(TEST_CONFIGS.okx);
|
|
101
|
+
},
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
name: 'DeBridge',
|
|
105
|
+
createFn: () => {
|
|
106
|
+
const { DeBridgeService } = require('../../src/protocols/debridge/debridge.service');
|
|
107
|
+
return new DeBridgeService();
|
|
108
|
+
},
|
|
109
|
+
},
|
|
110
|
+
{
|
|
111
|
+
name: 'Genius Bridge',
|
|
112
|
+
createFn: () => {
|
|
113
|
+
const { GeniusBridgeService, } = require('../../src/protocols/genius-bridge/genius-bridge.service');
|
|
114
|
+
return new GeniusBridgeService();
|
|
115
|
+
},
|
|
116
|
+
},
|
|
117
|
+
];
|
|
118
|
+
// Load all available protocol implementations
|
|
119
|
+
const PROTOCOL_IMPLEMENTATIONS = PROTOCOL_CANDIDATES.map(candidate => {
|
|
120
|
+
const protocol = createProtocolInstance(candidate.name, candidate.createFn);
|
|
121
|
+
return protocol
|
|
122
|
+
? {
|
|
123
|
+
name: candidate.name,
|
|
124
|
+
protocol,
|
|
125
|
+
className: candidate.name.replace(/\s+/g, '') + 'Service',
|
|
126
|
+
}
|
|
127
|
+
: null;
|
|
128
|
+
}).filter((impl) => impl !== null);
|
|
129
|
+
describe('IIntentProtocol Implementation Suite', () => {
|
|
130
|
+
beforeAll(() => {
|
|
131
|
+
console.log('\n=== PROTOCOL DISCOVERY RESULTS ===');
|
|
132
|
+
console.log(`Successfully loaded ${PROTOCOL_IMPLEMENTATIONS.length} protocol implementations:`);
|
|
133
|
+
PROTOCOL_IMPLEMENTATIONS.forEach((impl, index) => {
|
|
134
|
+
console.log(` ${index + 1}. ${impl.name} (${impl.className})`);
|
|
135
|
+
});
|
|
136
|
+
const failedCount = PROTOCOL_CANDIDATES.length - PROTOCOL_IMPLEMENTATIONS.length;
|
|
137
|
+
if (failedCount > 0) {
|
|
138
|
+
console.log(`\n${failedCount} protocols failed to load (likely due to missing dependencies or configuration issues)`);
|
|
139
|
+
}
|
|
140
|
+
console.log('===================================\n');
|
|
141
|
+
});
|
|
142
|
+
describe('Protocol Discovery and Registration', () => {
|
|
143
|
+
test('should discover at least some protocol implementations', () => {
|
|
144
|
+
expect(PROTOCOL_IMPLEMENTATIONS.length).toBeGreaterThan(0);
|
|
145
|
+
});
|
|
146
|
+
test('should have unique protocol identifiers', () => {
|
|
147
|
+
const protocolIds = PROTOCOL_IMPLEMENTATIONS.map(impl => impl.protocol.protocol);
|
|
148
|
+
const uniqueProtocolIds = [...new Set(protocolIds)];
|
|
149
|
+
expect(protocolIds).toHaveLength(uniqueProtocolIds.length);
|
|
150
|
+
});
|
|
151
|
+
});
|
|
152
|
+
// Test each protocol implementation
|
|
153
|
+
PROTOCOL_IMPLEMENTATIONS.forEach(({ name, protocol, className }) => {
|
|
154
|
+
describe(`${name} (${className})`, () => {
|
|
155
|
+
describe('Interface Compliance', () => {
|
|
156
|
+
test('should implement IIntentProtocol interface', () => {
|
|
157
|
+
expect(protocol).toBeDefined();
|
|
158
|
+
expect(typeof protocol.fetchPrice).toBe('function');
|
|
159
|
+
expect(typeof protocol.fetchQuote).toBe('function');
|
|
160
|
+
expect(typeof protocol.protocol).toBe('string');
|
|
161
|
+
expect(Array.isArray(protocol.chains)).toBe(true);
|
|
162
|
+
expect(typeof protocol.singleChain).toBe('boolean');
|
|
163
|
+
expect(typeof protocol.multiChain).toBe('boolean');
|
|
164
|
+
});
|
|
165
|
+
test('should have valid protocol properties', () => {
|
|
166
|
+
expect(protocol.protocol).toBeTruthy();
|
|
167
|
+
expect(protocol.chains.length).toBeGreaterThan(0);
|
|
168
|
+
expect(Object.values(enums_1.ProtocolEnum)).toContain(protocol.protocol);
|
|
169
|
+
});
|
|
170
|
+
test('should have consistent chain configuration', () => {
|
|
171
|
+
// Single-chain protocols should not be multi-chain
|
|
172
|
+
if (protocol.singleChain) {
|
|
173
|
+
expect(protocol.multiChain).toBe(false);
|
|
174
|
+
}
|
|
175
|
+
// Multi-chain protocols should not be single-chain
|
|
176
|
+
if (protocol.multiChain) {
|
|
177
|
+
expect(protocol.singleChain).toBe(false);
|
|
178
|
+
}
|
|
179
|
+
// At least one should be true
|
|
180
|
+
expect(protocol.singleChain || protocol.multiChain).toBe(true);
|
|
181
|
+
});
|
|
182
|
+
});
|
|
183
|
+
describe('Chain Support and Routing Capabilities', () => {
|
|
184
|
+
test('should have valid supported chains', () => {
|
|
185
|
+
protocol.chains.forEach(chain => {
|
|
186
|
+
expect(Object.values(enums_1.ChainIdEnum)).toContain(chain);
|
|
187
|
+
});
|
|
188
|
+
});
|
|
189
|
+
test('should indicate routing capabilities correctly', () => {
|
|
190
|
+
if (protocol.singleChain) {
|
|
191
|
+
// Single-chain protocols can only route within supported chains
|
|
192
|
+
expect(protocol.chains.length).toBeGreaterThan(0);
|
|
193
|
+
console.log(`${name}: Single-chain protocol supporting ${protocol.chains.length} chain(s) - ${protocol.chains.map(c => enums_1.ChainIdEnum[c]).join(', ')}`);
|
|
194
|
+
}
|
|
195
|
+
if (protocol.multiChain) {
|
|
196
|
+
// Multi-chain protocols should support multiple chains or be bridges
|
|
197
|
+
expect(protocol.chains.length).toBeGreaterThanOrEqual(1);
|
|
198
|
+
console.log(`${name}: Multi-chain protocol supporting ${protocol.chains.length} chain(s) - ${protocol.chains.map(c => enums_1.ChainIdEnum[c]).join(', ')}`);
|
|
199
|
+
}
|
|
200
|
+
});
|
|
201
|
+
test('should categorize protocol type correctly', () => {
|
|
202
|
+
const EVMChains = [
|
|
203
|
+
enums_1.ChainIdEnum.ETHEREUM,
|
|
204
|
+
enums_1.ChainIdEnum.ARBITRUM,
|
|
205
|
+
enums_1.ChainIdEnum.OPTIMISM,
|
|
206
|
+
enums_1.ChainIdEnum.POLYGON,
|
|
207
|
+
enums_1.ChainIdEnum.BSC,
|
|
208
|
+
enums_1.ChainIdEnum.AVALANCHE,
|
|
209
|
+
enums_1.ChainIdEnum.BASE,
|
|
210
|
+
enums_1.ChainIdEnum.BLAST,
|
|
211
|
+
enums_1.ChainIdEnum.SONIC,
|
|
212
|
+
];
|
|
213
|
+
const isEVMOnly = protocol.chains.every(chain => EVMChains.includes(chain));
|
|
214
|
+
const isSolanaOnly = protocol.chains.length === 1 && protocol.chains[0] === enums_1.ChainIdEnum.SOLANA;
|
|
215
|
+
const isMoveOnly = protocol.chains.every(chain => [enums_1.ChainIdEnum.SUI, enums_1.ChainIdEnum.APTOS].includes(chain));
|
|
216
|
+
const isCrossVM = !isEVMOnly && !isSolanaOnly && !isMoveOnly;
|
|
217
|
+
const classification = {
|
|
218
|
+
isEVMOnly,
|
|
219
|
+
isSolanaOnly,
|
|
220
|
+
isMoveOnly,
|
|
221
|
+
isCrossVM,
|
|
222
|
+
chains: protocol.chains.map(c => enums_1.ChainIdEnum[c]),
|
|
223
|
+
chainCount: protocol.chains.length,
|
|
224
|
+
};
|
|
225
|
+
console.log(`${name} classification:`, classification);
|
|
226
|
+
// Protocol should fall into one of these categories
|
|
227
|
+
expect(isEVMOnly || isSolanaOnly || isMoveOnly || isCrossVM).toBe(true);
|
|
228
|
+
});
|
|
229
|
+
});
|
|
230
|
+
describe('Operational Capabilities Analysis', () => {
|
|
231
|
+
test('should determine possible operations based on chain configuration', () => {
|
|
232
|
+
const capabilities = analyzeProtocolCapabilities(protocol);
|
|
233
|
+
expect(capabilities).toHaveProperty('canDoIntraChainSwaps');
|
|
234
|
+
expect(capabilities).toHaveProperty('canDoCrossChainSwaps');
|
|
235
|
+
expect(capabilities).toHaveProperty('supportedVMs');
|
|
236
|
+
expect(capabilities).toHaveProperty('routingScenarios');
|
|
237
|
+
console.log(`${name} capabilities:`, capabilities);
|
|
238
|
+
});
|
|
239
|
+
test('should validate parameter compatibility for supported chains', () => {
|
|
240
|
+
// Test with each supported chain
|
|
241
|
+
let validChains = 0;
|
|
242
|
+
protocol.chains.forEach(chainId => {
|
|
243
|
+
const canCreateParams = canCreateValidParams(chainId);
|
|
244
|
+
if (canCreateParams) {
|
|
245
|
+
validChains++;
|
|
246
|
+
}
|
|
247
|
+
});
|
|
248
|
+
// At least some chains should have valid test data
|
|
249
|
+
expect(validChains).toBeGreaterThan(0);
|
|
250
|
+
console.log(`${name}: ${validChains}/${protocol.chains.length} chains have valid test parameters`);
|
|
251
|
+
});
|
|
252
|
+
});
|
|
253
|
+
describe('Routing Matrix Analysis', () => {
|
|
254
|
+
test('should generate valid routing matrix for supported chains', () => {
|
|
255
|
+
const routingMatrix = generateRoutingMatrix(protocol);
|
|
256
|
+
expect(routingMatrix).toHaveProperty('intraChainRoutes');
|
|
257
|
+
expect(routingMatrix).toHaveProperty('crossChainRoutes');
|
|
258
|
+
expect(routingMatrix).toHaveProperty('totalPossibleRoutes');
|
|
259
|
+
console.log(`${name} routing matrix:`, {
|
|
260
|
+
intraChainRoutes: routingMatrix.intraChainRoutes,
|
|
261
|
+
crossChainRoutes: routingMatrix.crossChainRoutes,
|
|
262
|
+
totalRoutes: routingMatrix.totalPossibleRoutes,
|
|
263
|
+
supportedChains: routingMatrix.supportedChains,
|
|
264
|
+
});
|
|
265
|
+
// Validate routing logic
|
|
266
|
+
if (protocol.singleChain) {
|
|
267
|
+
expect(routingMatrix.crossChainRoutes).toBe(0);
|
|
268
|
+
expect(routingMatrix.intraChainRoutes).toBeGreaterThan(0);
|
|
269
|
+
}
|
|
270
|
+
if (protocol.multiChain && protocol.chains.length > 1) {
|
|
271
|
+
expect(routingMatrix.crossChainRoutes).toBeGreaterThan(0);
|
|
272
|
+
}
|
|
273
|
+
});
|
|
274
|
+
});
|
|
275
|
+
describe('Feature Detection', () => {
|
|
276
|
+
test('should identify additional features', () => {
|
|
277
|
+
const features = detectProtocolFeatures(protocol);
|
|
278
|
+
console.log(`${name} detected features:`, features);
|
|
279
|
+
expect(features).toHaveProperty('hasApprovalSupport');
|
|
280
|
+
expect(features).toHaveProperty('hasBaseUrl');
|
|
281
|
+
expect(features).toHaveProperty('customProperties');
|
|
282
|
+
});
|
|
283
|
+
});
|
|
284
|
+
});
|
|
285
|
+
});
|
|
286
|
+
describe('Protocol Ecosystem Analysis', () => {
|
|
287
|
+
test('should categorize protocols by VM support', () => {
|
|
288
|
+
const EVMChains = [
|
|
289
|
+
enums_1.ChainIdEnum.ETHEREUM,
|
|
290
|
+
enums_1.ChainIdEnum.ARBITRUM,
|
|
291
|
+
enums_1.ChainIdEnum.OPTIMISM,
|
|
292
|
+
enums_1.ChainIdEnum.POLYGON,
|
|
293
|
+
enums_1.ChainIdEnum.BSC,
|
|
294
|
+
enums_1.ChainIdEnum.AVALANCHE,
|
|
295
|
+
enums_1.ChainIdEnum.BASE,
|
|
296
|
+
enums_1.ChainIdEnum.BLAST,
|
|
297
|
+
enums_1.ChainIdEnum.SONIC,
|
|
298
|
+
];
|
|
299
|
+
const evmProtocols = PROTOCOL_IMPLEMENTATIONS.filter(impl => impl.protocol.chains.some(chain => EVMChains.includes(chain)));
|
|
300
|
+
const solanaProtocols = PROTOCOL_IMPLEMENTATIONS.filter(impl => impl.protocol.chains.includes(enums_1.ChainIdEnum.SOLANA));
|
|
301
|
+
const moveProtocols = PROTOCOL_IMPLEMENTATIONS.filter(impl => impl.protocol.chains.some(chain => [enums_1.ChainIdEnum.SUI, enums_1.ChainIdEnum.APTOS].includes(chain)));
|
|
302
|
+
console.log('\n=== ECOSYSTEM DISTRIBUTION ===');
|
|
303
|
+
console.log(`EVM Protocols (${evmProtocols.length}):`, evmProtocols.map(p => p.name));
|
|
304
|
+
console.log(`Solana Protocols (${solanaProtocols.length}):`, solanaProtocols.map(p => p.name));
|
|
305
|
+
console.log(`Move Protocols (${moveProtocols.length}):`, moveProtocols.map(p => p.name));
|
|
306
|
+
console.log(`Total Protocols: ${PROTOCOL_IMPLEMENTATIONS.length}`);
|
|
307
|
+
console.log('===============================\n');
|
|
308
|
+
expect(PROTOCOL_IMPLEMENTATIONS.length).toBeGreaterThan(0);
|
|
309
|
+
});
|
|
310
|
+
test('should identify bridge vs DEX aggregator protocols', () => {
|
|
311
|
+
const bridgeProtocols = PROTOCOL_IMPLEMENTATIONS.filter(impl => impl.protocol.multiChain || impl.name.toLowerCase().includes('bridge'));
|
|
312
|
+
const dexProtocols = PROTOCOL_IMPLEMENTATIONS.filter(impl => impl.protocol.singleChain && !impl.name.toLowerCase().includes('bridge'));
|
|
313
|
+
console.log('\n=== PROTOCOL TYPE DISTRIBUTION ===');
|
|
314
|
+
console.log(`Bridge/Cross-chain Protocols (${bridgeProtocols.length}):`, bridgeProtocols.map(p => p.name));
|
|
315
|
+
console.log(`DEX Aggregator Protocols (${dexProtocols.length}):`, dexProtocols.map(p => p.name));
|
|
316
|
+
console.log('==================================\n');
|
|
317
|
+
expect(bridgeProtocols.length + dexProtocols.length).toBe(PROTOCOL_IMPLEMENTATIONS.length);
|
|
318
|
+
});
|
|
319
|
+
test('should map routing capabilities across the ecosystem', () => {
|
|
320
|
+
const routingMap = new Map();
|
|
321
|
+
const crossChainCapabilities = new Map();
|
|
322
|
+
PROTOCOL_IMPLEMENTATIONS.forEach(impl => {
|
|
323
|
+
const capabilities = analyzeProtocolCapabilities(impl.protocol);
|
|
324
|
+
// Track which VMs each protocol supports
|
|
325
|
+
capabilities.supportedVMs.forEach(vm => {
|
|
326
|
+
if (!routingMap.has(vm)) {
|
|
327
|
+
routingMap.set(vm, new Set());
|
|
328
|
+
}
|
|
329
|
+
routingMap.get(vm).add(impl.name);
|
|
330
|
+
});
|
|
331
|
+
// Track cross-chain capabilities
|
|
332
|
+
if (capabilities.canDoCrossChainSwaps) {
|
|
333
|
+
crossChainCapabilities.set(impl.name, capabilities.routingScenarios.length);
|
|
334
|
+
}
|
|
335
|
+
});
|
|
336
|
+
console.log('\n=== ROUTING CAPABILITIES MAP ===');
|
|
337
|
+
routingMap.forEach((protocols, vm) => {
|
|
338
|
+
console.log(`${vm} VM Support:`, Array.from(protocols));
|
|
339
|
+
});
|
|
340
|
+
if (crossChainCapabilities.size > 0) {
|
|
341
|
+
console.log('\nCross-Chain Bridge Capabilities:');
|
|
342
|
+
crossChainCapabilities.forEach((scenarios, name) => {
|
|
343
|
+
console.log(` ${name}: ${scenarios} routing scenarios`);
|
|
344
|
+
});
|
|
345
|
+
}
|
|
346
|
+
console.log('================================\n');
|
|
347
|
+
expect(routingMap.size).toBeGreaterThan(0);
|
|
348
|
+
});
|
|
349
|
+
});
|
|
350
|
+
});
|
|
351
|
+
// Helper functions for analysis
|
|
352
|
+
function analyzeProtocolCapabilities(protocol) {
|
|
353
|
+
const supportedChains = protocol.chains;
|
|
354
|
+
const vmTypes = new Set();
|
|
355
|
+
supportedChains.forEach(chain => {
|
|
356
|
+
if ([
|
|
357
|
+
enums_1.ChainIdEnum.ETHEREUM,
|
|
358
|
+
enums_1.ChainIdEnum.ARBITRUM,
|
|
359
|
+
enums_1.ChainIdEnum.OPTIMISM,
|
|
360
|
+
enums_1.ChainIdEnum.POLYGON,
|
|
361
|
+
enums_1.ChainIdEnum.BSC,
|
|
362
|
+
enums_1.ChainIdEnum.AVALANCHE,
|
|
363
|
+
enums_1.ChainIdEnum.BASE,
|
|
364
|
+
enums_1.ChainIdEnum.BLAST,
|
|
365
|
+
enums_1.ChainIdEnum.SONIC,
|
|
366
|
+
].includes(chain)) {
|
|
367
|
+
vmTypes.add('EVM');
|
|
368
|
+
}
|
|
369
|
+
else if (chain === enums_1.ChainIdEnum.SOLANA) {
|
|
370
|
+
vmTypes.add('Solana');
|
|
371
|
+
}
|
|
372
|
+
else if ([enums_1.ChainIdEnum.SUI, enums_1.ChainIdEnum.APTOS].includes(chain)) {
|
|
373
|
+
vmTypes.add('Move');
|
|
374
|
+
}
|
|
375
|
+
});
|
|
376
|
+
return {
|
|
377
|
+
canDoIntraChainSwaps: protocol.singleChain || protocol.multiChain,
|
|
378
|
+
canDoCrossChainSwaps: protocol.multiChain && supportedChains.length > 1,
|
|
379
|
+
supportedVMs: Array.from(vmTypes),
|
|
380
|
+
routingScenarios: generateRoutingScenarios(protocol),
|
|
381
|
+
chainCount: supportedChains.length,
|
|
382
|
+
};
|
|
383
|
+
}
|
|
384
|
+
function generateRoutingScenarios(protocol) {
|
|
385
|
+
const scenarios = [];
|
|
386
|
+
if (protocol.singleChain) {
|
|
387
|
+
protocol.chains.forEach(chain => {
|
|
388
|
+
scenarios.push(`Intra-chain swaps on ${enums_1.ChainIdEnum[chain]}`);
|
|
389
|
+
});
|
|
390
|
+
}
|
|
391
|
+
if (protocol.multiChain && protocol.chains.length > 1) {
|
|
392
|
+
for (let i = 0; i < protocol.chains.length; i++) {
|
|
393
|
+
for (let j = 0; j < protocol.chains.length; j++) {
|
|
394
|
+
if (i !== j) {
|
|
395
|
+
const fromChain = protocol.chains[i];
|
|
396
|
+
const toChain = protocol.chains[j];
|
|
397
|
+
if (fromChain !== undefined && toChain !== undefined) {
|
|
398
|
+
scenarios.push(`${enums_1.ChainIdEnum[fromChain]} → ${enums_1.ChainIdEnum[toChain]}`);
|
|
399
|
+
}
|
|
400
|
+
}
|
|
401
|
+
}
|
|
402
|
+
}
|
|
403
|
+
}
|
|
404
|
+
return scenarios;
|
|
405
|
+
}
|
|
406
|
+
function generateRoutingMatrix(protocol) {
|
|
407
|
+
const chains = protocol.chains;
|
|
408
|
+
let intraChainRoutes = 0;
|
|
409
|
+
let crossChainRoutes = 0;
|
|
410
|
+
if (protocol.singleChain) {
|
|
411
|
+
intraChainRoutes = chains.length; // Each chain can do internal swaps
|
|
412
|
+
}
|
|
413
|
+
if (protocol.multiChain && chains.length > 1) {
|
|
414
|
+
crossChainRoutes = chains.length * (chains.length - 1); // n * (n-1) cross-chain combinations
|
|
415
|
+
}
|
|
416
|
+
return {
|
|
417
|
+
intraChainRoutes,
|
|
418
|
+
crossChainRoutes,
|
|
419
|
+
totalPossibleRoutes: intraChainRoutes + crossChainRoutes,
|
|
420
|
+
supportedChains: chains.map(c => enums_1.ChainIdEnum[c]),
|
|
421
|
+
};
|
|
422
|
+
}
|
|
423
|
+
function canCreateValidParams(chainId) {
|
|
424
|
+
try {
|
|
425
|
+
// Try to create valid parameters for this chain
|
|
426
|
+
const wallet = getWalletForChain(chainId);
|
|
427
|
+
const tokens = getTokensForChain(chainId);
|
|
428
|
+
if (!wallet || !tokens)
|
|
429
|
+
return false;
|
|
430
|
+
(0, test_data_1.createPriceParams)({
|
|
431
|
+
networkIn: chainId,
|
|
432
|
+
networkOut: chainId,
|
|
433
|
+
tokenIn: tokens.tokenIn,
|
|
434
|
+
tokenOut: tokens.tokenOut,
|
|
435
|
+
from: wallet,
|
|
436
|
+
});
|
|
437
|
+
return true;
|
|
438
|
+
}
|
|
439
|
+
catch (error) {
|
|
440
|
+
return false;
|
|
441
|
+
}
|
|
442
|
+
}
|
|
443
|
+
function getWalletForChain(chainId) {
|
|
444
|
+
if ([
|
|
445
|
+
enums_1.ChainIdEnum.ETHEREUM,
|
|
446
|
+
enums_1.ChainIdEnum.ARBITRUM,
|
|
447
|
+
enums_1.ChainIdEnum.OPTIMISM,
|
|
448
|
+
enums_1.ChainIdEnum.POLYGON,
|
|
449
|
+
enums_1.ChainIdEnum.BSC,
|
|
450
|
+
enums_1.ChainIdEnum.AVALANCHE,
|
|
451
|
+
enums_1.ChainIdEnum.BASE,
|
|
452
|
+
enums_1.ChainIdEnum.BLAST,
|
|
453
|
+
enums_1.ChainIdEnum.SONIC,
|
|
454
|
+
].includes(chainId)) {
|
|
455
|
+
return test_data_1.TEST_WALLETS.EVM;
|
|
456
|
+
}
|
|
457
|
+
else if (chainId === enums_1.ChainIdEnum.SOLANA) {
|
|
458
|
+
return test_data_1.TEST_WALLETS.SOLANA;
|
|
459
|
+
}
|
|
460
|
+
else if ([enums_1.ChainIdEnum.SUI, enums_1.ChainIdEnum.APTOS].includes(chainId)) {
|
|
461
|
+
return test_data_1.TEST_WALLETS.SUI;
|
|
462
|
+
}
|
|
463
|
+
return null;
|
|
464
|
+
}
|
|
465
|
+
function getTokensForChain(chainId) {
|
|
466
|
+
const chainTokens = test_data_1.TEST_TOKENS[chainId];
|
|
467
|
+
if (chainTokens) {
|
|
468
|
+
const tokens = Object.values(chainTokens);
|
|
469
|
+
if (tokens.length >= 2) {
|
|
470
|
+
return {
|
|
471
|
+
tokenIn: tokens[0],
|
|
472
|
+
tokenOut: tokens[1],
|
|
473
|
+
};
|
|
474
|
+
}
|
|
475
|
+
}
|
|
476
|
+
return null;
|
|
477
|
+
}
|
|
478
|
+
function detectProtocolFeatures(protocol) {
|
|
479
|
+
return {
|
|
480
|
+
hasApprovalSupport: 'includeApprovals' in protocol,
|
|
481
|
+
hasBaseUrl: 'baseUrl' in protocol,
|
|
482
|
+
customProperties: Object.keys(protocol).filter(key => !['protocol', 'chains', 'singleChain', 'multiChain', 'fetchPrice', 'fetchQuote'].includes(key)),
|
|
483
|
+
};
|
|
484
|
+
}
|
|
485
|
+
//# sourceMappingURL=intent-protocol-suite.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"intent-protocol-suite.test.js","sourceRoot":"","sources":["../../../tests/core/intent-protocol-suite.test.ts"],"names":[],"mappings":";;AACA,iDAAkE;AAClE,qDAAqF;AAQrF,6CAA6C;AAC7C,SAAS,sBAAsB,CAC7B,IAAY,EACZ,QAA+B;IAE/B,IAAI,CAAC;QACH,OAAO,QAAQ,EAAE,CAAC;IACpB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CACV,oBAAoB,IAAI,wBAAwB,EAChD,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CACzD,CAAC;QACF,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,0DAA0D;AAC1D,MAAM,YAAY,GAAG;IACnB,OAAO,EAAE;QACP,YAAY,EAAE,qCAAqC;KACpD;IACD,SAAS,EAAE;QACT,SAAS,EAAE,qCAAqC;KACjD;IACD,GAAG,EAAE;QACH,cAAc,EAAE;YACd,MAAM,EAAE,cAAc;YACtB,SAAS,EAAE,iBAAiB;YAC5B,UAAU,EAAE,iBAAiB;YAC7B,SAAS,EAAE,iBAAiB;SAC7B;KACF;IACD,KAAK,EAAE;QACL,MAAM,EAAE,cAAc;KACvB;IACD,SAAS,EAAE;QACT,QAAQ,EAAE,gBAAgB;KAC3B;CACF,CAAC;AAEF,+CAA+C;AAC/C,MAAM,mBAAmB,GAAG;IAC1B;QACE,IAAI,EAAE,SAAS;QACf,QAAQ,EAAE,GAAG,EAAE;YACb,MAAM,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC,6CAA6C,CAAC,CAAC;YAClF,OAAO,IAAI,cAAc,EAAE,CAAC;QAC9B,CAAC;KACF;IACD;QACE,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,GAAG,EAAE;YACb,MAAM,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,uCAAuC,CAAC,CAAC;YACzE,OAAO,IAAI,WAAW,EAAE,CAAC;QAC3B,CAAC;KACF;IACD;QACE,IAAI,EAAE,YAAY;QAClB,QAAQ,EAAE,GAAG,EAAE;YACb,MAAM,EAAE,gBAAgB,EAAE,GAAG,OAAO,CAAC,gDAAgD,CAAC,CAAC;YACvF,OAAO,IAAI,gBAAgB,EAAE,CAAC;QAChC,CAAC;KACF;IACD;QACE,IAAI,EAAE,SAAS;QACf,QAAQ,EAAE,GAAG,EAAE;YACb,MAAM,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC,6CAA6C,CAAC,CAAC;YAClF,OAAO,IAAI,cAAc,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QAClD,CAAC;KACF;IACD;QACE,IAAI,EAAE,WAAW;QACjB,QAAQ,EAAE,GAAG,EAAE;YACb,MAAM,EAAE,gBAAgB,EAAE,GAAG,OAAO,CAAC,iDAAiD,CAAC,CAAC;YACxF,OAAO,IAAI,gBAAgB,EAAE,CAAC;QAChC,CAAC;KACF;IACD;QACE,IAAI,EAAE,WAAW;QACjB,QAAQ,EAAE,GAAG,EAAE;YACb,MAAM,EAAE,gBAAgB,EAAE,GAAG,OAAO,CAAC,iDAAiD,CAAC,CAAC;YACxF,OAAO,IAAI,gBAAgB,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QACtD,CAAC;KACF;IACD;QACE,IAAI,EAAE,OAAO;QACb,QAAQ,EAAE,GAAG,EAAE;YACb,MAAM,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC,yCAAyC,CAAC,CAAC;YAC5E,OAAO,IAAI,YAAY,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QAC9C,CAAC;KACF;IACD;QACE,IAAI,EAAE,WAAW;QACjB,QAAQ,EAAE,GAAG,EAAE;YACb,MAAM,EAAE,gBAAgB,EAAE,GAAG,OAAO,CAAC,iDAAiD,CAAC,CAAC;YACxF,OAAO,IAAI,gBAAgB,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QACtD,CAAC;KACF;IACD;QACE,IAAI,EAAE,KAAK;QACX,QAAQ,EAAE,GAAG,EAAE;YACb,MAAM,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,qCAAqC,CAAC,CAAC;YACtE,OAAO,IAAI,UAAU,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QAC1C,CAAC;KACF;IACD;QACE,IAAI,EAAE,UAAU;QAChB,QAAQ,EAAE,GAAG,EAAE;YACb,MAAM,EAAE,eAAe,EAAE,GAAG,OAAO,CAAC,+CAA+C,CAAC,CAAC;YACrF,OAAO,IAAI,eAAe,EAAE,CAAC;QAC/B,CAAC;KACF;IACD;QACE,IAAI,EAAE,eAAe;QACrB,QAAQ,EAAE,GAAG,EAAE;YACb,MAAM,EACJ,mBAAmB,GACpB,GAAG,OAAO,CAAC,yDAAyD,CAAC,CAAC;YACvE,OAAO,IAAI,mBAAmB,EAAE,CAAC;QACnC,CAAC;KACF;CACF,CAAC;AAEF,8CAA8C;AAC9C,MAAM,wBAAwB,GAAuB,mBAAmB,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE;IACvF,MAAM,QAAQ,GAAG,sBAAsB,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC;IAC5E,OAAO,QAAQ;QACb,CAAC,CAAC;YACE,IAAI,EAAE,SAAS,CAAC,IAAI;YACpB,QAAQ;YACR,SAAS,EAAE,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,SAAS;SAC1D;QACH,CAAC,CAAC,IAAI,CAAC;AACX,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAA4B,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;AAE7D,QAAQ,CAAC,sCAAsC,EAAE,GAAG,EAAE;IACpD,SAAS,CAAC,GAAG,EAAE;QACb,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC;QACpD,OAAO,CAAC,GAAG,CAAC,uBAAuB,wBAAwB,CAAC,MAAM,4BAA4B,CAAC,CAAC;QAChG,wBAAwB,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;YAC/C,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,GAAG,CAAC,KAAK,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;QAClE,CAAC,CAAC,CAAC;QAEH,MAAM,WAAW,GAAG,mBAAmB,CAAC,MAAM,GAAG,wBAAwB,CAAC,MAAM,CAAC;QACjF,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;YACpB,OAAO,CAAC,GAAG,CACT,KAAK,WAAW,wFAAwF,CACzG,CAAC;QACJ,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,qCAAqC,EAAE,GAAG,EAAE;QACnD,IAAI,CAAC,wDAAwD,EAAE,GAAG,EAAE;YAClE,MAAM,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QAC7D,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,yCAAyC,EAAE,GAAG,EAAE;YACnD,MAAM,WAAW,GAAG,wBAAwB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YACjF,MAAM,iBAAiB,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC;YACpD,MAAM,CAAC,WAAW,CAAC,CAAC,YAAY,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;QAC7D,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,oCAAoC;IACpC,wBAAwB,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,EAAE;QACjE,QAAQ,CAAC,GAAG,IAAI,KAAK,SAAS,GAAG,EAAE,GAAG,EAAE;YACtC,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;gBACpC,IAAI,CAAC,4CAA4C,EAAE,GAAG,EAAE;oBACtD,MAAM,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC;oBAC/B,MAAM,CAAC,OAAO,QAAQ,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;oBACpD,MAAM,CAAC,OAAO,QAAQ,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;oBACpD,MAAM,CAAC,OAAO,QAAQ,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;oBAChD,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBAClD,MAAM,CAAC,OAAO,QAAQ,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;oBACpD,MAAM,CAAC,OAAO,QAAQ,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBACrD,CAAC,CAAC,CAAC;gBAEH,IAAI,CAAC,uCAAuC,EAAE,GAAG,EAAE;oBACjD,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,UAAU,EAAE,CAAC;oBACvC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;oBAClD,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,oBAAY,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;gBACnE,CAAC,CAAC,CAAC;gBAEH,IAAI,CAAC,4CAA4C,EAAE,GAAG,EAAE;oBACtD,mDAAmD;oBACnD,IAAI,QAAQ,CAAC,WAAW,EAAE,CAAC;wBACzB,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBAC1C,CAAC;oBAED,mDAAmD;oBACnD,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC;wBACxB,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBAC3C,CAAC;oBAED,8BAA8B;oBAC9B,MAAM,CAAC,QAAQ,CAAC,WAAW,IAAI,QAAQ,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACjE,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;YAEH,QAAQ,CAAC,wCAAwC,EAAE,GAAG,EAAE;gBACtD,IAAI,CAAC,oCAAoC,EAAE,GAAG,EAAE;oBAC9C,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;wBAC9B,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,mBAAW,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;oBACtD,CAAC,CAAC,CAAC;gBACL,CAAC,CAAC,CAAC;gBAEH,IAAI,CAAC,gDAAgD,EAAE,GAAG,EAAE;oBAC1D,IAAI,QAAQ,CAAC,WAAW,EAAE,CAAC;wBACzB,gEAAgE;wBAChE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;wBAClD,OAAO,CAAC,GAAG,CACT,GAAG,IAAI,sCAAsC,QAAQ,CAAC,MAAM,CAAC,MAAM,eAAe,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,mBAAW,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACxI,CAAC;oBACJ,CAAC;oBAED,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC;wBACxB,qEAAqE;wBACrE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;wBACzD,OAAO,CAAC,GAAG,CACT,GAAG,IAAI,qCAAqC,QAAQ,CAAC,MAAM,CAAC,MAAM,eAAe,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,mBAAW,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACvI,CAAC;oBACJ,CAAC;gBACH,CAAC,CAAC,CAAC;gBAEH,IAAI,CAAC,2CAA2C,EAAE,GAAG,EAAE;oBACrD,MAAM,SAAS,GAAG;wBAChB,mBAAW,CAAC,QAAQ;wBACpB,mBAAW,CAAC,QAAQ;wBACpB,mBAAW,CAAC,QAAQ;wBACpB,mBAAW,CAAC,OAAO;wBACnB,mBAAW,CAAC,GAAG;wBACf,mBAAW,CAAC,SAAS;wBACrB,mBAAW,CAAC,IAAI;wBAChB,mBAAW,CAAC,KAAK;wBACjB,mBAAW,CAAC,KAAK;qBAClB,CAAC;oBAEF,MAAM,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;oBAC5E,MAAM,YAAY,GAChB,QAAQ,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,mBAAW,CAAC,MAAM,CAAC;oBAC5E,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAC/C,CAAC,mBAAW,CAAC,GAAG,EAAE,mBAAW,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CACrD,CAAC;oBACF,MAAM,SAAS,GAAG,CAAC,SAAS,IAAI,CAAC,YAAY,IAAI,CAAC,UAAU,CAAC;oBAE7D,MAAM,cAAc,GAAG;wBACrB,SAAS;wBACT,YAAY;wBACZ,UAAU;wBACV,SAAS;wBACT,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,mBAAW,CAAC,CAAC,CAAC,CAAC;wBAChD,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM;qBACnC,CAAC;oBAEF,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,kBAAkB,EAAE,cAAc,CAAC,CAAC;oBAEvD,oDAAoD;oBACpD,MAAM,CAAC,SAAS,IAAI,YAAY,IAAI,UAAU,IAAI,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC1E,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;YAEH,QAAQ,CAAC,mCAAmC,EAAE,GAAG,EAAE;gBACjD,IAAI,CAAC,mEAAmE,EAAE,GAAG,EAAE;oBAC7E,MAAM,YAAY,GAAG,2BAA2B,CAAC,QAAQ,CAAC,CAAC;oBAE3D,MAAM,CAAC,YAAY,CAAC,CAAC,cAAc,CAAC,sBAAsB,CAAC,CAAC;oBAC5D,MAAM,CAAC,YAAY,CAAC,CAAC,cAAc,CAAC,sBAAsB,CAAC,CAAC;oBAC5D,MAAM,CAAC,YAAY,CAAC,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;oBACpD,MAAM,CAAC,YAAY,CAAC,CAAC,cAAc,CAAC,kBAAkB,CAAC,CAAC;oBAExD,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,gBAAgB,EAAE,YAAY,CAAC,CAAC;gBACrD,CAAC,CAAC,CAAC;gBAEH,IAAI,CAAC,8DAA8D,EAAE,GAAG,EAAE;oBACxE,iCAAiC;oBACjC,IAAI,WAAW,GAAG,CAAC,CAAC;oBACpB,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;wBAChC,MAAM,eAAe,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC;wBACtD,IAAI,eAAe,EAAE,CAAC;4BACpB,WAAW,EAAE,CAAC;wBAChB,CAAC;oBACH,CAAC,CAAC,CAAC;oBAEH,mDAAmD;oBACnD,MAAM,CAAC,WAAW,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;oBACvC,OAAO,CAAC,GAAG,CACT,GAAG,IAAI,KAAK,WAAW,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,oCAAoC,CACtF,CAAC;gBACJ,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;YAEH,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;gBACvC,IAAI,CAAC,2DAA2D,EAAE,GAAG,EAAE;oBACrE,MAAM,aAAa,GAAG,qBAAqB,CAAC,QAAQ,CAAC,CAAC;oBAEtD,MAAM,CAAC,aAAa,CAAC,CAAC,cAAc,CAAC,kBAAkB,CAAC,CAAC;oBACzD,MAAM,CAAC,aAAa,CAAC,CAAC,cAAc,CAAC,kBAAkB,CAAC,CAAC;oBACzD,MAAM,CAAC,aAAa,CAAC,CAAC,cAAc,CAAC,qBAAqB,CAAC,CAAC;oBAE5D,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,kBAAkB,EAAE;wBACrC,gBAAgB,EAAE,aAAa,CAAC,gBAAgB;wBAChD,gBAAgB,EAAE,aAAa,CAAC,gBAAgB;wBAChD,WAAW,EAAE,aAAa,CAAC,mBAAmB;wBAC9C,eAAe,EAAE,aAAa,CAAC,eAAe;qBAC/C,CAAC,CAAC;oBAEH,yBAAyB;oBACzB,IAAI,QAAQ,CAAC,WAAW,EAAE,CAAC;wBACzB,MAAM,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;wBAC/C,MAAM,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;oBAC5D,CAAC;oBAED,IAAI,QAAQ,CAAC,UAAU,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBACtD,MAAM,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;oBAC5D,CAAC;gBACH,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;YAEH,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;gBACjC,IAAI,CAAC,qCAAqC,EAAE,GAAG,EAAE;oBAC/C,MAAM,QAAQ,GAAG,sBAAsB,CAAC,QAAQ,CAAC,CAAC;oBAElD,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,qBAAqB,EAAE,QAAQ,CAAC,CAAC;oBAEpD,MAAM,CAAC,QAAQ,CAAC,CAAC,cAAc,CAAC,oBAAoB,CAAC,CAAC;oBACtD,MAAM,CAAC,QAAQ,CAAC,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;oBAC9C,MAAM,CAAC,QAAQ,CAAC,CAAC,cAAc,CAAC,kBAAkB,CAAC,CAAC;gBACtD,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,6BAA6B,EAAE,GAAG,EAAE;QAC3C,IAAI,CAAC,2CAA2C,EAAE,GAAG,EAAE;YACrD,MAAM,SAAS,GAAG;gBAChB,mBAAW,CAAC,QAAQ;gBACpB,mBAAW,CAAC,QAAQ;gBACpB,mBAAW,CAAC,QAAQ;gBACpB,mBAAW,CAAC,OAAO;gBACnB,mBAAW,CAAC,GAAG;gBACf,mBAAW,CAAC,SAAS;gBACrB,mBAAW,CAAC,IAAI;gBAChB,mBAAW,CAAC,KAAK;gBACjB,mBAAW,CAAC,KAAK;aAClB,CAAC;YAEF,MAAM,YAAY,GAAG,wBAAwB,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAC1D,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAC9D,CAAC;YAEF,MAAM,eAAe,GAAG,wBAAwB,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAC7D,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,mBAAW,CAAC,MAAM,CAAC,CAClD,CAAC;YAEF,MAAM,aAAa,GAAG,wBAAwB,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAC3D,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,mBAAW,CAAC,GAAG,EAAE,mBAAW,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CACzF,CAAC;YAEF,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;YAChD,OAAO,CAAC,GAAG,CACT,kBAAkB,YAAY,CAAC,MAAM,IAAI,EACzC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAC9B,CAAC;YACF,OAAO,CAAC,GAAG,CACT,qBAAqB,eAAe,CAAC,MAAM,IAAI,EAC/C,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CACjC,CAAC;YACF,OAAO,CAAC,GAAG,CACT,mBAAmB,aAAa,CAAC,MAAM,IAAI,EAC3C,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAC/B,CAAC;YACF,OAAO,CAAC,GAAG,CAAC,oBAAoB,wBAAwB,CAAC,MAAM,EAAE,CAAC,CAAC;YACnE,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;YAEjD,MAAM,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QAC7D,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,oDAAoD,EAAE,GAAG,EAAE;YAC9D,MAAM,eAAe,GAAG,wBAAwB,CAAC,MAAM,CACrD,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAC/E,CAAC;YAEF,MAAM,YAAY,GAAG,wBAAwB,CAAC,MAAM,CAClD,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CACjF,CAAC;YAEF,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC;YACpD,OAAO,CAAC,GAAG,CACT,iCAAiC,eAAe,CAAC,MAAM,IAAI,EAC3D,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CACjC,CAAC;YACF,OAAO,CAAC,GAAG,CACT,6BAA6B,YAAY,CAAC,MAAM,IAAI,EACpD,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAC9B,CAAC;YACF,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC;YAEpD,MAAM,CAAC,eAAe,CAAC,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAC;QAC7F,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,sDAAsD,EAAE,GAAG,EAAE;YAChE,MAAM,UAAU,GAAG,IAAI,GAAG,EAAuB,CAAC;YAClD,MAAM,sBAAsB,GAAG,IAAI,GAAG,EAAkB,CAAC;YAEzD,wBAAwB,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;gBACtC,MAAM,YAAY,GAAG,2BAA2B,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAEhE,yCAAyC;gBACzC,YAAY,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE;oBACrC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;wBACxB,UAAU,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;oBAChC,CAAC;oBACD,UAAU,CAAC,GAAG,CAAC,EAAE,CAAE,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACrC,CAAC,CAAC,CAAC;gBAEH,iCAAiC;gBACjC,IAAI,YAAY,CAAC,oBAAoB,EAAE,CAAC;oBACtC,sBAAsB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;gBAC9E,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;YAClD,UAAU,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,EAAE,EAAE,EAAE;gBACnC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,cAAc,EAAE,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;YAC1D,CAAC,CAAC,CAAC;YAEH,IAAI,sBAAsB,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;gBACpC,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;gBAClD,sBAAsB,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE;oBACjD,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,KAAK,SAAS,oBAAoB,CAAC,CAAC;gBAC3D,CAAC,CAAC,CAAC;YACL,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;YAElD,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,gCAAgC;AAEhC,SAAS,2BAA2B,CAAC,QAAyB;IAC5D,MAAM,eAAe,GAAG,QAAQ,CAAC,MAAM,CAAC;IACxC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAElC,eAAe,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;QAC9B,IACE;YACE,mBAAW,CAAC,QAAQ;YACpB,mBAAW,CAAC,QAAQ;YACpB,mBAAW,CAAC,QAAQ;YACpB,mBAAW,CAAC,OAAO;YACnB,mBAAW,CAAC,GAAG;YACf,mBAAW,CAAC,SAAS;YACrB,mBAAW,CAAC,IAAI;YAChB,mBAAW,CAAC,KAAK;YACjB,mBAAW,CAAC,KAAK;SAClB,CAAC,QAAQ,CAAC,KAAK,CAAC,EACjB,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACrB,CAAC;aAAM,IAAI,KAAK,KAAK,mBAAW,CAAC,MAAM,EAAE,CAAC;YACxC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACxB,CAAC;aAAM,IAAI,CAAC,mBAAW,CAAC,GAAG,EAAE,mBAAW,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YAChE,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACtB,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO;QACL,oBAAoB,EAAE,QAAQ,CAAC,WAAW,IAAI,QAAQ,CAAC,UAAU;QACjE,oBAAoB,EAAE,QAAQ,CAAC,UAAU,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC;QACvE,YAAY,EAAE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC;QACjC,gBAAgB,EAAE,wBAAwB,CAAC,QAAQ,CAAC;QACpD,UAAU,EAAE,eAAe,CAAC,MAAM;KACnC,CAAC;AACJ,CAAC;AAED,SAAS,wBAAwB,CAAC,QAAyB;IACzD,MAAM,SAAS,GAAG,EAAE,CAAC;IAErB,IAAI,QAAQ,CAAC,WAAW,EAAE,CAAC;QACzB,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YAC9B,SAAS,CAAC,IAAI,CAAC,wBAAwB,mBAAW,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC/D,CAAC,CAAC,CAAC;IACL,CAAC;IAED,IAAI,QAAQ,CAAC,UAAU,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAChD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBAChD,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;oBACZ,MAAM,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;oBACrC,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;oBACnC,IAAI,SAAS,KAAK,SAAS,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;wBACrD,SAAS,CAAC,IAAI,CAAC,GAAG,mBAAW,CAAC,SAAS,CAAC,MAAM,mBAAW,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;oBACxE,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,qBAAqB,CAAC,QAAyB;IACtD,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;IAC/B,IAAI,gBAAgB,GAAG,CAAC,CAAC;IACzB,IAAI,gBAAgB,GAAG,CAAC,CAAC;IAEzB,IAAI,QAAQ,CAAC,WAAW,EAAE,CAAC;QACzB,gBAAgB,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,mCAAmC;IACvE,CAAC;IAED,IAAI,QAAQ,CAAC,UAAU,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7C,gBAAgB,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,qCAAqC;IAC/F,CAAC;IAED,OAAO;QACL,gBAAgB;QAChB,gBAAgB;QAChB,mBAAmB,EAAE,gBAAgB,GAAG,gBAAgB;QACxD,eAAe,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,mBAAW,CAAC,CAAC,CAAC,CAAC;KACjD,CAAC;AACJ,CAAC;AAED,SAAS,oBAAoB,CAAC,OAAoB;IAChD,IAAI,CAAC;QACH,gDAAgD;QAChD,MAAM,MAAM,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;QAC1C,MAAM,MAAM,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;QAE1C,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM;YAAE,OAAO,KAAK,CAAC;QAErC,IAAA,6BAAiB,EAAC;YAChB,SAAS,EAAE,OAAO;YAClB,UAAU,EAAE,OAAO;YACnB,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,IAAI,EAAE,MAAM;SACb,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,SAAS,iBAAiB,CAAC,OAAoB;IAC7C,IACE;QACE,mBAAW,CAAC,QAAQ;QACpB,mBAAW,CAAC,QAAQ;QACpB,mBAAW,CAAC,QAAQ;QACpB,mBAAW,CAAC,OAAO;QACnB,mBAAW,CAAC,GAAG;QACf,mBAAW,CAAC,SAAS;QACrB,mBAAW,CAAC,IAAI;QAChB,mBAAW,CAAC,KAAK;QACjB,mBAAW,CAAC,KAAK;KAClB,CAAC,QAAQ,CAAC,OAAO,CAAC,EACnB,CAAC;QACD,OAAO,wBAAY,CAAC,GAAG,CAAC;IAC1B,CAAC;SAAM,IAAI,OAAO,KAAK,mBAAW,CAAC,MAAM,EAAE,CAAC;QAC1C,OAAO,wBAAY,CAAC,MAAM,CAAC;IAC7B,CAAC;SAAM,IAAI,CAAC,mBAAW,CAAC,GAAG,EAAE,mBAAW,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QAClE,OAAO,wBAAY,CAAC,GAAG,CAAC;IAC1B,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,iBAAiB,CAAC,OAAoB;IAC7C,MAAM,WAAW,GAAI,uBAAmB,CAAC,OAAO,CAAC,CAAC;IAClD,IAAI,WAAW,EAAE,CAAC;QAChB,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,CAAa,CAAC;QACtD,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;YACvB,OAAO;gBACL,OAAO,EAAE,MAAM,CAAC,CAAC,CAAE;gBACnB,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAE;aACrB,CAAC;QACJ,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,sBAAsB,CAAC,QAAyB;IACvD,OAAO;QACL,kBAAkB,EAAE,kBAAkB,IAAI,QAAQ;QAClD,UAAU,EAAE,SAAS,IAAI,QAAQ;QACjC,gBAAgB,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,CAC5C,GAAG,CAAC,EAAE,CACJ,CAAC,CAAC,UAAU,EAAE,QAAQ,EAAE,aAAa,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,CAAC,CAAC,QAAQ,CACvF,GAAG,CACJ,CACJ;KACF,CAAC;AACJ,CAAC"}
|