@reactmore/crypto-wallet-sdk 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crypto-wallet-sdk.cjs.development.js","sources":["../src/api/dex.ts","../src/services/base/wallet.ts","../src/utils/response.ts","../src/utils/amount.ts","../src/utils/evmUnits.ts","../src/services/evm/wallet.ts","../src/services/btc/wallet.ts","../src/services/sol/wallet.ts","../src/services/wallet-registry.ts","../src/client/index.ts"],"sourcesContent":["// src/api/dex.ts\r\nimport {\r\n DexConfig,\r\n NetworkConfigs,\r\n ChainConfig,\r\n} from \"./../types\";\r\n\r\nexport class DexAPI {\r\n private readonly defaultNetworkConfigs: NetworkConfigs = {\r\n \"1\": { // Ethereum Mainnet\r\n id: \"1\",\r\n explorer: \"https://etherscan.io/\",\r\n defaultSlippage: \"0.005\",\r\n maxSlippage: \"1\",\r\n confirmationTimeout: 60000,\r\n maxRetries: 3,\r\n },\r\n \"11155111\": { // Ethereum Sepolia\r\n id: \"11155111\",\r\n explorer: \"https://sepolia.etherscan.io/\",\r\n defaultSlippage: \"0.005\",\r\n maxSlippage: \"1\",\r\n confirmationTimeout: 60000,\r\n maxRetries: 3,\r\n },\r\n \"56\": { // Binance Smart Chain\r\n id: \"56\",\r\n explorer: \"https://bscscan.com/\",\r\n defaultSlippage: \"0.005\",\r\n maxSlippage: \"1\",\r\n confirmationTimeout: 60000,\r\n maxRetries: 3,\r\n },\r\n \"97\": { // Binance Smart Chain Testnet\r\n id: \"97\",\r\n explorer: \"https://testnet.bscscan.com/\",\r\n defaultSlippage: \"0.005\",\r\n maxSlippage: \"1\",\r\n confirmationTimeout: 60000,\r\n maxRetries: 3,\r\n },\r\n \"501\": {\r\n id: \"501\",\r\n explorer: \"https://web3.okx.com/explorer/sol/tx\",\r\n defaultSlippage: \"0.005\",\r\n maxSlippage: \"1\",\r\n computeUnits: 300000,\r\n confirmationTimeout: 60000,\r\n maxRetries: 3,\r\n },\r\n \"784\": {\r\n id: \"784\",\r\n explorer: \"https://web3.okx.com/explorer/sui/tx\",\r\n defaultSlippage: \"0.005\",\r\n maxSlippage: \"1\",\r\n confirmationTimeout: 60000,\r\n maxRetries: 3,\r\n },\r\n \"43114\": { // Avalanche C-Chain\r\n id: \"43114\",\r\n explorer: \"https://web3.okx.com/explorer/avax/tx\",\r\n defaultSlippage: \"0.005\",\r\n maxSlippage: \"1\",\r\n confirmationTimeout: 60000,\r\n maxRetries: 3,\r\n },\r\n\r\n \"137\": { // Polygon Mainnet\r\n id: \"137\",\r\n explorer: \"https://web3.okx.com/explorer/polygon/tx\",\r\n defaultSlippage: \"0.005\",\r\n maxSlippage: \"1\",\r\n confirmationTimeout: 60000,\r\n maxRetries: 3,\r\n },\r\n \"80002\": { // Polygon Testnet\r\n id: \"80002\",\r\n explorer: \"https://amoy.polygonscan.com\",\r\n defaultSlippage: \"0.005\",\r\n maxSlippage: \"1\",\r\n confirmationTimeout: 60000,\r\n maxRetries: 3,\r\n },\r\n \"146\": { // Sonic Mainnet\r\n id: \"146\",\r\n explorer: \"https://web3.okx.com/explorer/sonic/tx\",\r\n defaultSlippage: \"0.005\",\r\n maxSlippage: \"1\",\r\n confirmationTimeout: 60000,\r\n maxRetries: 3,\r\n },\r\n \"8453\": { // Base Mainnet\r\n id: \"8453\",\r\n explorer: \"https://web3.okx.com/explorer/base/tx\",\r\n defaultSlippage: \"0.005\",\r\n maxSlippage: \"1\",\r\n confirmationTimeout: 60000,\r\n maxRetries: 3,\r\n },\r\n \"196\": { // X Layer Mainnet\r\n id: \"196\",\r\n explorer: \"https://web3.okx.com/explorer/x-layer/tx\",\r\n defaultSlippage: \"0.005\",\r\n maxSlippage: \"1\",\r\n confirmationTimeout: 60000,\r\n maxRetries: 3,\r\n },\r\n \"10\": { // Optimism\r\n id: \"10\",\r\n explorer: \"https://web3.okx.com/explorer/optimism/tx\",\r\n defaultSlippage: \"0.005\",\r\n maxSlippage: \"1\",\r\n confirmationTimeout: 60000,\r\n maxRetries: 3,\r\n },\r\n \"42161\": { // Arbitrum\r\n id: \"42161\",\r\n explorer: \"https://web3.okx.com/explorer/arbitrum/tx\",\r\n defaultSlippage: \"0.005\",\r\n maxSlippage: \"1\",\r\n confirmationTimeout: 60000,\r\n maxRetries: 3,\r\n },\r\n\r\n \"100\": { // Gnosis\r\n id: \"100\",\r\n explorer: \"https://web3.okx.com/explorer/gnosis/tx\",\r\n defaultSlippage: \"0.005\",\r\n maxSlippage: \"1\",\r\n confirmationTimeout: 60000,\r\n maxRetries: 3,\r\n },\r\n \"169\": { // Manta Pacific\r\n id: \"169\",\r\n explorer: \"https://web3.okx.com/explorer/manta/tx\",\r\n defaultSlippage: \"0.005\",\r\n maxSlippage: \"1\",\r\n confirmationTimeout: 60000,\r\n maxRetries: 3,\r\n },\r\n \"250\": { // Fantom Opera\r\n id: \"250\",\r\n explorer: \"https://web3.okx.com/explorer/ftm/tx\",\r\n defaultSlippage: \"0.005\",\r\n maxSlippage: \"1\",\r\n confirmationTimeout: 60000,\r\n maxRetries: 3,\r\n },\r\n \"324\": { // zkSync Era\r\n id: \"324\",\r\n explorer: \"https://web3.okx.com/explorer/zksync/tx\",\r\n defaultSlippage: \"0.005\",\r\n maxSlippage: \"1\",\r\n confirmationTimeout: 60000,\r\n maxRetries: 3,\r\n },\r\n \"1101\": { // Polygon zkEVM\r\n id: \"1101\",\r\n explorer: \"https://web3.okx.com/explorer/polygon-zkevm/tx\",\r\n defaultSlippage: \"0.005\",\r\n maxSlippage: \"1\",\r\n confirmationTimeout: 60000,\r\n maxRetries: 3,\r\n },\r\n \"5000\": { // Mantle\r\n id: \"5000\",\r\n explorer: \"https://web3.okx.com/explorer/mantle/tx\",\r\n defaultSlippage: \"0.005\",\r\n maxSlippage: \"1\",\r\n confirmationTimeout: 60000,\r\n maxRetries: 3,\r\n },\r\n \"25\": { // Cronos\r\n id: \"25\",\r\n explorer: \"https://cronoscan.com/tx\",\r\n defaultSlippage: \"0.005\",\r\n maxSlippage: \"1\",\r\n confirmationTimeout: 60000,\r\n maxRetries: 3,\r\n },\r\n \"534352\": { // Scroll\r\n id: \"534352\",\r\n explorer: \"https://web3.okx.com/explorer/scroll/tx\",\r\n defaultSlippage: \"0.005\",\r\n maxSlippage: \"1\",\r\n confirmationTimeout: 60000,\r\n maxRetries: 3,\r\n },\r\n \"59144\": { // Linea\r\n id: \"59144\",\r\n explorer: \"https://web3.okx.com/explorer/linea/tx\",\r\n defaultSlippage: \"0.005\",\r\n maxSlippage: \"1\",\r\n confirmationTimeout: 60000,\r\n maxRetries: 3,\r\n },\r\n \"1088\": { // Metis\r\n id: \"1088\",\r\n explorer: \"https://web3.okx.com/explorer/metis/tx\",\r\n defaultSlippage: \"0.005\",\r\n maxSlippage: \"1\",\r\n confirmationTimeout: 60000,\r\n maxRetries: 3,\r\n },\r\n \"1030\": { // Conflux\r\n id: \"1030\",\r\n explorer: \"https://www.confluxscan.io/tx\",\r\n defaultSlippage: \"0.005\",\r\n maxSlippage: \"1\",\r\n confirmationTimeout: 60000,\r\n maxRetries: 3,\r\n },\r\n \"81457\": { // Blast\r\n id: \"81457\",\r\n explorer: \"https://web3.okx.com/explorer/blast/tx\",\r\n defaultSlippage: \"0.005\",\r\n maxSlippage: \"1\",\r\n confirmationTimeout: 60000,\r\n maxRetries: 3,\r\n },\r\n \"7000\": { // Zeta Chain\r\n id: \"7000\",\r\n explorer: \"https://explorer.zetachain.com/tx\",\r\n defaultSlippage: \"0.005\",\r\n maxSlippage: \"1\",\r\n confirmationTimeout: 60000,\r\n maxRetries: 3,\r\n },\r\n \"66\": { // OKT Chain\r\n id: \"66\",\r\n explorer: \"https://www.okx.com/web3/explorer/oktc/tx\",\r\n defaultSlippage: \"0.005\",\r\n maxSlippage: \"1\",\r\n confirmationTimeout: 60000,\r\n maxRetries: 3,\r\n },\r\n\r\n };\r\n\r\n constructor(private readonly config: DexConfig) {\r\n this.config.networks = {\r\n ...this.defaultNetworkConfigs,\r\n ...(config.networks || {}),\r\n };\r\n }\r\n\r\n public getNetworkConfig(chainId: string): ChainConfig {\r\n const networkConfig = this.config.networks?.[chainId];\r\n if (!networkConfig) {\r\n throw new Error(`Network configuration not found for chain ${chainId}`);\r\n }\r\n return networkConfig;\r\n }\r\n\r\n\r\n}","import { DexAPI } from \"./../../api/dex\";\r\nimport { DexConfig, ChainConfig } from \"./../../types\";\r\nimport { bip39 } from \"@okxweb3/crypto-lib\";\r\n\r\nabstract class BaseWallet {\r\n\r\n public config: DexConfig;\r\n public dex: DexAPI;\r\n\r\n constructor(config: DexConfig) {\r\n this.config = {\r\n timeout: 30000,\r\n ...config,\r\n };\r\n\r\n this.dex = new DexAPI(this.config);\r\n }\r\n\r\n public get currentChain(): ChainConfig {\r\n if (!this.config.chainId) throw new Error(\"chainId not set in config\");\r\n return this.dex.getNetworkConfig(this.config.chainId);\r\n }\r\n\r\n public async generateMnemonic(numWords: number = 12): Promise<string> {\r\n const strength = (numWords / 3) * 32;\r\n return bip39.generateMnemonic(strength);\r\n }\r\n}\r\n\r\nexport { BaseWallet }","import { IResponse } from './../types';\r\n\r\nexport const successResponse = (args: IResponse): IResponse => {\r\n return args;\r\n};\r\n","// src/utils/amount.ts\r\nimport BigNumber from \"bignumber.js\";\r\n\r\n/**\r\n * Convert human-readable amount → raw integer by decimals\r\n * ex: 0.1 USDC (decimals 6) => 100000\r\n */\r\nexport const parseAmount = (amount: string | number, decimals: number): bigint => {\r\n const bn = new BigNumber(amount);\r\n const multiplier = new BigNumber(10).pow(decimals);\r\n return BigInt(bn.times(multiplier).toFixed(0));\r\n};\r\n\r\n/**\r\n * Convert raw amount → human-readable number by decimals\r\n * ex: 100000 (decimals 6) => 0.1\r\n */\r\nexport const formatAmount = (raw: bigint | string, decimals: number): number => {\r\n const bn = new BigNumber(raw.toString());\r\n const divisor = new BigNumber(10).pow(decimals);\r\n return bn.dividedBy(divisor).toNumber();\r\n};\r\n","// src/utils/evmUnits.ts\r\nimport { parseAmount, formatAmount } from \"./amount\";\r\n\r\n// Ether = 18 decimals\r\nexport const parseEther = (v: string | number) => parseAmount(v, 18);\r\nexport const formatEther = (v: bigint | string) => formatAmount(v, 18);\r\n\r\n// Gwei = 9 decimals\r\nexport const parseGwei = (v: string | number) => parseAmount(v, 9);\r\nexport const formatGwei = (v: bigint | string) => formatAmount(v, 9);\r\n\r\n// Wei = 0 decimals (identity, tapi biar konsisten)\r\nexport const parseWei = (v: string | number) => parseAmount(v, 0);\r\nexport const formatWei = (v: bigint | string) => formatAmount(v, 0);\r\n","import { BaseWallet } from \"../base/index\";\r\nimport { DexConfig } from \"../../types\";\r\nimport { BigNumber } from \"@okxweb3/crypto-lib\";\r\nimport { EthWallet as EthWalletOkx } from \"@okxweb3/coin-ethereum\";\r\nimport { GenerateWalletPayload, TokenInfo, IResponse } from \"./../../types\";\r\nimport { successResponse, formatAmount, parseAmount, parseGwei, formatGwei, formatEther, parseEther } from \"./../../utils\";\r\nimport { GetContract, BalancePayload, TransferPayload, GetTransactionPayload, ISmartContractCallPayload, SignerPayload, GetErcTokenInfoPayload, estimateGasPayload } from \"./types\";\r\nimport { ethers } from \"ethers\";\r\nimport erc20Abi from \"./abi/erc20.json\";\r\n\r\nconst provider = (rpcUrl?: string) => new ethers.JsonRpcProvider(rpcUrl);\r\n\r\nconst DEFAULT_PRIORITY = \"0.1\";\r\nconst DEFAULT_MAXFEE = \"3\";\r\n\r\nexport class EvmWallet extends BaseWallet {\r\n\r\n private wallet: EthWalletOkx;\r\n\r\n constructor(config: DexConfig) {\r\n super(config)\r\n this.wallet = new EthWalletOkx();\r\n }\r\n\r\n async getContract({ contractAddress, rpcUrl, privateKey, abi }: GetContract) {\r\n if (!rpcUrl) throw new Error(\"RPC URL is required\");\r\n\r\n const providerInstance = provider(rpcUrl ?? this.config.rpcUrl);\r\n const gasFeeData = await providerInstance.getFeeData();\r\n\r\n let nonce, contract, signer;\r\n\r\n\r\n if (privateKey) {\r\n signer = new ethers.Wallet(privateKey, providerInstance);\r\n nonce = await providerInstance.getTransactionCount(\r\n await signer.getAddress(),\r\n \"pending\"\r\n );\r\n }\r\n\r\n if (contractAddress) {\r\n contract = new ethers.Contract(\r\n contractAddress,\r\n abi || erc20Abi,\r\n signer || providerInstance\r\n );\r\n\r\n const code = await providerInstance.getCode(contractAddress);\r\n if (code === \"0x\") {\r\n throw new Error(\"Address is not a contract\");\r\n }\r\n }\r\n\r\n return { contract, signer, gasFeeData, nonce, providerInstance };\r\n }\r\n\r\n async generateWallet({ mnemonic, derivationPath }: GenerateWalletPayload): Promise<IResponse> {\r\n const hdPath = derivationPath || \"m/44'/60'/0'/0/0\";\r\n const getMnemonic = mnemonic ?? (await this.generateMnemonic(12));\r\n\r\n const derivePrivateKey = await this.wallet.getDerivedPrivateKey({ mnemonic: getMnemonic, hdPath });\r\n const { address, publicKey } = await this.wallet.getNewAddress({ privateKey: derivePrivateKey });\r\n\r\n return successResponse({ address, publicKey, privateKey: derivePrivateKey });\r\n }\r\n\r\n async getBalance({ rpcUrl, contractAddress, address }: BalancePayload): Promise<IResponse> {\r\n const { contract, providerInstance } = await this.getContract({ rpcUrl: rpcUrl ?? this.config.rpcUrl, contractAddress });\r\n\r\n if (contract) {\r\n const decimals = await contract.decimals();\r\n const balance = await contract.balanceOf(address);\r\n return successResponse({\r\n balance: formatAmount(balance.toString(), decimals),\r\n _rawBalance: balance.toString(),\r\n _decimal: decimals,\r\n });\r\n }\r\n\r\n const balance = await providerInstance.getBalance(address);\r\n\r\n return successResponse({\r\n balance: formatAmount(balance.toString(), 18),\r\n _rawBalance: balance.toString(),\r\n _decimal: 18,\r\n });\r\n }\r\n\r\n async transfer({ privateKey, contractAddress, rpcUrl, ...args }: TransferPayload): Promise<IResponse> {\r\n const { contract, providerInstance, gasFeeData, nonce } = await this.getContract({\r\n rpcUrl: rpcUrl ?? this.config.rpcUrl,\r\n privateKey,\r\n contractAddress,\r\n });\r\n\r\n const recipientAddress = await this.wallet.validAddress({ address: args.recipientAddress });\r\n if (!recipientAddress.isValid) throw new Error(\"address not valid\");\r\n\r\n // VALIDASI FEE\r\n if (args.maxPriorityFeePerGas && args.maxFeePerGas) {\r\n const prio = BigInt(args.maxPriorityFeePerGas);\r\n const max = BigInt(args.maxFeePerGas);\r\n if (max < prio) {\r\n throw new Error(\"maxFeePerGas must be >= maxPriorityFeePerGas\");\r\n }\r\n }\r\n\r\n if (args.gasPrice && (args.maxFeePerGas || args.maxPriorityFeePerGas)) {\r\n throw new Error(\"Cannot use gasPrice with EIP-1559 fee fields\");\r\n }\r\n\r\n let value: bigint;\r\n let gasLimit: bigint;\r\n\r\n if (contractAddress) {\r\n if (!contract) throw new Error(\"contract not valid\");\r\n\r\n const decimals = await contract.decimals();\r\n value = parseAmount(args.amount.toString(), decimals);\r\n\r\n\r\n gasLimit = args.gasLimit\r\n ? BigInt(args.gasLimit)\r\n : await contract.transfer.estimateGas(\r\n args.recipientAddress,\r\n value\r\n );\r\n } else {\r\n value = parseEther(args.amount.toString());\r\n gasLimit = args.gasLimit ? BigInt(args.gasLimit) : 21000n;\r\n }\r\n\r\n // DEFAULT FEE\r\n const noFeeProvided =\r\n !args.gasPrice &&\r\n !args.maxFeePerGas &&\r\n !args.maxPriorityFeePerGas;\r\n\r\n if (noFeeProvided) {\r\n const estimate = await this.estimateGas({\r\n rpcUrl: rpcUrl ?? this.config.rpcUrl,\r\n recipientAddress: args.recipientAddress,\r\n amount: args.amount.toString(),\r\n data: args.data,\r\n });\r\n\r\n gasLimit = BigInt(estimate.gasLimit);\r\n\r\n // ===== LEGACY =====\r\n if (estimate.model === \"LEGACY\") {\r\n if (!estimate.gasPrice) {\r\n throw new Error(\"LEGACY estimate missing gasPrice\");\r\n }\r\n\r\n args.gasPrice = estimate.gasPrice; // wei\r\n return this.transfer({ privateKey, contractAddress, rpcUrl, ...args });\r\n }\r\n\r\n // ===== EIP-1559 =====\r\n const fee = estimate.fees.regular;\r\n\r\n if (!fee?.maxFeePerGas || !fee?.maxPriorityFeePerGas) {\r\n throw new Error(\"EIP1559 estimate missing fee fields\");\r\n }\r\n\r\n args.maxFeePerGas = fee.maxFeePerGas;\r\n args.maxPriorityFeePerGas = fee.maxPriorityFeePerGas;\r\n }\r\n\r\n // ===============================\r\n // SIGN & BROADCAST\r\n // ===============================\r\n const signParams = await this.buildSignParams({\r\n args: { ...args, privateKey, gasLimit },\r\n nonce,\r\n gasFeeData,\r\n recipientAddress,\r\n value,\r\n contractAddress,\r\n });\r\n\r\n const signedTx = await this.wallet.signTransaction(signParams);\r\n const broadcast = await providerInstance.broadcastTransaction(signedTx);\r\n\r\n return successResponse({ ...broadcast });\r\n }\r\n\r\n async getTransaction({ hash, rpcUrl, withReceipt }: GetTransactionPayload): Promise<IResponse> {\r\n const { providerInstance } = await this.getContract({ rpcUrl: rpcUrl ?? this.config.rpcUrl });\r\n\r\n try {\r\n if (withReceipt) {\r\n const [tx, receipt] = await Promise.all([\r\n providerInstance.getTransaction(hash),\r\n providerInstance.getTransactionReceipt(hash),\r\n ]);\r\n\r\n const memo = tx?.data && tx.data !== \"0x\"\r\n ? ethers.toUtf8String(tx.data)\r\n : null;\r\n\r\n return successResponse({\r\n transaction: tx,\r\n receipt,\r\n memo,\r\n });\r\n }\r\n\r\n const tx = await providerInstance.getTransaction(hash);\r\n\r\n return successResponse({\r\n transaction: tx,\r\n });\r\n } catch (error) {\r\n throw error;\r\n }\r\n }\r\n\r\n async getTokenInfo({ contractAddress, rpcUrl }: GetErcTokenInfoPayload): Promise<IResponse> {\r\n const { contract } = await this.getContract({ contractAddress, rpcUrl: rpcUrl ?? this.config.rpcUrl, });\r\n\r\n if (contract) {\r\n const [name, symbol, decimals, totalSupply] = await Promise.all([\r\n contract.name(),\r\n contract.symbol(),\r\n contract.decimals(),\r\n contract.totalSupply(),\r\n ]);\r\n\r\n const data: TokenInfo = {\r\n name,\r\n symbol,\r\n decimals,\r\n totalSupply: formatAmount(totalSupply.toString(), decimals).toString(),\r\n\r\n };\r\n return successResponse({ ...data });\r\n }\r\n\r\n throw new Error('Contract not found');\r\n };\r\n\r\n async smartContractCall(args: ISmartContractCallPayload): Promise<IResponse> {\r\n const { contract, gasFeeData, nonce } = await this.getContract({\r\n rpcUrl: args.rpcUrl ?? this.config.rpcUrl,\r\n contractAddress: args.contractAddress,\r\n abi: args.contractAbi,\r\n privateKey: args.privateKey,\r\n });\r\n\r\n try {\r\n let tx;\r\n let overrides = {} as any;\r\n\r\n if (args.methodType === 'read') {\r\n overrides = {};\r\n } else if (args.methodType === 'write') {\r\n overrides = {\r\n gasPrice: args.gasPrice\r\n ? parseGwei(args.gasPrice)\r\n : gasFeeData?.gasPrice,\r\n\r\n nonce: args.nonce || nonce,\r\n value: args.value ? parseEther(args.value.toString()) : 0,\r\n };\r\n\r\n if (args.gasLimit) {\r\n overrides.gasLimit = args.gasLimit;\r\n }\r\n }\r\n\r\n if (args.params.length > 0) {\r\n tx = await contract?.[args.method](...args.params, overrides);\r\n } else {\r\n tx = await contract?.[args.method](overrides);\r\n }\r\n\r\n return successResponse({\r\n data: tx,\r\n });\r\n } catch (error) {\r\n throw error;\r\n }\r\n };\r\n\r\n async estimateGas({ rpcUrl, recipientAddress, amount, data }: estimateGasPayload): Promise<IResponse> {\r\n const { providerInstance } = await this.getContract({ rpcUrl: rpcUrl ?? this.config.rpcUrl });\r\n\r\n try {\r\n\r\n const network = await providerInstance.getNetwork();\r\n const chainId = Number(network.chainId);\r\n\r\n const tx = {\r\n to: recipientAddress,\r\n value: parseEther(amount.toString()),\r\n data: data\r\n ? ethers.hexlify(ethers.toUtf8Bytes(data as string))\r\n : '0x',\r\n };\r\n\r\n const [feeData, gasLimit] = await Promise.all([\r\n providerInstance.getFeeData(),\r\n providerInstance.estimateGas(tx),\r\n ]);\r\n\r\n const { gasPrice, maxFeePerGas, maxPriorityFeePerGas } = feeData;\r\n\r\n const applyMultiplier = (base: bigint, mul: number) =>\r\n (base * BigInt(Math.floor(mul * 10))) / 10n;\r\n\r\n // feeData IS AUTO CHECK EIP OR LEGACY\r\n const isEip1559 = maxFeePerGas !== null && maxPriorityFeePerGas !== null;\r\n\r\n if (!isEip1559) {\r\n const baseGasPrice = BigInt(gasPrice ?? 0n);\r\n\r\n const regularGasPrice = baseGasPrice; // wallet \"slow\"\r\n const expressGasPrice = (baseGasPrice * 110n) / 100n; // +10%\r\n const instantGasPrice = (baseGasPrice * 125n) / 100n; // +25%\r\n\r\n const regularFee = gasLimit * regularGasPrice;\r\n const expressFee = gasLimit * expressGasPrice;\r\n const instantFee = gasLimit * instantGasPrice;\r\n\r\n return successResponse({\r\n chainId,\r\n gasLimit: gasLimit.toString(),\r\n gasPrice: baseGasPrice.toString(),\r\n gasPriceGwei: formatGwei(baseGasPrice),\r\n model: \"LEGACY\",\r\n fees: {\r\n regular: formatEther(regularFee),\r\n express: formatEther(expressFee),\r\n instant: formatEther(instantFee),\r\n }\r\n });\r\n }\r\n\r\n let baseFee: bigint;\r\n let priorityFee: bigint;\r\n\r\n const block = await providerInstance.getBlock(\"latest\");\r\n\r\n baseFee = BigInt(block!.baseFeePerGas ?? 0n);\r\n priorityFee = BigInt(\r\n feeData.maxPriorityFeePerGas ?? parseGwei(DEFAULT_PRIORITY)\r\n );\r\n\r\n const regularPriority = priorityFee;\r\n const regularMaxFee = baseFee + regularPriority;\r\n\r\n const expressPriority = applyMultiplier(priorityFee, 1.2);\r\n const expressMaxFee = applyMultiplier(baseFee, 1.2) + expressPriority;\r\n\r\n const instantPriority = applyMultiplier(priorityFee, 1.5);\r\n const instantMaxFee = applyMultiplier(baseFee, 1.5) + instantPriority;\r\n\r\n const MAX_GAS_GWEI = 100n * 1_000_000_000n;\r\n const cap = (v: bigint) => (v > MAX_GAS_GWEI ? MAX_GAS_GWEI : v);\r\n\r\n const regularFee = gasLimit * cap(regularMaxFee);\r\n const expressFee = gasLimit * cap(expressMaxFee);\r\n const instantFee = gasLimit * cap(instantMaxFee);\r\n\r\n return successResponse({\r\n chainId,\r\n gasLimit: gasLimit.toString(),\r\n baseFeeGwei: formatGwei(baseFee),\r\n priorityFeeGwei: formatGwei(priorityFee),\r\n model: \"EIP1559\",\r\n fees: {\r\n regular: {\r\n perCoin: formatEther(regularFee),\r\n maxPriorityFeePerGas: regularPriority.toString(),\r\n maxFeePerGas: regularMaxFee.toString(),\r\n },\r\n express: {\r\n perCoin: formatEther(expressFee),\r\n maxPriorityFeePerGas: expressPriority.toString(),\r\n maxFeePerGas: expressMaxFee.toString(),\r\n },\r\n instant: {\r\n perCoin: formatEther(instantFee),\r\n maxPriorityFeePerGas: instantPriority.toString(),\r\n maxFeePerGas: instantMaxFee.toString(),\r\n },\r\n }\r\n });\r\n\r\n } catch (error) {\r\n throw error;\r\n }\r\n }\r\n\r\n private async buildSignParams({ args, nonce, gasFeeData, recipientAddress, value, contractAddress }: SignerPayload) {\r\n const txBase = {\r\n to: recipientAddress.address,\r\n value: BigNumber(value.toString()),\r\n data: args.data\r\n ? ethers.hexlify(ethers.toUtf8Bytes(args.data as string))\r\n : '0x',\r\n nonce: args.nonce || (await nonce),\r\n gasLimit: args.gasLimit ? BigNumber(args.gasLimit) : BigNumber(21000),\r\n chainId: Number(this.currentChain.id),\r\n ...(contractAddress ? { contractAddress } : {}),\r\n };\r\n\r\n // legacy vs eip-1559\r\n if (args.gasPrice) {\r\n return {\r\n privateKey: args.privateKey,\r\n data: {\r\n ...txBase,\r\n gasPrice: BigNumber(parseGwei(args.gasPrice).toString()),\r\n type: 0,\r\n },\r\n };\r\n }\r\n\r\n return {\r\n privateKey: args.privateKey,\r\n data: {\r\n ...txBase,\r\n type: 2,\r\n maxPriorityFeePerGas: BigNumber(\r\n args.maxPriorityFeePerGas\r\n ? args.maxPriorityFeePerGas\r\n : gasFeeData.maxPriorityFeePerGas!.toString()\r\n ),\r\n maxFeePerGas: BigNumber(\r\n args.maxFeePerGas\r\n ? args.maxFeePerGas\r\n : gasFeeData.maxFeePerGas!.toString()\r\n ),\r\n },\r\n };\r\n }\r\n}\r\n","import { BaseWallet } from \"../base/index\";\r\nimport { DexConfig } from \"../../types\";\r\nimport { BtcWallet as BtcWalletOkxm, TBtcWallet } from \"@okxweb3/coin-bitcoin\";\r\nimport { IResponse, GenerateWalletPayload } from \"./../../types\";\r\n\r\nconst successResponse = (args: IResponse): IResponse => args;\r\n\r\nexport class BtcWallet extends BaseWallet {\r\n\r\n private wallet: BtcWalletOkxm | TBtcWallet;\r\n\r\n constructor(config: DexConfig) {\r\n super(config);\r\n this.wallet = this.config.cluster === \"testnet\" ? new TBtcWallet() : new BtcWalletOkxm();\r\n }\r\n\r\n async generateWallet({ mnemonic, derivationPath }: GenerateWalletPayload): Promise<IResponse> {\r\n const hdPath = derivationPath || \"m/44'/0'/0'/0/0\";\r\n const getMnemonic = mnemonic ?? (await this.generateMnemonic(12));\r\n\r\n const derivePrivateKey = await this.wallet.getDerivedPrivateKey({ mnemonic: getMnemonic, hdPath });\r\n const { address, publicKey } = await this.wallet.getNewAddress({ privateKey: derivePrivateKey });\r\n\r\n return successResponse({ address, publicKey, privateKey: derivePrivateKey });\r\n }\r\n\r\n\r\n}\r\n","import { BaseWallet } from \"../base/index\";\r\nimport { DexConfig } from \"../../types\";\r\nimport { base } from \"@okxweb3/crypto-lib\";\r\nimport { SolWallet as SolWalletOkx } from \"@okxweb3/coin-solana\";\r\nimport * as solanaWeb3 from '@solana/web3.js';\r\nimport { getAssociatedTokenAddress } from '@solana/spl-token';\r\nimport { ENV, TokenListProvider } from \"@solana/spl-token-registry\";\r\nimport { successResponse, parseAmount, formatAmount } from \"./../../utils\";\r\nimport { IResponse, GenerateWalletPayload, TokenInfo } from \"./../../types\";\r\nimport { BalanceSolanaPayload, TransferSolanaPayload, GetSplTokenInfoPayload } from \"./types\";\r\n// @ts-ignore\r\nimport * as BufferLayout from 'buffer-layout';\r\n\r\nconst provider = (rpcUrl?: string) => new solanaWeb3.Connection(rpcUrl as string);\r\n\r\nexport const ACCOUNT_LAYOUT = BufferLayout.struct([\r\n BufferLayout.blob(32, 'mint'),\r\n BufferLayout.blob(32, 'owner'),\r\n BufferLayout.nu64('amount'),\r\n BufferLayout.blob(93),\r\n]);\r\n\r\nexport const CLUSTER_ENV: Record<string, ENV> = {\r\n \"mainnet-beta\": ENV.MainnetBeta,\r\n \"testnet\": ENV.Testnet,\r\n \"devnet\": ENV.Devnet,\r\n};\r\n\r\nexport class SolWallet extends BaseWallet {\r\n\r\n private wallet: SolWalletOkx;\r\n\r\n constructor(config: DexConfig) {\r\n super(config)\r\n this.wallet = new SolWalletOkx();\r\n }\r\n\r\n async generateWallet({ mnemonic, derivationPath }: GenerateWalletPayload): Promise<IResponse> {\r\n const hdPath = derivationPath || \"m/44'/501'/0'/0'\";\r\n const getMnemonic = mnemonic ?? (await this.generateMnemonic(12));\r\n\r\n const derivePrivateKey = await this.wallet.getDerivedPrivateKey({ mnemonic: getMnemonic, hdPath });\r\n const { address, publicKey } = await this.wallet.getNewAddress({ privateKey: derivePrivateKey });\r\n\r\n return successResponse({ address, publicKey, privateKey: derivePrivateKey });\r\n }\r\n\r\n async getBalance({ rpcUrl, contractAddress, address }: BalanceSolanaPayload): Promise<IResponse> {\r\n const connection = provider(rpcUrl ?? this.config.rpcUrl);\r\n try {\r\n const recipientAddress = await this.wallet.validAddress({ address });\r\n if (!recipientAddress.isValid) throw new Error(\"address not valid\");\r\n\r\n const publicKey = new solanaWeb3.PublicKey(recipientAddress.address);\r\n if (contractAddress) {\r\n const mintPubkey = new solanaWeb3.PublicKey(contractAddress);\r\n // get token by account \r\n const tokenAccountAddress = await getAssociatedTokenAddress(mintPubkey, publicKey);\r\n const accountInfo = await connection.getAccountInfo(tokenAccountAddress);\r\n\r\n // check if account not associated with this return 0 balance \r\n if (!accountInfo) {\r\n return successResponse({\r\n balance: \"0\",\r\n });\r\n }\r\n\r\n const rawBalance = await connection.getTokenAccountBalance(tokenAccountAddress);\r\n return successResponse({\r\n balance: formatAmount(rawBalance.value.amount, rawBalance.value.decimals),\r\n _rawBalance: rawBalance.value.amount,\r\n _decimal: rawBalance.value.decimals,\r\n });\r\n }\r\n\r\n const balance = await connection.getBalance(publicKey);\r\n return successResponse({\r\n balance: formatAmount(balance.toString(), 9),\r\n _rawBalance: parseAmount(balance, 9),\r\n _decimal: 9,\r\n });\r\n } catch (error) {\r\n throw error;\r\n }\r\n }\r\n\r\n async transfer({ privateKey, contractAddress, rpcUrl, ...args }: TransferSolanaPayload & { createAssociatedAddress?: boolean; token2022?: boolean }): Promise<IResponse> {\r\n const connection = provider(rpcUrl ?? this.config.rpcUrl);\r\n\r\n try {\r\n // validate recipient\r\n const recipientAddress = await this.wallet.validAddress({ address: args.recipientAddress });\r\n if (!recipientAddress.isValid) throw new Error(\"address not valid\");\r\n\r\n // get sender info from privateKey using OKX wallet util\r\n const fromAccount = await this.wallet.getNewAddress({ privateKey });\r\n\r\n // recommended fees (CU)\r\n let { computeUnitLimit, computeUnitPrice } = await this.getRecommendedFees(connection);\r\n if (args.gasLimit) computeUnitLimit = args.gasLimit;\r\n if (args.gasPrice) computeUnitPrice = parseInt(args.gasPrice as any, 10);\r\n\r\n // get latest blockhash\r\n const { blockhash } = await connection.getLatestBlockhash();\r\n\r\n // ---------- SPL TOKEN FLOW ----------\r\n if (contractAddress) {\r\n const mintPubkey = new solanaWeb3.PublicKey(contractAddress);\r\n const fromPubkey = new solanaWeb3.PublicKey(fromAccount.address);\r\n const recipientPubkey = new solanaWeb3.PublicKey(recipientAddress.address);\r\n\r\n // Associated Token Accounts (computed, not necessarily exist)\r\n const fromTokenAccount = await getAssociatedTokenAddress(mintPubkey, fromPubkey);\r\n const recipientTokenAccount = await getAssociatedTokenAddress(mintPubkey, recipientPubkey);\r\n\r\n // Try to read decimals from sender token account first, fallback to token supply\r\n let decimals = 0;\r\n try {\r\n const fromTokenBal = await connection.getTokenAccountBalance(fromTokenAccount);\r\n decimals = fromTokenBal.value.decimals;\r\n } catch (err) {\r\n // fallback: try to fetch mint info (supply) to get decimals\r\n try {\r\n const mintAccountInfo = await connection.getParsedAccountInfo(mintPubkey);\r\n // parsed data path may vary; handle gracefully\r\n // if parsed exists:\r\n if (mintAccountInfo.value && (mintAccountInfo.value.data as any).parsed) {\r\n const parsed = (mintAccountInfo.value.data as any).parsed;\r\n decimals = parsed.info.decimals || 0;\r\n }\r\n } catch (err2) {\r\n // cannot determine decimals — throw explicit error\r\n throw new Error(\"Failed to determine token decimals for mint \" + contractAddress);\r\n }\r\n }\r\n\r\n // Check whether recipient ATA exists\r\n const recipientAtaInfo = await connection.getAccountInfo(recipientTokenAccount);\r\n const recipientHasATA = !!recipientAtaInfo;\r\n\r\n // decide whether to create ATA: user can pass args.createAssociatedAddress\r\n const shouldCreateATA = !!(args.createAssociatedAddress) && !recipientHasATA;\r\n\r\n // compute token amount (smallest unit)\r\n // args.amount is assumed token amount in human units (eg. 1.5 USDC)\r\n const rawTokenAmount = BigInt(Math.round((args.amount ?? 0) * (10 ** decimals)));\r\n\r\n // Build params for OKX wallet signTransaction (tokenTransfer)\r\n const params = {\r\n privateKey,\r\n data: {\r\n type: \"tokenTransfer\",\r\n payer: fromAccount.address,\r\n from: fromAccount.address,\r\n to: recipientAddress.address,\r\n blockHash: blockhash,\r\n mint: contractAddress,\r\n amount: rawTokenAmount.toString(), // send as string\r\n decimal: decimals,\r\n createAssociatedAddress: !!shouldCreateATA, // OKX SDK should create ATA if true\r\n token2022: !!args.token2022, // allow override by user\r\n computeUnitLimit,\r\n computeUnitPrice\r\n }\r\n };\r\n\r\n // sign & broadcast\r\n const signedTx = await this.wallet.signTransaction(params);\r\n // OKX returns base58 signed tx — decode and broadcast\r\n const rawTx = base.fromBase58(signedTx);\r\n const txid = await connection.sendRawTransaction(rawTx, { skipPreflight: false, maxRetries: 3 });\r\n return successResponse({ hash: txid });\r\n }\r\n\r\n // ---------- NATIVE SOL FLOW ----------\r\n const lamports = Math.round((args.amount ?? 0) * solanaWeb3.LAMPORTS_PER_SOL);\r\n\r\n const solParams = {\r\n privateKey,\r\n data: {\r\n type: \"transfer\",\r\n payer: fromAccount.address,\r\n from: fromAccount.address,\r\n to: recipientAddress.address,\r\n blockHash: blockhash,\r\n amount: lamports,\r\n computeUnitLimit,\r\n computeUnitPrice\r\n }\r\n };\r\n\r\n const signedTx = await this.wallet.signTransaction(solParams);\r\n const rawTx = base.fromBase58(signedTx);\r\n const broadcast = await connection.sendRawTransaction(rawTx, {\r\n skipPreflight: false,\r\n maxRetries: 3,\r\n });\r\n\r\n return successResponse({ hash: broadcast });\r\n } catch (error) {\r\n throw error;\r\n }\r\n }\r\n\r\n async getTokenInfo({ contractAddress, rpcUrl, cluster = \"mainnet-beta\" }: GetSplTokenInfoPayload): Promise<IResponse> {\r\n try {\r\n const connection = provider(rpcUrl ?? this.config.rpcUrl);\r\n const mintAddress = new solanaWeb3.PublicKey(contractAddress);\r\n\r\n // --- step 1: fetch mint info dari RPC ---\r\n const mintInfo = await connection.getParsedAccountInfo(mintAddress);\r\n const parsedMint = (mintInfo?.value?.data as any)?.parsed?.info;\r\n\r\n\r\n const decimals = parsedMint?.decimals ?? 0;\r\n const supplyRaw = parsedMint?.supply ?? \"0\";\r\n\r\n // --- step 2: coba ambil info dari TokenListProvider ---\r\n let tokenName = \"\";\r\n let tokenSymbol = \"\";\r\n let tokenLogo = \"\";\r\n\r\n try {\r\n const env = CLUSTER_ENV[cluster] ?? ENV.MainnetBeta;\r\n const provider = await new TokenListProvider().resolve();\r\n const tokenList = provider.filterByChainId(env).getList();\r\n const tokenMap = new Map(tokenList.map((item) => [item.address, item]));\r\n const token = tokenMap.get(mintAddress.toBase58());\r\n\r\n if (token) {\r\n tokenName = token.name;\r\n tokenSymbol = token.symbol;\r\n tokenLogo = token.logoURI || \"\";\r\n }\r\n } catch (err) {\r\n console.warn(\"TokenListProvider failed:\", err);\r\n }\r\n\r\n // --- step 3: fallback kalau name/symbol kosong ---\r\n if (!tokenName) tokenName = contractAddress.slice(0, 6) + \"...\";\r\n if (!tokenSymbol) tokenSymbol = \"SPL\";\r\n\r\n const data: TokenInfo = {\r\n name: tokenName,\r\n symbol: tokenSymbol,\r\n address: contractAddress,\r\n decimals,\r\n logoUrl: tokenLogo || \"\",\r\n totalSupply: (Number(supplyRaw) / 10 ** decimals).toString(),\r\n };\r\n\r\n return successResponse({ ...data });\r\n } catch (error) {\r\n throw error;\r\n }\r\n };\r\n\r\n private async getRecommendedFees(connection: solanaWeb3.Connection) {\r\n let computeUnitLimit = 140000; // default \r\n let computeUnitPrice = 0; // default = 0 (without priority fee)\r\n\r\n try {\r\n const fees = await connection.getRecentPrioritizationFees();\r\n if (fees.length > 0) {\r\n // Ambil median biar stabil\r\n const sorted = fees.map(f => f.prioritizationFee).sort((a, b) => a - b);\r\n computeUnitPrice = sorted[Math.floor(sorted.length / 2)] || 0;\r\n }\r\n } catch (err) {\r\n console.warn(\"Failed to fetch prioritization fees, fallback to defaults\");\r\n }\r\n\r\n return { computeUnitLimit, computeUnitPrice };\r\n }\r\n}\r\n","// src/services/wallet-registry.ts\r\nimport { EvmWallet, BtcWallet, SolWallet } from \"./index\";\r\n\r\nexport const WalletRegistry = {\r\n EVM: EvmWallet,\r\n BTC: BtcWallet,\r\n SOL: SolWallet,\r\n};\r\n\r\nexport type WalletTypes = keyof typeof WalletRegistry;\r\n","import { WalletRegistry, WalletTypes } from \"../services/wallet-registry\";\r\nimport { DexConfig } from \"../types\";\r\n\r\n\r\ninterface ClientConfig<T extends WalletTypes> {\r\n network: T;\r\n chainId?: string;\r\n rpcUrl?: string;\r\n}\r\n\r\nexport class CryptoClientSdk<T extends WalletTypes> {\r\n private network: T;\r\n private chainId?: string;\r\n private rpcUrl?: string;\r\n\r\n constructor({ network, chainId, rpcUrl }: ClientConfig<T>) {\r\n this.network = network;\r\n this.chainId = chainId;\r\n this.rpcUrl = rpcUrl;\r\n }\r\n\r\n getWallet(): InstanceType<(typeof WalletRegistry)[T]> {\r\n const WalletClass = WalletRegistry[this.network];\r\n\r\n const config: DexConfig = {\r\n chainId: this.chainId,\r\n rpcUrl: this.rpcUrl,\r\n };\r\n\r\n return new WalletClass(config) as InstanceType<(typeof WalletRegistry)[T]>;\r\n }\r\n}"],"names":["DexAPI","config","id","explorer","defaultSlippage","maxSlippage","confirmationTimeout","maxRetries","computeUnits","networks","_extends","defaultNetworkConfigs","_proto","prototype","getNetworkConfig","chainId","networkConfig","_this$config$networks","Error","BaseWallet","timeout","dex","generateMnemonic","_generateMnemonic","_asyncToGenerator","_regenerator","m","_callee","numWords","strength","_context","a","bip39","_x","apply","arguments","_createClass","key","get","successResponse","args","parseAmount","amount","decimals","bn","BigNumber","multiplier","pow","BigInt","times","toFixed","formatAmount","raw","toString","divisor","dividedBy","toNumber","parseEther","v","formatEther","parseGwei","formatGwei","provider","rpcUrl","ethers","JsonRpcProvider","DEFAULT_PRIORITY","EvmWallet","_BaseWallet","_this","call","wallet","EthWalletOkx","_inheritsLoose","getContract","_getContract","_ref","contractAddress","privateKey","abi","providerInstance","gasFeeData","nonce","contract","signer","code","_t","w","n","getFeeData","Wallet","getAddress","getTransactionCount","Contract","erc20Abi","getCode","generateWallet","_generateWallet","_callee2","_ref2","mnemonic","derivationPath","hdPath","getMnemonic","derivePrivateKey","_yield$this$wallet$ge","address","publicKey","_t2","_context2","getDerivedPrivateKey","getNewAddress","_x2","getBalance","_getBalance","_callee3","_ref3","_yield$this$getContra","_balance","balance","_context3","balanceOf","_rawBalance","_decimal","_x3","transfer","_transfer","_callee4","_ref4","_yield$this$getContra2","recipientAddress","prio","max","value","gasLimit","noFeeProvided","estimate","fee","signParams","signedTx","broadcast","_t3","_context4","_objectWithoutPropertiesLoose","_excluded","validAddress","isValid","maxPriorityFeePerGas","maxFeePerGas","gasPrice","estimateGas","data","model","fees","regular","buildSignParams","signTransaction","broadcastTransaction","_x4","getTransaction","_getTransaction","_callee5","_ref5","hash","withReceipt","_yield$this$getContra3","_yield$Promise$all","_tx","receipt","memo","tx","_t4","_context5","p","Promise","all","getTransactionReceipt","toUtf8String","transaction","_x5","getTokenInfo","_getTokenInfo","_callee6","_ref6","_yield$this$getContra4","_yield$Promise$all2","name","symbol","totalSupply","_context6","_x6","smartContractCall","_smartContractCall","_callee7","_args$rpcUrl","_yield$this$getContra5","overrides","_t5","_context7","contractAbi","methodType","params","length","method","concat","_x7","_estimateGas","_callee8","_ref7","_yield$this$getContra6","_block$baseFeePerGas","_feeData$maxPriorityF","network","_yield$Promise$all3","feeData","applyMultiplier","isEip1559","baseGasPrice","regularGasPrice","expressGasPrice","instantGasPrice","_regularFee","_expressFee","_instantFee","baseFee","priorityFee","block","regularPriority","regularMaxFee","expressPriority","expressMaxFee","instantPriority","instantMaxFee","MAX_GAS_GWEI","cap","regularFee","expressFee","instantFee","_t6","_context8","getNetwork","Number","to","hexlify","toUtf8Bytes","base","mul","Math","floor","gasPriceGwei","express","instant","getBlock","baseFeePerGas","baseFeeGwei","priorityFeeGwei","perCoin","_x8","_buildSignParams","_callee9","_ref8","txBase","_t7","_t8","_t9","_t0","_t1","_t10","_t11","_t12","_context9","currentChain","type","_x9","BtcWallet","cluster","TBtcWallet","BtcWalletOkxm","solanaWeb3","ACCOUNT_LAYOUT","BufferLayout","CLUSTER_ENV","ENV","MainnetBeta","Testnet","Devnet","SolWallet","SolWalletOkx","connection","mintPubkey","tokenAccountAddress","accountInfo","rawBalance","getAssociatedTokenAddress","getAccountInfo","getTokenAccountBalance","_args$amount2","fromAccount","_yield$this$getRecomm","computeUnitLimit","computeUnitPrice","_yield$connection$get","blockhash","_args$amount","fromPubkey","recipientPubkey","fromTokenAccount","recipientTokenAccount","fromTokenBal","mintAccountInfo","parsed","recipientAtaInfo","recipientHasATA","shouldCreateATA","rawTokenAmount","_signedTx","_rawTx","txid","lamports","solParams","rawTx","getRecommendedFees","parseInt","getLatestBlockhash","getParsedAccountInfo","info","createAssociatedAddress","round","payer","from","blockHash","mint","decimal","token2022","fromBase58","sendRawTransaction","skipPreflight","_ref4$cluster","_mintInfo$value","_parsedMint$decimals","_parsedMint$supply","mintAddress","mintInfo","parsedMint","supplyRaw","tokenName","tokenSymbol","tokenLogo","_CLUSTER_ENV$cluster","env","_provider","tokenList","tokenMap","token","supply","TokenListProvider","resolve","filterByChainId","getList","Map","map","item","toBase58","logoURI","console","warn","slice","logoUrl","_getRecommendedFees","sorted","getRecentPrioritizationFees","f","prioritizationFee","sort","b","WalletRegistry","EVM","BTC","SOL","CryptoClientSdk","getWallet","WalletClass"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAOaA,MAAM;EAwOf,SAAAA,OAA6BC,MAAiB;IAAjB,WAAM,GAANA,MAAM;IAvOlB,0BAAqB,GAAmB;MACrD,GAAG,EAAE;QACDC,EAAE,EAAE,GAAG;QACPC,QAAQ,EAAE,uBAAuB;QACjCC,eAAe,EAAE,OAAO;QACxBC,WAAW,EAAE,GAAG;QAChBC,mBAAmB,EAAE,KAAK;QAC1BC,UAAU,EAAE;OACf;MACD,UAAU,EAAE;QACRL,EAAE,EAAE,UAAU;QACdC,QAAQ,EAAE,+BAA+B;QACzCC,eAAe,EAAE,OAAO;QACxBC,WAAW,EAAE,GAAG;QAChBC,mBAAmB,EAAE,KAAK;QAC1BC,UAAU,EAAE;OACf;MACD,IAAI,EAAE;QACFL,EAAE,EAAE,IAAI;QACRC,QAAQ,EAAE,sBAAsB;QAChCC,eAAe,EAAE,OAAO;QACxBC,WAAW,EAAE,GAAG;QAChBC,mBAAmB,EAAE,KAAK;QAC1BC,UAAU,EAAE;OACf;MACD,IAAI,EAAE;QACFL,EAAE,EAAE,IAAI;QACRC,QAAQ,EAAE,8BAA8B;QACxCC,eAAe,EAAE,OAAO;QACxBC,WAAW,EAAE,GAAG;QAChBC,mBAAmB,EAAE,KAAK;QAC1BC,UAAU,EAAE;OACf;MACD,KAAK,EAAE;QACHL,EAAE,EAAE,KAAK;QACTC,QAAQ,EAAE,sCAAsC;QAChDC,eAAe,EAAE,OAAO;QACxBC,WAAW,EAAE,GAAG;QAChBG,YAAY,EAAE,MAAM;QACpBF,mBAAmB,EAAE,KAAK;QAC1BC,UAAU,EAAE;OACf;MACD,KAAK,EAAE;QACHL,EAAE,EAAE,KAAK;QACTC,QAAQ,EAAE,sCAAsC;QAChDC,eAAe,EAAE,OAAO;QACxBC,WAAW,EAAE,GAAG;QAChBC,mBAAmB,EAAE,KAAK;QAC1BC,UAAU,EAAE;OACf;MACD,OAAO,EAAE;QACLL,EAAE,EAAE,OAAO;QACXC,QAAQ,EAAE,uCAAuC;QACjDC,eAAe,EAAE,OAAO;QACxBC,WAAW,EAAE,GAAG;QAChBC,mBAAmB,EAAE,KAAK;QAC1BC,UAAU,EAAE;OACf;MAED,KAAK,EAAE;QACHL,EAAE,EAAE,KAAK;QACTC,QAAQ,EAAE,0CAA0C;QACpDC,eAAe,EAAE,OAAO;QACxBC,WAAW,EAAE,GAAG;QAChBC,mBAAmB,EAAE,KAAK;QAC1BC,UAAU,EAAE;OACf;MACD,OAAO,EAAE;QACLL,EAAE,EAAE,OAAO;QACXC,QAAQ,EAAE,8BAA8B;QACxCC,eAAe,EAAE,OAAO;QACxBC,WAAW,EAAE,GAAG;QAChBC,mBAAmB,EAAE,KAAK;QAC1BC,UAAU,EAAE;OACf;MACD,KAAK,EAAE;QACHL,EAAE,EAAE,KAAK;QACTC,QAAQ,EAAE,wCAAwC;QAClDC,eAAe,EAAE,OAAO;QACxBC,WAAW,EAAE,GAAG;QAChBC,mBAAmB,EAAE,KAAK;QAC1BC,UAAU,EAAE;OACf;MACD,MAAM,EAAE;QACJL,EAAE,EAAE,MAAM;QACVC,QAAQ,EAAE,uCAAuC;QACjDC,eAAe,EAAE,OAAO;QACxBC,WAAW,EAAE,GAAG;QAChBC,mBAAmB,EAAE,KAAK;QAC1BC,UAAU,EAAE;OACf;MACD,KAAK,EAAE;QACHL,EAAE,EAAE,KAAK;QACTC,QAAQ,EAAE,0CAA0C;QACpDC,eAAe,EAAE,OAAO;QACxBC,WAAW,EAAE,GAAG;QAChBC,mBAAmB,EAAE,KAAK;QAC1BC,UAAU,EAAE;OACf;MACD,IAAI,EAAE;QACFL,EAAE,EAAE,IAAI;QACRC,QAAQ,EAAE,2CAA2C;QACrDC,eAAe,EAAE,OAAO;QACxBC,WAAW,EAAE,GAAG;QAChBC,mBAAmB,EAAE,KAAK;QAC1BC,UAAU,EAAE;OACf;MACD,OAAO,EAAE;QACLL,EAAE,EAAE,OAAO;QACXC,QAAQ,EAAE,2CAA2C;QACrDC,eAAe,EAAE,OAAO;QACxBC,WAAW,EAAE,GAAG;QAChBC,mBAAmB,EAAE,KAAK;QAC1BC,UAAU,EAAE;OACf;MAED,KAAK,EAAE;QACHL,EAAE,EAAE,KAAK;QACTC,QAAQ,EAAE,yCAAyC;QACnDC,eAAe,EAAE,OAAO;QACxBC,WAAW,EAAE,GAAG;QAChBC,mBAAmB,EAAE,KAAK;QAC1BC,UAAU,EAAE;OACf;MACD,KAAK,EAAE;QACHL,EAAE,EAAE,KAAK;QACTC,QAAQ,EAAE,wCAAwC;QAClDC,eAAe,EAAE,OAAO;QACxBC,WAAW,EAAE,GAAG;QAChBC,mBAAmB,EAAE,KAAK;QAC1BC,UAAU,EAAE;OACf;MACD,KAAK,EAAE;QACHL,EAAE,EAAE,KAAK;QACTC,QAAQ,EAAE,sCAAsC;QAChDC,eAAe,EAAE,OAAO;QACxBC,WAAW,EAAE,GAAG;QAChBC,mBAAmB,EAAE,KAAK;QAC1BC,UAAU,EAAE;OACf;MACD,KAAK,EAAE;QACHL,EAAE,EAAE,KAAK;QACTC,QAAQ,EAAE,yCAAyC;QACnDC,eAAe,EAAE,OAAO;QACxBC,WAAW,EAAE,GAAG;QAChBC,mBAAmB,EAAE,KAAK;QAC1BC,UAAU,EAAE;OACf;MACD,MAAM,EAAE;QACJL,EAAE,EAAE,MAAM;QACVC,QAAQ,EAAE,gDAAgD;QAC1DC,eAAe,EAAE,OAAO;QACxBC,WAAW,EAAE,GAAG;QAChBC,mBAAmB,EAAE,KAAK;QAC1BC,UAAU,EAAE;OACf;MACD,MAAM,EAAE;QACJL,EAAE,EAAE,MAAM;QACVC,QAAQ,EAAE,yCAAyC;QACnDC,eAAe,EAAE,OAAO;QACxBC,WAAW,EAAE,GAAG;QAChBC,mBAAmB,EAAE,KAAK;QAC1BC,UAAU,EAAE;OACf;MACD,IAAI,EAAE;QACFL,EAAE,EAAE,IAAI;QACRC,QAAQ,EAAE,0BAA0B;QACpCC,eAAe,EAAE,OAAO;QACxBC,WAAW,EAAE,GAAG;QAChBC,mBAAmB,EAAE,KAAK;QAC1BC,UAAU,EAAE;OACf;MACD,QAAQ,EAAE;QACNL,EAAE,EAAE,QAAQ;QACZC,QAAQ,EAAE,yCAAyC;QACnDC,eAAe,EAAE,OAAO;QACxBC,WAAW,EAAE,GAAG;QAChBC,mBAAmB,EAAE,KAAK;QAC1BC,UAAU,EAAE;OACf;MACD,OAAO,EAAE;QACLL,EAAE,EAAE,OAAO;QACXC,QAAQ,EAAE,wCAAwC;QAClDC,eAAe,EAAE,OAAO;QACxBC,WAAW,EAAE,GAAG;QAChBC,mBAAmB,EAAE,KAAK;QAC1BC,UAAU,EAAE;OACf;MACD,MAAM,EAAE;QACJL,EAAE,EAAE,MAAM;QACVC,QAAQ,EAAE,wCAAwC;QAClDC,eAAe,EAAE,OAAO;QACxBC,WAAW,EAAE,GAAG;QAChBC,mBAAmB,EAAE,KAAK;QAC1BC,UAAU,EAAE;OACf;MACD,MAAM,EAAE;QACJL,EAAE,EAAE,MAAM;QACVC,QAAQ,EAAE,+BAA+B;QACzCC,eAAe,EAAE,OAAO;QACxBC,WAAW,EAAE,GAAG;QAChBC,mBAAmB,EAAE,KAAK;QAC1BC,UAAU,EAAE;OACf;MACD,OAAO,EAAE;QACLL,EAAE,EAAE,OAAO;QACXC,QAAQ,EAAE,wCAAwC;QAClDC,eAAe,EAAE,OAAO;QACxBC,WAAW,EAAE,GAAG;QAChBC,mBAAmB,EAAE,KAAK;QAC1BC,UAAU,EAAE;OACf;MACD,MAAM,EAAE;QACJL,EAAE,EAAE,MAAM;QACVC,QAAQ,EAAE,mCAAmC;QAC7CC,eAAe,EAAE,OAAO;QACxBC,WAAW,EAAE,GAAG;QAChBC,mBAAmB,EAAE,KAAK;QAC1BC,UAAU,EAAE;OACf;MACD,IAAI,EAAE;QACFL,EAAE,EAAE,IAAI;QACRC,QAAQ,EAAE,2CAA2C;QACrDC,eAAe,EAAE,OAAO;QACxBC,WAAW,EAAE,GAAG;QAChBC,mBAAmB,EAAE,KAAK;QAC1BC,UAAU,EAAE;;KAGnB;IAGG,IAAI,CAACN,MAAM,CAACQ,QAAQ,GAAAC,QAAA,KACb,IAAI,CAACC,qBAAqB,EACzBV,MAAM,CAACQ,QAAQ,IAAI,EAAE,CAC5B;;EACJ,IAAAG,MAAA,GAAAZ,MAAA,CAAAa,SAAA;EAAAD,MAAA,CAEME,gBAAgB,GAAhB,SAAAA,gBAAgBA,CAACC,OAAe;;IACnC,IAAMC,aAAa,IAAAC,qBAAA,GAAG,IAAI,CAAChB,MAAM,CAACQ,QAAQ,qBAApBQ,qBAAA,CAAuBF,OAAO,CAAC;IACrD,IAAI,CAACC,aAAa,EAAE;MAChB,MAAM,IAAIE,KAAK,gDAA8CH,OAAS,CAAC;;IAE3E,OAAOC,aAAa;GACvB;EAAA,OAAAhB,MAAA;AAAA;;ICxPUmB,UAAU;EAKrB,SAAAA,WAAYlB,MAAiB;IACzB,IAAI,CAACA,MAAM,GAAAS,QAAA;MACPU,OAAO,EAAE;OACNnB,MAAM,CACZ;IAED,IAAI,CAACoB,GAAG,GAAG,IAAIrB,MAAM,CAAC,IAAI,CAACC,MAAM,CAAC;;EACrC,IAAAW,MAAA,GAAAO,UAAA,CAAAN,SAAA;EAAAD,MAAA,CAOYU,gBAAgB;IAAA,IAAAC,iBAAA,gBAAAC,iBAAA,cAAAC,YAAA,GAAAC,CAAA,CAAtB,SAAAC,QAAuBC;;;;;gBAAAA;cAAAA,WAAmB,EAAE;;YACzCC,QAAQ,GAAID,QAAQ,GAAG,CAAC,GAAI,EAAE;YAAA,OAAAE,QAAA,CAAAC,CAAA,IAC7BC,eAAK,CAACV,gBAAgB,CAACO,QAAQ,CAAC;;SAAAF,OAAA;KAC1C;IAAA,SAHYL,gBAAgBA,CAAAW,EAAA;MAAA,OAAAV,iBAAA,CAAAW,KAAA,OAAAC,SAAA;;IAAA,OAAhBb,gBAAgB;;EAAA,OAAAc,YAAA,CAAAjB,UAAA;IAAAkB,GAAA;IAAAC,GAAA,EAL7B,SAAAA;MACI,IAAI,CAAC,IAAI,CAACrC,MAAM,CAACc,OAAO,EAAE,MAAM,IAAIG,KAAK,CAAC,2BAA2B,CAAC;MACtE,OAAO,IAAI,CAACG,GAAG,CAACP,gBAAgB,CAAC,IAAI,CAACb,MAAM,CAACc,OAAO,CAAC;;;AACxD;;ACnBE,IAAMwB,eAAe,GAAG,SAAlBA,eAAeA,CAAIC,IAAe;EAC3C,OAAOA,IAAI;AACf,CAAC;;ACJD;AACA,AAEA;;;;AAIA,AAAO,IAAMC,WAAW,GAAG,SAAdA,WAAWA,CAAIC,MAAuB,EAAEC,QAAgB;EACjE,IAAMC,EAAE,GAAG,IAAIC,SAAS,CAACH,MAAM,CAAC;EAChC,IAAMI,UAAU,GAAG,IAAID,SAAS,CAAC,EAAE,CAAC,CAACE,GAAG,CAACJ,QAAQ,CAAC;EAClD,OAAOK,MAAM,CAACJ,EAAE,CAACK,KAAK,CAACH,UAAU,CAAC,CAACI,OAAO,CAAC,CAAC,CAAC,CAAC;AAClD,CAAC;AAED;;;;AAIA,AAAO,IAAMC,YAAY,GAAG,SAAfA,YAAYA,CAAIC,GAAoB,EAAET,QAAgB;EAC/D,IAAMC,EAAE,GAAG,IAAIC,SAAS,CAACO,GAAG,CAACC,QAAQ,EAAE,CAAC;EACxC,IAAMC,OAAO,GAAG,IAAIT,SAAS,CAAC,EAAE,CAAC,CAACE,GAAG,CAACJ,QAAQ,CAAC;EAC/C,OAAOC,EAAE,CAACW,SAAS,CAACD,OAAO,CAAC,CAACE,QAAQ,EAAE;AAC3C,CAAC;;ACrBD;AACA,AAEA;AACA,AAAO,IAAMC,UAAU,GAAG,SAAbA,UAAUA,CAAIC,CAAkB;EAAA,OAAKjB,WAAW,CAACiB,CAAC,EAAE,EAAE,CAAC;AAAA;AACpE,AAAO,IAAMC,WAAW,GAAG,SAAdA,WAAWA,CAAID,CAAkB;EAAA,OAAKP,YAAY,CAACO,CAAC,EAAE,EAAE,CAAC;AAAA;AAEtE;AACA,AAAO,IAAME,SAAS,GAAG,SAAZA,SAASA,CAAIF,CAAkB;EAAA,OAAKjB,WAAW,CAACiB,CAAC,EAAE,CAAC,CAAC;AAAA;AAClE,AAAO,IAAMG,UAAU,GAAG,SAAbA,UAAUA,CAAIH,CAAkB;EAAA,OAAKP,YAAY,CAACO,CAAC,EAAE,CAAC,CAAC;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACTpE,AAUA,IAAMI,QAAQ,GAAG,SAAXA,QAAQA,CAAIC,MAAe;EAAA,OAAK,IAAIC,aAAM,CAACC,eAAe,CAACF,MAAM,CAAC;AAAA;AAExE,IAAMG,gBAAgB,GAAG,KAAK;AAC9B,IAEaC,SAAU,0BAAAC,WAAA;EAInB,SAAAD,UAAYlE,MAAiB;;IACzBoE,KAAA,GAAAD,WAAA,CAAAE,IAAA,OAAMrE,MAAM,CAAC;IACboE,KAAA,CAAKE,MAAM,GAAG,IAAIC,sBAAY,EAAE;IAAC,OAAAH,KAAA;;EACpCI,cAAA,CAAAN,SAAA,EAAAC,WAAA;EAAA,IAAAxD,MAAA,GAAAuD,SAAA,CAAAtD,SAAA;EAAAD,MAAA,CAEK8D,WAAW;IAAA,IAAAC,YAAA,gBAAAnD,iBAAA,cAAAC,YAAA,GAAAC,CAAA,CAAjB,SAAAC,QAAAiD,IAAA;MAAA,IAAAC,eAAA,EAAAd,MAAA,EAAAe,UAAA,EAAAC,GAAA,EAAAC,gBAAA,EAAAC,UAAA,EAAAC,KAAA,EAAAC,QAAA,EAAAC,MAAA,EAAAC,IAAA,EAAAC,EAAA;MAAA,OAAA7D,YAAA,GAAA8D,CAAA,WAAAzD,QAAA;QAAA,kBAAAA,QAAA,CAAA0D,CAAA;UAAA;YAAoBX,eAAe,GAAAD,IAAA,CAAfC,eAAe,EAAEd,MAAM,GAAAa,IAAA,CAANb,MAAM,EAAEe,UAAU,GAAAF,IAAA,CAAVE,UAAU,EAAEC,GAAG,GAAAH,IAAA,CAAHG,GAAG;YAAA,IACnDhB,MAAM;cAAAjC,QAAA,CAAA0D,CAAA;cAAA;;YAAA,MAAQ,IAAItE,KAAK,CAAC,qBAAqB,CAAC;UAAA;YAE7C8D,gBAAgB,GAAGlB,QAAQ,CAACC,MAAM,WAANA,MAAM,GAAI,IAAI,CAAC9D,MAAM,CAAC8D,MAAM,CAAC;YAAAjC,QAAA,CAAA0D,CAAA;YAAA,OACtCR,gBAAgB,CAACS,UAAU,EAAE;UAAA;YAAhDR,UAAU,GAAAnD,QAAA,CAAA4B,CAAA;YAAA,KAKZoB,UAAU;cAAAhD,QAAA,CAAA0D,CAAA;cAAA;;YACVJ,MAAM,GAAG,IAAIpB,aAAM,CAAC0B,MAAM,CAACZ,UAAU,EAAEE,gBAAgB,CAAC;YAACM,EAAA,GAC3CN,gBAAgB;YAAAlD,QAAA,CAAA0D,CAAA;YAAA,OACpBJ,MAAM,CAACO,UAAU,EAAE;UAAA;YAAA7D,QAAA,CAAA0D,CAAA;YAAA,OAAAF,EAAA,CADEM,mBAAmB,CAAAtB,IAAA,CAAAgB,EAAA,EAAAxD,QAAA,CAAA4B,CAAA,EAE9C,SAAS;UAAA;YAFbwB,KAAK,GAAApD,QAAA,CAAA4B,CAAA;UAAA;YAAA,KAMLmB,eAAe;cAAA/C,QAAA,CAAA0D,CAAA;cAAA;;YACfL,QAAQ,GAAG,IAAInB,aAAM,CAAC6B,QAAQ,CAC1BhB,eAAe,EACfE,GAAG,IAAIe,QAAQ,EACfV,MAAM,IAAIJ,gBAAgB,CAC7B;YAAClD,QAAA,CAAA0D,CAAA;YAAA,OAEiBR,gBAAgB,CAACe,OAAO,CAAClB,eAAe,CAAC;UAAA;YAAtDQ,IAAI,GAAAvD,QAAA,CAAA4B,CAAA;YAAA,MACN2B,IAAI,KAAK,IAAI;cAAAvD,QAAA,CAAA0D,CAAA;cAAA;;YAAA,MACP,IAAItE,KAAK,CAAC,2BAA2B,CAAC;UAAA;YAAA,OAAAY,QAAA,CAAAC,CAAA,IAI7C;cAAEoD,QAAQ,EAARA,QAAQ;cAAEC,MAAM,EAANA,MAAM;cAAEH,UAAU,EAAVA,UAAU;cAAEC,KAAK,EAALA,KAAK;cAAEF,gBAAgB,EAAhBA;aAAkB;;SAAArD,OAAA;KACnE;IAAA,SA/BK+C,WAAWA,CAAAzC,EAAA;MAAA,OAAA0C,YAAA,CAAAzC,KAAA,OAAAC,SAAA;;IAAA,OAAXuC,WAAW;;EAAA9D,MAAA,CAiCXoF,cAAc;IAAA,IAAAC,eAAA,gBAAAzE,iBAAA,cAAAC,YAAA,GAAAC,CAAA,CAApB,SAAAwE,SAAAC,KAAA;MAAA,IAAAC,QAAA,EAAAC,cAAA,EAAAC,MAAA,EAAAC,WAAA,EAAAC,gBAAA,EAAAC,qBAAA,EAAAC,OAAA,EAAAC,SAAA,EAAAC,GAAA;MAAA,OAAAnF,YAAA,GAAA8D,CAAA,WAAAsB,SAAA;QAAA,kBAAAA,SAAA,CAAArB,CAAA;UAAA;YAAuBY,QAAQ,GAAAD,KAAA,CAARC,QAAQ,EAAEC,cAAc,GAAAF,KAAA,CAAdE,cAAc;YACrCC,MAAM,GAAGD,cAAc,IAAI,kBAAkB;YAAA,MAC/BD,QAAQ;cAAAS,SAAA,CAAArB,CAAA;cAAA;;YAAAoB,GAAA,GAARR,QAAQ;YAAAS,SAAA,CAAArB,CAAA;YAAA;UAAA;YAAAqB,SAAA,CAAArB,CAAA;YAAA,OAAW,IAAI,CAAClE,gBAAgB,CAAC,EAAE,CAAC;UAAA;YAAAsF,GAAA,GAAAC,SAAA,CAAAnD,CAAA;UAAA;YAA1D6C,WAAW,GAAAK,GAAA;YAAAC,SAAA,CAAArB,CAAA;YAAA,OAEc,IAAI,CAACjB,MAAM,CAACuC,oBAAoB,CAAC;cAAEV,QAAQ,EAAEG,WAAW;cAAED,MAAM,EAANA;aAAQ,CAAC;UAAA;YAA5FE,gBAAgB,GAAAK,SAAA,CAAAnD,CAAA;YAAAmD,SAAA,CAAArB,CAAA;YAAA,OACe,IAAI,CAACjB,MAAM,CAACwC,aAAa,CAAC;cAAEjC,UAAU,EAAE0B;aAAkB,CAAC;UAAA;YAAAC,qBAAA,GAAAI,SAAA,CAAAnD,CAAA;YAAxFgD,OAAO,GAAAD,qBAAA,CAAPC,OAAO;YAAEC,SAAS,GAAAF,qBAAA,CAATE,SAAS;YAAA,OAAAE,SAAA,CAAA9E,CAAA,IAEnBQ,eAAe,CAAC;cAAEmE,OAAO,EAAPA,OAAO;cAAEC,SAAS,EAATA,SAAS;cAAE7B,UAAU,EAAE0B;aAAkB,CAAC;;SAAAN,QAAA;KAC/E;IAAA,SARKF,cAAcA,CAAAgB,GAAA;MAAA,OAAAf,eAAA,CAAA/D,KAAA,OAAAC,SAAA;;IAAA,OAAd6D,cAAc;;EAAApF,MAAA,CAUdqG,UAAU;IAAA,IAAAC,WAAA,gBAAA1F,iBAAA,cAAAC,YAAA,GAAAC,CAAA,CAAhB,SAAAyF,SAAAC,KAAA;MAAA,IAAArD,MAAA,EAAAc,eAAA,EAAA6B,OAAA,EAAAW,qBAAA,EAAAlC,QAAA,EAAAH,gBAAA,EAAArC,QAAA,EAAA2E,QAAA,EAAAC,OAAA;MAAA,OAAA9F,YAAA,GAAA8D,CAAA,WAAAiC,SAAA;QAAA,kBAAAA,SAAA,CAAAhC,CAAA;UAAA;YAAmBzB,MAAM,GAAAqD,KAAA,CAANrD,MAAM,EAAEc,eAAe,GAAAuC,KAAA,CAAfvC,eAAe,EAAE6B,OAAO,GAAAU,KAAA,CAAPV,OAAO;YAAAc,SAAA,CAAAhC,CAAA;YAAA,OACF,IAAI,CAACd,WAAW,CAAC;cAAEX,MAAM,EAAEA,MAAM,WAANA,MAAM,GAAI,IAAI,CAAC9D,MAAM,CAAC8D,MAAM;cAAEc,eAAe,EAAfA;aAAiB,CAAC;UAAA;YAAAwC,qBAAA,GAAAG,SAAA,CAAA9D,CAAA;YAAhHyB,QAAQ,GAAAkC,qBAAA,CAARlC,QAAQ;YAAEH,gBAAgB,GAAAqC,qBAAA,CAAhBrC,gBAAgB;YAAA,KAE9BG,QAAQ;cAAAqC,SAAA,CAAAhC,CAAA;cAAA;;YAAAgC,SAAA,CAAAhC,CAAA;YAAA,OACeL,QAAQ,CAACxC,QAAQ,EAAE;UAAA;YAApCA,QAAQ,GAAA6E,SAAA,CAAA9D,CAAA;YAAA8D,SAAA,CAAAhC,CAAA;YAAA,OACQL,QAAQ,CAACsC,SAAS,CAACf,OAAO,CAAC;UAAA;YAA3Ca,QAAO,GAAAC,SAAA,CAAA9D,CAAA;YAAA,OAAA8D,SAAA,CAAAzF,CAAA,IACNQ,eAAe,CAAC;cACnBgF,OAAO,EAAEpE,YAAY,CAACoE,QAAO,CAAClE,QAAQ,EAAE,EAAEV,QAAQ,CAAC;cACnD+E,WAAW,EAAEH,QAAO,CAAClE,QAAQ,EAAE;cAC/BsE,QAAQ,EAAEhF;aACb,CAAC;UAAA;YAAA6E,SAAA,CAAAhC,CAAA;YAAA,OAGgBR,gBAAgB,CAACiC,UAAU,CAACP,OAAO,CAAC;UAAA;YAApDa,OAAO,GAAAC,SAAA,CAAA9D,CAAA;YAAA,OAAA8D,SAAA,CAAAzF,CAAA,IAENQ,eAAe,CAAC;cACnBgF,OAAO,EAAEpE,YAAY,CAACoE,OAAO,CAAClE,QAAQ,EAAE,EAAE,EAAE,CAAC;cAC7CqE,WAAW,EAAEH,OAAO,CAAClE,QAAQ,EAAE;cAC/BsE,QAAQ,EAAE;aACb,CAAC;;SAAAR,QAAA;KACL;IAAA,SApBKF,UAAUA,CAAAW,GAAA;MAAA,OAAAV,WAAA,CAAAhF,KAAA,OAAAC,SAAA;;IAAA,OAAV8E,UAAU;;EAAArG,MAAA,CAsBViH,QAAQ;IAAA,IAAAC,SAAA,gBAAAtG,iBAAA,cAAAC,YAAA,GAAAC,CAAA,CAAd,SAAAqG,SAAAC,KAAA;MAAA,IAAAlD,UAAA,EAAAD,eAAA,EAAAd,MAAA,EAAAvB,IAAA,EAAAyF,sBAAA,EAAA9C,QAAA,EAAAH,gBAAA,EAAAC,UAAA,EAAAC,KAAA,EAAAgD,gBAAA,EAAAC,IAAA,EAAAC,GAAA,EAAAC,KAAA,EAAAC,QAAA,EAAA3F,QAAA,EAAA4F,aAAA,EAAAC,QAAA,EAAAC,GAAA,EAAAC,UAAA,EAAAC,QAAA,EAAAC,SAAA,EAAAC,GAAA;MAAA,OAAApH,YAAA,GAAA8D,CAAA,WAAAuD,SAAA;QAAA,kBAAAA,SAAA,CAAAtD,CAAA;UAAA;YAAiBV,UAAU,GAAAkD,KAAA,CAAVlD,UAAU,EAAED,eAAe,GAAAmD,KAAA,CAAfnD,eAAe,EAAEd,MAAM,GAAAiE,KAAA,CAANjE,MAAM,EAAKvB,IAAI,gBAAAuG,6BAAA,CAAAf,KAAA,EAAAgB,SAAA;YAAAF,SAAA,CAAAtD,CAAA;YAAA,OACO,IAAI,CAACd,WAAW,CAAC;cAC7EX,MAAM,EAAEA,MAAM,WAANA,MAAM,GAAI,IAAI,CAAC9D,MAAM,CAAC8D,MAAM;cACpCe,UAAU,EAAVA,UAAU;cACVD,eAAe,EAAfA;aACH,CAAC;UAAA;YAAAoD,sBAAA,GAAAa,SAAA,CAAApF,CAAA;YAJMyB,QAAQ,GAAA8C,sBAAA,CAAR9C,QAAQ;YAAEH,gBAAgB,GAAAiD,sBAAA,CAAhBjD,gBAAgB;YAAEC,UAAU,GAAAgD,sBAAA,CAAVhD,UAAU;YAAEC,KAAK,GAAA+C,sBAAA,CAAL/C,KAAK;YAAA4D,SAAA,CAAAtD,CAAA;YAAA,OAMtB,IAAI,CAACjB,MAAM,CAAC0E,YAAY,CAAC;cAAEvC,OAAO,EAAElE,IAAI,CAAC0F;aAAkB,CAAC;UAAA;YAArFA,gBAAgB,GAAAY,SAAA,CAAApF,CAAA;YAAA,IACjBwE,gBAAgB,CAACgB,OAAO;cAAAJ,SAAA,CAAAtD,CAAA;cAAA;;YAAA,MAAQ,IAAItE,KAAK,CAAC,mBAAmB,CAAC;UAAA;YAAA,MAG/DsB,IAAI,CAAC2G,oBAAoB,IAAI3G,IAAI,CAAC4G,YAAY;cAAAN,SAAA,CAAAtD,CAAA;cAAA;;YACxC2C,IAAI,GAAGnF,MAAM,CAACR,IAAI,CAAC2G,oBAAoB,CAAC;YACxCf,GAAG,GAAGpF,MAAM,CAACR,IAAI,CAAC4G,YAAY,CAAC;YAAA,MACjChB,GAAG,GAAGD,IAAI;cAAAW,SAAA,CAAAtD,CAAA;cAAA;;YAAA,MACJ,IAAItE,KAAK,CAAC,8CAA8C,CAAC;UAAA;YAAA,MAInEsB,IAAI,CAAC6G,QAAQ,KAAK7G,IAAI,CAAC4G,YAAY,IAAI5G,IAAI,CAAC2G,oBAAoB,CAAC;cAAAL,SAAA,CAAAtD,CAAA;cAAA;;YAAA,MAC3D,IAAItE,KAAK,CAAC,8CAA8C,CAAC;UAAA;YAAA,KAM/D2D,eAAe;cAAAiE,SAAA,CAAAtD,CAAA;cAAA;;YAAA,IACVL,QAAQ;cAAA2D,SAAA,CAAAtD,CAAA;cAAA;;YAAA,MAAQ,IAAItE,KAAK,CAAC,oBAAoB,CAAC;UAAA;YAAA4H,SAAA,CAAAtD,CAAA;YAAA,OAE7BL,QAAQ,CAACxC,QAAQ,EAAE;UAAA;YAApCA,QAAQ,GAAAmG,SAAA,CAAApF,CAAA;YACd2E,KAAK,GAAG5F,WAAW,CAACD,IAAI,CAACE,MAAM,CAACW,QAAQ,EAAE,EAAEV,QAAQ,CAAC;YAAC,KAG3CH,IAAI,CAAC8F,QAAQ;cAAAQ,SAAA,CAAAtD,CAAA;cAAA;;YAAAqD,GAAA,GAClB7F,MAAM,CAACR,IAAI,CAAC8F,QAAQ,CAAC;YAAAQ,SAAA,CAAAtD,CAAA;YAAA;UAAA;YAAAsD,SAAA,CAAAtD,CAAA;YAAA,OACfL,QAAQ,CAAC0C,QAAQ,CAACyB,WAAW,CACjC9G,IAAI,CAAC0F,gBAAgB,EACrBG,KAAK,CACR;UAAA;YAAAQ,GAAA,GAAAC,SAAA,CAAApF,CAAA;UAAA;YALL4E,QAAQ,GAAAO,GAAA;YAAAC,SAAA,CAAAtD,CAAA;YAAA;UAAA;YAOR6C,KAAK,GAAG5E,UAAU,CAACjB,IAAI,CAACE,MAAM,CAACW,QAAQ,EAAE,CAAC;YAC1CiF,QAAQ,GAAG9F,IAAI,CAAC8F,QAAQ,GAAGtF,MAAM,CAACR,IAAI,CAAC8F,QAAQ,CAAC,GAAG,MAAM;UAAC;;YAIxDC,aAAa,GACf,CAAC/F,IAAI,CAAC6G,QAAQ,IACd,CAAC7G,IAAI,CAAC4G,YAAY,IAClB,CAAC5G,IAAI,CAAC2G,oBAAoB;YAAA,KAE1BZ,aAAa;cAAAO,SAAA,CAAAtD,CAAA;cAAA;;YAAAsD,SAAA,CAAAtD,CAAA;YAAA,OACU,IAAI,CAAC8D,WAAW,CAAC;cACpCvF,MAAM,EAAEA,MAAM,WAANA,MAAM,GAAI,IAAI,CAAC9D,MAAM,CAAC8D,MAAM;cACpCmE,gBAAgB,EAAE1F,IAAI,CAAC0F,gBAAgB;cACvCxF,MAAM,EAAEF,IAAI,CAACE,MAAM,CAACW,QAAQ,EAAE;cAC9BkG,IAAI,EAAE/G,IAAI,CAAC+G;aACd,CAAC;UAAA;YALIf,QAAQ,GAAAM,SAAA,CAAApF,CAAA;YAOd4E,QAAQ,GAAGtF,MAAM,CAACwF,QAAQ,CAACF,QAAQ,CAAC;;YAEpC,MACIE,QAAQ,CAACgB,KAAK,KAAK,QAAQ;cAAAV,SAAA,CAAAtD,CAAA;cAAA;;YAAA,IACtBgD,QAAQ,CAACa,QAAQ;cAAAP,SAAA,CAAAtD,CAAA;cAAA;;YAAA,MACZ,IAAItE,KAAK,CAAC,kCAAkC,CAAC;UAAA;YAGvDsB,IAAI,CAAC6G,QAAQ,GAAGb,QAAQ,CAACa,QAAQ,CAAC;YAAC,OAAAP,SAAA,CAAA/G,CAAA,IAC5B,IAAI,CAAC8F,QAAQ,CAAAnH,QAAA;cAAGoE,UAAU,EAAVA,UAAU;cAAED,eAAe,EAAfA,eAAe;cAAEd,MAAM,EAANA;eAAWvB,IAAI,CAAE,CAAC;UAAA;;YAIpEiG,GAAG,GAAGD,QAAQ,CAACiB,IAAI,CAACC,OAAO;YAAA,MAE7B,EAACjB,GAAG,YAAHA,GAAG,CAAEW,YAAY,KAAI,EAACX,GAAG,YAAHA,GAAG,CAAEU,oBAAoB;cAAAL,SAAA,CAAAtD,CAAA;cAAA;;YAAA,MAC1C,IAAItE,KAAK,CAAC,qCAAqC,CAAC;UAAA;YAG1DsB,IAAI,CAAC4G,YAAY,GAAGX,GAAG,CAACW,YAAY;YACpC5G,IAAI,CAAC2G,oBAAoB,GAAGV,GAAG,CAACU,oBAAoB;UAAC;YAAAL,SAAA,CAAAtD,CAAA;YAAA,OAMhC,IAAI,CAACmE,eAAe,CAAC;cAC1CnH,IAAI,EAAA9B,QAAA,KAAO8B,IAAI;gBAAEsC,UAAU,EAAVA,UAAU;gBAAEwD,QAAQ,EAARA;gBAAU;cACvCpD,KAAK,EAALA,KAAK;cACLD,UAAU,EAAVA,UAAU;cACViD,gBAAgB,EAAhBA,gBAAgB;cAChBG,KAAK,EAALA,KAAK;cACLxD,eAAe,EAAfA;aACH,CAAC;UAAA;YAPI6D,UAAU,GAAAI,SAAA,CAAApF,CAAA;YAAAoF,SAAA,CAAAtD,CAAA;YAAA,OASO,IAAI,CAACjB,MAAM,CAACqF,eAAe,CAAClB,UAAU,CAAC;UAAA;YAAxDC,QAAQ,GAAAG,SAAA,CAAApF,CAAA;YAAAoF,SAAA,CAAAtD,CAAA;YAAA,OACUR,gBAAgB,CAAC6E,oBAAoB,CAAClB,QAAQ,CAAC;UAAA;YAAjEC,SAAS,GAAAE,SAAA,CAAApF,CAAA;YAAA,OAAAoF,SAAA,CAAA/G,CAAA,IAERQ,eAAe,CAAA7B,QAAA,KAAMkI,SAAS,CAAE,CAAC;;SAAAb,QAAA;KAC3C;IAAA,SAjGKF,QAAQA,CAAAiC,GAAA;MAAA,OAAAhC,SAAA,CAAA5F,KAAA,OAAAC,SAAA;;IAAA,OAAR0F,QAAQ;;EAAAjH,MAAA,CAmGRmJ,cAAc;IAAA,IAAAC,eAAA,gBAAAxI,iBAAA,cAAAC,YAAA,GAAAC,CAAA,CAApB,SAAAuI,SAAAC,KAAA;MAAA,IAAAC,IAAA,EAAApG,MAAA,EAAAqG,WAAA,EAAAC,sBAAA,EAAArF,gBAAA,EAAAsF,kBAAA,EAAAC,GAAA,EAAAC,OAAA,EAAAC,IAAA,EAAAC,EAAA,EAAAC,GAAA;MAAA,OAAAlJ,YAAA,GAAA8D,CAAA,WAAAqF,SAAA;QAAA,kBAAAA,SAAA,CAAAC,CAAA,GAAAD,SAAA,CAAApF,CAAA;UAAA;YAAuB2E,IAAI,GAAAD,KAAA,CAAJC,IAAI,EAAEpG,MAAM,GAAAmG,KAAA,CAANnG,MAAM,EAAEqG,WAAW,GAAAF,KAAA,CAAXE,WAAW;YAAAQ,SAAA,CAAApF,CAAA;YAAA,OACT,IAAI,CAACd,WAAW,CAAC;cAAEX,MAAM,EAAEA,MAAM,WAANA,MAAM,GAAI,IAAI,CAAC9D,MAAM,CAAC8D;aAAQ,CAAC;UAAA;YAAAsG,sBAAA,GAAAO,SAAA,CAAAlH,CAAA;YAArFsB,gBAAgB,GAAAqF,sBAAA,CAAhBrF,gBAAgB;YAAA4F,SAAA,CAAAC,CAAA;YAAA,KAGhBT,WAAW;cAAAQ,SAAA,CAAApF,CAAA;cAAA;;YAAAoF,SAAA,CAAApF,CAAA;YAAA,OACiBsF,OAAO,CAACC,GAAG,CAAC,CACpC/F,gBAAgB,CAAC+E,cAAc,CAACI,IAAI,CAAC,EACrCnF,gBAAgB,CAACgG,qBAAqB,CAACb,IAAI,CAAC,CAC/C,CAAC;UAAA;YAAAG,kBAAA,GAAAM,SAAA,CAAAlH,CAAA;YAHKgH,GAAE,GAAAJ,kBAAA;YAAEE,OAAO,GAAAF,kBAAA;YAKZG,IAAI,GAAGC,GAAE,YAAFA,GAAE,CAAEnB,IAAI,IAAImB,GAAE,CAACnB,IAAI,KAAK,IAAI,GACnCvF,aAAM,CAACiH,YAAY,CAACP,GAAE,CAACnB,IAAI,CAAC,GAC5B,IAAI;YAAA,OAAAqB,SAAA,CAAA7I,CAAA,IAEHQ,eAAe,CAAC;cACnB2I,WAAW,EAAER,GAAE;cACfF,OAAO,EAAPA,OAAO;cACPC,IAAI,EAAJA;aACH,CAAC;UAAA;YAAAG,SAAA,CAAApF,CAAA;YAAA,OAGWR,gBAAgB,CAAC+E,cAAc,CAACI,IAAI,CAAC;UAAA;YAAhDO,EAAE,GAAAE,SAAA,CAAAlH,CAAA;YAAA,OAAAkH,SAAA,CAAA7I,CAAA,IAEDQ,eAAe,CAAC;cACnB2I,WAAW,EAAER;aAChB,CAAC;UAAA;YAAAE,SAAA,CAAAC,CAAA;YAAAF,GAAA,GAAAC,SAAA,CAAAlH,CAAA;YAAA,MAAAiH,GAAA;UAAA;YAAA,OAAAC,SAAA,CAAA7I,CAAA;;SAAAkI,QAAA;KAIT;IAAA,SA7BKF,cAAcA,CAAAoB,GAAA;MAAA,OAAAnB,eAAA,CAAA9H,KAAA,OAAAC,SAAA;;IAAA,OAAd4H,cAAc;;EAAAnJ,MAAA,CA+BdwK,YAAY;IAAA,IAAAC,aAAA,gBAAA7J,iBAAA,cAAAC,YAAA,GAAAC,CAAA,CAAlB,SAAA4J,SAAAC,KAAA;MAAA,IAAA1G,eAAA,EAAAd,MAAA,EAAAyH,sBAAA,EAAArG,QAAA,EAAAsG,mBAAA,EAAAC,IAAA,EAAAC,MAAA,EAAAhJ,QAAA,EAAAiJ,WAAA,EAAArC,IAAA;MAAA,OAAA9H,YAAA,GAAA8D,CAAA,WAAAsG,SAAA;QAAA,kBAAAA,SAAA,CAAArG,CAAA;UAAA;YAAqBX,eAAe,GAAA0G,KAAA,CAAf1G,eAAe,EAAEd,MAAM,GAAAwH,KAAA,CAANxH,MAAM;YAAA8H,SAAA,CAAArG,CAAA;YAAA,OACb,IAAI,CAACd,WAAW,CAAC;cAAEG,eAAe,EAAfA,eAAe;cAAEd,MAAM,EAAEA,MAAM,WAANA,MAAM,GAAI,IAAI,CAAC9D,MAAM,CAAC8D;aAAS,CAAC;UAAA;YAAAyH,sBAAA,GAAAK,SAAA,CAAAnI,CAAA;YAA/FyB,QAAQ,GAAAqG,sBAAA,CAARrG,QAAQ;YAAA,KAEZA,QAAQ;cAAA0G,SAAA,CAAArG,CAAA;cAAA;;YAAAqG,SAAA,CAAArG,CAAA;YAAA,OAC4CsF,OAAO,CAACC,GAAG,CAAC,CAC5D5F,QAAQ,CAACuG,IAAI,EAAE,EACfvG,QAAQ,CAACwG,MAAM,EAAE,EACjBxG,QAAQ,CAACxC,QAAQ,EAAE,EACnBwC,QAAQ,CAACyG,WAAW,EAAE,CACzB,CAAC;UAAA;YAAAH,mBAAA,GAAAI,SAAA,CAAAnI,CAAA;YALKgI,IAAI,GAAAD,mBAAA;YAAEE,MAAM,GAAAF,mBAAA;YAAE9I,QAAQ,GAAA8I,mBAAA;YAAEG,WAAW,GAAAH,mBAAA;YAOpClC,IAAI,GAAc;cACpBmC,IAAI,EAAJA,IAAI;cACJC,MAAM,EAANA,MAAM;cACNhJ,QAAQ,EAARA,QAAQ;cACRiJ,WAAW,EAAEzI,YAAY,CAACyI,WAAW,CAACvI,QAAQ,EAAE,EAAEV,QAAQ,CAAC,CAACU,QAAQ;aAEvE;YAAA,OAAAwI,SAAA,CAAA9J,CAAA,IACMQ,eAAe,CAAA7B,QAAA,KAAM6I,IAAI,CAAE,CAAC;UAAA;YAAA,MAGjC,IAAIrI,KAAK,CAAC,oBAAoB,CAAC;UAAA;YAAA,OAAA2K,SAAA,CAAA9J,CAAA;;SAAAuJ,QAAA;KACxC;IAAA,SAtBKF,YAAYA,CAAAU,GAAA;MAAA,OAAAT,aAAA,CAAAnJ,KAAA,OAAAC,SAAA;;IAAA,OAAZiJ,YAAY;;EAAAxK,MAAA,CAwBZmL,iBAAiB;IAAA,IAAAC,kBAAA,gBAAAxK,iBAAA,cAAAC,YAAA,GAAAC,CAAA,CAAvB,SAAAuK,SAAwBzJ,IAA+B;MAAA,IAAA0J,YAAA;MAAA,IAAAC,sBAAA,EAAAhH,QAAA,EAAAF,UAAA,EAAAC,KAAA,EAAAwF,EAAA,EAAA0B,SAAA,EAAAC,GAAA;MAAA,OAAA5K,YAAA,GAAA8D,CAAA,WAAA+G,SAAA;QAAA,kBAAAA,SAAA,CAAAzB,CAAA,GAAAyB,SAAA,CAAA9G,CAAA;UAAA;YAAA8G,SAAA,CAAA9G,CAAA;YAAA,OACL,IAAI,CAACd,WAAW,CAAC;cAC3DX,MAAM,GAAAmI,YAAA,GAAE1J,IAAI,CAACuB,MAAM,YAAAmI,YAAA,GAAI,IAAI,CAACjM,MAAM,CAAC8D,MAAM;cACzCc,eAAe,EAAErC,IAAI,CAACqC,eAAe;cACrCE,GAAG,EAAEvC,IAAI,CAAC+J,WAAW;cACrBzH,UAAU,EAAEtC,IAAI,CAACsC;aACpB,CAAC;UAAA;YAAAqH,sBAAA,GAAAG,SAAA,CAAA5I,CAAA;YALMyB,QAAQ,GAAAgH,sBAAA,CAARhH,QAAQ;YAAEF,UAAU,GAAAkH,sBAAA,CAAVlH,UAAU;YAAEC,KAAK,GAAAiH,sBAAA,CAALjH,KAAK;YAAAoH,SAAA,CAAAzB,CAAA;YAS3BuB,SAAS,GAAG,EAAS;YAEzB,IAAI5J,IAAI,CAACgK,UAAU,KAAK,MAAM,EAAE;cAC5BJ,SAAS,GAAG,EAAE;aACjB,MAAM,IAAI5J,IAAI,CAACgK,UAAU,KAAK,OAAO,EAAE;cACpCJ,SAAS,GAAG;gBACR/C,QAAQ,EAAE7G,IAAI,CAAC6G,QAAQ,GACjBzF,SAAS,CAACpB,IAAI,CAAC6G,QAAQ,CAAC,GACxBpE,UAAU,oBAAVA,UAAU,CAAEoE,QAAQ;gBAE1BnE,KAAK,EAAE1C,IAAI,CAAC0C,KAAK,IAAIA,KAAK;gBAC1BmD,KAAK,EAAE7F,IAAI,CAAC6F,KAAK,GAAG5E,UAAU,CAACjB,IAAI,CAAC6F,KAAK,CAAChF,QAAQ,EAAE,CAAC,GAAG;eAC3D;cAED,IAAIb,IAAI,CAAC8F,QAAQ,EAAE;gBACf8D,SAAS,CAAC9D,QAAQ,GAAG9F,IAAI,CAAC8F,QAAQ;;;YAEzC,MAEG9F,IAAI,CAACiK,MAAM,CAACC,MAAM,GAAG,CAAC;cAAAJ,SAAA,CAAA9G,CAAA;cAAA;;YAAA8G,SAAA,CAAA9G,CAAA;YAAA,OACXL,QAAQ,oBAARA,QAAQ,CAAG3C,IAAI,CAACmK,MAAM,CAAC,CAAAzK,KAAA,CAAvBiD,QAAQ,EAAmB3C,IAAI,CAACiK,MAAM,CAAAG,MAAA,EAAER,SAAS,GAAC;UAAA;YAA7D1B,EAAE,GAAA4B,SAAA,CAAA5I,CAAA;YAAA4I,SAAA,CAAA9G,CAAA;YAAA;UAAA;YAAA8G,SAAA,CAAA9G,CAAA;YAAA,OAESL,QAAQ,oBAARA,QAAQ,CAAG3C,IAAI,CAACmK,MAAM,CAAC,CAACP,SAAS,CAAC;UAAA;YAA7C1B,EAAE,GAAA4B,SAAA,CAAA5I,CAAA;UAAA;YAAA,OAAA4I,SAAA,CAAAvK,CAAA,IAGCQ,eAAe,CAAC;cACnBgH,IAAI,EAAEmB;aACT,CAAC;UAAA;YAAA4B,SAAA,CAAAzB,CAAA;YAAAwB,GAAA,GAAAC,SAAA,CAAA5I,CAAA;YAAA,MAAA2I,GAAA;UAAA;YAAA,OAAAC,SAAA,CAAAvK,CAAA;;SAAAkK,QAAA;KAIT;IAAA,SAzCKF,iBAAiBA,CAAAc,GAAA;MAAA,OAAAb,kBAAA,CAAA9J,KAAA,OAAAC,SAAA;;IAAA,OAAjB4J,iBAAiB;;EAAAnL,MAAA,CA2CjB0I,WAAW;IAAA,IAAAwD,YAAA,gBAAAtL,iBAAA,cAAAC,YAAA,GAAAC,CAAA,CAAjB,SAAAqL,SAAAC,KAAA;MAAA,IAAAjJ,MAAA,EAAAmE,gBAAA,EAAAxF,MAAA,EAAA6G,IAAA,EAAA0D,sBAAA,EAAAjI,gBAAA,EAAAkI,oBAAA,EAAAC,qBAAA,EAAAC,OAAA,EAAArM,OAAA,EAAA2J,EAAA,EAAA2C,mBAAA,EAAAC,OAAA,EAAAhF,QAAA,EAAAe,QAAA,EAAAD,YAAA,EAAAD,oBAAA,EAAAoE,eAAA,EAAAC,SAAA,EAAAC,YAAA,EAAAC,eAAA,EAAAC,eAAA,EAAAC,eAAA,EAAAC,WAAA,EAAAC,WAAA,EAAAC,WAAA,EAAAC,OAAA,EAAAC,WAAA,EAAAC,KAAA,EAAAC,eAAA,EAAAC,aAAA,EAAAC,eAAA,EAAAC,aAAA,EAAAC,eAAA,EAAAC,aAAA,EAAAC,YAAA,EAAAC,GAAA,EAAAC,UAAA,EAAAC,UAAA,EAAAC,UAAA,EAAAC,GAAA;MAAA,OAAArN,YAAA,GAAA8D,CAAA,WAAAwJ,SAAA;QAAA,kBAAAA,SAAA,CAAAlE,CAAA,GAAAkE,SAAA,CAAAvJ,CAAA;UAAA;YAAoBzB,MAAM,GAAAiJ,KAAA,CAANjJ,MAAM,EAAEmE,gBAAgB,GAAA8E,KAAA,CAAhB9E,gBAAgB,EAAExF,MAAM,GAAAsK,KAAA,CAANtK,MAAM,EAAE6G,IAAI,GAAAyD,KAAA,CAAJzD,IAAI;YAAAwF,SAAA,CAAAvJ,CAAA;YAAA,OACnB,IAAI,CAACd,WAAW,CAAC;cAAEX,MAAM,EAAEA,MAAM,WAANA,MAAM,GAAI,IAAI,CAAC9D,MAAM,CAAC8D;aAAQ,CAAC;UAAA;YAAAkJ,sBAAA,GAAA8B,SAAA,CAAArL,CAAA;YAArFsB,gBAAgB,GAAAiI,sBAAA,CAAhBjI,gBAAgB;YAAA+J,SAAA,CAAAlE,CAAA;YAAAkE,SAAA,CAAAvJ,CAAA;YAAA,OAIER,gBAAgB,CAACgK,UAAU,EAAE;UAAA;YAA7C5B,OAAO,GAAA2B,SAAA,CAAArL,CAAA;YACP3C,OAAO,GAAGkO,MAAM,CAAC7B,OAAO,CAACrM,OAAO,CAAC;YAEjC2J,EAAE,GAAG;cACPwE,EAAE,EAAEhH,gBAAgB;cACpBG,KAAK,EAAE5E,UAAU,CAACf,MAAM,CAACW,QAAQ,EAAE,CAAC;cACpCkG,IAAI,EAAEA,IAAI,GACJvF,aAAM,CAACmL,OAAO,CAACnL,aAAM,CAACoL,WAAW,CAAC7F,IAAc,CAAC,CAAC,GAClD;aACT;YAAAwF,SAAA,CAAAvJ,CAAA;YAAA,OAEiCsF,OAAO,CAACC,GAAG,CAAC,CAC1C/F,gBAAgB,CAACS,UAAU,EAAE,EAC7BT,gBAAgB,CAACsE,WAAW,CAACoB,EAAE,CAAC,CACnC,CAAC;UAAA;YAAA2C,mBAAA,GAAA0B,SAAA,CAAArL,CAAA;YAHK4J,OAAO,GAAAD,mBAAA;YAAE/E,QAAQ,GAAA+E,mBAAA;YAKhBhE,QAAQ,GAAyCiE,OAAO,CAAxDjE,QAAQ,EAAED,YAAY,GAA2BkE,OAAO,CAA9ClE,YAAY,EAAED,oBAAoB,GAAKmE,OAAO,CAAhCnE,oBAAoB;YAE9CoE,eAAe,GAAG,SAAlBA,eAAeA,CAAI8B,IAAY,EAAEC,GAAW;cAAA,OAC7CD,IAAI,GAAGrM,MAAM,CAACuM,IAAI,CAACC,KAAK,CAACF,GAAG,GAAG,EAAE,CAAC,CAAC,GAAI,GAAG;;YAGzC9B,SAAS,GAAGpE,YAAY,KAAK,IAAI,IAAID,oBAAoB,KAAK,IAAI;YAAA,IAEnEqE,SAAS;cAAAuB,SAAA,CAAAvJ,CAAA;cAAA;;YACJiI,YAAY,GAAGzK,MAAM,CAACqG,QAAQ,WAARA,QAAQ,GAAI,EAAE,CAAC;YAErCqE,eAAe,GAAGD,YAAY;YAC9BE,eAAe,GAAIF,YAAY,GAAG,IAAI,GAAI,IAAI;YAC9CG,eAAe,GAAIH,YAAY,GAAG,IAAI,GAAI,IAAI;YAE9CkB,WAAU,GAAGrG,QAAQ,GAAGoF,eAAe;YACvCkB,WAAU,GAAGtG,QAAQ,GAAGqF,eAAe;YACvCkB,WAAU,GAAGvG,QAAQ,GAAGsF,eAAe;YAAA,OAAAmB,SAAA,CAAAhN,CAAA,IAEtCQ,eAAe,CAAC;cACnBxB,OAAO,EAAPA,OAAO;cACPuH,QAAQ,EAAEA,QAAQ,CAACjF,QAAQ,EAAE;cAC7BgG,QAAQ,EAAEoE,YAAY,CAACpK,QAAQ,EAAE;cACjCoM,YAAY,EAAE5L,UAAU,CAAC4J,YAAY,CAAC;cACtCjE,KAAK,EAAE,QAAQ;cACfC,IAAI,EAAE;gBACFC,OAAO,EAAE/F,WAAW,CAACgL,WAAU,CAAC;gBAChCe,OAAO,EAAE/L,WAAW,CAACiL,WAAU,CAAC;gBAChCe,OAAO,EAAEhM,WAAW,CAACkL,WAAU;;aAEtC,CAAC;UAAA;YAAAE,SAAA,CAAAvJ,CAAA;YAAA,OAMcR,gBAAgB,CAAC4K,QAAQ,CAAC,QAAQ,CAAC;UAAA;YAAjD1B,KAAK,GAAAa,SAAA,CAAArL,CAAA;YAEXsK,OAAO,GAAGhL,MAAM,EAAAkK,oBAAA,GAACgB,KAAM,CAAC2B,aAAa,YAAA3C,oBAAA,GAAI,EAAE,CAAC;YAC5Ce,WAAW,GAAGjL,MAAM,EAAAmK,qBAAA,GAChBG,OAAO,CAACnE,oBAAoB,YAAAgE,qBAAA,GAAIvJ,SAAS,CAACM,gBAAgB,CAAC,CAC9D;YAEKiK,eAAe,GAAGF,WAAW;YAC7BG,aAAa,GAAGJ,OAAO,GAAGG,eAAe;YAEzCE,eAAe,GAAGd,eAAe,CAACU,WAAW,EAAE,GAAG,CAAC;YACnDK,aAAa,GAAGf,eAAe,CAACS,OAAO,EAAE,GAAG,CAAC,GAAGK,eAAe;YAE/DE,eAAe,GAAGhB,eAAe,CAACU,WAAW,EAAE,GAAG,CAAC;YACnDO,aAAa,GAAGjB,eAAe,CAACS,OAAO,EAAE,GAAG,CAAC,GAAGO,eAAe;YAE/DE,YAAY,GAAG,IAAI,GAAG,WAAc;YACpCC,GAAG,GAAG,SAANA,GAAGA,CAAIhL,CAAS;cAAA,OAAMA,CAAC,GAAG+K,YAAY,GAAGA,YAAY,GAAG/K,CAAC;aAAC;YAE1DiL,UAAU,GAAGrG,QAAQ,GAAGoG,GAAG,CAACN,aAAa,CAAC;YAC1CQ,UAAU,GAAGtG,QAAQ,GAAGoG,GAAG,CAACJ,aAAa,CAAC;YAC1CO,UAAU,GAAGvG,QAAQ,GAAGoG,GAAG,CAACF,aAAa,CAAC;YAAA,OAAAO,SAAA,CAAAhN,CAAA,IAEzCQ,eAAe,CAAC;cACnBxB,OAAO,EAAPA,OAAO;cACPuH,QAAQ,EAAEA,QAAQ,CAACjF,QAAQ,EAAE;cAC7ByM,WAAW,EAAEjM,UAAU,CAACmK,OAAO,CAAC;cAChC+B,eAAe,EAAElM,UAAU,CAACoK,WAAW,CAAC;cACxCzE,KAAK,EAAE,SAAS;cAChBC,IAAI,EAAE;gBACFC,OAAO,EAAE;kBACLsG,OAAO,EAAErM,WAAW,CAACgL,UAAU,CAAC;kBAChCxF,oBAAoB,EAAEgF,eAAe,CAAC9K,QAAQ,EAAE;kBAChD+F,YAAY,EAAEgF,aAAa,CAAC/K,QAAQ;iBACvC;gBACDqM,OAAO,EAAE;kBACLM,OAAO,EAAErM,WAAW,CAACiL,UAAU,CAAC;kBAChCzF,oBAAoB,EAAEkF,eAAe,CAAChL,QAAQ,EAAE;kBAChD+F,YAAY,EAAEkF,aAAa,CAACjL,QAAQ;iBACvC;gBACDsM,OAAO,EAAE;kBACLK,OAAO,EAAErM,WAAW,CAACkL,UAAU,CAAC;kBAChC1F,oBAAoB,EAAEoF,eAAe,CAAClL,QAAQ,EAAE;kBAChD+F,YAAY,EAAEoF,aAAa,CAACnL,QAAQ;;;aAG/C,CAAC;UAAA;YAAA0L,SAAA,CAAAlE,CAAA;YAAAiE,GAAA,GAAAC,SAAA,CAAArL,CAAA;YAAA,MAAAoL,GAAA;UAAA;YAAA,OAAAC,SAAA,CAAAhN,CAAA;;SAAAgL,QAAA;KAKT;IAAA,SA5GKzD,WAAWA,CAAA2G,GAAA;MAAA,OAAAnD,YAAA,CAAA5K,KAAA,OAAAC,SAAA;;IAAA,OAAXmH,WAAW;;EAAA1I,MAAA,CA8GH+I,eAAe;IAAA,IAAAuG,gBAAA,gBAAA1O,iBAAA,cAAAC,YAAA,GAAAC,CAAA,CAArB,SAAAyO,SAAAC,KAAA;MAAA,IAAA5N,IAAA,EAAA0C,KAAA,EAAAD,UAAA,EAAAiD,gBAAA,EAAAG,KAAA,EAAAxD,eAAA,EAAAwL,MAAA,EAAAC,GAAA,EAAAC,GAAA,EAAAC,GAAA,EAAAC,GAAA,EAAAC,GAAA,EAAAC,IAAA,EAAAC,IAAA,EAAAC,IAAA;MAAA,OAAApP,YAAA,GAAA8D,CAAA,WAAAuL,SAAA;QAAA,kBAAAA,SAAA,CAAAtL,CAAA;UAAA;YAAwBhD,IAAI,GAAA4N,KAAA,CAAJ5N,IAAI,EAAE0C,KAAK,GAAAkL,KAAA,CAALlL,KAAK,EAAED,UAAU,GAAAmL,KAAA,CAAVnL,UAAU,EAAEiD,gBAAgB,GAAAkI,KAAA,CAAhBlI,gBAAgB,EAAEG,KAAK,GAAA+H,KAAA,CAAL/H,KAAK,EAAExD,eAAe,GAAAuL,KAAA,CAAfvL,eAAe;YAAAyL,GAAA,GAAA5P,QAAA;YAAA6P,GAAA,GAErFrI,gBAAgB,CAACxB,OAAO;YAAA8J,GAAA,GACrB3N,mBAAS,CAACwF,KAAK,CAAChF,QAAQ,EAAE,CAAC;YAAAoN,GAAA,GAC5BjO,IAAI,CAAC+G,IAAI,GACTvF,aAAM,CAACmL,OAAO,CAACnL,aAAM,CAACoL,WAAW,CAAC5M,IAAI,CAAC+G,IAAc,CAAC,CAAC,GACvD,IAAI;YAAAmH,GAAA,GACHlO,IAAI,CAAC0C,KAAK;YAAA,IAAAwL,GAAA;cAAAI,SAAA,CAAAtL,CAAA;cAAA;;YAAAsL,SAAA,CAAAtL,CAAA;YAAA,OAAWN,KAAK;UAAA;YAAAwL,GAAA,GAAAI,SAAA,CAAApN,CAAA;UAAA;YAAAiN,IAAA,GAAAD,GAAA;YAAAE,IAAA,GACvBpO,IAAI,CAAC8F,QAAQ,GAAGzF,mBAAS,CAACL,IAAI,CAAC8F,QAAQ,CAAC,GAAGzF,mBAAS,CAAC,KAAK,CAAC;YAAAgO,IAAA,GAC5D5B,MAAM,CAAC,IAAI,CAAC8B,YAAY,CAAC7Q,EAAE,CAAC;YARnCmQ,MAAM,GAAAC,GAAA;cACRpB,EAAE,EAAAqB,GAAA;cACFlI,KAAK,EAAAmI,GAAA;cACLjH,IAAI,EAAAkH,GAAA;cAGJvL,KAAK,EAAAyL,IAAA;cACLrI,QAAQ,EAAAsI,IAAA;cACR7P,OAAO,EAAA8P;eACHhM,eAAe,GAAG;cAAEA,eAAe,EAAfA;aAAiB,GAAG,EAAE;YAAA,KAI9CrC,IAAI,CAAC6G,QAAQ;cAAAyH,SAAA,CAAAtL,CAAA;cAAA;;YAAA,OAAAsL,SAAA,CAAA/O,CAAA,IACN;cACH+C,UAAU,EAAEtC,IAAI,CAACsC,UAAU;cAC3ByE,IAAI,EAAA7I,QAAA,KACG2P,MAAM;gBACThH,QAAQ,EAAExG,mBAAS,CAACe,SAAS,CAACpB,IAAI,CAAC6G,QAAQ,CAAC,CAAChG,QAAQ,EAAE,CAAC;gBACxD2N,IAAI,EAAE;;aAEb;UAAA;YAAA,OAAAF,SAAA,CAAA/O,CAAA,IAGE;cACH+C,UAAU,EAAEtC,IAAI,CAACsC,UAAU;cAC3ByE,IAAI,EAAA7I,QAAA,KACG2P,MAAM;gBACTW,IAAI,EAAE,CAAC;gBACP7H,oBAAoB,EAAEtG,mBAAS,CAC3BL,IAAI,CAAC2G,oBAAoB,GACnB3G,IAAI,CAAC2G,oBAAoB,GACzBlE,UAAU,CAACkE,oBAAqB,CAAC9F,QAAQ,EAAE,CACpD;gBACD+F,YAAY,EAAEvG,mBAAS,CACnBL,IAAI,CAAC4G,YAAY,GACX5G,IAAI,CAAC4G,YAAY,GACjBnE,UAAU,CAACmE,YAAa,CAAC/F,QAAQ,EAAE;;aAGpD;;SAAA8M,QAAA;KACJ;IAAA,SA1CaxG,eAAeA,CAAAsH,GAAA;MAAA,OAAAf,gBAAA,CAAAhO,KAAA,OAAAC,SAAA;;IAAA,OAAfwH,eAAe;;EAAA,OAAAxF,SAAA;AAAA,EA7XFhD,UAAU;;ACVzC,IAAMoB,iBAAe,GAAG,SAAlBA,eAAeA,CAAIC,IAAe;EAAA,OAAgBA,IAAI;AAAA;AAE5D,IAAa0O,SAAU,0BAAA9M,WAAA;EAInB,SAAA8M,UAAYjR,MAAiB;;IACzBoE,KAAA,GAAAD,WAAA,CAAAE,IAAA,OAAMrE,MAAM,CAAC;IACboE,KAAA,CAAKE,MAAM,GAAGF,KAAA,CAAKpE,MAAM,CAACkR,OAAO,KAAK,SAAS,GAAG,IAAIC,sBAAU,EAAE,GAAG,IAAIC,qBAAa,EAAE;IAAC,OAAAhN,KAAA;;EAC5FI,cAAA,CAAAyM,SAAA,EAAA9M,WAAA;EAAA,IAAAxD,MAAA,GAAAsQ,SAAA,CAAArQ,SAAA;EAAAD,MAAA,CAEKoF,cAAc;IAAA,IAAAC,eAAA,gBAAAzE,iBAAA,cAAAC,YAAA,GAAAC,CAAA,CAApB,SAAAC,QAAAiD,IAAA;MAAA,IAAAwB,QAAA,EAAAC,cAAA,EAAAC,MAAA,EAAAC,WAAA,EAAAC,gBAAA,EAAAC,qBAAA,EAAAC,OAAA,EAAAC,SAAA,EAAArB,EAAA;MAAA,OAAA7D,YAAA,GAAA8D,CAAA,WAAAzD,QAAA;QAAA,kBAAAA,QAAA,CAAA0D,CAAA;UAAA;YAAuBY,QAAQ,GAAAxB,IAAA,CAARwB,QAAQ,EAAEC,cAAc,GAAAzB,IAAA,CAAdyB,cAAc;YACrCC,MAAM,GAAGD,cAAc,IAAI,iBAAiB;YAAA,MAC9BD,QAAQ;cAAAtE,QAAA,CAAA0D,CAAA;cAAA;;YAAAF,EAAA,GAARc,QAAQ;YAAAtE,QAAA,CAAA0D,CAAA;YAAA;UAAA;YAAA1D,QAAA,CAAA0D,CAAA;YAAA,OAAW,IAAI,CAAClE,gBAAgB,CAAC,EAAE,CAAC;UAAA;YAAAgE,EAAA,GAAAxD,QAAA,CAAA4B,CAAA;UAAA;YAA1D6C,WAAW,GAAAjB,EAAA;YAAAxD,QAAA,CAAA0D,CAAA;YAAA,OAEc,IAAI,CAACjB,MAAM,CAACuC,oBAAoB,CAAC;cAAEV,QAAQ,EAAEG,WAAW;cAAED,MAAM,EAANA;aAAQ,CAAC;UAAA;YAA5FE,gBAAgB,GAAA1E,QAAA,CAAA4B,CAAA;YAAA5B,QAAA,CAAA0D,CAAA;YAAA,OACe,IAAI,CAACjB,MAAM,CAACwC,aAAa,CAAC;cAAEjC,UAAU,EAAE0B;aAAkB,CAAC;UAAA;YAAAC,qBAAA,GAAA3E,QAAA,CAAA4B,CAAA;YAAxFgD,OAAO,GAAAD,qBAAA,CAAPC,OAAO;YAAEC,SAAS,GAAAF,qBAAA,CAATE,SAAS;YAAA,OAAA7E,QAAA,CAAAC,CAAA,IAEnBQ,iBAAe,CAAC;cAAEmE,OAAO,EAAPA,OAAO;cAAEC,SAAS,EAATA,SAAS;cAAE7B,UAAU,EAAE0B;aAAkB,CAAC;;SAAA7E,OAAA;KAC/E;IAAA,SARKqE,cAAcA,CAAA/D,EAAA;MAAA,OAAAgE,eAAA,CAAA/D,KAAA,OAAAC,SAAA;;IAAA,OAAd6D,cAAc;;EAAA,OAAAkL,SAAA;AAAA,EATO/P,UAAU;;;ACPzC,AAaA,IAAM2C,UAAQ,GAAG,SAAXA,QAAQA,CAAIC,MAAe;EAAA,OAAK,IAAIuN,qBAAqB,CAACvN,MAAgB,CAAC;AAAA;AAEjF,IAAawN,cAAc,gBAAGC,mBAAmB,CAAC,cAC9CA,iBAAiB,CAAC,EAAE,EAAE,MAAM,CAAC,eAC7BA,iBAAiB,CAAC,EAAE,EAAE,OAAO,CAAC,eAC9BA,iBAAiB,CAAC,QAAQ,CAAC,eAC3BA,iBAAiB,CAAC,EAAE,CAAC,CACxB,CAAC;AAEF,IAAaC,WAAW,GAAwB;EAC5C,cAAc,EAAEC,oBAAG,CAACC,WAAW;EAC/B,SAAS,EAAED,oBAAG,CAACE,OAAO;EACtB,QAAQ,EAAEF,oBAAG,CAACG;CACjB;AAED,IAAaC,SAAU,0BAAA1N,WAAA;EAInB,SAAA0N,UAAY7R,MAAiB;;IACzBoE,KAAA,GAAAD,WAAA,CAAAE,IAAA,OAAMrE,MAAM,CAAC;IACboE,KAAA,CAAKE,MAAM,GAAG,IAAIwN,oBAAY,EAAE;IAAC,OAAA1N,KAAA;;EACpCI,cAAA,CAAAqN,SAAA,EAAA1N,WAAA;EAAA,IAAAxD,MAAA,GAAAkR,SAAA,CAAAjR,SAAA;EAAAD,MAAA,CAEKoF,cAAc;IAAA,IAAAC,eAAA,gBAAAzE,iBAAA,cAAAC,YAAA,GAAAC,CAAA,CAApB,SAAAC,QAAAiD,IAAA;MAAA,IAAAwB,QAAA,EAAAC,cAAA,EAAAC,MAAA,EAAAC,WAAA,EAAAC,gBAAA,EAAAC,qBAAA,EAAAC,OAAA,EAAAC,SAAA,EAAArB,EAAA;MAAA,OAAA7D,YAAA,GAAA8D,CAAA,WAAAzD,QAAA;QAAA,kBAAAA,QAAA,CAAA0D,CAAA;UAAA;YAAuBY,QAAQ,GAAAxB,IAAA,CAARwB,QAAQ,EAAEC,cAAc,GAAAzB,IAAA,CAAdyB,cAAc;YACrCC,MAAM,GAAGD,cAAc,IAAI,kBAAkB;YAAA,MAC/BD,QAAQ;cAAAtE,QAAA,CAAA0D,CAAA;cAAA;;YAAAF,EAAA,GAARc,QAAQ;YAAAtE,QAAA,CAAA0D,CAAA;YAAA;UAAA;YAAA1D,QAAA,CAAA0D,CAAA;YAAA,OAAW,IAAI,CAAClE,gBAAgB,CAAC,EAAE,CAAC;UAAA;YAAAgE,EAAA,GAAAxD,QAAA,CAAA4B,CAAA;UAAA;YAA1D6C,WAAW,GAAAjB,EAAA;YAAAxD,QAAA,CAAA0D,CAAA;YAAA,OAEc,IAAI,CAACjB,MAAM,CAACuC,oBAAoB,CAAC;cAAEV,QAAQ,EAAEG,WAAW;cAAED,MAAM,EAANA;aAAQ,CAAC;UAAA;YAA5FE,gBAAgB,GAAA1E,QAAA,CAAA4B,CAAA;YAAA5B,QAAA,CAAA0D,CAAA;YAAA,OACe,IAAI,CAACjB,MAAM,CAACwC,aAAa,CAAC;cAAEjC,UAAU,EAAE0B;aAAkB,CAAC;UAAA;YAAAC,qBAAA,GAAA3E,QAAA,CAAA4B,CAAA;YAAxFgD,OAAO,GAAAD,qBAAA,CAAPC,OAAO;YAAEC,SAAS,GAAAF,qBAAA,CAATE,SAAS;YAAA,OAAA7E,QAAA,CAAAC,CAAA,IAEnBQ,eAAe,CAAC;cAAEmE,OAAO,EAAPA,OAAO;cAAEC,SAAS,EAATA,SAAS;cAAE7B,UAAU,EAAE0B;aAAkB,CAAC;;SAAA7E,OAAA;KAC/E;IAAA,SARKqE,cAAcA,CAAA/D,EAAA;MAAA,OAAAgE,eAAA,CAAA/D,KAAA,OAAAC,SAAA;;IAAA,OAAd6D,cAAc;;EAAApF,MAAA,CAUdqG,UAAU;IAAA,IAAAC,WAAA,gBAAA1F,iBAAA,cAAAC,YAAA,GAAAC,CAAA,CAAhB,SAAAwE,SAAAC,KAAA;MAAA,IAAApC,MAAA,EAAAc,eAAA,EAAA6B,OAAA,EAAAsL,UAAA,EAAA9J,gBAAA,EAAAvB,SAAA,EAAAsL,UAAA,EAAAC,mBAAA,EAAAC,WAAA,EAAAC,UAAA,EAAA7K,OAAA,EAAAX,GAAA;MAAA,OAAAnF,YAAA,GAAA8D,CAAA,WAAAsB,SAAA;QAAA,kBAAAA,SAAA,CAAAgE,CAAA,GAAAhE,SAAA,CAAArB,CAAA;UAAA;YAAmBzB,MAAM,GAAAoC,KAAA,CAANpC,MAAM,EAAEc,eAAe,GAAAsB,KAAA,CAAftB,eAAe,EAAE6B,OAAO,GAAAP,KAAA,CAAPO,OAAO;YACzCsL,UAAU,GAAGlO,UAAQ,CAACC,MAAM,WAANA,MAAM,GAAI,IAAI,CAAC9D,MAAM,CAAC8D,MAAM,CAAC;YAAA8C,SAAA,CAAAgE,CAAA;YAAAhE,SAAA,CAAArB,CAAA;YAAA,OAEtB,IAAI,CAACjB,MAAM,CAAC0E,YAAY,CAAC;cAAEvC,OAAO,EAAPA;aAAS,CAAC;UAAA;YAA9DwB,gBAAgB,GAAArB,SAAA,CAAAnD,CAAA;YAAA,IACjBwE,gBAAgB,CAACgB,OAAO;cAAArC,SAAA,CAAArB,CAAA;cAAA;;YAAA,MAAQ,IAAItE,KAAK,CAAC,mBAAmB,CAAC;UAAA;YAE7DyF,SAAS,GAAG,IAAI2K,oBAAoB,CAACpJ,gBAAgB,CAACxB,OAAO,CAAC;YAAA,KAChE7B,eAAe;cAAAgC,SAAA,CAAArB,CAAA;cAAA;;YACTyM,UAAU,GAAG,IAAIX,oBAAoB,CAACzM,eAAe,CAAC;YAC5DgC,SAAA,CAAArB,CAAA;YAAA,OACkC6M,kCAAyB,CAACJ,UAAU,EAAEtL,SAAS,CAAC;UAAA;YAA5EuL,mBAAmB,GAAArL,SAAA,CAAAnD,CAAA;YAAAmD,SAAA,CAAArB,CAAA;YAAA,OACCwM,UAAU,CAACM,cAAc,CAACJ,mBAAmB,CAAC;UAAA;YAAlEC,WAAW,GAAAtL,SAAA,CAAAnD,CAAA;YAAA,IAGZyO,WAAW;cAAAtL,SAAA,CAAArB,CAAA;cAAA;;YAAA,OAAAqB,SAAA,CAAA9E,CAAA,IACLQ,eAAe,CAAC;cACnBgF,OAAO,EAAE;aACZ,CAAC;UAAA;YAAAV,SAAA,CAAArB,CAAA;YAAA,OAGmBwM,UAAU,CAACO,sBAAsB,CAACL,mBAAmB,CAAC;UAAA;YAAzEE,UAAU,GAAAvL,SAAA,CAAAnD,CAAA;YAAA,OAAAmD,SAAA,CAAA9E,CAAA,IACTQ,eAAe,CAAC;cACnBgF,OAAO,EAAEpE,YAAY,CAACiP,UAAU,CAAC/J,KAAK,CAAC3F,MAAM,EAAE0P,UAAU,CAAC/J,KAAK,CAAC1F,QAAQ,CAAC;cACzE+E,WAAW,EAAE0K,UAAU,CAAC/J,KAAK,CAAC3F,MAAM;cACpCiF,QAAQ,EAAEyK,UAAU,CAAC/J,KAAK,CAAC1F;aAC9B,CAAC;UAAA;YAAAkE,SAAA,CAAArB,CAAA;YAAA,OAGgBwM,UAAU,CAAC/K,UAAU,CAACN,SAAS,CAAC;UAAA;YAAhDY,OAAO,GAAAV,SAAA,CAAAnD,CAAA;YAAA,OAAAmD,SAAA,CAAA9E,CAAA,IACNQ,eAAe,CAAC;cACnBgF,OAAO,EAAEpE,YAAY,CAACoE,OAAO,CAAClE,QAAQ,EAAE,EAAE,CAAC,CAAC;cAC5CqE,WAAW,EAAEjF,WAAW,CAAC8E,OAAO,EAAE,CAAC,CAAC;cACpCI,QAAQ,EAAE;aACb,CAAC;UAAA;YAAAd,SAAA,CAAAgE,CAAA;YAAAjE,GAAA,GAAAC,SAAA,CAAAnD,CAAA;YAAA,MAAAkD,GAAA;UAAA;YAAA,OAAAC,SAAA,CAAA9E,CAAA;;SAAAmE,QAAA;KAIT;IAAA,SArCKe,UAAUA,CAAAD,GAAA;MAAA,OAAAE,WAAA,CAAAhF,KAAA,OAAAC,SAAA;;IAAA,OAAV8E,UAAU;;EAAArG,MAAA,CAuCViH,QAAQ;IAAA,IAAAC,SAAA,gBAAAtG,iBAAA,cAAAC,YAAA,GAAAC,CAAA,CAAd,SAAAyF,SAAAC,KAAA;MAAA,IAAAtC,UAAA,EAAAD,eAAA,EAAAd,MAAA,EAAAvB,IAAA,EAAAwP,UAAA,EAAAQ,aAAA,EAAAtK,gBAAA,EAAAuK,WAAA,EAAAC,qBAAA,EAAAC,gBAAA,EAAAC,gBAAA,EAAAC,qBAAA,EAAAC,SAAA,EAAAC,YAAA,EAAAd,UAAA,EAAAe,UAAA,EAAAC,eAAA,EAAAC,gBAAA,EAAAC,qBAAA,EAAAxQ,QAAA,EAAAyQ,YAAA,EAAAC,eAAA,EAAAC,MAAA,EAAAC,gBAAA,EAAAC,eAAA,EAAAC,eAAA,EAAAC,cAAA,EAAAjH,MAAA,EAAAkH,SAAA,EAAAC,MAAA,EAAAC,IAAA,EAAAC,QAAA,EAAAC,SAAA,EAAApL,QAAA,EAAAqL,KAAA,EAAApL,SAAA,EAAAC,AAAAwD,GAAA;MAAA,OAAA5K,YAAA,GAAA8D,CAAA,WAAAiC,SAAA;QAAA,kBAAAA,SAAA,CAAAqD,CAAA,GAAArD,SAAA,CAAAhC,CAAA;UAAA;YAAiBV,UAAU,GAAAsC,KAAA,CAAVtC,UAAU,EAAED,eAAe,GAAAuC,KAAA,CAAfvC,eAAe,EAAEd,MAAM,GAAAqD,KAAA,CAANrD,MAAM,EAAKvB,IAAI,gBAAAuG,6BAAA,CAAA3B,KAAA,EAAA4B,WAAA;YACnDgJ,UAAU,GAAGlO,UAAQ,CAACC,MAAM,WAANA,MAAM,GAAI,IAAI,CAAC9D,MAAM,CAAC8D,MAAM,CAAC;YAAAyD,SAAA,CAAAqD,CAAA;YAAArD,SAAA,CAAAhC,CAAA;YAAA,OAItB,IAAI,CAACjB,MAAM,CAAC0E,YAAY,CAAC;cAAEvC,OAAO,EAAElE,IAAI,CAAC0F;aAAkB,CAAC;UAAA;YAArFA,gBAAgB,GAAAV,SAAA,CAAA9D,CAAA;YAAA,IACjBwE,gBAAgB,CAACgB,OAAO;cAAA1B,SAAA,CAAAhC,CAAA;cAAA;;YAAA,MAAQ,IAAItE,KAAK,CAAC,mBAAmB,CAAC;UAAA;YAAAsG,SAAA,CAAAhC,CAAA;YAAA,OAGzC,IAAI,CAACjB,MAAM,CAACwC,aAAa,CAAC;cAAEjC,UAAU,EAAVA;aAAY,CAAC;UAAA;YAA7D2N,WAAW,GAAAjL,SAAA,CAAA9D,CAAA;YAAA8D,SAAA,CAAAhC,CAAA;YAAA,OAGkC,IAAI,CAACyO,kBAAkB,CAACjC,UAAU,CAAC;UAAA;YAAAU,qBAAA,GAAAlL,SAAA,CAAA9D,CAAA;YAAhFiP,gBAAgB,GAAAD,qBAAA,CAAhBC,gBAAgB;YAAEC,gBAAgB,GAAAF,qBAAA,CAAhBE,gBAAgB;YACxC,IAAIpQ,IAAI,CAAC8F,QAAQ,EAAEqK,gBAAgB,GAAGnQ,IAAI,CAAC8F,QAAQ;YACnD,IAAI9F,IAAI,CAAC6G,QAAQ,EAAEuJ,gBAAgB,GAAGsB,QAAQ,CAAC1R,IAAI,CAAC6G,QAAe,EAAE,EAAE,CAAC;;YAExE7B,SAAA,CAAAhC,CAAA;YAAA,OAC4BwM,UAAU,CAACmC,kBAAkB,EAAE;UAAA;YAAAtB,qBAAA,GAAArL,SAAA,CAAA9D,CAAA;YAAnDoP,SAAS,GAAAD,qBAAA,CAATC,SAAS;YAAA,KAGbjO,eAAe;cAAA2C,SAAA,CAAAhC,CAAA;cAAA;;YACTyM,UAAU,GAAG,IAAIX,oBAAoB,CAACzM,eAAe,CAAC;YACtDmO,UAAU,GAAG,IAAI1B,oBAAoB,CAACmB,WAAW,CAAC/L,OAAO,CAAC;YAC1DuM,eAAe,GAAG,IAAI3B,oBAAoB,CAACpJ,gBAAgB,CAACxB,OAAO,CAAC;YAE1Ec,SAAA,CAAAhC,CAAA;YAAA,OAC+B6M,kCAAyB,CAACJ,UAAU,EAAEe,UAAU,CAAC;UAAA;YAA1EE,gBAAgB,GAAA1L,SAAA,CAAA9D,CAAA;YAAA8D,SAAA,CAAAhC,CAAA;YAAA,OACc6M,kCAAyB,CAACJ,UAAU,EAAEgB,eAAe,CAAC;UAAA;YAApFE,qBAAqB,GAAA3L,SAAA,CAAA9D,CAAA;;YAGvBf,QAAQ,GAAG,CAAC;YAAA6E,SAAA,CAAAqD,CAAA;YAAArD,SAAA,CAAAhC,CAAA;YAAA,OAEewM,UAAU,CAACO,sBAAsB,CAACW,gBAAgB,CAAC;UAAA;YAAxEE,YAAY,GAAA5L,SAAA,CAAA9D,CAAA;YAClBf,QAAQ,GAAGyQ,YAAY,CAAC/K,KAAK,CAAC1F,QAAQ;YAAC6E,SAAA,CAAAhC,CAAA;YAAA;UAAA;YAAAgC,SAAA,CAAAqD,CAAA;YAAArD,SAAA,CAAAqD,CAAA;YAAArD,SAAA,CAAAhC,CAAA;YAAA,OAILwM,UAAU,CAACoC,oBAAoB,CAACnC,UAAU,CAAC;UAAA;YAAnEoB,eAAe,GAAA7L,SAAA,CAAA9D,CAAA;;;YAGrB,IAAI2P,eAAe,CAAChL,KAAK,IAAKgL,eAAe,CAAChL,KAAK,CAACkB,IAAY,CAAC+J,MAAM,EAAE;cAC/DA,MAAM,GAAID,eAAe,CAAChL,KAAK,CAACkB,IAAY,CAAC+J,MAAM;cACzD3Q,QAAQ,GAAG2Q,MAAM,CAACe,IAAI,CAAC1R,QAAQ,IAAI,CAAC;;YACvC6E,SAAA,CAAAhC,CAAA;YAAA;UAAA;YAAAgC,SAAA,CAAAqD,CAAA;YAAA,MAGK,IAAI3J,KAAK,CAAC,8CAA8C,GAAG2D,eAAe,CAAC;UAAA;YAAA2C,SAAA,CAAAhC,CAAA;YAAA,OAK1DwM,UAAU,CAACM,cAAc,CAACa,qBAAqB,CAAC;UAAA;YAAzEI,gBAAgB,GAAA/L,SAAA,CAAA9D,CAAA;YAChB8P,eAAe,GAAG,CAAC,CAACD,gBAAgB;YAGpCE,eAAe,GAAG,CAAC,CAAEjR,IAAI,CAAC8R,uBAAwB,IAAI,CAACd,eAAe;;YAItEE,cAAc,GAAG1Q,MAAM,CAACuM,IAAI,CAACgF,KAAK,CAAC,EAAAxB,YAAA,GAACvQ,IAAI,CAACE,MAAM,YAAAqQ,YAAA,GAAI,CAAC,IAAAxD,IAAA,CAAAxM,GAAA,CAAK,EAAE,EAAIJ,QAAQ,CAAC,CAAC,CAAC;YAG1E8J,MAAM,GAAG;cACX3H,UAAU,EAAVA,UAAU;cACVyE,IAAI,EAAE;gBACFyH,IAAI,EAAE,eAAe;gBACrBwD,KAAK,EAAE/B,WAAW,CAAC/L,OAAO;gBAC1B+N,IAAI,EAAEhC,WAAW,CAAC/L,OAAO;gBACzBwI,EAAE,EAAEhH,gBAAgB,CAACxB,OAAO;gBAC5BgO,SAAS,EAAE5B,SAAS;gBACpB6B,IAAI,EAAE9P,eAAe;gBACrBnC,MAAM,EAAEgR,cAAc,CAACrQ,QAAQ,EAAE;gBACjCuR,OAAO,EAAEjS,QAAQ;gBACjB2R,uBAAuB,EAAE,CAAC,CAACb,eAAe;gBAC1CoB,SAAS,EAAE,CAAC,CAACrS,IAAI,CAACqS,SAAS;gBAC3BlC,gBAAgB,EAAhBA,gBAAgB;gBAChBC,gBAAgB,EAAhBA;;aAEP;YAEDpL,SAAA,CAAAhC,CAAA;YAAA,OACuB,IAAI,CAACjB,MAAM,CAACqF,eAAe,CAAC6C,MAAM,CAAC;UAAA;YAApD9D,SAAQ,GAAAnB,SAAA,CAAA9D,CAAA;;YAERsQ,MAAK,GAAG3E,cAAI,CAACyF,UAAU,CAACnM,SAAQ,CAAC;YAAAnB,SAAA,CAAAhC,CAAA;YAAA,OACpBwM,UAAU,CAAC+C,kBAAkB,CAACf,MAAK,EAAE;cAAEgB,aAAa,EAAE,KAAK;cAAEzU,UAAU,EAAE;aAAG,CAAC;UAAA;YAA1FsT,IAAI,GAAArM,SAAA,CAAA9D,CAAA;YAAA,OAAA8D,SAAA,CAAAzF,CAAA,IACHQ,eAAe,CAAC;cAAE4H,IAAI,EAAE0J;aAAM,CAAC;UAAA;;YAIpCC,QAAQ,GAAGvE,IAAI,CAACgF,KAAK,CAAC,EAAA/B,aAAA,GAAChQ,IAAI,CAACE,MAAM,YAAA8P,aAAA,GAAI,CAAC,IAAIlB,2BAA2B,CAAC;YAEvEyC,SAAS,GAAG;cACdjP,UAAU,EAAVA,UAAU;cACVyE,IAAI,EAAE;gBACFyH,IAAI,EAAE,UAAU;gBAChBwD,KAAK,EAAE/B,WAAW,CAAC/L,OAAO;gBAC1B+N,IAAI,EAAEhC,WAAW,CAAC/L,OAAO;gBACzBwI,EAAE,EAAEhH,gBAAgB,CAACxB,OAAO;gBAC5BgO,SAAS,EAAE5B,SAAS;gBACpBpQ,MAAM,EAAEoR,QAAQ;gBAChBnB,gBAAgB,EAAhBA,gBAAgB;gBAChBC,gBAAgB,EAAhBA;;aAEP;YAAApL,SAAA,CAAAhC,CAAA;YAAA,OAEsB,IAAI,CAACjB,MAAM,CAACqF,eAAe,CAACmK,SAAS,CAAC;UAAA;YAAvDpL,QAAQ,GAAAnB,SAAA,CAAA9D,CAAA;YACRsQ,KAAK,GAAG3E,cAAI,CAACyF,UAAU,CAACnM,QAAQ,CAAC;YAAAnB,SAAA,CAAAhC,CAAA;YAAA,OACfwM,UAAU,CAAC+C,kBAAkB,CAACf,KAAK,EAAE;cACzDgB,aAAa,EAAE,KAAK;cACpBzU,UAAU,EAAE;aACf,CAAC;UAAA;YAHIqI,SAAS,GAAApB,SAAA,CAAA9D,CAAA;YAAA,OAAA8D,SAAA,CAAAzF,CAAA,IAKRQ,eAAe,CAAC;cAAE4H,IAAI,EAAEvB;aAAW,CAAC;UAAA;YAAApB,SAAA,CAAAqD,CAAA;YAAAwB,GAAA,GAAA7E,SAAA,CAAA9D,CAAA;YAAA,MAAA2I,GAAA;UAAA;YAAA,OAAA7E,SAAA,CAAAzF,CAAA;;SAAAoF,QAAA;KAIlD;IAAA,SApHKU,QAAQA,CAAAD,GAAA;MAAA,OAAAE,SAAA,CAAA5F,KAAA,OAAAC,SAAA;;IAAA,OAAR0F,QAAQ;;EAAAjH,MAAA,CAsHRwK,YAAY;IAAA,IAAAC,aAAA,gBAAA7J,iBAAA,cAAAC,YAAA,GAAAC,CAAA,CAAlB,SAAAqG,SAAAC,KAAA;MAAA,IAAAnD,eAAA,EAAAd,MAAA,EAAAkR,aAAA,EAAA9D,OAAA,EAAA+D,eAAA,EAAAC,oBAAA,EAAAC,kBAAA,EAAApD,UAAA,EAAAqD,WAAA,EAAAC,QAAA,EAAAC,UAAA,EAAA5S,QAAA,EAAA6S,SAAA,EAAAC,SAAA,EAAAC,WAAA,EAAAC,SAAA,EAAAC,oBAAA,EAAAC,GAAA,EAAAC,SAAA,EAAAC,SAAA,EAAAC,QAAA,EAAAC,KAAA,EAAA1M,IAAA,EAAAuF,GAAA,EAAAwB,GAAA;MAAA,OAAA7O,YAAA,GAAA8D,CAAA,WAAAuD,SAAA;QAAA,kBAAAA,SAAA,CAAA+B,CAAA,GAAA/B,SAAA,CAAAtD,CAAA;UAAA;YAAqBX,eAAe,GAAAmD,KAAA,CAAfnD,eAAe,EAAEd,MAAM,GAAAiE,KAAA,CAANjE,MAAM,EAAAkR,aAAA,GAAAjN,KAAA,CAAEmJ,OAAO,EAAPA,OAAO,GAAA8D,aAAA,cAAG,cAAc,GAAAA,aAAA;YAAAnM,SAAA,CAAA+B,CAAA;YAExDmH,UAAU,GAAGlO,UAAQ,CAACC,MAAM,WAANA,MAAM,GAAI,IAAI,CAAC9D,MAAM,CAAC8D,MAAM,CAAC;YACnDsR,WAAW,GAAG,IAAI/D,oBAAoB,CAACzM,eAAe,CAAC;YAE7DiE,SAAA,CAAAtD,CAAA;YAAA,OACuBwM,UAAU,CAACoC,oBAAoB,CAACiB,WAAW,CAAC;UAAA;YAA7DC,QAAQ,GAAAxM,SAAA,CAAApF,CAAA;YACR6R,UAAU,GAAID,QAAQ,aAAAJ,eAAA,GAARI,QAAQ,CAAEjN,KAAK,cAAA6M,eAAA,GAAfA,eAAA,CAAiB3L,IAAY,cAAA2L,eAAA,GAA7BA,eAAA,CAA+B5B,MAAM,qBAArC4B,eAAA,CAAuCb,IAAI;YAGzD1R,QAAQ,IAAAwS,oBAAA,GAAGI,UAAU,oBAAVA,UAAU,CAAE5S,QAAQ,YAAAwS,oBAAA,GAAI,CAAC;YACpCK,SAAS,IAAAJ,kBAAA,GAAGG,UAAU,oBAAVA,UAAU,CAAEW,MAAM,YAAAd,kBAAA,GAAI,GAAG;YAGvCK,SAAS,GAAG,EAAE;YACdC,WAAW,GAAG,EAAE;YAChBC,SAAS,GAAG,EAAE;YAAA7M,SAAA,CAAA+B,CAAA;YAGRgL,GAAG,IAAAD,oBAAA,GAAGnE,WAAW,CAACN,OAAO,CAAC,YAAAyE,oBAAA,GAAIlE,oBAAG,CAACC,WAAW;YAAA7I,SAAA,CAAAtD,CAAA;YAAA,OAC5B,IAAI2Q,kCAAiB,EAAE,CAACC,OAAO,EAAE;UAAA;YAAlDtS,SAAQ,GAAAgF,SAAA,CAAApF,CAAA;YACRqS,SAAS,GAAGjS,SAAQ,CAACuS,eAAe,CAACR,GAAG,CAAC,CAACS,OAAO,EAAE;YACnDN,QAAQ,GAAG,IAAIO,GAAG,CAACR,SAAS,CAACS,GAAG,CAAC,UAACC,IAAI;cAAA,OAAK,CAACA,IAAI,CAAC/P,OAAO,EAAE+P,IAAI,CAAC;cAAC,CAAC;YACjER,KAAK,GAAGD,QAAQ,CAAC1T,GAAG,CAAC+S,WAAW,CAACqB,QAAQ,EAAE,CAAC;YAElD,IAAIT,KAAK,EAAE;cACPR,SAAS,GAAGQ,KAAK,CAACvK,IAAI;cACtBgK,WAAW,GAAGO,KAAK,CAACtK,MAAM;cAC1BgK,SAAS,GAAGM,KAAK,CAACU,OAAO,IAAI,EAAE;;YAClC7N,SAAA,CAAAtD,CAAA;YAAA;UAAA;YAAAsD,SAAA,CAAA+B,CAAA;YAAAiE,GAAA,GAAAhG,SAAA,CAAApF,CAAA;YAEDkT,OAAO,CAACC,IAAI,CAAC,2BAA2B,EAAA/H,GAAK,CAAC;UAAC;;YAInD,IAAI,CAAC2G,SAAS,EAAEA,SAAS,GAAG5Q,eAAe,CAACiS,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK;YAC/D,IAAI,CAACpB,WAAW,EAAEA,WAAW,GAAG,KAAK;YAE/BnM,IAAI,GAAc;cACpBmC,IAAI,EAAE+J,SAAS;cACf9J,MAAM,EAAE+J,WAAW;cACnBhP,OAAO,EAAE7B,eAAe;cACxBlC,QAAQ,EAARA,QAAQ;cACRoU,OAAO,EAAEpB,SAAS,IAAI,EAAE;cACxB/J,WAAW,EAAE,CAACqD,MAAM,CAACuG,SAAS,CAAC,GAAAjG,IAAA,CAAAxM,GAAA,CAAG,EAAE,EAAIJ,QAAQ,GAAEU,QAAQ;aAC7D;YAAA,OAAAyF,SAAA,CAAA/G,CAAA,IAEMQ,eAAe,CAAA7B,QAAA,KAAM6I,IAAI,CAAE,CAAC;UAAA;YAAAT,SAAA,CAAA+B,CAAA;YAAAyF,GAAA,GAAAxH,SAAA,CAAApF,CAAA;YAAA,MAAA4M,GAAA;UAAA;YAAA,OAAAxH,SAAA,CAAA/G,CAAA;;SAAAgG,QAAA;KAI1C;IAAA,SAnDKqD,YAAYA,CAAAtB,GAAA;MAAA,OAAAuB,aAAA,CAAAnJ,KAAA,OAAAC,SAAA;;IAAA,OAAZiJ,YAAY;;EAAAxK,MAAA,CAqDJqT,kBAAkB;IAAA,IAAA+C,mBAAA,gBAAAxV,iBAAA,cAAAC,YAAA,GAAAC,CAAA,CAAxB,SAAAuI,SAAyB+H,UAAiC;MAAA,IAAAW,gBAAA,EAAAC,gBAAA,EAAAnJ,IAAA,EAAAwN,MAAA;MAAA,OAAAxV,YAAA,GAAA8D,CAAA,WAAAqF,SAAA;QAAA,kBAAAA,SAAA,CAAAC,CAAA,GAAAD,SAAA,CAAApF,CAAA;UAAA;YAC1DmN,gBAAgB,GAAG,MAAM;YACzBC,gBAAgB,GAAG,CAAC;YAAOhI,SAAA,CAAAC,CAAA;YAAAD,SAAA,CAAApF,CAAA;YAAA,OAGRwM,UAAU,CAACkF,2BAA2B,EAAE;UAAA;YAArDzN,IAAI,GAAAmB,SAAA,CAAAlH,CAAA;YACV,IAAI+F,IAAI,CAACiD,MAAM,GAAG,CAAC,EAAE;;cAEXuK,MAAM,GAAGxN,IAAI,CAAC+M,GAAG,CAAC,UAAAW,CAAC;gBAAA,OAAIA,CAAC,CAACC,iBAAiB;gBAAC,CAACC,IAAI,CAAC,UAACtV,CAAC,EAAEuV,CAAC;gBAAA,OAAKvV,CAAC,GAAGuV,CAAC;gBAAC;cACvE1E,gBAAgB,GAAGqE,MAAM,CAAC1H,IAAI,CAACC,KAAK,CAACyH,MAAM,CAACvK,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;;YAChE9B,SAAA,CAAApF,CAAA;YAAA;UAAA;YAAAoF,SAAA,CAAAC,CAAA;YAED+L,OAAO,CAACC,IAAI,CAAC,2DAA2D,CAAC;UAAC;YAAA,OAAAjM,SAAA,CAAA7I,CAAA,IAGvE;cAAE4Q,gBAAgB,EAAhBA,gBAAgB;cAAEC,gBAAgB,EAAhBA;aAAkB;;SAAA3I,QAAA;KAChD;IAAA,SAhBagK,kBAAkBA,CAAA9I,GAAA;MAAA,OAAA6L,mBAAA,CAAA9U,KAAA,OAAAC,SAAA;;IAAA,OAAlB8R,kBAAkB;;EAAA,OAAAnC,SAAA;AAAA,EArOL3Q,UAAU;;AC5BzC;AACA,AAEO,IAAMoW,cAAc,GAAG;EAC5BC,GAAG,EAAErT,SAAS;EACdsT,GAAG,EAAEvG,SAAS;EACdwG,GAAG,EAAE5F;CACN;;ICGY6F,eAAe;EAKxB,SAAAA,gBAAA/S,IAAA;QAAcwI,OAAO,GAAAxI,IAAA,CAAPwI,OAAO;MAAErM,OAAO,GAAA6D,IAAA,CAAP7D,OAAO;MAAEgD,MAAM,GAAAa,IAAA,CAANb,MAAM;IAClC,IAAI,CAACqJ,OAAO,GAAGA,OAAO;IACtB,IAAI,CAACrM,OAAO,GAAGA,OAAO;IACtB,IAAI,CAACgD,MAAM,GAAGA,MAAM;;EACvB,IAAAnD,MAAA,GAAA+W,eAAA,CAAA9W,SAAA;EAAAD,MAAA,CAEDgX,SAAS,GAAT,SAAAA,SAASA;IACL,IAAMC,WAAW,GAAGN,cAAc,CAAC,IAAI,CAACnK,OAAO,CAAC;IAEhD,IAAMnN,MAAM,GAAc;MACtBc,OAAO,EAAE,IAAI,CAACA,OAAO;MACrBgD,MAAM,EAAE,IAAI,CAACA;KAChB;IAED,OAAO,IAAI8T,WAAW,CAAC5X,MAAM,CAA6C;GAC7E;EAAA,OAAA0X,eAAA;AAAA;;;;;;;;;;"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e,t=require("@okxweb3/crypto-lib"),r=require("@okxweb3/coin-ethereum"),n=(e=require("bignumber.js"))&&"object"==typeof e&&"default"in e?e.default:e,a=require("ethers"),i=require("@okxweb3/coin-bitcoin"),o=require("@okxweb3/coin-solana"),s=require("@solana/web3.js"),c=require("@solana/spl-token"),u=require("@solana/spl-token-registry"),l=require("buffer-layout");function p(e,t,r,n,a,i,o){try{var s=e[i](o),c=s.value}catch(e){return void r(e)}s.done?t(c):Promise.resolve(c).then(n,a)}function m(e){return function(){var t=this,r=arguments;return new Promise((function(n,a){var i=e.apply(t,r);function o(e){p(i,n,a,o,s,"next",e)}function s(e){p(i,n,a,o,s,"throw",e)}o(void 0)}))}}function d(){return(d=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)({}).hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e}).apply(null,arguments)}function f(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,function(e,t){(Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e})(e,t)}(e,t)}function g(e,t){if(null==e)return{};var r={};for(var n in e)if({}.hasOwnProperty.call(e,n)){if(-1!==t.indexOf(n))continue;r[n]=e[n]}return r}function h(){var e,t,r="function"==typeof Symbol?Symbol:{},n=r.iterator||"@@iterator",a=r.toStringTag||"@@toStringTag";function i(r,n,a,i){var c=Object.create((n&&n.prototype instanceof s?n:s).prototype);return v(c,"_invoke",function(r,n,a){var i,s,c,u=0,l=a||[],p=!1,m={p:0,n:0,v:e,a:d,f:d.bind(e,4),d:function(t,r){return i=t,s=0,c=e,m.n=r,o}};function d(r,n){for(s=r,c=n,t=0;!p&&u&&!a&&t<l.length;t++){var a,i=l[t],d=m.p,f=i[2];r>3?(a=f===n)&&(c=i[(s=i[4])?5:(s=3,3)],i[4]=i[5]=e):i[0]<=d&&((a=r<2&&d<i[1])?(s=0,m.v=n,m.n=i[1]):d<f&&(a=r<3||i[0]>n||n>f)&&(i[4]=r,i[5]=n,m.n=f,s=0))}if(a||r>1)return o;throw p=!0,n}return function(a,l,f){if(u>1)throw TypeError("Generator is already running");for(p&&1===l&&d(l,f),s=l,c=f;(t=s<2?e:c)||!p;){i||(s?s<3?(s>1&&(m.n=-1),d(s,c)):m.n=c:m.v=c);try{if(u=2,i){if(s||(a="next"),t=i[a]){if(!(t=t.call(i,c)))throw TypeError("iterator result is not an object");if(!t.done)return t;c=t.value,s<2&&(s=0)}else 1===s&&(t=i.return)&&t.call(i),s<2&&(c=TypeError("The iterator does not provide a '"+a+"' method"),s=1);i=e}else if((t=(p=m.n<0)?c:r.call(n,m))!==o)break}catch(t){i=e,s=1,c=t}finally{u=1}}return{value:t,done:p}}}(r,a,i),!0),c}var o={};function s(){}function c(){}function u(){}t=Object.getPrototypeOf;var l=[][n]?t(t([][n]())):(v(t={},n,(function(){return this})),t),p=u.prototype=s.prototype=Object.create(l);function m(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,u):(e.__proto__=u,v(e,a,"GeneratorFunction")),e.prototype=Object.create(p),e}return c.prototype=u,v(p,"constructor",u),v(u,"constructor",c),c.displayName="GeneratorFunction",v(u,a,"GeneratorFunction"),v(p),v(p,a,"Generator"),v(p,n,(function(){return this})),v(p,"toString",(function(){return"[object Generator]"})),(h=function(){return{w:i,m:m}})()}function v(e,t,r,n){var a=Object.defineProperty;try{a({},"",{})}catch(e){a=0}(v=function(e,t,r,n){function i(t,r){v(e,t,(function(e){return this._invoke(t,r,e)}))}t?a?a(e,t,{value:r,enumerable:!n,configurable:!n,writable:!n}):e[t]=r:(i("next",0),i("throw",1),i("return",2))})(e,t,r,n)}function y(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,"string");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:t+""}var x=function(){function e(e){this.config=e,this.defaultNetworkConfigs={1:{id:"1",explorer:"https://etherscan.io/",defaultSlippage:"0.005",maxSlippage:"1",confirmationTimeout:6e4,maxRetries:3},11155111:{id:"11155111",explorer:"https://sepolia.etherscan.io/",defaultSlippage:"0.005",maxSlippage:"1",confirmationTimeout:6e4,maxRetries:3},56:{id:"56",explorer:"https://bscscan.com/",defaultSlippage:"0.005",maxSlippage:"1",confirmationTimeout:6e4,maxRetries:3},97:{id:"97",explorer:"https://testnet.bscscan.com/",defaultSlippage:"0.005",maxSlippage:"1",confirmationTimeout:6e4,maxRetries:3},501:{id:"501",explorer:"https://web3.okx.com/explorer/sol/tx",defaultSlippage:"0.005",maxSlippage:"1",computeUnits:3e5,confirmationTimeout:6e4,maxRetries:3},784:{id:"784",explorer:"https://web3.okx.com/explorer/sui/tx",defaultSlippage:"0.005",maxSlippage:"1",confirmationTimeout:6e4,maxRetries:3},43114:{id:"43114",explorer:"https://web3.okx.com/explorer/avax/tx",defaultSlippage:"0.005",maxSlippage:"1",confirmationTimeout:6e4,maxRetries:3},137:{id:"137",explorer:"https://web3.okx.com/explorer/polygon/tx",defaultSlippage:"0.005",maxSlippage:"1",confirmationTimeout:6e4,maxRetries:3},80002:{id:"80002",explorer:"https://amoy.polygonscan.com",defaultSlippage:"0.005",maxSlippage:"1",confirmationTimeout:6e4,maxRetries:3},146:{id:"146",explorer:"https://web3.okx.com/explorer/sonic/tx",defaultSlippage:"0.005",maxSlippage:"1",confirmationTimeout:6e4,maxRetries:3},8453:{id:"8453",explorer:"https://web3.okx.com/explorer/base/tx",defaultSlippage:"0.005",maxSlippage:"1",confirmationTimeout:6e4,maxRetries:3},196:{id:"196",explorer:"https://web3.okx.com/explorer/x-layer/tx",defaultSlippage:"0.005",maxSlippage:"1",confirmationTimeout:6e4,maxRetries:3},10:{id:"10",explorer:"https://web3.okx.com/explorer/optimism/tx",defaultSlippage:"0.005",maxSlippage:"1",confirmationTimeout:6e4,maxRetries:3},42161:{id:"42161",explorer:"https://web3.okx.com/explorer/arbitrum/tx",defaultSlippage:"0.005",maxSlippage:"1",confirmationTimeout:6e4,maxRetries:3},100:{id:"100",explorer:"https://web3.okx.com/explorer/gnosis/tx",defaultSlippage:"0.005",maxSlippage:"1",confirmationTimeout:6e4,maxRetries:3},169:{id:"169",explorer:"https://web3.okx.com/explorer/manta/tx",defaultSlippage:"0.005",maxSlippage:"1",confirmationTimeout:6e4,maxRetries:3},250:{id:"250",explorer:"https://web3.okx.com/explorer/ftm/tx",defaultSlippage:"0.005",maxSlippage:"1",confirmationTimeout:6e4,maxRetries:3},324:{id:"324",explorer:"https://web3.okx.com/explorer/zksync/tx",defaultSlippage:"0.005",maxSlippage:"1",confirmationTimeout:6e4,maxRetries:3},1101:{id:"1101",explorer:"https://web3.okx.com/explorer/polygon-zkevm/tx",defaultSlippage:"0.005",maxSlippage:"1",confirmationTimeout:6e4,maxRetries:3},5e3:{id:"5000",explorer:"https://web3.okx.com/explorer/mantle/tx",defaultSlippage:"0.005",maxSlippage:"1",confirmationTimeout:6e4,maxRetries:3},25:{id:"25",explorer:"https://cronoscan.com/tx",defaultSlippage:"0.005",maxSlippage:"1",confirmationTimeout:6e4,maxRetries:3},534352:{id:"534352",explorer:"https://web3.okx.com/explorer/scroll/tx",defaultSlippage:"0.005",maxSlippage:"1",confirmationTimeout:6e4,maxRetries:3},59144:{id:"59144",explorer:"https://web3.okx.com/explorer/linea/tx",defaultSlippage:"0.005",maxSlippage:"1",confirmationTimeout:6e4,maxRetries:3},1088:{id:"1088",explorer:"https://web3.okx.com/explorer/metis/tx",defaultSlippage:"0.005",maxSlippage:"1",confirmationTimeout:6e4,maxRetries:3},1030:{id:"1030",explorer:"https://www.confluxscan.io/tx",defaultSlippage:"0.005",maxSlippage:"1",confirmationTimeout:6e4,maxRetries:3},81457:{id:"81457",explorer:"https://web3.okx.com/explorer/blast/tx",defaultSlippage:"0.005",maxSlippage:"1",confirmationTimeout:6e4,maxRetries:3},7e3:{id:"7000",explorer:"https://explorer.zetachain.com/tx",defaultSlippage:"0.005",maxSlippage:"1",confirmationTimeout:6e4,maxRetries:3},66:{id:"66",explorer:"https://www.okx.com/web3/explorer/oktc/tx",defaultSlippage:"0.005",maxSlippage:"1",confirmationTimeout:6e4,maxRetries:3}},this.config.networks=d({},this.defaultNetworkConfigs,e.networks||{})}return e.prototype.getNetworkConfig=function(e){var t,r=null==(t=this.config.networks)?void 0:t[e];if(!r)throw new Error("Network configuration not found for chain "+e);return r},e}(),b=function(){function e(e){this.config=d({timeout:3e4},e),this.dex=new x(this.config)}var r,n;return e.prototype.generateMnemonic=function(){var e=m(h().m((function e(r){return h().w((function(e){for(;;)switch(e.n){case 0:return void 0===r&&(r=12),e.a(2,t.bip39.generateMnemonic(r/3*32))}}),e)})));return function(t){return e.apply(this,arguments)}}(),r=e,(n=[{key:"currentChain",get:function(){if(!this.config.chainId)throw new Error("chainId not set in config");return this.dex.getNetworkConfig(this.config.chainId)}}])&&function(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,y(n.key),n)}}(r.prototype,n),Object.defineProperty(r,"prototype",{writable:!1}),r}(),w=function(e,t){var r=new n(e),a=new n(10).pow(t);return BigInt(r.times(a).toFixed(0))},P=function(e,t){var r=new n(e.toString()),a=new n(10).pow(t);return r.dividedBy(a).toNumber()},k=function(e){return w(e,18)},S=function(e){return P(e,18)},T=function(e){return w(e,9)},A=function(e){return P(e,9)},F=[{constant:!0,inputs:[],name:"name",outputs:[{name:"",type:"string"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{name:"_spender",type:"address"},{name:"_value",type:"uint256"}],name:"approve",outputs:[{name:"",type:"bool"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[],name:"totalSupply",outputs:[{name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{name:"_from",type:"address"},{name:"_to",type:"address"},{name:"_value",type:"uint256"}],name:"transferFrom",outputs:[{name:"",type:"bool"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[],name:"decimals",outputs:[{name:"",type:"uint8"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[{name:"_owner",type:"address"}],name:"balanceOf",outputs:[{name:"balance",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"symbol",outputs:[{name:"",type:"string"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{name:"_to",type:"address"},{name:"_value",type:"uint256"}],name:"transfer",outputs:[{name:"",type:"bool"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[{name:"_owner",type:"address"},{name:"_spender",type:"address"}],name:"allowance",outputs:[{name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{payable:!0,stateMutability:"payable",type:"fallback"},{anonymous:!1,inputs:[{indexed:!0,name:"owner",type:"address"},{indexed:!0,name:"spender",type:"address"},{indexed:!1,name:"value",type:"uint256"}],name:"Approval",type:"event"},{anonymous:!1,inputs:[{indexed:!0,name:"from",type:"address"},{indexed:!0,name:"to",type:"address"},{indexed:!1,name:"value",type:"uint256"}],name:"Transfer",type:"event"}],U=["privateKey","contractAddress","rpcUrl"],G=function(e){return new a.ethers.JsonRpcProvider(e)},R=function(e){function n(t){var n;return(n=e.call(this,t)||this).wallet=new r.EthWallet,n}f(n,e);var i=n.prototype;return i.getContract=function(){var e=m(h().m((function e(t){var r,n,i,o,s,c,u,l,p,m;return h().w((function(e){for(;;)switch(e.n){case 0:if(r=t.contractAddress,i=t.privateKey,o=t.abi,n=t.rpcUrl){e.n=1;break}throw new Error("RPC URL is required");case 1:return s=G(null!=n?n:this.config.rpcUrl),e.n=2,s.getFeeData();case 2:if(c=e.v,!i){e.n=5;break}return p=new a.ethers.Wallet(i,s),m=s,e.n=3,p.getAddress();case 3:return e.n=4,m.getTransactionCount.call(m,e.v,"pending");case 4:u=e.v;case 5:if(!r){e.n=7;break}return l=new a.ethers.Contract(r,o||F,p||s),e.n=6,s.getCode(r);case 6:if("0x"!==e.v){e.n=7;break}throw new Error("Address is not a contract");case 7:return e.a(2,{contract:l,signer:p,gasFeeData:c,nonce:u,providerInstance:s})}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),i.generateWallet=function(){var e=m(h().m((function e(t){var r,n,a,i,o,s;return h().w((function(e){for(;;)switch(e.n){case 0:if(n=t.derivationPath||"m/44'/60'/0'/0/0",null==(r=t.mnemonic)){e.n=1;break}s=r,e.n=3;break;case 1:return e.n=2,this.generateMnemonic(12);case 2:s=e.v;case 3:return a=s,e.n=4,this.wallet.getDerivedPrivateKey({mnemonic:a,hdPath:n});case 4:return i=e.v,e.n=5,this.wallet.getNewAddress({privateKey:i});case 5:return e.a(2,{address:(o=e.v).address,publicKey:o.publicKey,privateKey:i})}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),i.getBalance=function(){var e=m(h().m((function e(t){var r,n,a,i,o,s,c,u,l;return h().w((function(e){for(;;)switch(e.n){case 0:return r=t.rpcUrl,n=t.contractAddress,a=t.address,e.n=1,this.getContract({rpcUrl:null!=r?r:this.config.rpcUrl,contractAddress:n});case 1:if(s=(i=e.v).providerInstance,!(o=i.contract)){e.n=4;break}return e.n=2,o.decimals();case 2:return c=e.v,e.n=3,o.balanceOf(a);case 3:return e.a(2,{balance:P((u=e.v).toString(),c),_rawBalance:u.toString(),_decimal:c});case 4:return e.n=5,s.getBalance(a);case 5:return e.a(2,{balance:P((l=e.v).toString(),18),_rawBalance:l.toString(),_decimal:18})}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),i.transfer=function(){var e=m(h().m((function e(t){var r,n,a,i,o,s,c,u,l,p,m,f,v,y,x,b,P,S,T;return h().w((function(e){for(;;)switch(e.n){case 0:return r=t.privateKey,n=t.contractAddress,a=t.rpcUrl,i=g(t,U),e.n=1,this.getContract({rpcUrl:null!=a?a:this.config.rpcUrl,privateKey:r,contractAddress:n});case 1:return s=(o=e.v).contract,c=o.providerInstance,u=o.gasFeeData,l=o.nonce,e.n=2,this.wallet.validAddress({address:i.recipientAddress});case 2:if((p=e.v).isValid){e.n=3;break}throw new Error("address not valid");case 3:if(!i.maxPriorityFeePerGas||!i.maxFeePerGas){e.n=4;break}if(m=BigInt(i.maxPriorityFeePerGas),!(BigInt(i.maxFeePerGas)<m)){e.n=4;break}throw new Error("maxFeePerGas must be >= maxPriorityFeePerGas");case 4:if(!i.gasPrice||!i.maxFeePerGas&&!i.maxPriorityFeePerGas){e.n=5;break}throw new Error("Cannot use gasPrice with EIP-1559 fee fields");case 5:if(!n){e.n=11;break}if(s){e.n=6;break}throw new Error("contract not valid");case 6:return e.n=7,s.decimals();case 7:if(y=e.v,f=w(i.amount.toString(),y),!i.gasLimit){e.n=8;break}T=BigInt(i.gasLimit),e.n=10;break;case 8:return e.n=9,s.transfer.estimateGas(i.recipientAddress,f);case 9:T=e.v;case 10:v=T,e.n=12;break;case 11:f=k(i.amount.toString()),v=i.gasLimit?BigInt(i.gasLimit):21000n;case 12:if(i.gasPrice||i.maxFeePerGas||i.maxPriorityFeePerGas){e.n=17;break}return e.n=13,this.estimateGas({rpcUrl:null!=a?a:this.config.rpcUrl,recipientAddress:i.recipientAddress,amount:i.amount.toString(),data:i.data});case 13:if(x=e.v,v=BigInt(x.gasLimit),"LEGACY"!==x.model){e.n=15;break}if(x.gasPrice){e.n=14;break}throw new Error("LEGACY estimate missing gasPrice");case 14:return i.gasPrice=x.gasPrice,e.a(2,this.transfer(d({privateKey:r,contractAddress:n,rpcUrl:a},i)));case 15:if(null!=(b=x.fees.regular)&&b.maxFeePerGas&&null!=b&&b.maxPriorityFeePerGas){e.n=16;break}throw new Error("EIP1559 estimate missing fee fields");case 16:i.maxFeePerGas=b.maxFeePerGas,i.maxPriorityFeePerGas=b.maxPriorityFeePerGas;case 17:return e.n=18,this.buildSignParams({args:d({},i,{privateKey:r,gasLimit:v}),nonce:l,gasFeeData:u,recipientAddress:p,value:f,contractAddress:n});case 18:return P=e.v,e.n=19,this.wallet.signTransaction(P);case 19:return S=e.v,e.n=20,c.broadcastTransaction(S);case 20:return e.a(2,d({},e.v))}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),i.getTransaction=function(){var e=m(h().m((function e(t){var r,n,i,o,s,c,u,l;return h().w((function(e){for(;;)switch(e.p=e.n){case 0:return r=t.hash,n=t.rpcUrl,i=t.withReceipt,e.n=1,this.getContract({rpcUrl:null!=n?n:this.config.rpcUrl});case 1:if(o=e.v.providerInstance,e.p=2,!i){e.n=4;break}return e.n=3,Promise.all([o.getTransaction(r),o.getTransactionReceipt(r)]);case 3:return u=(s=e.v)[1],l=null!=(c=s[0])&&c.data&&"0x"!==c.data?a.ethers.toUtf8String(c.data):null,e.a(2,{transaction:c,receipt:u,memo:l});case 4:return e.n=5,o.getTransaction(r);case 5:return e.a(2,{transaction:e.v});case 6:throw e.p=6,e.v;case 7:return e.a(2)}}),e,this,[[2,6]])})));return function(t){return e.apply(this,arguments)}}(),i.getTokenInfo=function(){var e=m(h().m((function e(t){var r,n,a,i,o,s;return h().w((function(e){for(;;)switch(e.n){case 0:return r=t.contractAddress,n=t.rpcUrl,e.n=1,this.getContract({contractAddress:r,rpcUrl:null!=n?n:this.config.rpcUrl});case 1:if(!(a=e.v.contract)){e.n=3;break}return e.n=2,Promise.all([a.name(),a.symbol(),a.decimals(),a.totalSupply()]);case 2:return s={name:(i=e.v)[0],symbol:i[1],decimals:o=i[2],totalSupply:P(i[3].toString(),o).toString()},e.a(2,d({},s));case 3:throw new Error("Contract not found");case 4:return e.a(2)}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),i.smartContractCall=function(){var e=m(h().m((function e(t){var r,n,a,i,o,s,c;return h().w((function(e){for(;;)switch(e.p=e.n){case 0:return e.n=1,this.getContract({rpcUrl:null!=(r=t.rpcUrl)?r:this.config.rpcUrl,contractAddress:t.contractAddress,abi:t.contractAbi,privateKey:t.privateKey});case 1:if(a=(n=e.v).contract,i=n.gasFeeData,o=n.nonce,e.p=2,c={},"read"===t.methodType?c={}:"write"===t.methodType&&(c={gasPrice:t.gasPrice?T(t.gasPrice):null==i?void 0:i.gasPrice,nonce:t.nonce||o,value:t.value?k(t.value.toString()):0},t.gasLimit&&(c.gasLimit=t.gasLimit)),!(t.params.length>0)){e.n=4;break}return e.n=3,null==a?void 0:a[t.method].apply(a,t.params.concat([c]));case 3:s=e.v,e.n=6;break;case 4:return e.n=5,null==a?void 0:a[t.method](c);case 5:s=e.v;case 6:return e.a(2,{data:s});case 7:throw e.p=7,e.v;case 8:return e.a(2)}}),e,this,[[2,7]])})));return function(t){return e.apply(this,arguments)}}(),i.estimateGas=function(){var e=m(h().m((function e(t){var r,n,i,o,s,c,u,l,p,m,d,f,g,v,y,x,b,w,P,F,U,G,R,B,I,K,C,E,L,_,O,M;return h().w((function(e){for(;;)switch(e.p=e.n){case 0:return r=t.rpcUrl,n=t.recipientAddress,i=t.amount,o=t.data,e.n=1,this.getContract({rpcUrl:null!=r?r:this.config.rpcUrl});case 1:return s=e.v.providerInstance,e.p=2,e.n=3,s.getNetwork();case 3:return l=Number(e.v.chainId),p={to:n,value:k(i.toString()),data:o?a.ethers.hexlify(a.ethers.toUtf8Bytes(o)):"0x"},e.n=4,Promise.all([s.getFeeData(),s.estimateGas(p)]);case 4:if(f=(m=e.v)[1],g=(d=m[0]).gasPrice,v=d.maxPriorityFeePerGas,y=function(e,t){return e*BigInt(Math.floor(10*t))/10n},null!==d.maxFeePerGas&&null!==v){e.n=5;break}return x=BigInt(null!=g?g:0n),b=f*x,w=f*(110n*x/100n),P=f*(125n*x/100n),e.a(2,{chainId:l,gasLimit:f.toString(),gasPrice:x.toString(),gasPriceGwei:A(x),model:"LEGACY",fees:{regular:S(b),express:S(w),instant:S(P)}});case 5:return e.n=6,s.getBlock("latest");case 6:return F=BigInt(null!=(c=e.v.baseFeePerGas)?c:0n),U=BigInt(null!=(u=d.maxPriorityFeePerGas)?u:T("0.1")),R=F+(G=U),B=y(U,1.2),I=y(F,1.2)+B,K=y(U,1.5),C=y(F,1.5)+K,E=100n*1000000000n,_=f*(L=function(e){return e>E?E:e})(R),O=f*L(I),M=f*L(C),e.a(2,{chainId:l,gasLimit:f.toString(),baseFeeGwei:A(F),priorityFeeGwei:A(U),model:"EIP1559",fees:{regular:{perCoin:S(_),maxPriorityFeePerGas:G.toString(),maxFeePerGas:R.toString()},express:{perCoin:S(O),maxPriorityFeePerGas:B.toString(),maxFeePerGas:I.toString()},instant:{perCoin:S(M),maxPriorityFeePerGas:K.toString(),maxFeePerGas:C.toString()}}});case 7:throw e.p=7,e.v;case 8:return e.a(2)}}),e,this,[[2,7]])})));return function(t){return e.apply(this,arguments)}}(),i.buildSignParams=function(){var e=m(h().m((function e(r){var n,i,o,s,c,u,l,p,m,f,g,v,y;return h().w((function(e){for(;;)switch(e.n){case 0:if(n=r.args,i=r.nonce,o=r.gasFeeData,s=r.contractAddress,u=d,l=r.recipientAddress.address,p=t.BigNumber(r.value.toString()),m=n.data?a.ethers.hexlify(a.ethers.toUtf8Bytes(n.data)):"0x",f=n.nonce){e.n=2;break}return e.n=1,i;case 1:f=e.v;case 2:if(g=f,v=t.BigNumber(n.gasLimit?n.gasLimit:21e3),y=Number(this.currentChain.id),c=u({to:l,value:p,data:m,nonce:g,gasLimit:v,chainId:y},s?{contractAddress:s}:{}),!n.gasPrice){e.n=3;break}return e.a(2,{privateKey:n.privateKey,data:d({},c,{gasPrice:t.BigNumber(T(n.gasPrice).toString()),type:0})});case 3:return e.a(2,{privateKey:n.privateKey,data:d({},c,{type:2,maxPriorityFeePerGas:t.BigNumber(n.maxPriorityFeePerGas?n.maxPriorityFeePerGas:o.maxPriorityFeePerGas.toString()),maxFeePerGas:t.BigNumber(n.maxFeePerGas?n.maxFeePerGas:o.maxFeePerGas.toString())})})}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),n}(b),B=function(e){function t(t){var r;return(r=e.call(this,t)||this).wallet="testnet"===r.config.cluster?new i.TBtcWallet:new i.BtcWallet,r}return f(t,e),t.prototype.generateWallet=function(){var e=m(h().m((function e(t){var r,n,a,i,o,s;return h().w((function(e){for(;;)switch(e.n){case 0:if(n=t.derivationPath||"m/44'/0'/0'/0/0",null==(r=t.mnemonic)){e.n=1;break}s=r,e.n=3;break;case 1:return e.n=2,this.generateMnemonic(12);case 2:s=e.v;case 3:return a=s,e.n=4,this.wallet.getDerivedPrivateKey({mnemonic:a,hdPath:n});case 4:return i=e.v,e.n=5,this.wallet.getNewAddress({privateKey:i});case 5:return e.a(2,{address:(o=e.v).address,publicKey:o.publicKey,privateKey:i})}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),t}(b),I=["privateKey","contractAddress","rpcUrl"],K=function(e){return new s.Connection(e)},C=l.struct([l.blob(32,"mint"),l.blob(32,"owner"),l.nu64("amount"),l.blob(93)]),E={"mainnet-beta":u.ENV.MainnetBeta,testnet:u.ENV.Testnet,devnet:u.ENV.Devnet},L=function(e){function r(t){var r;return(r=e.call(this,t)||this).wallet=new o.SolWallet,r}f(r,e);var n=r.prototype;return n.generateWallet=function(){var e=m(h().m((function e(t){var r,n,a,i,o,s;return h().w((function(e){for(;;)switch(e.n){case 0:if(n=t.derivationPath||"m/44'/501'/0'/0'",null==(r=t.mnemonic)){e.n=1;break}s=r,e.n=3;break;case 1:return e.n=2,this.generateMnemonic(12);case 2:s=e.v;case 3:return a=s,e.n=4,this.wallet.getDerivedPrivateKey({mnemonic:a,hdPath:n});case 4:return i=e.v,e.n=5,this.wallet.getNewAddress({privateKey:i});case 5:return e.a(2,{address:(o=e.v).address,publicKey:o.publicKey,privateKey:i})}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),n.getBalance=function(){var e=m(h().m((function e(t){var r,n,a,i,o,u,l,p,m,d;return h().w((function(e){for(;;)switch(e.p=e.n){case 0:return n=t.contractAddress,a=t.address,i=K(null!=(r=t.rpcUrl)?r:this.config.rpcUrl),e.p=1,e.n=2,this.wallet.validAddress({address:a});case 2:if((o=e.v).isValid){e.n=3;break}throw new Error("address not valid");case 3:if(u=new s.PublicKey(o.address),!n){e.n=8;break}return l=new s.PublicKey(n),e.n=4,c.getAssociatedTokenAddress(l,u);case 4:return p=e.v,e.n=5,i.getAccountInfo(p);case 5:if(e.v){e.n=6;break}return e.a(2,{balance:"0"});case 6:return e.n=7,i.getTokenAccountBalance(p);case 7:return e.a(2,{balance:P((m=e.v).value.amount,m.value.decimals),_rawBalance:m.value.amount,_decimal:m.value.decimals});case 8:return e.n=9,i.getBalance(u);case 9:return e.a(2,{balance:P((d=e.v).toString(),9),_rawBalance:w(d,9),_decimal:9});case 10:throw e.p=10,e.v;case 11:return e.a(2)}}),e,this,[[1,10]])})));return function(t){return e.apply(this,arguments)}}(),n.transfer=function(){var e=m(h().m((function e(r){var n,a,i,o,u,l,p,m,d,f,v,y,x,b,w,P,k,S,T,A,F,U,G,R,B,C,E,L;return h().w((function(e){for(;;)switch(e.p=e.n){case 0:return n=r.privateKey,a=r.contractAddress,i=r.rpcUrl,o=g(r,I),u=K(null!=i?i:this.config.rpcUrl),e.p=1,e.n=2,this.wallet.validAddress({address:o.recipientAddress});case 2:if((p=e.v).isValid){e.n=3;break}throw new Error("address not valid");case 3:return e.n=4,this.wallet.getNewAddress({privateKey:n});case 4:return m=e.v,e.n=5,this.getRecommendedFees(u);case 5:return f=(d=e.v).computeUnitLimit,v=d.computeUnitPrice,o.gasLimit&&(f=o.gasLimit),o.gasPrice&&(v=parseInt(o.gasPrice,10)),e.n=6,u.getLatestBlockhash();case 6:if(y=e.v.blockhash,!a){e.n=19;break}return b=new s.PublicKey(a),w=new s.PublicKey(m.address),P=new s.PublicKey(p.address),e.n=7,c.getAssociatedTokenAddress(b,w);case 7:return k=e.v,e.n=8,c.getAssociatedTokenAddress(b,P);case 8:return S=e.v,T=0,e.p=9,e.n=10,u.getTokenAccountBalance(k);case 10:T=e.v.value.decimals,e.n=15;break;case 11:return e.p=11,e.p=12,e.n=13,u.getParsedAccountInfo(b);case 13:(A=e.v).value&&A.value.data.parsed&&(T=A.value.data.parsed.info.decimals||0),e.n=15;break;case 14:throw e.p=14,new Error("Failed to determine token decimals for mint "+a);case 15:return e.n=16,u.getAccountInfo(S);case 16:return F=!!e.v,U=!!o.createAssociatedAddress&&!F,G=BigInt(Math.round((null!=(x=o.amount)?x:0)*Math.pow(10,T))),R={privateKey:n,data:{type:"tokenTransfer",payer:m.address,from:m.address,to:p.address,blockHash:y,mint:a,amount:G.toString(),decimal:T,createAssociatedAddress:!!U,token2022:!!o.token2022,computeUnitLimit:f,computeUnitPrice:v}},e.n=17,this.wallet.signTransaction(R);case 17:return B=t.base.fromBase58(e.v),e.n=18,u.sendRawTransaction(B,{skipPreflight:!1,maxRetries:3});case 18:return e.a(2,{hash:e.v});case 19:return C=Math.round((null!=(l=o.amount)?l:0)*s.LAMPORTS_PER_SOL),E={privateKey:n,data:{type:"transfer",payer:m.address,from:m.address,to:p.address,blockHash:y,amount:C,computeUnitLimit:f,computeUnitPrice:v}},e.n=20,this.wallet.signTransaction(E);case 20:return L=t.base.fromBase58(e.v),e.n=21,u.sendRawTransaction(L,{skipPreflight:!1,maxRetries:3});case 21:return e.a(2,{hash:e.v});case 22:throw e.p=22,e.v;case 23:return e.a(2)}}),e,this,[[12,14],[9,11],[1,22]])})));return function(t){return e.apply(this,arguments)}}(),n.getTokenInfo=function(){var e=m(h().m((function e(t){var r,n,a,i,o,c,l,p,m,f,g,v,y,x,b,w,P,k,S,T,A,F;return h().w((function(e){for(;;)switch(e.p=e.n){case 0:return r=t.contractAddress,n=t.rpcUrl,i=void 0===(a=t.cluster)?"mainnet-beta":a,e.p=1,p=K(null!=n?n:this.config.rpcUrl),m=new s.PublicKey(r),e.n=2,p.getParsedAccountInfo(m);case 2:return g=null==(f=e.v)||null==(o=f.value)||null==(o=o.data)||null==(o=o.parsed)?void 0:o.info,v=null!=(c=null==g?void 0:g.decimals)?c:0,y=null!=(l=null==g?void 0:g.supply)?l:"0",x="",b="",w="",e.p=3,k=null!=(P=E[i])?P:u.ENV.MainnetBeta,e.n=4,(new u.TokenListProvider).resolve();case 4:S=e.v.filterByChainId(k).getList(),T=new Map(S.map((function(e){return[e.address,e]}))),(A=T.get(m.toBase58()))&&(x=A.name,b=A.symbol,w=A.logoURI||""),e.n=6;break;case 5:e.p=5,console.warn("TokenListProvider failed:",e.v);case 6:return x||(x=r.slice(0,6)+"..."),b||(b="SPL"),F={name:x,symbol:b,address:r,decimals:v,logoUrl:w||"",totalSupply:(Number(y)/Math.pow(10,v)).toString()},e.a(2,d({},F));case 7:throw e.p=7,e.v;case 8:return e.a(2)}}),e,this,[[3,5],[1,7]])})));return function(t){return e.apply(this,arguments)}}(),n.getRecommendedFees=function(){var e=m(h().m((function e(t){var r,n,a,i;return h().w((function(e){for(;;)switch(e.p=e.n){case 0:return r=14e4,n=0,e.p=1,e.n=2,t.getRecentPrioritizationFees();case 2:(a=e.v).length>0&&(i=a.map((function(e){return e.prioritizationFee})).sort((function(e,t){return e-t})),n=i[Math.floor(i.length/2)]||0),e.n=4;break;case 3:e.p=3,console.warn("Failed to fetch prioritization fees, fallback to defaults");case 4:return e.a(2,{computeUnitLimit:r,computeUnitPrice:n})}}),e,null,[[1,3]])})));return function(t){return e.apply(this,arguments)}}(),r}(b),_={EVM:R,BTC:B,SOL:L},O=function(){function e(e){var t=e.chainId,r=e.rpcUrl;this.network=e.network,this.chainId=t,this.rpcUrl=r}return e.prototype.getWallet=function(){return new(0,_[this.network])({chainId:this.chainId,rpcUrl:this.rpcUrl})},e}();exports.ACCOUNT_LAYOUT=C,exports.BaseWallet=b,exports.BtcWallet=B,exports.CLUSTER_ENV=E,exports.CryptoClientSdk=O,exports.EvmWallet=R,exports.SolWallet=L;
2
+ //# sourceMappingURL=crypto-wallet-sdk.cjs.production.min.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crypto-wallet-sdk.cjs.production.min.js","sources":["../src/api/dex.ts","../src/services/base/wallet.ts","../src/utils/amount.ts","../src/utils/evmUnits.ts","../src/services/evm/wallet.ts","../src/services/btc/wallet.ts","../src/services/sol/wallet.ts","../src/services/wallet-registry.ts","../src/client/index.ts"],"sourcesContent":["// src/api/dex.ts\r\nimport {\r\n DexConfig,\r\n NetworkConfigs,\r\n ChainConfig,\r\n} from \"./../types\";\r\n\r\nexport class DexAPI {\r\n private readonly defaultNetworkConfigs: NetworkConfigs = {\r\n \"1\": { // Ethereum Mainnet\r\n id: \"1\",\r\n explorer: \"https://etherscan.io/\",\r\n defaultSlippage: \"0.005\",\r\n maxSlippage: \"1\",\r\n confirmationTimeout: 60000,\r\n maxRetries: 3,\r\n },\r\n \"11155111\": { // Ethereum Sepolia\r\n id: \"11155111\",\r\n explorer: \"https://sepolia.etherscan.io/\",\r\n defaultSlippage: \"0.005\",\r\n maxSlippage: \"1\",\r\n confirmationTimeout: 60000,\r\n maxRetries: 3,\r\n },\r\n \"56\": { // Binance Smart Chain\r\n id: \"56\",\r\n explorer: \"https://bscscan.com/\",\r\n defaultSlippage: \"0.005\",\r\n maxSlippage: \"1\",\r\n confirmationTimeout: 60000,\r\n maxRetries: 3,\r\n },\r\n \"97\": { // Binance Smart Chain Testnet\r\n id: \"97\",\r\n explorer: \"https://testnet.bscscan.com/\",\r\n defaultSlippage: \"0.005\",\r\n maxSlippage: \"1\",\r\n confirmationTimeout: 60000,\r\n maxRetries: 3,\r\n },\r\n \"501\": {\r\n id: \"501\",\r\n explorer: \"https://web3.okx.com/explorer/sol/tx\",\r\n defaultSlippage: \"0.005\",\r\n maxSlippage: \"1\",\r\n computeUnits: 300000,\r\n confirmationTimeout: 60000,\r\n maxRetries: 3,\r\n },\r\n \"784\": {\r\n id: \"784\",\r\n explorer: \"https://web3.okx.com/explorer/sui/tx\",\r\n defaultSlippage: \"0.005\",\r\n maxSlippage: \"1\",\r\n confirmationTimeout: 60000,\r\n maxRetries: 3,\r\n },\r\n \"43114\": { // Avalanche C-Chain\r\n id: \"43114\",\r\n explorer: \"https://web3.okx.com/explorer/avax/tx\",\r\n defaultSlippage: \"0.005\",\r\n maxSlippage: \"1\",\r\n confirmationTimeout: 60000,\r\n maxRetries: 3,\r\n },\r\n\r\n \"137\": { // Polygon Mainnet\r\n id: \"137\",\r\n explorer: \"https://web3.okx.com/explorer/polygon/tx\",\r\n defaultSlippage: \"0.005\",\r\n maxSlippage: \"1\",\r\n confirmationTimeout: 60000,\r\n maxRetries: 3,\r\n },\r\n \"80002\": { // Polygon Testnet\r\n id: \"80002\",\r\n explorer: \"https://amoy.polygonscan.com\",\r\n defaultSlippage: \"0.005\",\r\n maxSlippage: \"1\",\r\n confirmationTimeout: 60000,\r\n maxRetries: 3,\r\n },\r\n \"146\": { // Sonic Mainnet\r\n id: \"146\",\r\n explorer: \"https://web3.okx.com/explorer/sonic/tx\",\r\n defaultSlippage: \"0.005\",\r\n maxSlippage: \"1\",\r\n confirmationTimeout: 60000,\r\n maxRetries: 3,\r\n },\r\n \"8453\": { // Base Mainnet\r\n id: \"8453\",\r\n explorer: \"https://web3.okx.com/explorer/base/tx\",\r\n defaultSlippage: \"0.005\",\r\n maxSlippage: \"1\",\r\n confirmationTimeout: 60000,\r\n maxRetries: 3,\r\n },\r\n \"196\": { // X Layer Mainnet\r\n id: \"196\",\r\n explorer: \"https://web3.okx.com/explorer/x-layer/tx\",\r\n defaultSlippage: \"0.005\",\r\n maxSlippage: \"1\",\r\n confirmationTimeout: 60000,\r\n maxRetries: 3,\r\n },\r\n \"10\": { // Optimism\r\n id: \"10\",\r\n explorer: \"https://web3.okx.com/explorer/optimism/tx\",\r\n defaultSlippage: \"0.005\",\r\n maxSlippage: \"1\",\r\n confirmationTimeout: 60000,\r\n maxRetries: 3,\r\n },\r\n \"42161\": { // Arbitrum\r\n id: \"42161\",\r\n explorer: \"https://web3.okx.com/explorer/arbitrum/tx\",\r\n defaultSlippage: \"0.005\",\r\n maxSlippage: \"1\",\r\n confirmationTimeout: 60000,\r\n maxRetries: 3,\r\n },\r\n\r\n \"100\": { // Gnosis\r\n id: \"100\",\r\n explorer: \"https://web3.okx.com/explorer/gnosis/tx\",\r\n defaultSlippage: \"0.005\",\r\n maxSlippage: \"1\",\r\n confirmationTimeout: 60000,\r\n maxRetries: 3,\r\n },\r\n \"169\": { // Manta Pacific\r\n id: \"169\",\r\n explorer: \"https://web3.okx.com/explorer/manta/tx\",\r\n defaultSlippage: \"0.005\",\r\n maxSlippage: \"1\",\r\n confirmationTimeout: 60000,\r\n maxRetries: 3,\r\n },\r\n \"250\": { // Fantom Opera\r\n id: \"250\",\r\n explorer: \"https://web3.okx.com/explorer/ftm/tx\",\r\n defaultSlippage: \"0.005\",\r\n maxSlippage: \"1\",\r\n confirmationTimeout: 60000,\r\n maxRetries: 3,\r\n },\r\n \"324\": { // zkSync Era\r\n id: \"324\",\r\n explorer: \"https://web3.okx.com/explorer/zksync/tx\",\r\n defaultSlippage: \"0.005\",\r\n maxSlippage: \"1\",\r\n confirmationTimeout: 60000,\r\n maxRetries: 3,\r\n },\r\n \"1101\": { // Polygon zkEVM\r\n id: \"1101\",\r\n explorer: \"https://web3.okx.com/explorer/polygon-zkevm/tx\",\r\n defaultSlippage: \"0.005\",\r\n maxSlippage: \"1\",\r\n confirmationTimeout: 60000,\r\n maxRetries: 3,\r\n },\r\n \"5000\": { // Mantle\r\n id: \"5000\",\r\n explorer: \"https://web3.okx.com/explorer/mantle/tx\",\r\n defaultSlippage: \"0.005\",\r\n maxSlippage: \"1\",\r\n confirmationTimeout: 60000,\r\n maxRetries: 3,\r\n },\r\n \"25\": { // Cronos\r\n id: \"25\",\r\n explorer: \"https://cronoscan.com/tx\",\r\n defaultSlippage: \"0.005\",\r\n maxSlippage: \"1\",\r\n confirmationTimeout: 60000,\r\n maxRetries: 3,\r\n },\r\n \"534352\": { // Scroll\r\n id: \"534352\",\r\n explorer: \"https://web3.okx.com/explorer/scroll/tx\",\r\n defaultSlippage: \"0.005\",\r\n maxSlippage: \"1\",\r\n confirmationTimeout: 60000,\r\n maxRetries: 3,\r\n },\r\n \"59144\": { // Linea\r\n id: \"59144\",\r\n explorer: \"https://web3.okx.com/explorer/linea/tx\",\r\n defaultSlippage: \"0.005\",\r\n maxSlippage: \"1\",\r\n confirmationTimeout: 60000,\r\n maxRetries: 3,\r\n },\r\n \"1088\": { // Metis\r\n id: \"1088\",\r\n explorer: \"https://web3.okx.com/explorer/metis/tx\",\r\n defaultSlippage: \"0.005\",\r\n maxSlippage: \"1\",\r\n confirmationTimeout: 60000,\r\n maxRetries: 3,\r\n },\r\n \"1030\": { // Conflux\r\n id: \"1030\",\r\n explorer: \"https://www.confluxscan.io/tx\",\r\n defaultSlippage: \"0.005\",\r\n maxSlippage: \"1\",\r\n confirmationTimeout: 60000,\r\n maxRetries: 3,\r\n },\r\n \"81457\": { // Blast\r\n id: \"81457\",\r\n explorer: \"https://web3.okx.com/explorer/blast/tx\",\r\n defaultSlippage: \"0.005\",\r\n maxSlippage: \"1\",\r\n confirmationTimeout: 60000,\r\n maxRetries: 3,\r\n },\r\n \"7000\": { // Zeta Chain\r\n id: \"7000\",\r\n explorer: \"https://explorer.zetachain.com/tx\",\r\n defaultSlippage: \"0.005\",\r\n maxSlippage: \"1\",\r\n confirmationTimeout: 60000,\r\n maxRetries: 3,\r\n },\r\n \"66\": { // OKT Chain\r\n id: \"66\",\r\n explorer: \"https://www.okx.com/web3/explorer/oktc/tx\",\r\n defaultSlippage: \"0.005\",\r\n maxSlippage: \"1\",\r\n confirmationTimeout: 60000,\r\n maxRetries: 3,\r\n },\r\n\r\n };\r\n\r\n constructor(private readonly config: DexConfig) {\r\n this.config.networks = {\r\n ...this.defaultNetworkConfigs,\r\n ...(config.networks || {}),\r\n };\r\n }\r\n\r\n public getNetworkConfig(chainId: string): ChainConfig {\r\n const networkConfig = this.config.networks?.[chainId];\r\n if (!networkConfig) {\r\n throw new Error(`Network configuration not found for chain ${chainId}`);\r\n }\r\n return networkConfig;\r\n }\r\n\r\n\r\n}","import { DexAPI } from \"./../../api/dex\";\r\nimport { DexConfig, ChainConfig } from \"./../../types\";\r\nimport { bip39 } from \"@okxweb3/crypto-lib\";\r\n\r\nabstract class BaseWallet {\r\n\r\n public config: DexConfig;\r\n public dex: DexAPI;\r\n\r\n constructor(config: DexConfig) {\r\n this.config = {\r\n timeout: 30000,\r\n ...config,\r\n };\r\n\r\n this.dex = new DexAPI(this.config);\r\n }\r\n\r\n public get currentChain(): ChainConfig {\r\n if (!this.config.chainId) throw new Error(\"chainId not set in config\");\r\n return this.dex.getNetworkConfig(this.config.chainId);\r\n }\r\n\r\n public async generateMnemonic(numWords: number = 12): Promise<string> {\r\n const strength = (numWords / 3) * 32;\r\n return bip39.generateMnemonic(strength);\r\n }\r\n}\r\n\r\nexport { BaseWallet }","// src/utils/amount.ts\r\nimport BigNumber from \"bignumber.js\";\r\n\r\n/**\r\n * Convert human-readable amount → raw integer by decimals\r\n * ex: 0.1 USDC (decimals 6) => 100000\r\n */\r\nexport const parseAmount = (amount: string | number, decimals: number): bigint => {\r\n const bn = new BigNumber(amount);\r\n const multiplier = new BigNumber(10).pow(decimals);\r\n return BigInt(bn.times(multiplier).toFixed(0));\r\n};\r\n\r\n/**\r\n * Convert raw amount → human-readable number by decimals\r\n * ex: 100000 (decimals 6) => 0.1\r\n */\r\nexport const formatAmount = (raw: bigint | string, decimals: number): number => {\r\n const bn = new BigNumber(raw.toString());\r\n const divisor = new BigNumber(10).pow(decimals);\r\n return bn.dividedBy(divisor).toNumber();\r\n};\r\n","// src/utils/evmUnits.ts\r\nimport { parseAmount, formatAmount } from \"./amount\";\r\n\r\n// Ether = 18 decimals\r\nexport const parseEther = (v: string | number) => parseAmount(v, 18);\r\nexport const formatEther = (v: bigint | string) => formatAmount(v, 18);\r\n\r\n// Gwei = 9 decimals\r\nexport const parseGwei = (v: string | number) => parseAmount(v, 9);\r\nexport const formatGwei = (v: bigint | string) => formatAmount(v, 9);\r\n\r\n// Wei = 0 decimals (identity, tapi biar konsisten)\r\nexport const parseWei = (v: string | number) => parseAmount(v, 0);\r\nexport const formatWei = (v: bigint | string) => formatAmount(v, 0);\r\n","import { BaseWallet } from \"../base/index\";\r\nimport { DexConfig } from \"../../types\";\r\nimport { BigNumber } from \"@okxweb3/crypto-lib\";\r\nimport { EthWallet as EthWalletOkx } from \"@okxweb3/coin-ethereum\";\r\nimport { GenerateWalletPayload, TokenInfo, IResponse } from \"./../../types\";\r\nimport { successResponse, formatAmount, parseAmount, parseGwei, formatGwei, formatEther, parseEther } from \"./../../utils\";\r\nimport { GetContract, BalancePayload, TransferPayload, GetTransactionPayload, ISmartContractCallPayload, SignerPayload, GetErcTokenInfoPayload, estimateGasPayload } from \"./types\";\r\nimport { ethers } from \"ethers\";\r\nimport erc20Abi from \"./abi/erc20.json\";\r\n\r\nconst provider = (rpcUrl?: string) => new ethers.JsonRpcProvider(rpcUrl);\r\n\r\nconst DEFAULT_PRIORITY = \"0.1\";\r\nconst DEFAULT_MAXFEE = \"3\";\r\n\r\nexport class EvmWallet extends BaseWallet {\r\n\r\n private wallet: EthWalletOkx;\r\n\r\n constructor(config: DexConfig) {\r\n super(config)\r\n this.wallet = new EthWalletOkx();\r\n }\r\n\r\n async getContract({ contractAddress, rpcUrl, privateKey, abi }: GetContract) {\r\n if (!rpcUrl) throw new Error(\"RPC URL is required\");\r\n\r\n const providerInstance = provider(rpcUrl ?? this.config.rpcUrl);\r\n const gasFeeData = await providerInstance.getFeeData();\r\n\r\n let nonce, contract, signer;\r\n\r\n\r\n if (privateKey) {\r\n signer = new ethers.Wallet(privateKey, providerInstance);\r\n nonce = await providerInstance.getTransactionCount(\r\n await signer.getAddress(),\r\n \"pending\"\r\n );\r\n }\r\n\r\n if (contractAddress) {\r\n contract = new ethers.Contract(\r\n contractAddress,\r\n abi || erc20Abi,\r\n signer || providerInstance\r\n );\r\n\r\n const code = await providerInstance.getCode(contractAddress);\r\n if (code === \"0x\") {\r\n throw new Error(\"Address is not a contract\");\r\n }\r\n }\r\n\r\n return { contract, signer, gasFeeData, nonce, providerInstance };\r\n }\r\n\r\n async generateWallet({ mnemonic, derivationPath }: GenerateWalletPayload): Promise<IResponse> {\r\n const hdPath = derivationPath || \"m/44'/60'/0'/0/0\";\r\n const getMnemonic = mnemonic ?? (await this.generateMnemonic(12));\r\n\r\n const derivePrivateKey = await this.wallet.getDerivedPrivateKey({ mnemonic: getMnemonic, hdPath });\r\n const { address, publicKey } = await this.wallet.getNewAddress({ privateKey: derivePrivateKey });\r\n\r\n return successResponse({ address, publicKey, privateKey: derivePrivateKey });\r\n }\r\n\r\n async getBalance({ rpcUrl, contractAddress, address }: BalancePayload): Promise<IResponse> {\r\n const { contract, providerInstance } = await this.getContract({ rpcUrl: rpcUrl ?? this.config.rpcUrl, contractAddress });\r\n\r\n if (contract) {\r\n const decimals = await contract.decimals();\r\n const balance = await contract.balanceOf(address);\r\n return successResponse({\r\n balance: formatAmount(balance.toString(), decimals),\r\n _rawBalance: balance.toString(),\r\n _decimal: decimals,\r\n });\r\n }\r\n\r\n const balance = await providerInstance.getBalance(address);\r\n\r\n return successResponse({\r\n balance: formatAmount(balance.toString(), 18),\r\n _rawBalance: balance.toString(),\r\n _decimal: 18,\r\n });\r\n }\r\n\r\n async transfer({ privateKey, contractAddress, rpcUrl, ...args }: TransferPayload): Promise<IResponse> {\r\n const { contract, providerInstance, gasFeeData, nonce } = await this.getContract({\r\n rpcUrl: rpcUrl ?? this.config.rpcUrl,\r\n privateKey,\r\n contractAddress,\r\n });\r\n\r\n const recipientAddress = await this.wallet.validAddress({ address: args.recipientAddress });\r\n if (!recipientAddress.isValid) throw new Error(\"address not valid\");\r\n\r\n // VALIDASI FEE\r\n if (args.maxPriorityFeePerGas && args.maxFeePerGas) {\r\n const prio = BigInt(args.maxPriorityFeePerGas);\r\n const max = BigInt(args.maxFeePerGas);\r\n if (max < prio) {\r\n throw new Error(\"maxFeePerGas must be >= maxPriorityFeePerGas\");\r\n }\r\n }\r\n\r\n if (args.gasPrice && (args.maxFeePerGas || args.maxPriorityFeePerGas)) {\r\n throw new Error(\"Cannot use gasPrice with EIP-1559 fee fields\");\r\n }\r\n\r\n let value: bigint;\r\n let gasLimit: bigint;\r\n\r\n if (contractAddress) {\r\n if (!contract) throw new Error(\"contract not valid\");\r\n\r\n const decimals = await contract.decimals();\r\n value = parseAmount(args.amount.toString(), decimals);\r\n\r\n\r\n gasLimit = args.gasLimit\r\n ? BigInt(args.gasLimit)\r\n : await contract.transfer.estimateGas(\r\n args.recipientAddress,\r\n value\r\n );\r\n } else {\r\n value = parseEther(args.amount.toString());\r\n gasLimit = args.gasLimit ? BigInt(args.gasLimit) : 21000n;\r\n }\r\n\r\n // DEFAULT FEE\r\n const noFeeProvided =\r\n !args.gasPrice &&\r\n !args.maxFeePerGas &&\r\n !args.maxPriorityFeePerGas;\r\n\r\n if (noFeeProvided) {\r\n const estimate = await this.estimateGas({\r\n rpcUrl: rpcUrl ?? this.config.rpcUrl,\r\n recipientAddress: args.recipientAddress,\r\n amount: args.amount.toString(),\r\n data: args.data,\r\n });\r\n\r\n gasLimit = BigInt(estimate.gasLimit);\r\n\r\n // ===== LEGACY =====\r\n if (estimate.model === \"LEGACY\") {\r\n if (!estimate.gasPrice) {\r\n throw new Error(\"LEGACY estimate missing gasPrice\");\r\n }\r\n\r\n args.gasPrice = estimate.gasPrice; // wei\r\n return this.transfer({ privateKey, contractAddress, rpcUrl, ...args });\r\n }\r\n\r\n // ===== EIP-1559 =====\r\n const fee = estimate.fees.regular;\r\n\r\n if (!fee?.maxFeePerGas || !fee?.maxPriorityFeePerGas) {\r\n throw new Error(\"EIP1559 estimate missing fee fields\");\r\n }\r\n\r\n args.maxFeePerGas = fee.maxFeePerGas;\r\n args.maxPriorityFeePerGas = fee.maxPriorityFeePerGas;\r\n }\r\n\r\n // ===============================\r\n // SIGN & BROADCAST\r\n // ===============================\r\n const signParams = await this.buildSignParams({\r\n args: { ...args, privateKey, gasLimit },\r\n nonce,\r\n gasFeeData,\r\n recipientAddress,\r\n value,\r\n contractAddress,\r\n });\r\n\r\n const signedTx = await this.wallet.signTransaction(signParams);\r\n const broadcast = await providerInstance.broadcastTransaction(signedTx);\r\n\r\n return successResponse({ ...broadcast });\r\n }\r\n\r\n async getTransaction({ hash, rpcUrl, withReceipt }: GetTransactionPayload): Promise<IResponse> {\r\n const { providerInstance } = await this.getContract({ rpcUrl: rpcUrl ?? this.config.rpcUrl });\r\n\r\n try {\r\n if (withReceipt) {\r\n const [tx, receipt] = await Promise.all([\r\n providerInstance.getTransaction(hash),\r\n providerInstance.getTransactionReceipt(hash),\r\n ]);\r\n\r\n const memo = tx?.data && tx.data !== \"0x\"\r\n ? ethers.toUtf8String(tx.data)\r\n : null;\r\n\r\n return successResponse({\r\n transaction: tx,\r\n receipt,\r\n memo,\r\n });\r\n }\r\n\r\n const tx = await providerInstance.getTransaction(hash);\r\n\r\n return successResponse({\r\n transaction: tx,\r\n });\r\n } catch (error) {\r\n throw error;\r\n }\r\n }\r\n\r\n async getTokenInfo({ contractAddress, rpcUrl }: GetErcTokenInfoPayload): Promise<IResponse> {\r\n const { contract } = await this.getContract({ contractAddress, rpcUrl: rpcUrl ?? this.config.rpcUrl, });\r\n\r\n if (contract) {\r\n const [name, symbol, decimals, totalSupply] = await Promise.all([\r\n contract.name(),\r\n contract.symbol(),\r\n contract.decimals(),\r\n contract.totalSupply(),\r\n ]);\r\n\r\n const data: TokenInfo = {\r\n name,\r\n symbol,\r\n decimals,\r\n totalSupply: formatAmount(totalSupply.toString(), decimals).toString(),\r\n\r\n };\r\n return successResponse({ ...data });\r\n }\r\n\r\n throw new Error('Contract not found');\r\n };\r\n\r\n async smartContractCall(args: ISmartContractCallPayload): Promise<IResponse> {\r\n const { contract, gasFeeData, nonce } = await this.getContract({\r\n rpcUrl: args.rpcUrl ?? this.config.rpcUrl,\r\n contractAddress: args.contractAddress,\r\n abi: args.contractAbi,\r\n privateKey: args.privateKey,\r\n });\r\n\r\n try {\r\n let tx;\r\n let overrides = {} as any;\r\n\r\n if (args.methodType === 'read') {\r\n overrides = {};\r\n } else if (args.methodType === 'write') {\r\n overrides = {\r\n gasPrice: args.gasPrice\r\n ? parseGwei(args.gasPrice)\r\n : gasFeeData?.gasPrice,\r\n\r\n nonce: args.nonce || nonce,\r\n value: args.value ? parseEther(args.value.toString()) : 0,\r\n };\r\n\r\n if (args.gasLimit) {\r\n overrides.gasLimit = args.gasLimit;\r\n }\r\n }\r\n\r\n if (args.params.length > 0) {\r\n tx = await contract?.[args.method](...args.params, overrides);\r\n } else {\r\n tx = await contract?.[args.method](overrides);\r\n }\r\n\r\n return successResponse({\r\n data: tx,\r\n });\r\n } catch (error) {\r\n throw error;\r\n }\r\n };\r\n\r\n async estimateGas({ rpcUrl, recipientAddress, amount, data }: estimateGasPayload): Promise<IResponse> {\r\n const { providerInstance } = await this.getContract({ rpcUrl: rpcUrl ?? this.config.rpcUrl });\r\n\r\n try {\r\n\r\n const network = await providerInstance.getNetwork();\r\n const chainId = Number(network.chainId);\r\n\r\n const tx = {\r\n to: recipientAddress,\r\n value: parseEther(amount.toString()),\r\n data: data\r\n ? ethers.hexlify(ethers.toUtf8Bytes(data as string))\r\n : '0x',\r\n };\r\n\r\n const [feeData, gasLimit] = await Promise.all([\r\n providerInstance.getFeeData(),\r\n providerInstance.estimateGas(tx),\r\n ]);\r\n\r\n const { gasPrice, maxFeePerGas, maxPriorityFeePerGas } = feeData;\r\n\r\n const applyMultiplier = (base: bigint, mul: number) =>\r\n (base * BigInt(Math.floor(mul * 10))) / 10n;\r\n\r\n // feeData IS AUTO CHECK EIP OR LEGACY\r\n const isEip1559 = maxFeePerGas !== null && maxPriorityFeePerGas !== null;\r\n\r\n if (!isEip1559) {\r\n const baseGasPrice = BigInt(gasPrice ?? 0n);\r\n\r\n const regularGasPrice = baseGasPrice; // wallet \"slow\"\r\n const expressGasPrice = (baseGasPrice * 110n) / 100n; // +10%\r\n const instantGasPrice = (baseGasPrice * 125n) / 100n; // +25%\r\n\r\n const regularFee = gasLimit * regularGasPrice;\r\n const expressFee = gasLimit * expressGasPrice;\r\n const instantFee = gasLimit * instantGasPrice;\r\n\r\n return successResponse({\r\n chainId,\r\n gasLimit: gasLimit.toString(),\r\n gasPrice: baseGasPrice.toString(),\r\n gasPriceGwei: formatGwei(baseGasPrice),\r\n model: \"LEGACY\",\r\n fees: {\r\n regular: formatEther(regularFee),\r\n express: formatEther(expressFee),\r\n instant: formatEther(instantFee),\r\n }\r\n });\r\n }\r\n\r\n let baseFee: bigint;\r\n let priorityFee: bigint;\r\n\r\n const block = await providerInstance.getBlock(\"latest\");\r\n\r\n baseFee = BigInt(block!.baseFeePerGas ?? 0n);\r\n priorityFee = BigInt(\r\n feeData.maxPriorityFeePerGas ?? parseGwei(DEFAULT_PRIORITY)\r\n );\r\n\r\n const regularPriority = priorityFee;\r\n const regularMaxFee = baseFee + regularPriority;\r\n\r\n const expressPriority = applyMultiplier(priorityFee, 1.2);\r\n const expressMaxFee = applyMultiplier(baseFee, 1.2) + expressPriority;\r\n\r\n const instantPriority = applyMultiplier(priorityFee, 1.5);\r\n const instantMaxFee = applyMultiplier(baseFee, 1.5) + instantPriority;\r\n\r\n const MAX_GAS_GWEI = 100n * 1_000_000_000n;\r\n const cap = (v: bigint) => (v > MAX_GAS_GWEI ? MAX_GAS_GWEI : v);\r\n\r\n const regularFee = gasLimit * cap(regularMaxFee);\r\n const expressFee = gasLimit * cap(expressMaxFee);\r\n const instantFee = gasLimit * cap(instantMaxFee);\r\n\r\n return successResponse({\r\n chainId,\r\n gasLimit: gasLimit.toString(),\r\n baseFeeGwei: formatGwei(baseFee),\r\n priorityFeeGwei: formatGwei(priorityFee),\r\n model: \"EIP1559\",\r\n fees: {\r\n regular: {\r\n perCoin: formatEther(regularFee),\r\n maxPriorityFeePerGas: regularPriority.toString(),\r\n maxFeePerGas: regularMaxFee.toString(),\r\n },\r\n express: {\r\n perCoin: formatEther(expressFee),\r\n maxPriorityFeePerGas: expressPriority.toString(),\r\n maxFeePerGas: expressMaxFee.toString(),\r\n },\r\n instant: {\r\n perCoin: formatEther(instantFee),\r\n maxPriorityFeePerGas: instantPriority.toString(),\r\n maxFeePerGas: instantMaxFee.toString(),\r\n },\r\n }\r\n });\r\n\r\n } catch (error) {\r\n throw error;\r\n }\r\n }\r\n\r\n private async buildSignParams({ args, nonce, gasFeeData, recipientAddress, value, contractAddress }: SignerPayload) {\r\n const txBase = {\r\n to: recipientAddress.address,\r\n value: BigNumber(value.toString()),\r\n data: args.data\r\n ? ethers.hexlify(ethers.toUtf8Bytes(args.data as string))\r\n : '0x',\r\n nonce: args.nonce || (await nonce),\r\n gasLimit: args.gasLimit ? BigNumber(args.gasLimit) : BigNumber(21000),\r\n chainId: Number(this.currentChain.id),\r\n ...(contractAddress ? { contractAddress } : {}),\r\n };\r\n\r\n // legacy vs eip-1559\r\n if (args.gasPrice) {\r\n return {\r\n privateKey: args.privateKey,\r\n data: {\r\n ...txBase,\r\n gasPrice: BigNumber(parseGwei(args.gasPrice).toString()),\r\n type: 0,\r\n },\r\n };\r\n }\r\n\r\n return {\r\n privateKey: args.privateKey,\r\n data: {\r\n ...txBase,\r\n type: 2,\r\n maxPriorityFeePerGas: BigNumber(\r\n args.maxPriorityFeePerGas\r\n ? args.maxPriorityFeePerGas\r\n : gasFeeData.maxPriorityFeePerGas!.toString()\r\n ),\r\n maxFeePerGas: BigNumber(\r\n args.maxFeePerGas\r\n ? args.maxFeePerGas\r\n : gasFeeData.maxFeePerGas!.toString()\r\n ),\r\n },\r\n };\r\n }\r\n}\r\n","import { BaseWallet } from \"../base/index\";\r\nimport { DexConfig } from \"../../types\";\r\nimport { BtcWallet as BtcWalletOkxm, TBtcWallet } from \"@okxweb3/coin-bitcoin\";\r\nimport { IResponse, GenerateWalletPayload } from \"./../../types\";\r\n\r\nconst successResponse = (args: IResponse): IResponse => args;\r\n\r\nexport class BtcWallet extends BaseWallet {\r\n\r\n private wallet: BtcWalletOkxm | TBtcWallet;\r\n\r\n constructor(config: DexConfig) {\r\n super(config);\r\n this.wallet = this.config.cluster === \"testnet\" ? new TBtcWallet() : new BtcWalletOkxm();\r\n }\r\n\r\n async generateWallet({ mnemonic, derivationPath }: GenerateWalletPayload): Promise<IResponse> {\r\n const hdPath = derivationPath || \"m/44'/0'/0'/0/0\";\r\n const getMnemonic = mnemonic ?? (await this.generateMnemonic(12));\r\n\r\n const derivePrivateKey = await this.wallet.getDerivedPrivateKey({ mnemonic: getMnemonic, hdPath });\r\n const { address, publicKey } = await this.wallet.getNewAddress({ privateKey: derivePrivateKey });\r\n\r\n return successResponse({ address, publicKey, privateKey: derivePrivateKey });\r\n }\r\n\r\n\r\n}\r\n","import { BaseWallet } from \"../base/index\";\r\nimport { DexConfig } from \"../../types\";\r\nimport { base } from \"@okxweb3/crypto-lib\";\r\nimport { SolWallet as SolWalletOkx } from \"@okxweb3/coin-solana\";\r\nimport * as solanaWeb3 from '@solana/web3.js';\r\nimport { getAssociatedTokenAddress } from '@solana/spl-token';\r\nimport { ENV, TokenListProvider } from \"@solana/spl-token-registry\";\r\nimport { successResponse, parseAmount, formatAmount } from \"./../../utils\";\r\nimport { IResponse, GenerateWalletPayload, TokenInfo } from \"./../../types\";\r\nimport { BalanceSolanaPayload, TransferSolanaPayload, GetSplTokenInfoPayload } from \"./types\";\r\n// @ts-ignore\r\nimport * as BufferLayout from 'buffer-layout';\r\n\r\nconst provider = (rpcUrl?: string) => new solanaWeb3.Connection(rpcUrl as string);\r\n\r\nexport const ACCOUNT_LAYOUT = BufferLayout.struct([\r\n BufferLayout.blob(32, 'mint'),\r\n BufferLayout.blob(32, 'owner'),\r\n BufferLayout.nu64('amount'),\r\n BufferLayout.blob(93),\r\n]);\r\n\r\nexport const CLUSTER_ENV: Record<string, ENV> = {\r\n \"mainnet-beta\": ENV.MainnetBeta,\r\n \"testnet\": ENV.Testnet,\r\n \"devnet\": ENV.Devnet,\r\n};\r\n\r\nexport class SolWallet extends BaseWallet {\r\n\r\n private wallet: SolWalletOkx;\r\n\r\n constructor(config: DexConfig) {\r\n super(config)\r\n this.wallet = new SolWalletOkx();\r\n }\r\n\r\n async generateWallet({ mnemonic, derivationPath }: GenerateWalletPayload): Promise<IResponse> {\r\n const hdPath = derivationPath || \"m/44'/501'/0'/0'\";\r\n const getMnemonic = mnemonic ?? (await this.generateMnemonic(12));\r\n\r\n const derivePrivateKey = await this.wallet.getDerivedPrivateKey({ mnemonic: getMnemonic, hdPath });\r\n const { address, publicKey } = await this.wallet.getNewAddress({ privateKey: derivePrivateKey });\r\n\r\n return successResponse({ address, publicKey, privateKey: derivePrivateKey });\r\n }\r\n\r\n async getBalance({ rpcUrl, contractAddress, address }: BalanceSolanaPayload): Promise<IResponse> {\r\n const connection = provider(rpcUrl ?? this.config.rpcUrl);\r\n try {\r\n const recipientAddress = await this.wallet.validAddress({ address });\r\n if (!recipientAddress.isValid) throw new Error(\"address not valid\");\r\n\r\n const publicKey = new solanaWeb3.PublicKey(recipientAddress.address);\r\n if (contractAddress) {\r\n const mintPubkey = new solanaWeb3.PublicKey(contractAddress);\r\n // get token by account \r\n const tokenAccountAddress = await getAssociatedTokenAddress(mintPubkey, publicKey);\r\n const accountInfo = await connection.getAccountInfo(tokenAccountAddress);\r\n\r\n // check if account not associated with this return 0 balance \r\n if (!accountInfo) {\r\n return successResponse({\r\n balance: \"0\",\r\n });\r\n }\r\n\r\n const rawBalance = await connection.getTokenAccountBalance(tokenAccountAddress);\r\n return successResponse({\r\n balance: formatAmount(rawBalance.value.amount, rawBalance.value.decimals),\r\n _rawBalance: rawBalance.value.amount,\r\n _decimal: rawBalance.value.decimals,\r\n });\r\n }\r\n\r\n const balance = await connection.getBalance(publicKey);\r\n return successResponse({\r\n balance: formatAmount(balance.toString(), 9),\r\n _rawBalance: parseAmount(balance, 9),\r\n _decimal: 9,\r\n });\r\n } catch (error) {\r\n throw error;\r\n }\r\n }\r\n\r\n async transfer({ privateKey, contractAddress, rpcUrl, ...args }: TransferSolanaPayload & { createAssociatedAddress?: boolean; token2022?: boolean }): Promise<IResponse> {\r\n const connection = provider(rpcUrl ?? this.config.rpcUrl);\r\n\r\n try {\r\n // validate recipient\r\n const recipientAddress = await this.wallet.validAddress({ address: args.recipientAddress });\r\n if (!recipientAddress.isValid) throw new Error(\"address not valid\");\r\n\r\n // get sender info from privateKey using OKX wallet util\r\n const fromAccount = await this.wallet.getNewAddress({ privateKey });\r\n\r\n // recommended fees (CU)\r\n let { computeUnitLimit, computeUnitPrice } = await this.getRecommendedFees(connection);\r\n if (args.gasLimit) computeUnitLimit = args.gasLimit;\r\n if (args.gasPrice) computeUnitPrice = parseInt(args.gasPrice as any, 10);\r\n\r\n // get latest blockhash\r\n const { blockhash } = await connection.getLatestBlockhash();\r\n\r\n // ---------- SPL TOKEN FLOW ----------\r\n if (contractAddress) {\r\n const mintPubkey = new solanaWeb3.PublicKey(contractAddress);\r\n const fromPubkey = new solanaWeb3.PublicKey(fromAccount.address);\r\n const recipientPubkey = new solanaWeb3.PublicKey(recipientAddress.address);\r\n\r\n // Associated Token Accounts (computed, not necessarily exist)\r\n const fromTokenAccount = await getAssociatedTokenAddress(mintPubkey, fromPubkey);\r\n const recipientTokenAccount = await getAssociatedTokenAddress(mintPubkey, recipientPubkey);\r\n\r\n // Try to read decimals from sender token account first, fallback to token supply\r\n let decimals = 0;\r\n try {\r\n const fromTokenBal = await connection.getTokenAccountBalance(fromTokenAccount);\r\n decimals = fromTokenBal.value.decimals;\r\n } catch (err) {\r\n // fallback: try to fetch mint info (supply) to get decimals\r\n try {\r\n const mintAccountInfo = await connection.getParsedAccountInfo(mintPubkey);\r\n // parsed data path may vary; handle gracefully\r\n // if parsed exists:\r\n if (mintAccountInfo.value && (mintAccountInfo.value.data as any).parsed) {\r\n const parsed = (mintAccountInfo.value.data as any).parsed;\r\n decimals = parsed.info.decimals || 0;\r\n }\r\n } catch (err2) {\r\n // cannot determine decimals — throw explicit error\r\n throw new Error(\"Failed to determine token decimals for mint \" + contractAddress);\r\n }\r\n }\r\n\r\n // Check whether recipient ATA exists\r\n const recipientAtaInfo = await connection.getAccountInfo(recipientTokenAccount);\r\n const recipientHasATA = !!recipientAtaInfo;\r\n\r\n // decide whether to create ATA: user can pass args.createAssociatedAddress\r\n const shouldCreateATA = !!(args.createAssociatedAddress) && !recipientHasATA;\r\n\r\n // compute token amount (smallest unit)\r\n // args.amount is assumed token amount in human units (eg. 1.5 USDC)\r\n const rawTokenAmount = BigInt(Math.round((args.amount ?? 0) * (10 ** decimals)));\r\n\r\n // Build params for OKX wallet signTransaction (tokenTransfer)\r\n const params = {\r\n privateKey,\r\n data: {\r\n type: \"tokenTransfer\",\r\n payer: fromAccount.address,\r\n from: fromAccount.address,\r\n to: recipientAddress.address,\r\n blockHash: blockhash,\r\n mint: contractAddress,\r\n amount: rawTokenAmount.toString(), // send as string\r\n decimal: decimals,\r\n createAssociatedAddress: !!shouldCreateATA, // OKX SDK should create ATA if true\r\n token2022: !!args.token2022, // allow override by user\r\n computeUnitLimit,\r\n computeUnitPrice\r\n }\r\n };\r\n\r\n // sign & broadcast\r\n const signedTx = await this.wallet.signTransaction(params);\r\n // OKX returns base58 signed tx — decode and broadcast\r\n const rawTx = base.fromBase58(signedTx);\r\n const txid = await connection.sendRawTransaction(rawTx, { skipPreflight: false, maxRetries: 3 });\r\n return successResponse({ hash: txid });\r\n }\r\n\r\n // ---------- NATIVE SOL FLOW ----------\r\n const lamports = Math.round((args.amount ?? 0) * solanaWeb3.LAMPORTS_PER_SOL);\r\n\r\n const solParams = {\r\n privateKey,\r\n data: {\r\n type: \"transfer\",\r\n payer: fromAccount.address,\r\n from: fromAccount.address,\r\n to: recipientAddress.address,\r\n blockHash: blockhash,\r\n amount: lamports,\r\n computeUnitLimit,\r\n computeUnitPrice\r\n }\r\n };\r\n\r\n const signedTx = await this.wallet.signTransaction(solParams);\r\n const rawTx = base.fromBase58(signedTx);\r\n const broadcast = await connection.sendRawTransaction(rawTx, {\r\n skipPreflight: false,\r\n maxRetries: 3,\r\n });\r\n\r\n return successResponse({ hash: broadcast });\r\n } catch (error) {\r\n throw error;\r\n }\r\n }\r\n\r\n async getTokenInfo({ contractAddress, rpcUrl, cluster = \"mainnet-beta\" }: GetSplTokenInfoPayload): Promise<IResponse> {\r\n try {\r\n const connection = provider(rpcUrl ?? this.config.rpcUrl);\r\n const mintAddress = new solanaWeb3.PublicKey(contractAddress);\r\n\r\n // --- step 1: fetch mint info dari RPC ---\r\n const mintInfo = await connection.getParsedAccountInfo(mintAddress);\r\n const parsedMint = (mintInfo?.value?.data as any)?.parsed?.info;\r\n\r\n\r\n const decimals = parsedMint?.decimals ?? 0;\r\n const supplyRaw = parsedMint?.supply ?? \"0\";\r\n\r\n // --- step 2: coba ambil info dari TokenListProvider ---\r\n let tokenName = \"\";\r\n let tokenSymbol = \"\";\r\n let tokenLogo = \"\";\r\n\r\n try {\r\n const env = CLUSTER_ENV[cluster] ?? ENV.MainnetBeta;\r\n const provider = await new TokenListProvider().resolve();\r\n const tokenList = provider.filterByChainId(env).getList();\r\n const tokenMap = new Map(tokenList.map((item) => [item.address, item]));\r\n const token = tokenMap.get(mintAddress.toBase58());\r\n\r\n if (token) {\r\n tokenName = token.name;\r\n tokenSymbol = token.symbol;\r\n tokenLogo = token.logoURI || \"\";\r\n }\r\n } catch (err) {\r\n console.warn(\"TokenListProvider failed:\", err);\r\n }\r\n\r\n // --- step 3: fallback kalau name/symbol kosong ---\r\n if (!tokenName) tokenName = contractAddress.slice(0, 6) + \"...\";\r\n if (!tokenSymbol) tokenSymbol = \"SPL\";\r\n\r\n const data: TokenInfo = {\r\n name: tokenName,\r\n symbol: tokenSymbol,\r\n address: contractAddress,\r\n decimals,\r\n logoUrl: tokenLogo || \"\",\r\n totalSupply: (Number(supplyRaw) / 10 ** decimals).toString(),\r\n };\r\n\r\n return successResponse({ ...data });\r\n } catch (error) {\r\n throw error;\r\n }\r\n };\r\n\r\n private async getRecommendedFees(connection: solanaWeb3.Connection) {\r\n let computeUnitLimit = 140000; // default \r\n let computeUnitPrice = 0; // default = 0 (without priority fee)\r\n\r\n try {\r\n const fees = await connection.getRecentPrioritizationFees();\r\n if (fees.length > 0) {\r\n // Ambil median biar stabil\r\n const sorted = fees.map(f => f.prioritizationFee).sort((a, b) => a - b);\r\n computeUnitPrice = sorted[Math.floor(sorted.length / 2)] || 0;\r\n }\r\n } catch (err) {\r\n console.warn(\"Failed to fetch prioritization fees, fallback to defaults\");\r\n }\r\n\r\n return { computeUnitLimit, computeUnitPrice };\r\n }\r\n}\r\n","// src/services/wallet-registry.ts\r\nimport { EvmWallet, BtcWallet, SolWallet } from \"./index\";\r\n\r\nexport const WalletRegistry = {\r\n EVM: EvmWallet,\r\n BTC: BtcWallet,\r\n SOL: SolWallet,\r\n};\r\n\r\nexport type WalletTypes = keyof typeof WalletRegistry;\r\n","import { WalletRegistry, WalletTypes } from \"../services/wallet-registry\";\r\nimport { DexConfig } from \"../types\";\r\n\r\n\r\ninterface ClientConfig<T extends WalletTypes> {\r\n network: T;\r\n chainId?: string;\r\n rpcUrl?: string;\r\n}\r\n\r\nexport class CryptoClientSdk<T extends WalletTypes> {\r\n private network: T;\r\n private chainId?: string;\r\n private rpcUrl?: string;\r\n\r\n constructor({ network, chainId, rpcUrl }: ClientConfig<T>) {\r\n this.network = network;\r\n this.chainId = chainId;\r\n this.rpcUrl = rpcUrl;\r\n }\r\n\r\n getWallet(): InstanceType<(typeof WalletRegistry)[T]> {\r\n const WalletClass = WalletRegistry[this.network];\r\n\r\n const config: DexConfig = {\r\n chainId: this.chainId,\r\n rpcUrl: this.rpcUrl,\r\n };\r\n\r\n return new WalletClass(config) as InstanceType<(typeof WalletRegistry)[T]>;\r\n }\r\n}"],"names":["DexAPI","config","this","1","id","explorer","defaultSlippage","maxSlippage","confirmationTimeout","maxRetries","11155111","56","97","501","computeUnits","784","43114","137","80002","146","8453","196","10","42161","100","169","250","324","1101","5000","25","534352","59144","1088","1030","81457","7000","66","networks","_extends","defaultNetworkConfigs","prototype","getNetworkConfig","chainId","networkConfig","_this$config$networks","Error","BaseWallet","timeout","dex","generateMnemonic","_generateMnemonic","_asyncToGenerator","_regenerator","m","_callee","numWords","_context","a","bip39","_x","apply","arguments","key","get","parseAmount","amount","decimals","bn","BigNumber","multiplier","pow","BigInt","times","toFixed","formatAmount","raw","toString","divisor","dividedBy","toNumber","parseEther","v","formatEther","parseGwei","formatGwei","provider","rpcUrl","ethers","JsonRpcProvider","EvmWallet","_BaseWallet","_this","call","wallet","EthWalletOkx","_inheritsLoose","_proto","getContract","_getContract","_ref","contractAddress","privateKey","abi","providerInstance","gasFeeData","nonce","contract","signer","_t","w","n","getFeeData","Wallet","getAddress","getTransactionCount","Contract","erc20Abi","getCode","generateWallet","_generateWallet","_callee2","_ref2","mnemonic","hdPath","getMnemonic","derivePrivateKey","_yield$this$wallet$ge","_t2","_context2","derivationPath","getDerivedPrivateKey","getNewAddress","address","publicKey","_x2","getBalance","_getBalance","_callee3","_ref3","_yield$this$getContra","_balance","balance","_context3","balanceOf","_rawBalance","_decimal","_x3","transfer","_transfer","_callee4","_ref4","args","_yield$this$getContra2","recipientAddress","prio","value","gasLimit","estimate","fee","signParams","signedTx","_t3","_context4","_objectWithoutPropertiesLoose","_excluded","validAddress","isValid","maxPriorityFeePerGas","maxFeePerGas","gasPrice","estimateGas","data","model","fees","regular","buildSignParams","signTransaction","broadcastTransaction","_x4","getTransaction","_getTransaction","_callee5","_ref5","hash","withReceipt","_yield$Promise$all","_tx","receipt","memo","_context5","p","Promise","all","getTransactionReceipt","tx","toUtf8String","transaction","_x5","getTokenInfo","_getTokenInfo","_callee6","_ref6","_yield$Promise$all2","_context6","name","symbol","totalSupply","_x6","smartContractCall","_smartContractCall","_callee7","_args$rpcUrl","_yield$this$getContra5","overrides","_context7","contractAbi","methodType","params","length","method","concat","_x7","_estimateGas","_callee8","_ref7","_block$baseFeePerGas","_feeData$maxPriorityF","_yield$Promise$all3","feeData","applyMultiplier","baseGasPrice","_regularFee","_expressFee","_instantFee","baseFee","priorityFee","regularPriority","regularMaxFee","expressPriority","expressMaxFee","instantPriority","instantMaxFee","MAX_GAS_GWEI","cap","regularFee","expressFee","instantFee","_context8","getNetwork","Number","to","hexlify","toUtf8Bytes","base","mul","Math","floor","gasPriceGwei","express","instant","getBlock","baseFeePerGas","baseFeeGwei","priorityFeeGwei","perCoin","_x8","_buildSignParams","_callee9","_ref8","txBase","_t7","_t8","_t9","_t0","_t1","_t10","_t11","_t12","_context9","currentChain","type","_x9","BtcWallet","cluster","TBtcWallet","BtcWalletOkxm","solanaWeb3","ACCOUNT_LAYOUT","BufferLayout","CLUSTER_ENV","mainnet-beta","ENV","MainnetBeta","testnet","Testnet","devnet","Devnet","SolWallet","SolWalletOkx","connection","mintPubkey","tokenAccountAddress","rawBalance","getAssociatedTokenAddress","getAccountInfo","getTokenAccountBalance","_args$amount2","fromAccount","_yield$this$getRecomm","computeUnitLimit","computeUnitPrice","blockhash","_args$amount","fromPubkey","recipientPubkey","fromTokenAccount","recipientTokenAccount","mintAccountInfo","recipientHasATA","shouldCreateATA","rawTokenAmount","_rawTx","lamports","solParams","rawTx","getRecommendedFees","parseInt","getLatestBlockhash","getParsedAccountInfo","parsed","info","createAssociatedAddress","round","payer","from","blockHash","mint","decimal","token2022","fromBase58","sendRawTransaction","skipPreflight","_ref4$cluster","_mintInfo$value","_parsedMint$decimals","_parsedMint$supply","mintAddress","mintInfo","parsedMint","supplyRaw","tokenName","tokenSymbol","tokenLogo","_CLUSTER_ENV$cluster","env","tokenList","tokenMap","token","supply","TokenListProvider","resolve","filterByChainId","getList","Map","map","item","toBase58","logoURI","console","warn","slice","logoUrl","_getRecommendedFees","sorted","getRecentPrioritizationFees","f","prioritizationFee","sort","b","WalletRegistry","EVM","BTC","SOL","CryptoClientSdk","network","getWallet","WalletClass"],"mappings":"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"}