@layerzerolabs/chain-utils 0.2.58 → 0.2.60
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/.turbo/turbo-build.log +21 -21
- package/.turbo/turbo-lint.log +1 -1
- package/.turbo/turbo-test.log +4 -4
- package/dist/{3457WEGJ.js → OVN7SCH2.js} +75 -9
- package/dist/OVN7SCH2.js.map +1 -0
- package/dist/{QNFJ2P5R.cjs → X46YPLVF.cjs} +74 -8
- package/dist/X46YPLVF.cjs.map +1 -0
- package/dist/addressParser.cjs +9 -9
- package/dist/addressParser.d.ts +3 -2
- package/dist/addressParser.d.ts.map +1 -1
- package/dist/addressParser.js +1 -1
- package/dist/addressParser.test.cjs +174 -10
- package/dist/addressParser.test.cjs.map +1 -1
- package/dist/addressParser.test.js +167 -3
- package/dist/addressParser.test.js.map +1 -1
- package/dist/index.cjs +9 -9
- package/dist/index.js +1 -1
- package/package.json +9 -9
- package/src/addressParser.test.ts +181 -3
- package/src/addressParser.ts +99 -8
- package/dist/3457WEGJ.js.map +0 -1
- package/dist/QNFJ2P5R.cjs.map +0 -1
package/.turbo/turbo-build.log
CHANGED
|
@@ -11,32 +11,32 @@
|
|
|
11
11
|
[34mCLI[39m Cleaning output folder
|
|
12
12
|
[34mCJS[39m Build start
|
|
13
13
|
[34mESM[39m Build start
|
|
14
|
+
Entry module "dist/ZZHCL54L.cjs" is using named and default exports together. Consumers of your bundle will have to use `chunk.default` to access the default export, which may not be what you want. Use `output.exports: "named"` to disable this warning.
|
|
14
15
|
"default" is imported from external module "path" but never used in "dist/CWKWODSW.js".
|
|
15
16
|
"fileURLToPath" is imported from external module "url" but never used in "dist/CWKWODSW.js".
|
|
16
|
-
Entry module "dist/ZZHCL54L.cjs" is using named and default exports together. Consumers of your bundle will have to use `chunk.default` to access the default export, which may not be what you want. Use `output.exports: "named"` to disable this warning.
|
|
17
|
-
[32mESM[39m [1mdist/index.js [22m[32m337.00 B[39m
|
|
18
|
-
[32mESM[39m [1mdist/addressParser.js [22m[32m294.00 B[39m
|
|
19
|
-
[32mESM[39m [1mdist/3457WEGJ.js [22m[32m17.30 KB[39m
|
|
20
|
-
[32mESM[39m [1mdist/CWKWODSW.js [22m[32m1.87 KB[39m
|
|
21
|
-
[32mESM[39m [1mdist/PYS2ZW6G.js [22m[32m42.16 KB[39m
|
|
22
|
-
[32mESM[39m [1mdist/addressParser.test.js [22m[32m655.49 KB[39m
|
|
23
|
-
[32mESM[39m [1mdist/index.js.map [22m[32m160.00 B[39m
|
|
24
|
-
[32mESM[39m [1mdist/CWKWODSW.js.map [22m[32m669.00 B[39m
|
|
25
|
-
[32mESM[39m [1mdist/3457WEGJ.js.map [22m[32m40.90 KB[39m
|
|
26
|
-
[32mESM[39m [1mdist/addressParser.js.map [22m[32m77.00 B[39m
|
|
27
|
-
[32mESM[39m [1mdist/PYS2ZW6G.js.map [22m[32m100.20 KB[39m
|
|
28
|
-
[32mESM[39m [1mdist/addressParser.test.js.map [22m[32m1.61 MB[39m
|
|
29
|
-
[32mESM[39m ⚡️ Build success in 3205ms
|
|
30
17
|
[32mCJS[39m [1mdist/addressParser.cjs [22m[32m1.27 KB[39m
|
|
31
18
|
[32mCJS[39m [1mdist/index.cjs [22m[32m1.32 KB[39m
|
|
32
|
-
[32mCJS[39m [1mdist/
|
|
33
|
-
[32mCJS[39m [1mdist/KHVGLVR5.cjs [22m[32m2.10 KB[39m
|
|
19
|
+
[32mCJS[39m [1mdist/X46YPLVF.cjs [22m[32m23.30 KB[39m
|
|
34
20
|
[32mCJS[39m [1mdist/ZZHCL54L.cjs [22m[32m42.51 KB[39m
|
|
35
|
-
[32mCJS[39m [1mdist/
|
|
21
|
+
[32mCJS[39m [1mdist/KHVGLVR5.cjs [22m[32m2.10 KB[39m
|
|
22
|
+
[32mCJS[39m [1mdist/addressParser.test.cjs [22m[32m676.38 KB[39m
|
|
36
23
|
[32mCJS[39m [1mdist/addressParser.cjs.map [22m[32m78.00 B[39m
|
|
37
24
|
[32mCJS[39m [1mdist/index.cjs.map [22m[32m181.00 B[39m
|
|
38
|
-
[32mCJS[39m [1mdist/
|
|
39
|
-
[32mCJS[39m [1mdist/KHVGLVR5.cjs.map [22m[32m926.00 B[39m
|
|
25
|
+
[32mCJS[39m [1mdist/X46YPLVF.cjs.map [22m[32m48.66 KB[39m
|
|
40
26
|
[32mCJS[39m [1mdist/ZZHCL54L.cjs.map [22m[32m100.23 KB[39m
|
|
41
|
-
[32mCJS[39m [1mdist/
|
|
42
|
-
[32mCJS[39m
|
|
27
|
+
[32mCJS[39m [1mdist/KHVGLVR5.cjs.map [22m[32m926.00 B[39m
|
|
28
|
+
[32mCJS[39m [1mdist/addressParser.test.cjs.map [22m[32m1.63 MB[39m
|
|
29
|
+
[32mCJS[39m ⚡️ Build success in 3521ms
|
|
30
|
+
[32mESM[39m [1mdist/addressParser.js [22m[32m294.00 B[39m
|
|
31
|
+
[32mESM[39m [1mdist/index.js [22m[32m337.00 B[39m
|
|
32
|
+
[32mESM[39m [1mdist/CWKWODSW.js [22m[32m1.87 KB[39m
|
|
33
|
+
[32mESM[39m [1mdist/OVN7SCH2.js [22m[32m20.71 KB[39m
|
|
34
|
+
[32mESM[39m [1mdist/PYS2ZW6G.js [22m[32m42.16 KB[39m
|
|
35
|
+
[32mESM[39m [1mdist/addressParser.test.js [22m[32m661.84 KB[39m
|
|
36
|
+
[32mESM[39m [1mdist/index.js.map [22m[32m160.00 B[39m
|
|
37
|
+
[32mESM[39m [1mdist/addressParser.js.map [22m[32m77.00 B[39m
|
|
38
|
+
[32mESM[39m [1mdist/CWKWODSW.js.map [22m[32m669.00 B[39m
|
|
39
|
+
[32mESM[39m [1mdist/OVN7SCH2.js.map [22m[32m48.56 KB[39m
|
|
40
|
+
[32mESM[39m [1mdist/PYS2ZW6G.js.map [22m[32m100.20 KB[39m
|
|
41
|
+
[32mESM[39m [1mdist/addressParser.test.js.map [22m[32m1.63 MB[39m
|
|
42
|
+
[32mESM[39m ⚡️ Build success in 3525ms
|
package/.turbo/turbo-lint.log
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
> @layerzerolabs/chain-utils@0.0.0 lint /home/runner/work/monorepo-internal/monorepo-internal/packages/chain-abstractions/chain-utils
|
|
3
3
|
> eslint . --max-warnings 0 || (eslint . --fix --max-warnings 0 && false)
|
|
4
4
|
|
|
5
|
-
(node:
|
|
5
|
+
(node:59312) [MODULE_TYPELESS_PACKAGE_JSON] Warning: Module type of file:///home/runner/work/monorepo-internal/monorepo-internal/eslint.config.js?mtime=1774551354892 is not specified and it doesn't parse as CommonJS.
|
|
6
6
|
Reparsing as ES module because module syntax was detected. This incurs a performance overhead.
|
|
7
7
|
To eliminate this warning, add "type": "module" to /home/runner/work/monorepo-internal/monorepo-internal/package.json.
|
|
8
8
|
(Use `node --trace-warnings ...` to show where the warning was created)
|
package/.turbo/turbo-test.log
CHANGED
|
@@ -13,11 +13,11 @@ Breaking changes might not follow SemVer, please pin Vitest's version when using
|
|
|
13
13
|
error: [32m'The address invalid-ton-address cannot be decoded as TON, hex, or base58'[39m
|
|
14
14
|
}
|
|
15
15
|
|
|
16
|
-
[32m✓[39m src/addressParser.test.ts [2m([22m[
|
|
16
|
+
[32m✓[39m src/addressParser.test.ts [2m([22m[2m78 tests[22m[2m)[22m[32m 240[2mms[22m[39m
|
|
17
17
|
|
|
18
18
|
[2m Test Files [22m [1m[32m1 passed[39m[22m[90m (1)[39m
|
|
19
|
-
[2m Tests [22m [1m[
|
|
19
|
+
[2m Tests [22m [1m[32m78 passed[39m[22m[90m (78)[39m
|
|
20
20
|
[2mType Errors [22m [2mno errors[22m
|
|
21
|
-
[2m Start at [22m
|
|
22
|
-
[2m Duration [22m 2.
|
|
21
|
+
[2m Start at [22m 18:58:34
|
|
22
|
+
[2m Duration [22m 2.90s[2m (transform 626ms, setup 0ms, collect 2.11s, tests 240ms, environment 0ms, prepare 117ms)[22m
|
|
23
23
|
|
|
@@ -3,7 +3,7 @@ import { AccAddress } from '@initia/initia.js';
|
|
|
3
3
|
import { StrKey } from '@stellar/stellar-sdk';
|
|
4
4
|
import bs58 from 'bs58';
|
|
5
5
|
import { normalizeHex } from '@layerzerolabs/common-chain-model';
|
|
6
|
-
import {
|
|
6
|
+
import { hexToBytes, hexZeroPad, bytesToHexPrefixed, isBase58, isHexString } from '@layerzerolabs/common-encoding-utils';
|
|
7
7
|
import { addressToHex, bigintToAddress, parseTonAddress } from '@layerzerolabs/common-ton';
|
|
8
8
|
import { ChainName } from '@layerzerolabs/layerzero-definitions';
|
|
9
9
|
import { StaticChainConfigs } from '@layerzerolabs/static-chain-info';
|
|
@@ -28,15 +28,9 @@ function addressParser(chainName) {
|
|
|
28
28
|
}
|
|
29
29
|
__name(addressParser, "addressParser");
|
|
30
30
|
(function(addressParser2) {
|
|
31
|
-
addressParser2.normalizedToBytes32Hex = (address) => {
|
|
32
|
-
return hexZeroPad(address, 32);
|
|
33
|
-
};
|
|
34
31
|
addressParser2.normalizedToUnpaddedString = (address) => {
|
|
35
32
|
return address.toString();
|
|
36
33
|
};
|
|
37
|
-
addressParser2.normalizedToBytes32 = (address) => {
|
|
38
|
-
return hexToBytes(addressParser2.normalizedToBytes32Hex(address));
|
|
39
|
-
};
|
|
40
34
|
addressParser2.normalizedToBigInt = (address) => {
|
|
41
35
|
return BigInt(address);
|
|
42
36
|
};
|
|
@@ -97,6 +91,18 @@ var tonAddressParser = /* @__PURE__ */ __name((chainName) => {
|
|
|
97
91
|
if (nativeAddress === void 0) return void 0;
|
|
98
92
|
return hexToBytes(addressParser(chainName).nativeToBytes32Hex(nativeAddress));
|
|
99
93
|
}, "nativeToBytes32"),
|
|
94
|
+
normalizedToBytes32Hex: /* @__PURE__ */ __name((address) => {
|
|
95
|
+
if (address === void 0) return void 0;
|
|
96
|
+
return hexZeroPad(address, 32);
|
|
97
|
+
}, "normalizedToBytes32Hex"),
|
|
98
|
+
normalizedToBytes32: /* @__PURE__ */ __name((address) => {
|
|
99
|
+
if (address === void 0) return void 0;
|
|
100
|
+
return hexToBytes(addressParser(chainName).normalizedToBytes32Hex(address));
|
|
101
|
+
}, "normalizedToBytes32"),
|
|
102
|
+
bytes32ToNormalized: /* @__PURE__ */ __name((bytes32Hex) => {
|
|
103
|
+
if (bytes32Hex === void 0) return void 0;
|
|
104
|
+
return normalizeHex(bytes32Hex);
|
|
105
|
+
}, "bytes32ToNormalized"),
|
|
100
106
|
parseNative: /* @__PURE__ */ __name((nativeAddress) => {
|
|
101
107
|
assertNative(nativeAddress, chainName);
|
|
102
108
|
return addressParser(chainName).nativeToNormalized(nativeAddress);
|
|
@@ -156,6 +162,18 @@ var initiaAddressParser = /* @__PURE__ */ __name((chainName) => {
|
|
|
156
162
|
if (nativeAddress === void 0) return void 0;
|
|
157
163
|
return hexToBytes(addressParser(chainName).nativeToBytes32Hex(nativeAddress));
|
|
158
164
|
}, "nativeToBytes32"),
|
|
165
|
+
normalizedToBytes32Hex: /* @__PURE__ */ __name((address) => {
|
|
166
|
+
if (address === void 0) return void 0;
|
|
167
|
+
return hexZeroPad(address, 32);
|
|
168
|
+
}, "normalizedToBytes32Hex"),
|
|
169
|
+
normalizedToBytes32: /* @__PURE__ */ __name((address) => {
|
|
170
|
+
if (address === void 0) return void 0;
|
|
171
|
+
return hexToBytes(addressParser(chainName).normalizedToBytes32Hex(address));
|
|
172
|
+
}, "normalizedToBytes32"),
|
|
173
|
+
bytes32ToNormalized: /* @__PURE__ */ __name((bytes32Hex) => {
|
|
174
|
+
if (bytes32Hex === void 0) return void 0;
|
|
175
|
+
return normalizeHex(bytes32Hex);
|
|
176
|
+
}, "bytes32ToNormalized"),
|
|
159
177
|
parseNative: /* @__PURE__ */ __name((nativeAddress) => {
|
|
160
178
|
assertNative(nativeAddress, chainName);
|
|
161
179
|
return addressParser(chainName).nativeToNormalized(nativeAddress);
|
|
@@ -204,6 +222,18 @@ var base58AddressParser = /* @__PURE__ */ __name((chainName) => {
|
|
|
204
222
|
if (nativeAddress === void 0) return void 0;
|
|
205
223
|
return hexToBytes(addressParser(chainName).nativeToBytes32Hex(nativeAddress));
|
|
206
224
|
}, "nativeToBytes32"),
|
|
225
|
+
normalizedToBytes32Hex: /* @__PURE__ */ __name((address) => {
|
|
226
|
+
if (address === void 0) return void 0;
|
|
227
|
+
return hexZeroPad(address, 32);
|
|
228
|
+
}, "normalizedToBytes32Hex"),
|
|
229
|
+
normalizedToBytes32: /* @__PURE__ */ __name((address) => {
|
|
230
|
+
if (address === void 0) return void 0;
|
|
231
|
+
return hexToBytes(addressParser(chainName).normalizedToBytes32Hex(address));
|
|
232
|
+
}, "normalizedToBytes32"),
|
|
233
|
+
bytes32ToNormalized: /* @__PURE__ */ __name((bytes32Hex) => {
|
|
234
|
+
if (bytes32Hex === void 0) return void 0;
|
|
235
|
+
return normalizeHex(bytes32Hex);
|
|
236
|
+
}, "bytes32ToNormalized"),
|
|
207
237
|
parseNative: /* @__PURE__ */ __name((nativeAddress) => {
|
|
208
238
|
assertNative(nativeAddress, chainName);
|
|
209
239
|
return addressParser(chainName).nativeToNormalized(nativeAddress);
|
|
@@ -256,6 +286,18 @@ var hexAddressParser = /* @__PURE__ */ __name((chainName) => {
|
|
|
256
286
|
if (nativeAddress === void 0) return void 0;
|
|
257
287
|
return hexToBytes(addressParser(chainName).nativeToBytes32Hex(nativeAddress));
|
|
258
288
|
}, "nativeToBytes32"),
|
|
289
|
+
normalizedToBytes32Hex: /* @__PURE__ */ __name((address) => {
|
|
290
|
+
if (address === void 0) return void 0;
|
|
291
|
+
return hexZeroPad(address, 32);
|
|
292
|
+
}, "normalizedToBytes32Hex"),
|
|
293
|
+
normalizedToBytes32: /* @__PURE__ */ __name((address) => {
|
|
294
|
+
if (address === void 0) return void 0;
|
|
295
|
+
return hexToBytes(addressParser(chainName).normalizedToBytes32Hex(address));
|
|
296
|
+
}, "normalizedToBytes32"),
|
|
297
|
+
bytes32ToNormalized: /* @__PURE__ */ __name((bytes32Hex) => {
|
|
298
|
+
if (bytes32Hex === void 0) return void 0;
|
|
299
|
+
return normalizeHex(bytes32Hex);
|
|
300
|
+
}, "bytes32ToNormalized"),
|
|
259
301
|
parseNative: /* @__PURE__ */ __name((nativeAddress) => {
|
|
260
302
|
if (chainName === ChainName.TRON && nativeAddress) {
|
|
261
303
|
nativeAddress = nativeAddress.startsWith("41") ? `0x${nativeAddress.slice(2)}` : nativeAddress;
|
|
@@ -269,6 +311,16 @@ var hexAddressParser = /* @__PURE__ */ __name((chainName) => {
|
|
|
269
311
|
encoding: "hex"
|
|
270
312
|
};
|
|
271
313
|
}, "hexAddressParser");
|
|
314
|
+
var BYTES32_HEX_LENGTH = 64;
|
|
315
|
+
var hexToStellarNative = /* @__PURE__ */ __name((address) => {
|
|
316
|
+
if (!address || !address.startsWith("0x") || !isHexString(address)) return address;
|
|
317
|
+
const hexPayload = address.slice(2);
|
|
318
|
+
if (hexPayload.length !== BYTES32_HEX_LENGTH) {
|
|
319
|
+
throw new Error(`Stellar hex address must be exactly 32 bytes (${BYTES32_HEX_LENGTH} hex chars), got ${hexPayload.length}: ${address}`);
|
|
320
|
+
}
|
|
321
|
+
const raw = Buffer.from(hexPayload, "hex");
|
|
322
|
+
return StrKey.encodeContract(raw);
|
|
323
|
+
}, "hexToStellarNative");
|
|
272
324
|
var stellarAddressParser = /* @__PURE__ */ __name((chainName) => {
|
|
273
325
|
const isValidStellarAddress = /* @__PURE__ */ __name((address) => {
|
|
274
326
|
if (!address) return false;
|
|
@@ -341,11 +393,25 @@ var stellarAddressParser = /* @__PURE__ */ __name((chainName) => {
|
|
|
341
393
|
const hex = addressParser(chainName).nativeToBytes32Hex(nativeAddress);
|
|
342
394
|
return hexToBytes(hex);
|
|
343
395
|
}, "nativeToBytes32"),
|
|
396
|
+
normalizedToBytes32Hex: /* @__PURE__ */ __name((address) => {
|
|
397
|
+
if (address === void 0) return void 0;
|
|
398
|
+
return addressParser(chainName).nativeToBytes32Hex(addressParser(chainName).normalizedToNativeString(address));
|
|
399
|
+
}, "normalizedToBytes32Hex"),
|
|
400
|
+
normalizedToBytes32: /* @__PURE__ */ __name((address) => {
|
|
401
|
+
if (address === void 0) return void 0;
|
|
402
|
+
return hexToBytes(addressParser(chainName).normalizedToBytes32Hex(address));
|
|
403
|
+
}, "normalizedToBytes32"),
|
|
404
|
+
bytes32ToNormalized: /* @__PURE__ */ __name((bytes32Hex) => {
|
|
405
|
+
if (bytes32Hex === void 0) return void 0;
|
|
406
|
+
return stellarAsciiToNormalized(StrKey.encodeContract(Buffer.from(hexToBytes(bytes32Hex))));
|
|
407
|
+
}, "bytes32ToNormalized"),
|
|
344
408
|
parseNative: /* @__PURE__ */ __name((nativeAddress) => {
|
|
409
|
+
nativeAddress = hexToStellarNative(nativeAddress);
|
|
345
410
|
assertNative(nativeAddress, chainName);
|
|
346
411
|
return addressParser(chainName).nativeToNormalized(nativeAddress);
|
|
347
412
|
}, "parseNative"),
|
|
348
413
|
parseNativeToUnpaddedHex: /* @__PURE__ */ __name((nativeAddress) => {
|
|
414
|
+
nativeAddress = hexToStellarNative(nativeAddress);
|
|
349
415
|
assertNative(nativeAddress, chainName);
|
|
350
416
|
const normalized = addressParser(chainName).nativeToNormalized(nativeAddress);
|
|
351
417
|
return normalized;
|
|
@@ -381,5 +447,5 @@ var starknetAddressParser = /* @__PURE__ */ __name((chainName) => {
|
|
|
381
447
|
}, "starknetAddressParser");
|
|
382
448
|
|
|
383
449
|
export { AddressEncoding, addressParser, base58AddressParser, hexAddressParser, initiaAddressParser, starknetAddressParser, stellarAddressParser, tonAddressParser };
|
|
384
|
-
//# sourceMappingURL=
|
|
385
|
-
//# sourceMappingURL=
|
|
450
|
+
//# sourceMappingURL=OVN7SCH2.js.map
|
|
451
|
+
//# sourceMappingURL=OVN7SCH2.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/addressParser.ts"],"names":["AddressEncoding","addressParser","chainName","ChainName","TON","tonAddressParser","SOLANA","base58AddressParser","INITIA","initiaAddressParser","STELLAR","stellarAddressParser","STARKNET","starknetAddressParser","hexAddressParser","normalizedToUnpaddedString","address","toString","normalizedToBigInt","BigInt","parseNative","nativeAddress","assertNative","expectedChainName","validateNative","Error","getAddress","undefined","parseTonAddress","normalizedToNative","numericalValue","bigintToAddress","normalizedToNativeString","nativeToNormalized","normalizeHex","addressToHex","nativeToBytes32Hex","hexZeroPad","nativeToBytes","hexToBytes","nativeToBytes32","normalizedToBytes32Hex","normalizedToBytes32","bytes32ToNormalized","bytes32Hex","parseNativeToUnpaddedHex","tonToNormalized","tonAddress","encoding","isHexString","test","AccAddress","fromHex","toHex","isBase58","bs58","encode","hex","bytesToHexPrefixed","decode","nativeByteLength","StaticChainConfigs","getAddressSizeInBytes","TRON","startsWith","slice","BYTES32_HEX_LENGTH","hexToStellarNative","hexPayload","length","raw","Buffer","from","StrKey","encodeContract","isValidStellarAddress","isValidEd25519PublicKey","isValidContract","isValidMed25519PublicKey","isValidLiquidityPool","isValidClaimableBalance","isValidSignedPayload","stellarTextEncoder","TextEncoder","stellarAsciiToNormalized","bytes","stellarTextDecoder","TextDecoder","normalizedToStellarAscii","normalizedHex","stellarAddress","rawBytes","decodeEd25519PublicKey","decodeContract","decodeLiquidityPool","fullBytes","decodeClaimableBalance","subarray","normalized"],"mappings":";;;;;;;;;;;AAAA,cAAA,EAAA;AAiCO,IAAKA,eAAAA,6BAAAA,gBAAAA,EAAAA;;;;;;AAAAA,EAAAA,OAAAA,gBAAAA;;AA6DL,SAASC,cAAmCC,SAAAA,EAAY;AAE3D,EAAA,IAAIA,SAAAA,KAAcC,SAAAA,CAAUC,GAAAA,EACxB,OAAOC,iBAAiBH,SAAAA,CAAAA;AAC5B,EAAA,IAAIA,SAAAA,KAAcC,SAAAA,CAAUG,MAAAA,EACxB,OAAOC,oBAAoBL,SAAAA,CAAAA;AAC/B,EAAA,IAAIA,SAAAA,KAAcC,SAAAA,CAAUK,MAAAA,EACxB,OAAOC,oBAAoBP,SAAAA,CAAAA;AAC/B,EAAA,IAAIA,SAAAA,KAAcC,SAAAA,CAAUO,OAAAA,EACxB,OAAOC,qBAAqBT,SAAAA,CAAAA;AAChC,EAAA,IAAIA,SAAAA,KAAcC,SAAAA,CAAUS,QAAAA,EACxB,OAAOC,sBAAsBX,SAAAA,CAAAA;AACjC,EAAA,OAAOY,iBAAiBZ,SAAAA,CAAAA;AAC5B;AAbgBD,MAAAA,CAAAA,aAAAA,EAAAA,eAAAA,CAAAA;UAeCA,cAAAA,EAAAA;AACAc,EAAAA,cAAAA,CAAAA,0BAAAA,GAA6B,CAACC,OAAAA,KAAAA;AACvC,IAAA,OAAOA,QAAQC,QAAAA,EAAQ;AAC3B,EAAA,CAAA;AAEaC,EAAAA,cAAAA,CAAAA,kBAAAA,GAAqB,CAACF,OAAAA,KAAAA;AAC/B,IAAA,OAAOG,OAAOH,OAAAA,CAAAA;AAClB,EAAA,CAAA;AAEaI,EAAAA,cAAAA,CAAAA,WAAAA,GAAc,CAACC,aAAAA,KAAAA;AACxB,IAAA,OAAOpB,eAAcoB,aAAAA,CAAcnB,SAAS,CAAA,CAAEkB,WAAAA,CAAYC,cAAcA,aAAa,CAAA;AACzF,EAAA,CAAA;AACJ,CAAA,EAZiBpB,aAAAA,KAAAA,aAAAA,GAAAA,EAAAA,CAAAA,CAAAA;AAcjB,SAASqB,YAAAA,CACLD,eACAE,iBAAAA,EAAoB;AAEpB,EAAA,IAAI,CAACtB,aAAAA,CAAcsB,iBAAAA,CAAAA,CAAmBC,cAAAA,CAAeH,aAAAA,CAAAA,EAAgB;AACjE,IAAA,MAAM,IAAII,KAAAA,CACN,mBAAA,GACIJ,aAAAA,GACA,8EACAE,iBAAAA,CAAAA;AAEZ,EAAA;AACJ;AAZSD,MAAAA,CAAAA,YAAAA,EAAAA,cAAAA,CAAAA;AAcT,IAAMI,UAAAA,2BAAmCL,aAAAA,KAAAA;AACrC,EAAA,OAAO,OAAOA,aAAAA,KAAkB,QAAA,GAAWA,aAAAA,CAAcA,aAAAA,GAAgBA,aAAAA;AAC7E,CAAA,EAFmB,YAAA,CAAA;AAIZ,IAAMhB,gBAAAA,2BAEqDH,SAAAA,KAAAA;AAC9D,EAAA,OAAO;AACHsB,IAAAA,cAAAA,0BAAiBH,aAAAA,KAAAA;AACb,MAAA,IAAIA,kBAAkBM,MAAAA,EAAW;AAC7B,QAAA,OAAO,KAAA;AACX,MAAA;AACA,MAAA,IAAI;AACAC,QAAAA,eAAAA,CAAgBP,aAAAA,CAAAA;AAChB,QAAA,OAAO,IAAA;MACX,CAAA,CAAA,MAAQ;AACJ,QAAA,OAAO,KAAA;AACX,MAAA;IACJ,CAAA,EAVgB,gBAAA,CAAA;AAWhBQ,IAAAA,kBAAAA,0BAAqBb,OAAAA,KAAAA;AACjB,MAAA,IAAIA,OAAAA,KAAYW,QAAW,OAAOA,MAAAA;AAClC,MAAA,MAAMG,cAAAA,GAAiB7B,aAAAA,CAAciB,kBAAAA,CAAmBF,OAAAA,CAAAA;AACxD,MAAA,OAAO;;QAEHK,aAAAA,EAAeU,eAAAA,CAAgBD,cAAAA,CAAAA,CAAgBb,QAAAA,EAAQ;AACvDf,QAAAA;AACJ,OAAA;IACJ,CAAA,EARoB,oBAAA,CAAA;AASpB8B,IAAAA,wBAAAA,0BAA2BhB,OAAAA,KAAAA;AACvB,MAAA,IAAIA,OAAAA,KAAYW,QAAW,OAAOA,MAAAA;AAClC,MAAA,OAAO1B,aAAAA,CAAcC,SAAAA,CAAAA,CAAW2B,kBAAAA,CAAmBb,OAAAA,CAAAA,CAASK,aAAAA;IAChE,CAAA,EAH0B,0BAAA,CAAA;AAI1BY,IAAAA,kBAAAA,0BAAqBZ,aAAAA,KAAAA;AACjB,MAAA,IAAIA,aAAAA,KAAkBM,QAAW,OAAOA,MAAAA;AACxC,MAAA,MAAMX,OAAAA,GAAUU,WAAWL,aAAAA,CAAAA;AAC3BC,MAAAA,YAAAA,CAAaN,SAASd,SAAAA,CAAAA;AACtB,MAAA,OAAOgC,YAAAA,CAAaC,YAAAA,CAAanB,OAAAA,CAAAA,CAAAA;IACrC,CAAA,EALoB,oBAAA,CAAA;AAMpBoB,IAAAA,kBAAAA,0BAAqBf,aAAAA,KAAAA;AAEjB,MAAA,IAAIA,aAAAA,KAAkBM,QAAW,OAAOA,MAAAA;AACxC,MAAA,OAAOU,WACHpC,aAAAA,CAAcC,SAAAA,EAAW+B,kBAAAA,CAAmBZ,aAAAA,GAC5C,EAAA,CAAA;IAER,CAAA,EAPoB,oBAAA,CAAA;AAQpBiB,IAAAA,aAAAA,0BAAgBjB,aAAAA,KAAAA;AACZ,MAAA,IAAIA,aAAAA,KAAkBM,QAAW,OAAOA,MAAAA;AACxC,MAAA,OAAOY,WAAWtC,aAAAA,CAAcC,SAAAA,CAAAA,CAAWkC,kBAAAA,CAAmBf,aAAAA,CAAAA,CAAAA;IAClE,CAAA,EAHe,eAAA,CAAA;AAIfmB,IAAAA,eAAAA,0BAAkBnB,aAAAA,KAAAA;AACd,MAAA,IAAIA,aAAAA,KAAkBM,QAAW,OAAOA,MAAAA;AACxC,MAAA,OAAOY,WAAWtC,aAAAA,CAAcC,SAAAA,CAAAA,CAAWkC,kBAAAA,CAAmBf,aAAAA,CAAAA,CAAAA;IAClE,CAAA,EAHiB,iBAAA,CAAA;AAIjBoB,IAAAA,sBAAAA,0BAAyBzB,OAAAA,KAAAA;AACrB,MAAA,IAAIA,OAAAA,KAAYW,QAAW,OAAOA,MAAAA;AAClC,MAAA,OAAOU,UAAAA,CAAWrB,SAAiC,EAAA,CAAA;IACvD,CAAA,EAHwB,wBAAA,CAAA;AAIxB0B,IAAAA,mBAAAA,0BAAsB1B,OAAAA,KAAAA;AAClB,MAAA,IAAIA,OAAAA,KAAYW,QAAW,OAAOA,MAAAA;AAClC,MAAA,OAAOY,WAAWtC,aAAAA,CAAcC,SAAAA,CAAAA,CAAWuC,sBAAAA,CAAuBzB,OAAAA,CAAAA,CAAAA;IACtE,CAAA,EAHqB,qBAAA,CAAA;AAIrB2B,IAAAA,mBAAAA,0BAAsBC,UAAAA,KAAAA;AAClB,MAAA,IAAIA,UAAAA,KAAejB,QAAW,OAAOA,MAAAA;AACrC,MAAA,OAAOO,aAAaU,UAAAA,CAAAA;IACxB,CAAA,EAHqB,qBAAA,CAAA;AAIrBxB,IAAAA,WAAAA,0BAAcC,aAAAA,KAAAA;AACVC,MAAAA,YAAAA,CAAaD,eAAenB,SAAAA,CAAAA;AAC5B,MAAA,OAAOD,aAAAA,CAAcC,SAAAA,CAAAA,CAAW+B,kBAAAA,CAAmBZ,aAAAA,CAAAA;IACvD,CAAA,EAHa,aAAA,CAAA;AAIbwB,IAAAA,wBAAAA,0BAA2BxB,aAAAA,KAAAA;AACvB,MAAA,OAAOpB,aAAAA,CAAcC,SAAAA,CAAAA,CAAWkB,WAAAA,CAAYC,aAAAA,CAAAA;IAChD,CAAA,EAF0B,0BAAA,CAAA;AAG1ByB,IAAAA,eAAAA,0BAAkBC,UAAAA,KAAAA;AACd,MAAA,OAAO9C,cAAcC,SAAAA,CAAAA,CAAWkB,WAAAA,CAAYe,YAAAA,CAAaY,UAAAA,CAAAA,CAAAA;IAC7D,CAAA,EAFiB,iBAAA,CAAA;IAGjBC,QAAAA,EAAQ;AACZ,GAAA;AACJ,CAAA,EAxEiE,kBAAA;AA0E1D,IAAMvC,mBAAAA,2BAEyCP,SAAAA,KAAAA;AAClD,EAAA,OAAO;AACHsB,IAAAA,cAAAA,0BAAiBH,aAAAA,KAAAA;AACb,MAAA,IAAIA,kBAAkBM,MAAAA,EAAW;AAC7B,QAAA,OAAO,KAAA;AACX,MAAA;AACA,MAAA,IAAI;AAEA,QAAA,OACIsB,WAAAA,CAAY5B,aAAAA,CAAAA,IACZ,uDAAA,CAAwD6B,KAAK7B,aAAAA,CAAAA;MAErE,CAAA,CAAA,MAAQ;AACJ,QAAA,OAAO,KAAA;AACX,MAAA;IACJ,CAAA,EAbgB,gBAAA,CAAA;AAchBQ,IAAAA,kBAAAA,0BAAqBb,OAAAA,KAAAA;AACjB,MAAA,IAAIA,YAAYW,MAAAA,EAAW;AACvB,QAAA,OAAOA,MAAAA;AACX,MAAA;AACA,MAAA,OAAO;QACHN,aAAAA,EAAe8B,UAAAA,CAAWC,QAAQpC,OAAAA,CAAAA;AAClCd,QAAAA;AACJ,OAAA;IACJ,CAAA,EARoB,oBAAA,CAAA;AASpB8B,IAAAA,wBAAAA,0BAA2BhB,OAAAA,KAAAA;AACvB,MAAA,IAAIA,OAAAA,KAAYW,QAAW,OAAOA,MAAAA;AAClC,MAAA,OAAO1B,aAAAA,CAAcC,SAAAA,CAAAA,CAAW2B,kBAAAA,CAAmBb,OAAAA,CAAAA,CAASK,aAAAA;IAChE,CAAA,EAH0B,0BAAA,CAAA;AAI1BY,IAAAA,kBAAAA,0BAAqBZ,aAAAA,KAAAA;AACjB,MAAA,IAAIA,aAAAA,KAAkBM,QAAW,OAAOA,MAAAA;AACxC,MAAA,MAAMX,OAAAA,GAAUU,WAAWL,aAAAA,CAAAA;AAC3BC,MAAAA,YAAAA,CAAaN,SAASd,SAAAA,CAAAA;AACtB,MAAA,IAAI+C,WAAAA,CAAYjC,OAAAA,CAAAA,EAAU;AACtB,QAAA,OAAOkB,aAAalB,OAAAA,CAAAA;AACxB,MAAA;AACA,MAAA,OAAOkB,aAAaiB,UAAAA,CAAWE,KAAAA,CAAMhC,aAAAA,CAAcJ,QAAAA,EAAQ,CAAA,CAAA;IAC/D,CAAA,EARoB,oBAAA,CAAA;AASpBmB,IAAAA,kBAAAA,0BAAqBf,aAAAA,KAAAA;AACjB,MAAA,IAAIA,aAAAA,KAAkBM,QAAW,OAAOA,MAAAA;AAExC,MAAA,OAAOU,WACHpC,aAAAA,CAAcC,SAAAA,EAAW+B,kBAAAA,CAAmBZ,aAAAA,GAC5C,EAAA,CAAA;IAER,CAAA,EAPoB,oBAAA,CAAA;AAQpBiB,IAAAA,aAAAA,0BAAgBjB,aAAAA,KAAAA;AACZ,MAAA,IAAIA,aAAAA,KAAkBM,QAAW,OAAOA,MAAAA;AACxC,MAAA,OAAOY,WAAWtC,aAAAA,CAAcC,SAAAA,CAAAA,CAAWkC,kBAAAA,CAAmBf,aAAAA,CAAAA,CAAAA;IAClE,CAAA,EAHe,eAAA,CAAA;AAIfmB,IAAAA,eAAAA,0BAAkBnB,aAAAA,KAAAA;AACd,MAAA,IAAIA,aAAAA,KAAkBM,QAAW,OAAOA,MAAAA;AACxC,MAAA,OAAOY,WAAWtC,aAAAA,CAAcC,SAAAA,CAAAA,CAAWkC,kBAAAA,CAAmBf,aAAAA,CAAAA,CAAAA;IAClE,CAAA,EAHiB,iBAAA,CAAA;AAIjBoB,IAAAA,sBAAAA,0BAAyBzB,OAAAA,KAAAA;AACrB,MAAA,IAAIA,OAAAA,KAAYW,QAAW,OAAOA,MAAAA;AAClC,MAAA,OAAOU,UAAAA,CAAWrB,SAAiC,EAAA,CAAA;IACvD,CAAA,EAHwB,wBAAA,CAAA;AAIxB0B,IAAAA,mBAAAA,0BAAsB1B,OAAAA,KAAAA;AAClB,MAAA,IAAIA,OAAAA,KAAYW,QAAW,OAAOA,MAAAA;AAClC,MAAA,OAAOY,WAAWtC,aAAAA,CAAcC,SAAAA,CAAAA,CAAWuC,sBAAAA,CAAuBzB,OAAAA,CAAAA,CAAAA;IACtE,CAAA,EAHqB,qBAAA,CAAA;AAIrB2B,IAAAA,mBAAAA,0BAAsBC,UAAAA,KAAAA;AAClB,MAAA,IAAIA,UAAAA,KAAejB,QAAW,OAAOA,MAAAA;AACrC,MAAA,OAAOO,aAAaU,UAAAA,CAAAA;IACxB,CAAA,EAHqB,qBAAA,CAAA;AAIrBxB,IAAAA,WAAAA,0BAAcC,aAAAA,KAAAA;AACVC,MAAAA,YAAAA,CAAaD,eAAenB,SAAAA,CAAAA;AAC5B,MAAA,OAAOD,aAAAA,CAAcC,SAAAA,CAAAA,CAAW+B,kBAAAA,CAAmBZ,aAAAA,CAAAA;IACvD,CAAA,EAHa,aAAA,CAAA;AAIbwB,IAAAA,wBAAAA,0BAA2BxB,aAAAA,KAAAA;AACvB,MAAA,OAAOpB,aAAAA,CAAcC,SAAAA,CAAAA,CAAWkB,WAAAA,CAAYC,aAAAA,CAAAA;IAChD,CAAA,EAF0B,0BAAA,CAAA;IAG1B2B,QAAAA,EAAQ;AACZ,GAAA;AACJ,CAAA,EA3EqD,qBAAA;AA6E9C,IAAMzC,mBAAAA,2BACTL,SAAAA,KAAAA;AAEA,EAAA,OAAO;AACHsB,IAAAA,cAAAA,0BAAiBH,aAAAA,KAAAA;AACb,MAAA,IAAIA,aAAAA,KAAkBM,QAAW,OAAO,KAAA;AACxC,MAAA,OAAO2B,SAASjC,aAAAA,CAAAA;IACpB,CAAA,EAHgB,gBAAA,CAAA;AAIhBQ,IAAAA,kBAAAA,0BAAqBb,OAAAA,KAAAA;AACjB,MAAA,IAAIA,OAAAA,KAAYW,QAAW,OAAOA,MAAAA;AAClC,MAAA,OAAO;AACHN,QAAAA,aAAAA,EAAekC,IAAAA,CAAKC,MAAAA,CAChBjB,UAAAA,CAAWvB,OAAAA,CAAAA,CAAAA;AAEfd,QAAAA;AACJ,OAAA;IACJ,CAAA,EARoB,oBAAA,CAAA;AASpB8B,IAAAA,wBAAAA,0BAA2BhB,OAAAA,KAAAA;AACvB,MAAA,IAAIA,OAAAA,KAAYW,QAAW,OAAOA,MAAAA;AAClC,MAAA,OAAO1B,aAAAA,CAAcC,SAAAA,CAAAA,CAAW2B,kBAAAA,CAAmBb,OAAAA,CAAAA,CAASK,aAAAA;IAChE,CAAA,EAH0B,0BAAA,CAAA;AAI1BY,IAAAA,kBAAAA,0BAAqBZ,aAAAA,KAAAA;AACjB,MAAA,IAAIA,aAAAA,KAAkBM,QAAW,OAAOA,MAAAA;AACxC,MAAA,MAAMX,OAAAA,GAAUU,WAAWL,aAAAA,CAAAA;AAC3BC,MAAAA,YAAAA,CAAaN,SAASd,SAAAA,CAAAA;AACtB,MAAA,MAAMuD,GAAAA,GAAMC,kBAAAA,CAAmBH,IAAAA,CAAKI,MAAAA,CAAO3C,OAAAA,CAAAA,CAAAA;AAC3C,MAAA,OAAOkB,aAAauB,GAAAA,CAAAA;IACxB,CAAA,EANoB,oBAAA,CAAA;AAOpBrB,IAAAA,kBAAAA,0BAAqBf,aAAAA,KAAAA;AAEjB,MAAA,IAAIA,aAAAA,KAAkBM,QAAW,OAAOA,MAAAA;AACxC,MAAA,OAAOU,WACHpC,aAAAA,CAAcC,SAAAA,EAAW+B,kBAAAA,CAAmBZ,aAAAA,GAC5C,EAAA,CAAA;IAER,CAAA,EAPoB,oBAAA,CAAA;AAQpBiB,IAAAA,aAAAA,0BAAgBjB,aAAAA,KAAAA;AACZ,MAAA,IAAIA,aAAAA,KAAkBM,QAAW,OAAOA,MAAAA;AACxC,MAAA,MAAMX,OAAAA,GAAUU,WAAWL,aAAAA,CAAAA;AAC3BC,MAAAA,YAAAA,CAAaN,SAASd,SAAAA,CAAAA;AACtB,MAAA,OAAOqD,IAAAA,CAAKI,OAAO3C,OAAAA,CAAAA;IACvB,CAAA,EALe,eAAA,CAAA;AAMfwB,IAAAA,eAAAA,0BAAkBnB,aAAAA,KAAAA;AACd,MAAA,IAAIA,aAAAA,KAAkBM,QAAW,OAAOA,MAAAA;AACxC,MAAA,OAAOY,WAAWtC,aAAAA,CAAcC,SAAAA,CAAAA,CAAWkC,kBAAAA,CAAmBf,aAAAA,CAAAA,CAAAA;IAClE,CAAA,EAHiB,iBAAA,CAAA;AAIjBoB,IAAAA,sBAAAA,0BAAyBzB,OAAAA,KAAAA;AACrB,MAAA,IAAIA,OAAAA,KAAYW,QAAW,OAAOA,MAAAA;AAClC,MAAA,OAAOU,UAAAA,CAAWrB,SAAiC,EAAA,CAAA;IACvD,CAAA,EAHwB,wBAAA,CAAA;AAIxB0B,IAAAA,mBAAAA,0BAAsB1B,OAAAA,KAAAA;AAClB,MAAA,IAAIA,OAAAA,KAAYW,QAAW,OAAOA,MAAAA;AAClC,MAAA,OAAOY,WAAWtC,aAAAA,CAAcC,SAAAA,CAAAA,CAAWuC,sBAAAA,CAAuBzB,OAAAA,CAAAA,CAAAA;IACtE,CAAA,EAHqB,qBAAA,CAAA;AAIrB2B,IAAAA,mBAAAA,0BAAsBC,UAAAA,KAAAA;AAClB,MAAA,IAAIA,UAAAA,KAAejB,QAAW,OAAOA,MAAAA;AACrC,MAAA,OAAOO,aAAaU,UAAAA,CAAAA;IACxB,CAAA,EAHqB,qBAAA,CAAA;AAIrBxB,IAAAA,WAAAA,0BAAcC,aAAAA,KAAAA;AACVC,MAAAA,YAAAA,CAAaD,eAAenB,SAAAA,CAAAA;AAC5B,MAAA,OAAOD,aAAAA,CAAcC,SAAAA,CAAAA,CAAW+B,kBAAAA,CAAmBZ,aAAAA,CAAAA;IACvD,CAAA,EAHa,aAAA,CAAA;AAIbwB,IAAAA,wBAAAA,0BAA2BxB,aAAAA,KAAAA;AACvB,MAAA,OAAOpB,aAAAA,CAAcC,SAAAA,CAAAA,CAAWkB,WAAAA,CAAYC,aAAAA,CAAAA;IAChD,CAAA,EAF0B,0BAAA,CAAA;IAG1B2B,QAAAA,EAAQ;AACZ,GAAA;AACJ,CAAA,EAnEmC,qBAAA;AAqE5B,IAAMlC,gBAAAA,2BACTZ,SAAAA,KAAAA;AAEA,EAAA,OAAO;AACHsB,IAAAA,cAAAA,0BAAiBH,aAAAA,KAAAA;AACb,MAAA,IAAIA,aAAAA,KAAkBM,QAAW,OAAO,KAAA;AACxC,MAAA,OAAOsB,YAAY5B,aAAAA,CAAAA;IACvB,CAAA,EAHgB,gBAAA,CAAA;AAIhBQ,IAAAA,kBAAAA,0BAAqBb,OAAAA,KAAAA;AACjB,MAAA,IAAIA,OAAAA,KAAYW,QAAW,OAAOA,MAAAA;AAGlC,MAAA,MAAMiC,gBAAAA,GAAmBC,kBAAAA,CAAmBC,qBAAAA,CAAsB5D,SAAAA,CAAAA;AAClE,MAAA,OAAO;;QAEHmB,aAAAA,EAAegB,UAAAA,CAAWrB,SAAiC4C,gBAAAA,CAAAA;AAC3D1D,QAAAA;AACJ,OAAA;IACJ,CAAA,EAVoB,oBAAA,CAAA;AAWpB8B,IAAAA,wBAAAA,0BAA2BhB,OAAAA,KAAAA;AACvB,MAAA,IAAIA,OAAAA,KAAYW,QAAW,OAAOA,MAAAA;AAClC,MAAA,MAAMiC,gBAAAA,GAAmBC,kBAAAA,CAAmBC,qBAAAA,CAAsB5D,SAAAA,CAAAA;AAClE,MAAA,OAAOmC,UAAAA,CAAWrB,SAAiC4C,gBAAAA,CAAAA;IACvD,CAAA,EAJ0B,0BAAA,CAAA;AAK1B3B,IAAAA,kBAAAA,0BAAqBZ,aAAAA,KAAAA;AACjB,MAAA,IAAIA,aAAAA,KAAkBM,QAAW,OAAOA,MAAAA;AACxC,MAAA,MAAMX,OAAAA,GAAUU,WAAWL,aAAAA,CAAAA;AAC3BC,MAAAA,YAAAA,CAAaN,SAASd,SAAAA,CAAAA;AACtB,MAAA,OAAOgC,aAAalB,OAAAA,CAAAA;IACxB,CAAA,EALoB,oBAAA,CAAA;AAMpBsB,IAAAA,aAAAA,0BAAgBjB,aAAAA,KAAAA;AACZ,MAAA,IAAIA,aAAAA,KAAkBM,QAAW,OAAOA,MAAAA;AACxC,MAAA,MAAMX,OAAAA,GAAUU,WAAWL,aAAAA,CAAAA;AAC3BC,MAAAA,YAAAA,CAAaN,SAASd,SAAAA,CAAAA;AACtB,MAAA,OAAOqC,WAAWvB,OAAAA,CAAAA;IACtB,CAAA,EALe,eAAA,CAAA;AAMfoB,IAAAA,kBAAAA,0BAAqBf,aAAAA,KAAAA;AACjB,MAAA,IAAIA,aAAAA,KAAkBM,QAAW,OAAOA,MAAAA;AACxC,MAAA,MAAMX,OAAAA,GAAUU,WAAWL,aAAAA,CAAAA;AAC3BC,MAAAA,YAAAA,CAAaN,SAASd,SAAAA,CAAAA;AACtB,MAAA,OAAOmC,UAAAA,CAAWrB,SAAS,EAAA,CAAA;IAC/B,CAAA,EALoB,oBAAA,CAAA;AAMpBwB,IAAAA,eAAAA,0BAAkBnB,aAAAA,KAAAA;AACd,MAAA,IAAIA,aAAAA,KAAkBM,QAAW,OAAOA,MAAAA;AACxC,MAAA,OAAOY,WAAWtC,aAAAA,CAAcC,SAAAA,CAAAA,CAAWkC,kBAAAA,CAAmBf,aAAAA,CAAAA,CAAAA;IAClE,CAAA,EAHiB,iBAAA,CAAA;AAIjBoB,IAAAA,sBAAAA,0BAAyBzB,OAAAA,KAAAA;AACrB,MAAA,IAAIA,OAAAA,KAAYW,QAAW,OAAOA,MAAAA;AAClC,MAAA,OAAOU,UAAAA,CAAWrB,SAAiC,EAAA,CAAA;IACvD,CAAA,EAHwB,wBAAA,CAAA;AAIxB0B,IAAAA,mBAAAA,0BAAsB1B,OAAAA,KAAAA;AAClB,MAAA,IAAIA,OAAAA,KAAYW,QAAW,OAAOA,MAAAA;AAClC,MAAA,OAAOY,WAAWtC,aAAAA,CAAcC,SAAAA,CAAAA,CAAWuC,sBAAAA,CAAuBzB,OAAAA,CAAAA,CAAAA;IACtE,CAAA,EAHqB,qBAAA,CAAA;AAIrB2B,IAAAA,mBAAAA,0BAAsBC,UAAAA,KAAAA;AAClB,MAAA,IAAIA,UAAAA,KAAejB,QAAW,OAAOA,MAAAA;AACrC,MAAA,OAAOO,aAAaU,UAAAA,CAAAA;IACxB,CAAA,EAHqB,qBAAA,CAAA;AAIrBxB,IAAAA,WAAAA,0BAAcC,aAAAA,KAAAA;AAEV,MAAA,IAAInB,SAAAA,KAAcC,SAAAA,CAAU4D,IAAAA,IAAQ1C,aAAAA,EAAe;AAC/CA,QAAAA,aAAAA,GAAgBA,aAAAA,CAAc2C,WAAW,IAAA,CAAA,GACnC,KAAK3C,aAAAA,CAAc4C,KAAAA,CAAM,CAAA,CAAA,CAAA,CAAA,GACzB5C,aAAAA;AACV,MAAA;AAEAC,MAAAA,YAAAA,CAAaD,eAAenB,SAAAA,CAAAA;AAC5B,MAAA,OAAOD,aAAAA,CAAcC,SAAAA,CAAAA,CAAW+B,kBAAAA,CAAmBZ,aAAAA,CAAAA;IACvD,CAAA,EAVa,aAAA,CAAA;AAWbwB,IAAAA,wBAAAA,0BAA2BxB,aAAAA,KAAAA;AACvB,MAAA,OAAOpB,aAAAA,CAAcC,SAAAA,CAAAA,CAAWkB,WAAAA,CAAYC,aAAAA,CAAAA;IAChD,CAAA,EAF0B,0BAAA,CAAA;IAG1B2B,QAAAA,EAAQ;AACZ,GAAA;AACJ,CAAA,EA1EgC,kBAAA;AA4EhC,IAAMkB,kBAAAA,GAAqB,EAAA;AAS3B,IAAMC,kBAAAA,2BAAsBnD,OAAAA,KAAAA;AACxB,EAAA,IAAI,CAACA,OAAAA,IAAW,CAACA,OAAAA,CAAQgD,UAAAA,CAAW,IAAA,CAAA,IAAS,CAACf,WAAAA,CAAYjC,OAAAA,CAAAA,EAAU,OAAOA,OAAAA;AAC3E,EAAA,MAAMoD,UAAAA,GAAapD,OAAAA,CAAQiD,KAAAA,CAAM,CAAA,CAAA;AACjC,EAAA,IAAIG,UAAAA,CAAWC,WAAWH,kBAAAA,EAAoB;AAC1C,IAAA,MAAM,IAAIzC,MACN,CAAA,8CAAA,EAAiDyC,kBAAAA,oBAAsCE,UAAAA,CAAWC,MAAM,CAAA,EAAA,EAAKrD,OAAAA,CAAAA,CAAS,CAAA;AAE9H,EAAA;AACA,EAAA,MAAMsD,GAAAA,GAAMC,MAAAA,CAAOC,IAAAA,CAAKJ,UAAAA,EAAY,KAAA,CAAA;AACpC,EAAA,OAAOK,MAAAA,CAAOC,eAAeJ,GAAAA,CAAAA;AACjC,CAAA,EAV2B,oBAAA,CAAA;AAYpB,IAAM3D,oBAAAA,2BAEyDT,SAAAA,KAAAA;AAelE,EAAA,MAAMyE,qBAAAA,2BAAyB3D,OAAAA,KAAAA;AAC3B,IAAA,IAAI,CAACA,SAAS,OAAO,KAAA;AAErB,IAAA,OACIyD,MAAAA,CAAOG,wBAAwB5D,OAAAA,CAAAA,IAC/ByD,OAAOI,eAAAA,CAAgB7D,OAAAA,CAAAA,IACvByD,MAAAA,CAAOK,wBAAAA,CAAyB9D,OAAAA,KAChCyD,MAAAA,CAAOM,oBAAAA,CAAqB/D,OAAAA,CAAAA,IAC5ByD,MAAAA,CAAOO,wBAAwBhE,OAAAA,CAAAA,IAC/ByD,MAAAA,CAAOQ,oBAAAA,CAAqBjE,OAAAA,CAAAA;EAEpC,CAAA,EAX8B,uBAAA,CAAA;AAiB9B,EAAA,MAAMkE,kBAAAA,GAAqB,IAAIC,WAAAA,EAAAA;AAC/B,EAAA,MAAMC,wBAAAA,2BAA4BpE,OAAAA,KAAAA;AAE9B,IAAA,MAAMqE,KAAAA,GAAQH,kBAAAA,CAAmB1B,MAAAA,CAAOxC,OAAAA,CAAAA;AACxC,IAAA,OAAOkB,YAAAA,CAAawB,kBAAAA,CAAmB2B,KAAAA,CAAAA,CAAAA;EAC3C,CAAA,EAJiC,0BAAA,CAAA;AASjC,EAAA,MAAMC,kBAAAA,GAAqB,IAAIC,WAAAA,EAAAA;AAC/B,EAAA,MAAMC,wBAAAA,2BAA4BC,aAAAA,KAAAA;AAE9B,IAAA,MAAMJ,KAAAA,GAAQ9C,WAAWkD,aAAAA,CAAAA;AACzB,IAAA,OAAOH,kBAAAA,CAAmB3B,OAAO0B,KAAAA,CAAAA;EACrC,CAAA,EAJiC,0BAAA,CAAA;AAMjC,EAAA,OAAO;AACH7D,IAAAA,cAAAA,0BAAiBH,aAAAA,KAAAA;AACb,MAAA,IAAIA,aAAAA,KAAkBM,QAAW,OAAO,KAAA;AACxC,MAAA,OAAOgD,sBAAsBtD,aAAAA,CAAAA;IACjC,CAAA,EAHgB,gBAAA,CAAA;AAIhBQ,IAAAA,kBAAAA,0BAAqBb,OAAAA,KAAAA;AACjB,MAAA,IAAIA,OAAAA,KAAYW,QAAW,OAAOA,MAAAA;AAElC,MAAA,MAAM+D,cAAAA,GAAiBF,yBAAyBxE,OAAAA,CAAAA;AAChD,MAAA,OAAO;QACHK,aAAAA,EAAeqE,cAAAA;AACfxF,QAAAA;AACJ,OAAA;IACJ,CAAA,EARoB,oBAAA,CAAA;AASpB8B,IAAAA,wBAAAA,0BAA2BhB,OAAAA,KAAAA;AACvB,MAAA,IAAIA,OAAAA,KAAYW,QAAW,OAAOA,MAAAA;AAClC,MAAA,OAAO6D,yBAAyBxE,OAAAA,CAAAA;IACpC,CAAA,EAH0B,0BAAA,CAAA;AAI1BiB,IAAAA,kBAAAA,0BAAqBZ,aAAAA,KAAAA;AACjB,MAAA,IAAIA,aAAAA,KAAkBM,QAAW,OAAOA,MAAAA;AACxC,MAAA,MAAMX,OAAAA,GAAUU,WAAWL,aAAAA,CAAAA;AAC3BC,MAAAA,YAAAA,CAAaN,SAASd,SAAAA,CAAAA;AAEtB,MAAA,OAAOkF,yBAAyBpE,OAAAA,CAAAA;IACpC,CAAA,EANoB,oBAAA,CAAA;AAOpBoB,IAAAA,kBAAAA,0BAAqBf,aAAAA,KAAAA;AACjB,MAAA,IAAIA,aAAAA,KAAkBM,QAAW,OAAOA,MAAAA;AACxC,MAAA,MAAMX,OAAAA,GAAUU,WAAWL,aAAAA,CAAAA;AAC3BC,MAAAA,YAAAA,CAAaN,SAASd,SAAAA,CAAAA;AAEtB,MAAA,IAAIyF,QAAAA;AACJ,MAAA,IAAIlB,MAAAA,CAAOG,uBAAAA,CAAwB5D,OAAAA,CAAAA,EAAU;AAEzC2E,QAAAA,QAAAA,GAAWlB,MAAAA,CAAOmB,uBAAuB5E,OAAAA,CAAAA;MAC7C,CAAA,MAAA,IAAWyD,MAAAA,CAAOI,eAAAA,CAAgB7D,OAAAA,CAAAA,EAAU;AAExC2E,QAAAA,QAAAA,GAAWlB,MAAAA,CAAOoB,eAAe7E,OAAAA,CAAAA;MACrC,CAAA,MAAA,IAAWyD,MAAAA,CAAOM,oBAAAA,CAAqB/D,OAAAA,CAAAA,EAAU;AAE7C2E,QAAAA,QAAAA,GAAWlB,MAAAA,CAAOqB,oBAAoB9E,OAAAA,CAAAA;MAC1C,CAAA,MAAA,IAAWyD,MAAAA,CAAOO,uBAAAA,CAAwBhE,OAAAA,CAAAA,EAAU;AAGhD,QAAA,MAAM+E,SAAAA,GAAYtB,MAAAA,CAAOuB,sBAAAA,CAAuBhF,OAAAA,CAAAA;AAChD2E,QAAAA,QAAAA,GAAWI,SAAAA,CAAUE,SAAS,CAAA,CAAA;MAClC,CAAA,MAAA,IAAWxB,MAAAA,CAAOK,wBAAAA,CAAyB9D,OAAAA,CAAAA,EAAU;AAEjD,QAAA,MAAM,IAAIS,MACN,qEAAA,CAAA;MAER,CAAA,MAAA,IAAWgD,MAAAA,CAAOQ,oBAAAA,CAAqBjE,OAAAA,CAAAA,EAAU;AAE7C,QAAA,MAAM,IAAIS,MACN,8EAAA,CAAA;MAER,CAAA,MAAO;AACH,QAAA,MAAM,IAAIA,KAAAA,CAAM,CAAA,8BAAA,EAAiCT,OAAAA,CAAAA,CAAS,CAAA;AAC9D,MAAA;AACA,MAAA,OAAO0C,mBAAmBiC,QAAAA,CAAAA;IAC9B,CAAA,EAlCoB,oBAAA,CAAA;AAmCpBrD,IAAAA,aAAAA,0BAAgBjB,aAAAA,KAAAA;AACZ,MAAA,IAAIA,aAAAA,KAAkBM,QAAW,OAAOA,MAAAA;AACxC,MAAA,MAAMX,OAAAA,GAAUU,WAAWL,aAAAA,CAAAA;AAC3BC,MAAAA,YAAAA,CAAaN,SAASd,SAAAA,CAAAA;AAEtB,MAAA,OAAOgF,kBAAAA,CAAmB1B,OAAOxC,OAAAA,CAAAA;IACrC,CAAA,EANe,eAAA,CAAA;AAOfwB,IAAAA,eAAAA,0BAAkBnB,aAAAA,KAAAA;AACd,MAAA,IAAIA,aAAAA,KAAkBM,QAAW,OAAOA,MAAAA;AAExC,MAAA,MAAM8B,GAAAA,GAAMxD,aAAAA,CAAcC,SAAAA,CAAAA,CAAWkC,mBAAmBf,aAAAA,CAAAA;AACxD,MAAA,OAAOkB,WAAWkB,GAAAA,CAAAA;IACtB,CAAA,EALiB,iBAAA,CAAA;AAMjBhB,IAAAA,sBAAAA,0BAAyBzB,OAAAA,KAAAA;AACrB,MAAA,IAAIA,OAAAA,KAAYW,QAAW,OAAOA,MAAAA;AAGlC,MAAA,OAAO1B,aAAAA,CAAcC,SAAAA,CAAAA,CAAWkC,kBAAAA,CAC5BnC,cAAcC,SAAAA,CAAAA,CAAW8B,wBAAAA,CAAyBhB,OAAAA,CAAAA,CAAAA;IAE1D,CAAA,EAPwB,wBAAA,CAAA;AAQxB0B,IAAAA,mBAAAA,0BAAsB1B,OAAAA,KAAAA;AAClB,MAAA,IAAIA,OAAAA,KAAYW,QAAW,OAAOA,MAAAA;AAClC,MAAA,OAAOY,WAAWtC,aAAAA,CAAcC,SAAAA,CAAAA,CAAWuC,sBAAAA,CAAuBzB,OAAAA,CAAAA,CAAAA;IACtE,CAAA,EAHqB,qBAAA,CAAA;AAIrB2B,IAAAA,mBAAAA,0BAAsBC,UAAAA,KAAAA;AAClB,MAAA,IAAIA,UAAAA,KAAejB,QAAW,OAAOA,MAAAA;AAErC,MAAA,OAAOyD,wBAAAA,CACHX,OAAOC,cAAAA,CAAeH,MAAAA,CAAOC,KAAKjC,UAAAA,CAAWK,UAAAA,CAAAA,CAAAA,CAAAA,CAAAA;IAErD,CAAA,EANqB,qBAAA,CAAA;AAOrBxB,IAAAA,WAAAA,0BAAcC,aAAAA,KAAAA;AACVA,MAAAA,aAAAA,GAAgB8C,mBAAmB9C,aAAAA,CAAAA;AACnCC,MAAAA,YAAAA,CAAaD,eAAenB,SAAAA,CAAAA;AAC5B,MAAA,OAAOD,aAAAA,CAAcC,SAAAA,CAAAA,CAAW+B,kBAAAA,CAAmBZ,aAAAA,CAAAA;IACvD,CAAA,EAJa,aAAA,CAAA;AAKbwB,IAAAA,wBAAAA,0BAA2BxB,aAAAA,KAAAA;AACvBA,MAAAA,aAAAA,GAAgB8C,mBAAmB9C,aAAAA,CAAAA;AACnCC,MAAAA,YAAAA,CAAaD,eAAenB,SAAAA,CAAAA;AAC5B,MAAA,MAAMgG,UAAAA,GAAajG,aAAAA,CAAcC,SAAAA,CAAAA,CAAW+B,mBAAmBZ,aAAAA,CAAAA;AAC/D,MAAA,OAAO6E,UAAAA;IACX,CAAA,EAL0B,0BAAA,CAAA;IAM1BlD,QAAAA,EAAQ;AACZ,GAAA;AACJ,CAAA,EA1JqE,sBAAA;AA6J9D,IAAMnC,qBAAAA,2BACTX,SAAAA,KAAAA;AAEA,EAAA,OAAO;AACH,IAAA,GAAGY,iBAAiBZ,SAAAA,CAAAA;AACpBsB,IAAAA,cAAAA,0BAAiBH,aAAAA,KAAAA;AACb,MAAA,IAAIA,aAAAA,KAAkBM,QAAW,OAAO,KAAA;AACxC,MAAA,OAAOsB,YAAY5B,aAAAA,CAAAA;IACvB,CAAA,EAHgB,gBAAA,CAAA;AAIhBD,IAAAA,WAAAA,0BAAcC,aAAAA,KAAAA;AACV,MAAA,IAAIA,aAAAA,KAAkBM,QAAW,OAAOA,MAAAA;AAGxCN,MAAAA,aAAAA,GAAgB,KAAKF,MAAAA,CAAOE,aAAAA,CAAAA,CAAeJ,QAAAA,CAAS,EAAA,CAAA,CAAA,CAAA;AACpDK,MAAAA,YAAAA,CAAaD,eAAenB,SAAAA,CAAAA;AAC5B,MAAA,OAAOD,aAAAA,CAAcC,SAAAA,CAAAA,CAAW+B,kBAAAA,CAAmBZ,aAAAA,CAAAA;IACvD,CAAA,EAPa,aAAA,CAAA;AAQbQ,IAAAA,kBAAAA,0BAAqBb,OAAAA,KAAAA;AACjB,MAAA,IAAIA,OAAAA,KAAYW,QAAW,OAAOA,MAAAA;AAClC,MAAA,OAAO;QACHN,aAAAA,EAAeL,OAAAA;AACfd,QAAAA;AACJ,OAAA;IACJ,CAAA,EANoB,oBAAA,CAAA;AAOpB8B,IAAAA,wBAAAA,0BAA2BhB,OAAAA,KAAAA;AACvB,MAAA,IAAIA,OAAAA,KAAYW,QAAW,OAAOA,MAAAA;AAClC,MAAA,OAAOX,OAAAA;IACX,CAAA,EAH0B,0BAAA;AAI9B,GAAA;AACJ,CAAA,EA7BqC,uBAAA","file":"OVN7SCH2.js","sourcesContent":["import { AccAddress } from '@initia/initia.js';\nimport { StrKey } from '@stellar/stellar-sdk';\nimport type { Address } from '@ton/ton';\nimport bs58 from 'bs58';\n\nimport type { HexString, NormalizedHexString } from '@layerzerolabs/common-chain-model';\nimport { normalizeHex } from '@layerzerolabs/common-chain-model';\nimport {\n bytesToHexPrefixed,\n hexToBytes,\n hexZeroPad,\n isBase58,\n isHexString,\n} from '@layerzerolabs/common-encoding-utils';\nimport { addressToHex, bigintToAddress, parseTonAddress } from '@layerzerolabs/common-ton';\nimport type {\n Base58String,\n ChainsByEncoding,\n ChainType,\n InferChainNamesForChainType,\n InferChainTypeForChainName,\n InitiaString,\n NativeAddress,\n ResolvedEncodingForChainName,\n StellarString,\n} from '@layerzerolabs/layerzero-definitions';\nimport type { ChainNativeAddress } from '@layerzerolabs/layerzero-definitions';\nimport { ChainName } from '@layerzerolabs/layerzero-definitions';\nimport { StaticChainConfigs } from '@layerzerolabs/static-chain-info';\nimport type { MaybeUndefinedMapped } from '@layerzerolabs/typescript-utils';\n\ntype NativeOrString<T extends ChainName> = ChainNativeAddress<T> | ResolvedEncodingForChainName<T>;\n\nexport enum AddressEncoding {\n HEX = 'hex',\n BASE58 = 'base58',\n TON = 'ton',\n INITIA = 'initia',\n STELLAR = 'stellar',\n}\n\nexport type ExtensionByChainType = {\n ton: {\n tonToNormalized: (tonAddress: Address) => NormalizedHexString;\n };\n};\n\nexport type InferExtensionByChainName<T extends ChainName> =\n InferChainTypeForChainName<T> extends keyof ExtensionByChainType\n ? ExtensionByChainType[InferChainTypeForChainName<T>]\n : {};\n\nexport type AddressParser<T extends ChainName> = {\n normalizedToNative: <Address extends NormalizedHexString | undefined>(\n address: Address,\n ) => MaybeUndefinedMapped<Address, ChainNativeAddress<T>>;\n normalizedToNativeString: <Address extends NormalizedHexString | undefined>(\n address: Address,\n ) => MaybeUndefinedMapped<Address, ResolvedEncodingForChainName<T>>;\n nativeToNormalized: <Address extends NativeOrString<T> | undefined>(\n nativeAddress: Address,\n ) => MaybeUndefinedMapped<Address, NormalizedHexString>;\n nativeToBytes: <Address extends NativeOrString<T> | undefined>(\n nativeAddress: Address,\n ) => MaybeUndefinedMapped<Address, Uint8Array>;\n nativeToBytes32Hex: <Address extends NativeOrString<T> | undefined>(\n nativeAddress: Address,\n ) => MaybeUndefinedMapped<Address, HexString>;\n nativeToBytes32: <Address extends NativeOrString<T> | undefined>(\n nativeAddress: Address,\n ) => MaybeUndefinedMapped<Address, Uint8Array>;\n normalizedToBytes32Hex: <Address extends NormalizedHexString | undefined>(\n address: Address,\n ) => MaybeUndefinedMapped<Address, HexString>;\n normalizedToBytes32: <Address extends NormalizedHexString | undefined>(\n address: Address,\n ) => MaybeUndefinedMapped<Address, Uint8Array>;\n bytes32ToNormalized: <B extends HexString | undefined>(\n bytes32Hex: B,\n ) => MaybeUndefinedMapped<B, NormalizedHexString>;\n validateNative: (\n nativeAddress: string | undefined,\n ) => nativeAddress is ResolvedEncodingForChainName<T>;\n /**\n * Parse a native address to a string if it is valid.\n * Throws an error if the native address is invalid.\n * @param nativeAddress - The native address to parse.\n * @returns The parsed native address.\n */\n parseNative: (nativeAddress: string | undefined) => NormalizedHexString;\n parseNativeToUnpaddedHex: (nativeAddress: string | undefined) => HexString;\n encoding: AddressEncoding;\n} & InferExtensionByChainName<T>;\n\nexport function addressParser<T extends ChainName>(chainName: T): AddressParser<T> {\n // FIXME: figure out a way to not have to cast here\n if (chainName === ChainName.TON)\n return tonAddressParser(chainName) as unknown as AddressParser<T>;\n if (chainName === ChainName.SOLANA)\n return base58AddressParser(chainName) as unknown as AddressParser<T>;\n if (chainName === ChainName.INITIA)\n return initiaAddressParser(chainName) as unknown as AddressParser<T>;\n if (chainName === ChainName.STELLAR)\n return stellarAddressParser(chainName) as unknown as AddressParser<T>;\n if (chainName === ChainName.STARKNET)\n return starknetAddressParser(chainName) as unknown as AddressParser<T>;\n return hexAddressParser(chainName) as unknown as AddressParser<T>;\n}\n\nexport namespace addressParser {\n export const normalizedToUnpaddedString = (address: NormalizedHexString) => {\n return address.toString() as HexString;\n };\n\n export const normalizedToBigInt = (address: NormalizedHexString) => {\n return BigInt(address as unknown as HexString);\n };\n\n export const parseNative = (nativeAddress: NativeAddress) => {\n return addressParser(nativeAddress.chainName).parseNative(nativeAddress.nativeAddress);\n };\n}\n\nfunction assertNative<T extends ChainName>(\n nativeAddress: string | undefined,\n expectedChainName: T,\n): asserts nativeAddress is ResolvedEncodingForChainName<T> {\n if (!addressParser(expectedChainName).validateNative(nativeAddress)) {\n throw new Error(\n 'Cannot convert: \"' +\n nativeAddress +\n '\" - The native address does not match the expected format for the chain: ' +\n expectedChainName,\n );\n }\n}\n\nconst getAddress = <T extends ChainName>(nativeAddress: NativeOrString<T>) => {\n return typeof nativeAddress === 'object' ? nativeAddress.nativeAddress : nativeAddress;\n};\n\nexport const tonAddressParser: (\n chainName: InferChainNamesForChainType<ChainType.TON>,\n) => AddressParser<InferChainNamesForChainType<ChainType.TON>> = (chainName) => {\n return {\n validateNative: (nativeAddress): nativeAddress is HexString => {\n if (nativeAddress === undefined) {\n return false;\n }\n try {\n parseTonAddress(nativeAddress);\n return true;\n } catch {\n return false;\n }\n },\n normalizedToNative: (address) => {\n if (address === undefined) return undefined as any;\n const numericalValue = addressParser.normalizedToBigInt(address);\n return {\n // FIXME this is wrong\n nativeAddress: bigintToAddress(numericalValue).toString() as HexString,\n chainName,\n };\n },\n normalizedToNativeString: (address) => {\n if (address === undefined) return undefined as any;\n return addressParser(chainName).normalizedToNative(address).nativeAddress;\n },\n nativeToNormalized: (nativeAddress) => {\n if (nativeAddress === undefined) return undefined as any;\n const address = getAddress(nativeAddress);\n assertNative(address, chainName);\n return normalizeHex(addressToHex(address));\n },\n nativeToBytes32Hex: (nativeAddress) => {\n // naturally ton is 32 bytes, pad it anyway\n if (nativeAddress === undefined) return undefined as any;\n return hexZeroPad(\n addressParser(chainName).nativeToNormalized(nativeAddress) as unknown as HexString,\n 32,\n );\n },\n nativeToBytes: (nativeAddress) => {\n if (nativeAddress === undefined) return undefined as any;\n return hexToBytes(addressParser(chainName).nativeToBytes32Hex(nativeAddress));\n },\n nativeToBytes32: (nativeAddress) => {\n if (nativeAddress === undefined) return undefined as any;\n return hexToBytes(addressParser(chainName).nativeToBytes32Hex(nativeAddress));\n },\n normalizedToBytes32Hex: (address) => {\n if (address === undefined) return undefined as any;\n return hexZeroPad(address as unknown as HexString, 32);\n },\n normalizedToBytes32: (address) => {\n if (address === undefined) return undefined as any;\n return hexToBytes(addressParser(chainName).normalizedToBytes32Hex(address));\n },\n bytes32ToNormalized: (bytes32Hex) => {\n if (bytes32Hex === undefined) return undefined as any;\n return normalizeHex(bytes32Hex);\n },\n parseNative: (nativeAddress) => {\n assertNative(nativeAddress, chainName);\n return addressParser(chainName).nativeToNormalized(nativeAddress);\n },\n parseNativeToUnpaddedHex: (nativeAddress) => {\n return addressParser(chainName).parseNative(nativeAddress) as unknown as HexString;\n },\n tonToNormalized: (tonAddress) => {\n return addressParser(chainName).parseNative(addressToHex(tonAddress));\n },\n encoding: AddressEncoding.TON,\n };\n};\n\nexport const initiaAddressParser: (\n chainName: ChainsByEncoding[InitiaString],\n) => AddressParser<ChainsByEncoding[InitiaString]> = (chainName) => {\n return {\n validateNative: (nativeAddress): nativeAddress is InitiaString => {\n if (nativeAddress === undefined) {\n return false;\n }\n try {\n // Both formats are native for the chain and are used kind of randomly.\n return (\n isHexString(nativeAddress) ||\n /^(init)1(['qpzry9x8gf2tvdw0s3jn54khce6mua7l]{38,66})$/.test(nativeAddress)\n );\n } catch {\n return false;\n }\n },\n normalizedToNative: (address) => {\n if (address === undefined) {\n return undefined as any;\n }\n return {\n nativeAddress: AccAddress.fromHex(address as unknown as HexString) as InitiaString,\n chainName,\n };\n },\n normalizedToNativeString: (address) => {\n if (address === undefined) return undefined as any;\n return addressParser(chainName).normalizedToNative(address).nativeAddress;\n },\n nativeToNormalized: (nativeAddress) => {\n if (nativeAddress === undefined) return undefined as any;\n const address = getAddress(nativeAddress);\n assertNative(address, chainName);\n if (isHexString(address)) {\n return normalizeHex(address);\n }\n return normalizeHex(AccAddress.toHex(nativeAddress.toString()) as HexString);\n },\n nativeToBytes32Hex: (nativeAddress) => {\n if (nativeAddress === undefined) return undefined as any;\n // naturally ton is 32 bytes, pad it anyway\n return hexZeroPad(\n addressParser(chainName).nativeToNormalized(nativeAddress) as unknown as HexString,\n 32,\n );\n },\n nativeToBytes: (nativeAddress) => {\n if (nativeAddress === undefined) return undefined as any;\n return hexToBytes(addressParser(chainName).nativeToBytes32Hex(nativeAddress));\n },\n nativeToBytes32: (nativeAddress) => {\n if (nativeAddress === undefined) return undefined as any;\n return hexToBytes(addressParser(chainName).nativeToBytes32Hex(nativeAddress));\n },\n normalizedToBytes32Hex: (address) => {\n if (address === undefined) return undefined as any;\n return hexZeroPad(address as unknown as HexString, 32);\n },\n normalizedToBytes32: (address) => {\n if (address === undefined) return undefined as any;\n return hexToBytes(addressParser(chainName).normalizedToBytes32Hex(address));\n },\n bytes32ToNormalized: (bytes32Hex) => {\n if (bytes32Hex === undefined) return undefined as any;\n return normalizeHex(bytes32Hex);\n },\n parseNative: (nativeAddress) => {\n assertNative(nativeAddress, chainName);\n return addressParser(chainName).nativeToNormalized(nativeAddress);\n },\n parseNativeToUnpaddedHex: (nativeAddress) => {\n return addressParser(chainName).parseNative(nativeAddress) as unknown as HexString;\n },\n encoding: AddressEncoding.INITIA,\n };\n};\n\nexport const base58AddressParser = (\n chainName: ChainsByEncoding[Base58String],\n): AddressParser<ChainsByEncoding[Base58String]> => {\n return {\n validateNative: (nativeAddress): nativeAddress is Base58String => {\n if (nativeAddress === undefined) return false;\n return isBase58(nativeAddress);\n },\n normalizedToNative: (address) => {\n if (address === undefined) return undefined as any;\n return {\n nativeAddress: bs58.encode(\n hexToBytes(address as unknown as HexString),\n ) as Base58String,\n chainName,\n };\n },\n normalizedToNativeString: (address) => {\n if (address === undefined) return undefined as any;\n return addressParser(chainName).normalizedToNative(address).nativeAddress;\n },\n nativeToNormalized: (nativeAddress) => {\n if (nativeAddress === undefined) return undefined as any;\n const address = getAddress(nativeAddress);\n assertNative(address, chainName);\n const hex = bytesToHexPrefixed(bs58.decode(address));\n return normalizeHex(hex);\n },\n nativeToBytes32Hex: (nativeAddress) => {\n // naturally solana is 32 bytes, pad it anyway\n if (nativeAddress === undefined) return undefined as any;\n return hexZeroPad(\n addressParser(chainName).nativeToNormalized(nativeAddress) as unknown as HexString,\n 32,\n );\n },\n nativeToBytes: (nativeAddress) => {\n if (nativeAddress === undefined) return undefined as any;\n const address = getAddress(nativeAddress);\n assertNative(address, chainName);\n return bs58.decode(address);\n },\n nativeToBytes32: (nativeAddress) => {\n if (nativeAddress === undefined) return undefined as any;\n return hexToBytes(addressParser(chainName).nativeToBytes32Hex(nativeAddress));\n },\n normalizedToBytes32Hex: (address) => {\n if (address === undefined) return undefined as any;\n return hexZeroPad(address as unknown as HexString, 32);\n },\n normalizedToBytes32: (address) => {\n if (address === undefined) return undefined as any;\n return hexToBytes(addressParser(chainName).normalizedToBytes32Hex(address));\n },\n bytes32ToNormalized: (bytes32Hex) => {\n if (bytes32Hex === undefined) return undefined as any;\n return normalizeHex(bytes32Hex);\n },\n parseNative: (nativeAddress) => {\n assertNative(nativeAddress, chainName);\n return addressParser(chainName).nativeToNormalized(nativeAddress);\n },\n parseNativeToUnpaddedHex: (nativeAddress) => {\n return addressParser(chainName).parseNative(nativeAddress) as unknown as HexString;\n },\n encoding: AddressEncoding.BASE58,\n };\n};\n\nexport const hexAddressParser = (\n chainName: ChainsByEncoding[HexString],\n): AddressParser<ChainsByEncoding[HexString]> => {\n return {\n validateNative: (nativeAddress): nativeAddress is HexString => {\n if (nativeAddress === undefined) return false;\n return isHexString(nativeAddress);\n },\n normalizedToNative: (address) => {\n if (address === undefined) return undefined as any;\n // we fetch here instead of storing by chain because some chains may not have this defined,\n // so we should only throw on those chains if they try to use these methods that need the native byte length\n const nativeByteLength = StaticChainConfigs.getAddressSizeInBytes(chainName);\n return {\n // we could have EIP-55 here, but omitted for now\n nativeAddress: hexZeroPad(address as unknown as HexString, nativeByteLength),\n chainName,\n };\n },\n normalizedToNativeString: (address) => {\n if (address === undefined) return undefined as any;\n const nativeByteLength = StaticChainConfigs.getAddressSizeInBytes(chainName);\n return hexZeroPad(address as unknown as HexString, nativeByteLength);\n },\n nativeToNormalized: (nativeAddress) => {\n if (nativeAddress === undefined) return undefined as any;\n const address = getAddress(nativeAddress);\n assertNative(address, chainName);\n return normalizeHex(address);\n },\n nativeToBytes: (nativeAddress) => {\n if (nativeAddress === undefined) return undefined as any;\n const address = getAddress(nativeAddress);\n assertNative(address, chainName);\n return hexToBytes(address);\n },\n nativeToBytes32Hex: (nativeAddress) => {\n if (nativeAddress === undefined) return undefined as any;\n const address = getAddress(nativeAddress);\n assertNative(address, chainName);\n return hexZeroPad(address, 32);\n },\n nativeToBytes32: (nativeAddress) => {\n if (nativeAddress === undefined) return undefined as any;\n return hexToBytes(addressParser(chainName).nativeToBytes32Hex(nativeAddress));\n },\n normalizedToBytes32Hex: (address) => {\n if (address === undefined) return undefined as any;\n return hexZeroPad(address as unknown as HexString, 32);\n },\n normalizedToBytes32: (address) => {\n if (address === undefined) return undefined as any;\n return hexToBytes(addressParser(chainName).normalizedToBytes32Hex(address));\n },\n bytes32ToNormalized: (bytes32Hex) => {\n if (bytes32Hex === undefined) return undefined as any;\n return normalizeHex(bytes32Hex);\n },\n parseNative: (nativeAddress) => {\n // Specific case to make tron a little less flaky, handle the 41 prefix\n if (chainName === ChainName.TRON && nativeAddress) {\n nativeAddress = nativeAddress.startsWith('41')\n ? `0x${nativeAddress.slice(2)}`\n : nativeAddress;\n }\n\n assertNative(nativeAddress, chainName);\n return addressParser(chainName).nativeToNormalized(nativeAddress);\n },\n parseNativeToUnpaddedHex: (nativeAddress) => {\n return addressParser(chainName).parseNative(nativeAddress) as unknown as HexString;\n },\n encoding: AddressEncoding.HEX,\n };\n};\n\nconst BYTES32_HEX_LENGTH = 64;\n\n/**\n * If the input is a 0x-prefixed bytes32 hex string (raw contract ID),\n * convert it to native Stellar base32 format. Only accepts exactly\n * 32 bytes (64 hex chars) to avoid silent corruption from other hex\n * representations (e.g. the UTF-8 \"normalized\" encoding which is 56 bytes,\n * or a 20-byte EVM address).\n */\nconst hexToStellarNative = (address: string | undefined): string | undefined => {\n if (!address || !address.startsWith('0x') || !isHexString(address)) return address;\n const hexPayload = address.slice(2);\n if (hexPayload.length !== BYTES32_HEX_LENGTH) {\n throw new Error(\n `Stellar hex address must be exactly 32 bytes (${BYTES32_HEX_LENGTH} hex chars), got ${hexPayload.length}: ${address}`,\n );\n }\n const raw = Buffer.from(hexPayload, 'hex');\n return StrKey.encodeContract(raw);\n};\n\nexport const stellarAddressParser: (\n chainName: InferChainNamesForChainType<ChainType.STELLAR>,\n) => AddressParser<InferChainNamesForChainType<ChainType.STELLAR>> = (chainName) => {\n /**\n * Validate if a string is a valid Stellar address.\n *\n * According to SEP-0023 (https://github.com/stellar/stellar-protocol/blob/master/ecosystem/sep-0023.md),\n * Stellar supports multiple address types encoded as base32 ASCII strings:\n * - Account addresses starting with 'G' (56 chars, Ed25519 public key)\n * - Contract addresses starting with 'C' (56 chars, contract ID)\n * - Muxed addresses starting with 'M' (69 chars, muxed account with ID)\n * - Liquidity pool addresses starting with 'L' (56 chars, pool ID)\n * - Claimable balance addresses starting with 'B' (56 chars, balance ID)\n * - Signed payload starting with 'P' (variable length)\n *\n * All addresses are stored in their native ASCII format to preserve type information.\n */\n const isValidStellarAddress = (address: string): boolean => {\n if (!address) return false;\n // Use the StrKey validation methods for all supported address types\n return (\n StrKey.isValidEd25519PublicKey(address) ||\n StrKey.isValidContract(address) ||\n StrKey.isValidMed25519PublicKey(address) ||\n StrKey.isValidLiquidityPool(address) ||\n StrKey.isValidClaimableBalance(address) ||\n StrKey.isValidSignedPayload(address)\n );\n };\n\n /**\n * Convert Stellar ASCII address to normalized hex by encoding the ASCII string as UTF-8 bytes.\n * This preserves the full address including type prefix and allows round-trip conversion.\n */\n const stellarTextEncoder = new TextEncoder();\n const stellarAsciiToNormalized = (address: string): NormalizedHexString => {\n // Convert ASCII address string to UTF-8 bytes, then to hex\n const bytes = stellarTextEncoder.encode(address);\n return normalizeHex(bytesToHexPrefixed(bytes));\n };\n\n /**\n * Convert normalized hex back to Stellar ASCII address by decoding UTF-8 bytes.\n */\n const stellarTextDecoder = new TextDecoder();\n const normalizedToStellarAscii = (normalizedHex: NormalizedHexString): string => {\n // Convert hex to bytes, then decode as UTF-8 string\n const bytes = hexToBytes(normalizedHex as unknown as HexString);\n return stellarTextDecoder.decode(bytes);\n };\n\n return {\n validateNative: (nativeAddress): nativeAddress is StellarString => {\n if (nativeAddress === undefined) return false;\n return isValidStellarAddress(nativeAddress);\n },\n normalizedToNative: (address) => {\n if (address === undefined) return undefined as any;\n // Decode normalized hex back to ASCII Stellar address\n const stellarAddress = normalizedToStellarAscii(address);\n return {\n nativeAddress: stellarAddress as StellarString,\n chainName,\n };\n },\n normalizedToNativeString: (address) => {\n if (address === undefined) return undefined as any;\n return normalizedToStellarAscii(address) as StellarString;\n },\n nativeToNormalized: (nativeAddress) => {\n if (nativeAddress === undefined) return undefined as any;\n const address = getAddress(nativeAddress);\n assertNative(address, chainName);\n // Convert ASCII address to normalized hex\n return stellarAsciiToNormalized(address);\n },\n nativeToBytes32Hex: (nativeAddress) => {\n if (nativeAddress === undefined) return undefined as any;\n const address = getAddress(nativeAddress);\n assertNative(address, chainName);\n // Decode the Stellar address to its raw 32-byte payload based on type\n let rawBytes: Buffer;\n if (StrKey.isValidEd25519PublicKey(address)) {\n // Account addresses (G...) - Ed25519 public key (32 bytes)\n rawBytes = StrKey.decodeEd25519PublicKey(address);\n } else if (StrKey.isValidContract(address)) {\n // Contract addresses (C...) - contract ID (32 bytes)\n rawBytes = StrKey.decodeContract(address);\n } else if (StrKey.isValidLiquidityPool(address)) {\n // Liquidity pool addresses (L...) - pool ID (32 bytes)\n rawBytes = StrKey.decodeLiquidityPool(address);\n } else if (StrKey.isValidClaimableBalance(address)) {\n // Claimable balance addresses (B...) - balance ID (33 bytes: 1-byte version + 32-byte hash)\n // Per SEP-0023: first byte is the claimable balance type (0x00 = V0), followed by 32-byte SHA256 hash\n const fullBytes = StrKey.decodeClaimableBalance(address);\n rawBytes = fullBytes.subarray(1); // Skip the first byte (version), return the 32-byte hash\n } else if (StrKey.isValidMed25519PublicKey(address)) {\n // Muxed addresses (M...) contain additional data beyond 32 bytes\n throw new Error(\n 'nativeToBytes32 is not supported for Stellar muxed addresses (M...)',\n );\n } else if (StrKey.isValidSignedPayload(address)) {\n // Signed payload (P...) has variable length\n throw new Error(\n 'nativeToBytes32 is not supported for Stellar signed payload addresses (P...)',\n );\n } else {\n throw new Error(`Unknown Stellar address type: ${address}`);\n }\n return bytesToHexPrefixed(rawBytes);\n },\n nativeToBytes: (nativeAddress) => {\n if (nativeAddress === undefined) return undefined as any;\n const address = getAddress(nativeAddress);\n assertNative(address, chainName);\n // Convert ASCII address to UTF-8 bytes\n return stellarTextEncoder.encode(address);\n },\n nativeToBytes32: (nativeAddress) => {\n if (nativeAddress === undefined) return undefined as any;\n // Use nativeToBytes32Hex and convert to Uint8Array\n const hex = addressParser(chainName).nativeToBytes32Hex(nativeAddress);\n return hexToBytes(hex);\n },\n normalizedToBytes32Hex: (address) => {\n if (address === undefined) return undefined as any;\n // Stellar normalized hex is UTF-8 of ASCII address (56 bytes), not raw bytes.\n // Route through native string to extract the raw 32-byte StrKey payload.\n return addressParser(chainName).nativeToBytes32Hex(\n addressParser(chainName).normalizedToNativeString(address),\n );\n },\n normalizedToBytes32: (address) => {\n if (address === undefined) return undefined as any;\n return hexToBytes(addressParser(chainName).normalizedToBytes32Hex(address));\n },\n bytes32ToNormalized: (bytes32Hex) => {\n if (bytes32Hex === undefined) return undefined as any;\n // Always assumes contract address type — G-address→bytes32 is a lossy upcast\n return stellarAsciiToNormalized(\n StrKey.encodeContract(Buffer.from(hexToBytes(bytes32Hex))),\n );\n },\n parseNative: (nativeAddress) => {\n nativeAddress = hexToStellarNative(nativeAddress);\n assertNative(nativeAddress, chainName);\n return addressParser(chainName).nativeToNormalized(nativeAddress);\n },\n parseNativeToUnpaddedHex: (nativeAddress) => {\n nativeAddress = hexToStellarNative(nativeAddress);\n assertNative(nativeAddress, chainName);\n const normalized = addressParser(chainName).nativeToNormalized(nativeAddress);\n return normalized as unknown as HexString;\n },\n encoding: AddressEncoding.STELLAR,\n };\n};\n\n// Starknet addresses do not handle hex-zero padding, so we just return the address as is\nexport const starknetAddressParser = (\n chainName: ChainsByEncoding[HexString],\n): AddressParser<ChainsByEncoding[HexString]> => {\n return {\n ...hexAddressParser(chainName),\n validateNative: (nativeAddress): nativeAddress is HexString => {\n if (nativeAddress === undefined) return false;\n return isHexString(nativeAddress);\n },\n parseNative: (nativeAddress) => {\n if (nativeAddress === undefined) return undefined as any;\n // We can't trust starknet.js strings, they may actually be bigints!\n // so just convert everything to hex first, then convert to normalized\n nativeAddress = `0x${BigInt(nativeAddress).toString(16)}`;\n assertNative(nativeAddress, chainName);\n return addressParser(chainName).nativeToNormalized(nativeAddress);\n },\n normalizedToNative: (address) => {\n if (address === undefined) return undefined as any;\n return {\n nativeAddress: address,\n chainName,\n };\n },\n normalizedToNativeString: (address) => {\n if (address === undefined) return undefined as any;\n return address;\n },\n };\n};\n"]}
|
|
@@ -34,15 +34,9 @@ function addressParser(chainName) {
|
|
|
34
34
|
}
|
|
35
35
|
KHVGLVR5_cjs.__name(addressParser, "addressParser");
|
|
36
36
|
(function(addressParser2) {
|
|
37
|
-
addressParser2.normalizedToBytes32Hex = (address) => {
|
|
38
|
-
return commonEncodingUtils.hexZeroPad(address, 32);
|
|
39
|
-
};
|
|
40
37
|
addressParser2.normalizedToUnpaddedString = (address) => {
|
|
41
38
|
return address.toString();
|
|
42
39
|
};
|
|
43
|
-
addressParser2.normalizedToBytes32 = (address) => {
|
|
44
|
-
return commonEncodingUtils.hexToBytes(addressParser2.normalizedToBytes32Hex(address));
|
|
45
|
-
};
|
|
46
40
|
addressParser2.normalizedToBigInt = (address) => {
|
|
47
41
|
return BigInt(address);
|
|
48
42
|
};
|
|
@@ -103,6 +97,18 @@ var tonAddressParser = /* @__PURE__ */ KHVGLVR5_cjs.__name((chainName) => {
|
|
|
103
97
|
if (nativeAddress === void 0) return void 0;
|
|
104
98
|
return commonEncodingUtils.hexToBytes(addressParser(chainName).nativeToBytes32Hex(nativeAddress));
|
|
105
99
|
}, "nativeToBytes32"),
|
|
100
|
+
normalizedToBytes32Hex: /* @__PURE__ */ KHVGLVR5_cjs.__name((address) => {
|
|
101
|
+
if (address === void 0) return void 0;
|
|
102
|
+
return commonEncodingUtils.hexZeroPad(address, 32);
|
|
103
|
+
}, "normalizedToBytes32Hex"),
|
|
104
|
+
normalizedToBytes32: /* @__PURE__ */ KHVGLVR5_cjs.__name((address) => {
|
|
105
|
+
if (address === void 0) return void 0;
|
|
106
|
+
return commonEncodingUtils.hexToBytes(addressParser(chainName).normalizedToBytes32Hex(address));
|
|
107
|
+
}, "normalizedToBytes32"),
|
|
108
|
+
bytes32ToNormalized: /* @__PURE__ */ KHVGLVR5_cjs.__name((bytes32Hex) => {
|
|
109
|
+
if (bytes32Hex === void 0) return void 0;
|
|
110
|
+
return commonChainModel.normalizeHex(bytes32Hex);
|
|
111
|
+
}, "bytes32ToNormalized"),
|
|
106
112
|
parseNative: /* @__PURE__ */ KHVGLVR5_cjs.__name((nativeAddress) => {
|
|
107
113
|
assertNative(nativeAddress, chainName);
|
|
108
114
|
return addressParser(chainName).nativeToNormalized(nativeAddress);
|
|
@@ -162,6 +168,18 @@ var initiaAddressParser = /* @__PURE__ */ KHVGLVR5_cjs.__name((chainName) => {
|
|
|
162
168
|
if (nativeAddress === void 0) return void 0;
|
|
163
169
|
return commonEncodingUtils.hexToBytes(addressParser(chainName).nativeToBytes32Hex(nativeAddress));
|
|
164
170
|
}, "nativeToBytes32"),
|
|
171
|
+
normalizedToBytes32Hex: /* @__PURE__ */ KHVGLVR5_cjs.__name((address) => {
|
|
172
|
+
if (address === void 0) return void 0;
|
|
173
|
+
return commonEncodingUtils.hexZeroPad(address, 32);
|
|
174
|
+
}, "normalizedToBytes32Hex"),
|
|
175
|
+
normalizedToBytes32: /* @__PURE__ */ KHVGLVR5_cjs.__name((address) => {
|
|
176
|
+
if (address === void 0) return void 0;
|
|
177
|
+
return commonEncodingUtils.hexToBytes(addressParser(chainName).normalizedToBytes32Hex(address));
|
|
178
|
+
}, "normalizedToBytes32"),
|
|
179
|
+
bytes32ToNormalized: /* @__PURE__ */ KHVGLVR5_cjs.__name((bytes32Hex) => {
|
|
180
|
+
if (bytes32Hex === void 0) return void 0;
|
|
181
|
+
return commonChainModel.normalizeHex(bytes32Hex);
|
|
182
|
+
}, "bytes32ToNormalized"),
|
|
165
183
|
parseNative: /* @__PURE__ */ KHVGLVR5_cjs.__name((nativeAddress) => {
|
|
166
184
|
assertNative(nativeAddress, chainName);
|
|
167
185
|
return addressParser(chainName).nativeToNormalized(nativeAddress);
|
|
@@ -210,6 +228,18 @@ var base58AddressParser = /* @__PURE__ */ KHVGLVR5_cjs.__name((chainName) => {
|
|
|
210
228
|
if (nativeAddress === void 0) return void 0;
|
|
211
229
|
return commonEncodingUtils.hexToBytes(addressParser(chainName).nativeToBytes32Hex(nativeAddress));
|
|
212
230
|
}, "nativeToBytes32"),
|
|
231
|
+
normalizedToBytes32Hex: /* @__PURE__ */ KHVGLVR5_cjs.__name((address) => {
|
|
232
|
+
if (address === void 0) return void 0;
|
|
233
|
+
return commonEncodingUtils.hexZeroPad(address, 32);
|
|
234
|
+
}, "normalizedToBytes32Hex"),
|
|
235
|
+
normalizedToBytes32: /* @__PURE__ */ KHVGLVR5_cjs.__name((address) => {
|
|
236
|
+
if (address === void 0) return void 0;
|
|
237
|
+
return commonEncodingUtils.hexToBytes(addressParser(chainName).normalizedToBytes32Hex(address));
|
|
238
|
+
}, "normalizedToBytes32"),
|
|
239
|
+
bytes32ToNormalized: /* @__PURE__ */ KHVGLVR5_cjs.__name((bytes32Hex) => {
|
|
240
|
+
if (bytes32Hex === void 0) return void 0;
|
|
241
|
+
return commonChainModel.normalizeHex(bytes32Hex);
|
|
242
|
+
}, "bytes32ToNormalized"),
|
|
213
243
|
parseNative: /* @__PURE__ */ KHVGLVR5_cjs.__name((nativeAddress) => {
|
|
214
244
|
assertNative(nativeAddress, chainName);
|
|
215
245
|
return addressParser(chainName).nativeToNormalized(nativeAddress);
|
|
@@ -262,6 +292,18 @@ var hexAddressParser = /* @__PURE__ */ KHVGLVR5_cjs.__name((chainName) => {
|
|
|
262
292
|
if (nativeAddress === void 0) return void 0;
|
|
263
293
|
return commonEncodingUtils.hexToBytes(addressParser(chainName).nativeToBytes32Hex(nativeAddress));
|
|
264
294
|
}, "nativeToBytes32"),
|
|
295
|
+
normalizedToBytes32Hex: /* @__PURE__ */ KHVGLVR5_cjs.__name((address) => {
|
|
296
|
+
if (address === void 0) return void 0;
|
|
297
|
+
return commonEncodingUtils.hexZeroPad(address, 32);
|
|
298
|
+
}, "normalizedToBytes32Hex"),
|
|
299
|
+
normalizedToBytes32: /* @__PURE__ */ KHVGLVR5_cjs.__name((address) => {
|
|
300
|
+
if (address === void 0) return void 0;
|
|
301
|
+
return commonEncodingUtils.hexToBytes(addressParser(chainName).normalizedToBytes32Hex(address));
|
|
302
|
+
}, "normalizedToBytes32"),
|
|
303
|
+
bytes32ToNormalized: /* @__PURE__ */ KHVGLVR5_cjs.__name((bytes32Hex) => {
|
|
304
|
+
if (bytes32Hex === void 0) return void 0;
|
|
305
|
+
return commonChainModel.normalizeHex(bytes32Hex);
|
|
306
|
+
}, "bytes32ToNormalized"),
|
|
265
307
|
parseNative: /* @__PURE__ */ KHVGLVR5_cjs.__name((nativeAddress) => {
|
|
266
308
|
if (chainName === layerzeroDefinitions.ChainName.TRON && nativeAddress) {
|
|
267
309
|
nativeAddress = nativeAddress.startsWith("41") ? `0x${nativeAddress.slice(2)}` : nativeAddress;
|
|
@@ -275,6 +317,16 @@ var hexAddressParser = /* @__PURE__ */ KHVGLVR5_cjs.__name((chainName) => {
|
|
|
275
317
|
encoding: "hex"
|
|
276
318
|
};
|
|
277
319
|
}, "hexAddressParser");
|
|
320
|
+
var BYTES32_HEX_LENGTH = 64;
|
|
321
|
+
var hexToStellarNative = /* @__PURE__ */ KHVGLVR5_cjs.__name((address) => {
|
|
322
|
+
if (!address || !address.startsWith("0x") || !commonEncodingUtils.isHexString(address)) return address;
|
|
323
|
+
const hexPayload = address.slice(2);
|
|
324
|
+
if (hexPayload.length !== BYTES32_HEX_LENGTH) {
|
|
325
|
+
throw new Error(`Stellar hex address must be exactly 32 bytes (${BYTES32_HEX_LENGTH} hex chars), got ${hexPayload.length}: ${address}`);
|
|
326
|
+
}
|
|
327
|
+
const raw = Buffer.from(hexPayload, "hex");
|
|
328
|
+
return stellarSdk.StrKey.encodeContract(raw);
|
|
329
|
+
}, "hexToStellarNative");
|
|
278
330
|
var stellarAddressParser = /* @__PURE__ */ KHVGLVR5_cjs.__name((chainName) => {
|
|
279
331
|
const isValidStellarAddress = /* @__PURE__ */ KHVGLVR5_cjs.__name((address) => {
|
|
280
332
|
if (!address) return false;
|
|
@@ -347,11 +399,25 @@ var stellarAddressParser = /* @__PURE__ */ KHVGLVR5_cjs.__name((chainName) => {
|
|
|
347
399
|
const hex = addressParser(chainName).nativeToBytes32Hex(nativeAddress);
|
|
348
400
|
return commonEncodingUtils.hexToBytes(hex);
|
|
349
401
|
}, "nativeToBytes32"),
|
|
402
|
+
normalizedToBytes32Hex: /* @__PURE__ */ KHVGLVR5_cjs.__name((address) => {
|
|
403
|
+
if (address === void 0) return void 0;
|
|
404
|
+
return addressParser(chainName).nativeToBytes32Hex(addressParser(chainName).normalizedToNativeString(address));
|
|
405
|
+
}, "normalizedToBytes32Hex"),
|
|
406
|
+
normalizedToBytes32: /* @__PURE__ */ KHVGLVR5_cjs.__name((address) => {
|
|
407
|
+
if (address === void 0) return void 0;
|
|
408
|
+
return commonEncodingUtils.hexToBytes(addressParser(chainName).normalizedToBytes32Hex(address));
|
|
409
|
+
}, "normalizedToBytes32"),
|
|
410
|
+
bytes32ToNormalized: /* @__PURE__ */ KHVGLVR5_cjs.__name((bytes32Hex) => {
|
|
411
|
+
if (bytes32Hex === void 0) return void 0;
|
|
412
|
+
return stellarAsciiToNormalized(stellarSdk.StrKey.encodeContract(Buffer.from(commonEncodingUtils.hexToBytes(bytes32Hex))));
|
|
413
|
+
}, "bytes32ToNormalized"),
|
|
350
414
|
parseNative: /* @__PURE__ */ KHVGLVR5_cjs.__name((nativeAddress) => {
|
|
415
|
+
nativeAddress = hexToStellarNative(nativeAddress);
|
|
351
416
|
assertNative(nativeAddress, chainName);
|
|
352
417
|
return addressParser(chainName).nativeToNormalized(nativeAddress);
|
|
353
418
|
}, "parseNative"),
|
|
354
419
|
parseNativeToUnpaddedHex: /* @__PURE__ */ KHVGLVR5_cjs.__name((nativeAddress) => {
|
|
420
|
+
nativeAddress = hexToStellarNative(nativeAddress);
|
|
355
421
|
assertNative(nativeAddress, chainName);
|
|
356
422
|
const normalized = addressParser(chainName).nativeToNormalized(nativeAddress);
|
|
357
423
|
return normalized;
|
|
@@ -394,5 +460,5 @@ exports.initiaAddressParser = initiaAddressParser;
|
|
|
394
460
|
exports.starknetAddressParser = starknetAddressParser;
|
|
395
461
|
exports.stellarAddressParser = stellarAddressParser;
|
|
396
462
|
exports.tonAddressParser = tonAddressParser;
|
|
397
|
-
//# sourceMappingURL=
|
|
398
|
-
//# sourceMappingURL=
|
|
463
|
+
//# sourceMappingURL=X46YPLVF.cjs.map
|
|
464
|
+
//# sourceMappingURL=X46YPLVF.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/addressParser.ts"],"names":["init_cjs_shims","AddressEncoding","addressParser","chainName","ChainName","TON","tonAddressParser","SOLANA","base58AddressParser","INITIA","initiaAddressParser","STELLAR","stellarAddressParser","STARKNET","starknetAddressParser","hexAddressParser","normalizedToUnpaddedString","address","toString","normalizedToBigInt","BigInt","parseNative","nativeAddress","assertNative","expectedChainName","validateNative","Error","getAddress","undefined","parseTonAddress","normalizedToNative","numericalValue","bigintToAddress","normalizedToNativeString","nativeToNormalized","normalizeHex","addressToHex","nativeToBytes32Hex","hexZeroPad","nativeToBytes","hexToBytes","nativeToBytes32","normalizedToBytes32Hex","normalizedToBytes32","bytes32ToNormalized","bytes32Hex","parseNativeToUnpaddedHex","tonToNormalized","tonAddress","encoding","isHexString","test","AccAddress","fromHex","toHex","isBase58","bs58","encode","hex","bytesToHexPrefixed","decode","nativeByteLength","StaticChainConfigs","getAddressSizeInBytes","TRON","startsWith","slice","BYTES32_HEX_LENGTH","hexToStellarNative","hexPayload","length","raw","Buffer","from","StrKey","encodeContract","isValidStellarAddress","isValidEd25519PublicKey","isValidContract","isValidMed25519PublicKey","isValidLiquidityPool","isValidClaimableBalance","isValidSignedPayload","stellarTextEncoder","TextEncoder","stellarAsciiToNormalized","bytes","stellarTextDecoder","TextDecoder","normalizedToStellarAscii","normalizedHex","stellarAddress","rawBytes","decodeEd25519PublicKey","decodeContract","decodeLiquidityPool","fullBytes","decodeClaimableBalance","subarray","normalized"],"mappings":";;;;;;;;;;;;;;;;;AAAAA,2BAAA,EAAA;AAiCO,IAAKC,eAAAA,6BAAAA,gBAAAA,EAAAA;;;;;;AAAAA,EAAAA,OAAAA,gBAAAA;;AA6DL,SAASC,cAAmCC,SAAAA,EAAY;AAE3D,EAAA,IAAIA,SAAAA,KAAcC,8BAAAA,CAAUC,GAAAA,EACxB,OAAOC,iBAAiBH,SAAAA,CAAAA;AAC5B,EAAA,IAAIA,SAAAA,KAAcC,8BAAAA,CAAUG,MAAAA,EACxB,OAAOC,oBAAoBL,SAAAA,CAAAA;AAC/B,EAAA,IAAIA,SAAAA,KAAcC,8BAAAA,CAAUK,MAAAA,EACxB,OAAOC,oBAAoBP,SAAAA,CAAAA;AAC/B,EAAA,IAAIA,SAAAA,KAAcC,8BAAAA,CAAUO,OAAAA,EACxB,OAAOC,qBAAqBT,SAAAA,CAAAA;AAChC,EAAA,IAAIA,SAAAA,KAAcC,8BAAAA,CAAUS,QAAAA,EACxB,OAAOC,sBAAsBX,SAAAA,CAAAA;AACjC,EAAA,OAAOY,iBAAiBZ,SAAAA,CAAAA;AAC5B;AAbgBD,mBAAAA,CAAAA,aAAAA,EAAAA,eAAAA,CAAAA;UAeCA,cAAAA,EAAAA;AACAc,EAAAA,cAAAA,CAAAA,0BAAAA,GAA6B,CAACC,OAAAA,KAAAA;AACvC,IAAA,OAAOA,QAAQC,QAAAA,EAAQ;AAC3B,EAAA,CAAA;AAEaC,EAAAA,cAAAA,CAAAA,kBAAAA,GAAqB,CAACF,OAAAA,KAAAA;AAC/B,IAAA,OAAOG,OAAOH,OAAAA,CAAAA;AAClB,EAAA,CAAA;AAEaI,EAAAA,cAAAA,CAAAA,WAAAA,GAAc,CAACC,aAAAA,KAAAA;AACxB,IAAA,OAAOpB,eAAcoB,aAAAA,CAAcnB,SAAS,CAAA,CAAEkB,WAAAA,CAAYC,cAAcA,aAAa,CAAA;AACzF,EAAA,CAAA;AACJ,CAAA,EAZiBpB,aAAAA,KAAAA,aAAAA,GAAAA,EAAAA,CAAAA,CAAAA;AAcjB,SAASqB,YAAAA,CACLD,eACAE,iBAAAA,EAAoB;AAEpB,EAAA,IAAI,CAACtB,aAAAA,CAAcsB,iBAAAA,CAAAA,CAAmBC,cAAAA,CAAeH,aAAAA,CAAAA,EAAgB;AACjE,IAAA,MAAM,IAAII,KAAAA,CACN,mBAAA,GACIJ,aAAAA,GACA,8EACAE,iBAAAA,CAAAA;AAEZ,EAAA;AACJ;AAZSD,mBAAAA,CAAAA,YAAAA,EAAAA,cAAAA,CAAAA;AAcT,IAAMI,UAAAA,wCAAmCL,aAAAA,KAAAA;AACrC,EAAA,OAAO,OAAOA,aAAAA,KAAkB,QAAA,GAAWA,aAAAA,CAAcA,aAAAA,GAAgBA,aAAAA;AAC7E,CAAA,EAFmB,YAAA,CAAA;AAIZ,IAAMhB,gBAAAA,wCAEqDH,SAAAA,KAAAA;AAC9D,EAAA,OAAO;AACHsB,IAAAA,cAAAA,uCAAiBH,aAAAA,KAAAA;AACb,MAAA,IAAIA,kBAAkBM,MAAAA,EAAW;AAC7B,QAAA,OAAO,KAAA;AACX,MAAA;AACA,MAAA,IAAI;AACAC,QAAAA,yBAAAA,CAAgBP,aAAAA,CAAAA;AAChB,QAAA,OAAO,IAAA;MACX,CAAA,CAAA,MAAQ;AACJ,QAAA,OAAO,KAAA;AACX,MAAA;IACJ,CAAA,EAVgB,gBAAA,CAAA;AAWhBQ,IAAAA,kBAAAA,uCAAqBb,OAAAA,KAAAA;AACjB,MAAA,IAAIA,OAAAA,KAAYW,QAAW,OAAOA,MAAAA;AAClC,MAAA,MAAMG,cAAAA,GAAiB7B,aAAAA,CAAciB,kBAAAA,CAAmBF,OAAAA,CAAAA;AACxD,MAAA,OAAO;;QAEHK,aAAAA,EAAeU,yBAAAA,CAAgBD,cAAAA,CAAAA,CAAgBb,QAAAA,EAAQ;AACvDf,QAAAA;AACJ,OAAA;IACJ,CAAA,EARoB,oBAAA,CAAA;AASpB8B,IAAAA,wBAAAA,uCAA2BhB,OAAAA,KAAAA;AACvB,MAAA,IAAIA,OAAAA,KAAYW,QAAW,OAAOA,MAAAA;AAClC,MAAA,OAAO1B,aAAAA,CAAcC,SAAAA,CAAAA,CAAW2B,kBAAAA,CAAmBb,OAAAA,CAAAA,CAASK,aAAAA;IAChE,CAAA,EAH0B,0BAAA,CAAA;AAI1BY,IAAAA,kBAAAA,uCAAqBZ,aAAAA,KAAAA;AACjB,MAAA,IAAIA,aAAAA,KAAkBM,QAAW,OAAOA,MAAAA;AACxC,MAAA,MAAMX,OAAAA,GAAUU,WAAWL,aAAAA,CAAAA;AAC3BC,MAAAA,YAAAA,CAAaN,SAASd,SAAAA,CAAAA;AACtB,MAAA,OAAOgC,6BAAAA,CAAaC,sBAAAA,CAAanB,OAAAA,CAAAA,CAAAA;IACrC,CAAA,EALoB,oBAAA,CAAA;AAMpBoB,IAAAA,kBAAAA,uCAAqBf,aAAAA,KAAAA;AAEjB,MAAA,IAAIA,aAAAA,KAAkBM,QAAW,OAAOA,MAAAA;AACxC,MAAA,OAAOU,+BACHpC,aAAAA,CAAcC,SAAAA,EAAW+B,kBAAAA,CAAmBZ,aAAAA,GAC5C,EAAA,CAAA;IAER,CAAA,EAPoB,oBAAA,CAAA;AAQpBiB,IAAAA,aAAAA,uCAAgBjB,aAAAA,KAAAA;AACZ,MAAA,IAAIA,aAAAA,KAAkBM,QAAW,OAAOA,MAAAA;AACxC,MAAA,OAAOY,+BAAWtC,aAAAA,CAAcC,SAAAA,CAAAA,CAAWkC,kBAAAA,CAAmBf,aAAAA,CAAAA,CAAAA;IAClE,CAAA,EAHe,eAAA,CAAA;AAIfmB,IAAAA,eAAAA,uCAAkBnB,aAAAA,KAAAA;AACd,MAAA,IAAIA,aAAAA,KAAkBM,QAAW,OAAOA,MAAAA;AACxC,MAAA,OAAOY,+BAAWtC,aAAAA,CAAcC,SAAAA,CAAAA,CAAWkC,kBAAAA,CAAmBf,aAAAA,CAAAA,CAAAA;IAClE,CAAA,EAHiB,iBAAA,CAAA;AAIjBoB,IAAAA,sBAAAA,uCAAyBzB,OAAAA,KAAAA;AACrB,MAAA,IAAIA,OAAAA,KAAYW,QAAW,OAAOA,MAAAA;AAClC,MAAA,OAAOU,8BAAAA,CAAWrB,SAAiC,EAAA,CAAA;IACvD,CAAA,EAHwB,wBAAA,CAAA;AAIxB0B,IAAAA,mBAAAA,uCAAsB1B,OAAAA,KAAAA;AAClB,MAAA,IAAIA,OAAAA,KAAYW,QAAW,OAAOA,MAAAA;AAClC,MAAA,OAAOY,+BAAWtC,aAAAA,CAAcC,SAAAA,CAAAA,CAAWuC,sBAAAA,CAAuBzB,OAAAA,CAAAA,CAAAA;IACtE,CAAA,EAHqB,qBAAA,CAAA;AAIrB2B,IAAAA,mBAAAA,uCAAsBC,UAAAA,KAAAA;AAClB,MAAA,IAAIA,UAAAA,KAAejB,QAAW,OAAOA,MAAAA;AACrC,MAAA,OAAOO,8BAAaU,UAAAA,CAAAA;IACxB,CAAA,EAHqB,qBAAA,CAAA;AAIrBxB,IAAAA,WAAAA,uCAAcC,aAAAA,KAAAA;AACVC,MAAAA,YAAAA,CAAaD,eAAenB,SAAAA,CAAAA;AAC5B,MAAA,OAAOD,aAAAA,CAAcC,SAAAA,CAAAA,CAAW+B,kBAAAA,CAAmBZ,aAAAA,CAAAA;IACvD,CAAA,EAHa,aAAA,CAAA;AAIbwB,IAAAA,wBAAAA,uCAA2BxB,aAAAA,KAAAA;AACvB,MAAA,OAAOpB,aAAAA,CAAcC,SAAAA,CAAAA,CAAWkB,WAAAA,CAAYC,aAAAA,CAAAA;IAChD,CAAA,EAF0B,0BAAA,CAAA;AAG1ByB,IAAAA,eAAAA,uCAAkBC,UAAAA,KAAAA;AACd,MAAA,OAAO9C,cAAcC,SAAAA,CAAAA,CAAWkB,WAAAA,CAAYe,sBAAAA,CAAaY,UAAAA,CAAAA,CAAAA;IAC7D,CAAA,EAFiB,iBAAA,CAAA;IAGjBC,QAAAA,EAAQ;AACZ,GAAA;AACJ,CAAA,EAxEiE,kBAAA;AA0E1D,IAAMvC,mBAAAA,wCAEyCP,SAAAA,KAAAA;AAClD,EAAA,OAAO;AACHsB,IAAAA,cAAAA,uCAAiBH,aAAAA,KAAAA;AACb,MAAA,IAAIA,kBAAkBM,MAAAA,EAAW;AAC7B,QAAA,OAAO,KAAA;AACX,MAAA;AACA,MAAA,IAAI;AAEA,QAAA,OACIsB,+BAAAA,CAAY5B,aAAAA,CAAAA,IACZ,uDAAA,CAAwD6B,KAAK7B,aAAAA,CAAAA;MAErE,CAAA,CAAA,MAAQ;AACJ,QAAA,OAAO,KAAA;AACX,MAAA;IACJ,CAAA,EAbgB,gBAAA,CAAA;AAchBQ,IAAAA,kBAAAA,uCAAqBb,OAAAA,KAAAA;AACjB,MAAA,IAAIA,YAAYW,MAAAA,EAAW;AACvB,QAAA,OAAOA,MAAAA;AACX,MAAA;AACA,MAAA,OAAO;QACHN,aAAAA,EAAe8B,oBAAAA,CAAWC,QAAQpC,OAAAA,CAAAA;AAClCd,QAAAA;AACJ,OAAA;IACJ,CAAA,EARoB,oBAAA,CAAA;AASpB8B,IAAAA,wBAAAA,uCAA2BhB,OAAAA,KAAAA;AACvB,MAAA,IAAIA,OAAAA,KAAYW,QAAW,OAAOA,MAAAA;AAClC,MAAA,OAAO1B,aAAAA,CAAcC,SAAAA,CAAAA,CAAW2B,kBAAAA,CAAmBb,OAAAA,CAAAA,CAASK,aAAAA;IAChE,CAAA,EAH0B,0BAAA,CAAA;AAI1BY,IAAAA,kBAAAA,uCAAqBZ,aAAAA,KAAAA;AACjB,MAAA,IAAIA,aAAAA,KAAkBM,QAAW,OAAOA,MAAAA;AACxC,MAAA,MAAMX,OAAAA,GAAUU,WAAWL,aAAAA,CAAAA;AAC3BC,MAAAA,YAAAA,CAAaN,SAASd,SAAAA,CAAAA;AACtB,MAAA,IAAI+C,+BAAAA,CAAYjC,OAAAA,CAAAA,EAAU;AACtB,QAAA,OAAOkB,8BAAalB,OAAAA,CAAAA;AACxB,MAAA;AACA,MAAA,OAAOkB,8BAAaiB,oBAAAA,CAAWE,KAAAA,CAAMhC,aAAAA,CAAcJ,QAAAA,EAAQ,CAAA,CAAA;IAC/D,CAAA,EARoB,oBAAA,CAAA;AASpBmB,IAAAA,kBAAAA,uCAAqBf,aAAAA,KAAAA;AACjB,MAAA,IAAIA,aAAAA,KAAkBM,QAAW,OAAOA,MAAAA;AAExC,MAAA,OAAOU,+BACHpC,aAAAA,CAAcC,SAAAA,EAAW+B,kBAAAA,CAAmBZ,aAAAA,GAC5C,EAAA,CAAA;IAER,CAAA,EAPoB,oBAAA,CAAA;AAQpBiB,IAAAA,aAAAA,uCAAgBjB,aAAAA,KAAAA;AACZ,MAAA,IAAIA,aAAAA,KAAkBM,QAAW,OAAOA,MAAAA;AACxC,MAAA,OAAOY,+BAAWtC,aAAAA,CAAcC,SAAAA,CAAAA,CAAWkC,kBAAAA,CAAmBf,aAAAA,CAAAA,CAAAA;IAClE,CAAA,EAHe,eAAA,CAAA;AAIfmB,IAAAA,eAAAA,uCAAkBnB,aAAAA,KAAAA;AACd,MAAA,IAAIA,aAAAA,KAAkBM,QAAW,OAAOA,MAAAA;AACxC,MAAA,OAAOY,+BAAWtC,aAAAA,CAAcC,SAAAA,CAAAA,CAAWkC,kBAAAA,CAAmBf,aAAAA,CAAAA,CAAAA;IAClE,CAAA,EAHiB,iBAAA,CAAA;AAIjBoB,IAAAA,sBAAAA,uCAAyBzB,OAAAA,KAAAA;AACrB,MAAA,IAAIA,OAAAA,KAAYW,QAAW,OAAOA,MAAAA;AAClC,MAAA,OAAOU,8BAAAA,CAAWrB,SAAiC,EAAA,CAAA;IACvD,CAAA,EAHwB,wBAAA,CAAA;AAIxB0B,IAAAA,mBAAAA,uCAAsB1B,OAAAA,KAAAA;AAClB,MAAA,IAAIA,OAAAA,KAAYW,QAAW,OAAOA,MAAAA;AAClC,MAAA,OAAOY,+BAAWtC,aAAAA,CAAcC,SAAAA,CAAAA,CAAWuC,sBAAAA,CAAuBzB,OAAAA,CAAAA,CAAAA;IACtE,CAAA,EAHqB,qBAAA,CAAA;AAIrB2B,IAAAA,mBAAAA,uCAAsBC,UAAAA,KAAAA;AAClB,MAAA,IAAIA,UAAAA,KAAejB,QAAW,OAAOA,MAAAA;AACrC,MAAA,OAAOO,8BAAaU,UAAAA,CAAAA;IACxB,CAAA,EAHqB,qBAAA,CAAA;AAIrBxB,IAAAA,WAAAA,uCAAcC,aAAAA,KAAAA;AACVC,MAAAA,YAAAA,CAAaD,eAAenB,SAAAA,CAAAA;AAC5B,MAAA,OAAOD,aAAAA,CAAcC,SAAAA,CAAAA,CAAW+B,kBAAAA,CAAmBZ,aAAAA,CAAAA;IACvD,CAAA,EAHa,aAAA,CAAA;AAIbwB,IAAAA,wBAAAA,uCAA2BxB,aAAAA,KAAAA;AACvB,MAAA,OAAOpB,aAAAA,CAAcC,SAAAA,CAAAA,CAAWkB,WAAAA,CAAYC,aAAAA,CAAAA;IAChD,CAAA,EAF0B,0BAAA,CAAA;IAG1B2B,QAAAA,EAAQ;AACZ,GAAA;AACJ,CAAA,EA3EqD,qBAAA;AA6E9C,IAAMzC,mBAAAA,wCACTL,SAAAA,KAAAA;AAEA,EAAA,OAAO;AACHsB,IAAAA,cAAAA,uCAAiBH,aAAAA,KAAAA;AACb,MAAA,IAAIA,aAAAA,KAAkBM,QAAW,OAAO,KAAA;AACxC,MAAA,OAAO2B,6BAASjC,aAAAA,CAAAA;IACpB,CAAA,EAHgB,gBAAA,CAAA;AAIhBQ,IAAAA,kBAAAA,uCAAqBb,OAAAA,KAAAA;AACjB,MAAA,IAAIA,OAAAA,KAAYW,QAAW,OAAOA,MAAAA;AAClC,MAAA,OAAO;AACHN,QAAAA,aAAAA,EAAekC,qBAAAA,CAAKC,MAAAA,CAChBjB,8BAAAA,CAAWvB,OAAAA,CAAAA,CAAAA;AAEfd,QAAAA;AACJ,OAAA;IACJ,CAAA,EARoB,oBAAA,CAAA;AASpB8B,IAAAA,wBAAAA,uCAA2BhB,OAAAA,KAAAA;AACvB,MAAA,IAAIA,OAAAA,KAAYW,QAAW,OAAOA,MAAAA;AAClC,MAAA,OAAO1B,aAAAA,CAAcC,SAAAA,CAAAA,CAAW2B,kBAAAA,CAAmBb,OAAAA,CAAAA,CAASK,aAAAA;IAChE,CAAA,EAH0B,0BAAA,CAAA;AAI1BY,IAAAA,kBAAAA,uCAAqBZ,aAAAA,KAAAA;AACjB,MAAA,IAAIA,aAAAA,KAAkBM,QAAW,OAAOA,MAAAA;AACxC,MAAA,MAAMX,OAAAA,GAAUU,WAAWL,aAAAA,CAAAA;AAC3BC,MAAAA,YAAAA,CAAaN,SAASd,SAAAA,CAAAA;AACtB,MAAA,MAAMuD,GAAAA,GAAMC,sCAAAA,CAAmBH,qBAAAA,CAAKI,MAAAA,CAAO3C,OAAAA,CAAAA,CAAAA;AAC3C,MAAA,OAAOkB,8BAAauB,GAAAA,CAAAA;IACxB,CAAA,EANoB,oBAAA,CAAA;AAOpBrB,IAAAA,kBAAAA,uCAAqBf,aAAAA,KAAAA;AAEjB,MAAA,IAAIA,aAAAA,KAAkBM,QAAW,OAAOA,MAAAA;AACxC,MAAA,OAAOU,+BACHpC,aAAAA,CAAcC,SAAAA,EAAW+B,kBAAAA,CAAmBZ,aAAAA,GAC5C,EAAA,CAAA;IAER,CAAA,EAPoB,oBAAA,CAAA;AAQpBiB,IAAAA,aAAAA,uCAAgBjB,aAAAA,KAAAA;AACZ,MAAA,IAAIA,aAAAA,KAAkBM,QAAW,OAAOA,MAAAA;AACxC,MAAA,MAAMX,OAAAA,GAAUU,WAAWL,aAAAA,CAAAA;AAC3BC,MAAAA,YAAAA,CAAaN,SAASd,SAAAA,CAAAA;AACtB,MAAA,OAAOqD,qBAAAA,CAAKI,OAAO3C,OAAAA,CAAAA;IACvB,CAAA,EALe,eAAA,CAAA;AAMfwB,IAAAA,eAAAA,uCAAkBnB,aAAAA,KAAAA;AACd,MAAA,IAAIA,aAAAA,KAAkBM,QAAW,OAAOA,MAAAA;AACxC,MAAA,OAAOY,+BAAWtC,aAAAA,CAAcC,SAAAA,CAAAA,CAAWkC,kBAAAA,CAAmBf,aAAAA,CAAAA,CAAAA;IAClE,CAAA,EAHiB,iBAAA,CAAA;AAIjBoB,IAAAA,sBAAAA,uCAAyBzB,OAAAA,KAAAA;AACrB,MAAA,IAAIA,OAAAA,KAAYW,QAAW,OAAOA,MAAAA;AAClC,MAAA,OAAOU,8BAAAA,CAAWrB,SAAiC,EAAA,CAAA;IACvD,CAAA,EAHwB,wBAAA,CAAA;AAIxB0B,IAAAA,mBAAAA,uCAAsB1B,OAAAA,KAAAA;AAClB,MAAA,IAAIA,OAAAA,KAAYW,QAAW,OAAOA,MAAAA;AAClC,MAAA,OAAOY,+BAAWtC,aAAAA,CAAcC,SAAAA,CAAAA,CAAWuC,sBAAAA,CAAuBzB,OAAAA,CAAAA,CAAAA;IACtE,CAAA,EAHqB,qBAAA,CAAA;AAIrB2B,IAAAA,mBAAAA,uCAAsBC,UAAAA,KAAAA;AAClB,MAAA,IAAIA,UAAAA,KAAejB,QAAW,OAAOA,MAAAA;AACrC,MAAA,OAAOO,8BAAaU,UAAAA,CAAAA;IACxB,CAAA,EAHqB,qBAAA,CAAA;AAIrBxB,IAAAA,WAAAA,uCAAcC,aAAAA,KAAAA;AACVC,MAAAA,YAAAA,CAAaD,eAAenB,SAAAA,CAAAA;AAC5B,MAAA,OAAOD,aAAAA,CAAcC,SAAAA,CAAAA,CAAW+B,kBAAAA,CAAmBZ,aAAAA,CAAAA;IACvD,CAAA,EAHa,aAAA,CAAA;AAIbwB,IAAAA,wBAAAA,uCAA2BxB,aAAAA,KAAAA;AACvB,MAAA,OAAOpB,aAAAA,CAAcC,SAAAA,CAAAA,CAAWkB,WAAAA,CAAYC,aAAAA,CAAAA;IAChD,CAAA,EAF0B,0BAAA,CAAA;IAG1B2B,QAAAA,EAAQ;AACZ,GAAA;AACJ,CAAA,EAnEmC,qBAAA;AAqE5B,IAAMlC,gBAAAA,wCACTZ,SAAAA,KAAAA;AAEA,EAAA,OAAO;AACHsB,IAAAA,cAAAA,uCAAiBH,aAAAA,KAAAA;AACb,MAAA,IAAIA,aAAAA,KAAkBM,QAAW,OAAO,KAAA;AACxC,MAAA,OAAOsB,gCAAY5B,aAAAA,CAAAA;IACvB,CAAA,EAHgB,gBAAA,CAAA;AAIhBQ,IAAAA,kBAAAA,uCAAqBb,OAAAA,KAAAA;AACjB,MAAA,IAAIA,OAAAA,KAAYW,QAAW,OAAOA,MAAAA;AAGlC,MAAA,MAAMiC,gBAAAA,GAAmBC,kCAAAA,CAAmBC,qBAAAA,CAAsB5D,SAAAA,CAAAA;AAClE,MAAA,OAAO;;QAEHmB,aAAAA,EAAegB,8BAAAA,CAAWrB,SAAiC4C,gBAAAA,CAAAA;AAC3D1D,QAAAA;AACJ,OAAA;IACJ,CAAA,EAVoB,oBAAA,CAAA;AAWpB8B,IAAAA,wBAAAA,uCAA2BhB,OAAAA,KAAAA;AACvB,MAAA,IAAIA,OAAAA,KAAYW,QAAW,OAAOA,MAAAA;AAClC,MAAA,MAAMiC,gBAAAA,GAAmBC,kCAAAA,CAAmBC,qBAAAA,CAAsB5D,SAAAA,CAAAA;AAClE,MAAA,OAAOmC,8BAAAA,CAAWrB,SAAiC4C,gBAAAA,CAAAA;IACvD,CAAA,EAJ0B,0BAAA,CAAA;AAK1B3B,IAAAA,kBAAAA,uCAAqBZ,aAAAA,KAAAA;AACjB,MAAA,IAAIA,aAAAA,KAAkBM,QAAW,OAAOA,MAAAA;AACxC,MAAA,MAAMX,OAAAA,GAAUU,WAAWL,aAAAA,CAAAA;AAC3BC,MAAAA,YAAAA,CAAaN,SAASd,SAAAA,CAAAA;AACtB,MAAA,OAAOgC,8BAAalB,OAAAA,CAAAA;IACxB,CAAA,EALoB,oBAAA,CAAA;AAMpBsB,IAAAA,aAAAA,uCAAgBjB,aAAAA,KAAAA;AACZ,MAAA,IAAIA,aAAAA,KAAkBM,QAAW,OAAOA,MAAAA;AACxC,MAAA,MAAMX,OAAAA,GAAUU,WAAWL,aAAAA,CAAAA;AAC3BC,MAAAA,YAAAA,CAAaN,SAASd,SAAAA,CAAAA;AACtB,MAAA,OAAOqC,+BAAWvB,OAAAA,CAAAA;IACtB,CAAA,EALe,eAAA,CAAA;AAMfoB,IAAAA,kBAAAA,uCAAqBf,aAAAA,KAAAA;AACjB,MAAA,IAAIA,aAAAA,KAAkBM,QAAW,OAAOA,MAAAA;AACxC,MAAA,MAAMX,OAAAA,GAAUU,WAAWL,aAAAA,CAAAA;AAC3BC,MAAAA,YAAAA,CAAaN,SAASd,SAAAA,CAAAA;AACtB,MAAA,OAAOmC,8BAAAA,CAAWrB,SAAS,EAAA,CAAA;IAC/B,CAAA,EALoB,oBAAA,CAAA;AAMpBwB,IAAAA,eAAAA,uCAAkBnB,aAAAA,KAAAA;AACd,MAAA,IAAIA,aAAAA,KAAkBM,QAAW,OAAOA,MAAAA;AACxC,MAAA,OAAOY,+BAAWtC,aAAAA,CAAcC,SAAAA,CAAAA,CAAWkC,kBAAAA,CAAmBf,aAAAA,CAAAA,CAAAA;IAClE,CAAA,EAHiB,iBAAA,CAAA;AAIjBoB,IAAAA,sBAAAA,uCAAyBzB,OAAAA,KAAAA;AACrB,MAAA,IAAIA,OAAAA,KAAYW,QAAW,OAAOA,MAAAA;AAClC,MAAA,OAAOU,8BAAAA,CAAWrB,SAAiC,EAAA,CAAA;IACvD,CAAA,EAHwB,wBAAA,CAAA;AAIxB0B,IAAAA,mBAAAA,uCAAsB1B,OAAAA,KAAAA;AAClB,MAAA,IAAIA,OAAAA,KAAYW,QAAW,OAAOA,MAAAA;AAClC,MAAA,OAAOY,+BAAWtC,aAAAA,CAAcC,SAAAA,CAAAA,CAAWuC,sBAAAA,CAAuBzB,OAAAA,CAAAA,CAAAA;IACtE,CAAA,EAHqB,qBAAA,CAAA;AAIrB2B,IAAAA,mBAAAA,uCAAsBC,UAAAA,KAAAA;AAClB,MAAA,IAAIA,UAAAA,KAAejB,QAAW,OAAOA,MAAAA;AACrC,MAAA,OAAOO,8BAAaU,UAAAA,CAAAA;IACxB,CAAA,EAHqB,qBAAA,CAAA;AAIrBxB,IAAAA,WAAAA,uCAAcC,aAAAA,KAAAA;AAEV,MAAA,IAAInB,SAAAA,KAAcC,8BAAAA,CAAU4D,IAAAA,IAAQ1C,aAAAA,EAAe;AAC/CA,QAAAA,aAAAA,GAAgBA,aAAAA,CAAc2C,WAAW,IAAA,CAAA,GACnC,KAAK3C,aAAAA,CAAc4C,KAAAA,CAAM,CAAA,CAAA,CAAA,CAAA,GACzB5C,aAAAA;AACV,MAAA;AAEAC,MAAAA,YAAAA,CAAaD,eAAenB,SAAAA,CAAAA;AAC5B,MAAA,OAAOD,aAAAA,CAAcC,SAAAA,CAAAA,CAAW+B,kBAAAA,CAAmBZ,aAAAA,CAAAA;IACvD,CAAA,EAVa,aAAA,CAAA;AAWbwB,IAAAA,wBAAAA,uCAA2BxB,aAAAA,KAAAA;AACvB,MAAA,OAAOpB,aAAAA,CAAcC,SAAAA,CAAAA,CAAWkB,WAAAA,CAAYC,aAAAA,CAAAA;IAChD,CAAA,EAF0B,0BAAA,CAAA;IAG1B2B,QAAAA,EAAQ;AACZ,GAAA;AACJ,CAAA,EA1EgC,kBAAA;AA4EhC,IAAMkB,kBAAAA,GAAqB,EAAA;AAS3B,IAAMC,kBAAAA,wCAAsBnD,OAAAA,KAAAA;AACxB,EAAA,IAAI,CAACA,OAAAA,IAAW,CAACA,OAAAA,CAAQgD,UAAAA,CAAW,IAAA,CAAA,IAAS,CAACf,+BAAAA,CAAYjC,OAAAA,CAAAA,EAAU,OAAOA,OAAAA;AAC3E,EAAA,MAAMoD,UAAAA,GAAapD,OAAAA,CAAQiD,KAAAA,CAAM,CAAA,CAAA;AACjC,EAAA,IAAIG,UAAAA,CAAWC,WAAWH,kBAAAA,EAAoB;AAC1C,IAAA,MAAM,IAAIzC,MACN,CAAA,8CAAA,EAAiDyC,kBAAAA,oBAAsCE,UAAAA,CAAWC,MAAM,CAAA,EAAA,EAAKrD,OAAAA,CAAAA,CAAS,CAAA;AAE9H,EAAA;AACA,EAAA,MAAMsD,GAAAA,GAAMC,MAAAA,CAAOC,IAAAA,CAAKJ,UAAAA,EAAY,KAAA,CAAA;AACpC,EAAA,OAAOK,iBAAAA,CAAOC,eAAeJ,GAAAA,CAAAA;AACjC,CAAA,EAV2B,oBAAA,CAAA;AAYpB,IAAM3D,oBAAAA,wCAEyDT,SAAAA,KAAAA;AAelE,EAAA,MAAMyE,qBAAAA,wCAAyB3D,OAAAA,KAAAA;AAC3B,IAAA,IAAI,CAACA,SAAS,OAAO,KAAA;AAErB,IAAA,OACIyD,iBAAAA,CAAOG,wBAAwB5D,OAAAA,CAAAA,IAC/ByD,kBAAOI,eAAAA,CAAgB7D,OAAAA,CAAAA,IACvByD,iBAAAA,CAAOK,wBAAAA,CAAyB9D,OAAAA,KAChCyD,iBAAAA,CAAOM,oBAAAA,CAAqB/D,OAAAA,CAAAA,IAC5ByD,iBAAAA,CAAOO,wBAAwBhE,OAAAA,CAAAA,IAC/ByD,iBAAAA,CAAOQ,oBAAAA,CAAqBjE,OAAAA,CAAAA;EAEpC,CAAA,EAX8B,uBAAA,CAAA;AAiB9B,EAAA,MAAMkE,kBAAAA,GAAqB,IAAIC,WAAAA,EAAAA;AAC/B,EAAA,MAAMC,wBAAAA,wCAA4BpE,OAAAA,KAAAA;AAE9B,IAAA,MAAMqE,KAAAA,GAAQH,kBAAAA,CAAmB1B,MAAAA,CAAOxC,OAAAA,CAAAA;AACxC,IAAA,OAAOkB,6BAAAA,CAAawB,sCAAAA,CAAmB2B,KAAAA,CAAAA,CAAAA;EAC3C,CAAA,EAJiC,0BAAA,CAAA;AASjC,EAAA,MAAMC,kBAAAA,GAAqB,IAAIC,WAAAA,EAAAA;AAC/B,EAAA,MAAMC,wBAAAA,wCAA4BC,aAAAA,KAAAA;AAE9B,IAAA,MAAMJ,KAAAA,GAAQ9C,+BAAWkD,aAAAA,CAAAA;AACzB,IAAA,OAAOH,kBAAAA,CAAmB3B,OAAO0B,KAAAA,CAAAA;EACrC,CAAA,EAJiC,0BAAA,CAAA;AAMjC,EAAA,OAAO;AACH7D,IAAAA,cAAAA,uCAAiBH,aAAAA,KAAAA;AACb,MAAA,IAAIA,aAAAA,KAAkBM,QAAW,OAAO,KAAA;AACxC,MAAA,OAAOgD,sBAAsBtD,aAAAA,CAAAA;IACjC,CAAA,EAHgB,gBAAA,CAAA;AAIhBQ,IAAAA,kBAAAA,uCAAqBb,OAAAA,KAAAA;AACjB,MAAA,IAAIA,OAAAA,KAAYW,QAAW,OAAOA,MAAAA;AAElC,MAAA,MAAM+D,cAAAA,GAAiBF,yBAAyBxE,OAAAA,CAAAA;AAChD,MAAA,OAAO;QACHK,aAAAA,EAAeqE,cAAAA;AACfxF,QAAAA;AACJ,OAAA;IACJ,CAAA,EARoB,oBAAA,CAAA;AASpB8B,IAAAA,wBAAAA,uCAA2BhB,OAAAA,KAAAA;AACvB,MAAA,IAAIA,OAAAA,KAAYW,QAAW,OAAOA,MAAAA;AAClC,MAAA,OAAO6D,yBAAyBxE,OAAAA,CAAAA;IACpC,CAAA,EAH0B,0BAAA,CAAA;AAI1BiB,IAAAA,kBAAAA,uCAAqBZ,aAAAA,KAAAA;AACjB,MAAA,IAAIA,aAAAA,KAAkBM,QAAW,OAAOA,MAAAA;AACxC,MAAA,MAAMX,OAAAA,GAAUU,WAAWL,aAAAA,CAAAA;AAC3BC,MAAAA,YAAAA,CAAaN,SAASd,SAAAA,CAAAA;AAEtB,MAAA,OAAOkF,yBAAyBpE,OAAAA,CAAAA;IACpC,CAAA,EANoB,oBAAA,CAAA;AAOpBoB,IAAAA,kBAAAA,uCAAqBf,aAAAA,KAAAA;AACjB,MAAA,IAAIA,aAAAA,KAAkBM,QAAW,OAAOA,MAAAA;AACxC,MAAA,MAAMX,OAAAA,GAAUU,WAAWL,aAAAA,CAAAA;AAC3BC,MAAAA,YAAAA,CAAaN,SAASd,SAAAA,CAAAA;AAEtB,MAAA,IAAIyF,QAAAA;AACJ,MAAA,IAAIlB,iBAAAA,CAAOG,uBAAAA,CAAwB5D,OAAAA,CAAAA,EAAU;AAEzC2E,QAAAA,QAAAA,GAAWlB,iBAAAA,CAAOmB,uBAAuB5E,OAAAA,CAAAA;MAC7C,CAAA,MAAA,IAAWyD,iBAAAA,CAAOI,eAAAA,CAAgB7D,OAAAA,CAAAA,EAAU;AAExC2E,QAAAA,QAAAA,GAAWlB,iBAAAA,CAAOoB,eAAe7E,OAAAA,CAAAA;MACrC,CAAA,MAAA,IAAWyD,iBAAAA,CAAOM,oBAAAA,CAAqB/D,OAAAA,CAAAA,EAAU;AAE7C2E,QAAAA,QAAAA,GAAWlB,iBAAAA,CAAOqB,oBAAoB9E,OAAAA,CAAAA;MAC1C,CAAA,MAAA,IAAWyD,iBAAAA,CAAOO,uBAAAA,CAAwBhE,OAAAA,CAAAA,EAAU;AAGhD,QAAA,MAAM+E,SAAAA,GAAYtB,iBAAAA,CAAOuB,sBAAAA,CAAuBhF,OAAAA,CAAAA;AAChD2E,QAAAA,QAAAA,GAAWI,SAAAA,CAAUE,SAAS,CAAA,CAAA;MAClC,CAAA,MAAA,IAAWxB,iBAAAA,CAAOK,wBAAAA,CAAyB9D,OAAAA,CAAAA,EAAU;AAEjD,QAAA,MAAM,IAAIS,MACN,qEAAA,CAAA;MAER,CAAA,MAAA,IAAWgD,iBAAAA,CAAOQ,oBAAAA,CAAqBjE,OAAAA,CAAAA,EAAU;AAE7C,QAAA,MAAM,IAAIS,MACN,8EAAA,CAAA;MAER,CAAA,MAAO;AACH,QAAA,MAAM,IAAIA,KAAAA,CAAM,CAAA,8BAAA,EAAiCT,OAAAA,CAAAA,CAAS,CAAA;AAC9D,MAAA;AACA,MAAA,OAAO0C,uCAAmBiC,QAAAA,CAAAA;IAC9B,CAAA,EAlCoB,oBAAA,CAAA;AAmCpBrD,IAAAA,aAAAA,uCAAgBjB,aAAAA,KAAAA;AACZ,MAAA,IAAIA,aAAAA,KAAkBM,QAAW,OAAOA,MAAAA;AACxC,MAAA,MAAMX,OAAAA,GAAUU,WAAWL,aAAAA,CAAAA;AAC3BC,MAAAA,YAAAA,CAAaN,SAASd,SAAAA,CAAAA;AAEtB,MAAA,OAAOgF,kBAAAA,CAAmB1B,OAAOxC,OAAAA,CAAAA;IACrC,CAAA,EANe,eAAA,CAAA;AAOfwB,IAAAA,eAAAA,uCAAkBnB,aAAAA,KAAAA;AACd,MAAA,IAAIA,aAAAA,KAAkBM,QAAW,OAAOA,MAAAA;AAExC,MAAA,MAAM8B,GAAAA,GAAMxD,aAAAA,CAAcC,SAAAA,CAAAA,CAAWkC,mBAAmBf,aAAAA,CAAAA;AACxD,MAAA,OAAOkB,+BAAWkB,GAAAA,CAAAA;IACtB,CAAA,EALiB,iBAAA,CAAA;AAMjBhB,IAAAA,sBAAAA,uCAAyBzB,OAAAA,KAAAA;AACrB,MAAA,IAAIA,OAAAA,KAAYW,QAAW,OAAOA,MAAAA;AAGlC,MAAA,OAAO1B,aAAAA,CAAcC,SAAAA,CAAAA,CAAWkC,kBAAAA,CAC5BnC,cAAcC,SAAAA,CAAAA,CAAW8B,wBAAAA,CAAyBhB,OAAAA,CAAAA,CAAAA;IAE1D,CAAA,EAPwB,wBAAA,CAAA;AAQxB0B,IAAAA,mBAAAA,uCAAsB1B,OAAAA,KAAAA;AAClB,MAAA,IAAIA,OAAAA,KAAYW,QAAW,OAAOA,MAAAA;AAClC,MAAA,OAAOY,+BAAWtC,aAAAA,CAAcC,SAAAA,CAAAA,CAAWuC,sBAAAA,CAAuBzB,OAAAA,CAAAA,CAAAA;IACtE,CAAA,EAHqB,qBAAA,CAAA;AAIrB2B,IAAAA,mBAAAA,uCAAsBC,UAAAA,KAAAA;AAClB,MAAA,IAAIA,UAAAA,KAAejB,QAAW,OAAOA,MAAAA;AAErC,MAAA,OAAOyD,wBAAAA,CACHX,kBAAOC,cAAAA,CAAeH,MAAAA,CAAOC,KAAKjC,8BAAAA,CAAWK,UAAAA,CAAAA,CAAAA,CAAAA,CAAAA;IAErD,CAAA,EANqB,qBAAA,CAAA;AAOrBxB,IAAAA,WAAAA,uCAAcC,aAAAA,KAAAA;AACVA,MAAAA,aAAAA,GAAgB8C,mBAAmB9C,aAAAA,CAAAA;AACnCC,MAAAA,YAAAA,CAAaD,eAAenB,SAAAA,CAAAA;AAC5B,MAAA,OAAOD,aAAAA,CAAcC,SAAAA,CAAAA,CAAW+B,kBAAAA,CAAmBZ,aAAAA,CAAAA;IACvD,CAAA,EAJa,aAAA,CAAA;AAKbwB,IAAAA,wBAAAA,uCAA2BxB,aAAAA,KAAAA;AACvBA,MAAAA,aAAAA,GAAgB8C,mBAAmB9C,aAAAA,CAAAA;AACnCC,MAAAA,YAAAA,CAAaD,eAAenB,SAAAA,CAAAA;AAC5B,MAAA,MAAMgG,UAAAA,GAAajG,aAAAA,CAAcC,SAAAA,CAAAA,CAAW+B,mBAAmBZ,aAAAA,CAAAA;AAC/D,MAAA,OAAO6E,UAAAA;IACX,CAAA,EAL0B,0BAAA,CAAA;IAM1BlD,QAAAA,EAAQ;AACZ,GAAA;AACJ,CAAA,EA1JqE,sBAAA;AA6J9D,IAAMnC,qBAAAA,wCACTX,SAAAA,KAAAA;AAEA,EAAA,OAAO;AACH,IAAA,GAAGY,iBAAiBZ,SAAAA,CAAAA;AACpBsB,IAAAA,cAAAA,uCAAiBH,aAAAA,KAAAA;AACb,MAAA,IAAIA,aAAAA,KAAkBM,QAAW,OAAO,KAAA;AACxC,MAAA,OAAOsB,gCAAY5B,aAAAA,CAAAA;IACvB,CAAA,EAHgB,gBAAA,CAAA;AAIhBD,IAAAA,WAAAA,uCAAcC,aAAAA,KAAAA;AACV,MAAA,IAAIA,aAAAA,KAAkBM,QAAW,OAAOA,MAAAA;AAGxCN,MAAAA,aAAAA,GAAgB,KAAKF,MAAAA,CAAOE,aAAAA,CAAAA,CAAeJ,QAAAA,CAAS,EAAA,CAAA,CAAA,CAAA;AACpDK,MAAAA,YAAAA,CAAaD,eAAenB,SAAAA,CAAAA;AAC5B,MAAA,OAAOD,aAAAA,CAAcC,SAAAA,CAAAA,CAAW+B,kBAAAA,CAAmBZ,aAAAA,CAAAA;IACvD,CAAA,EAPa,aAAA,CAAA;AAQbQ,IAAAA,kBAAAA,uCAAqBb,OAAAA,KAAAA;AACjB,MAAA,IAAIA,OAAAA,KAAYW,QAAW,OAAOA,MAAAA;AAClC,MAAA,OAAO;QACHN,aAAAA,EAAeL,OAAAA;AACfd,QAAAA;AACJ,OAAA;IACJ,CAAA,EANoB,oBAAA,CAAA;AAOpB8B,IAAAA,wBAAAA,uCAA2BhB,OAAAA,KAAAA;AACvB,MAAA,IAAIA,OAAAA,KAAYW,QAAW,OAAOA,MAAAA;AAClC,MAAA,OAAOX,OAAAA;IACX,CAAA,EAH0B,0BAAA;AAI9B,GAAA;AACJ,CAAA,EA7BqC,uBAAA","file":"X46YPLVF.cjs","sourcesContent":["import { AccAddress } from '@initia/initia.js';\nimport { StrKey } from '@stellar/stellar-sdk';\nimport type { Address } from '@ton/ton';\nimport bs58 from 'bs58';\n\nimport type { HexString, NormalizedHexString } from '@layerzerolabs/common-chain-model';\nimport { normalizeHex } from '@layerzerolabs/common-chain-model';\nimport {\n bytesToHexPrefixed,\n hexToBytes,\n hexZeroPad,\n isBase58,\n isHexString,\n} from '@layerzerolabs/common-encoding-utils';\nimport { addressToHex, bigintToAddress, parseTonAddress } from '@layerzerolabs/common-ton';\nimport type {\n Base58String,\n ChainsByEncoding,\n ChainType,\n InferChainNamesForChainType,\n InferChainTypeForChainName,\n InitiaString,\n NativeAddress,\n ResolvedEncodingForChainName,\n StellarString,\n} from '@layerzerolabs/layerzero-definitions';\nimport type { ChainNativeAddress } from '@layerzerolabs/layerzero-definitions';\nimport { ChainName } from '@layerzerolabs/layerzero-definitions';\nimport { StaticChainConfigs } from '@layerzerolabs/static-chain-info';\nimport type { MaybeUndefinedMapped } from '@layerzerolabs/typescript-utils';\n\ntype NativeOrString<T extends ChainName> = ChainNativeAddress<T> | ResolvedEncodingForChainName<T>;\n\nexport enum AddressEncoding {\n HEX = 'hex',\n BASE58 = 'base58',\n TON = 'ton',\n INITIA = 'initia',\n STELLAR = 'stellar',\n}\n\nexport type ExtensionByChainType = {\n ton: {\n tonToNormalized: (tonAddress: Address) => NormalizedHexString;\n };\n};\n\nexport type InferExtensionByChainName<T extends ChainName> =\n InferChainTypeForChainName<T> extends keyof ExtensionByChainType\n ? ExtensionByChainType[InferChainTypeForChainName<T>]\n : {};\n\nexport type AddressParser<T extends ChainName> = {\n normalizedToNative: <Address extends NormalizedHexString | undefined>(\n address: Address,\n ) => MaybeUndefinedMapped<Address, ChainNativeAddress<T>>;\n normalizedToNativeString: <Address extends NormalizedHexString | undefined>(\n address: Address,\n ) => MaybeUndefinedMapped<Address, ResolvedEncodingForChainName<T>>;\n nativeToNormalized: <Address extends NativeOrString<T> | undefined>(\n nativeAddress: Address,\n ) => MaybeUndefinedMapped<Address, NormalizedHexString>;\n nativeToBytes: <Address extends NativeOrString<T> | undefined>(\n nativeAddress: Address,\n ) => MaybeUndefinedMapped<Address, Uint8Array>;\n nativeToBytes32Hex: <Address extends NativeOrString<T> | undefined>(\n nativeAddress: Address,\n ) => MaybeUndefinedMapped<Address, HexString>;\n nativeToBytes32: <Address extends NativeOrString<T> | undefined>(\n nativeAddress: Address,\n ) => MaybeUndefinedMapped<Address, Uint8Array>;\n normalizedToBytes32Hex: <Address extends NormalizedHexString | undefined>(\n address: Address,\n ) => MaybeUndefinedMapped<Address, HexString>;\n normalizedToBytes32: <Address extends NormalizedHexString | undefined>(\n address: Address,\n ) => MaybeUndefinedMapped<Address, Uint8Array>;\n bytes32ToNormalized: <B extends HexString | undefined>(\n bytes32Hex: B,\n ) => MaybeUndefinedMapped<B, NormalizedHexString>;\n validateNative: (\n nativeAddress: string | undefined,\n ) => nativeAddress is ResolvedEncodingForChainName<T>;\n /**\n * Parse a native address to a string if it is valid.\n * Throws an error if the native address is invalid.\n * @param nativeAddress - The native address to parse.\n * @returns The parsed native address.\n */\n parseNative: (nativeAddress: string | undefined) => NormalizedHexString;\n parseNativeToUnpaddedHex: (nativeAddress: string | undefined) => HexString;\n encoding: AddressEncoding;\n} & InferExtensionByChainName<T>;\n\nexport function addressParser<T extends ChainName>(chainName: T): AddressParser<T> {\n // FIXME: figure out a way to not have to cast here\n if (chainName === ChainName.TON)\n return tonAddressParser(chainName) as unknown as AddressParser<T>;\n if (chainName === ChainName.SOLANA)\n return base58AddressParser(chainName) as unknown as AddressParser<T>;\n if (chainName === ChainName.INITIA)\n return initiaAddressParser(chainName) as unknown as AddressParser<T>;\n if (chainName === ChainName.STELLAR)\n return stellarAddressParser(chainName) as unknown as AddressParser<T>;\n if (chainName === ChainName.STARKNET)\n return starknetAddressParser(chainName) as unknown as AddressParser<T>;\n return hexAddressParser(chainName) as unknown as AddressParser<T>;\n}\n\nexport namespace addressParser {\n export const normalizedToUnpaddedString = (address: NormalizedHexString) => {\n return address.toString() as HexString;\n };\n\n export const normalizedToBigInt = (address: NormalizedHexString) => {\n return BigInt(address as unknown as HexString);\n };\n\n export const parseNative = (nativeAddress: NativeAddress) => {\n return addressParser(nativeAddress.chainName).parseNative(nativeAddress.nativeAddress);\n };\n}\n\nfunction assertNative<T extends ChainName>(\n nativeAddress: string | undefined,\n expectedChainName: T,\n): asserts nativeAddress is ResolvedEncodingForChainName<T> {\n if (!addressParser(expectedChainName).validateNative(nativeAddress)) {\n throw new Error(\n 'Cannot convert: \"' +\n nativeAddress +\n '\" - The native address does not match the expected format for the chain: ' +\n expectedChainName,\n );\n }\n}\n\nconst getAddress = <T extends ChainName>(nativeAddress: NativeOrString<T>) => {\n return typeof nativeAddress === 'object' ? nativeAddress.nativeAddress : nativeAddress;\n};\n\nexport const tonAddressParser: (\n chainName: InferChainNamesForChainType<ChainType.TON>,\n) => AddressParser<InferChainNamesForChainType<ChainType.TON>> = (chainName) => {\n return {\n validateNative: (nativeAddress): nativeAddress is HexString => {\n if (nativeAddress === undefined) {\n return false;\n }\n try {\n parseTonAddress(nativeAddress);\n return true;\n } catch {\n return false;\n }\n },\n normalizedToNative: (address) => {\n if (address === undefined) return undefined as any;\n const numericalValue = addressParser.normalizedToBigInt(address);\n return {\n // FIXME this is wrong\n nativeAddress: bigintToAddress(numericalValue).toString() as HexString,\n chainName,\n };\n },\n normalizedToNativeString: (address) => {\n if (address === undefined) return undefined as any;\n return addressParser(chainName).normalizedToNative(address).nativeAddress;\n },\n nativeToNormalized: (nativeAddress) => {\n if (nativeAddress === undefined) return undefined as any;\n const address = getAddress(nativeAddress);\n assertNative(address, chainName);\n return normalizeHex(addressToHex(address));\n },\n nativeToBytes32Hex: (nativeAddress) => {\n // naturally ton is 32 bytes, pad it anyway\n if (nativeAddress === undefined) return undefined as any;\n return hexZeroPad(\n addressParser(chainName).nativeToNormalized(nativeAddress) as unknown as HexString,\n 32,\n );\n },\n nativeToBytes: (nativeAddress) => {\n if (nativeAddress === undefined) return undefined as any;\n return hexToBytes(addressParser(chainName).nativeToBytes32Hex(nativeAddress));\n },\n nativeToBytes32: (nativeAddress) => {\n if (nativeAddress === undefined) return undefined as any;\n return hexToBytes(addressParser(chainName).nativeToBytes32Hex(nativeAddress));\n },\n normalizedToBytes32Hex: (address) => {\n if (address === undefined) return undefined as any;\n return hexZeroPad(address as unknown as HexString, 32);\n },\n normalizedToBytes32: (address) => {\n if (address === undefined) return undefined as any;\n return hexToBytes(addressParser(chainName).normalizedToBytes32Hex(address));\n },\n bytes32ToNormalized: (bytes32Hex) => {\n if (bytes32Hex === undefined) return undefined as any;\n return normalizeHex(bytes32Hex);\n },\n parseNative: (nativeAddress) => {\n assertNative(nativeAddress, chainName);\n return addressParser(chainName).nativeToNormalized(nativeAddress);\n },\n parseNativeToUnpaddedHex: (nativeAddress) => {\n return addressParser(chainName).parseNative(nativeAddress) as unknown as HexString;\n },\n tonToNormalized: (tonAddress) => {\n return addressParser(chainName).parseNative(addressToHex(tonAddress));\n },\n encoding: AddressEncoding.TON,\n };\n};\n\nexport const initiaAddressParser: (\n chainName: ChainsByEncoding[InitiaString],\n) => AddressParser<ChainsByEncoding[InitiaString]> = (chainName) => {\n return {\n validateNative: (nativeAddress): nativeAddress is InitiaString => {\n if (nativeAddress === undefined) {\n return false;\n }\n try {\n // Both formats are native for the chain and are used kind of randomly.\n return (\n isHexString(nativeAddress) ||\n /^(init)1(['qpzry9x8gf2tvdw0s3jn54khce6mua7l]{38,66})$/.test(nativeAddress)\n );\n } catch {\n return false;\n }\n },\n normalizedToNative: (address) => {\n if (address === undefined) {\n return undefined as any;\n }\n return {\n nativeAddress: AccAddress.fromHex(address as unknown as HexString) as InitiaString,\n chainName,\n };\n },\n normalizedToNativeString: (address) => {\n if (address === undefined) return undefined as any;\n return addressParser(chainName).normalizedToNative(address).nativeAddress;\n },\n nativeToNormalized: (nativeAddress) => {\n if (nativeAddress === undefined) return undefined as any;\n const address = getAddress(nativeAddress);\n assertNative(address, chainName);\n if (isHexString(address)) {\n return normalizeHex(address);\n }\n return normalizeHex(AccAddress.toHex(nativeAddress.toString()) as HexString);\n },\n nativeToBytes32Hex: (nativeAddress) => {\n if (nativeAddress === undefined) return undefined as any;\n // naturally ton is 32 bytes, pad it anyway\n return hexZeroPad(\n addressParser(chainName).nativeToNormalized(nativeAddress) as unknown as HexString,\n 32,\n );\n },\n nativeToBytes: (nativeAddress) => {\n if (nativeAddress === undefined) return undefined as any;\n return hexToBytes(addressParser(chainName).nativeToBytes32Hex(nativeAddress));\n },\n nativeToBytes32: (nativeAddress) => {\n if (nativeAddress === undefined) return undefined as any;\n return hexToBytes(addressParser(chainName).nativeToBytes32Hex(nativeAddress));\n },\n normalizedToBytes32Hex: (address) => {\n if (address === undefined) return undefined as any;\n return hexZeroPad(address as unknown as HexString, 32);\n },\n normalizedToBytes32: (address) => {\n if (address === undefined) return undefined as any;\n return hexToBytes(addressParser(chainName).normalizedToBytes32Hex(address));\n },\n bytes32ToNormalized: (bytes32Hex) => {\n if (bytes32Hex === undefined) return undefined as any;\n return normalizeHex(bytes32Hex);\n },\n parseNative: (nativeAddress) => {\n assertNative(nativeAddress, chainName);\n return addressParser(chainName).nativeToNormalized(nativeAddress);\n },\n parseNativeToUnpaddedHex: (nativeAddress) => {\n return addressParser(chainName).parseNative(nativeAddress) as unknown as HexString;\n },\n encoding: AddressEncoding.INITIA,\n };\n};\n\nexport const base58AddressParser = (\n chainName: ChainsByEncoding[Base58String],\n): AddressParser<ChainsByEncoding[Base58String]> => {\n return {\n validateNative: (nativeAddress): nativeAddress is Base58String => {\n if (nativeAddress === undefined) return false;\n return isBase58(nativeAddress);\n },\n normalizedToNative: (address) => {\n if (address === undefined) return undefined as any;\n return {\n nativeAddress: bs58.encode(\n hexToBytes(address as unknown as HexString),\n ) as Base58String,\n chainName,\n };\n },\n normalizedToNativeString: (address) => {\n if (address === undefined) return undefined as any;\n return addressParser(chainName).normalizedToNative(address).nativeAddress;\n },\n nativeToNormalized: (nativeAddress) => {\n if (nativeAddress === undefined) return undefined as any;\n const address = getAddress(nativeAddress);\n assertNative(address, chainName);\n const hex = bytesToHexPrefixed(bs58.decode(address));\n return normalizeHex(hex);\n },\n nativeToBytes32Hex: (nativeAddress) => {\n // naturally solana is 32 bytes, pad it anyway\n if (nativeAddress === undefined) return undefined as any;\n return hexZeroPad(\n addressParser(chainName).nativeToNormalized(nativeAddress) as unknown as HexString,\n 32,\n );\n },\n nativeToBytes: (nativeAddress) => {\n if (nativeAddress === undefined) return undefined as any;\n const address = getAddress(nativeAddress);\n assertNative(address, chainName);\n return bs58.decode(address);\n },\n nativeToBytes32: (nativeAddress) => {\n if (nativeAddress === undefined) return undefined as any;\n return hexToBytes(addressParser(chainName).nativeToBytes32Hex(nativeAddress));\n },\n normalizedToBytes32Hex: (address) => {\n if (address === undefined) return undefined as any;\n return hexZeroPad(address as unknown as HexString, 32);\n },\n normalizedToBytes32: (address) => {\n if (address === undefined) return undefined as any;\n return hexToBytes(addressParser(chainName).normalizedToBytes32Hex(address));\n },\n bytes32ToNormalized: (bytes32Hex) => {\n if (bytes32Hex === undefined) return undefined as any;\n return normalizeHex(bytes32Hex);\n },\n parseNative: (nativeAddress) => {\n assertNative(nativeAddress, chainName);\n return addressParser(chainName).nativeToNormalized(nativeAddress);\n },\n parseNativeToUnpaddedHex: (nativeAddress) => {\n return addressParser(chainName).parseNative(nativeAddress) as unknown as HexString;\n },\n encoding: AddressEncoding.BASE58,\n };\n};\n\nexport const hexAddressParser = (\n chainName: ChainsByEncoding[HexString],\n): AddressParser<ChainsByEncoding[HexString]> => {\n return {\n validateNative: (nativeAddress): nativeAddress is HexString => {\n if (nativeAddress === undefined) return false;\n return isHexString(nativeAddress);\n },\n normalizedToNative: (address) => {\n if (address === undefined) return undefined as any;\n // we fetch here instead of storing by chain because some chains may not have this defined,\n // so we should only throw on those chains if they try to use these methods that need the native byte length\n const nativeByteLength = StaticChainConfigs.getAddressSizeInBytes(chainName);\n return {\n // we could have EIP-55 here, but omitted for now\n nativeAddress: hexZeroPad(address as unknown as HexString, nativeByteLength),\n chainName,\n };\n },\n normalizedToNativeString: (address) => {\n if (address === undefined) return undefined as any;\n const nativeByteLength = StaticChainConfigs.getAddressSizeInBytes(chainName);\n return hexZeroPad(address as unknown as HexString, nativeByteLength);\n },\n nativeToNormalized: (nativeAddress) => {\n if (nativeAddress === undefined) return undefined as any;\n const address = getAddress(nativeAddress);\n assertNative(address, chainName);\n return normalizeHex(address);\n },\n nativeToBytes: (nativeAddress) => {\n if (nativeAddress === undefined) return undefined as any;\n const address = getAddress(nativeAddress);\n assertNative(address, chainName);\n return hexToBytes(address);\n },\n nativeToBytes32Hex: (nativeAddress) => {\n if (nativeAddress === undefined) return undefined as any;\n const address = getAddress(nativeAddress);\n assertNative(address, chainName);\n return hexZeroPad(address, 32);\n },\n nativeToBytes32: (nativeAddress) => {\n if (nativeAddress === undefined) return undefined as any;\n return hexToBytes(addressParser(chainName).nativeToBytes32Hex(nativeAddress));\n },\n normalizedToBytes32Hex: (address) => {\n if (address === undefined) return undefined as any;\n return hexZeroPad(address as unknown as HexString, 32);\n },\n normalizedToBytes32: (address) => {\n if (address === undefined) return undefined as any;\n return hexToBytes(addressParser(chainName).normalizedToBytes32Hex(address));\n },\n bytes32ToNormalized: (bytes32Hex) => {\n if (bytes32Hex === undefined) return undefined as any;\n return normalizeHex(bytes32Hex);\n },\n parseNative: (nativeAddress) => {\n // Specific case to make tron a little less flaky, handle the 41 prefix\n if (chainName === ChainName.TRON && nativeAddress) {\n nativeAddress = nativeAddress.startsWith('41')\n ? `0x${nativeAddress.slice(2)}`\n : nativeAddress;\n }\n\n assertNative(nativeAddress, chainName);\n return addressParser(chainName).nativeToNormalized(nativeAddress);\n },\n parseNativeToUnpaddedHex: (nativeAddress) => {\n return addressParser(chainName).parseNative(nativeAddress) as unknown as HexString;\n },\n encoding: AddressEncoding.HEX,\n };\n};\n\nconst BYTES32_HEX_LENGTH = 64;\n\n/**\n * If the input is a 0x-prefixed bytes32 hex string (raw contract ID),\n * convert it to native Stellar base32 format. Only accepts exactly\n * 32 bytes (64 hex chars) to avoid silent corruption from other hex\n * representations (e.g. the UTF-8 \"normalized\" encoding which is 56 bytes,\n * or a 20-byte EVM address).\n */\nconst hexToStellarNative = (address: string | undefined): string | undefined => {\n if (!address || !address.startsWith('0x') || !isHexString(address)) return address;\n const hexPayload = address.slice(2);\n if (hexPayload.length !== BYTES32_HEX_LENGTH) {\n throw new Error(\n `Stellar hex address must be exactly 32 bytes (${BYTES32_HEX_LENGTH} hex chars), got ${hexPayload.length}: ${address}`,\n );\n }\n const raw = Buffer.from(hexPayload, 'hex');\n return StrKey.encodeContract(raw);\n};\n\nexport const stellarAddressParser: (\n chainName: InferChainNamesForChainType<ChainType.STELLAR>,\n) => AddressParser<InferChainNamesForChainType<ChainType.STELLAR>> = (chainName) => {\n /**\n * Validate if a string is a valid Stellar address.\n *\n * According to SEP-0023 (https://github.com/stellar/stellar-protocol/blob/master/ecosystem/sep-0023.md),\n * Stellar supports multiple address types encoded as base32 ASCII strings:\n * - Account addresses starting with 'G' (56 chars, Ed25519 public key)\n * - Contract addresses starting with 'C' (56 chars, contract ID)\n * - Muxed addresses starting with 'M' (69 chars, muxed account with ID)\n * - Liquidity pool addresses starting with 'L' (56 chars, pool ID)\n * - Claimable balance addresses starting with 'B' (56 chars, balance ID)\n * - Signed payload starting with 'P' (variable length)\n *\n * All addresses are stored in their native ASCII format to preserve type information.\n */\n const isValidStellarAddress = (address: string): boolean => {\n if (!address) return false;\n // Use the StrKey validation methods for all supported address types\n return (\n StrKey.isValidEd25519PublicKey(address) ||\n StrKey.isValidContract(address) ||\n StrKey.isValidMed25519PublicKey(address) ||\n StrKey.isValidLiquidityPool(address) ||\n StrKey.isValidClaimableBalance(address) ||\n StrKey.isValidSignedPayload(address)\n );\n };\n\n /**\n * Convert Stellar ASCII address to normalized hex by encoding the ASCII string as UTF-8 bytes.\n * This preserves the full address including type prefix and allows round-trip conversion.\n */\n const stellarTextEncoder = new TextEncoder();\n const stellarAsciiToNormalized = (address: string): NormalizedHexString => {\n // Convert ASCII address string to UTF-8 bytes, then to hex\n const bytes = stellarTextEncoder.encode(address);\n return normalizeHex(bytesToHexPrefixed(bytes));\n };\n\n /**\n * Convert normalized hex back to Stellar ASCII address by decoding UTF-8 bytes.\n */\n const stellarTextDecoder = new TextDecoder();\n const normalizedToStellarAscii = (normalizedHex: NormalizedHexString): string => {\n // Convert hex to bytes, then decode as UTF-8 string\n const bytes = hexToBytes(normalizedHex as unknown as HexString);\n return stellarTextDecoder.decode(bytes);\n };\n\n return {\n validateNative: (nativeAddress): nativeAddress is StellarString => {\n if (nativeAddress === undefined) return false;\n return isValidStellarAddress(nativeAddress);\n },\n normalizedToNative: (address) => {\n if (address === undefined) return undefined as any;\n // Decode normalized hex back to ASCII Stellar address\n const stellarAddress = normalizedToStellarAscii(address);\n return {\n nativeAddress: stellarAddress as StellarString,\n chainName,\n };\n },\n normalizedToNativeString: (address) => {\n if (address === undefined) return undefined as any;\n return normalizedToStellarAscii(address) as StellarString;\n },\n nativeToNormalized: (nativeAddress) => {\n if (nativeAddress === undefined) return undefined as any;\n const address = getAddress(nativeAddress);\n assertNative(address, chainName);\n // Convert ASCII address to normalized hex\n return stellarAsciiToNormalized(address);\n },\n nativeToBytes32Hex: (nativeAddress) => {\n if (nativeAddress === undefined) return undefined as any;\n const address = getAddress(nativeAddress);\n assertNative(address, chainName);\n // Decode the Stellar address to its raw 32-byte payload based on type\n let rawBytes: Buffer;\n if (StrKey.isValidEd25519PublicKey(address)) {\n // Account addresses (G...) - Ed25519 public key (32 bytes)\n rawBytes = StrKey.decodeEd25519PublicKey(address);\n } else if (StrKey.isValidContract(address)) {\n // Contract addresses (C...) - contract ID (32 bytes)\n rawBytes = StrKey.decodeContract(address);\n } else if (StrKey.isValidLiquidityPool(address)) {\n // Liquidity pool addresses (L...) - pool ID (32 bytes)\n rawBytes = StrKey.decodeLiquidityPool(address);\n } else if (StrKey.isValidClaimableBalance(address)) {\n // Claimable balance addresses (B...) - balance ID (33 bytes: 1-byte version + 32-byte hash)\n // Per SEP-0023: first byte is the claimable balance type (0x00 = V0), followed by 32-byte SHA256 hash\n const fullBytes = StrKey.decodeClaimableBalance(address);\n rawBytes = fullBytes.subarray(1); // Skip the first byte (version), return the 32-byte hash\n } else if (StrKey.isValidMed25519PublicKey(address)) {\n // Muxed addresses (M...) contain additional data beyond 32 bytes\n throw new Error(\n 'nativeToBytes32 is not supported for Stellar muxed addresses (M...)',\n );\n } else if (StrKey.isValidSignedPayload(address)) {\n // Signed payload (P...) has variable length\n throw new Error(\n 'nativeToBytes32 is not supported for Stellar signed payload addresses (P...)',\n );\n } else {\n throw new Error(`Unknown Stellar address type: ${address}`);\n }\n return bytesToHexPrefixed(rawBytes);\n },\n nativeToBytes: (nativeAddress) => {\n if (nativeAddress === undefined) return undefined as any;\n const address = getAddress(nativeAddress);\n assertNative(address, chainName);\n // Convert ASCII address to UTF-8 bytes\n return stellarTextEncoder.encode(address);\n },\n nativeToBytes32: (nativeAddress) => {\n if (nativeAddress === undefined) return undefined as any;\n // Use nativeToBytes32Hex and convert to Uint8Array\n const hex = addressParser(chainName).nativeToBytes32Hex(nativeAddress);\n return hexToBytes(hex);\n },\n normalizedToBytes32Hex: (address) => {\n if (address === undefined) return undefined as any;\n // Stellar normalized hex is UTF-8 of ASCII address (56 bytes), not raw bytes.\n // Route through native string to extract the raw 32-byte StrKey payload.\n return addressParser(chainName).nativeToBytes32Hex(\n addressParser(chainName).normalizedToNativeString(address),\n );\n },\n normalizedToBytes32: (address) => {\n if (address === undefined) return undefined as any;\n return hexToBytes(addressParser(chainName).normalizedToBytes32Hex(address));\n },\n bytes32ToNormalized: (bytes32Hex) => {\n if (bytes32Hex === undefined) return undefined as any;\n // Always assumes contract address type — G-address→bytes32 is a lossy upcast\n return stellarAsciiToNormalized(\n StrKey.encodeContract(Buffer.from(hexToBytes(bytes32Hex))),\n );\n },\n parseNative: (nativeAddress) => {\n nativeAddress = hexToStellarNative(nativeAddress);\n assertNative(nativeAddress, chainName);\n return addressParser(chainName).nativeToNormalized(nativeAddress);\n },\n parseNativeToUnpaddedHex: (nativeAddress) => {\n nativeAddress = hexToStellarNative(nativeAddress);\n assertNative(nativeAddress, chainName);\n const normalized = addressParser(chainName).nativeToNormalized(nativeAddress);\n return normalized as unknown as HexString;\n },\n encoding: AddressEncoding.STELLAR,\n };\n};\n\n// Starknet addresses do not handle hex-zero padding, so we just return the address as is\nexport const starknetAddressParser = (\n chainName: ChainsByEncoding[HexString],\n): AddressParser<ChainsByEncoding[HexString]> => {\n return {\n ...hexAddressParser(chainName),\n validateNative: (nativeAddress): nativeAddress is HexString => {\n if (nativeAddress === undefined) return false;\n return isHexString(nativeAddress);\n },\n parseNative: (nativeAddress) => {\n if (nativeAddress === undefined) return undefined as any;\n // We can't trust starknet.js strings, they may actually be bigints!\n // so just convert everything to hex first, then convert to normalized\n nativeAddress = `0x${BigInt(nativeAddress).toString(16)}`;\n assertNative(nativeAddress, chainName);\n return addressParser(chainName).nativeToNormalized(nativeAddress);\n },\n normalizedToNative: (address) => {\n if (address === undefined) return undefined as any;\n return {\n nativeAddress: address,\n chainName,\n };\n },\n normalizedToNativeString: (address) => {\n if (address === undefined) return undefined as any;\n return address;\n },\n };\n};\n"]}
|