@ledgerhq/coin-filecoin 1.14.1-nightly.20251113102200 → 1.15.0-nightly.20251115023630
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/.unimportedrc.json +2 -0
- package/CHANGELOG.md +11 -7
- package/lib/api/api.d.ts +5 -3
- package/lib/api/api.d.ts.map +1 -1
- package/lib/api/api.js +66 -21
- package/lib/api/api.js.map +1 -1
- package/lib/common-logic/index.d.ts +1 -1
- package/lib/common-logic/index.d.ts.map +1 -1
- package/lib/common-logic/index.js +1 -3
- package/lib/common-logic/index.js.map +1 -1
- package/lib/common-logic/utils.d.ts +0 -2
- package/lib/common-logic/utils.d.ts.map +1 -1
- package/lib/common-logic/utils.js +16 -68
- package/lib/common-logic/utils.js.map +1 -1
- package/lib/erc20/tokenAccounts.d.ts +2 -3
- package/lib/erc20/tokenAccounts.d.ts.map +1 -1
- package/lib/erc20/tokenAccounts.js +46 -32
- package/lib/erc20/tokenAccounts.js.map +1 -1
- package/lib/test/fixtures.d.ts +87 -0
- package/lib/test/fixtures.d.ts.map +1 -0
- package/lib/test/fixtures.js +311 -0
- package/lib/test/fixtures.js.map +1 -0
- package/lib/types/common.d.ts +22 -2
- package/lib/types/common.d.ts.map +1 -1
- package/lib-es/api/api.d.ts +5 -3
- package/lib-es/api/api.d.ts.map +1 -1
- package/lib-es/api/api.js +61 -18
- package/lib-es/api/api.js.map +1 -1
- package/lib-es/common-logic/index.d.ts +1 -1
- package/lib-es/common-logic/index.d.ts.map +1 -1
- package/lib-es/common-logic/index.js +1 -1
- package/lib-es/common-logic/index.js.map +1 -1
- package/lib-es/common-logic/utils.d.ts +0 -2
- package/lib-es/common-logic/utils.d.ts.map +1 -1
- package/lib-es/common-logic/utils.js +16 -66
- package/lib-es/common-logic/utils.js.map +1 -1
- package/lib-es/erc20/tokenAccounts.d.ts +2 -3
- package/lib-es/erc20/tokenAccounts.d.ts.map +1 -1
- package/lib-es/erc20/tokenAccounts.js +47 -33
- package/lib-es/erc20/tokenAccounts.js.map +1 -1
- package/lib-es/test/fixtures.d.ts +87 -0
- package/lib-es/test/fixtures.d.ts.map +1 -0
- package/lib-es/test/fixtures.js +297 -0
- package/lib-es/test/fixtures.js.map +1 -0
- package/lib-es/types/common.d.ts +22 -2
- package/lib-es/types/common.d.ts.map +1 -1
- package/package.json +6 -6
- package/src/api/api.ts +107 -26
- package/src/api/api.unit.test.ts +217 -0
- package/src/common-logic/index.ts +0 -2
- package/src/common-logic/utils.ts +19 -90
- package/src/common-logic/utils.unit.test.ts +429 -0
- package/src/erc20/tokenAccounts.ts +59 -34
- package/src/erc20/tokenAccounts.unit.test.ts +73 -0
- package/src/test/fixtures.ts +342 -0
- package/src/types/common.ts +24 -2
package/lib-es/api/api.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/api/api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/api/api.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export {
|
|
1
|
+
export { mapTxToOps, getAddress, getTxToBroadcast, getAccountShape, getSubAccount, valueFromUnit, } from "./utils";
|
|
2
2
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/common-logic/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/common-logic/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,UAAU,EACV,gBAAgB,EAChB,eAAe,EACf,aAAa,EACb,aAAa,GACd,MAAM,SAAS,CAAC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export {
|
|
1
|
+
export { mapTxToOps, getAddress, getTxToBroadcast, getAccountShape, getSubAccount, valueFromUnit, } from "./utils";
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/common-logic/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/common-logic/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,UAAU,EACV,gBAAgB,EAChB,eAAe,EACf,aAAa,EACb,aAAa,GACd,MAAM,SAAS,CAAC"}
|
|
@@ -3,8 +3,6 @@ import type { Unit } from "@ledgerhq/types-cryptoassets";
|
|
|
3
3
|
import { BigNumber } from "bignumber.js";
|
|
4
4
|
import { BroadcastTransactionRequest, TransactionResponse, Transaction } from "../types";
|
|
5
5
|
import { GetAccountShape, AccountShapeInfo } from "@ledgerhq/coin-framework/bridge/jsHelpers";
|
|
6
|
-
export declare const getUnit: () => Unit;
|
|
7
|
-
export declare const processTxs: (txs: TransactionResponse[]) => TransactionResponse[];
|
|
8
6
|
export declare const mapTxToOps: (accountId: string, { address }: AccountShapeInfo) => (tx: TransactionResponse) => Operation[];
|
|
9
7
|
export declare const getAddress: (a: Account) => {
|
|
10
8
|
address: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/common-logic/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/common-logic/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,8BAA8B,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,2BAA2B,EAAE,mBAAmB,EAAY,WAAW,EAAE,MAAM,UAAU,CAAC;AACnG,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,2CAA2C,CAAC;AAO9F,eAAO,MAAM,UAAU,cACT,MAAM,eAAe,gBAAgB,UAC5C,mBAAmB,KAAG,SAAS,EAmDnC,CAAC;AAEJ,eAAO,MAAM,UAAU,MAClB,OAAO,KACT;IACD,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;CAC6C,CAAC;AAEvE,eAAO,MAAM,gBAAgB,cAChB,SAAS,aACT,MAAM,WACR,OAAO,MAAM,EAAE,GAAG,CAAC,KAC3B,2BAiCF,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,eAiC7B,CAAC;AAEF,eAAO,MAAM,aAAa,YAAa,OAAO,MAAM,WAAW,mEAO9D,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,aAAa,gBAAiB,SAAS,QAAQ,IAAI,cACN,CAAC"}
|
|
@@ -1,70 +1,16 @@
|
|
|
1
|
-
import { log } from "@ledgerhq/logs";
|
|
2
|
-
import { parseCurrencyUnit } from "@ledgerhq/coin-framework/currencies";
|
|
3
|
-
import { getCryptoCurrencyById } from "@ledgerhq/cryptoassets";
|
|
4
1
|
import { BigNumber } from "bignumber.js";
|
|
5
2
|
import { TxStatus } from "../types";
|
|
6
|
-
import { fetchBalances, fetchBlockHeight,
|
|
3
|
+
import { fetchBalances, fetchBlockHeight, fetchTxsWithPages } from "../api/api";
|
|
7
4
|
import { encodeAccountId } from "@ledgerhq/coin-framework/account";
|
|
8
5
|
import { encodeOperationId } from "@ledgerhq/coin-framework/operation";
|
|
9
6
|
import flatMap from "lodash/flatMap";
|
|
10
7
|
import { buildTokenAccounts } from "../erc20/tokenAccounts";
|
|
11
|
-
export const getUnit = () => getCryptoCurrencyById("filecoin").units[0];
|
|
12
|
-
export const processTxs = (txs) => {
|
|
13
|
-
// Group all tx types related to same tx cid into the same object
|
|
14
|
-
const txsByTxCid = txs.reduce((txsByTxCidResult, currentTx) => {
|
|
15
|
-
const { hash: txCid, type: txType } = currentTx;
|
|
16
|
-
const txByType = txsByTxCidResult[txCid] || {};
|
|
17
|
-
switch (txType) {
|
|
18
|
-
case "Send":
|
|
19
|
-
txByType.Send = currentTx;
|
|
20
|
-
break;
|
|
21
|
-
case "InvokeContract":
|
|
22
|
-
txByType.InvokeContract = currentTx;
|
|
23
|
-
break;
|
|
24
|
-
case "Fee":
|
|
25
|
-
txByType.Fee = currentTx;
|
|
26
|
-
break;
|
|
27
|
-
default:
|
|
28
|
-
log("warn", `tx type [${txType}] on tx cid [${txCid}] was not recognized.`);
|
|
29
|
-
break;
|
|
30
|
-
}
|
|
31
|
-
txsByTxCidResult[txCid] = txByType;
|
|
32
|
-
return txsByTxCidResult;
|
|
33
|
-
}, {});
|
|
34
|
-
// Once all tx types have been grouped, we want to find
|
|
35
|
-
const processedTxs = [];
|
|
36
|
-
for (const txCid in txsByTxCid) {
|
|
37
|
-
const item = txsByTxCid[txCid];
|
|
38
|
-
const feeTx = item.Fee;
|
|
39
|
-
let mainTx;
|
|
40
|
-
if ("Send" in item) {
|
|
41
|
-
mainTx = item.Send;
|
|
42
|
-
}
|
|
43
|
-
else if ("InvokeContract" in item) {
|
|
44
|
-
mainTx = item.InvokeContract;
|
|
45
|
-
}
|
|
46
|
-
else {
|
|
47
|
-
log("warn", `unexpected tx type, tx with cid [${txCid}] and payload [${JSON.stringify(item)}]`);
|
|
48
|
-
}
|
|
49
|
-
if (!mainTx) {
|
|
50
|
-
if (feeTx) {
|
|
51
|
-
log("warn", `feeTx [${feeTx.hash}] found without a mainTx linked to it.`);
|
|
52
|
-
}
|
|
53
|
-
continue;
|
|
54
|
-
}
|
|
55
|
-
if (feeTx) {
|
|
56
|
-
mainTx.fee = feeTx.amount;
|
|
57
|
-
}
|
|
58
|
-
processedTxs.push(mainTx);
|
|
59
|
-
}
|
|
60
|
-
return processedTxs;
|
|
61
|
-
};
|
|
62
8
|
export const mapTxToOps = (accountId, { address }) => (tx) => {
|
|
63
|
-
const { to, from, hash, timestamp, amount,
|
|
9
|
+
const { to, from, hash, timestamp, amount, fee_data, status } = tx;
|
|
64
10
|
const ops = [];
|
|
65
11
|
const date = new Date(timestamp * 1000);
|
|
66
|
-
const value =
|
|
67
|
-
const feeToUse =
|
|
12
|
+
const value = new BigNumber(amount);
|
|
13
|
+
const feeToUse = new BigNumber(fee_data?.TotalCost || 0);
|
|
68
14
|
const isSending = address === from;
|
|
69
15
|
const isReceiving = address === to;
|
|
70
16
|
const hasFailed = status !== TxStatus.Ok;
|
|
@@ -129,7 +75,11 @@ export const getTxToBroadcast = (operation, signature, rawData) => {
|
|
|
129
75
|
};
|
|
130
76
|
};
|
|
131
77
|
export const getAccountShape = async (info) => {
|
|
132
|
-
const { address, currency, derivationMode } = info;
|
|
78
|
+
const { address, currency, derivationMode, initialAccount } = info;
|
|
79
|
+
const blockSafeDelta = 1200;
|
|
80
|
+
let lastHeight = (initialAccount?.blockHeight ?? 0) - blockSafeDelta;
|
|
81
|
+
if (lastHeight < 0)
|
|
82
|
+
lastHeight = 0;
|
|
133
83
|
const accountId = encodeAccountId({
|
|
134
84
|
type: "js",
|
|
135
85
|
version: "2",
|
|
@@ -137,18 +87,18 @@ export const getAccountShape = async (info) => {
|
|
|
137
87
|
xpubOrAddress: address,
|
|
138
88
|
derivationMode,
|
|
139
89
|
});
|
|
140
|
-
const blockHeight = await
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
90
|
+
const [blockHeight, balance, rawTxs, tokenAccounts] = await Promise.all([
|
|
91
|
+
fetchBlockHeight(),
|
|
92
|
+
fetchBalances(address),
|
|
93
|
+
fetchTxsWithPages(address, lastHeight),
|
|
94
|
+
buildTokenAccounts(address, lastHeight, accountId, info.initialAccount),
|
|
95
|
+
]);
|
|
145
96
|
const result = {
|
|
146
97
|
id: accountId,
|
|
147
98
|
subAccounts: tokenAccounts,
|
|
148
99
|
balance: new BigNumber(balance.total_balance),
|
|
149
100
|
spendableBalance: new BigNumber(balance.spendable_balance),
|
|
150
|
-
operations,
|
|
151
|
-
operationsCount: operations.length,
|
|
101
|
+
operations: flatMap(rawTxs, mapTxToOps(accountId, info)).sort((a, b) => b.date.getTime() - a.date.getTime()),
|
|
152
102
|
blockHeight: blockHeight.current_block_identifier.index,
|
|
153
103
|
};
|
|
154
104
|
return result;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/common-logic/utils.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/common-logic/utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import { Account, Operation, TokenAccount } from "@ledgerhq/types-live";
|
|
2
2
|
import { ERC20Transfer } from "../types";
|
|
3
3
|
import BigNumber from "bignumber.js";
|
|
4
|
-
|
|
5
|
-
export declare
|
|
6
|
-
export declare function buildTokenAccounts(filAddr: string, parentAccountId: string, initialAccount?: Account): Promise<TokenAccount[]>;
|
|
4
|
+
export declare const erc20TxnToOperation: (tx: ERC20Transfer, address: string, accountId: string) => Operation[];
|
|
5
|
+
export declare function buildTokenAccounts(filAddr: string, lastHeight: number, parentAccountId: string, initialAccount?: Account): Promise<TokenAccount[]>;
|
|
7
6
|
export declare const encodeTxnParams: (abiEncodedParams: string) => string;
|
|
8
7
|
export declare const abiEncodeTransferParams: (recipient: string, amount: string) => string;
|
|
9
8
|
export declare const generateTokenTxnParams: (recipient: string, amount: BigNumber) => string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tokenAccounts.d.ts","sourceRoot":"","sources":["../../src/erc20/tokenAccounts.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAGxE,OAAO,EAAE,aAAa,EAAY,MAAM,UAAU,CAAC;AAInD,OAAO,SAAS,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"tokenAccounts.d.ts","sourceRoot":"","sources":["../../src/erc20/tokenAccounts.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAGxE,OAAO,EAAE,aAAa,EAAY,MAAM,UAAU,CAAC;AAInD,OAAO,SAAS,MAAM,cAAc,CAAC;AASrC,eAAO,MAAM,mBAAmB,OAC1B,aAAa,WACR,MAAM,aACJ,MAAM,KAChB,SAAS,EA0DX,CAAC;AAEF,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,eAAe,EAAE,MAAM,EACvB,cAAc,CAAC,EAAE,OAAO,GACvB,OAAO,CAAC,YAAY,EAAE,CAAC,CA2FzB;AAED,eAAO,MAAM,eAAe,qBAAsB,MAAM,WAUvD,CAAC;AAEF,eAAO,MAAM,uBAAuB,cAAe,MAAM,UAAU,MAAM,WAIxE,CAAC;AAEF,eAAO,MAAM,sBAAsB,cAAe,MAAM,UAAU,SAAS,WAU1E,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import cbor from "@zondax/cbor";
|
|
2
|
-
import { fetchERC20TokenBalance,
|
|
2
|
+
import { fetchERC20TokenBalance, fetchERC20TransactionsWithPages } from "../api";
|
|
3
3
|
import invariant from "invariant";
|
|
4
4
|
import { TxStatus } from "../types";
|
|
5
5
|
import { emptyHistoryCache, encodeTokenAccountId } from "@ledgerhq/coin-framework/account/index";
|
|
@@ -12,11 +12,11 @@ import { ethers } from "ethers";
|
|
|
12
12
|
import contractABI from "./ERC20.json";
|
|
13
13
|
import { RecipientRequired } from "@ledgerhq/errors";
|
|
14
14
|
import { AccountType } from "../bridge/utils";
|
|
15
|
-
import {
|
|
16
|
-
export const erc20TxnToOperation = (tx, address, accountId
|
|
15
|
+
import { mergeOps } from "@ledgerhq/coin-framework/bridge/jsHelpers";
|
|
16
|
+
export const erc20TxnToOperation = (tx, address, accountId) => {
|
|
17
17
|
try {
|
|
18
18
|
const { to, from, timestamp, tx_hash, tx_cid, amount, height, status } = tx;
|
|
19
|
-
const
|
|
19
|
+
const txAmount = new BigNumber(amount);
|
|
20
20
|
const isSending = address.toLowerCase() === from.toLowerCase();
|
|
21
21
|
const isReceiving = address.toLowerCase() === to.toLowerCase();
|
|
22
22
|
const fee = new BigNumber(0);
|
|
@@ -29,7 +29,7 @@ export const erc20TxnToOperation = (tx, address, accountId, unit) => {
|
|
|
29
29
|
id: encodeOperationId(accountId, hash, "OUT"),
|
|
30
30
|
hash,
|
|
31
31
|
type: "OUT",
|
|
32
|
-
value:
|
|
32
|
+
value: txAmount,
|
|
33
33
|
fee,
|
|
34
34
|
blockHeight: height,
|
|
35
35
|
blockHash: "",
|
|
@@ -46,7 +46,7 @@ export const erc20TxnToOperation = (tx, address, accountId, unit) => {
|
|
|
46
46
|
id: encodeOperationId(accountId, hash, "IN"),
|
|
47
47
|
hash,
|
|
48
48
|
type: "IN",
|
|
49
|
-
value,
|
|
49
|
+
value: txAmount,
|
|
50
50
|
fee,
|
|
51
51
|
blockHeight: height,
|
|
52
52
|
blockHash: "",
|
|
@@ -66,40 +66,48 @@ export const erc20TxnToOperation = (tx, address, accountId, unit) => {
|
|
|
66
66
|
return [];
|
|
67
67
|
}
|
|
68
68
|
};
|
|
69
|
-
export async function buildTokenAccounts(filAddr, parentAccountId, initialAccount) {
|
|
69
|
+
export async function buildTokenAccounts(filAddr, lastHeight, parentAccountId, initialAccount) {
|
|
70
70
|
try {
|
|
71
|
-
const transfers = await
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
71
|
+
const transfers = await fetchERC20TransactionsWithPages(filAddr, lastHeight);
|
|
72
|
+
if (!transfers.length) {
|
|
73
|
+
return initialAccount?.subAccounts ?? [];
|
|
74
|
+
}
|
|
75
|
+
// Group transfers by contract address (normalized to lowercase)
|
|
76
|
+
const transfersByContract = transfers.reduce((acc, transfer) => {
|
|
77
|
+
const contractAddr = transfer.contract_address.toLowerCase();
|
|
78
|
+
transfer.contract_address = contractAddr;
|
|
79
|
+
if (!acc[contractAddr]) {
|
|
80
|
+
acc[contractAddr] = [];
|
|
79
81
|
}
|
|
80
|
-
|
|
82
|
+
acc[contractAddr].push(transfer);
|
|
83
|
+
return acc;
|
|
81
84
|
}, {});
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
+
// Create lookup map for existing sub-accounts
|
|
86
|
+
const existingSubAccounts = new Map(initialAccount?.subAccounts?.map(sa => [sa.token.contractAddress.toLowerCase(), sa]) ?? []);
|
|
87
|
+
// Track which existing accounts we've processed
|
|
88
|
+
const processedContracts = new Set();
|
|
89
|
+
const tokenAccounts = [];
|
|
90
|
+
// Process accounts with new transfers
|
|
91
|
+
for (const [contractAddr, txns] of Object.entries(transfersByContract)) {
|
|
92
|
+
processedContracts.add(contractAddr);
|
|
93
|
+
const token = await getCryptoAssetsStore().findTokenByAddressInCurrency(contractAddr, "filecoin");
|
|
85
94
|
if (!token) {
|
|
86
|
-
log("error", `filecoin token not found, addr: ${
|
|
95
|
+
log("error", `filecoin token not found, addr: ${contractAddr}`);
|
|
87
96
|
continue;
|
|
88
97
|
}
|
|
89
|
-
const balance = await fetchERC20TokenBalance(filAddr,
|
|
90
|
-
const bnBalance = new BigNumber(balance
|
|
98
|
+
const balance = await fetchERC20TokenBalance(filAddr, contractAddr);
|
|
99
|
+
const bnBalance = new BigNumber(balance);
|
|
91
100
|
const tokenAccountId = encodeTokenAccountId(parentAccountId, token);
|
|
92
101
|
const operations = txns
|
|
93
|
-
.flatMap(txn => erc20TxnToOperation(txn, filAddr, tokenAccountId
|
|
102
|
+
.flatMap(txn => erc20TxnToOperation(txn, filAddr, tokenAccountId))
|
|
94
103
|
.flat()
|
|
95
104
|
.sort((a, b) => b.date.getTime() - a.date.getTime());
|
|
105
|
+
// Skip if no operations and zero balance
|
|
96
106
|
if (operations.length === 0 && bnBalance.isZero()) {
|
|
97
107
|
continue;
|
|
98
108
|
}
|
|
99
|
-
const
|
|
100
|
-
|
|
101
|
-
initialAccount.subAccounts.find(a => a.id === tokenAccountId);
|
|
102
|
-
const sub = {
|
|
109
|
+
const existingAccount = existingSubAccounts.get(contractAddr);
|
|
110
|
+
const tokenAccount = {
|
|
103
111
|
type: AccountType.TokenAccount,
|
|
104
112
|
id: tokenAccountId,
|
|
105
113
|
parentId: parentAccountId,
|
|
@@ -107,15 +115,21 @@ export async function buildTokenAccounts(filAddr, parentAccountId, initialAccoun
|
|
|
107
115
|
balance: bnBalance,
|
|
108
116
|
spendableBalance: bnBalance,
|
|
109
117
|
operationsCount: txns.length,
|
|
110
|
-
operations,
|
|
111
|
-
pendingOperations:
|
|
112
|
-
creationDate: operations.length
|
|
113
|
-
swapHistory:
|
|
118
|
+
operations: mergeOps(existingAccount?.operations ?? [], operations),
|
|
119
|
+
pendingOperations: existingAccount?.pendingOperations ?? [],
|
|
120
|
+
creationDate: operations[operations.length - 1]?.date ?? new Date(),
|
|
121
|
+
swapHistory: existingAccount?.swapHistory ?? [],
|
|
114
122
|
balanceHistoryCache: emptyHistoryCache, // calculated in the jsHelpers
|
|
115
123
|
};
|
|
116
|
-
|
|
124
|
+
tokenAccounts.push(tokenAccount);
|
|
125
|
+
}
|
|
126
|
+
// Add existing accounts that didn't have new transfers
|
|
127
|
+
for (const [contractAddr, existingAccount] of existingSubAccounts) {
|
|
128
|
+
if (!processedContracts.has(contractAddr)) {
|
|
129
|
+
tokenAccounts.push(existingAccount);
|
|
130
|
+
}
|
|
117
131
|
}
|
|
118
|
-
return
|
|
132
|
+
return tokenAccounts;
|
|
119
133
|
}
|
|
120
134
|
catch (e) {
|
|
121
135
|
log("error", "filecoin error building token accounts", e);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tokenAccounts.js","sourceRoot":"","sources":["../../src/erc20/tokenAccounts.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,cAAc,CAAC;AAEhC,OAAO,EAAE,sBAAsB,EAAE,
|
|
1
|
+
{"version":3,"file":"tokenAccounts.js","sourceRoot":"","sources":["../../src/erc20/tokenAccounts.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,cAAc,CAAC;AAEhC,OAAO,EAAE,sBAAsB,EAAE,+BAA+B,EAAE,MAAM,QAAQ,CAAC;AACjF,OAAO,SAAS,MAAM,WAAW,CAAC;AAClC,OAAO,EAAiB,QAAQ,EAAE,MAAM,UAAU,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,wCAAwC,CAAC;AACjG,OAAO,EAAE,oBAAoB,EAAE,MAAM,8CAA8C,CAAC;AACpF,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AACrC,OAAO,SAAS,MAAM,cAAc,CAAC;AACrC,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AACvE,OAAO,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,WAAW,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,2CAA2C,CAAC;AAErE,MAAM,CAAC,MAAM,mBAAmB,GAAG,CACjC,EAAiB,EACjB,OAAe,EACf,SAAiB,EACJ,EAAE;IACf,IAAI,CAAC;QACH,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;QAC5E,MAAM,QAAQ,GAAG,IAAI,SAAS,CAAC,MAAM,CAAC,CAAC;QAEvC,MAAM,SAAS,GAAG,OAAO,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,WAAW,EAAE,CAAC;QAC/D,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,EAAE,KAAK,EAAE,CAAC,WAAW,EAAE,CAAC;QAE/D,MAAM,GAAG,GAAG,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC;QAE7B,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC;QACxC,MAAM,IAAI,GAAG,MAAM,IAAI,OAAO,CAAC;QAC/B,MAAM,SAAS,GAAG,MAAM,KAAK,QAAQ,CAAC,EAAE,CAAC;QAEzC,MAAM,GAAG,GAAgB,EAAE,CAAC;QAC5B,IAAI,SAAS,EAAE,CAAC;YACd,GAAG,CAAC,IAAI,CAAC;gBACP,EAAE,EAAE,iBAAiB,CAAC,SAAS,EAAE,IAAI,EAAE,KAAK,CAAC;gBAC7C,IAAI;gBACJ,IAAI,EAAE,KAAK;gBACX,KAAK,EAAE,QAAQ;gBACf,GAAG;gBACH,WAAW,EAAE,MAAM;gBACnB,SAAS,EAAE,EAAE;gBACb,SAAS;gBACT,OAAO,EAAE,CAAC,IAAI,CAAC;gBACf,UAAU,EAAE,CAAC,EAAE,CAAC;gBAChB,IAAI;gBACJ,SAAS;gBACT,KAAK,EAAE,EAAE;aACV,CAAC,CAAC;QACL,CAAC;QAED,IAAI,WAAW,EAAE,CAAC;YAChB,GAAG,CAAC,IAAI,CAAC;gBACP,EAAE,EAAE,iBAAiB,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC;gBAC5C,IAAI;gBACJ,IAAI,EAAE,IAAI;gBACV,KAAK,EAAE,QAAQ;gBACf,GAAG;gBACH,WAAW,EAAE,MAAM;gBACnB,SAAS,EAAE,EAAE;gBACb,SAAS;gBACT,OAAO,EAAE,CAAC,IAAI,CAAC;gBACf,UAAU,EAAE,CAAC,EAAE,CAAC;gBAChB,IAAI;gBACJ,SAAS;gBACT,KAAK,EAAE,EAAE;aACV,CAAC,CAAC;QACL,CAAC;QAED,SAAS,CAAC,GAAG,EAAE,mCAAmC,CAAC,CAAC;QAEpD,OAAO,GAAG,CAAC;IACb,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,GAAG,CAAC,OAAO,EAAE,0DAA0D,EAAE,CAAC,CAAC,CAAC;QAC5E,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,OAAe,EACf,UAAkB,EAClB,eAAuB,EACvB,cAAwB;IAExB,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,MAAM,+BAA+B,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QAE7E,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;YACtB,OAAO,cAAc,EAAE,WAAW,IAAI,EAAE,CAAC;QAC3C,CAAC;QAED,gEAAgE;QAChE,MAAM,mBAAmB,GAAG,SAAS,CAAC,MAAM,CAC1C,CAAC,GAAG,EAAE,QAAQ,EAAE,EAAE;YAChB,MAAM,YAAY,GAAG,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,CAAC;YAC7D,QAAQ,CAAC,gBAAgB,GAAG,YAAY,CAAC;YAEzC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC;gBACvB,GAAG,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC;YACzB,CAAC;YACD,GAAG,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACjC,OAAO,GAAG,CAAC;QACb,CAAC,EACD,EAAE,CACH,CAAC;QAEF,8CAA8C;QAC9C,MAAM,mBAAmB,GAAG,IAAI,GAAG,CACjC,cAAc,EAAE,WAAW,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,eAAe,CAAC,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAC3F,CAAC;QAEF,gDAAgD;QAChD,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAAU,CAAC;QAC7C,MAAM,aAAa,GAAmB,EAAE,CAAC;QAEzC,sCAAsC;QACtC,KAAK,MAAM,CAAC,YAAY,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,mBAAmB,CAAC,EAAE,CAAC;YACvE,kBAAkB,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;YAErC,MAAM,KAAK,GAAG,MAAM,oBAAoB,EAAE,CAAC,4BAA4B,CACrE,YAAY,EACZ,UAAU,CACX,CAAC;YACF,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,GAAG,CAAC,OAAO,EAAE,mCAAmC,YAAY,EAAE,CAAC,CAAC;gBAChE,SAAS;YACX,CAAC;YAED,MAAM,OAAO,GAAG,MAAM,sBAAsB,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;YACpE,MAAM,SAAS,GAAG,IAAI,SAAS,CAAC,OAAO,CAAC,CAAC;YACzC,MAAM,cAAc,GAAG,oBAAoB,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;YAEpE,MAAM,UAAU,GAAG,IAAI;iBACpB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,mBAAmB,CAAC,GAAG,EAAE,OAAO,EAAE,cAAc,CAAC,CAAC;iBACjE,IAAI,EAAE;iBACN,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;YAEvD,yCAAyC;YACzC,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,IAAI,SAAS,CAAC,MAAM,EAAE,EAAE,CAAC;gBAClD,SAAS;YACX,CAAC;YAED,MAAM,eAAe,GAAG,mBAAmB,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;YAE9D,MAAM,YAAY,GAAiB;gBACjC,IAAI,EAAE,WAAW,CAAC,YAAY;gBAC9B,EAAE,EAAE,cAAc;gBAClB,QAAQ,EAAE,eAAe;gBACzB,KAAK;gBACL,OAAO,EAAE,SAAS;gBAClB,gBAAgB,EAAE,SAAS;gBAC3B,eAAe,EAAE,IAAI,CAAC,MAAM;gBAC5B,UAAU,EAAE,QAAQ,CAAC,eAAe,EAAE,UAAU,IAAI,EAAE,EAAE,UAAU,CAAC;gBACnE,iBAAiB,EAAE,eAAe,EAAE,iBAAiB,IAAI,EAAE;gBAC3D,YAAY,EAAE,UAAU,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,IAAI,IAAI,IAAI,IAAI,EAAE;gBACnE,WAAW,EAAE,eAAe,EAAE,WAAW,IAAI,EAAE;gBAC/C,mBAAmB,EAAE,iBAAiB,EAAE,8BAA8B;aACvE,CAAC;YAEF,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACnC,CAAC;QAED,uDAAuD;QACvD,KAAK,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,IAAI,mBAAmB,EAAE,CAAC;YAClE,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC1C,aAAa,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YACtC,CAAC;QACH,CAAC;QAED,OAAO,aAAa,CAAC;IACvB,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,GAAG,CAAC,OAAO,EAAE,wCAAwC,EAAE,CAAC,CAAC,CAAC;QAC1D,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,gBAAwB,EAAE,EAAE;IAC1D,GAAG,CAAC,OAAO,EAAE,8BAA8B,gBAAgB,EAAE,CAAC,CAAC;IAC/D,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;IAC5D,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,oBAAoB;IAClF,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAExC,OAAO,WAAW,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AACxC,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,SAAiB,EAAE,MAAc,EAAE,EAAE;IAC3E,MAAM,QAAQ,GAAG,IAAI,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IACnD,MAAM,IAAI,GAAG,QAAQ,CAAC,kBAAkB,CAAC,UAAU,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC;IAC1E,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,SAAiB,EAAE,MAAiB,EAAE,EAAE;IAC7E,GAAG,CAAC,OAAO,EAAE,wBAAwB,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IAEjF,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,IAAI,iBAAiB,EAAE,CAAC;IAChC,CAAC;IAED,SAAS,GAAG,sBAAsB,CAAC,SAAS,CAAC,CAAC;IAE9C,OAAO,uBAAuB,CAAC,SAAS,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC/D,CAAC,CAAC"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { Account, Operation, TokenAccount } from "@ledgerhq/types-live";
|
|
2
|
+
import type { Transaction } from "../types/bridge";
|
|
3
|
+
import type { TransactionResponse, BalanceResponse, EstimatedFeesResponse, ERC20Transfer } from "../types/common";
|
|
4
|
+
/**
|
|
5
|
+
* Sample Filecoin addresses for testing
|
|
6
|
+
*/
|
|
7
|
+
export declare const TEST_ADDRESSES: {
|
|
8
|
+
F1_ADDRESS: string;
|
|
9
|
+
F4_ADDRESS: string;
|
|
10
|
+
RECIPIENT_F1: string;
|
|
11
|
+
RECIPIENT_F4: string;
|
|
12
|
+
ERC20_CONTRACT: string;
|
|
13
|
+
};
|
|
14
|
+
/**
|
|
15
|
+
* Sample transaction hashes for testing
|
|
16
|
+
*/
|
|
17
|
+
export declare const TEST_TRANSACTION_HASHES: {
|
|
18
|
+
VALID: string;
|
|
19
|
+
};
|
|
20
|
+
/**
|
|
21
|
+
* Sample block heights for testing
|
|
22
|
+
*/
|
|
23
|
+
export declare const TEST_BLOCK_HEIGHTS: {
|
|
24
|
+
CURRENT: number;
|
|
25
|
+
RECENT: number;
|
|
26
|
+
OLD: number;
|
|
27
|
+
};
|
|
28
|
+
/**
|
|
29
|
+
* Create a mock Filecoin account for testing
|
|
30
|
+
*
|
|
31
|
+
* @param options Optional parameters to override default values
|
|
32
|
+
* @returns A mock Filecoin account
|
|
33
|
+
*/
|
|
34
|
+
export declare const createMockAccount: (options?: Partial<Account>) => Account;
|
|
35
|
+
/**
|
|
36
|
+
* Create a mock Filecoin transaction for testing
|
|
37
|
+
*
|
|
38
|
+
* @param options Optional parameters to override default values
|
|
39
|
+
* @returns A mock Filecoin transaction
|
|
40
|
+
*/
|
|
41
|
+
export declare const createMockTransaction: (options?: Partial<Transaction>) => Transaction;
|
|
42
|
+
/**
|
|
43
|
+
* Create a mock Filecoin operation for testing
|
|
44
|
+
*
|
|
45
|
+
* @param account The account associated with the operation
|
|
46
|
+
* @param transaction The transaction details
|
|
47
|
+
* @param options Optional parameters to override default values
|
|
48
|
+
* @returns A mock Filecoin operation
|
|
49
|
+
*/
|
|
50
|
+
export declare const createMockOperation: (account: Account, transaction: Transaction, options?: Partial<Operation>) => Operation;
|
|
51
|
+
/**
|
|
52
|
+
* Create a mock TokenAccount for testing ERC20 functionality
|
|
53
|
+
*
|
|
54
|
+
* @param parentAccount The parent Filecoin account
|
|
55
|
+
* @param options Optional parameters to override default values
|
|
56
|
+
* @returns A mock TokenAccount
|
|
57
|
+
*/
|
|
58
|
+
export declare const createMockTokenAccount: (parentAccount: Account, options?: Partial<TokenAccount>) => TokenAccount;
|
|
59
|
+
/**
|
|
60
|
+
* Create mock API response for balance
|
|
61
|
+
*
|
|
62
|
+
* @param options Optional parameters to override default values
|
|
63
|
+
* @returns A mock BalanceResponse
|
|
64
|
+
*/
|
|
65
|
+
export declare const createMockBalanceResponse: (options?: Partial<BalanceResponse>) => BalanceResponse;
|
|
66
|
+
/**
|
|
67
|
+
* Create mock API response for transaction
|
|
68
|
+
*
|
|
69
|
+
* @param options Optional parameters to override default values
|
|
70
|
+
* @returns A mock TransactionResponse
|
|
71
|
+
*/
|
|
72
|
+
export declare const createMockTransactionResponse: (options?: Partial<TransactionResponse>) => TransactionResponse;
|
|
73
|
+
/**
|
|
74
|
+
* Create mock API response for estimated fees
|
|
75
|
+
*
|
|
76
|
+
* @param options Optional parameters to override default values
|
|
77
|
+
* @returns A mock EstimatedFeesResponse
|
|
78
|
+
*/
|
|
79
|
+
export declare const createMockEstimatedFeesResponse: (options?: Partial<EstimatedFeesResponse>) => EstimatedFeesResponse;
|
|
80
|
+
/**
|
|
81
|
+
* Create mock ERC20 transfer for testing token functionality
|
|
82
|
+
*
|
|
83
|
+
* @param options Optional parameters to override default values
|
|
84
|
+
* @returns A mock ERC20Transfer
|
|
85
|
+
*/
|
|
86
|
+
export declare const createMockERC20Transfer: (options?: Partial<ERC20Transfer>) => ERC20Transfer;
|
|
87
|
+
//# sourceMappingURL=fixtures.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fixtures.d.ts","sourceRoot":"","sources":["../../src/test/fixtures.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,SAAS,EAAiB,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACvF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,KAAK,EACV,mBAAmB,EACnB,eAAe,EACf,qBAAqB,EACrB,aAAa,EACd,MAAM,iBAAiB,CAAC;AAIzB;;GAEG;AACH,eAAO,MAAM,cAAc;;;;;;CAW1B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,uBAAuB;;CAEnC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,kBAAkB;;;;CAI9B,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,aAAc,QAAQ,OAAO,CAAC,KAAG,OA8E9D,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,aAAc,QAAQ,WAAW,CAAC,KAAG,WAmBtE,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,mBAAmB,YACrB,OAAO,eACH,WAAW,YACd,QAAQ,SAAS,CAAC,KAC3B,SAuBF,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,sBAAsB,kBAClB,OAAO,YACZ,QAAQ,YAAY,CAAC,KAC9B,YA2CF,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,yBAAyB,aAAc,QAAQ,eAAe,CAAC,KAAG,eAM9E,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,6BAA6B,aAC9B,QAAQ,mBAAmB,CAAC,KACrC,mBA0BF,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,+BAA+B,aAChC,QAAQ,qBAAqB,CAAC,KACvC,qBAOF,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,uBAAuB,aAAc,QAAQ,aAAa,CAAC,KAAG,aAmB1E,CAAC"}
|