@swapkit/helpers 1.0.0-rc.95 → 1.0.0-rc.97

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1343,11 +1343,13 @@ var getContractDecimals = async ({ chain, to }) => {
1343
1343
  var getETHAssetDecimal = (symbol) => {
1344
1344
  if (symbol === Chain.Ethereum)
1345
1345
  return BaseDecimal.ETH;
1346
- const [, address] = symbol.split("-");
1346
+ const splitSymbol = symbol.split("-");
1347
+ const address = splitSymbol.length === 1 ? undefined : splitSymbol[splitSymbol.length - 1];
1347
1348
  return address?.startsWith("0x") ? getContractDecimals({ chain: Chain.Ethereum, to: address }) : BaseDecimal.ETH;
1348
1349
  };
1349
1350
  var getAVAXAssetDecimal = (symbol) => {
1350
- const [, address] = symbol.split("-");
1351
+ const splitSymbol = symbol.split("-");
1352
+ const address = splitSymbol.length === 1 ? undefined : splitSymbol[splitSymbol.length - 1];
1351
1353
  return address?.startsWith("0x") ? getContractDecimals({ chain: Chain.Avalanche, to: address.toLowerCase() }) : BaseDecimal.AVAX;
1352
1354
  };
1353
1355
  var getBSCAssetDecimal = (symbol) => {
@@ -1395,7 +1397,9 @@ var getCommonAssetInfo = (assetString) => {
1395
1397
  case `${Chain.Ethereum}.vTHOR`:
1396
1398
  return { identifier: "ETH.vTHOR-0x815c23eca83261b6ec689b60cc4a58b54bc24d8d", decimal: 18 };
1397
1399
  case Chain.Arbitrum:
1398
- return { identifier: `${Chain.Arbitrum}.ETH`, decimal: 18 };
1400
+ return { identifier: `${Chain.Arbitrum}.ETH`, decimal: BaseDecimal[assetString] };
1401
+ case Chain.Optimism:
1402
+ return { identifier: `${Chain.Optimism}.ETH`, decimal: BaseDecimal[assetString] };
1399
1403
  case Chain.Cosmos:
1400
1404
  return { identifier: "GAIA.ATOM", decimal: BaseDecimal[assetString] };
1401
1405
  case Chain.THORChain:
@@ -1442,7 +1446,8 @@ var assetFromString = (assetString) => {
1442
1446
  const [chain, ...symbolArray] = assetString.split(".");
1443
1447
  const synth = assetString.includes("/");
1444
1448
  const symbol = symbolArray.join(".");
1445
- const ticker = symbol?.split("-")?.[0];
1449
+ const splitSymbol = symbol?.split("-");
1450
+ const ticker = splitSymbol?.length ? splitSymbol.length === 1 ? splitSymbol[0] : splitSymbol.slice(0, -1).join("-") : undefined;
1446
1451
  return { chain, symbol, ticker, synth };
1447
1452
  };
1448
1453
  var potentialScamRegex = new RegExp(/(.)\1{6}|\.ORG|\.NET|\.FINANCE|\.COM|WWW|HTTP|\\\\|\/\/|[\s$%:[\]]/, "gmi");
@@ -1450,7 +1455,8 @@ var evmAssetHasAddress = (assetString) => {
1450
1455
  const [chain, symbol] = assetString.split(".");
1451
1456
  if (!EVMChains.includes(chain))
1452
1457
  return true;
1453
- const [, address] = symbol.split("-");
1458
+ const splitSymbol = symbol.split("-");
1459
+ const address = splitSymbol.length === 1 ? undefined : splitSymbol[splitSymbol.length - 1];
1454
1460
  return isGasAsset({ chain, symbol }) || !!address;
1455
1461
  };
1456
1462
  var filterAssets = (tokens2) => tokens2.filter(({ chain, value, symbol }) => {
@@ -1775,7 +1781,6 @@ var methodsToWrap = [
1775
1781
  "call",
1776
1782
  "sendTransaction",
1777
1783
  "transfer",
1778
- "getBalance",
1779
1784
  "isApproved",
1780
1785
  "approvedAmount",
1781
1786
  "EIP1193SendTransaction",
@@ -2206,8 +2211,10 @@ var getAssetInfo = function(identifier) {
2206
2211
  throw new Error("Invalid asset identifier");
2207
2212
  const adjustedIdentifier = identifier.includes(".") && !isSynthetic ? identifier : `${isMaya ? Chain.Maya : Chain.THORChain}.${synthSymbol}`;
2208
2213
  const [chain, ...rest] = adjustedIdentifier.split(".");
2209
- const [ticker, address] = (isSynthetic ? synthSymbol : rest.join(".")).split("-");
2210
2214
  const symbol = isSynthetic ? synthSymbol : rest.join(".");
2215
+ const splitSymbol = symbol.split("-");
2216
+ const ticker = splitSymbol.length === 1 ? splitSymbol[0] : splitSymbol.slice(0, -1).join("-");
2217
+ const address = splitSymbol.length === 1 ? undefined : splitSymbol[splitSymbol.length - 1];
2211
2218
  return {
2212
2219
  address: address?.toLowerCase(),
2213
2220
  chain,
@@ -2431,4 +2438,4 @@ export {
2431
2438
  AGG_SWAP
2432
2439
  };
2433
2440
 
2434
- //# debugId=7035A906EE0E4E6464756e2164756e21
2441
+ //# debugId=A3CE2B4FF4722BB164756e2164756e21
package/dist/index.js.map CHANGED
@@ -12,19 +12,19 @@
12
12
  "import type { CosmosWallets, ThorchainWallets } from \"@swapkit/toolbox-cosmos\";\nimport type { EVMWallets } from \"@swapkit/toolbox-evm\";\nimport type { SubstrateWallets } from \"@swapkit/toolbox-substrate\";\nimport type { UTXOWallets } from \"@swapkit/toolbox-utxo\";\nimport type { AssetValue } from \"../modules/assetValue\";\nimport type { Chain } from \"./chains\";\n\nexport enum WalletOption {\n KEYSTORE = \"KEYSTORE\",\n KEEPKEY = \"KEEPKEY\",\n XDEFI = \"XDEFI\",\n METAMASK = \"METAMASK\",\n COINBASE_WEB = \"COINBASE_WEB\",\n COINBASE_MOBILE = \"COINBASE_MOBILE\",\n TREZOR = \"TREZOR\",\n TRUSTWALLET_WEB = \"TRUSTWALLET_WEB\",\n LEDGER = \"LEDGER\",\n KEPLR = \"KEPLR\",\n OKX = \"OKX\",\n OKX_MOBILE = \"OKX_MOBILE\",\n BRAVE = \"BRAVE\",\n WALLETCONNECT = \"WALLETCONNECT\",\n}\n\nexport enum LedgerErrorCode {\n NoError = 0x9000,\n LockedDevice = 0x5515,\n TC_NotFound = 65535,\n}\n\nexport type ChainWallet = {\n chain: Chain;\n address: string;\n balance: AssetValue[];\n walletType: WalletOption;\n};\n\nexport type EmptyWallet = { [key in Chain]?: unknown };\n\nexport type BaseWallet<T extends EmptyWallet | unknown> = {\n // @ts-expect-error\n [key in Chain]: ChainWallet & T[key];\n};\n\nexport type Wallet = BaseWallet<\n EVMWallets & CosmosWallets & ThorchainWallets & UTXOWallets & SubstrateWallets\n>;\n",
13
13
  "import type { AssetValue } from \"../modules/assetValue\";\n\nexport type GenericSwapParams = {\n buyAsset: AssetValue;\n sellAsset: AssetValue;\n recipient: string;\n};\n\nexport type SwapParams<PluginNames = string, T = GenericSwapParams> = T & {\n pluginName: PluginNames;\n};\n\nexport enum FeeOption {\n Average = \"average\",\n Fast = \"fast\",\n Fastest = \"fastest\",\n}\n\nexport enum ApproveMode {\n Approve = \"approve\",\n CheckOnly = \"checkOnly\",\n}\n\nexport type ApproveReturnType<T extends ApproveMode> = T extends \"checkOnly\"\n ? Promise<boolean>\n : Promise<string>;\n\nexport type WalletTxParams = {\n feeOptionKey?: FeeOption;\n from?: string;\n memo?: string; // optional memo to pass\n recipient: string;\n};\n\nexport enum MemoType {\n BOND = \"BOND\",\n DEPOSIT = \"+\",\n LEAVE = \"LEAVE\",\n THORNAME_REGISTER = \"~\",\n UNBOND = \"UNBOND\",\n WITHDRAW = \"-\",\n OPEN_LOAN = \"$+\",\n CLOSE_LOAN = \"$-\",\n}\n",
14
14
  "import type { Options } from \"ky\";\nimport ky from \"ky\";\n\nlet kyClient: typeof ky;\n\nexport const defaultRequestHeaders =\n typeof window !== \"undefined\"\n ? ({} as Record<string, string>)\n : { referrer: \"https://sk.thorswap.net\", referer: \"https://sk.thorswap.net\" };\n\nexport function setRequestClientConfig({ apiKey, ...config }: Options & { apiKey?: string }) {\n kyClient = ky.create({\n ...config,\n headers: { ...defaultRequestHeaders, ...config.headers, \"x-api-key\": apiKey },\n });\n}\n\nfunction getKyClient() {\n if (kyClient) return kyClient;\n kyClient = ky.create({ headers: defaultRequestHeaders });\n return kyClient;\n}\n\nexport const RequestClient = {\n get: <T>(url: string | URL | Request, options?: Options) =>\n getKyClient().get(url, options).json<T>(),\n post: <T>(url: string | URL | Request, options?: Options) =>\n getKyClient().post(url, options).json<T>(),\n};\n",
15
- "import { RequestClient } from \"../modules/requestClient.ts\";\nimport { BaseDecimal, Chain, ChainToRPC, type EVMChain, EVMChains } from \"../types/chains.ts\";\nimport type { TokenNames } from \"../types/tokens.ts\";\n\nconst getDecimalMethodHex = \"0x313ce567\";\n\nexport type CommonAssetString =\n | `${Chain.Maya}.MAYA`\n | `${Chain.Ethereum}.THOR`\n | `${Chain.Ethereum}.vTHOR`\n | `${Chain.Kujira}.USK`\n | Chain;\n\nconst getContractDecimals = async ({ chain, to }: { chain: EVMChain; to: string }) => {\n try {\n const { result } = await RequestClient.post<{ result: string }>(ChainToRPC[chain], {\n headers: {\n accept: \"*/*\",\n \"content-type\": \"application/json\",\n \"cache-control\": \"no-cache\",\n },\n body: JSON.stringify({\n id: 44,\n jsonrpc: \"2.0\",\n method: \"eth_call\",\n params: [{ to: to.toLowerCase(), data: getDecimalMethodHex }, \"latest\"],\n }),\n });\n\n return Number.parseInt(BigInt(result || BaseDecimal[chain]).toString());\n } catch (error) {\n console.error(error);\n return BaseDecimal[chain];\n }\n};\n\nconst getETHAssetDecimal = (symbol: string) => {\n if (symbol === Chain.Ethereum) return BaseDecimal.ETH;\n const [, address] = symbol.split(\"-\");\n\n return address?.startsWith(\"0x\")\n ? getContractDecimals({ chain: Chain.Ethereum, to: address })\n : BaseDecimal.ETH;\n};\n\nconst getAVAXAssetDecimal = (symbol: string) => {\n const [, address] = symbol.split(\"-\");\n\n return address?.startsWith(\"0x\")\n ? getContractDecimals({ chain: Chain.Avalanche, to: address.toLowerCase() })\n : BaseDecimal.AVAX;\n};\n\nconst getBSCAssetDecimal = (symbol: string) => {\n if (symbol === Chain.BinanceSmartChain) return BaseDecimal.BSC;\n\n return BaseDecimal.BSC;\n};\n\nexport const getDecimal = ({ chain, symbol }: { chain: Chain; symbol: string }) => {\n switch (chain) {\n case Chain.Ethereum:\n return getETHAssetDecimal(symbol);\n case Chain.Avalanche:\n return getAVAXAssetDecimal(symbol);\n case Chain.BinanceSmartChain:\n return getBSCAssetDecimal(symbol);\n default:\n return BaseDecimal[chain];\n }\n};\n\nexport const isGasAsset = ({ chain, symbol }: { chain: Chain; symbol: string }) => {\n switch (chain) {\n case Chain.Arbitrum:\n case Chain.Optimism:\n return symbol === \"ETH\";\n case Chain.Maya:\n return symbol === \"CACAO\";\n case Chain.Kujira:\n return symbol === \"KUJI\";\n case Chain.Cosmos:\n return symbol === \"ATOM\";\n case Chain.Polygon:\n return symbol === \"MATIC\";\n case Chain.BinanceSmartChain:\n return symbol === \"BNB\";\n case Chain.THORChain:\n return symbol === \"RUNE\";\n\n default:\n return symbol === chain;\n }\n};\n\nexport const getCommonAssetInfo = (\n assetString: CommonAssetString,\n): { identifier: string; decimal: number } => {\n switch (assetString) {\n case `${Chain.Ethereum}.THOR`:\n return { identifier: \"ETH.THOR-0xa5f2211b9b8170f694421f2046281775e8468044\", decimal: 18 };\n case `${Chain.Ethereum}.vTHOR`:\n return { identifier: \"ETH.vTHOR-0x815c23eca83261b6ec689b60cc4a58b54bc24d8d\", decimal: 18 };\n\n case Chain.Arbitrum:\n return { identifier: `${Chain.Arbitrum}.ETH`, decimal: 18 };\n\n case Chain.Cosmos:\n return { identifier: \"GAIA.ATOM\", decimal: BaseDecimal[assetString] };\n case Chain.THORChain:\n return { identifier: \"THOR.RUNE\", decimal: BaseDecimal[assetString] };\n case Chain.BinanceSmartChain:\n return { identifier: \"BSC.BNB\", decimal: BaseDecimal[assetString] };\n case Chain.Maya:\n return { identifier: \"MAYA.CACAO\", decimal: BaseDecimal.MAYA };\n case `${Chain.Maya}.MAYA`:\n return { identifier: \"MAYA.MAYA\", decimal: 4 };\n\n case `${Chain.Kujira}.USK`:\n return { identifier: `${Chain.Kujira}.USK`, decimal: 6 };\n\n default:\n return { identifier: `${assetString}.${assetString}`, decimal: BaseDecimal[assetString] };\n }\n};\n\n// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: TODO: Refactor\nexport const getAssetType = ({ chain, symbol }: { chain: Chain; symbol: string }) => {\n if (symbol.includes(\"/\")) return \"Synth\";\n\n switch (chain) {\n case Chain.Cosmos:\n return symbol === \"ATOM\" ? \"Native\" : Chain.Cosmos;\n case Chain.Kujira:\n return symbol === Chain.Kujira ? \"Native\" : Chain.Kujira;\n case Chain.Binance:\n return symbol === Chain.Binance ? \"Native\" : \"BEP2\";\n case Chain.BinanceSmartChain:\n return symbol === Chain.Binance ? \"Native\" : \"BEP20\";\n case Chain.Ethereum:\n return symbol === Chain.Ethereum ? \"Native\" : \"ERC20\";\n case Chain.Avalanche:\n return symbol === Chain.Avalanche ? \"Native\" : Chain.Avalanche;\n case Chain.Polygon:\n return symbol === Chain.Polygon ? \"Native\" : \"POLYGON\";\n\n case Chain.Arbitrum:\n return [Chain.Ethereum, Chain.Arbitrum].includes(symbol as Chain) ? \"Native\" : \"ARBITRUM\";\n case Chain.Optimism:\n return [Chain.Ethereum, Chain.Optimism].includes(symbol as Chain) ? \"Native\" : \"OPTIMISM\";\n\n default:\n return \"Native\";\n }\n};\n\nexport const assetFromString = (assetString: string) => {\n const [chain, ...symbolArray] = assetString.split(\".\") as [Chain, ...(string | undefined)[]];\n const synth = assetString.includes(\"/\");\n const symbol = symbolArray.join(\".\");\n const ticker = symbol?.split(\"-\")?.[0];\n\n return { chain, symbol, ticker, synth };\n};\n\nconst potentialScamRegex = new RegExp(\n /(.)\\1{6}|\\.ORG|\\.NET|\\.FINANCE|\\.COM|WWW|HTTP|\\\\\\\\|\\/\\/|[\\s$%:[\\]]/,\n \"gmi\",\n);\n\nconst evmAssetHasAddress = (assetString: string) => {\n const [chain, symbol] = assetString.split(\".\") as [EVMChain, string];\n if (!EVMChains.includes(chain as EVMChain)) return true;\n const [, address] = symbol.split(\"-\") as [string, string?];\n\n return isGasAsset({ chain: chain as Chain, symbol }) || !!address;\n};\n\nexport const filterAssets = (\n tokens: {\n value: string;\n decimal: number;\n chain: Chain;\n symbol: string;\n }[],\n) =>\n tokens.filter(({ chain, value, symbol }) => {\n const assetString = `${chain}.${symbol}`;\n\n return (\n !potentialScamRegex.test(assetString) && evmAssetHasAddress(assetString) && value !== \"0\"\n );\n });\n\nexport async function findAssetBy(\n params: { chain: EVMChain; contract: string } | { identifier: `${Chain}.${string}` },\n) {\n const tokenPackages = await import(\"@swapkit/tokens\");\n\n for (const tokenList of Object.values(tokenPackages)) {\n for (const { identifier, chain: tokenChain, ...rest } of tokenList.tokens) {\n if (\"identifier\" in params && identifier === params.identifier) {\n return identifier as TokenNames;\n }\n\n if (\n \"address\" in rest &&\n \"chain\" in params &&\n tokenChain === params.chain &&\n rest.address.toLowerCase() === params.contract.toLowerCase()\n )\n return identifier as TokenNames;\n }\n }\n\n return;\n}\n",
15
+ "import { RequestClient } from \"../modules/requestClient.ts\";\nimport { BaseDecimal, Chain, ChainToRPC, type EVMChain, EVMChains } from \"../types/chains.ts\";\nimport type { TokenNames } from \"../types/tokens.ts\";\n\nconst getDecimalMethodHex = \"0x313ce567\";\n\nexport type CommonAssetString =\n | `${Chain.Maya}.MAYA`\n | `${Chain.Ethereum}.THOR`\n | `${Chain.Ethereum}.vTHOR`\n | `${Chain.Kujira}.USK`\n | Chain;\n\nconst getContractDecimals = async ({ chain, to }: { chain: EVMChain; to: string }) => {\n try {\n const { result } = await RequestClient.post<{ result: string }>(ChainToRPC[chain], {\n headers: {\n accept: \"*/*\",\n \"content-type\": \"application/json\",\n \"cache-control\": \"no-cache\",\n },\n body: JSON.stringify({\n id: 44,\n jsonrpc: \"2.0\",\n method: \"eth_call\",\n params: [{ to: to.toLowerCase(), data: getDecimalMethodHex }, \"latest\"],\n }),\n });\n\n return Number.parseInt(BigInt(result || BaseDecimal[chain]).toString());\n } catch (error) {\n console.error(error);\n return BaseDecimal[chain];\n }\n};\n\nconst getETHAssetDecimal = (symbol: string) => {\n if (symbol === Chain.Ethereum) return BaseDecimal.ETH;\n const splitSymbol = symbol.split(\"-\");\n const address = splitSymbol.length === 1 ? undefined : splitSymbol[splitSymbol.length - 1];\n\n return address?.startsWith(\"0x\")\n ? getContractDecimals({ chain: Chain.Ethereum, to: address })\n : BaseDecimal.ETH;\n};\n\nconst getAVAXAssetDecimal = (symbol: string) => {\n const splitSymbol = symbol.split(\"-\");\n const address = splitSymbol.length === 1 ? undefined : splitSymbol[splitSymbol.length - 1];\n\n return address?.startsWith(\"0x\")\n ? getContractDecimals({ chain: Chain.Avalanche, to: address.toLowerCase() })\n : BaseDecimal.AVAX;\n};\n\nconst getBSCAssetDecimal = (symbol: string) => {\n if (symbol === Chain.BinanceSmartChain) return BaseDecimal.BSC;\n\n return BaseDecimal.BSC;\n};\n\nexport const getDecimal = ({ chain, symbol }: { chain: Chain; symbol: string }) => {\n switch (chain) {\n case Chain.Ethereum:\n return getETHAssetDecimal(symbol);\n case Chain.Avalanche:\n return getAVAXAssetDecimal(symbol);\n case Chain.BinanceSmartChain:\n return getBSCAssetDecimal(symbol);\n default:\n return BaseDecimal[chain];\n }\n};\n\nexport const isGasAsset = ({ chain, symbol }: { chain: Chain; symbol: string }) => {\n switch (chain) {\n case Chain.Arbitrum:\n case Chain.Optimism:\n return symbol === \"ETH\";\n case Chain.Maya:\n return symbol === \"CACAO\";\n case Chain.Kujira:\n return symbol === \"KUJI\";\n case Chain.Cosmos:\n return symbol === \"ATOM\";\n case Chain.Polygon:\n return symbol === \"MATIC\";\n case Chain.BinanceSmartChain:\n return symbol === \"BNB\";\n case Chain.THORChain:\n return symbol === \"RUNE\";\n\n default:\n return symbol === chain;\n }\n};\n\nexport const getCommonAssetInfo = (\n assetString: CommonAssetString,\n): { identifier: string; decimal: number } => {\n switch (assetString) {\n case `${Chain.Ethereum}.THOR`:\n return { identifier: \"ETH.THOR-0xa5f2211b9b8170f694421f2046281775e8468044\", decimal: 18 };\n case `${Chain.Ethereum}.vTHOR`:\n return { identifier: \"ETH.vTHOR-0x815c23eca83261b6ec689b60cc4a58b54bc24d8d\", decimal: 18 };\n case Chain.Arbitrum:\n return { identifier: `${Chain.Arbitrum}.ETH`, decimal: BaseDecimal[assetString] };\n case Chain.Optimism:\n return { identifier: `${Chain.Optimism}.ETH`, decimal: BaseDecimal[assetString] };\n case Chain.Cosmos:\n return { identifier: \"GAIA.ATOM\", decimal: BaseDecimal[assetString] };\n case Chain.THORChain:\n return { identifier: \"THOR.RUNE\", decimal: BaseDecimal[assetString] };\n case Chain.BinanceSmartChain:\n return { identifier: \"BSC.BNB\", decimal: BaseDecimal[assetString] };\n case Chain.Maya:\n return { identifier: \"MAYA.CACAO\", decimal: BaseDecimal.MAYA };\n case `${Chain.Maya}.MAYA`:\n return { identifier: \"MAYA.MAYA\", decimal: 4 };\n\n case `${Chain.Kujira}.USK`:\n return { identifier: `${Chain.Kujira}.USK`, decimal: 6 };\n\n default:\n return { identifier: `${assetString}.${assetString}`, decimal: BaseDecimal[assetString] };\n }\n};\n\n// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: TODO: Refactor\nexport const getAssetType = ({ chain, symbol }: { chain: Chain; symbol: string }) => {\n if (symbol.includes(\"/\")) return \"Synth\";\n\n switch (chain) {\n case Chain.Cosmos:\n return symbol === \"ATOM\" ? \"Native\" : Chain.Cosmos;\n case Chain.Kujira:\n return symbol === Chain.Kujira ? \"Native\" : Chain.Kujira;\n case Chain.Binance:\n return symbol === Chain.Binance ? \"Native\" : \"BEP2\";\n case Chain.BinanceSmartChain:\n return symbol === Chain.Binance ? \"Native\" : \"BEP20\";\n case Chain.Ethereum:\n return symbol === Chain.Ethereum ? \"Native\" : \"ERC20\";\n case Chain.Avalanche:\n return symbol === Chain.Avalanche ? \"Native\" : Chain.Avalanche;\n case Chain.Polygon:\n return symbol === Chain.Polygon ? \"Native\" : \"POLYGON\";\n\n case Chain.Arbitrum:\n return [Chain.Ethereum, Chain.Arbitrum].includes(symbol as Chain) ? \"Native\" : \"ARBITRUM\";\n case Chain.Optimism:\n return [Chain.Ethereum, Chain.Optimism].includes(symbol as Chain) ? \"Native\" : \"OPTIMISM\";\n\n default:\n return \"Native\";\n }\n};\n\nexport const assetFromString = (assetString: string) => {\n const [chain, ...symbolArray] = assetString.split(\".\") as [Chain, ...(string | undefined)[]];\n const synth = assetString.includes(\"/\");\n const symbol = symbolArray.join(\".\");\n const splitSymbol = symbol?.split(\"-\");\n const ticker = splitSymbol?.length\n ? splitSymbol.length === 1\n ? splitSymbol[0]\n : splitSymbol.slice(0, -1).join(\"-\")\n : undefined;\n\n return { chain, symbol, ticker, synth };\n};\n\nconst potentialScamRegex = new RegExp(\n /(.)\\1{6}|\\.ORG|\\.NET|\\.FINANCE|\\.COM|WWW|HTTP|\\\\\\\\|\\/\\/|[\\s$%:[\\]]/,\n \"gmi\",\n);\n\nconst evmAssetHasAddress = (assetString: string) => {\n const [chain, symbol] = assetString.split(\".\") as [EVMChain, string];\n if (!EVMChains.includes(chain as EVMChain)) return true;\n const splitSymbol = symbol.split(\"-\");\n const address = splitSymbol.length === 1 ? undefined : splitSymbol[splitSymbol.length - 1];\n\n return isGasAsset({ chain: chain as Chain, symbol }) || !!address;\n};\n\nexport const filterAssets = (\n tokens: {\n value: string;\n decimal: number;\n chain: Chain;\n symbol: string;\n }[],\n) =>\n tokens.filter(({ chain, value, symbol }) => {\n const assetString = `${chain}.${symbol}`;\n\n return (\n !potentialScamRegex.test(assetString) && evmAssetHasAddress(assetString) && value !== \"0\"\n );\n });\n\nexport async function findAssetBy(\n params: { chain: EVMChain; contract: string } | { identifier: `${Chain}.${string}` },\n) {\n const tokenPackages = await import(\"@swapkit/tokens\");\n\n for (const tokenList of Object.values(tokenPackages)) {\n for (const { identifier, chain: tokenChain, ...rest } of tokenList.tokens) {\n if (\"identifier\" in params && identifier === params.identifier) {\n return identifier as TokenNames;\n }\n\n if (\n \"address\" in rest &&\n \"chain\" in params &&\n tokenChain === params.chain &&\n rest.address.toLowerCase() === params.contract.toLowerCase()\n )\n return identifier as TokenNames;\n }\n }\n\n return;\n}\n",
16
16
  "import {\n Chain,\n type DerivationPathArray,\n type EVMChain,\n EVMChains,\n NetworkDerivationPath,\n} from \"../types\";\n\ntype Params = {\n index: number;\n chain: Chain;\n type?: \"legacy\" | \"ledgerLive\" | \"nativeSegwitMiddleAccount\" | \"segwit\";\n};\n\nconst updatedLastIndex = (path: DerivationPathArray, index: number) => [\n ...path.slice(0, path.length - 1),\n index,\n];\n\nexport function getDerivationPathFor({ chain, index, type }: Params) {\n if (EVMChains.includes(chain as EVMChain)) {\n if (type === \"legacy\") return [44, 60, 0, index];\n if (type === \"ledgerLive\") return [44, 60, index, 0, 0];\n return updatedLastIndex(NetworkDerivationPath[chain], index);\n }\n\n if ([Chain.Bitcoin, Chain.Litecoin].includes(chain)) {\n const chainId = chain === Chain.Bitcoin ? 0 : 2;\n\n if (type === \"nativeSegwitMiddleAccount\") return [84, chainId, index, 0, 0];\n if (type === \"segwit\") return [49, chainId, 0, 0, index];\n if (type === \"legacy\") return [44, chainId, 0, 0, index];\n return updatedLastIndex(NetworkDerivationPath[chain], index);\n }\n\n return updatedLastIndex(NetworkDerivationPath[chain], index);\n}\n\nexport function getWalletFormatFor(path: string) {\n const [_, purpose, chainId] = path.split(\"/\").map((p) => Number.parseInt(p, 10));\n\n if (chainId === 145) \"cashaddr\";\n\n switch (purpose) {\n case 44:\n return \"legacy\";\n case 49:\n return \"p2sh\";\n default:\n return \"bech32\";\n }\n}\n",
17
17
  "import { SwapKitNumber } from \"../index.ts\";\nimport { BaseDecimal } from \"../types/chains.ts\";\n\ntype ShareParams<T extends {}> = T & {\n liquidityUnits: string;\n poolUnits: string;\n};\n\ntype PoolParams = {\n runeAmount: string;\n assetAmount: string;\n runeDepth: string;\n assetDepth: string;\n};\n\n/**\n * Ref: https://gitlab.com/thorchain/thornode/-/issues/657\n * share = (s * A * (2 * T^2 - 2 * T * s + s^2))/T^3\n * s = stakeUnits for member (after factoring in withdrawBasisPoints)\n * T = totalPoolUnits for pool\n * A = assetDepth to be withdrawn\n *\n * Formula:\n * share = (s * A * (2 * T^2 - 2 * T * s + s^2))/T^3\n * (part1 * (part2 - part3 + part4)) / part5\n */\nexport function getAsymmetricRuneShare({\n liquidityUnits,\n poolUnits,\n runeDepth,\n}: ShareParams<{ runeDepth: string }>) {\n const s = toTCSwapKitNumber(liquidityUnits);\n const T = toTCSwapKitNumber(poolUnits);\n const A = toTCSwapKitNumber(runeDepth);\n\n const part1 = s.mul(A);\n const part2 = T.mul(T).mul(2);\n const part3 = T.mul(s).mul(2);\n const part4 = s.mul(s);\n const part5 = T.mul(T).mul(T);\n\n const numerator = part1.mul(part2.sub(part3).add(part4));\n\n return numerator.div(part5);\n}\n\nexport function getAsymmetricAssetShare({\n liquidityUnits,\n poolUnits,\n assetDepth,\n}: ShareParams<{ assetDepth: string }>) {\n const s = toTCSwapKitNumber(liquidityUnits);\n const T = toTCSwapKitNumber(poolUnits);\n const A = toTCSwapKitNumber(assetDepth);\n\n const part1 = s.mul(A);\n const part2 = T.mul(T).mul(2);\n const part3 = T.mul(s).mul(2);\n const part4 = s.mul(s);\n const numerator = part1.mul(part2.sub(part3).add(part4));\n const part5 = T.mul(T).mul(T);\n\n return numerator.div(part5);\n}\n\nexport function getAsymmetricRuneWithdrawAmount({\n percent,\n runeDepth,\n liquidityUnits,\n poolUnits,\n}: ShareParams<{ percent: number; runeDepth: string }>) {\n return getAsymmetricRuneShare({ runeDepth, liquidityUnits, poolUnits }).mul(percent);\n}\n\nexport function getAsymmetricAssetWithdrawAmount({\n percent,\n assetDepth,\n liquidityUnits,\n poolUnits,\n}: ShareParams<{ percent: number; assetDepth: string }>) {\n return getAsymmetricAssetShare({ assetDepth, liquidityUnits, poolUnits }).mul(percent);\n}\n\nfunction toTCSwapKitNumber(value: string) {\n return SwapKitNumber.fromBigInt(BigInt(value), BaseDecimal.THOR);\n}\n\nexport function getSymmetricPoolShare({\n liquidityUnits,\n poolUnits,\n runeDepth,\n assetDepth,\n}: ShareParams<{\n runeDepth: string;\n assetDepth: string;\n}>) {\n return {\n assetAmount: toTCSwapKitNumber(assetDepth).mul(liquidityUnits).div(poolUnits),\n runeAmount: toTCSwapKitNumber(runeDepth).mul(liquidityUnits).div(poolUnits),\n };\n}\n\nexport function getSymmetricWithdraw({\n liquidityUnits,\n poolUnits,\n runeDepth,\n assetDepth,\n percent,\n}: ShareParams<{\n runeDepth: string;\n assetDepth: string;\n percent: number;\n}>) {\n return Object.fromEntries(\n Object.entries(getSymmetricPoolShare({ liquidityUnits, poolUnits, runeDepth, assetDepth })).map(\n ([name, value]) => [name, value.mul(percent)],\n ),\n );\n}\n\nexport function getEstimatedPoolShare({\n runeDepth,\n poolUnits,\n assetDepth,\n liquidityUnits,\n runeAmount,\n assetAmount,\n}: ShareParams<{\n runeAmount: string;\n assetAmount: string;\n runeDepth: string;\n assetDepth: string;\n}>) {\n const R = new SwapKitNumber({ value: runeDepth, decimal: 8 });\n const A = new SwapKitNumber({ value: assetDepth, decimal: 8 });\n const P = new SwapKitNumber({ value: poolUnits, decimal: 8 });\n const runeAddAmount = new SwapKitNumber({ value: runeAmount, decimal: 8 });\n const assetAddAmount = new SwapKitNumber({ value: assetAmount, decimal: 8 });\n\n // liquidityUnits = P * (r*A + a*R + 2*r*a) / (r*A + a*R + 2*R*A)\n const rA = runeAddAmount.mul(A);\n const aR = assetAddAmount.mul(R);\n const ra = runeAddAmount.mul(assetAddAmount);\n const RA = R.mul(A);\n const numerator = P.mul(rA.add(aR.add(ra.mul(2))));\n const denominator = rA.add(aR.add(RA.mul(2)));\n const liquidityUnitsAfterAdd = numerator.div(denominator);\n const estimatedLiquidityUnits = toTCSwapKitNumber(liquidityUnits).add(liquidityUnitsAfterAdd);\n\n if (liquidityUnitsAfterAdd.getBaseValue(\"number\") === 0) {\n return estimatedLiquidityUnits.div(P).getBaseValue(\"number\");\n }\n\n // get pool units after add\n const newPoolUnits = P.add(estimatedLiquidityUnits);\n\n return estimatedLiquidityUnits.div(newPoolUnits).getBaseValue(\"number\");\n}\n\nexport function getLiquiditySlippage({\n runeAmount,\n assetAmount,\n runeDepth,\n assetDepth,\n}: PoolParams) {\n if (runeAmount === \"0\" || assetAmount === \"0\" || runeDepth === \"0\" || assetDepth === \"0\")\n return 0;\n // formula: (t * R - T * r)/ (T*r + R*T)\n const R = toTCSwapKitNumber(runeDepth);\n const T = toTCSwapKitNumber(assetDepth);\n const assetAddAmount = toTCSwapKitNumber(assetAmount);\n const runeAddAmount = toTCSwapKitNumber(runeAmount);\n\n const numerator = assetAddAmount.mul(R).sub(T.mul(runeAddAmount));\n const denominator = T.mul(runeAddAmount).add(R.mul(T));\n\n // set absolute value of percent, no negative allowed\n return Math.abs(numerator.div(denominator).getBaseValue(\"number\"));\n}\n",
18
18
  "import { Chain } from \"../types/chains\";\nimport { MemoType } from \"../types/sdk\";\n\nexport type ThornameRegisterParam = {\n name: string;\n chain: string;\n address: string;\n owner?: string;\n preferredAsset?: string;\n expiryBlock?: string;\n};\n\ntype WithChain<T extends {}> = T & { chain: Chain };\n\nexport type MemoOptions<T extends MemoType> = {\n [MemoType.BOND]: { address: string };\n [MemoType.LEAVE]: { address: string };\n [MemoType.CLOSE_LOAN]: { address: string; asset: string; minAmount?: string };\n [MemoType.OPEN_LOAN]: { address: string; asset: string; minAmount?: string };\n [MemoType.UNBOND]: { address: string; unbondAmount: number };\n [MemoType.DEPOSIT]: WithChain<{ symbol: string; address?: string; singleSide?: boolean }>;\n [MemoType.WITHDRAW]: WithChain<{\n ticker: string;\n symbol: string;\n basisPoints: number;\n targetAssetString?: string;\n singleSide?: boolean;\n }>;\n [MemoType.THORNAME_REGISTER]: Omit<ThornameRegisterParam, \"preferredAsset\" | \"expiryBlock\">;\n}[T];\n\nexport const getMemoFor = <T extends MemoType>(memoType: T, options: MemoOptions<T>) => {\n switch (memoType) {\n case MemoType.LEAVE:\n case MemoType.BOND: {\n const { address } = options as MemoOptions<MemoType.BOND>;\n return `${memoType}:${address}`;\n }\n\n case MemoType.UNBOND: {\n const { address, unbondAmount } = options as MemoOptions<MemoType.UNBOND>;\n return `${memoType}:${address}:${unbondAmount}`;\n }\n\n case MemoType.THORNAME_REGISTER: {\n const { name, chain, address, owner } = options as MemoOptions<MemoType.THORNAME_REGISTER>;\n return `${memoType}:${name}:${chain}:${address}${owner ? `:${owner}` : \"\"}`;\n }\n\n case MemoType.DEPOSIT: {\n const { chain, symbol, address, singleSide } = options as MemoOptions<MemoType.DEPOSIT>;\n\n const getPoolIdentifier = (chain: Chain, symbol: string): string => {\n switch (chain) {\n case Chain.Litecoin:\n return \"l\";\n case Chain.Dogecoin:\n return \"d\";\n case Chain.BitcoinCash:\n return \"c\";\n default:\n return `${chain}.${symbol}`;\n }\n };\n\n return singleSide\n ? `${memoType}:${chain}/${symbol}`\n : `${memoType}:${getPoolIdentifier(chain, symbol)}:${address || \"\"}`;\n }\n\n case MemoType.WITHDRAW: {\n const { chain, ticker, symbol, basisPoints, targetAssetString, singleSide } =\n options as MemoOptions<MemoType.WITHDRAW>;\n\n const shortenedSymbol =\n chain === \"ETH\" && ticker !== \"ETH\" ? `${ticker}-${symbol.slice(-3)}` : symbol;\n const target = !singleSide && targetAssetString ? `:${targetAssetString}` : \"\";\n const assetDivider = singleSide ? \"/\" : \".\";\n\n return `${memoType}:${chain}${assetDivider}${shortenedSymbol}:${basisPoints}${target}`;\n }\n\n case MemoType.OPEN_LOAN:\n case MemoType.CLOSE_LOAN: {\n const { asset, address } = options as MemoOptions<MemoType.OPEN_LOAN>;\n\n return `${memoType}:${asset}:${address}`; //:${minAmount ? `${minAmount}` : ''}:t:0`;\n }\n\n default:\n return \"\";\n }\n};\n",
19
19
  "const errorMessages = {\n /**\n * Core\n */\n core_wallet_connection_not_found: 10001,\n core_estimated_max_spendable_chain_not_supported: 10002,\n core_extend_error: 10003,\n core_inbound_data_not_found: 10004,\n core_approve_asset_address_or_from_not_found: 10005,\n core_plugin_not_found: 10006,\n core_plugin_swap_not_found: 10007,\n core_chain_halted: 10099,\n\n /**\n * Core - Wallet Connection\n */\n core_wallet_xdefi_not_installed: 10101,\n core_wallet_evmwallet_not_installed: 10102,\n core_wallet_walletconnect_not_installed: 10103,\n core_wallet_keystore_not_installed: 10104,\n core_wallet_ledger_not_installed: 10105,\n core_wallet_trezor_not_installed: 10106,\n core_wallet_keplr_not_installed: 10107,\n core_wallet_okx_not_installed: 10108,\n core_wallet_keepkey_not_installed: 10109,\n /**\n * Core - Swap\n */\n core_swap_invalid_params: 10200,\n core_swap_route_not_complete: 10201,\n core_swap_asset_not_recognized: 10202,\n core_swap_contract_not_found: 10203,\n core_swap_route_transaction_not_found: 10204,\n core_swap_contract_not_supported: 10205,\n core_swap_transaction_error: 10206,\n core_swap_quote_mode_not_supported: 10207,\n /**\n * Core - Transaction\n */\n core_transaction_deposit_error: 10301,\n core_transaction_create_liquidity_rune_error: 10302,\n core_transaction_create_liquidity_asset_error: 10303,\n core_transaction_create_liquidity_invalid_params: 10304,\n core_transaction_add_liquidity_invalid_params: 10305,\n core_transaction_add_liquidity_no_rune_address: 10306,\n core_transaction_add_liquidity_rune_error: 10307,\n core_transaction_add_liquidity_asset_error: 10308,\n core_transaction_withdraw_error: 10309,\n core_transaction_deposit_to_pool_error: 10310,\n core_transaction_deposit_insufficient_funds_error: 10311,\n core_transaction_deposit_gas_error: 10312,\n core_transaction_invalid_sender_address: 10313,\n core_transaction_deposit_server_error: 10314,\n core_transaction_user_rejected: 10315,\n\n /**\n * Wallets\n */\n wallet_ledger_connection_error: 20001,\n wallet_ledger_connection_claimed: 20002,\n wallet_ledger_get_address_error: 20003,\n wallet_ledger_device_not_found: 20004,\n wallet_ledger_device_locked: 20005,\n\n /**\n * Chainflip\n */\n chainflip_channel_error: 30001,\n chainflip_broker_recipient_error: 30002,\n\n /**\n * THORChain\n */\n\n /**\n * Helpers\n */\n helpers_number_different_decimals: 99101,\n} as const;\n\nexport type ErrorKeys = keyof typeof errorMessages;\n\nexport class SwapKitError extends Error {\n constructor(errorKey: ErrorKeys, sourceError?: NotWorth) {\n if (sourceError) {\n console.error(sourceError, {\n stack: sourceError?.stack,\n message: sourceError?.message,\n });\n }\n\n super(errorKey, {\n cause: { code: errorMessages[errorKey], message: errorKey },\n });\n Object.setPrototypeOf(this, SwapKitError.prototype);\n }\n}\n",
20
20
  "import { type ErrorKeys, SwapKitError } from \"../modules/swapKitError\";\nimport type { DerivationPathArray } from \"../types/derivationPath\";\n\n// 10 rune for register, 1 rune per year\n// MINIMUM_REGISTRATION_FEE = 11\nexport function getTHORNameCost(numberOfYears: number) {\n if (numberOfYears < 0) throw new Error(\"Invalid number of years\");\n return 10 + numberOfYears;\n}\n\n// 10 CACAO for register\n// 1.0512 CACAO per year\nexport function getMAYANameCost(numberOfYears: number) {\n if (numberOfYears < 0) throw new Error(\"Invalid number of year\");\n // round to max 10 decimals\n return Math.round((10 + numberOfYears * 1.0512) * 1e10) / 1e10;\n}\n\nexport function derivationPathToString([network, chainId, account, change, index]:\n | [number, number, number, number, number | undefined]\n | DerivationPathArray) {\n const shortPath = typeof index !== \"number\";\n\n return `m/${network}'/${chainId}'/${account}'/${change}${shortPath ? \"\" : `/${index}`}`;\n}\n\nexport function wrapWithThrow<T>(fn: () => T, errorKey?: ErrorKeys) {\n try {\n return fn();\n } catch (error) {\n if (errorKey) {\n throw new SwapKitError(errorKey, error);\n }\n\n return console.error(error);\n }\n}\n",
21
21
  "import { Chain } from \"../types/chains\";\n\n// Backward compatibility\nconst supportedChains = [...Object.values(Chain), \"TERRA\"];\n\nexport function validateIdentifier(identifier = \"\") {\n const uppercasedIdentifier = identifier.toUpperCase();\n\n const [chain] = uppercasedIdentifier.split(\".\") as [Chain, string];\n if (supportedChains.includes(chain)) return true;\n\n const [synthChain] = uppercasedIdentifier.split(\"/\") as [Chain, string];\n if (supportedChains.includes(synthChain)) return true;\n\n throw new Error(\n `Invalid identifier: ${identifier}. Expected format: <Chain>.<Ticker> or <Chain>.<Ticker>-<ContractAddress>`,\n );\n}\n\nexport function validateTNS(name: string) {\n if (name.length > 30) return false;\n\n const regex = /^[a-zA-Z0-9+_-]+$/g;\n\n return !!name.match(regex);\n}\n",
22
- "import type { BrowserProvider } from \"ethers\";\nimport { ChainId, WalletOption } from \"../types\";\n\nexport type EthereumWindowProvider = BrowserProvider & {\n __XDEFI?: boolean;\n isBraveWallet?: boolean;\n isCoinbaseWallet?: boolean;\n isMetaMask?: boolean;\n isOkxWallet?: boolean;\n isTrust?: boolean;\n on: (event: string, callback?: () => void) => void;\n overrideIsMetaMask?: boolean;\n request: <T = unknown>(args: { method: string; params?: unknown[] }) => Promise<T>;\n selectedProvider?: EthereumWindowProvider;\n};\n\ndeclare const window: {\n ethereum: EthereumWindowProvider;\n trustwallet: EthereumWindowProvider;\n coinbaseWalletExtension: EthereumWindowProvider;\n braveSolana: Todo;\n} & Window;\n\n// declare global {\n// interface Window {\n// ethereum: EthereumWindowProvider;\n// trustwallet: EthereumWindowProvider;\n// coinbaseWalletExtension: EthereumWindowProvider;\n// braveSolana: Todo;\n// }\n// }\n\ntype NetworkParams = {\n chainId: ChainId;\n chainName: string;\n nativeCurrency: {\n name: string;\n symbol: string;\n decimals: number;\n };\n rpcUrls: string[];\n blockExplorerUrls: string[];\n};\n\ntype ProviderRequestParams = {\n provider?: BrowserProvider;\n params?: Todo;\n method:\n | \"wallet_addEthereumChain\"\n | \"wallet_switchEthereumChain\"\n | \"eth_requestAccounts\"\n | \"eth_sendTransaction\"\n | \"eth_signTransaction\";\n};\n\nconst methodsToWrap = [\n \"approve\",\n \"approvedAmount\",\n \"call\",\n \"sendTransaction\",\n \"transfer\",\n \"getBalance\",\n \"isApproved\",\n \"approvedAmount\",\n \"EIP1193SendTransaction\",\n \"getFeeData\",\n \"broadcastTransaction\",\n \"estimateCall\",\n \"estimateGasLimit\",\n \"estimateGasPrices\",\n \"createContractTxObject\",\n];\n\nexport const wrapMethodWithNetworkSwitch = <T extends (...args: Todo[]) => Todo>(\n func: T,\n provider: BrowserProvider,\n chainId: ChainId,\n) =>\n (async (...args: Todo[]) => {\n try {\n await switchEVMWalletNetwork(provider, chainId);\n } catch (error) {\n throw new Error(`Failed to switch network: ${error}`);\n }\n return func(...args);\n }) as unknown as T;\n\nconst providerRequest = ({ provider, params, method }: ProviderRequestParams) => {\n if (!provider?.send) throw new Error(\"Provider not found\");\n\n const providerParams = params ? (Array.isArray(params) ? params : [params]) : [];\n return provider.send(method, providerParams);\n};\n\nexport const prepareNetworkSwitch = <T extends { [key: string]: (...args: Todo[]) => Todo }>({\n toolbox,\n chainId,\n provider = window.ethereum,\n}: {\n toolbox: T;\n chainId: ChainId;\n provider?: BrowserProvider;\n}) => {\n const wrappedMethods = methodsToWrap.reduce((object, methodName) => {\n if (!toolbox[methodName]) return object;\n const method = toolbox[methodName];\n\n if (typeof method !== \"function\") return object;\n\n return {\n // biome-ignore lint/performance/noAccumulatingSpread: This is a valid use case\n ...object,\n [methodName]: wrapMethodWithNetworkSwitch<typeof method>(method, provider, chainId),\n };\n }, {});\n\n return { ...toolbox, ...wrappedMethods };\n};\n\nexport const addEVMWalletNetwork = (provider: BrowserProvider, networkParams: NetworkParams) =>\n providerRequest({ provider, method: \"wallet_addEthereumChain\", params: [networkParams] });\n\nexport const switchEVMWalletNetwork = (provider: BrowserProvider, chainId = ChainId.EthereumHex) =>\n providerRequest({ provider, method: \"wallet_switchEthereumChain\", params: [{ chainId }] });\n\nexport const addAccountsChangedCallback = (callback: () => void) => {\n window.ethereum?.on(\"accountsChanged\", () => callback());\n // @ts-expect-error that should be implemented in xdefi and hooked up via swapkit core\n window.xfi?.ethereum.on(\"accountsChanged\", () => callback());\n};\n\nexport const getETHDefaultWallet = () => {\n const { isTrust, isBraveWallet, __XDEFI, overrideIsMetaMask, selectedProvider } =\n window?.ethereum || {};\n if (isTrust) return WalletOption.TRUSTWALLET_WEB;\n if (isBraveWallet) return WalletOption.BRAVE;\n if (overrideIsMetaMask && selectedProvider?.isCoinbaseWallet) return WalletOption.COINBASE_WEB;\n if (__XDEFI) WalletOption.XDEFI;\n return WalletOption.METAMASK;\n};\n\nexport const isDetected = (walletOption: WalletOption) => {\n return listWeb3EVMWallets().includes(walletOption);\n};\n\nconst listWeb3EVMWallets = () => {\n const metamaskEnabled = window?.ethereum && !window.ethereum?.isBraveWallet;\n // @ts-ignore that should be implemented in xdefi and hooked up via swapkit core\n const xdefiEnabled = window?.xfi || window?.ethereum?.__XDEFI;\n const braveEnabled = window?.ethereum?.isBraveWallet;\n const trustEnabled = window?.ethereum?.isTrust || window?.trustwallet;\n const coinbaseEnabled =\n (window?.ethereum?.overrideIsMetaMask &&\n window?.ethereum?.selectedProvider?.isCoinbaseWallet) ||\n window?.coinbaseWalletExtension;\n\n const wallets = [];\n if (metamaskEnabled) wallets.push(WalletOption.METAMASK);\n if (xdefiEnabled) wallets.push(WalletOption.XDEFI);\n if (braveEnabled) wallets.push(WalletOption.BRAVE);\n if (trustEnabled) wallets.push(WalletOption.TRUSTWALLET_WEB);\n if (coinbaseEnabled) wallets.push(WalletOption.COINBASE_WEB);\n if (okxMobileEnabled()) wallets.push(WalletOption.OKX_MOBILE);\n\n return wallets;\n};\n\nexport const okxMobileEnabled = () => {\n const ua = navigator.userAgent;\n const isIOS = /iphone|ipad|ipod|ios/i.test(ua);\n const isAndroid = /android|XiaoMi|MiuiBrowser/i.test(ua);\n const isMobile = isIOS || isAndroid;\n const isOKApp = /OKApp/i.test(ua);\n\n return isMobile && isOKApp;\n};\n\nexport const isWeb3Detected = () => typeof window.ethereum !== \"undefined\";\n",
22
+ "import type { BrowserProvider } from \"ethers\";\nimport { ChainId, WalletOption } from \"../types\";\n\nexport type EthereumWindowProvider = BrowserProvider & {\n __XDEFI?: boolean;\n isBraveWallet?: boolean;\n isCoinbaseWallet?: boolean;\n isMetaMask?: boolean;\n isOkxWallet?: boolean;\n isTrust?: boolean;\n on: (event: string, callback?: () => void) => void;\n overrideIsMetaMask?: boolean;\n request: <T = unknown>(args: { method: string; params?: unknown[] }) => Promise<T>;\n selectedProvider?: EthereumWindowProvider;\n};\n\ndeclare const window: {\n ethereum: EthereumWindowProvider;\n trustwallet: EthereumWindowProvider;\n coinbaseWalletExtension: EthereumWindowProvider;\n braveSolana: Todo;\n} & Window;\n\n// declare global {\n// interface Window {\n// ethereum: EthereumWindowProvider;\n// trustwallet: EthereumWindowProvider;\n// coinbaseWalletExtension: EthereumWindowProvider;\n// braveSolana: Todo;\n// }\n// }\n\ntype NetworkParams = {\n chainId: ChainId;\n chainName: string;\n nativeCurrency: {\n name: string;\n symbol: string;\n decimals: number;\n };\n rpcUrls: string[];\n blockExplorerUrls: string[];\n};\n\ntype ProviderRequestParams = {\n provider?: BrowserProvider;\n params?: Todo;\n method:\n | \"wallet_addEthereumChain\"\n | \"wallet_switchEthereumChain\"\n | \"eth_requestAccounts\"\n | \"eth_sendTransaction\"\n | \"eth_signTransaction\";\n};\n\nconst methodsToWrap = [\n \"approve\",\n \"approvedAmount\",\n \"call\",\n \"sendTransaction\",\n \"transfer\",\n \"isApproved\",\n \"approvedAmount\",\n \"EIP1193SendTransaction\",\n \"getFeeData\",\n \"broadcastTransaction\",\n \"estimateCall\",\n \"estimateGasLimit\",\n \"estimateGasPrices\",\n \"createContractTxObject\",\n];\n\nexport const wrapMethodWithNetworkSwitch = <T extends (...args: Todo[]) => Todo>(\n func: T,\n provider: BrowserProvider,\n chainId: ChainId,\n) =>\n (async (...args: Todo[]) => {\n try {\n await switchEVMWalletNetwork(provider, chainId);\n } catch (error) {\n throw new Error(`Failed to switch network: ${error}`);\n }\n return func(...args);\n }) as unknown as T;\n\nconst providerRequest = ({ provider, params, method }: ProviderRequestParams) => {\n if (!provider?.send) throw new Error(\"Provider not found\");\n\n const providerParams = params ? (Array.isArray(params) ? params : [params]) : [];\n return provider.send(method, providerParams);\n};\n\nexport const prepareNetworkSwitch = <T extends { [key: string]: (...args: Todo[]) => Todo }>({\n toolbox,\n chainId,\n provider = window.ethereum,\n}: {\n toolbox: T;\n chainId: ChainId;\n provider?: BrowserProvider;\n}) => {\n const wrappedMethods = methodsToWrap.reduce((object, methodName) => {\n if (!toolbox[methodName]) return object;\n const method = toolbox[methodName];\n\n if (typeof method !== \"function\") return object;\n\n return {\n // biome-ignore lint/performance/noAccumulatingSpread: This is a valid use case\n ...object,\n [methodName]: wrapMethodWithNetworkSwitch<typeof method>(method, provider, chainId),\n };\n }, {});\n\n return { ...toolbox, ...wrappedMethods };\n};\n\nexport const addEVMWalletNetwork = (provider: BrowserProvider, networkParams: NetworkParams) =>\n providerRequest({ provider, method: \"wallet_addEthereumChain\", params: [networkParams] });\n\nexport const switchEVMWalletNetwork = (provider: BrowserProvider, chainId = ChainId.EthereumHex) =>\n providerRequest({ provider, method: \"wallet_switchEthereumChain\", params: [{ chainId }] });\n\nexport const addAccountsChangedCallback = (callback: () => void) => {\n window.ethereum?.on(\"accountsChanged\", () => callback());\n // @ts-expect-error that should be implemented in xdefi and hooked up via swapkit core\n window.xfi?.ethereum.on(\"accountsChanged\", () => callback());\n};\n\nexport const getETHDefaultWallet = () => {\n const { isTrust, isBraveWallet, __XDEFI, overrideIsMetaMask, selectedProvider } =\n window?.ethereum || {};\n if (isTrust) return WalletOption.TRUSTWALLET_WEB;\n if (isBraveWallet) return WalletOption.BRAVE;\n if (overrideIsMetaMask && selectedProvider?.isCoinbaseWallet) return WalletOption.COINBASE_WEB;\n if (__XDEFI) WalletOption.XDEFI;\n return WalletOption.METAMASK;\n};\n\nexport const isDetected = (walletOption: WalletOption) => {\n return listWeb3EVMWallets().includes(walletOption);\n};\n\nconst listWeb3EVMWallets = () => {\n const metamaskEnabled = window?.ethereum && !window.ethereum?.isBraveWallet;\n // @ts-ignore that should be implemented in xdefi and hooked up via swapkit core\n const xdefiEnabled = window?.xfi || window?.ethereum?.__XDEFI;\n const braveEnabled = window?.ethereum?.isBraveWallet;\n const trustEnabled = window?.ethereum?.isTrust || window?.trustwallet;\n const coinbaseEnabled =\n (window?.ethereum?.overrideIsMetaMask &&\n window?.ethereum?.selectedProvider?.isCoinbaseWallet) ||\n window?.coinbaseWalletExtension;\n\n const wallets = [];\n if (metamaskEnabled) wallets.push(WalletOption.METAMASK);\n if (xdefiEnabled) wallets.push(WalletOption.XDEFI);\n if (braveEnabled) wallets.push(WalletOption.BRAVE);\n if (trustEnabled) wallets.push(WalletOption.TRUSTWALLET_WEB);\n if (coinbaseEnabled) wallets.push(WalletOption.COINBASE_WEB);\n if (okxMobileEnabled()) wallets.push(WalletOption.OKX_MOBILE);\n\n return wallets;\n};\n\nexport const okxMobileEnabled = () => {\n const ua = navigator.userAgent;\n const isIOS = /iphone|ipad|ipod|ios/i.test(ua);\n const isAndroid = /android|XiaoMi|MiuiBrowser/i.test(ua);\n const isMobile = isIOS || isAndroid;\n const isOKApp = /OKApp/i.test(ua);\n\n return isMobile && isOKApp;\n};\n\nexport const isWeb3Detected = () => typeof window.ethereum !== \"undefined\";\n",
23
23
  "import { BaseDecimal } from \"../types/chains.ts\";\nimport type { SwapKitNumber } from \"./swapKitNumber.ts\";\n\ntype NumberPrimitivesType = {\n bigint: bigint;\n number: number;\n string: string;\n};\nexport type NumberPrimitives = bigint | number | string;\ntype InitialisationValueType = NumberPrimitives | BigIntArithmetics | SwapKitNumber;\n\ntype SKBigIntParams = InitialisationValueType | { decimal?: number; value: number | string };\ntype AllowedNumberTypes = \"bigint\" | \"number\" | \"string\";\n\nconst DEFAULT_DECIMAL = 8;\nconst toMultiplier = (decimal: number) => 10n ** BigInt(decimal);\nconst decimalFromMultiplier = (multiplier: bigint) =>\n Math.log10(Number.parseFloat(multiplier.toString()));\n\nexport function formatBigIntToSafeValue({\n value,\n bigIntDecimal = DEFAULT_DECIMAL,\n decimal = DEFAULT_DECIMAL,\n}: {\n value: bigint;\n bigIntDecimal?: number;\n decimal?: number;\n}) {\n if (decimal === 0) return value.toString();\n const isNegative = value < 0n;\n let valueString = value.toString().substring(isNegative ? 1 : 0);\n\n const padLength = decimal - (valueString.length - 1);\n\n if (padLength > 0) {\n valueString = \"0\".repeat(padLength) + valueString;\n }\n\n const decimalIndex = valueString.length - decimal;\n let decimalString = valueString.slice(-decimal);\n\n // Check if we need to round up\n if (Number.parseInt(decimalString[bigIntDecimal] || \"0\") >= 5) {\n // Increment the last decimal place and slice off the rest\n decimalString = `${decimalString.substring(0, bigIntDecimal - 1)}${(\n Number.parseInt(decimalString[bigIntDecimal - 1] || \"0\") + 1\n ).toString()}`;\n } else {\n // Just slice off the extra digits\n decimalString = decimalString.substring(0, bigIntDecimal);\n }\n\n return `${isNegative ? \"-\" : \"\"}${valueString.slice(0, decimalIndex)}.${decimalString}`.replace(\n /\\.?0*$/,\n \"\",\n );\n}\n\nexport class BigIntArithmetics {\n decimalMultiplier: bigint = 10n ** 8n;\n bigIntValue = 0n;\n decimal?: number;\n\n static fromBigInt(value: bigint, decimal?: number) {\n return new BigIntArithmetics({\n decimal,\n value: formatBigIntToSafeValue({ value, bigIntDecimal: decimal, decimal }),\n });\n }\n\n static shiftDecimals({\n value,\n from,\n to,\n }: {\n value: InstanceType<typeof SwapKitNumber>;\n from: number;\n to: number;\n }) {\n return BigIntArithmetics.fromBigInt(\n (value.getBaseValue(\"bigint\") * toMultiplier(to)) / toMultiplier(from),\n to,\n );\n }\n\n constructor(params: SKBigIntParams) {\n const value = getStringValue(params);\n const isComplex = typeof params === \"object\";\n this.decimal = isComplex ? params.decimal : undefined;\n\n // use the multiplier to keep track of decimal point - defaults to 8 if lower than 8\n this.decimalMultiplier =\n isComplex && \"decimalMultiplier\" in params\n ? params.decimalMultiplier\n : toMultiplier(Math.max(getFloatDecimals(toSafeValue(value)), this.decimal || 0));\n this.#setValue(value);\n }\n\n set(value: SKBigIntParams): this {\n // @ts-expect-error False positive\n return new this.constructor({ decimal: this.decimal, value, identifier: this.toString() });\n }\n add(...args: InitialisationValueType[]) {\n return this.#arithmetics(\"add\", ...args);\n }\n sub(...args: InitialisationValueType[]) {\n return this.#arithmetics(\"sub\", ...args);\n }\n mul(...args: InitialisationValueType[]) {\n return this.#arithmetics(\"mul\", ...args);\n }\n div(...args: InitialisationValueType[]) {\n return this.#arithmetics(\"div\", ...args);\n }\n gt(value: InitialisationValueType) {\n return this.#comparison(\"gt\", value);\n }\n gte(value: InitialisationValueType) {\n return this.#comparison(\"gte\", value);\n }\n lt(value: InitialisationValueType) {\n return this.#comparison(\"lt\", value);\n }\n lte(value: InitialisationValueType) {\n return this.#comparison(\"lte\", value);\n }\n eqValue(value: InitialisationValueType) {\n return this.#comparison(\"eqValue\", value);\n }\n\n // @ts-expect-error False positive\n getValue<T extends AllowedNumberTypes>(type: T): NumberPrimitivesType[T] {\n const value = this.formatBigIntToSafeValue(\n this.bigIntValue,\n this.decimal || decimalFromMultiplier(this.decimalMultiplier),\n );\n\n switch (type) {\n case \"number\":\n return Number(value) as NumberPrimitivesType[T];\n case \"string\":\n return value as NumberPrimitivesType[T];\n case \"bigint\":\n return ((this.bigIntValue * 10n ** BigInt(this.decimal || 8n)) /\n this.decimalMultiplier) as NumberPrimitivesType[T];\n }\n }\n\n // @ts-expect-error\n getBaseValue<T extends AllowedNumberTypes>(type: T): NumberPrimitivesType[T] {\n const divisor = this.decimalMultiplier / toMultiplier(this.decimal || BaseDecimal.THOR);\n const baseValue = this.bigIntValue / divisor;\n\n switch (type) {\n case \"number\":\n return Number(baseValue) as NumberPrimitivesType[T];\n case \"string\":\n return baseValue.toString() as NumberPrimitivesType[T];\n case \"bigint\":\n return baseValue as NumberPrimitivesType[T];\n }\n }\n\n getBigIntValue(value: InitialisationValueType, decimal?: number) {\n if (!decimal && typeof value === \"object\") return value.bigIntValue;\n\n const stringValue = getStringValue(value);\n const safeValue = toSafeValue(stringValue);\n\n if (safeValue === \"0\" || safeValue === \"undefined\") return 0n;\n return this.#toBigInt(safeValue, decimal);\n }\n\n toSignificant(significantDigits = 6) {\n const [int, dec] = this.getValue(\"string\").split(\".\");\n const integer = int || \"\";\n const decimal = dec || \"\";\n const valueLength = Number.parseInt(integer) ? integer.length + decimal.length : decimal.length;\n\n if (valueLength <= significantDigits) {\n return this.getValue(\"string\");\n }\n\n if (integer.length >= significantDigits) {\n return integer.slice(0, significantDigits).padEnd(integer.length, \"0\");\n }\n\n if (Number.parseInt(integer)) {\n return `${integer}.${decimal.slice(0, significantDigits - integer.length)}`.padEnd(\n significantDigits - integer.length,\n \"0\",\n );\n }\n\n const trimmedDecimal = Number.parseInt(decimal);\n const slicedDecimal = `${trimmedDecimal}`.slice(0, significantDigits);\n\n return `0.${slicedDecimal.padStart(\n decimal.length - `${trimmedDecimal}`.length + slicedDecimal.length,\n \"0\",\n )}`;\n }\n\n toFixed(fixedDigits = 6) {\n const [int, dec] = this.getValue(\"string\").split(\".\");\n const integer = int || \"\";\n const decimal = dec || \"\";\n\n if (Number.parseInt(integer)) {\n return `${integer}.${decimal.slice(0, fixedDigits)}`.padEnd(fixedDigits, \"0\");\n }\n\n const trimmedDecimal = Number.parseInt(decimal);\n const slicedDecimal = `${trimmedDecimal}`.slice(0, fixedDigits);\n\n return `0.${slicedDecimal.padStart(\n decimal.length - `${trimmedDecimal}`.length + slicedDecimal.length,\n \"0\",\n )}`;\n }\n\n toAbbreviation(digits = 2) {\n const value = this.getValue(\"number\");\n const abbreviations = [\"\", \"K\", \"M\", \"B\", \"T\", \"Q\", \"Qi\", \"S\"];\n const tier = Math.floor(Math.log10(Math.abs(value)) / 3);\n const suffix = abbreviations[tier];\n\n if (!suffix) return this.getValue(\"string\");\n\n const scale = 10 ** (tier * 3);\n const scaled = value / scale;\n\n return `${scaled.toFixed(digits)}${suffix}`;\n }\n\n toCurrency(\n currency = \"$\",\n {\n currencyPosition = \"start\",\n decimal = 2,\n decimalSeparator = \".\",\n thousandSeparator = \",\",\n } = {},\n ) {\n const value = this.getValue(\"number\");\n const [int = \"\", dec = \"\"] = value.toFixed(6).split(\".\");\n const integer = int.replace(/\\B(?=(\\d{3})+(?!\\d))/g, thousandSeparator);\n\n const parsedValue =\n int || dec\n ? int === \"0\"\n ? `${Number.parseFloat(`0.${dec}`)}`.replace(\".\", decimalSeparator)\n : `${integer}${Number.parseInt(dec) ? `${decimalSeparator}${dec.slice(0, decimal)}` : \"\"}`\n : \"0.00\";\n\n return `${currencyPosition === \"start\" ? currency : \"\"}${parsedValue}${\n currencyPosition === \"end\" ? currency : \"\"\n }`;\n }\n\n formatBigIntToSafeValue(value: bigint, decimal?: number) {\n const bigIntDecimal = decimal || this.decimal || DEFAULT_DECIMAL;\n const decimalToUseForConversion = Math.max(\n bigIntDecimal,\n decimalFromMultiplier(this.decimalMultiplier),\n );\n const isNegative = value < 0n;\n\n const valueString = value.toString().substring(isNegative ? 1 : 0);\n const padLength = decimalToUseForConversion - (valueString.length - 1);\n\n const parsedValueString = padLength > 0 ? \"0\".repeat(padLength) + valueString : valueString;\n\n const decimalIndex = parsedValueString.length - decimalToUseForConversion;\n let decimalString = parsedValueString.slice(-decimalToUseForConversion);\n\n // Check if we need to round up\n if (Number.parseInt(decimalString[bigIntDecimal] || \"0\") >= 5) {\n // Increment the last decimal place and slice off the rest\n decimalString = `${decimalString.substring(0, bigIntDecimal - 1)}${(\n Number.parseInt(decimalString[bigIntDecimal - 1] || \"0\") + 1\n ).toString()}`;\n } else {\n // Just slice off the extra digits\n decimalString = decimalString.substring(0, bigIntDecimal);\n }\n\n return `${isNegative ? \"-\" : \"\"}${parsedValueString.slice(\n 0,\n decimalIndex,\n )}.${decimalString}`.replace(/\\.?0*$/, \"\");\n }\n\n #arithmetics(method: \"add\" | \"sub\" | \"mul\" | \"div\", ...args: InitialisationValueType[]): this {\n const precisionDecimal = this.#retrievePrecisionDecimal(this, ...args);\n const decimal = Math.max(precisionDecimal, decimalFromMultiplier(this.decimalMultiplier));\n const precisionDecimalMultiplier = toMultiplier(decimal);\n\n const result = args.reduce(\n (acc: bigint, arg) => {\n const value = this.getBigIntValue(arg, decimal);\n\n switch (method) {\n case \"add\":\n return acc + value;\n case \"sub\":\n return acc - value;\n /**\n * Multiplication & division would end up with wrong result if we don't adjust the value\n * 200000000n * 200000000n => 40000000000000000n\n * 200000000n / 200000000n => 1n\n * So we do the following:\n * 200000000n * 200000000n = 40000000000000000n / 100000000n (decimals) => 400000000n\n * (200000000n * 100000000n (decimals)) / 200000000n => 100000000n\n */\n case \"mul\":\n return (acc * value) / precisionDecimalMultiplier;\n case \"div\": {\n if (value === 0n) throw new RangeError(\"Division by zero\");\n return (acc * precisionDecimalMultiplier) / value;\n }\n default:\n return acc;\n }\n },\n //normalize is to precision multiplier base\n (this.bigIntValue * precisionDecimalMultiplier) / this.decimalMultiplier,\n );\n\n const value = formatBigIntToSafeValue({\n bigIntDecimal: decimal,\n decimal,\n value: result,\n });\n\n // @ts-expect-error False positive\n return new this.constructor({\n decimalMultiplier: toMultiplier(decimal),\n decimal: this.decimal,\n value,\n identifier: this.toString(),\n });\n }\n\n #comparison(method: \"gt\" | \"gte\" | \"lt\" | \"lte\" | \"eqValue\", ...args: InitialisationValueType[]) {\n const decimal = this.#retrievePrecisionDecimal(this, ...args);\n const value = this.getBigIntValue(args[0] || \"0\", decimal);\n const compareToValue = this.getBigIntValue(this, decimal);\n\n switch (method) {\n case \"gt\":\n return compareToValue > value;\n case \"gte\":\n return compareToValue >= value;\n case \"lt\":\n return compareToValue < value;\n case \"lte\":\n return compareToValue <= value;\n case \"eqValue\":\n return compareToValue === value;\n }\n }\n\n #setValue(value: InitialisationValueType) {\n const safeValue = toSafeValue(value) || \"0\";\n this.bigIntValue = this.#toBigInt(safeValue);\n }\n\n #retrievePrecisionDecimal(...args: InitialisationValueType[]) {\n const decimals = args\n .map((arg) => {\n const isObject = typeof arg === \"object\";\n const value = isObject\n ? arg.decimal || decimalFromMultiplier(arg.decimalMultiplier)\n : getFloatDecimals(toSafeValue(arg));\n\n return value;\n })\n .filter(Boolean) as number[];\n\n return Math.max(...decimals, DEFAULT_DECIMAL);\n }\n\n #toBigInt(value: string, decimal?: number) {\n const multiplier = decimal ? toMultiplier(decimal) : this.decimalMultiplier;\n const padDecimal = decimalFromMultiplier(multiplier);\n const [integerPart = \"\", decimalPart = \"\"] = value.split(\".\");\n\n return BigInt(`${integerPart}${decimalPart.padEnd(padDecimal, \"0\")}`);\n }\n}\n\nconst numberFormatter = Intl.NumberFormat(\"fullwide\", {\n useGrouping: false,\n maximumFractionDigits: 20,\n});\n\nfunction toSafeValue(value: InitialisationValueType) {\n const parsedValue =\n typeof value === \"number\" ? numberFormatter.format(value) : getStringValue(value);\n const splitValue = `${parsedValue}`.replaceAll(\",\", \".\").split(\".\");\n\n return splitValue.length > 1\n ? `${splitValue.slice(0, -1).join(\"\")}.${splitValue.at(-1)}`\n : splitValue[0] || \"0\";\n}\n\nfunction getFloatDecimals(value: string) {\n const decimals = value.split(\".\")[1]?.length || 0;\n return Math.max(decimals, DEFAULT_DECIMAL);\n}\n\nfunction getStringValue(param: SKBigIntParams) {\n return typeof param === \"object\"\n ? \"getValue\" in param\n ? param.getValue(\"string\")\n : param.value\n : param;\n}\n",
24
24
  "import { BigIntArithmetics, formatBigIntToSafeValue } from \"./bigIntArithmetics.ts\";\n\nexport type SwapKitValueType = BigIntArithmetics | string | number;\n\nexport class SwapKitNumber extends BigIntArithmetics {\n eq(value: SwapKitValueType) {\n return this.eqValue(value);\n }\n\n static fromBigInt(value: bigint, decimal?: number) {\n return new SwapKitNumber({\n decimal,\n value: formatBigIntToSafeValue({ value, bigIntDecimal: decimal, decimal }),\n });\n }\n}\n",
25
- "import type { CommonAssetString } from \"../helpers/asset.ts\";\nimport { getAssetType, getCommonAssetInfo, getDecimal, isGasAsset } from \"../helpers/asset.ts\";\nimport { validateIdentifier } from \"../helpers/validators.ts\";\nimport { BaseDecimal, Chain, type ChainId, ChainToChainId } from \"../types/chains.ts\";\nimport type { TokenNames, TokenTax } from \"../types/tokens.ts\";\n\nimport type { NumberPrimitives } from \"./bigIntArithmetics.ts\";\nimport { BigIntArithmetics, formatBigIntToSafeValue } from \"./bigIntArithmetics.ts\";\nimport { SwapKitNumber, type SwapKitValueType } from \"./swapKitNumber.ts\";\n\nconst staticTokensMap = new Map<\n TokenNames,\n { tax?: TokenTax; decimal: number; identifier: string }\n>();\n\nexport class AssetValue extends BigIntArithmetics {\n address?: string;\n chain: Chain;\n isGasAsset = false;\n isSynthetic = false;\n symbol: string;\n tax?: TokenTax;\n ticker: string;\n type: ReturnType<typeof getAssetType>;\n chainId: ChainId;\n\n constructor({\n value,\n decimal,\n tax,\n chain,\n symbol,\n identifier,\n }: { decimal: number; value: SwapKitValueType; tax?: TokenTax } & (\n | { chain: Chain; symbol: string; identifier?: never }\n | { identifier: string; chain?: never; symbol?: never }\n )) {\n super(typeof value === \"object\" ? value : { decimal, value });\n\n const assetInfo = getAssetInfo(identifier || `${chain}.${symbol}`);\n\n this.type = getAssetType(assetInfo);\n this.tax = tax;\n this.chain = assetInfo.chain;\n this.ticker = assetInfo.ticker;\n this.symbol = assetInfo.symbol;\n this.address = assetInfo.address;\n this.isSynthetic = assetInfo.isSynthetic;\n this.isGasAsset = assetInfo.isGasAsset;\n this.chainId = ChainToChainId[assetInfo.chain];\n }\n\n toString() {\n return this.isSynthetic ? this.symbol : `${this.chain}.${this.symbol}`;\n }\n\n toUrl() {\n return this.isSynthetic ? `${this.chain}.${this.symbol.replace(\"/\", \".\")}` : this.toString();\n }\n\n eq({ chain, symbol }: { chain: Chain; symbol: string }) {\n return this.chain === chain && this.symbol === symbol;\n }\n\n // THOR.RUNE\n // THOR.ETH.ETH\n // ETH.THOR-0x1234567890\n static fromUrl(urlAsset: string, value: NumberPrimitives = 0) {\n const [chain, ticker, symbol] = urlAsset.split(\".\");\n if (!(chain && ticker)) throw new Error(\"Invalid asset url\");\n\n const assetString =\n chain === Chain.THORChain && symbol ? `${chain}.${ticker}/${symbol}` : urlAsset;\n\n return createAssetValue(assetString, value);\n }\n\n static fromString(assetString: string, value: NumberPrimitives = 0) {\n return createAssetValue(assetString, value);\n }\n static fromIdentifier(\n assetString:\n | `${Chain}.${string}`\n | `${Chain}/${string}`\n | `${Chain}.${string}-${string}`\n | TokenNames,\n value: NumberPrimitives = 0,\n ) {\n return createAssetValue(assetString, value);\n }\n\n static fromStringSync(assetString: string, value: NumberPrimitives = 0) {\n const { chain, isSynthetic } = getAssetInfo(assetString);\n const tokenInfo = staticTokensMap.get(assetString.toUpperCase() as TokenNames);\n\n if (isSynthetic) return createSyntheticAssetValue(assetString, value);\n // TODO: write logger that will only run in dev mode with some flag\n // if (!tokenInfo) {\n // console.error(\n // `Asset ${assetString} is not loaded. Use AssetValue.loadStaticAssets() to load it`,\n // );\n // }\n\n const { tax, decimal, identifier } = tokenInfo || {\n decimal: BaseDecimal[chain],\n identifier: assetString,\n };\n\n return new AssetValue({\n tax,\n value: safeValue(value, decimal),\n identifier: isSynthetic ? assetString : identifier,\n decimal: isSynthetic ? 8 : decimal,\n });\n }\n\n static async fromStringWithBase(\n assetString: string,\n value: NumberPrimitives = 0,\n baseDecimal: number = BaseDecimal.THOR,\n ) {\n const shiftedAmount = BigIntArithmetics.shiftDecimals({\n value: SwapKitNumber.fromBigInt(BigInt(value)),\n from: 0,\n to: baseDecimal,\n }).getBaseValue(\"string\");\n const assetValue = await AssetValue.fromString(assetString, value);\n\n return assetValue.set(shiftedAmount);\n }\n\n static fromStringWithBaseSync(\n assetString: string,\n value: NumberPrimitives = 0,\n baseDecimal: number = BaseDecimal.THOR,\n ) {\n const { chain, isSynthetic } = getAssetInfo(assetString);\n const tokenInfo = staticTokensMap.get(assetString.toUpperCase() as TokenNames);\n\n if (isSynthetic) return createSyntheticAssetValue(assetString, value);\n\n const { tax, decimal, identifier } = tokenInfo || {\n decimal: BaseDecimal[chain],\n identifier: assetString,\n };\n\n return new AssetValue({\n tax,\n value: safeValue(BigInt(value), baseDecimal),\n identifier,\n decimal,\n });\n }\n\n static fromIdentifierSync(assetString: TokenNames, value: NumberPrimitives = 0) {\n const { chain, isSynthetic } = getAssetInfo(assetString);\n const tokenInfo = staticTokensMap.get(assetString);\n\n if (isSynthetic) return createSyntheticAssetValue(assetString, value);\n // TODO: write logger that will only run in dev mode with some flag\n // if (!tokenInfo) {\n // console.error(\n // `Asset ${assetString} is not loaded. - Loading with base Chain. Use AssetValue.loadStaticAssets() to load it`,\n // );\n // }\n\n const { tax, decimal, identifier } = tokenInfo || {\n decimal: BaseDecimal[chain],\n identifier: assetString,\n };\n return new AssetValue({ tax, decimal, identifier, value: safeValue(value, decimal) });\n }\n\n static fromChainOrSignature(assetString: CommonAssetString, value: NumberPrimitives = 0) {\n const { decimal, identifier } = getCommonAssetInfo(assetString);\n return new AssetValue({ value: safeValue(value, decimal), decimal, identifier });\n }\n\n static loadStaticAssets() {\n return new Promise<{ ok: true } | { ok: false; message: string; error: Todo }>(\n (resolve, reject) => {\n try {\n import(\"@swapkit/tokens\").then((tokenPackages) => {\n for (const tokenList of Object.values(tokenPackages)) {\n for (const { identifier, chain, ...rest } of tokenList.tokens) {\n staticTokensMap.set(identifier.toUpperCase() as TokenNames, {\n identifier,\n decimal: \"decimals\" in rest ? rest.decimals : BaseDecimal[chain as Chain],\n });\n }\n }\n\n resolve({ ok: true });\n });\n } catch (error) {\n console.error(error);\n reject({\n ok: false,\n error,\n message:\n \"Couldn't load static assets. Ensure you have installed @swapkit/tokens package\",\n });\n }\n },\n );\n }\n}\n\nexport function getMinAmountByChain(chain: Chain) {\n const asset = AssetValue.fromChainOrSignature(chain);\n\n switch (chain) {\n case Chain.Bitcoin:\n case Chain.Litecoin:\n case Chain.BitcoinCash:\n return asset.set(0.00010001);\n\n case Chain.Dogecoin:\n return asset.set(1.00000001);\n\n case Chain.Avalanche:\n case Chain.Ethereum:\n return asset.set(0.00000001);\n\n case Chain.THORChain:\n case Chain.Maya:\n return asset.set(0);\n\n case Chain.Cosmos:\n return asset.set(0.000001);\n\n default:\n return asset.set(0.00000001);\n }\n}\n\nasync function createAssetValue(identifier: string, value: NumberPrimitives = 0) {\n validateIdentifier(identifier);\n\n const staticToken = staticTokensMap.get(identifier.toUpperCase() as TokenNames);\n const decimal = staticToken?.decimal || (await getDecimal(getAssetInfo(identifier)));\n if (!staticToken) {\n staticTokensMap.set(identifier.toUpperCase() as TokenNames, { identifier, decimal });\n }\n\n return new AssetValue({ decimal, value: safeValue(value, decimal), identifier });\n}\n\nfunction createSyntheticAssetValue(identifier: string, value: NumberPrimitives = 0) {\n const [synthChain, symbol] =\n identifier.split(\".\")?.[0]?.toUpperCase() === Chain.THORChain\n ? identifier.split(\".\").slice(1).join().split(\"/\")\n : identifier.split(\"/\");\n\n if (!(synthChain && symbol)) throw new Error(\"Invalid asset identifier\");\n\n return new AssetValue({\n decimal: 8,\n value: safeValue(value, 8),\n identifier: `${Chain.THORChain}.${synthChain}/${symbol}`,\n });\n}\n\nfunction safeValue(value: NumberPrimitives, decimal: number) {\n return typeof value === \"bigint\"\n ? formatBigIntToSafeValue({ value, bigIntDecimal: decimal, decimal })\n : value;\n}\n\n// TODO refactor & split into smaller functions\nfunction getAssetInfo(identifier: string) {\n const isSynthetic = identifier.slice(0, 14).includes(\"/\");\n\n const isThorchain = identifier.split(\".\")?.[0]?.toUpperCase() === Chain.THORChain;\n const isMaya = identifier.split(\".\")?.[0]?.toUpperCase() === Chain.Maya;\n\n const [synthChain, synthSymbol = \"\"] =\n isThorchain || isMaya\n ? identifier.split(\".\").slice(1).join().split(\"/\")\n : identifier.split(\"/\");\n\n if (isSynthetic && !(synthChain && synthSymbol)) throw new Error(\"Invalid asset identifier\");\n\n const adjustedIdentifier =\n identifier.includes(\".\") && !isSynthetic\n ? identifier\n : `${isMaya ? Chain.Maya : Chain.THORChain}.${synthSymbol}`;\n\n const [chain, ...rest] = adjustedIdentifier.split(\".\") as [Chain, string];\n const [ticker, address] = (isSynthetic ? synthSymbol : rest.join(\".\")).split(\"-\") as [\n string,\n string?,\n ];\n const symbol = isSynthetic ? synthSymbol : rest.join(\".\");\n\n return {\n address: address?.toLowerCase(),\n chain,\n isGasAsset: isGasAsset({ chain, symbol }),\n isSynthetic,\n symbol:\n (isSynthetic ? `${synthChain}/` : \"\") +\n (address ? `${ticker}-${address?.toLowerCase() ?? \"\"}` : symbol),\n ticker,\n };\n}\n"
25
+ "import type { CommonAssetString } from \"../helpers/asset.ts\";\nimport { getAssetType, getCommonAssetInfo, getDecimal, isGasAsset } from \"../helpers/asset.ts\";\nimport { validateIdentifier } from \"../helpers/validators.ts\";\nimport { BaseDecimal, Chain, type ChainId, ChainToChainId } from \"../types/chains.ts\";\nimport type { TokenNames, TokenTax } from \"../types/tokens.ts\";\n\nimport type { NumberPrimitives } from \"./bigIntArithmetics.ts\";\nimport { BigIntArithmetics, formatBigIntToSafeValue } from \"./bigIntArithmetics.ts\";\nimport { SwapKitNumber, type SwapKitValueType } from \"./swapKitNumber.ts\";\n\nconst staticTokensMap = new Map<\n TokenNames,\n { tax?: TokenTax; decimal: number; identifier: string }\n>();\n\nexport class AssetValue extends BigIntArithmetics {\n address?: string;\n chain: Chain;\n isGasAsset = false;\n isSynthetic = false;\n symbol: string;\n tax?: TokenTax;\n ticker: string;\n type: ReturnType<typeof getAssetType>;\n chainId: ChainId;\n\n constructor({\n value,\n decimal,\n tax,\n chain,\n symbol,\n identifier,\n }: { decimal: number; value: SwapKitValueType; tax?: TokenTax } & (\n | { chain: Chain; symbol: string; identifier?: never }\n | { identifier: string; chain?: never; symbol?: never }\n )) {\n super(typeof value === \"object\" ? value : { decimal, value });\n\n const assetInfo = getAssetInfo(identifier || `${chain}.${symbol}`);\n\n this.type = getAssetType(assetInfo);\n this.tax = tax;\n this.chain = assetInfo.chain;\n this.ticker = assetInfo.ticker;\n this.symbol = assetInfo.symbol;\n this.address = assetInfo.address;\n this.isSynthetic = assetInfo.isSynthetic;\n this.isGasAsset = assetInfo.isGasAsset;\n this.chainId = ChainToChainId[assetInfo.chain];\n }\n\n toString() {\n return this.isSynthetic ? this.symbol : `${this.chain}.${this.symbol}`;\n }\n\n toUrl() {\n return this.isSynthetic ? `${this.chain}.${this.symbol.replace(\"/\", \".\")}` : this.toString();\n }\n\n eq({ chain, symbol }: { chain: Chain; symbol: string }) {\n return this.chain === chain && this.symbol === symbol;\n }\n\n // THOR.RUNE\n // THOR.ETH.ETH\n // ETH.THOR-0x1234567890\n static fromUrl(urlAsset: string, value: NumberPrimitives = 0) {\n const [chain, ticker, symbol] = urlAsset.split(\".\");\n if (!(chain && ticker)) throw new Error(\"Invalid asset url\");\n\n const assetString =\n chain === Chain.THORChain && symbol ? `${chain}.${ticker}/${symbol}` : urlAsset;\n\n return createAssetValue(assetString, value);\n }\n\n static fromString(assetString: string, value: NumberPrimitives = 0) {\n return createAssetValue(assetString, value);\n }\n static fromIdentifier(\n assetString:\n | `${Chain}.${string}`\n | `${Chain}/${string}`\n | `${Chain}.${string}-${string}`\n | TokenNames,\n value: NumberPrimitives = 0,\n ) {\n return createAssetValue(assetString, value);\n }\n\n static fromStringSync(assetString: string, value: NumberPrimitives = 0) {\n const { chain, isSynthetic } = getAssetInfo(assetString);\n const tokenInfo = staticTokensMap.get(assetString.toUpperCase() as TokenNames);\n\n if (isSynthetic) return createSyntheticAssetValue(assetString, value);\n // TODO: write logger that will only run in dev mode with some flag\n // if (!tokenInfo) {\n // console.error(\n // `Asset ${assetString} is not loaded. Use AssetValue.loadStaticAssets() to load it`,\n // );\n // }\n\n const { tax, decimal, identifier } = tokenInfo || {\n decimal: BaseDecimal[chain],\n identifier: assetString,\n };\n\n return new AssetValue({\n tax,\n value: safeValue(value, decimal),\n identifier: isSynthetic ? assetString : identifier,\n decimal: isSynthetic ? 8 : decimal,\n });\n }\n\n static async fromStringWithBase(\n assetString: string,\n value: NumberPrimitives = 0,\n baseDecimal: number = BaseDecimal.THOR,\n ) {\n const shiftedAmount = BigIntArithmetics.shiftDecimals({\n value: SwapKitNumber.fromBigInt(BigInt(value)),\n from: 0,\n to: baseDecimal,\n }).getBaseValue(\"string\");\n const assetValue = await AssetValue.fromString(assetString, value);\n\n return assetValue.set(shiftedAmount);\n }\n\n static fromStringWithBaseSync(\n assetString: string,\n value: NumberPrimitives = 0,\n baseDecimal: number = BaseDecimal.THOR,\n ) {\n const { chain, isSynthetic } = getAssetInfo(assetString);\n const tokenInfo = staticTokensMap.get(assetString.toUpperCase() as TokenNames);\n\n if (isSynthetic) return createSyntheticAssetValue(assetString, value);\n\n const { tax, decimal, identifier } = tokenInfo || {\n decimal: BaseDecimal[chain],\n identifier: assetString,\n };\n\n return new AssetValue({\n tax,\n value: safeValue(BigInt(value), baseDecimal),\n identifier,\n decimal,\n });\n }\n\n static fromIdentifierSync(assetString: TokenNames, value: NumberPrimitives = 0) {\n const { chain, isSynthetic } = getAssetInfo(assetString);\n const tokenInfo = staticTokensMap.get(assetString);\n\n if (isSynthetic) return createSyntheticAssetValue(assetString, value);\n // TODO: write logger that will only run in dev mode with some flag\n // if (!tokenInfo) {\n // console.error(\n // `Asset ${assetString} is not loaded. - Loading with base Chain. Use AssetValue.loadStaticAssets() to load it`,\n // );\n // }\n\n const { tax, decimal, identifier } = tokenInfo || {\n decimal: BaseDecimal[chain],\n identifier: assetString,\n };\n return new AssetValue({ tax, decimal, identifier, value: safeValue(value, decimal) });\n }\n\n static fromChainOrSignature(assetString: CommonAssetString, value: NumberPrimitives = 0) {\n const { decimal, identifier } = getCommonAssetInfo(assetString);\n return new AssetValue({ value: safeValue(value, decimal), decimal, identifier });\n }\n\n static loadStaticAssets() {\n return new Promise<{ ok: true } | { ok: false; message: string; error: Todo }>(\n (resolve, reject) => {\n try {\n import(\"@swapkit/tokens\").then((tokenPackages) => {\n for (const tokenList of Object.values(tokenPackages)) {\n for (const { identifier, chain, ...rest } of tokenList.tokens) {\n staticTokensMap.set(identifier.toUpperCase() as TokenNames, {\n identifier,\n decimal: \"decimals\" in rest ? rest.decimals : BaseDecimal[chain as Chain],\n });\n }\n }\n\n resolve({ ok: true });\n });\n } catch (error) {\n console.error(error);\n reject({\n ok: false,\n error,\n message:\n \"Couldn't load static assets. Ensure you have installed @swapkit/tokens package\",\n });\n }\n },\n );\n }\n}\n\nexport function getMinAmountByChain(chain: Chain) {\n const asset = AssetValue.fromChainOrSignature(chain);\n\n switch (chain) {\n case Chain.Bitcoin:\n case Chain.Litecoin:\n case Chain.BitcoinCash:\n return asset.set(0.00010001);\n\n case Chain.Dogecoin:\n return asset.set(1.00000001);\n\n case Chain.Avalanche:\n case Chain.Ethereum:\n return asset.set(0.00000001);\n\n case Chain.THORChain:\n case Chain.Maya:\n return asset.set(0);\n\n case Chain.Cosmos:\n return asset.set(0.000001);\n\n default:\n return asset.set(0.00000001);\n }\n}\n\nasync function createAssetValue(identifier: string, value: NumberPrimitives = 0) {\n validateIdentifier(identifier);\n\n const staticToken = staticTokensMap.get(identifier.toUpperCase() as TokenNames);\n const decimal = staticToken?.decimal || (await getDecimal(getAssetInfo(identifier)));\n if (!staticToken) {\n staticTokensMap.set(identifier.toUpperCase() as TokenNames, { identifier, decimal });\n }\n\n return new AssetValue({ decimal, value: safeValue(value, decimal), identifier });\n}\n\nfunction createSyntheticAssetValue(identifier: string, value: NumberPrimitives = 0) {\n const [synthChain, symbol] =\n identifier.split(\".\")?.[0]?.toUpperCase() === Chain.THORChain\n ? identifier.split(\".\").slice(1).join().split(\"/\")\n : identifier.split(\"/\");\n\n if (!(synthChain && symbol)) throw new Error(\"Invalid asset identifier\");\n\n return new AssetValue({\n decimal: 8,\n value: safeValue(value, 8),\n identifier: `${Chain.THORChain}.${synthChain}/${symbol}`,\n });\n}\n\nfunction safeValue(value: NumberPrimitives, decimal: number) {\n return typeof value === \"bigint\"\n ? formatBigIntToSafeValue({ value, bigIntDecimal: decimal, decimal })\n : value;\n}\n\n// TODO refactor & split into smaller functions\nfunction getAssetInfo(identifier: string) {\n const isSynthetic = identifier.slice(0, 14).includes(\"/\");\n\n const isThorchain = identifier.split(\".\")?.[0]?.toUpperCase() === Chain.THORChain;\n const isMaya = identifier.split(\".\")?.[0]?.toUpperCase() === Chain.Maya;\n\n const [synthChain, synthSymbol = \"\"] =\n isThorchain || isMaya\n ? identifier.split(\".\").slice(1).join().split(\"/\")\n : identifier.split(\"/\");\n\n if (isSynthetic && !(synthChain && synthSymbol)) throw new Error(\"Invalid asset identifier\");\n\n const adjustedIdentifier =\n identifier.includes(\".\") && !isSynthetic\n ? identifier\n : `${isMaya ? Chain.Maya : Chain.THORChain}.${synthSymbol}`;\n\n const [chain, ...rest] = adjustedIdentifier.split(\".\") as [Chain, string];\n\n const symbol = isSynthetic ? synthSymbol : rest.join(\".\");\n const splitSymbol = symbol.split(\"-\");\n const ticker = (\n splitSymbol.length === 1 ? splitSymbol[0] : splitSymbol.slice(0, -1).join(\"-\")\n ) as string;\n const address = splitSymbol.length === 1 ? undefined : splitSymbol[splitSymbol.length - 1];\n\n return {\n address: address?.toLowerCase(),\n chain,\n isGasAsset: isGasAsset({ chain, symbol }),\n isSynthetic,\n symbol:\n (isSynthetic ? `${synthChain}/` : \"\") +\n (address ? `${ticker}-${address?.toLowerCase() ?? \"\"}` : symbol),\n ticker,\n };\n}\n"
26
26
  ],
27
- "mappings": "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",
28
- "debugId": "7035A906EE0E4E6464756e2164756e21",
27
+ "mappings": ";;;;;;;;;AAAO,IAAM,WAAW;AAAA,EACtB,EAAE,QAAQ,CAAC,GAAG,iBAAiB,cAAc,MAAM,cAAc;AAAA,EACjE;AAAA,IACE,WAAW;AAAA,IACX,QAAQ;AAAA,MACN,EAAE,SAAS,MAAM,cAAc,WAAW,MAAM,SAAS,MAAM,UAAU;AAAA,MACzE,EAAE,SAAS,MAAM,cAAc,WAAW,MAAM,WAAW,MAAM,UAAU;AAAA,MAC3E,EAAE,SAAS,OAAO,cAAc,WAAW,MAAM,SAAS,MAAM,UAAU;AAAA,IAC5E;AAAA,IACA,MAAM;AAAA,IACN,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,WAAW;AAAA,IACX,QAAQ;AAAA,MACN,EAAE,SAAS,MAAM,cAAc,WAAW,MAAM,QAAQ,MAAM,UAAU;AAAA,MACxE,EAAE,SAAS,MAAM,cAAc,WAAW,MAAM,MAAM,MAAM,UAAU;AAAA,MACtE,EAAE,SAAS,OAAO,cAAc,WAAW,MAAM,SAAS,MAAM,UAAU;AAAA,IAC5E;AAAA,IACA,MAAM;AAAA,IACN,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,MACN,EAAE,cAAc,WAAW,MAAM,IAAI,MAAM,UAAU;AAAA,MACrD,EAAE,cAAc,WAAW,MAAM,IAAI,MAAM,UAAU;AAAA,IACvD;AAAA,IACA,MAAM;AAAA,IACN,SAAS,CAAC,EAAE,cAAc,WAAW,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,IAChE,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,MACN,EAAE,cAAc,WAAW,MAAM,WAAW,MAAM,UAAU;AAAA,MAC5D,EAAE,cAAc,WAAW,MAAM,SAAS,MAAM,UAAU;AAAA,IAC5D;AAAA,IACA,MAAM;AAAA,IACN,SAAS,CAAC,EAAE,cAAc,QAAQ,MAAM,WAAW,MAAM,OAAO,CAAC;AAAA,IACjE,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC,EAAE,cAAc,WAAW,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,IAC/D,MAAM;AAAA,IACN,SAAS,CAAC,EAAE,cAAc,WAAW,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,IAChE,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS,CAAC,EAAE,cAAc,WAAW,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,IAChE,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS,CAAC,EAAE,cAAc,UAAU,MAAM,IAAI,MAAM,SAAS,CAAC;AAAA,IAC9D,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS,CAAC,EAAE,cAAc,UAAU,MAAM,IAAI,MAAM,SAAS,CAAC;AAAA,IAC9D,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS,CAAC,EAAE,cAAc,WAAW,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,IAChE,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,MACN,EAAE,cAAc,WAAW,MAAM,MAAM,MAAM,UAAU;AAAA,MACvD,EAAE,cAAc,WAAW,MAAM,SAAS,MAAM,UAAU;AAAA,IAC5D;AAAA,IACA,MAAM;AAAA,IACN,SAAS,CAAC,EAAE,cAAc,QAAQ,MAAM,WAAW,MAAM,OAAO,CAAC;AAAA,IACjE,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,MACN,EAAE,cAAc,WAAW,MAAM,QAAQ,MAAM,UAAU;AAAA,MACzD,EAAE,cAAc,WAAW,MAAM,MAAM,MAAM,UAAU;AAAA,MACvD,EAAE,cAAc,WAAW,MAAM,SAAS,MAAM,UAAU;AAAA,IAC5D;AAAA,IACA,MAAM;AAAA,IACN,SAAS,CAAC,EAAE,cAAc,QAAQ,MAAM,WAAW,MAAM,OAAO,CAAC;AAAA,IACjE,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AACF;;AClGO,IAAM,uBAAuB;AAAA,EAClC,EAAE,QAAQ,CAAC,GAAG,iBAAiB,cAAc,MAAM,cAAc;AAAA,EACjE;AAAA,IACE,WAAW;AAAA,IACX,QAAQ;AAAA,MACN,EAAE,SAAS,MAAM,cAAc,WAAW,MAAM,MAAM,MAAM,UAAU;AAAA,MACtE,EAAE,SAAS,MAAM,cAAc,WAAW,MAAM,SAAS,MAAM,UAAU;AAAA,MACzE,EAAE,SAAS,OAAO,cAAc,WAAW,MAAM,UAAU,MAAM,UAAU;AAAA,MAC3E,EAAE,SAAS,OAAO,cAAc,UAAU,MAAM,QAAQ,MAAM,SAAS;AAAA,IACzE;AAAA,IACA,MAAM;AAAA,IACN,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,WAAW;AAAA,IACX,QAAQ;AAAA,MACN,EAAE,SAAS,MAAM,cAAc,WAAW,MAAM,YAAY,MAAM,UAAU;AAAA,MAC5E,EAAE,SAAS,MAAM,cAAc,WAAW,MAAM,YAAY,MAAM,UAAU;AAAA,MAC5E,EAAE,SAAS,OAAO,cAAc,WAAW,MAAM,SAAS,MAAM,UAAU;AAAA,MAC1E,EAAE,SAAS,OAAO,cAAc,WAAW,MAAM,UAAU,MAAM,UAAU;AAAA,MAC3E,EAAE,SAAS,OAAO,cAAc,UAAU,MAAM,QAAQ,MAAM,SAAS;AAAA,IACzE;AAAA,IACA,MAAM;AAAA,IACN,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,WAAW;AAAA,IACX,QAAQ;AAAA,MACN,EAAE,SAAS,MAAM,cAAc,WAAW,MAAM,SAAS,MAAM,UAAU;AAAA,MACzE,EAAE,SAAS,MAAM,cAAc,WAAW,MAAM,MAAM,MAAM,UAAU;AAAA,MACtE,EAAE,SAAS,OAAO,cAAc,WAAW,MAAM,SAAS,MAAM,UAAU;AAAA,MAC1E,EAAE,SAAS,OAAO,cAAc,WAAW,MAAM,UAAU,MAAM,UAAU;AAAA,MAC3E,EAAE,SAAS,OAAO,cAAc,UAAU,MAAM,QAAQ,MAAM,SAAS;AAAA,IACzE;AAAA,IACA,MAAM;AAAA,IACN,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,WAAW;AAAA,IACX,QAAQ;AAAA,MACN,EAAE,SAAS,MAAM,cAAc,WAAW,MAAM,SAAS,MAAM,UAAU;AAAA,MACzE,EAAE,SAAS,OAAO,cAAc,WAAW,MAAM,UAAU,MAAM,UAAU;AAAA,MAC3E,EAAE,SAAS,OAAO,cAAc,WAAW,MAAM,UAAU,MAAM,UAAU;AAAA,MAC3E,EAAE,SAAS,OAAO,cAAc,WAAW,MAAM,cAAc,MAAM,UAAU;AAAA,MAC/E,EAAE,SAAS,OAAO,cAAc,WAAW,MAAM,MAAM,MAAM,UAAU;AAAA,MACvE,EAAE,SAAS,OAAO,cAAc,WAAW,MAAM,gBAAgB,MAAM,UAAU;AAAA,MACjF,EAAE,SAAS,OAAO,cAAc,UAAU,MAAM,QAAQ,MAAM,SAAS;AAAA,IACzE;AAAA,IACA,MAAM;AAAA,IACN,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,WAAW;AAAA,IACX,QAAQ;AAAA,MACN,EAAE,SAAS,MAAM,cAAc,WAAW,MAAM,YAAY,MAAM,UAAU;AAAA,MAC5E,EAAE,SAAS,MAAM,cAAc,WAAW,MAAM,YAAY,MAAM,UAAU;AAAA,MAC5E;AAAA,QACE,YAAY;AAAA,UACV,EAAE,cAAc,WAAW,MAAM,SAAS,MAAM,UAAU;AAAA,UAC1D,EAAE,cAAc,WAAW,MAAM,UAAU,MAAM,UAAU;AAAA,QAC7D;AAAA,QACA,SAAS;AAAA,QACT,cAAc;AAAA,QACd,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,MACA,EAAE,SAAS,OAAO,cAAc,UAAU,MAAM,QAAQ,MAAM,SAAS;AAAA,IACzE;AAAA,IACA,MAAM;AAAA,IACN,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,MACN,EAAE,cAAc,mBAAmB,MAAM,SAAS,MAAM,UAAU;AAAA,MAClE,EAAE,cAAc,WAAW,MAAM,SAAS,MAAM,UAAU;AAAA,MAC1D,EAAE,cAAc,WAAW,MAAM,UAAU,MAAM,UAAU;AAAA,MAC3D,EAAE,cAAc,UAAU,MAAM,QAAQ,MAAM,SAAS;AAAA,IACzD;AAAA,IACA,MAAM;AAAA,IACN,SAAS,CAAC;AAAA,IACV,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,MACN,EAAE,cAAc,mBAAmB,MAAM,SAAS,MAAM,UAAU;AAAA,MAClE,EAAE,cAAc,WAAW,MAAM,SAAS,MAAM,UAAU;AAAA,MAC1D,EAAE,cAAc,WAAW,MAAM,UAAU,MAAM,UAAU;AAAA,MAC3D,EAAE,cAAc,UAAU,MAAM,QAAQ,MAAM,SAAS;AAAA,MACvD,EAAE,cAAc,WAAW,MAAM,cAAc,MAAM,UAAU;AAAA,IACjE;AAAA,IACA,MAAM;AAAA,IACN,SAAS,CAAC;AAAA,IACV,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,MACN,EAAE,cAAc,WAAW,MAAM,UAAU,MAAM,UAAU;AAAA,MAC3D,EAAE,cAAc,mBAAmB,MAAM,UAAU,MAAM,UAAU;AAAA,MACnE;AAAA,QACE,YAAY;AAAA,UACV,EAAE,cAAc,WAAW,MAAM,SAAS,MAAM,UAAU;AAAA,UAC1D,EAAE,cAAc,WAAW,MAAM,UAAU,MAAM,UAAU;AAAA,QAC7D;AAAA,QACA,cAAc;AAAA,QACd,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,MACA,EAAE,cAAc,UAAU,MAAM,QAAQ,MAAM,SAAS;AAAA,IACzD;AAAA,IACA,MAAM;AAAA,IACN,SAAS,CAAC;AAAA,IACV,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,MACN,EAAE,cAAc,WAAW,MAAM,UAAU,MAAM,UAAU;AAAA,MAC3D,EAAE,cAAc,WAAW,MAAM,YAAY,MAAM,UAAU;AAAA,MAC7D,EAAE,cAAc,WAAW,MAAM,SAAS,MAAM,UAAU;AAAA,MAC1D,EAAE,cAAc,WAAW,MAAM,UAAU,MAAM,UAAU;AAAA,MAC3D,EAAE,cAAc,UAAU,MAAM,QAAQ,MAAM,SAAS;AAAA,IACzD;AAAA,IACA,MAAM;AAAA,IACN,SAAS,CAAC;AAAA,IACV,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,MACN,EAAE,cAAc,mBAAmB,MAAM,MAAM,MAAM,UAAU;AAAA,MAC/D,EAAE,cAAc,WAAW,MAAM,SAAS,MAAM,UAAU;AAAA,MAC1D,EAAE,cAAc,WAAW,MAAM,UAAU,MAAM,UAAU;AAAA,MAC3D,EAAE,cAAc,UAAU,MAAM,QAAQ,MAAM,SAAS;AAAA,IACzD;AAAA,IACA,MAAM;AAAA,IACN,SAAS,CAAC;AAAA,IACV,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,MACN,EAAE,cAAc,mBAAmB,MAAM,UAAU,MAAM,UAAU;AAAA,MACnE,EAAE,cAAc,WAAW,MAAM,cAAc,MAAM,UAAU;AAAA,MAC/D,EAAE,cAAc,WAAW,MAAM,MAAM,MAAM,UAAU;AAAA,MACvD,EAAE,cAAc,WAAW,MAAM,gBAAgB,MAAM,UAAU;AAAA,MACjE,EAAE,cAAc,UAAU,MAAM,QAAQ,MAAM,SAAS;AAAA,IACzD;AAAA,IACA,MAAM;AAAA,IACN,SAAS,CAAC;AAAA,IACV,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,MACN,EAAE,cAAc,WAAW,MAAM,SAAS,MAAM,UAAU;AAAA,MAC1D,EAAE,cAAc,WAAW,MAAM,SAAS,MAAM,UAAU;AAAA,IAC5D;AAAA,IACA,MAAM;AAAA,IACN,SAAS,CAAC,EAAE,cAAc,WAAW,MAAM,UAAU,MAAM,UAAU,CAAC;AAAA,IACtE,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AACF;AAEO,IAAM,uBAAuB;AAAA,EAClC,EAAE,QAAQ,CAAC,GAAG,iBAAiB,cAAc,MAAM,cAAc;AAAA,EACjE;AAAA,IACE,WAAW;AAAA,IACX,QAAQ;AAAA,MACN,EAAE,SAAS,MAAM,cAAc,WAAW,MAAM,MAAM,MAAM,UAAU;AAAA,MACtE,EAAE,SAAS,MAAM,cAAc,WAAW,MAAM,SAAS,MAAM,UAAU;AAAA,MACzE,EAAE,SAAS,OAAO,cAAc,WAAW,MAAM,UAAU,MAAM,UAAU;AAAA,MAC3E,EAAE,SAAS,OAAO,cAAc,UAAU,MAAM,QAAQ,MAAM,SAAS;AAAA,IACzE;AAAA,IACA,MAAM;AAAA,IACN,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,WAAW;AAAA,IACX,QAAQ;AAAA,MACN,EAAE,SAAS,MAAM,cAAc,WAAW,MAAM,YAAY,MAAM,UAAU;AAAA,MAC5E,EAAE,SAAS,MAAM,cAAc,WAAW,MAAM,YAAY,MAAM,UAAU;AAAA,MAC5E,EAAE,SAAS,OAAO,cAAc,WAAW,MAAM,SAAS,MAAM,UAAU;AAAA,MAC1E,EAAE,SAAS,OAAO,cAAc,WAAW,MAAM,UAAU,MAAM,UAAU;AAAA,MAC3E,EAAE,SAAS,OAAO,cAAc,UAAU,MAAM,QAAQ,MAAM,SAAS;AAAA,IACzE;AAAA,IACA,MAAM;AAAA,IACN,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,WAAW;AAAA,IACX,QAAQ;AAAA,MACN,EAAE,SAAS,MAAM,cAAc,WAAW,MAAM,SAAS,MAAM,UAAU;AAAA,MACzE,EAAE,SAAS,MAAM,cAAc,WAAW,MAAM,MAAM,MAAM,UAAU;AAAA,MACtE,EAAE,SAAS,OAAO,cAAc,WAAW,MAAM,SAAS,MAAM,UAAU;AAAA,MAC1E,EAAE,SAAS,OAAO,cAAc,WAAW,MAAM,UAAU,MAAM,UAAU;AAAA,MAC3E,EAAE,SAAS,OAAO,cAAc,UAAU,MAAM,QAAQ,MAAM,SAAS;AAAA,IACzE;AAAA,IACA,MAAM;AAAA,IACN,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,WAAW;AAAA,IACX,QAAQ;AAAA,MACN,EAAE,SAAS,MAAM,cAAc,WAAW,MAAM,SAAS,MAAM,UAAU;AAAA,MACzE,EAAE,SAAS,OAAO,cAAc,WAAW,MAAM,UAAU,MAAM,UAAU;AAAA,MAC3E,EAAE,SAAS,OAAO,cAAc,WAAW,MAAM,UAAU,MAAM,UAAU;AAAA,MAC3E,EAAE,SAAS,OAAO,cAAc,WAAW,MAAM,cAAc,MAAM,UAAU;AAAA,MAC/E,EAAE,SAAS,OAAO,cAAc,WAAW,MAAM,MAAM,MAAM,UAAU;AAAA,MACvE,EAAE,SAAS,OAAO,cAAc,WAAW,MAAM,gBAAgB,MAAM,UAAU;AAAA,MACjF,EAAE,SAAS,OAAO,cAAc,UAAU,MAAM,QAAQ,MAAM,SAAS;AAAA,IACzE;AAAA,IACA,MAAM;AAAA,IACN,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,WAAW;AAAA,IACX,QAAQ;AAAA,MACN,EAAE,SAAS,MAAM,cAAc,WAAW,MAAM,YAAY,MAAM,UAAU;AAAA,MAC5E,EAAE,SAAS,MAAM,cAAc,WAAW,MAAM,YAAY,MAAM,UAAU;AAAA,MAC5E;AAAA,QACE,YAAY;AAAA,UACV,EAAE,cAAc,WAAW,MAAM,SAAS,MAAM,UAAU;AAAA,UAC1D,EAAE,cAAc,WAAW,MAAM,UAAU,MAAM,UAAU;AAAA,QAC7D;AAAA,QACA,SAAS;AAAA,QACT,cAAc;AAAA,QACd,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,MACA,EAAE,SAAS,OAAO,cAAc,UAAU,MAAM,QAAQ,MAAM,SAAS;AAAA,IACzE;AAAA,IACA,MAAM;AAAA,IACN,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,MACN,EAAE,cAAc,mBAAmB,MAAM,SAAS,MAAM,UAAU;AAAA,MAClE,EAAE,cAAc,WAAW,MAAM,SAAS,MAAM,UAAU;AAAA,MAC1D,EAAE,cAAc,WAAW,MAAM,UAAU,MAAM,UAAU;AAAA,MAC3D,EAAE,cAAc,UAAU,MAAM,QAAQ,MAAM,SAAS;AAAA,IACzD;AAAA,IACA,MAAM;AAAA,IACN,SAAS,CAAC;AAAA,IACV,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,MACN,EAAE,cAAc,mBAAmB,MAAM,SAAS,MAAM,UAAU;AAAA,MAClE,EAAE,cAAc,WAAW,MAAM,SAAS,MAAM,UAAU;AAAA,MAC1D,EAAE,cAAc,WAAW,MAAM,UAAU,MAAM,UAAU;AAAA,MAC3D,EAAE,cAAc,UAAU,MAAM,QAAQ,MAAM,SAAS;AAAA,MACvD,EAAE,cAAc,WAAW,MAAM,cAAc,MAAM,UAAU;AAAA,IACjE;AAAA,IACA,MAAM;AAAA,IACN,SAAS,CAAC;AAAA,IACV,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,MACN,EAAE,cAAc,WAAW,MAAM,UAAU,MAAM,UAAU;AAAA,MAC3D,EAAE,cAAc,mBAAmB,MAAM,UAAU,MAAM,UAAU;AAAA,MACnE;AAAA,QACE,YAAY;AAAA,UACV,EAAE,cAAc,WAAW,MAAM,SAAS,MAAM,UAAU;AAAA,UAC1D,EAAE,cAAc,WAAW,MAAM,UAAU,MAAM,UAAU;AAAA,QAC7D;AAAA,QACA,cAAc;AAAA,QACd,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,MACA,EAAE,cAAc,UAAU,MAAM,QAAQ,MAAM,SAAS;AAAA,IACzD;AAAA,IACA,MAAM;AAAA,IACN,SAAS,CAAC;AAAA,IACV,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,MACN,EAAE,cAAc,WAAW,MAAM,UAAU,MAAM,UAAU;AAAA,MAC3D,EAAE,cAAc,WAAW,MAAM,YAAY,MAAM,UAAU;AAAA,MAC7D,EAAE,cAAc,WAAW,MAAM,SAAS,MAAM,UAAU;AAAA,MAC1D,EAAE,cAAc,WAAW,MAAM,UAAU,MAAM,UAAU;AAAA,MAC3D,EAAE,cAAc,UAAU,MAAM,QAAQ,MAAM,SAAS;AAAA,IACzD;AAAA,IACA,MAAM;AAAA,IACN,SAAS,CAAC;AAAA,IACV,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,MACN,EAAE,cAAc,mBAAmB,MAAM,MAAM,MAAM,UAAU;AAAA,MAC/D,EAAE,cAAc,WAAW,MAAM,SAAS,MAAM,UAAU;AAAA,MAC1D,EAAE,cAAc,WAAW,MAAM,UAAU,MAAM,UAAU;AAAA,MAC3D,EAAE,cAAc,UAAU,MAAM,QAAQ,MAAM,SAAS;AAAA,IACzD;AAAA,IACA,MAAM;AAAA,IACN,SAAS,CAAC;AAAA,IACV,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,MACN,EAAE,cAAc,mBAAmB,MAAM,UAAU,MAAM,UAAU;AAAA,MACnE,EAAE,cAAc,WAAW,MAAM,cAAc,MAAM,UAAU;AAAA,MAC/D,EAAE,cAAc,WAAW,MAAM,MAAM,MAAM,UAAU;AAAA,MACvD,EAAE,cAAc,WAAW,MAAM,gBAAgB,MAAM,UAAU;AAAA,MACjE,EAAE,cAAc,UAAU,MAAM,QAAQ,MAAM,SAAS;AAAA,IACzD;AAAA,IACA,MAAM;AAAA,IACN,SAAS,CAAC;AAAA,IACV,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,MACN,EAAE,cAAc,WAAW,MAAM,SAAS,MAAM,UAAU;AAAA,MAC1D,EAAE,cAAc,WAAW,MAAM,SAAS,MAAM,UAAU;AAAA,IAC5D;AAAA,IACA,MAAM;AAAA,IACN,SAAS,CAAC,EAAE,cAAc,WAAW,MAAM,UAAU,MAAM,UAAU,CAAC;AAAA,IACtE,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AACF;;AC1UO,IAAM,qBAAqB;AAAA,EAChC;AAAA,IACE,QAAQ,CAAC,EAAE,cAAc,WAAW,MAAM,QAAQ,MAAM,UAAU,CAAC;AAAA,IACnE,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,WAAW;AAAA,IACX,QAAQ;AAAA,MACN,EAAE,SAAS,MAAM,cAAc,WAAW,MAAM,MAAM,MAAM,UAAU;AAAA,MACtE,EAAE,SAAS,MAAM,cAAc,WAAW,MAAM,SAAS,MAAM,UAAU;AAAA,MACzE,EAAE,SAAS,OAAO,cAAc,WAAW,MAAM,UAAU,MAAM,UAAU;AAAA,MAC3E,EAAE,SAAS,OAAO,cAAc,UAAU,MAAM,QAAQ,MAAM,SAAS;AAAA,IACzE;AAAA,IACA,MAAM;AAAA,IACN,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,WAAW;AAAA,IACX,QAAQ;AAAA,MACN,EAAE,SAAS,MAAM,cAAc,WAAW,MAAM,YAAY,MAAM,UAAU;AAAA,MAC5E,EAAE,SAAS,MAAM,cAAc,WAAW,MAAM,YAAY,MAAM,UAAU;AAAA,MAC5E,EAAE,SAAS,OAAO,cAAc,WAAW,MAAM,SAAS,MAAM,UAAU;AAAA,MAC1E,EAAE,SAAS,OAAO,cAAc,WAAW,MAAM,UAAU,MAAM,UAAU;AAAA,MAC3E,EAAE,SAAS,OAAO,cAAc,UAAU,MAAM,QAAQ,MAAM,SAAS;AAAA,IACzE;AAAA,IACA,MAAM;AAAA,IACN,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,WAAW;AAAA,IACX,QAAQ;AAAA,MACN,EAAE,SAAS,MAAM,cAAc,WAAW,MAAM,SAAS,MAAM,UAAU;AAAA,MACzE,EAAE,SAAS,MAAM,cAAc,WAAW,MAAM,MAAM,MAAM,UAAU;AAAA,MACtE,EAAE,SAAS,OAAO,cAAc,WAAW,MAAM,SAAS,MAAM,UAAU;AAAA,MAC1E,EAAE,SAAS,OAAO,cAAc,WAAW,MAAM,UAAU,MAAM,UAAU;AAAA,MAC3E,EAAE,SAAS,OAAO,cAAc,UAAU,MAAM,QAAQ,MAAM,SAAS;AAAA,IACzE;AAAA,IACA,MAAM;AAAA,IACN,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,WAAW;AAAA,IACX,QAAQ;AAAA,MACN,EAAE,SAAS,MAAM,cAAc,WAAW,MAAM,SAAS,MAAM,UAAU;AAAA,MACzE,EAAE,SAAS,OAAO,cAAc,WAAW,MAAM,UAAU,MAAM,UAAU;AAAA,MAC3E,EAAE,SAAS,OAAO,cAAc,WAAW,MAAM,UAAU,MAAM,UAAU;AAAA,MAC3E,EAAE,SAAS,OAAO,cAAc,WAAW,MAAM,cAAc,MAAM,UAAU;AAAA,MAC/E,EAAE,SAAS,OAAO,cAAc,WAAW,MAAM,MAAM,MAAM,UAAU;AAAA,MACvE,EAAE,SAAS,OAAO,cAAc,WAAW,MAAM,gBAAgB,MAAM,UAAU;AAAA,MACjF,EAAE,SAAS,OAAO,cAAc,UAAU,MAAM,QAAQ,MAAM,SAAS;AAAA,IACzE;AAAA,IACA,MAAM;AAAA,IACN,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,WAAW;AAAA,IACX,QAAQ;AAAA,MACN,EAAE,SAAS,MAAM,cAAc,WAAW,MAAM,YAAY,MAAM,UAAU;AAAA,MAC5E,EAAE,SAAS,MAAM,cAAc,WAAW,MAAM,YAAY,MAAM,UAAU;AAAA,MAC5E;AAAA,QACE,YAAY;AAAA,UACV,EAAE,cAAc,WAAW,MAAM,SAAS,MAAM,UAAU;AAAA,UAC1D,EAAE,cAAc,WAAW,MAAM,UAAU,MAAM,UAAU;AAAA,QAC7D;AAAA,QACA,SAAS;AAAA,QACT,cAAc;AAAA,QACd,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,MACA,EAAE,SAAS,OAAO,cAAc,UAAU,MAAM,QAAQ,MAAM,SAAS;AAAA,IACzE;AAAA,IACA,MAAM;AAAA,IACN,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS,CAAC,EAAE,cAAc,WAAW,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,IAChE,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,MACN,EAAE,cAAc,mBAAmB,MAAM,SAAS,MAAM,UAAU;AAAA,MAClE,EAAE,cAAc,WAAW,MAAM,SAAS,MAAM,UAAU;AAAA,MAC1D,EAAE,cAAc,WAAW,MAAM,UAAU,MAAM,UAAU;AAAA,MAC3D,EAAE,cAAc,UAAU,MAAM,QAAQ,MAAM,SAAS;AAAA,IACzD;AAAA,IACA,MAAM;AAAA,IACN,SAAS,CAAC;AAAA,IACV,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,MACN,EAAE,cAAc,mBAAmB,MAAM,SAAS,MAAM,UAAU;AAAA,MAClE,EAAE,cAAc,WAAW,MAAM,SAAS,MAAM,UAAU;AAAA,MAC1D,EAAE,cAAc,WAAW,MAAM,UAAU,MAAM,UAAU;AAAA,MAC3D,EAAE,cAAc,UAAU,MAAM,QAAQ,MAAM,SAAS;AAAA,MACvD,EAAE,cAAc,WAAW,MAAM,cAAc,MAAM,UAAU;AAAA,IACjE;AAAA,IACA,MAAM;AAAA,IACN,SAAS,CAAC;AAAA,IACV,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,MACN,EAAE,cAAc,WAAW,MAAM,UAAU,MAAM,UAAU;AAAA,MAC3D,EAAE,cAAc,mBAAmB,MAAM,UAAU,MAAM,UAAU;AAAA,MACnE;AAAA,QACE,YAAY;AAAA,UACV,EAAE,cAAc,WAAW,MAAM,SAAS,MAAM,UAAU;AAAA,UAC1D,EAAE,cAAc,WAAW,MAAM,UAAU,MAAM,UAAU;AAAA,QAC7D;AAAA,QACA,cAAc;AAAA,QACd,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,MACA,EAAE,cAAc,UAAU,MAAM,QAAQ,MAAM,SAAS;AAAA,IACzD;AAAA,IACA,MAAM;AAAA,IACN,SAAS,CAAC;AAAA,IACV,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,MACN,EAAE,cAAc,WAAW,MAAM,UAAU,MAAM,UAAU;AAAA,MAC3D,EAAE,cAAc,WAAW,MAAM,YAAY,MAAM,UAAU;AAAA,MAC7D,EAAE,cAAc,WAAW,MAAM,SAAS,MAAM,UAAU;AAAA,MAC1D,EAAE,cAAc,WAAW,MAAM,UAAU,MAAM,UAAU;AAAA,MAC3D,EAAE,cAAc,UAAU,MAAM,QAAQ,MAAM,SAAS;AAAA,IACzD;AAAA,IACA,MAAM;AAAA,IACN,SAAS,CAAC;AAAA,IACV,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,MACN,EAAE,cAAc,mBAAmB,MAAM,MAAM,MAAM,UAAU;AAAA,MAC/D,EAAE,cAAc,WAAW,MAAM,SAAS,MAAM,UAAU;AAAA,MAC1D,EAAE,cAAc,WAAW,MAAM,UAAU,MAAM,UAAU;AAAA,MAC3D,EAAE,cAAc,UAAU,MAAM,QAAQ,MAAM,SAAS;AAAA,IACzD;AAAA,IACA,MAAM;AAAA,IACN,SAAS,CAAC;AAAA,IACV,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,MACN,EAAE,cAAc,mBAAmB,MAAM,cAAc,MAAM,UAAU;AAAA,MACvE,EAAE,cAAc,WAAW,MAAM,cAAc,MAAM,UAAU;AAAA,MAC/D,EAAE,cAAc,WAAW,MAAM,MAAM,MAAM,UAAU;AAAA,MACvD,EAAE,cAAc,WAAW,MAAM,gBAAgB,MAAM,UAAU;AAAA,MACjE,EAAE,cAAc,UAAU,MAAM,QAAQ,MAAM,SAAS;AAAA,IACzD;AAAA,IACA,MAAM;AAAA,IACN,SAAS,CAAC;AAAA,IACV,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,MACN,EAAE,cAAc,WAAW,MAAM,SAAS,MAAM,UAAU;AAAA,MAC1D,EAAE,cAAc,WAAW,MAAM,SAAS,MAAM,UAAU;AAAA,IAC5D;AAAA,IACA,MAAM;AAAA,IACN,SAAS,CAAC,EAAE,cAAc,WAAW,MAAM,UAAU,MAAM,UAAU,CAAC;AAAA,IACtE,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AACF;AAEO,IAAM,wBAAwB;AAAA,EACnC,EAAE,QAAQ,CAAC,GAAG,iBAAiB,cAAc,MAAM,cAAc;AAAA,EACjE;AAAA,IACE,WAAW;AAAA,IACX,QAAQ;AAAA,MACN,EAAE,SAAS,MAAM,cAAc,WAAW,MAAM,MAAM,MAAM,UAAU;AAAA,MACtE,EAAE,SAAS,MAAM,cAAc,WAAW,MAAM,SAAS,MAAM,UAAU;AAAA,MACzE,EAAE,SAAS,OAAO,cAAc,WAAW,MAAM,UAAU,MAAM,UAAU;AAAA,MAC3E,EAAE,SAAS,OAAO,cAAc,UAAU,MAAM,QAAQ,MAAM,SAAS;AAAA,IACzE;AAAA,IACA,MAAM;AAAA,IACN,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,WAAW;AAAA,IACX,QAAQ;AAAA,MACN,EAAE,SAAS,MAAM,cAAc,WAAW,MAAM,YAAY,MAAM,UAAU;AAAA,MAC5E,EAAE,SAAS,MAAM,cAAc,WAAW,MAAM,YAAY,MAAM,UAAU;AAAA,MAC5E,EAAE,SAAS,OAAO,cAAc,WAAW,MAAM,SAAS,MAAM,UAAU;AAAA,MAC1E,EAAE,SAAS,OAAO,cAAc,WAAW,MAAM,UAAU,MAAM,UAAU;AAAA,MAC3E,EAAE,SAAS,OAAO,cAAc,UAAU,MAAM,QAAQ,MAAM,SAAS;AAAA,IACzE;AAAA,IACA,MAAM;AAAA,IACN,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,WAAW;AAAA,IACX,QAAQ;AAAA,MACN,EAAE,SAAS,MAAM,cAAc,WAAW,MAAM,SAAS,MAAM,UAAU;AAAA,MACzE,EAAE,SAAS,MAAM,cAAc,WAAW,MAAM,MAAM,MAAM,UAAU;AAAA,MACtE,EAAE,SAAS,OAAO,cAAc,WAAW,MAAM,SAAS,MAAM,UAAU;AAAA,MAC1E,EAAE,SAAS,OAAO,cAAc,WAAW,MAAM,UAAU,MAAM,UAAU;AAAA,MAC3E,EAAE,SAAS,OAAO,cAAc,UAAU,MAAM,QAAQ,MAAM,SAAS;AAAA,IACzE;AAAA,IACA,MAAM;AAAA,IACN,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,WAAW;AAAA,IACX,QAAQ;AAAA,MACN,EAAE,SAAS,MAAM,cAAc,WAAW,MAAM,SAAS,MAAM,UAAU;AAAA,MACzE,EAAE,SAAS,OAAO,cAAc,WAAW,MAAM,UAAU,MAAM,UAAU;AAAA,MAC3E,EAAE,SAAS,OAAO,cAAc,WAAW,MAAM,UAAU,MAAM,UAAU;AAAA,MAC3E,EAAE,SAAS,OAAO,cAAc,WAAW,MAAM,cAAc,MAAM,UAAU;AAAA,MAC/E,EAAE,SAAS,OAAO,cAAc,WAAW,MAAM,MAAM,MAAM,UAAU;AAAA,MACvE,EAAE,SAAS,OAAO,cAAc,WAAW,MAAM,gBAAgB,MAAM,UAAU;AAAA,MACjF,EAAE,SAAS,OAAO,cAAc,UAAU,MAAM,QAAQ,MAAM,SAAS;AAAA,IACzE;AAAA,IACA,MAAM;AAAA,IACN,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,WAAW;AAAA,IACX,QAAQ;AAAA,MACN,EAAE,SAAS,MAAM,cAAc,WAAW,MAAM,YAAY,MAAM,UAAU;AAAA,MAC5E,EAAE,SAAS,MAAM,cAAc,WAAW,MAAM,YAAY,MAAM,UAAU;AAAA,MAC5E;AAAA,QACE,YAAY;AAAA,UACV,EAAE,cAAc,WAAW,MAAM,SAAS,MAAM,UAAU;AAAA,UAC1D,EAAE,cAAc,WAAW,MAAM,UAAU,MAAM,UAAU;AAAA,QAC7D;AAAA,QACA,SAAS;AAAA,QACT,cAAc;AAAA,QACd,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,MACA,EAAE,SAAS,OAAO,cAAc,UAAU,MAAM,QAAQ,MAAM,SAAS;AAAA,IACzE;AAAA,IACA,MAAM;AAAA,IACN,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,MACN,EAAE,cAAc,mBAAmB,MAAM,SAAS,MAAM,UAAU;AAAA,MAClE,EAAE,cAAc,WAAW,MAAM,SAAS,MAAM,UAAU;AAAA,MAC1D,EAAE,cAAc,WAAW,MAAM,UAAU,MAAM,UAAU;AAAA,MAC3D,EAAE,cAAc,UAAU,MAAM,QAAQ,MAAM,SAAS;AAAA,IACzD;AAAA,IACA,MAAM;AAAA,IACN,SAAS,CAAC;AAAA,IACV,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,MACN,EAAE,cAAc,mBAAmB,MAAM,SAAS,MAAM,UAAU;AAAA,MAClE,EAAE,cAAc,WAAW,MAAM,SAAS,MAAM,UAAU;AAAA,MAC1D,EAAE,cAAc,WAAW,MAAM,UAAU,MAAM,UAAU;AAAA,MAC3D,EAAE,cAAc,UAAU,MAAM,QAAQ,MAAM,SAAS;AAAA,MACvD,EAAE,cAAc,WAAW,MAAM,cAAc,MAAM,UAAU;AAAA,IACjE;AAAA,IACA,MAAM;AAAA,IACN,SAAS,CAAC;AAAA,IACV,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,MACN,EAAE,cAAc,WAAW,MAAM,UAAU,MAAM,UAAU;AAAA,MAC3D,EAAE,cAAc,mBAAmB,MAAM,UAAU,MAAM,UAAU;AAAA,MACnE;AAAA,QACE,YAAY;AAAA,UACV,EAAE,cAAc,WAAW,MAAM,SAAS,MAAM,UAAU;AAAA,UAC1D,EAAE,cAAc,WAAW,MAAM,UAAU,MAAM,UAAU;AAAA,QAC7D;AAAA,QACA,cAAc;AAAA,QACd,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,MACA,EAAE,cAAc,UAAU,MAAM,QAAQ,MAAM,SAAS;AAAA,IACzD;AAAA,IACA,MAAM;AAAA,IACN,SAAS,CAAC;AAAA,IACV,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,MACN,EAAE,cAAc,WAAW,MAAM,UAAU,MAAM,UAAU;AAAA,MAC3D,EAAE,cAAc,WAAW,MAAM,YAAY,MAAM,UAAU;AAAA,MAC7D,EAAE,cAAc,WAAW,MAAM,SAAS,MAAM,UAAU;AAAA,MAC1D,EAAE,cAAc,WAAW,MAAM,UAAU,MAAM,UAAU;AAAA,MAC3D,EAAE,cAAc,UAAU,MAAM,QAAQ,MAAM,SAAS;AAAA,IACzD;AAAA,IACA,MAAM;AAAA,IACN,SAAS,CAAC;AAAA,IACV,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,MACN,EAAE,cAAc,mBAAmB,MAAM,MAAM,MAAM,UAAU;AAAA,MAC/D,EAAE,cAAc,WAAW,MAAM,SAAS,MAAM,UAAU;AAAA,MAC1D,EAAE,cAAc,WAAW,MAAM,UAAU,MAAM,UAAU;AAAA,MAC3D,EAAE,cAAc,UAAU,MAAM,QAAQ,MAAM,SAAS;AAAA,IACzD;AAAA,IACA,MAAM;AAAA,IACN,SAAS,CAAC;AAAA,IACV,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,MACN,EAAE,cAAc,mBAAmB,MAAM,UAAU,MAAM,UAAU;AAAA,MACnE,EAAE,cAAc,WAAW,MAAM,cAAc,MAAM,UAAU;AAAA,MAC/D,EAAE,cAAc,WAAW,MAAM,MAAM,MAAM,UAAU;AAAA,MACvD,EAAE,cAAc,WAAW,MAAM,gBAAgB,MAAM,UAAU;AAAA,MACjE,EAAE,cAAc,UAAU,MAAM,QAAQ,MAAM,SAAS;AAAA,IACzD;AAAA,IACA,MAAM;AAAA,IACN,SAAS,CAAC;AAAA,IACV,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,MACN,EAAE,cAAc,WAAW,MAAM,SAAS,MAAM,UAAU;AAAA,MAC1D,EAAE,cAAc,WAAW,MAAM,SAAS,MAAM,UAAU;AAAA,IAC5D;AAAA,IACA,MAAM;AAAA,IACN,SAAS,CAAC,EAAE,cAAc,WAAW,MAAM,UAAU,MAAM,UAAU,CAAC;AAAA,IACtE,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AACF;AAEO,IAAM,kBAAkB;AAAA,EAC7B,EAAE,QAAQ,CAAC,GAAG,iBAAiB,cAAc,MAAM,cAAc;AAAA,EACjE;AAAA,IACE,WAAW;AAAA,IACX,QAAQ;AAAA,MACN,EAAE,SAAS,MAAM,cAAc,WAAW,MAAM,MAAM,MAAM,UAAU;AAAA,MACtE,EAAE,SAAS,MAAM,cAAc,WAAW,MAAM,SAAS,MAAM,UAAU;AAAA,MACzE,EAAE,SAAS,OAAO,cAAc,WAAW,MAAM,UAAU,MAAM,UAAU;AAAA,MAC3E,EAAE,SAAS,OAAO,cAAc,UAAU,MAAM,QAAQ,MAAM,SAAS;AAAA,IACzE;AAAA,IACA,MAAM;AAAA,IACN,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,WAAW;AAAA,IACX,QAAQ;AAAA,MACN,EAAE,SAAS,MAAM,cAAc,WAAW,MAAM,YAAY,MAAM,UAAU;AAAA,MAC5E,EAAE,SAAS,MAAM,cAAc,WAAW,MAAM,YAAY,MAAM,UAAU;AAAA,MAC5E,EAAE,SAAS,OAAO,cAAc,WAAW,MAAM,SAAS,MAAM,UAAU;AAAA,MAC1E,EAAE,SAAS,OAAO,cAAc,WAAW,MAAM,UAAU,MAAM,UAAU;AAAA,MAC3E,EAAE,SAAS,OAAO,cAAc,UAAU,MAAM,QAAQ,MAAM,SAAS;AAAA,IACzE;AAAA,IACA,MAAM;AAAA,IACN,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,WAAW;AAAA,IACX,QAAQ;AAAA,MACN,EAAE,SAAS,MAAM,cAAc,WAAW,MAAM,SAAS,MAAM,UAAU;AAAA,MACzE,EAAE,SAAS,MAAM,cAAc,WAAW,MAAM,MAAM,MAAM,UAAU;AAAA,MACtE,EAAE,SAAS,OAAO,cAAc,WAAW,MAAM,SAAS,MAAM,UAAU;AAAA,MAC1E,EAAE,SAAS,OAAO,cAAc,WAAW,MAAM,UAAU,MAAM,UAAU;AAAA,MAC3E,EAAE,SAAS,OAAO,cAAc,UAAU,MAAM,QAAQ,MAAM,SAAS;AAAA,IACzE;AAAA,IACA,MAAM;AAAA,IACN,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,WAAW;AAAA,IACX,QAAQ;AAAA,MACN,EAAE,SAAS,MAAM,cAAc,WAAW,MAAM,SAAS,MAAM,UAAU;AAAA,MACzE,EAAE,SAAS,OAAO,cAAc,WAAW,MAAM,UAAU,MAAM,UAAU;AAAA,MAC3E,EAAE,SAAS,OAAO,cAAc,WAAW,MAAM,UAAU,MAAM,UAAU;AAAA,MAC3E,EAAE,SAAS,OAAO,cAAc,WAAW,MAAM,cAAc,MAAM,UAAU;AAAA,MAC/E,EAAE,SAAS,OAAO,cAAc,WAAW,MAAM,MAAM,MAAM,UAAU;AAAA,MACvE,EAAE,SAAS,OAAO,cAAc,WAAW,MAAM,gBAAgB,MAAM,UAAU;AAAA,MACjF,EAAE,SAAS,OAAO,cAAc,UAAU,MAAM,QAAQ,MAAM,SAAS;AAAA,IACzE;AAAA,IACA,MAAM;AAAA,IACN,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,WAAW;AAAA,IACX,QAAQ;AAAA,MACN,EAAE,SAAS,MAAM,cAAc,WAAW,MAAM,YAAY,MAAM,UAAU;AAAA,MAC5E,EAAE,SAAS,MAAM,cAAc,WAAW,MAAM,YAAY,MAAM,UAAU;AAAA,MAC5E;AAAA,QACE,YAAY;AAAA,UACV,EAAE,cAAc,WAAW,MAAM,SAAS,MAAM,UAAU;AAAA,UAC1D,EAAE,cAAc,WAAW,MAAM,UAAU,MAAM,UAAU;AAAA,QAC7D;AAAA,QACA,SAAS;AAAA,QACT,cAAc;AAAA,QACd,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,MACA,EAAE,SAAS,OAAO,cAAc,UAAU,MAAM,QAAQ,MAAM,SAAS;AAAA,IACzE;AAAA,IACA,MAAM;AAAA,IACN,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,MACN,EAAE,cAAc,mBAAmB,MAAM,SAAS,MAAM,UAAU;AAAA,MAClE,EAAE,cAAc,WAAW,MAAM,SAAS,MAAM,UAAU;AAAA,MAC1D,EAAE,cAAc,WAAW,MAAM,UAAU,MAAM,UAAU;AAAA,MAC3D,EAAE,cAAc,UAAU,MAAM,QAAQ,MAAM,SAAS;AAAA,MACvD,EAAE,cAAc,WAAW,MAAM,cAAc,MAAM,UAAU;AAAA,IACjE;AAAA,IACA,MAAM;AAAA,IACN,SAAS,CAAC;AAAA,IACV,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,MACN,EAAE,cAAc,WAAW,MAAM,UAAU,MAAM,UAAU;AAAA,MAC3D,EAAE,cAAc,mBAAmB,MAAM,UAAU,MAAM,UAAU;AAAA,MACnE;AAAA,QACE,YAAY;AAAA,UACV,EAAE,cAAc,WAAW,MAAM,SAAS,MAAM,UAAU;AAAA,UAC1D,EAAE,cAAc,WAAW,MAAM,UAAU,MAAM,UAAU;AAAA,QAC7D;AAAA,QACA,cAAc;AAAA,QACd,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,MACA,EAAE,cAAc,UAAU,MAAM,QAAQ,MAAM,SAAS;AAAA,IACzD;AAAA,IACA,MAAM;AAAA,IACN,SAAS,CAAC;AAAA,IACV,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,MACN,EAAE,cAAc,WAAW,MAAM,UAAU,MAAM,UAAU;AAAA,MAC3D,EAAE,cAAc,WAAW,MAAM,YAAY,MAAM,UAAU;AAAA,MAC7D,EAAE,cAAc,WAAW,MAAM,SAAS,MAAM,UAAU;AAAA,MAC1D,EAAE,cAAc,WAAW,MAAM,UAAU,MAAM,UAAU;AAAA,MAC3D,EAAE,cAAc,UAAU,MAAM,QAAQ,MAAM,SAAS;AAAA,IACzD;AAAA,IACA,MAAM;AAAA,IACN,SAAS,CAAC;AAAA,IACV,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,MACN,EAAE,cAAc,mBAAmB,MAAM,MAAM,MAAM,UAAU;AAAA,MAC/D,EAAE,cAAc,WAAW,MAAM,SAAS,MAAM,UAAU;AAAA,MAC1D,EAAE,cAAc,WAAW,MAAM,UAAU,MAAM,UAAU;AAAA,MAC3D,EAAE,cAAc,UAAU,MAAM,QAAQ,MAAM,SAAS;AAAA,IACzD;AAAA,IACA,MAAM;AAAA,IACN,SAAS,CAAC;AAAA,IACV,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,MACN,EAAE,cAAc,mBAAmB,MAAM,UAAU,MAAM,UAAU;AAAA,MACnE,EAAE,cAAc,WAAW,MAAM,cAAc,MAAM,UAAU;AAAA,MAC/D,EAAE,cAAc,WAAW,MAAM,MAAM,MAAM,UAAU;AAAA,MACvD,EAAE,cAAc,WAAW,MAAM,gBAAgB,MAAM,UAAU;AAAA,MACjE,EAAE,cAAc,UAAU,MAAM,QAAQ,MAAM,SAAS;AAAA,IACzD;AAAA,IACA,MAAM;AAAA,IACN,SAAS,CAAC;AAAA,IACV,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,MACN,EAAE,cAAc,WAAW,MAAM,SAAS,MAAM,UAAU;AAAA,MAC1D,EAAE,cAAc,WAAW,MAAM,SAAS,MAAM,UAAU;AAAA,IAC5D;AAAA,IACA,MAAM;AAAA,IACN,SAAS,CAAC,EAAE,cAAc,WAAW,MAAM,UAAU,MAAM,UAAU,CAAC;AAAA,IACtE,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AACF;;AC/eO,IAAK;AAAL,UAAK,SAAL;AACL,wBAAW;AACX,yBAAY;AACZ,uBAAU;AACV,iCAAoB;AACpB,uBAAU;AACV,2BAAc;AACd,yBAAY;AACZ,sBAAS;AACT,oBAAO;AACP,wBAAW;AACX,wBAAW;AACX,sBAAS;AACT,wBAAW;AACX,oBAAO;AACP,4BAAe;AACf,wBAAW;AACX,wBAAW;AACX,uBAAU;AACV,yBAAY;AACZ,iCAAoB;AAAA,GApBV;AAuBL,IAAK;AAAL,UAAK,cAAL;AACL,6BAAW;AACX,8BAAY;AACZ,4BAAU;AACV,sCAAoB;AACpB,4BAAU;AACV,gCAAc;AACd,8BAAY;AACZ,2BAAS;AACT,yBAAO;AACP,6BAAW;AACX,6BAAW;AACX,2BAAS;AACT,6BAAW;AACX,yBAAO;AACP,6BAAW;AACX,6BAAW;AACX,4BAAU;AACV,8BAAY;AAAA,GAlBF;;;ACrBL,IAAK;AAAL,UAAK,QAAL;AACL,uBAAW;AACX,wBAAY;AACZ,sBAAU;AACV,gCAAoB;AACpB,sBAAU;AACV,0BAAc;AACd,qBAAS;AACT,mBAAO;AACP,uBAAW;AACX,uBAAW;AACX,qBAAS;AACT,uBAAW;AACX,mBAAO;AACP,uBAAW;AACX,uBAAW;AACX,wBAAY;AACZ,sBAAU;AACV,wBAAY;AAAA,GAlBF;AAqBL,IAAK;AAAL,UAAK,UAAL;AACL,yBAAW;AACX,4BAAc;AACd,0BAAY;AACZ,6BAAe;AACf,wBAAU;AACV,kCAAoB;AACpB,qCAAuB;AACvB,wBAAU;AACV,4BAAc;AACd,0BAAY;AACZ,uBAAS;AACT,qBAAO;AACP,yBAAW;AACX,uBAAS;AACT,yBAAW;AACX,4BAAc;AACd,yBAAW;AACX,qBAAO;AACP,6BAAe;AACf,yBAAW;AACX,4BAAc;AACd,yBAAW;AACX,wBAAU;AACV,2BAAa;AACb,0BAAY;AACZ,kCAAoB;AAAA,GA1BV;AA6BL,IAAM,iBAAyC;AAAA,GACnD,QAAQ,cAAc,MAAM;AAAA,GAC5B,QAAQ,WAAW,MAAM;AAAA,GACzB,QAAQ,eAAe,MAAM;AAAA,GAC7B,QAAQ,YAAY,MAAM;AAAA,GAC1B,QAAQ,uBAAuB,MAAM;AAAA,GACrC,QAAQ,oBAAoB,MAAM;AAAA,GAClC,QAAQ,UAAU,MAAM;AAAA,GACxB,QAAQ,cAAc,MAAM;AAAA,GAC5B,QAAQ,UAAU,MAAM;AAAA,GACxB,QAAQ,YAAY,MAAM;AAAA,GAC1B,QAAQ,SAAS,MAAM;AAAA,GACvB,QAAQ,OAAO,MAAM;AAAA,GACrB,QAAQ,WAAW,MAAM;AAAA,GACzB,QAAQ,cAAc,MAAM;AAAA,GAC5B,QAAQ,SAAS,MAAM;AAAA,GACvB,QAAQ,WAAW,MAAM;AAAA,GACzB,QAAQ,WAAW,MAAM;AAAA,GACzB,QAAQ,eAAe,MAAM;AAAA,GAC7B,QAAQ,OAAO,MAAM;AAAA,GACrB,QAAQ,cAAc,MAAM;AAAA,GAC5B,QAAQ,WAAW,MAAM;AAAA,GACzB,QAAQ,WAAW,MAAM;AAAA,GACzB,QAAQ,aAAa,MAAM;AAAA,GAC3B,QAAQ,UAAU,MAAM;AAAA,GACxB,QAAQ,oBAAoB,MAAM;AAAA,GAClC,QAAQ,YAAY,MAAM;AAC7B;AAGA,IAAM,aAAa,OAAO,KAAK,KAAK;AACpC,IAAM,SAAS,OAAO,OAAO,KAAK;AAE3B,IAAK;AAAL,UAAK,cAAL;AACL,qCAAM,MAAN;AACA,sCAAO,MAAP;AACA,qCAAM,KAAN;AACA,qCAAM,KAAN;AACA,qCAAM,MAAN;AACA,qCAAM,KAAN;AACA,sCAAO,KAAP;AACA,sCAAO,KAAP;AACA,qCAAM,MAAN;AACA,qCAAM,MAAN;AACA,sCAAO,MAAP;AACA,sCAAO,KAAP;AACA,sCAAO,KAAP;AACA,qCAAM,KAAN;AACA,uCAAQ,MAAR;AACA,sCAAO,MAAP;AACA,oCAAK,MAAL;AACA,sCAAO,KAAP;AACA,qCAAM,KAAN;AAAA,GAnBU;AAuBL,IAAM,kBAAkB,CAAC,MAAM,UAAU,MAAM,SAAS;AASxD,IAAM,YAAY;AAAA,EACvB,MAAM;AAAA,EACN,MAAM;AAAA,EACN,MAAM;AAAA,EACN,MAAM;AAAA,EACN,MAAM;AAAA,EACN,MAAM;AACR;AAQO,IAAM,aAAa;AAAA,EACxB,MAAM;AAAA,EACN,MAAM;AAAA,EACN,MAAM;AAAA,EACN,MAAM;AAAA,EACN,MAAM;AACR;AAQO,IAAM,eAAe;AAAA,EAC1B,MAAM;AAAA,EACN,MAAM;AAAA,EACN,MAAM;AAAA,EACN,MAAM;AAAA,EACN,MAAM;AACR;AAEO,IAAM,oBAAoB;AAAA,EAC/B,MAAM;AAAA,EACN,MAAM;AAAA,EACN,MAAM;AAAA,EACN,MAAM;AAAA,EACN,MAAM;AAAA,EACN,MAAM;AAAA,EACN,MAAM;AAAA,EACN,MAAM;AAAA,EACN,MAAM;AAAA,EACN,MAAM;AACR;AAEO,IAAM,sBAAsB;AAAA,EACjC,MAAM;AAAA,EACN,MAAM;AAAA,EACN,MAAM;AAAA,EACN,MAAM;AAAA,EACN,MAAM;AAAA,EACN,MAAM;AACR;AAEA,IAAM,mBAAmB,OAAO,OAC9B,CAAC,KAAK,UAAU;AACd,QAAM,YAAY,WAAW,KAAK,CAAC,QAAQ,MAAM,SAA0B,KAAK;AAEhF,MAAI;AAAW,QAAI,SAAS;AAE5B,SAAO;AAAA,GAET,CAAC,CACH;AAEO,IAAM,iBAAiB,OAAO,OACnC,CAAC,KAAK,UAAU;AACd,MAAI,SAAS,QAAQ,iBAAiB;AACtC,SAAO;AAAA,GAET,CAAC,CACH;AAEO,IAAM,aAAa,OAAO,OAC/B,CAAC,KAAK,UAAU;AACd,MAAI,SAAS,OAAO,iBAAiB;AACrC,SAAO;AAAA,GAET,CAAC,CACH;AAEO,IAAM,oBAAoB,OAAO,OACtC,CAAC,KAAK,UAAU;AACd,QAAM,cAAc,GAAG,iBAAiB;AAExC,MAAI,SAAS,QAAQ;AACrB,SAAO;AAAA,GAET,CAAC,CACH;AAEO,IAAM,qBAAqB,OAAO,OACvC,CAAC,KAAK,UAAU;AACd,MAAI,SAAS,YAAY,iBAAiB;AAC1C,SAAO;AAAA,GAET,CAAC,CACH;;AClJO,IAAK;AAAL,UAAK,YAAL;AACL,+CAA+B;AAC/B,sCAAsB;AACtB,uCAAuB;AACvB,sCAAsB;AACtB,sCAAsB;AACtB,6BAAa;AACb,8BAAc;AACd,6BAAa;AACb,uCAAuB;AACvB,8BAAc;AACd,+BAAe;AACf,8BAAc;AACd,sCAAsB;AACtB,6BAAa;AACb,8BAAc;AACd,6BAAa;AAAA,GAhBH;AA0BL,IAAM,WAAW,CAAC,UAAU,YAAY,UAAU,cAAc,UAAU,UAAU;AAEpF,IAAM,UAAU;AAAA,EACrB,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AACZ;AAEO,IAAM,WAAW;AAAA,EACtB,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AACZ;;ACpHO,IAAK;AAAL,UAAK,kBAAL;AACL,4BAAM;AACN,6BAAO;AACP,4BAAM;AACN,4BAAM;AACN,8BAAQ;AACR,2BAAK;AAAA,GANK;AASL,IAAK;AAAL,UAAK,iBAAL;AACL,2BAAM;AACN,4BAAO;AACP,2BAAM;AACN,2BAAM;AACN,2BAAM;AACN,2BAAM;AACN,4BAAO;AACP,4BAAO;AACP,2BAAM;AACN,2BAAM;AACN,4BAAO;AACP,4BAAO;AACP,4BAAO;AACP,2BAAM;AACN,6BAAQ;AACR,4BAAO;AACP,0BAAK;AACL,4BAAO;AAAA,GAlBG;AAuBL,IAAM,wBAA4D;AAAA,EACvE,KAAK,CAAC,IAAI,IAAI,GAAG,GAAG,CAAC;AAAA,EACrB,MAAM,CAAC,IAAI,IAAI,GAAG,GAAG,CAAC;AAAA,EACtB,KAAK,CAAC,IAAI,KAAK,GAAG,GAAG,CAAC;AAAA,EACtB,KAAK,CAAC,IAAI,KAAK,GAAG,GAAG,CAAC;AAAA,EACtB,KAAK,CAAC,IAAI,IAAI,GAAG,GAAG,CAAC;AAAA,EACrB,KAAK,CAAC,IAAI,GAAG,GAAG,GAAG,CAAC;AAAA,EACpB,MAAM,CAAC,IAAI,GAAG,GAAG,GAAG,CAAC;AAAA,EACrB,MAAM,CAAC,IAAI,GAAG,GAAG,GAAG,CAAC;AAAA,EACrB,KAAK,CAAC,IAAI,IAAI,GAAG,GAAG,CAAC;AAAA,EACrB,MAAM,CAAC,IAAI,KAAK,GAAG,GAAG,CAAC;AAAA,EACvB,MAAM,CAAC,IAAI,KAAK,GAAG,GAAG,CAAC;AAAA,EACvB,KAAK,CAAC,IAAI,GAAG,GAAG,GAAG,CAAC;AAAA,EACpB,OAAO,CAAC,IAAI,IAAI,GAAG,GAAG,CAAC;AAAA,EACvB,MAAM,CAAC,IAAI,KAAK,GAAG,GAAG,CAAC;AAAA,EACvB,IAAI,CAAC,IAAI,IAAI,GAAG,GAAG,CAAC;AAAA,EACpB,MAAM,CAAC,IAAI,KAAK,GAAG,GAAG,CAAC;AAAA,EAGvB,KAAK,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC;AAAA,EACnB,MAAM,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC;AACtB;;AChDO,IAAK;AAAL,UAAK,eAAL;AACL,8BAAW;AACX,6BAAU;AACV,2BAAQ;AACR,8BAAW;AACX,kCAAe;AACf,qCAAkB;AAClB,4BAAS;AACT,qCAAkB;AAClB,4BAAS;AACT,2BAAQ;AACR,yBAAM;AACN,gCAAa;AACb,2BAAQ;AACR,mCAAgB;AAAA,GAdN;AAiBL,IAAK;AAAL,UAAK,kBAAL;AACL,iDAAU,SAAV;AACA,sDAAe,SAAf;AACA,qDAAc,SAAd;AAAA,GAHU;;ACZL,IAAK;AAAL,UAAK,YAAL;AACL,0BAAU;AACV,uBAAO;AACP,0BAAU;AAAA,GAHA;AAML,IAAK;AAAL,UAAK,cAAL;AACL,4BAAU;AACV,8BAAY;AAAA,GAFF;AAgBL,IAAK;AAAL,UAAK,WAAL;AACL,sBAAO;AACP,yBAAU;AACV,uBAAQ;AACR,mCAAoB;AACpB,wBAAS;AACT,0BAAW;AACX,2BAAY;AACZ,4BAAa;AAAA,GARH;;ACjCZ;AASO,SAAS,sBAAsB,GAAG,WAAW,UAAyC;AAC3F,aAAW,GAAG,OAAO;AAAA,OAChB;AAAA,IACH,SAAS,KAAK,0BAA0B,OAAO,SAAS,aAAa,OAAO;AAAA,EAC9E,CAAC;AAAA;AAGH,IAAS,sBAAW,GAAG;AACrB,MAAI;AAAU,WAAO;AACrB,aAAW,GAAG,OAAO,EAAE,SAAS,sBAAsB,CAAC;AACvD,SAAO;AAAA;AAjBT,IAAI;AAEG,IAAM,+BACJ,WAAW,cACb,CAAC,IACF,EAAE,UAAU,2BAA2B,SAAS,0BAA0B;AAezE,IAAM,gBAAgB;AAAA,EAC3B,KAAK,CAAI,KAA6B,YACpC,YAAY,EAAE,IAAI,KAAK,OAAO,EAAE,KAAQ;AAAA,EAC1C,MAAM,CAAI,KAA6B,YACrC,YAAY,EAAE,KAAK,KAAK,OAAO,EAAE,KAAQ;AAC7C;;;AC8KA,eAAsB,WAAW,CAC/B,QACA;AACA,QAAM,gBAAgB,MAAa;AAEnC,aAAW,aAAa,OAAO,OAAO,aAAa,GAAG;AACpD,iBAAa,YAAY,OAAO,eAAe,UAAU,UAAU,QAAQ;AACzE,UAAI,gBAAgB,UAAU,eAAe,OAAO,YAAY;AAC9D,eAAO;AAAA,MACT;AAEA,UACE,aAAa,QACb,WAAW,UACX,eAAe,OAAO,SACtB,KAAK,QAAQ,YAAY,MAAM,OAAO,SAAS,YAAY;AAE3D,eAAO;AAAA,IACX;AAAA,EACF;AAEA;AAAA;AA3NF,IAAM,sBAAsB;AAS5B,IAAM,sBAAsB,SAAS,OAAO,SAA0C;AACpF,MAAI;AACF,YAAQ,WAAW,MAAM,cAAc,KAAyB,WAAW,QAAQ;AAAA,MACjF,SAAS;AAAA,QACP,QAAQ;AAAA,QACR,gBAAgB;AAAA,QAChB,iBAAiB;AAAA,MACnB;AAAA,MACA,MAAM,KAAK,UAAU;AAAA,QACnB,IAAI;AAAA,QACJ,SAAS;AAAA,QACT,QAAQ;AAAA,QACR,QAAQ,CAAC,EAAE,IAAI,GAAG,YAAY,GAAG,MAAM,oBAAoB,GAAG,QAAQ;AAAA,MACxE,CAAC;AAAA,IACH,CAAC;AAED,WAAO,OAAO,SAAS,OAAO,UAAU,YAAY,MAAM,EAAE,SAAS,CAAC;AAAA,WAC/D,OAAP;AACA,YAAQ,MAAM,KAAK;AACnB,WAAO,YAAY;AAAA;AAAA;AAIvB,IAAM,qBAAqB,CAAC,WAAmB;AAC7C,MAAI,WAAW,MAAM;AAAU,WAAO,YAAY;AAClD,QAAM,cAAc,OAAO,MAAM,GAAG;AACpC,QAAM,UAAU,YAAY,WAAW,IAAI,YAAY,YAAY,YAAY,SAAS;AAExF,SAAO,SAAS,WAAW,IAAI,IAC3B,oBAAoB,EAAE,OAAO,MAAM,UAAU,IAAI,QAAQ,CAAC,IAC1D,YAAY;AAAA;AAGlB,IAAM,sBAAsB,CAAC,WAAmB;AAC9C,QAAM,cAAc,OAAO,MAAM,GAAG;AACpC,QAAM,UAAU,YAAY,WAAW,IAAI,YAAY,YAAY,YAAY,SAAS;AAExF,SAAO,SAAS,WAAW,IAAI,IAC3B,oBAAoB,EAAE,OAAO,MAAM,WAAW,IAAI,QAAQ,YAAY,EAAE,CAAC,IACzE,YAAY;AAAA;AAGlB,IAAM,qBAAqB,CAAC,WAAmB;AAC7C,MAAI,WAAW,MAAM;AAAmB,WAAO,YAAY;AAE3D,SAAO,YAAY;AAAA;AAGd,IAAM,aAAa,GAAG,OAAO,aAA+C;AACjF,UAAQ;AAAA,SACD,MAAM;AACT,aAAO,mBAAmB,MAAM;AAAA,SAC7B,MAAM;AACT,aAAO,oBAAoB,MAAM;AAAA,SAC9B,MAAM;AACT,aAAO,mBAAmB,MAAM;AAAA;AAEhC,aAAO,YAAY;AAAA;AAAA;AAIlB,IAAM,aAAa,GAAG,OAAO,aAA+C;AACjF,UAAQ;AAAA,SACD,MAAM;AAAA,SACN,MAAM;AACT,aAAO,WAAW;AAAA,SACf,MAAM;AACT,aAAO,WAAW;AAAA,SACf,MAAM;AACT,aAAO,WAAW;AAAA,SACf,MAAM;AACT,aAAO,WAAW;AAAA,SACf,MAAM;AACT,aAAO,WAAW;AAAA,SACf,MAAM;AACT,aAAO,WAAW;AAAA,SACf,MAAM;AACT,aAAO,WAAW;AAAA;AAGlB,aAAO,WAAW;AAAA;AAAA;AAIjB,IAAM,qBAAqB,CAChC,gBAC4C;AAC5C,UAAQ;AAAA,SACD,GAAG,MAAM;AACZ,aAAO,EAAE,YAAY,uDAAuD,SAAS,GAAG;AAAA,SACrF,GAAG,MAAM;AACZ,aAAO,EAAE,YAAY,wDAAwD,SAAS,GAAG;AAAA,SACtF,MAAM;AACT,aAAO,EAAE,YAAY,GAAG,MAAM,gBAAgB,SAAS,YAAY,aAAa;AAAA,SAC7E,MAAM;AACT,aAAO,EAAE,YAAY,GAAG,MAAM,gBAAgB,SAAS,YAAY,aAAa;AAAA,SAC7E,MAAM;AACT,aAAO,EAAE,YAAY,aAAa,SAAS,YAAY,aAAa;AAAA,SACjE,MAAM;AACT,aAAO,EAAE,YAAY,aAAa,SAAS,YAAY,aAAa;AAAA,SACjE,MAAM;AACT,aAAO,EAAE,YAAY,WAAW,SAAS,YAAY,aAAa;AAAA,SAC/D,MAAM;AACT,aAAO,EAAE,YAAY,cAAc,SAAS,YAAY,KAAK;AAAA,SAC1D,GAAG,MAAM;AACZ,aAAO,EAAE,YAAY,aAAa,SAAS,EAAE;AAAA,SAE1C,GAAG,MAAM;AACZ,aAAO,EAAE,YAAY,GAAG,MAAM,cAAc,SAAS,EAAE;AAAA;AAGvD,aAAO,EAAE,YAAY,GAAG,eAAe,eAAe,SAAS,YAAY,aAAa;AAAA;AAAA;AAKvF,IAAM,eAAe,GAAG,OAAO,aAA+C;AACnF,MAAI,OAAO,SAAS,GAAG;AAAG,WAAO;AAEjC,UAAQ;AAAA,SACD,MAAM;AACT,aAAO,WAAW,SAAS,WAAW,MAAM;AAAA,SACzC,MAAM;AACT,aAAO,WAAW,MAAM,SAAS,WAAW,MAAM;AAAA,SAC/C,MAAM;AACT,aAAO,WAAW,MAAM,UAAU,WAAW;AAAA,SAC1C,MAAM;AACT,aAAO,WAAW,MAAM,UAAU,WAAW;AAAA,SAC1C,MAAM;AACT,aAAO,WAAW,MAAM,WAAW,WAAW;AAAA,SAC3C,MAAM;AACT,aAAO,WAAW,MAAM,YAAY,WAAW,MAAM;AAAA,SAClD,MAAM;AACT,aAAO,WAAW,MAAM,UAAU,WAAW;AAAA,SAE1C,MAAM;AACT,aAAO,CAAC,MAAM,UAAU,MAAM,QAAQ,EAAE,SAAS,MAAe,IAAI,WAAW;AAAA,SAC5E,MAAM;AACT,aAAO,CAAC,MAAM,UAAU,MAAM,QAAQ,EAAE,SAAS,MAAe,IAAI,WAAW;AAAA;AAG/E,aAAO;AAAA;AAAA;AAIN,IAAM,kBAAkB,CAAC,gBAAwB;AACtD,SAAO,UAAU,eAAe,YAAY,MAAM,GAAG;AACrD,QAAM,QAAQ,YAAY,SAAS,GAAG;AACtC,QAAM,SAAS,YAAY,KAAK,GAAG;AACnC,QAAM,cAAc,QAAQ,MAAM,GAAG;AACrC,QAAM,SAAS,aAAa,SACxB,YAAY,WAAW,IACrB,YAAY,KACZ,YAAY,MAAM,IAAG,CAAE,EAAE,KAAK,GAAG,IACnC;AAEJ,SAAO,EAAE,OAAO,QAAQ,QAAQ,MAAM;AAAA;AAGxC,IAAM,qBAAqB,IAAI,OAC7B,sEACA,KACF;AAEA,IAAM,qBAAqB,CAAC,gBAAwB;AAClD,SAAO,OAAO,UAAU,YAAY,MAAM,GAAG;AAC7C,OAAK,UAAU,SAAS,KAAiB;AAAG,WAAO;AACnD,QAAM,cAAc,OAAO,MAAM,GAAG;AACpC,QAAM,UAAU,YAAY,WAAW,IAAI,YAAY,YAAY,YAAY,SAAS;AAExF,SAAO,WAAW,EAAE,OAAuB,OAAO,CAAC,OAAO;AAAA;AAGrD,IAAM,eAAe,CAC1B,YAOA,QAAO,OAAO,GAAG,OAAO,OAAO,aAAa;AAC1C,QAAM,cAAc,GAAG,SAAS;AAEhC,UACG,mBAAmB,KAAK,WAAW,KAAK,mBAAmB,WAAW,KAAK,UAAU;AAAA,CAEzF;;ACrLI,SAAS,oBAAoB,GAAG,OAAO,OAAO,QAAgB;AACnE,MAAI,UAAU,SAAS,KAAiB,GAAG;AACzC,QAAI,SAAS;AAAU,aAAO,CAAC,IAAI,IAAI,GAAG,KAAK;AAC/C,QAAI,SAAS;AAAc,aAAO,CAAC,IAAI,IAAI,OAAO,GAAG,CAAC;AACtD,WAAO,iBAAiB,sBAAsB,QAAQ,KAAK;AAAA,EAC7D;AAEA,MAAI,CAAC,MAAM,SAAS,MAAM,QAAQ,EAAE,SAAS,KAAK,GAAG;AACnD,UAAM,UAAU,UAAU,MAAM,UAAU,IAAI;AAE9C,QAAI,SAAS;AAA6B,aAAO,CAAC,IAAI,SAAS,OAAO,GAAG,CAAC;AAC1E,QAAI,SAAS;AAAU,aAAO,CAAC,IAAI,SAAS,GAAG,GAAG,KAAK;AACvD,QAAI,SAAS;AAAU,aAAO,CAAC,IAAI,SAAS,GAAG,GAAG,KAAK;AACvD,WAAO,iBAAiB,sBAAsB,QAAQ,KAAK;AAAA,EAC7D;AAEA,SAAO,iBAAiB,sBAAsB,QAAQ,KAAK;AAAA;AAGtD,SAAS,kBAAkB,CAAC,MAAc;AAC/C,SAAO,GAAG,SAAS,WAAW,KAAK,MAAM,GAAG,EAAE,IAAI,CAAC,MAAM,OAAO,SAAS,GAAG,EAAE,CAAC;AAE/E,MAAI,YAAY;AAAK;AAErB,UAAQ;AAAA,SACD;AACH,aAAO;AAAA,SACJ;AACH,aAAO;AAAA;AAEP,aAAO;AAAA;AAAA;AAnCb,IAAM,mBAAmB,CAAC,MAA2B,UAAkB;AAAA,EACrE,GAAG,KAAK,MAAM,GAAG,KAAK,SAAS,CAAC;AAAA,EAChC;AACF;;ACSO,SAAS,sBAAsB;AAAA,EACpC;AAAA,EACA;AAAA,EACA;AAAA,GACqC;AACrC,QAAM,IAAI,kBAAkB,cAAc;AAC1C,QAAM,IAAI,kBAAkB,SAAS;AACrC,QAAM,IAAI,kBAAkB,SAAS;AAErC,QAAM,QAAQ,EAAE,IAAI,CAAC;AACrB,QAAM,QAAQ,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC;AAC5B,QAAM,QAAQ,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC;AAC5B,QAAM,QAAQ,EAAE,IAAI,CAAC;AACrB,QAAM,QAAQ,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC;AAE5B,QAAM,YAAY,MAAM,IAAI,MAAM,IAAI,KAAK,EAAE,IAAI,KAAK,CAAC;AAEvD,SAAO,UAAU,IAAI,KAAK;AAAA;AAGrB,SAAS,uBAAuB;AAAA,EACrC;AAAA,EACA;AAAA,EACA;AAAA,GACsC;AACtC,QAAM,IAAI,kBAAkB,cAAc;AAC1C,QAAM,IAAI,kBAAkB,SAAS;AACrC,QAAM,IAAI,kBAAkB,UAAU;AAEtC,QAAM,QAAQ,EAAE,IAAI,CAAC;AACrB,QAAM,QAAQ,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC;AAC5B,QAAM,QAAQ,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC;AAC5B,QAAM,QAAQ,EAAE,IAAI,CAAC;AACrB,QAAM,YAAY,MAAM,IAAI,MAAM,IAAI,KAAK,EAAE,IAAI,KAAK,CAAC;AACvD,QAAM,QAAQ,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC;AAE5B,SAAO,UAAU,IAAI,KAAK;AAAA;AAGrB,SAAS,+BAA+B;AAAA,EAC7C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,GACsD;AACtD,SAAO,uBAAuB,EAAE,WAAW,gBAAgB,UAAU,CAAC,EAAE,IAAI,OAAO;AAAA;AAG9E,SAAS,gCAAgC;AAAA,EAC9C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,GACuD;AACvD,SAAO,wBAAwB,EAAE,YAAY,gBAAgB,UAAU,CAAC,EAAE,IAAI,OAAO;AAAA;AAGvF,IAAS,4BAAiB,CAAC,OAAe;AACxC,SAAO,cAAc,WAAW,OAAO,KAAK,GAAG,YAAY,IAAI;AAAA;AAG1D,SAAS,qBAAqB;AAAA,EACnC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,GAIE;AACF,SAAO;AAAA,IACL,aAAa,kBAAkB,UAAU,EAAE,IAAI,cAAc,EAAE,IAAI,SAAS;AAAA,IAC5E,YAAY,kBAAkB,SAAS,EAAE,IAAI,cAAc,EAAE,IAAI,SAAS;AAAA,EAC5E;AAAA;AAGK,SAAS,oBAAoB;AAAA,EAClC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,GAKE;AACF,SAAO,OAAO,YACZ,OAAO,QAAQ,sBAAsB,EAAE,gBAAgB,WAAW,WAAW,WAAW,CAAC,CAAC,EAAE,IAC1F,EAAE,MAAM,WAAW,CAAC,MAAM,MAAM,IAAI,OAAO,CAAC,CAC9C,CACF;AAAA;AAGK,SAAS,qBAAqB;AAAA,EACnC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,GAME;AACF,QAAM,IAAI,IAAI,cAAc,EAAE,OAAO,WAAW,SAAS,EAAE,CAAC;AAC5D,QAAM,IAAI,IAAI,cAAc,EAAE,OAAO,YAAY,SAAS,EAAE,CAAC;AAC7D,QAAM,IAAI,IAAI,cAAc,EAAE,OAAO,WAAW,SAAS,EAAE,CAAC;AAC5D,QAAM,gBAAgB,IAAI,cAAc,EAAE,OAAO,YAAY,SAAS,EAAE,CAAC;AACzE,QAAM,iBAAiB,IAAI,cAAc,EAAE,OAAO,aAAa,SAAS,EAAE,CAAC;AAG3E,QAAM,KAAK,cAAc,IAAI,CAAC;AAC9B,QAAM,KAAK,eAAe,IAAI,CAAC;AAC/B,QAAM,KAAK,cAAc,IAAI,cAAc;AAC3C,QAAM,KAAK,EAAE,IAAI,CAAC;AAClB,QAAM,YAAY,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AACjD,QAAM,cAAc,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC;AAC5C,QAAM,yBAAyB,UAAU,IAAI,WAAW;AACxD,QAAM,0BAA0B,kBAAkB,cAAc,EAAE,IAAI,sBAAsB;AAE5F,MAAI,uBAAuB,aAAa,QAAQ,MAAM,GAAG;AACvD,WAAO,wBAAwB,IAAI,CAAC,EAAE,aAAa,QAAQ;AAAA,EAC7D;AAGA,QAAM,eAAe,EAAE,IAAI,uBAAuB;AAElD,SAAO,wBAAwB,IAAI,YAAY,EAAE,aAAa,QAAQ;AAAA;AAGjE,SAAS,oBAAoB;AAAA,EAClC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,GACa;AACb,MAAI,eAAe,OAAO,gBAAgB,OAAO,cAAc,OAAO,eAAe;AACnF,WAAO;AAET,QAAM,IAAI,kBAAkB,SAAS;AACrC,QAAM,IAAI,kBAAkB,UAAU;AACtC,QAAM,iBAAiB,kBAAkB,WAAW;AACpD,QAAM,gBAAgB,kBAAkB,UAAU;AAElD,QAAM,YAAY,eAAe,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,aAAa,CAAC;AAChE,QAAM,cAAc,EAAE,IAAI,aAAa,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAGrD,SAAO,KAAK,IAAI,UAAU,IAAI,WAAW,EAAE,aAAa,QAAQ,CAAC;AAAA;;AClJ5D,IAAM,aAAa,CAAqB,UAAa,YAA4B;AACtF,UAAQ;AAAA,SACD,SAAS;AAAA,SACT,SAAS,MAAM;AAClB,cAAQ,YAAY;AACpB,aAAO,GAAG,YAAY;AAAA,IACxB;AAAA,SAEK,SAAS,QAAQ;AACpB,cAAQ,SAAS,iBAAiB;AAClC,aAAO,GAAG,YAAY,WAAW;AAAA,IACnC;AAAA,SAEK,SAAS,mBAAmB;AAC/B,cAAQ,MAAM,OAAO,SAAS,UAAU;AACxC,aAAO,GAAG,YAAY,QAAQ,SAAS,UAAU,QAAQ,IAAI,UAAU;AAAA,IACzE;AAAA,SAEK,SAAS,SAAS;AACrB,cAAQ,OAAO,QAAQ,SAAS,eAAe;AAE/C,YAAM,oBAAoB,CAAC,QAAc,YAA2B;AAClE,gBAAQ;AAAA,eACD,MAAM;AACT,mBAAO;AAAA,eACJ,MAAM;AACT,mBAAO;AAAA,eACJ,MAAM;AACT,mBAAO;AAAA;AAEP,mBAAO,GAAG,UAAS;AAAA;AAAA;AAIzB,aAAO,aACH,GAAG,YAAY,SAAS,WACxB,GAAG,YAAY,kBAAkB,OAAO,MAAM,KAAK,WAAW;AAAA,IACpE;AAAA,SAEK,SAAS,UAAU;AACtB,cAAQ,OAAO,QAAQ,QAAQ,aAAa,mBAAmB,eAC7D;AAEF,YAAM,kBACJ,UAAU,SAAS,WAAW,QAAQ,GAAG,UAAU,OAAO,OAAM,CAAE,MAAM;AAC1E,YAAM,UAAU,cAAc,oBAAoB,IAAI,sBAAsB;AAC5E,YAAM,eAAe,aAAa,MAAM;AAExC,aAAO,GAAG,YAAY,QAAQ,eAAe,mBAAmB,cAAc;AAAA,IAChF;AAAA,SAEK,SAAS;AAAA,SACT,SAAS,YAAY;AACxB,cAAQ,OAAO,YAAY;AAE3B,aAAO,GAAG,YAAY,SAAS;AAAA,IACjC;AAAA;AAGE,aAAO;AAAA;AAAA;;AC1Fb,IAAM,gBAAgB;AAAA,EAIpB,kCAAkC;AAAA,EAClC,kDAAkD;AAAA,EAClD,mBAAmB;AAAA,EACnB,6BAA6B;AAAA,EAC7B,8CAA8C;AAAA,EAC9C,uBAAuB;AAAA,EACvB,4BAA4B;AAAA,EAC5B,mBAAmB;AAAA,EAKnB,iCAAiC;AAAA,EACjC,qCAAqC;AAAA,EACrC,yCAAyC;AAAA,EACzC,oCAAoC;AAAA,EACpC,kCAAkC;AAAA,EAClC,kCAAkC;AAAA,EAClC,iCAAiC;AAAA,EACjC,+BAA+B;AAAA,EAC/B,mCAAmC;AAAA,EAInC,0BAA0B;AAAA,EAC1B,8BAA8B;AAAA,EAC9B,gCAAgC;AAAA,EAChC,8BAA8B;AAAA,EAC9B,uCAAuC;AAAA,EACvC,kCAAkC;AAAA,EAClC,6BAA6B;AAAA,EAC7B,oCAAoC;AAAA,EAIpC,gCAAgC;AAAA,EAChC,8CAA8C;AAAA,EAC9C,+CAA+C;AAAA,EAC/C,kDAAkD;AAAA,EAClD,+CAA+C;AAAA,EAC/C,gDAAgD;AAAA,EAChD,2CAA2C;AAAA,EAC3C,4CAA4C;AAAA,EAC5C,iCAAiC;AAAA,EACjC,wCAAwC;AAAA,EACxC,mDAAmD;AAAA,EACnD,oCAAoC;AAAA,EACpC,yCAAyC;AAAA,EACzC,uCAAuC;AAAA,EACvC,gCAAgC;AAAA,EAKhC,gCAAgC;AAAA,EAChC,kCAAkC;AAAA,EAClC,iCAAiC;AAAA,EACjC,gCAAgC;AAAA,EAChC,6BAA6B;AAAA,EAK7B,yBAAyB;AAAA,EACzB,kCAAkC;AAAA,EASlC,mCAAmC;AACrC;AAIO;AAAA,MAAM,qBAAqB,MAAM;AAAA,EACtC,WAAW,CAAC,UAAqB,aAAwB;AACvD,QAAI,aAAa;AACf,cAAQ,MAAM,aAAa;AAAA,QACzB,OAAO,aAAa;AAAA,QACpB,SAAS,aAAa;AAAA,MACxB,CAAC;AAAA,IACH;AAEA,UAAM,UAAU;AAAA,MACd,OAAO,EAAE,MAAM,cAAc,WAAW,SAAS,SAAS;AAAA,IAC5D,CAAC;AACD,WAAO,eAAe,MAAM,aAAa,SAAS;AAAA;AAEtD;;;AC3FO,SAAS,eAAe,CAAC,eAAuB;AACrD,MAAI,gBAAgB;AAAG,UAAM,IAAI,MAAM,yBAAyB;AAChE,SAAO,KAAK;AAAA;AAKP,SAAS,eAAe,CAAC,eAAuB;AACrD,MAAI,gBAAgB;AAAG,UAAM,IAAI,MAAM,wBAAwB;AAE/D,SAAO,KAAK,OAAO,KAAK,gBAAgB,UAAU,WAAI,IAAI;AAAA;AAGrD,SAAS,sBAAsB,EAAE,UAAS,SAAS,SAAS,QAAQ,QAElD;AACvB,QAAM,mBAAmB,UAAU;AAEnC,SAAO,KAAK,aAAY,YAAY,YAAY,SAAS,YAAY,KAAK,IAAI;AAAA;AAGzE,SAAS,aAAgB,CAAC,IAAa,UAAsB;AAClE,MAAI;AACF,WAAO,GAAG;AAAA,WACH,OAAP;AACA,QAAI,UAAU;AACZ,YAAM,IAAI,aAAa,UAAU,KAAK;AAAA,IACxC;AAEA,WAAO,QAAQ,MAAM,KAAK;AAAA;AAAA;;AC7BvB,SAAS,kBAAkB,CAAC,aAAa,IAAI;AAClD,QAAM,uBAAuB,WAAW,YAAY;AAEpD,SAAO,SAAS,qBAAqB,MAAM,GAAG;AAC9C,MAAI,gBAAgB,SAAS,KAAK;AAAG,WAAO;AAE5C,SAAO,cAAc,qBAAqB,MAAM,GAAG;AACnD,MAAI,gBAAgB,SAAS,UAAU;AAAG,WAAO;AAEjD,QAAM,IAAI,MACR,uBAAuB,qFACzB;AAAA;AAGK,SAAS,WAAW,CAAC,MAAc;AACxC,MAAI,KAAK,SAAS;AAAI,WAAO;AAE7B,QAAM,QAAQ;AAEd,WAAS,KAAK,MAAM,KAAK;AAAA;AArB3B,IAAM,kBAAkB,CAAC,GAAG,OAAO,OAAO,KAAK,GAAG,OAAO;;ACoDzD,IAAM,gBAAgB;AAAA,EACpB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEO,IAAM,8BAA8B,CACzC,MACA,UACA,YAEC,UAAU,SAAiB;AAC1B,MAAI;AACF,UAAM,uBAAuB,UAAU,OAAO;AAAA,WACvC,OAAP;AACA,UAAM,IAAI,MAAM,6BAA6B,OAAO;AAAA;AAEtD,SAAO,KAAK,GAAG,IAAI;AAAA;AAGvB,IAAM,kBAAkB,GAAG,UAAU,QAAQ,aAAoC;AAC/E,OAAK,UAAU;AAAM,UAAM,IAAI,MAAM,oBAAoB;AAEzD,QAAM,iBAAiB,SAAU,MAAM,QAAQ,MAAM,IAAI,SAAS,CAAC,MAAM,IAAK,CAAC;AAC/E,SAAO,SAAS,KAAK,QAAQ,cAAc;AAAA;AAGtC,IAAM,uBAAuB;AAAA,EAClC;AAAA,EACA;AAAA,EACA,WAAW,OAAO;AAAA,MAKd;AACJ,QAAM,iBAAiB,cAAc,OAAO,CAAC,QAAQ,eAAe;AAClE,SAAK,QAAQ;AAAa,aAAO;AACjC,UAAM,SAAS,QAAQ;AAEvB,eAAW,WAAW;AAAY,aAAO;AAEzC,WAAO;AAAA,SAEF;AAAA,OACF,aAAa,4BAA2C,QAAQ,UAAU,OAAO;AAAA,IACpF;AAAA,KACC,CAAC,CAAC;AAEL,SAAO,KAAK,YAAY,eAAe;AAAA;AAGlC,IAAM,sBAAsB,CAAC,UAA2B,kBAC7D,gBAAgB,EAAE,UAAU,QAAQ,2BAA2B,QAAQ,CAAC,aAAa,EAAE,CAAC;AAEnF,IAAM,yBAAyB,CAAC,UAA2B,UAAU,QAAQ,gBAClF,gBAAgB,EAAE,UAAU,QAAQ,8BAA8B,QAAQ,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC;AAEpF,IAAM,6BAA6B,CAAC,aAAyB;AAClE,SAAO,UAAU,GAAG,mBAAmB,MAAM,SAAS,CAAC;AAEvD,SAAO,KAAK,SAAS,GAAG,mBAAmB,MAAM,SAAS,CAAC;AAAA;AAGtD,IAAM,sBAAsB,MAAM;AACvC,UAAQ,SAAS,eAAe,SAAS,oBAAoB,qBAC3D,QAAQ,YAAY,CAAC;AACvB,MAAI;AAAS,WAAO,aAAa;AACjC,MAAI;AAAe,WAAO,aAAa;AACvC,MAAI,sBAAsB,kBAAkB;AAAkB,WAAO,aAAa;AAClF,MAAI;AAAS,iBAAa;AAC1B,SAAO,aAAa;AAAA;AAGf,IAAM,aAAa,CAAC,iBAA+B;AACxD,SAAO,mBAAmB,EAAE,SAAS,YAAY;AAAA;AAGnD,IAAM,qBAAqB,MAAM;AAC/B,QAAM,kBAAkB,QAAQ,aAAa,OAAO,UAAU;AAE9D,QAAM,eAAe,QAAQ,OAAO,QAAQ,UAAU;AACtD,QAAM,eAAe,QAAQ,UAAU;AACvC,QAAM,eAAe,QAAQ,UAAU,WAAW,QAAQ;AAC1D,QAAM,kBACH,QAAQ,UAAU,sBACjB,QAAQ,UAAU,kBAAkB,oBACtC,QAAQ;AAEV,QAAM,UAAU,CAAC;AACjB,MAAI;AAAiB,YAAQ,KAAK,aAAa,QAAQ;AACvD,MAAI;AAAc,YAAQ,KAAK,aAAa,KAAK;AACjD,MAAI;AAAc,YAAQ,KAAK,aAAa,KAAK;AACjD,MAAI;AAAc,YAAQ,KAAK,aAAa,eAAe;AAC3D,MAAI;AAAiB,YAAQ,KAAK,aAAa,YAAY;AAC3D,MAAI,iBAAiB;AAAG,YAAQ,KAAK,aAAa,UAAU;AAE5D,SAAO;AAAA;AAGF,IAAM,mBAAmB,MAAM;AACpC,QAAM,KAAK,UAAU;AACrB,QAAM,QAAQ,wBAAwB,KAAK,EAAE;AAC7C,QAAM,YAAY,8BAA8B,KAAK,EAAE;AACvD,QAAM,WAAW,SAAS;AAC1B,QAAM,UAAU,SAAS,KAAK,EAAE;AAEhC,SAAO,YAAY;AAAA;AAGd,IAAM,iBAAiB,aAAa,OAAO,aAAa;;AC7JxD,SAAS,uBAAuB;AAAA,EACrC;AAAA,EACA,gBAAgB;AAAA,EAChB,UAAU;AAAA,GAKT;AACD,MAAI,YAAY;AAAG,WAAO,MAAM,SAAS;AACzC,QAAM,aAAa,QAAQ;AAC3B,MAAI,cAAc,MAAM,SAAS,EAAE,UAAU,aAAa,IAAI,CAAC;AAE/D,QAAM,YAAY,WAAW,YAAY,SAAS;AAElD,MAAI,YAAY,GAAG;AACjB,kBAAc,IAAI,OAAO,SAAS,IAAI;AAAA,EACxC;AAEA,QAAM,eAAe,YAAY,SAAS;AAC1C,MAAI,gBAAgB,YAAY,OAAO,OAAO;AAG9C,MAAI,OAAO,SAAS,cAAc,kBAAkB,GAAG,KAAK,GAAG;AAE7D,oBAAgB,GAAG,cAAc,UAAU,GAAG,gBAAgB,CAAC,KAC7D,OAAO,SAAS,cAAc,gBAAgB,MAAM,GAAG,IAAI,GAC3D,SAAS;AAAA,EACb,OAAO;AAEL,oBAAgB,cAAc,UAAU,GAAG,aAAa;AAAA;AAG1D,SAAO,GAAG,aAAa,MAAM,KAAK,YAAY,MAAM,GAAG,YAAY,KAAK,gBAAgB,QACtF,UACA,EACF;AAAA;AAsVF,IAAS,sBAAW,CAAC,OAAgC;AACnD,QAAM,qBACG,UAAU,WAAW,gBAAgB,OAAO,KAAK,IAAI,eAAe,KAAK;AAClF,QAAM,aAAa,GAAG,cAAc,WAAW,KAAK,GAAG,EAAE,MAAM,GAAG;AAElE,SAAO,WAAW,SAAS,IACvB,GAAG,WAAW,MAAM,IAAG,CAAE,EAAE,KAAK,EAAE,KAAK,WAAW,IAAG,CAAE,MACvD,WAAW,MAAM;AAAA;AAGvB,IAAS,2BAAgB,CAAC,OAAe;AACvC,QAAM,WAAW,MAAM,MAAM,GAAG,EAAE,IAAI,UAAU;AAChD,SAAO,KAAK,IAAI,UAAU,eAAe;AAAA;AAG3C,IAAS,yBAAc,CAAC,OAAuB;AAC7C,gBAAc,UAAU,WACpB,cAAc,QACZ,MAAM,SAAS,QAAQ,IACvB,MAAM,QACR;AAAA;AAnZN,IAAM,kBAAkB;AACxB,IAAM,eAAe,CAAC,YAAoB,OAAO,OAAO,OAAO;AAC/D,IAAM,wBAAwB,CAAC,eAC7B,KAAK,MAAM,OAAO,WAAW,WAAW,SAAS,CAAC,CAAC;AAyC9C;AAAA,MAAM,kBAAkB;AAAA,EAC7B,oBAA4B,OAAO;AAAA,EACnC,cAAc;AAAA,EACd;AAAA,SAEO,UAAU,CAAC,OAAe,SAAkB;AACjD,WAAO,IAAI,kBAAkB;AAAA,MAC3B;AAAA,MACA,OAAO,wBAAwB,EAAE,OAAO,eAAe,SAAS,QAAQ,CAAC;AAAA,IAC3E,CAAC;AAAA;AAAA,SAGI,aAAa;AAAA,IAClB;AAAA,IACA;AAAA,IACA;AAAA,KAKC;AACD,WAAO,kBAAkB,WACtB,MAAM,aAAa,QAAQ,IAAI,aAAa,EAAE,IAAK,aAAa,IAAI,GACrE,EACF;AAAA;AAAA,EAGF,WAAW,CAAC,QAAwB;AAClC,UAAM,QAAQ,eAAe,MAAM;AACnC,UAAM,mBAAmB,WAAW;AACpC,SAAK,UAAU,YAAY,OAAO,UAAU;AAG5C,SAAK,oBACH,aAAa,uBAAuB,SAChC,OAAO,oBACP,aAAa,KAAK,IAAI,iBAAiB,YAAY,KAAK,CAAC,GAAG,KAAK,WAAW,CAAC,CAAC;AACpF,SAAK,UAAU,KAAK;AAAA;AAAA,EAGtB,GAAG,CAAC,OAA6B;AAE/B,WAAO,IAAI,KAAK,YAAY,EAAE,SAAS,KAAK,SAAS,OAAO,YAAY,KAAK,SAAS,EAAE,CAAC;AAAA;AAAA,EAE3F,GAAG,IAAI,MAAiC;AACtC,WAAO,KAAK,aAAa,OAAO,GAAG,IAAI;AAAA;AAAA,EAEzC,GAAG,IAAI,MAAiC;AACtC,WAAO,KAAK,aAAa,OAAO,GAAG,IAAI;AAAA;AAAA,EAEzC,GAAG,IAAI,MAAiC;AACtC,WAAO,KAAK,aAAa,OAAO,GAAG,IAAI;AAAA;AAAA,EAEzC,GAAG,IAAI,MAAiC;AACtC,WAAO,KAAK,aAAa,OAAO,GAAG,IAAI;AAAA;AAAA,EAEzC,EAAE,CAAC,OAAgC;AACjC,WAAO,KAAK,YAAY,MAAM,KAAK;AAAA;AAAA,EAErC,GAAG,CAAC,OAAgC;AAClC,WAAO,KAAK,YAAY,OAAO,KAAK;AAAA;AAAA,EAEtC,EAAE,CAAC,OAAgC;AACjC,WAAO,KAAK,YAAY,MAAM,KAAK;AAAA;AAAA,EAErC,GAAG,CAAC,OAAgC;AAClC,WAAO,KAAK,YAAY,OAAO,KAAK;AAAA;AAAA,EAEtC,OAAO,CAAC,OAAgC;AACtC,WAAO,KAAK,YAAY,WAAW,KAAK;AAAA;AAAA,EAI1C,QAAsC,CAAC,MAAkC;AACvE,UAAM,QAAQ,KAAK,wBACjB,KAAK,aACL,KAAK,WAAW,sBAAsB,KAAK,iBAAiB,CAC9D;AAEA,YAAQ;AAAA,WACD;AACH,eAAO,OAAO,KAAK;AAAA,WAChB;AACH,eAAO;AAAA,WACJ;AACH,eAAS,KAAK,cAAc,OAAO,OAAO,KAAK,WAAW,EAAE,IAC1D,KAAK;AAAA;AAAA;AAAA,EAKb,YAA0C,CAAC,MAAkC;AAC3E,UAAM,UAAU,KAAK,oBAAoB,aAAa,KAAK,WAAW,YAAY,IAAI;AACtF,UAAM,YAAY,KAAK,cAAc;AAErC,YAAQ;AAAA,WACD;AACH,eAAO,OAAO,SAAS;AAAA,WACpB;AACH,eAAO,UAAU,SAAS;AAAA,WACvB;AACH,eAAO;AAAA;AAAA;AAAA,EAIb,cAAc,CAAC,OAAgC,SAAkB;AAC/D,SAAK,kBAAkB,UAAU;AAAU,aAAO,MAAM;AAExD,UAAM,cAAc,eAAe,KAAK;AACxC,UAAM,YAAY,YAAY,WAAW;AAEzC,QAAI,cAAc,OAAO,cAAc;AAAa,aAAO;AAC3D,WAAO,KAAK,UAAU,WAAW,OAAO;AAAA;AAAA,EAG1C,aAAa,CAAC,oBAAoB,GAAG;AACnC,WAAO,KAAK,OAAO,KAAK,SAAS,QAAQ,EAAE,MAAM,GAAG;AACpD,UAAM,UAAU,OAAO;AACvB,UAAM,UAAU,OAAO;AACvB,UAAM,cAAc,OAAO,SAAS,OAAO,IAAI,QAAQ,SAAS,QAAQ,SAAS,QAAQ;AAEzF,QAAI,eAAe,mBAAmB;AACpC,aAAO,KAAK,SAAS,QAAQ;AAAA,IAC/B;AAEA,QAAI,QAAQ,UAAU,mBAAmB;AACvC,aAAO,QAAQ,MAAM,GAAG,iBAAiB,EAAE,OAAO,QAAQ,QAAQ,GAAG;AAAA,IACvE;AAEA,QAAI,OAAO,SAAS,OAAO,GAAG;AAC5B,aAAO,GAAG,WAAW,QAAQ,MAAM,GAAG,oBAAoB,QAAQ,MAAM,IAAI,OAC1E,oBAAoB,QAAQ,QAC5B,GACF;AAAA,IACF;AAEA,UAAM,iBAAiB,OAAO,SAAS,OAAO;AAC9C,UAAM,gBAAgB,GAAG,iBAAiB,MAAM,GAAG,iBAAiB;AAEpE,WAAO,KAAK,cAAc,SACxB,QAAQ,SAAS,GAAG,iBAAiB,SAAS,cAAc,QAC5D,GACF;AAAA;AAAA,EAGF,OAAO,CAAC,cAAc,GAAG;AACvB,WAAO,KAAK,OAAO,KAAK,SAAS,QAAQ,EAAE,MAAM,GAAG;AACpD,UAAM,UAAU,OAAO;AACvB,UAAM,UAAU,OAAO;AAEvB,QAAI,OAAO,SAAS,OAAO,GAAG;AAC5B,aAAO,GAAG,WAAW,QAAQ,MAAM,GAAG,WAAW,IAAI,OAAO,aAAa,GAAG;AAAA,IAC9E;AAEA,UAAM,iBAAiB,OAAO,SAAS,OAAO;AAC9C,UAAM,gBAAgB,GAAG,iBAAiB,MAAM,GAAG,WAAW;AAE9D,WAAO,KAAK,cAAc,SACxB,QAAQ,SAAS,GAAG,iBAAiB,SAAS,cAAc,QAC5D,GACF;AAAA;AAAA,EAGF,cAAc,CAAC,SAAS,GAAG;AACzB,UAAM,QAAQ,KAAK,SAAS,QAAQ;AACpC,UAAM,gBAAgB,CAAC,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,MAAM,GAAG;AAC7D,UAAM,OAAO,KAAK,MAAM,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC;AACvD,UAAM,SAAS,cAAc;AAE7B,SAAK;AAAQ,aAAO,KAAK,SAAS,QAAQ;AAE1C,UAAM,QAAQ,OAAO,OAAO;AAC5B,UAAM,SAAS,QAAQ;AAEvB,WAAO,GAAG,OAAO,QAAQ,MAAM,IAAI;AAAA;AAAA,EAGrC,UAAU,CACR,WAAW;AAAA,IAET,mBAAmB;AAAA,IACnB,UAAU;AAAA,IACV,mBAAmB;AAAA,IACnB,oBAAoB;AAAA,MAClB,CAAC,GACL;AACA,UAAM,QAAQ,KAAK,SAAS,QAAQ;AACpC,WAAO,MAAM,IAAI,MAAM,MAAM,MAAM,QAAQ,CAAC,EAAE,MAAM,GAAG;AACvD,UAAM,UAAU,IAAI,QAAQ,yBAAyB,iBAAiB;AAEtE,UAAM,cACJ,OAAO,MACH,QAAQ,MACN,GAAG,OAAO,WAAW,KAAK,KAAK,IAAI,QAAQ,KAAK,gBAAgB,IAChE,GAAG,UAAU,OAAO,SAAS,GAAG,IAAI,GAAG,mBAAmB,IAAI,MAAM,GAAG,OAAO,MAAM,OACtF;AAEN,WAAO,GAAG,qBAAqB,UAAU,WAAW,KAAK,cACvD,qBAAqB,QAAQ,WAAW;AAAA;AAAA,EAI5C,uBAAuB,CAAC,OAAe,SAAkB;AACvD,UAAM,gBAAgB,WAAW,KAAK,WAAW;AACjD,UAAM,4BAA4B,KAAK,IACrC,eACA,sBAAsB,KAAK,iBAAiB,CAC9C;AACA,UAAM,aAAa,QAAQ;AAE3B,UAAM,cAAc,MAAM,SAAS,EAAE,UAAU,aAAa,IAAI,CAAC;AACjE,UAAM,YAAY,6BAA6B,YAAY,SAAS;AAEpE,UAAM,oBAAoB,YAAY,IAAI,IAAI,OAAO,SAAS,IAAI,cAAc;AAEhF,UAAM,eAAe,kBAAkB,SAAS;AAChD,QAAI,gBAAgB,kBAAkB,OAAO,yBAAyB;AAGtE,QAAI,OAAO,SAAS,cAAc,kBAAkB,GAAG,KAAK,GAAG;AAE7D,sBAAgB,GAAG,cAAc,UAAU,GAAG,gBAAgB,CAAC,KAC7D,OAAO,SAAS,cAAc,gBAAgB,MAAM,GAAG,IAAI,GAC3D,SAAS;AAAA,IACb,OAAO;AAEL,sBAAgB,cAAc,UAAU,GAAG,aAAa;AAAA;AAG1D,WAAO,GAAG,aAAa,MAAM,KAAK,kBAAkB,MAClD,GACA,YACF,KAAK,gBAAgB,QAAQ,UAAU,EAAE;AAAA;AAAA,EAG3C,YAAY,CAAC,WAA0C,MAAuC;AAC5F,UAAM,mBAAmB,KAAK,0BAA0B,MAAM,GAAG,IAAI;AACrE,UAAM,UAAU,KAAK,IAAI,kBAAkB,sBAAsB,KAAK,iBAAiB,CAAC;AACxF,UAAM,6BAA6B,aAAa,OAAO;AAEvD,UAAM,SAAS,KAAK,OAClB,CAAC,KAAa,QAAQ;AACpB,YAAM,SAAQ,KAAK,eAAe,KAAK,OAAO;AAE9C,cAAQ;AAAA,aACD;AACH,iBAAO,MAAM;AAAA,aACV;AACH,iBAAO,MAAM;AAAA,aASV;AACH,iBAAQ,MAAM,SAAS;AAAA,aACpB,OAAO;AACV,cAAI,WAAU;AAAI,kBAAM,IAAI,WAAW,kBAAkB;AACzD,iBAAQ,MAAM,6BAA8B;AAAA,QAC9C;AAAA;AAEE,iBAAO;AAAA;AAAA,OAIZ,KAAK,cAAc,6BAA8B,KAAK,iBACzD;AAEA,UAAM,QAAQ,wBAAwB;AAAA,MACpC,eAAe;AAAA,MACf;AAAA,MACA,OAAO;AAAA,IACT,CAAC;AAGD,WAAO,IAAI,KAAK,YAAY;AAAA,MAC1B,mBAAmB,aAAa,OAAO;AAAA,MACvC,SAAS,KAAK;AAAA,MACd;AAAA,MACA,YAAY,KAAK,SAAS;AAAA,IAC5B,CAAC;AAAA;AAAA,EAGH,WAAW,CAAC,WAAoD,MAAiC;AAC/F,UAAM,UAAU,KAAK,0BAA0B,MAAM,GAAG,IAAI;AAC5D,UAAM,QAAQ,KAAK,eAAe,KAAK,MAAM,KAAK,OAAO;AACzD,UAAM,iBAAiB,KAAK,eAAe,MAAM,OAAO;AAExD,YAAQ;AAAA,WACD;AACH,eAAO,iBAAiB;AAAA,WACrB;AACH,eAAO,kBAAkB;AAAA,WACtB;AACH,eAAO,iBAAiB;AAAA,WACrB;AACH,eAAO,kBAAkB;AAAA,WACtB;AACH,eAAO,mBAAmB;AAAA;AAAA;AAAA,EAIhC,SAAS,CAAC,OAAgC;AACxC,UAAM,YAAY,YAAY,KAAK,KAAK;AACxC,SAAK,cAAc,KAAK,UAAU,SAAS;AAAA;AAAA,EAG7C,yBAAyB,IAAI,MAAiC;AAC5D,UAAM,WAAW,KACd,IAAI,CAAC,QAAQ;AACZ,YAAM,kBAAkB,QAAQ;AAChC,YAAM,QAAQ,WACV,IAAI,WAAW,sBAAsB,IAAI,iBAAiB,IAC1D,iBAAiB,YAAY,GAAG,CAAC;AAErC,aAAO;AAAA,KACR,EACA,OAAO,OAAO;AAEjB,WAAO,KAAK,IAAI,GAAG,UAAU,eAAe;AAAA;AAAA,EAG9C,SAAS,CAAC,OAAe,SAAkB;AACzC,UAAM,aAAa,UAAU,aAAa,OAAO,IAAI,KAAK;AAC1D,UAAM,aAAa,sBAAsB,UAAU;AACnD,WAAO,cAAc,IAAI,cAAc,MAAM,MAAM,MAAM,GAAG;AAE5D,WAAO,OAAO,GAAG,cAAc,YAAY,OAAO,YAAY,GAAG,GAAG;AAAA;AAExE;AAEA,IAAM,kBAAkB,KAAK,aAAa,YAAY;AAAA,EACpD,aAAa;AAAA,EACb,uBAAuB;AACzB,CAAC;;;ACvYM,MAAM,sBAAsB,kBAAkB;AAAA,EAA9C;AAAA;AAAA;AAAA,EACL,EAAE,CAAC,OAAyB;AAC1B,WAAO,KAAK,QAAQ,KAAK;AAAA;AAAA,SAGpB,UAAU,CAAC,OAAe,SAAkB;AACjD,WAAO,IAAI,cAAc;AAAA,MACvB;AAAA,MACA,OAAO,wBAAwB,EAAE,OAAO,eAAe,SAAS,QAAQ,CAAC;AAAA,IAC3E,CAAC;AAAA;AAEL;;;ACiMO,SAAS,mBAAmB,CAAC,OAAc;AAChD,QAAM,SAAQ,WAAW,qBAAqB,KAAK;AAEnD,UAAQ;AAAA,SACD,MAAM;AAAA,SACN,MAAM;AAAA,SACN,MAAM;AACT,aAAO,OAAM,IAAI,UAAU;AAAA,SAExB,MAAM;AACT,aAAO,OAAM,IAAI,UAAU;AAAA,SAExB,MAAM;AAAA,SACN,MAAM;AACT,aAAO,OAAM,IAAI,UAAU;AAAA,SAExB,MAAM;AAAA,SACN,MAAM;AACT,aAAO,OAAM,IAAI,CAAC;AAAA,SAEf,MAAM;AACT,aAAO,OAAM,IAAI,QAAQ;AAAA;AAGzB,aAAO,OAAM,IAAI,UAAU;AAAA;AAAA;AAIjC,eAAe,gBAAgB,CAAC,YAAoB,QAA0B,GAAG;AAC/E,qBAAmB,UAAU;AAE7B,QAAM,cAAc,gBAAgB,IAAI,WAAW,YAAY,CAAe;AAC9E,QAAM,UAAU,aAAa,WAAY,MAAM,WAAW,aAAa,UAAU,CAAC;AAClF,OAAK,aAAa;AAChB,oBAAgB,IAAI,WAAW,YAAY,GAAiB,EAAE,YAAY,QAAQ,CAAC;AAAA,EACrF;AAEA,SAAO,IAAI,WAAW,EAAE,SAAS,OAAO,UAAU,OAAO,OAAO,GAAG,WAAW,CAAC;AAAA;AAGjF,IAAS,oCAAyB,CAAC,YAAoB,QAA0B,GAAG;AAClF,SAAO,YAAY,UACjB,WAAW,MAAM,GAAG,IAAI,IAAI,YAAY,MAAM,MAAM,YAChD,WAAW,MAAM,GAAG,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,IAC/C,WAAW,MAAM,GAAG;AAE1B,QAAM,cAAc;AAAS,UAAM,IAAI,MAAM,0BAA0B;AAEvE,SAAO,IAAI,WAAW;AAAA,IACpB,SAAS;AAAA,IACT,OAAO,UAAU,OAAO,CAAC;AAAA,IACzB,YAAY,GAAG,MAAM,aAAa,cAAc;AAAA,EAClD,CAAC;AAAA;AAGH,IAAS,oBAAS,CAAC,OAAyB,SAAiB;AAC3D,gBAAc,UAAU,WACpB,wBAAwB,EAAE,OAAO,eAAe,SAAS,QAAQ,CAAC,IAClE;AAAA;AAIN,IAAS,uBAAY,CAAC,YAAoB;AACxC,QAAM,cAAc,WAAW,MAAM,GAAG,EAAE,EAAE,SAAS,GAAG;AAExD,QAAM,cAAc,WAAW,MAAM,GAAG,IAAI,IAAI,YAAY,MAAM,MAAM;AACxE,QAAM,SAAS,WAAW,MAAM,GAAG,IAAI,IAAI,YAAY,MAAM,MAAM;AAEnE,SAAO,YAAY,cAAc,MAC/B,eAAe,SACX,WAAW,MAAM,GAAG,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,IAC/C,WAAW,MAAM,GAAG;AAE1B,MAAI,iBAAiB,cAAc;AAAc,UAAM,IAAI,MAAM,0BAA0B;AAE3F,QAAM,qBACJ,WAAW,SAAS,GAAG,MAAM,cACzB,aACA,GAAG,SAAS,MAAM,OAAO,MAAM,aAAa;AAElD,SAAO,UAAU,QAAQ,mBAAmB,MAAM,GAAG;AAErD,QAAM,SAAS,cAAc,cAAc,KAAK,KAAK,GAAG;AACxD,QAAM,cAAc,OAAO,MAAM,GAAG;AACpC,QAAM,SACJ,YAAY,WAAW,IAAI,YAAY,KAAK,YAAY,MAAM,IAAG,CAAE,EAAE,KAAK,GAAG;AAE/E,QAAM,UAAU,YAAY,WAAW,IAAI,YAAY,YAAY,YAAY,SAAS;AAExF,SAAO;AAAA,IACL,SAAS,SAAS,YAAY;AAAA,IAC9B;AAAA,IACA,YAAY,WAAW,EAAE,OAAO,OAAO,CAAC;AAAA,IACxC;AAAA,IACA,SACG,cAAc,GAAG,gBAAgB,OACjC,UAAU,GAAG,UAAU,SAAS,YAAY,KAAK,OAAO;AAAA,IAC3D;AAAA,EACF;AAAA;AAxSF,IAAM,kBAAkB,IAAI;AAKrB;AAAA,MAAM,mBAAmB,kBAAkB;AAAA,EAChD;AAAA,EACA;AAAA,EACA,aAAa;AAAA,EACb,cAAc;AAAA,EACd;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAEA,WAAW;AAAA,IACT;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,KAIC;AACD,iBAAa,UAAU,WAAW,QAAQ,EAAE,SAAS,MAAM,CAAC;AAE5D,UAAM,YAAY,aAAa,cAAc,GAAG,SAAS,QAAQ;AAEjE,SAAK,OAAO,aAAa,SAAS;AAClC,SAAK,MAAM;AACX,SAAK,QAAQ,UAAU;AACvB,SAAK,SAAS,UAAU;AACxB,SAAK,SAAS,UAAU;AACxB,SAAK,UAAU,UAAU;AACzB,SAAK,cAAc,UAAU;AAC7B,SAAK,aAAa,UAAU;AAC5B,SAAK,UAAU,eAAe,UAAU;AAAA;AAAA,EAG1C,QAAQ,GAAG;AACT,WAAO,KAAK,cAAc,KAAK,SAAS,GAAG,KAAK,SAAS,KAAK;AAAA;AAAA,EAGhE,KAAK,GAAG;AACN,WAAO,KAAK,cAAc,GAAG,KAAK,SAAS,KAAK,OAAO,QAAQ,KAAK,GAAG,MAAM,KAAK,SAAS;AAAA;AAAA,EAG7F,EAAE,GAAG,OAAO,UAA4C;AACtD,WAAO,KAAK,UAAU,SAAS,KAAK,WAAW;AAAA;AAAA,SAM1C,OAAO,CAAC,UAAkB,QAA0B,GAAG;AAC5D,WAAO,OAAO,QAAQ,UAAU,SAAS,MAAM,GAAG;AAClD,UAAM,SAAS;AAAS,YAAM,IAAI,MAAM,mBAAmB;AAE3D,UAAM,cACJ,UAAU,MAAM,aAAa,SAAS,GAAG,SAAS,UAAU,WAAW;AAEzE,WAAO,iBAAiB,aAAa,KAAK;AAAA;AAAA,SAGrC,UAAU,CAAC,aAAqB,QAA0B,GAAG;AAClE,WAAO,iBAAiB,aAAa,KAAK;AAAA;AAAA,SAErC,cAAc,CACnB,aAKA,QAA0B,GAC1B;AACA,WAAO,iBAAiB,aAAa,KAAK;AAAA;AAAA,SAGrC,cAAc,CAAC,aAAqB,QAA0B,GAAG;AACtE,YAAQ,OAAO,gBAAgB,aAAa,WAAW;AACvD,UAAM,YAAY,gBAAgB,IAAI,YAAY,YAAY,CAAe;AAE7E,QAAI;AAAa,aAAO,0BAA0B,aAAa,KAAK;AAQpE,YAAQ,KAAK,SAAS,eAAe,aAAa;AAAA,MAChD,SAAS,YAAY;AAAA,MACrB,YAAY;AAAA,IACd;AAEA,WAAO,IAAI,WAAW;AAAA,MACpB;AAAA,MACA,OAAO,UAAU,OAAO,OAAO;AAAA,MAC/B,YAAY,cAAc,cAAc;AAAA,MACxC,SAAS,cAAc,IAAI;AAAA,IAC7B,CAAC;AAAA;AAAA,cAGU,mBAAkB,CAC7B,aACA,QAA0B,GAC1B,cAAsB,YAAY,MAClC;AACA,UAAM,gBAAgB,kBAAkB,cAAc;AAAA,MACpD,OAAO,cAAc,WAAW,OAAO,KAAK,CAAC;AAAA,MAC7C,MAAM;AAAA,MACN,IAAI;AAAA,IACN,CAAC,EAAE,aAAa,QAAQ;AACxB,UAAM,aAAa,MAAM,WAAW,WAAW,aAAa,KAAK;AAEjE,WAAO,WAAW,IAAI,aAAa;AAAA;AAAA,SAG9B,sBAAsB,CAC3B,aACA,QAA0B,GAC1B,cAAsB,YAAY,MAClC;AACA,YAAQ,OAAO,gBAAgB,aAAa,WAAW;AACvD,UAAM,YAAY,gBAAgB,IAAI,YAAY,YAAY,CAAe;AAE7E,QAAI;AAAa,aAAO,0BAA0B,aAAa,KAAK;AAEpE,YAAQ,KAAK,SAAS,eAAe,aAAa;AAAA,MAChD,SAAS,YAAY;AAAA,MACrB,YAAY;AAAA,IACd;AAEA,WAAO,IAAI,WAAW;AAAA,MACpB;AAAA,MACA,OAAO,UAAU,OAAO,KAAK,GAAG,WAAW;AAAA,MAC3C;AAAA,MACA;AAAA,IACF,CAAC;AAAA;AAAA,SAGI,kBAAkB,CAAC,aAAyB,QAA0B,GAAG;AAC9E,YAAQ,OAAO,gBAAgB,aAAa,WAAW;AACvD,UAAM,YAAY,gBAAgB,IAAI,WAAW;AAEjD,QAAI;AAAa,aAAO,0BAA0B,aAAa,KAAK;AAQpE,YAAQ,KAAK,SAAS,eAAe,aAAa;AAAA,MAChD,SAAS,YAAY;AAAA,MACrB,YAAY;AAAA,IACd;AACA,WAAO,IAAI,WAAW,EAAE,KAAK,SAAS,YAAY,OAAO,UAAU,OAAO,OAAO,EAAE,CAAC;AAAA;AAAA,SAG/E,oBAAoB,CAAC,aAAgC,QAA0B,GAAG;AACvF,YAAQ,SAAS,eAAe,mBAAmB,WAAW;AAC9D,WAAO,IAAI,WAAW,EAAE,OAAO,UAAU,OAAO,OAAO,GAAG,SAAS,WAAW,CAAC;AAAA;AAAA,SAG1E,gBAAgB,GAAG;AACxB,WAAO,IAAI,QACT,CAAC,SAAS,WAAW;AACnB,UAAI;AACF,QAAO,0BAAmB,KAAK,CAAC,kBAAkB;AAChD,qBAAW,aAAa,OAAO,OAAO,aAAa,GAAG;AACpD,yBAAa,YAAY,UAAU,UAAU,UAAU,QAAQ;AAC7D,8BAAgB,IAAI,WAAW,YAAY,GAAiB;AAAA,gBAC1D;AAAA,gBACA,SAAS,cAAc,OAAO,KAAK,WAAW,YAAY;AAAA,cAC5D,CAAC;AAAA,YACH;AAAA,UACF;AAEA,kBAAQ,EAAE,IAAI,KAAK,CAAC;AAAA,SACrB;AAAA,eACM,OAAP;AACA,gBAAQ,MAAM,KAAK;AACnB,eAAO;AAAA,UACL,IAAI;AAAA,UACJ;AAAA,UACA,SACE;AAAA,QACJ,CAAC;AAAA;AAAA,KAGP;AAAA;AAEJ;",
28
+ "debugId": "A3CE2B4FF4722BB164756e2164756e21",
29
29
  "names": []
30
30
  }
package/package.json CHANGED
@@ -36,5 +36,5 @@
36
36
  },
37
37
  "type": "module",
38
38
  "types": "./src/index.ts",
39
- "version": "1.0.0-rc.95"
39
+ "version": "1.0.0-rc.97"
40
40
  }
@@ -1,7 +1,7 @@
1
1
  import { describe, expect, test } from "bun:test";
2
2
  import { BaseDecimal, Chain } from "@swapkit/helpers";
3
3
 
4
- import { getAssetType, getDecimal } from "../asset.ts";
4
+ import { assetFromString, getAssetType, getDecimal } from "../asset.ts";
5
5
 
6
6
  const tickerMap: Record<string, string> = {
7
7
  [Chain.THORChain]: "RUNE",
@@ -173,3 +173,29 @@ describe("getDecimal", () => {
173
173
  );
174
174
  });
175
175
  });
176
+
177
+ describe("assetFromString", () => {
178
+ test("should return the correct object", () => {
179
+ const assetString = "THOR.RUNE";
180
+ const result = assetFromString(assetString);
181
+
182
+ expect(result).toEqual({
183
+ chain: Chain.THORChain,
184
+ symbol: "RUNE",
185
+ ticker: "RUNE",
186
+ synth: false,
187
+ });
188
+ });
189
+
190
+ test("should return the correct object for multiple dashes", () => {
191
+ const assetString = "ETH.PENDLE-LPT-0x1234";
192
+ const result = assetFromString(assetString);
193
+
194
+ expect(result).toEqual({
195
+ chain: Chain.Ethereum,
196
+ symbol: "PENDLE-LPT-0x1234",
197
+ ticker: "PENDLE-LPT",
198
+ synth: false,
199
+ });
200
+ });
201
+ });
@@ -36,7 +36,8 @@ const getContractDecimals = async ({ chain, to }: { chain: EVMChain; to: string
36
36
 
37
37
  const getETHAssetDecimal = (symbol: string) => {
38
38
  if (symbol === Chain.Ethereum) return BaseDecimal.ETH;
39
- const [, address] = symbol.split("-");
39
+ const splitSymbol = symbol.split("-");
40
+ const address = splitSymbol.length === 1 ? undefined : splitSymbol[splitSymbol.length - 1];
40
41
 
41
42
  return address?.startsWith("0x")
42
43
  ? getContractDecimals({ chain: Chain.Ethereum, to: address })
@@ -44,7 +45,8 @@ const getETHAssetDecimal = (symbol: string) => {
44
45
  };
45
46
 
46
47
  const getAVAXAssetDecimal = (symbol: string) => {
47
- const [, address] = symbol.split("-");
48
+ const splitSymbol = symbol.split("-");
49
+ const address = splitSymbol.length === 1 ? undefined : splitSymbol[splitSymbol.length - 1];
48
50
 
49
51
  return address?.startsWith("0x")
50
52
  ? getContractDecimals({ chain: Chain.Avalanche, to: address.toLowerCase() })
@@ -101,10 +103,10 @@ export const getCommonAssetInfo = (
101
103
  return { identifier: "ETH.THOR-0xa5f2211b9b8170f694421f2046281775e8468044", decimal: 18 };
102
104
  case `${Chain.Ethereum}.vTHOR`:
103
105
  return { identifier: "ETH.vTHOR-0x815c23eca83261b6ec689b60cc4a58b54bc24d8d", decimal: 18 };
104
-
105
106
  case Chain.Arbitrum:
106
- return { identifier: `${Chain.Arbitrum}.ETH`, decimal: 18 };
107
-
107
+ return { identifier: `${Chain.Arbitrum}.ETH`, decimal: BaseDecimal[assetString] };
108
+ case Chain.Optimism:
109
+ return { identifier: `${Chain.Optimism}.ETH`, decimal: BaseDecimal[assetString] };
108
110
  case Chain.Cosmos:
109
111
  return { identifier: "GAIA.ATOM", decimal: BaseDecimal[assetString] };
110
112
  case Chain.THORChain:
@@ -158,7 +160,12 @@ export const assetFromString = (assetString: string) => {
158
160
  const [chain, ...symbolArray] = assetString.split(".") as [Chain, ...(string | undefined)[]];
159
161
  const synth = assetString.includes("/");
160
162
  const symbol = symbolArray.join(".");
161
- const ticker = symbol?.split("-")?.[0];
163
+ const splitSymbol = symbol?.split("-");
164
+ const ticker = splitSymbol?.length
165
+ ? splitSymbol.length === 1
166
+ ? splitSymbol[0]
167
+ : splitSymbol.slice(0, -1).join("-")
168
+ : undefined;
162
169
 
163
170
  return { chain, symbol, ticker, synth };
164
171
  };
@@ -171,7 +178,8 @@ const potentialScamRegex = new RegExp(
171
178
  const evmAssetHasAddress = (assetString: string) => {
172
179
  const [chain, symbol] = assetString.split(".") as [EVMChain, string];
173
180
  if (!EVMChains.includes(chain as EVMChain)) return true;
174
- const [, address] = symbol.split("-") as [string, string?];
181
+ const splitSymbol = symbol.split("-");
182
+ const address = splitSymbol.length === 1 ? undefined : splitSymbol[splitSymbol.length - 1];
175
183
 
176
184
  return isGasAsset({ chain: chain as Chain, symbol }) || !!address;
177
185
  };
@@ -59,7 +59,6 @@ const methodsToWrap = [
59
59
  "call",
60
60
  "sendTransaction",
61
61
  "transfer",
62
- "getBalance",
63
62
  "isApproved",
64
63
  "approvedAmount",
65
64
  "EIP1193SendTransaction",
@@ -155,6 +155,21 @@ describe("AssetValue", () => {
155
155
  }),
156
156
  );
157
157
  });
158
+ test("creates AssetValue from string with multiple dashes", async () => {
159
+ const ethPendleLptAsset = await AssetValue.fromIdentifier("ETH.PENDLE-LPT-0x1234");
160
+
161
+ expect(ethPendleLptAsset).toEqual(
162
+ expect.objectContaining({
163
+ address: "0x1234",
164
+ chain: Chain.Ethereum,
165
+ decimal: 18,
166
+ isGasAsset: false,
167
+ isSynthetic: false,
168
+ symbol: "PENDLE-LPT-0x1234",
169
+ ticker: "PENDLE-LPT",
170
+ }),
171
+ );
172
+ });
158
173
  });
159
174
 
160
175
  describe("fromString", () => {
@@ -174,6 +189,22 @@ describe("AssetValue", () => {
174
189
  }),
175
190
  );
176
191
  });
192
+ test("creates AssetValue from string with multiple dashes", async () => {
193
+ const fakeAvaxAssetString = "AVAX.ASDF-LP-1234";
194
+ const fakeAvaxAsset = await AssetValue.fromString(fakeAvaxAssetString);
195
+
196
+ expect(fakeAvaxAsset).toEqual(
197
+ expect.objectContaining({
198
+ address: "1234",
199
+ chain: Chain.Avalanche,
200
+ decimal: 18,
201
+ isGasAsset: false,
202
+ isSynthetic: false,
203
+ symbol: "ASDF-LP-1234",
204
+ ticker: "ASDF-LP",
205
+ }),
206
+ );
207
+ });
177
208
  });
178
209
 
179
210
  describe("fromStringWithBase", () => {
@@ -203,16 +234,19 @@ describe("AssetValue", () => {
203
234
  const ethString = "ETH.ETH";
204
235
  const thorString = "ETH.THOR-0xa5f2211b9b8170f694421f2046281775e8468044";
205
236
  const synthThorString = "THOR.ETH.THOR-0xa5f2211b9b8170f694421f2046281775e8468044";
237
+ const synthDashesString = "THOR.ETH.PENDLE-LPT-0x1234";
206
238
 
207
239
  const synthETH = await AssetValue.fromUrl(synthETHString);
208
240
  const eth = await AssetValue.fromUrl(ethString);
209
241
  const thor = await AssetValue.fromUrl(thorString);
210
242
  const synthThor = await AssetValue.fromUrl(synthThorString);
243
+ const synthDashes = await AssetValue.fromUrl(synthDashesString);
211
244
 
212
245
  expect(synthETH.toString()).toBe("ETH/ETH");
213
246
  expect(eth.toString()).toBe("ETH.ETH");
214
247
  expect(thor.toString()).toBe("ETH.THOR-0xa5f2211b9b8170f694421f2046281775e8468044");
215
248
  expect(synthThor.toString()).toBe("ETH/THOR-0xa5f2211b9b8170f694421f2046281775e8468044");
249
+ expect(synthDashes.toString()).toBe("ETH/PENDLE-LPT-0x1234");
216
250
  });
217
251
  });
218
252
 
@@ -290,6 +324,25 @@ describe("AssetValue", () => {
290
324
  );
291
325
  });
