@txnlab/use-wallet 2.6.2 → 2.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../src/constants/constants.ts","../../src/algod/index.ts","../../src/media/audio.ts","../../src/clients/base/base.ts","../../node_modules/immer/dist/immer.esm.mjs","../../node_modules/zustand/esm/middleware/immer.mjs","../../node_modules/zustand/esm/vanilla.mjs","../../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.js","../../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js","../../node_modules/use-sync-external-store/shim/index.js","../../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.js","../../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js","../../node_modules/use-sync-external-store/shim/with-selector.js","../../node_modules/zustand/esm/index.mjs","../../node_modules/zustand/esm/middleware.mjs","../../src/store/state/walletStore.ts","../../src/store/state/debugStore.ts","../../src/utils/debugLog.ts","../../src/clients/pera/constants.ts","../../src/clients/pera/client.ts","../../src/clients/daffi/constants.ts","../../src/clients/daffi/client.ts","../../src/clients/myalgo/constants.ts","../../src/clients/myalgo/client.ts","../../src/clients/defly/constants.ts","../../src/clients/defly/client.ts","../../src/clients/exodus/constants.ts","../../src/clients/exodus/client.ts","../../src/clients/algosigner/constants.ts","../../src/clients/algosigner/client.ts","../../src/clients/lute/constants.ts","../../src/clients/lute/client.ts","../../src/utils/types.ts","../../src/clients/walletconnect2/constants.ts","../../src/clients/walletconnect2/utils.ts","../../src/clients/walletconnect2/client.ts","../../src/clients/magic/constants.ts","../../src/clients/magic/client.ts","../../src/clients/kmd/constants.ts","../../src/clients/kmd/client.ts","../../src/clients/mnemonic/constants.ts","../../src/clients/mnemonic/client.ts","../../src/clients/custom/constants.ts","../../src/clients/custom/client.ts","../../src/clients/kibisis/constants.ts","../../src/clients/kibisis/utils.ts","../../src/clients/kibisis/client.ts","../../src/clients/index.ts","../../src/utils/initializeProviders.ts","../../src/utils/clearAccounts.ts","../../src/utils/providers.ts","../../src/utils/reconnectProviders.ts","../../src/utils/encodeNFDTransactionsArray.ts","../../src/context/WalletContext.tsx","../../node_modules/zustand/esm/shallow.mjs","../../src/hooks/useWallet.ts","../../src/hooks/useInitializeProviders.ts"],"sourcesContent":["import { Network } from '../types/node'\n\nexport enum PROVIDER_ID {\n KMD = 'kmd',\n CUSTOM = 'custom',\n PERA = 'pera',\n DAFFI = 'daffi',\n LUTE = 'lute',\n MYALGO = 'myalgo',\n ALGOSIGNER = 'algosigner',\n DEFLY = 'defly',\n EXODUS = 'exodus',\n KIBISIS = 'kibisis',\n WALLETCONNECT = 'walletconnect',\n MNEMONIC = 'mnemonic',\n MAGIC = 'magic'\n}\n\nexport const DEFAULT_NETWORK: Network = 'mainnet'\n\nexport const DEFAULT_NODE_BASEURL = 'https://mainnet-api.algonode.cloud'\n\nexport const DEFAULT_NODE_TOKEN = ''\n\nexport const DEFAULT_NODE_PORT = ''\n","import type _algosdk from 'algosdk'\nimport type { AlgodClientOptions } from '../types'\nimport { DEFAULT_NODE_BASEURL, DEFAULT_NODE_TOKEN, DEFAULT_NODE_PORT } from '../constants'\n\nexport const getAlgosdk = async () => {\n return (await import('algosdk')).default\n}\n\nexport const getAlgodClient = (\n algosdk: typeof _algosdk,\n algodClientOptions?: AlgodClientOptions\n) => {\n const [\n tokenOrBaseClient = DEFAULT_NODE_TOKEN,\n baseServer = DEFAULT_NODE_BASEURL,\n port = DEFAULT_NODE_PORT,\n headers\n ] = algodClientOptions || []\n\n return new algosdk.Algodv2(tokenOrBaseClient, baseServer, port, headers)\n}\n\nexport default class Algod {\n algosdk: typeof _algosdk\n algodClient: _algosdk.Algodv2\n\n constructor(algosdk: typeof _algosdk, algodClient: _algosdk.Algodv2) {\n this.algosdk = algosdk\n this.algodClient = algodClient\n }\n\n static async init(algodOptions?: AlgodClientOptions) {\n const algosdk = await getAlgosdk()\n const algodClient = getAlgodClient(algosdk, algodOptions)\n\n return new Algod(algosdk, algodClient)\n }\n}\n","export const audio =\n 'data:audio/mp3;base64,SUQzBAAAAAIYBlRJVDIAAAAWAAAAMTAgU2Vjb25kcyBvZiBTaWxlbmNlVFBFMQAAABIAAABBbmFyIFNvZnR3YXJlIExMQ1RBTEIAAAAMAAAAQmxhbmsgQXVkaW9BUElDAAIPAgAAAGltYWdlL2pwZWcAAwCJUE5HDQoaCgAAAA1JSERSAAAEOAAABDgIBgAAAOwQbI8AAAAGYktHRAD/AP8A/6C9p5MAAAAJcEhZcwAACD0AAAg9AQWVVbYAAAAHdElNRQffCgsFHDEDbwR2AAAgAElEQVR42uzde5RVZd0H8N8wDDcBAS8o6oCJVyxTsDSxojJvgVYq3jVNUQgzaZWmpqh56+ItNa+kr4Cay9Q0DQ1DWb2WeSm8pGRy0RAEgRFhuIzz/tFbC5yZc86eOWfmPDOfz1rvemvvZz9779+zz3DOt2fvXRER9QEAAACQsE5KAAAAAKROwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8BBq9pss81i4sSJMXToUMUAAACgaCoiol4ZaA177rln3HzzzdG/f/+oqamJww8/PGbNmqUwAAAAtJgZHLSKk046Ke67777o379/RET07t07pk6dGtXV1YoDAABAi5nBQcmde+65MW7cuEbXvfjii3HIIYfE2rVrFQoAAIBmq4yIC5WBUqioqIgf/ehHceqppzbZZosttohevXrFk08+qWAAAAA0/zdomMFBCVRWVsZPfvKTGD16dEHtjzrqqJgxY4bCAQAA0CwCDoquU6dOccMNN8SoUaMK3mbOnDkxYsSIWL16tQICAACQmVtUKLoLL7wwjj766Ezb9OnTJz788MP44x//qIAAAABkZgYHRXXyySfHxRdf3Kxt16xZEyNGjIg333xTIQEAAMjEa2Ipmv333z8mTpzY7O27dOnSou0BAADouMzgoCh23333uO+++6J79+4t7utLX/pSvPLKK4oKAABAwczgoMW22mqruOOOO4oSbkREjBs3TlEBAADIxAwOWqRTp05x3333xV577VW0Puvq6uIzn/lMzJ8/X4EBAAAo7PepEtASp59+elHDjYiIysrKOO200xQXAACAgpnBQbPtuuuu8cgjj0RVVVXR+66trY0999wzlixZotAAAADkZQYHzdKtW7e4/vrrSxJu/Kf/r3/96woNAABAQQQcNMv5558f22+/fUn3MWrUKIUGAACgIAIOMvvCF74Q3/jGN0q+nz322COqq6sVHAAAgLwEHGRSVVUVl156adH7Xbp0aaPLzeIAAACgEAIOMjn22GOLPqvimWeeic997nOxaNGiBusOOeQQRQcAACAvAQcF69GjR5x55plF7fOhhx6KI488MhYvXhxTp05tsH7IkCGx3XbbKT4AAAA5CTgo2De/+c3YbLPNitbfM888E+PGjYs1a9ZERMTkyZOjvr7hW4vN4gAAACAfAQcF6dOnT4wdO7Zo/S1dujTGjh0bdXV1/1321ltvxaxZsxq0HTFihAEAAAAgJwEHBfnWt74VvXv3Llp/Z555ZrzzzjsNlj/++OMNln3iE5+Irl27GgQAAACaJOAgr/79+8dJJ51UtP5uu+22RoOMiIhp06Y1WFZVVRWf+MQnDAQAAABNEnCQ19ixY6Nbt25F6evdd9+Nyy+/vMn1s2bNanRmx5577mkgAAAAaJKAg9wXSKdOMWrUqKL199Of/jQ++OCDnG0am90h4AAAACDn71clIJe99tor+vfvX5S+3njjjZgyZUredo0FHMOGDTMYAAAANEnAQU4jR44sWl8/+tGPYt26dXnbPf3007Fq1aoNlm2yySax7bbbGhAAAAAaJeCgSZWVlXHwwQcXpa9nn302HnvssYLarl69Ol588cUGyz/1qU8ZFAAAABol4KBJe++9d2y66aZF6euiiy7K1P6VV15psGyPPfYwKAAAADRKwEGTDjnkkKL088gjj8Rzzz2XaZuXX365wbKBAwcaFAAAABol4KBRnTt3joMOOqjF/axbty4uvfTSzNs1NoNjq622MjAAAAA0SsBBo/bZZ5/o27dvi/v5n//5n3jzzTczb/faa69FfX39BssGDBhgYAAAAGiUgINGFeOBnitWrIirrrqqWduuXr063n///Q2Wde/evSihCwAAAO2PgING7brrri3u46abborFixc3e/ulS5c2WOY2FQAAABoj4KBRQ4YMadH2a9eujV/+8pct6mPZsmUNlrlNBQAAgMYIOGigT58+LQ4SHnrooViyZEmL+mgs4DCDAwAAgMYIOGhg8ODBLe6jpbM3IiI++OCDBssEHAAAADRGwEED/fr1a9H2s2bNiueee67Fx9HYA0UFHAAAADRGwEEDLX1TyaRJk4pyHJtvvnmDZZ7BAQAAQGMEHDTQkhkcy5YtiwceeKAox7HZZps1WNazZ08DBAAAQAMCDhro06dPs7e9++67o7a2tsXH0KVLl+jdu3eD5Z07dzZAAAAANCDgoIHKyspmbVdfXx933nlnUY5hu+22K+qxAQAA0L4JOGhg5cqVzdpu+vTpMWfOnKIcw/7779/ocgEHAAAAjRFw0EBzA45ivBr2Pw488MBGl7tFBQAAgMYIOGjggw8+yLzN3Llz48knnyzK/rfaaqv4+Mc/3ug6AQcAAACNEXDQQHNmcEyePDk+/PDDouz/oIMOanKdW1QAAABojICDBpoTcDz22GNF2XePHj1i7NixTa4XcAAAANAYAQcNZL1FZc6cOfGPf/yjKPseP3589O/fv8n1Ag4AAAAaI+CggawzOKZNm1aU/W699dZx2mmn5WzjGRwAAAA0RsBBA1lncDz++ONF2e95550XXbt2zdmmWM/5AAAAoH0RcNBAlhkcNTU18ac//anF+9xzzz1j1KhRedstWrTIAAEAANCAgIMG3nnnnaivry+o7fTp02PdunUt2l9FRUVMnDixoLb/+te/DBAAAAANCDhoYPXq1bFw4cKC2hbj+RuHHXZYfPKTnyyo7YIFCwwQAAAADQg4aNScOXPytlm3bl1Mnz69Rfvp0aNH/OAHPyi4vYADAACAxgg4aNTcuXPztvnzn/8cNTU1LdrPuHHjcr4W9qMEHAAAADRGwEGjCgk4Xn/99RbtY6uttorTTz890zaewQEAAEBjBBw0qpBbVJYvX96ifVx55ZXRrVu3TNuYwQEAAEBjBBw0at68eXnbtCTgOO6442LEiBGZtxNwAAAA0JjOSkBjCpnBsWzZsmb1PXDgwLjgggsyb7dmzZp47733DA4AANCqKioqmr0sa9tCt1+3bl18+OGHBmc9Ao717LTTTrHjjju2yoVbqu1b+mFaf3ltbW3OW0h233336Ny5c6Z9VVRUxJgxY6JHjx6Zx2fBggVx4oknluRcy2Vcy+EPain2laVdSuea0nWVyjXoXNvn562tx6pcz7UUY9Xevos4V99FfBfxXaRcPgPl6OSTT45HH33UD/n1xzQi6pXh3yZMmBATJkxQCAAAAMraKaecEo888ohCrMcMjiJZvHhxo7ds1Nc3nh9lWZ61j6Zk7bu6ujp69+7dZH8LFiyIxYsXF3yM3bp1ix122KHZSens2bPj/fffb9b5t8U4pDDG5VyTVMcy6z6LcZ4pjHG51NvnNYyxz6ux7EDfF4yxsWwP36E68vf7Aw44IMaNG9fk+k6dPFJTwFEi1113Xdxyyy3t6py+973vxZlnntnk+nvvvTeuuOKKgvqqqqqK3/72t80ON9asWRNf/vKXY/Xq1S42AACg3dtpp51yrk/9FptSEPnQpL/97W851/fp06fgvs4666wYMmRIs4/lL3/5i3ADAADoMPI9QNQMjkZqogQ0ZdasWTnX9+3bt6B+9thjj/jWt77VomP54x//aEAAAIAOQ8CRnYrQpLfffjvna1kLmcHRrVu3uPbaa6OysrJFxzJz5kwDAgAAdBj5ntch4GikJkpALrlmcVRXV+fd/rzzzouPfexjLTqGVatWxQsvvGAwAACADsMMjuxUhJxyPYejuro6unbt2uT64cOHxze+8Y0WH8PMmTNj7dq1BgMAAOgw8s3g8JDRhgQc5JQr4OjUqVOTszM22WSTuOaaa4ryobvzzjsNBAAA0KHkm8HR0scAtEcCDnLK96DR7bffvtEP2o033hhbbrlli/c/Z86cmD59uoEAAAA6FLeoZKci5DRv3rxYvnx5k+sbCzjOOeecGD58eFH2f8cdd+SdmgUAANDeeMhodipCXrlmcXw04Dj44INj7NixRdnvqlWrYurUqQYAAADocMzgyE5FyCvXczjWDzgGDx4cV111VdH2e//990dNTY0BAAAAOpx8AYeHjDbUWQnIJ1fAsd1220VlZWV07949br/99ujZs2fR9jtp0iTFBwAAOiQzOLJTEfLKFXB06dIlqqur46qrrorBgwcXbZ9/+tOf4pVXXlF8AACgQxJwZKci5DV37tyct4pcfvnlcfDBBxd1nzfeeKPCAwAAHZaHjGanIhT0wXrppZeaXL/vvvsWdX9PPfVUTJs2TeEBAIAO/Tss5495AUfDmigBhch1m0oxrVu3Ls4//3wFBwAAOjS3qGSnIhQk16tii+n222+P2bNnKzgAANChCTiyUxEK0hozOBYvXhw/+9nPFBsAAOjwBBzZqQgFefPNN2PFihUl3cell16a82GmAAAAHYWAIzsVoeAP18svv1yy/l988cW45557FBoAACA8ZLQ5VISCvfLKKyX74J533nl5P8AAAAAdRb4ZHBUVFYr0EQIOCjJkyJA47LDDStL3TTfdFM8//7wiAwAA/D+3qGSnIuQ1aNCgmDJlSvTq1avofb/44otx2WWXKTIAAMB6BBzZqQg59e/fP+65557YbLPNit73+++/H6effnqsXbtWoQEAANYj4MhORWjSxhtvHFOnTo1tttmmJP1/73vfi7lz5yo0AABA1h/zAo6GNVECGtO9e/e46667YqeddipJ/1OnTo0HH3xQoQEAABphBkd2KkIDVVVVceutt8bQoUNL0v/rr78e5513nkIDAAA0QcCRnYqwgYqKirjmmmtixIgRJel/9erVcdppp8WqVasUGwAAoAkCjuxUhA1ccsklceihh5as/3PPPTf+/ve/KzQAAEAOAo7sOisBEf+euXHppZfGCSecULJ93HjjjTFlyhTFBgAAyCNfwFFRUaFIHyHgIDp16hQ//elPY/To0SXbxyOPPBKXXHKJYgMAABSgvr4+7+84NiTg6OgXQOfOce2115b0tpTnn38+xo8fn/cDCgAAwL+5RaUZv2+VoOOqqqqKG2+8MQ466KCS7WPevHlx4oknRm1trYIDAABlpbHbPJq69aNYywtt27lz7p/rAo6GBBxFMmzYsFi9enWbfwgKXV5VVRWjR4+OHXbYoWQ1qa2tjYcffjgOP/zwZp9j1vMs5R+jch3LcqxJKc+znGpVLv9QpjrGqX5e29sY+7waS2NsjP0b4zthR/hO2B4JOAQcJTNy5MgYOXKkQqynW7duMXbsWIUAAAAoMgFHQwKOIlm8eHEsW7aswfLGnjvR1LMoWtq2Keu3raioiIEDB0aPHj1KWo958+bF0qVLS16HLLVpzbEo13Mrh/PNcm6pjaVza/3jNZbOrb2dm3/v2te5+Qym9z3FZ9C5ldP3lL59+8a9994r4BBwtL7rrrsubrnllrI+xt69e8eUKVNKHm5ERBx88MGxZMkSFwYAAEAzbLLJJjnXCzgaqYkSdAz9+vWL++67L/bYY49W2V9r7QcAAKA98haV7FSkA+jdu3fce++9seuuu7baPocPH67wAAAAzSTgyE5F2rlu3brFHXfcEbvsskur7lfAAQAA0Hz5ni3Skd4YUygBRzvWuXPnuOmmm+LTn/50q+97p512ik033dQgAAAANIMZHNmpSDtVUVERP/vZz2K//fZrs/2bxQEAANA8Ao7sVKSduvDCC+Owww4r6T5mzpwZNTU1Ta7fd999DQQAAEAzCDiyU5F2aPz48XHKKaeUdB/PPfdcnHjiifHXv/61yTYCDgAAgObJF3BUVlYq0kcIONqZL37xi3H22WeXdB+vvvpqHHvssbFy5cp4/vnnm2y39dZbx6BBgwwKAABARh4ymp2Aox0ZOHBg/PznPy/phT537tw4+uijY/ny5RER8cILL+Rs7zkcAAAA2blFJTsVaSe6desWt956a2y88cYl28eiRYviqKOOioULF/53Wb6Aw20qAAAA2Qk4slORduLyyy+PIUOGlKz/mpqaOOqoo2LOnDkbLH/33XfjrbfeanK7ffbZx9QpAACAjPLdoiLgaKQmSpC+448/Po444oiS9V9bWxvHH398vPrqq42uzzWLo1+/fiUNXgAAANqrXLM4BByN1EQJ0rbHHnvExRdfXLL+161bF6eeemr8+c9/brKN21QAAACKL1fAYaZ8QwKOhHXp0iWuvfbaqKqqKkn/9fX1ceaZZ8YTTzyRs12uN6lEeNAoAABAc3+TNflj3gyOhjVRgnSNHz8+Pvaxj5Ws/x/+8Idx//335203a9asWLduXZPr99prr5KFMAAAAO1VXV1d0z/mBRwNa6IEadp2221j/PjxJev/5z//edx2220FtV21alW89tprTa7v3r17DB061KABAABkkOsWlcrKSgX6CAFHoq644oro0qVLSfr+/e9/H5dffnmmbfLdpuI5HAAAANl4Bkc2nZUgPV/72tdK9lyLN998M8aNG5f3ncsf9fzzz8dxxx3X5Prhw4fHj3/844iI2GSTTWLPPfeMXXbZJfr16xd9+/bd4P/36dMnVq5cGUuWLInFixfH4sWL//uf586dGzNmzIhly5a5EAAAgHbNW1SyEXAkpnfv3nHhhReWpO8PPvggvvGNb0RNTU3mbV988cWc63fbbbf42c9+Fp/61KcKem5Iz549Y/PNN290XV1dXTz77LPx+OOPx7Rp0+KNN95wYQAAAO2Oh4xmI+BIzLnnnhubbrppST44Z5xxRrz++uvN2n727NmxYsWK6NmzZ6Pru3TpEkceeWRRjrWysjL22muv2GuvveL888+PN998Mx577LG4+eabY+HChS4SAACgXTCDIxsVScigQYPimGOOKUnf11xzTTz66KMt+uDlm8VRKttuu22cfvrpMXPmzBg/fnzJnk0CAADQmgQc2ahIQk455ZSSXMRPPPFE/OQnP2n29hUVFXHEEUfE4MGD27Q+G220UZxzzjkxY8aMOPDAA10wAABA0gQc2ahIIjbeeOMYPXp00ft9880341vf+lbmh4r+xy677BIPPvhgXH311bHFFluURa0GDhwYt912W9x7772x8847u3gAAIAkeYtKNgKORBx33HHRo0ePon9YzjjjjGY9VLRXr15x8cUXx+9+97sYNmxYWdZs+PDh8dhjj8URRxzhAgIAAJLjIaPZqEgCqqqq4uSTTy56vzfffHM899xzmbf76le/Gk8//XScfPLJUVlZWfa1u/rqq2PChAkuJAAAICluUclGRRJwyCGHRP/+/Yva5z//+c+48sorM21TWVkZl156aVx//fVNvsK1XE2YMCGuuuqqqKqqckEBAABJyBVwlPv/2NwWBBwJGDNmTNE/JN/5zneitra24G169+4dd911V5x44onJ1nH06NFx1113Ra9evVxUAABA2fMMjmwEHGVu+PDhMWTIkKL2efvtt8ezzz5bcPuBAwfGb37zm/jc5z6XfD333XffeOCBB4o+IwYAAKDY3KKSjYqUua9+9atF7W/OnDlx2WWXFdz+05/+dDzyyCOx/fbbt5ua7rzzzvHLX/4yunXr5gIDAADKloeMZtNZCcpbsWdNfPe7341Vq1YV1PaTn/xkTJ06tV0GAbvttltcddVVcfrpp7vIAICSa2oqeTGWZ52mXoy+2+J8inGe5XTcxTjPFI67PV2zbTGWuZ4hKOAQcJTMgQceGNtss01RPwQbb7xxDBgwoGjHOH/+/Bg1alSMGjUq77H07NkzDjjggHY9y+GQQw6JwYMHx9///vd2/Y9WOf3x949W+/likuoXLWNsjP0w8m9MW/2NACg2AUcjf5cjojspCGQAACAASURBVF4Z/m3ChAleJwoAAEDZW7hwYey+++4KsR4zOIrk1Vdfjblz5zZY3tg9U03dR/XR5cOGDSvawzDnz58fL7zwQt5jiPj3cze22GKLDjN2a9eujccffzyWLVtWlHErZdumlOIYWvt8s9SgXMfHuXXMczOWzs25Ff/flfb8GfT3xbm5Tp1blrZPPPFEbLfddo22N4NDwFEyd999d9xyyy1F66+qqipeeeWVov2AP/zww2PevHl5206cOLFDhRv/qfWuu+4aX/jCF2LlypUuZgAAoCzU1dU1uU7A0UhNlKA8DR06NDbaaKOi9HXXXXcVFG7svffeccopp3TIeldXV8cZZ5zhwgMAAMpGrtfEVlZWKtBHCDjK1Gc/+9mi9LNy5cq4+uqr818InTrFxIkTO3TNTzvttBg0aJCLDwAAKAteE5uNipSpYr0e9t5774133303b7vRo0fHrrvu2qFr3qVLlw4f8gAAAOUj1wwOb3JqSMBRpnbaaaei9DN58uS8bXr27Blnn322okfEfvvtF1/84hcVAgAAaHO5Ag4zOBqpiRKUn169ekX37t1b3M9f//rXePnll/O2+/a3vx2bbbaZwv+/iy66KKqqqhQCAABoUwKObFSkDG2++eZF6WfKlCl522y55ZYd9sGiTdl2223j1FNPVQgAAKBNCTiy8ZrYMtS/f/8W97Fy5cr49a9/nbfdqFGjokuXLm1ynq+++mrceuutUV1dHQMHDozq6uqorq6OTTfdtM3HYMyYMXHzzTfH2rVrXZAAAECbEHBkI+AoQ8W4XeShhx6KFStW5G138MEHF/346+rq4sknn4y+ffvG0KFDm2zXp0+fmDp1aoPlgwYNimOOOSZGjx7dZmHHpptuGgcccED85je/cUECAABtItdbVDxktCGRTxkqxgyOQn6Y9+/fP2cAkdW8efPiyiuvjD333DOOP/74eOyxx3K233LLLaNnz54Nls+ZMyd+9KMfxdChQ+PUU0+Np556KucHu1SOO+44FyMAANBmzODIRkXKUEufwbF27dp45pln8rY76KCDipL6zZo1K4488sjYe++94+qrr4533nknIiJef/31vNvusMMOOc/j4YcfjiOPPDI+85nPxOOPP96q47DPPvvEoEGDXJAAAECbEHBkoyJlqKUBx1/+8pdYtWpV3nYHHnhgi/ZTU1MT5557bhx00EGNzrJ47bXX8vax/fbbF7SvuXPnxoknnhgTJ05stediVFRUxLHHHuuCBAAA2kSugCNCyNGgHkpQflp6i8rTTz+dt02/fv1i7733bvY+fv/738dnP/vZmDRpUtTV1TXaZv78+bFy5cqc/eSawfFR9fX1cdNNN8UhhxwS8+bNa5WxGD16tFfGAgAAbULAkY1qlKGWzuAoJODYb7/9orKysln9X3vttXHCCSfEokWLcrarr6+P2bNn52yTJeD4jxdffDG+/OUvt8oDQDfZZJM44IADXJQAAECry/csQg8a3ZCAo515//3348UXX8zbbtttt83c99q1a2PMmDFx+eWX500S/yPfbSrNCTgi/n17zJgxY+Luu+8ueU332WcfFxYAANDqzODIRjXK0OLFi5u97d///vcmbxlZX9++fTP3feGFF2aeNZHvQaNbb7119OjRo9nne/bZZ8dzzz1X0vHYY489XJQAAECrE3BkoxplaMmSJc3e9o033iioXZ8+fTL1e++998akSZMyH0++GRwVFRUxePDgZp/vmjVr4pvf/GYsXLiwZOOx0047Rffu3V2YAABAqxJwZKMaZaglAcc//vGPgtplmcHxt7/9Lb7//e8363gKeZNKc29T+Y+FCxfGySefHGvWrCnJeHTu3Dl22203FyYAANCqBBzZqEYZasktKsUOOJYsWRInn3xyrF69ulnH8/bbb8cHH3yQs01LA46IiOeff77ZIUwh3KYCAAC0Ng8ZzUbAUYbK6RaVCRMmxNtvv92iD2S+53AUI+CIiLjnnnvi97//fUnGRMABAAC0tnwBR3PfjNleCTjKUHNncHz44Ycxd+7cgtr27t07b5t58+bF448/3uLzKdWbVBpz0003lWRMdt99dxcmAADQqtyiko1qlKH58+c3a7sVK1bEunXrCmq7dOnSvG2mTJmSNzEsRL6Ao7q6Orp27VqU2s2cOTNefvnloo9J1oeyAgAAtJSAIxvVKEMvv/xyQQHERy1btqzgtvPmzcu5ft26dXHPPfcU5XzyBRydOnWK7bbbrmj1K8Usji5durgwAQCAViXgyEY1yvQifvrppzNvt3z58oLb5psl8sQTTxTt1aut8SaV9T344IPxzjvvFHVMKisr3d8GAAC0Kg8ZzUbAUaZmzJiReZssAUe+Z3X89re/Ldq5LFiwIN5///2cbYoZcKxduzZuu+22oo+JWRwAAEBrMoMjG9UoU80JOIp5i8qCBQuKej6t9SaV/5g8eXJRnh+yPgEHAADQmgQc2ahGmfrXv/4Vs2fPzrRNXV1dwW3z3aJS7Fs85syZk3N9MZ/BEfHvsKclr7dtTLEehAoAAFAIAUc2qlHGss7i6NevX8FtZ8+enfONK4sWLSrqueS7JWabbbYpev0KefZHpg+LPx4AAEArEnBk/M2mBOXrySefzNQ+S8BRU1MTzzzzTKPrVq1alfeZGVnluyWmR48esckmmxR1n8UMONatWxeLFy92UQIAAK3GQ0azEXCUsaeeeirTbRZZAo6IiGnTprXahyTfDI6I4s/iyPfcjyzeeuutnDNeAAAAii3fDA5vetyQgKOM1dXVxR133FFw+6wzIJoKOLp16xabbbZZUc+lkICjurq6qPss5gyOfM8QAQAAKDa3qGTTWQnK25QpU+K73/1uQW/w6NKlS2y00UbxwQcfFNT3vHnz4tVXX42dd965wbptttkm3n333aKdx8KFC2PNmjU5z2Prrbcuau1mz54d9fX1RZmR8uabb7oYAYAWaew7SVPfU4q1vFR9l/K4i3GOKZ9Pa49lW12brtnC2vfp00fAIeBofQceeGCjt1gU4wMzb968GDx4cEHHcfXVVzf5rIjG+m7qtouzzz670VkLLTmf2tranAHHkUceGdtvv31RvySsXLkyNtpooxaP79ChQ+P6669P8o95Of2R78hfQFI+n478BcQY+5Lph1HH+jem1NcVQLH5O/SRekREvTL824QJE2LChAkKAQAAQNnbb7/94uWXX1aI/2cGR5G89NJL8cYbbzRY3thTb5t6Em6utiNGjCjoIaJLliyJ6dOnZzqGvfbaKwYOHLjB+qVLl/73GR3NOd7Glu+5556xww47NHnsNTU18dBDDxWtZhERhx12WPTs2bPF43vPPffEihUrilKH1mrblHI93izbZ6lBSufr3NI9t/b6Gcxybq5T5+bc0vn7Yiydm3Nr23PLsv1ll10WJ5xwQpPH4hYVAUdJ/OpXv4pbbrmlZP1/9atfbfIWifX17ds3Lrjggli2bFnBfe+4444xffr0DaY39e3bN3784x/Hv/71r6Kdw5gxY+KCCy5ocn3Xrl3j+9//fqY/LvmMHDmyxQHH66+/Ht/5zndc5AAAQKvykNFsVCMRDz74YLz66qv5B7RTp/jsZz+bqe/XXnstHnvssQbL999//6KeQ743qXTt2jU233zzou6zR48eLe5jxowZLkAAAKDV5fsffwUcH6mHEqThww8/jIsvvrigtiNGjMjc/9VXX91g2UknnVTU9yoX8qrYYr5JZcCAAdG9e/cW9yPgAAAA2kJdXV3uH/QCjg3roQTp+MMf/hBPPfVU3nb77bdf5h/2s2bNismTJ2+wbLvttotDDz20aMc/f/78vG2qq6uLtr/dd9+9xX2sWbMm/vd//9fFBwAAtDq3qGSjGom56KKL8l7k/fr1i+OPP75Zfb/99tsbLPv+979f0MNNC7FixYpYsmRJzjblFnD8+c9/jlWrVrnwAACAVifgyEY1EvPKK6/Efffdl7fd6aefHt26dcvU9/vvvx/f/e53N1i29dZbxxlnnFG04583b17O9dtss03R9lWMgOP+++930QEAAG3CMziyUY0EXXHFFVFbW5uzzeabbx7HHnts5r5nzJgRt99++wbLli5dWrRjzxdwFGsGR/fu3WO33XZrUR+LFy8WcAAAAG3GMziyUY0ELViwIK677rq87caNGxddu3bN3P8Pf/jDuOeee/773996662iHXu+B40W6yGjX/nKV1r8BpU77rgj1qxZ44IDAADaRL5bVCoqKhRpPQKORF133XXxt7/9LWeb/v37xzHHHNOsD9GECRNi0qRJsWbNmgbP5WiJfAHHVlttVZQU8sgjj2zR9mvWrIk777zThQYAALQZz+DIRjUStW7duvj2t7+dd4bB+PHjY+ONN27WB+ncc8+NIUOGxAsvvFC04853i0pVVVVsscUWLdrHoEGDYq+99mpRH7/+9a/j3XffdaEBAABtRsCRjWok7LXXXosrr7wyZ5v+/fvH1Vdf3ex9fPDBB7F69eqiHXO+GRwRLX8Ox+jRo1s0VWvt2rVxww03uMAAAIA2JeDIRjUS94tf/CL+8pe/5Gyz//77x6mnnloWx7tgwYJYu3ZtzjYteZNKr169mnVbzvp+/vOfx+zZs11cAABAmxJwZKMa7eCCP+OMM2LVqlU525177rlFeW1qS9XV1eV9pkdLZnBMmDAhNt1002ZvP3v27BbNeAEAACjm772cP+gFHBvWQwnSN2fOnDj//PNztqmqqopf/OIX0bt37zY/3nzP4Wjum1R23HHHOOmkk1r0x+Oss87KO8MEAACgNXhNbDaq0U5MmTIlJk+enLPNNttsUxazE/I9h2PAgAHN6vfiiy+Ozp07N/u4Jk2aFM8995yLCQAAKAv19fW5f9ALODashxK0Hz/4wQ/i+eefz9nmgAMOiEsuuaRNPwj5Ao7m3GIycuTIGD58eLOP6aWXXorLLrvMRQQAAJQNt6hkoxrtyNq1a+Ob3/xm3tebnnTSSXHjjTdGly5d2uQ4892istlmm2Xqb8cdd8z7Nplc5syZE8ccc0ysXLnSRQQAAJQNt6hkoxrtzDvvvBNjxoyJdevW5Ww3cuTImDp1aps8kyPfDI5+/foV/EHdaqutYurUqbHxxhs361gWLlwYRx55ZN5QCAAAoLXlm8FRUVGhSOsRcLRDzzzzTJxzzjl579fae++949e//nVsscUWrXp8+QKOTp06Rb9+/fL207dv35g6dWqzj7+mpiaOPvrovDNKAAAA2oJncGSjGu3U5MmT49xzz83bbuedd46HH344dthhh1Y7tpqamli+fHnONvluU+nevXvceeedMXjw4GYdw4oVK+KEE06IV1991cUCAACUJc/gyEY12rFf/vKXBYUcAwYMiN/85jcxZsyYqKqqapVja8mDRgcMGBBTpkyJoUOHNmvfc+bMia985Svxpz/9yUUCAACULc/gyEY12rlJkyYVFHL06tUrLrjggpgxY0bsv//+JT+ufAFHUzM4Dj300Jg+fXp8+tOfbtZ+Z8yYEQceeGC8/vrrLg4AAKCsmcGRjWp0AJMmTYrzzjuvoLaDBg2KSZMmxa9+9avYZZddSnZM8+fPz7n+ozM4evfuHTfccEPccMMNzX4w6k033RTHHnts3ttjAAAAyoGAIxvV6CBuv/32OP/88wtuv88++8S0adPiJz/5SebXthYiywyOz3/+8/Hkk0/GoYce2qx91dTUxPjx42PixIl5p3gBAACUCwFHNp2VoOO47bbboqKiIi666KKC2nfq1CmOPvro+PrXvx5PPfVU/O53v4snnngiFi1a1OJjyRdwDB48OE477bQ46qijYvvtt2/2fh544IG48MILi3LMAAAArUnAkY2Ao4O59dZb4/3334+LLrooevXqVdA2Xbt2jf322y/222+/qK+vj+effz6mTZsW06ZNi9dee61Zx/Huu+/mXL///vu36Fkg//znP+Pss8+OmTNnGnQAACBJAo5sBBwd0D333BNPPfVUXHHFFfGlL30p07YVFRUxdOjQGDp0aJxzzjkxZ86cePzxx+Oll16KOXPmxNy5c/POlqisrIyuXbuW5NxWr14d1157bVx//fWxZs0agw0AACRLwJGNgKODWrBgQRx//PHxta99Lb73ve9FdXV1s/oZNGhQnHLKKRssW7lyZSxYsCBWrVoVq1evjtra2qitrY2qqqqorq6Orbbaquivo62trY2pU6fGjTfeGG+99ZYBBgAAkpcv4KioqFCk9Qg4Orj7778/HnzwwRg5cmSMGzcuhgwZ0uI+e/ToEdttt12rHH9NTU1MmjQpbr311liyZIkBBQAA2g0zOLIRcBB1dXXxwAMPxAMPPBCf//zn49RTT43hw4dH587le3ksXLgwbrnllrjzzjtjxYoVBhEAAGh3BBzZCDjYwB/+8If4wx/+EP369YsDDzwwRo4cGZ/5zGfKIuxYsWJFTJ8+PR599NF49NFHPWMDAABo1+rq6nKuF3BsSMBBo957772YPHlyTJ48+b9hx7777hvDhg2LAQMGtNpxLFq0KH73u9/FY489FjNnzoy1a9caHAAAoEMwgyMbAQd5rR92RERsscUWMWzYsBg6dGgMGzYshgwZEt26dSv6fi+++OL4xS9+EfX19QYBAADocPL9FhJwbEjAQWbvvPNOPPzww/Hwww//d1m/fv1iyy23jAEDBsSWW2753//cs2fPqKura/T/dtxxxxg2bFiT+6mtrRVuAAAAJdPUW0iKsTzrG04aa58vwBBw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AAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4A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/+MYxPkNE2IkGABNSVOQ7HM+7DuUt3Q7mjpUFmcjr1unl8NuVbD7m6plQSJtQIuLMFbkdTOVo4XNGpkZmZshRj5KVGyRR6oW/+MYxP8P82okOACTLDX0hZ/NMwIyV2MZOyleP56///LM+7JePftrs1g+k+jJlnog5CvNvjmcS3cDTZkDKhtl8r35yOV+jgtR/+MYxPoOQ2YYEABTSKmIjcsiPb5ZfXf7UH8zFxqUaDwmSPCizYFGwQGwyZIIX0pOLKIpjETlo1U/56E0qoAczJRAWM5G8HJA/+MYxPwK8148GABNSUZyKUXZ6Ik9o/PNrPO4Xd3k45s5ZbFOhlkKfJ2SMjFyc9KZLMjQ60Ps1iyQiQycScX711gnjk89MiiI/+MYxP8TC2oIAACTEM0f+Z/SNfy///f9lc5XLIHLMz46Yck2h2K0dtqT0bECVySOS9qTEGr9rfbPd2TQq7VMzuRDg3vYJJEn/+MYxO0ME2YcEABNSJ2RxzMIKcrhC0U0F3kImjyb03for+r/zq1OmMvJ/7vbWJlSA5zVyGFyjBs22U4ODIPh4hDbrVUbv/ln/+MYxPcNW2YcEABNSGWrMglL8cicpXM60b///+8h4bKpxqdMwhMvkpTs/hZPkDJUtJu2TccDTSJKRRGOl+v/1//9Omu/2pdE/+MYxPwPu2oQCABTLHWi9r07yp99tVRSsxysZJwFXKcDYBwxzjoPraIHIgUpiCmopmXHJwp268/L++7oMjOERqsPR/WT59fe/+MYxPgMU1ooGABTSLv/8+5at2WSQuEzX00HAFGyipKM5p5VFojkAmjknWmIKaimZccnBdUObf4ovk//MMX///X/yt/uOXlx/+MYxP8SW2IIAACTEKktqFqTxCJSJF/JNmSImOhln2AosFn0lTEFNRTMuOTguMlVVVVVVVVMQU1FMy45OC4yVVVVVVVVVVVV/+MYxPAMw2IgEABTSVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVMQU1FMy45OC4yVVVVVVVVVVVV/+MYxPgK215IGACNTFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV/+MYxP8MW2I4GABNSFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV/+MYxP8Ks1oUGABTZVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV/+MYxP8AAANIAAAAAFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVEFHMTAgU2Vjb25kcyBvZiBTaWxlbmNlAAAAAAAAAAAAQW5hciBTb2Z0d2FyZSBMTEMAAAAAAAAAAAAAAAAAQmxhbmsgQXVkaW8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8='\n","import type _algosdk from 'algosdk'\nimport { audio } from '../../media/audio'\nimport type { AccountInfo, Asset, ClientOptions, Metadata, Wallet } from '../../types/wallet'\nimport type { ConfirmedTxn, TxnType } from '../../types/node'\nimport type { RawTxnResponse, TransactionsArray, TxnInfo } from '../../types/api'\n\nconst getIsIOS = () => {\n if (typeof window !== 'undefined') {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return /iPad|iPhone|iPod/.test(navigator?.userAgent) && !(window as any)?.MSStream\n } else {\n return false\n }\n}\n\nconst isIOS = getIsIOS()\n\nabstract class BaseClient {\n algosdk: typeof _algosdk\n algodClient: _algosdk.Algodv2\n clientOptions?: ClientOptions\n keepWCAlive: HTMLAudioElement\n metadata: Metadata\n\n static metadata: Metadata\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n abstract connect(onDisconnect: () => void, arg?: any): Promise<Wallet>\n abstract disconnect(): Promise<void>\n abstract reconnect(onDisconnect: () => void): Promise<Wallet | null>\n abstract signTransactions(\n connectedAccounts: string[],\n txnGroups: Uint8Array[] | Uint8Array[][],\n indexesToSign?: number[],\n returnGroup?: boolean\n ): Promise<Uint8Array[]>\n\n protected constructor(\n metadata: Metadata,\n algosdk: typeof _algosdk,\n algodClient: _algosdk.Algodv2,\n clientOptions?: ClientOptions\n ) {\n this.algosdk = algosdk\n this.algodClient = algodClient\n this.clientOptions = clientOptions\n this.keepWCAlive = new Audio()\n this.metadata = metadata\n }\n\n async healthCheck() {\n return await this.algodClient.healthCheck().do()\n }\n\n async getAccountInfo(address: string) {\n const accountInfo = await this.algodClient.accountInformation(address).do()\n\n if (!accountInfo) {\n throw new Error('Unable to get account information')\n }\n\n return accountInfo as AccountInfo\n }\n\n async getAssets(address: string) {\n const accountInfo = await this.algodClient.accountInformation(address).do()\n\n if (!accountInfo || accountInfo.assets === undefined) {\n throw new Error('Unable to get account assets')\n }\n\n return accountInfo.assets as Asset[]\n }\n\n async waitForConfirmation(txId: string, timeout = 4) {\n const confirmation = (await this.algosdk.waitForConfirmation(\n this.algodClient,\n txId,\n timeout\n )) as ConfirmedTxn\n\n return { txId, ...confirmation }\n }\n\n decodeTransaction = (txn: string, isSigned: boolean) => {\n return isSigned\n ? this.algosdk.decodeSignedTransaction(new Uint8Array(Buffer.from(txn, 'base64'))).txn\n : this.algosdk.decodeUnsignedTransaction(new Uint8Array(Buffer.from(txn, 'base64')))\n }\n\n logEncodedTransaction(txn: string, isSigned: boolean) {\n const txnObj = this.decodeTransaction(txn, isSigned)\n\n console.log('TRANSACTION', {\n isSigned,\n from: txnObj.from && this.algosdk.encodeAddress(txnObj.from.publicKey),\n to: txnObj.to && this.algosdk.encodeAddress(txnObj.to.publicKey),\n type: txnObj.type,\n txn: txnObj\n })\n }\n\n groupTransactionsBySender(transactions: TransactionsArray) {\n function groupBySender(objectArray: TxnInfo[]) {\n return objectArray.reduce(\n function (acc, obj) {\n const sender = obj.from\n if (!acc[sender]) {\n acc[sender] = []\n }\n acc[sender].push(obj)\n return acc\n },\n {} as Record<string, Array<TxnInfo>>\n )\n }\n\n const decodedGroup = transactions.reduce((acc: TxnInfo[], [type, txn], index) => {\n if (type === 'u') {\n const decodedTxn = this.decodeTransaction(txn, false)\n const from = decodedTxn.from ? this.algosdk.encodeAddress(decodedTxn.from.publicKey) : ''\n const to = decodedTxn.to ? this.algosdk.encodeAddress(decodedTxn.to.publicKey) : ''\n const type = (decodedTxn.type as TxnType) || ''\n const amount = Number(decodedTxn.amount) || 0 // convert from bigint to number\n\n const txnObj = {\n groupIndex: index,\n amount,\n from,\n to,\n type,\n txn\n }\n\n acc.push(txnObj)\n }\n\n return acc\n }, [])\n\n return groupBySender(decodedGroup)\n }\n\n async sendRawTransactions(transactions: Uint8Array[], waitRoundsToConfirm?: number) {\n const sentTransaction = (await this.algodClient\n .sendRawTransaction(transactions)\n .do()) as RawTxnResponse\n\n if (!sentTransaction) {\n throw new Error('Transaction failed.')\n }\n\n const decodedTxn = this.algosdk.decodeSignedTransaction(transactions[0])\n const waitRounds = waitRoundsToConfirm || decodedTxn.txn.lastRound - decodedTxn.txn.firstRound\n\n const confirmedTransaction = await this.waitForConfirmation(sentTransaction.txId, waitRounds)\n\n return {\n id: sentTransaction.txId,\n ...confirmedTransaction\n }\n }\n\n async keepWCAliveStart() {\n // Playing an audio file prevents Wallet Connect's\n // web socket connection from being dropped when\n // iOS goes into background mode\n\n if (!isIOS) {\n return\n }\n\n this.keepWCAlive.src = audio\n this.keepWCAlive.autoplay = true\n this.keepWCAlive.volume = 0\n this.keepWCAlive.loop = true\n await this.keepWCAlive.play()\n }\n\n keepWCAliveStop() {\n if (!isIOS) {\n return\n }\n\n this.keepWCAlive.pause()\n }\n}\n\nexport default BaseClient\n","function n(n){for(var r=arguments.length,t=Array(r>1?r-1:0),e=1;e<r;e++)t[e-1]=arguments[e];if(\"production\"!==process.env.NODE_ENV){var i=Y[n],o=i?\"function\"==typeof i?i.apply(null,t):i:\"unknown error nr: \"+n;throw Error(\"[Immer] \"+o)}throw Error(\"[Immer] minified error nr: \"+n+(t.length?\" \"+t.map((function(n){return\"'\"+n+\"'\"})).join(\",\"):\"\")+\". Find the full error at: https://bit.ly/3cXEKWf\")}function r(n){return!!n&&!!n[Q]}function t(n){var r;return!!n&&(function(n){if(!n||\"object\"!=typeof n)return!1;var r=Object.getPrototypeOf(n);if(null===r)return!0;var t=Object.hasOwnProperty.call(r,\"constructor\")&&r.constructor;return t===Object||\"function\"==typeof t&&Function.toString.call(t)===Z}(n)||Array.isArray(n)||!!n[L]||!!(null===(r=n.constructor)||void 0===r?void 0:r[L])||s(n)||v(n))}function e(t){return r(t)||n(23,t),t[Q].t}function i(n,r,t){void 0===t&&(t=!1),0===o(n)?(t?Object.keys:nn)(n).forEach((function(e){t&&\"symbol\"==typeof e||r(e,n[e],n)})):n.forEach((function(t,e){return r(e,t,n)}))}function o(n){var r=n[Q];return r?r.i>3?r.i-4:r.i:Array.isArray(n)?1:s(n)?2:v(n)?3:0}function u(n,r){return 2===o(n)?n.has(r):Object.prototype.hasOwnProperty.call(n,r)}function a(n,r){return 2===o(n)?n.get(r):n[r]}function f(n,r,t){var e=o(n);2===e?n.set(r,t):3===e?n.add(t):n[r]=t}function c(n,r){return n===r?0!==n||1/n==1/r:n!=n&&r!=r}function s(n){return X&&n instanceof Map}function v(n){return q&&n instanceof Set}function p(n){return n.o||n.t}function l(n){if(Array.isArray(n))return Array.prototype.slice.call(n);var r=rn(n);delete r[Q];for(var t=nn(r),e=0;e<t.length;e++){var i=t[e],o=r[i];!1===o.writable&&(o.writable=!0,o.configurable=!0),(o.get||o.set)&&(r[i]={configurable:!0,writable:!0,enumerable:o.enumerable,value:n[i]})}return Object.create(Object.getPrototypeOf(n),r)}function d(n,e){return void 0===e&&(e=!1),y(n)||r(n)||!t(n)||(o(n)>1&&(n.set=n.add=n.clear=n.delete=h),Object.freeze(n),e&&i(n,(function(n,r){return d(r,!0)}),!0)),n}function h(){n(2)}function y(n){return null==n||\"object\"!=typeof n||Object.isFrozen(n)}function b(r){var t=tn[r];return t||n(18,r),t}function m(n,r){tn[n]||(tn[n]=r)}function _(){return\"production\"===process.env.NODE_ENV||U||n(0),U}function j(n,r){r&&(b(\"Patches\"),n.u=[],n.s=[],n.v=r)}function g(n){O(n),n.p.forEach(S),n.p=null}function O(n){n===U&&(U=n.l)}function w(n){return U={p:[],l:U,h:n,m:!0,_:0}}function S(n){var r=n[Q];0===r.i||1===r.i?r.j():r.g=!0}function P(r,e){e._=e.p.length;var i=e.p[0],o=void 0!==r&&r!==i;return e.h.O||b(\"ES5\").S(e,r,o),o?(i[Q].P&&(g(e),n(4)),t(r)&&(r=M(e,r),e.l||x(e,r)),e.u&&b(\"Patches\").M(i[Q].t,r,e.u,e.s)):r=M(e,i,[]),g(e),e.u&&e.v(e.u,e.s),r!==H?r:void 0}function M(n,r,t){if(y(r))return r;var e=r[Q];if(!e)return i(r,(function(i,o){return A(n,e,r,i,o,t)}),!0),r;if(e.A!==n)return r;if(!e.P)return x(n,e.t,!0),e.t;if(!e.I){e.I=!0,e.A._--;var o=4===e.i||5===e.i?e.o=l(e.k):e.o,u=o,a=!1;3===e.i&&(u=new Set(o),o.clear(),a=!0),i(u,(function(r,i){return A(n,e,o,r,i,t,a)})),x(n,o,!1),t&&n.u&&b(\"Patches\").N(e,t,n.u,n.s)}return e.o}function A(e,i,o,a,c,s,v){if(\"production\"!==process.env.NODE_ENV&&c===o&&n(5),r(c)){var p=M(e,c,s&&i&&3!==i.i&&!u(i.R,a)?s.concat(a):void 0);if(f(o,a,p),!r(p))return;e.m=!1}else v&&o.add(c);if(t(c)&&!y(c)){if(!e.h.D&&e._<1)return;M(e,c),i&&i.A.l||x(e,c)}}function x(n,r,t){void 0===t&&(t=!1),!n.l&&n.h.D&&n.m&&d(r,t)}function z(n,r){var t=n[Q];return(t?p(t):n)[r]}function I(n,r){if(r in n)for(var t=Object.getPrototypeOf(n);t;){var e=Object.getOwnPropertyDescriptor(t,r);if(e)return e;t=Object.getPrototypeOf(t)}}function k(n){n.P||(n.P=!0,n.l&&k(n.l))}function E(n){n.o||(n.o=l(n.t))}function N(n,r,t){var e=s(r)?b(\"MapSet\").F(r,t):v(r)?b(\"MapSet\").T(r,t):n.O?function(n,r){var t=Array.isArray(n),e={i:t?1:0,A:r?r.A:_(),P:!1,I:!1,R:{},l:r,t:n,k:null,o:null,j:null,C:!1},i=e,o=en;t&&(i=[e],o=on);var u=Proxy.revocable(i,o),a=u.revoke,f=u.proxy;return e.k=f,e.j=a,f}(r,t):b(\"ES5\").J(r,t);return(t?t.A:_()).p.push(e),e}function R(e){return r(e)||n(22,e),function n(r){if(!t(r))return r;var e,u=r[Q],c=o(r);if(u){if(!u.P&&(u.i<4||!b(\"ES5\").K(u)))return u.t;u.I=!0,e=D(r,c),u.I=!1}else e=D(r,c);return i(e,(function(r,t){u&&a(u.t,r)===t||f(e,r,n(t))})),3===c?new Set(e):e}(e)}function D(n,r){switch(r){case 2:return new Map(n);case 3:return Array.from(n)}return l(n)}function F(){function t(n,r){var t=s[n];return t?t.enumerable=r:s[n]=t={configurable:!0,enumerable:r,get:function(){var r=this[Q];return\"production\"!==process.env.NODE_ENV&&f(r),en.get(r,n)},set:function(r){var t=this[Q];\"production\"!==process.env.NODE_ENV&&f(t),en.set(t,n,r)}},t}function e(n){for(var r=n.length-1;r>=0;r--){var t=n[r][Q];if(!t.P)switch(t.i){case 5:a(t)&&k(t);break;case 4:o(t)&&k(t)}}}function o(n){for(var r=n.t,t=n.k,e=nn(t),i=e.length-1;i>=0;i--){var o=e[i];if(o!==Q){var a=r[o];if(void 0===a&&!u(r,o))return!0;var f=t[o],s=f&&f[Q];if(s?s.t!==a:!c(f,a))return!0}}var v=!!r[Q];return e.length!==nn(r).length+(v?0:1)}function a(n){var r=n.k;if(r.length!==n.t.length)return!0;var t=Object.getOwnPropertyDescriptor(r,r.length-1);if(t&&!t.get)return!0;for(var e=0;e<r.length;e++)if(!r.hasOwnProperty(e))return!0;return!1}function f(r){r.g&&n(3,JSON.stringify(p(r)))}var s={};m(\"ES5\",{J:function(n,r){var e=Array.isArray(n),i=function(n,r){if(n){for(var e=Array(r.length),i=0;i<r.length;i++)Object.defineProperty(e,\"\"+i,t(i,!0));return e}var o=rn(r);delete o[Q];for(var u=nn(o),a=0;a<u.length;a++){var f=u[a];o[f]=t(f,n||!!o[f].enumerable)}return Object.create(Object.getPrototypeOf(r),o)}(e,n),o={i:e?5:4,A:r?r.A:_(),P:!1,I:!1,R:{},l:r,t:n,k:i,o:null,g:!1,C:!1};return Object.defineProperty(i,Q,{value:o,writable:!0}),i},S:function(n,t,o){o?r(t)&&t[Q].A===n&&e(n.p):(n.u&&function n(r){if(r&&\"object\"==typeof r){var t=r[Q];if(t){var e=t.t,o=t.k,f=t.R,c=t.i;if(4===c)i(o,(function(r){r!==Q&&(void 0!==e[r]||u(e,r)?f[r]||n(o[r]):(f[r]=!0,k(t)))})),i(e,(function(n){void 0!==o[n]||u(o,n)||(f[n]=!1,k(t))}));else if(5===c){if(a(t)&&(k(t),f.length=!0),o.length<e.length)for(var s=o.length;s<e.length;s++)f[s]=!1;else for(var v=e.length;v<o.length;v++)f[v]=!0;for(var p=Math.min(o.length,e.length),l=0;l<p;l++)o.hasOwnProperty(l)||(f[l]=!0),void 0===f[l]&&n(o[l])}}}}(n.p[0]),e(n.p))},K:function(n){return 4===n.i?o(n):a(n)}})}function T(){function e(n){if(!t(n))return n;if(Array.isArray(n))return n.map(e);if(s(n))return new Map(Array.from(n.entries()).map((function(n){return[n[0],e(n[1])]})));if(v(n))return new Set(Array.from(n).map(e));var r=Object.create(Object.getPrototypeOf(n));for(var i in n)r[i]=e(n[i]);return u(n,L)&&(r[L]=n[L]),r}function f(n){return r(n)?e(n):n}var c=\"add\";m(\"Patches\",{$:function(r,t){return t.forEach((function(t){for(var i=t.path,u=t.op,f=r,s=0;s<i.length-1;s++){var v=o(f),p=i[s];\"string\"!=typeof p&&\"number\"!=typeof p&&(p=\"\"+p),0!==v&&1!==v||\"__proto__\"!==p&&\"constructor\"!==p||n(24),\"function\"==typeof f&&\"prototype\"===p&&n(24),\"object\"!=typeof(f=a(f,p))&&n(15,i.join(\"/\"))}var l=o(f),d=e(t.value),h=i[i.length-1];switch(u){case\"replace\":switch(l){case 2:return f.set(h,d);case 3:n(16);default:return f[h]=d}case c:switch(l){case 1:return\"-\"===h?f.push(d):f.splice(h,0,d);case 2:return f.set(h,d);case 3:return f.add(d);default:return f[h]=d}case\"remove\":switch(l){case 1:return f.splice(h,1);case 2:return f.delete(h);case 3:return f.delete(t.value);default:return delete f[h]}default:n(17,u)}})),r},N:function(n,r,t,e){switch(n.i){case 0:case 4:case 2:return function(n,r,t,e){var o=n.t,s=n.o;i(n.R,(function(n,i){var v=a(o,n),p=a(s,n),l=i?u(o,n)?\"replace\":c:\"remove\";if(v!==p||\"replace\"!==l){var d=r.concat(n);t.push(\"remove\"===l?{op:l,path:d}:{op:l,path:d,value:p}),e.push(l===c?{op:\"remove\",path:d}:\"remove\"===l?{op:c,path:d,value:f(v)}:{op:\"replace\",path:d,value:f(v)})}}))}(n,r,t,e);case 5:case 1:return function(n,r,t,e){var i=n.t,o=n.R,u=n.o;if(u.length<i.length){var a=[u,i];i=a[0],u=a[1];var s=[e,t];t=s[0],e=s[1]}for(var v=0;v<i.length;v++)if(o[v]&&u[v]!==i[v]){var p=r.concat([v]);t.push({op:\"replace\",path:p,value:f(u[v])}),e.push({op:\"replace\",path:p,value:f(i[v])})}for(var l=i.length;l<u.length;l++){var d=r.concat([l]);t.push({op:c,path:d,value:f(u[l])})}i.length<u.length&&e.push({op:\"replace\",path:r.concat([\"length\"]),value:i.length})}(n,r,t,e);case 3:return function(n,r,t,e){var i=n.t,o=n.o,u=0;i.forEach((function(n){if(!o.has(n)){var i=r.concat([u]);t.push({op:\"remove\",path:i,value:n}),e.unshift({op:c,path:i,value:n})}u++})),u=0,o.forEach((function(n){if(!i.has(n)){var o=r.concat([u]);t.push({op:c,path:o,value:n}),e.unshift({op:\"remove\",path:o,value:n})}u++}))}(n,r,t,e)}},M:function(n,r,t,e){t.push({op:\"replace\",path:[],value:r===H?void 0:r}),e.push({op:\"replace\",path:[],value:n})}})}function C(){function r(n,r){function t(){this.constructor=n}a(n,r),n.prototype=(t.prototype=r.prototype,new t)}function e(n){n.o||(n.R=new Map,n.o=new Map(n.t))}function o(n){n.o||(n.o=new Set,n.t.forEach((function(r){if(t(r)){var e=N(n.A.h,r,n);n.p.set(r,e),n.o.add(e)}else n.o.add(r)})))}function u(r){r.g&&n(3,JSON.stringify(p(r)))}var a=function(n,r){return(a=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,r){n.__proto__=r}||function(n,r){for(var t in r)r.hasOwnProperty(t)&&(n[t]=r[t])})(n,r)},f=function(){function n(n,r){return this[Q]={i:2,l:r,A:r?r.A:_(),P:!1,I:!1,o:void 0,R:void 0,t:n,k:this,C:!1,g:!1},this}r(n,Map);var o=n.prototype;return Object.defineProperty(o,\"size\",{get:function(){return p(this[Q]).size}}),o.has=function(n){return p(this[Q]).has(n)},o.set=function(n,r){var t=this[Q];return u(t),p(t).has(n)&&p(t).get(n)===r||(e(t),k(t),t.R.set(n,!0),t.o.set(n,r),t.R.set(n,!0)),this},o.delete=function(n){if(!this.has(n))return!1;var r=this[Q];return u(r),e(r),k(r),r.t.has(n)?r.R.set(n,!1):r.R.delete(n),r.o.delete(n),!0},o.clear=function(){var n=this[Q];u(n),p(n).size&&(e(n),k(n),n.R=new Map,i(n.t,(function(r){n.R.set(r,!1)})),n.o.clear())},o.forEach=function(n,r){var t=this;p(this[Q]).forEach((function(e,i){n.call(r,t.get(i),i,t)}))},o.get=function(n){var r=this[Q];u(r);var i=p(r).get(n);if(r.I||!t(i))return i;if(i!==r.t.get(n))return i;var o=N(r.A.h,i,r);return e(r),r.o.set(n,o),o},o.keys=function(){return p(this[Q]).keys()},o.values=function(){var n,r=this,t=this.keys();return(n={})[V]=function(){return r.values()},n.next=function(){var n=t.next();return n.done?n:{done:!1,value:r.get(n.value)}},n},o.entries=function(){var n,r=this,t=this.keys();return(n={})[V]=function(){return r.entries()},n.next=function(){var n=t.next();if(n.done)return n;var e=r.get(n.value);return{done:!1,value:[n.value,e]}},n},o[V]=function(){return this.entries()},n}(),c=function(){function n(n,r){return this[Q]={i:3,l:r,A:r?r.A:_(),P:!1,I:!1,o:void 0,t:n,k:this,p:new Map,g:!1,C:!1},this}r(n,Set);var t=n.prototype;return Object.defineProperty(t,\"size\",{get:function(){return p(this[Q]).size}}),t.has=function(n){var r=this[Q];return u(r),r.o?!!r.o.has(n)||!(!r.p.has(n)||!r.o.has(r.p.get(n))):r.t.has(n)},t.add=function(n){var r=this[Q];return u(r),this.has(n)||(o(r),k(r),r.o.add(n)),this},t.delete=function(n){if(!this.has(n))return!1;var r=this[Q];return u(r),o(r),k(r),r.o.delete(n)||!!r.p.has(n)&&r.o.delete(r.p.get(n))},t.clear=function(){var n=this[Q];u(n),p(n).size&&(o(n),k(n),n.o.clear())},t.values=function(){var n=this[Q];return u(n),o(n),n.o.values()},t.entries=function(){var n=this[Q];return u(n),o(n),n.o.entries()},t.keys=function(){return this.values()},t[V]=function(){return this.values()},t.forEach=function(n,r){for(var t=this.values(),e=t.next();!e.done;)n.call(r,e.value,e.value,this),e=t.next()},n}();m(\"MapSet\",{F:function(n,r){return new f(n,r)},T:function(n,r){return new c(n,r)}})}function J(){F(),C(),T()}function K(n){return n}function $(n){return n}var G,U,W=\"undefined\"!=typeof Symbol&&\"symbol\"==typeof Symbol(\"x\"),X=\"undefined\"!=typeof Map,q=\"undefined\"!=typeof Set,B=\"undefined\"!=typeof Proxy&&void 0!==Proxy.revocable&&\"undefined\"!=typeof Reflect,H=W?Symbol.for(\"immer-nothing\"):((G={})[\"immer-nothing\"]=!0,G),L=W?Symbol.for(\"immer-draftable\"):\"__$immer_draftable\",Q=W?Symbol.for(\"immer-state\"):\"__$immer_state\",V=\"undefined\"!=typeof Symbol&&Symbol.iterator||\"@@iterator\",Y={0:\"Illegal state\",1:\"Immer drafts cannot have computed properties\",2:\"This object has been frozen and should not be mutated\",3:function(n){return\"Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? \"+n},4:\"An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.\",5:\"Immer forbids circular references\",6:\"The first or second argument to `produce` must be a function\",7:\"The third argument to `produce` must be a function or undefined\",8:\"First argument to `createDraft` must be a plain object, an array, or an immerable object\",9:\"First argument to `finishDraft` must be a draft returned by `createDraft`\",10:\"The given draft is already finalized\",11:\"Object.defineProperty() cannot be used on an Immer draft\",12:\"Object.setPrototypeOf() cannot be used on an Immer draft\",13:\"Immer only supports deleting array indices\",14:\"Immer only supports setting array indices and the 'length' property\",15:function(n){return\"Cannot apply patch, path doesn't resolve: \"+n},16:'Sets cannot have \"replace\" patches.',17:function(n){return\"Unsupported patch operation: \"+n},18:function(n){return\"The plugin for '\"+n+\"' has not been loaded into Immer. To enable the plugin, import and call `enable\"+n+\"()` when initializing your application.\"},20:\"Cannot use proxies if Proxy, Proxy.revocable or Reflect are not available\",21:function(n){return\"produce can only be called on things that are draftable: plain objects, arrays, Map, Set or classes that are marked with '[immerable]: true'. Got '\"+n+\"'\"},22:function(n){return\"'current' expects a draft, got: \"+n},23:function(n){return\"'original' expects a draft, got: \"+n},24:\"Patching reserved attributes like __proto__, prototype and constructor is not allowed\"},Z=\"\"+Object.prototype.constructor,nn=\"undefined\"!=typeof Reflect&&Reflect.ownKeys?Reflect.ownKeys:void 0!==Object.getOwnPropertySymbols?function(n){return Object.getOwnPropertyNames(n).concat(Object.getOwnPropertySymbols(n))}:Object.getOwnPropertyNames,rn=Object.getOwnPropertyDescriptors||function(n){var r={};return nn(n).forEach((function(t){r[t]=Object.getOwnPropertyDescriptor(n,t)})),r},tn={},en={get:function(n,r){if(r===Q)return n;var e=p(n);if(!u(e,r))return function(n,r,t){var e,i=I(r,t);return i?\"value\"in i?i.value:null===(e=i.get)||void 0===e?void 0:e.call(n.k):void 0}(n,e,r);var i=e[r];return n.I||!t(i)?i:i===z(n.t,r)?(E(n),n.o[r]=N(n.A.h,i,n)):i},has:function(n,r){return r in p(n)},ownKeys:function(n){return Reflect.ownKeys(p(n))},set:function(n,r,t){var e=I(p(n),r);if(null==e?void 0:e.set)return e.set.call(n.k,t),!0;if(!n.P){var i=z(p(n),r),o=null==i?void 0:i[Q];if(o&&o.t===t)return n.o[r]=t,n.R[r]=!1,!0;if(c(t,i)&&(void 0!==t||u(n.t,r)))return!0;E(n),k(n)}return n.o[r]===t&&(void 0!==t||r in n.o)||Number.isNaN(t)&&Number.isNaN(n.o[r])||(n.o[r]=t,n.R[r]=!0),!0},deleteProperty:function(n,r){return void 0!==z(n.t,r)||r in n.t?(n.R[r]=!1,E(n),k(n)):delete n.R[r],n.o&&delete n.o[r],!0},getOwnPropertyDescriptor:function(n,r){var t=p(n),e=Reflect.getOwnPropertyDescriptor(t,r);return e?{writable:!0,configurable:1!==n.i||\"length\"!==r,enumerable:e.enumerable,value:t[r]}:e},defineProperty:function(){n(11)},getPrototypeOf:function(n){return Object.getPrototypeOf(n.t)},setPrototypeOf:function(){n(12)}},on={};i(en,(function(n,r){on[n]=function(){return arguments[0]=arguments[0][0],r.apply(this,arguments)}})),on.deleteProperty=function(r,t){return\"production\"!==process.env.NODE_ENV&&isNaN(parseInt(t))&&n(13),on.set.call(this,r,t,void 0)},on.set=function(r,t,e){return\"production\"!==process.env.NODE_ENV&&\"length\"!==t&&isNaN(parseInt(t))&&n(14),en.set.call(this,r[0],t,e,r[0])};var un=function(){function e(r){var e=this;this.O=B,this.D=!0,this.produce=function(r,i,o){if(\"function\"==typeof r&&\"function\"!=typeof i){var u=i;i=r;var a=e;return function(n){var r=this;void 0===n&&(n=u);for(var t=arguments.length,e=Array(t>1?t-1:0),o=1;o<t;o++)e[o-1]=arguments[o];return a.produce(n,(function(n){var t;return(t=i).call.apply(t,[r,n].concat(e))}))}}var f;if(\"function\"!=typeof i&&n(6),void 0!==o&&\"function\"!=typeof o&&n(7),t(r)){var c=w(e),s=N(e,r,void 0),v=!0;try{f=i(s),v=!1}finally{v?g(c):O(c)}return\"undefined\"!=typeof Promise&&f instanceof Promise?f.then((function(n){return j(c,o),P(n,c)}),(function(n){throw g(c),n})):(j(c,o),P(f,c))}if(!r||\"object\"!=typeof r){if(void 0===(f=i(r))&&(f=r),f===H&&(f=void 0),e.D&&d(f,!0),o){var p=[],l=[];b(\"Patches\").M(r,f,p,l),o(p,l)}return f}n(21,r)},this.produceWithPatches=function(n,r){if(\"function\"==typeof n)return function(r){for(var t=arguments.length,i=Array(t>1?t-1:0),o=1;o<t;o++)i[o-1]=arguments[o];return e.produceWithPatches(r,(function(r){return n.apply(void 0,[r].concat(i))}))};var t,i,o=e.produce(n,r,(function(n,r){t=n,i=r}));return\"undefined\"!=typeof Promise&&o instanceof Promise?o.then((function(n){return[n,t,i]})):[o,t,i]},\"boolean\"==typeof(null==r?void 0:r.useProxies)&&this.setUseProxies(r.useProxies),\"boolean\"==typeof(null==r?void 0:r.autoFreeze)&&this.setAutoFreeze(r.autoFreeze)}var i=e.prototype;return i.createDraft=function(e){t(e)||n(8),r(e)&&(e=R(e));var i=w(this),o=N(this,e,void 0);return o[Q].C=!0,O(i),o},i.finishDraft=function(r,t){var e=r&&r[Q];\"production\"!==process.env.NODE_ENV&&(e&&e.C||n(9),e.I&&n(10));var i=e.A;return j(i,t),P(void 0,i)},i.setAutoFreeze=function(n){this.D=n},i.setUseProxies=function(r){r&&!B&&n(20),this.O=r},i.applyPatches=function(n,t){var e;for(e=t.length-1;e>=0;e--){var i=t[e];if(0===i.path.length&&\"replace\"===i.op){n=i.value;break}}e>-1&&(t=t.slice(e+1));var o=b(\"Patches\").$;return r(n)?o(n,t):this.produce(n,(function(n){return o(n,t)}))},e}(),an=new un,fn=an.produce,cn=an.produceWithPatches.bind(an),sn=an.setAutoFreeze.bind(an),vn=an.setUseProxies.bind(an),pn=an.applyPatches.bind(an),ln=an.createDraft.bind(an),dn=an.finishDraft.bind(an);export default fn;export{un as Immer,pn as applyPatches,K as castDraft,$ as castImmutable,ln as createDraft,R as current,J as enableAllPlugins,F as enableES5,C as enableMapSet,T as enablePatches,dn as finishDraft,d as freeze,L as immerable,r as isDraft,t as isDraftable,H as nothing,e as original,fn as produce,cn as produceWithPatches,sn as setAutoFreeze,vn as setUseProxies};\n//# sourceMappingURL=immer.esm.js.map\n","import { produce } from 'immer';\n\nconst immerImpl = (initializer) => (set, get, store) => {\n store.setState = (updater, replace, ...a) => {\n const nextState = typeof updater === \"function\" ? produce(updater) : updater;\n return set(nextState, replace, ...a);\n };\n return initializer(store.setState, get, store);\n};\nconst immer = immerImpl;\n\nexport { immer };\n","const createStoreImpl = (createState) => {\n let state;\n const listeners = /* @__PURE__ */ new Set();\n const setState = (partial, replace) => {\n const nextState = typeof partial === \"function\" ? partial(state) : partial;\n if (!Object.is(nextState, state)) {\n const previousState = state;\n state = (replace != null ? replace : typeof nextState !== \"object\") ? nextState : Object.assign({}, state, nextState);\n listeners.forEach((listener) => listener(state, previousState));\n }\n };\n const getState = () => state;\n const subscribe = (listener) => {\n listeners.add(listener);\n return () => listeners.delete(listener);\n };\n const destroy = () => {\n if ((import.meta.env ? import.meta.env.MODE : void 0) !== \"production\") {\n console.warn(\n \"[DEPRECATED] The `destroy` method will be unsupported in a future version. Instead use unsubscribe function returned by subscribe. Everything will be garbage-collected if store is garbage-collected.\"\n );\n }\n listeners.clear();\n };\n const api = { setState, getState, subscribe, destroy };\n state = createState(setState, getState, api);\n return api;\n};\nconst createStore = (createState) => createState ? createStoreImpl(createState) : createStoreImpl;\nvar vanilla = (createState) => {\n if ((import.meta.env ? import.meta.env.MODE : void 0) !== \"production\") {\n console.warn(\n \"[DEPRECATED] Default export is deprecated. Instead use import { createStore } from 'zustand/vanilla'.\"\n );\n }\n return createStore(createState);\n};\n\nexport { createStore, vanilla as default };\n","/**\n * @license React\n * use-sync-external-store-shim.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var e=require(\"react\");function h(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}var k=\"function\"===typeof Object.is?Object.is:h,l=e.useState,m=e.useEffect,n=e.useLayoutEffect,p=e.useDebugValue;function q(a,b){var d=b(),f=l({inst:{value:d,getSnapshot:b}}),c=f[0].inst,g=f[1];n(function(){c.value=d;c.getSnapshot=b;r(c)&&g({inst:c})},[a,d,b]);m(function(){r(c)&&g({inst:c});return a(function(){r(c)&&g({inst:c})})},[a]);p(d);return d}\nfunction r(a){var b=a.getSnapshot;a=a.value;try{var d=b();return!k(a,d)}catch(f){return!0}}function t(a,b){return b()}var u=\"undefined\"===typeof window||\"undefined\"===typeof window.document||\"undefined\"===typeof window.document.createElement?t:q;exports.useSyncExternalStore=void 0!==e.useSyncExternalStore?e.useSyncExternalStore:u;\n","/**\n * @license React\n * use-sync-external-store-shim.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nif (process.env.NODE_ENV !== \"production\") {\n (function() {\n\n 'use strict';\n\n/* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\nif (\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== 'undefined' &&\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart ===\n 'function'\n) {\n __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(new Error());\n}\n var React = require('react');\n\nvar ReactSharedInternals = React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;\n\nfunction error(format) {\n {\n {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n printWarning('error', format, args);\n }\n }\n}\n\nfunction printWarning(level, format, args) {\n // When changing this logic, you might want to also\n // update consoleWithStackDev.www.js as well.\n {\n var ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame;\n var stack = ReactDebugCurrentFrame.getStackAddendum();\n\n if (stack !== '') {\n format += '%s';\n args = args.concat([stack]);\n } // eslint-disable-next-line react-internal/safe-string-coercion\n\n\n var argsWithFormat = args.map(function (item) {\n return String(item);\n }); // Careful: RN currently depends on this prefix\n\n argsWithFormat.unshift('Warning: ' + format); // We intentionally don't use spread (or .apply) directly because it\n // breaks IE9: https://github.com/facebook/react/issues/13610\n // eslint-disable-next-line react-internal/no-production-logging\n\n Function.prototype.apply.call(console[level], console, argsWithFormat);\n }\n}\n\n/**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\nfunction is(x, y) {\n return x === y && (x !== 0 || 1 / x === 1 / y) || x !== x && y !== y // eslint-disable-line no-self-compare\n ;\n}\n\nvar objectIs = typeof Object.is === 'function' ? Object.is : is;\n\n// dispatch for CommonJS interop named imports.\n\nvar useState = React.useState,\n useEffect = React.useEffect,\n useLayoutEffect = React.useLayoutEffect,\n useDebugValue = React.useDebugValue;\nvar didWarnOld18Alpha = false;\nvar didWarnUncachedGetSnapshot = false; // Disclaimer: This shim breaks many of the rules of React, and only works\n// because of a very particular set of implementation details and assumptions\n// -- change any one of them and it will break. The most important assumption\n// is that updates are always synchronous, because concurrent rendering is\n// only available in versions of React that also have a built-in\n// useSyncExternalStore API. And we only use this shim when the built-in API\n// does not exist.\n//\n// Do not assume that the clever hacks used by this hook also work in general.\n// The point of this shim is to replace the need for hacks by other libraries.\n\nfunction useSyncExternalStore(subscribe, getSnapshot, // Note: The shim does not use getServerSnapshot, because pre-18 versions of\n// React do not expose a way to check if we're hydrating. So users of the shim\n// will need to track that themselves and return the correct value\n// from `getSnapshot`.\ngetServerSnapshot) {\n {\n if (!didWarnOld18Alpha) {\n if (React.startTransition !== undefined) {\n didWarnOld18Alpha = true;\n\n error('You are using an outdated, pre-release alpha of React 18 that ' + 'does not support useSyncExternalStore. The ' + 'use-sync-external-store shim will not work correctly. Upgrade ' + 'to a newer pre-release.');\n }\n }\n } // Read the current snapshot from the store on every render. Again, this\n // breaks the rules of React, and only works here because of specific\n // implementation details, most importantly that updates are\n // always synchronous.\n\n\n var value = getSnapshot();\n\n {\n if (!didWarnUncachedGetSnapshot) {\n var cachedValue = getSnapshot();\n\n if (!objectIs(value, cachedValue)) {\n error('The result of getSnapshot should be cached to avoid an infinite loop');\n\n didWarnUncachedGetSnapshot = true;\n }\n }\n } // Because updates are synchronous, we don't queue them. Instead we force a\n // re-render whenever the subscribed state changes by updating an some\n // arbitrary useState hook. Then, during render, we call getSnapshot to read\n // the current value.\n //\n // Because we don't actually use the state returned by the useState hook, we\n // can save a bit of memory by storing other stuff in that slot.\n //\n // To implement the early bailout, we need to track some things on a mutable\n // object. Usually, we would put that in a useRef hook, but we can stash it in\n // our useState hook instead.\n //\n // To force a re-render, we call forceUpdate({inst}). That works because the\n // new object always fails an equality check.\n\n\n var _useState = useState({\n inst: {\n value: value,\n getSnapshot: getSnapshot\n }\n }),\n inst = _useState[0].inst,\n forceUpdate = _useState[1]; // Track the latest getSnapshot function with a ref. This needs to be updated\n // in the layout phase so we can access it during the tearing check that\n // happens on subscribe.\n\n\n useLayoutEffect(function () {\n inst.value = value;\n inst.getSnapshot = getSnapshot; // Whenever getSnapshot or subscribe changes, we need to check in the\n // commit phase if there was an interleaved mutation. In concurrent mode\n // this can happen all the time, but even in synchronous mode, an earlier\n // effect may have mutated the store.\n\n if (checkIfSnapshotChanged(inst)) {\n // Force a re-render.\n forceUpdate({\n inst: inst\n });\n }\n }, [subscribe, value, getSnapshot]);\n useEffect(function () {\n // Check for changes right before subscribing. Subsequent changes will be\n // detected in the subscription handler.\n if (checkIfSnapshotChanged(inst)) {\n // Force a re-render.\n forceUpdate({\n inst: inst\n });\n }\n\n var handleStoreChange = function () {\n // TODO: Because there is no cross-renderer API for batching updates, it's\n // up to the consumer of this library to wrap their subscription event\n // with unstable_batchedUpdates. Should we try to detect when this isn't\n // the case and print a warning in development?\n // The store changed. Check if the snapshot changed since the last time we\n // read from the store.\n if (checkIfSnapshotChanged(inst)) {\n // Force a re-render.\n forceUpdate({\n inst: inst\n });\n }\n }; // Subscribe to the store and return a clean-up function.\n\n\n return subscribe(handleStoreChange);\n }, [subscribe]);\n useDebugValue(value);\n return value;\n}\n\nfunction checkIfSnapshotChanged(inst) {\n var latestGetSnapshot = inst.getSnapshot;\n var prevValue = inst.value;\n\n try {\n var nextValue = latestGetSnapshot();\n return !objectIs(prevValue, nextValue);\n } catch (error) {\n return true;\n }\n}\n\nfunction useSyncExternalStore$1(subscribe, getSnapshot, getServerSnapshot) {\n // Note: The shim does not use getServerSnapshot, because pre-18 versions of\n // React do not expose a way to check if we're hydrating. So users of the shim\n // will need to track that themselves and return the correct value\n // from `getSnapshot`.\n return getSnapshot();\n}\n\nvar canUseDOM = !!(typeof window !== 'undefined' && typeof window.document !== 'undefined' && typeof window.document.createElement !== 'undefined');\n\nvar isServerEnvironment = !canUseDOM;\n\nvar shim = isServerEnvironment ? useSyncExternalStore$1 : useSyncExternalStore;\nvar useSyncExternalStore$2 = React.useSyncExternalStore !== undefined ? React.useSyncExternalStore : shim;\n\nexports.useSyncExternalStore = useSyncExternalStore$2;\n /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\nif (\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== 'undefined' &&\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop ===\n 'function'\n) {\n __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(new Error());\n}\n \n })();\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('../cjs/use-sync-external-store-shim.production.min.js');\n} else {\n module.exports = require('../cjs/use-sync-external-store-shim.development.js');\n}\n","/**\n * @license React\n * use-sync-external-store-shim/with-selector.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var h=require(\"react\"),n=require(\"use-sync-external-store/shim\");function p(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}var q=\"function\"===typeof Object.is?Object.is:p,r=n.useSyncExternalStore,t=h.useRef,u=h.useEffect,v=h.useMemo,w=h.useDebugValue;\nexports.useSyncExternalStoreWithSelector=function(a,b,e,l,g){var c=t(null);if(null===c.current){var f={hasValue:!1,value:null};c.current=f}else f=c.current;c=v(function(){function a(a){if(!c){c=!0;d=a;a=l(a);if(void 0!==g&&f.hasValue){var b=f.value;if(g(b,a))return k=b}return k=a}b=k;if(q(d,a))return b;var e=l(a);if(void 0!==g&&g(b,e))return b;d=a;return k=e}var c=!1,d,k,m=void 0===e?null:e;return[function(){return a(b())},null===m?void 0:function(){return a(m())}]},[b,e,l,g]);var d=r(a,c[0],c[1]);\nu(function(){f.hasValue=!0;f.value=d},[d]);w(d);return d};\n","/**\n * @license React\n * use-sync-external-store-shim/with-selector.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nif (process.env.NODE_ENV !== \"production\") {\n (function() {\n\n 'use strict';\n\n/* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\nif (\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== 'undefined' &&\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart ===\n 'function'\n) {\n __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(new Error());\n}\n var React = require('react');\nvar shim = require('use-sync-external-store/shim');\n\n/**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\nfunction is(x, y) {\n return x === y && (x !== 0 || 1 / x === 1 / y) || x !== x && y !== y // eslint-disable-line no-self-compare\n ;\n}\n\nvar objectIs = typeof Object.is === 'function' ? Object.is : is;\n\nvar useSyncExternalStore = shim.useSyncExternalStore;\n\n// for CommonJS interop.\n\nvar useRef = React.useRef,\n useEffect = React.useEffect,\n useMemo = React.useMemo,\n useDebugValue = React.useDebugValue; // Same as useSyncExternalStore, but supports selector and isEqual arguments.\n\nfunction useSyncExternalStoreWithSelector(subscribe, getSnapshot, getServerSnapshot, selector, isEqual) {\n // Use this to track the rendered snapshot.\n var instRef = useRef(null);\n var inst;\n\n if (instRef.current === null) {\n inst = {\n hasValue: false,\n value: null\n };\n instRef.current = inst;\n } else {\n inst = instRef.current;\n }\n\n var _useMemo = useMemo(function () {\n // Track the memoized state using closure variables that are local to this\n // memoized instance of a getSnapshot function. Intentionally not using a\n // useRef hook, because that state would be shared across all concurrent\n // copies of the hook/component.\n var hasMemo = false;\n var memoizedSnapshot;\n var memoizedSelection;\n\n var memoizedSelector = function (nextSnapshot) {\n if (!hasMemo) {\n // The first time the hook is called, there is no memoized result.\n hasMemo = true;\n memoizedSnapshot = nextSnapshot;\n\n var _nextSelection = selector(nextSnapshot);\n\n if (isEqual !== undefined) {\n // Even if the selector has changed, the currently rendered selection\n // may be equal to the new selection. We should attempt to reuse the\n // current value if possible, to preserve downstream memoizations.\n if (inst.hasValue) {\n var currentSelection = inst.value;\n\n if (isEqual(currentSelection, _nextSelection)) {\n memoizedSelection = currentSelection;\n return currentSelection;\n }\n }\n }\n\n memoizedSelection = _nextSelection;\n return _nextSelection;\n } // We may be able to reuse the previous invocation's result.\n\n\n // We may be able to reuse the previous invocation's result.\n var prevSnapshot = memoizedSnapshot;\n var prevSelection = memoizedSelection;\n\n if (objectIs(prevSnapshot, nextSnapshot)) {\n // The snapshot is the same as last time. Reuse the previous selection.\n return prevSelection;\n } // The snapshot has changed, so we need to compute a new selection.\n\n\n // The snapshot has changed, so we need to compute a new selection.\n var nextSelection = selector(nextSnapshot); // If a custom isEqual function is provided, use that to check if the data\n // has changed. If it hasn't, return the previous selection. That signals\n // to React that the selections are conceptually equal, and we can bail\n // out of rendering.\n\n // If a custom isEqual function is provided, use that to check if the data\n // has changed. If it hasn't, return the previous selection. That signals\n // to React that the selections are conceptually equal, and we can bail\n // out of rendering.\n if (isEqual !== undefined && isEqual(prevSelection, nextSelection)) {\n return prevSelection;\n }\n\n memoizedSnapshot = nextSnapshot;\n memoizedSelection = nextSelection;\n return nextSelection;\n }; // Assigning this to a constant so that Flow knows it can't change.\n\n\n // Assigning this to a constant so that Flow knows it can't change.\n var maybeGetServerSnapshot = getServerSnapshot === undefined ? null : getServerSnapshot;\n\n var getSnapshotWithSelector = function () {\n return memoizedSelector(getSnapshot());\n };\n\n var getServerSnapshotWithSelector = maybeGetServerSnapshot === null ? undefined : function () {\n return memoizedSelector(maybeGetServerSnapshot());\n };\n return [getSnapshotWithSelector, getServerSnapshotWithSelector];\n }, [getSnapshot, getServerSnapshot, selector, isEqual]),\n getSelection = _useMemo[0],\n getServerSelection = _useMemo[1];\n\n var value = useSyncExternalStore(subscribe, getSelection, getServerSelection);\n useEffect(function () {\n inst.hasValue = true;\n inst.value = value;\n }, [value]);\n useDebugValue(value);\n return value;\n}\n\nexports.useSyncExternalStoreWithSelector = useSyncExternalStoreWithSelector;\n /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\nif (\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== 'undefined' &&\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop ===\n 'function'\n) {\n __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(new Error());\n}\n \n })();\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('../cjs/use-sync-external-store-shim/with-selector.production.min.js');\n} else {\n module.exports = require('../cjs/use-sync-external-store-shim/with-selector.development.js');\n}\n","import { createStore } from 'zustand/vanilla';\nexport * from 'zustand/vanilla';\nimport { useDebugValue } from 'react';\nimport useSyncExternalStoreExports from 'use-sync-external-store/shim/with-selector.js';\n\nconst { useSyncExternalStoreWithSelector } = useSyncExternalStoreExports;\nfunction useStore(api, selector = api.getState, equalityFn) {\n const slice = useSyncExternalStoreWithSelector(\n api.subscribe,\n api.getState,\n api.getServerState || api.getState,\n selector,\n equalityFn\n );\n useDebugValue(slice);\n return slice;\n}\nconst createImpl = (createState) => {\n if ((import.meta.env ? import.meta.env.MODE : void 0) !== \"production\" && typeof createState !== \"function\") {\n console.warn(\n \"[DEPRECATED] Passing a vanilla store will be unsupported in a future version. Instead use `import { useStore } from 'zustand'`.\"\n );\n }\n const api = typeof createState === \"function\" ? createStore(createState) : createState;\n const useBoundStore = (selector, equalityFn) => useStore(api, selector, equalityFn);\n Object.assign(useBoundStore, api);\n return useBoundStore;\n};\nconst create = (createState) => createState ? createImpl(createState) : createImpl;\nvar react = (createState) => {\n if ((import.meta.env ? import.meta.env.MODE : void 0) !== \"production\") {\n console.warn(\n \"[DEPRECATED] Default export is deprecated. Instead use `import { create } from 'zustand'`.\"\n );\n }\n return create(createState);\n};\n\nexport { create, react as default, useStore };\n","const reduxImpl = (reducer, initial) => (set, _get, api) => {\n api.dispatch = (action) => {\n set((state) => reducer(state, action), false, action);\n return action;\n };\n api.dispatchFromDevtools = true;\n return { dispatch: (...a) => api.dispatch(...a), ...initial };\n};\nconst redux = reduxImpl;\n\nconst trackedConnections = /* @__PURE__ */ new Map();\nconst getTrackedConnectionState = (name) => {\n const api = trackedConnections.get(name);\n if (!api)\n return {};\n return Object.fromEntries(\n Object.entries(api.stores).map(([key, api2]) => [key, api2.getState()])\n );\n};\nconst extractConnectionInformation = (store, extensionConnector, options) => {\n if (store === void 0) {\n return {\n type: \"untracked\",\n connection: extensionConnector.connect(options)\n };\n }\n const existingConnection = trackedConnections.get(options.name);\n if (existingConnection) {\n return { type: \"tracked\", store, ...existingConnection };\n }\n const newConnection = {\n connection: extensionConnector.connect(options),\n stores: {}\n };\n trackedConnections.set(options.name, newConnection);\n return { type: \"tracked\", store, ...newConnection };\n};\nconst devtoolsImpl = (fn, devtoolsOptions = {}) => (set, get, api) => {\n const { enabled, anonymousActionType, store, ...options } = devtoolsOptions;\n let extensionConnector;\n try {\n extensionConnector = (enabled != null ? enabled : (import.meta.env ? import.meta.env.MODE : void 0) !== \"production\") && window.__REDUX_DEVTOOLS_EXTENSION__;\n } catch (e) {\n }\n if (!extensionConnector) {\n if ((import.meta.env ? import.meta.env.MODE : void 0) !== \"production\" && enabled) {\n console.warn(\n \"[zustand devtools middleware] Please install/enable Redux devtools extension\"\n );\n }\n return fn(set, get, api);\n }\n const { connection, ...connectionInformation } = extractConnectionInformation(store, extensionConnector, options);\n let isRecording = true;\n api.setState = (state, replace, nameOrAction) => {\n const r = set(state, replace);\n if (!isRecording)\n return r;\n const action = nameOrAction === void 0 ? { type: anonymousActionType || \"anonymous\" } : typeof nameOrAction === \"string\" ? { type: nameOrAction } : nameOrAction;\n if (store === void 0) {\n connection == null ? void 0 : connection.send(action, get());\n return r;\n }\n connection == null ? void 0 : connection.send(\n {\n ...action,\n type: `${store}/${action.type}`\n },\n {\n ...getTrackedConnectionState(options.name),\n [store]: api.getState()\n }\n );\n return r;\n };\n const setStateFromDevtools = (...a) => {\n const originalIsRecording = isRecording;\n isRecording = false;\n set(...a);\n isRecording = originalIsRecording;\n };\n const initialState = fn(api.setState, get, api);\n if (connectionInformation.type === \"untracked\") {\n connection == null ? void 0 : connection.init(initialState);\n } else {\n connectionInformation.stores[connectionInformation.store] = api;\n connection == null ? void 0 : connection.init(\n Object.fromEntries(\n Object.entries(connectionInformation.stores).map(([key, store2]) => [\n key,\n key === connectionInformation.store ? initialState : store2.getState()\n ])\n )\n );\n }\n if (api.dispatchFromDevtools && typeof api.dispatch === \"function\") {\n let didWarnAboutReservedActionType = false;\n const originalDispatch = api.dispatch;\n api.dispatch = (...a) => {\n if ((import.meta.env ? import.meta.env.MODE : void 0) !== \"production\" && a[0].type === \"__setState\" && !didWarnAboutReservedActionType) {\n console.warn(\n '[zustand devtools middleware] \"__setState\" action type is reserved to set state from the devtools. Avoid using it.'\n );\n didWarnAboutReservedActionType = true;\n }\n originalDispatch(...a);\n };\n }\n connection.subscribe((message) => {\n var _a;\n switch (message.type) {\n case \"ACTION\":\n if (typeof message.payload !== \"string\") {\n console.error(\n \"[zustand devtools middleware] Unsupported action format\"\n );\n return;\n }\n return parseJsonThen(\n message.payload,\n (action) => {\n if (action.type === \"__setState\") {\n if (store === void 0) {\n setStateFromDevtools(action.state);\n return;\n }\n if (Object.keys(action.state).length !== 1) {\n console.error(\n `\n [zustand devtools middleware] Unsupported __setState action format. \n When using 'store' option in devtools(), the 'state' should have only one key, which is a value of 'store' that was passed in devtools(),\n and value of this only key should be a state object. Example: { \"type\": \"__setState\", \"state\": { \"abc123Store\": { \"foo\": \"bar\" } } }\n `\n );\n }\n const stateFromDevtools = action.state[store];\n if (stateFromDevtools === void 0 || stateFromDevtools === null) {\n return;\n }\n if (JSON.stringify(api.getState()) !== JSON.stringify(stateFromDevtools)) {\n setStateFromDevtools(stateFromDevtools);\n }\n return;\n }\n if (!api.dispatchFromDevtools)\n return;\n if (typeof api.dispatch !== \"function\")\n return;\n api.dispatch(action);\n }\n );\n case \"DISPATCH\":\n switch (message.payload.type) {\n case \"RESET\":\n setStateFromDevtools(initialState);\n if (store === void 0) {\n return connection == null ? void 0 : connection.init(api.getState());\n }\n return connection == null ? void 0 : connection.init(getTrackedConnectionState(options.name));\n case \"COMMIT\":\n if (store === void 0) {\n connection == null ? void 0 : connection.init(api.getState());\n return;\n }\n return connection == null ? void 0 : connection.init(getTrackedConnectionState(options.name));\n case \"ROLLBACK\":\n return parseJsonThen(message.state, (state) => {\n if (store === void 0) {\n setStateFromDevtools(state);\n connection == null ? void 0 : connection.init(api.getState());\n return;\n }\n setStateFromDevtools(state[store]);\n connection == null ? void 0 : connection.init(getTrackedConnectionState(options.name));\n });\n case \"JUMP_TO_STATE\":\n case \"JUMP_TO_ACTION\":\n return parseJsonThen(message.state, (state) => {\n if (store === void 0) {\n setStateFromDevtools(state);\n return;\n }\n if (JSON.stringify(api.getState()) !== JSON.stringify(state[store])) {\n setStateFromDevtools(state[store]);\n }\n });\n case \"IMPORT_STATE\": {\n const { nextLiftedState } = message.payload;\n const lastComputedState = (_a = nextLiftedState.computedStates.slice(-1)[0]) == null ? void 0 : _a.state;\n if (!lastComputedState)\n return;\n if (store === void 0) {\n setStateFromDevtools(lastComputedState);\n } else {\n setStateFromDevtools(lastComputedState[store]);\n }\n connection == null ? void 0 : connection.send(\n null,\n // FIXME no-any\n nextLiftedState\n );\n return;\n }\n case \"PAUSE_RECORDING\":\n return isRecording = !isRecording;\n }\n return;\n }\n });\n return initialState;\n};\nconst devtools = devtoolsImpl;\nconst parseJsonThen = (stringified, f) => {\n let parsed;\n try {\n parsed = JSON.parse(stringified);\n } catch (e) {\n console.error(\n \"[zustand devtools middleware] Could not parse the received json\",\n e\n );\n }\n if (parsed !== void 0)\n f(parsed);\n};\n\nconst subscribeWithSelectorImpl = (fn) => (set, get, api) => {\n const origSubscribe = api.subscribe;\n api.subscribe = (selector, optListener, options) => {\n let listener = selector;\n if (optListener) {\n const equalityFn = (options == null ? void 0 : options.equalityFn) || Object.is;\n let currentSlice = selector(api.getState());\n listener = (state) => {\n const nextSlice = selector(state);\n if (!equalityFn(currentSlice, nextSlice)) {\n const previousSlice = currentSlice;\n optListener(currentSlice = nextSlice, previousSlice);\n }\n };\n if (options == null ? void 0 : options.fireImmediately) {\n optListener(currentSlice, currentSlice);\n }\n }\n return origSubscribe(listener);\n };\n const initialState = fn(set, get, api);\n return initialState;\n};\nconst subscribeWithSelector = subscribeWithSelectorImpl;\n\nconst combine = (initialState, create) => (...a) => Object.assign({}, initialState, create(...a));\n\nfunction createJSONStorage(getStorage, options) {\n let storage;\n try {\n storage = getStorage();\n } catch (e) {\n return;\n }\n const persistStorage = {\n getItem: (name) => {\n var _a;\n const parse = (str2) => {\n if (str2 === null) {\n return null;\n }\n return JSON.parse(str2, options == null ? void 0 : options.reviver);\n };\n const str = (_a = storage.getItem(name)) != null ? _a : null;\n if (str instanceof Promise) {\n return str.then(parse);\n }\n return parse(str);\n },\n setItem: (name, newValue) => storage.setItem(\n name,\n JSON.stringify(newValue, options == null ? void 0 : options.replacer)\n ),\n removeItem: (name) => storage.removeItem(name)\n };\n return persistStorage;\n}\nconst toThenable = (fn) => (input) => {\n try {\n const result = fn(input);\n if (result instanceof Promise) {\n return result;\n }\n return {\n then(onFulfilled) {\n return toThenable(onFulfilled)(result);\n },\n catch(_onRejected) {\n return this;\n }\n };\n } catch (e) {\n return {\n then(_onFulfilled) {\n return this;\n },\n catch(onRejected) {\n return toThenable(onRejected)(e);\n }\n };\n }\n};\nconst oldImpl = (config, baseOptions) => (set, get, api) => {\n let options = {\n getStorage: () => localStorage,\n serialize: JSON.stringify,\n deserialize: JSON.parse,\n partialize: (state) => state,\n version: 0,\n merge: (persistedState, currentState) => ({\n ...currentState,\n ...persistedState\n }),\n ...baseOptions\n };\n let hasHydrated = false;\n const hydrationListeners = /* @__PURE__ */ new Set();\n const finishHydrationListeners = /* @__PURE__ */ new Set();\n let storage;\n try {\n storage = options.getStorage();\n } catch (e) {\n }\n if (!storage) {\n return config(\n (...args) => {\n console.warn(\n `[zustand persist middleware] Unable to update item '${options.name}', the given storage is currently unavailable.`\n );\n set(...args);\n },\n get,\n api\n );\n }\n const thenableSerialize = toThenable(options.serialize);\n const setItem = () => {\n const state = options.partialize({ ...get() });\n let errorInSync;\n const thenable = thenableSerialize({ state, version: options.version }).then(\n (serializedValue) => storage.setItem(options.name, serializedValue)\n ).catch((e) => {\n errorInSync = e;\n });\n if (errorInSync) {\n throw errorInSync;\n }\n return thenable;\n };\n const savedSetState = api.setState;\n api.setState = (state, replace) => {\n savedSetState(state, replace);\n void setItem();\n };\n const configResult = config(\n (...args) => {\n set(...args);\n void setItem();\n },\n get,\n api\n );\n let stateFromStorage;\n const hydrate = () => {\n var _a;\n if (!storage)\n return;\n hasHydrated = false;\n hydrationListeners.forEach((cb) => cb(get()));\n const postRehydrationCallback = ((_a = options.onRehydrateStorage) == null ? void 0 : _a.call(options, get())) || void 0;\n return toThenable(storage.getItem.bind(storage))(options.name).then((storageValue) => {\n if (storageValue) {\n return options.deserialize(storageValue);\n }\n }).then((deserializedStorageValue) => {\n if (deserializedStorageValue) {\n if (typeof deserializedStorageValue.version === \"number\" && deserializedStorageValue.version !== options.version) {\n if (options.migrate) {\n return options.migrate(\n deserializedStorageValue.state,\n deserializedStorageValue.version\n );\n }\n console.error(\n `State loaded from storage couldn't be migrated since no migrate function was provided`\n );\n } else {\n return deserializedStorageValue.state;\n }\n }\n }).then((migratedState) => {\n var _a2;\n stateFromStorage = options.merge(\n migratedState,\n (_a2 = get()) != null ? _a2 : configResult\n );\n set(stateFromStorage, true);\n return setItem();\n }).then(() => {\n postRehydrationCallback == null ? void 0 : postRehydrationCallback(stateFromStorage, void 0);\n hasHydrated = true;\n finishHydrationListeners.forEach((cb) => cb(stateFromStorage));\n }).catch((e) => {\n postRehydrationCallback == null ? void 0 : postRehydrationCallback(void 0, e);\n });\n };\n api.persist = {\n setOptions: (newOptions) => {\n options = {\n ...options,\n ...newOptions\n };\n if (newOptions.getStorage) {\n storage = newOptions.getStorage();\n }\n },\n clearStorage: () => {\n storage == null ? void 0 : storage.removeItem(options.name);\n },\n getOptions: () => options,\n rehydrate: () => hydrate(),\n hasHydrated: () => hasHydrated,\n onHydrate: (cb) => {\n hydrationListeners.add(cb);\n return () => {\n hydrationListeners.delete(cb);\n };\n },\n onFinishHydration: (cb) => {\n finishHydrationListeners.add(cb);\n return () => {\n finishHydrationListeners.delete(cb);\n };\n }\n };\n hydrate();\n return stateFromStorage || configResult;\n};\nconst newImpl = (config, baseOptions) => (set, get, api) => {\n let options = {\n storage: createJSONStorage(() => localStorage),\n partialize: (state) => state,\n version: 0,\n merge: (persistedState, currentState) => ({\n ...currentState,\n ...persistedState\n }),\n ...baseOptions\n };\n let hasHydrated = false;\n const hydrationListeners = /* @__PURE__ */ new Set();\n const finishHydrationListeners = /* @__PURE__ */ new Set();\n let storage = options.storage;\n if (!storage) {\n return config(\n (...args) => {\n console.warn(\n `[zustand persist middleware] Unable to update item '${options.name}', the given storage is currently unavailable.`\n );\n set(...args);\n },\n get,\n api\n );\n }\n const setItem = () => {\n const state = options.partialize({ ...get() });\n return storage.setItem(options.name, {\n state,\n version: options.version\n });\n };\n const savedSetState = api.setState;\n api.setState = (state, replace) => {\n savedSetState(state, replace);\n void setItem();\n };\n const configResult = config(\n (...args) => {\n set(...args);\n void setItem();\n },\n get,\n api\n );\n let stateFromStorage;\n const hydrate = () => {\n var _a, _b;\n if (!storage)\n return;\n hasHydrated = false;\n hydrationListeners.forEach((cb) => {\n var _a2;\n return cb((_a2 = get()) != null ? _a2 : configResult);\n });\n const postRehydrationCallback = ((_b = options.onRehydrateStorage) == null ? void 0 : _b.call(options, (_a = get()) != null ? _a : configResult)) || void 0;\n return toThenable(storage.getItem.bind(storage))(options.name).then((deserializedStorageValue) => {\n if (deserializedStorageValue) {\n if (typeof deserializedStorageValue.version === \"number\" && deserializedStorageValue.version !== options.version) {\n if (options.migrate) {\n return options.migrate(\n deserializedStorageValue.state,\n deserializedStorageValue.version\n );\n }\n console.error(\n `State loaded from storage couldn't be migrated since no migrate function was provided`\n );\n } else {\n return deserializedStorageValue.state;\n }\n }\n }).then((migratedState) => {\n var _a2;\n stateFromStorage = options.merge(\n migratedState,\n (_a2 = get()) != null ? _a2 : configResult\n );\n set(stateFromStorage, true);\n return setItem();\n }).then(() => {\n postRehydrationCallback == null ? void 0 : postRehydrationCallback(stateFromStorage, void 0);\n stateFromStorage = get();\n hasHydrated = true;\n finishHydrationListeners.forEach((cb) => cb(stateFromStorage));\n }).catch((e) => {\n postRehydrationCallback == null ? void 0 : postRehydrationCallback(void 0, e);\n });\n };\n api.persist = {\n setOptions: (newOptions) => {\n options = {\n ...options,\n ...newOptions\n };\n if (newOptions.storage) {\n storage = newOptions.storage;\n }\n },\n clearStorage: () => {\n storage == null ? void 0 : storage.removeItem(options.name);\n },\n getOptions: () => options,\n rehydrate: () => hydrate(),\n hasHydrated: () => hasHydrated,\n onHydrate: (cb) => {\n hydrationListeners.add(cb);\n return () => {\n hydrationListeners.delete(cb);\n };\n },\n onFinishHydration: (cb) => {\n finishHydrationListeners.add(cb);\n return () => {\n finishHydrationListeners.delete(cb);\n };\n }\n };\n if (!options.skipHydration) {\n hydrate();\n }\n return stateFromStorage || configResult;\n};\nconst persistImpl = (config, baseOptions) => {\n if (\"getStorage\" in baseOptions || \"serialize\" in baseOptions || \"deserialize\" in baseOptions) {\n if ((import.meta.env ? import.meta.env.MODE : void 0) !== \"production\") {\n console.warn(\n \"[DEPRECATED] `getStorage`, `serialize` and `deserialize` options are deprecated. Use `storage` option instead.\"\n );\n }\n return oldImpl(config, baseOptions);\n }\n return newImpl(config, baseOptions);\n};\nconst persist = persistImpl;\n\nexport { combine, createJSONStorage, devtools, persist, redux, subscribeWithSelector };\n","import { useState, useEffect } from 'react'\nimport { immer } from 'zustand/middleware/immer'\nimport { create } from 'zustand'\nimport { devtools, persist } from 'zustand/middleware'\nimport type { Account } from '../../types'\nimport { PROVIDER_ID } from '../../constants'\n\nexport const walletStoreSelector = (state: WalletStore) => ({\n accounts: state.accounts,\n activeAccount: state.activeAccount,\n setActiveAccount: state.setActiveAccount,\n clearActiveAccount: state.clearActiveAccount,\n addAccounts: state.addAccounts,\n removeAccounts: state.removeAccounts\n})\n\nexport type WalletStore = {\n accounts: Account[]\n activeAccount: Account | null | undefined\n setActiveAccount: (account: Account) => void\n clearActiveAccount: (id: PROVIDER_ID) => void\n addAccounts: (accounts: Account[]) => void\n removeAccounts: (providerId: PROVIDER_ID) => void\n}\n\nconst emptyState: WalletStore = {\n accounts: [],\n activeAccount: undefined,\n setActiveAccount: () => {\n return\n },\n clearActiveAccount: () => {\n return\n },\n addAccounts: () => {\n return\n },\n removeAccounts: () => {\n return\n }\n}\n\nexport const useWalletStore = create<WalletStore>()(\n immer(\n persist(\n devtools((set, _get) => ({\n accounts: [],\n activeAccount: null,\n setActiveAccount: (account: Account) => {\n set((state) => {\n state.activeAccount = account\n })\n },\n clearActiveAccount: (id: PROVIDER_ID) => {\n set((state) => {\n if (id === state.activeAccount?.providerId) state.activeAccount = null\n })\n },\n addAccounts: (accounts: Account[]) => {\n set((state) => {\n const uniqueAccounts = [...state.accounts, ...accounts].reduce<Account[]>(\n (uniqueAccounts, o) => {\n if (\n !uniqueAccounts.some(\n (obj) => obj.providerId === o.providerId && obj.address === o.address\n )\n ) {\n uniqueAccounts.push(o)\n }\n return uniqueAccounts\n },\n []\n )\n\n // Remove duplicates that occur when a user reconnects Pera wallet\n state.accounts = uniqueAccounts\n })\n },\n removeAccounts: (providerId: PROVIDER_ID) => {\n set((state) => {\n state.accounts = state.accounts.filter((account) => account.providerId !== providerId)\n })\n }\n })),\n {\n name: 'txnlab-use-wallet', // key in local storage\n version: 1 // increment to deprecate stored data\n }\n )\n )\n)\n\n// This a fix to ensure zustand never hydrates the store before React hydrates the page\n// otherwise it causes a mismatch between SSR and client render\n// see: https://github.com/pmndrs/zustand/issues/1145\nexport const useHydratedWalletStore = ((selector, compare) => {\n const store = useWalletStore(selector, compare)\n const [hydrated, setHydrated] = useState(false)\n\n useEffect(() => setHydrated(true), [])\n\n return hydrated ? store : selector(emptyState)\n}) as typeof useWalletStore\n","import { create } from 'zustand'\n\ntype DebugStore = {\n debug: boolean\n setDebug: (debug: boolean) => void\n}\n\nexport const useDebugStore = create<DebugStore>((set) => ({\n debug: false,\n setDebug: (debug: boolean) => set({ debug })\n}))\n","import { ProviderConfig, ProviderConfigMapping } from '../types'\nimport { useDebugStore } from '../store/index'\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const debugLog = (...args: any[]) => {\n const { debug } = useDebugStore.getState()\n\n if (debug) {\n console.log('%c[USE-WALLET]', 'color: #FF602E; font-weight: bold;', ...(args as unknown[]))\n }\n}\n\nexport const getProviderList = <T extends keyof ProviderConfigMapping>(\n providers: Array<T | ProviderConfig<T>>\n) => {\n return providers\n .map((provider) => {\n if (typeof provider === 'string') {\n return provider\n }\n\n return provider.id\n })\n .map((id) => id.toUpperCase())\n .join(', ')\n}\n","export const ICON =\n 'data:image/svg+xml;base64,' +\n 'PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIGlkPSJMYXllcl8xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxNzcgMTg3Ij48cmVjdCB4PSItMTEuMzgiIHk9Ii0yNS45NyIgd2lkdGg9IjIwMC4wMiIgaGVpZ2h0PSIyMzEuNTMiIHN0eWxlPSJmaWxsOiNmZTU7Ii8+PHBhdGggZD0iTTk0LjA1LDU5LjYxYzIuMDUsOC40OCwxLjM2LDE1Ljk0LTEuNTUsMTYuNjYtMi45LC43Mi02LjkxLTUuNTctOC45Ni0xNC4wNS0yLjA1LTguNDgtMS4zNi0xNS45NCwxLjU1LTE2LjY2LDIuOS0uNzIsNi45MSw1LjU3LDguOTYsMTQuMDVaIiBzdHlsZT0iZmlsbDojMWMxYzFjOyIvPjxwYXRoIGQ9Ik0xMjcuODUsNjYuOWMtNC41My00LjgxLTEzLjU1LTMuNS0yMC4xNSwyLjkxLTYuNTksNi40MS04LjI2LDE1LjUtMy43MywyMC4zMSw0LjUzLDQuOCwxMy41NSwzLjUsMjAuMTUtMi45MXM4LjI2LTE1LjUsMy43My0yMC4zMVoiIHN0eWxlPSJmaWxsOiMxYzFjMWM7Ii8+PHBhdGggZD0iTTkxLjc5LDE0MC40N2MyLjktLjcyLDMuNDktOC42LDEuMzItMTcuNjEtMi4xNy05LTYuMjktMTUuNzEtOS4xOS0xNC45OS0yLjksLjcyLTMuNDksOC42LTEuMzIsMTcuNjEsMi4xNyw5LDYuMjksMTUuNzEsOS4xOSwxNC45OVoiIHN0eWxlPSJmaWxsOiMxYzFjMWM7Ii8+PHBhdGggZD0iTTYyLjIyLDcxLjNjOC4zNywyLjQ3LDE0LjQ4LDYuOCwxMy42Niw5LjY3LS44MywyLjg3LTguMjgsMy4yLTE2LjY1LC43My04LjM3LTIuNDctMTQuNDgtNi44LTEzLjY2LTkuNjcsLjgzLTIuODcsOC4yOC0zLjIsMTYuNjUtLjczWiIgc3R5bGU9ImZpbGw6IzFjMWMxYzsiLz48cGF0aCBkPSJNMTE2LjU0LDEwMy43NGM4Ljg4LDIuNjIsMTUuNDEsNy4wNywxNC41OSw5Ljk0LS44MywyLjg3LTguNywzLjA4LTE3LjU4LC40Ni04Ljg4LTIuNjItMTUuNDEtNy4wNy0xNC41OS05Ljk0LC44My0yLjg3LDguNy0zLjA4LDE3LjU4LS40NloiIHN0eWxlPSJmaWxsOiMxYzFjMWM7Ii8+PHBhdGggZD0iTTcxLjY0LDk3LjcxYy0yLjA4LTIuMTUtOC44OCwuOTgtMTUuMiw2Ljk5LTYuMzIsNi4wMS05Ljc2LDEyLjYzLTcuNjksMTQuNzgsMi4wOCwyLjE1LDguODgtLjk4LDE1LjItNi45OSw2LjMyLTYuMDEsOS43Ni0xMi42Myw3LjY5LTE0Ljc4WiIgc3R5bGU9ImZpbGw6IzFjMWMxYzsiLz48L3N2Zz4='\n","/**\n * Documentation:\n * https://github.com/perawallet/connect\n */\nimport Algod, { getAlgodClient } from '../../algod'\nimport BaseClient from '../base'\nimport { DEFAULT_NETWORK, PROVIDER_ID } from '../../constants'\nimport { debugLog } from '../../utils/debugLog'\nimport { ICON } from './constants'\nimport type { PeraWalletConnect } from '@perawallet/connect'\nimport type { DecodedSignedTransaction, DecodedTransaction, Network } from '../../types/node'\nimport type { InitParams } from '../../types/providers'\nimport type { Wallet } from '../../types/wallet'\nimport type {\n PeraTransaction,\n PeraWalletClientConstructor,\n PeraWalletConnectOptions\n} from './types'\n\nclass PeraWalletClient extends BaseClient {\n #client: PeraWalletConnect\n clientOptions?: PeraWalletConnectOptions\n network: Network\n\n constructor({\n metadata,\n client,\n clientOptions,\n algosdk,\n algodClient,\n network\n }: PeraWalletClientConstructor) {\n super(metadata, algosdk, algodClient)\n this.#client = client\n this.clientOptions = clientOptions\n this.network = network\n this.metadata = PeraWalletClient.metadata\n }\n\n static metadata = {\n id: PROVIDER_ID.PERA,\n name: 'Pera',\n icon: ICON,\n isWalletConnect: true\n }\n\n static async init({\n clientOptions,\n algodOptions,\n clientStatic,\n getDynamicClient,\n algosdkStatic,\n network = DEFAULT_NETWORK\n }: InitParams<PROVIDER_ID.PERA>): Promise<BaseClient | null> {\n try {\n debugLog(`${PROVIDER_ID.PERA.toUpperCase()} initializing...`)\n\n let PeraWalletConnect\n if (clientStatic) {\n PeraWalletConnect = clientStatic\n } else if (getDynamicClient) {\n PeraWalletConnect = await getDynamicClient()\n } else {\n throw new Error(\n 'Pera Wallet provider missing required property: clientStatic or getDynamicClient'\n )\n }\n\n const algosdk = algosdkStatic || (await Algod.init(algodOptions)).algosdk\n const algodClient = getAlgodClient(algosdk, algodOptions)\n\n const peraWallet = new PeraWalletConnect({\n ...(clientOptions && clientOptions)\n })\n\n const provider = new PeraWalletClient({\n metadata: PeraWalletClient.metadata,\n client: peraWallet,\n clientOptions,\n algosdk,\n algodClient,\n network\n })\n\n debugLog(`${PROVIDER_ID.PERA.toUpperCase()} initialized`, '✅')\n\n return provider\n } catch (e) {\n console.error('Error initializing...', e)\n return null\n }\n }\n\n async connect(onDisconnect: () => void): Promise<Wallet> {\n const accounts = await this.#client.connect()\n\n this.#client.connector?.on('disconnect', onDisconnect)\n\n if (accounts.length === 0) {\n throw new Error(`No accounts found for ${PeraWalletClient.metadata.id}`)\n }\n\n const mappedAccounts = accounts.map((address: string, index: number) => ({\n name: `Pera Wallet ${index + 1}`,\n address,\n providerId: PeraWalletClient.metadata.id\n }))\n\n return {\n ...PeraWalletClient.metadata,\n accounts: mappedAccounts\n }\n }\n\n async reconnect(onDisconnect: () => void) {\n const accounts = await this.#client.reconnectSession().catch(console.info)\n\n this.#client.connector?.on('disconnect', onDisconnect)\n\n if (!accounts) {\n onDisconnect()\n return null\n }\n\n return {\n ...PeraWalletClient.metadata,\n accounts: accounts.map((address: string, index: number) => ({\n name: `Pera Wallet ${index + 1}`,\n address,\n providerId: PeraWalletClient.metadata.id\n }))\n }\n }\n\n async disconnect() {\n await this.#client.disconnect()\n }\n\n async signTransactions(\n connectedAccounts: string[],\n txnGroups: Uint8Array[] | Uint8Array[][],\n indexesToSign?: number[],\n returnGroup = true\n ) {\n // If txnGroups is a nested array, flatten it\n const transactions: Uint8Array[] = Array.isArray(txnGroups[0])\n ? (txnGroups as Uint8Array[][]).flatMap((txn) => txn)\n : (txnGroups as Uint8Array[])\n\n // Decode the transactions to access their properties.\n const decodedTxns = transactions.map((txn) => {\n return this.algosdk.decodeObj(txn)\n }) as Array<DecodedTransaction | DecodedSignedTransaction>\n\n const signedIndexes: number[] = []\n\n // Marshal the transactions,\n // and add the signers property if they shouldn't be signed.\n const txnsToSign = decodedTxns.reduce<PeraTransaction[]>((acc, txn, i) => {\n const isSigned = 'txn' in txn\n\n // If the indexes to be signed is specified, designate that it should be signed\n if (indexesToSign && indexesToSign.length && indexesToSign.includes(i)) {\n signedIndexes.push(i)\n acc.push({\n txn: this.algosdk.decodeUnsignedTransaction(transactions[i])\n })\n // If the indexes to be signed is specified, but it's not included in it,\n // designate that it should not be signed\n } else if (indexesToSign && indexesToSign.length && !indexesToSign.includes(i)) {\n acc.push({\n txn: isSigned\n ? this.algosdk.decodeSignedTransaction(transactions[i]).txn\n : this.algosdk.decodeUnsignedTransaction(transactions[i]),\n signers: []\n })\n // If the transaction is unsigned and is to be sent from a connected account,\n // designate that it should be signed\n } else if (!isSigned && connectedAccounts.includes(this.algosdk.encodeAddress(txn['snd']))) {\n signedIndexes.push(i)\n acc.push({\n txn: this.algosdk.decodeUnsignedTransaction(transactions[i])\n })\n // Otherwise, designate that it should not be signed\n } else if (isSigned) {\n acc.push({\n txn: this.algosdk.decodeSignedTransaction(transactions[i]).txn,\n signers: []\n })\n } else if (!isSigned) {\n acc.push({\n txn: this.algosdk.decodeUnsignedTransaction(transactions[i]),\n signers: []\n })\n }\n\n return acc\n }, [])\n\n // Sign them with the client.\n const result = await this.#client.signTransaction([txnsToSign])\n\n // Join the newly signed transactions with the original group of transactions.\n const signedTxns = transactions.reduce<Uint8Array[]>((acc, txn, i) => {\n if (signedIndexes.includes(i)) {\n const signedByUser = result.shift()\n signedByUser && acc.push(signedByUser)\n } else if (returnGroup) {\n acc.push(transactions[i])\n }\n\n return acc\n }, [])\n\n return signedTxns\n }\n}\n\nexport default PeraWalletClient\n","export const ICON =\n 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAgAAAAIACAYAAAD0eNT6AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH5gkNFS8Vlp9VjgAAIABJREFUeJzs3XmcXVWVN/zf2vucO9+akkASklSFMTKICIgiyJyJIA6tjIoT6vM8tHPbw9tPq/12v90qM8gkoCIooCgIKrYKKBqZFAfIPFYGEjLVcO89497r/eNWQURCksq995yqWt/PJx/zkXDPKnLu2evsvdfagBBCCCGEEEIIIYQQQgghhBBCCCGEEEIIIYQQQgghRgdKOgAhRPMxABxzjPMMgMHSszxz9TTHOk62nYgnZLM+Jk2yz1QqdBwAevbZONlohRCtIAmAECn39DHHOPtv9stR1i8VQ6fDuraTDToc0m0x2y4mdBCoHcxFJpQBKjBziQgumEoEVgxkQeQCYAIzM1wAORAYII8Aw/XnAREQgDliopiAKgMBwDUwVTVhMAbXCOgjUJ9m3h4DAwTqUzbeEVvVV8rElY61awdoKO8QQqSTJABCJOi5WbPciUHQSVZPjg1PVpqmWkvdIOwPYCrA+wPUyUAnGG2KkMsQIUsENfT1Jbz8RbYAGAwGXv7Fw79nAAQa+r0d+nfU0P9bH60ZNPRniF7+bBr6M2ro3xn+bAAwYATMCJktAJ8ZAwTeDtAOgDeRohcs8ILDtDZgu7kI3hCGvGXK5qO3E344HIYQosUkARCiyXjWLHddxUzSZHpcpWeETIdq2JkGmKlAUyzzZEXUViAFl14eZA0YBvVXczv0e+a/HtzT4K+SBCJoABoETfXkQg8lFwwgZIbH1gwlCZsYtFEpWsngtcS8DJbWKhX07tfbu4UASQ6EaCJJAIRoEAZo27RDpoTgg5TG4cw0ywCHa6DHgqdmSZVyRC8NiDEYMTNiAJZ56O19bCMMJQVEcEBwqJ4gEOr/PTxmRNYOKNA6C16jgEVaYXEIuzhQvOqg1atfTPhHEGLMkARAiBFgnKy39Lx4IBl+XUD2aA11NJhnMWFGlqicJ/XSoBYNDfKGWV5pd2M4OXBBcIeSAwvAY4vAcp8iXs1QS5jtHw3ZP5U0L+pcvXqdPMiE2HvyvRFiD2yddsjUQKsjydrjiPhYBh0BYGZJqYw7NEiFzIiG3urH+pt8qykAzkuJQX2ZJKgvJ1QJWM3gPzOpZ0xk/qANPz9186qtSccsRNpJAiDEKzCALT2HHWINjgfZEwE6jsGz8qTas1Qf7AOuv9kbyGCfFEJ9tiADQmYoKfDYwmfeRozFIDzlgn8bMf1hyrrlaxIOV4jUkQRACAAbZhxymMM4AcBJTHgzA7PalHYVgHBol7u82acfAXCHqiRcEGIwqtbWwFisQAsB/MZR+omutYt7k45ViKRJAiDGpS3TD51iyb6FSJ1qGCcDfESb0i6h/nYfDL3di9FteJYgi3pSYMCoWFsl0F+I7OMa9GigzdNTV8mSgRh/JAEQ48KyGTMyRc4e5xJOY+B0Bo4tKdWuQQiY4cuAP244RMgNJQVD+wi2AniKgUc17C8m9a78kzQxEuOBJABizOqfcmhXmMVJscHZTHx6hujgIqmXy81YnvHj3fCSQX6oPLPfGgD4iwb+h4Cfco6enLRsWSXhMIVoCkkAxJiyYebM6crqM4jVAgAnFxXt54DqZWRShid2QwPIkkKOCAEYnuX1YH5Mk3ogF0SPtUl1gRhDJAEQo96GmTOna+POJsa5THxKm9JtDKDGFpFs3BMjRAAyRCiQggGjZu0WBh7VxPfnlPlFefXqLUnHKMS+kARAjEpbph86JVZ2rgP1TsP1Qd/i5UFfiEYbTga4XlmwFcAviem+DGV+3tH7XF/S8QmxtyQBEKPGspkzy+1xZjbIvoeB2W1Kd8qgL5LwV8kA243MeJiAe7cU9CNHLlkSJR2fEHtCEgCRepunHfpWVnwBAQsKSnVrECoy6IuUyBKhSGqofNQuIeB+Jr57/7Ur/pR0bEK8FkkARCptm3LgNJvR7zWMCxyi44qkUBvayCfDvkgjApAnhTwR+qy1AB5XzHfGrrlf+gyINJIEQKTGPYA6dcYhZynCB2LG2R1Kl8P65ivZvS9GFQ2gqBQ0CIPWvAimHwJ8x/7rli9MOjYhhkkCIBK3ddohU1mr85nt+7NKHe3KFL8YQ4aXCKpsYZgXKuCbNQTf6+7tlY2DIlGSAIjEbOo+8M0O9Idixns6lO7wmVFjK1P8YkxSqM8KOPVZgQ0A7mGjvjF5w9Lnko5NjE+SAIiWem7WLHc/377TWv6YQ3R6kRQqbBHK274YR3JEKCqFfmMiAj0YE986de3ynyYdlxhfJAEQLbHxwAMnOpFzERQuLZI6wtYPZZG1fTGuaRDKqt6eOrD2KSa+0fqD907ZvLmWdGxi7JMEQDTVphmHzFTARwF8oKz05IAZVZZhX4idEerLAy4IVbYrYvBtPjvfmNm7eHPSsYmxSxIA0RSbDjjsSKX5/xD4orLS5cpQCZ8Q4rXlSaFAhH5rthCr2w3sTVPWLV+TdFxi7JEEQDTUlgMOPQ4an2bw35WVzgzKbn4hRiRLhBIpDFgzQETfCpm/dkDv8qVJxyXGDkkARENsnn7IiUz4JIH+rk0pNWAtYtnPL8Q+c4nQphQGjPUU8K2Q+Jqpa5cvSTouMfpJAiD2yQvTDjleKfyLJnpHof62ApN0UEKMQQ4R2klhwFoPhDti8NWSCIh9IQmAGJGNMw56o4b6PEDnlZUM/EK0ys6JAAPfgjVf3X/9ylVJxyVGH0kAxF7ZMOOQw1yif2Lmi9uUdvpl4Bei5Rj1Ewnb6rNugwTc4llcOWP98o1JxyZGD0kAxB5ZNuWgAzpd57NM/LE2UoV+axGB5QYSIkE7JwKD1r5I4Gv7VXTdQWvWDCQdm0g/eX6L17S4/dDSpA7+ewY+XSY9aWCoa5/cOEKkB6PeXbBECoNsVsHiy4+sW37reZBeW2LX5Dkudmnz9EMu0UT/UlLq0Apb+DLwC5F6BVLIEWGA7e/Zmi9NXrfywaRjEukkz3PxNyxwmtc2+UuFTObk4c59cqMIMbqUSQEArB8+4FY3f1EBf0w4JJEy8lwXL/nDY284eNlvTv3i5OVbLsqCMWDlZD4hRjMFoF1pVIjCFw6dcNOFwTX/ob6ELUnHJdJBEgCBBx6YnD+np/LpawcX/MPDpUs7ZhYInjFycwgxFhDgksbSAQ///Pw162YPLPwP9YnKLUmHJZInz/hxbv3vZy4oOuF/RbnykQvWfQYbwg575oSMbXO1E1t5/xditMtohTW1IP7VAKvT7Rp13+ZrYEL+dRjSPxc+sW5h0vGJ5KikAxDJWPvUjJmbnp35nXyOHmxzoyOv2HhavCLcHxqhWlTxwJatZIdCjG6aCJXImCWDAXVwoB5zD7Z36BOM1uHbdEY/Ht3UfW3/dVO6ko5TJEMSgHFo3e+7P5V19TPForoAvo/f9U+Pv+e9VZXJg0uEzb5xev3IukpSACFGMwVgacXnmrHaISDPkbp2whxsDttNxkTKyeu/zzmZP9S+NuOipGMVrScJwDiy7unuN73wbM+vO8r6KhC6tvfFgDH2ltpcDKKo3KGefloRllYCqsTGaJIkQIjRKKMIL/iRWedFKqMIDCBvQ6zK7Kdv6jyTOfZtbdAg41B3Pq/vDG7svt+/rueQpOMWrSMJwDiw8J6puY3P9vyn49Bv8zl18vY+Cz9ktCkPj4VH2v/xj1Fl8l7a8a8A1IzVSwYDKGkkIsSoo4jgG2sXV3xA0UvPeQbQZj3c0XGSWpzrtnkboBowPM8ik1fnKpef9m/s/lSCoYsWkgRgjFv71MwzZh6aeaK9pP/FMjl9A/Xx3CGLqs2ZG2pnA0RD7wcvyyjCej/SG4LIZmQpQIhRxSFgWTW0/bHVziv+mcsG/U5RXTlhPsDWagDMQLVioUDt2by6Kryp55eDX5t5VBKxi9aRBGCMevTejuKGP/RcnsviF9msOnrrDoM4ZhDV3wLK5OEHwVvsH6MDnSL5r/oZRIQlgz75xhrJAYQYHVxF2BLEZk01UK+2j4cBtJkaHiq9QT1SPNLmbA2MeklYEDO8ioWbodMzmp/wv9bz+VbHL1pHEoAxaN3T3accdmjHEx1t+rNxzBgY/OtZ/BxF2Gi64turZ6q8Cnf5OZqAgdjqZbWQHdkLIETqEQGxtXZRxWdD2GXersAAkbp80tnwKWvcnVb6GEC1ZqGAQraovhze1PPLwatlNmAskgRgDLn33lnuxt/3/KfrqsdyGXXklu0Gsak/FHaWR4hveGdwr91PZxG95me6irCmGqgtQRy7kgQIkWouEVbVIrstNM7uvq8l6+Op/EHOXe1v5Yzx/uqfEYAwZtQqBm6WTs/m+Hf+jT2faGLoIgHyRB8j1iycfkymoG9sL+kT+gYsooj/ZuAHgCIFWBIfEL9/x6eVIa2coZ3/ryVmRoer47d2FBSIlLQHEiJ9HCIMxMb8ZnsVFtB78nYXkIuJ8YD5ae9XMclUdECv3DFQ3x+Qcwk6R4h8fqgamr/v/MS6NQ3/AUTLyQzAGLDume5P5grObwtZdcLW7S+v9b8SgQFme2NtHgZReKnsb3ccImwPjbPSk94AQqRR/VvJdtGgxxHzHg3+AJDjCGszE/WNnWeytsGrfzbttDcgSwuKGfXk4PXTL2xQ6CJBkgCMYksXTpv6wrMz7+9od65mRn54h/+utJGHR8Oj7C+CN/xV2d+ecBRhRcVXfZGNZT+AEOniKsJaL7KbAqP2ZqmuXhbo4472t6rncj2msIskYPjPVisWjqL9SgXnLv9r3bds/reO4r5HL5IiCcAotfap6QvaC84TpaI6d0efQbiLKf9hDlkM2py9sTafCPibsr/dUQAiQC0a9MDMVnIAIdJBE6ESW7N00Cdnp5r/PeWywaCTV1dMmAtmtuo1ng1EgBcyfM8iW1KXdk1tX1i9vvtN+/QDiMRIAjDK/Ou/gtY/0/3fhbzzoNZq+rYdBrwHY3kZNdwXvNX+KZ6pd1X2tzsuETYFsbPWj6xsCBQiHRSAJRXf1uyeT/3vjAG0Gw8/KR9DPy+/3ubM7mcHLQO1QQvHVa/PuPhV9bruT47g0iJh8hQfRZY+PmNmqUC3d7Q7p+7oN4jjv93h/2qyFGObKZkL+z6Hbdy2253/r8UCcAnmpM4iCq7WRk4MFCIxGUXY4IXmqT6P3BG8/e+sqnI4yu81P+y9klyCivfg/ZAZyLoEJ0fwPXt3UIv+d8dnN+7YlzhE68gMwCix9nc957SV1RPlkj5163YD8yrlfbuSR4BvemfyejtJ5/Zh8AfqN4xnWS+pBkzM0iZYiIQoIvixtYsrARTt2+APAEXr45n8TP2d9pNsxtT26N8hqpcLelWLXEGfXyi6C/uv637zvsYiWkMSgFFg3dPdXyqW6EeOpv229+3dmFskH89GM833vBP3euPfrmSIsN6L1EY/ljbBQiTEIWBZLbQDsdW6QV/Dog1xQ9cZ6gV3osnynr8sMAO1AQPXVbPyGTxa/Vr3/2pMRKKZJAFIsWW/PnDihj/0/Kir0/m3IASqtdfe6PdKQxv97E21uagiv0c1/3tKEanFFZ88Y42S/QBCtNRQu994dS2gRpbm1ssCJ6kbOs/aZVngLtFQB0GmXKGgbvBv7L6l91NTcw0LTjScJAAptezxGSeU2+zC9rI+Z+t2g9js3eDPAMrKwy+Co+2jwdG6UW//wzQBg7HVy6ohOzL+C9EyBCC2bBcN+sT1r2LD1MsCa7iz40T159yBr1kW+KqxDfUM8GsW2YK+dP/DMr/su/6AgxoYomggSQBSaO2T3Ze0t+lHsxl1yNbtI3trd2ExaHL25to8UsTY27K/PbrGUJvgF4M4lgZBQrSGqwgra6HdFhndjJ4cLltU9J6VBe5KvUrAIJOjE4uu89vK9TPmNDxQsc8kAUiZDb+f+eX2Nv1NZuQHBu1evfXvrKxq+H5wkv1z1KMLtJdTeXuIADCRen7Qp9iykZUAIZrLUYQdoTErKr5ympR0108L9PBw+Q364dLRNmdHPns41Dho/4yrfjJ4ffenGhmn2HeSAKTE6ke72zc+O/P+jnb1+UrNIgj3bsp/Z1mK0BtPMt+snv6ap/01gkPAjsjolbVAegMI0UQEgJmxuOIjAlQzH94EhgJwxcT5VFM5s6dtw//mcwioBgxYqFJJXeXf0H3jI1+Abmy0YqQkAUiB1b+dcVi2nR5vK9G5wyV++yKH0N7unckbeKLa17K/PVFvExzoHZGRNsFCNMlQu994UxBTK5LtovXxbL5H39l+kn3laYF7gwBEhuFXLbJF/fG3Tu55ePCr+09qXKRipCQBSNjap3vOzBf144W8Omrr9n0vqy8qH3+MZtr7vLc0rOxvd15uE+zX2wS34JpCjCcvtfutjKzd70gVbIgbus5UL7iT4r0pC3w1L+0LyNOZ2XLu8cGrDziqQWGKEZIEIEFrnpz54VwGP3EcTOobGPl6/zAFBlvYG2vzUUNeOWhdnx6XCJuD2FkjJwYK0VCE+oN6ccVnb4TtfkcqxxF63Yn6+s6zoGzYkOS+OmjhuuqwbM79Vf/V3fMa8JFihCQBSMi6p7u/2N5GtzKTW6mOfL1/2HDZ38/Do+1jwVFOq97+d+YowrKKrwYjY7QsBQjREK4ibAiieL0XqUyLv1f1skAPd3WcqP6cm2nze9sb4FXQUL8AV6OzkKcHq9dP/+i+RypGQhKAFrvnnVAbnum5tbPD+UK1xvD3YbPfzlwyGLB5c0t1HinVnLK/3RlqE6wWV3xW0iZYiH32UrvfQZ9UC6f+d+ayQVXn1OUTz4YdYVngK720OZChCwXn5uoN3V/c90jF3pLdmC30xE9mlo9a0HFfR7s+b3ufgbWNOY2JAXRQDd/2Tzf3+W91yjTyDTv7ShOhP7Ioudp2ZbQyclaQECPmKsLzlcBsCmInySqbLMdYlD0ARwYbzeuCXh2Su8/PLgJgLMAGyBX0qf94VtsB9Mb+h37960ZELPaEzAC0yNKF06bOmMo/7yjrs7du37MjfPdUniKssfvF36idqQpNLvvbE7RTm2BZChBiZFxFeDGI4zXVQCW9r4bA0LDqignzVFXlR1wW+Gpiy/CrBvmSvvT/mdL9wxe+un+hYR8uXpMkAC2w5LczDmvLO4+UCvqELdsa98UZlkVob6+ehRds1z4d9dsomoBKbPXSis8KLdyJKMQYQTTU7rfigQmp2FZbtAGezffob7efvE9lga9muEIgV9LndhZzP9v4n/tPbOgFxKuSBKDJlv5q5vEdJf1IPq8O277DNGS9f2cl8vH76CD7A//Nqky1BFb+X91QzbJ6MYylKkCIveQSYUU1sNtD66Spt0bR+rih6wy1wd1vr04L3FO1QYNsQZ80sSv3yx1XdXc3/ALir0gC0EQrfjv99PYO/p+MQ1P7+ve9zO+VFBiWyd5cmwcPOaVT9LJNALjeG4BCy3JioBB7yCHC9tCYldWwoSf9NUKOY6x3J+jrO8/iRpUFvlKtYuDm1OsLeXp04Jrpr2vCJcQQSQCaZOXC6QvKRf1jR6mOgUrjB38GUCYPPwvfYB8Lj1JJbvzbFYeo3ia4GrBDKcpOhEipoXa/dnHF5wjc0JP+GoEBtNsa7uo4Uf0hfzDnrd+U61QrFpkMzcxl1SN9V0w7vikXEZIANMPqJ7rPL5ecH5CiXKXW+MEfqJf99XPe3FKdSxpWJVH2tydcRVhVDdT2MOZmHV4ixFjhKsIaL7Sbg1il9WwNhy08nVVXTJgPy2hIWeArEQHVqoXrqsmFovPTgaumndzwiwhJABpt9e+6LykU1HeZ4da8xtT4v5oyPNxdOxnPme6mnfbXCAQgAqlFFZ8ts6GUPtSESJomwmBszbJq0NJ2v3tr+LTAX5SOpB+3vZFzpjlNx15uGEQTcnn9k8FrZpzahMuMa6m9yUajVU/0fLS9TX+TLeD5zRv8cxRhldnf3OGfgWKKB/9hLgEvBsZZU4vYlfFfiL8x1O7XLql47JnWtvsdieGywCsnzENFF0ymgWWBf3UdAqq+hauplMupH/dfM31BUy40TqX9Phs1Vj3Rc2lHWd0chAw/aN7gD9TL/m6rnYVNtktnETfvQg1UbxPsqQFpEyzE33AVYb0f2fVepDKjZKmsaAP8Kdet7+g4GW6DywJ3Vk8CGJpQyGfVfVVJAhpGEoAGWLWw56MdZXVLEDKCBrX23ZUS+fh9fLB9wH8zpansb3cUgIChFld8JjkxUIiXKCJ4hs3iQZ8UqVH1TC7aADd2nk7rM/s3pSxwGBFQCxhaUSaTU9+XJKAxRtXNlkarFvZ8tKO9/ubf7MFfgWGY7A2V+eQjm6qyvz3hEmGjH6v1gfQGEGKYQ8DSiscVY3Xqtv3vRo4jbHAnqGu75rC2YUNam+8KEeAFDEWUzeTU9/uvmn5OEy83LkgCsA9WPdVzaUc7tWTwHy77ezh8o308OkKXqNa8izWRUqSWVHyqxdImWAhXETb7kVlbCxNv9zsSDKDd1HB32wnqmfwhplllgcN2TgIKRfW9/mtnzG/qBcc4SQBGaNUTPe/rKNItQYimD/4AkIHBDlu0t1TnkQPb1Ey7mTSAirF6aVXaBIvxTREQGWsXVXxmolE4/NdpWHgqqy6fOB8W1JSywJ0NJwEalM1n1L1SHTBykgCMwOrfdZ9XytMdQdSawR8ASsrD3f7b7OJ4us6Pgp3/r8UlQq8XqRdlKUCMYw4RVniR3RGlq93vSLRZD78sHqEfKr/R5kzzZyeH9wS4GsVcXv1o4Oppb236RccgSQD20rKFMxfkC+pOBhA0ebf/sBxFWBlPNt+unaoKqrlTbK1QbxNM6vmKT5FlIzmAGG8cRdgexmbloD8qp/5ficBwYXHlhHk0oIvW5eaUBf7VNYeqAxyFci7nPNB3zYw3Nv2iY4wkAHth+e+6T2kr8PcUwWlmnf8r1cv+ZvNm7lSjpexvdxwC+iKjl1cDHu1vP0LsDQLAlu2iis9xSk76a4SCDfDn3Az9rY63Wde2pjU5EVD1GK5LE/JZ9ZB/7YzDWnLhMUISgD204jfTjy0X6H7HUblmdvh7pRL5eDo8hB/w36TK1JyOW0l5uU2wiaVNsBgv6u1+I/tiYJy0tvsdqZL1cVPXGdSbmRznmlgWuLPhjoGZDE0hV/1k2+UHTmvJhccASQD2wMonew4pFvVDGUd1VKrN6e3/ahQYMZO90ZvPATKjruxvdwhADKjnBz2ylq20CRZjnUOEgciYpRWfxmLSm+UYm5wOfW3XbJCNWtbvY/jsgEyODiwUzI/7rpja2aJLj2qSAOzGol9Nn5xz8eN8Tk1uxql+u8IA2lQND4fHmceDw1Uphaf9NYJLhC2h0au9yEqbYDGW1W/v+kl/Pqe/3e9IMOobAu9pO0E9kz/YNrsscGdEQK1qkSvo1+cK7v29l0/Ntezio9RYvAcb5rlHZxXbivpH5ZI+pG+gdYM/AGTIYJspmZurc5Sr7Bh8V3iZowjLKz5Jm2AxlrmKsN6LeKMfqcwYvs81WwQ6o66YOB+mBWWBr1SrGGQL+m0Tc5nvtPTCo5AkALvA90C1l/zvdbTr47fvMC0d/BlAiTx813sbL4mn6TxGd9nf7igAgWW9uBowQdoEi7FHE6FmrFlSCTDa2v2ORNn4+GXxCOfB0httzra+aZk3aJAvq3dWrp9xQ8svPoqM+RtxpHp7er7e1annbWvx4A8ABQqxIp4c3+mdTiU1tgf/Ya4ibPQitc6LpDeAGHM0AUsr/qhs9zsSL5UFTpxPA6pkWlEWuDMG4FcMimXnf1Wu6/m/Lb34KCIJwKtY/WT3Fyd26Q9t29HamxaorxO6iOxttTnYwu06M0bK/vaEIlJLK4G0CRZjiqsIm/zI9NaiMVHzv6cKNsBfctP1bR2ncqvKAndmGQirBsUC/Xvl2u5LWh7AKCAJwCusfKL7g53t+gs7Bgw4gZq7Ivl4KjrU/mgMlv3tjqZ6m+Al9TbBQox6CmOj3e9Ila2Pr3edRmsyU+Ichy2/fmSBOGJkc/T1waunn97yAFJOnrM7WfHb6aeX8uoW32fErX/5hwIjYmVvqM5HgIxSY6zsb0+4irCuFqnNQRyPp7clMTY5irC8Ftq+yDrOOLydsxxjs9Ohr+2a09KywGEEIIgYDsHN5NT3Bq7qntXiEFJNEoAhK3/dc0ixoO/VGo4fcMsP2xku+/tJcKxdGB6uymO07G93CAAT1KJBj0LLRslSgBilHEXYFsRmVTVQY7Hmf08wgHZbw73tb1JPFw5raVngsOGWwZmM6nJz+CHfMKOj5UGklCQAALY+MbOcLeAH+byaUKm2rsvfzobL/r5em0suxQrjavL/rzlE6IttvU2wnBgoRiGindr9AmN/2/9rUGwRKld9deI8GFZWJ/Bse6lHQF7NqjHdk8TybhqN5/vyJTXF3+lo10f29be21n9nRXj4jn+qXRpP03lq/VpZ2riKsLoaqG2RseP17UmMXi4RVnuR3RKOvXa/I1E2Ph4rHKHubzvOZk0tmdcbAmoVi0JJz65e131dEiGkzbhPAFb/rvsrE7r0giTK/YblKcRKMyW+s3aqKo2B0/4aod4mmNSi4TbBSQckxB5yVL3d77Ix2u53JOplgUZdOXEe9Tllk2lxWeDO6uWB6rKBa7o/nlgQKTGuE4BVC3ve19Wp/2FHf3I3I1Av+7tlHJb97Y5LwJbQ6FW1UHoDiFGBAICH2v3asdnud6QKNsDi7AH6to7TEikLHGYZiANGLkfXDVwz7W2JBZIC4/b+XPGbmcfm87jFS2jH/7AS+XgimmUf9N+k2iihqbEUG2oTrAZiG8uxwSLtXEVY50V2ox+pjCStf6NkfdzaeYpanZ1qkigLHBZEDFeRk8k4d2+9ZsoBiQWSsHGZAKx/ckpXLo/vZbMql8SO/2EKdrjsj2I4qtU9s0cDBSAE1KIBj8AsGwJFamki1GJjl1R8Umpc7/vbpQzHeNFpV1d3zQbZOLGlvXplgEUjk+VjAAAgAElEQVQ2R1PyOnPP0zcd4yQUSqLG5U1qkP12R5uaOTCY3KY/AGhTHh4KjrdPRLP0WD3trxFcIrwQxNTrx1beqkRaKQBLq4GtGtY66WBSrN14uK/tBHqycJjNJ7gUMFwZUCjrt74u2nZ1YoEkaNwlAKuf6P7SxAl6fpKb/gDAJYOtpmxurc0hl2Tdf3eUIrW04lNV2gSLFHIVYXMYx2vHWbvfkdCwCMlRX504n2LoRMoCd+ZXDIol/X/6r572gUQDScC4SgBWPjnz7LaS/re+gWQ3/QH10/7u8k/j5eYAnYeU/e2OBlA1Vi+t+KwgSwEiPRQRQmPtogGPMA7b/e4tBtBmPfyq8Dr9g7bjbda0/rTAnVkG4pCRyzk3bL+2+/WJBtNi4yYBWPXb7hl5l79lmRFFycaSpxBLo6nmrtopqkhS9renXEXo9SK1KTBSFSBSwyHU2/3GVo/Hdr8jlUWMqyfMox1Om8lwsrOgQcjIuJTPOfxdvr6jmGgwLTQuEgBmkHZxV6moJlRryXT6G1Y/7S+2t3hzeSu3KSn723MEAERq0aBPobXSJlgk7uV2vyFJUrp38jbEkuxUfVvHqewk0CJ4Z0RAzbPIF53Dq9x+U6LBtNC4SADWPNH9XxMnOCftSLDT37CS8vDbcBb/xD/OkbK/vecQ0B8bvawasrxtiSQRAGvZLqr6bMBabse9V7Yebu08Va3MHpBoWeCw+n4AdfHAdTMuTTqWVhjzCcDq33XPK5f1P+7oS37ZWMEisI69qTofMRxI2d/IDLcJ3hLERt66RFJcRVhdC+2WwChp9zsyGTbY4rSpaybM4STLAocNNwnKuurq4IYDjkg4nKYb0wnA6idn7J/J0O0AI46THWzrp/0Nl/0dJmV/+4AAWJBaXPHZWDaUWCcHMV45ROiPjFleDchRNKafo800fFrgfeXj1e8KsxItCxwWRIxMhgqGnTvtNTMyScfTTGP6xiWo29vKenJSJ/ztLEsxXozb7K21OZRVsu6/rxwCtobGWVUL2R3Td7FIm/qjhO3iQR8BS7vffaWZEStHfXXifIRwrE74AFAioFazyJf0GypEVyQaTJON2Xt35cLuT03s0vN39CVb7z+sCN/e6Z9mV5ipUvbXIMNtgvtDY+TQFdEqw+1+Xwgikqn/fccAysbD44VZzn3lN9msSX4WAACCqkG5oC7rv6rnnKRjaZYxmQCseqL79YUCfXmwYlOxyl6gEIvjafY73ilUIi8VMY0FCkDIUIsqPiAnBooW0ESoGmuWVHxSJO1+GymLGNdOnEPbnfbEywIBILYAW0Ymw18fvGHmpKTjaYYxdwM/99wsVyt8K59VmSBMfqglABqx/XptDnZwWbtIvgnRWOIqwqYg1r1+JL0BRNMpAEsrPlcNa9n231gFG2Jpdqq+NQVlgUD92e0FjFxR7Y/YfD3peJphzCUAxUHv/53Y5byhP+E+/8PqZX+vsz8JjlNlKftrCqUISyoBVaRNsGiioWQz7pV2v03BqJcF3tZ5Kq3IHBDnU1AWCAK8qkWpTZ87cO30jyQdTqONqQRg1ZPdJxeK6h/7+pMv+QPqPa9969ibavNgoOW0vybRAGrSJlg0kSLU2/0OegSCDP9NkmGDrU5ZXz1xLpCCskAA4KHSwExGXdl3zbQDk46nkcZMArDhmcl5R9GtrkOIEi75A4ayWeXhoeAE82R4mCNlf83lKsI6P1Ibg1iWAkTDOURYXgtNf2y0I7NMTcMA2k0NPygfr35TPMLkbTr2TAURI5tVZVfpm5OOpZHGTAIQxtn/b0KnPnSgko6p/yzF2Gzazders5WU/TVf/a+c1OJBnwIjbYJF47iKsLXe7le5su+v6RQYhrT66sR5FMKxTgom9Qj1pYBCmz6z/+rpn0g6nkYZE3fz6t91n1IqqE/t6DepaQlTgI87vNPtSjNF56TsryUcAgZiq5dXQ3aSDkaMCUSAsWwXVXy20u63ZcrWw28Lhzrfb3+zyaagORBQn52IPYtsVv+nd8OMmUnH0wijPgHoXTg1px3crDUhTsmLdoFCLDHT4rtrJ+uySsfNO17U27MGamtkYlkKEPvKJcIqL7RbQ+PI1H9r5TjGtV2zVVrKAoGhpYAclUxMtyQdSyOM+gQggvvvEzqdwwZTMvU/XPZ3c3Uu96GsHCn7a6nhNsHPD3qILZtRf4OLxGg11O63EpA0mmq9vA2xNDtF39J5uk1DWSBQnxHyqhbFNnXmwDWj/8CgUf187H3qgOOKBfWZvgGLtMz9l8jDb8LD7cPBsbpMtaTDGZccArYNtQmWB7cYCQJAzHbRoMehlXa/SWmzHm7veJtelp1u8jZIOhwA9aUAEzBcV325euO0qUnHsy9G7X19zz1QgHtjLks6itKwT/Tlsr8ba/NhoKTsL0GOIqyo+KovjI1M3Yq95SpCrxfZFwIjNf8JyrDBNqesrpwwF2CTirJAAPBDRq6gOm2ork06ln0xahOA47tnfLqrSx+XloY/w2V/94dvtk9HhzolSseU1XilAISAWlQNmFnaBIs9p4lQjevtfrWc9Jeo4bLAB8rH0a+KR3BaygKJAL9qUCrrd1ev73l70vGM1Ki8udc8Mb0n66ovVirJl4cMy1KMTabD3FabQ1mKkg5HoL6Ba5MfO9ImWOwNRcCSis81w1onHYyAAsOSUldMnI8ArnUTPi1wmGWADQNkr+HrZxWTjmckRmUCAFJXtZVVyQ/SkAvWFcjHHd7pvNrsL2V/KeIowlJpEyz2kKsIm/woXudJu980KVsPCwuH6u+1n2AzJj17q7yAUSg5PVVT+2LSsYzEqEsA1j7Vc057m35H30A6pv4BoEABng9nmLtrJ6uydPxLFYV6m+AlFZ8VUvLqIFJJESGwbBZVfBCRDP8pk+cI106YQ1udztSUBQJAWLPI5OiTleu7j046lr01qhKA3oVTc8y4yhjApuRRTmBoWHtLbQ76UVJy2l/6uIqw3oucDbIUIF6DQ8DySsD9kXWk40/65G2IFZnJ+ubOM1JxWuCwyDBcV7mwfE3SseytUZUAGHL/adIEfVC1lo7RnwGUycevwyPsz8JjSU77SycCACIsqfgUGJY2weJvOIqwJYjN6logU/8pxaiXBX6j82S1JNedmrJAAuDVLIplfcrgtTMuSjqevTFqEoC1T087MJtVnx8YTMfgDwAOWdQ4Y2+szSMGSdlfijkEDBirl1U9dmQpQOyEsHO7XznpL81cNujTRXVl1xyAbWqqexiAjRiOpv+218wsJx3Pnho1CQAb56vlksoHYXoG2TI8/NB/i/19dIguStlf6rlEWFOL1JZQTgwUL3MVYVUttNuk3W/qMYA24+HB8rH60eKRnE/JOQHAUG+Akp5Whf3XpGPZU6MiAVj71IwzymX1rr4Bk5qNf1mKsdF02ttrZ1KOZNf/aPBym2CfYmOtLAUIhwh9oTHLqwFJUjg6KDBYEa6YOA8+XOukaEIvqlm4GXyy/6qeQ5OOZU+kPgHge6CY6XJF6dn4BwB5+PiWdxqvsfvrHKTuf7RwCNgeGb3Si6wjz/txjQAw2C6qehyxnPQ3mpSMjycKh+h729/CaSoLDA0jm1dZpe1Xko5lT6Q+AVjb0/OhiV3OGwZS1PSnQAGei7vN97yTqUzp6Ewl9txLbYIjE8tZAePXcLvfTb5RrswGjTp5jnDdhNl40elKTVkgAfCrFsWCPnfw+umnJx3P7qQ6AVj58542RfhSzUvP4E9gKFh7c3Uu+lGUsr9RSAGIAPX8oE9spU3weKSJUImtWVrxySFp9zsa1csC99c3paws0HK9VbCy6iv8r2k5pu7VpfrGV2X+3IQuPbXmpeMdu97v38dj4ZH258Ex1CZv/6OWS4TNQazXetIbYDxSeLndr/z1j04MoN16+FbHSWpRtjvOczrKAgHA8ywKZXVsdb/pFycdy2tJbQKw/qkDp7kOfXogJYf9AIADi4rJ2Btr88FEimT4H9UcIiytBlSJjbQJHkcyirAxiOL10u531HPZoN8pqasmzgOstWl5JjMAjgEi+ne+eXI+6Xh2JbUJQGjMFzraVSktZX/1t/8a7g/eYp4ND3Kk7G/0UwR41urFlYBJegOMC4oIvmGzeNADpN3vqFcvC6zhwdIx6pHSkTZv0jMr6wUWhTbdUw0ylyUdy66kMgFY++T0w3NZ+kD/AKfm7T9LMTbGXeb22lkqr6Tsb6xwibDei9QGP7IZGQ7GPIeAZdWAB2J2pApkbFBggEhdMXE+fMpal9OTyxufoTR9vv+6KV1Jx/JqnKQDeDWW1ZfKJeVs25Ge6f8CfFzjncO9dj+ngypJhyMahAAoR6tlltTkQgEFR8NyWt4hRCM5ivBCLUQvB47r6HTVFYt9UrI+nswf7Hy348TogzseUbFOx+m8QcQolPVEM5j5BwD/nHQ8r5SS4fVlvU/PPD6TwRNRxCot388iBVgST43fv+MzypBWjuz8HxuUgi4VYCq1MIjix49qyy8/uJhRUUruO9E4BMAh8JN9NXohiI/MZtwTKZ+FrdQASfjGBJ9c7B/3m5/2fgVdpqZDSsf7bcYhxJYHrbGHFf9+3QtJx7OzdPwX2kls+IsdOaW2B5yK7ITAAFt7U3UeBlFQ7ZADf8YCVciDjYGted+A5cvXL3jfovVJByVa5sCf3X0iecE/qkL+7TAG1vORmulGMSJ5jrA6s5++oePM+Atb7rXQpVQscYcxo1BS5eoA/gXA3ycdz85SdceveqrnbeUC/cr3ORWzcwygXdXwS//18WX9H1cFFcrO/9FOK+hyGbZS/Ytl+6lVsy94JOmQRHIOevi77yVHfUUVCt1mYFBmA0a5mDQUG/vg2ivt4eEGx1PZpEMCALiaYME1q9SswsdWr0s6nmGpyJBewvxvGYdSMfgDgAuLqs2aG6vzCVL2N+qpYgHKdWEHK1cMvhC8WQZ/sXLuBfcaExxvKpU7VbEAlcslHZLYBy4bDOiiunLiPICtTcsJrVG9RXDBhvZfko5lZ6mZAeh9qudthYL6ledZ2HT8naFDVfCt2pnRlwbPdztUNelwxEgwgzIZqEIetub9kaPoH1fOu+h/kg5LpM+BP7v7PKXVf6lifqatVMGRSdETUuwpC0KNMrhzw43xmdU/O1VVSMVfo6sBwwhh48Pzl21YmXQ8QIpmAGLD/+Y4SM3gn6UY6+MJ5vbamVL2N1oRQXe0AcAOW638k7P9uTfJ4C92ZdWc8++pbes/1lZrX2GiQLeVJAEYhYbKAvHVifPhqZxxU9LiIzJArqAysdWfTTqWYam4vdc+0XNSoUiP+0E61v4BoIOq9j8r77G3enOcTin7G3VUPg8QYMPwO4j4/66cf8GqpGMSo8fBP7vzaNbul3UuN8eGIdgPZJPgKLNdl/DVTd+NP7zjF04tJWWBriYYcI0NXle4bG1v0vGkYgaACf+UcdOz9l8kH3+MZvK93kmqjdJz1KTYPdIauqMNNo4W28B/+8qzzr9IBn+xt1bMufhPK888b66tVD/ExrygO9sBlYrHpdhDRQ5wfdeZapM7wWQ5HUe2R4aRK6iCtfiHpGMBUpAArHzqgOPyOTo7Lcf9Dm30szfV5qKKvHJSMn0kdk8VC4BSxgzWvrJt+5bjV86+8MGkYxKj24q5F35DVyvH2krtGyqbhcrnkJJ9ZWI3cjbC2swk9bXOM6Bteg4Kij2GcnBJ9brpU5KOJfEEQLHz+XxOpeLtv97v38Mvg9fbR4KjqSyn/aUfM8ipv/VzGD1lg/BtK2ef9499771Mdm2Khlj2jo+8sOKs8z5kPf/tNjYrdGebzAaMAgygzdZwZ8dJ9JfcgaaQkiQgjBn5oipbUOI9ARK9i1f/vntWNkPvSMvbv0sWgyZnb67NIyJI2d8ooEpFMFFsKpUvlldsf+uqsy9emHRMYmxaOe/CB71t/W+yleotKputlwxK34BUc9liUOfVlRPngplTUxZofIZWdGnfDTM6kowj2TQ2wmfKJeUak46/lDJ5uC94q/1TNFPLaX8ppxR0RztsGD7LQXTKyrMu+NKzH/94nHRYYmzbeN6lO1acdf7HbOi/neN4je5ol82BKcYA2o2Hn5TeoH9WPppzxks6JAD1MwLyRT3RsfhIknEklgCse2LKAY6miwYH0zH4ZynCuniC+Wb1DCn7SzNmqHwOKpuBGRi8ytu27kR56xettnL2hQ/aqHK8qVTvUqUiKJOR2YCUIjAUgCsmzENV5W1a9nXZ0AKMy3ovn5pY96nEEgAD9+OdHboQxen40uQR2tu8s3g9T1I5pGPHqHgFQn2tPza9se8tWDnngs9sPO9zMlUjErFq/oe3rpx9/sVcrX0YzH2qrZx0SGIXitbH7/Mz9V0dJ9mMSUdlVxAyiiXdPTGv35NUDIkkAFsWH1oiTR+p1tKRiRXJxx+iA/kH3olKNv6lEDPIcaDbyrDV2g+C/u0nrJ578Y+TDksIAFgx54Lbyffewr7/uJQLplfRhrih83T1gjspFWWBDAAGYEufSmryKJE7tVYJL+xqdyb7QfJDbf20P9ibqvNQRU6O+k0bZqhiAUwUmb6Bz6046/x3r3v3xzclHZYQO1u+4JIlUx5fdJrtH/iqymVB2awsCaRMjiP0Ziapr3WdxdqmY5nXDywKef3GynUzzkji+i1PAJhB1vBlYZj8l4MBtCkPP4+Oto9FR0nZXwrpjjZwZJYbLzh95fyLr0g6HiF25fEvfcmsmHPh52PPezdbs1XLkkCq1MsCPdzV/hb15/yBpmCTXz20DEABRPSJJK7f8gRg9VPdZ7W36aOqXvLT/y4s+k3O3lyZRwosZX8pQlpDt7fBVmr3220DJ645532/STomIfbE6rkX/cB61bdY318oVQLp4rJBRefV5RPmMzNSURYY+haOxrz+G3oObfW1W54AEOMyrZKfHas3/anh+/5J9i9xjy5QOppEjHvM9enTjIt4YPALK2af/85V5314a9JhCbE3Vp/zoRXOdjrVDA7epMslkOsk/9AT9VkA4+FnpaPUw6U32DSUBcYWyBaVq439WKuv3dLUdP2TPYeQg+cZcE3CS+05irDZtJmLdvwD+lDSGdn5nzxmqHIJHIQ7bBh8aNX8992fdEhC7KuDH/7ux+Hqa0lr19Y8mRFIgarK4Qh/nXlg3RVwmXVMOtF4si4hiOyWgqsOpo+tGWjVdVs6A2DAH2lvU4kP/gCQRWhvr53FG7lLZ2XwTwXd0Q72g78Yzz9ZBn8xVqyYe8FN7IWz2ZgNUiqYDkXr4w/5Hn1n+8k2Y5OfBQgiRqGkJ1Uj895WXrdlCcBzj84qAnRxtZb8NFiRfDwbHWh/6L9Fyv7SYKirn6nUfhRVaievPuf9zycdkhCNtHLBxY9RxT/Jet6TuqMtJQexj29FG+CGzjP0RndSnIayQMQAW/poKy/ZsgSglAve0dGhpiZd+qfAYIa9qTYPNeTktL8kMer1/aUCzODglStnn3fu2nd+sD/psIRohuXnvn9NtdZ/WjxYvVu3y4FCSctxjHWZier6rrNY2dAmnZP5gUU+p47vv677za26ZsvuQCZ7adIn/g2f9veL6BjzaHCUI2//CWIG5TKAoxEPDH5i5ewLPpt0SEI026ZzP+atmn3+BWZg8L91sQByHDleOCHDpwXe1X6i/mP+IJtPuCzQMqAzBAf4cKuu2ZIEoPepA47IZOikajXZDMAlgwGTNzdV5ipNDCn7S8hQcx8AFVutvmvVvIuvSzokIVpp5ZwL/9lUKpfB0fVEWCoEEuGyRU3n1BUT58GmoCzQ+Awifre9bkpXK67XkgSAoT/QXlbaJDj+M4ASebgnONk+F3dL2V9Shnf6x/Em6wVzVi245IdJhyREElbOvehrplp7D4CaKuQlCUjAcFng/xRf7/y0fIzNmWRnhYOYkS/pzkBn392K6zU9AehdODXHTOfVvGRv7jxFWBPtZ75ZO0MV5LS/ZDBDtZfBQbCMPO80OcVPjHerF7z/+3GlNs+aeJsqFSUJSACBoWFxxcR5qOiCcZNuB2+A2NgPtuJSzZ8B0O7cjjY93Ut4818Wob3dO4s3WSn7S4ruaIOten8gzztt+YJLliQdjxBpsObtl/w6GvTPtGG4TrWVJAlIQNEG+GOux7mj/WTOJNwcKAgsMo46oXJ999HNvlbTEwALXEKERDe6lJSP30cH2R/6b1ZlqsnKfwJ0RxtMpfZrXQnOWn7OBzYmHY8QadL7jkv+aL3q6ewFy1RbWZKABBStj5u6Tqf1mf0SPS3QWCCTJ0XMFzf7Wk1NAHqfPWSqUnRWkrX/Cgxryd5Ymwdfyv4SoTvaYAYrP3f7ts5f9q5LticdjxBptPqcD60g3zvN1rzndUebJAEtluMY690ufW3nbGgbJtqqwYYMBt6z+hvTss28TlMTABuG7+5s18UoTuZGHi77+1nwBvvr4ChVkrK/ltMd7TADlYfcPn32kvdeVk06HiHSbPk5H9gY1ipn2WrtmXoSkHRE4wcDaLce7m5/Cz2TP9gkWRYYhIxiQXdPGlRNPSa4qQkAMy5MavAHgAwZ7DAFe3NtHjlk5bS/FqsP/oMPuf36XUve+17ZeCHEHlj3jo+8QC/2zzUV7yndLssBreSwhaez6sqJ82FBiZUFMlA/JljhwmZep2kJwNonpx+ecen4WquO/aWhXwpgDViHUNAe7vHfZhfF3TovZX8tpTvaYAYqD7r9i2XwF2IvLb/oY9t0xZ9nq7VndLssB7TKcFngz4tH6h+X32hzQQ0UA2QA4vqvVjEBg5jm9V0xtbNZ12jiDIB6T3ub1g09+GenQR4aYAewDmA1LBMMLGLlwbh9HHZsDMymdZP9O2qnqaJKtsPTeDP05v9zt1+9e8l7/10GfyFGYNm7Ltkeht4CU6s9LxsDW4fAcGFx+aS52NJTDOL9TRy2IYoziK2CgYWhGJZiQMWAsgDZxicH9Z4Aqku7zvzGfvLLnGZ8KDNo9ZP4uxH1/aed/pcAppc+05IFyMCqCKRCNjogrQM2yofWAawKoVQEUAwnH4f4r/3PcDdN6lSdVpaeW4J5ePB/fFv/9nf2vfcyGfyF2Ae9Cz64ecp9t8wpgh5V5dIhdrAixwm3QMEGeE7PcG6bcgr+V+4naocpQRtYigAdsFEBtBMiIA+ODtmokLQKwcqCYEE0/HKthqbzdxrL9pqi8wHc1aAf7a805U5a++T0YzNZ55k4Zuyy/z+9/MtS/beWYdXQIE8hlBNxTD60E8IoH0r5gI4AFYMQgRRD0U6fx0O/CuzjD7kD43fM+KTSzErLzv/mG2ryY6veH7wdg2duPO/SHUmHJMRYceADdxxEhexjKpuZZitVSQJaIISDMmr2rs4reKreoX249XFmp3lzZlhYQMVgFQMqYKsDKB2gniQEbGgoOSADRRYgekVyoHa91zPjECLDgyZSB5c/tfrFRv+MzZkBgH5Xuaiwrc/Uf7jhwR4vD/LKwlAEpUM2yofSPlgFgA5AKgQoApSBJgtNgAbwchZF9XV+xt/+h1NgGCb7lYnzyVNZ1WGk7r/phtr72pq/QtcqC2TwF6KxVp37/pXdD31jgUv0qCrkO23NkySgyTKIsZk71W3e7Pg/St+2PrsKXJ/uH0aAAgFwAOsCpkg6AsCArv9ZApmhF9f6zAHpALHyoZ0ARkXQFILJQsEAiqAYAA0lBVHMyBdVuVox5wC4rdE/Y8PvoHsY6vhne/5UytKR3iDHFIGckK0KAe0DOgCTD60jWAqhlQGTrQ/whJ2ShRFOmRRMDQ+0vSn+yNQPO23Wk2O3m40ZqpCHjeMXo1rtbb1v/+DSpEMSYqw66KE7T6V89mEAWQ7CJs3himEWCobJ3tp+LR+bWaUrnNu7D9hpSXt45oAxtF+gvpeAdPxSYsA6ACsPSoXgoSVtLmaV4w2anxY+09vwvQANv3367u45TjlYyFV2KUCkImhq8CC/Ky4beOTYBTM+xyuyk3XBys7/pmLUTzKz7Nlq9cxV535QevsL0WQH/fhb71XF0j0cReA44b71YxwBGOA8TnIXmRvbv0YhMso2atgc/pidlwL4b5ODTEwue9jhkTm8Z966TY25+EuXbiz3RXtuuZ9ctw9wfLjKQkFBs/Pyrn3W9WyokYM/ALjWwzc7TrHP5abL4N8C5GqQVjBh8D4Z/IVojZVnX3JvXPU+qwoFWQZoMgZQJh+/CQ/XPwvfaMuqgUvKw2vYZqjMsL6/rf57QMOBMgVya+1A7jDdyV1qTqMuPayhCQADsIQF4OYN8ruS4whrM5PNzZ2nqlKCHZzGDSKoQgF2sPq51fPfd1/S4Qgxnqw+++Ir476Br+mOtqRDGQcYDlncXJ1HO0zJZKgFsy47JwcxgIihiM5t9GUamgCE1x90uOuoo4KwtbvuCYCyIa7rms0vuF0qy3FLrz8e6Y42xP39t6xc8P4rko5FiPFo1fyLLjN9Az+TboHNl6cAi+Pp+rv+KbZIrT8tsOYx2PJpvc81tilQQxMAw9G8bJ60aXHVXd56eDp/aHxP+5tVu5Vd/03FDN1WhukbfGxVbsX/TjocIcYtInj91QtspbpclYqSBDRZSfn4dvVUvTKeHOcobOm1w4jR3q47TNU9pZGf29AEwALnoMV7UhQYMbS9fNJ8BMpVDkvNf9MwQxULMLXaOhvweTj9S7IDSYgEbTzv0h1RaN7DYVSlbFMPjhv3MojxIjrUbbXZnEHc8oFGa0CBzmnkZzYsAaheM+UAIrwpCluXhTKAnKnhR+Vj7SOFw52ykdP+molcFxzHEYfx+avPvbDhTSmEEHtv7YKL/2Rq3qWUcQHV1PPdxrX6hkAPD/gn6KejQ2ypxS3mPZ/BzGeufqRxRwQ37G5h7Z5WKOp8ZFo3BGdg0K/L5uoJc8lFw4ozxKshgirmYT3/s6vOvlh2/AuRIr61MZIAACAASURBVKvffsl37WDlat1WTjqUMU3DIoSrbqzOg2Fl/n/27jxejrLaF/5vPU9VV1d1770zEIYAmYMBUVEkoiAyyOzsUTwqzsjgeI94zzn3eq/3dXjPe171OCuIxwgIEoSDDJkIhHmSSRREpgRCmDPt7t49VT1r3T82UYaE3b27q6t3sr5/oZ9d1euT3Uk99TxrMD2cDtRoCMLQzKCieUO37tm1BQABx3TrXq3yXQ2LJr1NtOwvZQLYoQG4TaXfrn7Hx36cdThKqZd7bdn/SjJcutkOFDUfIEVFquHG5j7ekvobZIB6l3MmAhRCA4Lt2rO2KwuAJ87cNRSht3EPt//z0sRjud2SX0w5jLTsL0UiMIUQrjTysBsZOSXrcJRSW3fJCScwVZsnulp9mPKaD5AWAuAbh19Uj6WNbqA3ZYHPayYCET6qW/frygJgsvP3DwPao5n0ZgFAAIhj/sGUo/GMN2S17C895HuQOHHC7sRHP3hyKet4lFLb9sj7PrFaGs1TjK/5AGkK0cQDbg97Xu0QKaJ3ZYG1msAQXv/knTNndON+XfmGCJu3mxyBe7QBEHINt0UL+HdDC80Qa+JfmkyxAK7V/s/qYz9ya9axKKXGtvodJ17gSpVf20E9CkhTkeo4r3YYPeR2S0LqzeTzxAmGBm3QbMpbu3G/7iwABIejRy/hFoJELH9np+PQNL6xWvaXjucn/CWbhm9a/Y6PfSvrcJRSrWOSL7pSeY2JoqxD2W7lkOA5GbK/rB4FH73rfkcEwNCR3bhXxwuAyhl77krAG5I4/ZWmAAhcFZcOvpGvKyzwBrXsLzWU8yH1+giTfEr7jSs1saw57sSyOPcZQPQoICUCYJBquLy+0NwWv4oHetQhsN4QQOiQe+9d4Hd6r46/GeTMm6PIFJo9KP/bUvb3/anHUE7f/FNlChFcvfG1R4898cGsY1FKtW/1cSeuciO1n9rBYtahbLcMGDF887OR46gplk0PXkkbTYGfo9mFavXVnd6r4wWACA4dHfSbPt/V8KvJh/Jf8nto2V9aRGAGCkg2Dd+05viP/SDrcJRS4+fF9X9xw+VHTdjmHHvVsiLVcHNzb3tF4wAe7Oa0wG1gBgaLBIE5pNN7dbQAEAAkcnAvzv/z0sTq3HT3i8mH6bS/FJHvgevNpsTJqdpZSamJ7cH3fKbCnHwBxgBG/0KnJUcJflk9mtb3qCyQGTCCbBcA9R/tOQuEfZspn/+Plv0l/P2pR+NZb1DL/lJkikVIs/HdNe/+xJ+zjkUp1bk1x33sCleuXKgNgtITUhMPJrvb82qHSrEHuQD1hgDAgU/csWvYyX06WgAkBgdEkc0lKZ//h1zDrdGr+L8GF9Kg02l/aTFhHm54eE1k5dtZx6KU6h5xfLqrVEuUy2UdynaraOo4r3aoeTCe7sKUpwU2Y0GQo93rEu7byX06WgAQzMHdnSf4chaMGB5/Z6fjKTaesfr4TwcR4FmQc6ffe/THqlmHo5TqnjXv+vjj0ki+bQodvTCqV5BDgg0yaH5RPQo+Ek7zwIUZKBQInsibO7lPh49veXPa5/+Bq+GSwTfy9dECO+h613FpR2OLBbjh8sqHj//Yf2Udi1Kq+xKz4Qdu8/ADJtRFQBq2TAtc0lhob24uSP0oQBiAyEGd3GPcC4DKGXvuCqF90qz/98Vhkx3kH0w9hoJedRraEVkDrtfZCH0161CUUulYe/yXmmD6Z7IG2tsjHQaMBB5+Xj0ODfE4zR3rRlPAoP1vv/313njvMf4dgMS8vhCaQpxi/1+fa/jPyYfy/cHuNuJ0z1R2ZLZYgDSaZz/8jo/ek3UsSqn0PHL8Ry5NyuXrTEE7BKalSDXc2nyVvaJxAA+kWBbYjAWexaxpdv388d5j3AsAIhwIL72k0lCaeDjY3Z01+VAzyHU9+U8JeR5cZaSaCP2frGNRSvWA0P9AnGiHwBQFz5cFPpsMco7S2b12DhgsGsuxOWC89xj/N0BkIVJqxkcAwAn/YMrRWO8NmpyW/aVDRjv+SZyc8dg7Pro263CUUulbffxHb3a12mW2qLsAaclTEw8l0+15jcO4gPT61hgDGNDCcV8/noueOHPXkJlewymc/wtGy/5uKuwtlwweQEOsZX9poZyHpFwZlsD+e9axKKV6R3z7Da43dBcgRUVTw/kjh5gHkt1TKwtsxgAgbxzv9eP67Q81gvm+h93jFOr/PTCa8Ph7U49DYjxjtHFFakwhgiT88zVv//CzWceilOqdNUd9+E6uNS6zmguQmhwcNmLQnFU9RryUygKbTQGAVz1xx65Tx3P9+JZ/Bq8P8gauy0cAo9P+avivwYV8feFVdkDL/lJDngdXKpcTwz/MOhalVO9Jzn6DG7oLkJbRssAqljTeaG5q7s1F0/3nWZwIwryZ1HDBPuO5fny/ecH+aTQACiTBBm/I/XDq0ZTXc/9UmUIEce7sx4898emsY1FK9d6aoz58J9cby3UXID0GAgdrfl49Fg32nKXuvjWLAGHewBK9fnzxjQfhdUhh3oHHdfxy0mHy12C6DbXsLzVkLVyl0oARnfan1I6M8B1JEu0LkKIi1fCH+FXeZfUDZCCV5kACgbxhPFe2vQDgf9+rCJFXdTsBMJQmHgr2TH416RAzyLr1nyZTCCGxu2z1MR97JOtYlFLZWX3ciat4pHqHjgtOV0AJ/rN6ND3rhly3ywKbMUBCrxnPtW0vAKqFxlzP0i7dbAD0t7K/qUdjvT9ocpL+OMUdFhG4GYON/CjrUJRS2ROyPyZv3M3kVAvyaOJhN92eWzuUoy6XBcaxAJA5T9wxv+1EwLYXAAJ+dZA34C4dZWwp+7sx2ocvGXijGdJpf6kyYR5crd756LEn3ph1LEqp7OUq3sWuVHpKJwWma8DU8Nvq2+xf3R5J1MWywMQJgsBMirmxV7vXtr0AMGJeB4OuPaS3lP19d6fj4Iw1Rh//qSLfA4z9RdZxKKX6w18/+MEREZyvxwDp8uGwCQPmzJFjYLtYFsgMRCGB2LQ9Grj9HACSfbuZABi4Gi4aOtDdWNjL07K/dJHvwQ2XNwXk/S7rWJRS/UMcL3IjI4mWBKZny7TAZY39zY3NfXigi2WBRAAT2s4DaOu3LYthCDRPutQAKPd82d8PphxttOwvfaNjQOXS+485YVPWsSil+sead37sPm7Gt+guQLoMGAxjfl49DjXnse1SP/0kAQxh7/bjaUP16d12g2CPpEs7ANbV+ReTj+CHg1217C9tRJA4hoicm3UoSqn+Y8icS9ZmHcZ2r0h13N6c713WWMgDptaVQ+9mIgAw9957F/jtXNfWAoB8b3aYo8h1oQIg5CYeyu/Jv5p8iBnQsr/UmSAHN1J9eGjayPVZx6KU6j8c06VJqVzWioD0BWZ0WuAzbsgFXSgLTGJARKYXKyO7t3NdWwsAZiwwOUKnz38DAJLw96cei022aH0t+0sdBQFAdOndB5yiZy1KqZdZ8+4PP0vASj0GSF8eTazh3ezZtSMkQqPj+zkWFEITgDCnneva2wEALUAXUhfzXMMNhVfz7wfeYAZdtfMbqldGBK7XIaBLsg5FKdW/SHBx1jHsKIpUwwXVt5r74j1dRJ0tAkSAICAQTFulgG2mfNJeneYsWDAa8Pn/3+l4YmO07K8HKMiBa42H1qwt35Z1LEqp/uVsfqUeA/SGD4dhFM2Z1aNhwR2/WxMBAryqnWtaXgCIABDMQocVAIGr4sKhA/mWaL4dcN3tiKS2zgQ5wGA5TtHtf6XUtq05+v3PEegGkw+yDmW7t2Va4JXN/e0NzX2STucEJA4gonntXNPyAmD45zMmCTDddXBcn5ME6/0p7kdTj6a8xOO/kWodESROAKFlWYeilJoADJbCaj+AXjAQCAg/GzmOquJzJ9MCk0QgjFnSxjt6y7/lEG53YzAp6SAD0HKdz5x0uDyS28VGWvbXE+R5cCPVDQnjlqxjUUr1P2PM1a484rQpUG8UqI474vn20vqbeIDGXxaYJIAQpj9+y/TJrV7T8m84Zm9GGBg73hkAoTTw1/xMWTTprWaQu1P7qMZGQQ4EumXtOz6yOetYlFL976Hr73sAzv3FBDoboFdC08Qvq0fTk27yuMsCHQuswRC8YHqr17SRAyCzYcc3A4AgADN/f8rR2OQVjZb99Q5ZAwhdk3UcSqkJ4lvfEhbcQH5bPWVUBwLEeJR3sWdXD0OE+rhes5mBQmgsDLfcC6D1PR6iWeNJU9wy7e+a4r5y+cD+pNP+esgQuFqDI6fNf5RSLTPGXCvdGvmqWjJANfyu9la6N5kp4ykLFAE8D3AOs1u9puUFAAlmjacE0AejhoC/O/U4iCEt++sh8nxwM17XLOfuzToWpdTEYUF/cJVKQ1sD985oWWDBnDlyNAx4XNMCjQWIaGbLP9/ynUl2b3cBIAByrobFk97Ct0bzbFHL/nqKcj5IcNeTJ5ygf/BKqZY9eMyHHiOhByinxwC9IgAGqYaVzTfQ9c19xzUngB0AxoxWf76lBcCDP5yRI6FdpM0KgEASPOtPdj+Z8naKRLP+e42sAQzdmnUcSqkJhgiA3EG+NgTqJRotCzQ/HzmWRpzPXptlgY4BGNmj1Z9vaQGwm98YEsg01+YOgMd1nDHp7bI6t4sNWev+e4oI3Izh2N2edShKqYlHiLRzaAYKVMed8Tx7SfMtrt3mQIkTkNDOq1a9taWzm5YWADnOTQOo2M4UwJAbuD8/Mzl70sFa9pcBsgZSrVUt0f1Zx6KUmniMoz9yrQ6YLgyAUW0JTRO/GjnSPJFMcbk2ygKdA4Qwba7/2EArP9/SAqApZloUkGn1+T867Y/5e1OPw7AXadlfBsjzIcDqR25+4MmsY1FKTTy+Zx/iZrxJEwF7L0CMtbyzPbt+OEdotLz3zgxAZKhpvamt/HxrSYBCu5CllpoACEan/V1dfK27YmA/M+j07T8TvgcQ/QXf+pb+8Sul2nb/MSdsIsLD2g8gG0Wq4aLqwfbPyQwutFgWyCzI5YzvmWSnVn6+pQWAIdkNprUmQD4Ydcq57+10LIG07C8rZAgQaPmfUmrcROh+8nQHIAs+HEqIzJnVY0FgphaepSJAPkdgQvcWACDZudUmQDlXxW8H3yJ/COd6WvaXHUkYxuC+rONQSk1of0HHg2rVeAhGdwGuauxnrm20VhYoAhgDWMEurXxGSwsAFtq5lRf5QBI84011P5l6JIVa9pcdYyC1GoRpddahKKUmLhL8VToZAas68vy0QPOz6vEY4cC1UhZoLUCGdm7t/i0gkmljLQAIgOE6/3zy22VNbmct+8sQGQNO3LAU7bqsY1FKTWBEj41WAuhkwKwUqI4/xnO8i+tvkQGqtnAFQUDTWrl3i79VmjpWF8CQG7gvP5vP0bK/7HkWRHhy9VPYmHUoSqmJi23yhDhXIl0AZCo0TSyqHknrkqljTgtkFkCkO1UAAgAiQ5BtP9INABHh/5h6LEpeqGV/GSNrAcITOOEEneahlBq3Pfw9NhLwFDQRMFN5xHjcTbNn14/gcIyyQBaAiLqzAHjy67uGAAZkGx85WvZXxVXF1/CSgf3MkJb9ZY6sAUCPZR2HUmpiu+Hwwx0gT4/+m6KyIgCKpobfVQ+yf0pmvmJZoDAAweRW7jvmb7UwaPIADbhtPNV9MGomcN/d6TgQYFopVVApIwKD9PxfKdUN6zQHIHs+HCoomDNHjgXJtssCWQAWGXyFTfu/GfO3OjgQRkQSbetmOVfFeYMHye3hXK/IWvbXD8QxyDntAKiU6piQeZKMHgFkTQAMUBUrG/uZq5qv3WZZILOAiIqP3zI9P9Y9x1wANONkQEC5rS0AAonxlL+T++mUI6kgrXUqUikjACIgS09nHYpSauITkqexrTNg1VMEARHMmdXjqOzy7G+lLJAZIJLIhX4w1v3GXAA45oJnYGUraw3DTf7ZlCPlsdw0m9eyv/5ABIljsNCGrENRSk18RvCstDsKVqWmQHXck8y2FzcO4gFUX/ZkZgYAisK66XwBQGQi39LLigAiruPP4Wz5zdBBZohfHoTKCkEaTYa1m7OORCk18QljPUQA0o6A/SKkJn49coRZ66a5PL345VsEEJFAQi8a6z5jLgAYEpmXLAAMBCLg7005BmWbN55uD/UNGv1L2qC8DGcdi1Jq4iNrhyWOtSNwH8kjxuMyzfy6doS8tCxwtHcgLIQ7XwCQoPDCX/yWaX9XDryOlw/sZ7Xsr88YAgi1oGZGsg5FKTXxMUtF4gS6AugfAmCQqri49hZzdzxHXlQWKIA1ZJscd54ESIIQL5gE7INRpTx/d+qxZDCalKD6CBFEqOrqZU3KUEp1zKA5IpAG6RFAX/HAqCA0Z4wcAxH5W1mgCOBZAmLThR0ADy+6Sc5V8Zuht/Kd4Wxb0LK//mMMCFI1zUEty1BKdcwnW4Ug1hyA/jJaFljDNc3X0VXN1/HgC8oCjQEM2B/rHmPnALDktvx3IDGe9Ke5n059OxVYp/31LaL63qL9mJVSnWOPm4QxGtCrTBAEhsScWT2Wypx3PjEEgOcRHNnOdwAEFIJGT38sN/DTKUfJ4/5UmxfdYe5HRASINC7ROQBKqS6IYxMLpAajOwD9KKIG/hzPshfW3yoD1F5F3tj9HQUhMDrt74/hXHfe0Jt12l/f0706pVR3+M2GAGPNg1VZikwTZ1cPp8eSnVweMcxo3t7gWNeNvQAgMCAQEf7e1OMwYvM67a+fjfbsbmVotFJKqe1ADjGe4Kl2Ue0oydPo8TyRjNm/uYUqAPLANawY2I+vLL6GBrXsr++JntcppdQOZYBquLj2ZnNXPCcpUB0AjfmoHnMB4EkyICbCaNmf6LS/iUAPAJRSaodiwagib35eOZZYAN80O18A+MlGuWjwINwVzrYF1sqyCUHYyzoEpZRSvTVANVwXv9aurO+H3cwznTcCuqmwP/9s6pHQUb8TBDMINGb5h1JKqe0LQWCJcWb9WNztFoRj/fyYC4Dr58/H07lJ8EWPlSeOrQ1vVkqpcRI9WJwo8tTEg83dcfHaI0pj/eyYC4AvDl0aH+XfibLoS+WEQRTga1/Tv7BKqc4V/BwRIrC+V/Q7AjBsIry3dDu+seasMcv1xq4CYK6dHC3DIFU5wZhVBSpjMvryHywwRvMAlFIdqzfYF+g//hNBkzxMjUv85Q3LYYwd8/k+5g+s50m0T24tPpS/nisy5pGCyhozhCXCvjvnxv5hpZR6ZQE4AsHXk8X+RgBKJsBnNl/Hu8TrUPcmd14FwARqIMDHw6tptnnK1aHPlb4mAhAiL5o85iAIpZQaS+IXIhLkRBcAfW3EBNin8WRy0qZrDMyYBQAAWmsE5BrsYRdv2J4UrZCGVpj1NxEQId/Ix5q0oZTqmHFxkXzPQHvA9C0B0ITlr2xYhklcMoAHMaY81nVjLgCswTAEKEuId+X/YN6Ue8DpUUD/EhZAkEedxuwDrZRSYyFgkHxfn/99igCUbYgjRu6Td5fu8Bpm9N1PhDtPAtzCiUFAiflctEQ8JMytX6p6SkC+Z5u+rwsApVTHRGgyjNHq4j6VkEHgmnz6hqWwYDBo9FdFGLN2f+xxwMyVLb/3soR4c+4B8878H7gsoRaG9iMBKJeDFUzOOhSl1PaApuko4P40WvYX4h9Lt7oDqg/amsmDCBAnMGRqY10/dhIgTPOF/zuGbz4brcA0GnZNaD5A3xEBjAG5ZOesQ1FKTXxMsjMZ3fHtR3XysUe80X1x4wrjTA6C0WHwjgGwNMe6fuw6QZYKy98nzNfExzzvKe/EaJVUuLVMQ9VbZAhi7C5Zx6GUmviIsIue//enEZPDaRuvwh7NZ22D/l745VjALGP27x97GqCHGvOL/7+yhPjH/HW0j7fW1SQYR9gqVUQgyPSsw1BKTXwE7NZCPpnqsYrJY//aGnfi5hupaf5e9EUgOEHi5dH5EQDgqnHy4kbQsVhMtiP25GipJGJY20T3F2GGgHbPOg6l1HZhN20D3F8EBAH49A1LpSA1E9MLHuUEAJIwbHWs+4y5AGgKVZNE/nYEsOX+ZY5wTPBHc1jwZ00I7DeOAZE9sg5DKTWx7XrpmaEIdpFEdwD6BQEYtiGOL/+Rjyr/ydTNi5+/ZvRn6km92vkOgJ8zI44lIXrxI55BMCTmlGgpFVDnRMsC+4Y4B4B2nbHkh9q2USk1boXBaAoB06BHAH0jJotBV3Nf2bCUQGT4Ja/fRAALas/Vws6TAF3FVQjUoK284lckjzf4q+n94c1ckkh3AfqFcyDILnl/2tSsQ1FKTVzcMNPJ90LRI4C+sKXs75ObrpdX1x+zNfPyHDxjAAJV3BPceRIghGoiMrKtKpAacuZT4Ura0zzn6tD28/1AWADPK8QxNBFQKdWJPSkIgJdmgqtMVE0O85pPJ6dsvpqSrTz8gdEdAIGM7PXjtZ3vAHDMNSKqbGsBUJcc9vA22E+FK6XGuuPcF5hh8nlYD7OyDkUpNXERYz5ZnQTcL+rw+MvrV2BavMk2aRt9eIhgiEqt3G/MBcDsw9c1RKRsttEJiiCoSIj35282+/sPuxHR3gD9gKyBsOyVdRxKqYmLgFdlHYMaVbYhDq4+KB8o3WYa9hXm8YzuAGxq5Z4tZe4Rmc2v1AgqEYOCbZhTo6UgES0L7AsCgehfXqVUJ+ZLMmZLeZUyJgPLCX91wxLkEJtXTLo3AAEbWrlvi6n7smGsTpBljvC24F46Jn+nJgT2AUkcSHT1rpQan31XnBMJZLYuALK1JfHvH0q3u4NH7rc1M0bZPQEAdXUBsH6sWRACwMGaU6JlmIwyN6HnRlmSOIEQ5sy68EydCqiUalujYfckol21B0C2GuRhWjLsvrxhuWHjjd2VWQAhea6Ve7e2ADDmmZf2AdiaqgTY21vnfTi6njUXIFviHMjYnb3BcFbWsSilJh72aS8TRVYrALJVMXmcvPEamdN80taphUR7AcDUvQUAOXmWW5wFXUGIE8NVNM8+5WrQqoDMMMNEIZjt3lmHopSaeAT8WvJ1JzdLVRPgNfW17tObrjXxKyX+PY8AgAEQnmnl/i0tABInzzADLWwCoCkWO9mSPSlaJjG3sF2hUkPWgAxen3UcSqmJhwT7ib79Z0ZAiGH4KxuWySCPmLiFY3UiII4FCZv1rXxGa0cAHj0Tx63l9m+ZE/DO/B30ltxfkoqMvWpR6ZDEQVh0AaCUao8sNgDtK7EmAGaBAJRsiCNH7uV3lO8y9Rbe/gHAGkIj4Wbgue4tAAy752o1cdRiyiCD4IHt5wpLESBmp3MCMiFxDAheve8550Rj/7RSSo2asaQyU0hmQxcAmUjIIHJ1/ur6JWQgL+v3vy2GAAMM1xu0saWfb+WHmjn/OYFUttUMaGsqksdC/0HvXflbpaxlgZmQxMH4dvfyFDM/61iUUhOHT/nX2kIhEB0C1HOjZX8RPjp8C7++9oitmtYT6q0FBHju7s0zKq38fEsLgIeeSkoAPee1mQ/SQA4nRVdiV7PRNbCNtoUqPcwwhQi+wf5Zh6KUmjiIsJC80aeJ6q06+ZjRXO8+v+lKcqbNRPrRl/RnD/9/bmhp5dbSAuD449c2ifCste29x9fExxzvGfvx/NVS5a0PLlBpIzBwYNZRKKUmDiF5k9b/Z2PE5PjzG1fKbs3nbIPaHLBnADK0ro0fb41AHm93JgQBKEuIE8IbaF/vMVcVXQT0msQxiLAw6ziUUhPDzEsWDQnLftKMsw5lh1MxeSysPcIfGb7RNO04UrcIAMtjrf54ywsAEjxmx5HLF4vFkK3ZUwtLhYV0TkCPcTOGAAtmLls0M+tYlFL9z/f915ownKotgHtr9Nko/NX1SymUhonHkzwvgBNZ2+qPt74DQPJYi72AXoQAlDjE23P3mMODP0pZxuhjrLrLOXjFYuAh0F0ApdSYhOhgk88B4/kHX40LAdhsI7yrdKccUfnz2P3+t3YPApAIDMmjrV7T+gLA0Zo4bq0Z0MuuBQGGzGmFZVJElVtpaKC6yBqwyGFZh6GU6n9i8DZx2gCol2KymJxU3D9tXA4hg/HslBsCag1xPqWQA2DFPF6pMo81FXBbRjjAa71HzQnhjazNgXpLmjEM5GB87Wu6+aKU2qYZV5w3iYQPkEYj61B2GASgZEKctPlaXlBfa2tmfLlyniEwY7jWcE+1ek3Lj3Nj608KY9i20QvgparIm09EV9NM84xroM3sRjVu3IwBY/aeddCrtB+AUmqbfIuFJoqmaAVA71RNDq9qPOlO2rjKJmb8L8fWAkR4cuifntzU6jUtLwDOuPypTQJ5wuugnL8pHnazm+xnCiukzjooqGecgx0oegbm0IwjUUr1MWG8nXJ6/t9LDXj48oblMsWVTJM6OB43BEAea+eYvuUFwLe+BTGERz2vs13kMod4b3AbHZB7MKnoyODeEQFBjsw6DKVUP5MjpNnMOogdRsmGOKR6f/K+0u2m0WK//22yABE91M4lbZ3oC8mDXpvNgF7KwSAwsT0tWgIrzK32OFad4UYDAhwye+m5A1nHopTqP7OW/HY+WfsabugCoBccGficuH9evwQ+nOl4Zo4AQniwnUva+kRm84B0YWuowiEOyt1vjg/v4LLonJpekDiBjaKdieUtWceilOo/FnyUHSz40BHAqRvt9x/iQ8O3ypuqD3q1Nvr9b/V+W0oAhR9o57q2FgBk5YF6Q8ZVCvhCAiCBZz4bLqepVNKywF4QAfkeYM07sw5FKdV/hOR4aPlfTzTIw27xZveljSuIjdfxyAVrCNU6N+Fa7wEAtLsDQGZ1tSa1dmcCbE1NctjLe8J+NLyGK6y5AL3AjSbAOOqtq1bpiksp9TezV1w8DUQHcV3L/3qhYgI+dePVMqP5tK1T5wnxvgEEeCqAabkHANDmAmDO/mueBOQJv0uD/UYQ4iPhtbTArnM1nROQOmk0YfLBQHhBqwAAIABJREFU/CcaTx2QdSxKqT7i6kd6A8VBbf+bvhET4HX1x/gTw9dT3EHZ3wvR6Ev5I+ZLa9tK4GjvCIDgiOgh3+9O4l5TLKbYij25sFwSGV/3I9UGEZgwAIHelXUoSql+wu/Twr/0CQgOxKevX4aiq9q4k7K/F7IACPe3e1nbaYfCuM/rUswEoMwRjg3uNAfn7nMVnROQOmnGEHbvweLFHaacKqW2B3svXzzZkDlcdPs/VYTRsr9jyvfI8ZW7vXqnZX8vvT/Rn9u9pu2HAAF/6maSKINgScznCksljwYnnZZCqFfE9QZMmN97zmCiw4GUUoi5eZwdKE6WWMf/pikmi2JS469uWAZg9NnXDYYAbgpI3L1tX9v+x/F9lapgvDMBtqYieezvP2zel7+Fy6xzAlIlApPPQ1g+mHUoSqnsidCHpOM8dPVKRvv953Fi6Sb3mvoaW+2w7O+FPEOoNbnkEr+tJkDAOBYAiWcejmN+rtOOgC/VQM58OrqSppsN3NQ5Aanieh0Eef+MB5doP2aldmB7/f783WDNYVKrZx3Kdq1mfMxuPuc+t3GlceMc9rMtngcQsGbgy2uebffathcAc9/4aElADwZdSgTcoiY+ZnrP2U8Wruaq6HMpTdKMYQeKM4JHht+edSxKqewkgXzADhYLOvwnXTXk+IsbVsgu8UbboC6V0W3hEWDaP/8HxnUEABDhHr/LL+lbEgI/kL+R9vNWu6rOCUiPCMgYsMinsg5FKZUh4U9IrKV/aSqbPN5ce4g/VLq1837/W0MAC+4ez6XjO8kXuiuNbpExDIpUt6dGS0UgrGWB6eFqDbDm2DnLf7tH1rEopXpv7vLfvtnkw9ezbv+nhkEwwvzV9UsQSNN0O8mdCJAmAJbeLQBI3N3dTgQEnt8FkAiH5f5sjgru5rJEugRIiYyOCI7g+BNZx6KU6j1x7lQT6OjftBCAYRvhveU7+JCR+0zNdL/M3beEWoNL8GzbFQDAOBcA5VrpgTjmp/0uJwICo3MCmIw5OVpOg6jonIAUcb0BIvnMHqsWaRtGpXYge155/m5k7Xu5Ws06lO1WkzzsFJf4nzYsJ5Bn0lhmeR5BCA8MnLbmufFcP64FwL6HbR4hovuCXDrv51UJsK/3mP3H6AYui5YFpkUaDdihgZl+039f1rEopXrHT/gkO1QsavJfekomj89uvpbnNdbZmkkpsd0CAN813svHvYkvwB+8LiczvlAVeXwsvJrmmqdcHVoVkBZxDMPy37KOQynVGwuuubBAoJP17D89VZPDPo11yac3X9u1fv/bxPSH8V467gUAEW6NE3Q8GnhbGuJhFztsP1tYwQ1OcaWxg+NqDaZQOGDW8vO1JFCpHUCjEZ9oJw1Ml0Zbc2NUiwRAE5a/smG5TEpK3ev3/xKWgEZVWNjePt57jHsBYMXcVa5wV0YDb82WssB3BH+wB/oPuIoeBaRDBLAGlvlfsg5FKZWuBRde6JOTr0hT2/6mpWQjvL36F3536Q7bsFFqn5PzCAnz44X57oHx3mPcC4A9Fq5eJ8Bf08oDAAAHQmAS87niEvGQMOucgFRwpQoThUfMXXbu27KORSmVnrgQf8ibNDBPt//T4cggdA0+ff0SsmDjUqxjI59gCHea49sbAfxCnT1RGbcGKR/PlznEgf5fzTuD27ikuwDpEAFZCwj+V9ahKKXSMWPJD3Mg+Zo2/knHaL//CP84fCu/sfqQrXWx3/9WGQCgmzq+xfiv5pvSaAj0Uk345rPRCtqZNrsmNB8gDW6kChMVjpi97Lwjso5FKdV9npn6STtpaC99+09HnXzsHm9IvrhxBTmTS3W8kiHANQQJ860d3aeji61363CZ47TyALaoSw7z/KftidE1UmUtWU+FCGAIxPytrENRSnXXgmsuLAD0P6XRyDqU7daIyfFpG67C7vGztkHpDrTLeYR6k58eMIV7OrlPRwuAX7xh9Wrn8EA+xTyALSoS4sP568w+3uOuJroISAOPVGGHBg+cu+Q3OipYqe1Ic6T+ZW/S0J5c1wVAGkZMgP3ra/hjwzeaZoqJf1sYn0CgO+jzfx3p6D6dXPwtgliDG4IePI+bYjHJVs3JhaWSiNE5AWlJEojBt7U7oFLbh/mX/3o6fP+rPKJd/9IgILCAv/rcUkRS63q//60ygECu7cJtOuTkOteDPIDRssAQR+fuNocFf+KydL+vsgK4Voc3aWhevu59OetYlFKdY7Lf9AaLQ9LUuv9u29Lv//jKH/nIyj2mnnbTH4ye/yd1QSL2+o7v1ekNGtbeNFziWppdAbdgEIjInFpYigLq3JOV1g6IR2oQz/sfcy7RSYFKTWRzl577JgqDT7lSJb2ubTuwmCwGkxE+fcMyAhnDPXgtDXxCI+bHNq2P/9TpvTp+gs5fuHqdiNyTD3rzMB6RAK/31njvz98oJUn/rGVHJM0YtlgYRM59N+tYlFIdEPoR5XygF+VaO5jRsr8Qn9p8nexTf9TWTG9OTckngHDz7G+s6ziho0tPbVqV62G7/hpy+EzhKplhnnUNpJttuUMiwJUrsMXohDlXnHN01uEopdo3d8lvTrOTBxdyRc/+01AzOcxrPO1O3bwKSdo1/y8ldGU3btOdBYDwVfV673aY6uJjutnofSpaKXXWQUGp4OerWK334+mLF/f4262U6sTcpefuTjn7ba5p1n9aavD4SxuWy9R4s21Sb/rTeAaoVTm27Do+/we6tACoJfnbR0bcMzm/NysAAlCWEO/P30JvyD2cjIg+n9LA1Rq8SQPz8wPNb2Ydi1KqdSL4iSkUJmndfzrKJsTB1Qf4A6XbTMP2rkNtLmcgjHvCL61b3Y37dWUBsPfBD1aIcF0Y9i7JxMEgoqY9LVoCAnMvki92RFwegQny/zRnyW/eknUsSqmxzbni3A/ZoYH3aOJfOhgGniT83zcspRwS43qZjO4BDFrZrdt1LXIiu6zXX7WyhDgkd585NriLyxLpEiAFkjiQ5xky5pfTF39Xt1qU6mN7/v783Sjn/1ia8Wh3T9VVo2V/IT4w/Ac+aOR+W+tB2d8WhgBuCizJsq7ds1s38qxbtXnYNTyvd49hAeDgmZOjZZiMMsdIZ+7yDo0ArlZhJw3sHQ7s/G9Zh6OU2racz2fYYrSTaMe/VDTIw87JsPvSxuXE5KXa7/+lch6h1pB1+Xp8e7fu2bUFwPT9H1vrmO4I8719D69KDgu8dd5Houu4zDotMC2uVIGJil/WqgCl+tPsK8491U4efJdu/aenbPI4eeMqmd18ytZNbxPQTY4g4FXm9Ce7Ns2pq4cXxsgVfg93ALaoIo+P5K8xe3lPuDq0KiAVzKNjg3P+r2ZffM60rMNRSv3d7MvPebXN577H1bpu/aekagK8tr7WfWrTdSbu4db/34zOa7usm7fs7gLAmiWlMrPpcYO+hniY5pXMZ6Pl0hAPOicgHVyrwRYL001ofpV1LEqpUXusWhQY3z+PgiDUdr/pEBASNnz6+qUyKCOmSb09bs55hGrVDTs/f20379vVR/Ueb1hzbzPmv4T53q4ARucERDguuMMcnPtLUtGywHQQwQ2XYScPvWPO5ef896zDUUoBubr3IztUfB2XR3TrPwUEoEwhDnX3JsfX7qa66f0cGi9HANP1gyc/tKGb9+3qk5oIQkSXBUHvv4QMgk/OnBYtQSAxs84JSA1XRmAK4b/NuWzR4VnHotSObPblZ3/SGxz8rCuVoRuf6UhgEEqdT520hCQnEMngD5oAMbik27ft+lPSGrm0WmX0+hgAAEYkxEL/Ie894a1cYp0WmBaJE5AxhvLhb+YuPXf3rONRakc0+/dn72+i8GfcaPy9c6fqujKH+ED+Zn599IgtBXmhHo9V8C2hNsJVsm5Ft+/d9cf005hyV7XOD+Yz2AUQAA3k8JnoStrVbOIGetOecYdDBK7WYAvRbjD2Apxxhv5BK9VD8y87b6qJchca389LQ8/909KAj93tevfJcKWpU2CSIqSntX8A/IAgghsKp657stv37voC4IAD7k4McGmv8wC2qImP2d4z9hPR1Vzl3kxn2iERwZXKsEODB8+ZUfxZ1uEotcMQAefot7ZYmMMVPfdPU41z/KnoKpnhbTAN8ZEUiBjo7R4AAUJ8URq3TuUpTUQXlkeyOQYYnRMQ4YTwBnqN/2hSFV0EpMkNl+BNGjxpzhXnnp51LErtCOYu/+1P7NDAkW64rA//FI1IHq/3H+F/CG4yJQ5BDCQRSHz0LAsgZwm1KldIsCSN+6fyiN7zskfvrDf4vqx2AWIxGDQ1e0q0FAxiLQtMkQh4pAZbjL4z54qz35t1OEptz+YuOfe/2cHi59xwOetQtmsCAoT5tMJSFGzDJDCAAJwDcQDp1R6AlyckLNcVvvD4U2ncP50dgG9BQLg4i2oAYHQXoMQh3h7cY44I7uGSaEJgmiROIMww+fxv5v3+nIVZx6PU9mj2knPeZwrRf3C1qs1+UkQAShLhmPzdfGjuXq+8JaFcAPFg4jzQy0RAQ7ggtXundWMXJxeWSs7ZjNrzj771G3NqtBSDqOqcgDQRIPUGyPcjKQaXzF366zlZh6TU9mT2ZWcfZPPhb4QZErusw9muxbCYRBV3crSMHOyLG8sRkAwAvUgEDDxCdcRtShpJKtv/QIoLgHkHPXFfM5bbozC7evwRCfBa71FzQngDl0XnBKSKCDxShQmC6fDyS7RdsFLdMffSX+9jovzvyZpQ6g2t909ZmUP8Y3idvNp73Fblxa3lCYArENikfwhgR3fQl076ypOb0vqMVJ/ORDg/i9kAL1RF3nw8WkWzzdNcFz/TWLZ7ROByBbYQLTBF//K9fv/LYtYhKTWRzbzolzMQhUtMLrcTV2ua9JeyOnKY5z3pTsyvMhW8vKMsMZDkQexDKMVdAAIABhLG+el9StoLAI8v2jTsRnw/uy9tQzzsZjbZT0dXSkMHBaVvS3ngQPFNLh/+fsGFF+qqS6lxmH3pWTt7g8WlNszP0nK/3miwx5+NlssuXsk0ZSvtTV6YCJjiAiDIEUaq7tEBwVXpfUrKC4CZ+z/+FLOsLITZfXFHywJDvCd/Ky30HnAVPQroCTdcgh0aPCIedBfpIkCp9kxffNZkGw1cYYvRq0fb/OrDP21lCfGW3P38juB2U+Jo6yctWxIBw3QTAU2OIEK/M19am2qXp9QP6EXwa5Zsv78OBnlKzKmFpWLF6ZyAHnGbS7CTBt4VD7rUsliV2t5MX3zW5HDKwDJTiA5wm0v68O8BhkEOiTutsBQ54wyPkWiRDKSXB2gN0KgxwybnpvQRf5P6k9ByvGJzyT2eRWvgF6pIiINy95t35G/XssAecpuGYYeK75u74vzf9CR1VqkJbPrisyaHkweW2ULhTW5YH/69MFr2F+Ld+VvlQP9Br8yvvEtMAFwEMKWTCBgEBkmCmwc+98Sf07j/C6W+AJjxlifrhnB+lOExADD66Engmc9Gy2knDHNT5wT0jBsuwQ4OfGTulRdcrMcBSm3d9MVnTQ4nFZfbYvQmt7kETffvjQY87EKb3UnRldTA2P88EQMuJJJcSomAFgDx2Snc+WV6shcuzGcPlzizngBb1CSHvbwn7YmFa7miLYJ7R54/DhgceF88yV20x6JF+oev1AvMuGLRLtHUweV2oLBwdNs/64h2HCMc4BPR1TLHe9rWWqkUY4B9kAu73xEw8AjVCm9IGu7i7t5563qyAJh14OP3xwmuK0bZn71XEOLD+WtpgV3natDnUC+5TcOwA8V3Bbvnl2iJoFKjZl6yaGYuCK8yYbhQz/x7qyoB9vUfSz6Yv8GU2xghL/b5RMAu7wDYPEEYF6VZ+/9CPXsiC8sv+uF73RSLKbZiT46WScIGOiegt9zmEmyxeIQrDqycceGiXbKOR6kszb78nFf7xegaE4b76pl/bwkITohPiZZikq2adrvFuiJEurgHYA2QNAQE85/duudYerYAyPmNyzYN87p8PtsvOAEoc4Rjg7vMW3P3uYomBPacGy7BhuGB/uTomln/dfb8rONRKguzLvnVwSYKVlGQm62lfr21pTz8iOBPfFTunrbe/oHRN/8kArHXvczmIDCoN/mWwhfX3N6te46lZwuA3d/4dA3AOVn2BNiCQbAk5tRoCfJocKJlgT3nhksw+WBvbyi8du4V57w563iU6qU5y37zXm9wYIWx3s7a5Kf3ElgUUeNTo6UEQ2OW/b0UCeDyXU4ENACBftGlu7X6kb1DJvnPzSVuejb7L3tF8nhj7hF6X/5mLusuQO893zaYrDedwvzK2UvPfX/WISnVC3NWnP8FG+T/C4RI2/tmo8QhPhDeyK/LPWpHeBy5YM8nAiZdagiU9wnVins6CoOLOr9b63q6AJh5wLrVSYwrBor98YWvI2c+HV1Ju5sNrt5C+YfqMiJwtQoQFWwYXTRn2XmnZx2SUmmau/y33/OKhR+Jc5B6Ux/+GWjAxwz7bPLJ6CqqdlINZmCSQncmM5uAwKCzzWcerHR+tzY+t5cfNop/0oylL773dfExw1tvPxldJTXROQGZIBr9hzCJ4Q0OfGfOlRecga9/XWc3q+3K9MVnTZ67cvGldmjgn1ylCkkSLfXLSJ1zfFJhBabbTbaxtX7/LSIASTQ6HqCTeDwD1KvcdJSc1cl9xqPnC4BZB669plSRu/qhJJAAVDjCPwQ3mf281W5EXj79SfUAAZI4uHIF3kDx5HkH73Pl/Mt/PT3rsJTqhtmX/vo10dSh62whepfbPAxw6pNk1TZUJMT+/kPy3uDWthP/XopkdDSweJ0NBsqFBs7h0kmff+KRDsIZl0yewmTkx16fNOKLYVC0dXNaYYlAhLUsMEMicJuHYaLwcAmjm+Zefu7bsg5JqU7MXXbuB2wxup4C/zVu83DW4ezQGAZWEv5cYYnkTWxcp48/BlwA4g4SAQ0BnAiMpR91Fsw4Pz+LDx3eVL9w42ZeF2ZcEghsKQsMcah/rzkqf7fOCegDbrgE8r1ZFAYr56w4/wtZx6PUeMxdccH/a6LChSCaxGXN9M/SlrK/Y/N3uoNzf/EqY/T7b4kAbEEuGv8CIJ83qNb41ui0R2/sPKD2ZbIA2O/oZ6oAzohC0xfjYQQEJmtOjZZhEka43YYQqsuIwCNVAOJ7xeKP5q684JyZlywayjospVox84pfzpi7cvEKO1j4V2k0IA1N9staEx6mUMmdHC03CbpXvE8GJi6AxpMISABgAGvkP7oUTtsyO4h3TGdt3OxKgd8ffzGqksM+3lrvQ9H1XJYurA5VZ4ggcQJXrsAWCyd6xfAW7Reg+t3cZb95lx8O3mKj8Ci3uQRxet7fDyqcx0fDa2WB/4TtdsK3K9C4EgHzAaFa4YdWP1v4fVcDakNmC4C5b17zrHPy64Fif+wCAEAVeXwsXEVz7VOuDq0K6AsicJuGYYJgbwqC6+asXKylgqrv7LFoUTDvygu+a8LwUjJmuhsuZR2Sel5NArzKW+c+El5rKl1+uSMG4hAkfvvHAJQjsPAP9/3GX+OuBtWGTFPxTeJ+OFxyDd/rj12AhnjYxQ7bk8Ll0mQPWqfTJ4jAlREA8L1C9J15KxcvmXPpOXOzDkspAJh12blvzO9RuNEMFL7CjSa43tAt/75BiMXwZ6PlspMtm6Z0+XhXAM6BXNBeJUDeJ9RK7ql6LezJ2N9tyXQBMPPgdasbMX432CeNgbYkirwz+IM50P+rq2hZYP8ggiTJaAvhKDzOFILb5l15wSeyDkvt2OauuOBfbCG4gfK5N7rNJS3x6zNlCfHW3H18XHCnKXHU/Vc6AcQD2u0IaPIGTPjptH/ubeOfl8WR5YcDgGfo/6uMSGL7JO/OiUFgnDm1sBQeEubs/4jUS4xOTTNTKQoXzV25+KKZyxbNzDomtWOZe9m5r5+7cvG1dqDwb8SS53Km/46rrXAwCNB0pxaWkWe47X7/rSKCiYtoeQMg5xHqFd7IfvOMVAJqQ+ZPtxkL19xXq8tlgwN9sgLAaLOIN+ceoHfnb9OywH5EBGk2wZUR2Ch8v+9Hd8y58vyTsw5Lbf8W/O//7c+78rf/i6LgJhPm3+aGS8939dN/JfrJ6G5uhPeFN8sB/kO2wunu5nKRINRaIqAXGiTMZw6e/PSGVINqQeYLAAAgy98cGWHul10AARDDMydFK7AzbXZN9EnXIvViIlt2A3byCsUz5q5cvGLeFb95XdZhqe3T3OUXHJocsu/NZqD4DYiEXCpnHZLahgY87EYb3KfDldRIOaGbGEgCkPjgsRIBcx6hVnFlA/lxqkG1qC8WALMXrv1jreGWDRT7IhwAQE1ymGuf8T5eWMXjmhaleuP53QBXKsOG+aMk79867+rF35y99NyBrENT24f5l/96+rwrLziDfHsN5fw3us361t/vqhzwpwpX8SzvWVuTlAe9PZ8ImASj7YFfiRcasJNfFL7w+FPpBtWavnniEvDNRkNg+iYioIw8PpS/3uzjrXU16CKg37lSGSTImyj6mvFzd81ZsfhjWcekJq49Fi0K5q1c/GWJojtNsXCyJMnzDapUPxuRAK/z1sg/BDfaTvv9t2Q0EdC4AuSVDgFyHqEx4kpE8r20Q2pV3zxuZx+49raREf790EDfhIRYLCaZqj21sEwSIeicgD63pVJgcwnk2Xm2kD977soLbpmz4vz3ZB2amjgWXPi//XlXL/5ksEd0pymE3wdoV83wnxgEBBHwqYWlGLB106uurgQgLr7yBoAXGiSJnNUvb/9AnxW6r/nDjP3yvr3TsRjnso5mlIEgjwZ/vnQKr2q+zhuiat80LlJjM4UIEAE3G7eQmB8/vAmX4IQT6lnHpfrPbivPnlKQ/AdBOM1E+ddInIBr+lWZKAjAZolwTO7O5AdDZ5mq5E2vXtrEA/xhJEN/FkPm5S/WOY+QsAyz4711AfAK1tw288Kpk+0HNm7ivjliK1AD9yV7Jh/f9GUDImM7G/+seo0IJsyDjUFYbzz81mkDi6XZvOiMhe/5Y9ahqWx9fdUqW57WXLipGX/kpo0j7+Mo2o3iWB/8E1ACCwvnzp30H7KX/6RX7WXulgGoCTfpHoGXwMpLnl3RgEVlc/LtgS+t/Vrvghpbnzxi/+6x2+bu4+fcPcLwkj7ZBQCASVThb1Y+xL+qHelNoYruAkxATRG8dsoAXr3zJJQ3DUNY/gRQlQwARhOQqnTwd4IAEUKZpJ2WIC8mIgYGVQjVMc5YyADihEEokzEdfVWZxRBhgGTM/KZXIoAUIAiIxv9nAxIrgo6SO8mQQFAEwRMGiDDJ5vwFYRTijqc24OFyDbl+efNQbdnERZxaWJr8c/FibxMXe/75QuBJ94kLhuHzC04eAp/QTGR9UmssGDw9+9K/F+rLb/qjt836z52m2E+t3+j6ZhcgoBgbXdF9ePPpWM9DNqDM2jercXACFC25t04tggALa+AFORA9v1tHGM3q7uRxSQB14QvbjXuAqDv3ASBdOPsenZbW+bJZuMN7EIAX3IOZ4RoNGAGqiXM3bqxQDOqnXGTVgjpy2M1sdOcNfZcGbc00pfel2+wBAw9LXHgSPr/g46MBg1o5+Zfo84//e8+DGkN/FriL++ZwGR/K5SiK4/54166Lj929DfYzhZXx10sf1gXABMMimFfMi2/Ii1kAx4irus2rRjkAA761s6J8cn+lbnKmT948VEsa7OEzxRWyq7fZbuJCJm+2BCAZTQRkPJ9gn88RamV+vIzyTzIIaUx9udCddeDjj8YJfjY00D+TAglAmSO8J3ez3T/3UDKiI4MnjESAnQKb7B54Jun0DVJttxIBZkU+DXjGOf2aTBgVCfGm3APJu4PbTDnDzq0kQBwRsYUQRp8ZJkcQkW/u8vnNIxmF9Yr6cgEAAM26+feNm9yGfNA/K/EEBgUbm9OipSA4Tqu3tOqe0Z1n4flRHtZ0eCCutmssgtAaOycKxIl+UyYChoGHhD8XLUVAiXGS4SONAQ5AnBv97zBvMFLm+/7iT12UXVCvrG8XAHsdsnp9wvLtYtQ/IY7uAoQ4JHefOTa4U8qSwnQp1VWJCHbNe7xzzurbvxpTLII9Q58m+8Yl+nXpawSgJCHemf8DvyV3v1fOeldWAPEBF2J0GWIAAv3rAafcnWQb2Lb1z9N1a0bcz9ZvdA8X+mgRIAAcPHNKYblMobLOCehjAsACPL+QBwzp278akwjgG7LzCnkREa337WNNeJhGw+6kcAU1kXK731ZZmCSCBHmDkYq7pvCFRy/POqRX0j9P1q2Yffi6BoP+1ff7q+12VXJYYNd5Hw6vlYrkdRegT8Ui2CPvyxTfevr2r1oVs2C3wDPTclZ0F6B/VTjgE8NVMt9/ytYk3YE/LRNABoniWJhIvpp1OGPp6wUAAMx505qLNm521w9OMnhpc4UsVRDixPAa2ss+4aopT5tS7WMAAZGbWwj6JpFUTRzWkJlfzAtJx4WHKgU1CbCP/zh/JLyeKllv/b8QA8WdjNcALyp84fE7sw5nLH2/AACAYAN9hR9n57nRWkvxkHkHg6ZY7GTL9rPRcsQZ1JyqV5awYEaYkyHf2kQTulSbYhZMy1mzW+ixfn/6i4CQiOFTwmU0yY7YpvTJHHkAeY+wibm0eXb89axjacWEWABMP+7RO4K7ZNHuDxMGHpAkt0ESMFyWiwECUOIIxwd30EH+X1zmCSjqb1iAyBo3J8qRlnOpcSMy8wt5eC9qHaSyRADKEuLQ4M98dP5u6sm0vzYMFAwaDt/e87innsg6llZMiAUAAISe+Z+NzbJx8kbyhu6DmfxHkYGHJPE34e+LAYueLgYYBM+w+VxhiQRosps4f5zbtUQEs6OcFDxjtZxLjVfCgkmeNXuEPsf6PeoLCQxCNNwp4VIyJKafSrGLBYP1G5O/zi7kv591LK2aME8s8+U1z8bCXzcFA/JgvAa8wlPwJt3rYhQ6AAAgAElEQVQrZvI9IgOrJfaHJYH0djFQ4TwO8B8y783fylk2oVCjnACDnnEzoxxpApfqFANmbhRQXocBZ27Lrus/5G+U/YPVtsL5rEP6G0Ojieps8E+0718nTJvYCbMAAIDi59f+tFpJ7gpDAzb/t707j7Ksqu8F/v3tfeZbczdNj9VdPYEoikoDzZSgCCpo0CiIMQoiyNDQIDhl5Q3x8RJ9WVlRnyyTPKPJy4vxJSbPBO0GGRUUROYWgW6ga6Dnmu98z9n79/64VdAo0DXcuufeqt9nrV6u5aLu+dW9t875nX32/u7qfABoKKcEJ/Mi3I4dSKUZKMNTl0U/pqU0bMuyLDBVlhnrMj4HirSVuzYxS4YZba7WqzO+lZUk6Sqxi1V60HwyulM1zKx/VJeOdrRrjGft/+vZ1Lc97Xqmo6kaACKwsbzVGIZzWOV8eDNQfLkZ6HiSueUFTtwxTtjCWndu5gyU2EWPc1BfGt1lCw3UlS40CTO6XG1W+Y6K5WQtaiRhoCf0KOMo00AblC44RfZwWXg7up0hVeIGWfcPwPcJ4zmTA5vPpF3LdDVVAwAAbdcN3F8s2b/1M/pVNxc7vBlwC3BaXoTTvgOq60m2rc9z7I7MzQTCLEe4MLyPjnd3JwWWJqDeJjabs+tbfNZaIn9F7VhmRM5ERLA0lqnIc4C3ec8nHwwfoPFGm/jXolAp881rThnoTbuW6Wq6BgAAuFL5fClvDh5pn4DJZoAmRwYG4HY+Bep8grnleU68YU5gDmsGZvFuxKzQqkr6quhHsAzLDfUVnf8SZiwJHLvMkw1/RO0lltEdOKrD1RIRXGcMAtjaq8MfIaMqKmmQyxYz0NaiMDiUPDnodP1F2vXMRGO8k9PUdtP+IWPsZ5VLU77MsgKsC7CCdkpwWvaguprgCebWnZz4g5wghrEadibNwOQ+AWd7O9TZ/uMsEwLrhwEonoj8JYn8FbVnAfhaqXUZn1nmltTN5MS/dweP2d/xn1JZ2zjJq44DxAnDMF2zaVPj5v2/nqZsAACg5dqB/13I2dvDjMJ0/x5fMWegDCezH07br6G6nmBuf4atf4ATKsFYBcsugClOImQQLJG6KrMdrSjYGI0TUDGfxcxYHrp2sauVhLaIuRJbxgrfUYs8GQWolxganSpnroy2kYFSjTKyygx0tmvkCvzNdaf03p92PTPVtA0AAChKrqmUOO+7M/9SvNQMOFA6hhMegtP+LFTnk4yOp9mEL3Ks80gsYKeyoqDAPo53eumi8D5ZFlgHDMAD7IbIJ6bm/j6LxsaoRgRvbAkYkI2C5lp1VDXAxeFP+Dh3jy6wn3ZJL8lEhKFRM0A+fzHtWmajqU+Y4ZY9z5cq9r844dQfBbweppeihpU20MEw3NbnoDueZOrcwTbTW11R8IpJhK/yDhYQqE+Ed1GP2m+Ksk/AnIotozvybYertTz7F3MttowlrlZLfUfCgeZYER7WO/uSP4zuplwDXfwVAY5DMAlf2/PWvrG065mNph+jdk4ce/Bkt+2cKKNXVeIaDhBRdXQAGqQYyilD+aNQ/iDYHwK7ORhlYK0mWBeAAwJVu9aEFY7SWeVSYu8ovVUF1DS5EE3FAvCVMie0haRlu19RJ0oRRVrbF4sVgKiRNiqdNxhA0fr4Qsv37SbvOSffILuuMgOLOhWGRuw/rT2l70/Trme2GuE9nbXsLSuO95TzMBF5cR0ezpGt/mPAGg+cZMCVDiBpJyQhyLrQDlloY+ynRrbyI/F63ULFOa9roalYxnGtQXJsi+9U5O5f1JGryD42VrC9hdjx1Lw4jTaULIfY7D5j/qb9G1SBo2yDDFaHAaFS4QOlcvH49acdOJR2PbPVGO/qLLVes2dHHOO/umF9fp3JeQMvPSoYhdP6ApyOHUydTzK37eTY2U9xVEnsVa0/tEoltlG+wPOFYaDVUWZ16Erkr6g7y9WIYJ8kIrjWLBQ8xPaqaBtcsg1z8ScCfI9gDG2ZDxd/YJ40AACQOdj35UI2+XkUTX9VwGwwAVYD7AIgaKcIJ9oPt+1ZaPcxH+/59dP4YOGXZkzLhMBassxYG/kcaiWRv6LuDDPaXa27I4kIriUCMM4hLggetKd4O3W2QULVmIGuDo3hUfO91Sfv/n7a9dTKvGkA6GawMfypcsWWZrMqYLYOX1VAlhw17rifOXCbWhKP2TLJPgG1kDDQ4emkO3RJJmKJtCQMrI08ymiJCK6VMlwcTSPmU+GPqYzGifvNRITRcbO3SJVr0q6lluZNAwAAbVsHni6X8QUnUA1xt80EFB0Payt79adH7rFZ1RjdbLNjZrs+8uEo0nL9F2mxzMg4Sq+JPIkIrpG89XFJeBfWugd0o+T9aw04mlCp4MrjTt43nHY9tTSvGgAAaN/a97VCzvw4bKnvo4DXE6sQnxy7l44v9Zu8apzlLM0oZsYS37HLfYn8FelLGFgdetTmKGPk6zgrExkq5qLwPsraMO1yALwc+DM6Zv567ebeW9Oup9bmXQMAADCVT5aLPBQeYa+AeqmQRluS0zcObucESvYJmAXFsOsjj5Qs+xMNwDIj0KTXZ3w2jXLH0YQYBMNkr8xs43ZdVI2QosoMtLUqDI0mz4yNl5pup7+pmJcNQGbrvj2l2FytNEE1wG9IAEo6wvnZR9W5+R12XCYEzkiFGctCxx7lOyTb/YpGcVhEcCIrUqaPUF32d7b/hH2X/4RqlN3+PJdQqbBJYnzihHMPFNKuZy40wOVxbnRcN/DPuYL9VpBJv5MEAAuCJlY3Dm6jyJRtTPP2rZ8TDMDFyxv+pF2PEJMYgKOVWp8J0DDPHZtIDI0WKpqrMtsJoIbJ+29vVcgX7H9au7nvobRrmSvz+kTa4pWvK+aSp6OwMeYDFFSAtxaf1x8b+5kdV1GDfM2bQ8yMVaFvOx0tz/5Fw0ksY5mn1ZLASWRlytRN7qJ6YXAfv9nt1fkGiPxlBjo7FA4NJ3esO7Xvz9KuZy7N6waAPr2/yISPxbEteykuDTycUR62DP+YuiuDpkSNMcu10VkAAcGuz3gw8/w7K5oTA4AitTEKoAFpUaeoBA+r9YHkkuhuKnL6+6YwV5f8jWftwbLxLkm7nrk270+mmav7Hy2X+SY3IDRCYmeZXCyLB/W1I3fYgkr/C98MEstYEwW2xVGOTLQSjSqxjEWeUssD18q21FNTtK79VHQ7luvhhlj25ziAUoQktpcec+quvWnXM9fmfQMAAK1b+79RzNp/CVr0RKueroqK8NGR+/WmwvMmJ9kAr8sw0OIo0xNJ5K9ofAxS6yKfXEhE8JHkOMAmdyd/IPiFyjbIxL+udo3xnPnKmlP6t6VdSz0siAYAAMoJLi/mza56RwW/mpgUQpTV54a2McDWNsRXvzEZifwVTSRhRqcnEcFHYkHQMPbqzDYEKlZJypeil577jyT3/u2tfV9MtZg6WjANQOcNfWNs7MWV2JbTjAoGqhNfiirEWbkd6v3ZR2VZ4GswDHS42nQHriz7E03DMLA29CjSysgowG+rLvuLcJ7/sD3D+zXlUr77ZwYyGUI2Zw9QbP7g5psbYZy4PhZMAwAAmWsHHilX7BbHT38+AIMApdSNg9vQmeRshRpjuWIjscx2fcZnT5NeMH+RoukZZrS41YhgmQvw2ypw0EXj5orM7YjhpB7o5boEtkC+gD/sPvXFef/c/3ALqgEAgLbrBr5VyNv/FbSkf8Etko9jygPOJ0d/arNKRgEOlzCw2NO83HeU3P2LZpMwsCZ0qVU2CvotORvgY+G9fIyz10l75j/RxHr/vP3CxtN770i1mBQsuAYAAKKD4TWlnHkwyjTAfAAV4NMjd9HG8j4jqwIOw4wNmYC1RP6KJlSNCFZ6XcaXjYIOU4SPY5wB8wfhvSqX8la/zMCiDo2h4eRfejb3fSXVYlKyIBsA+tIzMTMuqpTtwShQqT7wqZCDrmRcXz+0nctw5FSBaujPUt8xS3wtd/+iacWWsSpwqcvVRlawVB97xlbZT0e38WKdVRVObxSWGehoVxgZNzs8v3RJaoWkbEE2AAAQbenrL1b4o4bZeDq9wXcCUNYRPpx9iM4sPG2zujF2wUoLA3AAu6ElYIn8Fc2MATiqulEQMy/o+YCE6rK/072n7Hv9R9S4TS8JlRmIQkKxZEcrRXxo2QnzM+d/Khb0Cbbjuv67SiV7Q9ohQQYEzUZ/fnAbPJtYs4A/ltgyVoSu7fK0I8uoRLNLLGOZ76glvrbxAv46J1AIuGy3tGyDJlZpLn323Or5vlCgP1x7eu/O1AppAAv3SjOh9br+/5nPmm+mPSmwqEKcVHhGXTj2II8t0GWBFoBPsOsin+TaL+YDBqAUqQ2ZAIp5QX6tJ3f7+2D0gD3Rfc5J89m/IqCthTCe5c+tO3X3D1MrpEEs+AYAADIH+68p5sydUYtKLSmQAVjlqeuHb8fyZNSUVfqxmPWWWMbqyLftrtYS+Svmi9gyjvK0WhY6CzIiuAwXy9WwuSy8I/W8/65OjcFh+521p/b+eaqFNAhpAADQzeDYVi4qFezONFcGlMlFd2W/vnLoLs5R+rti1ZMFkNHK9ESeRP6KeYepOgrgLMCNggrWs5eEd3K3M5ha3j8z0NWhMDya3HtId16RShENSBqACe3X7huOY3tBpcIjUUCpNQGxDnHJ2E/ohGKvyauF0wQkltETeZxxJPJXzD+JZXS42ukOXbuQVrbkOcBb3Bfsh4P7VVqJf8xAe5vCeM7uKhb0hzdteixJoYyGJA3AYdq2DjxdLJkLjUWSVlxwBRottqBvGtrGBqqaGDjPGQbaXZWslrt/MY9ZBnoinwJNCyIimEFghr0q2k6tuqTiFC43zEBLRCiVebgQmws2nvnCYN2LaGDSAPyGjusH7iyU+ArHI+gU3h0CUFIR3pN9XL07+7hZCBMCDTPWRQF8RXL3L+Ytw4w2V+s1oc/zfYULARjnEOcGj9l3+E/qNHb7YwYCn2CY40LBXLjh5IFf17mEhicNwKto39r3nXye/7Of0aksD7QgEJH63NA2bk2KNp7H+wRMRP6alYFE/or5L2FGT+RSi6OMmcdf9xgabVQwnw63k01pJNN1Ad8n5HO4bN2p/XfVvYAmIA3Aa2i5tve/5bPmr4MWncodeEH5eFOp1/nE2P12fF7vE8DYkPEl8lcsCJaBUCu9NvJ4Pq90ydkQF4c/tW/y+nSB6z+XSSmgrVVhdMx8ce2pvf9Q9wKahDQAr6NlS9+VxZz5Qdiazh14onxcPXIn9cQHTXEeLguMmXG07yRLZMMfsYDEzOgOXNXh6nk5ClCChx69z3w8uEsXUljzTwR0dWgMDZuv9pzS9+W6F9BEpAE4gqAYX1wumJ9GKQQFVcjBknhYXzd4OxfJnVfzhhiAZtgNGR8kkb9iAWEGXK3U+ozHdh5GBJetYy/P3M5LnTFVZqfux1/UqTE4bL675uS+G+p+8CYjJ94jUDftLZUK8QXlgnkyjYyAig7xkfEHaHPhOZtV82efgMnI30Wuo+b7hCghflNiGct9Vy329bwKB8pxiJO9Z+z7/YfUONf/0eWiTo3hseS27tyqj9f50E1JGoAp6Lhx70i+oM8rl/iFTJ2bgAQKPsf6c4M/gmZj08zQrhULwJuI/GX5DooFiAFoIrUxCkDzJBzIQsGBMddktsFXibJcvz/tyaCfsaz5+ZAu/T694z5Tt4M3MTn5TtGim154sRLb91YqvC8T1bcJKKoQZ+SfUh/IPmLHdHq7aNXKZORvh6v1fLr7EWI6YmYc5Wu11G/+iODJZX/vD37Bm91nnZyt32glM9DZoTCetU+ODZXfd8IC3t1vuqQBmIa26/qfLZbt+XHMQ5mwfmmBDADkqBuGttPiZNxWqP7P1WrFAggnIn+lRReiGhGsm3wUoAwHR9GYuTy6nWK4ddtShRnobFfIF+yu8aJ593Hv2jdcp0PPC9IATFPH1v5Hi2X7vjhBLlPHyOCi8rCu/CJdPnKvzar0dtOarcnI3xZHyYY/YsFLmNHparUydG3cxH8Peevj49HdvN7Zrwt1yvtnBjraFQpF7s3m7LlvOH1gX10OPI9IAzAD7Vv7HyiX7fsSy9nIr18TkOhQfWrkHjqu9KIpqHR31ZoJA6DNUWZNKJG/QkyygFof+eRTc44CFOHjOKc/uTj4icpxUJdHlJP5/sUS78mWk/cec0b/7jocdt6RBmCGWrf235sv2d83zOV6NQExNDpMVn9maDvHaL7HAMYy1mZ8DrRE/goxaTIieHXkN91GQQxCYpX9dGY7OnVBVXjul0szV0N+SmXek8sm52w8ZeDpOT/oPCUNwCx0bB24o1CwHzbM5bBOTUBZR/i97CPqrPxTZryJ9glIGOhytVkloT9C/JaEgZ7Qo4xWTbNREAHIcoizvB38Hv8xZ7wOef+TF/9KhQ/l85VzN5wh+f6zIQ3ALLXfMHBroWI/bOs0EmBA0LDqc4M/4sBUbNIkGTrMbNe3+OxoJZG/QvwGy4yMo3RPxmuajYISaEQo2isz2wDQnOf9v3zxt4fyeX7v+tP2PDWnB1wAmuPq0eDarx24tVKyH6rX44CiCvD2wi518dgDdkw1/rLAmIElvuZlnoT+CPFaEmasDj1qb4KNggjAuA3xofDn9m3eCzo/x3n/k8/8yxW7Z7RI71x3Wu/Dc3rABUIagBrJbB34YanM5yU896sDGIDVnrp25Me0sjJkSw28LJABKLDdmAlYyYY/Qrwmy4CvSK/L+Nzoc2RKcLFKHTSfDO+kYh0u/h1t1Wf++Tyde+zm3Tvm9IALiDQANdR6Xf9d+ZJ9X8VyNhPMbVhQmVysrBzUV4/cZfMNvCwwZsZy3+XFnpZn/0IcQcyMlaFLi1xtGjkcqGg9e1nmTl7lDOrSHOb9Ty71K5W5N5+vnLv+tN0y7F9D0gDUWOfW/ntLBZwTGx6a68TAio7w8bH76O3FF0wjNgEMwAXs+owHlg1/hDgiZkAT6Q0tAYPRkPMB8xzg7e5z/MHg52rczt0jyMmEv0LR7hrLmnfIM//ak5PyHGi/oe/BStmeHce8Zy73DkigEJmi/uzgNrZgO9eTcKYrtozuyLUdrqPl2b8QUxNbxtG+VkcHTsOFAzEIxGyvzmzjjKqoZA4vIYs6NfIF+8Sh0fJZss5/bkgDMEdatvY/Ppaz76yU7XOZOdxKuKRDvCv3hDo/93hD7RNgAYSK7NrQp4a8jRGikRGpjRm/oSKCqxP/Irw7eMSe6T3lZO3chf4s6tQYz5mf788Wz37LWfv2zNFhFjxpAObQUTf1P5svq3fEZftoNEdNgAUBSqkbB7dTe5K3Mc19EMdUJJaxJvJtq6sl8leIaUoso8vVakXgNsxGQRU46KSsvTLaTgZqTpb9EQGLuzRGx8z2kbHRc9525oHBmh9EvEQagDnWdf3ugUK+cna5aO6NWvWcdMxF8nFcqVdfOnqfHVPphwMZAC2OMmsiVyJ/hZghS6TWZXxyG2QUIGcDfDT6iX2D+6IuzMHMf6Wqd/4jY+Yf9z3c+/43nTWar/lBxCtIA1AHHTfuHfH3mXeXcub7YauGmoMrdKICXDlyJ20o7zfFlPcJMJaxNvI51Eoif4WYIWMZHa7W3Q0QEVyChw3OnuRjwT0qz7WdcMwAHIfQ0aYwPJp8feXbez+26UokNT2IeFXSANQJfenFcnhN34eL2eSWIKPg6Np2ARVysDgZ0VuHbuM0cwESBjpdbbpDl2K59gsxKwkDayOPopQjgstW2yvC27DEGVeVGi77YwYCjxAFhOFR88VVJ/ZtrdmLiyOSBqDOoi39W/I588eeR/Cd2gYGlXWED4//Qp2W32myOqzdC08DM2N9xmdPkWa5+xdiViwzWhyle6L0IoKzHOI0/2l7fvCwM26jmr0uM5CJCKQQj46ZS1ef1Pflmr24mBJpAFLQsqX/v+cL9lImjmuZGmig4CFRnx/6ITs2sabOswFiBo7ydbJcNvwRomaqEcEutaUQEWyg4CO210TbyCFbnXRcA5PRvsZgOJ+15/ds7vu7mrywmBZpAFLScm3f35WK9r2x4UO1zAooqhCb88+oD409ZMfruCxwMvJ3feSTIon8FaJWLAOBVnWPCJ7c7e/3ggftSe5Onavhs/9FnQqlkn12dBy/u/a0vh/X7IXFtEgDkKLW6wfuLBVxZlzhHZnW2nwUDICVq24Yvg1HJ2OmXKf5AAkzlgauXeK71GjhJUI0u9gyVvqu6nS1qdfKmjIcLKURc3n0YyqjNhOLJ5f5ZXP27kNDdOaxZ0quf5qkAUhZ2w19zxwcLv9uXDTbolaNWswNLJGLNeV9zhXD93CuDhHBDMAB7IbIB0i+U0LUGgNwNKn1GZ+ZuS7zAfPWxyeiu7jHOaCL7M7qtZirM/07OzSGR83fPjPae86bz959sEalihlKe8m4mMAASt9c/dUgUFuTMqMcM2gWn47LBiVyzPndN2GXv1RHtlyzWn9TxTJ6Ijc5oS1y5O5fiLlBABRgHxwt2IOVxHFnc4I4ggIH2OgMJP/Q8ZdKw6oEMw8YYwaikEAElEr8+VWbev9HDUsVsyB3aw2CAIRX9V1fGLdXMSHOhLObHBiTRqvJ6xsHt3EyR6ldQDXyNyDYdZFE/goxlxgAqWpEsJrDcCAGwTLbqzLb0aaKKp7lxb+jXcEyRnJ5e4Fc/BuLNAANJrO176/KJXtObPBipmV2H09Jhzg/+6g6J7cjGddzkxCYWMbqjG/bJPJXiDmXWMZiz1HLA9fOxbLAyYl/7/SftGd7T6hxO/PzBhFw1CKNYsk+MZKvnNlzSt+/17JWMXvSADSg1q399+bG+bS4zPdErRpqhp+SBUERq88O/QgZU7JxjXfktQxktDI9oSeRv0LUCQNqQ8aHS7UfBYih0UJFc2W0nQBSMxk5nHze39WhMTZuv7fnEM58w6l7flXjUkUNSAPQoLo+29d//77ed1UK5utBoBC4M3skUFQB3lJ8wfmDsZ/xuKrtssCEGWszHkeORP4KUS8JMzpc7ayqcUQwAchxiAuDn+It7m6dn0HePzPQEhFcBxgaSf5o+dt2X3ziu3rHa1akqClpABrYO/4Exr+qb2u+YD9pgFwmmv7HxQCM8rBl+A50Vw7ZkprdbN5JhoF2R5nuwFUS+StEfRkG1oYehQq2VnNvSnCxWh0wl4R3UwEzWz3U1akQG+zN5+17Vp/U92c1Kk3MEWkAmkDLlr7v5CvmzDi2T0Qz2EyoTC6WxYP62qE7bIFqs57XMmN9S8C+Vkoif4WoL8OMVlfpNZFfs7kARevay6LbebkzMq28f2ZA65fW9981PGQ392zuu60mRYk5JQ1Ak+i8duCx3n3qjHLe/H0QKfjTfCRQ0RE+Ov4zOqn4fDLbbICEGYt9nazwtUT+CpGShIE1kUetjjJmlq+V4xCb3J32A8EvVNZOfR+RyTz/wFcYGU2+vOJtvWe/8Z19/bMsR9SJNABNZOOf7M4GV/ddUsonlzOQy2Sm/vElUAi5rD976EcAs51VpjfDbogCaKUk8leIlFhmhFrptZHPZhaNuAVBs7HXZLZRqGKVTOOysKhTIzHYm82ZC1ae2PfFGRchUiENQBMKtwx8K1vm0ypl+8uoVUNP8VMsqhBn5X+lLsg9asdmuCwwZmBp4NglnlZp7U4mhKhKGFgVOKrT1TPaKKi67C/C+eEv7ene0zo7hWV/zIDrEhZ1auTyZtvwkN0sS/yakzQATarrur4n+yp8eilnvuZ7CpF/5A2FGAQorT4zuA1dSd7GNL2ADwagwXZDJgCUbPgjRNosMzyt1PoZbhRUgYMuGjeXh7dTDAdHegVmoK1VQSmOx8aSLyx7a+95MuTfvKQBaGIbt/ZXwmv6ri8U7QdiYwcyreqI8cFF8rCxPOBcNnKvHVdTf9YHVDckWRG6tstVjtz9C9EYYstY5mt1lK+TZJpNQM4G+Hh0jz3G3aOL/NoThBmAVtVgn0rZ7sjm7O+sOLHvK7MsXaRMGoB5IHNt3w8qBXtSXLT/HEZHzgxIVIArRu+hY8p7TVFNbVUAA/Cp+uzfzmEGuRBieqoXZ6U2ZALQNCKCi+zhGGfAfDT8icrxa98MTK7tD0OF0TFzy+Do6OYNp/U/UJPiRaqkAZgnWj4zsN+7qu+ifD653ADDmRb1ms/yKuSgKxnTNwzdxmVMbblPzIzujG/bXOXMZsKREKL2YstY4mm1LHDs1EYBCAlre1VmO3epnK7wqz8OVKq6vC9J0JvL2/eveHvvljedNZqvbfUiLdIAzDMtWwa+VSzGJ8dl3ha2vPZywbKO8IHxh9TvFJ5OxvXrPwqwACKlzFqJ/BWiYTGRWh8FcKYwCpDlEKd7T9l3e4+qV5v4N7mDX2tGYSxn/y6Xx0mrT+q9da5qF+mQBmAear9+z3Pelb3nlXLJFgMefbXRAAOCC6s+f+hH8G1szet8FRLL6Ik8zkjkrxANK7GMLlerlaH7uhHBBgoByubqaBtpxeo3lwRP3vUbw/3jWfORFW/dfen603Yfmuv6Rf1JAzCPhVsGbilV6KS4zLeGGYXQpVfM8i2qACcVn3UuHPvFay4LNAy0OcqsDj2a7gQjIUR9GUCti3wKtDKvFhE8uezvg+HP+UTvOZ2zL4eCVUN9FDKhwnjWfPvgIG3qPqnv/9ateFF3MptrgSh+Y9WntKNudgN1dClvXxoj9DnGHqfTvLf7JhrXkfI4ecXPxZZxQnuY9ESeU5Fn/0I0PI8IT+VKybO5suP9Rm54mV10qZz5x44/p6P0uCqzW13X7wAdbRrjObMrNvzZ7hNlXf9CICMAC0S4ZeBbiamcGBftPwS+QhRUTwxlctFd2a+vGr7b5tQrd/9KGOhytVkZuBL5K0STSAD0RB61aPVb83WL7OGS8E5e7RxSJa5uDNbepqA0YSxnv1oYxIly8V84ZARgAYd9jCAAAAtESURBVCp9Y837lYMvu6F6Q1yw4CRBTMq8b9WNeDpYoTO2DABImO2mjsguD1xHGgAhmoenCLvy5WTHeOmlUYA8BzjO6Uv+vv2rigjK8TQyGUIuxw9UDD67+sTdP0u5bFFnMgKwAAVbev9jZO/opkrR/ikTl7wWDxlb1DcNbmMLAoMQM2OJ79ilniORv0I0mYSB7tCjDlcZwxMpoMz26mgb2tyyau9wwYyh7Li54eov7T5dLv4Lk4wALHC5r69+s+vxn3qeOg+VEj6x+Arzw7a36vYkbzd3Zewiz5HUPyGakKsI/cVK8thowcmjFe/xHzLfXvEdPW4ClCv8f8pl/uOezX19adcp0iMNgAAAFL65+iMBl/5kX/uajacv3oqjfD85pc1z4qle+2WFgBD1M4U0TgJAYPvT4TJXqKz/ffnXsKLS/8vhOPyj1Zt675z7IkWjkwZAvGTwaz2ti3DoM19adulndr7xQ20tKCGuzil6bVwNIIEmdcSdRA5HNOX/nKqHAQivtrLp9UpTAE3rZ0DTfyxG02x+iKf5MxNvwHSPU7OmbJrRz0x02Ic2NXbyZ6Z7nOni6X2HJgbPp0OBp/frEzC9z4oAWDZk+XWLYwAh4AzGLnrG/23Pn7X9/Vf+5dnsLRddNN33QMxX0gCI3/LAtz+4/sDji/9oWe++jzlgN89cwWuczwjgxHUc6zrOlE5iXP2hShjAKvVaL/vKYzBgtLKlTFie6u9AzEg8F7HvTevCGfuux1rpqZ69mQiV0AdP8YxPABLXMeUwqKD6U1M4CCP2PRjXndaFInEdD1odeZvI1yyWAGOsE5vKdH7GqVTgVOIpNQ7VrwNxUCh6OjF6SpUSQJbhF6f8dQCIQEmSuOU4nmpDwyB45TJ0bKb6SQFgCnNFTzFPbbdMIugkgVesTP0YRNBxEus4Mfwq53AGoADVQsotEeX2HNf9zUXnPP8XZ521/cBUfwuxMEgDIF6TBZ1V7Fj2nwLXPcuAkbN28vr9MprcfmS6d6fTr2fqYwazO850WT29QQMmspZoypURAKsITDStP1irlJ71XzgDylozjf8cihlkeVpvvbJWT6tUZqiZzE2Z5sjETN6/aY8ZzOQ4RNV/hzV3DICI0EYKCRhcjv/VH993swIen35BYiGQBkAc0f6VGz6iNX2xhdSbi2xRlOf9s8MzbGZmcJyaqMNZgjH9RwDilVqUggNCgc39MePm5f27bk+7JtHY5E9OTMmvjj3WPSpvrlCEG9uU7smyRVkaASFSF5FCQIQs2x3W2i8vHXjuu2nXJJqDNABiWnavXt2egXcNMV3XqtTRWbaoSCMgRN2FRIhIIcv2Ocv4y4dR+tZ5/f1Tn68hFjxpAMSM7O7uProFwRYQX92qdFfWSiMgRD0ERGhRCmPG9BHh64Oj9DdvGNuZS7su0XykARCz8uKytSsDT2+xwOXtSneNSyMgxJwIiRAphXFr9ijgljyXv7m6v3807bpE85IGQNTE4LJ1K+CpLQx8qpX04jxblKQREGLWIlIIiTBuTZ8i/FWpQn+zct/O4bTrEs1PGgBRU32rNi4LFF9JjMvblF5WYEaRJXdEiOkgABml4IGQtXYXCN/Mo/ztnr6+sbRrE/OHNABiTuxZumGRcukyDVzRotW6GIz8RI6AEOLVKVSX8xGAouXHmfkWU/G/u+zArwpp1ybmH2kAxJz6VcexmSVt9iIiXB0QvZ0AZK2VLFIhDuOA0KoUSmxhGPcq0C1d/c/+K9UlykosVNIAiLr4Y4C2rtr4PkN8tSY6t6W6fAmxzBMQC5hPhBZSGLemzMAPLNRfLet/9t606xILgzQAou4Ordh4Ihy+wjJd2K5Ue3FinoC0AmIhOPz5/pg1+zTw3YTtt5cNPP/rtGsTC4s0ACI1e5b2rPJcfTGT+kSo6DgFIGcZibQCYh5yJ+72K8wos/2lIvp2uYJ/lhn9Ii3SAIjU8bHHugeK5jxiXArg3Hal/QIzSjIqIJoc4eWo3lFrcoroB9biO0sHdt6ddm1CSAMgGsre1RuO1eCPKqaLAqU2KhDyMldANBlv4m6/xIyY+TFifC9W+nvL+57uT7s2ISZJAyAaUv/y5YHntZyjGR8zzO9u17o1ZkbBWkx5b1oh6sgBIVIEDULWmkMKuBVM/7h4YOfdcqIVjUi+l6Lh7enpWeWz9wFj7UcA2tyuFGTioGgECkCkFHwQhq2JNdO9pOifjKr8cNnu3YfSrk+I1yMNgGgqI93rToihLrTgCzxSbwhJoTgROyzNgKgHBSAkBb+6BS+s5Ucche+XSP3byt5nd6ZdnxBTJQ2AaEp34wx9/OqDpxvwB9nivFDROp9ImgExJw6/6OfYwjDvUKBbifFvRw3sfCTt+oSYCWkARNPbvXKl30rBGVap9yXM7w1IrQ+JUJ54TCCpg2ImNAihIvio3ukb5h0a9B+k+d8X7d71sKT0iWYnDYCYV3Z2d3uLbbApUXy+Ad6jQG9p0woJM4rVGdlplygaFKG6Vj8kgqqG9MQKeJhA2xKD25bt2fmIXPTFfCINgJi3GMC+7mPfppG8k1i9yxCf3KpUmwKhxBZlZhkdWOA0gGBiaD8Bo2DtISb+BTPd7hLuXNy365m0axRirkgDIBaMwXXrVthEnW4Z5zBwuiba2EoKBowSMyoyd2DeU6iu0Q+ouuPemDUGwFOK6B5l6S4/sD9v27VrKOUyhagLaQDEgsTHHuvuz5kTWOFMZv5dgE4MFS0NSSEBozzxuEBGCJrb5AXfJwUNIFcNlepjxkOOorttEt+3dM/up+REKBYi+d4LAWBk9er2BMEJhu3pFjiDGW/xFS3NkIIFUJ4YITAyRtCwCIAmggeCT9VTW5YtLHMvgMcZuF+R/tn+kvPkCQd+VUizViEagTQAQryK3atXt3vWe6MGnQTiUxg4AcDaVqVcjerz4srEKIEkE9YfAVAguFTdUleDEIORN7ZIhOcAegRsHzTghxDnn1mxf38x7ZqFaDTSAAgxBXcD+vg1x6xj8AnG2BMt6O0g3qhAK1uVhgZgJpsCAEbmE9QMAXCI4ILgEkEDSMDIWZtY5gGAngbzo56jfula3tHRv2t32jUL0QykARBihvYd/aaInPI6KD7egt7MwJuJsAGMFaFSoU8EQvViFTMjQbUxkHkFr06hOoTvTNzZO6CJxy8WReacZu63RDuZeIdj8YQB/3opxc+r/v5K2rUL0YykARCihvjYY939ebPCENY5zG+Eog3G4g0EXsNEy3yiKJgYsmZURw0SrjYJhgGL+TtyoFAdtlcTF3dn4n+B6u9fZEaFbVaD9jDQS8DTxHimwvYZZfiFFfte2EuQ/kmIWpEGQIg6sN3d3t7YWUKO7tYK3QnzBge02jB6FHipBS0jQmtA5HgTQTSE6tXOHtYcmIn/jyceMUz+SwMd/o+oegcPQE0M0+uJ34FRrb3MjBJzDPAYgfYx835FeN4y9TvgnVZhQFun/6g1Rx2i++6TqRVCzDFpAIRIGeMDatfRT3R1+npRCbTcIV5imbsZtEwxljCwlMBdFuggUDuBMyDyPSJ4E6MJwMsX45dfd/JftUWYyq3z4a9BExfwV3/Nw+Y8MMMyl4mQBWiUGGOWMESgfSB7kKzaS0QvxjY5GLDdW7Hu8Ip9O4fl5CNEuuRvUIgm0b98eeAEQUtonEwetsMStytDbY6iFmu5g4E2C7RoohYGAgZHBPgARagOGrQSQb32iAETMWImyhFADM4DiDVTzpAtE6ssE7LMyDqaRmE5Zy2NWeZx7ThjXE7yy7xyVp7JCyGEEEIIIYQQQgghhBBCCCGEEEIIIYQQQgghhBBCCCGEEEIIMSv/H4rOruCTL+3PAAAAAElFTkSuQmCC'\n","/**\n * Documentation:\n * https://github.com/RDinitiativ/daffiwallet_connect\n */\nimport Algod, { getAlgodClient } from '../../algod'\nimport BaseClient from '../base'\nimport { DEFAULT_NETWORK, PROVIDER_ID } from '../../constants'\nimport { debugLog } from '../../utils/debugLog'\nimport { ICON } from './constants'\nimport type { DaffiWalletConnect } from '@daffiwallet/connect'\nimport type { DecodedSignedTransaction, DecodedTransaction, Network } from '../../types/node'\nimport type { InitParams } from '../../types/providers'\nimport type { Wallet } from '../../types/wallet'\nimport type {\n DaffiTransaction,\n DaffiWalletClientConstructor,\n DaffiWalletConnectOptions\n} from './types'\n\nclass DaffiWalletClient extends BaseClient {\n #client: DaffiWalletConnect\n clientOptions?: DaffiWalletConnectOptions\n network: Network\n\n constructor({\n metadata,\n client,\n clientOptions,\n algosdk,\n algodClient,\n network\n }: DaffiWalletClientConstructor) {\n super(metadata, algosdk, algodClient)\n this.#client = client\n this.clientOptions = clientOptions\n this.network = network\n this.metadata = DaffiWalletClient.metadata\n }\n\n static metadata = {\n id: PROVIDER_ID.DAFFI,\n name: 'Daffi',\n icon: ICON,\n isWalletConnect: true\n }\n\n static async init({\n clientOptions,\n algodOptions,\n clientStatic,\n getDynamicClient,\n algosdkStatic,\n network = DEFAULT_NETWORK\n }: InitParams<PROVIDER_ID.DAFFI>) {\n try {\n debugLog(`${PROVIDER_ID.DAFFI.toUpperCase()} initializing...`)\n\n let DaffiWalletConnect\n if (clientStatic) {\n DaffiWalletConnect = clientStatic\n } else if (getDynamicClient) {\n DaffiWalletConnect = await getDynamicClient()\n } else {\n throw new Error(\n 'Daffi Wallet provider missing required property: clientStatic or getDynamicClient'\n )\n }\n\n const algosdk = algosdkStatic || (await Algod.init(algodOptions)).algosdk\n const algodClient = getAlgodClient(algosdk, algodOptions)\n\n const daffiWallet = new DaffiWalletConnect({\n ...(clientOptions && clientOptions)\n })\n\n const provider = new DaffiWalletClient({\n metadata: DaffiWalletClient.metadata,\n client: daffiWallet,\n clientOptions,\n algosdk,\n algodClient,\n network\n })\n\n debugLog(`${PROVIDER_ID.DAFFI.toUpperCase()} initialized`, '✅')\n\n return provider\n } catch (e) {\n console.error('Error initializing...', e)\n return null\n }\n }\n\n async connect(onDisconnect: () => void): Promise<Wallet> {\n const accounts = await this.#client.connect()\n\n this.#client.connector?.on('disconnect', onDisconnect)\n\n if (accounts.length === 0) {\n throw new Error(`No accounts found for ${DaffiWalletClient.metadata.id}`)\n }\n\n const mappedAccounts = accounts.map((address: string, index: number) => ({\n name: `Daffi Wallet ${index + 1}`,\n address,\n providerId: DaffiWalletClient.metadata.id\n }))\n\n return {\n ...DaffiWalletClient.metadata,\n accounts: mappedAccounts\n }\n }\n\n async reconnect(onDisconnect: () => void) {\n const accounts = await this.#client.reconnectSession().catch(console.info)\n\n this.#client.connector?.on('disconnect', onDisconnect)\n\n if (!accounts) {\n onDisconnect()\n return null\n }\n\n return {\n ...DaffiWalletClient.metadata,\n accounts: accounts.map((address: string, index: number) => ({\n name: `Daffi Wallet ${index + 1}`,\n address,\n providerId: DaffiWalletClient.metadata.id\n }))\n }\n }\n\n async disconnect() {\n await this.#client.disconnect()\n }\n\n async signTransactions(\n connectedAccounts: string[],\n txnGroups: Uint8Array[] | Uint8Array[][],\n indexesToSign?: number[],\n returnGroup = true\n ) {\n // If txnGroups is a nested array, flatten it\n const transactions: Uint8Array[] = Array.isArray(txnGroups[0])\n ? (txnGroups as Uint8Array[][]).flatMap((txn) => txn)\n : (txnGroups as Uint8Array[])\n\n // Decode the transactions to access their properties.\n const decodedTxns = transactions.map((txn) => {\n return this.algosdk.decodeObj(txn)\n }) as Array<DecodedTransaction | DecodedSignedTransaction>\n\n const signedIndexes: number[] = []\n\n // Marshal the transactions,\n // and add the signers property if they shouldn't be signed.\n const txnsToSign = decodedTxns.reduce<DaffiTransaction[]>((acc, txn, i) => {\n const isSigned = 'txn' in txn\n\n // If the indexes to be signed is specified, designate that it should be signed\n if (indexesToSign && indexesToSign.length && indexesToSign.includes(i)) {\n signedIndexes.push(i)\n acc.push({\n txn: this.algosdk.decodeUnsignedTransaction(transactions[i])\n })\n // If the indexes to be signed is specified, but it's not included in it,\n // designate that it should not be signed\n } else if (indexesToSign && indexesToSign.length && !indexesToSign.includes(i)) {\n acc.push({\n txn: isSigned\n ? this.algosdk.decodeSignedTransaction(transactions[i]).txn\n : this.algosdk.decodeUnsignedTransaction(transactions[i]),\n signers: []\n })\n // If the transaction is unsigned and is to be sent from a connected account,\n // designate that it should be signed\n } else if (!isSigned && connectedAccounts.includes(this.algosdk.encodeAddress(txn['snd']))) {\n signedIndexes.push(i)\n acc.push({\n txn: this.algosdk.decodeUnsignedTransaction(transactions[i])\n })\n // Otherwise, designate that it should not be signed\n } else if (isSigned) {\n acc.push({\n txn: this.algosdk.decodeSignedTransaction(transactions[i]).txn,\n signers: []\n })\n } else if (!isSigned) {\n acc.push({\n txn: this.algosdk.decodeUnsignedTransaction(transactions[i]),\n signers: []\n })\n }\n\n return acc\n }, [])\n\n // Sign them with the client.\n const result = await this.#client.signTransaction([txnsToSign])\n\n // Join the newly signed transactions with the original group of transactions.\n const signedTxns = transactions.reduce<Uint8Array[]>((acc, txn, i) => {\n if (signedIndexes.includes(i)) {\n const signedByUser = result.shift()\n signedByUser && acc.push(signedByUser)\n } else if (returnGroup) {\n acc.push(transactions[i])\n }\n\n return acc\n }, [])\n\n return signedTxns\n }\n}\n\nexport default DaffiWalletClient\n","export const ICON =\n 'data:image/svg+xml;base64,' +\n 'PHN2ZyB2aWV3Qm94PSIwIDAgMzIgMzIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgogIDxjaXJjbGUgZmlsbD0iIzI0NUVDNiIgY3g9IjE2IiBjeT0iMTYiIHI9IjE2Ii8+CiAgPHBvbHlnb24gZmlsbD0iI0ZGRkZGRiIgcG9pbnRzPSIxMi40LDIxLjIgMTQuNSwyMS4yIDE1LjMsMTkuOSAxNi42LDE3LjYgMTguMSwxNC45IDE5LjksMTEuNyAyMC4yLDExLjIgMjAuMywxMS43IDIyLjksMjEuMiAyNSwyMS4yIDIxLjUsOC45IDIxLjQsOC42IDE5LjUsOC42IDE5LjUsOC43IDE3LjgsMTEuOCAxNiwxNC45IDE1LjgsMTQuMSAxNS4yLDExLjcgMTUuMSwxMS41IDE0LjQsOC45IDE0LjMsOC42IDEyLjQsOC42IDEyLjQsOC43IDEwLjcsMTEuOCA4LjksMTUgNy4xLDE4IDUuMywyMS4yIDcuNCwyMS4yIDkuMiwxOCAxMSwxNC44IDEyLjgsMTEuNiAxMy4xLDExLjEgMTMuMiwxMS42IDEzLjcsMTMuNyAxNC40LDE2LjMgMTQuNiwxNy4yIDE0LjIsMTgiLz4KPC9zdmc+'\n","/**\n * Documentation:\n * https://github.com/randlabs/myalgo-connect\n */\nimport Algod, { getAlgodClient } from '../../algod'\nimport BaseClient from '../base'\nimport { DEFAULT_NETWORK, PROVIDER_ID } from '../../constants'\nimport { debugLog } from '../../utils/debugLog'\nimport { ICON } from './constants'\nimport type MyAlgoConnect from '@randlabs/myalgo-connect'\nimport type { DecodedSignedTransaction, DecodedTransaction, Network } from '../../types/node'\nimport type { InitParams } from '../../types/providers'\nimport type { MyAlgoConnectOptions, MyAlgoWalletClientConstructor } from './types'\n\nclass MyAlgoWalletClient extends BaseClient {\n #client: MyAlgoConnect\n clientOptions?: MyAlgoConnectOptions\n network: Network\n\n constructor({\n metadata,\n client,\n clientOptions,\n algosdk,\n algodClient,\n network\n }: MyAlgoWalletClientConstructor) {\n super(metadata, algosdk, algodClient)\n this.#client = client\n this.clientOptions = clientOptions\n this.network = network\n this.metadata = MyAlgoWalletClient.metadata\n }\n\n static metadata = {\n id: PROVIDER_ID.MYALGO,\n name: 'MyAlgo',\n icon: ICON,\n isWalletConnect: false\n }\n\n static async init({\n clientOptions,\n algodOptions,\n clientStatic,\n getDynamicClient,\n algosdkStatic,\n network = DEFAULT_NETWORK\n }: InitParams<PROVIDER_ID.MYALGO>): Promise<BaseClient | null> {\n try {\n debugLog(`${PROVIDER_ID.MYALGO.toUpperCase()} initializing...`)\n\n let MyAlgoConnect\n if (clientStatic) {\n MyAlgoConnect = clientStatic\n } else if (getDynamicClient) {\n MyAlgoConnect = await getDynamicClient()\n } else {\n throw new Error(\n 'MyAlgo Wallet provider missing required property: clientStatic or getDynamicClient'\n )\n }\n\n const algosdk = algosdkStatic || (await Algod.init(algodOptions)).algosdk\n const algodClient = getAlgodClient(algosdk, algodOptions)\n\n const myAlgo = new MyAlgoConnect({\n ...(clientOptions ? clientOptions : { disableLedgerNano: false })\n })\n\n const provider = new MyAlgoWalletClient({\n metadata: MyAlgoWalletClient.metadata,\n client: myAlgo,\n clientOptions,\n algosdk: algosdk,\n algodClient: algodClient,\n network\n })\n\n debugLog(`${PROVIDER_ID.MYALGO.toUpperCase()} initialized`, '✅')\n\n return provider\n } catch (e) {\n console.error('Error initializing...', e)\n return null\n }\n }\n\n async connect() {\n const accounts = await this.#client.connect()\n\n if (accounts.length === 0) {\n throw new Error(`No accounts found for ${MyAlgoWalletClient.metadata.id}`)\n }\n\n const mappedAccounts = accounts.map((account) => ({\n ...account,\n providerId: MyAlgoWalletClient.metadata.id\n }))\n\n return {\n ...MyAlgoWalletClient.metadata,\n accounts: mappedAccounts\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/require-await\n async reconnect() {\n return null\n }\n\n // eslint-disable-next-line @typescript-eslint/require-await\n async disconnect() {\n return\n }\n\n async signTransactions(\n connectedAccounts: string[],\n transactions: Uint8Array[],\n indexesToSign?: number[],\n returnGroup = true\n ) {\n // Decode the transactions to access their properties.\n const decodedTxns = transactions.map((txn) => {\n return this.algosdk.decodeObj(txn)\n }) as Array<DecodedTransaction | DecodedSignedTransaction>\n\n const signedIndexes: number[] = []\n\n // Get the transactions to be signed\n const txnsToSign = decodedTxns.reduce<Uint8Array[]>((acc, txn, i) => {\n const isSigned = 'txn' in txn\n\n // If the indexes to be signed is specified, add it to the transactions to be signed,\n if (indexesToSign && indexesToSign.length && indexesToSign?.includes(i)) {\n signedIndexes.push(i)\n acc.push(transactions[i])\n // Otherwise, if the transaction is unsigned and is to be sent from a connected account,\n // add it to the transactions to be signed\n } else if (!isSigned && connectedAccounts.includes(this.algosdk.encodeAddress(txn['snd']))) {\n signedIndexes.push(i)\n acc.push(transactions[i])\n }\n\n return acc\n }, [])\n\n // Sign them with the client.\n const result = await this.#client.signTransaction(txnsToSign)\n\n const signedTxns = transactions.reduce<Uint8Array[]>((acc, txn, i) => {\n if (signedIndexes.includes(i)) {\n const signedByUser = result.shift()?.blob\n signedByUser && acc.push(signedByUser)\n } else if (returnGroup) {\n acc.push(txn)\n }\n\n return acc\n }, [])\n\n return signedTxns\n }\n}\n\nexport default MyAlgoWalletClient\n","export const ICON =\n 'data:image/svg+xml;base64,' +\n 'PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+Cjxzdmcgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3BhY2U9InByZXNlcnZlIiB4bWxuczpzZXJpZj0iaHR0cDovL3d3dy5zZXJpZi5jb20vIiBzdHlsZT0iZmlsbC1ydWxlOmV2ZW5vZGQ7Y2xpcC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO3N0cm9rZS1taXRlcmxpbWl0OjI7Ij4KICAgIDxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDI0IiBoZWlnaHQ9IjEwMjQiLz4KICAgIDxnIHRyYW5zZm9ybT0ibWF0cml4KDEuNjgyMDksMCwwLDEuNjgyMDksMjI2LjM2OCwyMTIuODE4KSI+CiAgICAgICAgPHBhdGggZD0iTTMyNy4wNDksMjgwLjE5MkwxNjkuNTI0LDEzTDEyLDI4MC4xOTJMMTY5LjUyNCwxODkuMDg0TDMyNy4wNDksMjgwLjE5MloiIHN0eWxlPSJmaWxsOndoaXRlO2ZpbGwtcnVsZTpub256ZXJvOyIvPgogICAgPC9nPgogICAgPGcgdHJhbnNmb3JtPSJtYXRyaXgoMS42ODIwOSwwLDAsMS42ODIwOSwyMjYuMzY4LDIxMi44MTgpIj4KICAgICAgICA8cGF0aCBkPSJNMjk5LjU0NiwzMDdMMTY5LjUyNSwyMzguNDczTDM5LjUwNCwzMDdMMTY5LjUyNSwyNjQuNjdMMjk5LjU0NiwzMDdaIiBzdHlsZT0iZmlsbDp3aGl0ZTtmaWxsLXJ1bGU6bm9uemVybzsiLz4KICAgIDwvZz4KPC9zdmc+Cg=='\n","/**\n * Helpful resources:\n * https://github.com/blockshake-io/defly-connect\n */\nimport Algod, { getAlgodClient } from '../../algod'\nimport BaseClient from '../base'\nimport { DEFAULT_NETWORK, PROVIDER_ID } from '../../constants'\nimport { debugLog } from '../../utils/debugLog'\nimport { ICON } from './constants'\nimport type { DeflyWalletConnect } from '@blockshake/defly-connect'\nimport type { DecodedSignedTransaction, DecodedTransaction, Network } from '../../types/node'\nimport type { InitParams } from '../../types/providers'\nimport type { Wallet } from '../../types/wallet'\nimport type {\n DeflyTransaction,\n DeflyWalletClientConstructor,\n DeflyWalletConnectOptions\n} from './types'\n\nclass DeflyWalletClient extends BaseClient {\n #client: DeflyWalletConnect\n clientOptions?: DeflyWalletConnectOptions\n network: Network\n\n constructor({\n metadata,\n client,\n clientOptions,\n algosdk,\n algodClient,\n network\n }: DeflyWalletClientConstructor) {\n super(metadata, algosdk, algodClient)\n this.#client = client\n this.clientOptions = clientOptions\n this.network = network\n this.metadata = DeflyWalletClient.metadata\n }\n\n static metadata = {\n id: PROVIDER_ID.DEFLY,\n name: 'Defly',\n icon: ICON,\n isWalletConnect: true\n }\n\n static async init({\n clientOptions,\n algodOptions,\n clientStatic,\n getDynamicClient,\n algosdkStatic,\n network = DEFAULT_NETWORK\n }: InitParams<PROVIDER_ID.DEFLY>): Promise<BaseClient | null> {\n try {\n debugLog(`${PROVIDER_ID.DEFLY.toUpperCase()} initializing...`)\n\n let DeflyWalletConnect\n if (clientStatic) {\n DeflyWalletConnect = clientStatic\n } else if (getDynamicClient) {\n DeflyWalletConnect = await getDynamicClient()\n } else {\n throw new Error(\n 'Defly Wallet provider missing required property: clientStatic or getDynamicClient'\n )\n }\n\n const algosdk = algosdkStatic || (await Algod.init(algodOptions)).algosdk\n const algodClient = getAlgodClient(algosdk, algodOptions)\n\n const deflyWallet = new DeflyWalletConnect({\n ...(clientOptions && clientOptions)\n })\n\n const provider = new DeflyWalletClient({\n metadata: DeflyWalletClient.metadata,\n client: deflyWallet,\n algosdk,\n algodClient,\n network\n })\n\n debugLog(`${PROVIDER_ID.DEFLY.toUpperCase()} initialized`, '✅')\n\n return provider\n } catch (e) {\n console.error('Error initializing...', e)\n return null\n }\n }\n\n async connect(onDisconnect: () => void): Promise<Wallet> {\n const accounts = await this.#client.connect().catch(console.info)\n\n this.#client.connector?.on('disconnect', onDisconnect)\n\n if (!accounts || accounts.length === 0) {\n throw new Error(`No accounts found for ${DeflyWalletClient.metadata.id}`)\n }\n\n const mappedAccounts = accounts.map((address: string, index: number) => ({\n name: `Defly Wallet ${index + 1}`,\n address,\n providerId: DeflyWalletClient.metadata.id\n }))\n\n return {\n ...DeflyWalletClient.metadata,\n accounts: mappedAccounts\n }\n }\n\n async reconnect(onDisconnect: () => void) {\n const accounts = await this.#client.reconnectSession().catch(console.info)\n this.#client.connector?.on('disconnect', onDisconnect)\n\n if (!accounts) {\n return null\n }\n\n return {\n ...DeflyWalletClient.metadata,\n accounts: accounts.map((address: string, index: number) => ({\n name: `Defly Wallet ${index + 1}`,\n address,\n providerId: DeflyWalletClient.metadata.id\n }))\n }\n }\n\n async disconnect() {\n await this.#client.disconnect()\n }\n\n async signTransactions(\n connectedAccounts: string[],\n txnGroups: Uint8Array[] | Uint8Array[][],\n indexesToSign?: number[],\n returnGroup = true\n ) {\n // If txnGroups is a nested array, flatten it\n const transactions: Uint8Array[] = Array.isArray(txnGroups[0])\n ? (txnGroups as Uint8Array[][]).flatMap((txn) => txn)\n : (txnGroups as Uint8Array[])\n\n // Decode the transactions to access their properties.\n const decodedTxns = transactions.map((txn) => {\n return this.algosdk.decodeObj(txn)\n }) as Array<DecodedTransaction | DecodedSignedTransaction>\n\n const signedIndexes: number[] = []\n\n // Marshal the transactions,\n // and add the signers property if they shouldn't be signed.\n const txnsToSign = decodedTxns.reduce<DeflyTransaction[]>((acc, txn, i) => {\n const isSigned = 'txn' in txn\n\n // If the indexes to be signed is specified, designate that it should be signed\n if (indexesToSign && indexesToSign.length && indexesToSign.includes(i)) {\n signedIndexes.push(i)\n acc.push({\n txn: this.algosdk.decodeUnsignedTransaction(transactions[i])\n })\n // If the indexes to be signed is specified, but it's not included in it,\n // designate that it should not be signed\n } else if (indexesToSign && indexesToSign.length && !indexesToSign.includes(i)) {\n acc.push({\n txn: isSigned\n ? this.algosdk.decodeSignedTransaction(transactions[i]).txn\n : this.algosdk.decodeUnsignedTransaction(transactions[i]),\n signers: []\n })\n // If the transaction is unsigned and is to be sent from a connected account,\n // designate that it should be signed\n } else if (!isSigned && connectedAccounts.includes(this.algosdk.encodeAddress(txn['snd']))) {\n signedIndexes.push(i)\n acc.push({\n txn: this.algosdk.decodeUnsignedTransaction(transactions[i])\n })\n // Otherwise, designate that it should not be signed\n } else if (isSigned) {\n acc.push({\n txn: this.algosdk.decodeSignedTransaction(transactions[i]).txn,\n signers: []\n })\n } else if (!isSigned) {\n acc.push({\n txn: this.algosdk.decodeUnsignedTransaction(transactions[i]),\n signers: []\n })\n }\n\n return acc\n }, [])\n\n // Sign them with the client.\n const result = await this.#client.signTransaction([txnsToSign])\n\n // Join the newly signed transactions with the original group of transactions.\n const signedTxns = transactions.reduce<Uint8Array[]>((acc, txn, i) => {\n if (signedIndexes.includes(i)) {\n const signedByUser = result.shift()\n signedByUser && acc.push(signedByUser)\n } else if (returnGroup) {\n acc.push(transactions[i])\n }\n\n return acc\n }, [])\n\n return signedTxns\n }\n}\n\nexport default DeflyWalletClient\n","export const ICON =\n 'data:image/svg+xml;base64,' +\n 'PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI2LjUuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgoJIHZpZXdCb3g9IjAgMCAzMDAgMzAwIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAzMDAgMzAwOyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+CjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+Cgkuc3Qwe2ZpbGw6dXJsKCNTVkdJRF8xXyk7fQoJLnN0MXtmaWxsOnVybCgjU1ZHSURfMDAwMDAwNDM0MjYxNjcxNDAxMDY1ODIyNzAwMDAwMDIxMzA3Njg5MDYwNzMxMTM0ODRfKTt9Cgkuc3Qye2ZpbGw6dXJsKCNTVkdJRF8wMDAwMDEwMjUxOTMxNjAxNTI3NjU4MTY0MDAwMDAxNjI3NDExMjM4MzE3NTY0MTc1OV8pO2ZpbHRlcjp1cmwoI0Fkb2JlX09wYWNpdHlNYXNrRmlsdGVyKTt9Cgkuc3Qze2ZpbGw6dXJsKCNTVkdJRF8wMDAwMDEzODU2MzM4MjQ2MjA4NjAyMDM1MDAwMDAxNDg3ODQ5MDI3MDc4MjA3MTIwN18pO30KCS5zdDR7bWFzazp1cmwoI21hc2swXzE2NjFfMjk1XzAwMDAwMDg4MTMyMjUxNTk3NDQxNTczNDkwMDAwMDExNjkzNjEyMDE4NTA2NjgxNDgxXyk7fQoJLnN0NXtmaWxsOnVybCgjU1ZHSURfMDAwMDAxMDYxMjA2MzI0NjE3OTI4NzExNjAwMDAwMDc0MzM5MTMwMzgzMzc3NjY1NzZfKTt9Cjwvc3R5bGU+CjxnPgoJCgkJPGxpbmVhckdyYWRpZW50IGlkPSJTVkdJRF8xXyIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSIyNDYuNjAzIiB5MT0iOS4yMjEyIiB4Mj0iMTc0LjE1OCIgeTI9IjMwOC41NDI2IiBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KDEgMCAwIC0xIDAgMzAyKSI+CgkJPHN0b3AgIG9mZnNldD0iMCIgc3R5bGU9InN0b3AtY29sb3I6IzBCNDZGOSIvPgoJCTxzdG9wICBvZmZzZXQ9IjEiIHN0eWxlPSJzdG9wLWNvbG9yOiNCQkZCRTAiLz4KCTwvbGluZWFyR3JhZGllbnQ+Cgk8cGF0aCBjbGFzcz0ic3QwIiBkPSJNMjc0LjcsOTMuOUwxNjYuNiwyM3YzOS42bDY5LjQsNDUuMWwtOC4yLDI1LjhoLTYxLjJ2MzIuOWg2MS4ybDguMiwyNS44bC02OS40LDQ1LjFWMjc3bDEwOC4yLTcwLjdMMjU3LDE1MC4xCgkJTDI3NC43LDkzLjl6Ii8+CgkKCQk8bGluZWFyR3JhZGllbnQgaWQ9IlNWR0lEXzAwMDAwMDE4MjI4MjM3MTUxMjM5MTUxMzIwMDAwMDE3ODM4NjY0MjU5NzY2MjczOTI1XyIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSIxMjkuMzUxNiIgeTE9Ii0xOS4xNTczIiB4Mj0iNTYuOTA2NiIgeTI9IjI4MC4xNjQxIiBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KDEgMCAwIC0xIDAgMzAyKSI+CgkJPHN0b3AgIG9mZnNldD0iMCIgc3R5bGU9InN0b3AtY29sb3I6IzBCNDZGOSIvPgoJCTxzdG9wICBvZmZzZXQ9IjEiIHN0eWxlPSJzdG9wLWNvbG9yOiNCQkZCRTAiLz4KCTwvbGluZWFyR3JhZGllbnQ+Cgk8cGF0aCBzdHlsZT0iZmlsbDp1cmwoI1NWR0lEXzAwMDAwMDE4MjI4MjM3MTUxMjM5MTUxMzIwMDAwMDE3ODM4NjY0MjU5NzY2MjczOTI1Xyk7IiBkPSJNNzIuNSwxNjYuNGg2MXYtMzIuOUg3Mi4ybC03LjktMjUuOAoJCWw2OS4yLTQ1LjFWMjNMMjUuMyw5My45TDQzLDE1MC4xbC0xNy43LDU2LjJMMTMzLjcsMjc3di0zOS42bC02OS40LTQ1LjFMNzIuNSwxNjYuNHoiLz4KCTxkZWZzPgoJCTxmaWx0ZXIgaWQ9IkFkb2JlX09wYWNpdHlNYXNrRmlsdGVyIiBmaWx0ZXJVbml0cz0idXNlclNwYWNlT25Vc2UiIHg9IjI1LjQiIHk9IjIzIiB3aWR0aD0iMjQ3LjYiIGhlaWdodD0iMjU0Ij4KCQkJPGZlQ29sb3JNYXRyaXggIHR5cGU9Im1hdHJpeCIgdmFsdWVzPSIxIDAgMCAwIDAgIDAgMSAwIDAgMCAgMCAwIDEgMCAwICAwIDAgMCAxIDAiLz4KCQk8L2ZpbHRlcj4KCTwvZGVmcz4KCQoJCTxtYXNrIG1hc2tVbml0cz0idXNlclNwYWNlT25Vc2UiIHg9IjI1LjQiIHk9IjIzIiB3aWR0aD0iMjQ3LjYiIGhlaWdodD0iMjU0IiBpZD0ibWFzazBfMTY2MV8yOTVfMDAwMDAwODgxMzIyNTE1OTc0NDE1NzM0OTAwMDAwMTE2OTM2MTIwMTg1MDY2ODE0ODFfIj4KCQkKCQkJPGxpbmVhckdyYWRpZW50IGlkPSJTVkdJRF8wMDAwMDE2NTkyOTcyNDMwMzE2NDIwMzAwMDAwMDAwNzEwMTkwNDk4NDUxOTkxNTE2Ml8iIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIiB4MT0iMjQ2LjYwMzgiIHkxPSI5LjIyMTQiIHgyPSIxNzQuMTU4OCIgeTI9IjMwOC41NDI4IiBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KDEgMCAwIC0xIDAgMzAyKSI+CgkJCTxzdG9wICBvZmZzZXQ9IjAiIHN0eWxlPSJzdG9wLWNvbG9yOiMwQjQ2RjkiLz4KCQkJPHN0b3AgIG9mZnNldD0iMSIgc3R5bGU9InN0b3AtY29sb3I6I0JCRkJFMCIvPgoJCTwvbGluZWFyR3JhZGllbnQ+CgkJPHBhdGggc3R5bGU9ImZpbGw6dXJsKCNTVkdJRF8wMDAwMDE2NTkyOTcyNDMwMzE2NDIwMzAwMDAwMDAwNzEwMTkwNDk4NDUxOTkxNTE2Ml8pO2ZpbHRlcjp1cmwoI0Fkb2JlX09wYWNpdHlNYXNrRmlsdGVyKTsiIGQ9IgoJCQlNMjc0LjcsOTMuOUwxNjYuNiwyM3YzOS42bDY5LjQsNDUuMWwtOC4yLDI1LjhoLTYxLjJ2MzIuOWg2MS4ybDguMiwyNS44bC02OS40LDQ1LjFWMjc3bDEwOC4yLTcwLjdMMjU3LDE1MC4xTDI3NC43LDkzLjl6Ii8+CgkJCgkJCTxsaW5lYXJHcmFkaWVudCBpZD0iU1ZHSURfMDAwMDAxMTk4MTE3MDc2MjE0NzI4MTQyNzAwMDAwMTA4Mjk2NTkzODM4NTEyMDI0OTFfIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjEyOS4zNTIxIiB5MT0iLTE5LjE1NzEiIHgyPSI1Ni45MDcxIiB5Mj0iMjgwLjE2NDIiIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoMSAwIDAgLTEgMCAzMDIpIj4KCQkJPHN0b3AgIG9mZnNldD0iMCIgc3R5bGU9InN0b3AtY29sb3I6IzBCNDZGOSIvPgoJCQk8c3RvcCAgb2Zmc2V0PSIxIiBzdHlsZT0ic3RvcC1jb2xvcjojQkJGQkUwIi8+CgkJPC9saW5lYXJHcmFkaWVudD4KCQk8cGF0aCBzdHlsZT0iZmlsbDp1cmwoI1NWR0lEXzAwMDAwMTE5ODExNzA3NjIxNDcyODE0MjcwMDAwMDEwODI5NjU5MzgzODUxMjAyNDkxXyk7IiBkPSJNNzIuNSwxNjYuNGg2MXYtMzIuOUg3Mi4ybC03LjktMjUuOAoJCQlsNjkuMi00NS4xVjIzTDI1LjMsOTMuOUw0MywxNTAuMWwtMTcuNyw1Ni4yTDEzMy43LDI3N3YtMzkuNmwtNjkuNC00NS4xTDcyLjUsMTY2LjR6Ii8+Cgk8L21hc2s+Cgk8ZyBjbGFzcz0ic3Q0Ij4KCQkKCQkJPGxpbmVhckdyYWRpZW50IGlkPSJTVkdJRF8wMDAwMDEwOTAxOTkxODU1Nzc3MzA1MzQyMDAwMDAxNzYwMjQwNTkwODA2NzEyMDMwMF8iIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIiB4MT0iNDYuNDY2MiIgeTE9IjIyOC43NTU0IiB4Mj0iMTcxLjg2MzgiIHkyPSIxMzUuMTAzOSIgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCgxIDAgMCAtMSAwIDMwMikiPgoJCQk8c3RvcCAgb2Zmc2V0PSIwLjExOTgiIHN0eWxlPSJzdG9wLWNvbG9yOiM4OTUyRkY7c3RvcC1vcGFjaXR5OjAuODciLz4KCQkJPHN0b3AgIG9mZnNldD0iMSIgc3R5bGU9InN0b3AtY29sb3I6I0RBQkRGRjtzdG9wLW9wYWNpdHk6MCIvPgoJCTwvbGluZWFyR3JhZGllbnQ+CgkJCgkJCTxyZWN0IHg9IjI1LjQiIHk9IjIzIiBzdHlsZT0iZmlsbDp1cmwoI1NWR0lEXzAwMDAwMTA5MDE5OTE4NTU3NzczMDUzNDIwMDAwMDE3NjAyNDA1OTA4MDY3MTIwMzAwXyk7IiB3aWR0aD0iMjQ3LjYiIGhlaWdodD0iMjU0Ii8+Cgk8L2c+CjwvZz4KPC9zdmc+Cg=='\n","/**\n * Documentation:\n * https://docs.exodus.com/api-reference/algorand-provider-api/\n */\nimport Algod, { getAlgodClient } from '../../algod'\nimport BaseClient from '../base'\nimport { DEFAULT_NETWORK, PROVIDER_ID } from '../../constants'\nimport { debugLog } from '../../utils/debugLog'\nimport { ICON } from './constants'\nimport type { DecodedSignedTransaction, DecodedTransaction, Network } from '../../types/node'\nimport type { InitParams } from '../../types/providers'\nimport type { Exodus, ExodusClientConstructor, ExodusOptions, WindowExtended } from './types'\n\nclass ExodusClient extends BaseClient {\n #client: Exodus\n clientOptions: ExodusOptions\n network: Network\n\n constructor({\n metadata,\n client,\n clientOptions,\n algosdk,\n algodClient,\n network\n }: ExodusClientConstructor) {\n super(metadata, algosdk, algodClient)\n this.#client = client\n this.clientOptions = clientOptions\n this.network = network\n this.metadata = ExodusClient.metadata\n }\n\n static metadata = {\n id: PROVIDER_ID.EXODUS,\n name: 'Exodus',\n icon: ICON,\n isWalletConnect: false\n }\n\n static async init({\n clientOptions,\n algodOptions,\n algosdkStatic,\n network = DEFAULT_NETWORK\n }: InitParams<PROVIDER_ID.EXODUS>): Promise<BaseClient | null> {\n try {\n debugLog(`${PROVIDER_ID.EXODUS.toUpperCase()} initializing...`)\n\n if (typeof window == 'undefined' || (window as WindowExtended).exodus === undefined) {\n throw new Error('Exodus is not available.')\n }\n\n const algosdk = algosdkStatic || (await Algod.init(algodOptions)).algosdk\n const algodClient = getAlgodClient(algosdk, algodOptions)\n const exodus = (window as WindowExtended).exodus.algorand\n\n const provider = new ExodusClient({\n metadata: ExodusClient.metadata,\n client: exodus,\n algosdk: algosdk,\n algodClient: algodClient,\n clientOptions: clientOptions || { onlyIfTrusted: false },\n network\n })\n\n debugLog(`${PROVIDER_ID.EXODUS.toUpperCase()} initialized`, '✅')\n\n return provider\n } catch (e) {\n console.warn(e)\n console.warn(\n `Error initializing ${ExodusClient.metadata.name}.`,\n 'Do you have the extension installed?',\n 'https://www.exodus.com/web3-wallet'\n )\n return null\n }\n }\n\n async connect() {\n const { address } = await this.#client.connect({\n onlyIfTrusted: this.clientOptions.onlyIfTrusted\n })\n\n if (!address) {\n throw new Error(`No accounts found for ${ExodusClient.metadata.id}`)\n }\n\n const accounts = [\n {\n name: `Exodus 1`,\n address,\n providerId: ExodusClient.metadata.id\n }\n ]\n\n return {\n ...ExodusClient.metadata,\n accounts\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/require-await\n async reconnect(onDisconnect: () => void) {\n if (\n window === undefined ||\n (window as WindowExtended).exodus === undefined ||\n (window as WindowExtended).exodus.algorand.isConnected !== true\n ) {\n onDisconnect()\n }\n\n return null\n }\n\n // eslint-disable-next-line @typescript-eslint/require-await\n async disconnect() {\n return\n }\n\n async signTransactions(\n connectedAccounts: string[],\n txnGroups: Uint8Array[] | Uint8Array[][],\n indexesToSign?: number[],\n returnGroup = true\n ) {\n // If txnGroups is a nested array, flatten it\n const transactions: Uint8Array[] = Array.isArray(txnGroups[0])\n ? (txnGroups as Uint8Array[][]).flatMap((txn) => txn)\n : (txnGroups as Uint8Array[])\n\n // Decode the transactions to access their properties.\n const decodedTxns = transactions.map((txn) => {\n return this.algosdk.decodeObj(txn)\n }) as Array<DecodedTransaction | DecodedSignedTransaction>\n\n const signedIndexes: number[] = []\n\n // Get the unsigned transactions.\n const txnsToSign = decodedTxns.reduce<Uint8Array[]>((acc, txn, i) => {\n const isSigned = 'txn' in txn\n\n // If the indexes to be signed is specified\n // add it to the arrays of transactions to be signed.\n if (indexesToSign && indexesToSign.length && indexesToSign.includes(i)) {\n signedIndexes.push(i)\n acc.push(transactions[i])\n // If the transaction isn't already signed and is to be sent from a connected account,\n // add it to the arrays of transactions to be signed\n } else if (!isSigned && connectedAccounts.includes(this.algosdk.encodeAddress(txn['snd']))) {\n signedIndexes.push(i)\n acc.push(transactions[i])\n }\n\n return acc\n }, [])\n\n // Sign them with the client.\n const result = await this.#client.signTransaction(txnsToSign)\n\n // Join the newly signed transactions with the original group of transactions.\n const signedTxns = transactions.reduce<Uint8Array[]>((acc, txn, i) => {\n if (signedIndexes.includes(i)) {\n const signedByUser = result.shift()\n signedByUser && acc.push(signedByUser)\n } else if (returnGroup) {\n acc.push(transactions[i])\n }\n\n return acc\n }, [])\n\n return signedTxns\n }\n}\n\nexport default ExodusClient\n","export const ICON =\n 'data:image/svg+xml;base64,' +\n 'PHN2ZyB3aWR0aD0iMjM4IiBoZWlnaHQ9IjIzOCIgdmlld0JveD0iMCAwIDIzOCAyMzgiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxwYXRoIGQ9Ik01MS43MDUgMTQ1LjA0MkgxMTYuNzA1TDEwNy43MDUgMTU1LjA0Mkg1MS43MDVWMTQ1LjA0MloiIGZpbGw9IiNENjQ1MDAiLz4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xNDcuNTE5IDE5MS41NTdMMTI5LjU3NyAxNDQuMzk0TDE0Mi40MDQgMTI3LjExMkwxNjcuODc1IDE5MS41NTdIMTQ3LjUxOVpNMTEwLjkzNiA5NS4zOTMyTDEyMC42MTMgMTIwLjgzMUwxMzMuMzU5IDEwNC4yMjhMMTE3LjQ3NSA2NC4wNDIyQzExNS45MjggNjAuMTI4IDExMi4xNDYgNTcuNTU2NSAxMDcuOTM4IDU3LjU1NjVDMTAzLjcyOSA1Ny41NTY1IDk5Ljk0NzQgNjAuMTI4IDk4LjQwMDMgNjQuMDQyMkw2Ny45NjU5IDE0MS4wNDJIODcuNzgwN0M5NS40MTUzIDEyMS4wMTEgMTAyLjg5MyAxMDEuMzk5IDEwNS4xOTggOTUuMzU0MUMxMDUuNjQxIDk0LjE5MTIgMTA2Ljc0MyA5My40NTk5IDEwNy45ODcgOTMuNDU5OUgxMDguMTMyQzEwOS4zNzggOTMuNDU5OSAxMTAuNDkzIDk0LjIyOTMgMTEwLjkzNiA5NS4zOTMyWk04MC45MjEgMTU5LjA0MkM3NC45Mjg5IDE3NC43NjggNjkuODY2MSAxODguMDYzIDY4LjU0NDcgMTkxLjU1N0g0OEw2MC44NTE0IDE1OS4wNDJIODAuOTIxWiIgZmlsbD0iIzIyMkI2MCIvPgo8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTE3Ni4wMjYgNTQuNzUwOUMxNzcuOTk3IDUyLjA4NzIgMTgxLjc1NCA1MS41MjU3IDE4NC40MTggNTMuNDk2N0MxODcuMDgyIDU1LjQ2NzggMTg3LjY0MyA1OS4yMjUxIDE4NS42NzIgNjEuODg4OEwxMzAuMDEzIDEzNy4xMDdDMTI5LjcxNCAxMzcuNTEyIDEyOS4zNDEgMTM3Ljg1NyAxMjguOTEzIDEzOC4xMjNMMTE3Ljg1NiAxNDUuMDEzQzExNy4wODcgMTQ1LjQ5MyAxMTYuMTI4IDE0NC43ODMgMTE2LjM2MSAxNDMuOTA3TDExOS43MTggMTMxLjMxOEMxMTkuODQ3IDEzMC44MzIgMTIwLjA2OCAxMzAuMzc0IDEyMC4zNjcgMTI5Ljk3TDE3MC42NyA2MS45ODlMMTY5LjkyOSA2MS40NDA1QzE2OS40ODUgNjEuMTEyIDE2OC44NTkgNjEuMjA1NiAxNjguNTMgNjEuNjQ5NkwxNTIuMzExIDgzLjU2ODhDMTUyLjU4NiA4NC4yMDIzIDE1Mi41MjQgODQuOTYxMiAxNTIuMDg0IDg1LjU1NjJMMTQ5LjExIDg5LjU3NTVDMTQ4LjQ1MyA5MC40NjM0IDE0Ny4yMDEgOTAuNjUwNiAxNDYuMzEzIDg5Ljk5MzZDMTQ1LjQyNSA4OS4zMzY2IDE0NS4yMzggODguMDg0MSAxNDUuODk1IDg3LjE5NjJMMTQ3LjY3OSA4NC43ODQ3TDE0OC44NjkgODMuMTc2OUwxNjcuMzA4IDU4LjI1NzRDMTY4LjYyMiA1Ni40ODE1IDE3MS4xMjcgNTYuMTA3MiAxNzIuOTAzIDU3LjQyMTJMMTczLjY0NCA1Ny45Njk3TDE3Ni4wMjYgNTQuNzUwOVoiIGZpbGw9IiNENjQ1MDAiLz4KPC9zdmc+Cg=='\n\nexport const DEFAULT_NETWORK = 'MainNet'\n","/**\n * Documentation:\n * https://github.com/PureStake/algosigner/blob/develop/docs/dApp-integration.md\n */\nimport Algod, { getAlgodClient } from '../../algod'\nimport BaseClient from '../base'\nimport { DEFAULT_NETWORK, PROVIDER_ID } from '../../constants'\nimport { useWalletStore } from '../../store'\nimport { debugLog } from '../../utils/debugLog'\nimport { ICON } from './constants'\nimport type { DecodedSignedTransaction, DecodedTransaction, Network } from '../../types/node'\nimport type { InitParams } from '../../types/providers'\nimport type {\n AlgoSigner,\n AlgoSignerClientConstructor,\n AlgoSignerTransaction,\n WindowExtended\n} from './types'\n\nclass AlgoSignerClient extends BaseClient {\n #client: AlgoSigner\n network: Network\n walletStore: typeof useWalletStore\n\n constructor({ metadata, client, algosdk, algodClient, network }: AlgoSignerClientConstructor) {\n super(metadata, algosdk, algodClient)\n this.#client = client\n this.network = network\n this.walletStore = useWalletStore\n }\n\n static metadata = {\n id: PROVIDER_ID.ALGOSIGNER,\n name: 'AlgoSigner',\n icon: ICON,\n isWalletConnect: false\n }\n\n static async init({\n algodOptions,\n algosdkStatic,\n network = DEFAULT_NETWORK\n }: InitParams<PROVIDER_ID.ALGOSIGNER>): Promise<BaseClient | null> {\n try {\n debugLog(`${PROVIDER_ID.ALGOSIGNER.toUpperCase()} initializing...`)\n\n if (typeof window == 'undefined' || (window as WindowExtended).algorand === undefined) {\n throw new Error('AlgoSigner is not available.')\n }\n\n const algosdk = algosdkStatic || (await Algod.init(algodOptions)).algosdk\n const algodClient = getAlgodClient(algosdk, algodOptions)\n const algosigner = (window as WindowExtended).algorand\n\n const provider = new AlgoSignerClient({\n metadata: AlgoSignerClient.metadata,\n client: algosigner,\n algosdk: algosdk,\n algodClient: algodClient,\n network\n })\n\n debugLog(`${PROVIDER_ID.ALGOSIGNER.toUpperCase()} initialized`, '✅')\n\n return provider\n } catch (e) {\n console.warn(e)\n console.warn(\n `Error initializing ${AlgoSignerClient.metadata.name}.`,\n 'Do you have the extension installed?',\n 'https://www.purestake.com/technology/algosigner'\n )\n return null\n }\n }\n\n async connect() {\n const { accounts } = await this.#client.enable({ genesisID: this.getGenesisID() })\n\n if (accounts.length === 0) {\n throw new Error(`No accounts found for ${AlgoSignerClient.metadata.id}`)\n }\n\n const mappedAccounts = await Promise.all(\n accounts.map(async (address, index) => {\n // check to see if this is a rekeyed account\n const { 'auth-addr': authAddr } = await this.getAccountInfo(address)\n\n return {\n name: `AlgoSigner ${index + 1}`,\n address,\n providerId: AlgoSignerClient.metadata.id,\n ...(authAddr && { authAddr })\n }\n })\n )\n\n // sort the accounts in the order they were returned by AlgoSigner\n mappedAccounts.sort((a, b) => accounts.indexOf(a.address) - accounts.indexOf(b.address))\n\n return {\n ...AlgoSignerClient.metadata,\n accounts: mappedAccounts\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/require-await\n async reconnect(onDisconnect: () => void) {\n if (window === undefined || (window as WindowExtended).algorand === undefined) {\n onDisconnect()\n }\n\n return null\n }\n\n // eslint-disable-next-line @typescript-eslint/require-await\n async disconnect() {\n return\n }\n\n async signTransactions(\n connectedAccounts: string[],\n transactions: Uint8Array[],\n indexesToSign?: number[],\n returnGroup = true\n ) {\n // Decode the transactions to access their properties.\n const decodedTxns = transactions.map((txn) => {\n return this.algosdk.decodeObj(txn)\n }) as Array<DecodedTransaction | DecodedSignedTransaction>\n\n const signedIndexes: number[] = []\n\n // Marshal the transactions,\n // and add the signers property if they shouldn't be signed.\n const txnsToSign = decodedTxns.reduce<AlgoSignerTransaction[]>((acc, txn, i) => {\n const isSigned = 'txn' in txn\n\n const sender = this.algosdk.encodeAddress(isSigned ? txn.txn.snd : txn.snd)\n const authAddress = this.getAuthAddress(sender) // rekeyed-to account, or undefined\n\n if (indexesToSign && indexesToSign.length && indexesToSign.includes(i)) {\n signedIndexes.push(i)\n acc.push({\n txn: this.#client.encoding.msgpackToBase64(transactions[i]),\n ...(authAddress && { authAddr: authAddress })\n })\n } else if (!isSigned && connectedAccounts.includes(sender)) {\n signedIndexes.push(i)\n acc.push({\n txn: this.#client.encoding.msgpackToBase64(transactions[i]),\n ...(authAddress && { authAddr: authAddress })\n })\n } else {\n acc.push({\n txn: this.#client.encoding.msgpackToBase64(\n isSigned\n ? this.algosdk.decodeSignedTransaction(transactions[i]).txn.toByte()\n : this.algosdk.decodeUnsignedTransaction(transactions[i]).toByte()\n ),\n signers: []\n })\n }\n\n return acc\n }, [])\n\n // Sign them with the client.\n const result = await this.#client.signTxns(txnsToSign)\n\n // Join the newly signed transactions with the original group of transactions\n // if `returnGroup` is true\n const signedTxns = transactions.reduce<Uint8Array[]>((acc, txn, i) => {\n if (signedIndexes.includes(i)) {\n const signedByUser = result[i]\n signedByUser && acc.push(new Uint8Array(Buffer.from(signedByUser, 'base64')))\n } else if (returnGroup) {\n acc.push(txn)\n }\n\n return acc\n }, [])\n\n return signedTxns\n }\n\n getGenesisID() {\n if (this.network === 'betanet') {\n return 'betanet-v1.0'\n }\n if (this.network === 'testnet') {\n return 'testnet-v1.0'\n }\n if (this.network === 'mainnet') {\n return 'mainnet-v1.0'\n }\n return this.network\n }\n\n getAuthAddress(address: string): string | undefined {\n const accounts = this.walletStore.getState().accounts\n const account = accounts.find(\n (acct) => acct.address === address && acct.providerId === this.metadata.id\n )\n\n return account?.authAddr\n }\n}\n\nexport default AlgoSignerClient\n","export const ICON =\n 'data:image/svg+xml;base64,' +\n 'PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iNjAuMjUxIiBoZWlnaHQ9IjU2LjU1NSIgZmlsbD0iI2FiNDdiYyIgdmVyc2lvbj0iMS4xIiB2aWV3Qm94PSIwIDAgNjAuMjUxIDU2LjU1NSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KIDxwYXRoIGQ9Im00Ni45MzQgNDEuMDU1Yy0wLjExNjM3IDZlLTMgLTAuMjUzOTItMC4wMjM5LTAuMzU3OTQtMC4wNzYxLTAuMTExMDUtMC4wNTU3LTAuMjIyNDEtMC4xNTQ5LTAuMjk0MjgtMC4yNTYxNi0wLjA4LTAuMTEyNzUtMC4xNDAxMS0wLjI2NjE3LTAuMTYzNzUtMC40MDIzNC0wLjAyNjktMC4xNTQ4LTAuMDE3Ni0wLjM0MDI2IDAuMDE4Ni0wLjQ5MzE1IDAuMDQxMy0wLjE3NDI5IDAuMTMwMTEtMC4zNjUxOSAwLjIzMTg5LTAuNTEyNTMgMC4xMTU0LTAuMTY3MjcgMC4yODUtMC4zMzQ2MyAwLjQ1MDQ1LTAuNDUyNTkgMC4xODY1NC0wLjEzMjg3IDAuNDI4MjItMC4yNDc1NCAwLjY0NzY0LTAuMzEzMDEgMC4yNDQ5OS0wLjA3MzIgMC41NDA5Ni0wLjEwOTQ1IDAuNzk2NTgtMC4xMDI4NSAwLjI4MyA3ZS0zIDAuNjA3MDggMC4wNjg4IDAuODc0NzQgMC4xNjA5OCAwLjI5NDE3IDAuMTAxMzUgMC42MTQgMC4yNzExNyAwLjg2NTM2IDAuNDU0NSAwLjI3NDM2IDAuMjAwMDYgMC41NTQzOCAwLjQ3ODU3IDAuNzU5NDMgMC43NDkyMSAwLjIyMjQgMC4yOTM2NCAwLjQyNzA0IDAuNjY5NTggMC41NTY5MyAxLjAxNDIgMC4xNDAyMSAwLjM3MTc4IDAuMjM3NzQgMC44MjI4OCAwLjI2ODA4IDEuMjE5IDAuMDMyNSAwLjQyNTIzLTJlLTMgMC45MTkzNC0wLjA4ODUgMS4zMzY5LTAuMDkyOCAwLjQ0NjMxLTAuMjczNzMgMC45NDM3My0wLjQ4NTcgMS4zNDcyLTAuMjI1NzEgMC40Mjk1OS0wLjU1NTg3IDAuODg2MDMtMC44OTAzOCAxLjIzNzctMC4zNTQ5NiAwLjM3MzA2LTAuODIzNzMgMC43NDM1Ni0xLjI2NjYgMS4wMDYxLTAuNDY4NDYgMC4yNzc3Ny0xLjA1MTggMC41MjA3NC0xLjU3NzggMC42NjE0OC0wLjU1NDggMC4xNDg1Mi0xLjIxNjIgMC4yMjk0NC0xLjc5MDUgMC4yMjMwNS0wLjYwNDE5LTZlLTMgLTEuMjk3MS0wLjExMTM3LTEuODc3My0wLjI3OTc5LTAuNjA4ODgtMC4xNzY4NS0xLjI4MDItMC40NzczLTEuODE5Ni0wLjgxMDMyLTAuNTY0OTItMC4zNDg5LTEuMTU4NC0wLjgzOTYtMS42MS0xLjMyNjQtMC40NzE4Ni0wLjUwODctMC45MzMyOS0xLjE2OC0xLjI1MjktMS43ODQtMC4zMzM0Ni0wLjY0MjYzLTAuNjE0ODQtMS40MzM1LTAuNzY1OTItMi4xNDE1LTAuMTU3MzYtMC43Mzc0LTAuMjIxNjctMS42MDk0LTAuMTc4MTItMi4zNjIgMC4wNDU0LTAuNzgyNzUgMC4yMjA1OS0xLjY3NDggMC40NzEyMy0yLjQxNzYgMC4yNjAzLTAuNzcxNDYgMC42ODA0Mi0xLjYxNjcgMS4xMzUtMi4yOTIxIDAuNDcxNDMtMC43MDAzNSAxLjEyMjgtMS40MzA5IDEuNzYyMS0xLjk4MjIgMC42NjIyMi0wLjU3MDk4IDEuNTEyMi0xLjEyMzIgMi4zMDE1LTEuNDk5NyAwLjgxNjM4LTAuMzg5NTYgMS44MTUtMC43MDkzOCAyLjcwNTEtMC44NzA0NyAwLjkxOTc3LTAuMTY2NCAyLjAwMjItMC4yMTQxIDIuOTMzNC0wLjEzMzA4IDAuOTYxMjkgMC4wODM3IDIuMDUyNSAwLjMyOTUxIDIuOTU4MSAwLjY2MjU1IDAuOTMzOTMgMC4zNDM1NiAxLjk1MzQgMC44ODMzNSAyLjc2NDQgMS40NTk2IDAuODM1ODcgMC41OTM5NyAxLjcwMzcgMS40MDYgMi4zNTQ1IDIuMTk4MSAwLjY3MDIyIDAuODE1NTQgMS4zMTM0IDEuODU2MiAxLjc0NjYgMi44MTg4IDAuNDQ1NTcgMC45OTAxNCAwLjgwMzkyIDIuMTk2NSAwLjk3NDggMy4yNjg3IDAuMTc1NjggMS4xMDIyIDAuMjA2ODcgMi4zOTUzIDAuMDg4MSAzLjUwNS0wLjEyMTkgMS4xMzk3LTAuNDM4MzIgMi40MzAxLTAuODUzODcgMy40OTgzLTAuNDI2NjEgMS4wOTY1LTEuMDg2MiAyLjI5LTEuNzg0NCAzLjIzNjktMC43MTYzMSAwLjk3MTMtMS42ODkgMS45NzYzLTIuNjM0IDIuNzI2OC0wLjk2ODc1IDAuNzY5MzMtMi4yMDAzIDEuNTAzNS0zLjMzNjIgMS45OTMzLTEuMTYzOCAwLjUwMTc5LTIuNTc4IDAuODk4NjktMy44MzI0IDEuMDc5NC0xLjI4NDQgMC4xODUwMy0yLjc4ODMgMC4xOTk2Mi00LjA3NjQgMC4wNDMxLTEuMzE4My0wLjE2MDAyLTIuODA3OC0wLjU0NjkzLTQuMDM4Ny0xLjA0NTItMS4yNTktMC41MDk2Ni0yLjYyNjctMS4yODg5LTMuNzA5My0yLjEwOTEtMS4xMDY4LTAuODM4NTMtMi4yNDkxLTEuOTcyLTMuMDk5MS0zLjA2OTktMC44Njg1NS0xLjEyMi0xLjY5MzgtMi41NDQxLTIuMjQwMS0zLjg1MzctMC41NTgtMS4zMzczLTAuOTkzNDQtMi45NTk0LTEuMTgzOC00LjM5Ni0wLjE3NzM4LTEuMTkzNi0wLjU2MTUxLTIuNTM4Ni0xLjA0NDQtMy42NDQ1LTAuNDcwOS0xLjA3ODItMS4xNzQ5LTIuMjQ2MS0xLjkxMTEtMy4xNjM4LTAuNzE3MjctMC44OTQxLTEuNjc2Ni0xLjgxMzItMi42MDI3LTIuNDg4Ny0wLjkwMTY3LTAuNjU3NjUtMi4wMzcxLTEuMjc3My0zLjA3OTQtMS42NzYxLTEuMDE0LTAuMzg4MTgtMi4yMzgtMC42ODA5Ni0zLjMxODMtMC43OTAxOS0xLjA1MDItMC4xMDYxNS0yLjI3MzEtMC4wNjk0LTMuMzE0NCAwLjEwMzE2LTEuMDExNSAwLjE2NzU4LTIuMTQ4NiAwLjUxMzE3LTMuMDgwOCAwLjk0LTAuOTA0NzYgMC40MTQyNi0xLjg4MiAxLjAyNzItMi42NDY1IDEuNjY0My0wLjc0MTIgMC42MTc3My0xLjQ5OTYgMS40Mzk4LTIuMDUyOCAyLjIzMDQtMC41MzU4MSAwLjc2NTkyLTEuMDM1NyAxLjcyNzMtMS4zNTE1IDIuNjA3LTAuMzA1NTYgMC44NTEzMS0wLjUyNzg2IDEuODc2Mi0wLjU5ODc4IDIuNzc3OC0wLjA2ODUgMC44NzE3NC0wLjAxNTMgMS44ODQgMC4xNDgxIDIuNzQzIDAuMTU3NzUgMC44MjkzOCAwLjQ2NDc5IDEuNzU4NyAwLjgzNTU3IDIuNTE3MiAwLjM1NzU2IDAuNzMxNDQgMC44Nzk1MyAxLjUxNzkgMS40MTc1IDIuMTI5IDAuNTE4MDYgMC41ODg0MyAxLjIwMjkgMS4xODYyIDEuODU4MSAxLjYxNjkgMC42MzAwNiAwLjQxNDA1IDEuNDE3NCAwLjc5NDI0IDIuMTM0NSAxLjAyNjggMC42ODg3NCAwLjIyMzE2IDEuNTE0NCAwLjM3NDg3IDIuMjM3NiAwLjQwNzM0IDAuNjkzMjEgMC4wMzEyIDEuNDk0OS0wLjAzODcgMi4xNzE1LTAuMTkzMDIgMC42NDczMi0wLjE0NzY3IDEuMzY5LTAuNDE2MjggMS45NTM2LTAuNzMxMTEgMC41NTgyLTAuMzAwNjYgMS4xNTQtMC43MzE3NSAxLjYxMTYtMS4xNzA3IDAuNDM1OTktMC40MTgyMSAwLjg3MzEzLTAuOTY1OTggMS4xODA5LTEuNDg1OSAwLjI5MjY4LTAuNDk0MjIgMC41NTMzMS0xLjEwNzUgMC43MDIxNS0xLjY2MjIgMC4xNDEwNi0wLjUyNTk0IDAuMjIyMy0xLjE1MjYgMC4yMTYwMi0xLjY5NzItNmUtMyAtMC41MTQ4Ny0wLjA5MjQtMS4xMDYxLTAuMjM4MDYtMS42LTAuMTM3MjMtMC40NjU0OC0wLjM2NzQyLTAuOTc5NzItMC42MjY1NS0xLjM4OTktMC4yNDM1LTAuMzg1NDItMC41ODM4OC0wLjc5MDczLTAuOTIzOTItMS4wOTQyLTAuMzE4MjQtMC4yODM5Ni0wLjcyOTEtMC41NjA2Ni0xLjExMzYtMC43NDUxNi0wLjM1ODE1LTAuMTcxODQtMC43OTc2NS0wLjMxMjkyLTEuMTg5Ny0wLjM3NzMzLTAuMzYzNDgtMC4wNTk4LTAuNzkxMzgtMC4wNzA3LTEuMTU2OS0wLjAyNDgtMC4zMzY4NiAwLjA0MjMtMC43MTgxMiAwLjE0NTQ0LTEuMDI4NSAwLjI4MzEtMC4yODQ0NyAwLjEyNjA1LTAuNTkxNTIgMC4zMTgwMi0wLjgyNjQgMC41MjIxMi0wLjIxMzY3IDAuMTg1NzgtMC40Mjg4NSAwLjQzNTY2LTAuNTc2NzMgMC42NzcxMi0wLjEzMzUxIDAuMjE4MDQtMC4yNTAwOSAwLjQ5MjYzLTAuMzA5MTggMC43NDEzMy0wLjA1MzEgMC4yMjI3My0wLjA3NDYgMC40ODk0My0wLjA1MjcgMC43MTcyNyAwLjAxOTQgMC4yMDIyOCAwLjA3OTUgMC40MzI3OCAwLjE2NjYzIDAuNjE2NDQgMC4wNzY4IDAuMTYxODMgMC4xOTc3MSAwLjMzNDIgMC4zMjgwMiAwLjQ1NzA2IDAuMTE0MjQgMC4xMDc3NSAwLjI3MDIyIDAuMjA4NTcgMC40MTc2NyAwLjI2MjY2IDAuMTI5NzggMC4wNDc4IDAuMjkyNjggMC4wNzIzIDAuNDMwMzQgMC4wNTk0IDAuMTIzNi0wLjAxMTYgMC4yNjUyMS0wLjA1ODQgMC4zNjkwMS0wLjEyNjcgMC4wOTczLTAuMDY0IDAuMTkxOTYtMC4xNjgyMiAwLjI0NDg4LTAuMjcxOTEgMC4wNTI4LTAuMTAzODEgMC4xNDc1NS0wLjIwODAzIDAuMjQ0ODctMC4yNzIwMyAwLjEwMzY5LTAuMDY4MiAwLjI0NTMtMC4xMTUwOCAwLjM2OTAxLTAuMTI2NjkgMC4xMzc2Ni0wLjAxMjkgMC4zMDA0NiAwLjAxMTkgMC40MzAyMyAwLjA1OTQgMC4xNDc0NiAwLjA1NDEgMC4zMDM1NCAwLjE1NDkxIDAuNDE3NzggMC4yNjI2NSAwLjEzMDMyIDAuMTIyODcgMC4yNTEyNiAwLjI5NTI0IDAuMzI4MDIgMC40NTcwNyAwLjA4NzEgMC4xODM2NCAwLjE0NzE0IDAuNDE0MTUgMC4xNjY2MyAwLjYxNjQ0IDAuMDIxOCAwLjIyNzk0IDJlLTQgMC40OTQ2NC0wLjA1MjcgMC43MTcyNy0wLjA1OTIgMC4yNDg4MS0wLjE3NTc4IDAuNTIzMjgtMC4zMDkzIDAuNzQxMzItMC4xNDc3NyAwLjI0MTQ4LTAuMzYzMDQgMC40OTEzNS0wLjU3NjcyIDAuNjc3MTQtMC4yMzQ4NiAwLjIwNDEtMC41NDE5MiAwLjM5NjA1LTAuODI2MjkgMC41MjIxMS0wLjMxMDQ2IDAuMTM3NjYtMC42OTE2MSAwLjI0MDgzLTEuMDI4NiAwLjI4MzEtMC4zNjU0IDAuMDQ1Ny0wLjc5MzM5IDAuMDM1LTEuMTU2OC0wLjAyNDctMC4zOTIxMi0wLjA2NDUtMC44MzE1LTAuMjA1NTktMS4xODk4LTAuMzc3NDItMC4zODQ1Ni0wLjE4NDUyLTAuNzk1MzEtMC40NjEyMi0xLjExMzYtMC43NDUxNi0wLjM0MDE1LTAuMzAzNDMtMC42ODA0My0wLjcwODc1LTAuOTIzOTItMS4wOTQyLTAuMjU5MjQtMC40MTAyMi0wLjQ4OTQyLTAuOTI0NDQtMC42MjY2Ni0xLjM4OTktMC4xNDU2NC0wLjQ5Mzg5LTAuMjMyMS0xLjA4NTEtMC4yMzgwNi0xLjYtNmUtMyAtMC41NDQ1NyAwLjA3NDktMS4xNzEyIDAuMjE2MTMtMS42OTcyIDAuMTQ4ODQtMC41NTQ2OSAwLjQwOTM3LTEuMTY3OSAwLjcwMjA0LTEuNjYyMiAwLjMwNzkxLTAuNTE5ODggMC43NDUwNi0xLjA2NzYgMS4xODEtMS40ODU4IDAuNDU3NDktMC40Mzg5NyAxLjA1MzMtMC44NzAwNiAxLjYxMTYtMS4xNzA3IDAuNTg0NS0wLjMxNDgzIDEuMzA2Mi0wLjU4MzQ0IDEuOTUzNi0wLjczMTExIDAuNjc2NDktMC4xNTQyNyAxLjQ3ODItMC4yMjQyMiAyLjE3MTUtMC4xOTMwMiAwLjcyMzIzIDAuMDMyNSAxLjU0ODggMC4xODQxOSAyLjIzNzUgMC40MDc0NCAwLjcxNzI2IDAuMjMyNDIgMS41MDQ1IDAuNjEyNjEgMi4xMzQ2IDEuMDI2OCAwLjY1NTIgMC40MzA1NSAxLjM0MDEgMS4wMjg0IDEuODU4MiAxLjYxNjggMC41Mzc5NyAwLjYxMTExIDEuMDU5OSAxLjM5NzYgMS40MTc1IDIuMTI5IDAuMzcwNzEgMC43NTg0NyAwLjY3Nzc3IDEuNjg3OCAwLjgzNTU1IDIuNTE3MiAwLjE2MzMzIDAuODU4OTcgMC4yMTY2NiAxLjg3MTMgMC4xNDgxMSAyLjc0My0wLjA3MDkgMC45MDE3OC0wLjI5MzIyIDEuOTI2NS0wLjU5ODc3IDIuNzc3OC0wLjMxNTc5IDAuODc5ODQtMC44MTU2NiAxLjg0MTEtMS4zNTE1IDIuNjA3MS0wLjU1MzExIDAuNzkwNjEtMS4zMTE2IDEuNjEyNi0yLjA1MjggMi4yMzA0LTAuNzY0NDIgMC42MzcxMS0xLjc0MTYgMS4yNS0yLjY0NjMgMS42NjQzLTAuOTMyMjIgMC40MjY4NC0yLjA2OTQgMC43NzI0Mi0zLjA4MDkgMC45NDAwMS0xLjA0MTIgMC4xNzI1OC0yLjI2NDIgMC4yMDkzMS0zLjMxNDQgMC4xMDMxNi0xLjA4MDItMC4xMDkyNC0yLjMwNDItMC40MDIwMi0zLjMxODMtMC43OTAwOS0xLjA0MjItMC4zOTg5NC0yLjE3NzctMS4wMTg2LTMuMDc5NC0xLjY3NjItMC45MjYwOS0wLjY3NTQyLTEuODg1NC0xLjU5NDYtMi42MDI3LTIuNDg4Ny0wLjczNjI1LTAuOTE3NjQtMS40NDAxLTIuMDg1Ni0xLjkxMS0zLjE2MzgtMC40ODMwMi0xLjEwNTktMC44NjcwOC0yLjQ1MDktMS4wNDQ1LTMuNjQ0NS0wLjE4MTktMS4yMjM2LTAuMjAxOTktMi42NTczLTAuMDU4Mi0zLjg4NTkgMC4xNDczNS0xLjI1ODggMC41MTA3NS0yLjY4MTkgMC45ODE0Ni0zLjg1ODYgMC40ODE5Ny0xLjIwNDggMS4yMjEzLTIuNTE0NSAyLjAwMDgtMy41NTE4IDAuNzk3NzUtMS4wNjE2IDEuODc3Ni0yLjE1ODIgMi45MjQ2LTIuOTc1IDEuMDcwOC0wLjgzNTU1IDIuNDI5Ni0xLjYzMDQgMy42ODEyLTIuMTU3OSAxLjI3OTUtMC41MzkyNiAyLjgzMjItMC45NjE4MyA0LjIwODEtMS4xNDkgMS40MDU5LTAuMTkxMiAzLjA1MDMtMC4xOTQ3MiA0LjQ1NzMtMC4wMTMxIDEuNDM3MyAwLjE4NTQ2IDMuMDU5NyAwLjYxOTQyIDQuMzk5IDEuMTcyOCAxLjEyMjUgMC40NDMxMSAyLjQ3OTIgMC43ODI5NiAzLjY3ODQgMC45MTc2MyAxLjE2OTIgMC4xMzEyOCAyLjUzMjUgMC4xMDU2MiAzLjY5NTUtMC4wNzMxIDEuMTMyOS0wLjE3NDE3IDIuNDA4Ni0wLjU0NTMyIDMuNDU2Ni0xLjAwOTYgMS4wMjA0LTAuNDUyMDYgMi4xMjQ4LTEuMTI1NyAyLjk5MTMtMS44Mjg4IDAuODQzMTEtMC42ODQxNSAxLjcwODgtMS41OTc4IDIuMzQzNC0yLjQ3ODYgMC42MTY5OC0wLjg1NjQzIDEuMTk2Ny0xLjkzMzkgMS41Njc5LTIuOTIyIDAuMzYwNTEtMC45NTk3OSAwLjYyOTg2LTIuMTE3MyAwLjcyNjMzLTMuMTM4MSAwLjA5MzYtMC45OTA2OCAwLjA1MTUtMi4xNDM0LTAuMTE4MDgtMy4xMjQtMC4xNjQzOS0wLjk1MDc0LTAuNDk3MS0yLjAxODYtMC45MDUyOC0yLjg5MjktMC4zOTUzMi0wLjg0NzA2LTAuOTc4MDEtMS43NjA3LTEuNTgyLTIuNDc0LTAuNTg0NS0wLjY5MDIyLTEuMzYwOS0xLjM5NTEtMi4xMDYzLTEuOTA3NS0wLjcyMDU3LTAuNDk1MTgtMS42MjQtMC45NTUyMi0yLjQ0OTUtMS4yNDMyLTAuNzk3MTItMC4yNzgwOS0xLjc1NTUtMC40NzY4Ny0yLjU5NzgtMC41MzUtMC44MTIyNC0wLjA1Ni0xLjc1NDMgM2UtMyAtMi41NTI0IDAuMTYzMTEtMC43Njg2OCAwLjE1NDM4LTEuNjI4OCAwLjQ0ODU1LTIuMzI5NCAwLjgwMDc0LTAuNjczNjIgMC4zMzg1Ni0xLjM5NjUgMC44MzAyMi0xLjk1NjQgMS4zMzUyLTAuNTM3NjcgMC40ODQ4NC0xLjA4MTkgMS4xMjQtMS40NzE3IDEuNzM0LTAuMzczNDkgMC41ODQ4My0wLjcxMzg2IDEuMzE0LTAuOTE4NDkgMS45NzcxLTAuMTk1OCAwLjYzNDQ0LTAuMzI0MDggMS4zOTM4LTAuMzQzNjggMi4wNTc1LTAuMDE4NiAwLjYzMzY4IDAuMDU2OCAxLjM2NTIgMC4yMDgxNCAxLjk4MDkgMC4xNDQxNiAwLjU4Njc0IDAuNCAxLjIzOTIgMC42OTYxOSAxLjc2NTggMC4yODE3MiAwLjUwMDUxIDAuNjgyNDYgMS4wMzI4IDEuMDg4NSAxLjQzOTEgMC4zODQ4NyAwLjM4NTIgMC44ODY5OCAwLjc2ODkgMS4zNjE3IDEuMDM1NyAwLjQ0ODg2IDAuMjUyMjIgMS4wMDQyIDAuNDczMDMgMS41MDQ3IDAuNTkzODcgMC40NzE3NSAwLjExMzgyIDEuMDMyMSAwLjE3MTYzIDEuNTE3IDAuMTUyMjUgMC40NTU0Ny0wLjAxODEgMC45NzY2Mi0wLjExMDE5IDEuNDA5NS0wLjI1MzA3IDAuNDA1LTAuMTMzNjIgMC44NTAwNC0wLjM1MTAzIDEuMjAyMS0wLjU5MTc0IDAuMzI3OTEtMC4yMjQzMyAwLjY2OTc4LTAuNTM0NDcgMC45MjE2OC0wLjg0MTczIDAuMjMzNDctMC4yODQ3OSAwLjQ1Njc0LTAuNjQ5OTggMC41OTk3My0wLjk4OTQgMC4xMzE5MS0wLjMxMjkgMC4yMzMxNi0wLjY5NDU5IDAuMjY5MjUtMS4wMzIzIDAuMDMzMS0wLjMwOTQgMC4wMjAyLTAuNjcxMjgtMC4wMzkxLTAuOTc2NjMtMC4wNTQxLTAuMjc3OTktMC4xNjI5LTAuNTg5My0wLjI5OC0wLjgzODEtMC4xMjIxMS0wLjIyNDY1LTAuMzAxNjItMC40NjI4MS0wLjQ4NzQtMC42MzgzNy0wLjE2NjQxLTAuMTU3MjYtMC4zODY1OC0wLjMwOTQtMC41OTQ4My0wLjQwNDM3LTAuMTg0OTMtMC4wODQ0LTAuNDE0NTgtMC4xNDc1Ny0wLjYxNzE4LTAuMTYzODUtMC4xNzg0NS0wLjAxNDUtMC4zODgzIDRlLTMgLTAuNTU5ODIgMC4wNTU1LTAuMTUwNDMgMC4wNDUxLTAuMzE1NzggMC4xMjk3OC0wLjQzNjQgMC4yMzA0LTAuMTA2MTUgMC4wODg2LTAuMjA4ODggMC4yMTczLTAuMjY2NDkgMC4zNDMwMy0wLjA1MTkgMC4xMTI4Ni0wLjA4MjEgMC4yNTg5My0wLjA3NDggMC4zODI4NiA2ZS0zIDAuMTE2MjcgMC4wNDk2IDAuMjUwNDEgMC4xMTMwNyAwLjM0ODA0IDAuMDYzNCAwLjA5NzcgMC4xMDYzNiAwLjIzMTc4IDAuMTEzMTcgMC4zNDgxNSA2ZS0zIDAuMTIzOTItMC4wMjMxIDAuMjctMC4wNzQ4IDAuMzgyODUtMC4wNTc2IDAuMTI1NjMtMC4xNjA0NSAwLjI1NDM1LTAuMjY2NjEgMC4zNDI5My0wLjEyMDUgMC4xMDA3Mi0wLjI4NTg0IDAuMTg1MzYtMC40MzYyOSAwLjIzMDUxLTAuMTcxNTEgMC4wNTEzLTAuMzgxMzYgMC4wNjk5LTAuNTU5ODEgMC4wNTU1LTAuMjAyNi0wLjAxNjQtMC40MzIyNS0wLjA3OTUtMC42MTcxOC0wLjE2Mzk2LTAuMjA4MzUtMC4wOTUtMC40Mjg1My0wLjI0Njk5LTAuNTk0ODMtMC40MDQyNS0wLjE4NTg5LTAuMTc1NTYtMC4zNjUyOS0wLjQxMzgzLTAuNDg3NDEtMC42MzgzOC0wLjEzNTIxLTAuMjQ4ODEtMC4yNDQwMi0wLjU2MDIyLTAuMjk3OTktMC44MzgxLTAuMDU5NS0wLjMwNTQ2LTAuMDcyLTAuNjY3MzQtMC4wMzkxLTAuOTc2NzMgMC4wMzYtMC4zMzc2IDAuMTM3MzQtMC43MTkyOCAwLjI2OTE1LTEuMDMyMiAwLjE0MzEtMC4zMzk0MyAwLjM2NjM2LTAuNzA0NyAwLjU5OTg0LTAuOTg5NSAwLjI1MTktMC4zMDcyNyAwLjU5Mzc2LTAuNjE3MyAwLjkyMTY5LTAuODQxNjMgMC4zNTE5Ny0wLjI0MDgzIDAuNzk3MTItMC40NTgyNCAxLjIwMjEtMC41OTE4NSAwLjQzMjg5LTAuMTQyNzcgMC45NTQwNS0wLjIzNDg2IDEuNDA5NS0wLjI1Mjk3IDAuNDg0OTYtMC4wMTk0IDEuMDQ1MyAwLjAzODMgMS41MTcgMC4xNTIyNSAwLjUwMDUgMC4xMjA4NSAxLjA1NTggMC4zNDE1NSAxLjUwNDcgMC41OTM4OCAwLjQ3NDczIDAuMjY2OCAwLjk3NjczIDAuNjUwNTEgMS4zNjE3IDEuMDM1NyAwLjQwNTk2IDAuNDA2MjcgMC44MDY4IDAuOTM4NTEgMS4wODg0IDEuNDM5MSAwLjI5NjMgMC41MjY0OCAwLjU1MjAzIDEuMTc5IDAuNjk2MjkgMS43NjU2IDAuMTUxNCAwLjYxNTY5IDAuMjI2NzggMS4zNDcyIDAuMjA4MDMgMS45ODEtMC4wMTk1IDAuNjYzNzItMC4xNDc3NyAxLjQyMjktMC4zNDM1NiAyLjA1NzQtMC4yMDQ2MyAwLjY2MzA3LTAuNTQ1IDEuMzkyNC0wLjkxODU5IDEuOTc3MS0wLjM4OTY4IDAuNjEwMTYtMC45MzM5NCAxLjI0OTMtMS40NzE2IDEuNzM0MS0wLjU1OTkxIDAuNTA0ODYtMS4yODI4IDAuOTk2NTItMS45NTY2IDEuMzM1Mi0wLjcwMDQ0IDAuMzUyMDktMS41NjA2IDAuNjQ2MzctMi4zMjkzIDAuODAwNzUtMC43OTgxOSAwLjE2MDMzLTEuNzQwMyAwLjIxOTEtMi41NTI0IDAuMTYzMS0wLjg0MjI3LTAuMDU4Mi0xLjgwMDctMC4yNTY5MS0yLjU5NzgtMC41MzUtMC44MjU2NS0wLjI4ODEtMS43Mjg5LTAuNzQ4MDMtMi40NDk2LTEuMjQzMy0wLjc0NTUtMC41MTIyMS0xLjUyMTctMS4yMTcxLTIuMTA2NC0xLjkwNzUtMC42MDM5OS0wLjcxMzMzLTEuMTg2Ni0xLjYyNjktMS41ODItMi40NzM5LTAuNDA4MDgtMC44NzQzLTAuNzQwNzktMS45NDIyLTAuOTA1MTgtMi44OTMtMC4xNjk1LTAuOTgwNTYtMC4yMTE2Ni0yLjEzMzMtMC4xMTgwNy0zLjEyMzkgMC4wOTY1LTEuMDIwNyAwLjM2NTcxLTIuMTc4MyAwLjcyNjMyLTMuMTM4MSAwLjM3MTI1LTAuOTg4MTEgMC45NTA4NS0yLjA2NTYgMS41Njc5LTIuOTIyIDAuNjM0NjQtMC44ODA5MSAxLjUwMDItMS43OTQ0IDIuMzQzMy0yLjQ3ODYgMC44NjY2NC0wLjcwMzIyIDEuOTcwOS0xLjM3NjcgMi45OTEzLTEuODI4OCAxLjA0OC0wLjQ2NDMgMi4zMjM3LTAuODM1NTUgMy40NTY3LTEuMDA5NyAxLjE2MjgtMC4xNzg3NiAyLjUyNjItMC4yMDQ0MSAzLjY5NTUtMC4wNzMxIDEuMTk5MiAwLjEzNDY4IDIuNTU2IDAuNDc0NTIgMy42Nzg0IDAuOTE3NzUgMS4xNTA2IDAuNDU0MjggMi40MDIyIDEuMTUzNyAzLjM5NDQgMS44OTI2IDEuMDE2NCAwLjc1Njk4IDIuMDY3MyAxLjc4MzMgMi44NTA5IDIuNzc5MyAwLjgwMjQzIDEuMDE5OCAxLjU2NyAyLjMxNDkgMi4wNzU2IDMuNTA4NyAwLjUyMDUyIDEuMjIxNiAwLjkzMDIgMi43MDUxIDEuMTE0MiA0LjAyMDIgMC4xODgxMiAxLjM0NTIgMC4xOTcxNyAyLjkxOTMgMC4wMjgxIDQuMjY3LTAuMTcyODEgMS4zNzc3LTAuNTgzMjMgMi45MzM3LTEuMTA5MSA0LjIxODgtMC41MzczNCAxLjMxMzEtMS4zNTY1IDIuNzM4OS0yLjIxNzMgMy44NjY4LTAuODc5MzEgMS4xNTE5LTIuMDY2MyAyLjMzOTktMy4yMTUyIDMuMjIzMi0wLjk0NSAwLjc1MDQ4LTEuOTE3OCAxLjc1NTUtMi42MzQgMi43MjY4LTAuNjk4MjEgMC45NDY4LTEuMzU3OCAyLjE0MDQtMS43ODQ0IDMuMjM2OC0wLjQxNTY0IDEuMDY4My0wLjczMTk2IDIuMzU4Ny0wLjg1Mzg3IDMuNDk4NC0wLjExODcxIDEuMTA5Ny0wLjA4NzYgMi40MDI5IDAuMDg4MSAzLjUwNSAwLjE3MDk5IDEuMDcyMSAwLjUyOTM1IDIuMjc4NiAwLjk3NDkyIDMuMjY4NyAwLjQzMzExIDAuOTYyNDYgMS4wNzY0IDIuMDAzMyAxLjc0NjUgMi44MTg4IDAuNjUwOTMgMC43OTIxMiAxLjUxODcgMS42MDQxIDIuMzU0NSAyLjE5OCAwLjgxMTE4IDAuNTc2NDIgMS44MzA2IDEuMTE2MiAyLjc2NDUgMS40NTk4IDAuOTA1NjEgMC4zMzMwNCAxLjk5NjggMC41Nzg4NyAyLjk1OCAwLjY2MjU2IDAuOTMxMjcgMC4wODEgMi4wMTM3IDAuMDMzMiAyLjkzMzUtMC4xMzMwOSAwLjg5MDA3LTAuMTYxMDkgMS44ODg3LTAuNDgxMDIgMi43MDUxLTAuODcwNDcgMC43ODkxMy0wLjM3NjQ3IDEuNjM5Mi0wLjkyODcyIDIuMzAxNC0xLjQ5OTcgMC42Mzk0NC0wLjU1MTI4IDEuMjkwOC0xLjI4MTggMS43NjIyLTEuOTgyMiAwLjQ1NDYxLTAuNjc1NDIgMC44NzQ3My0xLjUyMDcgMS4xMzUtMi4yOTIxIDAuMjUwNjMtMC43NDI4MiAwLjQyNTg3LTEuNjM0OSAwLjQ3MTEyLTIuNDE3NiAwLjA0MzYtMC43NTI3Mi0wLjAyMDctMS42MjQ2LTAuMTc4LTIuMzYyLTAuMTUxMDktMC43MDgtMC40MzI0OC0xLjQ5ODgtMC43NjU5My0yLjE0MTUtMC4zMTk3Mi0wLjYxNTktMC43ODEwNC0xLjI3NTMtMS4yNTMtMS43ODQtMC40NTE1My0wLjQ4Njc3LTEuMDQ1LTAuOTc3NTktMS42MDk5LTEuMzI2NC0wLjUzOTU3LTAuMzMzMDMtMS4yMTA3LTAuNjMzNTktMS44MTk2LTAuODEwMzItMC41ODAyNS0wLjE2ODQ0LTEuMjczMi0wLjI3MzE5LTEuODc3My0wLjI3OTgtMC41NzQyOS02ZS0zIC0xLjIzNTYgMC4wNzQ1LTEuNzkwNCAwLjIyMzA0LTAuNTI2MTcgMC4xNDA3NS0xLjEwOTQgMC4zODM3Mi0xLjU3NzggMC42NjE0OS0wLjQ0MjkxIDAuMjYyNTUtMC45MTE3OSAwLjYzMzA0LTEuMjY2NiAxLjAwNjEtMC4zMzQ1MiAwLjM1MTY1LTAuNjY0NzggMC44MDc5OC0wLjg5MDUgMS4yMzc3LTAuMjExOTcgMC40MDM1LTAuMzkyODYgMC45MDA5Mi0wLjQ4NTU5IDEuMzQ3Mi0wLjA4NjggMC40MTc1Ni0wLjEyMTA0IDAuOTExNjctMC4wODg0IDEuMzM2OSAwLjAzMDQgMC4zOTYxNyAwLjEyNzg2IDAuODQ3MjcgMC4yNjc5NyAxLjIxOSAwLjEzIDAuMzQ0NjIgMC4zMzQ2NCAwLjcyMDU2IDAuNTU3MDQgMS4wMTQyIDAuMjA1MDYgMC4yNzA2NCAwLjQ4NDk1IDAuNTQ5MTUgMC43NTk0MyAwLjc0OTIxIDAuMjUxMzcgMC4xODMzNCAwLjU3MTE4IDAuMzUzMTUgMC44NjUzNiAwLjQ1NDUgMC4yNjc2NiAwLjA5MjIgMC41OTE3NCAwLjE1MzY0IDAuODc0NzMgMC4xNjA5OCAwLjI1NTYzIDZlLTMgMC41NTE2MS0wLjAyOTggMC43OTY1OS0wLjEwMjg0IDAuMjE5NDItMC4wNjU1IDAuNDYxMTEtMC4xODAxNSAwLjY0NzUzLTAuMzEzMDEgMC4xNjU1Ni0wLjExODA4IDAuMzM1MDUtMC4yODUzMyAwLjQ1MDU2LTAuNDUyNiAwLjEwMTc4LTAuMTQ3MzUgMC4xOTA1OC0wLjMzODM1IDAuMjMxODktMC41MTI1MyAwLjAzNjItMC4xNTI4OSAwLjA0NTUtMC4zMzgzNSAwLjAxODYtMC40OTMxNS0wLjAyMzgtMC4xMzYxNy0wLjA4MzgtMC4yODk1OS0wLjE2Mzc1LTAuNDAyMzMtMC4wNzE5LTAuMTAxMjctMC4xODMzMy0wLjIwMDQ5LTAuMjk0MjgtMC4yNTYxNy0wLjEwNDEyLTAuMDUyMy0wLjI0MTU2LTAuMDgyMi0wLjM1Nzk0LTAuMDc2MXoiIHN0cm9rZS13aWR0aD0iLjAxMDY0NyIvPgo8L3N2Zz4K'\n","import { WalletTransaction } from 'lute-connect'\nimport Algod, { getAlgodClient } from '../../algod'\nimport { DEFAULT_NETWORK, PROVIDER_ID } from '../../constants'\nimport { DecodedSignedTransaction, DecodedTransaction, Network } from '../../types/node'\nimport type { InitParams } from '../../types/providers'\nimport { debugLog } from '../../utils/debugLog'\nimport BaseClient from '../base'\nimport { ICON } from './constants'\nimport type { LuteClientConstructor, LuteConnectOptions } from './types'\nimport type LuteConnect from 'lute-connect'\n\nclass LuteClient extends BaseClient {\n #client: LuteConnect\n clientOptions?: LuteConnectOptions\n network: Network\n\n constructor({\n metadata,\n client,\n clientOptions,\n algosdk,\n algodClient,\n network\n }: LuteClientConstructor) {\n super(metadata, algosdk, algodClient)\n this.#client = client\n this.clientOptions = clientOptions\n this.network = network\n this.metadata = LuteClient.metadata\n }\n\n static metadata = {\n id: PROVIDER_ID.LUTE,\n name: 'Lute',\n icon: ICON,\n isWalletConnect: false\n }\n\n static async init({\n clientOptions,\n algodOptions,\n clientStatic,\n getDynamicClient,\n algosdkStatic,\n network = DEFAULT_NETWORK\n }: InitParams<PROVIDER_ID.LUTE>): Promise<BaseClient | null> {\n try {\n debugLog(`${PROVIDER_ID.LUTE.toUpperCase()} initializing...`)\n\n let LuteConnect\n if (clientStatic) {\n LuteConnect = clientStatic\n } else if (getDynamicClient) {\n LuteConnect = await getDynamicClient()\n } else {\n throw new Error('Lute provider missing required property: clientStatic or getDynamicClient')\n }\n\n const algosdk = algosdkStatic || (await Algod.init(algodOptions)).algosdk\n const algodClient = getAlgodClient(algosdk, algodOptions)\n\n if (!clientOptions) {\n throw new Error('Lute provider missing required property: clientOptions')\n }\n const lute = new LuteConnect(clientOptions.siteName)\n const provider = new LuteClient({\n metadata: LuteClient.metadata,\n client: lute,\n clientOptions,\n algosdk: algosdk,\n algodClient: algodClient,\n network\n })\n\n debugLog(`${PROVIDER_ID.LUTE.toUpperCase()} initialized`, '✅')\n\n return provider\n } catch (e) {\n console.error('Error initializing...', e)\n return null\n }\n }\n\n async connect() {\n const genesis = (await this.algodClient.genesis().do()) as { network: string; id: string }\n const genesisID = `${genesis.network}-${genesis.id}`\n const addresses = await this.#client.connect(genesisID)\n\n if (addresses.length === 0) {\n throw new Error(`No accounts found for ${LuteClient.metadata.id}`)\n }\n\n const mappedAccounts = addresses.map((address: string, index: number) => ({\n name: `Lute Wallet ${index + 1}`,\n address,\n providerId: LuteClient.metadata.id\n }))\n\n return {\n ...LuteClient.metadata,\n accounts: mappedAccounts\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/require-await\n async reconnect() {\n return null\n }\n\n // eslint-disable-next-line @typescript-eslint/require-await\n async disconnect() {\n return\n }\n\n shouldSignTxnObject(\n txn: DecodedTransaction | DecodedSignedTransaction,\n addresses: string[],\n indexesToSign: number[] | undefined,\n idx: number\n ): boolean {\n const isIndexMatch = !indexesToSign || indexesToSign.includes(idx)\n const isSigned = 'txn' in txn\n const canSign = !isSigned && addresses.includes(this.algosdk.encodeAddress(txn.snd))\n const shouldSign = isIndexMatch && canSign\n\n return shouldSign\n }\n\n async signTransactions(\n connectedAccounts: string[],\n transactions: Uint8Array[],\n indexesToSign?: number[],\n returnGroup = true\n ) {\n // Decode the transactions to access their properties.\n const decodedTxns = transactions.map((txn) => {\n return this.algosdk.decodeObj(txn)\n }) as Array<DecodedTransaction | DecodedSignedTransaction>\n\n const signedIndexes: number[] = []\n\n // Marshal the transactions,\n // and add the signers property if they shouldn't be signed.\n const txnsToSign = decodedTxns.reduce<WalletTransaction[]>((acc, txn, idx) => {\n const isSigned = 'txn' in txn\n const shouldSign = this.shouldSignTxnObject(txn, connectedAccounts, indexesToSign, idx)\n\n if (shouldSign) {\n signedIndexes.push(idx)\n acc.push({\n txn: Buffer.from(transactions[idx]).toString('base64')\n })\n } else {\n acc.push({\n txn: isSigned\n ? Buffer.from(\n this.algosdk.decodeSignedTransaction(transactions[idx]).txn.toByte()\n ).toString('base64')\n : Buffer.from(transactions[idx]).toString('base64'),\n stxn: isSigned ? Buffer.from(transactions[idx]).toString('base64') : undefined,\n signers: []\n })\n }\n\n return acc\n }, [])\n\n // Sign them with the client.\n const result = (await this.#client.signTxns(txnsToSign)) as (Uint8Array | null)[]\n\n const signedTxns = transactions.reduce<Uint8Array[]>((acc, txn, i) => {\n if (signedIndexes.includes(i)) {\n const signedByUser = result.shift()\n signedByUser && acc.push(signedByUser)\n } else if (returnGroup) {\n acc.push(txn)\n }\n\n return acc\n }, [])\n\n return signedTxns\n }\n}\n\nexport default LuteClient\n","import { PublicNetwork } from 'src/types'\n\nexport const isPublicNetwork = (network: string): network is PublicNetwork => {\n return network === 'betanet' || network === 'testnet' || network === 'mainnet'\n}\n","import type { PublicNetwork } from 'src/types'\n\nexport const ICON =\n 'data:image/svg+xml;base64,' +\n 'PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJMYXllcl8xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIKCSB2aWV3Qm94PSIwIDAgNDgwIDQ4MCIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgNDgwIDQ4MDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPgo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLnN0MHtmaWxsOiMzMzk2RkY7fQo8L3N0eWxlPgo8cGF0aCBjbGFzcz0ic3QwIiBkPSJNMTI2LjYsMTY4YzYyLjYtNjEuMywxNjQuMi02MS4zLDIyNi44LDBsNy41LDcuNGMzLjEsMy4xLDMuMSw4LDAsMTEuMWwtMjUuOCwyNS4yYy0xLjYsMS41LTQuMSwxLjUtNS43LDAKCWwtMTAuNC0xMC4yYy00My43LTQyLjgtMTE0LjUtNDIuOC0xNTguMiwwbC0xMS4xLDEwLjljLTEuNiwxLjUtNC4xLDEuNS01LjcsMGwtMjUuOC0yNS4yYy0zLjEtMy4xLTMuMS04LDAtMTEuMUwxMjYuNiwxNjh6CgkgTTQwNi43LDIyMC4ybDIyLjksMjIuNWMzLjEsMy4xLDMuMSw4LDAsMTEuMUwzMjYuMiwzNTUuMWMtMy4xLDMuMS04LjIsMy4xLTExLjMsMGwtNzMuNC03MS45Yy0wLjgtMC44LTIuMS0wLjgtMi44LDBsLTczLjQsNzEuOQoJYy0zLjEsMy4xLTguMiwzLjEtMTEuMywwTDUwLjMsMjUzLjhjLTMuMS0zLjEtMy4xLTgsMC0xMS4xbDIyLjktMjIuNWMzLjEtMy4xLDguMi0zLjEsMTEuMywwbDczLjQsNzEuOWMwLjgsMC44LDIuMSwwLjgsMi44LDAKCWw3My40LTcxLjljMy4xLTMuMSw4LjItMy4xLDExLjMsMGw3My40LDcxLjljMC44LDAuOCwyLjEsMC44LDIuOCwwbDczLjQtNzEuOUMzOTguNSwyMTcuMSw0MDMuNiwyMTcuMSw0MDYuNywyMjAuMkw0MDYuNywyMjAuMnoiLz4KPC9zdmc+Cg=='\n\nexport const ALGORAND_CHAINS: { [key in PublicNetwork]: string } = {\n mainnet: 'algorand:wGHE2Pwdvd7S12BL5FaOP20EGYesN73k',\n testnet: 'algorand:SGO1GKSzyE7IEPItTxCByw9x8FmnrCDe',\n betanet: 'algorand:mFgazF-2uRS1tMiL9dsj01hJGySEmPN2'\n}\n","import { JsonRpcRequest } from './types'\n\nconst getPayloadId = (): number => {\n const date = Date.now() * Math.pow(10, 3)\n const extra = Math.floor(Math.random() * Math.pow(10, 3))\n return date + extra\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const formatJsonRpcRequest = <T = any>(method: string, params: T): JsonRpcRequest => {\n return {\n id: getPayloadId(),\n jsonrpc: '2.0',\n method,\n params\n }\n}\n","/**\n * Documentation:\n * https://docs.walletconnect.com/2.0/\n */\nimport Algod, { getAlgodClient } from '../../algod'\nimport BaseClient from '../base'\nimport { DEFAULT_NETWORK, PROVIDER_ID } from '../../constants'\nimport { debugLog } from '../../utils/debugLog'\nimport { isPublicNetwork } from '../../utils/types'\nimport { ALGORAND_CHAINS, ICON } from './constants'\nimport { formatJsonRpcRequest } from './utils'\nimport type {\n WalletConnectModalSign,\n WalletConnectModalSignOptions,\n WalletConnectModalSignSession\n} from '@walletconnect/modal-sign-html'\nimport type { DecodedSignedTransaction, DecodedTransaction, Network } from '../../types/node'\nimport type { InitParams } from '../../types/providers'\nimport type { Wallet } from '../../types/wallet'\nimport type { WalletConnectClientConstructor, WalletConnectTransaction } from './types'\n\nclass WalletConnectClient extends BaseClient {\n #client: WalletConnectModalSign\n clientOptions?: WalletConnectModalSignOptions\n network: Network\n chain: string\n\n constructor({\n metadata,\n client,\n clientOptions,\n algosdk,\n algodClient,\n network,\n chain\n }: WalletConnectClientConstructor) {\n super(metadata, algosdk, algodClient)\n this.#client = client\n this.clientOptions = clientOptions\n this.network = network\n this.chain = chain\n this.metadata = WalletConnectClient.metadata\n }\n\n static metadata = {\n id: PROVIDER_ID.WALLETCONNECT,\n name: 'WalletConnect',\n icon: ICON,\n isWalletConnect: true\n }\n\n static async init({\n clientOptions,\n algodOptions,\n clientStatic,\n getDynamicClient,\n algosdkStatic,\n network = DEFAULT_NETWORK\n }: InitParams<PROVIDER_ID.WALLETCONNECT>): Promise<BaseClient | null> {\n try {\n debugLog(`${PROVIDER_ID.WALLETCONNECT.toUpperCase()} initializing...`)\n\n let Client\n if (clientStatic) {\n Client = clientStatic\n } else if (getDynamicClient) {\n Client = await getDynamicClient()\n } else {\n throw new Error(\n 'WalletConnect provider missing required property: clientStatic or getDynamicClient'\n )\n }\n\n if (!clientOptions) {\n throw new Error('WalletConnect provider missing required property: clientOptions')\n }\n\n if (!isPublicNetwork(network)) {\n throw new Error(\n `WalletConnect only supports Algorand mainnet, testnet, and betanet. \"${network}\" is not supported.`\n )\n }\n\n const chain = ALGORAND_CHAINS[network]\n\n // Initialize client\n const client = new Client({\n ...clientOptions,\n modalOptions: {\n explorerExcludedWalletIds: 'ALL',\n ...clientOptions.modalOptions\n }\n })\n\n // Initialize algod client\n const algosdk = algosdkStatic || (await Algod.init(algodOptions)).algosdk\n const algodClient = getAlgodClient(algosdk, algodOptions)\n\n // Initialize provider client\n const provider = new WalletConnectClient({\n metadata: WalletConnectClient.metadata,\n client,\n clientOptions,\n algosdk,\n algodClient,\n network,\n chain\n })\n\n debugLog(`${PROVIDER_ID.WALLETCONNECT.toUpperCase()} initialized`, '✅')\n\n return provider\n } catch (error) {\n console.error('Error initializing WalletConnect client', error)\n return null\n }\n }\n\n public async connect(): Promise<Wallet> {\n const requiredNamespaces = {\n algorand: {\n chains: [this.chain],\n methods: ['algo_signTxn'],\n events: []\n }\n }\n\n try {\n const session: WalletConnectModalSignSession = await this.#client.connect({\n requiredNamespaces\n })\n\n const { accounts } = session.namespaces.algorand\n\n return {\n ...WalletConnectClient.metadata,\n accounts: this.#mapAccounts(accounts)\n }\n } catch (error) {\n console.error('Error connecting to WalletConnect', error)\n throw error\n }\n }\n\n public async reconnect() {\n const session: WalletConnectModalSignSession | undefined = await this.#client.getSession()\n if (typeof session === 'undefined') {\n return null\n }\n\n const { accounts } = session.namespaces.algorand\n\n return {\n ...WalletConnectClient.metadata,\n accounts: this.#mapAccounts(accounts)\n }\n }\n\n public async disconnect() {\n try {\n const session = await this.#getSession()\n\n await this.#client.disconnect({\n topic: session.topic,\n // replicates getSdkError('USER_DISCONNECTED') from @walletconnect/utils\n reason: {\n message: 'User disconnected.',\n code: 6000\n }\n })\n } catch (error) {\n console.error('Error disconnecting', error)\n }\n }\n\n public async signTransactions(\n connectedAccounts: string[],\n txnGroups: Uint8Array[] | Uint8Array[][],\n indexesToSign: number[] = [],\n returnGroup = true\n ) {\n // Flatten transactions array if nested\n const transactions: Uint8Array[] = Array.isArray(txnGroups[0])\n ? (txnGroups as Uint8Array[][]).flatMap((txn) => txn)\n : (txnGroups as Uint8Array[])\n\n const { txnsToSign, signedIndexes } = this.#composeTransactions(\n transactions,\n connectedAccounts,\n indexesToSign\n )\n\n const request = formatJsonRpcRequest('algo_signTxn', [txnsToSign])\n\n const session = await this.#getSession()\n\n const response = await this.#client.request<Array<string | null>>({\n chainId: this.chain,\n topic: session.topic,\n request\n })\n\n // Check if the result is the same length as the transactions\n const lengthsMatch = response.length === transactions.length\n\n // Join the signed transactions with the original group of transactions\n const signedTxns = transactions.reduce<Uint8Array[]>((acc, txn, i) => {\n if (signedIndexes.includes(i)) {\n const signedTxn = lengthsMatch ? response[i] : response.shift()\n signedTxn && acc.push(new Uint8Array(Buffer.from(signedTxn, 'base64')))\n } else if (returnGroup) {\n acc.push(txn)\n }\n\n return acc\n }, [])\n\n return signedTxns\n }\n\n #composeTransactions(\n transactions: Uint8Array[],\n connectedAccounts: string[],\n indexesToSign: number[]\n ) {\n // Decode the transactions\n const decodedTxns = transactions.map((txn) => {\n return this.algosdk.decodeObj(txn)\n }) as Array<DecodedTransaction | DecodedSignedTransaction>\n\n // Track signed transactions\n const signedIndexes: number[] = []\n\n // Marshal the transactions into WalletConnect format\n const txnsToSign = decodedTxns.reduce<WalletConnectTransaction[]>((acc, txn, i) => {\n const isSigned = 'txn' in txn\n\n const senderAccount = !isSigned\n ? this.algosdk.encodeAddress(txn['snd'])\n : this.algosdk.encodeAddress(txn.txn['snd'])\n\n const shouldSign =\n indexesToSign.includes(i) || (!isSigned && connectedAccounts.includes(senderAccount))\n\n if (shouldSign) {\n signedIndexes.push(i)\n acc.push({\n txn: Buffer.from(transactions[i]).toString('base64')\n })\n } else {\n acc.push({\n txn: isSigned\n ? Buffer.from(\n this.algosdk.encodeUnsignedTransaction(\n this.algosdk.decodeSignedTransaction(transactions[i]).txn\n )\n ).toString('base64')\n : Buffer.from(transactions[i]).toString('base64'),\n signers: []\n })\n }\n\n return acc\n }, [])\n\n return { txnsToSign, signedIndexes }\n }\n\n async #getSession() {\n const session: WalletConnectModalSignSession | undefined = await this.#client.getSession()\n if (typeof session === 'undefined') {\n throw new Error('Session is not connected')\n }\n return session\n }\n\n #mapAccounts(accounts: string[]) {\n return accounts.map((accountStr, index) => ({\n name: `WalletConnect ${index + 1}`,\n address: accountStr.split(':').pop() as string,\n providerId: WalletConnectClient.metadata.id\n }))\n }\n}\n\nexport default WalletConnectClient\n","export const ICON =\n 'data:image/svg+xml;base64,' +\n 'PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPCEtLSBHZW5lcmF0ZWQgYnkgUGl4ZWxtYXRvciBQcm8gMy40LjMgLS0+Cjxzdmcgd2lkdGg9IjQ3IiBoZWlnaHQ9IjQ3IiB2aWV3Qm94PSIwIDAgNDcgNDciIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CiAgICA8cGF0aCBpZD0iUGF0aCIgZmlsbD0iIzY4NTFmZiIgZmlsbC1ydWxlPSJldmVub2RkIiBzdHJva2U9Im5vbmUiIGQ9Ik0gMjMuOTYwODYxIDEuODA3NjkgQyAyNS44MzUwNzcgNC4xMDMxNTMgMjcuOTAyMjE2IDYuMjM0ODkgMzAuMTM3NTM5IDguMTc4MTY5IEMgMjguNjQ3OTY4IDEzLjAwOTMyMyAyNy44NDYwOTIgMTguMTQyMDk0IDI3Ljg0NjA5MiAyMy40NjIxNTQgQyAyNy44NDYwOTIgMjguNzgyMzA3IDI4LjY0ODA2MiAzMy45MTUxNjkgMzAuMTM3NjMgMzguNzQ2MzY4IEMgMjcuOTAyMjE2IDQwLjY4OTcyNCAyNS44MzUwNzcgNDIuODIxNDc2IDIzLjk2MDg2MSA0NS4xMTY5ODUgQyAyMi4wODY1NTQgNDIuODIxNDc2IDIwLjAxOTQxNSA0MC42ODk2MzIgMTcuNzgzOTk4IDM4Ljc0NjM2OCBDIDE5LjI3MzQ3NiAzMy45MTUxNjkgMjAuMDc1NDQ1IDI4Ljc4MjQgMjAuMDc1NDQ1IDIzLjQ2MjMzNyBDIDIwLjA3NTQ0NSAxOC4xNDIyNzcgMTkuMjczNDc2IDEzLjAwOTUwNiAxNy43ODM5OTggOC4xNzgzMTggQyAyMC4wMTk0MTUgNi4yMzUwMDEgMjIuMDg2NTU0IDQuMTAzMjEgMjMuOTYwODYxIDEuODA3NjkgWiBNIDEzLjUxMTQyNyAzNS40MDY0MDMgQyAxMS4xNDUxMzkgMzMuNzQ3ODE0IDguNjMzODE2IDMyLjI4MjA2MyA2LjAwMDI2OSAzMS4wMzE5MzcgQyA2LjczMDc3NiAyOC42Mzc0NzYgNy4xMjM3NTQgMjYuMDk1NzgzIDcuMTIzNzU0IDIzLjQ2MjQyOSBDIDcuMTIzNzU0IDIwLjgyODg5MiA2LjczMDc2MiAxOC4yODcyMDEgNi4wMDAyMzUgMTUuODkyNzM4IEMgOC42MzM4MTYgMTQuNjQyNjE2IDExLjE0NTE3NSAxMy4xNzY4NjEgMTMuNTExNTAxIDExLjUxODI3NiBDIDE0LjQxNjMxMSAxNS4zNTI1NTQgMTQuODk1MDc0IDE5LjM1MTQxNCAxNC44OTUwNzQgMjMuNDYyMTU0IEMgMTQuODk1MDc0IDI3LjU3Mjk4NSAxNC40MTYyODMgMzEuNTcxOTM4IDEzLjUxMTQyNyAzNS40MDY0MDMgWiBNIDMzLjAyNzA0NiAyMy40NjIzMzcgQyAzMy4wMjcwNDYgMjcuNTcyOTg1IDMzLjUwNTc1MyAzMS41NzE4NDYgMzQuNDEwNTUzIDM1LjQwNjEyNCBDIDM2Ljc3Njg1OSAzMy43NDc2MzEgMzkuMjg4MDk0IDMyLjI4MTg3NiA0MS45MjE1MzkgMzEuMDMxODQ1IEMgNDEuMTkxMDE3IDI4LjYzNzM4NCA0MC43OTgwNjEgMjYuMDk1NjkyIDQwLjc5ODA2MSAyMy40NjIyNDYgQyA0MC43OTgwNjEgMjAuODI4OCA0MS4xOTEwMTcgMTguMjg3MjAxIDQxLjkyMTUzOSAxNS44OTI4MyBDIDM5LjI4ODA5NCAxNC42NDI3MDggMzYuNzc2NzY4IDEzLjE3NzA0OCAzNC40MTA1NTMgMTEuNTE4NTU1IEMgMzMuNTA1NzUzIDE1LjM1MjgzMSAzMy4wMjcwNDYgMTkuMzUxNjkyIDMzLjAyNzA0NiAyMy40NjIzMzcgWiIvPgo8L3N2Zz4K'\n","/**\n * Documentation:\n * https://magic.link/docs/blockchains/other-chains/other/algorand\n */\nimport Algod, { getAlgodClient } from '../../algod'\nimport BaseClient from '../base'\nimport { DEFAULT_NETWORK, PROVIDER_ID } from '../../constants'\nimport { debugLog } from '../../utils/debugLog'\nimport { ICON } from './constants'\nimport type { AlgorandExtension } from '@magic-ext/algorand'\nimport type { SDKBase, InstanceWithExtensions } from '@magic-sdk/provider'\nimport type { DecodedSignedTransaction, DecodedTransaction, Network } from '../../types/node'\nimport type { InitParams } from '../../types/providers'\nimport type { Wallet } from '../../types/wallet'\nimport type { MagicAuthTransaction, MagicAuthConstructor, MagicAuthConnectOptions } from './types'\n\nclass MagicAuth extends BaseClient {\n #client: InstanceWithExtensions<\n SDKBase,\n {\n algorand: AlgorandExtension\n }\n >\n clientOptions?: MagicAuthConnectOptions\n network: Network\n\n constructor({\n metadata,\n client,\n clientOptions,\n algosdk,\n algodClient,\n network\n }: MagicAuthConstructor) {\n super(metadata, algosdk, algodClient)\n this.#client = client\n this.clientOptions = clientOptions\n this.network = network\n this.metadata = MagicAuth.metadata\n }\n\n static metadata = {\n id: PROVIDER_ID.MAGIC,\n name: 'Magic',\n icon: ICON,\n isWalletConnect: true\n }\n\n static async init({\n clientOptions,\n algodOptions,\n clientStatic,\n getDynamicClient,\n extensionStatic,\n getDynamicExtension,\n algosdkStatic,\n network = DEFAULT_NETWORK\n }: InitParams<PROVIDER_ID.MAGIC>): Promise<BaseClient | null> {\n try {\n debugLog(`${PROVIDER_ID.MAGIC.toUpperCase()} initializing...`)\n\n let Magic\n if (clientStatic) {\n Magic = clientStatic\n } else if (getDynamicClient) {\n Magic = await getDynamicClient()\n } else {\n throw new Error(\n 'Magic provider missing required property: clientStatic or getDynamicClient'\n )\n }\n\n let AlgorandExtension\n if (extensionStatic) {\n AlgorandExtension = extensionStatic\n } else if (getDynamicExtension) {\n AlgorandExtension = await getDynamicExtension()\n } else {\n throw new Error(\n 'Magic provider missing required property: extensionStatic or getDynamicExtension'\n )\n }\n\n if (!clientOptions || !clientOptions.apiKey) {\n throw new Error(\n 'Magic provider missing API Key to be passed by required property: clientOptions'\n )\n }\n\n const algosdk = algosdkStatic || (await Algod.init(algodOptions)).algosdk\n const algodClient = getAlgodClient(algosdk, algodOptions)\n\n const magic = new Magic(clientOptions?.apiKey, {\n extensions: {\n algorand: new AlgorandExtension({\n rpcUrl: ''\n })\n }\n })\n\n const provider = new MagicAuth({\n metadata: MagicAuth.metadata,\n client: magic,\n clientOptions: clientOptions as MagicAuthConnectOptions,\n algosdk,\n algodClient,\n network\n })\n\n debugLog(`${PROVIDER_ID.MAGIC.toUpperCase()} initialized`, '✅')\n\n return provider\n } catch (e) {\n console.error('Error initializing...', e)\n return null\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n async connect(_: () => void, arg?: any): Promise<Wallet> {\n if (!arg || typeof arg !== 'string') {\n throw new Error('Magic Link provider requires an email (string) to connect')\n }\n\n const email = arg\n await this.#client.auth.loginWithMagicLink({ email: email })\n const userInfo = await this.#client.user.getInfo()\n\n return {\n ...MagicAuth.metadata,\n accounts: [\n {\n name: `MagicWallet ${userInfo.email ?? ''} 1`,\n address: userInfo.publicAddress ?? 'N/A',\n providerId: MagicAuth.metadata.id,\n email: userInfo.email ?? ''\n }\n ]\n }\n }\n\n async reconnect() {\n const isLoggedIn = await this.#client.user.isLoggedIn()\n\n if (!isLoggedIn) {\n return null\n }\n\n const userInfo = await this.#client.user.getInfo()\n\n return {\n ...MagicAuth.metadata,\n accounts: [\n {\n name: `MagicWallet ${userInfo.email ?? ''} 1`,\n address: userInfo.publicAddress ?? 'N/A',\n providerId: MagicAuth.metadata.id,\n email: userInfo.email ?? ''\n }\n ]\n }\n }\n\n async disconnect() {\n await this.#client.user.logout()\n }\n\n async signTransactions(\n connectedAccounts: string[],\n txnGroups: Uint8Array[] | Uint8Array[][],\n indexesToSign?: number[],\n returnGroup = true\n ) {\n // If txnGroups is a nested array, flatten it\n const transactions: Uint8Array[] = Array.isArray(txnGroups[0])\n ? (txnGroups as Uint8Array[][]).flatMap((txn) => txn)\n : (txnGroups as Uint8Array[])\n\n // Decode the transactions to access their properties.\n const decodedTxns = transactions.map((txn) => {\n return this.algosdk.decodeObj(txn)\n }) as Array<DecodedTransaction | DecodedSignedTransaction>\n\n const signedIndexes: number[] = []\n\n // Marshal the transactions,\n // and add the signers property if they shouldn't be signed.\n const txnsToSign = decodedTxns.reduce<MagicAuthTransaction[]>((acc, txn, i) => {\n const isSigned = 'txn' in txn\n\n // If the indexes to be signed is specified, designate that it should be signed\n if (indexesToSign && indexesToSign.length && indexesToSign.includes(i)) {\n signedIndexes.push(i)\n acc.push({\n txn: Buffer.from(transactions[i]).toString('base64')\n })\n // If the indexes to be signed is specified, but it's not included in it,\n // designate that it should not be signed\n } else if (indexesToSign && indexesToSign.length && !indexesToSign.includes(i)) {\n acc.push({\n txn: isSigned\n ? Buffer.from(\n this.algosdk.encodeUnsignedTransaction(\n this.algosdk.decodeSignedTransaction(transactions[i]).txn\n )\n ).toString('base64')\n : Buffer.from(transactions[i]).toString('base64'),\n signers: []\n })\n // If the transaction is unsigned and is to be sent from a connected account,\n // designate that it should be signed\n } else if (!isSigned && connectedAccounts.includes(this.algosdk.encodeAddress(txn['snd']))) {\n signedIndexes.push(i)\n acc.push({\n txn: Buffer.from(transactions[i]).toString('base64')\n })\n // Otherwise, designate that it should not be signed\n } else if (isSigned) {\n acc.push({\n txn: Buffer.from(\n this.algosdk.encodeUnsignedTransaction(\n this.algosdk.decodeSignedTransaction(transactions[i]).txn\n )\n ).toString('base64'),\n signers: []\n })\n } else if (!isSigned) {\n acc.push({\n txn: Buffer.from(transactions[i]).toString('base64'),\n signers: []\n })\n }\n\n return acc\n }, [])\n\n // Sign them with the client.\n try {\n console.log(txnsToSign)\n const result = await this.#client.algorand.signGroupTransactionV2(txnsToSign)\n console.log(result)\n const decodedSignedTxns: Uint8Array[] = result.map((txn: string) => {\n return Buffer.from(txn, 'base64')\n })\n\n // Join the newly signed transactions with the original group of transactions.\n const signedTxns = transactions.reduce<Uint8Array[]>((acc, txn, i) => {\n if (signedIndexes.includes(i)) {\n const signedByUser = decodedSignedTxns.shift()\n signedByUser && acc.push(signedByUser)\n } else if (returnGroup) {\n acc.push(transactions[i])\n }\n\n return acc\n }, [])\n\n return signedTxns\n } catch (e) {\n console.error(e)\n return []\n }\n }\n}\n\nexport default MagicAuth\n","export const ICON =\n 'data:image/svg+xml;base64,' +\n 'PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIGlkPSJMYXllcl8xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0MDkuODMgMjEwLjMzIj48dGV4dCB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwIDE2MS4zMSkiIHN0eWxlPSJmb250LWZhbWlseTpJQk1QbGV4U2Fucy1NZWRtLCAmYXBvcztJQk0gUGxleCBTYW5zJmFwb3M7OyBmb250LXNpemU6MTkwcHg7Ij48dHNwYW4geD0iMCIgeT0iMCI+S01EPC90c3Bhbj48L3RleHQ+PC9zdmc+'\n","import Algod, { getAlgodClient } from '../../algod'\nimport BaseClient from '../base'\nimport { DEFAULT_NETWORK, PROVIDER_ID } from '../../constants'\nimport { debugLog } from '../../utils/debugLog'\nimport { ICON } from './constants'\nimport type _algosdk from 'algosdk'\nimport type { Network } from '../../types/node'\nimport type { InitParams } from '../../types/providers'\nimport type { Account, Wallet } from '../../types/wallet'\nimport type { InitWalletHandle, KMDWalletClientConstructor, ListWalletResponse } from './types'\n\nclass KMDWalletClient extends BaseClient {\n #client: _algosdk.Kmd\n #wallet: string\n #password: string\n walletId: string\n network: Network\n\n constructor({\n metadata,\n client,\n wallet,\n password,\n algosdk,\n algodClient,\n network\n }: KMDWalletClientConstructor) {\n super(metadata, algosdk, algodClient)\n\n this.#client = client\n this.#wallet = wallet\n this.#password = password\n this.walletId = ''\n this.network = network\n this.metadata = KMDWalletClient.metadata\n }\n\n static metadata = {\n id: PROVIDER_ID.KMD,\n name: 'KMD',\n icon: ICON,\n isWalletConnect: false\n }\n\n static async init({\n clientOptions,\n algodOptions,\n algosdkStatic,\n network = DEFAULT_NETWORK\n }: InitParams<PROVIDER_ID.KMD>): Promise<BaseClient | null> {\n try {\n debugLog(`${PROVIDER_ID.KMD.toUpperCase()} initializing...`)\n\n const {\n token = 'a'.repeat(64),\n host = 'http://localhost',\n port = '4002',\n wallet = 'unencrypted-default-wallet',\n password = ''\n } = clientOptions || {}\n\n const algosdk = algosdkStatic || (await Algod.init(algodOptions)).algosdk\n const algodClient = getAlgodClient(algosdk, algodOptions)\n const kmdClient = new algosdk.Kmd(token, host, port)\n\n const provider = new KMDWalletClient({\n metadata: KMDWalletClient.metadata,\n password,\n wallet,\n client: kmdClient,\n algosdk: algosdk,\n algodClient: algodClient,\n network\n })\n\n debugLog(`${PROVIDER_ID.KMD.toUpperCase()} initialized`, '✅')\n\n return provider\n } catch (e) {\n console.error('Error initializing...', e)\n return null\n }\n }\n\n async connect(): Promise<Wallet> {\n // TODO: prompt for wallet and password?\n return {\n ...KMDWalletClient.metadata,\n accounts: await this.listAccounts(this.#wallet, this.requestPassword())\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/require-await\n async disconnect() {\n return\n }\n\n // eslint-disable-next-line @typescript-eslint/require-await\n async reconnect(): Promise<Wallet | null> {\n return null\n }\n\n requestPassword() {\n // TODO: store it locally?\n const pw = prompt('KMD password')\n return pw ? pw : ''\n }\n\n async getWalletToken(walletId: string, password: string): Promise<string> {\n const handleResp: InitWalletHandle = await this.#client.initWalletHandle(walletId, password)\n return handleResp.wallet_handle_token\n }\n\n async releaseToken(token: string): Promise<void> {\n await this.#client.releaseWalletHandle(token)\n }\n\n async listWallets(): Promise<Record<string, string>> {\n const walletResponse = await this.#client.listWallets()\n const walletList: Array<ListWalletResponse> = walletResponse['wallets']\n const walletMap: Record<string, string> = {}\n for (const w of walletList) {\n walletMap[w.name] = w.id\n }\n return walletMap\n }\n\n async listAccounts(wallet: string, password: string): Promise<Array<Account>> {\n // Get a handle token\n const walletId = await this.getWalletId()\n const token = await this.getWalletToken(walletId, password)\n\n // Fetch accounts and format them as lib expects\n const listResponse = await this.#client.listKeys(token)\n const addresses: Array<string> = listResponse['addresses']\n const mappedAccounts = addresses.map((address: string, index: number) => {\n return {\n name: `KMDWallet ${index + 1}`,\n address,\n providerId: KMDWalletClient.metadata.id\n }\n })\n\n // Release handle token\n await this.releaseToken(token)\n\n return mappedAccounts\n }\n\n async getWalletId(): Promise<string> {\n // Use cached if available\n if (this.walletId !== '') return this.walletId\n\n const walletMap = await this.listWallets()\n if (!(this.#wallet in walletMap)) throw Error('No wallet named: ' + this.#wallet)\n this.walletId = walletMap[this.#wallet]\n\n return this.walletId\n }\n\n async signTransactions(\n connectedAccounts: string[],\n txnGroups: Uint8Array[] | Uint8Array[][],\n indexesToSign?: number[],\n returnGroup = true\n ) {\n // If txnGroups is a nested array, flatten it\n const transactions: Uint8Array[] = Array.isArray(txnGroups[0])\n ? (txnGroups as Uint8Array[][]).flatMap((txn) => txn)\n : (txnGroups as Uint8Array[])\n\n // Decode the transactions to access their properties.\n const decodedTxns = transactions.map((txn) => {\n return this.algosdk.decodeObj(txn)\n }) as Array<_algosdk.EncodedTransaction | _algosdk.EncodedSignedTransaction>\n\n // Get a handle token\n const walletId = await this.getWalletId()\n const pw = this.requestPassword()\n const token = await this.getWalletToken(walletId, pw)\n\n const signedTxns: Array<Uint8Array> = []\n // Sign them with the client.\n const signingPromises: Promise<Uint8Array>[] = []\n\n decodedTxns.forEach((dtxn, idx) => {\n const isSigned = 'txn' in dtxn\n\n // push the incoming txn into signed, we'll overwrite it later\n signedTxns.push(transactions[idx])\n\n // Its already signed, skip it\n if (isSigned) {\n return\n // Not specified in indexes to sign, skip it\n } else if (indexesToSign && indexesToSign.length && !indexesToSign.includes(Number(idx))) {\n return\n }\n // Not to be signed by our signer, skip it\n else {\n const senderAddress = this.algosdk.encodeAddress(dtxn.snd)\n const rekeyAddress = dtxn.rekey ? this.algosdk.encodeAddress(dtxn.rekey) : null\n\n const isSignerConnected = rekeyAddress\n ? connectedAccounts.includes(rekeyAddress) && connectedAccounts.includes(senderAddress)\n : connectedAccounts.includes(senderAddress)\n\n if (!isSignerConnected) {\n return\n }\n }\n\n // overwrite with an empty blob\n signedTxns[idx] = new Uint8Array()\n\n const txn = this.algosdk.Transaction.from_obj_for_encoding(dtxn)\n\n const promise = txn.reKeyTo\n ? this.#client.signTransactionWithSpecificPublicKey(token, pw, txn, txn.reKeyTo.publicKey)\n : this.#client.signTransaction(token, pw, txn)\n\n signingPromises.push(promise as Promise<Uint8Array>)\n })\n\n const signingResults = await Promise.all(signingPromises)\n\n // Restore the newly signed txns in the correct order\n let signedIdx = 0\n\n const formattedTxns = signedTxns.reduce<Uint8Array[]>((acc, txn) => {\n // If its an empty array, infer that it is one of the\n // ones we wanted to have signed and overwrite the empty buff\n if (txn.length === 0) {\n acc.push(signingResults[signedIdx])\n\n signedIdx += 1\n } else if (returnGroup) {\n acc.push(txn)\n }\n\n return acc\n }, [])\n\n return formattedTxns\n }\n}\n\nexport default KMDWalletClient\n","export const ICON =\n \"data:image/svg+xml,%3c%3fxml version='1.0' encoding='UTF-8'%3f%3e %3c!-- Generated by Pixelmator Pro 3.2.2 --%3e %3csvg width='409' height='210' viewBox='0 0 409 210' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3e%3ctext id='MNEMONIC' xml:space='preserve' x='0' y='129' font-family='Helvetica' font-size='72' fill='black'%3eMNEMONIC%3c/text%3e%3c/svg%3e\"\n","import Algod, { getAlgodClient } from '../../algod'\nimport BaseClient from '../base'\nimport { DEFAULT_NETWORK, PROVIDER_ID } from '../../constants'\nimport { debugLog } from '../../utils/debugLog'\nimport { ICON } from './constants'\nimport type _algosdk from 'algosdk'\nimport type { TransactionsArray } from '../../types/api'\nimport type { Network } from '../../types/node'\nimport type { InitParams } from '../../types/providers'\nimport type { MnemonicWalletClientConstructor } from './types'\n\nclass MnemonicWalletClient extends BaseClient {\n #client?: _algosdk.Account\n network: Network\n\n constructor({ metadata, algosdk, algodClient, network }: MnemonicWalletClientConstructor) {\n super(metadata, algosdk, algodClient)\n\n this.network = network\n this.metadata = MnemonicWalletClient.metadata\n }\n\n static metadata = {\n id: PROVIDER_ID.MNEMONIC,\n name: 'MNEMONIC',\n icon: ICON,\n isWalletConnect: false\n }\n\n static async init({\n algodOptions,\n algosdkStatic,\n network = DEFAULT_NETWORK\n }: InitParams<PROVIDER_ID.MNEMONIC>): Promise<BaseClient | null> {\n try {\n debugLog(`${PROVIDER_ID.MNEMONIC.toUpperCase()} initializing...`)\n\n const algosdk = algosdkStatic || (await Algod.init(algodOptions)).algosdk\n const algodClient = getAlgodClient(algosdk, algodOptions)\n\n const provider = new MnemonicWalletClient({\n metadata: MnemonicWalletClient.metadata,\n algosdk: algosdk,\n algodClient: algodClient,\n network\n })\n\n debugLog(`${PROVIDER_ID.MNEMONIC.toUpperCase()} initialized`)\n\n return provider\n } catch (e) {\n console.error('Error initializing...', e)\n return null\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/require-await\n async connect() {\n const password = this.requestPassword()\n\n if (!password) {\n this.#client = undefined\n throw new Error('Mnemonic passphrase is required')\n }\n\n this.#client = this.algosdk.mnemonicToSecretKey(password)\n\n return {\n ...MnemonicWalletClient.metadata,\n accounts: [\n {\n name: `MnemonicWallet 1`,\n address: this.#client.addr,\n providerId: MnemonicWalletClient.metadata.id\n }\n ]\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/require-await\n async disconnect() {\n this.#client = undefined\n return\n }\n\n // eslint-disable-next-line @typescript-eslint/require-await\n async reconnect() {\n return null\n }\n\n requestPassword() {\n // TODO: store it locally?\n const pass = prompt('enter mnemonic passphrase, 25 words')\n return pass ? pass : ''\n }\n\n signTransactions(\n connectedAccounts: string[],\n txnGroups: Uint8Array[] | Uint8Array[][],\n indexesToSign?: number[],\n returnGroup = true\n ): Promise<Uint8Array[]> {\n if (!this.#client) {\n throw new Error('Client not connected')\n }\n\n // If txnGroups is a nested array, flatten it\n const transactions: Uint8Array[] = Array.isArray(txnGroups[0])\n ? (txnGroups as Uint8Array[][]).flatMap((txn) => txn)\n : (txnGroups as Uint8Array[])\n\n // Decode the transactions to access their properties.\n const decodedTxns = transactions.map((txn) => {\n return this.algosdk.decodeObj(txn)\n }) as Array<_algosdk.EncodedTransaction | _algosdk.EncodedSignedTransaction>\n\n const signedTxns: Uint8Array[] = []\n // Sign them with the client.\n const signingResults: Uint8Array[] = []\n\n decodedTxns.forEach((dtxn, idx) => {\n const isSigned = 'txn' in dtxn\n\n // push the incoming txn into signed, we'll overwrite it later\n signedTxns.push(transactions[idx])\n\n // Its already signed, skip it\n if (isSigned) {\n return\n // Not specified in indexes to sign, skip it\n } else if (indexesToSign && indexesToSign.length && !indexesToSign.includes(Number(idx))) {\n return\n }\n // Not to be signed by our signer, skip it\n else if (!connectedAccounts.includes(this.algosdk.encodeAddress(dtxn.snd))) {\n return\n }\n\n // overwrite with an empty blob\n signedTxns[idx] = new Uint8Array()\n\n const txn = this.algosdk.Transaction.from_obj_for_encoding(dtxn)\n const signedTxn = txn.signTxn(this.#client?.sk as Uint8Array)\n signingResults.push(signedTxn)\n })\n\n // Restore the newly signed txns in the correct order\n let signedIdx = 0\n const formattedTxns = signedTxns.reduce<Uint8Array[]>((acc, txn) => {\n // If its an empty array, infer that it is one of the\n // ones we wanted to have signed and overwrite the empty buff\n if (txn.length === 0) {\n acc.push(signingResults[signedIdx])\n\n signedIdx += 1\n } else if (returnGroup) {\n acc.push(txn)\n }\n\n return acc\n }, [])\n\n return Promise.resolve(formattedTxns)\n }\n\n signEncodedTransactions(_transactions: TransactionsArray): Promise<Uint8Array[]> {\n throw new Error('Method not implemented.')\n }\n}\n\nexport default MnemonicWalletClient\n","export const ICON =\n \"data:image/svg+xml,%3Csvg fill='%23000000' width='800px' height='800px' viewBox='0 0 24 24' id='wallet' data-name='Flat Line' xmlns='http://www.w3.org/2000/svg' class='icon flat-line'%3E%3Cpath id='secondary' d='M16,12h5V8H5A2,2,0,0,1,3,6V19a1,1,0,0,0,1,1H20a1,1,0,0,0,1-1V16H16a1,1,0,0,1-1-1V13A1,1,0,0,1,16,12Z' style='fill: rgb(44, 169, 188); stroke-width: 2;'%3E%3C/path%3E%3Cpath id='primary' d='M19,4H5A2,2,0,0,0,3,6H3A2,2,0,0,0,5,8H21' style='fill: none; stroke: rgb(0, 0, 0); stroke-linecap: round; stroke-linejoin: round; stroke-width: 2;'%3E%3C/path%3E%3Cpath id='primary-2' data-name='primary' d='M21,8V19a1,1,0,0,1-1,1H4a1,1,0,0,1-1-1V6A2,2,0,0,0,5,8Zm0,4H16a1,1,0,0,0-1,1v2a1,1,0,0,0,1,1h5Z' style='fill: none; stroke: rgb(0, 0, 0); stroke-linecap: round; stroke-linejoin: round; stroke-width: 2;'%3E%3C/path%3E%3C/svg%3E\"\n","import Algod, { getAlgodClient } from '../../algod'\nimport BaseClient from '../base'\nimport { DEFAULT_NETWORK, PROVIDER_ID } from '../../constants'\nimport { debugLog } from '../../utils/debugLog'\nimport { ICON } from './constants'\nimport type _algosdk from 'algosdk'\nimport type { AlgodClientOptions, Network } from '../../types/node'\nimport type { InitParams } from '../../types/providers'\nimport type { Metadata, Wallet } from '../../types/wallet'\nimport type { CustomProvider, CustomWalletClientConstructor } from './types'\n\nclass CustomWalletClient extends BaseClient {\n network: Network\n providerProxy: CustomProvider\n\n static metadata: Metadata = {\n id: PROVIDER_ID.CUSTOM,\n icon: ICON,\n isWalletConnect: false,\n name: 'Custom'\n }\n\n constructor({\n providerProxy,\n metadata,\n algosdk,\n algodClient,\n network\n }: CustomWalletClientConstructor) {\n super(metadata, algosdk, algodClient)\n\n this.providerProxy = providerProxy\n this.network = network\n }\n\n static async init({\n clientOptions,\n algodOptions,\n algosdkStatic,\n network = DEFAULT_NETWORK\n }: InitParams<PROVIDER_ID.CUSTOM>): Promise<BaseClient | null> {\n try {\n debugLog(`${PROVIDER_ID.CUSTOM.toUpperCase()} initializing...`)\n\n if (!clientOptions) {\n throw new Error(`Attempt to create custom wallet with no provider specified.`)\n }\n\n const algosdk: typeof _algosdk =\n algosdkStatic || (await Algod.init(algodOptions as AlgodClientOptions)).algosdk\n const algodClient = getAlgodClient(algosdk, algodOptions as AlgodClientOptions)\n\n try {\n return new CustomWalletClient({\n providerProxy: clientOptions.getProvider({\n algod: algodClient,\n algosdkStatic: algosdk,\n network\n }),\n metadata: {\n ...CustomWalletClient.metadata,\n name: clientOptions.name,\n icon: clientOptions.icon ?? CustomWalletClient.metadata.icon\n },\n algodClient,\n algosdk,\n network\n })\n } finally {\n debugLog(`${PROVIDER_ID.CUSTOM.toUpperCase()} initialized`, '✅')\n }\n } catch (e) {\n console.error('Error initializing...', e)\n return null\n }\n }\n\n async connect(): Promise<Wallet> {\n return await this.providerProxy.connect(this.metadata)\n }\n\n async disconnect() {\n await this.providerProxy.disconnect()\n }\n\n async reconnect(): Promise<Wallet | null> {\n return await this.providerProxy.reconnect(this.metadata)\n }\n\n async signTransactions(\n connectedAccounts: string[],\n txnGroups: Uint8Array[] | Uint8Array[][],\n indexesToSign?: number[],\n returnGroup = true\n ) {\n return await this.providerProxy.signTransactions(\n connectedAccounts,\n txnGroups,\n indexesToSign,\n returnGroup\n )\n }\n}\n\nexport default CustomWalletClient\n","/**\n * arc-0027\n */\nexport const ARC_0027_PREFIX = 'arc0027'\nexport const ARC_0027_CHANNEL_NAME = `${ARC_0027_PREFIX}:channel`\nexport const ARC_0027_ENABLE_REQUEST = `${ARC_0027_PREFIX}:enable:request`\nexport const ARC_0027_GET_PROVIDERS_REQUEST = `${ARC_0027_PREFIX}:get_providers:request`\nexport const ARC_0027_PROVIDER_ID = 'f6d1c86b-4493-42fb-b88d-a62407b4cdf6'\nexport const ARC_0027_SIGN_TXNS_REQUEST = `${ARC_0027_PREFIX}:sign_txns:request`\n/**\n * errors\n */\nexport const UNKNOWN_ERROR = 4000\nexport const METHOD_CANCELED_ERROR = 4001\nexport const METHOD_TIMED_OUT_ERROR = 4002\nexport const METHOD_NOT_SUPPORTED_ERROR = 4003\nexport const NETWORK_NOT_SUPPORTED_ERROR = 4004\nexport const UNAUTHORIZED_SIGNER_ERROR = 4100\nexport const INVALID_INPUT_ERROR = 4200\nexport const INVALID_GROUP_ID_ERROR = 4201\n/**\n * genesis hashes\n */\nexport const ALGORAND_BETANET_GENESIS_HASH = 'mFgazF+2uRS1tMiL9dsj01hJGySEmPN28B/TjjvpVW0='\nexport const ALGORAND_MAINNET_GENESIS_HASH = 'wGHE2Pwdvd7S12BL5FaOP20EGYesN73ktiC1qzkkit8='\nexport const ALGORAND_TESTNET_GENESIS_HASH = 'SGO1GKSzyE7IEPItTxCByw9x8FmnrCDexi9/cOUJOiI='\nexport const VOI_TESTNET_GENESIS_HASH = 'IXnoWtviVVJW5LGivNFc0Dq14V3kqaXuK2u5OQrdVZo='\n/**\n * timeouts\n */\nexport const DEFAULT_REQUEST_TIMEOUT = 180000 // 3 minutes in milliseconds\nexport const LOWER_REQUEST_TIMEOUT = 750 // 0.75 seconds in milliseconds\nexport const UPPER_REQUEST_TIMEOUT = 300000 // 5 minutes in milliseconds\n/**\n * icon\n */\nexport const ICON =\n 'data:image/svg+xml;base64,' +\n 'PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgdmVyc2lvbj0iMS4xIgogICBpZD0ic3ZnMiIKICAgdmlld0JveD0iMCAwIDEzNjUuMzMzMyAxMzY1LjMzMzMiCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CiAgPHBhdGgKICAgIGQ9Im0gNjY3Ljk5OTk4LDEwNDguNjY2MiBjIDAsLTY0LjE2Njk4IC0wLjYyMDQ0LC0xMjguODE2OTggLTEuMzc4NzcsLTE0My42NjY3IC0yLjgxMTA3LC01NS4wNDczNyAtMTIuMDY3NDksLTkzLjA1MjU5IC0zMy4yNDA1OSwtMTM2LjQ3OTkyIC0yMS41MDczNCwtNDQuMTEyODkgLTUxLjA3MDU3LC04Mi42MzAyMiAtODQuNzM2ODYsLTExMC40MDE5OCAtMjMuNjQ4MjEsLTE5LjUwNzcxIC0yOS4zOTQ4NCwtMjMuNTc5NjMgLTUzLjU5NzA3LC0zNy45Nzc1NSAtMTAuMzU1NTMsLTYuMTYwNDkgLTQ1Ljk3MTAyLC0yMi44MDY3MyAtNDguNzk2MjIsLTIyLjgwNjczIC0wLjk0NDQzLDAgLTIuMjg3MTUsLTAuNTUyODkgLTIuOTgzODEsLTEuMjI4NjUgLTEuNDkxOTUsLTEuNDQ3MTYgLTM0LjAwNzg3LC0xMS4wNzg0NyAtNDQuNiwtMTMuMjEwNjQgLTE5LjUwOTI4LC0zLjkyNzE4IC00Ni4xMDEzMSwtNi44NjQxMiAtNjUuOTI5MTUsLTcuMjgxNTIgbCAtMTMuMjYyNDksLTAuMjc5MTkgLTEuNzk0NCwxMi42NjY2NyBjIC0yLjQ3MjMzLDE3LjQ1MjI1IC0yLjk5NDMyLDQ4LjMxNTQzIC0zLjAwNDg3LDE3Ny42NjY2NiBsIC0wLjAwOSwxMTEuNjY2NjYgaCAtMjggLTI4IGwgMC4wMjg5LC0xMzAuMzMzMzMgYyAwLjAyNjQsLTExOC45MzM1NyAwLjI1Mjg0LC0xMzIuNDkwODIgMi41ODg1NiwtMTU0Ljk5OTk5IDIuNjU1MjMsLTI1LjU4ODI2IDYuMzY3NjgsLTQ4LjY4Njg2IDkuODU3NTksLTYxLjMzMzM0IDcuMDU0NTIsLTI1LjU2MzU4IDEwLjYyNTc5LC0zNy4yNjIyMSAxMi44MjE0MywtNDIgMC42Nzk3LC0xLjQ2NjY2IDIuMTI2MzMsLTUuMzY2NjYgMy4yMTQ3MywtOC42NjY2NiA2LjY5Njc2LC0yMC4zMDQ0NyAyNi40NDAxNSwtNTguNzgxMzYgNDMuNDg4NzMsLTg0Ljc1MzAzIDI4LjA3NzM3LC00Mi43NzI4MSA2MC4zNDY2OSwtNzYuODgwNzQgMTA0LjY2NjY3LC0xMTAuNjMwMjYgNC42ODc3NywtMy41Njk3MiAyOS40ODMwNSwtMjAuMDcxOTkgMzkuNjU5OTgsLTI2LjM5NTMyIDEzLjU2MjQxLC04LjQyNjg5IDUxLjgwNDgsLTI2LjY4OTI1IDY1LjAwNjY4LC0zMS4wNDM0NSAzLjMsLTEuMDg4NCA3LjIsLTIuNTMxMiA4LjY2NjY3LC0zLjIwNjIzIDcuNjYxMzMsLTMuNTI2MDkgNDEuMjA5ODgsLTEzLjE5MDY5IDU2LC0xNi4xMzIzNyA3OS45NTg3OCwtMTUuOTAzMzkgMTU3Ljk3ODkyLC0xMC43Njc3MSAyMzMuOTk5OTksMTUuNDAzMDYgNDEuOTE4NjEsMTQuNDMwNzYgNzUuOTk2NDksMzIuMTc3NzkgMTE0Ljc1MTY2LDU5Ljc2MDE5IDE2Ljg4MDQ3LDEyLjAxMzk5IDQ3LjIyMTc2LDM4Ljk4MjMxIDU5LjkxMTE2LDUzLjI1MTAzIDUuNDE5Myw2LjA5MzgzIDExLjUxMDgsMTIuNzc1MDMgMTMuNTM2NSwxNC44NDcxIDMuNTYzNiwzLjY0NTA5IDI0LjIyOTQsMzAuNTQ2NDkgMjkuODI3OCwzOC44Mjc4NyAyNC4xNjc3LDM1Ljc0OTczIDQ1LjkxMjYsODEuODc4OTQgNTcuMjI5MSwxMjEuNDA0NzQgMS4yNTk4LDQuNCAyLjgxMjQsOS41IDMuNDUwNCwxMS4zMzMzMyAxLjYxNDgsNC42NDA3OCA2LjUzMDksMjguMjM1NiA4LjA1NjMsMzguNjY2NjcgMC42OTcxLDQuNzY2NjcgMS41ODAzLDkuNTE2OTUgMS45NjI2LDEwLjU1NjE2IDAuMzgyNCwxLjAzOTIzIDEuNTcxNiwxMy4wMzkyMyAyLjY0MjcsMjYuNjY2NjcgMS41MTk3LDE5LjMzNDgzIDEuOTQ5NSw1Mi42NzI4MyAxLjk1NjMsMTUxLjc3NzE3IGwgMC4wMSwxMjYuOTk5OTkgaCAtMjcuOTA3NSAtMjcuOTA3NiBsIC0wLjYzOTIsLTEzOS42NjY2NiBjIC0wLjUwMTYsLTEwOS41Nzg2MyAtMS4wMzM5LC0xNDIuMTA4MTcgLTIuNDcxMSwtMTUxIGwgLTEuODMxOCwtMTEuMzMzMzMgLTEyLjYyMTQsMC4yMzMwNCBjIC00MS4xOTI1LDAuNzYwNTcgLTgwLjc3OTcyLDguNTI0MjEgLTExOC45NjgzMywyMy4zMzE0NyBsIC0xNC4zNDY4Nyw1LjU2Mjg2IDEuMDEzNTQsOC43Njk2NCBjIDAuNTU3NDQsNC44MjMzMSAxLjAxMzUzLDk4Ljc2OTY1IDEuMDEzNTMsMjA4Ljc2OTY1IFYgMTAyMiBsIC0yNy42NjY2NywwLjM2MDQgLTI3LjY2NjY2LDAuMzYwMyBWIDgyOS4yMTc3MSBjIDAsLTE2NC45MjU5MSAtMC4yNzQ1MiwtMTkzLjM5NzY5IC0xLjg1ODg4LC0xOTIuNzg5NzEgLTguMjY2MjcsMy4xNzIwNiAtNDMuNTg1MTcsMzQuMTczMzIgLTU5LjI2MDMyLDUyLjAxNTg5IC0zNy4wMDU5Niw0Mi4xMjI4MyAtNjMuMjI1MSw5MC40MjEzIC03Ni4xOTQ0NSwxNDAuMzU4NDEgLTExLjMzNTMxLDQzLjY0NTM2IC0xMi4wODU5Miw1Ny45ODA0NCAtMTEuMDc1NDMsMjExLjUxNzMgbCAwLjgyMjc4LDEyNS4wMTM3IGggLTI4LjIxNjg2IC0yOC4yMTY4NCB6IG0gNDAuMTQ2OTYsLTMwNy4xMTM4IGMgMTYuMjcwNDgsLTM0LjI1NTk4IDM1LjE1MzYyLC02Mi4xNDM5IDYxLjk1NjQxLC05MS41MDE1OCAxMy40MDA5NiwtMTQuNjc4MzMgMzUuMTE3NTUsLTM1LjE5MzkgNDUuMjI5OTYsLTQyLjcyODUzIDIuOTMzMzQsLTIuMTg1NTggNS42MzMzNCwtNC4zMzE0IDYsLTQuNzY4NDYgMS4yMzM5NSwtMS40NzA4NyAyNC44ODc1OCwtMTguMjUzMzEgMjguNzk2MzYsLTIwLjQzMTI2IDIuMTI4NjcsLTEuMTg2MDggNC43NzAzMSwtMi43MzE3OCA1Ljg3MDMxLC0zLjQzNDg5IDEyLjk1MTY5LC04LjI3ODY4IDM0LjU3NzI4LC0xOS41MDUyMyA1Ni42NjY2NiwtMjkuNDE3NTIgMTAuODEzOTksLTQuODUyNjMgMzYuNDY4MjMsLTEzLjQ5NzE2IDUxLjMzMzM0LC0xNy4yOTc0NSAyNy40NzU5LC03LjAyNDI3IDQ4LjI1OTMyLC0xMC4yNDc0NiA3My44ODM0MiwtMTEuNDU4MiAxMC42OTc0LC0wLjUwNTQ2IDE5LjQ0OTksLTEuMzI4OTEgMTkuNDQ5OSwtMS44Mjk5IDAsLTYuNDQ4NzYgLTE4LjI2MTEsLTQ4LjI1NTY2IC0zMC43MTgsLTcwLjMyNTYzIC04LjAxMjIsLTE0LjE5NTQ0IC0yMi40MzU4LC0zNi41MTA0OCAtMjUuMjI0NiwtMzkuMDI1NjYgLTAuNDA2NiwtMC4zNjY2NiAtMi40OTYxMiwtMy4wNjY2NiAtNC42NDM0MywtNiAtMTkuNzAwOTEsLTI2LjkxMjM4IC01NS4wMzY2OSwtNjAuMzg0NDkgLTg2Ljc0NzI5LC04Mi4xNzIwNiAtNTkuNzQyMzksLTQxLjA0NzU1IC0xMzAuNzM1NzYsLTYzLjgxMDUxIC0yMDYuMjMzOTIsLTY2LjEyNTgzIC00Ny42MDY0OCwtMS40NTk5NiAtMTAwLjIwMDE5LDguMDk0NzUgLTE0OS43NjYwNywyNy4yMDgwNCAtMjUuOTQ2OTksMTAuMDA1NTEgLTY5LjMxNzMxLDM0LjU2MDI2IC05MCw1MC45NTQ4MiAtNDkuNTM0MTEsMzkuMjY0MjIgLTgyLjY1Njg4LDc5LjkwNjkzIC0xMTAuNDA0OCwxMzUuNDcwMjYgLTcuMzMwNDcsMTQuNjc4NzQgLTIwLjI2MTg2LDQ1Ljk1MjM3IC0yMC4yNjE4Niw0OS4wMDE4IDAsMS41NTMwNiAzLjcyMDk2LDIuMTE2NjEgMTguOTUzNzcsMi44NzA1OCAxNy41MzYzOCwwLjg2OCA0NS40MjI4NSw0LjA0Mzc0IDQ3LjY2MjM3LDUuNDI3ODMgMC41MjkzMywwLjMyNzE1IDQuMjA3MjQsMS4xNDE1MiA4LjE3MzEzLDEuODA5NzIgMTQuOTMwODQsMi41MTU2NSA1NS45NDQ3MSwxNC44NjkwOCA2NS40Nzc4NCwxOS43MjIgMS45ODAyNiwxLjAwODA3IDQuMTM1NDYsMS44MzI4NCA0Ljc4OTM1LDEuODMyODQgMC42NTM4OSwwIDIuNzc5NDUsLTQuMDUgNC43MjM0NSwtOSAzLjQzMjkxLC04Ljc0MTE3IDE1Ljc1MDI3LC0zMC41ODg5MyAyMS40MTg4NCwtMzcuOTkxNCAxNi4xODI5MSwtMjEuMTMyOTEgMjQuNTgwMDksLTMwLjI1OTM4IDM5LjQ2NzkxLC00Mi44OTU3MiAxNS4yMDUxNywtMTIuOTA1NjkgMjEuMTgwMjksLTE3LjAxOTI4IDM5LjU3MTg0LC0yNy4yNDMzNCAzOC4wNTIxNSwtMjEuMTUzNjMgODYuNzgzNjEsLTMxLjc5NzQ0IDEyOS4yMjUxMSwtMjguMjI1MDcgMzMuMjQ3NTksMi43OTg0OSA1NS4wODQ4Nyw4LjYxODU1IDgyLjUzNjM3LDIxLjk5NzUzIDM2LjA4NzA0LDE3LjU4NzY2IDYzLjQ4NTY0LDQwLjYyMzEgODguNzc4NzEsNzQuNjQwOTYgOC43OTcwOCwxMS44MzE2MSA4Ljc3NDY2LDEyLjA3NyAtMS40NDUzNywxNS44MjIyOCAtMy4zLDEuMjA5MzMgLTEzLjQ2Mzg3LDYuMzQyODUgLTIyLjU4NjM4LDExLjQwNzgzIC05LjEyMjUsNS4wNjQ5NyAtMTcuMzQ0MTcsOC45MTgyNCAtMTguMjcwMzcsOC41NjI4MiAtMC45MjYyLC0wLjM1NTQxIC0zLjQ4MzY3LC0zLjQ1MDczIC01LjY4MzI1LC02Ljg3ODQ5IC01LjcyMjE1LC04LjkxNzIgLTI5LjcxMjY3LC0zMS45NDA4NSAtNDEuNDYsLTM5Ljc4OTA4IC0zNS4xNTk2NywtMjMuNDg5NjYgLTc0LjE0MzY3LC0zMy4zODg4OCAtMTE2Ljk5NzM2LC0yOS43MDkxNCAtNTkuMDAwNDcsNS4wNjYyMiAtMTE0Ljc3MzQ4LDQ0LjUxMzk1IC0xNDEuNzIwOTQsMTAwLjIzNzg5IC0yLjkwNDk0LDYuMDA3MDIgLTUuMjgxNywxMS45OTE0MSAtNS4yODE3LDEzLjI5ODY0IDAsMS40MjQ2NiAyLjEwNTM0LDMuNDUwODIgNS4yNTU2Nyw1LjA1OCAxNC45NTUwMSw3LjYyOTQ4IDQ2LjQ3OTc1LDMzLjAzNjg0IDY5LjQ4NTQ5LDU2LjAwMTg1IDI3LjcxMDExLDI3LjY2MTAyIDQ1Ljc4OTkzLDUwLjkwNTk4IDY1LjI2NjE1LDgzLjkxMTY1IDguNjE2OTYsMTQuNjAyODcgMTIuNDU5NzQsMjIuNDUxMTMgMjIuMTIxMDYsNDUuMTc4NjggbCAyLjQzMTIsNS43MTkyMiAyLjU1NDMyLC01LjcxOTIyIGMgMS40MDQ4OCwtMy4xNDU1OCA2LjA2OTc2LC0xMy4xMjA2NCAxMC4zNjY0LC0yMi4xNjY4MSB6IG0gLTI0NS40ODAyOCw5Ni42Njk4MSBjIDAsLTEwMS40NDQ0NSAwLjM1MDAxLC0xODQuNzk0NDUgMC43Nzc4LC0xODUuMjIyMjQgMS45NjYwNCwtMS45NjYwNSAyMS4zMTA0MSw5LjU3ODU5IDQxLjIyMjE5LDI0LjYwMTI1IGwgMTQuNjY2NjcsMTEuMDY1NDMgMC4zMzg1MSwxNjcgMC4zMzg0OSwxNjYuOTk5OTUgaCAtMjguNjcxODMgLTI4LjY3MTgzIHoiCiAgICBmaWxsPSIjZmZmZmZmIiAvPgogIDxwYXRoCiAgICBkPSJNIDAsNjgyLjY2NjY1IFYgMCBIIDY4Mi42NjY2NSAxMzY1LjMzMzMgViA2ODIuNjY2NjUgMTM2NS4zMzMzIEggNjgyLjY2NjY1IDAgWiBNIDcyNC4zMTE4NiwxMDI1IGMgMC4zNTI2OCwtMTI3LjE2NjgyIDAuNjI1NTYsLTE0Mi44MjY2NyAyLjY2NjE0LC0xNTMuMDAwMDIgMS4yNTAyOSwtNi4yMzMzMyAzLjI0NjY1LC0xNy4wMzMzMyA0LjQzNjM0LC0yNCAyLjE2OTM0LC0xMi43MDMxMyA1LjkyODM5LC0yNy4yNzg3MiA5LjI4NDQ0LC0zNiAwLjk4NzcsLTIuNTY2NjcgMi41Mjc0NCwtNy4wNjY2NyAzLjQyMTY3LC0xMCAwLjg5NDIzLC0yLjkzMzMzIDMuNjMyOTUsLTkuNjg1ODcgNi4wODYwNCwtMTUuMDA1NjQgMi40NTMwOSwtNS4zMTk3NiA0LjQ2MDE2LC0xMC4wNzIzNSA0LjQ2MDE2LC0xMC41NjEyOSAwLC0wLjc5MDE1IDYuMDI2NDQsLTEzLjI1NjM1IDkuMzk0MzgsLTE5LjQzMzA3IDAuNjk5NzUsLTEuMjgzMzMgMS44NDY1OCwtMy4zODMzMyAyLjU0ODUsLTQuNjY2NjcgMy4xOTMwNCwtNS44Mzc5MyAxNC4wMDg2NCwtMjMuNzM0ODkgMTQuNzA1MjUsLTI0LjMzMzMzIDAuNDI2ODMsLTAuMzY2NjYgMy43NDE1OSwtNC44NjY2NiA3LjM2NjE1LC0xMCAzLjYyNDU0LC01LjEzMzMzIDcuNTg0ODgsLTEwLjUzMzMzIDguODAwNzIsLTEyIDE5LjI5NjI0LC0yMy4yNzcwMSAzNi4xMTI4OSwtNDAuNTI5ODQgNDguNzcyNTMsLTUwLjAzNzU4IDQuMjYwMTksLTMuMTk5NTIgOC4zNDU4LC02LjQ2MzQ0IDkuMDc5MTMsLTcuMjUzMTYgMC43MzMzNCwtMC43ODk3MSA0LjQ4MzM0LC0zLjcyMzQ2IDguMzMzMzQsLTYuNTE5NDQgbCA3LC01LjA4MzYgdiAxOTIuNzgwMjIgMTkyLjc4MDE4IGggMjkuMzY5NzQgMjkuMzY5NzYgbCAtMC41MDA1NywtMjA1LjY2NjYyIGMgLTAuMjc1MzIsLTExMy4xMTY2NiAtMC43NDE3MSwtMjA3LjA0ODc4IC0xLjAzNjQzLC0yMDguNzM4MDMgLTAuNDU0OTcsLTIuNjA3ODIgMC40NzAzMywtMy40ODc2MiA2LjEzMDgzLC01LjgyOTM1IDMuNjY2NjYsLTEuNTE2ODggOC41NTczNCwtMy41ODQ3NiAxMC44NjgxNywtNC41OTUyOSAyLjMxMDgzLC0xLjAxMDUyIDUuMTg0NzMsLTEuODM3MzIgNi4zODY0NSwtMS44MzczMiAxLjIwMTcyLDAgNC40MTEwNCwtMS4wOTQ5MSA3LjEzMTgzLC0yLjQzMzEyIDEzLjk1ODk2LC02Ljg2NTY4IDYxLjc1MzQ3LC0xNS42NTIxMSA5MS43NDg2NywtMTYuODY2ODQgbCAyMC4xMzUyLC0wLjgxNTQyIDAuODY3OCw4LjM5MTAyIGMgMC40Nzc0LDQuNjE1MDYgMS40NDY5LDEyLjU5MTAyIDIuMTU0NiwxNy43MjQzNiAwLjc1MTcsNS40NTI4MiAxLjMxMzMsNjQuNDkxODYgMS4zNTA3LDE0MS45OTk5OSAwLjAzNSw3Mi45NjY2NyAwLjU0OCwxMzMuNDI5MTYgMS4xMzk1LDEzNC4zNjExMSAwLjgyNjEsMS4zMDE1IDcuNTQ2NCwxLjYxMDcgMjguOTc5NiwxLjMzMzMzIGwgMjcuOTA0MSwtMC4zNjExMSAtMC4wOTcsLTEzNi42NjY2NiBjIC0wLjA5NCwtMTMyLjc3MDI1IC0wLjE4MTYsLTEzNy4zNTA5MiAtMy4wNTcyLC0xNjAuNjY2NjYgLTMuMTk4MiwtMjUuOTMxNjQgLTUuMzM2NSwtMzcuMzUwNjYgLTEwLjQ4NjQsLTU2IC0xLjgyMjUsLTYuNiAtMy40Mzk5LC0xMi42IC0zLjU5NCwtMTMuMzMzMzQgLTEuNTgsLTcuNTE1NzcgLTMuMDk5NiwtMTIuMjk4MyAtNi45Mzc0LC0yMS44MzQyNCAtMi40NzE5LC02LjE0MjE2IC00LjQ5NDQsLTExLjk5MDQ0IC00LjQ5NDQsLTEyLjk5NjE3IDAsLTMuMTI2NDEgLTIzLjUxMTEsLTUyLjEwOTQ0IC0yOC42NDgzLC01OS42ODU2OSAtMS41NDc4LC0yLjI4MjgxIC0zLjIwNzcsLTUuMTc3OTEgLTMuNjg4NSwtNi40MzM1NiAtMS43ODIxLC00LjY1MzggLTI2LjM0MTksLTQwLjUxNTIgLTMyLjMyOTksLTQ3LjIwNzA1IC0wLjczMzMsLTAuODE5NTQgLTQuMzMzMywtNS4yNDMxMiAtOCwtOS44MzAyIC04LjYxMTEsLTEwLjc3Mjc0IC00MS41MTU1OSwtNDQuMDgwNjQgLTUyLjU1NzYsLTUzLjIwMjAzIC00LjcwNjY4LC0zLjg4ODAyIC05LjM4ODc1LC03LjkwMDI4IC0xMC40MDQ2LC04LjkxNjEzIC0xLjg4MTk2LC0xLjg4MTk1IC01Ljk1NzMsLTQuNzQzIC0yOC4zNzExMiwtMTkuOTE3NzIgLTYuOTY2NjcsLTQuNzE2NiAtMTMuMzI4NTYsLTkuMTMyMzUgLTE0LjEzNzU1LC05LjgxMjc3IC0wLjgwODk5LC0wLjY4MDQyIC01LjMwODk5LC0zLjIxMzQzIC0xMCwtNS42Mjg5MiAtNC42OTEwMSwtMi40MTU1IC04LjgyOTEyLC00Ljc2NDU0IC05LjE5NTc5LC01LjIyMDA4IC0yLjI5NTY4LC0yLjg1MjIyIC01MC41MTMyMywtMjQuNTUwMTYgLTYzLjk5OTk5LC0yOC44MDAwNyAtMjQuNTAxMTQsLTcuNzIwNzMgLTM2LjQxNDI0LC0xMS4xODA0NyAtNDMuMzMzMzQsLTEyLjU4NDY1IC00LjQsLTAuODkyOTUgLTExLjksLTIuNjgwNiAtMTYuNjY2NjYsLTMuOTcyNTYgLTM5LjkyMDQ1LC0xMC44MjAwNyAtMTM4LjY2NjM5LC0xMC41MTUyIC0xNzkuMzMzMzMsMC41NTM2OSAtMy42NjY2NywwLjk5OCAtMTEuNDY2NjcsMi44NTc3MSAtMTcuMzMzMzMsNC4xMzI2NyAtNS44NjY2NywxLjI3NDk2IC0xNi40MzYyNCw0LjM1MTUyIC0yMy40ODc5NCw2LjgzNjggLTcuMDUxNywyLjQ4NTI4IC0xMy41NjEwMiw0LjUxODY5IC0xNC40NjUxNyw0LjUxODY5IC0wLjkwNDEzLDAgLTMuNTM0NTYsMC44NTY2NCAtNS44NDUzOSwxLjkwMzY0IC0xMC41NTQyMSw0Ljc4MTk1IC0xNi43ODI1Miw3LjQyOTY5IC0xNy40NzY4Niw3LjQyOTY5IC0yLjIyNzY4LDAgLTUzLjM0ODIsMjYuMTM1NiAtNTYuODIxOTUsMjkuMDUwNDggLTEuMDQ2NDgsMC44NzgxMiAtOC4yMDI2OSw1Ljc5Nzk2IC0xNS45MDI2OSwxMC45MzI5OCAtMjkuMzA3NjcsMTkuNTQ0ODEgLTQxLjg1MDI3LDI5Ljc5OTIyIC02Ni4wMjkyOCw1My45ODMzMyAtMTguNjM4MDEsMTguNjQxOTQgLTI4LjQ0MTg0LDI5Ljk0Mjg0IC00MS41NTE5OSw0Ny44OTcwNiAtMy44MDMwMiw1LjIwODIyIC04LjY3MTAyLDExLjg2OTQ4IC0xMC44MTc3OCwxNC44MDI4MiAtMi4xNDY3NiwyLjkzMzMzIC01LjYxNDkzLDguMzMzMzMgLTcuNzA3MDUsMTIgLTIuMDkyMTIsMy42NjY2NiAtNC42MTEzMSw3LjQ5NjczIC01LjU5ODIyLDguNTExMjQgLTAuOTg2ODksMS4wMTQ1MiAtMy4xNzM1OCw0LjYxNDUyIC00Ljg1OTMsOCAtMS42ODU3MiwzLjM4NTQ5IC02LjQ3NDEsMTIuNzU1NDIgLTEwLjY0MDgzLDIwLjgyMjA5IC00LjE2NjczLDguMDY2NjcgLTkuOTkwODMsMjAuMzY2NjcgLTEyLjk0MjQxLDI3LjMzMzMzIC0yLjk1MTYsNi45NjY2NyAtNi4yMjYwMywxNC41NTczNSAtNy4yNzY1MSwxNi44NjgxNyAtMS4wNTA0OCwyLjMxMDgzIC0xLjkyNjczLDUuMDEwODMgLTEuOTQ3MjMsNiAtMC4wMjA1LDAuOTg5MTggLTEuODQ5MDUsNi44OTg1IC00LjA2MzQ4LDEzLjEzMTgzIC0zLjY5MzIyLDEwLjM5NjAzIC01LjI5MTE3LDE2LjMwMDQ4IC0xMS4xODYyNCw0MS4zMzMzMyAtOC4zNDY4MSwzNS40NDM5OCAtOS4yNDY3OCw1Ni42MDI1IC04LjgxODg4LDIwNy4zMzMzMyAwLjE5OTg2LDcwLjQgMC42NDA4NCwxMjguNDUgMC45Nzk5OCwxMjkgMC43OTY2NCwxLjI5MTk5IDUyLjY0MjM4LDEuMjcyNjEgNTQuNjM2OTcsLTAuMDIwNCAxLjEwMTQ4LC0wLjcxNDA3IDEuNzIyMTEsLTM4LjM4NTk2IDIuMjg5NTksLTEzOC45Nzk1OCAwLjY5MDIsLTEyMi4zNDM2NiAxLjYzMDg1LC0xNjEuMjA5MjkgMy45NTgwMSwtMTYzLjUzNjQ3IDEuMjcwMzMsLTEuMjcwMzIgNDguMTg1MTYsMi4wMTgxNCA1OC45MDc5OCw0LjEyOTExIDUuODY2NjcsMS4xNTQ5NSAxNS40NjY2NywzLjAzNzk3IDIxLjMzMzM0LDQuMTg0NDkgMTkuNzA4MjUsMy44NTE1OSA0NS45NjkzMiwxMi41NTE2MiA2MS41OTE4OCwyMC40MDQ3OSA0LjU0MjIsMi4yODMyOCA5LjA3MjIsNC4xNTE0MSAxMC4wNjY2Niw0LjE1MTQxIDAuOTk0NDcsMCAyLjM3ODEyLDAuNTIwMzQgMy4wNzQ3OSwxLjE1NjMgMC42OTY2NywwLjYzNTk2IDYuMzg1MTMsMy44NDY2OSAxMi42NDEwNCw3LjEzNDk1IDYuMjU1ODksMy4yODgyNyAxNi42ODA5Miw5LjUxNzk0IDIzLjE2NjcsMTMuODQzNzEgNi40ODU4LDQuMzI1NzcgMTQuMTgyNiw5LjQzNTIzIDE3LjEwNCwxMS4zNTQzNiAyLjkyMTQyLDEuOTE5MTIgNS42OTYzOSw0LjAyMTU3IDYuMTY2NjMsNC42NzIxMSAwLjQ3MDIzLDAuNjUwNTQgNS4wNTQ5Niw0LjU0MDgxIDEwLjE4ODI5LDguNjQ1MDIgMTcuMTc0NSwxMy43MzE0MyA0MS45NjEzLDM5Ljc4NTUxIDUzLjYwNTkyLDU2LjM0NjYzIDEuNjE2NiwyLjI5OTE1IDMuNDQ4ODMsNC43ODAyNSA0LjA3MTYzLDUuNTEzNTkgNi4yMjMwNyw3LjMyNzUgMjAuMTQ3NjEsMzAuNzc2ODggMjkuNjkwNjYsNDkuOTk5OTkgOC44MDI1NiwxNy43MzE1NCAyMC4xNTU1OSw0Ny4xODIzIDIxLjg0NDUyLDU2LjY2NjY3IDAuNTIyMzYsMi45MzMzMyAxLjc2OTcsOC4zMzMzMyAyLjc3MTg2LDEyIDguNDY0NTcsMzAuOTY5OTcgOS45ODMxMiw2My4xMDkyMiAxMC4wMDEwOSwyMTEuNjY2NjQgbCAwLjAxNDMsMTE4LjMzMzMgaCAyOC42MjYxNiAyOC42MjYxNiB6IE0gNjkwLjk3NzU0LDc1Ni42MzQxNyBjIC0xMS4yNDM3LC0yOS4wNTY3MyAtMzYuOTc0MDgsLTY5Ljk3NDgxIC02Mi44NjA1MywtOTkuOTY0ODQgLTguNTY4MzYsLTkuOTI2NjUgLTQzLjYyMDkzLC00NC42MDUxIC00NS4xMTcwMiwtNDQuNjM1NDkgLTAuOTE2NjcsLTAuMDE4NyAtMS42NjY2NywtMC42MDUwMyAtMS42NjY2NywtMS4zMDMxMyAwLC0wLjY5ODExIC0yLjg1LC0zLjIxNjAzIC02LjMzMzMzLC01LjU5NTM5IC0zLjQ4MzM0LC0yLjM3OTM3IC02LjkzMzM0LC01LjAxNTE2IC03LjY2NjY3LC01Ljg1NzMxIC0wLjczMzMzLC0wLjg0MjE2IC0zLjQzMzMzLC0yLjk0NTMyIC02LC00LjY3MzcgLTIuNTY2NjcsLTEuNzI4MzggLTQuOTY2NjcsLTMuNTI2OTkgLTUuMzMzMzMsLTMuOTk2OTIgLTAuOTkyOTEsLTEuMjcyNTIgLTE0LjUyMjI2LC0xMC42MDc0IC0xNS4zNzM2NiwtMTAuNjA3NCAtMS43MDQxNCwwIC04LjYyNjM0LC01Ljk2NzQ3IC04LjYyNjM0LC03LjQzNjU4IDAsLTEuNzQ4MzIgMTAuNDY0MjYsLTIzLjQ4MTg1IDExLjgyNjgxLC0yNC41NjM0MiAwLjQ2MTkyLC0wLjM2NjY3IDIuMjk1MTEsLTMuMzY2NjcgNC4wNzM3NSwtNi42NjY2NyAxLjc3ODY0LC0zLjMgMy42MDc1NCwtNi4zIDQuMDY0MjQsLTYuNjY2NjcgMC40NTY2OSwtMC4zNjY2NiAyLjI0OTQyLC0yLjc2NjY2IDMuOTgzODUsLTUuMzMzMzMgNC41OTcwMywtNi44MDI4MSAyNS4wNzM1NSwtMjcuNDQzMTYgMzIuMDUxMzUsLTMyLjMwNzc1IDMuMywtMi4zMDA2MSA2LjMsLTQuNTY3MjYgNi42NjY2NiwtNS4wMzcwMiAwLjM2NjY3LC0wLjQ2OTc2IDMuMzY2NjcsLTIuMzA5MzYgNi42NjY2NywtNC4wODggMy4zLC0xLjc3ODY0IDYuMywtMy41Nzg2NCA2LjY2NjY3LC00IDIuNjg4NDQsLTMuMDg5NDQgMjcuODQ3ODMsLTE0LjA4NjMyIDM5LjMzMzMzLC0xNy4xOTIxMyAzMy42MzAyNCwtOS4wOTQwNCA1NS4xMzk4LC05LjM4MjUxIDkwLC0xLjIwNjk5IDE2LjgxNjgzLDMuOTQzOTUgMzYuNzI0OTUsMTIuMjUyOTMgNTIuMDUzMzcsMjEuNzI1MzQgMTQuMjYxMzgsOC44MTMwNCA0MC42MDY1OCwzNC4xMDg0NCA0OC4zNjcyLDQ2LjQzOTg4IDEuMjY5MTYsMi4wMTY2NyAzLjQyMDcyLDMuNjY2NjcgNC43ODEyNCwzLjY2NjY3IDEuMzYwNSwwIDcuNDk2NjgsLTIuNzk1MzEgMTMuNjM1OTIsLTYuMjExNzkgNi4xMzkyNSwtMy40MTY0OCAxNi44NjIyNiwtOC44ODE4MSAyMy44Mjg5MywtMTIuMTQ1MTggNi45NjY2NywtMy4yNjMzOCAxMi44NjQ2MSwtNi4xMTYwMiAxMy4xMDY1MywtNi4zMzkyIDEuNDQ2MiwtMS4zMzQxNiAtMTcuOTI1MzgsLTI2LjE5NDcgLTMwLjY2NjMsLTM5LjM1NTYxIC0xOC44ODk5NiwtMTkuNTEyNjcgLTM2LjM5MDE1LC0zMi45MzE2NCAtNTYuNzc0MTUsLTQzLjUzMzg2IC02LjQxNjM1LC0zLjMzNzI5IC0xMi4zMzE0NSwtNi41OTkwMSAtMTMuMTQ0NjgsLTcuMjQ4MjYgLTAuODEzMjMsLTAuNjQ5MjQgLTQuMTEzMjMsLTIuMDIyNzYgLTcuMzMzMzMsLTMuMDUyMjYgLTMuMjIwMTEsLTEuMDI5NSAtOS4xNTQ3NCwtMy4xNjQ4IC0xMy4xODgwNywtNC43NDUxMiAtOS44NzQ5OSwtMy44NjkxMyAtMTguODA1MTUsLTYuMjA4MTggLTMwLC03Ljg1Nzc4IC01LjEzMzMzLC0wLjc1NjQyIC0xMy4yMzMzMywtMi4wOTA2OCAtMTgsLTIuOTY1MDIgLTEyLjU4OTYxLC0yLjMwOTMgLTQzLjc5NDI4LC0yLjA2MDE3IC01Ny4zMzMzMywwLjQ1Nzc1IC02LjIzMzMzLDEuMTU5MjQgLTE0LjMzMzMzLDIuNTEwNzYgLTE4LDMuMDAzMzcgLTkuMDQ2MiwxLjIxNTM4IC0xNy41ODYwNSwzLjU4OTMyIC0zMi45Nzg1Myw5LjE2NzUxIC0xMy4xNTY2MSw0Ljc2NzkyIC0zOC42NDE5MSwxNi44NTMyNyAtNDIuMzM2MjUsMjAuMDc2MjMgLTEuMTEwMiwwLjk2ODU0IC00LjExODU1LDIuODExMzIgLTYuNjg1MjIsNC4wOTUwNSAtNC41NTE5MiwyLjI3NjY4IC01LjQ0OTk4LDIuOTM4MDkgLTExLjY2NjY2LDguNTkyMjggLTEuNjUsMS41MDA3MSAtMy4zNjAyNywyLjcyODU2IC0zLjgwMDU5LDIuNzI4NTYgLTEuODEyLDAgLTIxLjU1ODg1LDE4LjcwODc1IC0yOS43Mzk1OSwyOC4xNzYxMyAtMTYuMjAyNDIsMTguNzUwNzMgLTE3LjU2OTU4LDIwLjQ2NTE1IC0yMS4xMjQ4NCwyNi40OTA1MyAtMS45NDcxNiwzLjMgLTMuOTU3NzgsNi4zIC00LjQ2ODA2LDYuNjY2NjcgLTEuNTI4ODIsMS4wOTg1NSAtMTUuODY2OTIsMjkuNjY3ODggLTE1Ljg2NjkyLDMxLjYxNTU2IDAsMi43ODQ2OSAtMy42OTUxMiwzLjU1MDI3IC03LjAxMDI5LDEuNDUyNDEgLTYuNDkyNjMsLTQuMTA4NTQgLTQ1LjI1Mjc1LC0xNi4xMDc2IC02MS42NTYzOCwtMTkuMDg3MDkgLTYuNiwtMS4xOTg3OSAtMTcuNywtMy4zMDEwNSAtMjQuNjY2NjYsLTQuNjcxNjkgLTYuOTY2NjcsLTEuMzcwNjQgLTIxLjUxNjY3LC0yLjkxMjc4IC0zMi4zMzMzNCwtMy40MjY5OCAtMTAuODE2NjYsLTAuNTE0MTggLTE5LjY2NjY2LC0xLjQ2NjEyIC0xOS42NjY2NiwtMi4xMTU0IDAsLTAuNjQ5MjYgMS40Mjc2NywtNC42MTI0MiAzLjE3MjYsLTguODA2OTggMS43NDQ5MywtNC4xOTQ1OCAzLjYyNzEsLTkuMTI2NSA0LjE4MjYxLC0xMC45NTk4MyAwLjU1NTQ5LC0xLjgzMzMzIDMuMzI3ODMsLTguMjk0ODcgNi4xNjA3MywtMTQuMzU4OTYgMi44MzI5LC02LjA2NDA5IDUuMTUwNzIsLTExLjg3ODY4IDUuMTUwNzIsLTEyLjkyMTMgMCwtMS4wNDI2MyAwLjY1OTY3LC0yLjMwMzM5IDEuNDY1OTIsLTIuODAxNjggMC44MDYyNiwtMC40OTgzIDMuMDk1MDQsLTQuMjgzNyA1LjA4NjIsLTguNDEyMDIgMTcuMjM2MSwtMzUuNzM2MTMgNTcuNDAxMTgsLTg2LjE2NTIgODguNzgxMjIsLTExMS40Njg4MSA0LjQsLTMuNTQ3OTkgOS4yLC03LjU0OTI4IDEwLjY2NjY2LC04Ljg5MTc2IDUuNTY4MzIsLTUuMDk2ODUgMjkuNjUzOTksLTIxLjg2ODg0IDM4Ljk2NzgzLC0yNy4xMzUxMyAyLjAzNDM2LC0xLjE1MDI5IDUuNDk4ODQsLTMuMjEyMzEgNy42OTg4NCwtNC41ODIyNSAxMC40ODk1LC02LjUzMTkgNDYuODg5ODksLTIzLjU2MTM1IDU2Ljc3ODI2LC0yNi41NjI5OSAyLjUwNTI4LC0wLjc2MDQ5IDkuMzU1MDcsLTMuMTE1OTEgMTUuMjIxNzQsLTUuMjM0MjcgNS44NjY2NiwtMi4xMTgzNiAxNS40NjY2NiwtNC45MjAzNiAyMS4zMzMzMywtNi4yMjY2NiA1Ljg2NjY3LC0xLjMwNjMyIDE0Ljg2NjY3LC0zLjQ2ODEyIDIwLC00LjgwNDAyIDUuMTMzMzMsLTEuMzM1ODkgMTYuMjMzMzMsLTMuMjE3NDIgMjQuNjY2NjYsLTQuMTgxMTggMTkuOTc3NDgsLTIuMjgzMDMgODMuOTA4OTUsLTIuMzA3NzYgMTAzLjMzMzM0LC0wLjA0IDI5LjQ0Nzc1LDMuNDM4MDEgNzIuODYxNjksMTUuNzQ1MDggMTAyLjY2NjY2LDI5LjEwNDE0IDE1LjgzMzQzLDcuMDk2OCAzOC4xMjcyOCwxOC42OTk5OSAzOS4zMzMzMywyMC40NzE2NyAwLjM2NjY3LDAuNTM4NjMgMi4xNjY2NywxLjc1MjI5IDQsMi42OTcwMyA0Ljk1MTg0LDIuNTUxNzMgMjEuNzk2ODMsMTMuNjM3NDIgMjMuMzMzMzMsMTUuMzU1NjYgMC43MzMzNCwwLjgyMDA3IDUuMDI4MzQsMy45ODg4OCA5LjU0NDQ2LDcuMDQxNzkgNC41MTYxLDMuMDUyOTIgOC40MTYxLDYuMDE1NzUgOC42NjY2Niw2LjU4NDA3IDAuMjUwNTUsMC41NjgzMyAzLjQ1MTc0LDMuNDMzMzEgNy4xMTM3NSw2LjM2NjY1IDEwLjUwMTE3LDguNDExNjQgMzEuMzM5MTksMjkuNDkyOTIgNDIuODMzMjgsNDMuMzMzMzMgMTEuOTcyNDQsMTQuNDE2NDEgMjUuMjYyMjEsMzEuOTMxMTYgMjcuNTk3MDEsMzYuMzcwMzUgMC44NjgsMS42NTAyOCAzLjAyMzMsNS4wMTgzNCA0Ljc4OTYsNy40ODQ1NiAxLjc2NjQsMi40NjYyMiA0Ljk5MzEsNy44NTc3OCA3LjE3MDYsMTEuOTgxMjQgMTAuNzMxOCwyMC4zMjI0OSAxOC41NzM2LDM2LjEzOTYzIDIwLjkwMzksNDIuMTYzODUgMS40MTg0LDMuNjY2NjYgNC40MDkzLDExLjA3ODg0IDYuNjQ2NSwxNi40NzE0OCAyLjIzNzEsNS4zOTI2NSA0LjA2NzYsMTAuNTU1OCA0LjA2NzYsMTEuNDczNjYgMCwxLjIxNzgzIC01LjMxNTEsMS45MjU5IC0xOS42NjY3LDIuNjE5OTQgLTEwLjgxNjcsMC41MjMxIC0yNC4xNjY3LDEuODQ2MjIgLTI5LjY2NjcsMi45NDAyOCAtNS41LDEuMDk0MDQgLTEyLjk5OTk2LDIuNDg4NCAtMTYuNjY2NjIsMy4wOTg1NiAtMy42NjY2NywwLjYxMDE2IC0xMC4yNjY2NywxLjgxMDk3IC0xNC42NjY2NywyLjY2ODQ1IC0xMi44MTMwNCwyLjQ5NzA1IC01NC4wNiwxNS42NTU3OSAtNTguNjY2NjcsMTguNzE2MDMgLTAuNzMzMzMsMC40ODcxNiAtNC4zMzMzMywxLjk4NzA5IC04LDMuMzMzMTggLTYuMDE3NjksMi4yMDkxOSAtMjMuNjI2NzMsMTAuOTYxMjcgLTQzLjMzMzMzLDIxLjUzNzYgLTUwLjMyMTQsMjcuMDA3MDIgLTExMi4xODU5NCw4Ny4zMjgyNCAtMTQxLjMzMzMzLDEzNy44MDc1MSAtMy4xODgxNyw1LjUyMTQ4IC00Ljg3MjYxLDguNDkzMjEgLTYuNjEyOTIsMTEuNjY2NjYgLTAuNzAzNzcsMS4yODMzNCAtMi42NTk1Niw0LjczMzM0IC00LjM0NjIxLDcuNjY2NjcgLTIuODAxNjUsNC44NzI1MyAtMTMuMzgzMjEsMjcuMzY0OTIgLTE2LjYwNzMxLDM1LjMwMDg1IC0xLjI0MDQ5LDMuMDUzNDQgLTEuNjQ5NDYsMi41MDM3NiAtNS40NTYsLTcuMzMzMzMgeiBtIC0xNzAuOTk3OTcsOTkuNjk5MTQgYyAtMC4wMTA3LC05MS40ODMzMyAtMC40NjEyMiwtMTY3LjAwNDkgLTEsLTE2Ny44MjU3IC0xLjI3NzQ4LC0xLjk0NjIgLTIwLjMzMzcyLC0xNy4wNDQ2OSAtMjMuOTY2MzIsLTE4Ljk4ODggLTEuNTQyOTMsLTAuODI1NzUgLTMuNjAyMTIsLTIuMjc5NDMgLTQuNTc1OTYsLTMuMjMwMzkgLTMuNDkwNDEsLTMuNDA4MzYgLTIxLjgzNjgzLC0xMy4yMTIyNiAtMjUuMTAzOTcsLTEzLjQxNDk2IGwgLTMuMzMzMzMsLTAuMjA2ODEgLTAuMzM4MDEsMTg1IC0wLjMzODAyLDE4NC45OTk5NSBoIDI5LjMzODAxIDI5LjMzODAyIHoiCiAgICBmaWxsPSIjOGMwMTlhIiAvPgo8L3N2Zz4K'\n","/**\n * Generates a UUID version 4 string. This function attempts to use the `crypto.randomUUID()` function from the Web\n * Crypto API if it is available, otherwise it uses a polyfill method.\n *\n * NOTE: `crypto.randomUUID()` is not available in non-secure contexts; only localhost and HTTPS.\n * @returns {string} a valid UUID version 4 string.\n * @see {@link https://stackoverflow.com/a/2117523}\n */\nexport function generateUuid(): string {\n if (global.crypto.randomUUID) {\n return global.crypto.randomUUID()\n }\n\n return '10000000-1000-4000-8000-100000000000'.replace(/[018]/g, (value) => {\n const valueAsNumber: number = parseInt(value)\n\n return (\n valueAsNumber ^\n (global.crypto.getRandomValues(new Uint8Array(1))[0] & (15 >> (valueAsNumber / 4)))\n ).toString(16)\n })\n}\n","import { Buffer } from 'buffer'\nimport Algod, { getAlgodClient } from '../../algod'\nimport BaseClient from '../base'\nimport { DEFAULT_NETWORK, PROVIDER_ID } from '../../constants'\nimport { debugLog } from '../../utils/debugLog'\nimport {\n ARC_0027_CHANNEL_NAME,\n ARC_0027_ENABLE_REQUEST,\n ARC_0027_GET_PROVIDERS_REQUEST,\n ARC_0027_PROVIDER_ID,\n ARC_0027_SIGN_TXNS_REQUEST,\n DEFAULT_REQUEST_TIMEOUT,\n ICON,\n LOWER_REQUEST_TIMEOUT,\n METHOD_NOT_SUPPORTED_ERROR,\n METHOD_TIMED_OUT_ERROR,\n NETWORK_NOT_SUPPORTED_ERROR,\n UNKNOWN_ERROR\n} from './constants'\nimport type { InitParams, Network, Wallet } from '../../types'\nimport type {\n Arc0001SignTxns,\n Arc0027Account,\n EnableParams,\n EnableResult,\n GetProvidersParams,\n GetProvidersResult,\n KibisisClientConstructor,\n ProviderMethods,\n RequestMessage,\n ResponseError,\n ResponseMessage,\n SendRequestWithTimeoutOptions,\n SignTxnsParams,\n SignTxnsResult\n} from './types'\nimport { DecodedSignedTransaction, DecodedTransaction } from '../../types'\nimport { generateUuid } from './utils'\n\nclass KibisisClient extends BaseClient {\n genesisHash: string\n methods: ProviderMethods[]\n network: Network\n\n constructor({\n metadata,\n algosdk,\n algodClient,\n genesisHash,\n methods,\n network\n }: KibisisClientConstructor) {\n super(metadata, algosdk, algodClient)\n\n this.genesisHash = genesisHash\n this.methods = methods\n this.network = network\n }\n\n static metadata = {\n id: PROVIDER_ID.KIBISIS,\n icon: ICON,\n isWalletConnect: false,\n name: 'Kibisis'\n }\n\n /**\n * public static functions\n */\n\n static async init({\n algodOptions,\n algosdkStatic,\n network = DEFAULT_NETWORK\n }: InitParams<PROVIDER_ID.KIBISIS>): Promise<BaseClient | null> {\n try {\n debugLog(`${PROVIDER_ID.KIBISIS.toUpperCase()}#${KibisisClient.init.name}: initializing...`)\n\n const algosdk = algosdkStatic || (await Algod.init(algodOptions)).algosdk\n const algodClient = getAlgodClient(algosdk, algodOptions)\n const version = await algodClient.versionsCheck().do()\n const genesisHash = version['genesis_hash_b64'] // get the genesis hash of the network\n const result = await KibisisClient.sendRequestWithTimeout<\n GetProvidersParams,\n GetProvidersResult\n >({\n method: 'getProviders',\n params: {\n providerId: ARC_0027_PROVIDER_ID\n },\n reference: ARC_0027_GET_PROVIDERS_REQUEST,\n timeout: LOWER_REQUEST_TIMEOUT\n })\n\n // check for a result\n if (!result) {\n throw {\n code: UNKNOWN_ERROR,\n message: `received response, but provider details were empty for provider \"${PROVIDER_ID.KIBISIS.toUpperCase()}\"`,\n providerId: ARC_0027_PROVIDER_ID\n } as ResponseError\n }\n\n const networkConfiguration = result.networks.find(\n (value) => value.genesisHash === genesisHash\n )\n\n // check if the network is supported\n if (!networkConfiguration) {\n throw {\n code: NETWORK_NOT_SUPPORTED_ERROR,\n data: {\n genesisHash\n },\n message: `network \"${network}\" not supported on provider \"${PROVIDER_ID.KIBISIS.toUpperCase()}\"`,\n providerId: ARC_0027_PROVIDER_ID\n } as ResponseError<{ genesisHash: string }>\n }\n\n const provider = new KibisisClient({\n metadata: KibisisClient.metadata,\n algosdk: algosdk,\n algodClient: algodClient,\n genesisHash,\n methods: networkConfiguration.methods,\n network\n })\n\n debugLog(`${PROVIDER_ID.KIBISIS.toUpperCase()}#${KibisisClient.init.name}: initialized`, '✅')\n\n return provider\n } catch (error) {\n console.error('Error initializing...', error)\n return null\n }\n }\n\n static mapAccountsToWallet(accounts: Arc0027Account[]): Wallet {\n return {\n ...KibisisClient.metadata,\n accounts: accounts.map(({ address, name }) => ({\n address,\n name: name || '',\n providerId: PROVIDER_ID.KIBISIS\n }))\n }\n }\n\n static async sendRequestWithTimeout<Params, Result>({\n method,\n params,\n timeout,\n reference\n }: SendRequestWithTimeoutOptions<Params>): Promise<Result | undefined> {\n return new Promise<Result | undefined>((resolve, reject) => {\n const channel = new BroadcastChannel(ARC_0027_CHANNEL_NAME)\n const requestId = generateUuid()\n // eslint-disable-next-line prefer-const\n let timer: number\n\n // listen to responses\n channel.onmessage = (message: MessageEvent<ResponseMessage<Result>>) => {\n // if the response's request id does not match the intended request, just ignore\n if (!message.data || message.data.requestId !== requestId) {\n return\n }\n\n // clear the timer, we can handle it from here\n window.clearTimeout(timer)\n\n // if there is an error, reject\n if (message.data.error) {\n reject(message.data.error)\n\n // close the channel, we are done here\n return channel.close()\n }\n\n // return the result\n resolve(message.data.result)\n\n // close the channel, we are done here\n return channel.close()\n }\n\n timer = window.setTimeout(() => {\n // close the channel connection\n channel.close()\n\n reject({\n code: METHOD_TIMED_OUT_ERROR,\n data: {\n method\n },\n message: `no response from provider \"${PROVIDER_ID.KIBISIS.toUpperCase()}\"`,\n providerId: ARC_0027_PROVIDER_ID\n } as ResponseError<{ method: ProviderMethods }>)\n }, timeout || DEFAULT_REQUEST_TIMEOUT)\n\n // broadcast the request\n channel.postMessage({\n id: requestId,\n params,\n reference\n } as RequestMessage<Params>)\n })\n }\n\n /**\n * private functions\n */\n\n private convertBytesToBase64(bytes: Uint8Array): string {\n return Buffer.from(bytes).toString('base64')\n }\n\n private convertBase64ToBytes(input: string): Uint8Array {\n return Buffer.from(input, 'base64')\n }\n\n /**\n * Calls the enable method on the provider that returns the authorized accounts.\n * @returns {Arc0027Account[]} the authorized accounts.\n * @throws {METHOD_CANCELED_ERROR} if the method was cancelled by the user.\n * @throws {METHOD_NOT_SUPPORTED_ERROR} if the method is not supported for the configured network.\n * @throws {METHOD_TIMED_OUT_ERROR} if the method timed out by lack of response.\n * @throws {NETWORK_NOT_SUPPORTED_ERROR} if the network is not supported for the configured network.\n * @throws {UNKNOWN_ERROR} if the response result was empty.\n */\n private async enable(): Promise<Arc0027Account[]> {\n const method = 'enable'\n\n debugLog(\n `${PROVIDER_ID.KIBISIS.toUpperCase()}#${\n this.refreshSupportedMethods.name\n }(): check if \"${method}\" is supported on \"${this.network}\"`\n )\n\n // check the method is supported\n this.validateMethod(method)\n\n const result = await KibisisClient.sendRequestWithTimeout<EnableParams, EnableResult>({\n method,\n params: {\n genesisHash: this.genesisHash,\n providerId: ARC_0027_PROVIDER_ID\n },\n reference: ARC_0027_ENABLE_REQUEST\n })\n\n // check for a result\n if (!result) {\n throw {\n code: UNKNOWN_ERROR,\n message: `received response, but \"${method}\" request details were empty for provider \"${PROVIDER_ID.KIBISIS.toUpperCase()}\"`,\n providerId: ARC_0027_PROVIDER_ID\n } as ResponseError\n }\n\n return result.accounts\n }\n\n /**\n * Convenience function that gets the provider information and updates the supported methods. This should be called\n * before interacting with the provider to ensure methods are supported.\n * @throws {METHOD_TIMED_OUT_ERROR} if the method timed out by lack of response.\n * @throws {NETWORK_NOT_SUPPORTED_ERROR} if the network is not supported for the configured network.\n * @throws {UNKNOWN_ERROR} if the response result was empty.\n */\n private async refreshSupportedMethods(): Promise<void> {\n const method = 'getProviders'\n\n debugLog(\n `${PROVIDER_ID.KIBISIS.toUpperCase()}#${\n this.refreshSupportedMethods.name\n }(): refreshing supported methods`\n )\n\n const result = await KibisisClient.sendRequestWithTimeout<\n GetProvidersParams,\n GetProvidersResult\n >({\n method,\n params: {\n providerId: ARC_0027_PROVIDER_ID\n },\n reference: ARC_0027_GET_PROVIDERS_REQUEST,\n timeout: LOWER_REQUEST_TIMEOUT\n })\n\n // check for a result\n if (!result) {\n throw {\n code: UNKNOWN_ERROR,\n message: `received response, but enable request details were empty for provider \"${PROVIDER_ID.KIBISIS.toUpperCase()}\"`,\n providerId: ARC_0027_PROVIDER_ID\n } as ResponseError\n }\n\n const networkConfiguration = result.networks.find(\n (value) => value.genesisHash === this.genesisHash\n )\n\n // check if the network is supported\n if (!networkConfiguration) {\n throw {\n code: NETWORK_NOT_SUPPORTED_ERROR,\n data: {\n genesisHash: this.genesisHash\n },\n message: `network \"${\n this.network\n }\" not supported on provider \"${PROVIDER_ID.KIBISIS.toUpperCase()}\"`,\n providerId: ARC_0027_PROVIDER_ID\n } as ResponseError<{ genesisHash: string }>\n }\n\n debugLog(\n `${PROVIDER_ID.KIBISIS.toUpperCase()}#${\n this.refreshSupportedMethods.name\n }(): methods [${networkConfiguration.methods.join(',')}] found for \"${this.network}\"`\n )\n\n // update the methods\n this.methods = networkConfiguration.methods\n }\n\n /**\n * Calls the signTxns methods to sign the supplied transactions.\n * @param {Arc0001SignTxns[]} txns - the unsigned or signed transactions as defined in ARC-0001.\n * @returns {(string | null)[]} the authorized accounts.\n * @throws {INVALID_INPUT_ERROR} if computed group ID for the txns does not match the assigned group ID.\n * @throws {INVALID_GROUP_ID_ERROR} if the unsigned txns is malformed or not conforming to ARC-0001.\n * @throws {METHOD_CANCELED_ERROR} if the method was cancelled by the user.\n * @throws {METHOD_NOT_SUPPORTED_ERROR} if the method is not supported for the configured network.\n * @throws {METHOD_TIMED_OUT_ERROR} if the method timed out by lack of response.\n * @throws {NETWORK_NOT_SUPPORTED_ERROR} if the network is not supported for the configured network.\n * @throws {UNAUTHORIZED_SIGNER_ERROR} if a signer in the request is not authorized by the provider.\n * @throws {UNKNOWN_ERROR} if the response result was empty.\n */\n private async signTxns(txns: Arc0001SignTxns[]): Promise<(string | null)[]> {\n const method = 'signTxns'\n\n debugLog(\n `${PROVIDER_ID.KIBISIS.toUpperCase()}#${\n this.signTransactions.name\n }(): check if \"${method}\" is supported on \"${this.network}\"`\n )\n\n // check the method is supported\n this.validateMethod(method)\n\n const result = await KibisisClient.sendRequestWithTimeout<SignTxnsParams, SignTxnsResult>({\n method,\n params: {\n providerId: ARC_0027_PROVIDER_ID,\n txns\n },\n reference: ARC_0027_SIGN_TXNS_REQUEST\n })\n\n // check for a result\n if (!result) {\n throw {\n code: UNKNOWN_ERROR,\n message: `received response, but \"${method}\" request details were empty for provider \"${PROVIDER_ID.KIBISIS.toUpperCase()}\"`,\n providerId: ARC_0027_PROVIDER_ID\n } as ResponseError\n }\n\n return result.stxns\n }\n\n /**\n * Validates whether a method is supported with the provider.\n * @param {ProviderMethods} method - the method to validate.\n * @throws {METHOD_NOT_SUPPORTED_ERROR} if the method is not supported for the configured network.\n */\n private validateMethod(method: ProviderMethods): void {\n if (!this.methods.includes(method)) {\n throw {\n code: METHOD_NOT_SUPPORTED_ERROR,\n data: {\n method\n },\n message: `\"${method}\" operation not supported on \"${\n this.network\n }\" for provider \"${PROVIDER_ID.KIBISIS.toUpperCase()}\"`,\n providerId: ARC_0027_PROVIDER_ID\n } as ResponseError<{ method: string }>\n }\n }\n\n /**\n * public functions\n */\n\n async connect(): Promise<Wallet> {\n await this.refreshSupportedMethods() // refresh the supported methods\n\n const accounts: Arc0027Account[] = await this.enable()\n\n return KibisisClient.mapAccountsToWallet(accounts)\n }\n\n // eslint-disable-next-line @typescript-eslint/require-await\n async disconnect(): Promise<void> {\n return\n }\n\n async reconnect(): Promise<Wallet | null> {\n return await this.connect()\n }\n\n async signTransactions(\n connectedAccounts: string[],\n transactions: Uint8Array[],\n indexesToSign?: number[],\n returnGroup = true\n ): Promise<Uint8Array[]> {\n await this.refreshSupportedMethods() // refresh the supported methods\n\n const txns: Arc0001SignTxns[] = await Promise.all(\n transactions.map<Promise<Arc0001SignTxns>>(async (value, index) => {\n const decodedTxn = this.algosdk.decodeObj(value) as\n | DecodedTransaction\n | DecodedSignedTransaction\n const isSigned = !!(decodedTxn as DecodedSignedTransaction).txn\n const sender = this.algosdk.encodeAddress(\n isSigned\n ? (decodedTxn as DecodedSignedTransaction).txn.snd\n : (decodedTxn as DecodedTransaction).snd\n )\n const accountInfo = await this.getAccountInfo(sender)\n const authAddr = accountInfo['auth-addr']\n const txn = this.convertBytesToBase64(\n this.algosdk.decodeUnsignedTransaction(value).toByte()\n )\n\n // if the transaction is signed, instruct the provider not to sign by providing an empty signers array\n if (isSigned) {\n return {\n txn: this.convertBytesToBase64(\n this.algosdk.decodeSignedTransaction(value).txn.toByte()\n ),\n signers: [],\n ...(authAddr && { authAddr })\n }\n }\n\n // if the sender is not authorized or the index has not been included in the to be signed indexes, instruct the provider not to sign by providing an empty signers array\n if (\n !connectedAccounts.includes(sender) ||\n (indexesToSign && !indexesToSign.includes(index))\n ) {\n return {\n txn,\n signers: [],\n ...(authAddr && { authAddr })\n }\n }\n\n // if the transaction is not signed, has been authorized and/or is in the index, instruct the provider not to sign\n return {\n txn,\n ...(authAddr && { authAddr })\n }\n })\n )\n const result = await this.signTxns(txns)\n\n // null values indicate transactions that were not signed by the provider, as defined in ARC-0001, see https://arc.algorand.foundation/ARCs/arc-0001#semantic-and-security-requirements\n return result.reduce<Uint8Array[]>((acc, value, index) => {\n if (value) {\n return [...acc, this.convertBase64ToBytes(value)]\n }\n\n // if the group wants to be returned, get the transaction from the input\n return returnGroup ? [...acc, transactions[index]] : acc\n }, [])\n }\n}\n\nexport default KibisisClient\n","import pera from './pera'\nimport daffi from './daffi'\nimport myalgo from './myalgo'\nimport defly from './defly'\nimport exodus from './exodus'\nimport algosigner from './algosigner'\nimport lute from './lute'\nimport walletconnect from './walletconnect2'\nimport magic from './magic'\nimport kmd from './kmd'\nimport mnemonic from './mnemonic'\nimport { CustomProvider } from './custom/types'\nimport custom from './custom'\nimport kibisis from './kibisis'\n\nexport {\n pera,\n myalgo,\n defly,\n exodus,\n algosigner,\n lute,\n walletconnect,\n kmd,\n mnemonic,\n custom,\n CustomProvider,\n kibisis,\n magic\n}\n\nexport default {\n [pera.metadata.id]: pera,\n [daffi.metadata.id]: daffi,\n [myalgo.metadata.id]: myalgo,\n [defly.metadata.id]: defly,\n [exodus.metadata.id]: exodus,\n [algosigner.metadata.id]: algosigner,\n [lute.metadata.id]: lute,\n [walletconnect.metadata.id]: walletconnect,\n [kmd.metadata.id]: kmd,\n [mnemonic.metadata.id]: mnemonic,\n [custom.metadata.id]: custom,\n [kibisis.metadata.id]: kibisis,\n [magic.metadata.id]: magic\n}\n","import type algosdk from 'algosdk'\nimport allClients from '../clients'\nimport {\n CommonInitParams,\n NodeConfig,\n ProviderConfig,\n ProviderConfigMapping,\n SupportedProviders\n} from '../types'\nimport {\n DEFAULT_NODE_BASEURL,\n DEFAULT_NODE_TOKEN,\n DEFAULT_NODE_PORT,\n DEFAULT_NETWORK\n} from '../constants'\nimport { debugLog, getProviderList } from './debugLog'\n\nexport const initializeProviders = async <T extends keyof ProviderConfigMapping>(\n providers: Array<T | ProviderConfig<T>>,\n nodeConfig?: NodeConfig,\n algosdkStatic?: typeof algosdk\n): Promise<SupportedProviders> => {\n if (typeof window === 'undefined') {\n debugLog('Window object is not available, skipping initialization')\n return {} as SupportedProviders\n }\n\n // Set all providers to null to preserve order\n const initializedProviders = providers.reduce((acc, provider) => {\n const providerId = typeof provider === 'string' ? provider : provider.id\n acc[providerId] = null\n return acc\n }, {} as SupportedProviders)\n\n const {\n network = DEFAULT_NETWORK,\n nodeServer = DEFAULT_NODE_BASEURL,\n nodePort = DEFAULT_NODE_PORT,\n nodeToken = DEFAULT_NODE_TOKEN\n } = nodeConfig || {}\n\n const initClient = async (provider: T | ProviderConfig<T>): Promise<void> => {\n const { id, ...providerConfig } = typeof provider === 'string' ? { id: provider } : provider\n\n const initParams: CommonInitParams = {\n network,\n algodOptions: [nodeToken, nodeServer, nodePort],\n algosdkStatic,\n ...providerConfig\n }\n\n const client = await allClients[id].init(initParams)\n initializedProviders[id] = client\n }\n\n debugLog('Initializing providers:', getProviderList(providers))\n\n const initPromises = providers.map((provider) => initClient(provider))\n await Promise.all(initPromises)\n\n return initializedProviders\n}\n","import { PROVIDER_ID } from '../constants'\nimport { useWalletStore } from '../store/index'\n\nexport const clearAccounts = (id: PROVIDER_ID) => {\n const { clearActiveAccount, removeAccounts } = useWalletStore.getState()\n\n clearActiveAccount(id)\n removeAccounts(id)\n}\n","import { PROVIDER_ID } from '../constants'\nimport { useWalletStore } from '../store'\n\nexport const getActiveProviders = () => {\n const accounts = useWalletStore.getState().accounts\n return [...new Set(accounts.map((acct) => acct.providerId))]\n}\n\nexport const isActiveProvider = (id: PROVIDER_ID) => {\n const activeProviders = getActiveProviders()\n return activeProviders.includes(id)\n}\n","import { clearAccounts } from './clearAccounts'\nimport { isActiveProvider } from './providers'\nimport type { SupportedProviders } from '../types/providers'\n\nexport const reconnectProviders = async (providers: SupportedProviders) => {\n try {\n const clients = Object.values(providers)\n\n for (const client of clients) {\n const id = client?.metadata.id\n\n // Only reconnect to active providers\n if (id && isActiveProvider(id)) {\n await client.reconnect(() => clearAccounts(id))\n }\n }\n } catch (e) {\n console.error(e)\n }\n}\n","export type NFDTransactionsArray = ['u' | 's', string][]\n\nexport function encodeNFDTransactionsArray(transactionsArray: NFDTransactionsArray) {\n return transactionsArray.map(([_type, txn]) => {\n return new Uint8Array(Buffer.from(txn, 'base64'))\n })\n}\n","import React, { createContext, useContext } from 'react'\nimport type { SupportedProviders } from '../types/providers'\n\nconst WalletContext = createContext<SupportedProviders | null>(null)\n\nexport const useWalletContext = (): SupportedProviders | null => {\n const context = useContext(WalletContext)\n if (context === undefined) {\n throw new Error('useWallet must be used within the WalletProvider')\n }\n return context\n}\n\nexport interface WalletProviderProps {\n children: React.ReactNode\n value: SupportedProviders | null\n}\n\nexport const WalletProvider = ({ children, value }: WalletProviderProps) => {\n return <WalletContext.Provider value={value}>{children}</WalletContext.Provider>\n}\n","function shallow(objA, objB) {\n if (Object.is(objA, objB)) {\n return true;\n }\n if (typeof objA !== \"object\" || objA === null || typeof objB !== \"object\" || objB === null) {\n return false;\n }\n if (objA instanceof Map && objB instanceof Map) {\n if (objA.size !== objB.size)\n return false;\n for (const [key, value] of objA) {\n if (!Object.is(value, objB.get(key))) {\n return false;\n }\n }\n return true;\n }\n if (objA instanceof Set && objB instanceof Set) {\n if (objA.size !== objB.size)\n return false;\n for (const value of objA) {\n if (!objB.has(value)) {\n return false;\n }\n }\n return true;\n }\n const keysA = Object.keys(objA);\n if (keysA.length !== Object.keys(objB).length) {\n return false;\n }\n for (let i = 0; i < keysA.length; i++) {\n if (!Object.prototype.hasOwnProperty.call(objB, keysA[i]) || !Object.is(objA[keysA[i]], objB[keysA[i]])) {\n return false;\n }\n }\n return true;\n}\nvar shallow$1 = (objA, objB) => {\n if ((import.meta.env ? import.meta.env.MODE : void 0) !== \"production\") {\n console.warn(\n \"[DEPRECATED] Default export is deprecated. Instead use `import { shallow } from 'zustand/shallow'`.\"\n );\n }\n return shallow(objA, objB);\n};\n\nexport { shallow$1 as default, shallow };\n","import { useState, useMemo, useEffect } from 'react'\nimport type algosdk from 'algosdk'\nimport { getAlgosdk } from '../algod'\nimport { useHydratedWalletStore, walletStoreSelector } from '../store/index'\nimport { TransactionsArray, WalletClient, Provider } from '../types'\nimport { PROVIDER_ID } from '../constants'\nimport { useWalletContext } from '../context/WalletContext'\nimport allClients from '../clients'\nimport { clearAccounts } from '../utils/clearAccounts'\nimport { shallow } from 'zustand/shallow'\n\nexport default function useWallet() {\n const [providers, setProviders] = useState<Provider[] | null>(null)\n const clients = useWalletContext()\n\n const {\n activeAccount,\n accounts: connectedAccounts,\n setActiveAccount: _setActiveAccount,\n addAccounts\n } = useHydratedWalletStore(walletStoreSelector, shallow)\n\n const getAccountsByProvider = (id: PROVIDER_ID) => {\n return connectedAccounts.filter((account) => account.providerId === id)\n }\n\n const connectedActiveAccounts = useMemo(\n () => connectedAccounts.filter((account) => account.providerId === activeAccount?.providerId),\n [connectedAccounts, activeAccount]\n )\n\n useEffect(() => {\n if (!clients) {\n setProviders(null)\n return\n }\n\n const supportedClients = Object.keys(clients) as PROVIDER_ID[]\n setProviders(\n supportedClients\n // Remove any clients that didn't initialise\n .filter((id) => !!clients?.[id])\n .map((id) => {\n return {\n ...allClients[id],\n // Override static details with any instance details\n ...clients[id],\n accounts: getAccountsByProvider(id),\n isActive: activeAccount?.providerId === id,\n isConnected: connectedAccounts.some((accounts) => accounts.providerId === id),\n connect: (arg) => connect(id, arg),\n disconnect: () => disconnect(id),\n reconnect: () => reconnect(id),\n setActiveProvider: () => setActive(id),\n setActiveAccount: (account: string) => selectActiveAccount(id, account)\n }\n })\n )\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [clients, connectedAccounts, connectedActiveAccounts, activeAccount])\n\n const getClient = (id?: PROVIDER_ID): WalletClient => {\n if (!id) throw new Error('Provider ID is missing.')\n\n const walletClient = clients?.[id]\n\n if (!walletClient) throw new Error(`Client not found for ID: ${id}`)\n\n return walletClient\n }\n\n const status = useMemo(() => {\n if (activeAccount === undefined) {\n return 'initializing'\n }\n\n if (activeAccount === null && connectedAccounts.length) {\n return 'connected'\n }\n\n if (activeAccount === null && !connectedAccounts.length) {\n return 'disconnected'\n }\n\n if (activeAccount && activeAccount.address) {\n return 'active'\n }\n\n return 'error'\n }, [activeAccount, connectedAccounts.length])\n\n const isActive = useMemo(() => {\n return status === 'active'\n }, [status])\n\n const isReady = useMemo(() => {\n return status !== 'initializing'\n }, [status])\n\n const selectActiveAccount = (providerId: PROVIDER_ID, address: string) => {\n try {\n const account = connectedActiveAccounts.find(\n (acct) => acct.address === address && acct.providerId === providerId\n )\n\n if (!account) {\n throw new Error(`No accounts with address ${address} found.`)\n }\n\n _setActiveAccount(account)\n } catch (e) {\n console.error(e)\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const connect = async (id: PROVIDER_ID, arg?: any) => {\n try {\n const walletClient = getClient(id)\n const walletInfo = await walletClient?.connect(() => clearAccounts(id), arg)\n\n _setActiveAccount(walletInfo.accounts[0])\n addAccounts(walletInfo.accounts)\n } catch (e) {\n console.error(e)\n }\n }\n\n const reconnect = async (id: PROVIDER_ID) => {\n try {\n const walletClient = getClient(id)\n const walletInfo = await walletClient?.reconnect(() => clearAccounts(id))\n\n if (walletInfo && walletInfo.accounts.length) {\n addAccounts(walletInfo.accounts)\n }\n } catch (e) {\n console.error(e)\n await disconnect(id)\n }\n }\n\n const disconnect = async (id: PROVIDER_ID) => {\n try {\n const walletClient = getClient(id)\n\n await walletClient?.disconnect()\n } catch (e) {\n console.error(e)\n } finally {\n clearAccounts(id)\n }\n }\n\n const setActive = (id: PROVIDER_ID) => {\n try {\n const accounts = getAccountsByProvider(id)\n _setActiveAccount(accounts[0])\n } catch (e) {\n console.error(e)\n }\n }\n\n const signTransactions = async (\n transactions: Uint8Array[] | Uint8Array[][],\n indexesToSign?: number[],\n returnGroup = true\n ) => {\n const walletClient = getClient(activeAccount?.providerId)\n\n if (!walletClient || !activeAccount?.address) {\n throw new Error('No wallet found.')\n }\n\n const signedTransactions = await walletClient.signTransactions(\n connectedActiveAccounts.map((acct) => acct.address),\n transactions,\n indexesToSign,\n returnGroup\n )\n\n return signedTransactions\n }\n\n const sendTransactions = async (transactions: Uint8Array[], waitRoundsToConfirm?: number) => {\n const walletClient = getClient(activeAccount?.providerId)\n\n const result = await walletClient?.sendRawTransactions(transactions, waitRoundsToConfirm)\n\n return result\n }\n\n const signer: algosdk.TransactionSigner = async (\n txnGroup: algosdk.Transaction[],\n indexesToSign: number[]\n ) => {\n const algosdk = await getAlgosdk()\n const txnBlobs: Array<Uint8Array> = txnGroup.map(algosdk.encodeUnsignedTransaction)\n\n return await Promise.resolve(signTransactions(txnBlobs, indexesToSign, false))\n }\n\n const getAccountInfo = async () => {\n if (!activeAccount) throw new Error('No selected account.')\n\n const walletClient = getClient(activeAccount.providerId)\n\n const accountInfo = await walletClient?.getAccountInfo(activeAccount.address)\n\n return accountInfo\n }\n\n const getAddress = () => {\n return activeAccount?.address\n }\n\n const getAssets = async () => {\n if (!activeAccount) throw new Error('No selected account.')\n\n const walletClient = getClient(activeAccount.providerId)\n\n return await walletClient?.getAssets(activeAccount.address)\n }\n\n const groupTransactionsBySender = (transactions: TransactionsArray) => {\n const walletClient = getClient(activeAccount?.providerId)\n\n return walletClient?.groupTransactionsBySender(transactions)\n }\n\n return {\n clients,\n providers,\n connectedAccounts,\n connectedActiveAccounts,\n activeAccount,\n activeAddress: activeAccount?.address,\n status,\n isActive,\n isReady,\n signer,\n signTransactions,\n sendTransactions,\n getAddress,\n groupTransactionsBySender,\n getAccountInfo,\n getAssets\n }\n}\n","import { useState, useEffect } from 'react'\nimport { initializeProviders, reconnectProviders } from '../utils'\nimport { useDebugStore } from '../store'\nimport type algosdk from 'algosdk'\nimport type {\n NodeConfig,\n ProviderConfigMapping,\n ProvidersArray,\n SupportedProviders\n} from '../types/providers'\n\ninterface InitializeProvidersOptions {\n providers: ProvidersArray\n nodeConfig?: NodeConfig\n algosdkStatic?: typeof algosdk\n debug?: boolean\n}\n\nexport default function useInitializeProviders({\n providers,\n nodeConfig,\n algosdkStatic,\n debug = false\n}: InitializeProvidersOptions) {\n // Enable debug mode\n const { setDebug } = useDebugStore()\n useEffect(() => setDebug(debug), [debug, setDebug])\n\n // Initialize providers\n const [walletProviders, setWalletProviders] = useState<SupportedProviders | null>(null)\n\n useEffect(() => {\n async function initializeAndConnect() {\n try {\n // Initialize with provided configuration\n const initializedProviders = await initializeProviders<keyof ProviderConfigMapping>(\n providers,\n nodeConfig,\n algosdkStatic\n )\n\n setWalletProviders(initializedProviders)\n\n // Reconnect the session when the user returns to the app\n await reconnectProviders(initializedProviders)\n } catch (error) {\n console.error('Error initializing wallet providers:', error)\n }\n }\n\n void initializeAndConnect()\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [])\n\n return walletProviders\n}\n"],"names":["PROVIDER_ID","produce","shimModule","require$$0","require$$1","withSelectorModule","useDebugValue","useState","useEffect","ICON","Buffer","pera","daffi","myalgo","defly","exodus","algosigner","lute","walletconnect","kmd","mnemonic","custom","kibisis","magic","createContext","useContext","React","useMemo"],"mappings":"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AC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CA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,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,OAAO,CAAC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","x_google_ignoreList":[4,5,6,7,8,9,10,11,12,13,14,54]}
1
+ {"version":3,"file":"index.js","sources":["../../src/constants/constants.ts","../../src/algod/index.ts","../../src/media/audio.ts","../../src/clients/base/base.ts","../../node_modules/immer/dist/immer.esm.mjs","../../node_modules/zustand/esm/middleware/immer.mjs","../../node_modules/zustand/esm/vanilla.mjs","../../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.js","../../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js","../../node_modules/use-sync-external-store/shim/index.js","../../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.js","../../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js","../../node_modules/use-sync-external-store/shim/with-selector.js","../../node_modules/zustand/esm/index.mjs","../../node_modules/zustand/esm/middleware.mjs","../../src/store/state/walletStore.ts","../../src/store/state/debugStore.ts","../../src/utils/debugLog.ts","../../src/clients/pera/constants.ts","../../src/clients/pera/client.ts","../../src/clients/daffi/constants.ts","../../src/clients/daffi/client.ts","../../src/clients/myalgo/constants.ts","../../src/clients/myalgo/client.ts","../../src/clients/defly/constants.ts","../../src/clients/defly/client.ts","../../src/clients/exodus/constants.ts","../../src/clients/exodus/client.ts","../../src/clients/algosigner/constants.ts","../../src/clients/algosigner/client.ts","../../src/utils/svgToBase64.ts","../../src/clients/lute/constants.ts","../../src/clients/lute/client.ts","../../src/utils/types.ts","../../src/clients/walletconnect2/constants.ts","../../src/clients/walletconnect2/utils.ts","../../src/clients/walletconnect2/client.ts","../../src/clients/magic/constants.ts","../../src/clients/magic/client.ts","../../src/clients/kmd/constants.ts","../../src/clients/kmd/client.ts","../../src/clients/mnemonic/constants.ts","../../src/clients/mnemonic/client.ts","../../src/clients/custom/constants.ts","../../src/clients/custom/client.ts","../../src/clients/kibisis/constants.ts","../../src/clients/kibisis/utils.ts","../../src/clients/kibisis/client.ts","../../src/clients/index.ts","../../src/utils/initializeProviders.ts","../../src/utils/clearAccounts.ts","../../src/utils/providers.ts","../../src/utils/reconnectProviders.ts","../../src/utils/encodeNFDTransactionsArray.ts","../../src/context/WalletContext.tsx","../../node_modules/zustand/esm/shallow.mjs","../../src/hooks/useWallet.ts","../../src/hooks/useInitializeProviders.ts"],"sourcesContent":["import { Network } from '../types/node'\n\nexport enum PROVIDER_ID {\n KMD = 'kmd',\n CUSTOM = 'custom',\n PERA = 'pera',\n DAFFI = 'daffi',\n LUTE = 'lute',\n MYALGO = 'myalgo',\n ALGOSIGNER = 'algosigner',\n DEFLY = 'defly',\n EXODUS = 'exodus',\n KIBISIS = 'kibisis',\n WALLETCONNECT = 'walletconnect',\n MNEMONIC = 'mnemonic',\n MAGIC = 'magic'\n}\n\nexport const DEFAULT_NETWORK: Network = 'mainnet'\n\nexport const DEFAULT_NODE_BASEURL = 'https://mainnet-api.algonode.cloud'\n\nexport const DEFAULT_NODE_TOKEN = ''\n\nexport const DEFAULT_NODE_PORT = ''\n","import type _algosdk from 'algosdk'\nimport type { AlgodClientOptions } from '../types'\nimport { DEFAULT_NODE_BASEURL, DEFAULT_NODE_TOKEN, DEFAULT_NODE_PORT } from '../constants'\n\nexport const getAlgosdk = async () => {\n return (await import('algosdk')).default\n}\n\nexport const getAlgodClient = (\n algosdk: typeof _algosdk,\n algodClientOptions?: AlgodClientOptions\n) => {\n const [\n tokenOrBaseClient = DEFAULT_NODE_TOKEN,\n baseServer = DEFAULT_NODE_BASEURL,\n port = DEFAULT_NODE_PORT,\n headers\n ] = algodClientOptions || []\n\n return new algosdk.Algodv2(tokenOrBaseClient, baseServer, port, headers)\n}\n\nexport default class Algod {\n algosdk: typeof _algosdk\n algodClient: _algosdk.Algodv2\n\n constructor(algosdk: typeof _algosdk, algodClient: _algosdk.Algodv2) {\n this.algosdk = algosdk\n this.algodClient = algodClient\n }\n\n static async init(algodOptions?: AlgodClientOptions) {\n const algosdk = await getAlgosdk()\n const algodClient = getAlgodClient(algosdk, algodOptions)\n\n return new Algod(algosdk, algodClient)\n }\n}\n","export const audio =\n 'data:audio/mp3;base64,SUQzBAAAAAIYBlRJVDIAAAAWAAAAMTAgU2Vjb25kcyBvZiBTaWxlbmNlVFBFMQAAABIAAABBbmFyIFNvZnR3YXJlIExMQ1RBTEIAAAAMAAAAQmxhbmsgQXVkaW9BUElDAAIPAgAAAGltYWdlL2pwZWcAAwCJUE5HDQoaCgAAAA1JSERSAAAEOAAABDgIBgAAAOwQbI8AAAAGYktHRAD/AP8A/6C9p5MAAAAJcEhZcwAACD0AAAg9AQWVVbYAAAAHdElNRQffCgsFHDEDbwR2AAAgAElEQVR42uzde5RVZd0H8N8wDDcBAS8o6oCJVyxTsDSxojJvgVYq3jVNUQgzaZWmpqh56+ItNa+kr4Cay9Q0DQ1DWb2WeSm8pGRy0RAEgRFhuIzz/tFbC5yZc86eOWfmPDOfz1rvemvvZz9779+zz3DOt2fvXRER9QEAAACQsE5KAAAAAKROwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8BBq9pss81i4sSJMXToUMUAAACgaCoiol4ZaA177rln3HzzzdG/f/+oqamJww8/PGbNmqUwAAAAtJgZHLSKk046Ke67777o379/RET07t07pk6dGtXV1YoDAABAi5nBQcmde+65MW7cuEbXvfjii3HIIYfE2rVrFQoAAIBmq4yIC5WBUqioqIgf/ehHceqppzbZZosttohevXrFk08+qWAAAAA0/zdomMFBCVRWVsZPfvKTGD16dEHtjzrqqJgxY4bCAQAA0CwCDoquU6dOccMNN8SoUaMK3mbOnDkxYsSIWL16tQICAACQmVtUKLoLL7wwjj766Ezb9OnTJz788MP44x//qIAAAABkZgYHRXXyySfHxRdf3Kxt16xZEyNGjIg333xTIQEAAMjEa2Ipmv333z8mTpzY7O27dOnSou0BAADouMzgoCh23333uO+++6J79+4t7utLX/pSvPLKK4oKAABAwczgoMW22mqruOOOO4oSbkREjBs3TlEBAADIxAwOWqRTp05x3333xV577VW0Puvq6uIzn/lMzJ8/X4EBAAAo7PepEtASp59+elHDjYiIysrKOO200xQXAACAgpnBQbPtuuuu8cgjj0RVVVXR+66trY0999wzlixZotAAAADkZQYHzdKtW7e4/vrrSxJu/Kf/r3/96woNAABAQQQcNMv5558f22+/fUn3MWrUKIUGAACgIAIOMvvCF74Q3/jGN0q+nz322COqq6sVHAAAgLwEHGRSVVUVl156adH7Xbp0aaPLzeIAAACgEAIOMjn22GOLPqvimWeeic997nOxaNGiBusOOeQQRQcAACAvAQcF69GjR5x55plF7fOhhx6KI488MhYvXhxTp05tsH7IkCGx3XbbKT4AAAA5CTgo2De/+c3YbLPNitbfM888E+PGjYs1a9ZERMTkyZOjvr7hW4vN4gAAACAfAQcF6dOnT4wdO7Zo/S1dujTGjh0bdXV1/1321ltvxaxZsxq0HTFihAEAAAAgJwEHBfnWt74VvXv3Llp/Z555ZrzzzjsNlj/++OMNln3iE5+Irl27GgQAAACaJOAgr/79+8dJJ51UtP5uu+22RoOMiIhp06Y1WFZVVRWf+MQnDAQAAABNEnCQ19ixY6Nbt25F6evdd9+Nyy+/vMn1s2bNanRmx5577mkgAAAAaJKAg9wXSKdOMWrUqKL199Of/jQ++OCDnG0am90h4AAAACDn71clIJe99tor+vfvX5S+3njjjZgyZUredo0FHMOGDTMYAAAANEnAQU4jR44sWl8/+tGPYt26dXnbPf3007Fq1aoNlm2yySax7bbbGhAAAAAaJeCgSZWVlXHwwQcXpa9nn302HnvssYLarl69Ol588cUGyz/1qU8ZFAAAABol4KBJe++9d2y66aZF6euiiy7K1P6VV15psGyPPfYwKAAAADRKwEGTDjnkkKL088gjj8Rzzz2XaZuXX365wbKBAwcaFAAAABol4KBRnTt3joMOOqjF/axbty4uvfTSzNs1NoNjq622MjAAAAA0SsBBo/bZZ5/o27dvi/v5n//5n3jzzTczb/faa69FfX39BssGDBhgYAAAAGiUgINGFeOBnitWrIirrrqqWduuXr063n///Q2Wde/evSihCwAAAO2PgING7brrri3u46abborFixc3e/ulS5c2WOY2FQAAABoj4KBRQ4YMadH2a9eujV/+8pct6mPZsmUNlrlNBQAAgMYIOGigT58+LQ4SHnrooViyZEmL+mgs4DCDAwAAgMYIOGhg8ODBLe6jpbM3IiI++OCDBssEHAAAADRGwEED/fr1a9H2s2bNiueee67Fx9HYA0UFHAAAADRGwEEDLX1TyaRJk4pyHJtvvnmDZZ7BAQAAQGMEHDTQkhkcy5YtiwceeKAox7HZZps1WNazZ08DBAAAQAMCDhro06dPs7e9++67o7a2tsXH0KVLl+jdu3eD5Z07dzZAAAAANCDgoIHKyspmbVdfXx933nlnUY5hu+22K+qxAQAA0L4JOGhg5cqVzdpu+vTpMWfOnKIcw/7779/ocgEHAAAAjRFw0EBzA45ivBr2Pw488MBGl7tFBQAAgMYIOGjggw8+yLzN3Llz48knnyzK/rfaaqv4+Mc/3ug6AQcAAACNEXDQQHNmcEyePDk+/PDDouz/oIMOanKdW1QAAABojICDBpoTcDz22GNF2XePHj1i7NixTa4XcAAAANAYAQcNZL1FZc6cOfGPf/yjKPseP3589O/fv8n1Ag4AAAAaI+CggawzOKZNm1aU/W699dZx2mmn5WzjGRwAAAA0RsBBA1lncDz++ONF2e95550XXbt2zdmmWM/5AAAAoH0RcNBAlhkcNTU18ac//anF+9xzzz1j1KhRedstWrTIAAEAANCAgIMG3nnnnaivry+o7fTp02PdunUt2l9FRUVMnDixoLb/+te/DBAAAAANCDhoYPXq1bFw4cKC2hbj+RuHHXZYfPKTnyyo7YIFCwwQAAAADQg4aNScOXPytlm3bl1Mnz69Rfvp0aNH/OAHPyi4vYADAACAxgg4aNTcuXPztvnzn/8cNTU1LdrPuHHjcr4W9qMEHAAAADRGwEGjCgk4Xn/99RbtY6uttorTTz890zaewQEAAEBjBBw0qpBbVJYvX96ifVx55ZXRrVu3TNuYwQEAAEBjBBw0at68eXnbtCTgOO6442LEiBGZtxNwAAAA0JjOSkBjCpnBsWzZsmb1PXDgwLjgggsyb7dmzZp47733DA4AANCqKioqmr0sa9tCt1+3bl18+OGHBmc9Ao717LTTTrHjjju2yoVbqu1b+mFaf3ltbW3OW0h233336Ny5c6Z9VVRUxJgxY6JHjx6Zx2fBggVx4oknluRcy2Vcy+EPain2laVdSuea0nWVyjXoXNvn562tx6pcz7UUY9Xevos4V99FfBfxXaRcPgPl6OSTT45HH33UD/n1xzQi6pXh3yZMmBATJkxQCAAAAMraKaecEo888ohCrMcMjiJZvHhxo7ds1Nc3nh9lWZ61j6Zk7bu6ujp69+7dZH8LFiyIxYsXF3yM3bp1ix122KHZSens2bPj/fffb9b5t8U4pDDG5VyTVMcy6z6LcZ4pjHG51NvnNYyxz6ux7EDfF4yxsWwP36E68vf7Aw44IMaNG9fk+k6dPFJTwFEi1113Xdxyyy3t6py+973vxZlnntnk+nvvvTeuuOKKgvqqqqqK3/72t80ON9asWRNf/vKXY/Xq1S42AACg3dtpp51yrk/9FptSEPnQpL/97W851/fp06fgvs4666wYMmRIs4/lL3/5i3ADAADoMPI9QNQMjkZqogQ0ZdasWTnX9+3bt6B+9thjj/jWt77VomP54x//aEAAAIAOQ8CRnYrQpLfffjvna1kLmcHRrVu3uPbaa6OysrJFxzJz5kwDAgAAdBj5ntch4GikJkpALrlmcVRXV+fd/rzzzouPfexjLTqGVatWxQsvvGAwAACADsMMjuxUhJxyPYejuro6unbt2uT64cOHxze+8Y0WH8PMmTNj7dq1BgMAAOgw8s3g8JDRhgQc5JQr4OjUqVOTszM22WSTuOaaa4ryobvzzjsNBAAA0KHkm8HR0scAtEcCDnLK96DR7bffvtEP2o033hhbbrlli/c/Z86cmD59uoEAAAA6FLeoZKci5DRv3rxYvnx5k+sbCzjOOeecGD58eFH2f8cdd+SdmgUAANDeeMhodipCXrlmcXw04Dj44INj7NixRdnvqlWrYurUqQYAAADocMzgyE5FyCvXczjWDzgGDx4cV111VdH2e//990dNTY0BAAAAOpx8AYeHjDbUWQnIJ1fAsd1220VlZWV07949br/99ujZs2fR9jtp0iTFBwAAOiQzOLJTEfLKFXB06dIlqqur46qrrorBgwcXbZ9/+tOf4pVXXlF8AACgQxJwZKci5DV37tyct4pcfvnlcfDBBxd1nzfeeKPCAwAAHZaHjGanIhT0wXrppZeaXL/vvvsWdX9PPfVUTJs2TeEBAIAO/Tss5495AUfDmigBhch1m0oxrVu3Ls4//3wFBwAAOjS3qGSnIhQk16tii+n222+P2bNnKzgAANChCTiyUxEK0hozOBYvXhw/+9nPFBsAAOjwBBzZqQgFefPNN2PFihUl3cell16a82GmAAAAHYWAIzsVoeAP18svv1yy/l988cW45557FBoAACA8ZLQ5VISCvfLKKyX74J533nl5P8AAAAAdRb4ZHBUVFYr0EQIOCjJkyJA47LDDStL3TTfdFM8//7wiAwAA/D+3qGSnIuQ1aNCgmDJlSvTq1avofb/44otx2WWXKTIAAMB6BBzZqQg59e/fP+65557YbLPNit73+++/H6effnqsXbtWoQEAANYj4MhORWjSxhtvHFOnTo1tttmmJP1/73vfi7lz5yo0AABA1h/zAo6GNVECGtO9e/e46667YqeddipJ/1OnTo0HH3xQoQEAABphBkd2KkIDVVVVceutt8bQoUNL0v/rr78e5513nkIDAAA0QcCRnYqwgYqKirjmmmtixIgRJel/9erVcdppp8WqVasUGwAAoAkCjuxUhA1ccsklceihh5as/3PPPTf+/ve/KzQAAEAOAo7sOisBEf+euXHppZfGCSecULJ93HjjjTFlyhTFBgAAyCNfwFFRUaFIHyHgIDp16hQ//elPY/To0SXbxyOPPBKXXHKJYgMAABSgvr4+7+84NiTg6OgXQOfOce2115b0tpTnn38+xo8fn/cDCgAAwL+5RaUZv2+VoOOqqqqKG2+8MQ466KCS7WPevHlx4oknRm1trYIDAABlpbHbPJq69aNYywtt27lz7p/rAo6GBBxFMmzYsFi9enWbfwgKXV5VVRWjR4+OHXbYoWQ1qa2tjYcffjgOP/zwZp9j1vMs5R+jch3LcqxJKc+znGpVLv9QpjrGqX5e29sY+7waS2NsjP0b4zthR/hO2B4JOAQcJTNy5MgYOXKkQqynW7duMXbsWIUAAAAoMgFHQwKOIlm8eHEsW7aswfLGnjvR1LMoWtq2Keu3raioiIEDB0aPHj1KWo958+bF0qVLS16HLLVpzbEo13Mrh/PNcm6pjaVza/3jNZbOrb2dm3/v2te5+Qym9z3FZ9C5ldP3lL59+8a9994r4BBwtL7rrrsubrnllrI+xt69e8eUKVNKHm5ERBx88MGxZMkSFwYAAEAzbLLJJjnXCzgaqYkSdAz9+vWL++67L/bYY49W2V9r7QcAAKA98haV7FSkA+jdu3fce++9seuuu7baPocPH67wAAAAzSTgyE5F2rlu3brFHXfcEbvsskur7lfAAQAA0Hz5ni3Skd4YUygBRzvWuXPnuOmmm+LTn/50q+97p512ik033dQgAAAANIMZHNmpSDtVUVERP/vZz2K//fZrs/2bxQEAANA8Ao7sVKSduvDCC+Owww4r6T5mzpwZNTU1Ta7fd999DQQAAEAzCDiyU5F2aPz48XHKKaeUdB/PPfdcnHjiifHXv/61yTYCDgAAgObJF3BUVlYq0kcIONqZL37xi3H22WeXdB+vvvpqHHvssbFy5cp4/vnnm2y39dZbx6BBgwwKAABARh4ymp2Aox0ZOHBg/PznPy/phT537tw4+uijY/ny5RER8cILL+Rs7zkcAAAA2blFJTsVaSe6desWt956a2y88cYl28eiRYviqKOOioULF/53Wb6Aw20qAAAA2Qk4slORduLyyy+PIUOGlKz/mpqaOOqoo2LOnDkbLH/33XfjrbfeanK7ffbZx9QpAACAjPLdoiLgaKQmSpC+448/Po444oiS9V9bWxvHH398vPrqq42uzzWLo1+/fiUNXgAAANqrXLM4BByN1EQJ0rbHHnvExRdfXLL+161bF6eeemr8+c9/brKN21QAAACKL1fAYaZ8QwKOhHXp0iWuvfbaqKqqKkn/9fX1ceaZZ8YTTzyRs12uN6lEeNAoAABAc3+TNflj3gyOhjVRgnSNHz8+Pvaxj5Ws/x/+8Idx//335203a9asWLduXZPr99prr5KFMAAAAO1VXV1d0z/mBRwNa6IEadp2221j/PjxJev/5z//edx2220FtV21alW89tprTa7v3r17DB061KABAABkkOsWlcrKSgX6CAFHoq644oro0qVLSfr+/e9/H5dffnmmbfLdpuI5HAAAANl4Bkc2nZUgPV/72tdK9lyLN998M8aNG5f3ncsf9fzzz8dxxx3X5Prhw4fHj3/844iI2GSTTWLPPfeMXXbZJfr16xd9+/bd4P/36dMnVq5cGUuWLInFixfH4sWL//uf586dGzNmzIhly5a5EAAAgHbNW1SyEXAkpnfv3nHhhReWpO8PPvggvvGNb0RNTU3mbV988cWc63fbbbf42c9+Fp/61KcKem5Iz549Y/PNN290XV1dXTz77LPx+OOPx7Rp0+KNN95wYQAAAO2Oh4xmI+BIzLnnnhubbrppST44Z5xxRrz++uvN2n727NmxYsWK6NmzZ6Pru3TpEkceeWRRjrWysjL22muv2GuvveL888+PN998Mx577LG4+eabY+HChS4SAACgXTCDIxsVScigQYPimGOOKUnf11xzTTz66KMt+uDlm8VRKttuu22cfvrpMXPmzBg/fnzJnk0CAADQmgQc2ahIQk455ZSSXMRPPPFE/OQnP2n29hUVFXHEEUfE4MGD27Q+G220UZxzzjkxY8aMOPDAA10wAABA0gQc2ahIIjbeeOMYPXp00ft9880341vf+lbmh4r+xy677BIPPvhgXH311bHFFluURa0GDhwYt912W9x7772x8847u3gAAIAkeYtKNgKORBx33HHRo0ePon9YzjjjjGY9VLRXr15x8cUXx+9+97sYNmxYWdZs+PDh8dhjj8URRxzhAgIAAJLjIaPZqEgCqqqq4uSTTy56vzfffHM899xzmbf76le/Gk8//XScfPLJUVlZWfa1u/rqq2PChAkuJAAAICluUclGRRJwyCGHRP/+/Yva5z//+c+48sorM21TWVkZl156aVx//fVNvsK1XE2YMCGuuuqqqKqqckEBAABJyBVwlPv/2NwWBBwJGDNmTNE/JN/5zneitra24G169+4dd911V5x44onJ1nH06NFx1113Ra9evVxUAABA2fMMjmwEHGVu+PDhMWTIkKL2efvtt8ezzz5bcPuBAwfGb37zm/jc5z6XfD333XffeOCBB4o+IwYAAKDY3KKSjYqUua9+9atF7W/OnDlx2WWXFdz+05/+dDzyyCOx/fbbt5ua7rzzzvHLX/4yunXr5gIDAADKloeMZtNZCcpbsWdNfPe7341Vq1YV1PaTn/xkTJ06tV0GAbvttltcddVVcfrpp7vIAICSa2oqeTGWZ52mXoy+2+J8inGe5XTcxTjPFI67PV2zbTGWuZ4hKOAQcJTMgQceGNtss01RPwQbb7xxDBgwoGjHOH/+/Bg1alSMGjUq77H07NkzDjjggHY9y+GQQw6JwYMHx9///vd2/Y9WOf3x949W+/likuoXLWNsjP0w8m9MW/2NACg2AUcjf5cjojspCGQAACAASURBVF4Z/m3ChAleJwoAAEDZW7hwYey+++4KsR4zOIrk1Vdfjblz5zZY3tg9U03dR/XR5cOGDSvawzDnz58fL7zwQt5jiPj3cze22GKLDjN2a9eujccffzyWLVtWlHErZdumlOIYWvt8s9SgXMfHuXXMczOWzs25Ff/flfb8GfT3xbm5Tp1blrZPPPFEbLfddo22N4NDwFEyd999d9xyyy1F66+qqipeeeWVov2AP/zww2PevHl5206cOLFDhRv/qfWuu+4aX/jCF2LlypUuZgAAoCzU1dU1uU7A0UhNlKA8DR06NDbaaKOi9HXXXXcVFG7svffeccopp3TIeldXV8cZZ5zhwgMAAMpGrtfEVlZWKtBHCDjK1Gc/+9mi9LNy5cq4+uqr818InTrFxIkTO3TNTzvttBg0aJCLDwAAKAteE5uNipSpYr0e9t5774133303b7vRo0fHrrvu2qFr3qVLlw4f8gAAAOUj1wwOb3JqSMBRpnbaaaei9DN58uS8bXr27Blnn322okfEfvvtF1/84hcVAgAAaHO5Ag4zOBqpiRKUn169ekX37t1b3M9f//rXePnll/O2+/a3vx2bbbaZwv+/iy66KKqqqhQCAABoUwKObFSkDG2++eZF6WfKlCl522y55ZYd9sGiTdl2223j1FNPVQgAAKBNCTiy8ZrYMtS/f/8W97Fy5cr49a9/nbfdqFGjokuXLm1ynq+++mrceuutUV1dHQMHDozq6uqorq6OTTfdtM3HYMyYMXHzzTfH2rVrXZAAAECbEHBkI+AoQ8W4XeShhx6KFStW5G138MEHF/346+rq4sknn4y+ffvG0KFDm2zXp0+fmDp1aoPlgwYNimOOOSZGjx7dZmHHpptuGgcccED85je/cUECAABtItdbVDxktCGRTxkqxgyOQn6Y9+/fP2cAkdW8efPiyiuvjD333DOOP/74eOyxx3K233LLLaNnz54Nls+ZMyd+9KMfxdChQ+PUU0+Np556KucHu1SOO+44FyMAANBmzODIRkXKUEufwbF27dp45pln8rY76KCDipL6zZo1K4488sjYe++94+qrr4533nknIiJef/31vNvusMMOOc/j4YcfjiOPPDI+85nPxOOPP96q47DPPvvEoEGDXJAAAECbEHBkoyJlqKUBx1/+8pdYtWpV3nYHHnhgi/ZTU1MT5557bhx00EGNzrJ47bXX8vax/fbbF7SvuXPnxoknnhgTJ05stediVFRUxLHHHuuCBAAA2kSugCNCyNGgHkpQflp6i8rTTz+dt02/fv1i7733bvY+fv/738dnP/vZmDRpUtTV1TXaZv78+bFy5cqc/eSawfFR9fX1cdNNN8UhhxwS8+bNa5WxGD16tFfGAgAAbULAkY1qlKGWzuAoJODYb7/9orKysln9X3vttXHCCSfEokWLcrarr6+P2bNn52yTJeD4jxdffDG+/OUvt8oDQDfZZJM44IADXJQAAECry/csQg8a3ZCAo515//3348UXX8zbbtttt83c99q1a2PMmDFx+eWX500S/yPfbSrNCTgi/n17zJgxY+Luu+8ueU332WcfFxYAANDqzODIRjXK0OLFi5u97d///vcmbxlZX9++fTP3feGFF2aeNZHvQaNbb7119OjRo9nne/bZZ8dzzz1X0vHYY489XJQAAECrE3BkoxplaMmSJc3e9o033iioXZ8+fTL1e++998akSZMyH0++GRwVFRUxePDgZp/vmjVr4pvf/GYsXLiwZOOx0047Rffu3V2YAABAqxJwZKMaZaglAcc//vGPgtplmcHxt7/9Lb7//e8363gKeZNKc29T+Y+FCxfGySefHGvWrCnJeHTu3Dl22203FyYAANCqBBzZqEYZasktKsUOOJYsWRInn3xyrF69ulnH8/bbb8cHH3yQs01LA46IiOeff77ZIUwh3KYCAAC0Ng8ZzUbAUYbK6RaVCRMmxNtvv92iD2S+53AUI+CIiLjnnnvi97//fUnGRMABAAC0tnwBR3PfjNleCTjKUHNncHz44Ycxd+7cgtr27t07b5t58+bF448/3uLzKdWbVBpz0003lWRMdt99dxcmAADQqtyiko1qlKH58+c3a7sVK1bEunXrCmq7dOnSvG2mTJmSNzEsRL6Ao7q6Orp27VqU2s2cOTNefvnloo9J1oeyAgAAtJSAIxvVKEMvv/xyQQHERy1btqzgtvPmzcu5ft26dXHPPfcU5XzyBRydOnWK7bbbrmj1K8Usji5durgwAQCAViXgyEY1yvQifvrppzNvt3z58oLb5psl8sQTTxTt1aut8SaV9T344IPxzjvvFHVMKisr3d8GAAC0Kg8ZzUbAUaZmzJiReZssAUe+Z3X89re/Ldq5LFiwIN5///2cbYoZcKxduzZuu+22oo+JWRwAAEBrMoMjG9UoU80JOIp5i8qCBQuKej6t9SaV/5g8eXJRnh+yPgEHAADQmgQc2ahGmfrXv/4Vs2fPzrRNXV1dwW3z3aJS7Fs85syZk3N9MZ/BEfHvsKclr7dtTLEehAoAAFAIAUc2qlHGss7i6NevX8FtZ8+enfONK4sWLSrqueS7JWabbbYpev0KefZHpg+LPx4AAEArEnBk/M2mBOXrySefzNQ+S8BRU1MTzzzzTKPrVq1alfeZGVnluyWmR48esckmmxR1n8UMONatWxeLFy92UQIAAK3GQ0azEXCUsaeeeirTbRZZAo6IiGnTprXahyTfDI6I4s/iyPfcjyzeeuutnDNeAAAAii3fDA5vetyQgKOM1dXVxR133FFw+6wzIJoKOLp16xabbbZZUc+lkICjurq6qPss5gyOfM8QAQAAKDa3qGTTWQnK25QpU+K73/1uQW/w6NKlS2y00UbxwQcfFNT3vHnz4tVXX42dd965wbptttkm3n333aKdx8KFC2PNmjU5z2Prrbcuau1mz54d9fX1RZmR8uabb7oYAYAWaew7SVPfU4q1vFR9l/K4i3GOKZ9Pa49lW12brtnC2vfp00fAIeBofQceeGCjt1gU4wMzb968GDx4cEHHcfXVVzf5rIjG+m7qtouzzz670VkLLTmf2tranAHHkUceGdtvv31RvySsXLkyNtpooxaP79ChQ+P6669P8o95Of2R78hfQFI+n478BcQY+5Lph1HH+jem1NcVQLH5O/SRekREvTL824QJE2LChAkKAQAAQNnbb7/94uWXX1aI/2cGR5G89NJL8cYbbzRY3thTb5t6Em6utiNGjCjoIaJLliyJ6dOnZzqGvfbaKwYOHLjB+qVLl/73GR3NOd7Glu+5556xww47NHnsNTU18dBDDxWtZhERhx12WPTs2bPF43vPPffEihUrilKH1mrblHI93izbZ6lBSufr3NI9t/b6Gcxybq5T5+bc0vn7Yiydm3Nr23PLsv1ll10WJ5xwQpPH4hYVAUdJ/OpXv4pbbrmlZP1/9atfbfIWifX17ds3Lrjggli2bFnBfe+4444xffr0DaY39e3bN3784x/Hv/71r6Kdw5gxY+KCCy5ocn3Xrl3j+9//fqY/LvmMHDmyxQHH66+/Ht/5zndc5AAAQKvykNFsVCMRDz74YLz66qv5B7RTp/jsZz+bqe/XXnstHnvssQbL999//6KeQ743qXTt2jU233zzou6zR48eLe5jxowZLkAAAKDV5fsffwUcH6mHEqThww8/jIsvvrigtiNGjMjc/9VXX91g2UknnVTU9yoX8qrYYr5JZcCAAdG9e/cW9yPgAAAA2kJdXV3uH/QCjg3roQTp+MMf/hBPPfVU3nb77bdf5h/2s2bNismTJ2+wbLvttotDDz20aMc/f/78vG2qq6uLtr/dd9+9xX2sWbMm/vd//9fFBwAAtDq3qGSjGom56KKL8l7k/fr1i+OPP75Zfb/99tsbLPv+979f0MNNC7FixYpYsmRJzjblFnD8+c9/jlWrVrnwAACAVifgyEY1EvPKK6/Efffdl7fd6aefHt26dcvU9/vvvx/f/e53N1i29dZbxxlnnFG04583b17O9dtss03R9lWMgOP+++930QEAAG3CMziyUY0EXXHFFVFbW5uzzeabbx7HHnts5r5nzJgRt99++wbLli5dWrRjzxdwFGsGR/fu3WO33XZrUR+LFy8WcAAAAG3GMziyUY0ELViwIK677rq87caNGxddu3bN3P8Pf/jDuOeee/773996662iHXu+B40W6yGjX/nKV1r8BpU77rgj1qxZ44IDAADaRL5bVCoqKhRpPQKORF133XXxt7/9LWeb/v37xzHHHNOsD9GECRNi0qRJsWbNmgbP5WiJfAHHVlttVZQU8sgjj2zR9mvWrIk777zThQYAALQZz+DIRjUStW7duvj2t7+dd4bB+PHjY+ONN27WB+ncc8+NIUOGxAsvvFC04853i0pVVVVsscUWLdrHoEGDYq+99mpRH7/+9a/j3XffdaEBAABtRsCRjWok7LXXXosrr7wyZ5v+/fvH1Vdf3ex9fPDBB7F69eqiHXO+GRwRLX8Ox+jRo1s0VWvt2rVxww03uMAAAIA2JeDIRjUS94tf/CL+8pe/5Gyz//77x6mnnloWx7tgwYJYu3ZtzjYteZNKr169mnVbzvp+/vOfx+zZs11cAABAmxJwZKMa7eCCP+OMM2LVqlU525177rlFeW1qS9XV1eV9pkdLZnBMmDAhNt1002ZvP3v27BbNeAEAACjm772cP+gFHBvWQwnSN2fOnDj//PNztqmqqopf/OIX0bt37zY/3nzP4Wjum1R23HHHOOmkk1r0x+Oss87KO8MEAACgNXhNbDaq0U5MmTIlJk+enLPNNttsUxazE/I9h2PAgAHN6vfiiy+Ozp07N/u4Jk2aFM8995yLCQAAKAv19fW5f9ALODashxK0Hz/4wQ/i+eefz9nmgAMOiEsuuaRNPwj5Ao7m3GIycuTIGD58eLOP6aWXXorLLrvMRQQAAJQNt6hkoxrtyNq1a+Ob3/xm3tebnnTSSXHjjTdGly5d2uQ4892istlmm2Xqb8cdd8z7Nplc5syZE8ccc0ysXLnSRQQAAJQNt6hkoxrtzDvvvBNjxoyJdevW5Ww3cuTImDp1aps8kyPfDI5+/foV/EHdaqutYurUqbHxxhs361gWLlwYRx55ZN5QCAAAoLXlm8FRUVGhSOsRcLRDzzzzTJxzzjl579fae++949e//nVsscUWrXp8+QKOTp06Rb9+/fL207dv35g6dWqzj7+mpiaOPvrovDNKAAAA2oJncGSjGu3U5MmT49xzz83bbuedd46HH344dthhh1Y7tpqamli+fHnONvluU+nevXvceeedMXjw4GYdw4oVK+KEE06IV1991cUCAACUJc/gyEY12rFf/vKXBYUcAwYMiN/85jcxZsyYqKqqapVja8mDRgcMGBBTpkyJoUOHNmvfc+bMia985Svxpz/9yUUCAACULc/gyEY12rlJkyYVFHL06tUrLrjggpgxY0bsv//+JT+ufAFHUzM4Dj300Jg+fXp8+tOfbtZ+Z8yYEQceeGC8/vrrLg4AAKCsmcGRjWp0AJMmTYrzzjuvoLaDBg2KSZMmxa9+9avYZZddSnZM8+fPz7n+ozM4evfuHTfccEPccMMNzX4w6k033RTHHnts3ttjAAAAyoGAIxvV6CBuv/32OP/88wtuv88++8S0adPiJz/5SebXthYiywyOz3/+8/Hkk0/GoYce2qx91dTUxPjx42PixIl5p3gBAACUCwFHNp2VoOO47bbboqKiIi666KKC2nfq1CmOPvro+PrXvx5PPfVU/O53v4snnngiFi1a1OJjyRdwDB48OE477bQ46qijYvvtt2/2fh544IG48MILi3LMAAAArUnAkY2Ao4O59dZb4/3334+LLrooevXqVdA2Xbt2jf322y/222+/qK+vj+effz6mTZsW06ZNi9dee61Zx/Huu+/mXL///vu36Fkg//znP+Pss8+OmTNnGnQAACBJAo5sBBwd0D333BNPPfVUXHHFFfGlL30p07YVFRUxdOjQGDp0aJxzzjkxZ86cePzxx+Oll16KOXPmxNy5c/POlqisrIyuXbuW5NxWr14d1157bVx//fWxZs0agw0AACRLwJGNgKODWrBgQRx//PHxta99Lb73ve9FdXV1s/oZNGhQnHLKKRssW7lyZSxYsCBWrVoVq1evjtra2qitrY2qqqqorq6Orbbaquivo62trY2pU6fGjTfeGG+99ZYBBgAAkpcv4KioqFCk9Qg4Orj7778/HnzwwRg5cmSMGzcuhgwZ0uI+e/ToEdttt12rHH9NTU1MmjQpbr311liyZIkBBQAA2g0zOLIRcBB1dXXxwAMPxAMPPBCf//zn49RTT43hw4dH587le3ksXLgwbrnllrjzzjtjxYoVBhEAAGh3BBzZCDjYwB/+8If4wx/+EP369YsDDzwwRo4cGZ/5zGfKIuxYsWJFTJ8+PR599NF49NFHPWMDAABo1+rq6nKuF3BsSMBBo957772YPHlyTJ48+b9hx7777hvDhg2LAQMGtNpxLFq0KH73u9/FY489FjNnzoy1a9caHAAAoEMwgyMbAQd5rR92RERsscUWMWzYsBg6dGgMGzYshgwZEt26dSv6fi+++OL4xS9+EfX19QYBAADocPL9FhJwbEjAQWbvvPNOPPzww/Hwww//d1m/fv1iyy23jAEDBsSWW2753//cs2fPqKura/T/dtxxxxg2bFiT+6mtrRVuAAAAJdPUW0iKsTzrG04aa58vwBBw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AAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4A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/+MYxPkNE2IkGABNSVOQ7HM+7DuUt3Q7mjpUFmcjr1unl8NuVbD7m6plQSJtQIuLMFbkdTOVo4XNGpkZmZshRj5KVGyRR6oW/+MYxP8P82okOACTLDX0hZ/NMwIyV2MZOyleP56///LM+7JePftrs1g+k+jJlnog5CvNvjmcS3cDTZkDKhtl8r35yOV+jgtR/+MYxPoOQ2YYEABTSKmIjcsiPb5ZfXf7UH8zFxqUaDwmSPCizYFGwQGwyZIIX0pOLKIpjETlo1U/56E0qoAczJRAWM5G8HJA/+MYxPwK8148GABNSUZyKUXZ6Ik9o/PNrPO4Xd3k45s5ZbFOhlkKfJ2SMjFyc9KZLMjQ60Ps1iyQiQycScX711gnjk89MiiI/+MYxP8TC2oIAACTEM0f+Z/SNfy///f9lc5XLIHLMz46Yck2h2K0dtqT0bECVySOS9qTEGr9rfbPd2TQq7VMzuRDg3vYJJEn/+MYxO0ME2YcEABNSJ2RxzMIKcrhC0U0F3kImjyb03for+r/zq1OmMvJ/7vbWJlSA5zVyGFyjBs22U4ODIPh4hDbrVUbv/ln/+MYxPcNW2YcEABNSGWrMglL8cicpXM60b///+8h4bKpxqdMwhMvkpTs/hZPkDJUtJu2TccDTSJKRRGOl+v/1//9Omu/2pdE/+MYxPwPu2oQCABTLHWi9r07yp99tVRSsxysZJwFXKcDYBwxzjoPraIHIgUpiCmopmXHJwp268/L++7oMjOERqsPR/WT59fe/+MYxPgMU1ooGABTSLv/8+5at2WSQuEzX00HAFGyipKM5p5VFojkAmjknWmIKaimZccnBdUObf4ovk//MMX///X/yt/uOXlx/+MYxP8SW2IIAACTEKktqFqTxCJSJF/JNmSImOhln2AosFn0lTEFNRTMuOTguMlVVVVVVVVMQU1FMy45OC4yVVVVVVVVVVVV/+MYxPAMw2IgEABTSVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVMQU1FMy45OC4yVVVVVVVVVVVV/+MYxPgK215IGACNTFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV/+MYxP8MW2I4GABNSFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV/+MYxP8Ks1oUGABTZVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV/+MYxP8AAANIAAAAAFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVEFHMTAgU2Vjb25kcyBvZiBTaWxlbmNlAAAAAAAAAAAAQW5hciBTb2Z0d2FyZSBMTEMAAAAAAAAAAAAAAAAAQmxhbmsgQXVkaW8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8='\n","import type _algosdk from 'algosdk'\nimport { audio } from '../../media/audio'\nimport type { AccountInfo, Asset, ClientOptions, Metadata, Wallet } from '../../types/wallet'\nimport type { ConfirmedTxn, TxnType } from '../../types/node'\nimport type { RawTxnResponse, TransactionsArray, TxnInfo } from '../../types/api'\n\nconst getIsIOS = () => {\n if (typeof window !== 'undefined') {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return /iPad|iPhone|iPod/.test(navigator?.userAgent) && !(window as any)?.MSStream\n } else {\n return false\n }\n}\n\nconst isIOS = getIsIOS()\n\nabstract class BaseClient {\n algosdk: typeof _algosdk\n algodClient: _algosdk.Algodv2\n clientOptions?: ClientOptions\n keepWCAlive: HTMLAudioElement\n metadata: Metadata\n\n static metadata: Metadata\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n abstract connect(onDisconnect: () => void, arg?: any): Promise<Wallet>\n abstract disconnect(): Promise<void>\n abstract reconnect(onDisconnect: () => void): Promise<Wallet | null>\n abstract signTransactions(\n connectedAccounts: string[],\n txnGroups: Uint8Array[] | Uint8Array[][],\n indexesToSign?: number[],\n returnGroup?: boolean\n ): Promise<Uint8Array[]>\n\n protected constructor(\n metadata: Metadata,\n algosdk: typeof _algosdk,\n algodClient: _algosdk.Algodv2,\n clientOptions?: ClientOptions\n ) {\n this.algosdk = algosdk\n this.algodClient = algodClient\n this.clientOptions = clientOptions\n this.keepWCAlive = new Audio()\n this.metadata = metadata\n }\n\n async healthCheck() {\n return await this.algodClient.healthCheck().do()\n }\n\n async getAccountInfo(address: string) {\n const accountInfo = await this.algodClient.accountInformation(address).do()\n\n if (!accountInfo) {\n throw new Error('Unable to get account information')\n }\n\n return accountInfo as AccountInfo\n }\n\n async getAssets(address: string) {\n const accountInfo = await this.algodClient.accountInformation(address).do()\n\n if (!accountInfo || accountInfo.assets === undefined) {\n throw new Error('Unable to get account assets')\n }\n\n return accountInfo.assets as Asset[]\n }\n\n async waitForConfirmation(txId: string, timeout = 4) {\n const confirmation = (await this.algosdk.waitForConfirmation(\n this.algodClient,\n txId,\n timeout\n )) as ConfirmedTxn\n\n return { txId, ...confirmation }\n }\n\n decodeTransaction = (txn: string, isSigned: boolean) => {\n return isSigned\n ? this.algosdk.decodeSignedTransaction(new Uint8Array(Buffer.from(txn, 'base64'))).txn\n : this.algosdk.decodeUnsignedTransaction(new Uint8Array(Buffer.from(txn, 'base64')))\n }\n\n logEncodedTransaction(txn: string, isSigned: boolean) {\n const txnObj = this.decodeTransaction(txn, isSigned)\n\n console.log('TRANSACTION', {\n isSigned,\n from: txnObj.from && this.algosdk.encodeAddress(txnObj.from.publicKey),\n to: txnObj.to && this.algosdk.encodeAddress(txnObj.to.publicKey),\n type: txnObj.type,\n txn: txnObj\n })\n }\n\n groupTransactionsBySender(transactions: TransactionsArray) {\n function groupBySender(objectArray: TxnInfo[]) {\n return objectArray.reduce(\n function (acc, obj) {\n const sender = obj.from\n if (!acc[sender]) {\n acc[sender] = []\n }\n acc[sender].push(obj)\n return acc\n },\n {} as Record<string, Array<TxnInfo>>\n )\n }\n\n const decodedGroup = transactions.reduce((acc: TxnInfo[], [type, txn], index) => {\n if (type === 'u') {\n const decodedTxn = this.decodeTransaction(txn, false)\n const from = decodedTxn.from ? this.algosdk.encodeAddress(decodedTxn.from.publicKey) : ''\n const to = decodedTxn.to ? this.algosdk.encodeAddress(decodedTxn.to.publicKey) : ''\n const type = (decodedTxn.type as TxnType) || ''\n const amount = Number(decodedTxn.amount) || 0 // convert from bigint to number\n\n const txnObj = {\n groupIndex: index,\n amount,\n from,\n to,\n type,\n txn\n }\n\n acc.push(txnObj)\n }\n\n return acc\n }, [])\n\n return groupBySender(decodedGroup)\n }\n\n async sendRawTransactions(transactions: Uint8Array[], waitRoundsToConfirm?: number) {\n const sentTransaction = (await this.algodClient\n .sendRawTransaction(transactions)\n .do()) as RawTxnResponse\n\n if (!sentTransaction) {\n throw new Error('Transaction failed.')\n }\n\n const decodedTxn = this.algosdk.decodeSignedTransaction(transactions[0])\n const waitRounds = waitRoundsToConfirm || decodedTxn.txn.lastRound - decodedTxn.txn.firstRound\n\n const confirmedTransaction = await this.waitForConfirmation(sentTransaction.txId, waitRounds)\n\n return {\n id: sentTransaction.txId,\n ...confirmedTransaction\n }\n }\n\n async keepWCAliveStart() {\n // Playing an audio file prevents Wallet Connect's\n // web socket connection from being dropped when\n // iOS goes into background mode\n\n if (!isIOS) {\n return\n }\n\n this.keepWCAlive.src = audio\n this.keepWCAlive.autoplay = true\n this.keepWCAlive.volume = 0\n this.keepWCAlive.loop = true\n await this.keepWCAlive.play()\n }\n\n keepWCAliveStop() {\n if (!isIOS) {\n return\n }\n\n this.keepWCAlive.pause()\n }\n}\n\nexport default BaseClient\n","function n(n){for(var r=arguments.length,t=Array(r>1?r-1:0),e=1;e<r;e++)t[e-1]=arguments[e];if(\"production\"!==process.env.NODE_ENV){var i=Y[n],o=i?\"function\"==typeof i?i.apply(null,t):i:\"unknown error nr: \"+n;throw Error(\"[Immer] \"+o)}throw Error(\"[Immer] minified error nr: \"+n+(t.length?\" \"+t.map((function(n){return\"'\"+n+\"'\"})).join(\",\"):\"\")+\". Find the full error at: https://bit.ly/3cXEKWf\")}function r(n){return!!n&&!!n[Q]}function t(n){var r;return!!n&&(function(n){if(!n||\"object\"!=typeof n)return!1;var r=Object.getPrototypeOf(n);if(null===r)return!0;var t=Object.hasOwnProperty.call(r,\"constructor\")&&r.constructor;return t===Object||\"function\"==typeof t&&Function.toString.call(t)===Z}(n)||Array.isArray(n)||!!n[L]||!!(null===(r=n.constructor)||void 0===r?void 0:r[L])||s(n)||v(n))}function e(t){return r(t)||n(23,t),t[Q].t}function i(n,r,t){void 0===t&&(t=!1),0===o(n)?(t?Object.keys:nn)(n).forEach((function(e){t&&\"symbol\"==typeof e||r(e,n[e],n)})):n.forEach((function(t,e){return r(e,t,n)}))}function o(n){var r=n[Q];return r?r.i>3?r.i-4:r.i:Array.isArray(n)?1:s(n)?2:v(n)?3:0}function u(n,r){return 2===o(n)?n.has(r):Object.prototype.hasOwnProperty.call(n,r)}function a(n,r){return 2===o(n)?n.get(r):n[r]}function f(n,r,t){var e=o(n);2===e?n.set(r,t):3===e?n.add(t):n[r]=t}function c(n,r){return n===r?0!==n||1/n==1/r:n!=n&&r!=r}function s(n){return X&&n instanceof Map}function v(n){return q&&n instanceof Set}function p(n){return n.o||n.t}function l(n){if(Array.isArray(n))return Array.prototype.slice.call(n);var r=rn(n);delete r[Q];for(var t=nn(r),e=0;e<t.length;e++){var i=t[e],o=r[i];!1===o.writable&&(o.writable=!0,o.configurable=!0),(o.get||o.set)&&(r[i]={configurable:!0,writable:!0,enumerable:o.enumerable,value:n[i]})}return Object.create(Object.getPrototypeOf(n),r)}function d(n,e){return void 0===e&&(e=!1),y(n)||r(n)||!t(n)||(o(n)>1&&(n.set=n.add=n.clear=n.delete=h),Object.freeze(n),e&&i(n,(function(n,r){return d(r,!0)}),!0)),n}function h(){n(2)}function y(n){return null==n||\"object\"!=typeof n||Object.isFrozen(n)}function b(r){var t=tn[r];return t||n(18,r),t}function m(n,r){tn[n]||(tn[n]=r)}function _(){return\"production\"===process.env.NODE_ENV||U||n(0),U}function j(n,r){r&&(b(\"Patches\"),n.u=[],n.s=[],n.v=r)}function g(n){O(n),n.p.forEach(S),n.p=null}function O(n){n===U&&(U=n.l)}function w(n){return U={p:[],l:U,h:n,m:!0,_:0}}function S(n){var r=n[Q];0===r.i||1===r.i?r.j():r.g=!0}function P(r,e){e._=e.p.length;var i=e.p[0],o=void 0!==r&&r!==i;return e.h.O||b(\"ES5\").S(e,r,o),o?(i[Q].P&&(g(e),n(4)),t(r)&&(r=M(e,r),e.l||x(e,r)),e.u&&b(\"Patches\").M(i[Q].t,r,e.u,e.s)):r=M(e,i,[]),g(e),e.u&&e.v(e.u,e.s),r!==H?r:void 0}function M(n,r,t){if(y(r))return r;var e=r[Q];if(!e)return i(r,(function(i,o){return A(n,e,r,i,o,t)}),!0),r;if(e.A!==n)return r;if(!e.P)return x(n,e.t,!0),e.t;if(!e.I){e.I=!0,e.A._--;var o=4===e.i||5===e.i?e.o=l(e.k):e.o,u=o,a=!1;3===e.i&&(u=new Set(o),o.clear(),a=!0),i(u,(function(r,i){return A(n,e,o,r,i,t,a)})),x(n,o,!1),t&&n.u&&b(\"Patches\").N(e,t,n.u,n.s)}return e.o}function A(e,i,o,a,c,s,v){if(\"production\"!==process.env.NODE_ENV&&c===o&&n(5),r(c)){var p=M(e,c,s&&i&&3!==i.i&&!u(i.R,a)?s.concat(a):void 0);if(f(o,a,p),!r(p))return;e.m=!1}else v&&o.add(c);if(t(c)&&!y(c)){if(!e.h.D&&e._<1)return;M(e,c),i&&i.A.l||x(e,c)}}function x(n,r,t){void 0===t&&(t=!1),!n.l&&n.h.D&&n.m&&d(r,t)}function z(n,r){var t=n[Q];return(t?p(t):n)[r]}function I(n,r){if(r in n)for(var t=Object.getPrototypeOf(n);t;){var e=Object.getOwnPropertyDescriptor(t,r);if(e)return e;t=Object.getPrototypeOf(t)}}function k(n){n.P||(n.P=!0,n.l&&k(n.l))}function E(n){n.o||(n.o=l(n.t))}function N(n,r,t){var e=s(r)?b(\"MapSet\").F(r,t):v(r)?b(\"MapSet\").T(r,t):n.O?function(n,r){var t=Array.isArray(n),e={i:t?1:0,A:r?r.A:_(),P:!1,I:!1,R:{},l:r,t:n,k:null,o:null,j:null,C:!1},i=e,o=en;t&&(i=[e],o=on);var u=Proxy.revocable(i,o),a=u.revoke,f=u.proxy;return e.k=f,e.j=a,f}(r,t):b(\"ES5\").J(r,t);return(t?t.A:_()).p.push(e),e}function R(e){return r(e)||n(22,e),function n(r){if(!t(r))return r;var e,u=r[Q],c=o(r);if(u){if(!u.P&&(u.i<4||!b(\"ES5\").K(u)))return u.t;u.I=!0,e=D(r,c),u.I=!1}else e=D(r,c);return i(e,(function(r,t){u&&a(u.t,r)===t||f(e,r,n(t))})),3===c?new Set(e):e}(e)}function D(n,r){switch(r){case 2:return new Map(n);case 3:return Array.from(n)}return l(n)}function F(){function t(n,r){var t=s[n];return t?t.enumerable=r:s[n]=t={configurable:!0,enumerable:r,get:function(){var r=this[Q];return\"production\"!==process.env.NODE_ENV&&f(r),en.get(r,n)},set:function(r){var t=this[Q];\"production\"!==process.env.NODE_ENV&&f(t),en.set(t,n,r)}},t}function e(n){for(var r=n.length-1;r>=0;r--){var t=n[r][Q];if(!t.P)switch(t.i){case 5:a(t)&&k(t);break;case 4:o(t)&&k(t)}}}function o(n){for(var r=n.t,t=n.k,e=nn(t),i=e.length-1;i>=0;i--){var o=e[i];if(o!==Q){var a=r[o];if(void 0===a&&!u(r,o))return!0;var f=t[o],s=f&&f[Q];if(s?s.t!==a:!c(f,a))return!0}}var v=!!r[Q];return e.length!==nn(r).length+(v?0:1)}function a(n){var r=n.k;if(r.length!==n.t.length)return!0;var t=Object.getOwnPropertyDescriptor(r,r.length-1);if(t&&!t.get)return!0;for(var e=0;e<r.length;e++)if(!r.hasOwnProperty(e))return!0;return!1}function f(r){r.g&&n(3,JSON.stringify(p(r)))}var s={};m(\"ES5\",{J:function(n,r){var e=Array.isArray(n),i=function(n,r){if(n){for(var e=Array(r.length),i=0;i<r.length;i++)Object.defineProperty(e,\"\"+i,t(i,!0));return e}var o=rn(r);delete o[Q];for(var u=nn(o),a=0;a<u.length;a++){var f=u[a];o[f]=t(f,n||!!o[f].enumerable)}return Object.create(Object.getPrototypeOf(r),o)}(e,n),o={i:e?5:4,A:r?r.A:_(),P:!1,I:!1,R:{},l:r,t:n,k:i,o:null,g:!1,C:!1};return Object.defineProperty(i,Q,{value:o,writable:!0}),i},S:function(n,t,o){o?r(t)&&t[Q].A===n&&e(n.p):(n.u&&function n(r){if(r&&\"object\"==typeof r){var t=r[Q];if(t){var e=t.t,o=t.k,f=t.R,c=t.i;if(4===c)i(o,(function(r){r!==Q&&(void 0!==e[r]||u(e,r)?f[r]||n(o[r]):(f[r]=!0,k(t)))})),i(e,(function(n){void 0!==o[n]||u(o,n)||(f[n]=!1,k(t))}));else if(5===c){if(a(t)&&(k(t),f.length=!0),o.length<e.length)for(var s=o.length;s<e.length;s++)f[s]=!1;else for(var v=e.length;v<o.length;v++)f[v]=!0;for(var p=Math.min(o.length,e.length),l=0;l<p;l++)o.hasOwnProperty(l)||(f[l]=!0),void 0===f[l]&&n(o[l])}}}}(n.p[0]),e(n.p))},K:function(n){return 4===n.i?o(n):a(n)}})}function T(){function e(n){if(!t(n))return n;if(Array.isArray(n))return n.map(e);if(s(n))return new Map(Array.from(n.entries()).map((function(n){return[n[0],e(n[1])]})));if(v(n))return new Set(Array.from(n).map(e));var r=Object.create(Object.getPrototypeOf(n));for(var i in n)r[i]=e(n[i]);return u(n,L)&&(r[L]=n[L]),r}function f(n){return r(n)?e(n):n}var c=\"add\";m(\"Patches\",{$:function(r,t){return t.forEach((function(t){for(var i=t.path,u=t.op,f=r,s=0;s<i.length-1;s++){var v=o(f),p=i[s];\"string\"!=typeof p&&\"number\"!=typeof p&&(p=\"\"+p),0!==v&&1!==v||\"__proto__\"!==p&&\"constructor\"!==p||n(24),\"function\"==typeof f&&\"prototype\"===p&&n(24),\"object\"!=typeof(f=a(f,p))&&n(15,i.join(\"/\"))}var l=o(f),d=e(t.value),h=i[i.length-1];switch(u){case\"replace\":switch(l){case 2:return f.set(h,d);case 3:n(16);default:return f[h]=d}case c:switch(l){case 1:return\"-\"===h?f.push(d):f.splice(h,0,d);case 2:return f.set(h,d);case 3:return f.add(d);default:return f[h]=d}case\"remove\":switch(l){case 1:return f.splice(h,1);case 2:return f.delete(h);case 3:return f.delete(t.value);default:return delete f[h]}default:n(17,u)}})),r},N:function(n,r,t,e){switch(n.i){case 0:case 4:case 2:return function(n,r,t,e){var o=n.t,s=n.o;i(n.R,(function(n,i){var v=a(o,n),p=a(s,n),l=i?u(o,n)?\"replace\":c:\"remove\";if(v!==p||\"replace\"!==l){var d=r.concat(n);t.push(\"remove\"===l?{op:l,path:d}:{op:l,path:d,value:p}),e.push(l===c?{op:\"remove\",path:d}:\"remove\"===l?{op:c,path:d,value:f(v)}:{op:\"replace\",path:d,value:f(v)})}}))}(n,r,t,e);case 5:case 1:return function(n,r,t,e){var i=n.t,o=n.R,u=n.o;if(u.length<i.length){var a=[u,i];i=a[0],u=a[1];var s=[e,t];t=s[0],e=s[1]}for(var v=0;v<i.length;v++)if(o[v]&&u[v]!==i[v]){var p=r.concat([v]);t.push({op:\"replace\",path:p,value:f(u[v])}),e.push({op:\"replace\",path:p,value:f(i[v])})}for(var l=i.length;l<u.length;l++){var d=r.concat([l]);t.push({op:c,path:d,value:f(u[l])})}i.length<u.length&&e.push({op:\"replace\",path:r.concat([\"length\"]),value:i.length})}(n,r,t,e);case 3:return function(n,r,t,e){var i=n.t,o=n.o,u=0;i.forEach((function(n){if(!o.has(n)){var i=r.concat([u]);t.push({op:\"remove\",path:i,value:n}),e.unshift({op:c,path:i,value:n})}u++})),u=0,o.forEach((function(n){if(!i.has(n)){var o=r.concat([u]);t.push({op:c,path:o,value:n}),e.unshift({op:\"remove\",path:o,value:n})}u++}))}(n,r,t,e)}},M:function(n,r,t,e){t.push({op:\"replace\",path:[],value:r===H?void 0:r}),e.push({op:\"replace\",path:[],value:n})}})}function C(){function r(n,r){function t(){this.constructor=n}a(n,r),n.prototype=(t.prototype=r.prototype,new t)}function e(n){n.o||(n.R=new Map,n.o=new Map(n.t))}function o(n){n.o||(n.o=new Set,n.t.forEach((function(r){if(t(r)){var e=N(n.A.h,r,n);n.p.set(r,e),n.o.add(e)}else n.o.add(r)})))}function u(r){r.g&&n(3,JSON.stringify(p(r)))}var a=function(n,r){return(a=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,r){n.__proto__=r}||function(n,r){for(var t in r)r.hasOwnProperty(t)&&(n[t]=r[t])})(n,r)},f=function(){function n(n,r){return this[Q]={i:2,l:r,A:r?r.A:_(),P:!1,I:!1,o:void 0,R:void 0,t:n,k:this,C:!1,g:!1},this}r(n,Map);var o=n.prototype;return Object.defineProperty(o,\"size\",{get:function(){return p(this[Q]).size}}),o.has=function(n){return p(this[Q]).has(n)},o.set=function(n,r){var t=this[Q];return u(t),p(t).has(n)&&p(t).get(n)===r||(e(t),k(t),t.R.set(n,!0),t.o.set(n,r),t.R.set(n,!0)),this},o.delete=function(n){if(!this.has(n))return!1;var r=this[Q];return u(r),e(r),k(r),r.t.has(n)?r.R.set(n,!1):r.R.delete(n),r.o.delete(n),!0},o.clear=function(){var n=this[Q];u(n),p(n).size&&(e(n),k(n),n.R=new Map,i(n.t,(function(r){n.R.set(r,!1)})),n.o.clear())},o.forEach=function(n,r){var t=this;p(this[Q]).forEach((function(e,i){n.call(r,t.get(i),i,t)}))},o.get=function(n){var r=this[Q];u(r);var i=p(r).get(n);if(r.I||!t(i))return i;if(i!==r.t.get(n))return i;var o=N(r.A.h,i,r);return e(r),r.o.set(n,o),o},o.keys=function(){return p(this[Q]).keys()},o.values=function(){var n,r=this,t=this.keys();return(n={})[V]=function(){return r.values()},n.next=function(){var n=t.next();return n.done?n:{done:!1,value:r.get(n.value)}},n},o.entries=function(){var n,r=this,t=this.keys();return(n={})[V]=function(){return r.entries()},n.next=function(){var n=t.next();if(n.done)return n;var e=r.get(n.value);return{done:!1,value:[n.value,e]}},n},o[V]=function(){return this.entries()},n}(),c=function(){function n(n,r){return this[Q]={i:3,l:r,A:r?r.A:_(),P:!1,I:!1,o:void 0,t:n,k:this,p:new Map,g:!1,C:!1},this}r(n,Set);var t=n.prototype;return Object.defineProperty(t,\"size\",{get:function(){return p(this[Q]).size}}),t.has=function(n){var r=this[Q];return u(r),r.o?!!r.o.has(n)||!(!r.p.has(n)||!r.o.has(r.p.get(n))):r.t.has(n)},t.add=function(n){var r=this[Q];return u(r),this.has(n)||(o(r),k(r),r.o.add(n)),this},t.delete=function(n){if(!this.has(n))return!1;var r=this[Q];return u(r),o(r),k(r),r.o.delete(n)||!!r.p.has(n)&&r.o.delete(r.p.get(n))},t.clear=function(){var n=this[Q];u(n),p(n).size&&(o(n),k(n),n.o.clear())},t.values=function(){var n=this[Q];return u(n),o(n),n.o.values()},t.entries=function(){var n=this[Q];return u(n),o(n),n.o.entries()},t.keys=function(){return this.values()},t[V]=function(){return this.values()},t.forEach=function(n,r){for(var t=this.values(),e=t.next();!e.done;)n.call(r,e.value,e.value,this),e=t.next()},n}();m(\"MapSet\",{F:function(n,r){return new f(n,r)},T:function(n,r){return new c(n,r)}})}function J(){F(),C(),T()}function K(n){return n}function $(n){return n}var G,U,W=\"undefined\"!=typeof Symbol&&\"symbol\"==typeof Symbol(\"x\"),X=\"undefined\"!=typeof Map,q=\"undefined\"!=typeof Set,B=\"undefined\"!=typeof Proxy&&void 0!==Proxy.revocable&&\"undefined\"!=typeof Reflect,H=W?Symbol.for(\"immer-nothing\"):((G={})[\"immer-nothing\"]=!0,G),L=W?Symbol.for(\"immer-draftable\"):\"__$immer_draftable\",Q=W?Symbol.for(\"immer-state\"):\"__$immer_state\",V=\"undefined\"!=typeof Symbol&&Symbol.iterator||\"@@iterator\",Y={0:\"Illegal state\",1:\"Immer drafts cannot have computed properties\",2:\"This object has been frozen and should not be mutated\",3:function(n){return\"Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? \"+n},4:\"An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.\",5:\"Immer forbids circular references\",6:\"The first or second argument to `produce` must be a function\",7:\"The third argument to `produce` must be a function or undefined\",8:\"First argument to `createDraft` must be a plain object, an array, or an immerable object\",9:\"First argument to `finishDraft` must be a draft returned by `createDraft`\",10:\"The given draft is already finalized\",11:\"Object.defineProperty() cannot be used on an Immer draft\",12:\"Object.setPrototypeOf() cannot be used on an Immer draft\",13:\"Immer only supports deleting array indices\",14:\"Immer only supports setting array indices and the 'length' property\",15:function(n){return\"Cannot apply patch, path doesn't resolve: \"+n},16:'Sets cannot have \"replace\" patches.',17:function(n){return\"Unsupported patch operation: \"+n},18:function(n){return\"The plugin for '\"+n+\"' has not been loaded into Immer. To enable the plugin, import and call `enable\"+n+\"()` when initializing your application.\"},20:\"Cannot use proxies if Proxy, Proxy.revocable or Reflect are not available\",21:function(n){return\"produce can only be called on things that are draftable: plain objects, arrays, Map, Set or classes that are marked with '[immerable]: true'. Got '\"+n+\"'\"},22:function(n){return\"'current' expects a draft, got: \"+n},23:function(n){return\"'original' expects a draft, got: \"+n},24:\"Patching reserved attributes like __proto__, prototype and constructor is not allowed\"},Z=\"\"+Object.prototype.constructor,nn=\"undefined\"!=typeof Reflect&&Reflect.ownKeys?Reflect.ownKeys:void 0!==Object.getOwnPropertySymbols?function(n){return Object.getOwnPropertyNames(n).concat(Object.getOwnPropertySymbols(n))}:Object.getOwnPropertyNames,rn=Object.getOwnPropertyDescriptors||function(n){var r={};return nn(n).forEach((function(t){r[t]=Object.getOwnPropertyDescriptor(n,t)})),r},tn={},en={get:function(n,r){if(r===Q)return n;var e=p(n);if(!u(e,r))return function(n,r,t){var e,i=I(r,t);return i?\"value\"in i?i.value:null===(e=i.get)||void 0===e?void 0:e.call(n.k):void 0}(n,e,r);var i=e[r];return n.I||!t(i)?i:i===z(n.t,r)?(E(n),n.o[r]=N(n.A.h,i,n)):i},has:function(n,r){return r in p(n)},ownKeys:function(n){return Reflect.ownKeys(p(n))},set:function(n,r,t){var e=I(p(n),r);if(null==e?void 0:e.set)return e.set.call(n.k,t),!0;if(!n.P){var i=z(p(n),r),o=null==i?void 0:i[Q];if(o&&o.t===t)return n.o[r]=t,n.R[r]=!1,!0;if(c(t,i)&&(void 0!==t||u(n.t,r)))return!0;E(n),k(n)}return n.o[r]===t&&(void 0!==t||r in n.o)||Number.isNaN(t)&&Number.isNaN(n.o[r])||(n.o[r]=t,n.R[r]=!0),!0},deleteProperty:function(n,r){return void 0!==z(n.t,r)||r in n.t?(n.R[r]=!1,E(n),k(n)):delete n.R[r],n.o&&delete n.o[r],!0},getOwnPropertyDescriptor:function(n,r){var t=p(n),e=Reflect.getOwnPropertyDescriptor(t,r);return e?{writable:!0,configurable:1!==n.i||\"length\"!==r,enumerable:e.enumerable,value:t[r]}:e},defineProperty:function(){n(11)},getPrototypeOf:function(n){return Object.getPrototypeOf(n.t)},setPrototypeOf:function(){n(12)}},on={};i(en,(function(n,r){on[n]=function(){return arguments[0]=arguments[0][0],r.apply(this,arguments)}})),on.deleteProperty=function(r,t){return\"production\"!==process.env.NODE_ENV&&isNaN(parseInt(t))&&n(13),on.set.call(this,r,t,void 0)},on.set=function(r,t,e){return\"production\"!==process.env.NODE_ENV&&\"length\"!==t&&isNaN(parseInt(t))&&n(14),en.set.call(this,r[0],t,e,r[0])};var un=function(){function e(r){var e=this;this.O=B,this.D=!0,this.produce=function(r,i,o){if(\"function\"==typeof r&&\"function\"!=typeof i){var u=i;i=r;var a=e;return function(n){var r=this;void 0===n&&(n=u);for(var t=arguments.length,e=Array(t>1?t-1:0),o=1;o<t;o++)e[o-1]=arguments[o];return a.produce(n,(function(n){var t;return(t=i).call.apply(t,[r,n].concat(e))}))}}var f;if(\"function\"!=typeof i&&n(6),void 0!==o&&\"function\"!=typeof o&&n(7),t(r)){var c=w(e),s=N(e,r,void 0),v=!0;try{f=i(s),v=!1}finally{v?g(c):O(c)}return\"undefined\"!=typeof Promise&&f instanceof Promise?f.then((function(n){return j(c,o),P(n,c)}),(function(n){throw g(c),n})):(j(c,o),P(f,c))}if(!r||\"object\"!=typeof r){if(void 0===(f=i(r))&&(f=r),f===H&&(f=void 0),e.D&&d(f,!0),o){var p=[],l=[];b(\"Patches\").M(r,f,p,l),o(p,l)}return f}n(21,r)},this.produceWithPatches=function(n,r){if(\"function\"==typeof n)return function(r){for(var t=arguments.length,i=Array(t>1?t-1:0),o=1;o<t;o++)i[o-1]=arguments[o];return e.produceWithPatches(r,(function(r){return n.apply(void 0,[r].concat(i))}))};var t,i,o=e.produce(n,r,(function(n,r){t=n,i=r}));return\"undefined\"!=typeof Promise&&o instanceof Promise?o.then((function(n){return[n,t,i]})):[o,t,i]},\"boolean\"==typeof(null==r?void 0:r.useProxies)&&this.setUseProxies(r.useProxies),\"boolean\"==typeof(null==r?void 0:r.autoFreeze)&&this.setAutoFreeze(r.autoFreeze)}var i=e.prototype;return i.createDraft=function(e){t(e)||n(8),r(e)&&(e=R(e));var i=w(this),o=N(this,e,void 0);return o[Q].C=!0,O(i),o},i.finishDraft=function(r,t){var e=r&&r[Q];\"production\"!==process.env.NODE_ENV&&(e&&e.C||n(9),e.I&&n(10));var i=e.A;return j(i,t),P(void 0,i)},i.setAutoFreeze=function(n){this.D=n},i.setUseProxies=function(r){r&&!B&&n(20),this.O=r},i.applyPatches=function(n,t){var e;for(e=t.length-1;e>=0;e--){var i=t[e];if(0===i.path.length&&\"replace\"===i.op){n=i.value;break}}e>-1&&(t=t.slice(e+1));var o=b(\"Patches\").$;return r(n)?o(n,t):this.produce(n,(function(n){return o(n,t)}))},e}(),an=new un,fn=an.produce,cn=an.produceWithPatches.bind(an),sn=an.setAutoFreeze.bind(an),vn=an.setUseProxies.bind(an),pn=an.applyPatches.bind(an),ln=an.createDraft.bind(an),dn=an.finishDraft.bind(an);export default fn;export{un as Immer,pn as applyPatches,K as castDraft,$ as castImmutable,ln as createDraft,R as current,J as enableAllPlugins,F as enableES5,C as enableMapSet,T as enablePatches,dn as finishDraft,d as freeze,L as immerable,r as isDraft,t as isDraftable,H as nothing,e as original,fn as produce,cn as produceWithPatches,sn as setAutoFreeze,vn as setUseProxies};\n//# sourceMappingURL=immer.esm.js.map\n","import { produce } from 'immer';\n\nconst immerImpl = (initializer) => (set, get, store) => {\n store.setState = (updater, replace, ...a) => {\n const nextState = typeof updater === \"function\" ? produce(updater) : updater;\n return set(nextState, replace, ...a);\n };\n return initializer(store.setState, get, store);\n};\nconst immer = immerImpl;\n\nexport { immer };\n","const createStoreImpl = (createState) => {\n let state;\n const listeners = /* @__PURE__ */ new Set();\n const setState = (partial, replace) => {\n const nextState = typeof partial === \"function\" ? partial(state) : partial;\n if (!Object.is(nextState, state)) {\n const previousState = state;\n state = (replace != null ? replace : typeof nextState !== \"object\" || nextState === null) ? nextState : Object.assign({}, state, nextState);\n listeners.forEach((listener) => listener(state, previousState));\n }\n };\n const getState = () => state;\n const getInitialState = () => initialState;\n const subscribe = (listener) => {\n listeners.add(listener);\n return () => listeners.delete(listener);\n };\n const destroy = () => {\n if ((import.meta.env ? import.meta.env.MODE : void 0) !== \"production\") {\n console.warn(\n \"[DEPRECATED] The `destroy` method will be unsupported in a future version. Instead use unsubscribe function returned by subscribe. Everything will be garbage-collected if store is garbage-collected.\"\n );\n }\n listeners.clear();\n };\n const api = { setState, getState, getInitialState, subscribe, destroy };\n const initialState = state = createState(setState, getState, api);\n return api;\n};\nconst createStore = (createState) => createState ? createStoreImpl(createState) : createStoreImpl;\nvar vanilla = (createState) => {\n if ((import.meta.env ? import.meta.env.MODE : void 0) !== \"production\") {\n console.warn(\n \"[DEPRECATED] Default export is deprecated. Instead use import { createStore } from 'zustand/vanilla'.\"\n );\n }\n return createStore(createState);\n};\n\nexport { createStore, vanilla as default };\n","/**\n * @license React\n * use-sync-external-store-shim.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var e=require(\"react\");function h(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}var k=\"function\"===typeof Object.is?Object.is:h,l=e.useState,m=e.useEffect,n=e.useLayoutEffect,p=e.useDebugValue;function q(a,b){var d=b(),f=l({inst:{value:d,getSnapshot:b}}),c=f[0].inst,g=f[1];n(function(){c.value=d;c.getSnapshot=b;r(c)&&g({inst:c})},[a,d,b]);m(function(){r(c)&&g({inst:c});return a(function(){r(c)&&g({inst:c})})},[a]);p(d);return d}\nfunction r(a){var b=a.getSnapshot;a=a.value;try{var d=b();return!k(a,d)}catch(f){return!0}}function t(a,b){return b()}var u=\"undefined\"===typeof window||\"undefined\"===typeof window.document||\"undefined\"===typeof window.document.createElement?t:q;exports.useSyncExternalStore=void 0!==e.useSyncExternalStore?e.useSyncExternalStore:u;\n","/**\n * @license React\n * use-sync-external-store-shim.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nif (process.env.NODE_ENV !== \"production\") {\n (function() {\n\n 'use strict';\n\n/* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\nif (\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== 'undefined' &&\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart ===\n 'function'\n) {\n __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(new Error());\n}\n var React = require('react');\n\nvar ReactSharedInternals = React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;\n\nfunction error(format) {\n {\n {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n printWarning('error', format, args);\n }\n }\n}\n\nfunction printWarning(level, format, args) {\n // When changing this logic, you might want to also\n // update consoleWithStackDev.www.js as well.\n {\n var ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame;\n var stack = ReactDebugCurrentFrame.getStackAddendum();\n\n if (stack !== '') {\n format += '%s';\n args = args.concat([stack]);\n } // eslint-disable-next-line react-internal/safe-string-coercion\n\n\n var argsWithFormat = args.map(function (item) {\n return String(item);\n }); // Careful: RN currently depends on this prefix\n\n argsWithFormat.unshift('Warning: ' + format); // We intentionally don't use spread (or .apply) directly because it\n // breaks IE9: https://github.com/facebook/react/issues/13610\n // eslint-disable-next-line react-internal/no-production-logging\n\n Function.prototype.apply.call(console[level], console, argsWithFormat);\n }\n}\n\n/**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\nfunction is(x, y) {\n return x === y && (x !== 0 || 1 / x === 1 / y) || x !== x && y !== y // eslint-disable-line no-self-compare\n ;\n}\n\nvar objectIs = typeof Object.is === 'function' ? Object.is : is;\n\n// dispatch for CommonJS interop named imports.\n\nvar useState = React.useState,\n useEffect = React.useEffect,\n useLayoutEffect = React.useLayoutEffect,\n useDebugValue = React.useDebugValue;\nvar didWarnOld18Alpha = false;\nvar didWarnUncachedGetSnapshot = false; // Disclaimer: This shim breaks many of the rules of React, and only works\n// because of a very particular set of implementation details and assumptions\n// -- change any one of them and it will break. The most important assumption\n// is that updates are always synchronous, because concurrent rendering is\n// only available in versions of React that also have a built-in\n// useSyncExternalStore API. And we only use this shim when the built-in API\n// does not exist.\n//\n// Do not assume that the clever hacks used by this hook also work in general.\n// The point of this shim is to replace the need for hacks by other libraries.\n\nfunction useSyncExternalStore(subscribe, getSnapshot, // Note: The shim does not use getServerSnapshot, because pre-18 versions of\n// React do not expose a way to check if we're hydrating. So users of the shim\n// will need to track that themselves and return the correct value\n// from `getSnapshot`.\ngetServerSnapshot) {\n {\n if (!didWarnOld18Alpha) {\n if (React.startTransition !== undefined) {\n didWarnOld18Alpha = true;\n\n error('You are using an outdated, pre-release alpha of React 18 that ' + 'does not support useSyncExternalStore. The ' + 'use-sync-external-store shim will not work correctly. Upgrade ' + 'to a newer pre-release.');\n }\n }\n } // Read the current snapshot from the store on every render. Again, this\n // breaks the rules of React, and only works here because of specific\n // implementation details, most importantly that updates are\n // always synchronous.\n\n\n var value = getSnapshot();\n\n {\n if (!didWarnUncachedGetSnapshot) {\n var cachedValue = getSnapshot();\n\n if (!objectIs(value, cachedValue)) {\n error('The result of getSnapshot should be cached to avoid an infinite loop');\n\n didWarnUncachedGetSnapshot = true;\n }\n }\n } // Because updates are synchronous, we don't queue them. Instead we force a\n // re-render whenever the subscribed state changes by updating an some\n // arbitrary useState hook. Then, during render, we call getSnapshot to read\n // the current value.\n //\n // Because we don't actually use the state returned by the useState hook, we\n // can save a bit of memory by storing other stuff in that slot.\n //\n // To implement the early bailout, we need to track some things on a mutable\n // object. Usually, we would put that in a useRef hook, but we can stash it in\n // our useState hook instead.\n //\n // To force a re-render, we call forceUpdate({inst}). That works because the\n // new object always fails an equality check.\n\n\n var _useState = useState({\n inst: {\n value: value,\n getSnapshot: getSnapshot\n }\n }),\n inst = _useState[0].inst,\n forceUpdate = _useState[1]; // Track the latest getSnapshot function with a ref. This needs to be updated\n // in the layout phase so we can access it during the tearing check that\n // happens on subscribe.\n\n\n useLayoutEffect(function () {\n inst.value = value;\n inst.getSnapshot = getSnapshot; // Whenever getSnapshot or subscribe changes, we need to check in the\n // commit phase if there was an interleaved mutation. In concurrent mode\n // this can happen all the time, but even in synchronous mode, an earlier\n // effect may have mutated the store.\n\n if (checkIfSnapshotChanged(inst)) {\n // Force a re-render.\n forceUpdate({\n inst: inst\n });\n }\n }, [subscribe, value, getSnapshot]);\n useEffect(function () {\n // Check for changes right before subscribing. Subsequent changes will be\n // detected in the subscription handler.\n if (checkIfSnapshotChanged(inst)) {\n // Force a re-render.\n forceUpdate({\n inst: inst\n });\n }\n\n var handleStoreChange = function () {\n // TODO: Because there is no cross-renderer API for batching updates, it's\n // up to the consumer of this library to wrap their subscription event\n // with unstable_batchedUpdates. Should we try to detect when this isn't\n // the case and print a warning in development?\n // The store changed. Check if the snapshot changed since the last time we\n // read from the store.\n if (checkIfSnapshotChanged(inst)) {\n // Force a re-render.\n forceUpdate({\n inst: inst\n });\n }\n }; // Subscribe to the store and return a clean-up function.\n\n\n return subscribe(handleStoreChange);\n }, [subscribe]);\n useDebugValue(value);\n return value;\n}\n\nfunction checkIfSnapshotChanged(inst) {\n var latestGetSnapshot = inst.getSnapshot;\n var prevValue = inst.value;\n\n try {\n var nextValue = latestGetSnapshot();\n return !objectIs(prevValue, nextValue);\n } catch (error) {\n return true;\n }\n}\n\nfunction useSyncExternalStore$1(subscribe, getSnapshot, getServerSnapshot) {\n // Note: The shim does not use getServerSnapshot, because pre-18 versions of\n // React do not expose a way to check if we're hydrating. So users of the shim\n // will need to track that themselves and return the correct value\n // from `getSnapshot`.\n return getSnapshot();\n}\n\nvar canUseDOM = !!(typeof window !== 'undefined' && typeof window.document !== 'undefined' && typeof window.document.createElement !== 'undefined');\n\nvar isServerEnvironment = !canUseDOM;\n\nvar shim = isServerEnvironment ? useSyncExternalStore$1 : useSyncExternalStore;\nvar useSyncExternalStore$2 = React.useSyncExternalStore !== undefined ? React.useSyncExternalStore : shim;\n\nexports.useSyncExternalStore = useSyncExternalStore$2;\n /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\nif (\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== 'undefined' &&\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop ===\n 'function'\n) {\n __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(new Error());\n}\n \n })();\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('../cjs/use-sync-external-store-shim.production.min.js');\n} else {\n module.exports = require('../cjs/use-sync-external-store-shim.development.js');\n}\n","/**\n * @license React\n * use-sync-external-store-shim/with-selector.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var h=require(\"react\"),n=require(\"use-sync-external-store/shim\");function p(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}var q=\"function\"===typeof Object.is?Object.is:p,r=n.useSyncExternalStore,t=h.useRef,u=h.useEffect,v=h.useMemo,w=h.useDebugValue;\nexports.useSyncExternalStoreWithSelector=function(a,b,e,l,g){var c=t(null);if(null===c.current){var f={hasValue:!1,value:null};c.current=f}else f=c.current;c=v(function(){function a(a){if(!c){c=!0;d=a;a=l(a);if(void 0!==g&&f.hasValue){var b=f.value;if(g(b,a))return k=b}return k=a}b=k;if(q(d,a))return b;var e=l(a);if(void 0!==g&&g(b,e))return b;d=a;return k=e}var c=!1,d,k,m=void 0===e?null:e;return[function(){return a(b())},null===m?void 0:function(){return a(m())}]},[b,e,l,g]);var d=r(a,c[0],c[1]);\nu(function(){f.hasValue=!0;f.value=d},[d]);w(d);return d};\n","/**\n * @license React\n * use-sync-external-store-shim/with-selector.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nif (process.env.NODE_ENV !== \"production\") {\n (function() {\n\n 'use strict';\n\n/* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\nif (\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== 'undefined' &&\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart ===\n 'function'\n) {\n __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(new Error());\n}\n var React = require('react');\nvar shim = require('use-sync-external-store/shim');\n\n/**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\nfunction is(x, y) {\n return x === y && (x !== 0 || 1 / x === 1 / y) || x !== x && y !== y // eslint-disable-line no-self-compare\n ;\n}\n\nvar objectIs = typeof Object.is === 'function' ? Object.is : is;\n\nvar useSyncExternalStore = shim.useSyncExternalStore;\n\n// for CommonJS interop.\n\nvar useRef = React.useRef,\n useEffect = React.useEffect,\n useMemo = React.useMemo,\n useDebugValue = React.useDebugValue; // Same as useSyncExternalStore, but supports selector and isEqual arguments.\n\nfunction useSyncExternalStoreWithSelector(subscribe, getSnapshot, getServerSnapshot, selector, isEqual) {\n // Use this to track the rendered snapshot.\n var instRef = useRef(null);\n var inst;\n\n if (instRef.current === null) {\n inst = {\n hasValue: false,\n value: null\n };\n instRef.current = inst;\n } else {\n inst = instRef.current;\n }\n\n var _useMemo = useMemo(function () {\n // Track the memoized state using closure variables that are local to this\n // memoized instance of a getSnapshot function. Intentionally not using a\n // useRef hook, because that state would be shared across all concurrent\n // copies of the hook/component.\n var hasMemo = false;\n var memoizedSnapshot;\n var memoizedSelection;\n\n var memoizedSelector = function (nextSnapshot) {\n if (!hasMemo) {\n // The first time the hook is called, there is no memoized result.\n hasMemo = true;\n memoizedSnapshot = nextSnapshot;\n\n var _nextSelection = selector(nextSnapshot);\n\n if (isEqual !== undefined) {\n // Even if the selector has changed, the currently rendered selection\n // may be equal to the new selection. We should attempt to reuse the\n // current value if possible, to preserve downstream memoizations.\n if (inst.hasValue) {\n var currentSelection = inst.value;\n\n if (isEqual(currentSelection, _nextSelection)) {\n memoizedSelection = currentSelection;\n return currentSelection;\n }\n }\n }\n\n memoizedSelection = _nextSelection;\n return _nextSelection;\n } // We may be able to reuse the previous invocation's result.\n\n\n // We may be able to reuse the previous invocation's result.\n var prevSnapshot = memoizedSnapshot;\n var prevSelection = memoizedSelection;\n\n if (objectIs(prevSnapshot, nextSnapshot)) {\n // The snapshot is the same as last time. Reuse the previous selection.\n return prevSelection;\n } // The snapshot has changed, so we need to compute a new selection.\n\n\n // The snapshot has changed, so we need to compute a new selection.\n var nextSelection = selector(nextSnapshot); // If a custom isEqual function is provided, use that to check if the data\n // has changed. If it hasn't, return the previous selection. That signals\n // to React that the selections are conceptually equal, and we can bail\n // out of rendering.\n\n // If a custom isEqual function is provided, use that to check if the data\n // has changed. If it hasn't, return the previous selection. That signals\n // to React that the selections are conceptually equal, and we can bail\n // out of rendering.\n if (isEqual !== undefined && isEqual(prevSelection, nextSelection)) {\n return prevSelection;\n }\n\n memoizedSnapshot = nextSnapshot;\n memoizedSelection = nextSelection;\n return nextSelection;\n }; // Assigning this to a constant so that Flow knows it can't change.\n\n\n // Assigning this to a constant so that Flow knows it can't change.\n var maybeGetServerSnapshot = getServerSnapshot === undefined ? null : getServerSnapshot;\n\n var getSnapshotWithSelector = function () {\n return memoizedSelector(getSnapshot());\n };\n\n var getServerSnapshotWithSelector = maybeGetServerSnapshot === null ? undefined : function () {\n return memoizedSelector(maybeGetServerSnapshot());\n };\n return [getSnapshotWithSelector, getServerSnapshotWithSelector];\n }, [getSnapshot, getServerSnapshot, selector, isEqual]),\n getSelection = _useMemo[0],\n getServerSelection = _useMemo[1];\n\n var value = useSyncExternalStore(subscribe, getSelection, getServerSelection);\n useEffect(function () {\n inst.hasValue = true;\n inst.value = value;\n }, [value]);\n useDebugValue(value);\n return value;\n}\n\nexports.useSyncExternalStoreWithSelector = useSyncExternalStoreWithSelector;\n /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\nif (\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== 'undefined' &&\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop ===\n 'function'\n) {\n __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(new Error());\n}\n \n })();\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('../cjs/use-sync-external-store-shim/with-selector.production.min.js');\n} else {\n module.exports = require('../cjs/use-sync-external-store-shim/with-selector.development.js');\n}\n","import { createStore } from 'zustand/vanilla';\nexport * from 'zustand/vanilla';\nimport ReactExports from 'react';\nimport useSyncExternalStoreExports from 'use-sync-external-store/shim/with-selector.js';\n\nconst { useDebugValue } = ReactExports;\nconst { useSyncExternalStoreWithSelector } = useSyncExternalStoreExports;\nlet didWarnAboutEqualityFn = false;\nconst identity = (arg) => arg;\nfunction useStore(api, selector = identity, equalityFn) {\n if ((import.meta.env ? import.meta.env.MODE : void 0) !== \"production\" && equalityFn && !didWarnAboutEqualityFn) {\n console.warn(\n \"[DEPRECATED] Use `createWithEqualityFn` instead of `create` or use `useStoreWithEqualityFn` instead of `useStore`. They can be imported from 'zustand/traditional'. https://github.com/pmndrs/zustand/discussions/1937\"\n );\n didWarnAboutEqualityFn = true;\n }\n const slice = useSyncExternalStoreWithSelector(\n api.subscribe,\n api.getState,\n api.getServerState || api.getInitialState,\n selector,\n equalityFn\n );\n useDebugValue(slice);\n return slice;\n}\nconst createImpl = (createState) => {\n if ((import.meta.env ? import.meta.env.MODE : void 0) !== \"production\" && typeof createState !== \"function\") {\n console.warn(\n \"[DEPRECATED] Passing a vanilla store will be unsupported in a future version. Instead use `import { useStore } from 'zustand'`.\"\n );\n }\n const api = typeof createState === \"function\" ? createStore(createState) : createState;\n const useBoundStore = (selector, equalityFn) => useStore(api, selector, equalityFn);\n Object.assign(useBoundStore, api);\n return useBoundStore;\n};\nconst create = (createState) => createState ? createImpl(createState) : createImpl;\nvar react = (createState) => {\n if ((import.meta.env ? import.meta.env.MODE : void 0) !== \"production\") {\n console.warn(\n \"[DEPRECATED] Default export is deprecated. Instead use `import { create } from 'zustand'`.\"\n );\n }\n return create(createState);\n};\n\nexport { create, react as default, useStore };\n","const reduxImpl = (reducer, initial) => (set, _get, api) => {\n api.dispatch = (action) => {\n set((state) => reducer(state, action), false, action);\n return action;\n };\n api.dispatchFromDevtools = true;\n return { dispatch: (...a) => api.dispatch(...a), ...initial };\n};\nconst redux = reduxImpl;\n\nconst trackedConnections = /* @__PURE__ */ new Map();\nconst getTrackedConnectionState = (name) => {\n const api = trackedConnections.get(name);\n if (!api)\n return {};\n return Object.fromEntries(\n Object.entries(api.stores).map(([key, api2]) => [key, api2.getState()])\n );\n};\nconst extractConnectionInformation = (store, extensionConnector, options) => {\n if (store === void 0) {\n return {\n type: \"untracked\",\n connection: extensionConnector.connect(options)\n };\n }\n const existingConnection = trackedConnections.get(options.name);\n if (existingConnection) {\n return { type: \"tracked\", store, ...existingConnection };\n }\n const newConnection = {\n connection: extensionConnector.connect(options),\n stores: {}\n };\n trackedConnections.set(options.name, newConnection);\n return { type: \"tracked\", store, ...newConnection };\n};\nconst devtoolsImpl = (fn, devtoolsOptions = {}) => (set, get, api) => {\n const { enabled, anonymousActionType, store, ...options } = devtoolsOptions;\n let extensionConnector;\n try {\n extensionConnector = (enabled != null ? enabled : (import.meta.env ? import.meta.env.MODE : void 0) !== \"production\") && window.__REDUX_DEVTOOLS_EXTENSION__;\n } catch (e) {\n }\n if (!extensionConnector) {\n if ((import.meta.env ? import.meta.env.MODE : void 0) !== \"production\" && enabled) {\n console.warn(\n \"[zustand devtools middleware] Please install/enable Redux devtools extension\"\n );\n }\n return fn(set, get, api);\n }\n const { connection, ...connectionInformation } = extractConnectionInformation(store, extensionConnector, options);\n let isRecording = true;\n api.setState = (state, replace, nameOrAction) => {\n const r = set(state, replace);\n if (!isRecording)\n return r;\n const action = nameOrAction === void 0 ? { type: anonymousActionType || \"anonymous\" } : typeof nameOrAction === \"string\" ? { type: nameOrAction } : nameOrAction;\n if (store === void 0) {\n connection == null ? void 0 : connection.send(action, get());\n return r;\n }\n connection == null ? void 0 : connection.send(\n {\n ...action,\n type: `${store}/${action.type}`\n },\n {\n ...getTrackedConnectionState(options.name),\n [store]: api.getState()\n }\n );\n return r;\n };\n const setStateFromDevtools = (...a) => {\n const originalIsRecording = isRecording;\n isRecording = false;\n set(...a);\n isRecording = originalIsRecording;\n };\n const initialState = fn(api.setState, get, api);\n if (connectionInformation.type === \"untracked\") {\n connection == null ? void 0 : connection.init(initialState);\n } else {\n connectionInformation.stores[connectionInformation.store] = api;\n connection == null ? void 0 : connection.init(\n Object.fromEntries(\n Object.entries(connectionInformation.stores).map(([key, store2]) => [\n key,\n key === connectionInformation.store ? initialState : store2.getState()\n ])\n )\n );\n }\n if (api.dispatchFromDevtools && typeof api.dispatch === \"function\") {\n let didWarnAboutReservedActionType = false;\n const originalDispatch = api.dispatch;\n api.dispatch = (...a) => {\n if ((import.meta.env ? import.meta.env.MODE : void 0) !== \"production\" && a[0].type === \"__setState\" && !didWarnAboutReservedActionType) {\n console.warn(\n '[zustand devtools middleware] \"__setState\" action type is reserved to set state from the devtools. Avoid using it.'\n );\n didWarnAboutReservedActionType = true;\n }\n originalDispatch(...a);\n };\n }\n connection.subscribe((message) => {\n var _a;\n switch (message.type) {\n case \"ACTION\":\n if (typeof message.payload !== \"string\") {\n console.error(\n \"[zustand devtools middleware] Unsupported action format\"\n );\n return;\n }\n return parseJsonThen(\n message.payload,\n (action) => {\n if (action.type === \"__setState\") {\n if (store === void 0) {\n setStateFromDevtools(action.state);\n return;\n }\n if (Object.keys(action.state).length !== 1) {\n console.error(\n `\n [zustand devtools middleware] Unsupported __setState action format. \n When using 'store' option in devtools(), the 'state' should have only one key, which is a value of 'store' that was passed in devtools(),\n and value of this only key should be a state object. Example: { \"type\": \"__setState\", \"state\": { \"abc123Store\": { \"foo\": \"bar\" } } }\n `\n );\n }\n const stateFromDevtools = action.state[store];\n if (stateFromDevtools === void 0 || stateFromDevtools === null) {\n return;\n }\n if (JSON.stringify(api.getState()) !== JSON.stringify(stateFromDevtools)) {\n setStateFromDevtools(stateFromDevtools);\n }\n return;\n }\n if (!api.dispatchFromDevtools)\n return;\n if (typeof api.dispatch !== \"function\")\n return;\n api.dispatch(action);\n }\n );\n case \"DISPATCH\":\n switch (message.payload.type) {\n case \"RESET\":\n setStateFromDevtools(initialState);\n if (store === void 0) {\n return connection == null ? void 0 : connection.init(api.getState());\n }\n return connection == null ? void 0 : connection.init(getTrackedConnectionState(options.name));\n case \"COMMIT\":\n if (store === void 0) {\n connection == null ? void 0 : connection.init(api.getState());\n return;\n }\n return connection == null ? void 0 : connection.init(getTrackedConnectionState(options.name));\n case \"ROLLBACK\":\n return parseJsonThen(message.state, (state) => {\n if (store === void 0) {\n setStateFromDevtools(state);\n connection == null ? void 0 : connection.init(api.getState());\n return;\n }\n setStateFromDevtools(state[store]);\n connection == null ? void 0 : connection.init(getTrackedConnectionState(options.name));\n });\n case \"JUMP_TO_STATE\":\n case \"JUMP_TO_ACTION\":\n return parseJsonThen(message.state, (state) => {\n if (store === void 0) {\n setStateFromDevtools(state);\n return;\n }\n if (JSON.stringify(api.getState()) !== JSON.stringify(state[store])) {\n setStateFromDevtools(state[store]);\n }\n });\n case \"IMPORT_STATE\": {\n const { nextLiftedState } = message.payload;\n const lastComputedState = (_a = nextLiftedState.computedStates.slice(-1)[0]) == null ? void 0 : _a.state;\n if (!lastComputedState)\n return;\n if (store === void 0) {\n setStateFromDevtools(lastComputedState);\n } else {\n setStateFromDevtools(lastComputedState[store]);\n }\n connection == null ? void 0 : connection.send(\n null,\n // FIXME no-any\n nextLiftedState\n );\n return;\n }\n case \"PAUSE_RECORDING\":\n return isRecording = !isRecording;\n }\n return;\n }\n });\n return initialState;\n};\nconst devtools = devtoolsImpl;\nconst parseJsonThen = (stringified, f) => {\n let parsed;\n try {\n parsed = JSON.parse(stringified);\n } catch (e) {\n console.error(\n \"[zustand devtools middleware] Could not parse the received json\",\n e\n );\n }\n if (parsed !== void 0)\n f(parsed);\n};\n\nconst subscribeWithSelectorImpl = (fn) => (set, get, api) => {\n const origSubscribe = api.subscribe;\n api.subscribe = (selector, optListener, options) => {\n let listener = selector;\n if (optListener) {\n const equalityFn = (options == null ? void 0 : options.equalityFn) || Object.is;\n let currentSlice = selector(api.getState());\n listener = (state) => {\n const nextSlice = selector(state);\n if (!equalityFn(currentSlice, nextSlice)) {\n const previousSlice = currentSlice;\n optListener(currentSlice = nextSlice, previousSlice);\n }\n };\n if (options == null ? void 0 : options.fireImmediately) {\n optListener(currentSlice, currentSlice);\n }\n }\n return origSubscribe(listener);\n };\n const initialState = fn(set, get, api);\n return initialState;\n};\nconst subscribeWithSelector = subscribeWithSelectorImpl;\n\nconst combine = (initialState, create) => (...a) => Object.assign({}, initialState, create(...a));\n\nfunction createJSONStorage(getStorage, options) {\n let storage;\n try {\n storage = getStorage();\n } catch (e) {\n return;\n }\n const persistStorage = {\n getItem: (name) => {\n var _a;\n const parse = (str2) => {\n if (str2 === null) {\n return null;\n }\n return JSON.parse(str2, options == null ? void 0 : options.reviver);\n };\n const str = (_a = storage.getItem(name)) != null ? _a : null;\n if (str instanceof Promise) {\n return str.then(parse);\n }\n return parse(str);\n },\n setItem: (name, newValue) => storage.setItem(\n name,\n JSON.stringify(newValue, options == null ? void 0 : options.replacer)\n ),\n removeItem: (name) => storage.removeItem(name)\n };\n return persistStorage;\n}\nconst toThenable = (fn) => (input) => {\n try {\n const result = fn(input);\n if (result instanceof Promise) {\n return result;\n }\n return {\n then(onFulfilled) {\n return toThenable(onFulfilled)(result);\n },\n catch(_onRejected) {\n return this;\n }\n };\n } catch (e) {\n return {\n then(_onFulfilled) {\n return this;\n },\n catch(onRejected) {\n return toThenable(onRejected)(e);\n }\n };\n }\n};\nconst oldImpl = (config, baseOptions) => (set, get, api) => {\n let options = {\n getStorage: () => localStorage,\n serialize: JSON.stringify,\n deserialize: JSON.parse,\n partialize: (state) => state,\n version: 0,\n merge: (persistedState, currentState) => ({\n ...currentState,\n ...persistedState\n }),\n ...baseOptions\n };\n let hasHydrated = false;\n const hydrationListeners = /* @__PURE__ */ new Set();\n const finishHydrationListeners = /* @__PURE__ */ new Set();\n let storage;\n try {\n storage = options.getStorage();\n } catch (e) {\n }\n if (!storage) {\n return config(\n (...args) => {\n console.warn(\n `[zustand persist middleware] Unable to update item '${options.name}', the given storage is currently unavailable.`\n );\n set(...args);\n },\n get,\n api\n );\n }\n const thenableSerialize = toThenable(options.serialize);\n const setItem = () => {\n const state = options.partialize({ ...get() });\n let errorInSync;\n const thenable = thenableSerialize({ state, version: options.version }).then(\n (serializedValue) => storage.setItem(options.name, serializedValue)\n ).catch((e) => {\n errorInSync = e;\n });\n if (errorInSync) {\n throw errorInSync;\n }\n return thenable;\n };\n const savedSetState = api.setState;\n api.setState = (state, replace) => {\n savedSetState(state, replace);\n void setItem();\n };\n const configResult = config(\n (...args) => {\n set(...args);\n void setItem();\n },\n get,\n api\n );\n let stateFromStorage;\n const hydrate = () => {\n var _a;\n if (!storage)\n return;\n hasHydrated = false;\n hydrationListeners.forEach((cb) => cb(get()));\n const postRehydrationCallback = ((_a = options.onRehydrateStorage) == null ? void 0 : _a.call(options, get())) || void 0;\n return toThenable(storage.getItem.bind(storage))(options.name).then((storageValue) => {\n if (storageValue) {\n return options.deserialize(storageValue);\n }\n }).then((deserializedStorageValue) => {\n if (deserializedStorageValue) {\n if (typeof deserializedStorageValue.version === \"number\" && deserializedStorageValue.version !== options.version) {\n if (options.migrate) {\n return options.migrate(\n deserializedStorageValue.state,\n deserializedStorageValue.version\n );\n }\n console.error(\n `State loaded from storage couldn't be migrated since no migrate function was provided`\n );\n } else {\n return deserializedStorageValue.state;\n }\n }\n }).then((migratedState) => {\n var _a2;\n stateFromStorage = options.merge(\n migratedState,\n (_a2 = get()) != null ? _a2 : configResult\n );\n set(stateFromStorage, true);\n return setItem();\n }).then(() => {\n postRehydrationCallback == null ? void 0 : postRehydrationCallback(stateFromStorage, void 0);\n hasHydrated = true;\n finishHydrationListeners.forEach((cb) => cb(stateFromStorage));\n }).catch((e) => {\n postRehydrationCallback == null ? void 0 : postRehydrationCallback(void 0, e);\n });\n };\n api.persist = {\n setOptions: (newOptions) => {\n options = {\n ...options,\n ...newOptions\n };\n if (newOptions.getStorage) {\n storage = newOptions.getStorage();\n }\n },\n clearStorage: () => {\n storage == null ? void 0 : storage.removeItem(options.name);\n },\n getOptions: () => options,\n rehydrate: () => hydrate(),\n hasHydrated: () => hasHydrated,\n onHydrate: (cb) => {\n hydrationListeners.add(cb);\n return () => {\n hydrationListeners.delete(cb);\n };\n },\n onFinishHydration: (cb) => {\n finishHydrationListeners.add(cb);\n return () => {\n finishHydrationListeners.delete(cb);\n };\n }\n };\n hydrate();\n return stateFromStorage || configResult;\n};\nconst newImpl = (config, baseOptions) => (set, get, api) => {\n let options = {\n storage: createJSONStorage(() => localStorage),\n partialize: (state) => state,\n version: 0,\n merge: (persistedState, currentState) => ({\n ...currentState,\n ...persistedState\n }),\n ...baseOptions\n };\n let hasHydrated = false;\n const hydrationListeners = /* @__PURE__ */ new Set();\n const finishHydrationListeners = /* @__PURE__ */ new Set();\n let storage = options.storage;\n if (!storage) {\n return config(\n (...args) => {\n console.warn(\n `[zustand persist middleware] Unable to update item '${options.name}', the given storage is currently unavailable.`\n );\n set(...args);\n },\n get,\n api\n );\n }\n const setItem = () => {\n const state = options.partialize({ ...get() });\n return storage.setItem(options.name, {\n state,\n version: options.version\n });\n };\n const savedSetState = api.setState;\n api.setState = (state, replace) => {\n savedSetState(state, replace);\n void setItem();\n };\n const configResult = config(\n (...args) => {\n set(...args);\n void setItem();\n },\n get,\n api\n );\n api.getInitialState = () => configResult;\n let stateFromStorage;\n const hydrate = () => {\n var _a, _b;\n if (!storage)\n return;\n hasHydrated = false;\n hydrationListeners.forEach((cb) => {\n var _a2;\n return cb((_a2 = get()) != null ? _a2 : configResult);\n });\n const postRehydrationCallback = ((_b = options.onRehydrateStorage) == null ? void 0 : _b.call(options, (_a = get()) != null ? _a : configResult)) || void 0;\n return toThenable(storage.getItem.bind(storage))(options.name).then((deserializedStorageValue) => {\n if (deserializedStorageValue) {\n if (typeof deserializedStorageValue.version === \"number\" && deserializedStorageValue.version !== options.version) {\n if (options.migrate) {\n return options.migrate(\n deserializedStorageValue.state,\n deserializedStorageValue.version\n );\n }\n console.error(\n `State loaded from storage couldn't be migrated since no migrate function was provided`\n );\n } else {\n return deserializedStorageValue.state;\n }\n }\n }).then((migratedState) => {\n var _a2;\n stateFromStorage = options.merge(\n migratedState,\n (_a2 = get()) != null ? _a2 : configResult\n );\n set(stateFromStorage, true);\n return setItem();\n }).then(() => {\n postRehydrationCallback == null ? void 0 : postRehydrationCallback(stateFromStorage, void 0);\n stateFromStorage = get();\n hasHydrated = true;\n finishHydrationListeners.forEach((cb) => cb(stateFromStorage));\n }).catch((e) => {\n postRehydrationCallback == null ? void 0 : postRehydrationCallback(void 0, e);\n });\n };\n api.persist = {\n setOptions: (newOptions) => {\n options = {\n ...options,\n ...newOptions\n };\n if (newOptions.storage) {\n storage = newOptions.storage;\n }\n },\n clearStorage: () => {\n storage == null ? void 0 : storage.removeItem(options.name);\n },\n getOptions: () => options,\n rehydrate: () => hydrate(),\n hasHydrated: () => hasHydrated,\n onHydrate: (cb) => {\n hydrationListeners.add(cb);\n return () => {\n hydrationListeners.delete(cb);\n };\n },\n onFinishHydration: (cb) => {\n finishHydrationListeners.add(cb);\n return () => {\n finishHydrationListeners.delete(cb);\n };\n }\n };\n if (!options.skipHydration) {\n hydrate();\n }\n return stateFromStorage || configResult;\n};\nconst persistImpl = (config, baseOptions) => {\n if (\"getStorage\" in baseOptions || \"serialize\" in baseOptions || \"deserialize\" in baseOptions) {\n if ((import.meta.env ? import.meta.env.MODE : void 0) !== \"production\") {\n console.warn(\n \"[DEPRECATED] `getStorage`, `serialize` and `deserialize` options are deprecated. Use `storage` option instead.\"\n );\n }\n return oldImpl(config, baseOptions);\n }\n return newImpl(config, baseOptions);\n};\nconst persist = persistImpl;\n\nexport { combine, createJSONStorage, devtools, persist, redux, subscribeWithSelector };\n","import { useState, useEffect } from 'react'\nimport { immer } from 'zustand/middleware/immer'\nimport { create } from 'zustand'\nimport { devtools, persist } from 'zustand/middleware'\nimport type { Account } from '../../types'\nimport { PROVIDER_ID } from '../../constants'\n\nexport const walletStoreSelector = (state: WalletStore) => ({\n accounts: state.accounts,\n activeAccount: state.activeAccount,\n setActiveAccount: state.setActiveAccount,\n clearActiveAccount: state.clearActiveAccount,\n addAccounts: state.addAccounts,\n removeAccounts: state.removeAccounts\n})\n\nexport type WalletStore = {\n accounts: Account[]\n activeAccount: Account | null | undefined\n setActiveAccount: (account: Account) => void\n clearActiveAccount: (id: PROVIDER_ID) => void\n addAccounts: (accounts: Account[]) => void\n removeAccounts: (providerId: PROVIDER_ID) => void\n}\n\nconst emptyState: WalletStore = {\n accounts: [],\n activeAccount: undefined,\n setActiveAccount: () => {\n return\n },\n clearActiveAccount: () => {\n return\n },\n addAccounts: () => {\n return\n },\n removeAccounts: () => {\n return\n }\n}\n\nexport const useWalletStore = create<WalletStore>()(\n immer(\n persist(\n devtools((set, _get) => ({\n accounts: [],\n activeAccount: null,\n setActiveAccount: (account: Account) => {\n set((state) => {\n state.activeAccount = account\n })\n },\n clearActiveAccount: (id: PROVIDER_ID) => {\n set((state) => {\n if (id === state.activeAccount?.providerId) state.activeAccount = null\n })\n },\n addAccounts: (accounts: Account[]) => {\n set((state) => {\n const uniqueAccounts = [...state.accounts, ...accounts].reduce<Account[]>(\n (uniqueAccounts, o) => {\n if (\n !uniqueAccounts.some(\n (obj) => obj.providerId === o.providerId && obj.address === o.address\n )\n ) {\n uniqueAccounts.push(o)\n }\n return uniqueAccounts\n },\n []\n )\n\n // Remove duplicates that occur when a user reconnects Pera wallet\n state.accounts = uniqueAccounts\n })\n },\n removeAccounts: (providerId: PROVIDER_ID) => {\n set((state) => {\n state.accounts = state.accounts.filter((account) => account.providerId !== providerId)\n })\n }\n })),\n {\n name: 'txnlab-use-wallet', // key in local storage\n version: 1 // increment to deprecate stored data\n }\n )\n )\n)\n\n// This a fix to ensure zustand never hydrates the store before React hydrates the page\n// otherwise it causes a mismatch between SSR and client render\n// see: https://github.com/pmndrs/zustand/issues/1145\nexport const useHydratedWalletStore = ((selector, compare) => {\n const store = useWalletStore(selector, compare)\n const [hydrated, setHydrated] = useState(false)\n\n useEffect(() => setHydrated(true), [])\n\n return hydrated ? store : selector(emptyState)\n}) as typeof useWalletStore\n","import { create } from 'zustand'\n\ntype DebugStore = {\n debug: boolean\n setDebug: (debug: boolean) => void\n}\n\nexport const useDebugStore = create<DebugStore>((set) => ({\n debug: false,\n setDebug: (debug: boolean) => set({ debug })\n}))\n","import { ProviderConfig, ProviderConfigMapping } from '../types'\nimport { useDebugStore } from '../store/index'\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const debugLog = (...args: any[]) => {\n const { debug } = useDebugStore.getState()\n\n if (debug) {\n console.log('%c[USE-WALLET]', 'color: #FF602E; font-weight: bold;', ...(args as unknown[]))\n }\n}\n\nexport const getProviderList = <T extends keyof ProviderConfigMapping>(\n providers: Array<T | ProviderConfig<T>>\n) => {\n return providers\n .map((provider) => {\n if (typeof provider === 'string') {\n return provider\n }\n\n return provider.id\n })\n .map((id) => id.toUpperCase())\n .join(', ')\n}\n","export const ICON =\n 'data:image/svg+xml;base64,' +\n 'PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIGlkPSJMYXllcl8xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxNzcgMTg3Ij48cmVjdCB4PSItMTEuMzgiIHk9Ii0yNS45NyIgd2lkdGg9IjIwMC4wMiIgaGVpZ2h0PSIyMzEuNTMiIHN0eWxlPSJmaWxsOiNmZTU7Ii8+PHBhdGggZD0iTTk0LjA1LDU5LjYxYzIuMDUsOC40OCwxLjM2LDE1Ljk0LTEuNTUsMTYuNjYtMi45LC43Mi02LjkxLTUuNTctOC45Ni0xNC4wNS0yLjA1LTguNDgtMS4zNi0xNS45NCwxLjU1LTE2LjY2LDIuOS0uNzIsNi45MSw1LjU3LDguOTYsMTQuMDVaIiBzdHlsZT0iZmlsbDojMWMxYzFjOyIvPjxwYXRoIGQ9Ik0xMjcuODUsNjYuOWMtNC41My00LjgxLTEzLjU1LTMuNS0yMC4xNSwyLjkxLTYuNTksNi40MS04LjI2LDE1LjUtMy43MywyMC4zMSw0LjUzLDQuOCwxMy41NSwzLjUsMjAuMTUtMi45MXM4LjI2LTE1LjUsMy43My0yMC4zMVoiIHN0eWxlPSJmaWxsOiMxYzFjMWM7Ii8+PHBhdGggZD0iTTkxLjc5LDE0MC40N2MyLjktLjcyLDMuNDktOC42LDEuMzItMTcuNjEtMi4xNy05LTYuMjktMTUuNzEtOS4xOS0xNC45OS0yLjksLjcyLTMuNDksOC42LTEuMzIsMTcuNjEsMi4xNyw5LDYuMjksMTUuNzEsOS4xOSwxNC45OVoiIHN0eWxlPSJmaWxsOiMxYzFjMWM7Ii8+PHBhdGggZD0iTTYyLjIyLDcxLjNjOC4zNywyLjQ3LDE0LjQ4LDYuOCwxMy42Niw5LjY3LS44MywyLjg3LTguMjgsMy4yLTE2LjY1LC43My04LjM3LTIuNDctMTQuNDgtNi44LTEzLjY2LTkuNjcsLjgzLTIuODcsOC4yOC0zLjIsMTYuNjUtLjczWiIgc3R5bGU9ImZpbGw6IzFjMWMxYzsiLz48cGF0aCBkPSJNMTE2LjU0LDEwMy43NGM4Ljg4LDIuNjIsMTUuNDEsNy4wNywxNC41OSw5Ljk0LS44MywyLjg3LTguNywzLjA4LTE3LjU4LC40Ni04Ljg4LTIuNjItMTUuNDEtNy4wNy0xNC41OS05Ljk0LC44My0yLjg3LDguNy0zLjA4LDE3LjU4LS40NloiIHN0eWxlPSJmaWxsOiMxYzFjMWM7Ii8+PHBhdGggZD0iTTcxLjY0LDk3LjcxYy0yLjA4LTIuMTUtOC44OCwuOTgtMTUuMiw2Ljk5LTYuMzIsNi4wMS05Ljc2LDEyLjYzLTcuNjksMTQuNzgsMi4wOCwyLjE1LDguODgtLjk4LDE1LjItNi45OSw2LjMyLTYuMDEsOS43Ni0xMi42Myw3LjY5LTE0Ljc4WiIgc3R5bGU9ImZpbGw6IzFjMWMxYzsiLz48L3N2Zz4='\n","/**\n * Documentation:\n * https://github.com/perawallet/connect\n */\nimport Algod, { getAlgodClient } from '../../algod'\nimport BaseClient from '../base'\nimport { DEFAULT_NETWORK, PROVIDER_ID } from '../../constants'\nimport { debugLog } from '../../utils/debugLog'\nimport { ICON } from './constants'\nimport type { PeraWalletConnect } from '@perawallet/connect'\nimport type { DecodedSignedTransaction, DecodedTransaction, Network } from '../../types/node'\nimport type { InitParams } from '../../types/providers'\nimport type { Wallet } from '../../types/wallet'\nimport type {\n PeraTransaction,\n PeraWalletClientConstructor,\n PeraWalletConnectOptions\n} from './types'\n\nclass PeraWalletClient extends BaseClient {\n #client: PeraWalletConnect\n clientOptions?: PeraWalletConnectOptions\n network: Network\n\n constructor({\n metadata,\n client,\n clientOptions,\n algosdk,\n algodClient,\n network\n }: PeraWalletClientConstructor) {\n super(metadata, algosdk, algodClient)\n this.#client = client\n this.clientOptions = clientOptions\n this.network = network\n this.metadata = PeraWalletClient.metadata\n }\n\n static metadata = {\n id: PROVIDER_ID.PERA,\n name: 'Pera',\n icon: ICON,\n isWalletConnect: true\n }\n\n static async init({\n clientOptions,\n algodOptions,\n clientStatic,\n getDynamicClient,\n algosdkStatic,\n network = DEFAULT_NETWORK\n }: InitParams<PROVIDER_ID.PERA>): Promise<BaseClient | null> {\n try {\n debugLog(`${PROVIDER_ID.PERA.toUpperCase()} initializing...`)\n\n let PeraWalletConnect\n if (clientStatic) {\n PeraWalletConnect = clientStatic\n } else if (getDynamicClient) {\n PeraWalletConnect = await getDynamicClient()\n } else {\n throw new Error(\n 'Pera Wallet provider missing required property: clientStatic or getDynamicClient'\n )\n }\n\n const algosdk = algosdkStatic || (await Algod.init(algodOptions)).algosdk\n const algodClient = getAlgodClient(algosdk, algodOptions)\n\n const peraWallet = new PeraWalletConnect({\n ...(clientOptions && clientOptions)\n })\n\n const provider = new PeraWalletClient({\n metadata: PeraWalletClient.metadata,\n client: peraWallet,\n clientOptions,\n algosdk,\n algodClient,\n network\n })\n\n debugLog(`${PROVIDER_ID.PERA.toUpperCase()} initialized`, '✅')\n\n return provider\n } catch (e) {\n console.error('Error initializing...', e)\n return null\n }\n }\n\n async connect(onDisconnect: () => void): Promise<Wallet> {\n const accounts = await this.#client.connect()\n\n this.#client.connector?.on('disconnect', onDisconnect)\n\n if (accounts.length === 0) {\n throw new Error(`No accounts found for ${PeraWalletClient.metadata.id}`)\n }\n\n const mappedAccounts = accounts.map((address: string, index: number) => ({\n name: `Pera Wallet ${index + 1}`,\n address,\n providerId: PeraWalletClient.metadata.id\n }))\n\n return {\n ...PeraWalletClient.metadata,\n accounts: mappedAccounts\n }\n }\n\n async reconnect(onDisconnect: () => void) {\n const accounts = await this.#client.reconnectSession().catch(console.info)\n\n this.#client.connector?.on('disconnect', onDisconnect)\n\n if (!accounts) {\n onDisconnect()\n return null\n }\n\n return {\n ...PeraWalletClient.metadata,\n accounts: accounts.map((address: string, index: number) => ({\n name: `Pera Wallet ${index + 1}`,\n address,\n providerId: PeraWalletClient.metadata.id\n }))\n }\n }\n\n async disconnect() {\n await this.#client.disconnect()\n }\n\n async signTransactions(\n connectedAccounts: string[],\n txnGroups: Uint8Array[] | Uint8Array[][],\n indexesToSign?: number[],\n returnGroup = true\n ) {\n // If txnGroups is a nested array, flatten it\n const transactions: Uint8Array[] = Array.isArray(txnGroups[0])\n ? (txnGroups as Uint8Array[][]).flatMap((txn) => txn)\n : (txnGroups as Uint8Array[])\n\n // Decode the transactions to access their properties.\n const decodedTxns = transactions.map((txn) => {\n return this.algosdk.decodeObj(txn)\n }) as Array<DecodedTransaction | DecodedSignedTransaction>\n\n const signedIndexes: number[] = []\n\n // Marshal the transactions,\n // and add the signers property if they shouldn't be signed.\n const txnsToSign = decodedTxns.reduce<PeraTransaction[]>((acc, txn, i) => {\n const isSigned = 'txn' in txn\n\n // If the indexes to be signed is specified, designate that it should be signed\n if (indexesToSign && indexesToSign.length && indexesToSign.includes(i)) {\n signedIndexes.push(i)\n acc.push({\n txn: this.algosdk.decodeUnsignedTransaction(transactions[i])\n })\n // If the indexes to be signed is specified, but it's not included in it,\n // designate that it should not be signed\n } else if (indexesToSign && indexesToSign.length && !indexesToSign.includes(i)) {\n acc.push({\n txn: isSigned\n ? this.algosdk.decodeSignedTransaction(transactions[i]).txn\n : this.algosdk.decodeUnsignedTransaction(transactions[i]),\n signers: []\n })\n // If the transaction is unsigned and is to be sent from a connected account,\n // designate that it should be signed\n } else if (!isSigned && connectedAccounts.includes(this.algosdk.encodeAddress(txn['snd']))) {\n signedIndexes.push(i)\n acc.push({\n txn: this.algosdk.decodeUnsignedTransaction(transactions[i])\n })\n // Otherwise, designate that it should not be signed\n } else if (isSigned) {\n acc.push({\n txn: this.algosdk.decodeSignedTransaction(transactions[i]).txn,\n signers: []\n })\n } else if (!isSigned) {\n acc.push({\n txn: this.algosdk.decodeUnsignedTransaction(transactions[i]),\n signers: []\n })\n }\n\n return acc\n }, [])\n\n // Sign them with the client.\n const result = await this.#client.signTransaction([txnsToSign])\n\n // Join the newly signed transactions with the original group of transactions.\n const signedTxns = transactions.reduce<Uint8Array[]>((acc, txn, i) => {\n if (signedIndexes.includes(i)) {\n const signedByUser = result.shift()\n signedByUser && acc.push(signedByUser)\n } else if (returnGroup) {\n acc.push(transactions[i])\n }\n\n return acc\n }, [])\n\n return signedTxns\n }\n}\n\nexport default PeraWalletClient\n","export const ICON =\n 'data:image/png;base64,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'\n","/**\n * Documentation:\n * https://github.com/RDinitiativ/daffiwallet_connect\n */\nimport Algod, { getAlgodClient } from '../../algod'\nimport BaseClient from '../base'\nimport { DEFAULT_NETWORK, PROVIDER_ID } from '../../constants'\nimport { debugLog } from '../../utils/debugLog'\nimport { ICON } from './constants'\nimport type { DaffiWalletConnect } from '@daffiwallet/connect'\nimport type { DecodedSignedTransaction, DecodedTransaction, Network } from '../../types/node'\nimport type { InitParams } from '../../types/providers'\nimport type { Wallet } from '../../types/wallet'\nimport type {\n DaffiTransaction,\n DaffiWalletClientConstructor,\n DaffiWalletConnectOptions\n} from './types'\n\nclass DaffiWalletClient extends BaseClient {\n #client: DaffiWalletConnect\n clientOptions?: DaffiWalletConnectOptions\n network: Network\n\n constructor({\n metadata,\n client,\n clientOptions,\n algosdk,\n algodClient,\n network\n }: DaffiWalletClientConstructor) {\n super(metadata, algosdk, algodClient)\n this.#client = client\n this.clientOptions = clientOptions\n this.network = network\n this.metadata = DaffiWalletClient.metadata\n }\n\n static metadata = {\n id: PROVIDER_ID.DAFFI,\n name: 'Daffi',\n icon: ICON,\n isWalletConnect: true\n }\n\n static async init({\n clientOptions,\n algodOptions,\n clientStatic,\n getDynamicClient,\n algosdkStatic,\n network = DEFAULT_NETWORK\n }: InitParams<PROVIDER_ID.DAFFI>) {\n try {\n debugLog(`${PROVIDER_ID.DAFFI.toUpperCase()} initializing...`)\n\n let DaffiWalletConnect\n if (clientStatic) {\n DaffiWalletConnect = clientStatic\n } else if (getDynamicClient) {\n DaffiWalletConnect = await getDynamicClient()\n } else {\n throw new Error(\n 'Daffi Wallet provider missing required property: clientStatic or getDynamicClient'\n )\n }\n\n const algosdk = algosdkStatic || (await Algod.init(algodOptions)).algosdk\n const algodClient = getAlgodClient(algosdk, algodOptions)\n\n const daffiWallet = new DaffiWalletConnect({\n ...(clientOptions && clientOptions)\n })\n\n const provider = new DaffiWalletClient({\n metadata: DaffiWalletClient.metadata,\n client: daffiWallet,\n clientOptions,\n algosdk,\n algodClient,\n network\n })\n\n debugLog(`${PROVIDER_ID.DAFFI.toUpperCase()} initialized`, '✅')\n\n return provider\n } catch (e) {\n console.error('Error initializing...', e)\n return null\n }\n }\n\n async connect(onDisconnect: () => void): Promise<Wallet> {\n const accounts = await this.#client.connect()\n\n this.#client.connector?.on('disconnect', onDisconnect)\n\n if (accounts.length === 0) {\n throw new Error(`No accounts found for ${DaffiWalletClient.metadata.id}`)\n }\n\n const mappedAccounts = accounts.map((address: string, index: number) => ({\n name: `Daffi Wallet ${index + 1}`,\n address,\n providerId: DaffiWalletClient.metadata.id\n }))\n\n return {\n ...DaffiWalletClient.metadata,\n accounts: mappedAccounts\n }\n }\n\n async reconnect(onDisconnect: () => void) {\n const accounts = await this.#client.reconnectSession().catch(console.info)\n\n this.#client.connector?.on('disconnect', onDisconnect)\n\n if (!accounts) {\n onDisconnect()\n return null\n }\n\n return {\n ...DaffiWalletClient.metadata,\n accounts: accounts.map((address: string, index: number) => ({\n name: `Daffi Wallet ${index + 1}`,\n address,\n providerId: DaffiWalletClient.metadata.id\n }))\n }\n }\n\n async disconnect() {\n await this.#client.disconnect()\n }\n\n async signTransactions(\n connectedAccounts: string[],\n txnGroups: Uint8Array[] | Uint8Array[][],\n indexesToSign?: number[],\n returnGroup = true\n ) {\n // If txnGroups is a nested array, flatten it\n const transactions: Uint8Array[] = Array.isArray(txnGroups[0])\n ? (txnGroups as Uint8Array[][]).flatMap((txn) => txn)\n : (txnGroups as Uint8Array[])\n\n // Decode the transactions to access their properties.\n const decodedTxns = transactions.map((txn) => {\n return this.algosdk.decodeObj(txn)\n }) as Array<DecodedTransaction | DecodedSignedTransaction>\n\n const signedIndexes: number[] = []\n\n // Marshal the transactions,\n // and add the signers property if they shouldn't be signed.\n const txnsToSign = decodedTxns.reduce<DaffiTransaction[]>((acc, txn, i) => {\n const isSigned = 'txn' in txn\n\n // If the indexes to be signed is specified, designate that it should be signed\n if (indexesToSign && indexesToSign.length && indexesToSign.includes(i)) {\n signedIndexes.push(i)\n acc.push({\n txn: this.algosdk.decodeUnsignedTransaction(transactions[i])\n })\n // If the indexes to be signed is specified, but it's not included in it,\n // designate that it should not be signed\n } else if (indexesToSign && indexesToSign.length && !indexesToSign.includes(i)) {\n acc.push({\n txn: isSigned\n ? this.algosdk.decodeSignedTransaction(transactions[i]).txn\n : this.algosdk.decodeUnsignedTransaction(transactions[i]),\n signers: []\n })\n // If the transaction is unsigned and is to be sent from a connected account,\n // designate that it should be signed\n } else if (!isSigned && connectedAccounts.includes(this.algosdk.encodeAddress(txn['snd']))) {\n signedIndexes.push(i)\n acc.push({\n txn: this.algosdk.decodeUnsignedTransaction(transactions[i])\n })\n // Otherwise, designate that it should not be signed\n } else if (isSigned) {\n acc.push({\n txn: this.algosdk.decodeSignedTransaction(transactions[i]).txn,\n signers: []\n })\n } else if (!isSigned) {\n acc.push({\n txn: this.algosdk.decodeUnsignedTransaction(transactions[i]),\n signers: []\n })\n }\n\n return acc\n }, [])\n\n // Sign them with the client.\n const result = await this.#client.signTransaction([txnsToSign])\n\n // Join the newly signed transactions with the original group of transactions.\n const signedTxns = transactions.reduce<Uint8Array[]>((acc, txn, i) => {\n if (signedIndexes.includes(i)) {\n const signedByUser = result.shift()\n signedByUser && acc.push(signedByUser)\n } else if (returnGroup) {\n acc.push(transactions[i])\n }\n\n return acc\n }, [])\n\n return signedTxns\n }\n}\n\nexport default DaffiWalletClient\n","export const ICON =\n 'data:image/svg+xml;base64,' +\n 'PHN2ZyB2aWV3Qm94PSIwIDAgMzIgMzIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgogIDxjaXJjbGUgZmlsbD0iIzI0NUVDNiIgY3g9IjE2IiBjeT0iMTYiIHI9IjE2Ii8+CiAgPHBvbHlnb24gZmlsbD0iI0ZGRkZGRiIgcG9pbnRzPSIxMi40LDIxLjIgMTQuNSwyMS4yIDE1LjMsMTkuOSAxNi42LDE3LjYgMTguMSwxNC45IDE5LjksMTEuNyAyMC4yLDExLjIgMjAuMywxMS43IDIyLjksMjEuMiAyNSwyMS4yIDIxLjUsOC45IDIxLjQsOC42IDE5LjUsOC42IDE5LjUsOC43IDE3LjgsMTEuOCAxNiwxNC45IDE1LjgsMTQuMSAxNS4yLDExLjcgMTUuMSwxMS41IDE0LjQsOC45IDE0LjMsOC42IDEyLjQsOC42IDEyLjQsOC43IDEwLjcsMTEuOCA4LjksMTUgNy4xLDE4IDUuMywyMS4yIDcuNCwyMS4yIDkuMiwxOCAxMSwxNC44IDEyLjgsMTEuNiAxMy4xLDExLjEgMTMuMiwxMS42IDEzLjcsMTMuNyAxNC40LDE2LjMgMTQuNiwxNy4yIDE0LjIsMTgiLz4KPC9zdmc+'\n","/**\n * Documentation:\n * https://github.com/randlabs/myalgo-connect\n */\nimport Algod, { getAlgodClient } from '../../algod'\nimport BaseClient from '../base'\nimport { DEFAULT_NETWORK, PROVIDER_ID } from '../../constants'\nimport { debugLog } from '../../utils/debugLog'\nimport { ICON } from './constants'\nimport type MyAlgoConnect from '@randlabs/myalgo-connect'\nimport type { DecodedSignedTransaction, DecodedTransaction, Network } from '../../types/node'\nimport type { InitParams } from '../../types/providers'\nimport type { MyAlgoConnectOptions, MyAlgoWalletClientConstructor } from './types'\n\nclass MyAlgoWalletClient extends BaseClient {\n #client: MyAlgoConnect\n clientOptions?: MyAlgoConnectOptions\n network: Network\n\n constructor({\n metadata,\n client,\n clientOptions,\n algosdk,\n algodClient,\n network\n }: MyAlgoWalletClientConstructor) {\n super(metadata, algosdk, algodClient)\n this.#client = client\n this.clientOptions = clientOptions\n this.network = network\n this.metadata = MyAlgoWalletClient.metadata\n }\n\n static metadata = {\n id: PROVIDER_ID.MYALGO,\n name: 'MyAlgo',\n icon: ICON,\n isWalletConnect: false\n }\n\n static async init({\n clientOptions,\n algodOptions,\n clientStatic,\n getDynamicClient,\n algosdkStatic,\n network = DEFAULT_NETWORK\n }: InitParams<PROVIDER_ID.MYALGO>): Promise<BaseClient | null> {\n try {\n debugLog(`${PROVIDER_ID.MYALGO.toUpperCase()} initializing...`)\n\n let MyAlgoConnect\n if (clientStatic) {\n MyAlgoConnect = clientStatic\n } else if (getDynamicClient) {\n MyAlgoConnect = await getDynamicClient()\n } else {\n throw new Error(\n 'MyAlgo Wallet provider missing required property: clientStatic or getDynamicClient'\n )\n }\n\n const algosdk = algosdkStatic || (await Algod.init(algodOptions)).algosdk\n const algodClient = getAlgodClient(algosdk, algodOptions)\n\n const myAlgo = new MyAlgoConnect({\n ...(clientOptions ? clientOptions : { disableLedgerNano: false })\n })\n\n const provider = new MyAlgoWalletClient({\n metadata: MyAlgoWalletClient.metadata,\n client: myAlgo,\n clientOptions,\n algosdk: algosdk,\n algodClient: algodClient,\n network\n })\n\n debugLog(`${PROVIDER_ID.MYALGO.toUpperCase()} initialized`, '✅')\n\n return provider\n } catch (e) {\n console.error('Error initializing...', e)\n return null\n }\n }\n\n async connect() {\n const accounts = await this.#client.connect()\n\n if (accounts.length === 0) {\n throw new Error(`No accounts found for ${MyAlgoWalletClient.metadata.id}`)\n }\n\n const mappedAccounts = accounts.map((account) => ({\n ...account,\n providerId: MyAlgoWalletClient.metadata.id\n }))\n\n return {\n ...MyAlgoWalletClient.metadata,\n accounts: mappedAccounts\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/require-await\n async reconnect() {\n return null\n }\n\n // eslint-disable-next-line @typescript-eslint/require-await\n async disconnect() {\n return\n }\n\n async signTransactions(\n connectedAccounts: string[],\n transactions: Uint8Array[],\n indexesToSign?: number[],\n returnGroup = true\n ) {\n // Decode the transactions to access their properties.\n const decodedTxns = transactions.map((txn) => {\n return this.algosdk.decodeObj(txn)\n }) as Array<DecodedTransaction | DecodedSignedTransaction>\n\n const signedIndexes: number[] = []\n\n // Get the transactions to be signed\n const txnsToSign = decodedTxns.reduce<Uint8Array[]>((acc, txn, i) => {\n const isSigned = 'txn' in txn\n\n // If the indexes to be signed is specified, add it to the transactions to be signed,\n if (indexesToSign && indexesToSign.length && indexesToSign?.includes(i)) {\n signedIndexes.push(i)\n acc.push(transactions[i])\n // Otherwise, if the transaction is unsigned and is to be sent from a connected account,\n // add it to the transactions to be signed\n } else if (!isSigned && connectedAccounts.includes(this.algosdk.encodeAddress(txn['snd']))) {\n signedIndexes.push(i)\n acc.push(transactions[i])\n }\n\n return acc\n }, [])\n\n // Sign them with the client.\n const result = await this.#client.signTransaction(txnsToSign)\n\n const signedTxns = transactions.reduce<Uint8Array[]>((acc, txn, i) => {\n if (signedIndexes.includes(i)) {\n const signedByUser = result.shift()?.blob\n signedByUser && acc.push(signedByUser)\n } else if (returnGroup) {\n acc.push(txn)\n }\n\n return acc\n }, [])\n\n return signedTxns\n }\n}\n\nexport default MyAlgoWalletClient\n","export const ICON =\n 'data:image/svg+xml;base64,' +\n 'PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+Cjxzdmcgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3BhY2U9InByZXNlcnZlIiB4bWxuczpzZXJpZj0iaHR0cDovL3d3dy5zZXJpZi5jb20vIiBzdHlsZT0iZmlsbC1ydWxlOmV2ZW5vZGQ7Y2xpcC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO3N0cm9rZS1taXRlcmxpbWl0OjI7Ij4KICAgIDxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDI0IiBoZWlnaHQ9IjEwMjQiLz4KICAgIDxnIHRyYW5zZm9ybT0ibWF0cml4KDEuNjgyMDksMCwwLDEuNjgyMDksMjI2LjM2OCwyMTIuODE4KSI+CiAgICAgICAgPHBhdGggZD0iTTMyNy4wNDksMjgwLjE5MkwxNjkuNTI0LDEzTDEyLDI4MC4xOTJMMTY5LjUyNCwxODkuMDg0TDMyNy4wNDksMjgwLjE5MloiIHN0eWxlPSJmaWxsOndoaXRlO2ZpbGwtcnVsZTpub256ZXJvOyIvPgogICAgPC9nPgogICAgPGcgdHJhbnNmb3JtPSJtYXRyaXgoMS42ODIwOSwwLDAsMS42ODIwOSwyMjYuMzY4LDIxMi44MTgpIj4KICAgICAgICA8cGF0aCBkPSJNMjk5LjU0NiwzMDdMMTY5LjUyNSwyMzguNDczTDM5LjUwNCwzMDdMMTY5LjUyNSwyNjQuNjdMMjk5LjU0NiwzMDdaIiBzdHlsZT0iZmlsbDp3aGl0ZTtmaWxsLXJ1bGU6bm9uemVybzsiLz4KICAgIDwvZz4KPC9zdmc+Cg=='\n","/**\n * Helpful resources:\n * https://github.com/blockshake-io/defly-connect\n */\nimport Algod, { getAlgodClient } from '../../algod'\nimport BaseClient from '../base'\nimport { DEFAULT_NETWORK, PROVIDER_ID } from '../../constants'\nimport { debugLog } from '../../utils/debugLog'\nimport { ICON } from './constants'\nimport type { DeflyWalletConnect } from '@blockshake/defly-connect'\nimport type { DecodedSignedTransaction, DecodedTransaction, Network } from '../../types/node'\nimport type { InitParams } from '../../types/providers'\nimport type { Wallet } from '../../types/wallet'\nimport type {\n DeflyTransaction,\n DeflyWalletClientConstructor,\n DeflyWalletConnectOptions\n} from './types'\n\nclass DeflyWalletClient extends BaseClient {\n #client: DeflyWalletConnect\n clientOptions?: DeflyWalletConnectOptions\n network: Network\n\n constructor({\n metadata,\n client,\n clientOptions,\n algosdk,\n algodClient,\n network\n }: DeflyWalletClientConstructor) {\n super(metadata, algosdk, algodClient)\n this.#client = client\n this.clientOptions = clientOptions\n this.network = network\n this.metadata = DeflyWalletClient.metadata\n }\n\n static metadata = {\n id: PROVIDER_ID.DEFLY,\n name: 'Defly',\n icon: ICON,\n isWalletConnect: true\n }\n\n static async init({\n clientOptions,\n algodOptions,\n clientStatic,\n getDynamicClient,\n algosdkStatic,\n network = DEFAULT_NETWORK\n }: InitParams<PROVIDER_ID.DEFLY>): Promise<BaseClient | null> {\n try {\n debugLog(`${PROVIDER_ID.DEFLY.toUpperCase()} initializing...`)\n\n let DeflyWalletConnect\n if (clientStatic) {\n DeflyWalletConnect = clientStatic\n } else if (getDynamicClient) {\n DeflyWalletConnect = await getDynamicClient()\n } else {\n throw new Error(\n 'Defly Wallet provider missing required property: clientStatic or getDynamicClient'\n )\n }\n\n const algosdk = algosdkStatic || (await Algod.init(algodOptions)).algosdk\n const algodClient = getAlgodClient(algosdk, algodOptions)\n\n const deflyWallet = new DeflyWalletConnect({\n ...(clientOptions && clientOptions)\n })\n\n const provider = new DeflyWalletClient({\n metadata: DeflyWalletClient.metadata,\n client: deflyWallet,\n algosdk,\n algodClient,\n network\n })\n\n debugLog(`${PROVIDER_ID.DEFLY.toUpperCase()} initialized`, '✅')\n\n return provider\n } catch (e) {\n console.error('Error initializing...', e)\n return null\n }\n }\n\n async connect(onDisconnect: () => void): Promise<Wallet> {\n const accounts = await this.#client.connect().catch(console.info)\n\n this.#client.connector?.on('disconnect', onDisconnect)\n\n if (!accounts || accounts.length === 0) {\n throw new Error(`No accounts found for ${DeflyWalletClient.metadata.id}`)\n }\n\n const mappedAccounts = accounts.map((address: string, index: number) => ({\n name: `Defly Wallet ${index + 1}`,\n address,\n providerId: DeflyWalletClient.metadata.id\n }))\n\n return {\n ...DeflyWalletClient.metadata,\n accounts: mappedAccounts\n }\n }\n\n async reconnect(onDisconnect: () => void) {\n const accounts = await this.#client.reconnectSession().catch(console.info)\n this.#client.connector?.on('disconnect', onDisconnect)\n\n if (!accounts) {\n return null\n }\n\n return {\n ...DeflyWalletClient.metadata,\n accounts: accounts.map((address: string, index: number) => ({\n name: `Defly Wallet ${index + 1}`,\n address,\n providerId: DeflyWalletClient.metadata.id\n }))\n }\n }\n\n async disconnect() {\n await this.#client.disconnect()\n }\n\n async signTransactions(\n connectedAccounts: string[],\n txnGroups: Uint8Array[] | Uint8Array[][],\n indexesToSign?: number[],\n returnGroup = true\n ) {\n // If txnGroups is a nested array, flatten it\n const transactions: Uint8Array[] = Array.isArray(txnGroups[0])\n ? (txnGroups as Uint8Array[][]).flatMap((txn) => txn)\n : (txnGroups as Uint8Array[])\n\n // Decode the transactions to access their properties.\n const decodedTxns = transactions.map((txn) => {\n return this.algosdk.decodeObj(txn)\n }) as Array<DecodedTransaction | DecodedSignedTransaction>\n\n const signedIndexes: number[] = []\n\n // Marshal the transactions,\n // and add the signers property if they shouldn't be signed.\n const txnsToSign = decodedTxns.reduce<DeflyTransaction[]>((acc, txn, i) => {\n const isSigned = 'txn' in txn\n\n // If the indexes to be signed is specified, designate that it should be signed\n if (indexesToSign && indexesToSign.length && indexesToSign.includes(i)) {\n signedIndexes.push(i)\n acc.push({\n txn: this.algosdk.decodeUnsignedTransaction(transactions[i])\n })\n // If the indexes to be signed is specified, but it's not included in it,\n // designate that it should not be signed\n } else if (indexesToSign && indexesToSign.length && !indexesToSign.includes(i)) {\n acc.push({\n txn: isSigned\n ? this.algosdk.decodeSignedTransaction(transactions[i]).txn\n : this.algosdk.decodeUnsignedTransaction(transactions[i]),\n signers: []\n })\n // If the transaction is unsigned and is to be sent from a connected account,\n // designate that it should be signed\n } else if (!isSigned && connectedAccounts.includes(this.algosdk.encodeAddress(txn['snd']))) {\n signedIndexes.push(i)\n acc.push({\n txn: this.algosdk.decodeUnsignedTransaction(transactions[i])\n })\n // Otherwise, designate that it should not be signed\n } else if (isSigned) {\n acc.push({\n txn: this.algosdk.decodeSignedTransaction(transactions[i]).txn,\n signers: []\n })\n } else if (!isSigned) {\n acc.push({\n txn: this.algosdk.decodeUnsignedTransaction(transactions[i]),\n signers: []\n })\n }\n\n return acc\n }, [])\n\n // Sign them with the client.\n const result = await this.#client.signTransaction([txnsToSign])\n\n // Join the newly signed transactions with the original group of transactions.\n const signedTxns = transactions.reduce<Uint8Array[]>((acc, txn, i) => {\n if (signedIndexes.includes(i)) {\n const signedByUser = result.shift()\n signedByUser && acc.push(signedByUser)\n } else if (returnGroup) {\n acc.push(transactions[i])\n }\n\n return acc\n }, [])\n\n return signedTxns\n }\n}\n\nexport default DeflyWalletClient\n","export const ICON =\n 'data:image/svg+xml;base64,' +\n 'PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI2LjUuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgoJIHZpZXdCb3g9IjAgMCAzMDAgMzAwIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAzMDAgMzAwOyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+CjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+Cgkuc3Qwe2ZpbGw6dXJsKCNTVkdJRF8xXyk7fQoJLnN0MXtmaWxsOnVybCgjU1ZHSURfMDAwMDAwNDM0MjYxNjcxNDAxMDY1ODIyNzAwMDAwMDIxMzA3Njg5MDYwNzMxMTM0ODRfKTt9Cgkuc3Qye2ZpbGw6dXJsKCNTVkdJRF8wMDAwMDEwMjUxOTMxNjAxNTI3NjU4MTY0MDAwMDAxNjI3NDExMjM4MzE3NTY0MTc1OV8pO2ZpbHRlcjp1cmwoI0Fkb2JlX09wYWNpdHlNYXNrRmlsdGVyKTt9Cgkuc3Qze2ZpbGw6dXJsKCNTVkdJRF8wMDAwMDEzODU2MzM4MjQ2MjA4NjAyMDM1MDAwMDAxNDg3ODQ5MDI3MDc4MjA3MTIwN18pO30KCS5zdDR7bWFzazp1cmwoI21hc2swXzE2NjFfMjk1XzAwMDAwMDg4MTMyMjUxNTk3NDQxNTczNDkwMDAwMDExNjkzNjEyMDE4NTA2NjgxNDgxXyk7fQoJLnN0NXtmaWxsOnVybCgjU1ZHSURfMDAwMDAxMDYxMjA2MzI0NjE3OTI4NzExNjAwMDAwMDc0MzM5MTMwMzgzMzc3NjY1NzZfKTt9Cjwvc3R5bGU+CjxnPgoJCgkJPGxpbmVhckdyYWRpZW50IGlkPSJTVkdJRF8xXyIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSIyNDYuNjAzIiB5MT0iOS4yMjEyIiB4Mj0iMTc0LjE1OCIgeTI9IjMwOC41NDI2IiBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KDEgMCAwIC0xIDAgMzAyKSI+CgkJPHN0b3AgIG9mZnNldD0iMCIgc3R5bGU9InN0b3AtY29sb3I6IzBCNDZGOSIvPgoJCTxzdG9wICBvZmZzZXQ9IjEiIHN0eWxlPSJzdG9wLWNvbG9yOiNCQkZCRTAiLz4KCTwvbGluZWFyR3JhZGllbnQ+Cgk8cGF0aCBjbGFzcz0ic3QwIiBkPSJNMjc0LjcsOTMuOUwxNjYuNiwyM3YzOS42bDY5LjQsNDUuMWwtOC4yLDI1LjhoLTYxLjJ2MzIuOWg2MS4ybDguMiwyNS44bC02OS40LDQ1LjFWMjc3bDEwOC4yLTcwLjdMMjU3LDE1MC4xCgkJTDI3NC43LDkzLjl6Ii8+CgkKCQk8bGluZWFyR3JhZGllbnQgaWQ9IlNWR0lEXzAwMDAwMDE4MjI4MjM3MTUxMjM5MTUxMzIwMDAwMDE3ODM4NjY0MjU5NzY2MjczOTI1XyIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSIxMjkuMzUxNiIgeTE9Ii0xOS4xNTczIiB4Mj0iNTYuOTA2NiIgeTI9IjI4MC4xNjQxIiBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KDEgMCAwIC0xIDAgMzAyKSI+CgkJPHN0b3AgIG9mZnNldD0iMCIgc3R5bGU9InN0b3AtY29sb3I6IzBCNDZGOSIvPgoJCTxzdG9wICBvZmZzZXQ9IjEiIHN0eWxlPSJzdG9wLWNvbG9yOiNCQkZCRTAiLz4KCTwvbGluZWFyR3JhZGllbnQ+Cgk8cGF0aCBzdHlsZT0iZmlsbDp1cmwoI1NWR0lEXzAwMDAwMDE4MjI4MjM3MTUxMjM5MTUxMzIwMDAwMDE3ODM4NjY0MjU5NzY2MjczOTI1Xyk7IiBkPSJNNzIuNSwxNjYuNGg2MXYtMzIuOUg3Mi4ybC03LjktMjUuOAoJCWw2OS4yLTQ1LjFWMjNMMjUuMyw5My45TDQzLDE1MC4xbC0xNy43LDU2LjJMMTMzLjcsMjc3di0zOS42bC02OS40LTQ1LjFMNzIuNSwxNjYuNHoiLz4KCTxkZWZzPgoJCTxmaWx0ZXIgaWQ9IkFkb2JlX09wYWNpdHlNYXNrRmlsdGVyIiBmaWx0ZXJVbml0cz0idXNlclNwYWNlT25Vc2UiIHg9IjI1LjQiIHk9IjIzIiB3aWR0aD0iMjQ3LjYiIGhlaWdodD0iMjU0Ij4KCQkJPGZlQ29sb3JNYXRyaXggIHR5cGU9Im1hdHJpeCIgdmFsdWVzPSIxIDAgMCAwIDAgIDAgMSAwIDAgMCAgMCAwIDEgMCAwICAwIDAgMCAxIDAiLz4KCQk8L2ZpbHRlcj4KCTwvZGVmcz4KCQoJCTxtYXNrIG1hc2tVbml0cz0idXNlclNwYWNlT25Vc2UiIHg9IjI1LjQiIHk9IjIzIiB3aWR0aD0iMjQ3LjYiIGhlaWdodD0iMjU0IiBpZD0ibWFzazBfMTY2MV8yOTVfMDAwMDAwODgxMzIyNTE1OTc0NDE1NzM0OTAwMDAwMTE2OTM2MTIwMTg1MDY2ODE0ODFfIj4KCQkKCQkJPGxpbmVhckdyYWRpZW50IGlkPSJTVkdJRF8wMDAwMDE2NTkyOTcyNDMwMzE2NDIwMzAwMDAwMDAwNzEwMTkwNDk4NDUxOTkxNTE2Ml8iIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIiB4MT0iMjQ2LjYwMzgiIHkxPSI5LjIyMTQiIHgyPSIxNzQuMTU4OCIgeTI9IjMwOC41NDI4IiBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KDEgMCAwIC0xIDAgMzAyKSI+CgkJCTxzdG9wICBvZmZzZXQ9IjAiIHN0eWxlPSJzdG9wLWNvbG9yOiMwQjQ2RjkiLz4KCQkJPHN0b3AgIG9mZnNldD0iMSIgc3R5bGU9InN0b3AtY29sb3I6I0JCRkJFMCIvPgoJCTwvbGluZWFyR3JhZGllbnQ+CgkJPHBhdGggc3R5bGU9ImZpbGw6dXJsKCNTVkdJRF8wMDAwMDE2NTkyOTcyNDMwMzE2NDIwMzAwMDAwMDAwNzEwMTkwNDk4NDUxOTkxNTE2Ml8pO2ZpbHRlcjp1cmwoI0Fkb2JlX09wYWNpdHlNYXNrRmlsdGVyKTsiIGQ9IgoJCQlNMjc0LjcsOTMuOUwxNjYuNiwyM3YzOS42bDY5LjQsNDUuMWwtOC4yLDI1LjhoLTYxLjJ2MzIuOWg2MS4ybDguMiwyNS44bC02OS40LDQ1LjFWMjc3bDEwOC4yLTcwLjdMMjU3LDE1MC4xTDI3NC43LDkzLjl6Ii8+CgkJCgkJCTxsaW5lYXJHcmFkaWVudCBpZD0iU1ZHSURfMDAwMDAxMTk4MTE3MDc2MjE0NzI4MTQyNzAwMDAwMTA4Mjk2NTkzODM4NTEyMDI0OTFfIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjEyOS4zNTIxIiB5MT0iLTE5LjE1NzEiIHgyPSI1Ni45MDcxIiB5Mj0iMjgwLjE2NDIiIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoMSAwIDAgLTEgMCAzMDIpIj4KCQkJPHN0b3AgIG9mZnNldD0iMCIgc3R5bGU9InN0b3AtY29sb3I6IzBCNDZGOSIvPgoJCQk8c3RvcCAgb2Zmc2V0PSIxIiBzdHlsZT0ic3RvcC1jb2xvcjojQkJGQkUwIi8+CgkJPC9saW5lYXJHcmFkaWVudD4KCQk8cGF0aCBzdHlsZT0iZmlsbDp1cmwoI1NWR0lEXzAwMDAwMTE5ODExNzA3NjIxNDcyODE0MjcwMDAwMDEwODI5NjU5MzgzODUxMjAyNDkxXyk7IiBkPSJNNzIuNSwxNjYuNGg2MXYtMzIuOUg3Mi4ybC03LjktMjUuOAoJCQlsNjkuMi00NS4xVjIzTDI1LjMsOTMuOUw0MywxNTAuMWwtMTcuNyw1Ni4yTDEzMy43LDI3N3YtMzkuNmwtNjkuNC00NS4xTDcyLjUsMTY2LjR6Ii8+Cgk8L21hc2s+Cgk8ZyBjbGFzcz0ic3Q0Ij4KCQkKCQkJPGxpbmVhckdyYWRpZW50IGlkPSJTVkdJRF8wMDAwMDEwOTAxOTkxODU1Nzc3MzA1MzQyMDAwMDAxNzYwMjQwNTkwODA2NzEyMDMwMF8iIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIiB4MT0iNDYuNDY2MiIgeTE9IjIyOC43NTU0IiB4Mj0iMTcxLjg2MzgiIHkyPSIxMzUuMTAzOSIgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCgxIDAgMCAtMSAwIDMwMikiPgoJCQk8c3RvcCAgb2Zmc2V0PSIwLjExOTgiIHN0eWxlPSJzdG9wLWNvbG9yOiM4OTUyRkY7c3RvcC1vcGFjaXR5OjAuODciLz4KCQkJPHN0b3AgIG9mZnNldD0iMSIgc3R5bGU9InN0b3AtY29sb3I6I0RBQkRGRjtzdG9wLW9wYWNpdHk6MCIvPgoJCTwvbGluZWFyR3JhZGllbnQ+CgkJCgkJCTxyZWN0IHg9IjI1LjQiIHk9IjIzIiBzdHlsZT0iZmlsbDp1cmwoI1NWR0lEXzAwMDAwMTA5MDE5OTE4NTU3NzczMDUzNDIwMDAwMDE3NjAyNDA1OTA4MDY3MTIwMzAwXyk7IiB3aWR0aD0iMjQ3LjYiIGhlaWdodD0iMjU0Ii8+Cgk8L2c+CjwvZz4KPC9zdmc+Cg=='\n","/**\n * Documentation:\n * https://docs.exodus.com/api-reference/algorand-provider-api/\n */\nimport Algod, { getAlgodClient } from '../../algod'\nimport BaseClient from '../base'\nimport { DEFAULT_NETWORK, PROVIDER_ID } from '../../constants'\nimport { debugLog } from '../../utils/debugLog'\nimport { ICON } from './constants'\nimport type { DecodedSignedTransaction, DecodedTransaction, Network } from '../../types/node'\nimport type { InitParams } from '../../types/providers'\nimport type { Exodus, ExodusClientConstructor, ExodusOptions, WindowExtended } from './types'\n\nclass ExodusClient extends BaseClient {\n #client: Exodus\n clientOptions: ExodusOptions\n network: Network\n\n constructor({\n metadata,\n client,\n clientOptions,\n algosdk,\n algodClient,\n network\n }: ExodusClientConstructor) {\n super(metadata, algosdk, algodClient)\n this.#client = client\n this.clientOptions = clientOptions\n this.network = network\n this.metadata = ExodusClient.metadata\n }\n\n static metadata = {\n id: PROVIDER_ID.EXODUS,\n name: 'Exodus',\n icon: ICON,\n isWalletConnect: false\n }\n\n static async init({\n clientOptions,\n algodOptions,\n algosdkStatic,\n network = DEFAULT_NETWORK\n }: InitParams<PROVIDER_ID.EXODUS>): Promise<BaseClient | null> {\n try {\n debugLog(`${PROVIDER_ID.EXODUS.toUpperCase()} initializing...`)\n\n if (typeof window == 'undefined' || (window as WindowExtended).exodus === undefined) {\n throw new Error('Exodus is not available.')\n }\n\n const algosdk = algosdkStatic || (await Algod.init(algodOptions)).algosdk\n const algodClient = getAlgodClient(algosdk, algodOptions)\n const exodus = (window as WindowExtended).exodus.algorand\n\n const provider = new ExodusClient({\n metadata: ExodusClient.metadata,\n client: exodus,\n algosdk: algosdk,\n algodClient: algodClient,\n clientOptions: clientOptions || { onlyIfTrusted: false },\n network\n })\n\n debugLog(`${PROVIDER_ID.EXODUS.toUpperCase()} initialized`, '✅')\n\n return provider\n } catch (e) {\n console.warn(e)\n console.warn(\n `Error initializing ${ExodusClient.metadata.name}.`,\n 'Do you have the extension installed?',\n 'https://www.exodus.com/web3-wallet'\n )\n return null\n }\n }\n\n async connect() {\n const { address } = await this.#client.connect({\n onlyIfTrusted: this.clientOptions.onlyIfTrusted\n })\n\n if (!address) {\n throw new Error(`No accounts found for ${ExodusClient.metadata.id}`)\n }\n\n const accounts = [\n {\n name: `Exodus 1`,\n address,\n providerId: ExodusClient.metadata.id\n }\n ]\n\n return {\n ...ExodusClient.metadata,\n accounts\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/require-await\n async reconnect(onDisconnect: () => void) {\n if (\n window === undefined ||\n (window as WindowExtended).exodus === undefined ||\n (window as WindowExtended).exodus.algorand.isConnected !== true\n ) {\n onDisconnect()\n }\n\n return null\n }\n\n // eslint-disable-next-line @typescript-eslint/require-await\n async disconnect() {\n return\n }\n\n async signTransactions(\n connectedAccounts: string[],\n txnGroups: Uint8Array[] | Uint8Array[][],\n indexesToSign?: number[],\n returnGroup = true\n ) {\n // If txnGroups is a nested array, flatten it\n const transactions: Uint8Array[] = Array.isArray(txnGroups[0])\n ? (txnGroups as Uint8Array[][]).flatMap((txn) => txn)\n : (txnGroups as Uint8Array[])\n\n // Decode the transactions to access their properties.\n const decodedTxns = transactions.map((txn) => {\n return this.algosdk.decodeObj(txn)\n }) as Array<DecodedTransaction | DecodedSignedTransaction>\n\n const signedIndexes: number[] = []\n\n // Get the unsigned transactions.\n const txnsToSign = decodedTxns.reduce<Uint8Array[]>((acc, txn, i) => {\n const isSigned = 'txn' in txn\n\n // If the indexes to be signed is specified\n // add it to the arrays of transactions to be signed.\n if (indexesToSign && indexesToSign.length && indexesToSign.includes(i)) {\n signedIndexes.push(i)\n acc.push(transactions[i])\n // If the transaction isn't already signed and is to be sent from a connected account,\n // add it to the arrays of transactions to be signed\n } else if (!isSigned && connectedAccounts.includes(this.algosdk.encodeAddress(txn['snd']))) {\n signedIndexes.push(i)\n acc.push(transactions[i])\n }\n\n return acc\n }, [])\n\n // Sign them with the client.\n const result = await this.#client.signTransaction(txnsToSign)\n\n // Join the newly signed transactions with the original group of transactions.\n const signedTxns = transactions.reduce<Uint8Array[]>((acc, txn, i) => {\n if (signedIndexes.includes(i)) {\n const signedByUser = result.shift()\n signedByUser && acc.push(signedByUser)\n } else if (returnGroup) {\n acc.push(transactions[i])\n }\n\n return acc\n }, [])\n\n return signedTxns\n }\n}\n\nexport default ExodusClient\n","export const ICON =\n 'data:image/svg+xml;base64,' +\n 'PHN2ZyB3aWR0aD0iMjM4IiBoZWlnaHQ9IjIzOCIgdmlld0JveD0iMCAwIDIzOCAyMzgiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxwYXRoIGQ9Ik01MS43MDUgMTQ1LjA0MkgxMTYuNzA1TDEwNy43MDUgMTU1LjA0Mkg1MS43MDVWMTQ1LjA0MloiIGZpbGw9IiNENjQ1MDAiLz4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xNDcuNTE5IDE5MS41NTdMMTI5LjU3NyAxNDQuMzk0TDE0Mi40MDQgMTI3LjExMkwxNjcuODc1IDE5MS41NTdIMTQ3LjUxOVpNMTEwLjkzNiA5NS4zOTMyTDEyMC42MTMgMTIwLjgzMUwxMzMuMzU5IDEwNC4yMjhMMTE3LjQ3NSA2NC4wNDIyQzExNS45MjggNjAuMTI4IDExMi4xNDYgNTcuNTU2NSAxMDcuOTM4IDU3LjU1NjVDMTAzLjcyOSA1Ny41NTY1IDk5Ljk0NzQgNjAuMTI4IDk4LjQwMDMgNjQuMDQyMkw2Ny45NjU5IDE0MS4wNDJIODcuNzgwN0M5NS40MTUzIDEyMS4wMTEgMTAyLjg5MyAxMDEuMzk5IDEwNS4xOTggOTUuMzU0MUMxMDUuNjQxIDk0LjE5MTIgMTA2Ljc0MyA5My40NTk5IDEwNy45ODcgOTMuNDU5OUgxMDguMTMyQzEwOS4zNzggOTMuNDU5OSAxMTAuNDkzIDk0LjIyOTMgMTEwLjkzNiA5NS4zOTMyWk04MC45MjEgMTU5LjA0MkM3NC45Mjg5IDE3NC43NjggNjkuODY2MSAxODguMDYzIDY4LjU0NDcgMTkxLjU1N0g0OEw2MC44NTE0IDE1OS4wNDJIODAuOTIxWiIgZmlsbD0iIzIyMkI2MCIvPgo8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTE3Ni4wMjYgNTQuNzUwOUMxNzcuOTk3IDUyLjA4NzIgMTgxLjc1NCA1MS41MjU3IDE4NC40MTggNTMuNDk2N0MxODcuMDgyIDU1LjQ2NzggMTg3LjY0MyA1OS4yMjUxIDE4NS42NzIgNjEuODg4OEwxMzAuMDEzIDEzNy4xMDdDMTI5LjcxNCAxMzcuNTEyIDEyOS4zNDEgMTM3Ljg1NyAxMjguOTEzIDEzOC4xMjNMMTE3Ljg1NiAxNDUuMDEzQzExNy4wODcgMTQ1LjQ5MyAxMTYuMTI4IDE0NC43ODMgMTE2LjM2MSAxNDMuOTA3TDExOS43MTggMTMxLjMxOEMxMTkuODQ3IDEzMC44MzIgMTIwLjA2OCAxMzAuMzc0IDEyMC4zNjcgMTI5Ljk3TDE3MC42NyA2MS45ODlMMTY5LjkyOSA2MS40NDA1QzE2OS40ODUgNjEuMTEyIDE2OC44NTkgNjEuMjA1NiAxNjguNTMgNjEuNjQ5NkwxNTIuMzExIDgzLjU2ODhDMTUyLjU4NiA4NC4yMDIzIDE1Mi41MjQgODQuOTYxMiAxNTIuMDg0IDg1LjU1NjJMMTQ5LjExIDg5LjU3NTVDMTQ4LjQ1MyA5MC40NjM0IDE0Ny4yMDEgOTAuNjUwNiAxNDYuMzEzIDg5Ljk5MzZDMTQ1LjQyNSA4OS4zMzY2IDE0NS4yMzggODguMDg0MSAxNDUuODk1IDg3LjE5NjJMMTQ3LjY3OSA4NC43ODQ3TDE0OC44NjkgODMuMTc2OUwxNjcuMzA4IDU4LjI1NzRDMTY4LjYyMiA1Ni40ODE1IDE3MS4xMjcgNTYuMTA3MiAxNzIuOTAzIDU3LjQyMTJMMTczLjY0NCA1Ny45Njk3TDE3Ni4wMjYgNTQuNzUwOVoiIGZpbGw9IiNENjQ1MDAiLz4KPC9zdmc+Cg=='\n\nexport const DEFAULT_NETWORK = 'MainNet'\n","/**\n * Documentation:\n * https://github.com/PureStake/algosigner/blob/develop/docs/dApp-integration.md\n */\nimport Algod, { getAlgodClient } from '../../algod'\nimport BaseClient from '../base'\nimport { DEFAULT_NETWORK, PROVIDER_ID } from '../../constants'\nimport { useWalletStore } from '../../store'\nimport { debugLog } from '../../utils/debugLog'\nimport { ICON } from './constants'\nimport type { DecodedSignedTransaction, DecodedTransaction, Network } from '../../types/node'\nimport type { InitParams } from '../../types/providers'\nimport type {\n AlgoSigner,\n AlgoSignerClientConstructor,\n AlgoSignerTransaction,\n WindowExtended\n} from './types'\n\nclass AlgoSignerClient extends BaseClient {\n #client: AlgoSigner\n network: Network\n walletStore: typeof useWalletStore\n\n constructor({ metadata, client, algosdk, algodClient, network }: AlgoSignerClientConstructor) {\n super(metadata, algosdk, algodClient)\n this.#client = client\n this.network = network\n this.walletStore = useWalletStore\n }\n\n static metadata = {\n id: PROVIDER_ID.ALGOSIGNER,\n name: 'AlgoSigner',\n icon: ICON,\n isWalletConnect: false\n }\n\n static async init({\n algodOptions,\n algosdkStatic,\n network = DEFAULT_NETWORK\n }: InitParams<PROVIDER_ID.ALGOSIGNER>): Promise<BaseClient | null> {\n try {\n debugLog(`${PROVIDER_ID.ALGOSIGNER.toUpperCase()} initializing...`)\n\n if (typeof window == 'undefined' || (window as WindowExtended).algorand === undefined) {\n throw new Error('AlgoSigner is not available.')\n }\n\n const algosdk = algosdkStatic || (await Algod.init(algodOptions)).algosdk\n const algodClient = getAlgodClient(algosdk, algodOptions)\n const algosigner = (window as WindowExtended).algorand\n\n const provider = new AlgoSignerClient({\n metadata: AlgoSignerClient.metadata,\n client: algosigner,\n algosdk: algosdk,\n algodClient: algodClient,\n network\n })\n\n debugLog(`${PROVIDER_ID.ALGOSIGNER.toUpperCase()} initialized`, '✅')\n\n return provider\n } catch (e) {\n console.warn(e)\n console.warn(\n `Error initializing ${AlgoSignerClient.metadata.name}.`,\n 'Do you have the extension installed?',\n 'https://www.purestake.com/technology/algosigner'\n )\n return null\n }\n }\n\n async connect() {\n const { accounts } = await this.#client.enable({ genesisID: this.getGenesisID() })\n\n if (accounts.length === 0) {\n throw new Error(`No accounts found for ${AlgoSignerClient.metadata.id}`)\n }\n\n const mappedAccounts = await Promise.all(\n accounts.map(async (address, index) => {\n // check to see if this is a rekeyed account\n const { 'auth-addr': authAddr } = await this.getAccountInfo(address)\n\n return {\n name: `AlgoSigner ${index + 1}`,\n address,\n providerId: AlgoSignerClient.metadata.id,\n ...(authAddr && { authAddr })\n }\n })\n )\n\n // sort the accounts in the order they were returned by AlgoSigner\n mappedAccounts.sort((a, b) => accounts.indexOf(a.address) - accounts.indexOf(b.address))\n\n return {\n ...AlgoSignerClient.metadata,\n accounts: mappedAccounts\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/require-await\n async reconnect(onDisconnect: () => void) {\n if (window === undefined || (window as WindowExtended).algorand === undefined) {\n onDisconnect()\n }\n\n return null\n }\n\n // eslint-disable-next-line @typescript-eslint/require-await\n async disconnect() {\n return\n }\n\n async signTransactions(\n connectedAccounts: string[],\n transactions: Uint8Array[],\n indexesToSign?: number[],\n returnGroup = true\n ) {\n // Decode the transactions to access their properties.\n const decodedTxns = transactions.map((txn) => {\n return this.algosdk.decodeObj(txn)\n }) as Array<DecodedTransaction | DecodedSignedTransaction>\n\n const signedIndexes: number[] = []\n\n // Marshal the transactions,\n // and add the signers property if they shouldn't be signed.\n const txnsToSign = decodedTxns.reduce<AlgoSignerTransaction[]>((acc, txn, i) => {\n const isSigned = 'txn' in txn\n\n const sender = this.algosdk.encodeAddress(isSigned ? txn.txn.snd : txn.snd)\n const authAddress = this.getAuthAddress(sender) // rekeyed-to account, or undefined\n\n if (indexesToSign && indexesToSign.length && indexesToSign.includes(i)) {\n signedIndexes.push(i)\n acc.push({\n txn: this.#client.encoding.msgpackToBase64(transactions[i]),\n ...(authAddress && { authAddr: authAddress })\n })\n } else if (!isSigned && connectedAccounts.includes(sender)) {\n signedIndexes.push(i)\n acc.push({\n txn: this.#client.encoding.msgpackToBase64(transactions[i]),\n ...(authAddress && { authAddr: authAddress })\n })\n } else {\n acc.push({\n txn: this.#client.encoding.msgpackToBase64(\n isSigned\n ? this.algosdk.decodeSignedTransaction(transactions[i]).txn.toByte()\n : this.algosdk.decodeUnsignedTransaction(transactions[i]).toByte()\n ),\n signers: []\n })\n }\n\n return acc\n }, [])\n\n // Sign them with the client.\n const result = await this.#client.signTxns(txnsToSign)\n\n // Join the newly signed transactions with the original group of transactions\n // if `returnGroup` is true\n const signedTxns = transactions.reduce<Uint8Array[]>((acc, txn, i) => {\n if (signedIndexes.includes(i)) {\n const signedByUser = result[i]\n signedByUser && acc.push(new Uint8Array(Buffer.from(signedByUser, 'base64')))\n } else if (returnGroup) {\n acc.push(txn)\n }\n\n return acc\n }, [])\n\n return signedTxns\n }\n\n getGenesisID() {\n if (this.network === 'betanet') {\n return 'betanet-v1.0'\n }\n if (this.network === 'testnet') {\n return 'testnet-v1.0'\n }\n if (this.network === 'mainnet') {\n return 'mainnet-v1.0'\n }\n return this.network\n }\n\n getAuthAddress(address: string): string | undefined {\n const accounts = this.walletStore.getState().accounts\n const account = accounts.find(\n (acct) => acct.address === address && acct.providerId === this.metadata.id\n )\n\n return account?.authAddr\n }\n}\n\nexport default AlgoSignerClient\n","export function svgToBase64(svg: string): string {\n const base64EncodedSvg = btoa(svg)\n return `data:image/svg+xml;base64,${base64EncodedSvg}`\n}\n","import { svgToBase64 } from '../../../src/utils/svgToBase64'\n\nconst svgMarkup = `<svg fill=\"#ab47bc\" version=\"1.1\" viewBox=\"0 0 1e3 1e3\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"m708.49 604.22c-1.4434 0.0745-3.1495-0.29645-4.4397-0.9439-1.3774-0.69087-2.7586-1.9213-3.6501-3.1772-0.99228-1.3985-1.7378-3.3014-2.0311-4.9904-0.33364-1.92-0.21829-4.2204 0.23071-6.1167 0.51227-2.1618 1.6138-4.5296 2.8762-6.3571 1.4314-2.0747 3.535-4.1505 5.5871-5.6136 2.3137-1.648 5.3114-3.0703 8.033-3.8824 3.0387-0.90794 6.7097-1.3576 9.8803-1.2757 3.5102 0.0868 7.5298 0.85335 10.85 1.9967 3.6487 1.2571 7.6157 3.3634 10.733 5.6374 3.403 2.4814 6.8762 5.9359 9.4195 9.2928 2.7585 3.6421 5.2967 8.305 6.9078 12.58 1.7391 4.6113 2.9488 10.207 3.3251 15.12 0.40311 5.2743-0.0248 11.403-1.0977 16.582-1.151 5.5358-3.3952 11.705-6.0243 16.71-2.7996 5.3284-6.8947 10.99-11.044 15.352-4.4027 4.6272-10.217 9.2227-15.71 12.479-5.8105 3.4453-13.046 6.4589-19.57 8.2046-6.8814 1.8421-15.085 2.8458-22.208 2.7666-7.494-0.0744-16.088-1.3814-23.285-3.4703-7.5522-2.1935-15.879-5.9201-22.569-10.051-7.0069-4.3275-14.368-10.414-19.969-16.452-5.8527-6.3096-11.576-14.487-15.54-22.128-4.136-7.9708-7.6261-17.78-9.5-26.562-1.9518-9.1463-2.7495-19.962-2.2093-29.297 0.56311-9.7088 2.7361-20.773 5.8448-29.986 3.2286-9.5687 8.4395-20.053 14.078-28.43 5.8474-8.6867 13.927-17.748 21.856-24.586 8.2138-7.0821 18.756-13.932 28.546-18.601 10.126-4.8319 22.512-8.7987 33.552-10.797 11.408-2.0639 24.834-2.6556 36.384-1.6506 11.923 1.0382 25.458 4.087 36.69 8.2179 11.584 4.2613 24.229 10.957 34.288 18.104 10.368 7.3672 21.132 17.439 29.204 27.264 8.313 10.115 16.291 23.023 21.664 34.963 5.5266 12.281 9.9714 27.244 12.091 40.543 2.179 13.671 2.5659 29.71 1.0927 43.474-1.512 14.136-5.4366 30.142-10.591 43.391-5.2914 13.6-13.473 28.404-22.133 40.149-8.8847 12.047-20.949 24.513-32.671 33.822-12.016 9.5423-27.291 18.649-41.38 24.724-14.435 6.2239-31.976 11.147-47.535 13.388-15.931 2.295-34.584 2.476-50.561 0.53458-16.351-1.9848-34.826-6.7838-50.094-12.964-15.616-6.3215-32.58-15.987-46.008-26.16-13.728-10.401-27.896-24.46-38.439-38.077-10.773-13.917-21.009-31.555-27.785-47.799-6.9211-16.587-12.322-36.707-14.683-54.525-2.2001-14.805-6.9646-31.487-12.954-45.204-5.8408-13.373-14.573-27.859-23.704-39.242-8.8966-11.09-20.796-22.49-32.282-30.868-11.184-8.1571-25.267-15.843-38.195-20.789-12.577-4.8147-27.759-8.4462-41.158-9.801-13.026-1.3166-28.194-0.86079-41.11 1.2795-12.546 2.0786-26.65 6.3651-38.212 11.659-11.222 5.1382-23.343 12.741-32.826 20.643-9.1934 7.6619-18.6 17.858-25.462 27.665-6.6459 9.5-12.846 21.424-16.763 32.336-3.79 10.559-6.5473 23.271-7.4269 34.454-0.84963 10.813-0.18976 23.368 1.8369 34.023 1.9566 10.287 5.765 21.814 10.364 31.222 4.435 9.0723 10.909 18.827 17.582 26.407 6.4257 7.2985 14.92 14.713 23.047 20.055 7.8149 5.1356 17.581 9.8513 26.475 12.736 8.5427 2.7679 18.784 4.6496 27.754 5.0524 8.5981 0.38699 18.542-0.48002 26.934-2.3941 8.029-1.8316 16.98-5.1633 24.231-9.0682 6.9236-3.7292 14.314-9.0762 19.989-14.521 5.4078-5.1872 10.83-11.981 14.647-18.43 3.6302-6.13 6.8629-13.737 8.7091-20.617 1.7496-6.5234 2.7573-14.296 2.6794-21.051-0.0745-6.3861-1.1461-13.719-2.9528-19.845-1.7021-5.7735-4.5573-12.152-7.7714-17.239-3.0202-4.7805-7.2421-9.8078-11.46-13.572-3.9472-3.5221-9.0433-6.9541-13.812-9.2425-4.4423-2.1314-9.8936-3.8813-14.756-4.6802-4.5084-0.74172-9.8158-0.87692-14.35-0.30759-4.1782 0.52466-8.9071 1.8039-12.757 3.5114-3.5284 1.5634-7.3369 3.9445-10.25 6.4761-2.6502 2.3043-5.3192 5.4037-7.1534 8.3986-1.656 2.7044-3.102 6.1103-3.8349 9.195-0.65861 2.7626-0.9253 6.0706-0.65366 8.8966 0.24063 2.509 0.98608 5.3679 2.0668 7.646 0.95259 2.0072 2.4523 4.1452 4.0686 5.6691 1.417 1.3365 3.3516 2.587 5.1805 3.2579 1.6097 0.59286 3.6302 0.89676 5.3377 0.73676 1.5331-0.1439 3.2895-0.72436 4.577-1.5715 1.2068-0.79382 2.381-2.0865 3.0373-3.3726 0.65491-1.2876 1.8301-2.5803 3.0372-3.3741 1.2861-0.84593 3.0426-1.4274 4.577-1.5714 1.7075-0.16001 3.7267 0.14759 5.3363 0.73676 1.829 0.67102 3.7649 1.9214 5.1819 3.2577 1.6164 1.524 3.1165 3.662 4.0686 5.6692 1.0803 2.2778 1.825 5.1369 2.0668 7.6459 0.2704 2.8272 2e-3 6.1352-0.65366 8.8966-0.73426 3.0861-2.1803 6.4904-3.8364 9.1949-1.8329 2.9952-4.503 6.0944-7.1533 8.3988-2.9131 2.5316-6.7216 4.9124-10.249 6.4759-3.8508 1.7075-8.5783 2.9871-12.758 3.5114-4.5322 0.56684-9.8407 0.43411-14.348-0.30635-4.8636-0.80003-10.313-2.55-14.758-4.6813-4.7698-2.2887-9.8646-5.7207-13.812-9.2425-4.219-3.7635-8.4396-8.7909-11.46-13.572-3.2155-5.0881-6.0705-11.466-7.7727-17.239-1.8064-6.1259-2.8788-13.459-2.9528-19.845-0.0745-6.7545 0.92904-14.527 2.6808-21.051 1.8461-6.88 5.0776-14.486 8.7077-20.617 3.8191-6.4483 9.2413-13.242 14.648-18.429 5.6744-5.4447 13.064-10.792 19.989-14.521 7.2498-3.905 16.201-7.2366 24.231-9.0683 8.3908-1.9134 18.335-2.7811 26.934-2.3941 8.9705 0.4031 19.21 2.2846 27.753 5.0536 8.8964 2.8828 18.661 7.5985 26.476 12.736 8.1267 5.3403 16.622 12.756 23.048 20.054 6.6727 7.5798 13.146 17.335 17.582 26.407 4.5981 9.4076 8.4066 20.934 10.364 31.222 2.0258 10.654 2.6873 23.21 1.8371 34.023-0.8794 11.185-3.6369 23.895-7.4268 34.454-3.9169 10.913-10.117 22.836-16.763 32.337-6.8604 9.8062-16.268 20.002-25.462 27.665-9.4814 7.9024-21.602 15.504-32.823 20.643-11.563 5.2943-25.668 9.5806-38.214 11.659-12.914 2.1406-28.084 2.5962-41.11 1.2795-13.398-1.355-28.58-4.9864-41.158-9.7998-12.927-4.9482-27.011-12.634-38.195-20.791-11.487-8.3775-23.385-19.778-32.282-30.868-9.132-11.382-17.862-25.869-23.703-39.242-5.9911-13.717-10.755-30.399-12.955-45.204-2.2562-15.177-2.5054-32.96-0.72188-48.198 1.8276-15.613 6.335-33.265 12.173-47.86 5.9781-14.944 15.148-31.188 24.817-44.054 9.8948-13.167 23.289-26.769 36.275-36.9 13.282-10.364 30.135-20.223 45.659-26.765 15.87-6.6887 35.129-11.93 52.195-14.252 17.438-2.3715 37.834-2.4152 55.286-0.16248 17.827 2.3003 37.951 7.6829 54.563 14.547 13.923 5.4961 30.751 9.7114 45.625 11.382 14.502 1.6283 31.412 1.31 45.837-0.9067 14.052-2.1603 29.875-6.7638 42.874-12.522 12.656-5.6071 26.355-13.962 37.102-22.683 10.457-8.4858 21.195-19.818 29.066-30.743 7.6526-10.623 14.843-23.987 19.447-36.243 4.4716-11.905 7.8124-26.262 9.009-38.923 1.1609-12.288 0.63878-26.585-1.4646-38.748-2.039-11.792-6.1657-25.037-11.229-35.882-4.9033-10.506-12.131-21.839-19.622-30.686-7.2498-8.5611-16.88-17.304-26.125-23.659-8.9375-6.1419-20.143-11.848-30.382-15.42-9.887-3.4493-21.774-5.9148-32.222-6.6358-10.075-0.69459-21.759 0.0373-31.658 2.0231-9.5342 1.9148-20.203 5.5636-28.892 9.9319-8.3552 4.1993-17.321 10.298-24.266 16.561-6.6689 6.0137-13.419 13.941-18.254 21.507-4.6325 7.2539-8.8543 16.298-11.392 24.523-2.4286 7.8692-4.0197 17.288-4.2628 25.52-0.23069 7.8598 0.70453 16.933 2.5817 24.57 1.7881 7.2776 4.9614 15.37 8.6351 21.902 3.4943 6.208 8.4648 12.81 13.501 17.85 4.7737 4.7778 11.002 9.537 16.89 12.846 5.5674 3.1284 12.455 5.8672 18.663 7.366 5.8513 1.4118 12.802 2.1288 18.816 1.8884 5.6494-0.22452 12.113-1.3667 17.483-3.1389 5.0234-1.6573 10.543-4.354 14.91-7.3396 4.0672-2.7824 8.3076-6.6292 11.432-10.44 2.8958-3.5324 5.6651-8.0619 7.4387-12.272 1.6361-3.881 2.892-8.6153 3.3396-12.804 0.41056-3.8376 0.25055-8.3262-0.48495-12.114-0.67104-3.448-2.0205-7.3093-3.6962-10.395-1.5146-2.7864-3.7411-5.7404-6.0454-7.918-2.0641-1.9506-4.7949-3.8376-7.3779-5.0156-2.2938-1.0468-5.1422-1.8304-7.6551-2.0323-2.2134-0.17984-4.8162 0.0496-6.9437 0.68838-1.8658 0.55939-3.9167 1.6097-5.4128 2.8578-1.3166 1.0989-2.5908 2.6952-3.3054 4.2547-0.64374 1.3998-1.0183 3.2116-0.92776 4.7488 0.0745 1.4422 0.6152 3.1059 1.4024 4.3169 0.78637 1.2118 1.3192 2.8749 1.4037 4.3182 0.0745 1.537-0.2865 3.3489-0.92778 4.7486-0.71442 1.5583-1.9901 3.1548-3.3068 4.2535-1.4946 1.2493-3.5454 2.2991-5.4115 2.8591-2.1273 0.63628-4.7302 0.867-6.9436 0.68839-2.5129-0.20343-5.3614-0.98607-7.6551-2.0337-2.5842-1.1783-5.3152-3.0635-7.3779-5.0141-2.3057-2.1775-4.5308-5.1329-6.0455-7.9181-1.6771-3.0861-3.0267-6.9486-3.6961-10.395-0.738-3.7888-0.89305-8.2773-0.48498-12.115 0.44653-4.1874 1.7035-8.9215 3.3384-12.803 1.7749-4.2101 4.5441-8.7407 7.4401-12.273 3.1244-3.8112 7.3646-7.6566 11.432-10.439 4.3656-2.9871 9.887-5.6837 14.91-7.341 5.3693-1.7708 11.833-2.913 17.483-3.1377 6.0152-0.24063 12.965 0.47505 18.816 1.8884 6.2079 1.499 13.096 4.2364 18.663 7.3661 5.8883 3.3092 12.115 8.0685 16.89 12.846 5.0353 5.0391 10.007 11.641 13.5 17.85 3.6751 6.5302 6.847 14.624 8.6364 21.899 1.8779 7.6367 2.8128 16.71 2.5803 24.571-0.24187 8.2324-1.8329 17.649-4.2613 25.519-2.5381 8.2243-6.7598 17.27-11.394 24.523-4.8334 7.568-11.584 15.496-18.253 21.509-6.9448 6.262-15.911 12.36-24.268 16.561-8.6878 4.3671-19.357 8.0172-28.891 9.932-9.9003 1.9886-21.586 2.7176-31.658 2.023-10.447-0.72188-22.335-3.1866-32.222-6.6358-10.241-3.5734-21.444-9.2781-30.383-15.421-9.2468-6.3531-18.874-15.096-26.127-23.659-7.4915-8.8477-14.718-20.179-19.622-30.685-5.0616-10.844-9.1883-24.09-11.227-35.883-2.1024-12.162-2.6253-26.46-1.4644-38.747 1.1969-12.66 4.536-27.018 9.0088-38.923 4.6048-12.256 11.794-25.62 19.447-36.243 7.8717-10.926 18.608-22.257 29.065-30.743 10.749-8.7223 24.446-17.076 37.102-22.683 12.999-5.7589 28.822-10.364 42.875-12.524 14.423-2.2172 31.333-2.5354 45.837-0.90668 14.874 1.6705 31.703 5.8857 45.625 11.383 14.271 5.6346 29.795 14.31 42.102 23.475 12.607 9.3891 25.642 22.119 35.361 34.473 9.9529 12.649 19.436 28.713 25.744 43.52 6.4562 15.152 11.538 33.552 13.82 49.864 2.3333 16.685 2.4456 36.209 0.34853 52.925-2.1434 17.088-7.234 36.388-13.757 52.327-6.6648 16.287-16.825 33.972-27.502 47.961-10.906 14.287-25.629 29.023-39.879 39.979-11.721 9.3085-23.787 21.774-32.671 33.822-8.6602 11.744-16.841 26.548-22.133 40.147-5.1554 13.251-9.0788 29.256-10.591 43.392-1.4724 13.764-1.0865 29.804 1.0927 43.474 2.1209 13.298 6.5657 28.262 12.092 40.543 5.372 11.938 13.351 24.848 21.663 34.963 8.0738 9.825 18.837 19.896 29.204 27.263 10.061 7.1496 22.706 13.845 34.289 18.106 11.233 4.1308 24.767 7.18 36.689 8.218 11.551 1.0047 24.977 0.41179 36.385-1.6508 11.04-1.9981 23.426-5.9663 33.552-10.797 9.7879-4.6695 20.332-11.519 28.545-18.601 7.9312-6.8377 16.01-15.899 21.857-24.586 5.6387-8.3775 10.85-18.862 14.078-28.43 3.1087-9.2135 5.2822-20.278 5.8435-29.986 0.54081-9.3363-0.25674-20.151-2.2078-29.297-1.874-8.7816-5.3642-18.59-9.5001-26.562-3.9656-7.6393-9.6876-15.818-15.541-22.128-5.6005-6.0376-12.962-12.125-19.968-16.452-6.6925-4.1307-15.017-7.8587-22.569-10.051-7.1971-2.0892-15.792-3.3885-23.285-3.4705-7.1231-0.0745-15.326 0.92406-22.207 2.7664-6.5263 1.7458-13.76 4.7594-19.57 8.2047-5.4936 3.2565-11.309 7.8518-15.71 12.479-4.1492 4.3617-8.2455 10.022-11.045 15.352-2.6291 5.0048-4.8728 11.174-6.023 16.71-1.0766 5.1792-1.5013 11.308-1.0964 16.582 0.37706 4.9138 1.5859 10.509 3.3237 15.12 1.6125 4.2745 4.1507 8.9374 6.9092 12.58 2.5434 3.3568 6.015 6.8113 9.4195 9.2928 3.1178 2.274 7.0846 4.3803 10.733 5.6374 3.3199 1.1436 7.3396 1.9056 10.85 1.9967 3.1707 0.0745 6.8418-0.36962 9.8804-1.2756 2.7216-0.81242 5.7193-2.2345 8.0316-3.8824 2.0535-1.4646 4.1558-3.5391 5.5885-5.6138 1.2624-1.8276 2.3639-4.1967 2.8762-6.3571 0.44901-1.8964 0.56434-4.1967 0.2307-6.1167-0.2952-1.689-1.0394-3.5919-2.031-4.9903-0.89181-1.2561-2.2739-2.4867-3.6501-3.1774-1.2914-0.64869-2.9962-1.0196-4.4397-0.94389z\" stroke-width=\".13206\"/>\n</svg>`\n\nexport const ICON = svgToBase64(svgMarkup)\n","import { WalletTransaction } from 'lute-connect'\nimport Algod, { getAlgodClient } from '../../algod'\nimport { DEFAULT_NETWORK, PROVIDER_ID } from '../../constants'\nimport { DecodedSignedTransaction, DecodedTransaction, Network } from '../../types/node'\nimport type { InitParams } from '../../types/providers'\nimport { debugLog } from '../../utils/debugLog'\nimport BaseClient from '../base'\nimport { ICON } from './constants'\nimport type { LuteClientConstructor, LuteConnectOptions } from './types'\nimport type LuteConnect from 'lute-connect'\n\nclass LuteClient extends BaseClient {\n #client: LuteConnect\n clientOptions?: LuteConnectOptions\n network: Network\n\n constructor({\n metadata,\n client,\n clientOptions,\n algosdk,\n algodClient,\n network\n }: LuteClientConstructor) {\n super(metadata, algosdk, algodClient)\n this.#client = client\n this.clientOptions = clientOptions\n this.network = network\n this.metadata = LuteClient.metadata\n }\n\n static metadata = {\n id: PROVIDER_ID.LUTE,\n name: 'Lute',\n icon: ICON,\n isWalletConnect: false\n }\n\n static async init({\n clientOptions,\n algodOptions,\n clientStatic,\n getDynamicClient,\n algosdkStatic,\n network = DEFAULT_NETWORK\n }: InitParams<PROVIDER_ID.LUTE>): Promise<BaseClient | null> {\n try {\n debugLog(`${PROVIDER_ID.LUTE.toUpperCase()} initializing...`)\n\n let LuteConnect\n if (clientStatic) {\n LuteConnect = clientStatic\n } else if (getDynamicClient) {\n LuteConnect = await getDynamicClient()\n } else {\n throw new Error('Lute provider missing required property: clientStatic or getDynamicClient')\n }\n\n const algosdk = algosdkStatic || (await Algod.init(algodOptions)).algosdk\n const algodClient = getAlgodClient(algosdk, algodOptions)\n\n if (!clientOptions) {\n throw new Error('Lute provider missing required property: clientOptions')\n }\n const lute = new LuteConnect(clientOptions.siteName)\n const provider = new LuteClient({\n metadata: LuteClient.metadata,\n client: lute,\n clientOptions,\n algosdk: algosdk,\n algodClient: algodClient,\n network\n })\n\n debugLog(`${PROVIDER_ID.LUTE.toUpperCase()} initialized`, '✅')\n\n return provider\n } catch (e) {\n console.error('Error initializing...', e)\n return null\n }\n }\n\n async connect() {\n const genesis = (await this.algodClient.genesis().do()) as { network: string; id: string }\n const genesisID = `${genesis.network}-${genesis.id}`\n const addresses = await this.#client.connect(genesisID)\n\n if (addresses.length === 0) {\n throw new Error(`No accounts found for ${LuteClient.metadata.id}`)\n }\n\n const mappedAccounts = addresses.map((address: string, index: number) => ({\n name: `Lute Wallet ${index + 1}`,\n address,\n providerId: LuteClient.metadata.id\n }))\n\n return {\n ...LuteClient.metadata,\n accounts: mappedAccounts\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/require-await\n async reconnect() {\n return null\n }\n\n // eslint-disable-next-line @typescript-eslint/require-await\n async disconnect() {\n return\n }\n\n shouldSignTxnObject(\n txn: DecodedTransaction | DecodedSignedTransaction,\n addresses: string[],\n indexesToSign: number[] | undefined,\n idx: number\n ): boolean {\n const isIndexMatch = !indexesToSign || indexesToSign.includes(idx)\n const isSigned = 'txn' in txn\n const canSign = !isSigned && addresses.includes(this.algosdk.encodeAddress(txn.snd))\n const shouldSign = isIndexMatch && canSign\n\n return shouldSign\n }\n\n async signTransactions(\n connectedAccounts: string[],\n transactions: Uint8Array[],\n indexesToSign?: number[],\n returnGroup = true\n ) {\n // Decode the transactions to access their properties.\n const decodedTxns = transactions.map((txn) => {\n return this.algosdk.decodeObj(txn)\n }) as Array<DecodedTransaction | DecodedSignedTransaction>\n\n const signedIndexes: number[] = []\n\n // Marshal the transactions,\n // and add the signers property if they shouldn't be signed.\n const txnsToSign = decodedTxns.reduce<WalletTransaction[]>((acc, txn, idx) => {\n const isSigned = 'txn' in txn\n const shouldSign = this.shouldSignTxnObject(txn, connectedAccounts, indexesToSign, idx)\n\n if (shouldSign) {\n signedIndexes.push(idx)\n acc.push({\n txn: Buffer.from(transactions[idx]).toString('base64')\n })\n } else {\n acc.push({\n txn: isSigned\n ? Buffer.from(\n this.algosdk.decodeSignedTransaction(transactions[idx]).txn.toByte()\n ).toString('base64')\n : Buffer.from(transactions[idx]).toString('base64'),\n stxn: isSigned ? Buffer.from(transactions[idx]).toString('base64') : undefined,\n signers: []\n })\n }\n\n return acc\n }, [])\n\n // Sign them with the client.\n const result = (await this.#client.signTxns(txnsToSign)) as (Uint8Array | null)[]\n\n const signedTxns = transactions.reduce<Uint8Array[]>((acc, txn, i) => {\n if (signedIndexes.includes(i)) {\n const signedByUser = result.shift()\n signedByUser && acc.push(signedByUser)\n } else if (returnGroup) {\n acc.push(txn)\n }\n\n return acc\n }, [])\n\n return signedTxns\n }\n}\n\nexport default LuteClient\n","import { PublicNetwork } from 'src/types'\n\nexport const isPublicNetwork = (network: string): network is PublicNetwork => {\n return network === 'betanet' || network === 'testnet' || network === 'mainnet'\n}\n","import type { PublicNetwork } from 'src/types'\n\nexport const ICON =\n 'data:image/svg+xml;base64,' +\n 'PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJMYXllcl8xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIKCSB2aWV3Qm94PSIwIDAgNDgwIDQ4MCIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgNDgwIDQ4MDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPgo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLnN0MHtmaWxsOiMzMzk2RkY7fQo8L3N0eWxlPgo8cGF0aCBjbGFzcz0ic3QwIiBkPSJNMTI2LjYsMTY4YzYyLjYtNjEuMywxNjQuMi02MS4zLDIyNi44LDBsNy41LDcuNGMzLjEsMy4xLDMuMSw4LDAsMTEuMWwtMjUuOCwyNS4yYy0xLjYsMS41LTQuMSwxLjUtNS43LDAKCWwtMTAuNC0xMC4yYy00My43LTQyLjgtMTE0LjUtNDIuOC0xNTguMiwwbC0xMS4xLDEwLjljLTEuNiwxLjUtNC4xLDEuNS01LjcsMGwtMjUuOC0yNS4yYy0zLjEtMy4xLTMuMS04LDAtMTEuMUwxMjYuNiwxNjh6CgkgTTQwNi43LDIyMC4ybDIyLjksMjIuNWMzLjEsMy4xLDMuMSw4LDAsMTEuMUwzMjYuMiwzNTUuMWMtMy4xLDMuMS04LjIsMy4xLTExLjMsMGwtNzMuNC03MS45Yy0wLjgtMC44LTIuMS0wLjgtMi44LDBsLTczLjQsNzEuOQoJYy0zLjEsMy4xLTguMiwzLjEtMTEuMywwTDUwLjMsMjUzLjhjLTMuMS0zLjEtMy4xLTgsMC0xMS4xbDIyLjktMjIuNWMzLjEtMy4xLDguMi0zLjEsMTEuMywwbDczLjQsNzEuOWMwLjgsMC44LDIuMSwwLjgsMi44LDAKCWw3My40LTcxLjljMy4xLTMuMSw4LjItMy4xLDExLjMsMGw3My40LDcxLjljMC44LDAuOCwyLjEsMC44LDIuOCwwbDczLjQtNzEuOUMzOTguNSwyMTcuMSw0MDMuNiwyMTcuMSw0MDYuNywyMjAuMkw0MDYuNywyMjAuMnoiLz4KPC9zdmc+Cg=='\n\nexport const ALGORAND_CHAINS: { [key in PublicNetwork]: string } = {\n mainnet: 'algorand:wGHE2Pwdvd7S12BL5FaOP20EGYesN73k',\n testnet: 'algorand:SGO1GKSzyE7IEPItTxCByw9x8FmnrCDe',\n betanet: 'algorand:mFgazF-2uRS1tMiL9dsj01hJGySEmPN2'\n}\n","import { JsonRpcRequest } from './types'\n\nconst getPayloadId = (): number => {\n const date = Date.now() * Math.pow(10, 3)\n const extra = Math.floor(Math.random() * Math.pow(10, 3))\n return date + extra\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const formatJsonRpcRequest = <T = any>(method: string, params: T): JsonRpcRequest => {\n return {\n id: getPayloadId(),\n jsonrpc: '2.0',\n method,\n params\n }\n}\n","/**\n * Documentation:\n * https://docs.walletconnect.com/2.0/\n */\nimport Algod, { getAlgodClient } from '../../algod'\nimport BaseClient from '../base'\nimport { DEFAULT_NETWORK, PROVIDER_ID } from '../../constants'\nimport { debugLog } from '../../utils/debugLog'\nimport { isPublicNetwork } from '../../utils/types'\nimport { ALGORAND_CHAINS, ICON } from './constants'\nimport { formatJsonRpcRequest } from './utils'\nimport type {\n WalletConnectModalSign,\n WalletConnectModalSignOptions,\n WalletConnectModalSignSession\n} from '@walletconnect/modal-sign-html'\nimport type { DecodedSignedTransaction, DecodedTransaction, Network } from '../../types/node'\nimport type { InitParams } from '../../types/providers'\nimport type { Wallet } from '../../types/wallet'\nimport type { WalletConnectClientConstructor, WalletConnectTransaction } from './types'\n\nclass WalletConnectClient extends BaseClient {\n #client: WalletConnectModalSign\n clientOptions?: WalletConnectModalSignOptions\n network: Network\n chain: string\n\n constructor({\n metadata,\n client,\n clientOptions,\n algosdk,\n algodClient,\n network,\n chain\n }: WalletConnectClientConstructor) {\n super(metadata, algosdk, algodClient)\n this.#client = client\n this.clientOptions = clientOptions\n this.network = network\n this.chain = chain\n this.metadata = WalletConnectClient.metadata\n }\n\n static metadata = {\n id: PROVIDER_ID.WALLETCONNECT,\n name: 'WalletConnect',\n icon: ICON,\n isWalletConnect: true\n }\n\n static async init({\n clientOptions,\n algodOptions,\n clientStatic,\n getDynamicClient,\n algosdkStatic,\n network = DEFAULT_NETWORK\n }: InitParams<PROVIDER_ID.WALLETCONNECT>): Promise<BaseClient | null> {\n try {\n debugLog(`${PROVIDER_ID.WALLETCONNECT.toUpperCase()} initializing...`)\n\n let Client\n if (clientStatic) {\n Client = clientStatic\n } else if (getDynamicClient) {\n Client = await getDynamicClient()\n } else {\n throw new Error(\n 'WalletConnect provider missing required property: clientStatic or getDynamicClient'\n )\n }\n\n if (!clientOptions) {\n throw new Error('WalletConnect provider missing required property: clientOptions')\n }\n\n if (!isPublicNetwork(network)) {\n throw new Error(\n `WalletConnect only supports Algorand mainnet, testnet, and betanet. \"${network}\" is not supported.`\n )\n }\n\n const chain = ALGORAND_CHAINS[network]\n\n // Initialize client\n const client = new Client({\n ...clientOptions,\n modalOptions: {\n explorerExcludedWalletIds: 'ALL',\n ...clientOptions.modalOptions\n }\n })\n\n // Initialize algod client\n const algosdk = algosdkStatic || (await Algod.init(algodOptions)).algosdk\n const algodClient = getAlgodClient(algosdk, algodOptions)\n\n // Initialize provider client\n const provider = new WalletConnectClient({\n metadata: WalletConnectClient.metadata,\n client,\n clientOptions,\n algosdk,\n algodClient,\n network,\n chain\n })\n\n debugLog(`${PROVIDER_ID.WALLETCONNECT.toUpperCase()} initialized`, '✅')\n\n return provider\n } catch (error) {\n console.error('Error initializing WalletConnect client', error)\n return null\n }\n }\n\n public async connect(): Promise<Wallet> {\n const requiredNamespaces = {\n algorand: {\n chains: [this.chain],\n methods: ['algo_signTxn'],\n events: []\n }\n }\n\n try {\n const session: WalletConnectModalSignSession = await this.#client.connect({\n requiredNamespaces\n })\n\n const { accounts } = session.namespaces.algorand\n\n return {\n ...WalletConnectClient.metadata,\n accounts: this.#mapAccounts(accounts)\n }\n } catch (error) {\n console.error('Error connecting to WalletConnect', error)\n throw error\n }\n }\n\n public async reconnect() {\n const session: WalletConnectModalSignSession | undefined = await this.#client.getSession()\n if (typeof session === 'undefined') {\n return null\n }\n\n const { accounts } = session.namespaces.algorand\n\n return {\n ...WalletConnectClient.metadata,\n accounts: this.#mapAccounts(accounts)\n }\n }\n\n public async disconnect() {\n try {\n const session = await this.#getSession()\n\n await this.#client.disconnect({\n topic: session.topic,\n // replicates getSdkError('USER_DISCONNECTED') from @walletconnect/utils\n reason: {\n message: 'User disconnected.',\n code: 6000\n }\n })\n } catch (error) {\n console.error('Error disconnecting', error)\n }\n }\n\n public async signTransactions(\n connectedAccounts: string[],\n txnGroups: Uint8Array[] | Uint8Array[][],\n indexesToSign: number[] = [],\n returnGroup = true\n ) {\n // Flatten transactions array if nested\n const transactions: Uint8Array[] = Array.isArray(txnGroups[0])\n ? (txnGroups as Uint8Array[][]).flatMap((txn) => txn)\n : (txnGroups as Uint8Array[])\n\n const { txnsToSign, signedIndexes } = this.#composeTransactions(\n transactions,\n connectedAccounts,\n indexesToSign\n )\n\n const request = formatJsonRpcRequest('algo_signTxn', [txnsToSign])\n\n const session = await this.#getSession()\n\n const response = await this.#client.request<Array<string | null>>({\n chainId: this.chain,\n topic: session.topic,\n request\n })\n\n // Check if the result is the same length as the transactions\n const lengthsMatch = response.length === transactions.length\n\n // Join the signed transactions with the original group of transactions\n const signedTxns = transactions.reduce<Uint8Array[]>((acc, txn, i) => {\n if (signedIndexes.includes(i)) {\n const signedTxn = lengthsMatch ? response[i] : response.shift()\n signedTxn && acc.push(new Uint8Array(Buffer.from(signedTxn, 'base64')))\n } else if (returnGroup) {\n acc.push(txn)\n }\n\n return acc\n }, [])\n\n return signedTxns\n }\n\n #composeTransactions(\n transactions: Uint8Array[],\n connectedAccounts: string[],\n indexesToSign: number[]\n ) {\n // Decode the transactions\n const decodedTxns = transactions.map((txn) => {\n return this.algosdk.decodeObj(txn)\n }) as Array<DecodedTransaction | DecodedSignedTransaction>\n\n // Track signed transactions\n const signedIndexes: number[] = []\n\n // Marshal the transactions into WalletConnect format\n const txnsToSign = decodedTxns.reduce<WalletConnectTransaction[]>((acc, txn, i) => {\n const isSigned = 'txn' in txn\n\n const senderAccount = !isSigned\n ? this.algosdk.encodeAddress(txn['snd'])\n : this.algosdk.encodeAddress(txn.txn['snd'])\n\n const shouldSign =\n indexesToSign.includes(i) || (!isSigned && connectedAccounts.includes(senderAccount))\n\n if (shouldSign) {\n signedIndexes.push(i)\n acc.push({\n txn: Buffer.from(transactions[i]).toString('base64')\n })\n } else {\n acc.push({\n txn: isSigned\n ? Buffer.from(\n this.algosdk.encodeUnsignedTransaction(\n this.algosdk.decodeSignedTransaction(transactions[i]).txn\n )\n ).toString('base64')\n : Buffer.from(transactions[i]).toString('base64'),\n signers: []\n })\n }\n\n return acc\n }, [])\n\n return { txnsToSign, signedIndexes }\n }\n\n async #getSession() {\n const session: WalletConnectModalSignSession | undefined = await this.#client.getSession()\n if (typeof session === 'undefined') {\n throw new Error('Session is not connected')\n }\n return session\n }\n\n #mapAccounts(accounts: string[]) {\n return accounts.map((accountStr, index) => ({\n name: `WalletConnect ${index + 1}`,\n address: accountStr.split(':').pop() as string,\n providerId: WalletConnectClient.metadata.id\n }))\n }\n}\n\nexport default WalletConnectClient\n","export const ICON =\n 'data:image/svg+xml;base64,' +\n 'PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPCEtLSBHZW5lcmF0ZWQgYnkgUGl4ZWxtYXRvciBQcm8gMy40LjMgLS0+Cjxzdmcgd2lkdGg9IjQ3IiBoZWlnaHQ9IjQ3IiB2aWV3Qm94PSIwIDAgNDcgNDciIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CiAgICA8cGF0aCBpZD0iUGF0aCIgZmlsbD0iIzY4NTFmZiIgZmlsbC1ydWxlPSJldmVub2RkIiBzdHJva2U9Im5vbmUiIGQ9Ik0gMjMuOTYwODYxIDEuODA3NjkgQyAyNS44MzUwNzcgNC4xMDMxNTMgMjcuOTAyMjE2IDYuMjM0ODkgMzAuMTM3NTM5IDguMTc4MTY5IEMgMjguNjQ3OTY4IDEzLjAwOTMyMyAyNy44NDYwOTIgMTguMTQyMDk0IDI3Ljg0NjA5MiAyMy40NjIxNTQgQyAyNy44NDYwOTIgMjguNzgyMzA3IDI4LjY0ODA2MiAzMy45MTUxNjkgMzAuMTM3NjMgMzguNzQ2MzY4IEMgMjcuOTAyMjE2IDQwLjY4OTcyNCAyNS44MzUwNzcgNDIuODIxNDc2IDIzLjk2MDg2MSA0NS4xMTY5ODUgQyAyMi4wODY1NTQgNDIuODIxNDc2IDIwLjAxOTQxNSA0MC42ODk2MzIgMTcuNzgzOTk4IDM4Ljc0NjM2OCBDIDE5LjI3MzQ3NiAzMy45MTUxNjkgMjAuMDc1NDQ1IDI4Ljc4MjQgMjAuMDc1NDQ1IDIzLjQ2MjMzNyBDIDIwLjA3NTQ0NSAxOC4xNDIyNzcgMTkuMjczNDc2IDEzLjAwOTUwNiAxNy43ODM5OTggOC4xNzgzMTggQyAyMC4wMTk0MTUgNi4yMzUwMDEgMjIuMDg2NTU0IDQuMTAzMjEgMjMuOTYwODYxIDEuODA3NjkgWiBNIDEzLjUxMTQyNyAzNS40MDY0MDMgQyAxMS4xNDUxMzkgMzMuNzQ3ODE0IDguNjMzODE2IDMyLjI4MjA2MyA2LjAwMDI2OSAzMS4wMzE5MzcgQyA2LjczMDc3NiAyOC42Mzc0NzYgNy4xMjM3NTQgMjYuMDk1NzgzIDcuMTIzNzU0IDIzLjQ2MjQyOSBDIDcuMTIzNzU0IDIwLjgyODg5MiA2LjczMDc2MiAxOC4yODcyMDEgNi4wMDAyMzUgMTUuODkyNzM4IEMgOC42MzM4MTYgMTQuNjQyNjE2IDExLjE0NTE3NSAxMy4xNzY4NjEgMTMuNTExNTAxIDExLjUxODI3NiBDIDE0LjQxNjMxMSAxNS4zNTI1NTQgMTQuODk1MDc0IDE5LjM1MTQxNCAxNC44OTUwNzQgMjMuNDYyMTU0IEMgMTQuODk1MDc0IDI3LjU3Mjk4NSAxNC40MTYyODMgMzEuNTcxOTM4IDEzLjUxMTQyNyAzNS40MDY0MDMgWiBNIDMzLjAyNzA0NiAyMy40NjIzMzcgQyAzMy4wMjcwNDYgMjcuNTcyOTg1IDMzLjUwNTc1MyAzMS41NzE4NDYgMzQuNDEwNTUzIDM1LjQwNjEyNCBDIDM2Ljc3Njg1OSAzMy43NDc2MzEgMzkuMjg4MDk0IDMyLjI4MTg3NiA0MS45MjE1MzkgMzEuMDMxODQ1IEMgNDEuMTkxMDE3IDI4LjYzNzM4NCA0MC43OTgwNjEgMjYuMDk1NjkyIDQwLjc5ODA2MSAyMy40NjIyNDYgQyA0MC43OTgwNjEgMjAuODI4OCA0MS4xOTEwMTcgMTguMjg3MjAxIDQxLjkyMTUzOSAxNS44OTI4MyBDIDM5LjI4ODA5NCAxNC42NDI3MDggMzYuNzc2NzY4IDEzLjE3NzA0OCAzNC40MTA1NTMgMTEuNTE4NTU1IEMgMzMuNTA1NzUzIDE1LjM1MjgzMSAzMy4wMjcwNDYgMTkuMzUxNjkyIDMzLjAyNzA0NiAyMy40NjIzMzcgWiIvPgo8L3N2Zz4K'\n","/**\n * Documentation:\n * https://magic.link/docs/blockchains/other-chains/other/algorand\n */\nimport Algod, { getAlgodClient } from '../../algod'\nimport BaseClient from '../base'\nimport { DEFAULT_NETWORK, PROVIDER_ID } from '../../constants'\nimport { debugLog } from '../../utils/debugLog'\nimport { ICON } from './constants'\nimport type { AlgorandExtension } from '@magic-ext/algorand'\nimport type { SDKBase, InstanceWithExtensions } from '@magic-sdk/provider'\nimport type { DecodedSignedTransaction, DecodedTransaction, Network } from '../../types/node'\nimport type { InitParams } from '../../types/providers'\nimport type { Wallet } from '../../types/wallet'\nimport type { MagicAuthTransaction, MagicAuthConstructor, MagicAuthConnectOptions } from './types'\n\nclass MagicAuth extends BaseClient {\n #client: InstanceWithExtensions<\n SDKBase,\n {\n algorand: AlgorandExtension\n }\n >\n clientOptions?: MagicAuthConnectOptions\n network: Network\n\n constructor({\n metadata,\n client,\n clientOptions,\n algosdk,\n algodClient,\n network\n }: MagicAuthConstructor) {\n super(metadata, algosdk, algodClient)\n this.#client = client\n this.clientOptions = clientOptions\n this.network = network\n this.metadata = MagicAuth.metadata\n }\n\n static metadata = {\n id: PROVIDER_ID.MAGIC,\n name: 'Magic',\n icon: ICON,\n isWalletConnect: true\n }\n\n static async init({\n clientOptions,\n algodOptions,\n clientStatic,\n getDynamicClient,\n extensionStatic,\n getDynamicExtension,\n algosdkStatic,\n network = DEFAULT_NETWORK\n }: InitParams<PROVIDER_ID.MAGIC>): Promise<BaseClient | null> {\n try {\n debugLog(`${PROVIDER_ID.MAGIC.toUpperCase()} initializing...`)\n\n let Magic\n if (clientStatic) {\n Magic = clientStatic\n } else if (getDynamicClient) {\n Magic = await getDynamicClient()\n } else {\n throw new Error(\n 'Magic provider missing required property: clientStatic or getDynamicClient'\n )\n }\n\n let AlgorandExtension\n if (extensionStatic) {\n AlgorandExtension = extensionStatic\n } else if (getDynamicExtension) {\n AlgorandExtension = await getDynamicExtension()\n } else {\n throw new Error(\n 'Magic provider missing required property: extensionStatic or getDynamicExtension'\n )\n }\n\n if (!clientOptions || !clientOptions.apiKey) {\n throw new Error(\n 'Magic provider missing API Key to be passed by required property: clientOptions'\n )\n }\n\n const algosdk = algosdkStatic || (await Algod.init(algodOptions)).algosdk\n const algodClient = getAlgodClient(algosdk, algodOptions)\n\n const magic = new Magic(clientOptions?.apiKey, {\n extensions: {\n algorand: new AlgorandExtension({\n rpcUrl: ''\n })\n }\n })\n\n const provider = new MagicAuth({\n metadata: MagicAuth.metadata,\n client: magic,\n clientOptions: clientOptions as MagicAuthConnectOptions,\n algosdk,\n algodClient,\n network\n })\n\n debugLog(`${PROVIDER_ID.MAGIC.toUpperCase()} initialized`, '✅')\n\n return provider\n } catch (e) {\n console.error('Error initializing...', e)\n return null\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n async connect(_: () => void, arg?: any): Promise<Wallet> {\n if (!arg || typeof arg !== 'string') {\n throw new Error('Magic Link provider requires an email (string) to connect')\n }\n\n const email = arg\n await this.#client.auth.loginWithMagicLink({ email: email })\n const userInfo = await this.#client.user.getInfo()\n\n return {\n ...MagicAuth.metadata,\n accounts: [\n {\n name: `MagicWallet ${userInfo.email ?? ''} 1`,\n address: userInfo.publicAddress ?? 'N/A',\n providerId: MagicAuth.metadata.id,\n email: userInfo.email ?? ''\n }\n ]\n }\n }\n\n async reconnect() {\n const isLoggedIn = await this.#client.user.isLoggedIn()\n\n if (!isLoggedIn) {\n return null\n }\n\n const userInfo = await this.#client.user.getInfo()\n\n return {\n ...MagicAuth.metadata,\n accounts: [\n {\n name: `MagicWallet ${userInfo.email ?? ''} 1`,\n address: userInfo.publicAddress ?? 'N/A',\n providerId: MagicAuth.metadata.id,\n email: userInfo.email ?? ''\n }\n ]\n }\n }\n\n async disconnect() {\n await this.#client.user.logout()\n }\n\n async signTransactions(\n connectedAccounts: string[],\n txnGroups: Uint8Array[] | Uint8Array[][],\n indexesToSign?: number[],\n returnGroup = true\n ) {\n // If txnGroups is a nested array, flatten it\n const transactions: Uint8Array[] = Array.isArray(txnGroups[0])\n ? (txnGroups as Uint8Array[][]).flatMap((txn) => txn)\n : (txnGroups as Uint8Array[])\n\n // Decode the transactions to access their properties.\n const decodedTxns = transactions.map((txn) => {\n return this.algosdk.decodeObj(txn)\n }) as Array<DecodedTransaction | DecodedSignedTransaction>\n\n const signedIndexes: number[] = []\n\n // Marshal the transactions,\n // and add the signers property if they shouldn't be signed.\n const txnsToSign = decodedTxns.reduce<MagicAuthTransaction[]>((acc, txn, i) => {\n const isSigned = 'txn' in txn\n\n // If the indexes to be signed is specified, designate that it should be signed\n if (indexesToSign && indexesToSign.length && indexesToSign.includes(i)) {\n signedIndexes.push(i)\n acc.push({\n txn: Buffer.from(transactions[i]).toString('base64')\n })\n // If the indexes to be signed is specified, but it's not included in it,\n // designate that it should not be signed\n } else if (indexesToSign && indexesToSign.length && !indexesToSign.includes(i)) {\n acc.push({\n txn: isSigned\n ? Buffer.from(\n this.algosdk.encodeUnsignedTransaction(\n this.algosdk.decodeSignedTransaction(transactions[i]).txn\n )\n ).toString('base64')\n : Buffer.from(transactions[i]).toString('base64'),\n signers: []\n })\n // If the transaction is unsigned and is to be sent from a connected account,\n // designate that it should be signed\n } else if (!isSigned && connectedAccounts.includes(this.algosdk.encodeAddress(txn['snd']))) {\n signedIndexes.push(i)\n acc.push({\n txn: Buffer.from(transactions[i]).toString('base64')\n })\n // Otherwise, designate that it should not be signed\n } else if (isSigned) {\n acc.push({\n txn: Buffer.from(\n this.algosdk.encodeUnsignedTransaction(\n this.algosdk.decodeSignedTransaction(transactions[i]).txn\n )\n ).toString('base64'),\n signers: []\n })\n } else if (!isSigned) {\n acc.push({\n txn: Buffer.from(transactions[i]).toString('base64'),\n signers: []\n })\n }\n\n return acc\n }, [])\n\n // Sign them with the client.\n try {\n console.log(txnsToSign)\n const result = await this.#client.algorand.signGroupTransactionV2(txnsToSign)\n console.log(result)\n const decodedSignedTxns: Uint8Array[] = result.map((txn: string) => {\n return Buffer.from(txn, 'base64')\n })\n\n // Join the newly signed transactions with the original group of transactions.\n const signedTxns = transactions.reduce<Uint8Array[]>((acc, txn, i) => {\n if (signedIndexes.includes(i)) {\n const signedByUser = decodedSignedTxns.shift()\n signedByUser && acc.push(signedByUser)\n } else if (returnGroup) {\n acc.push(transactions[i])\n }\n\n return acc\n }, [])\n\n return signedTxns\n } catch (e) {\n console.error(e)\n return []\n }\n }\n}\n\nexport default MagicAuth\n","export const ICON =\n 'data:image/svg+xml;base64,' +\n 'PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIGlkPSJMYXllcl8xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0MDkuODMgMjEwLjMzIj48dGV4dCB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwIDE2MS4zMSkiIHN0eWxlPSJmb250LWZhbWlseTpJQk1QbGV4U2Fucy1NZWRtLCAmYXBvcztJQk0gUGxleCBTYW5zJmFwb3M7OyBmb250LXNpemU6MTkwcHg7Ij48dHNwYW4geD0iMCIgeT0iMCI+S01EPC90c3Bhbj48L3RleHQ+PC9zdmc+'\n","import Algod, { getAlgodClient } from '../../algod'\nimport BaseClient from '../base'\nimport { DEFAULT_NETWORK, PROVIDER_ID } from '../../constants'\nimport { debugLog } from '../../utils/debugLog'\nimport { ICON } from './constants'\nimport type _algosdk from 'algosdk'\nimport type { Network } from '../../types/node'\nimport type { InitParams } from '../../types/providers'\nimport type { Account, Wallet } from '../../types/wallet'\nimport type { InitWalletHandle, KMDWalletClientConstructor, ListWalletResponse } from './types'\n\nclass KMDWalletClient extends BaseClient {\n #client: _algosdk.Kmd\n #wallet: string\n #password: string\n walletId: string\n network: Network\n\n constructor({\n metadata,\n client,\n wallet,\n password,\n algosdk,\n algodClient,\n network\n }: KMDWalletClientConstructor) {\n super(metadata, algosdk, algodClient)\n\n this.#client = client\n this.#wallet = wallet\n this.#password = password\n this.walletId = ''\n this.network = network\n this.metadata = KMDWalletClient.metadata\n }\n\n static metadata = {\n id: PROVIDER_ID.KMD,\n name: 'KMD',\n icon: ICON,\n isWalletConnect: false\n }\n\n static async init({\n clientOptions,\n algodOptions,\n algosdkStatic,\n network = DEFAULT_NETWORK\n }: InitParams<PROVIDER_ID.KMD>): Promise<BaseClient | null> {\n try {\n debugLog(`${PROVIDER_ID.KMD.toUpperCase()} initializing...`)\n\n const {\n token = 'a'.repeat(64),\n host = 'http://localhost',\n port = '4002',\n wallet = 'unencrypted-default-wallet',\n password = ''\n } = clientOptions || {}\n\n const algosdk = algosdkStatic || (await Algod.init(algodOptions)).algosdk\n const algodClient = getAlgodClient(algosdk, algodOptions)\n const kmdClient = new algosdk.Kmd(token, host, port)\n\n const provider = new KMDWalletClient({\n metadata: KMDWalletClient.metadata,\n password,\n wallet,\n client: kmdClient,\n algosdk: algosdk,\n algodClient: algodClient,\n network\n })\n\n debugLog(`${PROVIDER_ID.KMD.toUpperCase()} initialized`, '✅')\n\n return provider\n } catch (e) {\n console.error('Error initializing...', e)\n return null\n }\n }\n\n async connect(): Promise<Wallet> {\n // TODO: prompt for wallet and password?\n return {\n ...KMDWalletClient.metadata,\n accounts: await this.listAccounts(this.#wallet, this.requestPassword())\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/require-await\n async disconnect() {\n return\n }\n\n // eslint-disable-next-line @typescript-eslint/require-await\n async reconnect(): Promise<Wallet | null> {\n return null\n }\n\n requestPassword() {\n // TODO: store it locally?\n const pw = prompt('KMD password')\n return pw ? pw : ''\n }\n\n async getWalletToken(walletId: string, password: string): Promise<string> {\n const handleResp: InitWalletHandle = await this.#client.initWalletHandle(walletId, password)\n return handleResp.wallet_handle_token\n }\n\n async releaseToken(token: string): Promise<void> {\n await this.#client.releaseWalletHandle(token)\n }\n\n async listWallets(): Promise<Record<string, string>> {\n const walletResponse = await this.#client.listWallets()\n const walletList: Array<ListWalletResponse> = walletResponse['wallets']\n const walletMap: Record<string, string> = {}\n for (const w of walletList) {\n walletMap[w.name] = w.id\n }\n return walletMap\n }\n\n async listAccounts(wallet: string, password: string): Promise<Array<Account>> {\n // Get a handle token\n const walletId = await this.getWalletId()\n const token = await this.getWalletToken(walletId, password)\n\n // Fetch accounts and format them as lib expects\n const listResponse = await this.#client.listKeys(token)\n const addresses: Array<string> = listResponse['addresses']\n const mappedAccounts = addresses.map((address: string, index: number) => {\n return {\n name: `KMDWallet ${index + 1}`,\n address,\n providerId: KMDWalletClient.metadata.id\n }\n })\n\n // Release handle token\n await this.releaseToken(token)\n\n return mappedAccounts\n }\n\n async getWalletId(): Promise<string> {\n // Use cached if available\n if (this.walletId !== '') return this.walletId\n\n const walletMap = await this.listWallets()\n if (!(this.#wallet in walletMap)) throw Error('No wallet named: ' + this.#wallet)\n this.walletId = walletMap[this.#wallet]\n\n return this.walletId\n }\n\n async signTransactions(\n connectedAccounts: string[],\n txnGroups: Uint8Array[] | Uint8Array[][],\n indexesToSign?: number[],\n returnGroup = true\n ) {\n // If txnGroups is a nested array, flatten it\n const transactions: Uint8Array[] = Array.isArray(txnGroups[0])\n ? (txnGroups as Uint8Array[][]).flatMap((txn) => txn)\n : (txnGroups as Uint8Array[])\n\n // Decode the transactions to access their properties.\n const decodedTxns = transactions.map((txn) => {\n return this.algosdk.decodeObj(txn)\n }) as Array<_algosdk.EncodedTransaction | _algosdk.EncodedSignedTransaction>\n\n // Get a handle token\n const walletId = await this.getWalletId()\n const pw = this.requestPassword()\n const token = await this.getWalletToken(walletId, pw)\n\n const signedTxns: Array<Uint8Array> = []\n // Sign them with the client.\n const signingPromises: Promise<Uint8Array>[] = []\n\n decodedTxns.forEach((dtxn, idx) => {\n const isSigned = 'txn' in dtxn\n\n // push the incoming txn into signed, we'll overwrite it later\n signedTxns.push(transactions[idx])\n\n // Its already signed, skip it\n if (isSigned) {\n return\n // Not specified in indexes to sign, skip it\n } else if (indexesToSign && indexesToSign.length && !indexesToSign.includes(Number(idx))) {\n return\n }\n // Not to be signed by our signer, skip it\n else {\n const senderAddress = this.algosdk.encodeAddress(dtxn.snd)\n const rekeyAddress = dtxn.rekey ? this.algosdk.encodeAddress(dtxn.rekey) : null\n\n const isSignerConnected = rekeyAddress\n ? connectedAccounts.includes(rekeyAddress) && connectedAccounts.includes(senderAddress)\n : connectedAccounts.includes(senderAddress)\n\n if (!isSignerConnected) {\n return\n }\n }\n\n // overwrite with an empty blob\n signedTxns[idx] = new Uint8Array()\n\n const txn = this.algosdk.Transaction.from_obj_for_encoding(dtxn)\n\n const promise = txn.reKeyTo\n ? this.#client.signTransactionWithSpecificPublicKey(token, pw, txn, txn.reKeyTo.publicKey)\n : this.#client.signTransaction(token, pw, txn)\n\n signingPromises.push(promise as Promise<Uint8Array>)\n })\n\n const signingResults = await Promise.all(signingPromises)\n\n // Restore the newly signed txns in the correct order\n let signedIdx = 0\n\n const formattedTxns = signedTxns.reduce<Uint8Array[]>((acc, txn) => {\n // If its an empty array, infer that it is one of the\n // ones we wanted to have signed and overwrite the empty buff\n if (txn.length === 0) {\n acc.push(signingResults[signedIdx])\n\n signedIdx += 1\n } else if (returnGroup) {\n acc.push(txn)\n }\n\n return acc\n }, [])\n\n return formattedTxns\n }\n}\n\nexport default KMDWalletClient\n","export const ICON =\n \"data:image/svg+xml,%3c%3fxml version='1.0' encoding='UTF-8'%3f%3e %3c!-- Generated by Pixelmator Pro 3.2.2 --%3e %3csvg width='409' height='210' viewBox='0 0 409 210' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3e%3ctext id='MNEMONIC' xml:space='preserve' x='0' y='129' font-family='Helvetica' font-size='72' fill='black'%3eMNEMONIC%3c/text%3e%3c/svg%3e\"\n","import Algod, { getAlgodClient } from '../../algod'\nimport BaseClient from '../base'\nimport { DEFAULT_NETWORK, PROVIDER_ID } from '../../constants'\nimport { debugLog } from '../../utils/debugLog'\nimport { ICON } from './constants'\nimport type _algosdk from 'algosdk'\nimport type { TransactionsArray } from '../../types/api'\nimport type { Network } from '../../types/node'\nimport type { InitParams } from '../../types/providers'\nimport type { MnemonicWalletClientConstructor } from './types'\n\nclass MnemonicWalletClient extends BaseClient {\n #client?: _algosdk.Account\n network: Network\n\n constructor({ metadata, algosdk, algodClient, network }: MnemonicWalletClientConstructor) {\n super(metadata, algosdk, algodClient)\n\n this.network = network\n this.metadata = MnemonicWalletClient.metadata\n }\n\n static metadata = {\n id: PROVIDER_ID.MNEMONIC,\n name: 'MNEMONIC',\n icon: ICON,\n isWalletConnect: false\n }\n\n static async init({\n algodOptions,\n algosdkStatic,\n network = DEFAULT_NETWORK\n }: InitParams<PROVIDER_ID.MNEMONIC>): Promise<BaseClient | null> {\n try {\n debugLog(`${PROVIDER_ID.MNEMONIC.toUpperCase()} initializing...`)\n\n const algosdk = algosdkStatic || (await Algod.init(algodOptions)).algosdk\n const algodClient = getAlgodClient(algosdk, algodOptions)\n\n const provider = new MnemonicWalletClient({\n metadata: MnemonicWalletClient.metadata,\n algosdk: algosdk,\n algodClient: algodClient,\n network\n })\n\n debugLog(`${PROVIDER_ID.MNEMONIC.toUpperCase()} initialized`)\n\n return provider\n } catch (e) {\n console.error('Error initializing...', e)\n return null\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/require-await\n async connect() {\n const password = this.requestPassword()\n\n if (!password) {\n this.#client = undefined\n throw new Error('Mnemonic passphrase is required')\n }\n\n this.#client = this.algosdk.mnemonicToSecretKey(password)\n\n return {\n ...MnemonicWalletClient.metadata,\n accounts: [\n {\n name: `MnemonicWallet 1`,\n address: this.#client.addr,\n providerId: MnemonicWalletClient.metadata.id\n }\n ]\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/require-await\n async disconnect() {\n this.#client = undefined\n return\n }\n\n // eslint-disable-next-line @typescript-eslint/require-await\n async reconnect() {\n return null\n }\n\n requestPassword() {\n // TODO: store it locally?\n const pass = prompt('enter mnemonic passphrase, 25 words')\n return pass ? pass : ''\n }\n\n signTransactions(\n connectedAccounts: string[],\n txnGroups: Uint8Array[] | Uint8Array[][],\n indexesToSign?: number[],\n returnGroup = true\n ): Promise<Uint8Array[]> {\n if (!this.#client) {\n throw new Error('Client not connected')\n }\n\n // If txnGroups is a nested array, flatten it\n const transactions: Uint8Array[] = Array.isArray(txnGroups[0])\n ? (txnGroups as Uint8Array[][]).flatMap((txn) => txn)\n : (txnGroups as Uint8Array[])\n\n // Decode the transactions to access their properties.\n const decodedTxns = transactions.map((txn) => {\n return this.algosdk.decodeObj(txn)\n }) as Array<_algosdk.EncodedTransaction | _algosdk.EncodedSignedTransaction>\n\n const signedTxns: Uint8Array[] = []\n // Sign them with the client.\n const signingResults: Uint8Array[] = []\n\n decodedTxns.forEach((dtxn, idx) => {\n const isSigned = 'txn' in dtxn\n\n // push the incoming txn into signed, we'll overwrite it later\n signedTxns.push(transactions[idx])\n\n // Its already signed, skip it\n if (isSigned) {\n return\n // Not specified in indexes to sign, skip it\n } else if (indexesToSign && indexesToSign.length && !indexesToSign.includes(Number(idx))) {\n return\n }\n // Not to be signed by our signer, skip it\n else if (!connectedAccounts.includes(this.algosdk.encodeAddress(dtxn.snd))) {\n return\n }\n\n // overwrite with an empty blob\n signedTxns[idx] = new Uint8Array()\n\n const txn = this.algosdk.Transaction.from_obj_for_encoding(dtxn)\n const signedTxn = txn.signTxn(this.#client?.sk as Uint8Array)\n signingResults.push(signedTxn)\n })\n\n // Restore the newly signed txns in the correct order\n let signedIdx = 0\n const formattedTxns = signedTxns.reduce<Uint8Array[]>((acc, txn) => {\n // If its an empty array, infer that it is one of the\n // ones we wanted to have signed and overwrite the empty buff\n if (txn.length === 0) {\n acc.push(signingResults[signedIdx])\n\n signedIdx += 1\n } else if (returnGroup) {\n acc.push(txn)\n }\n\n return acc\n }, [])\n\n return Promise.resolve(formattedTxns)\n }\n\n signEncodedTransactions(_transactions: TransactionsArray): Promise<Uint8Array[]> {\n throw new Error('Method not implemented.')\n }\n}\n\nexport default MnemonicWalletClient\n","export const ICON =\n \"data:image/svg+xml,%3Csvg fill='%23000000' width='800px' height='800px' viewBox='0 0 24 24' id='wallet' data-name='Flat Line' xmlns='http://www.w3.org/2000/svg' class='icon flat-line'%3E%3Cpath id='secondary' d='M16,12h5V8H5A2,2,0,0,1,3,6V19a1,1,0,0,0,1,1H20a1,1,0,0,0,1-1V16H16a1,1,0,0,1-1-1V13A1,1,0,0,1,16,12Z' style='fill: rgb(44, 169, 188); stroke-width: 2;'%3E%3C/path%3E%3Cpath id='primary' d='M19,4H5A2,2,0,0,0,3,6H3A2,2,0,0,0,5,8H21' style='fill: none; stroke: rgb(0, 0, 0); stroke-linecap: round; stroke-linejoin: round; stroke-width: 2;'%3E%3C/path%3E%3Cpath id='primary-2' data-name='primary' d='M21,8V19a1,1,0,0,1-1,1H4a1,1,0,0,1-1-1V6A2,2,0,0,0,5,8Zm0,4H16a1,1,0,0,0-1,1v2a1,1,0,0,0,1,1h5Z' style='fill: none; stroke: rgb(0, 0, 0); stroke-linecap: round; stroke-linejoin: round; stroke-width: 2;'%3E%3C/path%3E%3C/svg%3E\"\n","import Algod, { getAlgodClient } from '../../algod'\nimport BaseClient from '../base'\nimport { DEFAULT_NETWORK, PROVIDER_ID } from '../../constants'\nimport { debugLog } from '../../utils/debugLog'\nimport { ICON } from './constants'\nimport type _algosdk from 'algosdk'\nimport type { AlgodClientOptions, Network } from '../../types/node'\nimport type { InitParams } from '../../types/providers'\nimport type { Metadata, Wallet } from '../../types/wallet'\nimport type { CustomProvider, CustomWalletClientConstructor } from './types'\n\nclass CustomWalletClient extends BaseClient {\n network: Network\n providerProxy: CustomProvider\n\n static metadata: Metadata = {\n id: PROVIDER_ID.CUSTOM,\n icon: ICON,\n isWalletConnect: false,\n name: 'Custom'\n }\n\n constructor({\n providerProxy,\n metadata,\n algosdk,\n algodClient,\n network\n }: CustomWalletClientConstructor) {\n super(metadata, algosdk, algodClient)\n\n this.providerProxy = providerProxy\n this.network = network\n }\n\n static async init({\n clientOptions,\n algodOptions,\n algosdkStatic,\n network = DEFAULT_NETWORK\n }: InitParams<PROVIDER_ID.CUSTOM>): Promise<BaseClient | null> {\n try {\n debugLog(`${PROVIDER_ID.CUSTOM.toUpperCase()} initializing...`)\n\n if (!clientOptions) {\n throw new Error(`Attempt to create custom wallet with no provider specified.`)\n }\n\n const algosdk: typeof _algosdk =\n algosdkStatic || (await Algod.init(algodOptions as AlgodClientOptions)).algosdk\n const algodClient = getAlgodClient(algosdk, algodOptions as AlgodClientOptions)\n\n try {\n return new CustomWalletClient({\n providerProxy: clientOptions.getProvider({\n algod: algodClient,\n algosdkStatic: algosdk,\n network\n }),\n metadata: {\n ...CustomWalletClient.metadata,\n name: clientOptions.name,\n icon: clientOptions.icon ?? CustomWalletClient.metadata.icon\n },\n algodClient,\n algosdk,\n network\n })\n } finally {\n debugLog(`${PROVIDER_ID.CUSTOM.toUpperCase()} initialized`, '✅')\n }\n } catch (e) {\n console.error('Error initializing...', e)\n return null\n }\n }\n\n async connect(): Promise<Wallet> {\n return await this.providerProxy.connect(this.metadata)\n }\n\n async disconnect() {\n await this.providerProxy.disconnect()\n }\n\n async reconnect(): Promise<Wallet | null> {\n return await this.providerProxy.reconnect(this.metadata)\n }\n\n async signTransactions(\n connectedAccounts: string[],\n txnGroups: Uint8Array[] | Uint8Array[][],\n indexesToSign?: number[],\n returnGroup = true\n ) {\n return await this.providerProxy.signTransactions(\n connectedAccounts,\n txnGroups,\n indexesToSign,\n returnGroup\n )\n }\n}\n\nexport default CustomWalletClient\n","/**\n * arc-0027\n */\nexport const ARC_0027_PREFIX = 'arc0027'\nexport const ARC_0027_CHANNEL_NAME = `${ARC_0027_PREFIX}:channel`\nexport const ARC_0027_ENABLE_REQUEST = `${ARC_0027_PREFIX}:enable:request`\nexport const ARC_0027_GET_PROVIDERS_REQUEST = `${ARC_0027_PREFIX}:get_providers:request`\nexport const ARC_0027_PROVIDER_ID = 'f6d1c86b-4493-42fb-b88d-a62407b4cdf6'\nexport const ARC_0027_SIGN_TXNS_REQUEST = `${ARC_0027_PREFIX}:sign_txns:request`\n/**\n * errors\n */\nexport const UNKNOWN_ERROR = 4000\nexport const METHOD_CANCELED_ERROR = 4001\nexport const METHOD_TIMED_OUT_ERROR = 4002\nexport const METHOD_NOT_SUPPORTED_ERROR = 4003\nexport const NETWORK_NOT_SUPPORTED_ERROR = 4004\nexport const UNAUTHORIZED_SIGNER_ERROR = 4100\nexport const INVALID_INPUT_ERROR = 4200\nexport const INVALID_GROUP_ID_ERROR = 4201\n/**\n * genesis hashes\n */\nexport const ALGORAND_BETANET_GENESIS_HASH = 'mFgazF+2uRS1tMiL9dsj01hJGySEmPN28B/TjjvpVW0='\nexport const ALGORAND_MAINNET_GENESIS_HASH = 'wGHE2Pwdvd7S12BL5FaOP20EGYesN73ktiC1qzkkit8='\nexport const ALGORAND_TESTNET_GENESIS_HASH = 'SGO1GKSzyE7IEPItTxCByw9x8FmnrCDexi9/cOUJOiI='\nexport const VOI_TESTNET_GENESIS_HASH = 'IXnoWtviVVJW5LGivNFc0Dq14V3kqaXuK2u5OQrdVZo='\n/**\n * timeouts\n */\nexport const DEFAULT_REQUEST_TIMEOUT = 180000 // 3 minutes in milliseconds\nexport const LOWER_REQUEST_TIMEOUT = 750 // 0.75 seconds in milliseconds\nexport const UPPER_REQUEST_TIMEOUT = 300000 // 5 minutes in milliseconds\n/**\n * icon\n */\nexport const ICON =\n 'data:image/svg+xml;base64,' +\n 'PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgdmVyc2lvbj0iMS4xIgogICBpZD0ic3ZnMiIKICAgdmlld0JveD0iMCAwIDEzNjUuMzMzMyAxMzY1LjMzMzMiCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CiAgPHBhdGgKICAgIGQ9Im0gNjY3Ljk5OTk4LDEwNDguNjY2MiBjIDAsLTY0LjE2Njk4IC0wLjYyMDQ0LC0xMjguODE2OTggLTEuMzc4NzcsLTE0My42NjY3IC0yLjgxMTA3LC01NS4wNDczNyAtMTIuMDY3NDksLTkzLjA1MjU5IC0zMy4yNDA1OSwtMTM2LjQ3OTkyIC0yMS41MDczNCwtNDQuMTEyODkgLTUxLjA3MDU3LC04Mi42MzAyMiAtODQuNzM2ODYsLTExMC40MDE5OCAtMjMuNjQ4MjEsLTE5LjUwNzcxIC0yOS4zOTQ4NCwtMjMuNTc5NjMgLTUzLjU5NzA3LC0zNy45Nzc1NSAtMTAuMzU1NTMsLTYuMTYwNDkgLTQ1Ljk3MTAyLC0yMi44MDY3MyAtNDguNzk2MjIsLTIyLjgwNjczIC0wLjk0NDQzLDAgLTIuMjg3MTUsLTAuNTUyODkgLTIuOTgzODEsLTEuMjI4NjUgLTEuNDkxOTUsLTEuNDQ3MTYgLTM0LjAwNzg3LC0xMS4wNzg0NyAtNDQuNiwtMTMuMjEwNjQgLTE5LjUwOTI4LC0zLjkyNzE4IC00Ni4xMDEzMSwtNi44NjQxMiAtNjUuOTI5MTUsLTcuMjgxNTIgbCAtMTMuMjYyNDksLTAuMjc5MTkgLTEuNzk0NCwxMi42NjY2NyBjIC0yLjQ3MjMzLDE3LjQ1MjI1IC0yLjk5NDMyLDQ4LjMxNTQzIC0zLjAwNDg3LDE3Ny42NjY2NiBsIC0wLjAwOSwxMTEuNjY2NjYgaCAtMjggLTI4IGwgMC4wMjg5LC0xMzAuMzMzMzMgYyAwLjAyNjQsLTExOC45MzM1NyAwLjI1Mjg0LC0xMzIuNDkwODIgMi41ODg1NiwtMTU0Ljk5OTk5IDIuNjU1MjMsLTI1LjU4ODI2IDYuMzY3NjgsLTQ4LjY4Njg2IDkuODU3NTksLTYxLjMzMzM0IDcuMDU0NTIsLTI1LjU2MzU4IDEwLjYyNTc5LC0zNy4yNjIyMSAxMi44MjE0MywtNDIgMC42Nzk3LC0xLjQ2NjY2IDIuMTI2MzMsLTUuMzY2NjYgMy4yMTQ3MywtOC42NjY2NiA2LjY5Njc2LC0yMC4zMDQ0NyAyNi40NDAxNSwtNTguNzgxMzYgNDMuNDg4NzMsLTg0Ljc1MzAzIDI4LjA3NzM3LC00Mi43NzI4MSA2MC4zNDY2OSwtNzYuODgwNzQgMTA0LjY2NjY3LC0xMTAuNjMwMjYgNC42ODc3NywtMy41Njk3MiAyOS40ODMwNSwtMjAuMDcxOTkgMzkuNjU5OTgsLTI2LjM5NTMyIDEzLjU2MjQxLC04LjQyNjg5IDUxLjgwNDgsLTI2LjY4OTI1IDY1LjAwNjY4LC0zMS4wNDM0NSAzLjMsLTEuMDg4NCA3LjIsLTIuNTMxMiA4LjY2NjY3LC0zLjIwNjIzIDcuNjYxMzMsLTMuNTI2MDkgNDEuMjA5ODgsLTEzLjE5MDY5IDU2LC0xNi4xMzIzNyA3OS45NTg3OCwtMTUuOTAzMzkgMTU3Ljk3ODkyLC0xMC43Njc3MSAyMzMuOTk5OTksMTUuNDAzMDYgNDEuOTE4NjEsMTQuNDMwNzYgNzUuOTk2NDksMzIuMTc3NzkgMTE0Ljc1MTY2LDU5Ljc2MDE5IDE2Ljg4MDQ3LDEyLjAxMzk5IDQ3LjIyMTc2LDM4Ljk4MjMxIDU5LjkxMTE2LDUzLjI1MTAzIDUuNDE5Myw2LjA5MzgzIDExLjUxMDgsMTIuNzc1MDMgMTMuNTM2NSwxNC44NDcxIDMuNTYzNiwzLjY0NTA5IDI0LjIyOTQsMzAuNTQ2NDkgMjkuODI3OCwzOC44Mjc4NyAyNC4xNjc3LDM1Ljc0OTczIDQ1LjkxMjYsODEuODc4OTQgNTcuMjI5MSwxMjEuNDA0NzQgMS4yNTk4LDQuNCAyLjgxMjQsOS41IDMuNDUwNCwxMS4zMzMzMyAxLjYxNDgsNC42NDA3OCA2LjUzMDksMjguMjM1NiA4LjA1NjMsMzguNjY2NjcgMC42OTcxLDQuNzY2NjcgMS41ODAzLDkuNTE2OTUgMS45NjI2LDEwLjU1NjE2IDAuMzgyNCwxLjAzOTIzIDEuNTcxNiwxMy4wMzkyMyAyLjY0MjcsMjYuNjY2NjcgMS41MTk3LDE5LjMzNDgzIDEuOTQ5NSw1Mi42NzI4MyAxLjk1NjMsMTUxLjc3NzE3IGwgMC4wMSwxMjYuOTk5OTkgaCAtMjcuOTA3NSAtMjcuOTA3NiBsIC0wLjYzOTIsLTEzOS42NjY2NiBjIC0wLjUwMTYsLTEwOS41Nzg2MyAtMS4wMzM5LC0xNDIuMTA4MTcgLTIuNDcxMSwtMTUxIGwgLTEuODMxOCwtMTEuMzMzMzMgLTEyLjYyMTQsMC4yMzMwNCBjIC00MS4xOTI1LDAuNzYwNTcgLTgwLjc3OTcyLDguNTI0MjEgLTExOC45NjgzMywyMy4zMzE0NyBsIC0xNC4zNDY4Nyw1LjU2Mjg2IDEuMDEzNTQsOC43Njk2NCBjIDAuNTU3NDQsNC44MjMzMSAxLjAxMzUzLDk4Ljc2OTY1IDEuMDEzNTMsMjA4Ljc2OTY1IFYgMTAyMiBsIC0yNy42NjY2NywwLjM2MDQgLTI3LjY2NjY2LDAuMzYwMyBWIDgyOS4yMTc3MSBjIDAsLTE2NC45MjU5MSAtMC4yNzQ1MiwtMTkzLjM5NzY5IC0xLjg1ODg4LC0xOTIuNzg5NzEgLTguMjY2MjcsMy4xNzIwNiAtNDMuNTg1MTcsMzQuMTczMzIgLTU5LjI2MDMyLDUyLjAxNTg5IC0zNy4wMDU5Niw0Mi4xMjI4MyAtNjMuMjI1MSw5MC40MjEzIC03Ni4xOTQ0NSwxNDAuMzU4NDEgLTExLjMzNTMxLDQzLjY0NTM2IC0xMi4wODU5Miw1Ny45ODA0NCAtMTEuMDc1NDMsMjExLjUxNzMgbCAwLjgyMjc4LDEyNS4wMTM3IGggLTI4LjIxNjg2IC0yOC4yMTY4NCB6IG0gNDAuMTQ2OTYsLTMwNy4xMTM4IGMgMTYuMjcwNDgsLTM0LjI1NTk4IDM1LjE1MzYyLC02Mi4xNDM5IDYxLjk1NjQxLC05MS41MDE1OCAxMy40MDA5NiwtMTQuNjc4MzMgMzUuMTE3NTUsLTM1LjE5MzkgNDUuMjI5OTYsLTQyLjcyODUzIDIuOTMzMzQsLTIuMTg1NTggNS42MzMzNCwtNC4zMzE0IDYsLTQuNzY4NDYgMS4yMzM5NSwtMS40NzA4NyAyNC44ODc1OCwtMTguMjUzMzEgMjguNzk2MzYsLTIwLjQzMTI2IDIuMTI4NjcsLTEuMTg2MDggNC43NzAzMSwtMi43MzE3OCA1Ljg3MDMxLC0zLjQzNDg5IDEyLjk1MTY5LC04LjI3ODY4IDM0LjU3NzI4LC0xOS41MDUyMyA1Ni42NjY2NiwtMjkuNDE3NTIgMTAuODEzOTksLTQuODUyNjMgMzYuNDY4MjMsLTEzLjQ5NzE2IDUxLjMzMzM0LC0xNy4yOTc0NSAyNy40NzU5LC03LjAyNDI3IDQ4LjI1OTMyLC0xMC4yNDc0NiA3My44ODM0MiwtMTEuNDU4MiAxMC42OTc0LC0wLjUwNTQ2IDE5LjQ0OTksLTEuMzI4OTEgMTkuNDQ5OSwtMS44Mjk5IDAsLTYuNDQ4NzYgLTE4LjI2MTEsLTQ4LjI1NTY2IC0zMC43MTgsLTcwLjMyNTYzIC04LjAxMjIsLTE0LjE5NTQ0IC0yMi40MzU4LC0zNi41MTA0OCAtMjUuMjI0NiwtMzkuMDI1NjYgLTAuNDA2NiwtMC4zNjY2NiAtMi40OTYxMiwtMy4wNjY2NiAtNC42NDM0MywtNiAtMTkuNzAwOTEsLTI2LjkxMjM4IC01NS4wMzY2OSwtNjAuMzg0NDkgLTg2Ljc0NzI5LC04Mi4xNzIwNiAtNTkuNzQyMzksLTQxLjA0NzU1IC0xMzAuNzM1NzYsLTYzLjgxMDUxIC0yMDYuMjMzOTIsLTY2LjEyNTgzIC00Ny42MDY0OCwtMS40NTk5NiAtMTAwLjIwMDE5LDguMDk0NzUgLTE0OS43NjYwNywyNy4yMDgwNCAtMjUuOTQ2OTksMTAuMDA1NTEgLTY5LjMxNzMxLDM0LjU2MDI2IC05MCw1MC45NTQ4MiAtNDkuNTM0MTEsMzkuMjY0MjIgLTgyLjY1Njg4LDc5LjkwNjkzIC0xMTAuNDA0OCwxMzUuNDcwMjYgLTcuMzMwNDcsMTQuNjc4NzQgLTIwLjI2MTg2LDQ1Ljk1MjM3IC0yMC4yNjE4Niw0OS4wMDE4IDAsMS41NTMwNiAzLjcyMDk2LDIuMTE2NjEgMTguOTUzNzcsMi44NzA1OCAxNy41MzYzOCwwLjg2OCA0NS40MjI4NSw0LjA0Mzc0IDQ3LjY2MjM3LDUuNDI3ODMgMC41MjkzMywwLjMyNzE1IDQuMjA3MjQsMS4xNDE1MiA4LjE3MzEzLDEuODA5NzIgMTQuOTMwODQsMi41MTU2NSA1NS45NDQ3MSwxNC44NjkwOCA2NS40Nzc4NCwxOS43MjIgMS45ODAyNiwxLjAwODA3IDQuMTM1NDYsMS44MzI4NCA0Ljc4OTM1LDEuODMyODQgMC42NTM4OSwwIDIuNzc5NDUsLTQuMDUgNC43MjM0NSwtOSAzLjQzMjkxLC04Ljc0MTE3IDE1Ljc1MDI3LC0zMC41ODg5MyAyMS40MTg4NCwtMzcuOTkxNCAxNi4xODI5MSwtMjEuMTMyOTEgMjQuNTgwMDksLTMwLjI1OTM4IDM5LjQ2NzkxLC00Mi44OTU3MiAxNS4yMDUxNywtMTIuOTA1NjkgMjEuMTgwMjksLTE3LjAxOTI4IDM5LjU3MTg0LC0yNy4yNDMzNCAzOC4wNTIxNSwtMjEuMTUzNjMgODYuNzgzNjEsLTMxLjc5NzQ0IDEyOS4yMjUxMSwtMjguMjI1MDcgMzMuMjQ3NTksMi43OTg0OSA1NS4wODQ4Nyw4LjYxODU1IDgyLjUzNjM3LDIxLjk5NzUzIDM2LjA4NzA0LDE3LjU4NzY2IDYzLjQ4NTY0LDQwLjYyMzEgODguNzc4NzEsNzQuNjQwOTYgOC43OTcwOCwxMS44MzE2MSA4Ljc3NDY2LDEyLjA3NyAtMS40NDUzNywxNS44MjIyOCAtMy4zLDEuMjA5MzMgLTEzLjQ2Mzg3LDYuMzQyODUgLTIyLjU4NjM4LDExLjQwNzgzIC05LjEyMjUsNS4wNjQ5NyAtMTcuMzQ0MTcsOC45MTgyNCAtMTguMjcwMzcsOC41NjI4MiAtMC45MjYyLC0wLjM1NTQxIC0zLjQ4MzY3LC0zLjQ1MDczIC01LjY4MzI1LC02Ljg3ODQ5IC01LjcyMjE1LC04LjkxNzIgLTI5LjcxMjY3LC0zMS45NDA4NSAtNDEuNDYsLTM5Ljc4OTA4IC0zNS4xNTk2NywtMjMuNDg5NjYgLTc0LjE0MzY3LC0zMy4zODg4OCAtMTE2Ljk5NzM2LC0yOS43MDkxNCAtNTkuMDAwNDcsNS4wNjYyMiAtMTE0Ljc3MzQ4LDQ0LjUxMzk1IC0xNDEuNzIwOTQsMTAwLjIzNzg5IC0yLjkwNDk0LDYuMDA3MDIgLTUuMjgxNywxMS45OTE0MSAtNS4yODE3LDEzLjI5ODY0IDAsMS40MjQ2NiAyLjEwNTM0LDMuNDUwODIgNS4yNTU2Nyw1LjA1OCAxNC45NTUwMSw3LjYyOTQ4IDQ2LjQ3OTc1LDMzLjAzNjg0IDY5LjQ4NTQ5LDU2LjAwMTg1IDI3LjcxMDExLDI3LjY2MTAyIDQ1Ljc4OTkzLDUwLjkwNTk4IDY1LjI2NjE1LDgzLjkxMTY1IDguNjE2OTYsMTQuNjAyODcgMTIuNDU5NzQsMjIuNDUxMTMgMjIuMTIxMDYsNDUuMTc4NjggbCAyLjQzMTIsNS43MTkyMiAyLjU1NDMyLC01LjcxOTIyIGMgMS40MDQ4OCwtMy4xNDU1OCA2LjA2OTc2LC0xMy4xMjA2NCAxMC4zNjY0LC0yMi4xNjY4MSB6IG0gLTI0NS40ODAyOCw5Ni42Njk4MSBjIDAsLTEwMS40NDQ0NSAwLjM1MDAxLC0xODQuNzk0NDUgMC43Nzc4LC0xODUuMjIyMjQgMS45NjYwNCwtMS45NjYwNSAyMS4zMTA0MSw5LjU3ODU5IDQxLjIyMjE5LDI0LjYwMTI1IGwgMTQuNjY2NjcsMTEuMDY1NDMgMC4zMzg1MSwxNjcgMC4zMzg0OSwxNjYuOTk5OTUgaCAtMjguNjcxODMgLTI4LjY3MTgzIHoiCiAgICBmaWxsPSIjZmZmZmZmIiAvPgogIDxwYXRoCiAgICBkPSJNIDAsNjgyLjY2NjY1IFYgMCBIIDY4Mi42NjY2NSAxMzY1LjMzMzMgViA2ODIuNjY2NjUgMTM2NS4zMzMzIEggNjgyLjY2NjY1IDAgWiBNIDcyNC4zMTE4NiwxMDI1IGMgMC4zNTI2OCwtMTI3LjE2NjgyIDAuNjI1NTYsLTE0Mi44MjY2NyAyLjY2NjE0LC0xNTMuMDAwMDIgMS4yNTAyOSwtNi4yMzMzMyAzLjI0NjY1LC0xNy4wMzMzMyA0LjQzNjM0LC0yNCAyLjE2OTM0LC0xMi43MDMxMyA1LjkyODM5LC0yNy4yNzg3MiA5LjI4NDQ0LC0zNiAwLjk4NzcsLTIuNTY2NjcgMi41Mjc0NCwtNy4wNjY2NyAzLjQyMTY3LC0xMCAwLjg5NDIzLC0yLjkzMzMzIDMuNjMyOTUsLTkuNjg1ODcgNi4wODYwNCwtMTUuMDA1NjQgMi40NTMwOSwtNS4zMTk3NiA0LjQ2MDE2LC0xMC4wNzIzNSA0LjQ2MDE2LC0xMC41NjEyOSAwLC0wLjc5MDE1IDYuMDI2NDQsLTEzLjI1NjM1IDkuMzk0MzgsLTE5LjQzMzA3IDAuNjk5NzUsLTEuMjgzMzMgMS44NDY1OCwtMy4zODMzMyAyLjU0ODUsLTQuNjY2NjcgMy4xOTMwNCwtNS44Mzc5MyAxNC4wMDg2NCwtMjMuNzM0ODkgMTQuNzA1MjUsLTI0LjMzMzMzIDAuNDI2ODMsLTAuMzY2NjYgMy43NDE1OSwtNC44NjY2NiA3LjM2NjE1LC0xMCAzLjYyNDU0LC01LjEzMzMzIDcuNTg0ODgsLTEwLjUzMzMzIDguODAwNzIsLTEyIDE5LjI5NjI0LC0yMy4yNzcwMSAzNi4xMTI4OSwtNDAuNTI5ODQgNDguNzcyNTMsLTUwLjAzNzU4IDQuMjYwMTksLTMuMTk5NTIgOC4zNDU4LC02LjQ2MzQ0IDkuMDc5MTMsLTcuMjUzMTYgMC43MzMzNCwtMC43ODk3MSA0LjQ4MzM0LC0zLjcyMzQ2IDguMzMzMzQsLTYuNTE5NDQgbCA3LC01LjA4MzYgdiAxOTIuNzgwMjIgMTkyLjc4MDE4IGggMjkuMzY5NzQgMjkuMzY5NzYgbCAtMC41MDA1NywtMjA1LjY2NjYyIGMgLTAuMjc1MzIsLTExMy4xMTY2NiAtMC43NDE3MSwtMjA3LjA0ODc4IC0xLjAzNjQzLC0yMDguNzM4MDMgLTAuNDU0OTcsLTIuNjA3ODIgMC40NzAzMywtMy40ODc2MiA2LjEzMDgzLC01LjgyOTM1IDMuNjY2NjYsLTEuNTE2ODggOC41NTczNCwtMy41ODQ3NiAxMC44NjgxNywtNC41OTUyOSAyLjMxMDgzLC0xLjAxMDUyIDUuMTg0NzMsLTEuODM3MzIgNi4zODY0NSwtMS44MzczMiAxLjIwMTcyLDAgNC40MTEwNCwtMS4wOTQ5MSA3LjEzMTgzLC0yLjQzMzEyIDEzLjk1ODk2LC02Ljg2NTY4IDYxLjc1MzQ3LC0xNS42NTIxMSA5MS43NDg2NywtMTYuODY2ODQgbCAyMC4xMzUyLC0wLjgxNTQyIDAuODY3OCw4LjM5MTAyIGMgMC40Nzc0LDQuNjE1MDYgMS40NDY5LDEyLjU5MTAyIDIuMTU0NiwxNy43MjQzNiAwLjc1MTcsNS40NTI4MiAxLjMxMzMsNjQuNDkxODYgMS4zNTA3LDE0MS45OTk5OSAwLjAzNSw3Mi45NjY2NyAwLjU0OCwxMzMuNDI5MTYgMS4xMzk1LDEzNC4zNjExMSAwLjgyNjEsMS4zMDE1IDcuNTQ2NCwxLjYxMDcgMjguOTc5NiwxLjMzMzMzIGwgMjcuOTA0MSwtMC4zNjExMSAtMC4wOTcsLTEzNi42NjY2NiBjIC0wLjA5NCwtMTMyLjc3MDI1IC0wLjE4MTYsLTEzNy4zNTA5MiAtMy4wNTcyLC0xNjAuNjY2NjYgLTMuMTk4MiwtMjUuOTMxNjQgLTUuMzM2NSwtMzcuMzUwNjYgLTEwLjQ4NjQsLTU2IC0xLjgyMjUsLTYuNiAtMy40Mzk5LC0xMi42IC0zLjU5NCwtMTMuMzMzMzQgLTEuNTgsLTcuNTE1NzcgLTMuMDk5NiwtMTIuMjk4MyAtNi45Mzc0LC0yMS44MzQyNCAtMi40NzE5LC02LjE0MjE2IC00LjQ5NDQsLTExLjk5MDQ0IC00LjQ5NDQsLTEyLjk5NjE3IDAsLTMuMTI2NDEgLTIzLjUxMTEsLTUyLjEwOTQ0IC0yOC42NDgzLC01OS42ODU2OSAtMS41NDc4LC0yLjI4MjgxIC0zLjIwNzcsLTUuMTc3OTEgLTMuNjg4NSwtNi40MzM1NiAtMS43ODIxLC00LjY1MzggLTI2LjM0MTksLTQwLjUxNTIgLTMyLjMyOTksLTQ3LjIwNzA1IC0wLjczMzMsLTAuODE5NTQgLTQuMzMzMywtNS4yNDMxMiAtOCwtOS44MzAyIC04LjYxMTEsLTEwLjc3Mjc0IC00MS41MTU1OSwtNDQuMDgwNjQgLTUyLjU1NzYsLTUzLjIwMjAzIC00LjcwNjY4LC0zLjg4ODAyIC05LjM4ODc1LC03LjkwMDI4IC0xMC40MDQ2LC04LjkxNjEzIC0xLjg4MTk2LC0xLjg4MTk1IC01Ljk1NzMsLTQuNzQzIC0yOC4zNzExMiwtMTkuOTE3NzIgLTYuOTY2NjcsLTQuNzE2NiAtMTMuMzI4NTYsLTkuMTMyMzUgLTE0LjEzNzU1LC05LjgxMjc3IC0wLjgwODk5LC0wLjY4MDQyIC01LjMwODk5LC0zLjIxMzQzIC0xMCwtNS42Mjg5MiAtNC42OTEwMSwtMi40MTU1IC04LjgyOTEyLC00Ljc2NDU0IC05LjE5NTc5LC01LjIyMDA4IC0yLjI5NTY4LC0yLjg1MjIyIC01MC41MTMyMywtMjQuNTUwMTYgLTYzLjk5OTk5LC0yOC44MDAwNyAtMjQuNTAxMTQsLTcuNzIwNzMgLTM2LjQxNDI0LC0xMS4xODA0NyAtNDMuMzMzMzQsLTEyLjU4NDY1IC00LjQsLTAuODkyOTUgLTExLjksLTIuNjgwNiAtMTYuNjY2NjYsLTMuOTcyNTYgLTM5LjkyMDQ1LC0xMC44MjAwNyAtMTM4LjY2NjM5LC0xMC41MTUyIC0xNzkuMzMzMzMsMC41NTM2OSAtMy42NjY2NywwLjk5OCAtMTEuNDY2NjcsMi44NTc3MSAtMTcuMzMzMzMsNC4xMzI2NyAtNS44NjY2NywxLjI3NDk2IC0xNi40MzYyNCw0LjM1MTUyIC0yMy40ODc5NCw2LjgzNjggLTcuMDUxNywyLjQ4NTI4IC0xMy41NjEwMiw0LjUxODY5IC0xNC40NjUxNyw0LjUxODY5IC0wLjkwNDEzLDAgLTMuNTM0NTYsMC44NTY2NCAtNS44NDUzOSwxLjkwMzY0IC0xMC41NTQyMSw0Ljc4MTk1IC0xNi43ODI1Miw3LjQyOTY5IC0xNy40NzY4Niw3LjQyOTY5IC0yLjIyNzY4LDAgLTUzLjM0ODIsMjYuMTM1NiAtNTYuODIxOTUsMjkuMDUwNDggLTEuMDQ2NDgsMC44NzgxMiAtOC4yMDI2OSw1Ljc5Nzk2IC0xNS45MDI2OSwxMC45MzI5OCAtMjkuMzA3NjcsMTkuNTQ0ODEgLTQxLjg1MDI3LDI5Ljc5OTIyIC02Ni4wMjkyOCw1My45ODMzMyAtMTguNjM4MDEsMTguNjQxOTQgLTI4LjQ0MTg0LDI5Ljk0Mjg0IC00MS41NTE5OSw0Ny44OTcwNiAtMy44MDMwMiw1LjIwODIyIC04LjY3MTAyLDExLjg2OTQ4IC0xMC44MTc3OCwxNC44MDI4MiAtMi4xNDY3NiwyLjkzMzMzIC01LjYxNDkzLDguMzMzMzMgLTcuNzA3MDUsMTIgLTIuMDkyMTIsMy42NjY2NiAtNC42MTEzMSw3LjQ5NjczIC01LjU5ODIyLDguNTExMjQgLTAuOTg2ODksMS4wMTQ1MiAtMy4xNzM1OCw0LjYxNDUyIC00Ljg1OTMsOCAtMS42ODU3MiwzLjM4NTQ5IC02LjQ3NDEsMTIuNzU1NDIgLTEwLjY0MDgzLDIwLjgyMjA5IC00LjE2NjczLDguMDY2NjcgLTkuOTkwODMsMjAuMzY2NjcgLTEyLjk0MjQxLDI3LjMzMzMzIC0yLjk1MTYsNi45NjY2NyAtNi4yMjYwMywxNC41NTczNSAtNy4yNzY1MSwxNi44NjgxNyAtMS4wNTA0OCwyLjMxMDgzIC0xLjkyNjczLDUuMDEwODMgLTEuOTQ3MjMsNiAtMC4wMjA1LDAuOTg5MTggLTEuODQ5MDUsNi44OTg1IC00LjA2MzQ4LDEzLjEzMTgzIC0zLjY5MzIyLDEwLjM5NjAzIC01LjI5MTE3LDE2LjMwMDQ4IC0xMS4xODYyNCw0MS4zMzMzMyAtOC4zNDY4MSwzNS40NDM5OCAtOS4yNDY3OCw1Ni42MDI1IC04LjgxODg4LDIwNy4zMzMzMyAwLjE5OTg2LDcwLjQgMC42NDA4NCwxMjguNDUgMC45Nzk5OCwxMjkgMC43OTY2NCwxLjI5MTk5IDUyLjY0MjM4LDEuMjcyNjEgNTQuNjM2OTcsLTAuMDIwNCAxLjEwMTQ4LC0wLjcxNDA3IDEuNzIyMTEsLTM4LjM4NTk2IDIuMjg5NTksLTEzOC45Nzk1OCAwLjY5MDIsLTEyMi4zNDM2NiAxLjYzMDg1LC0xNjEuMjA5MjkgMy45NTgwMSwtMTYzLjUzNjQ3IDEuMjcwMzMsLTEuMjcwMzIgNDguMTg1MTYsMi4wMTgxNCA1OC45MDc5OCw0LjEyOTExIDUuODY2NjcsMS4xNTQ5NSAxNS40NjY2NywzLjAzNzk3IDIxLjMzMzM0LDQuMTg0NDkgMTkuNzA4MjUsMy44NTE1OSA0NS45NjkzMiwxMi41NTE2MiA2MS41OTE4OCwyMC40MDQ3OSA0LjU0MjIsMi4yODMyOCA5LjA3MjIsNC4xNTE0MSAxMC4wNjY2Niw0LjE1MTQxIDAuOTk0NDcsMCAyLjM3ODEyLDAuNTIwMzQgMy4wNzQ3OSwxLjE1NjMgMC42OTY2NywwLjYzNTk2IDYuMzg1MTMsMy44NDY2OSAxMi42NDEwNCw3LjEzNDk1IDYuMjU1ODksMy4yODgyNyAxNi42ODA5Miw5LjUxNzk0IDIzLjE2NjcsMTMuODQzNzEgNi40ODU4LDQuMzI1NzcgMTQuMTgyNiw5LjQzNTIzIDE3LjEwNCwxMS4zNTQzNiAyLjkyMTQyLDEuOTE5MTIgNS42OTYzOSw0LjAyMTU3IDYuMTY2NjMsNC42NzIxMSAwLjQ3MDIzLDAuNjUwNTQgNS4wNTQ5Niw0LjU0MDgxIDEwLjE4ODI5LDguNjQ1MDIgMTcuMTc0NSwxMy43MzE0MyA0MS45NjEzLDM5Ljc4NTUxIDUzLjYwNTkyLDU2LjM0NjYzIDEuNjE2NiwyLjI5OTE1IDMuNDQ4ODMsNC43ODAyNSA0LjA3MTYzLDUuNTEzNTkgNi4yMjMwNyw3LjMyNzUgMjAuMTQ3NjEsMzAuNzc2ODggMjkuNjkwNjYsNDkuOTk5OTkgOC44MDI1NiwxNy43MzE1NCAyMC4xNTU1OSw0Ny4xODIzIDIxLjg0NDUyLDU2LjY2NjY3IDAuNTIyMzYsMi45MzMzMyAxLjc2OTcsOC4zMzMzMyAyLjc3MTg2LDEyIDguNDY0NTcsMzAuOTY5OTcgOS45ODMxMiw2My4xMDkyMiAxMC4wMDEwOSwyMTEuNjY2NjQgbCAwLjAxNDMsMTE4LjMzMzMgaCAyOC42MjYxNiAyOC42MjYxNiB6IE0gNjkwLjk3NzU0LDc1Ni42MzQxNyBjIC0xMS4yNDM3LC0yOS4wNTY3MyAtMzYuOTc0MDgsLTY5Ljk3NDgxIC02Mi44NjA1MywtOTkuOTY0ODQgLTguNTY4MzYsLTkuOTI2NjUgLTQzLjYyMDkzLC00NC42MDUxIC00NS4xMTcwMiwtNDQuNjM1NDkgLTAuOTE2NjcsLTAuMDE4NyAtMS42NjY2NywtMC42MDUwMyAtMS42NjY2NywtMS4zMDMxMyAwLC0wLjY5ODExIC0yLjg1LC0zLjIxNjAzIC02LjMzMzMzLC01LjU5NTM5IC0zLjQ4MzM0LC0yLjM3OTM3IC02LjkzMzM0LC01LjAxNTE2IC03LjY2NjY3LC01Ljg1NzMxIC0wLjczMzMzLC0wLjg0MjE2IC0zLjQzMzMzLC0yLjk0NTMyIC02LC00LjY3MzcgLTIuNTY2NjcsLTEuNzI4MzggLTQuOTY2NjcsLTMuNTI2OTkgLTUuMzMzMzMsLTMuOTk2OTIgLTAuOTkyOTEsLTEuMjcyNTIgLTE0LjUyMjI2LC0xMC42MDc0IC0xNS4zNzM2NiwtMTAuNjA3NCAtMS43MDQxNCwwIC04LjYyNjM0LC01Ljk2NzQ3IC04LjYyNjM0LC03LjQzNjU4IDAsLTEuNzQ4MzIgMTAuNDY0MjYsLTIzLjQ4MTg1IDExLjgyNjgxLC0yNC41NjM0MiAwLjQ2MTkyLC0wLjM2NjY3IDIuMjk1MTEsLTMuMzY2NjcgNC4wNzM3NSwtNi42NjY2NyAxLjc3ODY0LC0zLjMgMy42MDc1NCwtNi4zIDQuMDY0MjQsLTYuNjY2NjcgMC40NTY2OSwtMC4zNjY2NiAyLjI0OTQyLC0yLjc2NjY2IDMuOTgzODUsLTUuMzMzMzMgNC41OTcwMywtNi44MDI4MSAyNS4wNzM1NSwtMjcuNDQzMTYgMzIuMDUxMzUsLTMyLjMwNzc1IDMuMywtMi4zMDA2MSA2LjMsLTQuNTY3MjYgNi42NjY2NiwtNS4wMzcwMiAwLjM2NjY3LC0wLjQ2OTc2IDMuMzY2NjcsLTIuMzA5MzYgNi42NjY2NywtNC4wODggMy4zLC0xLjc3ODY0IDYuMywtMy41Nzg2NCA2LjY2NjY3LC00IDIuNjg4NDQsLTMuMDg5NDQgMjcuODQ3ODMsLTE0LjA4NjMyIDM5LjMzMzMzLC0xNy4xOTIxMyAzMy42MzAyNCwtOS4wOTQwNCA1NS4xMzk4LC05LjM4MjUxIDkwLC0xLjIwNjk5IDE2LjgxNjgzLDMuOTQzOTUgMzYuNzI0OTUsMTIuMjUyOTMgNTIuMDUzMzcsMjEuNzI1MzQgMTQuMjYxMzgsOC44MTMwNCA0MC42MDY1OCwzNC4xMDg0NCA0OC4zNjcyLDQ2LjQzOTg4IDEuMjY5MTYsMi4wMTY2NyAzLjQyMDcyLDMuNjY2NjcgNC43ODEyNCwzLjY2NjY3IDEuMzYwNSwwIDcuNDk2NjgsLTIuNzk1MzEgMTMuNjM1OTIsLTYuMjExNzkgNi4xMzkyNSwtMy40MTY0OCAxNi44NjIyNiwtOC44ODE4MSAyMy44Mjg5MywtMTIuMTQ1MTggNi45NjY2NywtMy4yNjMzOCAxMi44NjQ2MSwtNi4xMTYwMiAxMy4xMDY1MywtNi4zMzkyIDEuNDQ2MiwtMS4zMzQxNiAtMTcuOTI1MzgsLTI2LjE5NDcgLTMwLjY2NjMsLTM5LjM1NTYxIC0xOC44ODk5NiwtMTkuNTEyNjcgLTM2LjM5MDE1LC0zMi45MzE2NCAtNTYuNzc0MTUsLTQzLjUzMzg2IC02LjQxNjM1LC0zLjMzNzI5IC0xMi4zMzE0NSwtNi41OTkwMSAtMTMuMTQ0NjgsLTcuMjQ4MjYgLTAuODEzMjMsLTAuNjQ5MjQgLTQuMTEzMjMsLTIuMDIyNzYgLTcuMzMzMzMsLTMuMDUyMjYgLTMuMjIwMTEsLTEuMDI5NSAtOS4xNTQ3NCwtMy4xNjQ4IC0xMy4xODgwNywtNC43NDUxMiAtOS44NzQ5OSwtMy44NjkxMyAtMTguODA1MTUsLTYuMjA4MTggLTMwLC03Ljg1Nzc4IC01LjEzMzMzLC0wLjc1NjQyIC0xMy4yMzMzMywtMi4wOTA2OCAtMTgsLTIuOTY1MDIgLTEyLjU4OTYxLC0yLjMwOTMgLTQzLjc5NDI4LC0yLjA2MDE3IC01Ny4zMzMzMywwLjQ1Nzc1IC02LjIzMzMzLDEuMTU5MjQgLTE0LjMzMzMzLDIuNTEwNzYgLTE4LDMuMDAzMzcgLTkuMDQ2MiwxLjIxNTM4IC0xNy41ODYwNSwzLjU4OTMyIC0zMi45Nzg1Myw5LjE2NzUxIC0xMy4xNTY2MSw0Ljc2NzkyIC0zOC42NDE5MSwxNi44NTMyNyAtNDIuMzM2MjUsMjAuMDc2MjMgLTEuMTEwMiwwLjk2ODU0IC00LjExODU1LDIuODExMzIgLTYuNjg1MjIsNC4wOTUwNSAtNC41NTE5MiwyLjI3NjY4IC01LjQ0OTk4LDIuOTM4MDkgLTExLjY2NjY2LDguNTkyMjggLTEuNjUsMS41MDA3MSAtMy4zNjAyNywyLjcyODU2IC0zLjgwMDU5LDIuNzI4NTYgLTEuODEyLDAgLTIxLjU1ODg1LDE4LjcwODc1IC0yOS43Mzk1OSwyOC4xNzYxMyAtMTYuMjAyNDIsMTguNzUwNzMgLTE3LjU2OTU4LDIwLjQ2NTE1IC0yMS4xMjQ4NCwyNi40OTA1MyAtMS45NDcxNiwzLjMgLTMuOTU3NzgsNi4zIC00LjQ2ODA2LDYuNjY2NjcgLTEuNTI4ODIsMS4wOTg1NSAtMTUuODY2OTIsMjkuNjY3ODggLTE1Ljg2NjkyLDMxLjYxNTU2IDAsMi43ODQ2OSAtMy42OTUxMiwzLjU1MDI3IC03LjAxMDI5LDEuNDUyNDEgLTYuNDkyNjMsLTQuMTA4NTQgLTQ1LjI1Mjc1LC0xNi4xMDc2IC02MS42NTYzOCwtMTkuMDg3MDkgLTYuNiwtMS4xOTg3OSAtMTcuNywtMy4zMDEwNSAtMjQuNjY2NjYsLTQuNjcxNjkgLTYuOTY2NjcsLTEuMzcwNjQgLTIxLjUxNjY3LC0yLjkxMjc4IC0zMi4zMzMzNCwtMy40MjY5OCAtMTAuODE2NjYsLTAuNTE0MTggLTE5LjY2NjY2LC0xLjQ2NjEyIC0xOS42NjY2NiwtMi4xMTU0IDAsLTAuNjQ5MjYgMS40Mjc2NywtNC42MTI0MiAzLjE3MjYsLTguODA2OTggMS43NDQ5MywtNC4xOTQ1OCAzLjYyNzEsLTkuMTI2NSA0LjE4MjYxLC0xMC45NTk4MyAwLjU1NTQ5LC0xLjgzMzMzIDMuMzI3ODMsLTguMjk0ODcgNi4xNjA3MywtMTQuMzU4OTYgMi44MzI5LC02LjA2NDA5IDUuMTUwNzIsLTExLjg3ODY4IDUuMTUwNzIsLTEyLjkyMTMgMCwtMS4wNDI2MyAwLjY1OTY3LC0yLjMwMzM5IDEuNDY1OTIsLTIuODAxNjggMC44MDYyNiwtMC40OTgzIDMuMDk1MDQsLTQuMjgzNyA1LjA4NjIsLTguNDEyMDIgMTcuMjM2MSwtMzUuNzM2MTMgNTcuNDAxMTgsLTg2LjE2NTIgODguNzgxMjIsLTExMS40Njg4MSA0LjQsLTMuNTQ3OTkgOS4yLC03LjU0OTI4IDEwLjY2NjY2LC04Ljg5MTc2IDUuNTY4MzIsLTUuMDk2ODUgMjkuNjUzOTksLTIxLjg2ODg0IDM4Ljk2NzgzLC0yNy4xMzUxMyAyLjAzNDM2LC0xLjE1MDI5IDUuNDk4ODQsLTMuMjEyMzEgNy42OTg4NCwtNC41ODIyNSAxMC40ODk1LC02LjUzMTkgNDYuODg5ODksLTIzLjU2MTM1IDU2Ljc3ODI2LC0yNi41NjI5OSAyLjUwNTI4LC0wLjc2MDQ5IDkuMzU1MDcsLTMuMTE1OTEgMTUuMjIxNzQsLTUuMjM0MjcgNS44NjY2NiwtMi4xMTgzNiAxNS40NjY2NiwtNC45MjAzNiAyMS4zMzMzMywtNi4yMjY2NiA1Ljg2NjY3LC0xLjMwNjMyIDE0Ljg2NjY3LC0zLjQ2ODEyIDIwLC00LjgwNDAyIDUuMTMzMzMsLTEuMzM1ODkgMTYuMjMzMzMsLTMuMjE3NDIgMjQuNjY2NjYsLTQuMTgxMTggMTkuOTc3NDgsLTIuMjgzMDMgODMuOTA4OTUsLTIuMzA3NzYgMTAzLjMzMzM0LC0wLjA0IDI5LjQ0Nzc1LDMuNDM4MDEgNzIuODYxNjksMTUuNzQ1MDggMTAyLjY2NjY2LDI5LjEwNDE0IDE1LjgzMzQzLDcuMDk2OCAzOC4xMjcyOCwxOC42OTk5OSAzOS4zMzMzMywyMC40NzE2NyAwLjM2NjY3LDAuNTM4NjMgMi4xNjY2NywxLjc1MjI5IDQsMi42OTcwMyA0Ljk1MTg0LDIuNTUxNzMgMjEuNzk2ODMsMTMuNjM3NDIgMjMuMzMzMzMsMTUuMzU1NjYgMC43MzMzNCwwLjgyMDA3IDUuMDI4MzQsMy45ODg4OCA5LjU0NDQ2LDcuMDQxNzkgNC41MTYxLDMuMDUyOTIgOC40MTYxLDYuMDE1NzUgOC42NjY2Niw2LjU4NDA3IDAuMjUwNTUsMC41NjgzMyAzLjQ1MTc0LDMuNDMzMzEgNy4xMTM3NSw2LjM2NjY1IDEwLjUwMTE3LDguNDExNjQgMzEuMzM5MTksMjkuNDkyOTIgNDIuODMzMjgsNDMuMzMzMzMgMTEuOTcyNDQsMTQuNDE2NDEgMjUuMjYyMjEsMzEuOTMxMTYgMjcuNTk3MDEsMzYuMzcwMzUgMC44NjgsMS42NTAyOCAzLjAyMzMsNS4wMTgzNCA0Ljc4OTYsNy40ODQ1NiAxLjc2NjQsMi40NjYyMiA0Ljk5MzEsNy44NTc3OCA3LjE3MDYsMTEuOTgxMjQgMTAuNzMxOCwyMC4zMjI0OSAxOC41NzM2LDM2LjEzOTYzIDIwLjkwMzksNDIuMTYzODUgMS40MTg0LDMuNjY2NjYgNC40MDkzLDExLjA3ODg0IDYuNjQ2NSwxNi40NzE0OCAyLjIzNzEsNS4zOTI2NSA0LjA2NzYsMTAuNTU1OCA0LjA2NzYsMTEuNDczNjYgMCwxLjIxNzgzIC01LjMxNTEsMS45MjU5IC0xOS42NjY3LDIuNjE5OTQgLTEwLjgxNjcsMC41MjMxIC0yNC4xNjY3LDEuODQ2MjIgLTI5LjY2NjcsMi45NDAyOCAtNS41LDEuMDk0MDQgLTEyLjk5OTk2LDIuNDg4NCAtMTYuNjY2NjIsMy4wOTg1NiAtMy42NjY2NywwLjYxMDE2IC0xMC4yNjY2NywxLjgxMDk3IC0xNC42NjY2NywyLjY2ODQ1IC0xMi44MTMwNCwyLjQ5NzA1IC01NC4wNiwxNS42NTU3OSAtNTguNjY2NjcsMTguNzE2MDMgLTAuNzMzMzMsMC40ODcxNiAtNC4zMzMzMywxLjk4NzA5IC04LDMuMzMzMTggLTYuMDE3NjksMi4yMDkxOSAtMjMuNjI2NzMsMTAuOTYxMjcgLTQzLjMzMzMzLDIxLjUzNzYgLTUwLjMyMTQsMjcuMDA3MDIgLTExMi4xODU5NCw4Ny4zMjgyNCAtMTQxLjMzMzMzLDEzNy44MDc1MSAtMy4xODgxNyw1LjUyMTQ4IC00Ljg3MjYxLDguNDkzMjEgLTYuNjEyOTIsMTEuNjY2NjYgLTAuNzAzNzcsMS4yODMzNCAtMi42NTk1Niw0LjczMzM0IC00LjM0NjIxLDcuNjY2NjcgLTIuODAxNjUsNC44NzI1MyAtMTMuMzgzMjEsMjcuMzY0OTIgLTE2LjYwNzMxLDM1LjMwMDg1IC0xLjI0MDQ5LDMuMDUzNDQgLTEuNjQ5NDYsMi41MDM3NiAtNS40NTYsLTcuMzMzMzMgeiBtIC0xNzAuOTk3OTcsOTkuNjk5MTQgYyAtMC4wMTA3LC05MS40ODMzMyAtMC40NjEyMiwtMTY3LjAwNDkgLTEsLTE2Ny44MjU3IC0xLjI3NzQ4LC0xLjk0NjIgLTIwLjMzMzcyLC0xNy4wNDQ2OSAtMjMuOTY2MzIsLTE4Ljk4ODggLTEuNTQyOTMsLTAuODI1NzUgLTMuNjAyMTIsLTIuMjc5NDMgLTQuNTc1OTYsLTMuMjMwMzkgLTMuNDkwNDEsLTMuNDA4MzYgLTIxLjgzNjgzLC0xMy4yMTIyNiAtMjUuMTAzOTcsLTEzLjQxNDk2IGwgLTMuMzMzMzMsLTAuMjA2ODEgLTAuMzM4MDEsMTg1IC0wLjMzODAyLDE4NC45OTk5NSBoIDI5LjMzODAxIDI5LjMzODAyIHoiCiAgICBmaWxsPSIjOGMwMTlhIiAvPgo8L3N2Zz4K'\n","/**\n * Generates a UUID version 4 string. This function attempts to use the `crypto.randomUUID()` function from the Web\n * Crypto API if it is available, otherwise it uses a polyfill method.\n *\n * NOTE: `crypto.randomUUID()` is not available in non-secure contexts; only localhost and HTTPS.\n * @returns {string} a valid UUID version 4 string.\n * @see {@link https://stackoverflow.com/a/2117523}\n */\nexport function generateUuid(): string {\n if (window.crypto.randomUUID) {\n return window.crypto.randomUUID()\n }\n\n return '10000000-1000-4000-8000-100000000000'.replace(/[018]/g, (value) => {\n const valueAsNumber: number = parseInt(value)\n\n return (\n valueAsNumber ^\n (window.crypto.getRandomValues(new Uint8Array(1))[0] & (15 >> (valueAsNumber / 4)))\n ).toString(16)\n })\n}\n","import { Buffer } from 'buffer'\nimport Algod, { getAlgodClient } from '../../algod'\nimport BaseClient from '../base'\nimport { DEFAULT_NETWORK, PROVIDER_ID } from '../../constants'\nimport { debugLog } from '../../utils/debugLog'\nimport {\n ARC_0027_CHANNEL_NAME,\n ARC_0027_ENABLE_REQUEST,\n ARC_0027_GET_PROVIDERS_REQUEST,\n ARC_0027_PROVIDER_ID,\n ARC_0027_SIGN_TXNS_REQUEST,\n DEFAULT_REQUEST_TIMEOUT,\n ICON,\n LOWER_REQUEST_TIMEOUT,\n METHOD_NOT_SUPPORTED_ERROR,\n METHOD_TIMED_OUT_ERROR,\n NETWORK_NOT_SUPPORTED_ERROR,\n UNKNOWN_ERROR\n} from './constants'\nimport type { InitParams, Network, Wallet } from '../../types'\nimport type {\n Arc0001SignTxns,\n Arc0027Account,\n EnableParams,\n EnableResult,\n GetProvidersParams,\n GetProvidersResult,\n KibisisClientConstructor,\n ProviderMethods,\n RequestMessage,\n ResponseError,\n ResponseMessage,\n SendRequestWithTimeoutOptions,\n SignTxnsParams,\n SignTxnsResult\n} from './types'\nimport { DecodedSignedTransaction, DecodedTransaction } from '../../types'\nimport { generateUuid } from './utils'\n\nclass KibisisClient extends BaseClient {\n genesisHash: string\n methods: ProviderMethods[]\n network: Network\n\n constructor({\n metadata,\n algosdk,\n algodClient,\n genesisHash,\n methods,\n network\n }: KibisisClientConstructor) {\n super(metadata, algosdk, algodClient)\n\n this.genesisHash = genesisHash\n this.methods = methods\n this.network = network\n }\n\n static metadata = {\n id: PROVIDER_ID.KIBISIS,\n icon: ICON,\n isWalletConnect: false,\n name: 'Kibisis'\n }\n\n /**\n * public static functions\n */\n\n static async init({\n algodOptions,\n algosdkStatic,\n network = DEFAULT_NETWORK\n }: InitParams<PROVIDER_ID.KIBISIS>): Promise<BaseClient | null> {\n try {\n debugLog(`${PROVIDER_ID.KIBISIS.toUpperCase()}#${KibisisClient.init.name}: initializing...`)\n\n const algosdk = algosdkStatic || (await Algod.init(algodOptions)).algosdk\n const algodClient = getAlgodClient(algosdk, algodOptions)\n const version = await algodClient.versionsCheck().do()\n const genesisHash = version['genesis_hash_b64'] // get the genesis hash of the network\n const result = await KibisisClient.sendRequestWithTimeout<\n GetProvidersParams,\n GetProvidersResult\n >({\n method: 'getProviders',\n params: {\n providerId: ARC_0027_PROVIDER_ID\n },\n reference: ARC_0027_GET_PROVIDERS_REQUEST,\n timeout: LOWER_REQUEST_TIMEOUT\n })\n\n // check for a result\n if (!result) {\n throw {\n code: UNKNOWN_ERROR,\n message: `received response, but provider details were empty for provider \"${PROVIDER_ID.KIBISIS.toUpperCase()}\"`,\n providerId: ARC_0027_PROVIDER_ID\n } as ResponseError\n }\n\n const networkConfiguration = result.networks.find(\n (value) => value.genesisHash === genesisHash\n )\n\n // check if the network is supported\n if (!networkConfiguration) {\n throw {\n code: NETWORK_NOT_SUPPORTED_ERROR,\n data: {\n genesisHash\n },\n message: `network \"${network}\" not supported on provider \"${PROVIDER_ID.KIBISIS.toUpperCase()}\"`,\n providerId: ARC_0027_PROVIDER_ID\n } as ResponseError<{ genesisHash: string }>\n }\n\n const provider = new KibisisClient({\n metadata: KibisisClient.metadata,\n algosdk: algosdk,\n algodClient: algodClient,\n genesisHash,\n methods: networkConfiguration.methods,\n network\n })\n\n debugLog(`${PROVIDER_ID.KIBISIS.toUpperCase()}#${KibisisClient.init.name}: initialized`, '✅')\n\n return provider\n } catch (error) {\n console.error('Error initializing...', error)\n return null\n }\n }\n\n static mapAccountsToWallet(accounts: Arc0027Account[]): Wallet {\n return {\n ...KibisisClient.metadata,\n accounts: accounts.map(({ address, name }) => ({\n address,\n name: name || '',\n providerId: PROVIDER_ID.KIBISIS\n }))\n }\n }\n\n static async sendRequestWithTimeout<Params, Result>({\n method,\n params,\n timeout,\n reference\n }: SendRequestWithTimeoutOptions<Params>): Promise<Result | undefined> {\n return new Promise<Result | undefined>((resolve, reject) => {\n const channel = new BroadcastChannel(ARC_0027_CHANNEL_NAME)\n const requestId = generateUuid()\n // eslint-disable-next-line prefer-const\n let timer: number\n\n // listen to responses\n channel.onmessage = (message: MessageEvent<ResponseMessage<Result>>) => {\n // if the response's request id does not match the intended request, just ignore\n if (!message.data || message.data.requestId !== requestId) {\n return\n }\n\n // clear the timer, we can handle it from here\n window.clearTimeout(timer)\n\n // if there is an error, reject\n if (message.data.error) {\n reject(message.data.error)\n\n // close the channel, we are done here\n return channel.close()\n }\n\n // return the result\n resolve(message.data.result)\n\n // close the channel, we are done here\n return channel.close()\n }\n\n timer = window.setTimeout(() => {\n // close the channel connection\n channel.close()\n\n reject({\n code: METHOD_TIMED_OUT_ERROR,\n data: {\n method\n },\n message: `no response from provider \"${PROVIDER_ID.KIBISIS.toUpperCase()}\"`,\n providerId: ARC_0027_PROVIDER_ID\n } as ResponseError<{ method: ProviderMethods }>)\n }, timeout || DEFAULT_REQUEST_TIMEOUT)\n\n // broadcast the request\n channel.postMessage({\n id: requestId,\n params,\n reference\n } as RequestMessage<Params>)\n })\n }\n\n /**\n * private functions\n */\n\n private convertBytesToBase64(bytes: Uint8Array): string {\n return Buffer.from(bytes).toString('base64')\n }\n\n private convertBase64ToBytes(input: string): Uint8Array {\n return Buffer.from(input, 'base64')\n }\n\n /**\n * Calls the enable method on the provider that returns the authorized accounts.\n * @returns {Arc0027Account[]} the authorized accounts.\n * @throws {METHOD_CANCELED_ERROR} if the method was cancelled by the user.\n * @throws {METHOD_NOT_SUPPORTED_ERROR} if the method is not supported for the configured network.\n * @throws {METHOD_TIMED_OUT_ERROR} if the method timed out by lack of response.\n * @throws {NETWORK_NOT_SUPPORTED_ERROR} if the network is not supported for the configured network.\n * @throws {UNKNOWN_ERROR} if the response result was empty.\n */\n private async enable(): Promise<Arc0027Account[]> {\n const method = 'enable'\n\n debugLog(\n `${PROVIDER_ID.KIBISIS.toUpperCase()}#${\n this.refreshSupportedMethods.name\n }(): check if \"${method}\" is supported on \"${this.network}\"`\n )\n\n // check the method is supported\n this.validateMethod(method)\n\n const result = await KibisisClient.sendRequestWithTimeout<EnableParams, EnableResult>({\n method,\n params: {\n genesisHash: this.genesisHash,\n providerId: ARC_0027_PROVIDER_ID\n },\n reference: ARC_0027_ENABLE_REQUEST\n })\n\n // check for a result\n if (!result) {\n throw {\n code: UNKNOWN_ERROR,\n message: `received response, but \"${method}\" request details were empty for provider \"${PROVIDER_ID.KIBISIS.toUpperCase()}\"`,\n providerId: ARC_0027_PROVIDER_ID\n } as ResponseError\n }\n\n return result.accounts\n }\n\n /**\n * Convenience function that gets the provider information and updates the supported methods. This should be called\n * before interacting with the provider to ensure methods are supported.\n * @throws {METHOD_TIMED_OUT_ERROR} if the method timed out by lack of response.\n * @throws {NETWORK_NOT_SUPPORTED_ERROR} if the network is not supported for the configured network.\n * @throws {UNKNOWN_ERROR} if the response result was empty.\n */\n private async refreshSupportedMethods(): Promise<void> {\n const method = 'getProviders'\n\n debugLog(\n `${PROVIDER_ID.KIBISIS.toUpperCase()}#${\n this.refreshSupportedMethods.name\n }(): refreshing supported methods`\n )\n\n const result = await KibisisClient.sendRequestWithTimeout<\n GetProvidersParams,\n GetProvidersResult\n >({\n method,\n params: {\n providerId: ARC_0027_PROVIDER_ID\n },\n reference: ARC_0027_GET_PROVIDERS_REQUEST,\n timeout: LOWER_REQUEST_TIMEOUT\n })\n\n // check for a result\n if (!result) {\n throw {\n code: UNKNOWN_ERROR,\n message: `received response, but enable request details were empty for provider \"${PROVIDER_ID.KIBISIS.toUpperCase()}\"`,\n providerId: ARC_0027_PROVIDER_ID\n } as ResponseError\n }\n\n const networkConfiguration = result.networks.find(\n (value) => value.genesisHash === this.genesisHash\n )\n\n // check if the network is supported\n if (!networkConfiguration) {\n throw {\n code: NETWORK_NOT_SUPPORTED_ERROR,\n data: {\n genesisHash: this.genesisHash\n },\n message: `network \"${\n this.network\n }\" not supported on provider \"${PROVIDER_ID.KIBISIS.toUpperCase()}\"`,\n providerId: ARC_0027_PROVIDER_ID\n } as ResponseError<{ genesisHash: string }>\n }\n\n debugLog(\n `${PROVIDER_ID.KIBISIS.toUpperCase()}#${\n this.refreshSupportedMethods.name\n }(): methods [${networkConfiguration.methods.join(',')}] found for \"${this.network}\"`\n )\n\n // update the methods\n this.methods = networkConfiguration.methods\n }\n\n /**\n * Calls the signTxns methods to sign the supplied transactions.\n * @param {Arc0001SignTxns[]} txns - the unsigned or signed transactions as defined in ARC-0001.\n * @returns {(string | null)[]} the authorized accounts.\n * @throws {INVALID_INPUT_ERROR} if computed group ID for the txns does not match the assigned group ID.\n * @throws {INVALID_GROUP_ID_ERROR} if the unsigned txns is malformed or not conforming to ARC-0001.\n * @throws {METHOD_CANCELED_ERROR} if the method was cancelled by the user.\n * @throws {METHOD_NOT_SUPPORTED_ERROR} if the method is not supported for the configured network.\n * @throws {METHOD_TIMED_OUT_ERROR} if the method timed out by lack of response.\n * @throws {NETWORK_NOT_SUPPORTED_ERROR} if the network is not supported for the configured network.\n * @throws {UNAUTHORIZED_SIGNER_ERROR} if a signer in the request is not authorized by the provider.\n * @throws {UNKNOWN_ERROR} if the response result was empty.\n */\n private async signTxns(txns: Arc0001SignTxns[]): Promise<(string | null)[]> {\n const method = 'signTxns'\n\n debugLog(\n `${PROVIDER_ID.KIBISIS.toUpperCase()}#${\n this.signTransactions.name\n }(): check if \"${method}\" is supported on \"${this.network}\"`\n )\n\n // check the method is supported\n this.validateMethod(method)\n\n const result = await KibisisClient.sendRequestWithTimeout<SignTxnsParams, SignTxnsResult>({\n method,\n params: {\n providerId: ARC_0027_PROVIDER_ID,\n txns\n },\n reference: ARC_0027_SIGN_TXNS_REQUEST\n })\n\n // check for a result\n if (!result) {\n throw {\n code: UNKNOWN_ERROR,\n message: `received response, but \"${method}\" request details were empty for provider \"${PROVIDER_ID.KIBISIS.toUpperCase()}\"`,\n providerId: ARC_0027_PROVIDER_ID\n } as ResponseError\n }\n\n return result.stxns\n }\n\n /**\n * Validates whether a method is supported with the provider.\n * @param {ProviderMethods} method - the method to validate.\n * @throws {METHOD_NOT_SUPPORTED_ERROR} if the method is not supported for the configured network.\n */\n private validateMethod(method: ProviderMethods): void {\n if (!this.methods.includes(method)) {\n throw {\n code: METHOD_NOT_SUPPORTED_ERROR,\n data: {\n method\n },\n message: `\"${method}\" operation not supported on \"${\n this.network\n }\" for provider \"${PROVIDER_ID.KIBISIS.toUpperCase()}\"`,\n providerId: ARC_0027_PROVIDER_ID\n } as ResponseError<{ method: string }>\n }\n }\n\n /**\n * public functions\n */\n\n async connect(): Promise<Wallet> {\n await this.refreshSupportedMethods() // refresh the supported methods\n\n const accounts: Arc0027Account[] = await this.enable()\n\n return KibisisClient.mapAccountsToWallet(accounts)\n }\n\n // eslint-disable-next-line @typescript-eslint/require-await\n async disconnect(): Promise<void> {\n return\n }\n\n async reconnect(): Promise<Wallet | null> {\n return await this.connect()\n }\n\n async signTransactions(\n connectedAccounts: string[],\n transactions: Uint8Array[],\n indexesToSign?: number[],\n returnGroup = true\n ): Promise<Uint8Array[]> {\n await this.refreshSupportedMethods() // refresh the supported methods\n\n const txns: Arc0001SignTxns[] = await Promise.all(\n transactions.map<Promise<Arc0001SignTxns>>(async (value, index) => {\n const decodedTxn = this.algosdk.decodeObj(value) as\n | DecodedTransaction\n | DecodedSignedTransaction\n const isSigned = !!(decodedTxn as DecodedSignedTransaction).txn\n const sender = this.algosdk.encodeAddress(\n isSigned\n ? (decodedTxn as DecodedSignedTransaction).txn.snd\n : (decodedTxn as DecodedTransaction).snd\n )\n const accountInfo = await this.getAccountInfo(sender)\n const authAddr = accountInfo['auth-addr']\n const txn = this.convertBytesToBase64(\n this.algosdk.decodeUnsignedTransaction(value).toByte()\n )\n\n // if the transaction is signed, instruct the provider not to sign by providing an empty signers array\n if (isSigned) {\n return {\n txn: this.convertBytesToBase64(\n this.algosdk.decodeSignedTransaction(value).txn.toByte()\n ),\n signers: [],\n ...(authAddr && { authAddr })\n }\n }\n\n // if the sender is not authorized or the index has not been included in the to be signed indexes, instruct the provider not to sign by providing an empty signers array\n if (\n !connectedAccounts.includes(sender) ||\n (indexesToSign && !indexesToSign.includes(index))\n ) {\n return {\n txn,\n signers: [],\n ...(authAddr && { authAddr })\n }\n }\n\n // if the transaction is not signed, has been authorized and/or is in the index, instruct the provider not to sign\n return {\n txn,\n ...(authAddr && { authAddr })\n }\n })\n )\n const result = await this.signTxns(txns)\n\n // null values indicate transactions that were not signed by the provider, as defined in ARC-0001, see https://arc.algorand.foundation/ARCs/arc-0001#semantic-and-security-requirements\n return result.reduce<Uint8Array[]>((acc, value, index) => {\n if (value) {\n return [...acc, this.convertBase64ToBytes(value)]\n }\n\n // if the group wants to be returned, get the transaction from the input\n return returnGroup ? [...acc, transactions[index]] : acc\n }, [])\n }\n}\n\nexport default KibisisClient\n","import pera from './pera'\nimport daffi from './daffi'\nimport myalgo from './myalgo'\nimport defly from './defly'\nimport exodus from './exodus'\nimport algosigner from './algosigner'\nimport lute from './lute'\nimport walletconnect from './walletconnect2'\nimport magic from './magic'\nimport kmd from './kmd'\nimport mnemonic from './mnemonic'\nimport { CustomProvider } from './custom/types'\nimport custom from './custom'\nimport kibisis from './kibisis'\n\nexport {\n pera,\n myalgo,\n defly,\n exodus,\n algosigner,\n lute,\n walletconnect,\n kmd,\n mnemonic,\n custom,\n CustomProvider,\n kibisis,\n magic\n}\n\nexport default {\n [pera.metadata.id]: pera,\n [daffi.metadata.id]: daffi,\n [myalgo.metadata.id]: myalgo,\n [defly.metadata.id]: defly,\n [exodus.metadata.id]: exodus,\n [algosigner.metadata.id]: algosigner,\n [lute.metadata.id]: lute,\n [walletconnect.metadata.id]: walletconnect,\n [kmd.metadata.id]: kmd,\n [mnemonic.metadata.id]: mnemonic,\n [custom.metadata.id]: custom,\n [kibisis.metadata.id]: kibisis,\n [magic.metadata.id]: magic\n}\n","import type algosdk from 'algosdk'\nimport allClients from '../clients'\nimport {\n CommonInitParams,\n NodeConfig,\n ProviderConfig,\n ProviderConfigMapping,\n SupportedProviders\n} from '../types'\nimport {\n DEFAULT_NODE_BASEURL,\n DEFAULT_NODE_TOKEN,\n DEFAULT_NODE_PORT,\n DEFAULT_NETWORK\n} from '../constants'\nimport { debugLog, getProviderList } from './debugLog'\n\nexport const initializeProviders = async <T extends keyof ProviderConfigMapping>(\n providers: Array<T | ProviderConfig<T>>,\n nodeConfig?: NodeConfig,\n algosdkStatic?: typeof algosdk\n): Promise<SupportedProviders> => {\n if (typeof window === 'undefined') {\n debugLog('Window object is not available, skipping initialization')\n return {} as SupportedProviders\n }\n\n // Set all providers to null to preserve order\n const initializedProviders = providers.reduce((acc, provider) => {\n const providerId = typeof provider === 'string' ? provider : provider.id\n acc[providerId] = null\n return acc\n }, {} as SupportedProviders)\n\n const {\n network = DEFAULT_NETWORK,\n nodeServer = DEFAULT_NODE_BASEURL,\n nodePort = DEFAULT_NODE_PORT,\n nodeToken = DEFAULT_NODE_TOKEN\n } = nodeConfig || {}\n\n const initClient = async (provider: T | ProviderConfig<T>): Promise<void> => {\n const { id, ...providerConfig } = typeof provider === 'string' ? { id: provider } : provider\n\n const initParams: CommonInitParams = {\n network,\n algodOptions: [nodeToken, nodeServer, nodePort],\n algosdkStatic,\n ...providerConfig\n }\n\n const client = await allClients[id].init(initParams)\n initializedProviders[id] = client\n }\n\n debugLog('Initializing providers:', getProviderList(providers))\n\n const initPromises = providers.map((provider) => initClient(provider))\n await Promise.all(initPromises)\n\n return initializedProviders\n}\n","import { PROVIDER_ID } from '../constants'\nimport { useWalletStore } from '../store/index'\n\nexport const clearAccounts = (id: PROVIDER_ID) => {\n const { clearActiveAccount, removeAccounts } = useWalletStore.getState()\n\n clearActiveAccount(id)\n removeAccounts(id)\n}\n","import { PROVIDER_ID } from '../constants'\nimport { useWalletStore } from '../store'\n\nexport const getActiveProviders = () => {\n const accounts = useWalletStore.getState().accounts\n return [...new Set(accounts.map((acct) => acct.providerId))]\n}\n\nexport const isActiveProvider = (id: PROVIDER_ID) => {\n const activeProviders = getActiveProviders()\n return activeProviders.includes(id)\n}\n","import { clearAccounts } from './clearAccounts'\nimport { isActiveProvider } from './providers'\nimport type { SupportedProviders } from '../types/providers'\n\nexport const reconnectProviders = async (providers: SupportedProviders) => {\n try {\n const clients = Object.values(providers)\n\n for (const client of clients) {\n const id = client?.metadata.id\n\n // Only reconnect to active providers\n if (id && isActiveProvider(id)) {\n await client.reconnect(() => clearAccounts(id))\n }\n }\n } catch (e) {\n console.error(e)\n }\n}\n","export type NFDTransactionsArray = ['u' | 's', string][]\n\nexport function encodeNFDTransactionsArray(transactionsArray: NFDTransactionsArray) {\n return transactionsArray.map(([_type, txn]) => {\n return new Uint8Array(Buffer.from(txn, 'base64'))\n })\n}\n","import React, { createContext, useContext } from 'react'\nimport type { SupportedProviders } from '../types/providers'\n\nconst WalletContext = createContext<SupportedProviders | null>(null)\n\nexport const useWalletContext = (): SupportedProviders | null => {\n const context = useContext(WalletContext)\n if (context === undefined) {\n throw new Error('useWallet must be used within the WalletProvider')\n }\n return context\n}\n\nexport interface WalletProviderProps {\n children: React.ReactNode\n value: SupportedProviders | null\n}\n\nexport const WalletProvider = ({ children, value }: WalletProviderProps) => {\n return <WalletContext.Provider value={value}>{children}</WalletContext.Provider>\n}\n","function shallow$1(objA, objB) {\n if (Object.is(objA, objB)) {\n return true;\n }\n if (typeof objA !== \"object\" || objA === null || typeof objB !== \"object\" || objB === null) {\n return false;\n }\n if (objA instanceof Map && objB instanceof Map) {\n if (objA.size !== objB.size)\n return false;\n for (const [key, value] of objA) {\n if (!Object.is(value, objB.get(key))) {\n return false;\n }\n }\n return true;\n }\n if (objA instanceof Set && objB instanceof Set) {\n if (objA.size !== objB.size)\n return false;\n for (const value of objA) {\n if (!objB.has(value)) {\n return false;\n }\n }\n return true;\n }\n const keysA = Object.keys(objA);\n if (keysA.length !== Object.keys(objB).length) {\n return false;\n }\n for (let i = 0; i < keysA.length; i++) {\n if (!Object.prototype.hasOwnProperty.call(objB, keysA[i]) || !Object.is(objA[keysA[i]], objB[keysA[i]])) {\n return false;\n }\n }\n return true;\n}\n\nvar shallow = (objA, objB) => {\n if ((import.meta.env ? import.meta.env.MODE : void 0) !== \"production\") {\n console.warn(\n \"[DEPRECATED] Default export is deprecated. Instead use `import { shallow } from 'zustand/shallow'`.\"\n );\n }\n return shallow$1(objA, objB);\n};\n\nexport { shallow as default, shallow$1 as shallow };\n","import { useState, useMemo, useEffect } from 'react'\nimport type algosdk from 'algosdk'\nimport { getAlgosdk } from '../algod'\nimport { useHydratedWalletStore, walletStoreSelector } from '../store/index'\nimport { TransactionsArray, WalletClient, Provider } from '../types'\nimport { PROVIDER_ID } from '../constants'\nimport { useWalletContext } from '../context/WalletContext'\nimport allClients from '../clients'\nimport { clearAccounts } from '../utils/clearAccounts'\nimport { shallow } from 'zustand/shallow'\n\nexport default function useWallet() {\n const [providers, setProviders] = useState<Provider[] | null>(null)\n const clients = useWalletContext()\n\n const {\n activeAccount,\n accounts: connectedAccounts,\n setActiveAccount: _setActiveAccount,\n addAccounts\n } = useHydratedWalletStore(walletStoreSelector, shallow)\n\n const getAccountsByProvider = (id: PROVIDER_ID) => {\n return connectedAccounts.filter((account) => account.providerId === id)\n }\n\n const connectedActiveAccounts = useMemo(\n () => connectedAccounts.filter((account) => account.providerId === activeAccount?.providerId),\n [connectedAccounts, activeAccount]\n )\n\n useEffect(() => {\n if (!clients) {\n setProviders(null)\n return\n }\n\n const supportedClients = Object.keys(clients) as PROVIDER_ID[]\n setProviders(\n supportedClients\n // Remove any clients that didn't initialise\n .filter((id) => !!clients?.[id])\n .map((id) => {\n return {\n ...allClients[id],\n // Override static details with any instance details\n ...clients[id],\n accounts: getAccountsByProvider(id),\n isActive: activeAccount?.providerId === id,\n isConnected: connectedAccounts.some((accounts) => accounts.providerId === id),\n connect: (arg) => connect(id, arg),\n disconnect: () => disconnect(id),\n reconnect: () => reconnect(id),\n setActiveProvider: () => setActive(id),\n setActiveAccount: (account: string) => selectActiveAccount(id, account)\n }\n })\n )\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [clients, connectedAccounts, connectedActiveAccounts, activeAccount])\n\n const getClient = (id?: PROVIDER_ID): WalletClient => {\n if (!id) throw new Error('Provider ID is missing.')\n\n const walletClient = clients?.[id]\n\n if (!walletClient) throw new Error(`Client not found for ID: ${id}`)\n\n return walletClient\n }\n\n const status = useMemo(() => {\n if (activeAccount === undefined) {\n return 'initializing'\n }\n\n if (activeAccount === null && connectedAccounts.length) {\n return 'connected'\n }\n\n if (activeAccount === null && !connectedAccounts.length) {\n return 'disconnected'\n }\n\n if (activeAccount && activeAccount.address) {\n return 'active'\n }\n\n return 'error'\n }, [activeAccount, connectedAccounts.length])\n\n const isActive = useMemo(() => {\n return status === 'active'\n }, [status])\n\n const isReady = useMemo(() => {\n return status !== 'initializing'\n }, [status])\n\n const selectActiveAccount = (providerId: PROVIDER_ID, address: string) => {\n try {\n const account = connectedActiveAccounts.find(\n (acct) => acct.address === address && acct.providerId === providerId\n )\n\n if (!account) {\n throw new Error(`No accounts with address ${address} found.`)\n }\n\n _setActiveAccount(account)\n } catch (e) {\n console.error(e)\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const connect = async (id: PROVIDER_ID, arg?: any) => {\n try {\n const walletClient = getClient(id)\n const walletInfo = await walletClient?.connect(() => clearAccounts(id), arg)\n\n _setActiveAccount(walletInfo.accounts[0])\n addAccounts(walletInfo.accounts)\n } catch (e) {\n console.error(e)\n }\n }\n\n const reconnect = async (id: PROVIDER_ID) => {\n try {\n const walletClient = getClient(id)\n const walletInfo = await walletClient?.reconnect(() => clearAccounts(id))\n\n if (walletInfo && walletInfo.accounts.length) {\n addAccounts(walletInfo.accounts)\n }\n } catch (e) {\n console.error(e)\n await disconnect(id)\n }\n }\n\n const disconnect = async (id: PROVIDER_ID) => {\n try {\n const walletClient = getClient(id)\n\n await walletClient?.disconnect()\n } catch (e) {\n console.error(e)\n } finally {\n clearAccounts(id)\n }\n }\n\n const setActive = (id: PROVIDER_ID) => {\n try {\n const accounts = getAccountsByProvider(id)\n _setActiveAccount(accounts[0])\n } catch (e) {\n console.error(e)\n }\n }\n\n const signTransactions = async (\n transactions: Uint8Array[] | Uint8Array[][],\n indexesToSign?: number[],\n returnGroup = true\n ) => {\n const walletClient = getClient(activeAccount?.providerId)\n\n if (!walletClient || !activeAccount?.address) {\n throw new Error('No wallet found.')\n }\n\n const signedTransactions = await walletClient.signTransactions(\n connectedActiveAccounts.map((acct) => acct.address),\n transactions,\n indexesToSign,\n returnGroup\n )\n\n return signedTransactions\n }\n\n const sendTransactions = async (transactions: Uint8Array[], waitRoundsToConfirm?: number) => {\n const walletClient = getClient(activeAccount?.providerId)\n\n const result = await walletClient?.sendRawTransactions(transactions, waitRoundsToConfirm)\n\n return result\n }\n\n const signer: algosdk.TransactionSigner = async (\n txnGroup: algosdk.Transaction[],\n indexesToSign: number[]\n ) => {\n const algosdk = await getAlgosdk()\n const txnBlobs: Array<Uint8Array> = txnGroup.map(algosdk.encodeUnsignedTransaction)\n\n return await Promise.resolve(signTransactions(txnBlobs, indexesToSign, false))\n }\n\n const getAccountInfo = async () => {\n if (!activeAccount) throw new Error('No selected account.')\n\n const walletClient = getClient(activeAccount.providerId)\n\n const accountInfo = await walletClient?.getAccountInfo(activeAccount.address)\n\n return accountInfo\n }\n\n const getAddress = () => {\n return activeAccount?.address\n }\n\n const getAssets = async () => {\n if (!activeAccount) throw new Error('No selected account.')\n\n const walletClient = getClient(activeAccount.providerId)\n\n return await walletClient?.getAssets(activeAccount.address)\n }\n\n const groupTransactionsBySender = (transactions: TransactionsArray) => {\n const walletClient = getClient(activeAccount?.providerId)\n\n return walletClient?.groupTransactionsBySender(transactions)\n }\n\n return {\n clients,\n providers,\n connectedAccounts,\n connectedActiveAccounts,\n activeAccount,\n activeAddress: activeAccount?.address,\n status,\n isActive,\n isReady,\n signer,\n signTransactions,\n sendTransactions,\n getAddress,\n groupTransactionsBySender,\n getAccountInfo,\n getAssets\n }\n}\n","import { useState, useEffect } from 'react'\nimport { initializeProviders, reconnectProviders } from '../utils'\nimport { useDebugStore } from '../store'\nimport type algosdk from 'algosdk'\nimport type {\n NodeConfig,\n ProviderConfigMapping,\n ProvidersArray,\n SupportedProviders\n} from '../types/providers'\n\ninterface InitializeProvidersOptions {\n providers: ProvidersArray\n nodeConfig?: NodeConfig\n algosdkStatic?: typeof algosdk\n debug?: boolean\n}\n\nexport default function useInitializeProviders({\n providers,\n nodeConfig,\n algosdkStatic,\n debug = false\n}: InitializeProvidersOptions) {\n // Enable debug mode\n const { setDebug } = useDebugStore()\n useEffect(() => setDebug(debug), [debug, setDebug])\n\n // Initialize providers\n const [walletProviders, setWalletProviders] = useState<SupportedProviders | null>(null)\n\n useEffect(() => {\n async function initializeAndConnect() {\n try {\n // Initialize with provided configuration\n const initializedProviders = await initializeProviders<keyof ProviderConfigMapping>(\n providers,\n nodeConfig,\n algosdkStatic\n )\n\n setWalletProviders(initializedProviders)\n\n // Reconnect the session when the user returns to the app\n await reconnectProviders(initializedProviders)\n } catch (error) {\n console.error('Error initializing wallet providers:', error)\n }\n }\n\n void initializeAndConnect()\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [])\n\n return walletProviders\n}\n"],"names":["PROVIDER_ID","produce","shimModule","require$$0","require$$1","withSelectorModule","ReactExports","useState","useEffect","ICON","Buffer","pera","daffi","myalgo","defly","exodus","algosigner","lute","walletconnect","kmd","mnemonic","custom","kibisis","magic","createContext","useContext","React","shallow","useMemo"],"mappings":"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AC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CA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,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,OAAO,CAAC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","x_google_ignoreList":[4,5,6,7,8,9,10,11,12,13,14,55]}