292
326
 
327
+ test("returns safe decimals if string is not in `@swapkit/tokens` lists with multiple dashes", async () => {
328
+ await AssetValue.loadStaticAssets();
329
+ const fakeAvaxUSDCAssetString = "AVAX.USDC-LPT-1234";
330
+ const fakeAvaxUSDCAsset = AssetValue.fromStringSync(fakeAvaxUSDCAssetString);
331
+
332
+ expect(fakeAvaxUSDCAsset).toBeDefined();
333
+ expect(fakeAvaxUSDCAsset).toEqual(
334
+ expect.objectContaining({
335
+ address: "1234",
336
+ chain: Chain.Avalanche,
337
+ decimal: 18,
338
+ isGasAsset: false,
339
+ isSynthetic: false,
340
+ symbol: "USDC-LPT-1234",
341
+ ticker: "USDC-LPT",
342
+ }),
343
+ );
344
+ });
345
+
293
346
  test("returns proper avax string with address from `@swapkit/tokens` lists", async () => {
294
347
  await AssetValue.loadStaticAssets();
295
348
  const avaxBTCb = "AVAX.BTC.b-0x152b9d0fdc40c096757f570a51e494bd4b943e50";
@@ -378,7 +431,14 @@ describe("AssetValue", () => {
378
431
 
379
432
  describe("fromChainOrSignature", () => {
380
433
  test("creates AssetValue from common asset string or chain", () => {
381
- const customBaseAsset = [Chain.Cosmos, Chain.BinanceSmartChain, Chain.THORChain, Chain.Maya];
434
+ const customBaseAsset = [
435
+ Chain.Cosmos,
436
+ Chain.BinanceSmartChain,
437
+ Chain.THORChain,
438
+ Chain.Maya,
439
+ Chain.Arbitrum,
440
+ Chain.Optimism,
441
+ ];
382
442
  const filteredChains = Object.values(Chain).filter((c) => !customBaseAsset.includes(c));
383
443
 
384
444
  for (const chain of filteredChains) {
@@ -388,7 +448,7 @@ describe("AssetValue", () => {
388
448
  address: undefined,
389
449
  chain,
390
450
  decimal: BaseDecimal[chain],
391
- isGasAsset: ![Chain.Arbitrum, Chain.Optimism].includes(chain),
451
+ isGasAsset: true,
392
452
  isSynthetic: false,
393
453
  symbol: chain,
394
454
  ticker: chain,
@@ -478,6 +538,34 @@ describe("AssetValue", () => {
478
538
  ticker: "vTHOR",
479
539
  }),
480
540
  );
541
+
542
+ const arbAsset = AssetValue.fromChainOrSignature(Chain.Arbitrum);
543
+ expect(arbAsset).toEqual(
544
+ expect.objectContaining({
545
+ address: undefined,
546
+ chain: Chain.Arbitrum,
547
+ decimal: BaseDecimal.ARB,
548
+ isGasAsset: true,
549
+ isSynthetic: false,
550
+ symbol: "ETH",
551
+ ticker: "ETH",
552
+ type: "Native",
553
+ }),
554
+ );
555
+
556
+ const opAsset = AssetValue.fromChainOrSignature(Chain.Optimism);
557
+ expect(opAsset).toEqual(
558
+ expect.objectContaining({
559
+ address: undefined,
560
+ chain: Chain.Optimism,
561
+ decimal: BaseDecimal.OP,
562
+ isGasAsset: true,
563
+ isSynthetic: false,
564
+ symbol: "ETH",
565
+ ticker: "ETH",
566
+ type: "Native",
567
+ }),
568
+ );
481
569
  });
482
570
  });
483
571
 
@@ -287,11 +287,13 @@ function getAssetInfo(identifier: string) {
287
287
  : `${isMaya ? Chain.Maya : Chain.THORChain}.${synthSymbol}`;
288
288
 
289
289
  const [chain, ...rest] = adjustedIdentifier.split(".") as [Chain, string];
290
- const [ticker, address] = (isSynthetic ? synthSymbol : rest.join(".")).split("-") as [
291
- string,
292
- string?,
293
- ];
290
+
294
291
  const symbol = isSynthetic ? synthSymbol : rest.join(".");
292
+ const splitSymbol = symbol.split("-");
293
+ const ticker = (
294
+ splitSymbol.length === 1 ? splitSymbol[0] : splitSymbol.slice(0, -1).join("-")
295
+ ) as string;
296
+ const address = splitSymbol.length === 1 ? undefined : splitSymbol[splitSymbol.length - 1];
295
297
 
296
298
  return {
297
299
  address: address?.toLowerCase(),